Posix, Wsl: un ascoltatore integra
Ecco il testo:
Dice Stefano a proposito di cygwin e posix, parlando di linux su windows.
visto che viene chiesto esplicitamente, ecco un paio di correzioni sulla puntata di oggi :)
allora, iniziamo con Cygwin
il progetto è nato nel 1995, quindi ha quasi 30 anni, ed è nato a mo di intuizione ( creare un cross-compilatore in modo da creare eseguibili su windows di tool unix/linux), per poi diventare un vero è proprio ambiente posix. Nella sua forma finale Cygwin è un ambiente posix su Windows, le cui chiamate posix vengono "convertite" tramite una libreria ( cygwin1.dll ), come da homepage
a DLL (cygwin1.dll) which provides substantial POSIX API functionality.
quindi a livello funzionale è un emulatore ( anche se è un pò più complesso ): lo avvii ed hai una shell posix ( bash, sh o qullo che si vuole ) e utilizzi i tool che di norma si trovano su linux. Puoi ovviamente anche compilare da codice sorgente ( ai tempi io mi ero ricompilato sul mio computer Bind per fare alcuni test con l'abilitazione rpz, che mi pare non fosse ufficiale inizialmente, ma è roba di anni fa)
WSL (versione 1), è qualcosa di simile, ma nativamente di Windows e più evoluto: è un sottosistema che converte le chiamate dall'ambiente wsl (quindi linux) nella controparte windows ( quindi anche qui è in sostanza un emulazione ) . Funziona adeguatamente, fin quando non sbatti il muso con i socket tcp ( ai tempi io non sono riuscito a far girare tcpdump ) . Microsoft ha poi "pachetizzato" l'ambiente per avere delle distro (ubuntu, debian, fedora etc) con i propri tools etc, quindi nella sostanza uno si ritrova qualcosa di molto simile all'ambiente scelto
WSL (versione 2) bypassa la questione di emulazione, che è di per se complesso da mantenere, ed è in sostanza un vero e proprio ambiente virtuale, molto leggero e "trasparente". Anche qui con le distro che uno preferisce. Essendo un ambiente virtuale si ha un kernel linux vero e proprio, il quale poi dialoga con l'hypervisor di windows. Cosi si è anche risolto la questione dei socket tcp etc.
nella sua evoluzione poi l'ambiente WSL si è integrato sempre di più ( i cron possono rimanere attivi anche con ambiente spento, il filesystem è visibile da Windows etc )
l'utilizzo in se è decisamente dipendente da cosa uno deve farsene.
io da sempre ( prima con cygwin poi con WSL ) lo uso perchè i tool che mi servono sono prevalentemente posix, mi è più comodo e molto molto più veloce usare una shell "nativa" del computer che usare una vm.
Adesso che l'integrazione è più "fluida" ancor di più: ad esempio uso visual code (quindi "windows" ) usando i file su wsl, che mi permette istantamente di avviare e testare le modifiche, con le config git del caso etc