Cygwin - Cygwin

Cygwin
Cygwin-logo.svg
Cygwin X11 ohne Root WinXP.png
Ausführen von Cygwin, einschließlich Cygwin/X , unter Windows XP
Originalautor(en) Steve Chamberlain, Cygnus Solutions
Entwickler Cygnus Solutions , Red Hat , Cygwin-Projekt-Freiwillige
Erstveröffentlichung 18. Oktober 1995 ; vor 25 Jahren ( 1995-10-18 )
Stabile Version
3.2.0  Bearbeiten Sie dies auf Wikidata / 29. März 2021 ; vor 4 Monaten ( 29. März 2021 )
Repository Bearbeite dies bei Wikidata
Geschrieben in C / C++
Betriebssystem Microsoft Windows
Typ POSIX-Standarddienstprogramme , POSIX-Standardbibliothek , C-Standardbibliothek , Kompatibilitätsschicht
Lizenz LGPLv3
Webseite cygwin .com Bearbeiten Sie dies auf Wikidata

Cygwin ( / s ɪ ɡ w ɪ n / SIG -win ) ist eine POSIX -kompatiblen Programmierung und Laufzeitumgebung , dass läuft nativ auf Microsoft Windows . Unter Cygwin kann Quellcode, der für Unix-ähnliche Betriebssysteme entworfen wurde, mit minimalen Änderungen kompiliert und ausgeführt werden.

Das Cygwin-Installationsverzeichnis hat ein Verzeichnislayout, das dem Root-Dateisystem von Unix-ähnlichen Systemen ähnelt, mit vertrauten Verzeichnissen wie /bin, /home, /etc, /usr, /var. Cygwin wird mit Hunderten von Befehlszeilentools und anderen Programmen installiert, die normalerweise auf einem Unix-ähnlichen System zu finden sind. Außerdem können viele Anwendungen von einem Verpackungssystem installiert werden. Der Terminalemulator Mintty ist die standardmäßige Befehlszeilenschnittstelle, die für die Interaktion mit der Umgebung bereitgestellt wird.

Cygwin bietet native Integration von Windows-basierten Anwendungen. Damit ist es möglich, Windows-Anwendungen aus der Cygwin-Umgebung zu starten, sowie Cygwin-Tools und -Anwendungen im Windows-Betriebskontext zu verwenden.

Cygwin besteht aus zwei Teilen: einer Dynamic-Link-Library (DLL) als API- Kompatibilitätsschicht in Form einer C-Standardbibliothek, die einen wesentlichen Teil der POSIX- API-Funktionalität bereitstellt, und einer umfangreichen Sammlung von Softwaretools und Anwendungen, die ein Unix -ähnliches Aussehen und Gefühl .

Cygwin ist freie Open-Source-Software , die unter der GNU Lesser General Public License Version 3 veröffentlicht wurde. Sie wurde ursprünglich von Cygnus Solutions entwickelt , die später von Red Hat (jetzt Teil von IBM ) erworben wurde, um die Linux- Toolchain auf Win32 zu portieren. einschließlich der GNU Compiler Suite . Anstatt die Tools so umzuschreiben, dass sie die Win32- Laufzeitumgebung verwenden, implementierte Cygwin eine POSIX- kompatible Umgebung in Form einer Dynamic Link Library (DLL).

Beschreibung

Die Cygwin-Umgebung wird in zwei Versionen bereitgestellt; die vollständige 64-Bit-Version und eine abgespeckte 32-Bit-Version, die langsam auslaufen wird. Cygwin besteht aus einer Bibliothek, die die POSIX -Systemaufruf- API in Form von Windows-Systemaufrufen implementiert, einer GNU- Entwicklungs-Toolchain (einschließlich GCC und GDB ), um die Softwareentwicklung zu ermöglichen, und dem Ausführen einer großen Anzahl von Anwendungsprogrammen, die denen auf Unix- Systemen entsprechen. Programmierer haben viele Unix-, GNU-, BSD- und Linux- Programme und -Pakete auf Cygwin portiert , darunter das X Window System , K Desktop Environment 3 , GNOME , Apache und TeX . Cygwin erlaubt die Installation von inetd , syslogd , sshd , Apache und anderen Daemons als Standard- Windows-Dienste , wodurch Microsoft Windows-Systeme Unix- und Linux-Server emulieren können.

Cygwin-Programme werden installiert, indem das "Setup"-Programm von Cygwin ausgeführt wird, das die erforderlichen Programm- und Funktionspaketdateien aus Repositorys im Internet herunterlädt. Wie bereits erwähnt, gibt es zwei Versionen dieses Setup-Programms, eine für 32-Bit-Versionen der Cygwin-DLL und entsprechende Anwendungen und eine für 64-Bit-Versionen. Setup kann Programme und deren Quellcodepakete installieren, aktualisieren und entfernen. Eine vollständige Installation benötigt mehr als 90 GB Festplattenspeicher, aber verwendbare Konfigurationen benötigen möglicherweise nur 1 oder 2 GB.

Zu den Bemühungen, Konzepte in Einklang zu bringen, die sich zwischen Unix- und Windows-Systemen unterscheiden, gehören:

  • Eine Cygwin-spezifische Version des Unix- mountBefehls ermöglicht es, Windows-Pfade als "Dateisysteme" in den Unix-Dateibereich einzubinden. Anfängliche Mount-Punkte können in konfiguriert werden /etc/fstab, das ein dem Unix-System sehr ähnliches Format hat, mit der Ausnahme, dass Windows-Pfade anstelle von Geräten erscheinen. Dateisysteme können im Binärmodus (standardmäßig) oder im Textmodus eingehängt werden, der eine automatische Konvertierung zwischen LF- und CRLF- Endungen ermöglicht (was nur Programme betrifft, die Dateien öffnen, ohne explizit den Text- oder Binärmodus anzugeben).
  • Cygwin 1.7 führte umfassende Unterstützung für POSIX- Locales und viele Zeichenkodierungen ein , wobei die UTF-8- Unicode- Kodierung zum Standard wurde. Windows-Dateinamen und andere Bezeichner, die als UTF-16 kodiert sind , werden automatisch in die und von der ausgewählten Zeichenkodierung konvertiert.
  • Windows- Laufwerksbuchstaben werden einem speziellen Verzeichnis zugeordnet, sodass sie beispielsweise C:als /cygdrive/c. Das /cygdrivePräfix kann geändert werden. Windows-Netzwerkpfade des Formulars \\HOST\SHARE\FILEwerden auf //HOST/SHARE/FILE. Windows-Pfade können auch direkt von Cygwin-Programmen verwendet werden, aber viele Programme unterstützen sie nicht richtig, daher wird davon abgeraten.
  • Voll funktionsfähige /devund /procDateisysteme werden bereitgestellt. /proc/registrybietet direkten Dateisystemzugriff auf die Registrierung.
  • Cygwin Stützen POSIX symbolische Links , so dass sie als Klartext - Dateien , die mit dem System darstellt Attributsatz. Cygwin 1.5 stellte sie als Windows Explorer- Verknüpfungen dar , dies wurde jedoch aus Gründen der Leistung und der POSIX-Korrektheit geändert. Cygwin erkennt auch NTFS- Abzweigungspunkte und symbolische Links und behandelt sie als symbolische POSIX-Links, erstellt sie jedoch nicht, da ihre Semantik nicht vollständig POSIX-kompatibel ist.
  • Die POSIX- API zum Behandeln von Zugriffssteuerungslisten (ACLs) wird unterstützt und dem Windows NT-ACL-System zugeordnet.
  • Es werden spezielle Formate von /etc/passwdund /etc/groupbereitgestellt, die Zeiger auf die Windows-äquivalenten SIDs (im Gecos-Feld ) enthalten, die eine Zuordnung zwischen Unix- und Windows-Benutzern und -Gruppen ermöglichen.
  • Der fork -Systemaufruf zum Duplizieren eines Prozesses ist vollständig implementiert, passt jedoch nicht gut zur Windows-API. Beispielsweise konnte die Copy-on-Write- Optimierungsstrategie nicht verwendet werden. Dadurch ist Cygwins Fork im Vergleich zu Linux und anderen eher langsam. (Dieser Overhead kann oft vermieden werden, indem die Verwendung der fork/exec- Technik durch Aufrufe der Spawn- Funktionen ersetzt wird, die im Windows-spezifischen process.h- Header deklariert sind ).
  • Die Cygwin-DLL enthält einen Konsolentreiber, der ein Terminal im Unix-Stil innerhalb der Windows-Konsole emuliert . Die Standardbenutzeroberfläche von Cygwin ist die Bash- Shell, die in der Cygwin-Konsole ausgeführt wird.
  • Die DLL implementiert auch Pseudoterminalgeräte (pty). Cygwin wird mit einer Reihe von darauf basierenden Terminalemulatoren ausgeliefert , darunter mintty , rxvt ( -unicode ) und xterm . Diese entsprechen besser den Unix-Terminalstandards und Benutzerschnittstellenkonventionen als die Cygwin-Konsole, eignen sich jedoch weniger für die Ausführung von Windows-Konsolenprogrammen.
  • Es werden verschiedene Dienstprogramme zum Konvertieren zwischen Windows- und Unix-Pfad und Dateiformaten, zum Behandeln von Zeilenendproblemen (CRLF/LF), zum Anzeigen der DLLs , mit denen eine ausführbare Datei verknüpft ist, usw. bereitgestellt .
  • Abgesehen davon, dass sie immer gegen die Cygwin-DLL gelinkt werden, sind ausführbare Cygwin-Dateien normale ausführbare Windows-Dateien. Dies bedeutet, dass Cygwin-Programme vollen Zugriff auf die Windows-API und andere Windows-Bibliotheken haben, was eine schrittweise Portierung von Programmen von einer Plattform auf die andere ermöglicht. Programmierer müssen jedoch vorsichtig sein, widersprüchliche POSIX- und Windows-Funktionen zu mischen.

Die mit Cygwin gelieferte Version von gcc verfügt über verschiedene Erweiterungen zum Erstellen von Windows-DLLs, die angeben, ob ein Programm ein Programm im Fenster- oder Konsolenmodus ist, Ressourcen hinzufügen usw. Unterstützung für das Kompilieren von Programmen, die die von Cygwin bereitgestellte POSIX-Kompatibilitätsschicht nicht benötigen DLL war früher im Standard enthalten gcc, wird aber ab 2014 von Cross-Compilern bereitgestellt, die vom MinGW-w64- Projekt beigesteuert wurden .

Cygwin wird häufig für die Portierung vieler beliebter Software auf die Windows-Plattform verwendet. Es wird verwendet, um Sun Java , LibreOffice und sogar Webserver-Software wie Lighttpd und Hiawatha zu kompilieren .

Die Cygwin-API-Bibliothek ist unter der GNU Lesser General Public License Version 3 (oder höher) lizenziert, mit einer Ausnahme, die das Verlinken auf jede freie und Open-Source-Software erlaubt, deren Lizenz der Open-Source-Definition entspricht (weniger streng als die Free-Software-Definition). .

Geschichte

Cygwin begann 1995 als Projekt von Steve Chamberlain, einem Cygnus- Ingenieur, der beobachtete, dass Windows NT und 95 COFF als Objektdateiformat verwendeten und dass GNU bereits x86 und COFF sowie die C-Bibliothek newlib unterstützte . Er dachte, es sei möglich, GCC neu auszurichten und einen Cross-Compiler zu erstellen, der ausführbare Dateien generiert, die unter Windows laufen könnten. Dies erwies sich als praktisch und ein Prototyp wurde schnell entwickelt.

Der nächste Schritt war der Versuch, den Compiler auf einem Windows-System zu booten , was eine ausreichende Emulation von Unix erforderte, damit das GNU-Configure- Shell-Skript ausgeführt werden konnte. Ein mit der Bourne-Shell kompatibler Befehlsinterpreter wie bash wurde benötigt und wiederum eine Emulation von Fork-Systemaufrufen und eine Standard-Ein-/Ausgabe . Windows enthält ähnliche Funktionen, so dass die Cygwin-Bibliothek nur benötigt wird, um eine POSIX- kompatible Anwendungsprogrammierschnittstelle (API) bereitzustellen, Aufrufe richtig zu übersetzen und private Versionen von Daten, wie Dateideskriptoren, zu verwalten .

Anfangs hieß Cygwin gnuwin32 (nicht zu verwechseln mit dem aktuellen GnuWin32- Projekt). Der Name wurde in Cygwin32 geändert, um Cygnus' Rolle bei der Erstellung zu betonen. Als Microsoft die Marke Win32 registrierte , wurde die 32 fallen gelassen und wurde einfach zu Cygwin.

Bis 1996 hatten sich andere Ingenieure angeschlossen, weil klar war, dass Cygwin eine nützliche Möglichkeit sein würde, Cygnus' eingebettete Tools bereitzustellen, die auf Windows-Systemen gehostet werden (die vorherige Strategie bestand darin, DJGPP zu verwenden ). Es war besonders attraktiv, weil es möglich war, ein Drei-Wege- Cross-Compiler durchzuführen , um beispielsweise mit einer kräftigen Sun Microsystems- Workstation beispielsweise einen Windows-x- MIPS- Cross-Compiler zu bauen, was schneller war als die Verwendung des PCs bei die Zeit. Im Jahr 1999 bot Cygnus Cygwin 1.0 als eigenständiges kommerzielles Produkt an, obwohl nachfolgende Versionen nicht veröffentlicht wurden, sondern sich auf fortgesetzte Open-Source-Veröffentlichungen stützten.

Geoffrey Noer war von 1996 bis 1999 Projektleiter. Christopher Faylor war von 1999 bis Mitte 2014 Projektleiter. Corinna Vinschen wurde seit 2004, als Faylor Red Hat verließ, Co-Leiterin und ist seit Mitte 2014, als Faylor sich von der aktiven Teilnahme am Projekt zurückzog, an der Spitze.

Ab dem 23. Juni 2016 wurde die Cygwin-Bibliothek Version 2.5.2 unter der GNU Lesser General Public License (LGPL) Version 3 lizensiert, so dass es nun möglich ist, gegen Closed-Source-Anwendungen zu verlinken. Bevor dies verfügbar war, gab es zwei Möglichkeiten: Sie könnten den Quellcode Ihrer Anwendung freigeben oder eine Cygwin-Lizenz kaufen, um eine Closed-Source-Anwendung freizugeben.

Merkmale

Cygwins Basispaketauswahl ist ziemlich klein (ungefähr 100 MB) und enthält kaum mehr als die Shells bash (interaktiver Benutzer) und dash (Installation) und die wichtigsten Dienstprogramme zur Datei- und Textbearbeitung, die von einer Unix-Befehlszeile erwartet werden. Zusätzliche Pakete sind als optionale Installationen im Paketmanager von Cygwin verfügbar ("setup-x86.exe" – 32bit & "setup-x86_64.exe" – 64bit). Dazu gehören (unter vielen anderen):

Das Cygwin/X- Projekt steuert eine Implementierung des X Window Systems bei , die es grafischen Unix-Programmen ermöglicht, ihre Benutzeroberflächen auf dem Windows-Desktop anzuzeigen. Dies kann sowohl mit lokalen als auch mit Remote-Programmen verwendet werden. Cygwin/X unterstützt über 500 Pakete, darunter die wichtigsten X Window Manager, Desktop-Umgebungen und Anwendungen, zum Beispiel:

Zusätzlich zu den Low-Level- Xlib / XCB- Bibliotheken für die Entwicklung von X-Anwendungen wird Cygwin auch mit verschiedenen höherstufigen und plattformübergreifenden GUI- Frameworks ausgeliefert, darunter GTK+ und Qt .

Das Cygwin Ports- Projekt stellte viele zusätzliche Pakete bereit, die in der Cygwin-Distribution selbst nicht verfügbar waren. Beispiele waren GNOME und K Desktop Environment 3 sowie die MySQL- Datenbank und die Skriptsprache PHP . Die meisten Ports wurden von freiwilligen Betreuern als Cygwin-Pakete übernommen und Cygwin-Ports werden nicht mehr gepflegt.

Siehe auch

Verweise

Externe Links