2014-09-09 32 views
33

Tradizionalmente il bash di MSYS è stato considerato inferiore a Cygwin bash. Il primo era uno strumento ausiliario all'interno di MinGW progettato per l'esecuzione di script autoconf. Ma ora c'è MinGW-w64 e MSYS2. Quest'ultimo viene fornito con un pacman come pacman manager ed eleganti shell come zsh, quindi mi chiedo se ci sia ancora una lacuna nel livello di emulazione.Differenze tra MSYS2 e Cygwin

Mentre le applicazioni MinGW * sono eseguibili nativi di Windows, il software MSYS2 richiede un livello di emulazione POSIX, proprio come Cygwin. Almeno per un utente occasionale, è difficile individuare le differenze tra i due.

  • Quali sono le differenze funzionali tra i due livelli di emulazione (se presenti)?
  • Quale emulazione è più veloce (più efficiente)?
+1

Che tipo di vantaggi stai cercando se non opinioni? – Scimonster

+0

@Scimonster Sto cercando dettagli tecnici e di implementazione che possano rendere uno dei due progetti più conformi a POSIX e non per esperienze di utilizzo personale: ad es. il progetto x si basa su 'cygwin.dll' o no e non su progetto x usa il programma di installazione di pacman. Penso che quest'ultimo sia solo un'opinione su quello che ti piace. – antonio

+0

Curioso, ho pensato che chiedere come tre forchette fossero diverse dal progetto biforcuto era troppo ampio: [stackoverflow.com/q/25019057](http://stackoverflow.com/q/25019057/1851270) Da qui il richiedente dice "Sono aperto a qualsiasi suggerimento su come migliorare questa domanda. Mi sento come se potesse essere migliore.", mi sono concentrato solo sull'ultimo fork (MSYS2) dando più contesto. Invece le domande sulle tre forche sono legittime e le mie non lo sono. – antonio

risposta

43

Tradizionalmente il bash di MSYS è stato inferiore, ma principalmente perché Cygwin è rimasto in sviluppo attivo mentre MSYS no. MSYS ha biforcato da Cygwin versione 1.3.3 e non è mai stato nuovamente sincronizzato, mentre MSYS2 risincronizza regolarmente con il progetto Cygwin.

Non abbiamo un "gestore di pacchetti pacemaker", abbiamo una riconduzione diretta del pacman package manager di Arch Linux che potremmo ottenere.

MSYS2 non ha cygwin.dll ma ha msys-2.0.dll che fa la stessa cosa (e alcuni altri ancora). In particolare, argomenti che assomigliano a percorsi e PATH env. var viene convertito in formato Windows quando si esegue il software nativo di Windows.

Per quanto riguarda se è più lento, mi aspetto che ci sarebbe poca differenza, ma MSYS2 sarebbe un po 'più lento a causa del lavoro di conversione extra. Inoltre, è probabile che eseguirai più software nativo di Windows all'interno di MSYS2 (come i compilatori MinGW-w64) di quello che faresti da Cygwin, così sposterai le cose a favore di MSYS2.

+15

Si dice che Ray Donnelly sia uno sviluppatore MSYS2. Quindi la sua risposta dovrebbe essere considerata molto affidabile. Speriamo che nel prossimo futuro simili informazioni verranno aggiunte a [msys2.github.io] (http://msys2.github.io) o [github.com/msys2](https://github.com/msys2) – antonio

+3

C'è questo su SF: https://sourceforge.net/p/msys2/wiki/How%20does%20MSYS2%20differ%20da%20Cygwin/ –

+0

https://github.com/msys2/msys2/wiki/How-does -MSYS2-differ-from-Cygwin è la posizione aggiornata del collegamento di Nick. – anishpatel

6

Come ho capito, MSYS2 è un fork di Cygwin con l'obiettivo principale di fornire la possibilità di utilizzare i pacchetti MinGW-w64. Tale obiettivo è raggiunto a spese del numero totale di software disponibili. Confronta l'elenco di quello di MSYS2 e Cygwin.

In sostanza, questo è tutto. Pertanto, anche se non è stato necessario compilare qualcosa con MinGW-w64, non si avrebbe alcun motivo per utilizzare MSYS2 anziché Cygwin originale.

+0

+1 Vedo che MSYS2 non contiene 'cygwin.dll'. Questo significa che i suoi strumenti sono più efficienti? Se ho il codice sorgente, il targeting per Linux (ma presumo che non usi X), Cygwin è più propenso a costruirlo rispetto a MSYS2? – antonio

+5

MSYS2 chiama semplicemente 'cygwin.dll' qualcos'altro. Funziona lo stesso Cygwin. È più probabile che il tuo codice funzioni con Cygwin rispetto a MSYS2. MSYS2 non è pensato per creare programmi MSYS2 diversi da quelli che fanno parte di MSYS2. MSYS2 ha principalmente lo scopo di creare programmi "nativi" di Windows usando strumenti di tipo Unix. In particolare è progettato per eseguire gli script 'configure' di GNU autoconf. –

+4

"anche se non hai bisogno di compilare qualcosa con MinGW-w64, non avresti alcun motivo per usare MSYS2 piuttosto che Cygwin originale." - Penso che tu abbia messo il carro davanti al cavallo! Non usiamo MSYS2 per usare MinGW-w64 oi suoi pacchetti _specificamente_. Usiamo MSYS2 per compilare programmi nativi di Windows tramite strumenti GNU. MinGW-w64 essendo il compilatore è, in molti modi, solo un dettaglio di implementazione in questo. La ragione per usare MSYS2 è per il suo sistema di compilazione nativo, non per il suo compilatore in particolare ... anche se, certo, questo compilatore rende tutto possibile :-) –