Cygwin ist eine Bibliothek, die bestrebt ist, UNIX-Programme in die Lage zu versetzen, mit minimalen oder gar keinen Änderungen auf Windows-Systemen kompiliert und ausgeführt zu werden, sowie einen umfassenden Satz von gepackten UNIX-Tools und -Anwendungen, die mit dieser Bibliothek kompiliert wurden. Es ist fast ein vollständiger Wrapper um Windows. Es enthält einen X-Server und eine Menge Programme, die Sie in einer Linux-Distribution erwarten können. Es ist großartig für Leute, die die UNIX-Befehlszeile in Windows lernen oder verwenden möchten.
MSYS ist hauptsächlich eine Portierung der UNIX-Tools, die zum Erstellen von Paketen im GNU-Stil erforderlich sind (mit einem configure
usw.) auf Windows-Systemen mit dem MinGW-Compiler. Es verwendet eine Variante der Cygwin-Bibliothek, die modifiziert wurde, um etwas Kompatibilität zugunsten der Effizienz zu opfern, und ist Windows-freundlicher.
GnuWin32 ist einfach eine Portierung einiger der GNU-Tools auf Windows. Wie MSYS verwendet es msvcrt.dll
, sowie eine zusätzliche Bibliothek, um einige UNIX-Kompatibilitätsfunktionen bereitzustellen. Sein Hauptzweck scheint darin zu bestehen, Windows-Programmen und Batch-Dateien zu erlauben, einige der GNU-Programme und -Bibliotheken direkt zu verwenden.
Größtenteils stellen sie alle UNIX-Programme für Windows bereit, aber es gibt viele subtile Unterschiede, einschließlich:
- Absicht. Cygwin ist für Leute, die UNIX auf ihrem Windows-Betriebssystem verwenden möchten. MSYS ist für Leute gedacht, die Windows-Programme mit den GNU/UNIX-Build-Tools erstellen möchten. GnuWin32 ist eine Portierung einzelner GNU-Programme und -Bibliotheken auf Windows.
- Textdateien, insbesondere Zeilenenden. Mit Cygwin können Sie CR/LF oder LF verwenden. MSYS erwartet LF-Zeilenenden. GnuWin32-Programme erwarten CR/LF-Zeilenenden.
- Mitgelieferte Programme. Insbesondere Cygwin hat viel mehr Pakete und GnuWin32 stellt keine Shells zur Verfügung.
Git ist mit Cygwin verfügbar - diese Version kann in einem Windows-Verzeichnis verwendet werden (zugänglich unter /cygdrive
). Außerdem gibt es, wie erwähnt, msysgit.
Michael Slade hat Recht. Ich möchte über die typische Nutzungsumgebung sprechen.
Aus praktischen Gründen verwende ich gnuwin als leichtes Backend für Dinge, die nur entfernt mit POSIX-Umgebungen zu tun haben, während cygwin eher ein ausgewachsenes POSIX und sogar eine sehr gnunixartige Umgebung ist.
Außerdem neigt gnuwin dazu, aufgebläht zu werden, wenn viele Tools installiert werden, weil die ausführbaren Dateien oft statisch gelinkte Bibliotheken verwenden. Cygwin hingegen liefert eine Menge dynamischer Bibliotheken und ziemlich kleine ausführbare Dateien. Wenn Sie also nur wenige ausführbare Dateien benötigen, benötigt gnuwin weniger Ressourcen. Wenn Sie eine komplexe Umgebung benötigen, ist Cygwin effizienter.
gnuwin ist auch oft etwas veraltet, bietet wenig Software, keinen Paket-/Update-Manager. Es ist eine einfache Shell-Umgebung. Kein ssh, kein gcc, vim, kein perl, kein sql - Sie können diese aus anderen Quellen beziehen, aber wie diese zusammenarbeiten, ist schwer vorherzusagen. Cygwin behebt alle oben genannten Probleme.
Mit anderen Worten, gnuwin eignet sich hervorragend für den gelegentlichen Installer, um einfach du, find und sort in Ihren $PATH einzufügen. Um etwas echte POSIX-Arbeit zu erledigen, verwenden Sie cygwin.
Ich hatte einmal eine zweite Linux-Workstation, dann eine Linux-VM, die neben meinem Windows-System lief. Cygwin machte sie obsolet. Es ist gut genug für eine Menge Dinge und spart im Vergleich zu einem dedizierten Computer oder einer VM jede Menge Ressourcen.