web-dev-qa-db-ja.com

MSYS2とCygwinの違い

従来、MSYS bashはCygwin bashよりも劣ると考えられてきました。前者は、autoconfスクリプトを実行するためのMinGW内の補助ツールでした。しかし、今MinGW-w64とMSYS2があります。後者には、パッケージマネージャーのような甘いパックマンとzshのようなエレガントなシェルが同梱されているため、エミュレーションレイヤーにまだギャップがあるのではないかと思います。

MinGW *アプリケーションはWindowsネイティブの実行可能ファイルですが、MSYS2ソフトウェアには、Cygwinと同様にPOSIXエミュレーションレイヤーが必要です。少なくとも一般ユーザーにとっては、この2つの違いを見つけるのは困難です。

  • 2つのエミュレーション層(存在する場合)の機能の違いはどれですか?
  • どのエミュレーションがより高速(より効率的)ですか?
46
antonio

伝統的にMSYS bashは劣っていますが、主にCygwinが活発に開発されているのに対し、MSYSはそうではなかったためです。 MSYSはCygwinバージョン1.3.3から分岐し、再同期されませんでしたが、MSYS2はCygwinプロジェクトと定期的に再同期します。

「パッケージマネージャーのような甘いpacman」はありません。ArchLinuxのpacmanパッケージマネージャーを可能な限り直接再コンパイルします。

MSYS2にはcygwin.dllはありませんが、msys-2.0.dllがあり、これは同じこと(およびその他のこと)を行います。具体的には、パスおよびPATH envのように見える引数。 varは、Windowsネイティブソフトウェアの実行時にWindows形式に変換されます。

遅いかどうかについては、違いはほとんどないと思いますが、MSYS2は余分な変換作業のために少し遅くなります。繰り返しになりますが、CygwinよりもMSYS2内からより多くのWindowsネイティブソフトウェア(MinGW-w64コンパイラーなど)を実行して、MSYS2の恩恵に戻すことができます。

54
Ray Donnelly

私が理解しているように、MSYS2はCygwinのフォークであり、MinGW-w64パッケージを使用する可能性を提供することを主な目的としています。その目標は、利用可能なソフトウェアの総数を犠牲にして達成されます。 MSYS2Cygwin のリストを比較します。

本質的には、これですべてです。したがって、MinGW-w64で何かをコンパイルする必要はありませんが、元のCygwinではなくMSYS2を使用する理由はほとんどありません。

9