This is an old revision of the document!
Table of Contents
Debian Upgrade
Aggiornamento da Debian 9 Stretch a 10 Buster
Anzitutto è opportuno allineare l'installazione all'ultima versione rilasciata di Buster. Poiché è installata la versione 10.9 ma è disponibile la 10.10 e la suite Buster è passata dalla condizione di stable o oldstable, il gestore di pacchetti segnala il seguente warning, impedendo l'aggiornamento:
N: Repository 'http://ftp.debian.org/debian buster InRelease' changed its 'Version' value from '10.9' to '10.10' E: Repository 'http://ftp.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
Una soluzione da riga di comando, da eseguire una tantum è la seguente:
apt-get update --allow-releaseinfo-change
Con questa forzatura è possibile procedere all'update e upgrade con il client preferito, ad esempio dselect
oppure apt-get
come in questo esempio:
apt-get update apt-get upgrade
Conflitto fra repository diversi
Può capitare di voler aggiungere un repository alternativo, ad esempio il famoso Deb Multimedia. Tale repository viene aggiunto nel file /etc/apt/sources.list, l'ordine in cui compare non fa differenza perché la priorità di installazione viene dal numero di versione.
deb https://www.deb-multimedia.org bullseye main non-free deb https://www.deb-multimedia.org bullseye-backports main
In particolari circostanze si potrebbe però preferire la versione fornita ufficialmente da Debian, per ottenere questo risultato si elencano le versioni disponibili nei vari repository:
apt-cache showpkg <package>
e poi si forza l'installazione della versione esatta:
apt-get install --reinstall <package>=4.0.0-1
Per forzare invece la scelta di un pacchetto dai packports, bisogna specificare l'opzione -t:
apt-get -t bullseye-backports install <package>
Preferenze di installazione
In generale l'ordine in cui le source vengono elencate in /etc/apt/sources.list non è importante. Quello che conta è la priorità assegnata ad ognuna di esse. In generale le priorità delle sorgenti codename, codename-updates, codename-backports e codename sono predefinite in modo opportuno (vedi avanti).
- Nel file /etc/apt/sources.list viene indicato una source (repository) per ogni riga; ogni source ha una priorità predefinita.
- I pacchetti presenti in security e in updates vengono installati automaticamente perché hanno una versione superiore a quelli forniti dalla distribuzione standard (hanno la stessa priorità, ma versione superiore).
- I pacchetti presenti in backports non vengono installati automaticamente perché hanno una priorità più bassa. È possibile installare un singolo pacchetto dai backports con
apt -t bullseye-backports install nomepacchetto
. L'impostazione rimane memorizzata ed ogni aggiornamento successivo agirà di conseguenza.Come vedere i pinning attivi e come disattivarli?
- A parità di versione e di priorità viene installato il pacchetto dal repository elencato per primo. È l'unico caso in cui l'ordine conta, ma in generale non dovrebbe mai accadere.
- In generale anche i repository alternativi hanno la stessa priorità della distribuzione ufficiale e vengono preferiti tramite numero di versione superiore o pinning esplicito.
Per vedere la policy con cui viene scelta la source da cui installare un pacchetto si usa il comando:
apt-cache policy
Per ogni source si hanno più sezioni relative alle varie componenti elencate (main, non-free, contrib, …); inoltre se è attivo il multiarch si hanno altre sezioni relative alle architetture attivate (i386, amd64, …). Ecco un estratto dell'output:
500 http://deb.debian.org/debian-security bullseye-security/main amd64 Packages release v=11,o=Debian,a=stable-security,n=bullseye-security,l=Debian-Security,c=main,b=amd64 origin deb.debian.org 500 http://deb.debian.org/debian bullseye-updates/main amd64 Packages release v=11-updates,o=Debian,a=stable-updates,n=bullseye-updates,l=Debian,c=main,b=amd64 origin deb.debian.org 500 http://deb.debian.org/debian bullseye/main amd64 Packages release v=11.0,o=Debian,a=stable,n=bullseye,l=Debian,c=main,b=amd64 origin deb.debian.org 100 https://www.deb-multimedia.org bullseye-backports/main amd64 Packages release v=11,o=Unofficial Multimedia Packages,a=stable-backports,n=bullseye-backports,l=Unofficial Multimedia Packages,c=main,b=amd64 origin www.deb-multimedia.org 500 https://www.deb-multimedia.org bullseye/main amd64 Packages release v=11,o=Unofficial Multimedia Packages,a=stable,n=bullseye,l=Unofficial Multimedia Packages,c=main,b=amd64 origin www.deb-multimedia.org
Nella prima colonna viene mostrata la priorità di ciascuna source: numeri più grandi corrispondono ad una maggiore priorità; la priorità predefinita è 500.
Come si vede i pacchetti bullseye-security hanno la stessa priorità di quelli nella distribuzione ufficiale bullseye, quindi vengono installati perché hanno una versione maggiore. Stesso discorso vale per i bullseye-updates: hanno la stessa priorità e quindi dovranno avere una versione maggiore. Invece i backports hanno una priorità più bassa (100) e quindi non verranno mai installati automaticamente, sarà necessario fare un pinning manuale.
A parità di priorità della source verrà selezionato il pacchetto con numero di versione superiore, questo ad esempio è il modo in cui viene preferito un pacchetto da Deb Multimedia piuttosto che da Debian ufficiale.
Web References
Aggiornamento di vecchi backports
Può accadere che alcuni pacchetti installati dai backports, dagli updates oppure dai security della vecchia distribuzione, non vengano aggiornati automaticamente alla nuova stabile. Con questo comando si dovrebbe poter scoprire ciò che è stato installato dalla Debian 10 Backports:
dpkg --list | grep '~deb10u'
In generale dovrebbe essere sufficiente elencare in sources.list tutte le distribuzioni aggiuntive (updates
, security
, ecc.) ed effettuare l'aggiornamento. È possibile chiedere quali saranno i pacchetti aggiornati con:
apt update apt list --upgradable
Raramente si dovrà ricorrere all'aggiornamento manuale come indicato al paragrafo precedente.
Rimozione pacchetti non più necessari e obsoleti
Al termine dell'aggiornamento conviene verificare ad esempio con dselect
quali sono i pacchetti considerati obsoleti, e quindi disinstallarli.
Inoltre dovrebbe essere possibile eliminare tutti i pacchetti installati per dipendenze precedenti, che non sono più necessari:
apt autoremove
Infine si possono cercare pacchetti marcati per essere disinstallati, per rimuovere anche loro:
dpkg --get-selections | egrep -v '\binstall\b'