Quelles sont les différences pratiques entre Interix et Cygwin?

14

Les deux Interix et Cygwin semblent offrir un environnement utilisateur Unix comme dans Windows. Quelles sont les différences pratiques entre les deux, en termes de, par exemple:

  • "Sensation" de type Unix
  • Performance
  • Disponibilité / facilité de compilation de logiciels téléchargés au hasard sur Internet
  • Intégration avec les applications et outils Windows
  • Intégration / compatibilité avec les machines virtuelles (par exemple, est-il possible pour Interix et une machine virtuelle Ubuntu de partager le même "répertoire personnel")
  • Taille de la base d'utilisateurs / niveau de support communautaire

Une différence que je connais est qu'Interix nécessite Windows 7 Enterprise ou Ultimate; Cygwin fonctionnera sur n'importe quoi.

ithinkihaveacat
la source

Réponses:

7

Je n'ai utilisé Windows SFU que sur Windows 2008 auparavant, mais je crois que cela est basé sur Interix. J'ai joué avec cygwin à l'occasion, mais pas énormément, alors quelqu'un s'il vous plaît corrigez-moi si je dis quelque chose de mal ici.

  • Sensation Unix: Interix gagne celui-ci. L'environnement semble beaucoup plus "complet". Je ne sais pas comment le dire. Interix côtoie le sous-système win32, où as cygwin s'exécute par-dessus. Ainsi, interix est un "citoyen de première classe" dans le pays du noyau Windows. Des choses comme pset dffonctionnent bien.
  • Performance: N'ayant fait aucun test de performance majeur, je suppose qu'Interix gagne aussi. Encore une fois, cela fonctionne à un niveau inférieur. Vous n'exécutez pas uniquement des applications Win32 avec une DLL de compatibilité POSIX liée.
  • Packages / logiciels aléatoires: Cygwin remporte celui-ci pour deux raisons. Premièrement, cygwin est bien mieux connu. Beaucoup de logiciels Unixy prendront en charge ses bizarreries. Vous pouvez également installer des choses très facilement à partir du programme d'installation de l'interface graphique. Interix n'a (je crois) rien de tel intégré. Bien sûr, vous pouvez télécharger quelque chose, le compiler en utilisant gcc (que je pense que vous pouvez obtenir préconstruit) et prier pour que cela fonctionne, mais c'est un peu comme le portage d'un logiciel vers toute autre variante aléatoire d'Unix (comme Solaris ou AIX) - certains les choses vont marcher, d'autres vont essayer de vous mordre la jambe et de tuer vos enfants.
  • Intégration avec les applications et les outils Windows: pour être honnête, les deux sont un peu nul. Si vous avez, par exemple, un serveur Apache fonctionnant à l'intérieur de cygwin ou Interix, alors bien sûr, il va pouvoir communiquer via TCP avec des programmes Win32, mais c'est à peu près aussi loin que cela va. De l'intérieur d'Interix, je crois que vous pouvez tuer les programmes Win32 et les lister en utilisant ps, je ne sais pas si vous pouvez le faire avec cygwin. Avec les deux, vous pouvez utiliser le gestionnaire de tâches Windows pour tuer des choses.
  • Intégration avec les machines virtuelles: répondre à votre exemple de partage d'un répertoire personnel, alors oui. Vous pouvez soit utiliser samba pour cela, et je crois que NFS fonctionne aussi sur Interix pour quelque chose de plus unixy. Vous ne trouverez cependant pas de belles interfaces graphiques ou quoi que ce soit pour faire le travail pour vous. Cygwin et Interix vous permettent d'accéder à vos systèmes de fichiers habituels.
  • Taille de la base d'utilisateurs: Cygwin gagne ici, je dirais. Il était très difficile de trouver des choses qui avaient été testées et développées pour fonctionner sur Interix, où la plupart des choses open source semblaient prendre en charge cygwin comme plate-forme de compilation.

Si vous avez une copie d'un système d'exploitation Windows qui prendra en charge Interix (comme vous l'avez dit, une édition Enterprise, une édition Ultimate ou une édition Server), ce n'est pas un inconvénient de l'essayer. C'est un environnement de sensation très complet. Cygwin, comme vous l'avez dit, fonctionne sur tout et est mieux connu et mieux pris en charge, mais me semble un peu comme un hack sale. Certaines personnes l'utilisent cependant régulièrement.

Andrew
la source
En ce qui concerne les packages, le préfixe Gentoo pour Interix pourrait valoir le coup
Tobias Kienzler
1
Avance rapide jusqu'en 2015, la réponse devient maintenant simplement "cygwin est toujours disponible et pris en charge alors qu'Interix (aka Services pour Unix aka Sous-système pour les applications basées sur Unix) est interrompu"
adib
3

/ * meta note - Je déteste que les commentaires soient si courts * /

Je suis principalement d'accord avec la réponse d'Andrews avec quelques commentaires. J'ai remplacé de nombreux systèmes Unix par SUA / SFU (non, ils ne sont pas identiques mais proches) sous Windows.

  • performances - SUA est beaucoup plus rapide que les services pour unix mais SFU n'était pas en reste non plus, les deux sont généralement plus rapides que cygwin (mais pas toujours)
  • intégration - l'intégration est tout l'intérêt de SFU / SUA et il y a beaucoup de documents sur ce que vous pouvez et ne pouvez pas faire sur le site technet. Cygwin est conçu pour exécuter la commande * nix sur Windows - pas pour faire coopérer les 2. Voir Composants d'interopérabilité Unix / Linux dans Windows (SUA, IdMU, NFS, etc.)
  • base d'utilisateurs-je pense qu'il y a plus de solutions prises en charge du côté interix que du côté cygwin et beaucoup moins de problèmes de compatibilité qu'avec le côté cygwin, voir http://www.suacommunity.com/ (entrepôt d'outils). Cygwin a probablement plus d'installations globales car c'est bon pour la solution "J'ai besoin d'un shell Unix". Cygwin exécute des commandes, SUA est un environnement Unix qui est un peer to windows.
Jim B
la source
1

Je ne peux pas commenter la réponse de JimB, alors abordez-la ici, en particulier le point sur l'intégration de Windows. Cygwin étant basé sur Win32 au lieu de s'exécuter dans son propre sous-système, bien que plus lent, offre une intégration Windows beaucoup plus importante. Il permet même d'utiliser les API Windows et UNIX dans le même programme, ce qui permet des choses comme le serveur Cygwin X ou le terminal mintty.

Le «ps» de Cygwin répertorie les processus Windows si vous lui donnez l'option -W, et «kill -f» les tuera. Les programmes Windows peuvent être invoqués depuis Cygwin et connectés avec les programmes Cygwin en utilisant tous les mécanismes habituels tels que les tuyaux. (Je ne sais pas si c'est possible dans Interix.)

Les chemins de style Windows, avec des barres obliques avant et arrière, sont pris en charge. Cygwin 1.7 a fait d'UTF-8 le jeu de caractères par défaut, et les noms de fichiers UTF-16 de Windows sont automatiquement traduits, ainsi les noms de fichiers dans n'importe quelle langue s'affichent correctement dans Cygwin. Je ne sais pas ce que fait Interix ici, mais je n'ai trouvé aucune preuve qu'il supporte Unicode.

Les autres fonctionnalités d'intégration incluent l'utilitaire «cygstart» pour ouvrir un fichier comme si vous l'avez double-cliqué dans l'Explorateur, et le périphérique / dev / clipboard pour accéder au presse-papiers de Windows.

ak2
la source
3
Comment offre-t-il une "intégration Windows beaucoup plus grande"? "Il permet même d'utiliser les API Windows et UNIX dans le même programme" - cela est également vrai pour Interix; voir ceci pour la première source de partie; diapositive 37, «Processus en mode mixte», qui contient la puce «Le processus en mode mixte résultant peut effectuer à la fois des appels SUA et Windows API dans le même processus»
user314104
1

Permettez-moi de partager mon expérience d'installation d'Interix pour Windows 7.

Notre parcours commence sur une page obscure pour Windows Server 2008.

Ici, vous découvrirez qu'il ne s'appelle même plus Interix, mais Subsystem for Unix-based Applications or SUA . Ensuite, vous remarquerez uniquement à partir d'un commentaire d'utilisateur que SUA n'est disponible que pour Windows 7 Ultimate ou Enterprise. Cela n'est mentionné nulle part dans l'article. Après avoir installé le "sous-système", vous vous rendrez compte qu'il n'y a pas plus de 2 raccourcis dans votre menu de démarrage.

sua

Maintenant, vous arrivez au vrai mal. Cliquez sur le raccourci pour Télécharger et vous serez redirigé vers la page de téléchargement.

vieux

Ici, nous avons 3 fichiers disponibles à télécharger. Ces fichiers font tous plus de 400 Mo, et à ce jour plus de 4 ans . De plus, nous n'avons aucune option de télécharger des packages personnalisés, certaines parties, etc. Vous vous rendrez alors compte que ce lien est en fait pour Vista et non pour Windows 7, et devrez rechercher sur Internet pour trouver la page Windows 7 . À ce stade, j'ai abandonné.

Cygwin

Accédez à cygwin.com . Téléchargez cygwin.com/setup-x86.exe . Ce fichier fait 714 Ko . Exécutez une installation de base et vous verrez que cela prend environ 2 minutes .

temps

Après cela, vous pouvez réutiliser le programme d'installation pour de nombreux autres packages selon vos préférences. La morale de l'histoire est que Cygwin se soucie de l'utilisateur .

Steven Penny
la source
Permettez-moi de vous comprendre correctement - car il n'a pas été nécessaire de modifier le programme d'installation pour exécuter la version d'Unix fournie avec Win 7, ce qui signifie ne pas se soucier - et le fait que Cygwin vous permet en fait de télécharger des morceaux (que vous pourrez ensuite doivent revenir en arrière et obtenir plus) est en quelque sorte un plus? Certes, la décision récente de supprimer les composants Unix de Windows est un signe que les utilisateurs n'exécutent pas Unix sous Windows (à mon humble avis) ou qu'ils ne s'en soucient pas, mais je ne le vois pas vraiment.
Jim B
@JimB Il ne "vient" pas avec Windows 7. J'aurais pensé que mon message était clair. Il n'est disponible que pour Win7 Ultimate et vous devez le télécharger. De plus, le téléchargement a 4 ans. Dans la communauté des logiciels, c'est une vie et montre un manque clair de direction / initiative de Microsoft.
Steven Penny
3
il vient avec des fenêtres, ce que vous téléchargez est une commande unix qui utilise le sous-système. Étant donné que certaines des commandes de Linux ont plus de 40 ans, je ne suis pas surpris qu'elles n'aient pas besoin d'être réécrites (et selon votre norme, je suppose que personne n'utilise plus Linux ou Unix depuis ses décennies). De nouveaux outils et commandes sont ajoutés à la communauté SU sur suacommunity.com/tool_warehouse.htm
Jim B
2
Curieusement, j'ai dû parcourir une partie du code et oui - c'est le même code d'il y a 40 ans - je suppose que ces gens de GNU font quelque chose d'horriblement mal - ou peut-être - juste peut-être - il n'est pas nécessaire de changer quelque chose qui n'est pas '' t cassé
Jim B
0

La "sensation" de type UNIX est assez subjective. Mon vote va avec CygWin car il a un serveur CygWin / X Xwindows avec toutes les fonctionnalités nécessaires. SFU a obtenu les outils de base du X11 mais c'était trop peu et trop tard. Beaucoup (y compris moi) ont été initiés à CygWin par la nécessité d'avoir un serveur X11. En termes d'exhaustivité, CygWin est également mieux positionné car il est open source et de nombreux logiciels sous licence GNU ou GPL y sont portés. J'ai vu peu de produits commerciaux pour CygWin alors que je n'ai vu qu'un seul produit nécessitant les services UNIX pour Windows NT et aucun depuis. YMMV.

Disponibilité du packageest une victoire évidente pour CygWin influencée par plusieurs facteurs: - coût d'entrée inférieur: le "tout Windows" avec CygWin vs licence de classe serveur pour SFU / SUA. Certaines fonctionnalités sont disponibles pour les versions de bureau de Windows mais des variétés les plus chères et sans les composants du serveur; - open source vs source fermée et, plus important encore, documentation disponible gratuitement. Dans le passé, même la liste des commandes et les API fournies n'étaient disponibles que pour les abonnés MSDN et peu ou pas d'informations étaient disponibles sur le site Microsoft. En revanche, le jeu d'outils GNU était bien documenté et disponible à la fois en ligne et en tant que pages de manuel; - les changements de nom et d'implémentation prêtent à confusion. Les premières versions utilisaient la boîte à outils MKS qui a ensuite été abandonnée.

En termes de performances, on peut affirmer que l'Interix est plus proche du noyau et bénéficie ainsi d'un chemin d'exécution de code plus court. La vraie question est de savoir combien et est-ce important? Pour la plupart des programmes, la différence est de quelques pour cent et est négligeable. Un exemple artificiel avec des E / S lourdes peut être évoqué, bien sûr. Je préférerais mettre de telles charges sur UNIX natif car ce serait plus rapide que les modules complémentaires Windows natifs et UNIX au-dessus de Windows. Beaucoup ont migré de Windows vers UNIX avec l'augmentation de la charge alors que je ne connais aucun exemple de conversion de CygWin vers Interix (ou vice versa). C'est la compatibilité UNIX qui est recherchée et non les performances UNIX, donc je mets cela à la fin de la liste.

Goldie
la source
2
En termes de performances, Interix gagne en fait ici; la plupart des choses traditionnellement implémentées en tant que syscalls * nix (comme fork ()) sont des kludges implémentés au-dessus de Win32 dans Cygwin. Win32 n'a aucune notion de fork (), contrairement à Interix (et NT). Cygwin a des problèmes avec cela - obtenir l'espace d'adressage exactement correct pour fork () - et cela entraîne de graves problèmes de performances. Quelqu'un est sûr de s'énerver contre le lien contenant plus que ce commentaire, mais le voici, directement du robinet .
user314104