Qual è il comando corretto per aggiornare Ubuntu ed i suoi pacchetti? Che differenza c'è tra apt-get update e apt-get upgrade? Perché, probabilmente, apt-get dist-upgrade è la scelta migliore? Che confusione! La verità è che aggiornare Ubuntu da linea di comando richiede molteplici passaggi. Vediamo quali sono e presentiamo uno script realizzato da TurboLab.it che svolge automaticamente tutte le operazioni ottimali nell'ordine corretto

Aggiornare Ubuntu: quali differenze apt-get update, apt-get upgrade apt-get dist-upgrade? modo migliore è... zzupdate! - zzupdate spotlight

Aprire il Terminale

Questo articolo è incentrato sulla procedura per aggiornare Ubuntu ed i pacchetti installati da linea di comando. Per prima cosa, dobbiamo quindi aprire una shell testuale. Se state lavorando via SSH oppure con una edizione spiccatamente "server" (come Ubuntu Server), siete già davanti alla linea di comando, quindi andate oltre.

Se però state impiegando l'edizione "regolare" per PC, cliccate sul pulsante con i 3x3 punti in basso a sinistra e cercate terminale per lanciare rapidamente l'omonima applicazione

Aggiornare Ubuntu: quali differenze apt-get update, apt-get upgrade apt-get dist-upgrade? modo migliore è... zzupdate! - linux apri terminale

» Leggi anche: Come aprire il terminale di Ubuntu

Aggiornare manualmente Ubuntu ed i pacchetti installati

I comandi da impartire in sequenza per aggiornare Ubuntu e tutti i programmi installati tramite apt-get o Ubuntu software sono:

  1. sudo apt-get clean: ripulisce la cache locale dei pacchetti
  2. sudo apt-get update: scarica la lista aggiornata dei pacchetti e delle nuove versioni disponibili nei repository. Questo comando si limita a recuperare informazioni, ma, in concreto, non installa nulla
  3. sudo apt-get dist-upgrade -y: è il comando principale, poiché scarica ed installa le ultime versioni dei pacchetti, delle dipendenze ed, eventualmente, il kernel più recente. In ogni caso, non esegue mai l'avanzamento di versione (v. seguito)
  4. sudo do-release-upgrade: esegue l'avanzamento di versione, passando alla release di Ubuntu successiva (maggiori informazioni)
  5. sudo apt-get autoremove -y: rimuove tutti i pacchetti obsoleti e non più necessari

Da notare che, in questa sequenza, non abbiamo usato sudo apt-get upgrade -y. Al suo posto, è altamente preferibile sudo apt-get dist-upgrade -y: quest'ultimo, infatti, gestisce in maniera intelligente l'update delle dipendenze, scaricando e rimuovendo in modo più aggressivo i pacchetti al fine di garantire un aggiornamento in profondità.

Un altro comando popolare che non abbiamo usato e sudo apt full-upgrade: il motivo è che si tratta sostanzialmente dell'equivalente di sudo apt-get dist-upgrade -y, ma per il comando apt. Il risultato è, tuttavia, equivalente.

Quelli citati sono i passaggi essenziali, ma, probabilmente, vorremo chiudere con:

  1. lsb_release -d: mostra la versione di Ubuntu installata (maggiori informazioni)
  2. reboot: riavvia il sistema. È necessario solo in un numero limitato di circostanze, ma è comunque sempre una buona idea lanciarlo per minimizzare i problemi e caricare l'ultima versione del kernel eventualmente appena installata

Aggiornare Ubuntu con un solo comando: zzupdate

Tutta questa sequenza è veramente difficile da ricordare, per non parlare del fatto che ci obbliga ad attendere il termine di ogni operazione prima di lanciare quella successiva. Per ovviare a questa scomodità ho realizzato zzupdate, un semplice script che si occupa di svolgere l'intera procedura in autonomia.

Per installare zzupdate e le sue dipendenze sul sistema, impartire questo comando (tutto su una sola riga):

sudo apt install curl -y -qq && curl -s https://raw.githubusercontent.com/TurboLabIt/zzupdate/master/setup.sh | sudo sh

Aggiornare Ubuntu: quali differenze apt-get update, apt-get upgrade apt-get dist-upgrade? modo migliore è... zzupdate!

La procedura di installazione rende disponibile globalmente un nuovo comando: zzupdate. D'ora in avanti, per aggiornare automaticamente Ubuntu e tutti i suoi pacchetti basterà dunque impartire:

sudo zzupdate

Aggiornare Ubuntu: quali differenze apt-get update, apt-get upgrade apt-get dist-upgrade? modo migliore è... zzupdate!

Lo script si occupa anche di auto-aggiornarsi, di modo da rendere disponibili i nuovi miglioramenti che verranno via via introdotti.

Aggiorna inoltre zzmysqldump e tutti gli altri script realizzati da TurboLab.it.

Configurazione di zzupdate

In linea di massima, zzupdate è pronto all'uso così com'è. Chi però volesse modificare alcuni aspetti del suo comportamento (per escludere, ad esempio, l'avanzamento di versione ed il riavvio), può procedere copiando il file di configurazione in uno fra due percorsi a scelta. Quello raccomandato è la cartella dedicata sotto /etc/:

sudo cp /usr/local/turbolab.it/zzupdate/zzupdate.default.conf /etc/turbolab.it/zzupdate.conf

Apriamo ora il nuovo file di configurazione:

sudo nano /etc/turbolab.it/zzupdate.conf

» Leggi anche: Guida: modificare i file di configurazione di Linux Ubuntu/CentOS da terminale è facile con "nano" (alternativa a "vi")

I parametri disponibili sono:

  • REBOOT: se valorizzato a 1, il sistema viene riavviato al termine della procedura
  • REBOOT_TIMEOUT: se è attivato il reboot automatico (v. parametro REBOOT) indica il numero di secondi da attendere prima di riavviare. Durante il conto alla rovescia, premere Ctrl+C per impedire il riavvio
  • VERSION_UPGRADE: se valorizzato a 1, esegue l'avanzamento di versione se è disponibile una nuova versione di Ubuntu
  • VERSION_UPGRADE_SILENT: se valorizzato a 1, l'avanzamento di versione avviene in modo automatico, senza chiedere nulla all'utente (maggiori informazioni)
  • COMPOSER_UPGRADE: se valorizzato a 1 ed è installato Composer, esegue l'aggiornamento del suo eseguibile (--self-update)
  • SWITCH_PROMPT_TO_NORMAL: se valorizzato a 1, imposta a Prompt=normal il parametro nel file /etc/update-manager/release-upgrades. Questo consente di aggiornare anche le installazioni long-term support (LTS) all'ultima release non-LTS disponibile

Aggiornare Ubuntu: quali differenze apt-get update, apt-get upgrade apt-get dist-upgrade? modo migliore è... zzupdate!

Lavorare con i profili di zzupdate

In alcune circostanze potremmo voler eseguire lo script con parametri diversi da quelli impostati nel file di configurazione principale. Allo scopo, creiamo un "profilo", ovvero un file di configurazione dedicato.

Immaginiamo di voler creare il profilo server che non esegue l'avanzamento di versione e non riavvia automaticamente la macchina. Iniziamo copiando di nuovo il file di configurazione di default:

sudo cp /usr/local/turbolab.it/zzupdate/zzupdate.default.conf /etc/turbolab.it/zzupdate.profile.server.conf

Si noti il nome del file di destinazione: sostituiamo la stringa server con il nome del nostro profilo, lasciando inalterato il resto.

Ora apriamolo e modifichiamo i parametri di nostro interesse come visto in precedenza:

Aggiornare Ubuntu: quali differenze apt-get update, apt-get upgrade apt-get dist-upgrade? modo migliore è... zzupdate!

Dopo aver salvato le modifiche al profilo, potremo lanciare l'esecuzione con sudo zzupdate server.

Possiamo naturalmente creare molteplici profili, uno per ogni situazione.

File di configurazione: percorsi

Oltre al già citato percorso /etc/turbolab.it/zzupdate.conf, lo script legge la configurazione e i profili anche dalla cartella del programma stesso: /usr/local/turbolab.it/zzupdate.conf.

Se presenti, le configurazioni vengono caricate in quest'ordine:

  1. /etc/turbolab.it/zzupdate.default.conf
  2. /etc/turbolab.it/zzupdate.conf
  3. /usr/local/turbolab.it/zzupdate.conf
  4. /etc/turbolab.it/zzupdate.profile.nome_mio_profilo.conf (solo se specificato il profilo)
  5. /usr/local/turbolab.it/zzupdate.profile.nome_mio_profilo.conf (solo se specificato il profilo)

I parametri eventualmente presenti nei file "successivi" hanno la priorità. Se invece non sono ridichiarati, rimangono in vigore i valori presenti nei file "precedenti".