Was sind die praktischen Unterschiede zwischen Interix und Cygwin?


14

Sowohl Interix als auch Cygwin bieten eine Unix-ähnliche Benutzerumgebung in Windows. Was sind die praktischen Unterschiede zwischen den beiden, zum Beispiel in Bezug auf:

  • Unix-ähnliches "Gefühl"
  • Performance
  • Paketverfügbarkeit / einfache Kompilierung von zufälliger Software, die aus dem Internet heruntergeladen wurde
  • Integration mit Windows-Anwendungen und -Tools
  • Integration / Kompatibilität mit virtuellen Maschinen (z. B. können Interix und eine virtuelle Ubuntu-Maschine dasselbe "Home-Verzeichnis" verwenden)
  • Größe der Benutzerbasis / Ebene der Community-Unterstützung

Ein mir bekannter Unterschied ist, dass Interix Windows 7 Enterprise oder Ultimate Edition erfordert. Cygwin läuft mit allem.

Antworten:


7

Ich habe bisher nur Windows SFU unter Windows 2008 verwendet, aber ich glaube, das basiert auf Interix. Ich habe gelegentlich mit Cygwin gespielt, aber nicht sehr viel. Deshalb korrigiert mich bitte jemand, wenn ich hier etwas sichtlich Falsches sage.

  • Unix-ähnliches Gefühl: Interix gewinnt dieses Spiel. Die Umgebung fühlt sich viel "vollständiger" an. Ich bin mir nicht sicher, wie ich es ausdrücken soll. Interix wird neben dem win32-Subsystem ausgeführt, auf dem cygwin ausgeführt wird. Interix ist also ein "First Class Citizen" im Windows-Kernel-Land. Dinge wie psund dffunktionieren gut.
  • Leistung: Nachdem ich keine großen Leistungstests durchgeführt habe, würde ich vermuten, dass Interix auch dies gewinnt. Wieder läuft es auf einer niedrigeren Ebene. Sie führen nicht nur Win32-Apps mit einer eingebundenen POSIX-Kompatibilitäts-DLL aus.
  • Pakete / Zufallssoftware: Cygwin gewinnt diese aus zwei Gründen. Erstens ist Cygwin weitaus bekannter. Viele Unixy-Programme werden ihre Macken unterstützen. Sie können die Dinge auch ganz einfach über das GUI-Installationsprogramm installieren. Interix hat (glaube ich) so etwas nicht eingebaut. Sicher, Sie können etwas herunterladen, es mit gcc kompilieren (was ich glaube, Sie können es vorkonfigurieren) und beten, dass es funktioniert, aber es ist ein bisschen wie das Portieren von Software auf eine andere zufällige Variante von Unix (wie Solaris oder AIX) - manche Dinge werden funktionieren, andere werden versuchen, dir das Bein abzubeißen und deine Kinder zu ermorden.
  • Integration mit Windows-Apps und -Tools: Um ehrlich zu sein, beides ist eine Art Trottel. Wenn Sie beispielsweise einen Apache-Server haben, der in Cygwin oder Interix ausgeführt wird, kann er sicher über TCP mit Win32-Programmen kommunizieren, aber das ist ungefähr so ​​weit. Ich glaube, Sie können Win32-Programme aus Interix heraus töten und sie mit ps auflisten, ohne sicher zu sein, ob Sie dies mit cygwin tun können. In beiden Fällen können Sie den Windows-Task-Manager zum Beenden von Vorgängen verwenden.
  • Integration mit VMs: Adressieren Sie Ihr Beispiel für die Freigabe eines Basisverzeichnisses, und klicken Sie dann auf Ja. Sie können entweder Samba verwenden, und ich glaube, NFS funktioniert auch unter Interix, um etwas Unixigeres zu erreichen. Sie werden jedoch keine netten GUIs oder irgendetwas finden, um die Arbeit für Sie zu erledigen. Mit cygwin und Interix können Sie auf Ihre regulären Dateisysteme zugreifen.
  • Größe der Nutzerbasis: Cygwin gewinnt hier, würde ich sagen. Es war sehr schwierig, Dinge zu finden, die für die Ausführung unter Interix getestet und entwickelt wurden, wobei die meisten Open-Source-Produkte Cygwin als Kompilierungsplattform zu unterstützen schienen.

Wenn Sie eine Kopie eines Windows-Betriebssystems haben, das Interix unterstützt (wie Sie bereits sagten, eine Enterprise Edition, eine Ultimate Edition oder eine Server Edition), ist es kein Problem, es auszuprobieren. Es ist eine sehr vollständige Gefühlsumgebung. Cygwin läuft, wie Sie sagten, auf allem und ist bekannter und besser unterstützt, fühlt sich aber für mich ein bisschen wie ein schmutziger Hacker an. Einige Leute benutzen es jedoch regelmäßig.


In Bezug auf Pakete ist das Gentoo-Präfix für Interix möglicherweise einen Versuch wert
Tobias Kienzler,

1
Der schnelle Vorlauf auf 2015 lautet nun einfach: "Cygwin ist immer noch verfügbar und wird unterstützt, während Interix (auch bekannt als Services für Unix oder Subsystem für Unix-basierte Anwendungen) eingestellt wird."
adib

3

/ * meta note- Ich hasse es, dass Kommentare so kurz sind * /

Ich stimme Andrews Antwort meistens mit ein paar Kommentaren zu. Ich habe viele Unix-Systeme unter Windows durch SUA / SFU (nein, sie sind nicht gleich, aber nahe) ersetzt.

  • Leistung - SUA ist viel schneller als Dienste für Unix, aber SFU war auch keine Lücke, beide sind normalerweise schneller als Cygwin (aber nicht immer)
  • Integration - Integration ist der springende Punkt von SFU / SUA und es gibt eine Menge Dokumente darüber, was Sie auf der Technet-Site tun können und was nicht. Cygwin wurde entwickelt, um den Befehl * nix unter Windows auszuführen, damit die beiden nicht zusammenarbeiten. Siehe Unix / Linux-Interoperabilitätskomponenten in Windows (SUA, IdMU, NFS usw.)
  • Benutzerbasis-Ich denke , es gibt mehr arbeiten, unterstützten Lösungen auf der Interix Seite als auf der Cygwin - Seite und weit weniger Kompatibilitätsprobleme als mit Cygwin Seite sehen http://www.suacommunity.com/ (Werkzeuglager). Cygwin hat wahrscheinlich insgesamt mehr Installationen, da es für die "Ich brauche eine Unix-Shell" -Lösung geeignet ist, mit der Cygwin Befehle ausführt. SUA ist eine Unix-Umgebung, die mit Windows vergleichbar ist.

1

Ich kann die Antwort von JimB nicht kommentieren, also hier darauf eingehen, insbesondere auf den Punkt zur Windows-Integration. Cygwin basiert auf Win32, läuft aber nicht in einem eigenen Subsystem, ist langsamer und bietet eine wesentlich bessere Windows-Integration. Es ermöglicht sogar die Verwendung von Windows- und UNIX-APIs im selben Programm, wodurch beispielsweise der Cygwin X-Server oder das mintty-Terminal aktiviert werden.

Cygwins 'ps' listet Windows-Prozesse auf, wenn Sie die Option -W angeben, und 'kill -f' beendet sie. Windows-Programme können aus Cygwin heraus aufgerufen und mit Cygwin-Programmen unter Verwendung aller üblichen Mechanismen wie Pipes verbunden werden. (Ich weiß nicht, ob das in Interix möglich ist.)

Windows-ähnliche Pfade mit Schrägstrichen in Vorwärts- und Rückwärtsrichtung werden unterstützt. Cygwin 1.7 hat UTF-8 zum Standardzeichensatz gemacht, und die UTF-16-Dateinamen von Windows werden automatisch übersetzt, sodass Dateinamen in jeder Sprache in Cygwin korrekt angezeigt werden. Ich weiß nicht, was Interix hier macht, konnte aber keine Beweise dafür finden, dass es Unicode unterstützt.

Zu den weiteren Integrationsfunktionen gehören das Dienstprogramm 'cygstart' zum Öffnen einer Datei, als ob Sie im Explorer darauf doppelklicken, und das Gerät / dev / clipboard für den Zugriff auf die Windows-Zwischenablage.


3
Wie bietet es eine "viel bessere Windows-Integration"? "Es ermöglicht sogar die Verwendung von Windows- und UNIX-APIs im selben Programm" - dies gilt auch für Interix. siehe dies für die Quelle der ersten Partei; Folie 37, "Mixed-Mode-Prozesse", mit der Überschrift "Resultierender Mixed-Mode-Prozess kann SUA- und Windows-API-Aufrufe im selben Prozess
ausführen

1

Lassen Sie mich meine Erfahrungen mit der Installation von Interix für Windows 7 teilen.

Unsere Reise beginnt auf einer undurchsichtigen Seite für Windows Server 2008.

Hier werden Sie feststellen, dass es nicht mehr Interix heißt, sondern Subsystem für Unix-basierte Anwendungen oder SUA . Als Nächstes werden Sie nur anhand eines Benutzerkommentars feststellen, dass SUA nur für Windows 7 Ultimate oder Enterprise verfügbar ist. Dies wird im Artikel nirgendwo erwähnt. Nach der Installation des "Subsystems" werden Sie feststellen, dass es nicht mehr als 2 Verknüpfungen in Ihrem Startmenü gibt.

sua

Jetzt kommst du zum wahren Übel. Klicken Sie auf die Verknüpfung zum Herunterladen, um zur Downloadseite zu gelangen.

alt

Hier stehen 3 Dateien zum Download zur Verfügung. Diese Dateien haben alle eine Größe von über 400 MB über 4 Jahre alt . Außerdem haben wir keinerlei Möglichkeiten, benutzerdefinierte Pakete, bestimmte Teile usw. herunterzuladen. Sie werden dann feststellen, dass dieser Link tatsächlich für Vista und nicht für Windows 7 bestimmt ist und Sie müssen das Internet durchsuchen, um die Windows 7-Seite zu finden . An diesem Punkt gab ich auf.

Cygwin

Gehen Sie zu cygwin.com . Laden Sie cygwin.com/setup-x86.exe herunter . Diese Datei ist 714 KB groß . Führen Sie eine Grundinstallation durch und Sie werden sehen, dass es ungefähr 2 Minuten dauert .

Zeit

Danach können Sie das Installationsprogramm für viele andere Pakete nach Ihren Wünschen wiederverwenden. Die Moral der Geschichte ist, dass Cygwin sich um den Benutzer kümmert .


Lassen Sie mich Sie richtig verstehen, denn es gab keine Notwendigkeit, das Installationsprogramm zu ändern, um die mit Win 7 gelieferte Unix-Version auszuführen, was bedeutet, dass Sie sich nicht darum kümmern müssen zurückgehen und mehr bekommen müssen) ist irgendwie ein Pluspunkt? Die jüngste Entscheidung, die Unix-Komponenten von Windows zu entfernen, ist sicherlich ein Zeichen dafür, dass Benutzer entweder nicht unter Windows arbeiten (IMHO höchstwahrscheinlich) oder dass es sie einfach nicht interessiert, aber ich sehe das nicht wirklich.
Jim B

@JimB Es kommt nicht mit Windows 7. Ich hätte gedacht, mein Beitrag machte das klar. Es ist nur für Win7 Ultimate verfügbar und muss heruntergeladen werden. Außerdem ist der Download 4 Jahre alt. In der Software-Community ist das ein Leben lang und zeigt einen deutlichen Mangel an Anleitung / Initiative von Microsoft.
Steven Penny

3
Es kommt mit Windows, was Sie herunterladen, sind Unix-Befehle, die das Subsystem verwenden. Da einige der Befehle in Linux älter als 40 Jahre sind, wundert es mich nicht, dass sie nicht neu geschrieben werden mussten (und nach Ihrem Standard verwendet seit Jahrzehnten wahrscheinlich niemand mehr Linux oder Unix). Neue Tools und Befehle werden der SU-Community unter suacommunity.com/tool_warehouse.htm hinzugefügt
Jim B,

2
Seltsamerweise musste ich den Code durcharbeiten und yup - es ist der gleiche Code wie vor 40 Jahren - schätze, diese Leute bei GNU machen etwas schreckliches falsch - oder vielleicht - nur vielleicht - es gibt keine Notwendigkeit, etwas zu ändern, das nicht stimmt. ' t gebrochen
Jim B

0

UNIX-ähnliches "Gefühl" ist ziemlich subjektiv. Meine Stimme geht mit CygWin, da es CygWin / X Xwindows Server mit allen notwendigen Funktionen hat. SFU bekam die grundlegenden X11-Tools, aber es war zu wenig und zu spät. Viele (einschließlich ich) wurden mit CygWin bekannt, weil sie einen X11-Server benötigen. Aus Gründen der Vollständigkeit ist CygWin auch besser positioniert, da es Open Source ist und viele GNU- oder GPL-lizenzierte Software darauf portiert ist. Ich habe nur wenige kommerzielle Produkte für CygWin gesehen, während ich nur ein Produkt gesehen habe, für das UNIX Services für Windows NT erforderlich sind, und seitdem keines. YMMV.

PaketverfügbarkeitDies ist ein klarer Gewinn für CygWin, der von mehreren Faktoren beeinflusst wird: - Geringere Einstiegskosten: "Any Windows" mit CygWin vs. Server-Lizenz für SFU / SUA. Einige Funktionen sind für die Desktop-Versionen von Windows verfügbar, jedoch für die teureren Versionen und ohne die Serverkomponenten. - Open Source vs. Closed Source und vor allem offen verfügbare Dokumentation. In der Vergangenheit standen sogar die Befehlsliste und die bereitgestellten APIs nur MSDN-Abonnenten zur Verfügung, und auf der Microsoft-Site waren nur wenige oder gar keine Informationen verfügbar. Im Gegensatz dazu war das GNU-Toolset gut dokumentiert und sowohl online als auch als Manpage verfügbar. - Die Namens- und Implementierungsänderungen sind verwirrend. Die frühen Versionen verwendeten das MKS-Toolkit, das später aufgegeben wurde.

Performance- bezogen kann man argumentieren, dass das Interix näher am Kernel ist und somit einen kürzeren Code-Run-Pfad hat. Die eigentliche Frage ist, um wie viel und spielt es eine Rolle? Bei den meisten Programmen beträgt der Unterschied einige Prozent und ist vernachlässigbar. Natürlich kann ein künstliches Beispiel mit umfangreichen E / A-Vorgängen herangezogen werden. Ich würde es vorziehen, natives UNIX so stark zu belasten, dass es schneller ist als native Windows- und UNIX-Add-Ons auf Windows. Viele sind mit zunehmender Last von Windows auf UNIX migriert, während ich kein Beispiel für die Konvertierung von CygWin nach Interix (oder umgekehrt) kenne. Es ist die UNIX-Kompatibilität, die gesucht wird und nicht die UNIX-Leistung, also setze ich dies an das Ende der Liste.


2
In Bezug auf die Leistung gewinnt Interix hier tatsächlich. Viele der traditionell als * nix-Systemaufrufe implementierten Dinge (wie fork ()) sind auf Win32 in Cygwin implementierte Kludges. Win32 hat keine Ahnung von fork (), aber Interix (und NT). Cygwin hat Probleme damit - den Adressraum für fork () genau richtig zu machen - und das führt zu ernsthaften Leistungsproblemen. Jemand wird sich sicher über den Link aufregen, der mehr als diesen Kommentar enthält, aber hier ist er, direkt vom Fass .
user314104
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.