Quali sono le differenze pratiche tra Interix e Cygwin?


14

Sia Interix che Cygwin sembrano fornire un ambiente utente simile a Unix in Windows. Quali sono le differenze pratiche tra i due, in termini, ad esempio:

  • "Sentire" tipo Unix
  • Prestazione
  • Disponibilità / facilità del pacchetto nella compilazione di software casuali scaricati da Internet
  • Integrazione con applicazioni e strumenti di Windows
  • Integrazione / compatibilità con macchine virtuali (ad es. È possibile che Interix e una macchina virtuale Ubuntu condividano la stessa "home directory")
  • Dimensioni della base utenti / livello di supporto della comunità

Una differenza di cui sono a conoscenza è che Interix richiede Windows 7 Enterprise o Ultimate Edition; Cygwin funzionerà su qualsiasi cosa.

Risposte:


7

Ho usato Windows SFU solo su Windows 2008 prima, ma credo che sia basato su Interix. Ho suonato con Cygwin in alcune occasioni, ma non una grande quantità, quindi qualcuno, per favore, correggimi se dico qualcosa di ovviamente sbagliato qui.

  • Sensazione simile a Unix: Interix vince questo. L'ambiente sembra molto più "completo". Non sono sicuro di come dirlo. Interix corre a fianco del sottosistema win32, dove come cygwin ci corre sopra. Quindi, interix è un "cittadino di prima classe" nella terra del kernel di Windows. Cose come pse dffunzionano bene.
  • Prestazioni: non avendo effettuato test di prestazioni importanti, immagino che anche Interix vincerà questo. Ancora una volta, funziona a un livello inferiore. Non stai solo eseguendo app Win32 con una DLL di compatibilità POSIX collegata.
  • Pacchetti / software casuale: Cygwin vince questo per due motivi. Innanzitutto, Cygwin è molto più conosciuto. Un sacco di software Unixy avrà il supporto per le sue stranezze. Puoi anche installare le cose molto facilmente dal programma di installazione della GUI. Interix (credo) non ha niente di simile incorporato. Certo, puoi scaricare qualcosa, compilarlo usando gcc (che penso tu possa ottenere pre-costruito), e pregare che funzioni, ma è un po 'come il porting del software su qualsiasi altra variante casuale di Unix (come Solaris o AIX) - alcuni le cose funzioneranno, altre cose proveranno a morderti la gamba e uccidere i tuoi figli.
  • Integrazione con le app e gli strumenti di Windows: a dire il vero, entrambi fanno schifo. Se hai, per esempio, un server Apache in esecuzione all'interno di Cygwin o Interix, allora sicuramente sarà in grado di comunicare su TCP con i programmi Win32, ma questo è quanto più lontano possibile. Dall'interno di interix, credo che tu possa uccidere i programmi Win32 ed elencarli usando ps, non sono sicuro che tu possa farlo con cygwin. Con entrambi, puoi usare il Task Manager di Windows per uccidere le cose.
  • Integrazione con VM: affrontare l'esempio di condivisione di una home directory, quindi sì. Puoi usare samba per questo, e credo che NFS funzioni anche su Interix per qualcosa di più unixy. Tuttavia, non troverai nessuna bella interfaccia grafica o qualcosa per fare il lavoro per te. Sia cygwin che Interix ti consentono di accedere ai tuoi filesystem regolari.
  • Dimensione della base di utenti: Cygwin vince qui, direi. È stato molto difficile trovare elementi che erano stati testati e sviluppati per essere eseguiti su Interix, dove la maggior parte delle cose open source sembravano supportare Cygwin come piattaforma di compilazione.

Se hai una copia di un sistema operativo Windows che supporterà Interix (come hai detto, un'edizione Enterprise, un'edizione Ultimate o un'edizione Server), non è male provarlo. È un ambiente di sentimento molto completo. Cygwin, come hai detto, funziona su tutto ed è meglio conosciuto e meglio supportato, ma per me sembra un po 'un brutto scherzo. Alcune persone lo usano regolarmente però.


Per quanto riguarda i pacchetti, vale la pena provare il prefisso Gentoo per Interix
Tobias Kienzler,

1
Passando rapidamente al 2015, la risposta ora diventa semplicemente "cygwin è ancora disponibile e supportato mentre Interix (aka Services for Unix aka Subsystem for Unix-based Applications) è interrotto"
adib

3

/ * meta note- Odio che i commenti siano così brevi * /

Concordo principalmente con la risposta di Andrew con un paio di commenti. Ho sostituito molti sistemi unix con SUA / SFU (no, non sono gli stessi ma vicini) sotto Windows.

  • prestazioni - SUA è molto più veloce dei servizi per unix ma anche SFU non ha subito problemi, entrambi sono solitamente più veloci di cygwin (ma non sempre)
  • integrazione-integrazione è il punto centrale di SFU / SUA e ci sono molti documenti su cosa puoi e cosa non puoi fare sul sito del technet. Cygwin è progettato per eseguire il comando * nix su Windows, non per far cooperare i 2. Vedi i componenti di interoperabilità Unix / Linux in Windows (SUA, IdMU, NFS, ecc.)
  • user base-Penso che ci siano più soluzioni supportate funzionanti sul lato interix che sul lato cygwin e molti meno problemi di compatibilità rispetto al lato cygwin, vedere http://www.suacommunity.com/ (magazzino utensili). Cygwin probabilmente ha installazioni più complesse poiché è buono per la soluzione "Ho bisogno di una shell unix" Cygwin esegue i comandi, SUA è un ambiente unix che è peer-to-windows.

1

Non posso commentare la risposta di JimB, quindi affrontala qui, in particolare il punto sull'integrazione di Windows. Il fatto che Cygwin sia basato su Win32 invece di essere eseguito nel proprio sottosistema, sebbene più lento, offre un'integrazione di Windows molto maggiore. Permette persino di utilizzare le API Windows e UNIX nello stesso programma, il che consente cose come il server Cygwin X o il terminale conio.

'Ps' di Cygwin elenca i processi di Windows se gli dai l'opzione -W e 'kill -f' li ucciderà. I programmi Windows possono essere richiamati da Cygwin e collegati insieme ai programmi Cygwin usando tutti i soliti meccanismi come i pipe. (Non so se sia possibile in Interix.)

Sono supportati percorsi in stile Windows, con barre sia in avanti che all'indietro. Cygwin 1.7 ha impostato UTF-8 come set di caratteri predefinito e i nomi dei file UTF-16 di Windows vengono tradotti automaticamente, quindi i nomi dei file in qualsiasi lingua vengono visualizzati correttamente in Cygwin. Non so cosa faccia Interix qui, ma non sono riuscito a trovare alcuna prova a supporto di Unicode.

Altre funzionalità di integrazione includono l'utilità "cygstart" per aprire un file come se fosse stato fatto doppio clic su Explorer e il dispositivo / dev / appunti per accedere agli appunti di Windows.


3
In che modo fornisce "una maggiore integrazione con Windows"? "Permette persino di utilizzare le API Windows e UNIX nello stesso programma" - questo vale anche per Interix; vedere questo per la fonte della prima parte; slide 37, "Processi in modalità mista", che presenta il punto "Processo in modalità mista risultante può effettuare chiamate SUA e API di Windows nello stesso processo"
user314104

1

Vorrei condividere la mia esperienza con l'installazione di Interix per Windows 7.

Il nostro viaggio inizia in una pagina oscura per Windows Server 2008.

Qui scoprirai che non si chiama più nemmeno Interix, ma sottosistema per applicazioni basate su Unix o SUA . Successivamente noterai solo da un commento dell'utente che SUA è disponibile solo per Windows 7 Ultimate o Enterprise. Questo non è menzionato nell'articolo da nessuna parte. Dopo aver installato il "sottosistema" ti renderai conto che non ci sono più di 2 scorciatoie nel menu di avvio.

SUA

Ora arrivi al vero male. Fai clic sul collegamento per il Download e verrai indirizzato alla pagina di download.

vecchio

Qui abbiamo 3 file disponibili da scaricare. Questi file hanno una dimensione di oltre 400 MB e al momento della stesura di questi 4 anni . Inoltre non abbiamo alcuna possibilità di scaricare pacchetti personalizzati, determinate parti, quant'altro. Ti accorgerai quindi che questo link è in realtà per Vista e non per Windows 7 e dovrai cercare su Internet per trovare la pagina di Windows 7 . A questo punto ho rinunciato.

Cygwin

Vai su cygwin.com . Scarica cygwin.com/setup-x86.exe . Questo file è 714 KB . Esegui un'installazione di base e vedrai che occorrono circa 2 minuti .

tempo

Successivamente è possibile riutilizzare il programma di installazione per molti altri pacchetti in base alle proprie preferenze. La morale della storia è che Cygwin si preoccupa per l'utente .


Lascia che ti comprenda correttamente, perché non è stato necessario modificare il programma di installazione per eseguire la versione di Unix fornita con Win 7 in qualche modo che significa non preoccuparsi, e il fatto che Cygwin ti consenta effettivamente di scaricare pezzi (che potresti quindi tornare indietro e ottenere di più) è in qualche modo un vantaggio? Certamente la recente decisione di rimuovere i componenti unix da Windows indica che gli utenti non eseguono unix sotto Windows (molto probabilmente IMHO) o che in qualche modo non gli interessa, ma non lo vedo davvero.
Jim B,

@JimB Non "arriva" con Windows 7. Avrei pensato che il mio post lo avesse chiarito. È disponibile solo per Win7 ultimate e devi scaricarlo. Inoltre il download ha 4 anni. Nella comunità del software che è una vita e mostra una chiara mancanza di direzione / iniziativa da parte di Microsoft.
Steven Penny,

3
viene fornito con Windows, quello che stai scaricando sono i comandi unix che utilizzano il sottosistema. Dato che alcuni dei comandi in Linux hanno più di 40 anni, non mi sorprende che non abbiano bisogno di essere riscritti (e secondo il vostro standard suppongo che nessuno usi più Linux o Unix dai suoi decenni). Nuovi strumenti e comandi vengono aggiunti alla comunità SU su suacommunity.com/tool_warehouse.htm
Jim B

2
Stranamente ho dovuto passare attraverso un po 'del codice e sì - è lo stesso codice di 40 anni fa - immagino che quelle persone di GNU stiano facendo qualcosa di orribilmente sbagliato - o forse - solo forse - non è necessario cambiare qualcosa che non è t rotto
Jim B,

0

La "sensazione" di tipo UNIX è piuttosto soggettiva. Il mio voto va con CygWin in quanto ha il server CygWin / X Xwindows con tutte le funzionalità necessarie. SFU ha ottenuto gli strumenti X11 di base ma era troppo piccolo e troppo tardi. Molti (incluso me) sono stati introdotti in CygWin dalla necessità di avere un server X11. In termini di completezza CygWin è anche meglio posizionato in quanto è open source e molti software con licenza GNU o GPL vengono portati su di esso. Ho visto pochi prodotti commerciali per CygWin mentre ho visto solo un prodotto che richiede i servizi UNIX per Windows NT e nessuno da allora. YMMV.

Disponibilità del pacchettoè una chiara vittoria per CygWin influenzata da diversi fattori: - costo di entrata inferiore: il "qualsiasi Windows" con CygWin vs licenza di classe server per SFU / SUA. Alcune funzionalità sono disponibili per le versioni desktop di Windows ma delle varietà più costose e senza i componenti del server; - documentazione open source vs. closed source e, soprattutto, apertamente disponibile. In passato anche l'elenco dei comandi e le API fornite erano disponibili solo per gli abbonati MSDN e sul sito Microsoft erano disponibili poche o nessuna informazione. Al contrario, il set di strumenti GNU era ben documentato e disponibile sia online che come pagine man; - le modifiche alla denominazione e all'implementazione sono confuse. Le prime versioni utilizzavano il toolkit MKS che fu successivamente abbandonato.

Per quanto riguarda le prestazioni, si può sostenere che Interix è più vicino al kernel e quindi gode di un percorso di esecuzione del codice più breve. La vera domanda è da quanto e importa? Per la maggior parte dei programmi la differenza è di pochi percento ed è trascurabile. Un esempio artificiale con I / O pesanti può essere sollevato, ovviamente. Preferirei caricare tali carichi su UNIX nativo in quanto sarebbe più veloce di entrambi i componenti aggiuntivi Windows nativi e UNIX su Windows. Molti sono migrati da Windows a UNIX con l'aumento del carico mentre non conosco alcun esempio di conversione da CygWin a Interix (o viceversa). Si cerca la compatibilità UNIX e non le prestazioni UNIX, quindi la inserisco alla fine dell'elenco.


2
Per quanto riguarda le prestazioni, Interix in realtà vince qui; molte delle cose tradizionalmente implementate come * nix syscalls (come fork ()) sono kludges implementati su Win32 in Cygwin. Win32 non ha alcuna nozione di fork (), ma Interix (e NT) ha. Cygwin ha problemi con questo - ottenere lo spazio degli indirizzi esattamente adatto a fork () - e questo porta ad alcuni seri problemi di prestazioni. Qualcuno è sicuro di arrabbiarsi per il link che contiene più di questo commento, ma eccolo qui, direttamente dal rubinetto .
user314104
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.