Menu

Guida definitiva a WSL2 e Ubuntu: aggiornamenti, gestione del Phasing e ottimizzazioni per lo sviluppo

7 min di lettura Manuel

Una volta instalato WSL2 e la distribuzione Ubuntu su Windows 11, è necessario distinguere tra l'aggiornamento del motore WSL2 / kernel Linux (eseguito da PowerShell o Prompt dei comandi su Windows) e l'aggiornamento dei pacchetti software interni alla distribuzione Linux (eseguito dal terminale Ubuntu).

Comandi da PowerShell / Prompt dei Comandi (su Windows 11)

Questi comandi si eseguono aprendo PowerShell o CMD (consigliato come Amministratore) in Windows:

ComandoDescrizione
wsl --updateScarica e aggiorna all'ultima versione il kernel WSL e i componenti di sistema di Windows Subsystem for Linux.
wsl --statusMostra lo stato generale di WSL, inclusi la versione predefinita e il kernel in uso.
wsl --shutdownChiude immediatamente tutte le istanze in esecuzione di WSL (utile se un container o un processo Linux è bloccato).
wsl -l -vElenca le distribuzioni Linux installate e indica se girano su WSL 1 o WSL 2.

Comandi da Terminale Ubuntu (interno a WSL2)

Questi comandi si eseguono direttamente all'interno della shell di Ubuntu (es. digitando wsl o aprendo l'app Ubuntu da Windows):

ComandoDescrizione
sudo apt updateSincronizza l'elenco dei pacchetti disponibili e delle relative versioni dai repository ufficiali.
sudo apt upgradeAggiorna tutti i pacchetti installati alle versioni più recenti.
sudo apt full-upgradeAggiorna i pacchetti gestendo anche eventuali dipendenze o rimozioni complesse.
sudo do-release-upgradeEsegue l'upgrade dell'intera distribuzione Ubuntu (ad esempio, passare da una versione LTS alla successiva).

Consiglio per l'aggiornamento quotidiano: Puoi combinare i due comandi principali di Ubuntu in un'unica riga per fare tutto in un colpo solo:

sudo apt update && sudo apt upgrade -y

Phasing: cos'è e come funziona

Il phasing (o rilascio graduale) in Ubuntu è un meccanismo di sicurezza introdotto da Canonical per evitare che un aggiornamento difettoso o con bug gravi possa bloccare contemporaneamente i computer di tutti gli utenti.

Invece di distribuire un nuovo aggiornamento a tutti nello stesso momento, Ubuntu lo rilascia a "ondate" successive.

Il funzionamento del sistema si articola in quattro aspetti principali:

01. Il meccanismo della lotteria (Lato Client)

Quando i developer pubblicano un aggiornamento non di sicurezza, gli assegnano una percentuale iniziale (di solito il 10%).

• Il tuo PC, quando esegue apt update, calcola un numero casuale da 1 a 100 basandosi sul proprio Machine ID (un identificativo univoco del computer) combinato con il nome e la versione del pacchetto.

• Nessun dato viene inviato a Canonical; il calcolo avviene interamente sul tuo computer per rispettare la privacy.

• Se il numero generato dal tuo PC è inferiore o uguale alla percentuale di rilascio attuale, il pacchetto viene installato. Altrimenti, compare l'avviso "Not upgrading yet due to phasing".

02. Monitoraggio dei crash e progressione (Lato Server)

Ogni 6 ore, i server di Ubuntu verificano le segnalazioni di errore automatiche inviate dai computer che hanno già installato l'aggiornamento (la prima ondata del 10%).

• Se non ci sono problemi: La percentuale di rilascio aumenta del 10%. In circa 54 ore (poco più di 2 giorni), l'aggiornamento raggiunge il 100% ed è disponibile per tutti.

• Se viene rilevato un bug grave: Il rilascio viene immediatamente bloccato (portato allo 0%). In questo modo, il bug ha colpito solo una minima parte di utenti e gli sviluppatori possono correggerlo prima che crei danni su scala globale.

03. Cosa viene escluso dal phasing?

Non tutti i pacchetti seguono questa trafila. Gli aggiornamenti di sicurezza critici bypassano sempre il phasing e vengono installati immediatamente da tutti i sistemi per garantire la protezione immediata da vulnerabilità note.

04. Disattivare il phasing in modo permanente

Se gestisci server in cui gli aggiornamenti devono essere perfettamente allineati o preferisci non avere pacchetti in attesa, puoi disattivare questa funzione creando un file di configurazione per APT:

  1. Apri il terminale e crea il file:
sudo nano /etc/apt/apt.conf.d/99phased-updates

  1. Inserisci la seguente riga all'interno del file:
APT::Get::Always-Include-Phased-Updates "true";

  1. Salva e chiudi (con Ctrl+O e poi Ctrl+X se usi nano). Da questo momento in poi, apt upgrade ignorerà il phasing e scaricherà tutto subito.

Su un PC desktop con WSL2 (Windows Subsystem for Linux), lo scenario cambia rispetto a un server di produzione. Poiché si tratta di un ambiente di sviluppo e testing locale eseguito dentro Windows, i rischi legati al superamento del phasing sono minimi.

Perché su WSL2 puoi forzarlo o disattivarlo in sicurezza?

• Facilità di ripristino: Se un pacchetto instabile causa problemi a WSL2, non rischi di bloccare l'avvio del computer principale (Windows 11/10 continua a funzionare normalmente).

• Niente tempi morti di boot: In caso di crash critico dell'istanza Linux, puoi fare il backup della tua cartella utente da Windows o semplicemente creare una nuova istanza della distribuzione in pochi secondi.

• Aggiornamenti specifici di WSL: I pacchetti che gestiscono i repository software esterni (PPA) come python3-software-properties e software-properties-common su WSL2 è utile averli sempre aggiornati per evitare incompatibilità con i tool di sviluppo recenti.

Come renderlo definitivo su WSL2

Se vuoi evitare di vedere quell'avviso ogni volta che usi il terminale dentro Windows, puoi disattivare il phasing per la tua istanza Linux con un comando rapido che automatizza il file di configurazione visto in precedenza:

echo 'APT::Get::Always-Include-Phased-Updates "true";' | sudo tee /etc/apt/apt.conf.d/99phased-updates

Una volta eseguito questo comando, ti basterà lanciare un normale sudo apt update && sudo apt upgrade per allineare subito tutti i pacchetti.

05. Ottimizzazioni avanzate per lo stack di sviluppo su WSL2

Per lo sviluppo software (Python, Docker, Node.js) su WSL2, rimuovere il phasing ti evita fastidi, ma ci sono altre ottimizzazioni cruciali per garantire prestazioni native e zero conflitti con Windows. Ecco le configurazioni fondamentali per il tuo stack di sviluppo su WSL2:

1. Docker: Non installarlo dentro WSL2

Se usi Docker, non installare Docker Engine direttamente dentro l'istanza Ubuntu tramite apt. Questo crea conflitti di rete e instabilità con il kernel di WSL. • La via corretta: Installa Docker Desktop su Windows. • Integrazione: Nelle impostazioni di Docker Desktop, vai su Settings > Resources > WSL Integration e abilita la spunta sulla tua distribuzione Ubuntu. Docker configurerà automaticamente i binari e i socket all'interno di Linux, garantendoti prestazioni ottimali e l'uso del comando docker direttamente dal terminale Ubuntu.

2. Python e Node.js: Gestisci le versioni senza sudo

Evita di installare versioni globali di Node o moduli Python usando sudo apt install. Rischi di corrompere i pacchetti di sistema se un tool richiede una versione diversa da quella nativa di Ubuntu. • Per Node.js: Usa fnm (Fast Node Manager) o nvm. Ti permettono di installare e saltare da una versione all'altra di Node (es. LTS contro l'ultima versione) al volo senza permessi di root. • Per Python: Usa pyenv per gestire le versioni di Python e poetry o venv per isolare le dipendenze dei tuoi progetti.

3. Velocità del File System (La regola d'oro)

Le prestazioni di WSL2 crollano se sposti i file tra i due sistemi operativi. • Sì: Crea e tieni tutti i tuoi progetti nella cartella home di Linux (es. /home/tuo-utente/progetti/). • Sì: Usa VS Code installato su Windows con l'estensione WSL. Aprirà i progetti residenti su Linux alla velocità nativa. • No: Non fare mai cd /mnt/c/Users/... per sviluppare progetti posizionati sul disco C: di Windows. L'accesso al file system attraverso il mount /mnt/c/ è estremamente lento per Node e Python.

4. Gestione della memoria (File .wslconfig)

Di default, WSL2 può arrivare a consumare fino al 50% (o più) della RAM totale di Windows. Se lanci container Docker pesanti o script Python intensivi, Windows potrebbe rallentare.

Puoi limitare le risorse creando un file chiamato .wslconfig nella tua cartella utente di Windows (es. C:\Users\TuoNome\.wslconfig):

[wsl2]
memory=8GB   # Limita la RAM per WSL2 (es. 8GB o 16GB in base a quanta ne hai)
processors=4 # Limita i core della CPU dedicati a WSL2
guiApplications=false # Disattiva l'interfaccia grafica se usi solo il terminale

Dopo aver salvato il file, riavvia WSL da PowerShell su Windows con il comando:

wsl --shutdown


TAG: #wsl2 #ubuntu #linux #docker #windows11