Archivi categoria: bash

Ubuntu disponibile sul Windows Store

E’ proprio vero, come promesso da Microsoft qualche mese fa, la prima distribuzione Linux è a disposizione degli utenti Windows 10 direttamente sullo Store. Questo significa che chiunque abbia a disposizione una macchina con Windows 10 potrà scaricare ed installare il relativo pacchetto come accade per qualsiasi altra app, ed utilizzare (limitatamente alla riga di comando) un vero e proprio sistema operativo Linux.

Attualmente l’unica distribuzione disponibile è Ubuntu, ma molto presto sarà possibile installare Fedora e Suse. Essendo una novità assoluta, questa feature ha sicuramente bisogno di un periodo di test prima di diventare disponibile al grande pubblico, ed al momento l’installazione è limitata agli utenti del programma Windows Insider. L’iscrizione al programma è gratuita e semplicissima, e per effettuarla o semplicemente per avere qualche informazione è possibile visitare la pagina:

https://insider.windows.com/

Con tutta probabilità l’installazione delle distribuzioni Linux dello Store sarà disponibile per tutti dopo l’installazione del Fall Creators Update, l’aggiornamento della release di Windows che verrà distribuita a partire dal prossimo autunno.

Considerando quello che siamo in grado di fare con Windows Subsystem for Linux (https://www.ictpower.it/sistemi-operativi/windows-subsystem-for-linux-finalmente-in-una-release-ufficiale.htm), ci chiediamo che differenza faccia utilizzare questo tipo di distribuzione rispetto a quella inclusa in Windows 10 a partire dall’Anniversary Update. Fondamentalmente non ci sono differenze, quello che cambia è la modalità di installazione, estremamente semplice, ed il fatto che la modalità di installazione che utilizzavamo fino ad ora sarà considerata “deprecata”, e probabilmente verrà dismessa. Dallo store, inoltre, sarà possibile scegliere la distribuzione da installare, operazione ad oggi possibile ma un po’ complessa.

L’app scaricata dallo store installa una distribuzione indipendente, che gira in una “sandbox” ed è quindi possibile installare più distribuzioni contemporaneamente per utilizzarle in maniera autonoma.

Se siete già in possesso di una macchina con Windows 10 Insider con una build maggiore o uguale a #16215, quindi, non vi resta che provarla; potete scaricare l’app Ubuntu direttamente da questo link:

https://www.microsoft.com/it-it/store/p/ubuntu/9nblggh4msv6

Noi non possiamo fare altro che seguire tutte le novità e le sorprese a cui Windows 10 ci sta abituando!

Switch delle shell Linux con Windows 10 WSL

Sono passati 9 mesi dal rilascio di Windows 10 Anniversary Update, l’aggiornamento del sistema operativo che ha introdotto la funzionalità Windows Subsystem for Linux (WSL), grazie alla quale è possibile eseguire su Windows i binari di tipo ELF64, compilati cioè per funzionare su un sistema operativo Linux.

All’interno della community ICTPower ci siamo spesso occupati di questa nuova funzionalità, poiché ribadisce con forza la volontà di Microsoft di avvicinare il mondo dell’Open Source, e costituisce quindi una delle novità più importanti della politica aziendale degli ultimi tempi.

Rimandiamo quindi agli articoli precedenti in cui abbiamo illustrato gli step per l’installazione di questa funzionalità:

https://www.ictpower.it/sistemi-operativi/windows-subsystem-for-linux-finalmente-in-una-release-ufficiale.htm

e mostrato come sostituire l’immagine di Ubuntu di default con una contenente Suse:

https://www.ictpower.it/guide/opensuse-in-windows-subsystem-for-linux-in-windows-10.htm

In questo articolo, invece, presentiamo un progetto molto interessante che è possibile trovare su github, chiamato WSL Distribution Switcher. Come è possibile intuire dal nome si tratta di un tool in grado di tenere installate sul nostro client Windows 10 molteplici distribuzioni di Linux, ed impostare quella in uso con WSL con un semplice comando.

Finalmente, quindi, ognuno è libero di utilizzare la propria distribuzione preferita, e l’occasione è imperdibile per chi si sta avvicinando al mondo Linux per la prima volta per provare le differenze tra le varie distribuzioni senza creare un numero enorme di macchine virtuali, e scegliere quella più adatta alle proprie esigenze. L’occasione è imperdibile anche per me, poiché utilizzando in maniera molto più agevole CentOS rispetto alle altre, finalmente ho la possibilità di farlo anche con WSL.

Come premessa riporto la pagina del progetto è la seguente, in modo da poterla seguire per tutti gli aggiornamenti futuri:

https://github.com/RoliSoft/WSL-Distribution-Switcher

Il tool è costituito da una serie di immagini, una per ogni distribuzione di Linux, ed uno script per effettuare lo switch da una distribuzione all’altra. Lo script è scritto in Python, un linguaggio di programmazione molto semplice e dinamico, e quindi abbiamo bisogno di installare le relative librerie per utilizzarlo.

Scarichiamo l’ultima versione di Python3 dal sito python.org, ad oggi troviamo la versione 3.6.1 disponibile a questo link:

https://www.python.org/ftp/python/3.6.1/python-3.6.1-amd64.exe

ed installiamo il pacchetto lasciando le impostazioni di default:

Scarichiamo quindi il pacchetto contenente il tool dall’indirizzo:

https://github.com/RoliSoft/WSL-Distribution-Switcher/archive/master.zip

Ed estraiamo l’archivio, ad esempio nella cartella Download

Nel mio caso particolare tutti i file sono nella cartella:

C:\Users\ICTPower\Downloads\WSL-Distribution-Switcher-master

Apriamo una PowerShell e posizionamoci in questa cartella. Per eseguire semplicemente questa operazione è possibile scrivere “powershell” nella barra degli indirizzi della cartella stessa, ed avviamo il download della distribuzione desiderata utilizzando lo script get-source. Iniziamo, ad esempio, scaricando un’immagine di CentOS con il comando:

py.exe .\get-source.py centos

Allo stesso modo è possibile effettuare il download di debian, fedora, suse ed alpine; in futuro saranno sicuramente disponibili immagini di altre distribuzioni. Per eseguire lo step successivo è necessario che WSL sia installato ma non attivo, quindi non dovranno essere aperte istanze di Windows bash al momento dell’esecuzione del comando altrimenti lo script restituirà un errore.

Scaricata l’immagine la installiamo con:

py.exe .\install.py centos

Al termine delle operazioni l’immagine appena installata diventa quella di default all’apertura di Windows bash, verifichiamolo subito aprendo una shell eseguendo dal prompt dei comandi:

bash

e leggiamo il contenuto del file /etc/os-release, che nelle distribuzioni CentOS ci da un po’ di informazioni sulla versione in uso

cat /etc/os-release

Come possiamo vedere ci troviamo su una CentOS7, loggati nel sistema con l’utente creato in fase di installazione di WSL. Nel mio caso il nome dell’utente è gnanoia. Ho trovato un problema nell’eseguire il comando “su” e guadagnare i privilegi di root. Al momento della richiesta della password, infatti, questa non veniva riconosciuta. Non avendo modo di indagare se il problema fosse dovuto alla versione dell’immagine, alla mia build di Windows10 o ad altri fattori, ho trovato un rapido workaround settando l’utente root come predefinito all’apertura di Windows bash; in questo modo la shell viene avviata senza la richiesta di alcuna password ed è possibile eseguire il comando “passwd” per settarne una nuova. E’ poi possibile reimpostare l’utente non privilegiato come predefinito per tornare alla condizione iniziale.

E’ possibile modificare l’utente predefinito di WSL utilizzando il comando lxrun /setdefaultuser <user>, quindi nel nostro caso eseguiamo da un prompt di DOS:

lxrun /setdefaultuser root

quindi apriamo bash e modifichiamo la password con il comando

passwd

chiudiamo la shell di root con

exit

chiudimo la shell iniziale per tornare al DOS con

exit

e risettiamo l’utente iniziale come predefinito. Nel mio caso:

lxrun /setdefaultuser gnanoia

Tutta la sequenza è visibile nello screenshot seguente:

Proviamo ora ad avviare bash ed utilizzare su per utilizzare la shell con privilegi amministrativi:

Ora la nostra immagine Centos7 è completa e funzionante, e possiamo utilizzare il gestore dei pacchetti yum per installare i nostri software preferiti.

Da un’analisi più approfondita però sono emerse delle limitazioni dovute alla tenera età di WSL, per cui non risulta possibile installare alcuni pacchetti, probabilmente per la mancanza del supporto ad alcune syscall; non ci rimane che essere pazienti e sperare che questa funzionalità cresca il più velocemente possibile chissà che nella prossima build di Windows10 non sia già tutto perfettamente funzionante.

In particolare i test di installazione sono falliti per iptools ed httpd, nello screenshot seguente vediamo il dettaglio dell’errore:

yum install httpd

Alla fine dell’elaborazione del comando il risultato sarà quello mostrato in figura:

Senza allarmarci troppo, quindi, fiduciosi di una rapida risoluzione, non perdiamo troppo di vista lo scopo dell’articolo, e torniamo all’installazione di distribuzioni alternative di Linux per WSL, provando ad effettuare in maniera rapida lo switch da una all’altra.

Torniamo quindi sulla nostra PowerShell per scaricare ed installare un’immagine di debian.

Come per l’installazione precedente, lo script imposta l’ultima immagine installata come predefinita, quindi avviando Windows bash ci aspettiamo di trovare una shell Debian. Infatti…

Per switchare da una distribuzione all’altra non è ovviamente necessario reinstallarla, quindi volendo tornare ad utilizzare CentOS, od una qualsiasi altra distribuzione già installata possiamo ricorrere allo script per lo switch:

py.exe .\switch.py centos

Verifichiamo che l’operazione ha avuto successo riaprendo bash e leggendo il file /etc/os-release

Ringraziamo sentitamente gli autori dello script, e rimaniamo in attesa della disponibilità delle nostre immagini preferite; anche in questo caso non possiamo fare a meno di notare che l’avvicinamento di Microsoft al mondo dell’Open Source sta scatenando una miriade di contributi di chi, ognuno a modo proprio, cerca di favorire la completa integrazione dei sistemi.

X server e Desktop App con Windows Subsystem for Linux

Nel codice etico del bravo tecnico, ed ancor più in quello del consulente informatico, esiste la rigida regola di utilizzare e proporre sempre soluzioni supportate dai produttori. Perché tenere un’azienda ferma minuti, ore, o addirittura giorni perché i sistemi si bloccano, non rispondono quello che ci aspettiamo, e non poter chiedere aiuto a nessuno non è mai piacevole.

Ci sono delle situazioni, però, in cui utilizzare soluzioni non supportate è tollerato, se non addirittura una necessità. I motivi possono essere i più disparati: hardware o software oltre la data di “End of Support” a cui non esiste un’alternativa, budget limitato, incompatibilità con sistemi esistenti, e mille altre ragioni più o meno tecniche.

Immaginiamo ad esempio di dover dismettere un vecchissimo computer linux che ospita il gestionale di un commercialista. Il gestionale non viene più utilizzato, ma sarebbe comodo poterne utilizzare alcune funzionalità nel caso ce ne fosse bisogno. Il gestionale è scritto per funzionare su una macchina Linux con interfaccia grafica, ed il commercialista ci chiede se possiamo spostare questo software sul suo client Windows10 prima di dismettere il vecchio computer.

Poiché ormai avendo più volte letto l’articolo Windows Subsystem for Linux: finalmente in una release ufficiale sappiamo installare ed utilizzare Windows Subsystem for Linux (WSL), proviamo ad installare tutto il necessario per far girare dei software Linux che utilizzano una interfaccia grafica. Proviamo quindi a configurare un server X su Ubuntu, ed utilizzarlo per lanciare degli eseguibili.

Ci ritroviamo quindi nella condizione di dover utilizzare una funzionalità non supportata: WSL, infatti, è pensato per poter utilizzare degli eseguibili Linux in ambiente Windows 10 limitatamente alla riga di comando, e dobbiamo tenere presente alcune cose mentre cerchiamo di mettere a punto questa forzatura:

  • Il server X effettua delle chiamate al Kernel Linux, che nel nostro caso è un sistema formato da delle librerie per la traduzione delle chiamate di sistema ed un Kernel Windows. Il “sistema di traduzione” non è pensato per gestire delle Desktop App
  • L’ambiente che utilizziamo in WSL è in User Mode, quindi qualsiasi chiamata che richiede un livello di esecuzione più basso (Kernel mode) fallisce
  • La gestione dei Bus di Linux è completamente diversa da quella di Windows, quindi molte “istruzioni” potrebbero non funzionare correttamente

Considerando, però, che non abbiamo niente da perdere proviamo ad installare X server – il gestore grafico di Linux. X server (conosciuto anche semplicemente come X) è il servizio di base per l’utilizzo di qualsiasi interfaccia grafica; essendo Linux un sistema open, infatti, esistono molte interfacce grafiche diverse. Uno dei nostri problemi, quindi, sarà anche cercare l’interfaccia più adatta al nostro scopo. Io ho scelto Unity ed LXDE, laprima perché è prodotta da Canonical per Ubuntu, e per questo motivo mi aspetterei maggiore compatibilità, la seconda perché è molto leggera e mi piace graficamente.

Avvio delle applicazioni in finestra

Passiamo finalmente alla pratica, e grazie ad apt-get installiamo da root i pacchetti ubuntu-desktop e unity.

Per guadagnare i privilegi di root eseguiamo da utente

sudo bash

ed inseriamo la password scelta in fase di configurazione di WSL

Installiamo quindi i pacchetti con

apt-get install ubuntu-desktop unity


Il sistema propone un download di 569MB (potrebbe variare a seconda delle versioni), che diventeranno 2Gb di software. Confermiamo ed attendiamo speranzosi…

Al termine dell’installazione possiamo notare che ci sono degli errori relativi al dbus, il sottosistema di scambio messaggi tra applicazioni presente sul sistema operativo Linux, che utilizza funzioni non ancora implementate su WSL. In mancanza di questo, le funzionalità grafiche non saranno disponibili; vediamo quindi come modificare la configurazione del servizio in questione per renderlo utilizzabile.

Quello che andremo a fare è modificare il “mezzo” su cui viaggiano questi messaggi dai socket linux predefiniti (e non implementati), al prococollo TCP. E’ necessario quindi sostituire nel file

/etc/dbus-1/session.conf,

La riga

<listen>unix:tmpdir=/tmp</listen>

con

<listen>tcp:host=localhost,port=0</listen>

E’ possibile effettuare la sostituzione con un editor di testo oppure con il comando:

sudo sed -i 's$<listen>.*</listen>$<listen>tcp:host=localhost,port=0</listen>$' /etc/dbus-1/session.conf

Installiamo ora il tool per la configurazione dell’interfaccia grafica Unity, chiamato per brevità ccsm

apt-get install compizconfig-settings-manager

L’installazione di pochi mega termina senza problemi e siamo pronti per provare ad avviare il nostro server grafico.

Generalmente una macchina Linux ha la possibilità di “disegnare” le finestre attraverso i messaggi scambiati tra il server X e il sottosistema video. Il kernel Windows, però, – ricordiamo che l’unico kernel in uso è quello Windows, non essendo WSL una macchina virtuale- non è in grado di comprendere questi messaggi, ed abbiamo la necessità di installare un software per scambiare i messaggi con il server X di Linux.

In termini pratici per visualizzare l’ambiente desktop abbiamo bisogno di utilizzare un X server anche sulla macchina Windows, e siamo costretti a ricorrere a software di terze parti (ce ne sono molti open source); è proprio questo il motivo per cui questa soluzione non è attualmente supportata da Microsoft.

Per questo esempio utilizziamo vcXsrv (https://sourceforge.net/projects/vcxsrv/), ma nessuno ci vieta di provare CygWinX (http://x.cygwin.com/), Xming (https://sourceforge.net/projects/xming/) oppure mobaXterm (http://mobaxterm.mobatek.net/).

Quindi scarichiamo da https://sourceforge.net/projects/vcxsrv/files/latest/download ed installiamo banalmente l’applicazione vcXsrv (oggi alla versione 64.1) con le opzioni di default.

Lanciamo quindi vcXrsv dopo averlo cercato nelle app ed esportiamo la variabile display da Windows bash per presentare all’X server di Windows le finestre che andremo ad aprire. Eseguiamo quindi:

export DISPLAY=:0

Proviamo ad aprire qualche tool Linux con interfaccia grafica, iniziando con qualcosa di semplicissimo:

xcalc

Si, è vero, c’è Windows Calc che è molto più comodo, ma non dimentichiamo che stiamo facendo tutto questo per il nostro povero commercialista. Proviamo a spingerci un po’ oltre:

Da Windows bash proviamo a vedere cosa succede digitando:

firefox

Beh, abbiamo un bel po’ di warning che ci avvisano che non è possibile utilizzare il multithreading, ma abbiamo un browser attivo e funzionante.

Visualizzazione del Desktop Linux

Vediamo cosa succede se installiamo un server VNC su WSL e proviamo a connetterci con il proprio viewer; questa volta utilizzeremo LXDE, un altro ambiente Desktop Open Source per Linux. Installiamo LXDE e server vnc con un semplice

sudo apt-get install xorg lxde-core tightvncserver

avviamo per la prima volta il servizio vnc ed impostiamo una password

tightvncserver :1


Ora la configurazione è stata creata e possiamo stoppare vnc server:

tightvncserver -kill :1

e possiamo modificare il nostro file di configurazione per creare la sessione server utilizzando LXDE; è sufficiente aprire con un editor di testo il file xstartup

nano ~/.vnc/xstartup

La notazione ~ serve ad indicare la home dell’utente così come avviene nella PowerShell di Windows. Il file xstartup, infatti, si trova nella cartella .vnc (sotto Linux il punto iniziale indica una cartella nascosta), che a sua volta si trova all’interno del profilo utente corrente.

All’interno del file dobbiamo poi aggiungere queste righe posizionandole in fondo alla configurazione:

lxterminal &

/usr/bin/lxsession -s LXDE &

Il file diventerà così:

Salviamo con ctrl-x e yes e riavviamo il servizio tightvnc

tightvncserver :1

Passiamo poi al “client” Windows: scarichiamo VNC Viewer ed installiamolo. Possiamo scaricare il viewer da questa pagina: https://www.realvnc.com/download/viewer/

Eseguiamolo ed apriamo una connessione verso localhost:5901, la porta di default che identifica il display 1

Confermiamo che siamo coscienti di utilizzare una connessione non criptata ed immettiamo la password scelta in precedenza.

Et Voilà, il desktop della nostra macchina Linux, anzi della nostra macchina Windows su cui gira un desktop Linux J

Non ci rimane che provare a copiare il software del commercialista, e con un po’ di fortuna potremmo avergli risolto un bel problema! Ricordiamo che anche dal Desktop abbiamo accesso a tutto il filesystem Windows, trovando il contenuto del nostro volume C:\ all’interno del path Linux /mnt/

Utilizzo di un server X Windows

Un’altra possibilità, forse ancora più elegante, per utilizzare l’interfaccia grafica Linux è quella di esportare la variabile DISPLAY come abbiamo fatto in precedenza per xcalc e firefox, e lanciare non più una singola applicazione desktop, ma l’intera interfaccia grafica. Proviamo a vedere cosa succede lanciando l’interfaccia installata in precedenza: unity.

Lanciamo il server X di Windows con i settings avanzati aprendolo tramite l’uility XLaunch, richiamando la stessa dalle app di Windows; impostiamo quindi un’unica finestra ed il display numero 0 e lasciamo le restanti opzioni con i valori di default.

Ricordiamo da Windows bash di esportare il display se non è stato fatto con

export DISPLAY=:0

e lanciamo la configurazione dell’ambiente grafico Linux con

ccsm

Aggiungiamo le spunte per l’abilitazione delle funzionalità necessarie così come negli screenshot seguenti

Dopo aver cliccato su Close, saremo in grado di lanciare l’interfaccia grafica di unity digitando

compiz

direttamente dalla riga di comando di Windows bash. Io in questo caso non sono stato molto fortunato, e come segnalano molti possessori di schede video Nvidia, ho ottenuto un crash dell’applicazione nel momento in cui ha inizializzato le librerie OpenGL.

Al momento non sono riuscito a trovare un workaround valido, ma ho voluto segnalare comunque l’intera procedura perché, su diversi dispositivi questa va a buon fine.

Lo scopo di questo articolo è ovviamente andare un po’ più a fondo sulle potenzialità offerte da WSL, ritenendolo una funzionalità davvero particolare e interessante.

A questo punto posso svelarvi il segreto che ho tenuto nascosto per tutta la durata dell’articolo: non esiste nessun commercialista J

openSUSE in Windows Subsystem for Linux in Windows 10

Con il rilascio dell’Anniversary update è stata aggiunta a Windows 10 una funzionalità molto particolare, chiamata Windows Subsystem for Linux (WSL), che consente di eseguire dei binari di tipo ELF64 (eseguibili compilati in modalità nativa Linux), direttamente su Windows, senza l’ausilio di macchine virtuali o emulatori di terze parti.

In questo articolo (https://www.ictpower.it/sistemi-operativi/windows-subsystem-for-linux-finalmente-in-una-release-ufficiale.htm) abbiamo visto come abilitare questa funzionalità, e come durante l’installazione il sistema scarichi dal Windows Store il pacchetto Ubuntu for Linux, distribuzione prodotta da Microsoft e Canonical appositamente per l’integrazione su Windows.

L’aggiunta di questa funzionalità, passata forse in sordina nei primi tempi, sta ora suscitando qualche gelosia da parte di chi produce distribuzioni Linux a livello commerciale, che vede la possibilità di far conoscere la propria distribuzione ad un pubblico più ampio, sfruttando la popolarità di Windows 10 a livello client. E’ il caso di Hannes Kühnemund, senior Product Manager di SUSE, che in una recente dichiarazione ha affermato che Microsoft per il suo WSL stesse utilizzando la distribuzione errata di Linux, sostenendo che SUSE esiste da molto più tempo rispetto ad Ubuntu, e per questo sicuramente avrebbe meritato maggiore attenzione.

La dichiarazione è stata opportunamente accompagnata dal rilascio, in versione non ufficiale, del pacchetto openSUSE Leap 24.2 integrabile in WSL. OpenSUSE Leap è la versione Open della distribuzione commerciale SUSE Enterprise, ed è quindi possibile scaricarla ed installarla liberamente su qualsiasi client Windows, a patto che sia stata precedentemente attivata la funzionalità WSL, e che durante il relativo wizard di installazione sia stato creato un utente con password.

Non ci rimane che mettere alla prova questa nuova distribuzione, iniziando in primis a capire se questo pacchetto rispetta le promesse circa la possibilità di utilizzarlo senza problemi con Windows 10. Ci aspettiamo, quindi, di poter avviare openSUSE bash, ed utilizzare il gestore dei pacchetti Zypper così come utilizziamo apt-get su Ubuntu.

Per comprendere tutti i passaggi dell’installazione è importante analizzare il filesystem di Windows, individuando la cartella in cui lavora WSL, ossia la cartella dove sono presenti tutti i file relativi al sottosistema linux. Il sistema è composto da due parti fondamentali: la prima comprende tutti i binari e i file di configurazione della distribuzione, la seconda comprende tutto il resto, tra cui ad esempio i dati utente o il path in cui sono montati i dischi Windows. Il tutto si trova nella cartella (nascosta) %localappdata%\lxss. Nel mio caso, ad esempio, il sottosistema Linux si trova nella cartella:

C:\Users\ICTPower\AppData\Local\lxss

Qui troviamo la cartella rootfs, all’interno della quale c’è il sistema operativo Linux vero e proprio insieme ad altre cartelle, tra cui quelle relative agli utenti (home) e quella in cui vengono montati i volumi di Windows (mnt). Notiamo la presenza del file bash.ico, che andremo a modificare in seguito. Lo screenshot seguente mostra come si presenta la cartella %localappdata%\lxss vista dal sistema operativo Windows.

Vediamo, inoltre, che all’interno della cartella rootfs è presente il sistema operativo base:

La cartella %localappdata%\lxss\rootfs\home è vuota, poiché il profilo dell’utente Linux, nel mio caso chiamato gnanoia, si trova nella cartella home al livello superiore, cioè %localappdata%\lxss\home

Ho preferito essere un po’ puntiglioso per questo semplice chiarimento perché è di fondamentale importanza per eseguire correttamente i passaggi seguenti dell’installazione.

L’idea è infatti quella di sostituire la cartella base del sistema operativo (la cartella rootfs con Ubuntu per intenderci), con la corrispondente openSUSE, presente nel pacchetto rilasciato pochi giorni fa.

Iniziamo quindi scaricando il pacchetto openSUSE-42.2.tar.xz, che è l’immagine di un “container” basato su openSUSE. Non approfondiremo in questa sede il concetto di container, rimandando i più curiosi al video presente su questa pagina (https://www.nicolaferrini.it/ita/blog/871-techeroes-come-funzionano-i-container-con-docker.html), ma teniamo solo presente che stiamo effettuando il download di una distribuzione Linux “pronta all’uso”, come se avessimo “catturato” l’immagine base di una macchina openSUSE già installata.

Per iniziare, quindi, apriamo Windows Bash (bash on Ubuntu on Windows) ed eseguiamo:

wget -O openSUSE-42.2.tar.xz https://github.com/openSUSE/docker-containers-build/blob/openSUSE-42.2/docker/openSUSE-42.2.tar.xz?raw=true

Notiamo che all’avvio di Windows bash la cartella di lavoro corrente corrisponde alla home dell’utente Linux, e quindi il download sarà eseguito nella cartella \home\<nomeutente>, e quindi il percorso completo del file scaricato nel mio caso sarà: \home\gnanoia\openSUSE-42.2.tar.xz

Ora creiamo con permessi di root (quindi utilizzando il comando sudo) una cartella chiamata rootfs all’interno della nostra home, estraiamo l’immagine scaricata all’interno di questa cartella, e chiudiamo la shell.

sudo mkdir rootfs

sudo tar -C rootfs -Jxf openSUSE-42.2.tar.xz

exit

A seconda della release di WSL in uso potrebbero essere visualizzati degli errori relativi alla syscall MKNOD, che potrebbe risultare non supportata. Possiamo tranquillamente ignorare gli errori poiché la nostra necessità è semplicemente quella di scompattare l’archivio.

A questo punto dobbiamo sostituire la cartella rootfs originale (quella con Ubuntu) con quella appena creata; poiché questa operazione viene eseguita su cartelle in uso da WSL è necessario stoppare il relativo servizio per proseguire. Eseguiamo quindi da un prompt di DOS con privilegi elevati:

net stop lxssmanager

Possiamo quindi rinominare la cartella %localappdata%\lxss\rootfs in %localappdata%\lxss\rootfs.ubuntu, e copiare al suo posto la cartella con il pacchetto openSUSE appena estratto (la troviamo su %localappdata%\lxss\home\rootfs).

Questa operazione può ovviamente essere eseguita con Windows Explorer o con i seguenti comandi da un prompt di DOS:

cd %localappdata%\lxss\

rename rootfs rootfs.ubuntu

move .\home\<nomeutente>\rootfs .\

Lo screenshot seguente mostra le operazioni eseguite per la sostituzione della cartella rootfs

Possiamo quindi avviare nuovamente il servizio lxssmanager:

net start lxssmanager

L’ultimo passo è quello di settare l’utente predefinito della nuova distribuzione. Non essendo presenti utenti oltre a root sull’immagine openSUSE possiamo eseguire da DOS:

lxrun /setdefaultuser root

Per finire il lavoro con eleganza possiamo sostituire l’icona %localappdata%\lxss\bash.ico (preferibilmente rinominandola ubuntu.ico) con quella di openSUSE scaricabile da:

http://www.iconarchive.com/download/i46667/saki/nuoveXT/Apps-suse.ico

e rinominare con “bash in openSUSE on Windows” il collegamento presente in

C:\Users\<nomeutente>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

O crearne uno nuovo sul Desktop

Per lo screenshot finale accompagnato dagli applausi del pubblico scegliamo di eseguire il comando

cat /etc/os-release

che ci mostrerà distribuzione e release attualmente in uso

Come promesso vediamo come si comporta il manager di pacchetti, provando ad installare apache utilizzando zypper; se tutto è a posto dovrebbe bastare un semplice comando:

zypper in apache2

Creiamo ora un semplice file index:

echo "Hello World" > /srv/www/htdocs/index.html

Avviamo apache:

httpd

E navighiamo su http://127.0.0.1

Direi che è proprio quello che ci aspettavamo, solo ora mi sento di affermare che è possibile utilizzare anche un userspace openSUSE, e quindi SUSE Linux Enterprise Server su Windows Subsystem for Linux.

Preferire Ubuntu o SUSE a questo punto è una scelta puramente personale, se non fosse così d’altro canto non si chiamerebbero sistemi open 😀

Se invece siete arrivati fin qui per sapere cosa preferisco io… beh… sono in attesa del rilascio di CentOS 😀

Windows 10 Anniversary Update Highlights: Tutte le novità per il business e la Openness

Windows 10 Anniversary Update, rilasciato il 2 Agosto 2016, ha introdotto una serie di funzionalità davvero evolute ed interessanti per il mondo Enterprise. La nuova versione di Hyper-V introduce la Nested Virtualization, utile per poter utilizzare gli Hyper-V Containers basati su Docker. Inoltre il client di App-V (Application Virtualization) è stato inserito nativamente nelle versioni Enterprise ed Education. In più è disponibile anche Windows Bash, che avvicina il mondo Open Source al panorama Microsoft. In questo video Nicola Ferrini e Gianluca Nanoia ci mostrano tutta la potenza delle nuove funzionalità e cercano di evidenziare, se mai ce ne fosse bisogno, l’apertura di Microsoft al mondo degli sviluppatori Open.

Windows Subsystem for Linux: finalmente in una release ufficiale

Il gran giorno è arrivato. Il 2 Agosto 2016, esattamente un anno dopo il lancio del nuovo sistema operativo, Microsoft ha rilasciato la build 14393 di Windows 10 versione 1607, presentandolo con l’accattivante identificativo “Anniversary Update”. Le novità di questa versione sono molto importanti e come era intuibile sono in parte incentrate sul miglioramento degli strumenti introdotti per la prima volta con Windows 10 ed in parte sull’introduzione di nuove features molto interessanti. Parliamo in particolare di Windows Edge, Cortana, Windows Ink e soprattutto di Windows Subsystem for Linux, il componente che, una volta attivato, permette di avere un vero e proprio ambiente in grado di eseguire tool, comandi e servizi in modalità nativa, senza necessità di utilizzare emulatori o macchine virtuali.

In un articolo precedente (https://www.ictpower.it/guide/installazione-di-windows-10-subsystem-for-linux-windows-10-bash.htm) abbiamo visto come installare Windows Subsystem for Linux sulla versione Inside Preview di Windows; l’operazione fino a pochi giorni fa era quindi possibile solo agli utenti iscritti al programma Insider di Microsoft, e come descritto nell’articolo appena citato richiedeva una procedura piuttosto lunga. Oggi, invece, dopo aver installato Windows 10 Anniversary Update, possiamo installare WSL in pochissimi passi, come descritto in seguito:

  1. Aprire Pannello di Controllo – Programmi – Programmi e Funzionalità – Attivazione o disattivazione delle funzionalità di Windows.

    Per eseguire questa operazione è sufficiente anche cercare tramite Cortana “funzionalità” e selezionare dai risultati della ricerca il collegamento desiderato. In realtà, come vediamo in questo screenshot, è sufficiente digitare le iniziali “fu” per visualizzare il collegamento tra i risultati della ricerca.

  2. Abilitare la funzionalità Windows Subsystem For Linux

  1. Riavviare il PC

  2. Attivare la modalità sviluppatore tramite: Impostazioni – Aggiornamento e sicurezza – Per sviluppatori

A questo punto il nostro sottosistema Linux è quasi, e per iniziare ad utilizzarlo sarà sufficiente avviare la shell bash lanciando c:\Windows\system32\bash.exe

E’ possibile avviare la shell ovviametne cercando “bash” con Cortana e cliccare sul risultato della ricerca

Al primo avvio sarà richiesta conferma per l’installazione di Ubuntu on Windows, che verrà scaricato dal Windows Store ed installato in un pochi minuti

È bene tenere presente che questa è una prima release ed è solo un punto di partenza verso la completa integrazione di Microsoft con il mondo Open Source; il sottosistema Linux è inoltre limitato allo user-mode e non permette (ancora?) di effettuare alcune operazioni che richiedono l’accesso diretto alle risorse di sistema quali montare un pendrive USB o cambiare l’indirizzo IP, ma offre possibilità sicuramente interessanti. In questo articolo (https://www.ictpower.it/guide/apache-php-e-mysql-su-windows-subsystem-for-linux-e-possibile.htm), per esempio, vediamo come installare un sistema LAMP per creare un vero e proprio webserver linux con supporto PHP e MySQL.

Come suggerito dallo screenshot precedente, vediamo che siamo al lavoro su una distribuzione Ubuntu distribuita da Canonical, in particolare scopriamo la versione del sistema, ed in particolare del kernel che stiamo utilizzando eseguendo i due comandi di seguito:

cat /etc/lsb-release

Il comando cat ci consente di visualizzare il contenuto di un file di testo. In questo caso vogliamo visualizzare il file lsb-release che si trova nella cartella /etc, che per convenzione ci indica su che distribuzione Linux stiamo lavorando, indicandone la versione:

E’ proprio una Ubuntu 14.04.4 LTS, la stessa presente nelle precedenti build non ufficiali, disponibili solo per gli utenti Insider. Ci conferma questa tesi anche il comando seguente, che ci da informazioni dettagliate sulla versione del kernel in uso:

uname -a

Se non vedete l’ora di provare qualche comando linux, vi rimandiamo ad alcuni articoli marchiati ICT Power, dove ne abbiamo presentati alcuni:

http://www.ictpower.it/guide/editing-di-testo-con-windows-bash.htm

http://www.ictpower.it/sistemi-operativi/grep-e-sed-ricerche-ed-editing-di-testo-non-interattivo-con-windows-10-bash.htm

http://www.ictpower.it/guide/awk-per-windows-10-bash-molto-piu-di-un-editor-di-testo.htm

Per ora l’augurio è quello di un semplice Buon Divertimento, restate sintonizzati sui canali ICT Power per scoprire tutti gli sviluppi dell’Open Source su Windows.

Apache, php e MySQL su Windows Subsystem for Linux: è possibile?

Tra le domande più frequenti di chi scopre la possibilità di utilizzare un intero sottosistema linux su una macchina Windows c’è di certo la seguente:

“Si, carino, ma cosa ci faccio?”

Negli articoli precedenti abbiamo visto come è possibile utilizzare alcuni tool di cui un amministratore di sistema abituato a lavorare con linux non riuscirebbe a fare a meno, e fino ad ora era costretto ad installare emulatori o software di terze parti per poter sopperire alla mancanza della sua command line preferita. Oggi vediamo come Windows Subsystem for Linux non è solo editing di testo, e scopriamo come poter installare uno dei webserver più utilizzati al mondo. In particolare installeremo un webserver Apache con supporto php e MariaDB (il nuovo MySql), una soluzione completa per trasformare la nostra macchina in un webserver che non ha nulla da invidiare a quelli noleggiati in giro per il web.

L’installazione richiede un minimo di conoscenza dei servizi di cui stiamo parlando ma è tecnicamente molto semplice; per prima cosa è necessario aver installato Windows 10 Bash. Se la vostra macchina non soddisfa questo requisito potete correre ai ripari seguendo la guida riportata in questo articolo (https://www.ictpower.it/guide/installazione-di-windows-10-subsystem-for-linux-windows-10-bash.htm).

Il tool che ci viene incontro in questo caso è apt-get, il tool predefinito di Ubuntu per la gestione dei pacchetti di installazione, che permette di installare i servizi occupandosi per noi di scaricare e configurare ogni eventuale prerequisito.

La sintassi per installare un pacchetto è molto semplice:

apt-get install nomepacchetto

Per installare più pacchetti è sufficiente indicare i pacchetti separandoli con uno spazio

apt-get install nomepacchetto1 nomepacchetto2 nomepacchetto3

Iniziaremo proprio con guadagnare i privilegi di root (amministratori del sistema linux, con la possibilità di installare pacchetti), e procederemo all’installazione del db

sudo bash

Questo comando esegue una bash lanciandola con privilegi amministrativi (sudo = super user do). Verrà richiesto di immettere la password scelta in fase di installazione della bash. Riconosceremo di essere root perché il prompt terminerà con il carattere #, diversamente dal prompt utente che termina con il $.

Per esserne certi possiamo eseguire il comando whoami (chi sono io) per chiedere al sistema con che utente siamo loggati.

Per installare MariaDB utilizzeremo quindi

apt-get install mariadb-server mariadb-client

Il wizard chiederà di assegnare una password ed inizierà ad installare tutti i requisiti necessari.

Successivamente installerà ed avvierà il servizio MariaDB. Non preoccupatevi di eventuali errori che vedrete scorrere sullo schermo durante l’installazione, il servizio verrà installato correttamente.

Proviamo ad accedere al motore database con il comando

mysql –p

utilizzando la password fornita durante il wizard, e proviamo a creare un database di nome test.

Ora è il momento di installare il webserver Apache2; nulla di più semplice eseguendo il comando:

apt-get -y install apache2

Anche qui ignoriamo qualche messaggio di errore ed attendiamo meno di un minuto per l’installazione. Al termine possiamo aprire un browser e provare a navigare sull’indirizzo 127.0.0.1 o localhost. Quello che vedremo ci sorprenderà, ma in effetti abbiamo un vero e proprio webserver Ubuntu funzionante!

Anche navigando da LAN sull’indirizzo IP della macchina vedremo comparire la pagina del webserver, ed ovviamente configurando il nostro router saremo in grado di pubblicare questo webserver su internet. L’operazione è sconsigliata poiché essendo una versione beta potremmo rilevare dei problemi relativi alla sicurezza, ma è assolutamente possibile.

Non ci rimane ora che installare il supporto php, anche qui una sola riga di comando:

apt-get -y install php5 libapache2-mod-php5

Apache verrà automaticamente riavviato con il supporto php attivo. Facciamo subito una prova per assicurarcene. Creiamo un file php per eseguire la funziona phpinfo, che ci restituirà dettagli sulla versione di php in uso.

nano /var/www/html/ictpower.php

inseriamo queste righe di codice php e salviamo con CTRL+x, confermando con y

<?php
phpinfo();
?>

Navighiamo sulla pagina http://127.0.0.1/ictpower.php ed avremo la conferma che il nostro Apache ha pieno supporto a php:

Ora il nostro webserver è pronto, ma se vogliamo utilizzarlo per qualche sviluppo di test abbiamo la necessità di aggiungere qualche libreria di supporto al php, compresi i connettori al database MariaDB che abbiamo installato in precedenza. Niente paura, apt-get farà tutto il lavoro per noi. Aggiungiamo un –y al comando per dare conferma automatica all’installazione di tutti i pacchetti

apt-get -y install php5-mysqlnd php5-gd php5-xmlrpc php5-intl php-pear php5-imagick php5-curl php5-mcrypt php5-ming php5-snmp php5-sqlite php5-imap php5-tidy php5-xsl php5-ps php5-pspell php5-recode php5-memcache

Dopo l’installazione è necessario riavviare apache con il comando

service apache2 restart

Possiamo quindi verificare sulla pagina phpinfo l’aggiunta di tutti i supporti:

A questo punto possiamo preparare il nostro sito web, e dire a tutti che questo gira su un webserver apache Linux su Windows 10. Magari non vi crederanno, ma sarà solo questione di tempo. J

Installazione di Windows 10 Subsystem for Linux (Windows 10 Bash)

In questo articolo vedremo come è possibile installare il componente Windows Subsystem for Linux, e quindi Windows Bash, presenti tra le funzionalità aggiuntive di Windows 10 a partire dalla build 14366. Attualmente questo componente è disponibile solo nelle versioni Insider Preview ed è quindi necessario iscriversi al programma Windows Insiders per usufruirne. Con ogni probabilità il sottosistema Linux verrà incluso nella versione stabile del sistema operativo a partire dalla versione di Windows 10 Anniversary Update, disponibile dal prossimo 2 Agosto.

Per ottenere la build 14366 oggi l’unica modalità possibile è quella di effettuare il download della ISO dal portale Insiders, che richiede una registrazione con un profilo Windows Passport. Dopo aver effettuato l’accesso sulla pagina

https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewadvanced

possiamo selezionare la build e l’architettura desiderata, ed ottenere un link valido 24 ore per il download del file ISO.

Normalmente è possibile effettuare l’aggiornamento alle ultime build in versione beta configurando Windows Update per ricevere gli aggiornamenti dal programma Insiders, ma oggi 7 luglio 2016, non risulta possibile installare la versione 14366 utilizzando questa modalità, poichè già sostituita dalla build 14379, che non permette l’attivazione della modalità sviluppatore, opzione necessaria all’installazione di bash come vedremo nella parte finale di questo articolo.

Procediamo quindi al download della ISO Windows10_InsiderPreview_Client_x64_it-it_14366 oppure attendiamo il rilascio in fast ring (chiarimenti sul fast ring in seguito) di una prossima build, e settiamo il nostro account Microsoft Passport nelle impostazioni di Windows Update.

Selezioniamo opzioni avanzate

E facciamo click su “Per Iniziare” per abilitare i download da Windows Update dei componenti beta inclusi nel programma Insider. Confermiamo poi la scelta e riavviamo il sistema.

Tra le impostazioni avanzate troviamo l’indicazione sulla modalità di ricezione degli aggiornamenti: possiamo scegliere tra Fast Ring e Slow Ring. Nella modalità Fast otterremo l’ultima build rilasciata in beta, con tutte le utlime novità (e i bug) ancora in fase di test; la modalità Slow, invece, consentirà comunque di ottenere una build in beta, ma che sia già stata un buona parte testata, quindi con meno novità ma anche meno bug rispetto alla build rilasciata in Fast Ring.

In generale se abbiamo voglia di vedere quasi in tempo reale quello che Microsoft sviluppa selezioneremo la modalità Fast, così come mostrato nello screenshot seguente

Per installare Windows Subsystem for Linux sarà sufficiente abilitare il componente dalla sezione Funzionalità di Windows, e riavviare ancora una volta il sistema.

A questo punto per consentire l’installazione di bash è necessario abilitare la modalità sviluppatore, opzione presente all’interno dell’app Impostazioni nella sezione Per Sviluppatori


Successivamente è possibile eseguire dal prompt di DOS il comando “bash” per avviare l’installazione di questo componente


Dopo aver confermato digitando “s” Windows bash sarà scaricato da Windows Store ed installato. Un brevissimo wizard inviterà ad inserire un nome utente ed una password per la configurazione dell’ambiente Linux.

Per avviare bash in un secondo momento è possibile richiamare l’app dal prompt dei comandi o dall’apposito link tra i programmi installati, e si avrà a disposizione un insolito ambiente linux user-mode direttamente sulla macchina Windows, senza alcun tipo di emulatore.

Al momento, essendo un ambiente in user-mode, il sottosistema linux non ha pieno accesso alle risorse e alle periferiche di sistema ma è un ottima soluzione per utilizzare tutti i tool nativi per lo sviluppo o l’editing di testo per cui i sistemi Unix sono tanto blasonati.

awk per Windows 10 Bash, molto più di un editor di testo

Nei precedenti articoli abbiamo visto come anche sul sistema operativo Windows 10 sia possibile eseguire in maniera nativa alcuni comandi linux, nello specifico abbiamo trattato dapprima i comandi base (http://www.ictpower.it/guide/editing-di-testo-con-windows-bash.htm) e successivamente grep e sed (http://www.ictpower.it/sistemi-operativi/grep-e-sed-ricerche-ed-editing-di-testo-non-interattivo-con-windows-10-bash.htm). Completiamo questa mini guida mostrando un estratto di quello che è possibile fare con awk, un vero e proprio linguaggio di programmazione per l’elaborazione dei testi, focalizzando l’attenzione su quali potrebbero essere i suoi impieghi per supportare la creazione e la modifica dei nostri script. Anche in questo caso ritengo utile la comprensione di alcuni elementi chiave degli articoli precedenti, quindi se siete alle prime armi nell’utilizzo dei comandi di editing linux consiglio di leggere le prime due parti della guida prima di continuare.

L’utilizzo di awk prevede, come molto spesso accade per l’editing di testo in ambiente linux, un testo in input passato al tool tramite immissione da tastiera o come risultato di una pipeline; questo testo sarà considerato come suddiviso per righe, ed ogni riga divisa in campi. Come impostazione di default si intende il carattere “invio” come delimitatore per le righe ed il carattere “spazio” per delimitare i campi. Per queste caratteristiche awk è molto usato per l’elaborazione dei file di testo strutturati.

Il campo su cui lavorare viene indicato con delle variabili nel formato $N; indicheremo quindi $1 per il primo campo, $2 per il secondo, e così via. La variabile $0, invece, viene utilizzata per indirizzare awk sull’intera riga, anche se in questo caso è possibile ometterla perché considerata valore di default. Nel seguente esempio abbiamo un file denominato testo.txt e alcuni esempi di output ottenuti utilizzando l’azione print:

Possiamo utilizzare l’azione print insieme a delle semplici espressioni per eseguire delle operazioni tra i valori contenuti nelle colonne che compongono un file strutturato:

I comandi nel linguaggio awk sono strutturati in questo modo:

condizione { azione }

quando la condizione è soddisfatta, viene eseguita l’azione. La sintassi completa di awk sarà quindi:

awk ‘condizione { azione }’ file

è possibile indicare la condizione in più modi, dalle più semplici espressioni regolari racchiuse dal carattere “/” a più complesse sequenze di comandi delimitate dagli operatori BEGIN ed END. Un esempio di semplice “programma” in awk mostra come le possibilità offerte da questo tool sono infinite, e ci consente di capire come da riga di comando sia possibile ottenere quello che forse fino ad ora avremmo fatto con Excel; in questo caso vogliamo eseguire la somma dei valori della terza colonna di una matrice di numeri contenuta in un file.

Come accennato in precedenza, è possibile che il file sia strutturato in maniera da separare i campi con caratteri diversi dallo spazio, come spesso accade nei file.csv, e dobbiamo indicare ad awk quale carattere considerare come separatore. Abbiamo la possibilità di indicare un separatore per l’input (variabile FS) ed uno per l’output (variabile OFS). Il valore di default per queste variabili è lo spazio. Vediamo cosa succede a seconda dei parametri che passiamo ad awk relativamente ai separatori di campo. FS ed OFS, che stanno a significare rispettivamente field separator ed output field separator, vanno indicati nella sezione BEGIN di awk.

Nell’esempio appena visualizzato notiamo che utilizzando la virgola tra gli indicatori di colonna, awk considererà il separatore di output (carattere spazio di default o personalizzato con la variabile OFS), diversamente da quanto accade della notazione $1 $2 (senza virgole) in cui awk darà in output i due valori uniti. Possiamo separarli con uno spazio anche indicando $1 ” ” $2.

Se tutto questo può sembrare astratto non facciamo fatica ad immaginare una situazione in cui conoscere awk può darci una mano a risparmiare tempo. Valutiamo, ad esempio, la necessità di dover inserire nel database di questo sito l’agenda di un evento in cui viene indicato il numero dell’aula in cui ogni speaker terrà la propria sessione. Siamo in possesso di un file chiamato ictpower.csv dove sono presenti, separati da una virgola, i nomi degli speaker e il numero dell’aula in cui interverranno, e dobbiamo creare dei comandi SQL per automatizzare la procedura di inserimento. awk ci viene in aiuto fornendoci gli strumenti per eseguire questa operazione in un’unica riga di comando; e notiamo come nello screenshot seguente sia utilizzata la notazione \047 per scrivere il carattere apice.

In particolare il comando utilizzato è:

awk ‘BEGIN {FS=”,”} {print “INSERT INTO eventi (nome,cognome,aula) VALUES (\047” $1 “\047,\047” $2 “\047,” $3 “)”‘} ictpower.csv

Anche qui notiamo la presenza di {FS=”,”}, che ci aiuta a trattare il file csv da riga di comando tenendo conto della suddivisione dei campi.

Una piccola nota: per scrivere le parentesi graffe in una shell DOS o in un editor di testo Windows utilizziamo il relativo codice ASCII inserendolo tenendo premuto il tasto ALT. In particolare avremo ALT+123 per la parentesi graffa aperta “{” e ALT+125 per quella chiusa “}”. Quando stiamo utilizzando Windows Bash questa combinazione di tasti non sortisce alcun effetto e siamo costretti – almeno per il momento – ad utilizzare il copia-incolla per l’immissione dallo standard input di questi caratteri.

Oltre ad FS ed OFS esistono altre variabili “native”, tra cui ricordiamo NF che indica il numero di campi (parole, colonne) ed NR che indica il numero di righe. Queste variabili sono aggiornate da awk subito dopo la lettura di ogni riga, in questo modo potremmo utilizzaread esempio:

awk ‘NF > 0’
per stampare tutte le righe non vuote di un file

awk ‘END { print NR }’
per ottenere il conteggio delle righe di un file

Vediamo ora come indicare la condizione da verificare su una determinata riga per eseguire delle operazioni su di essa. Come accennato nella sintassi di base, infatti, abbiamo la possibilità di indirizzare awk a lavorare solo su alcune righe, impostando una particolare espressione per esprimere la condizione da verificare per tenere una riga in considerazione. La modalità è identica al pattern di ricerca di sed, e dovremo indicare quindi la stringa da cercare tra due slash “/”.

Supponiamo di essere all’interno di una cartella contenente i file di configurazione di un servizio e di dover cercare dove è indicata la riga che contiene la stringa di connessione al database, che sappiamo essere associata alla variabile “connectionstring”; possiamo utilizzare awk  per ottenere la stringa che cerchiamo eseguendo una delle seguenti righe di codice:

cat elenco.txt | awk ‘/connectionstring/ { print }’
awk ‘/connectionstring/ { print }’ *

E’ possibile salvare i comandi awk da eseguire (tutta la parte tra parentesi graffe) all’interno di un file, e richiamarne l’esecuzione con il comando

awk -f programma.awk fileinput1 fileinput2 …

E’ possibile passare in input delle variabili indicando -v variabile=valore

Questo è utile quando vogliamo eseguire una lunga serie di comandi, oppure abbiamo bisogno utilizzare  variabili, vettori, cicli, condizioni, funzioni e tutto ciò che il linguaggio awk consente, in modo da lavorare con degli script molto più chiari dal punto di vista della lettura, a differenza di quanto accadrebbe se scrivessimo tutto il codice in un’unica riga.

Come immaginabile a questo punto sarebbe necessario un vero e proprio manuale di programmazione per conoscere tutti i segreti di questo linguaggio ma, come ripetuto più volte anche nei precedenti articoli, lo scopo di questa mini-guida è solo quello di iniziare a comprendere le potenzialità offerte dall’ambiente linux ora a disposizione su Windows 10, e comprendere così il perchè del suo arrivo inaspettato in casa Microsoft.

Windows BASH – tutti i segreti

A San Francisco, il 30 Marzo e il primo Aprile 2016 c’è stato l’annuale appuntamento con Build 2016, la conferenza Microsoft dove gli annunci e i colpi di scena non mancano mai.

Uno degli annunci dell’edizione 2016 è stato Windows BASH: per chi è nato ed è cresciuto solo su sistemi Windows probabilmente questo annuncio non è molto comprensibile e per chi è nato e cresciuto su sistemi Linux, o genericamente Open Source, probabilmente questo annuncio lascia un po’ scettici e perplessi.

In questo articolo vorrei fornire gli strumenti utili a entrambe le audience per comprendere finalmente perché un professionista del mondo dell’informatica e della tecnologia oggi ha il diritto di sentirsi protagonista di una nuova era di collaborazione e potenzialità.

Cominciamo con una bella panoramica in italiano di BASH: qui capiremo cosa effettivamente significa questa novità per i Professionisti.

Passiamo poi alla pratica con due interessanti articoli, in italiano, che ci danno degli ottimi spunti per cominciare a familiarizzare con la shell: a questo link troviamo infatti tutte le informazioni per fare editing di testo con BASH, mentre qui approfondiamo i comandi Linux presenti nella BASH.

 

A questo punto abbiamo molti strumenti per riconoscere le potenzialità di questo annuncio: la collaborazione tra team di “estrazioni” differenti non sarà più un ostacolo alla produttività.

Buon lavoro a tutti!