Una delle caratteristiche più note di Debian è la sua capacità di aggiornare il sistema installato da un rilascio stabile a quello successivo: dist-upgrade, un termine ben noto, ha in gran parte contribuito alla reputazione del progetto. Con alcune precauzioni, l'aggiornamento di un computer può richiedere da un minimo di pochi, fino a qualche decina, di minuti a seconda della velocità di scaricamento dai repository dei pacchetti.
6.7.1. Procedura raccomandata
Dal momento che Debian ha un tempo abbastanza lungo per evolvere fra i rilasci stabili, si consiglia di leggere le note di rilascio prima di fare l'aggiornamento.
In questa sezione, ci soffermeremo sull'aggiornamento di un sistema da Buster a Bullseye. Si tratta di un'operazione importante su di un sistema; come tale, non è mai priva di rischi al 100% e non si dovrebbe tentarla prima di aver fatto il backup dei dati più importanti.
Un'altra buona abitudine che permette un aggiornamento più facile (e veloce) è di riordinare i pacchetti installati e mantenere solo quelli che sono realmente necessari. Strumenti utili per fare questo sono
aptitude
,
deborphan
,
debfoster
e
apt-show-versions
(vedere
Sezione 6.2.7, «Tenere traccia dei pacchetti installati automaticamente»). Per esempio, è possibile avvalersi del seguente comando e poi usare la modalità interattiva di
aptitude
per ricontrollare ed ottimizzare le rimozioni pianificate:
#
deborphan | xargs aptitude --schedule-only remove
Passiamo ora all'aggiornamento vero e proprio. Prima di tutto, è necessario cambiare il file
/etc/apt/sources.list
per indicare ad APT di ottenere i pacchetti da
Bullseye invece di
Buster. Se il file contiene solo riferimenti a
Stable piuttosto che i nomi in codice, questo cambiamento non è necessario, poiché
Stable si riferisce sempre all'ultima versione rilasciata di Debian. In entrambi i casi, il database dei pacchetti disponibili deve essere aggiornato con il comando
apt update
o con il pulsante di aggiornamento in
synaptic
(
Sezione 6.2.1, «Inizializzazione»).
Una volta che queste nuove fonti di pacchetti sono registrate, si dovrebbe prima fare un aggiornamento minimale con
apt upgrade
come descritto in
Sezione 6.2.3, «Aggiornamento del sistema». Facendo l'aggiornamento in due fasi, si facilita il compito degli strumenti di gestione dei pacchetti e spesso si garantisce la presenza delle loro più recenti versioni che possono aver beneficiato di risoluzioni di bug e miglioramenti necessari per portare a termine l'aggiornamento completo del sistema.
Una volta fatto questo primo aggiornamento, è il momento di occuparsi dell'aggiornamento stesso con
apt full-upgrade
,
aptitude
o
synaptic
(
Sezione 6.7, «Aggiornare da una distribuzione stabile alla successiva»). Si consiglia di controllare attentamente le azioni suggerite prima di applicarle: si potrebbe desiderare di aggiungere i pacchetti suggeriti o deselezionare quelli che sono solo raccomandati e che sappiamo non saranno utili. In ogni caso, l'interfaccia dovrebbe trovare ciò che serve per ottenere un sistema
Bullseye aggiornato e coerente. In seguito, tutto ciò che si deve fare è aspettare che i pacchetti necessari vengano scaricati, rispondere alle domande di Debconf ed eventualmente a quelle sui file di configurazione modificati localmente e rilassarsi mentre APT fa la sua magia.
6.7.2. Gestire i problemi dopo un aggiornamento
Nonostante i migliori sforzi dei manutentori Debian, un importante aggiornamento di sistema non va sempre liscio come si spera. Le nuove versioni del software possono essere incompatibili con quelle precedenti (per esempio, il loro comportamento predefinito o il loro formato dei dati potrebbe essere cambiato). Inoltre, alcuni bug possono sfuggire, nonostante la fase di sperimentazione, che precede sempre un rilascio di Debian.
Per anticipare alcuni di questi problemi, è possibile installare il pacchetto apt-listchanges, che visualizza le informazioni sui possibili problemi all'inizio dell'aggiornamento di un pacchetto. Queste informazioni sono compilate dai manutentori dei pacchetti e inserite nel file /usr/share/doc/pacchetto/NEWS.Debian
a beneficio degli utenti. Leggere questi file (possibilmente attraverso apt-listchanges) dovrebbe aiutare ad evitare brutte sorprese.
A volte è possibile che la nuova versione di un software non funzioni affatto. Questo in genere accade se l'applicazione non è particolarmente popolare e non è stata testata a sufficienza; un aggiornamento dell'ultimo minuto può anche introdurre regressioni che vengono scoperte solo dopo il rilascio stabile. In entrambi i casi, la prima cosa da fare è dare uno sguardo al sistema di tracciamento dei bug su
https://bugs.debian.org/pacchetto
e verificare se il problema è già stato segnalato. In tal caso, verrà elencato anche prima dell'inizio dell'aggiornamento se
apt-listbugs è installato. Se non lo è, dovresti essere tu a segnalarlo con
reportbug
. Se è già noto, la segnalazione di bug ed i messaggi ad esso associati sono in genere un'eccellente fonte di informazioni:
in altri casi, gli utenti potrebbero aver trovato un modo di superare il problema e condiviso le loro conoscenze al riguardo nelle loro risposte alla segnalazione;
in altri casi ancora, un pacchetto corretto potrebbe essere già stato preparato e reso pubblico da parte del manutentore.
A seconda della gravità del bug, una nuova versione del pacchetto può essere preparata appositamente per una nuova revisione del rilascio stabile. Quando ciò accade, il pacchetto corretto viene reso disponibile nella sezione
proposed-updates
dei mirror Debian (vedere
Sezione 6.1.2.3, «Aggiornamenti proposti»). La voce corrispondente può quindi essere aggiunta temporaneamente al file
sources.list
ed i pacchetti aggiornati possono essere installati con
apt
o
aptitude
.
A volte il pacchetto corretto non è ancora disponibile in questa sezione perché è in attesa di una validazione da parte dei gestori (Stable Release Manager). In tal caso, si può verificare sulla loro pagina web. I pacchetti elencati in quella pagina non sono ancora disponibili, ma almeno sappiamo che il processo di pubblicazione è in corso.
6.7.3. Pulizia dopo un aggiornamento
APT normalmente assicura un aggiornamento pulito, scaricando dipendenze nuove ed aggiornando o rimuovendo i pacchetti in conflitto. Ma pur essendo un eccellente strumento, non può gestire tutti i compiti che utenti ed amministratori devono affrontare dopo un aggiornamento, in quanto richiedono una decisione umana.
6.7.3.1. Pacchetti rimossi dall'archivio Debian
A volte, gli ftpmaster di Debian rimuovono dei pacchetti dall'archivio Debian perché contengono bug critici per il rilascio, sono stati abbandonati dal loro autore originale o dal loro manutentore oppure semplicemente hanno raggiunto la fine del loro ciclo di vita. In questo caso, una nuova versione di Debian non fornisce più il pacchetto. Per trovare tutti i pacchetti non più disponibili nella versione in uso, usare il comando apt-show-versions
:
$
apt-show-versions | grep "No available version"
Un risultato simile può essere ottenuto con aptitude search ~o
. Se i pacchetti trovati non sono più necessari, allora dovrebbero essere eliminati dal sistema, perché questi non saranno più soggetti ad aggiornamenti di bug critici o di sicurezza.
6.7.3.2. Pacchetti fittizi e di transizione
Talvolta, diventa necessario cambiare il nome di un pacchetto. In questi casi, il vecchio pacchetto è spesso mantenuto come un pacchetto (quasi) vuoto, a seconda di quello nuovo ed installando soltanto i file necessari in
/usr/share/doc/pacchetto/
. Questi pacchetti sono chiamati "fittizi" o "transitori". Se il manutentore del pacchetto in carica cambia anche la sezione del pacchetto a
oldlibs
, allora strumenti come
aptitude
,
deboprhan
o
debfoster
(vedere il riquadro
ALTERNATIVA deborphan
e debfoster
) possono individuare questi pacchetti e suggerirne la rimozione.
Sfortunatamente non c'è attualmente nessuna modalità infallibile per essere sicuri che questi pacchetti siano rimossi automaticamente o individuati dai predetti strumenti. Una modalità per verificare se il sistema abbia alcuni di questi pacchetti installati è quella di cercare tramite la descrizione dei pacchetti installati e controllare i risultati. Attenzione a non programmare la rimozione automatica dei file risultanti, perché questo metodo può fornire dei falsi positivi:
$
dpkg -l | grep ^ii | grep -i -E "(transition|dummy)"
6.7.3.3. File di configurazione vecchi o non più in uso
Se l'aggiornamento è andato a buon fine, potrebbero essere presenti alcuni file di configurazione, provenienti da dpkg (vedere
Sezione 5.2.3, «Checksum, elenco dei file di configurazione, ecc.»), ucf o dai pacchetti rimossi. Questi ultimi possono essere
eliminati usando
apt autoremove --purge
. I file di configurazione che sono stati gestiti da
dpkg o
ucf durante il processo di aggiornamento hanno lasciato alcuni elementi con un suffisso dedicato, ad esempio
.dpkg-dist
,
.dpkg-old
,
.ucf-old
. L'uso dei comandi
find
o
locate
può aiutare a rintracciarli. Se non sono più utili, possono essere cancellati.
6.7.3.4. File non appartenenti a nessun pacchetto
Le politiche di Debian impongono che i pacchetti non lascino file nel sistema quando vengono eliminati. Violare questo principio è un bug serio ed accade raramente. Se vi capita, segnalatelo; per i più curiosi, si può usare il pacchetto cruft o cruft-ng per controllare il sistema e trovare i file non posseduti da nessun pacchetto.