Product SiteDocumentation Site

Capitolo 6. Manutenzione ed aggiornamento: gli strumenti APT

6.1. Compilazione del file sources.list
6.1.1. Sintassi
6.1.2. Repository per gli utenti di Stable
6.1.3. Repository per gli utenti di Testing/Unstable
6.1.4. Utilizza mirror alternativi
6.1.5. Risorse Non Ufficiali: mentors.debian.net
6.1.6. Proxy con cache per i pacchetti Debian
6.2. I Comandi aptitude, apt-get, e apt
6.2.1. Inizializzazione
6.2.2. Installazione e rimozione
6.2.3. Aggiornamento del sistema
6.2.4. Opzioni di configurazione
6.2.5. Gestire le priorità dei pacchetti
6.2.6. Lavorare con più distribuzioni
6.2.7. Tenere traccia dei pacchetti installati automaticamente
6.2.8. APT Pattern
6.3. Il comando apt-cache
6.3.1. Il comando apt-cache policy
6.4. Il comando apt-file
6.5. Frontend: aptitude, synaptic
6.5.1. aptitude
6.5.2. synaptic
6.6. Controllare l'autenticità dei pacchetti
6.7. Aggiornare da una distribuzione stabile alla successiva
6.7.1. Procedura raccomandata
6.7.2. Gestire i problemi dopo un aggiornamento
6.7.3. Pulizia dopo un aggiornamento
6.8. Mantenere un sistema sempre aggiornato
6.9. Aggiornamenti automatici
6.9.1. Configurare dpkg
6.9.2. Configurare APT
6.9.3. Configurare debconf
6.9.4. Gestire interazioni a riga di comando
6.9.5. La combinazione miracolosa
6.10. Ricercare pacchetti
Ciò che rende così popolare Debian tra gli amministratori è la facilità con cui il software può essere installato e la facilità con cui l'intero sistema può essere aggiornato. Questo vantaggio è dovuto in gran parte al programma APT, che gli amministratori di Falcot Corp hanno studiato con entusiasmo.
APT è l'abbreviazione di Advanced Packaging Tool (Strumento avanzato per i pacchetti). Ciò che rende questo programma "avanzato" è il suo approccio ai pacchetti. Non li valuta singolarmente ma li considera nel loro insieme, producendo la migliore combinazione possibile in base a ciò che è disponibile e compatibile ed in funzione delle dipendenze.
APT ha bisogno di ricevere una "lista di sorgenti dei pacchetti (repository)": il file /etc/apt/sources.list elencherà i diversi repository che pubblicano i pacchetti Debian. APT importerà la lista dei pacchetti pubblicati da ciascuna di queste fonti. Questo risultato si ottiene scaricando i file Packages.xz o una variante come Packages.gz o .bz2 (che usa un diverso metodo di compressione) nel caso di una fonte di pacchetti binari e analizzando il loro contenuto. Nel caso di un'origine di pacchetti sorgente, APT scarica i file Sources.xz o una variante che utilizza un metodo di compressione diverso. Quando una vecchia copia di questi file è già presente, APT può aggiornarla scaricando solo le differenze (vedere SUGGERIMENTO Aggiornamento incrementale).

6.1. Compilazione del file sources.list

6.1.1. Sintassi

Ogni linea attiva nel file /etc/apt/sources.list rappresenta una sorgente di pacchetti (repository) ed è composta da almeno tre parti separate da spazi. Per una descrizione completa del formato del file e delle composizioni accettate, vedere sources.list(5).

Esempio 6.1. Esempio di formato voce in /etc/apt/sources.list

deb url distribuzione componente1 componente2 componente3 [..] componenteX
deb-src url distribuzione componente1 componente2 componente3 [..] componenteX
Il primo campo indica il tipo di sorgente:
deb
sorgente pacchetti (repository) di pacchetti binari
deb-src
sorgente pacchetti (repository) di pacchetti sorgente
Il secondo campo fornisce l'URL di base del sorgente. Combinato con i nomi dei file presenti all'interno di Packages.xz, deve dare un URL completo e valido. Questo può essere composta da un mirror Debian od un qualsiasi altro archivio di pacchetti creato da terzi. L'URL può iniziare con file:// per indicare una risorsa locale installata nella gerarchia dei file di sistema, con http:// o https:// per indicare una risorsa accessibile su un server web oppure con ftp:// o ftps:// per una risorsa disponibile su un server FTP. L'URL può anche iniziare con cdrom: per installazioni basate su dischi CD-ROM/DVD/Blu-ray, sebbene meno frequenti, poichè le installazione di rete sono sempre più comuni. Altri metodi come ssh:// o tor+http(s):// sono supportati e descritti in sources.list(5) o nella rispettiva documentazione del pacchetto apt-transport-metodo.
The syntax of the last field depends on the structure of the repository. In the simplest case, you can simply indicate a subdirectory (with a required trailing slash) of the desired source. This is often a simple “./” which refers to the absence of a subdirectory. The packages are then directly at the specified URL. But in most common cases, the repositories will be structured like a Debian mirror, with multiple distributions, each having multiple components. In those cases, name the chosen distribution by its “codename” — see the list in sidebar COMUNITÀ Bruce Perens, un leader controverso — or by the corresponding “suite” (oldoldstable, oldstable, stable, testing, unstable) and then the components to enable. A typical Debian mirror provides the components main, contrib, and non-free.
Le voci cdrom descrivono i CD/DVD-ROM che si possiedono. Contrariamente alle altre voci un CD-ROM non è sempre disponibile in quanto deve essere inserito nell'unità e dato che può essere letto solo un disco alla volta. Per questi motivi, queste sorgenti sono gestite in maniera leggermente differente e devono essere aggiunte con il programma apt-cdrom, solitamente eseguito con il parametro add. Quest'ultimo chiederà di inserire il disco nel lettore e cercherà nel contenuto alla ricerca dei file Packages. Questi file saranno usati per aggiornare il database dei pacchetti disponibili (questa operazione di norma è fatta dal comando apt update). Da quel momento in poi, APT può richiedere di inserire il disco se avrà bisogno di uno dei suoi pacchetti.

6.1.2. Repository per gli utenti di Stable

Questo è un sources.list per un sistema che utilizza la versione Stable di Debian:

Esempio 6.2. File /etc/apt/sources.list per gli utenti di Debian Stable

# Security updates
deb http://security.debian.org/ bookworm-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/ bookworm-security main contrib non-free non-free-firmware

## Debian mirror

# Base repository
deb https://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian bookworm main contrib non-free non-free-firmware

# Stable updates
deb https://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

# Stable backports
deb https://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware
This file lists all sources of packages associated with the Bookworm version of Debian (the current Stable suite as of this writing). In the example above, we opted to name “bookworm” explicitly instead of using the corresponding “stable“ aliases (stable, stable-updates, stable-backports) because we don't want to have the underlying distribution changed outside of our control when the next stable release comes out.
La maggior parte di pacchetti proviene dall'"archivio di base", che contiene tutti i pacchetti ma che viene aggiornato di rado (circa una volta ogni 2 mesi per un "rilascio minore"). Gli altri archivi sono parziali (non contengono tutti i pacchetti) e possono ospitare aggiornamenti (pacchetti con versioni più recenti) che APT può installare. Le sezioni seguenti spiegheranno lo scopo e le regole che disciplinano ciascuno di questi archivi.
Notare che, quando la versione desiderata di un pacchetto è disponibile su diversi repository, verrà usato quello elencato per primo nel file sources.list. Per questa ragione, le sorgenti non ufficiali vengono solitamente aggiunte alla fine del file.
Notare anche che la maggior parte di ciò che questa sezione dice riguardo a Stable vale allo stesso modo per Oldstable, dato che quest'ultima non è altro che una più vecchia versione Stable che viene mantenuta in parallelo.

6.1.2.1. Aggiornamenti di sicurezza

Debian prende sul serio la sicurezza. Le vulnerabilità software note in Debian vengono monitorate nel Security Bug Tracker e di solito vengono corrette in un lasso di tempo ragionevole. Gli aggiornamenti di sicurezza non vengono ospitati sulla solita rete di mirror Debian ma in security.debian.org (un piccolo insieme di macchine mantenute dai Debian System Administrator). Questo archivio contiene aggiornamenti di sicurezza preparati dal Team di Sicurezza Debian e/o dai manutentori di pacchetti per la distribuzione Stable e Oldstable.
Il server può anche ospitare aggiornamenti di sicurezza per Testing, ma ciò non accade molto spesso dato che questi aggiornamenti tendono a raggiungere tale suite attraverso il regolare flusso di aggiornamenti che proviene da Unstable.
Per problemi gravi, il team di sicurezza rilascia un Debian Security Advisory (DSA) e lo annuncia insieme all'aggiornamento della sicurezza sulla mailing list (archive).

6.1.2.2. Aggiornamenti di Stable

Gli aggiornamenti di Stable non sono relativi alla sicurezza, ma vengono considerati sufficientemente importanti da essere passati agli utenti prima del successivo rilascio minore di stable.
Questo repository contiene tipicamente correzioni di bug critici e gravi che non è stato possibile risolvere prima del rilascio o che sono stati introdotti da aggiornamenti successivi. A seconda dell'urgenza, può anche contenere aggiornamenti per pacchetti che devono evolvere nel tempo, come le regole di rilevamento dello spam di spamassassin, il database dei virus di clamav, le regole dell'ora legale di tutti i fusi orari (tzdata), la versione ESR di Firefox (firefox-esr) o i portachiavi crittografici come debian-archive-keyring.
In pratica, questo repository è un sottoinsieme del repository proposed-updates, accuratamente selezionato dal team Stable Release Manager. Tutti gli aggiornamenti sono annunciati nella mailing list (archive) e saranno comunque inclusi nel successivo aggiornamento minore della Stable.

6.1.2.3. Aggiornamenti proposti

Una volta pubblicata, la distribuzione Stable viene aggiornata solo ogni 2 mesi circa. Il repository proposed-updates è il luogo in cui gli aggiornamenti pianificati vengono preparati (sotto la supervisione dei Stable Release Manager).
Gli aggiornamenti di sicurezza e quelli di stable documentati nelle sezioni precedenti sono sempre inclusi in questo repository, ma c'è anche di più, perché i manutentori di pacchetti hanno anche l'opportunità di risolvere importanti bug che non meritano un rilascio immediato.
Anyone can use this repository to test those updates before their official publication. The extract below uses the bookworm-proposed-updates alias which is both more explicit and more consistent since bullseye-proposed-updates also exists (for the Oldstable updates):
deb https://deb.debian.org/debian bookworm-proposed-updates main contrib non-free non-free-firmware

6.1.2.4. Backport per Stable

Il repository stable-backports ospita i "backport di pacchetti". Questa espressione si riferisce ad un pacchetto di un qualche software recente che è stato ricompilato per una distribuzione più vecchia, generalmente per Stable.
Quando la distribuzione diventa un po' datata, numerosi progetti software hanno rilasciato nuove versioni che non sono integrate nell'attuale suite Stable (che è modificata solo per risolvere i problemi più critici, come quelli di sicurezza). Dal momento che le suite Testing e Unstable possono essere più rischiose, i manutentori dei pacchetti, a volte, offrono volontariamente ricompilazioni di applicazioni software recenti per Stable, che offre il vantaggio ad utenti e amministratori di sistema di limitare la potenziale instabilità di un piccolo numero di pacchetti scelti. La pagina https://backports.debian.org fornisce maggiori informazioni.
I backport da stable-backports sono creati solo per i pacchetti disponibili in Testing. Ciò assicura che tutti i backport installati saranno aggiornabili alla corrispondente versione stabile, una volta che sarà disponibile il successivo rilascio stabile di Debian.
Anche se questo repository fornisce versioni più recenti dei pacchetti, APT non le installerà a meno che non venga esplicitamente istruito per farlo (a meno che non lo si abbia già fatto per una versione precedente dello specifico backport in questione):
$ sudo apt-get install package/bookworm-backports
$ sudo apt-get install -t bookworm-backports package

6.1.3. Repository per gli utenti di Testing/Unstable

Questo è un file sources.list standard per un sistema che utilizza la versione Testing o Unstable di Debian:

Esempio 6.3. File /etc/apt/sources.list per gli utenti di Debian Testing/Unstable

# Unstable
deb https://deb.debian.org/debian unstable main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian unstable main contrib non-free non-free-firmware

# Testing
deb https://deb.debian.org/debian testing main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian testing main contrib non-free non-free-firmware

# Testing security updates
deb http://security.debian.org/ testing-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/ testing-security main contrib non-free non-free-firmware

# Stable
deb https://deb.debian.org/debian stable main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian stable main contrib non-free non-free-firmware

# Stable security updates
deb http://security.debian.org/ stable-security main contrib non-free non-free-firmware
deb-src http://security.debian.org/ stable-security main contrib non-free non-free-firmware
Con questo file sources.list, APT installerà i pacchetti dalla suite Unstable. Se questo non è ciò che si desidera, usare l'impostazione APT::Default-Release (vedere la Sezione 6.2.3, «Aggiornamento del sistema») per indicare ad APT di scegliere i pacchetti da un'altra suite (in questo caso, molto probabilmente, Testing .
Ci sono buone ragioni per includere tutti questi archivi, anche se uno solo dovrebbe essere sufficiente. Gli utenti di Testing apprezzeranno la possibilità di scegliere individualmente un particolare pacchetto da Unstable quando la versione in Testing è affetta da un bug noioso. D'altro canto, gli utenti di Unstable colpiti da regressioni inaspettate avranno la possibilità di fare il downgrade dei pacchetti alla versione in Testing (che si suppone sia funzionante).
The inclusion of Stable is more debatable, but it often provides access to some packages, which have been removed from the development versions. It also ensures that you get the latest updates for packages, which have not been modified since the last stable release.

6.1.3.1. I repository Experimental

L'archivio dei pacchetti Experimental è presente in tutti i mirror Debian, e contiene i pacchetti che non sono ancora nella distribuzione Unstable a causa della loro qualità inferiore agli standard — spesso sono versioni di sviluppo o pre-versioni (alfa, beta, candidata al rilascio...). Un pacchetto può anche essere inserito lì dopo aver subito modifiche che possono generare problemi. Il manutentore quindi cerca di scoprirli grazie all'aiuto di utenti esperti in grado di gestire problemi importanti. Dopo questa prima fase, il pacchetto viene spostato in Unstable, dove raggiunge un pubblico molto più grande e dove verrà testato in modo molto più dettagliato.
Experimental è generalmente usata dagli utenti a cui non importa rovinare il proprio sistema e ripararlo. Questa distribuzione offre la possibilità di importare un pacchetto che un utente vuol provare o utilizzare in caso di necessità. Questo è esattamente come Debian lo tratta, in quanto aggiungerlo nel file sources.list di APT non porta all'uso sistematico dei suoi pacchetti. La riga da aggiungere è:
deb https://deb.debian.org/debian experimental main contrib non-free non-free-firmware

6.1.4. Utilizza mirror alternativi

Gli esempi di sources.list in questo capitolo fanno riferimento ai repository dei pacchetti ospitati su deb.debian.org. Questi URL ti reindirizzano a server a te vicini gestiti da Content Delivery Network (CDN) il cui ruolo principale è quello di memorizzare più copie dei file in tutto il mondo e renderli disponibili agli utenti il più velocemente possibile. Le società CDN con cui Debian lavora sono partner di Debian ed offrono, gratuitamente, i loro servizi a Debian. Sebbene nessuno di questi server sia sotto il controllo diretto di Debian, poichè l'intero archivio è validato da firme GPG, lo rende un non problema.
Gli utenti più esigenti, non soddisfatti delle prestazioni di deb.debian.org, possono provare a cercare un mirror migliore nell'elenco dei mirror ufficiali:
Ma quando non sai quale mirror è il migliore per te, questa lista non è di grande aiuto. Fortunatamente, Debian mantiene le voci DNS nel formato ftp. country-code.debian.org (ad esempio ftp.us.debian.org per gli Stati Uniti, ftp.fr.debian.org per la Francia, ecc.) che coprono molti paesi e che puntano a uno (o più) dei migliori mirror disponibili all'interno di quel paese.
In alternativa a deb.debian.org, c'era httpredir.debian.org. Questo servizio identificava un mirror vicino a te (tra la lista dei mirror ufficiali, usando principalmente il GeoIP) e reindirizzava le richieste di APT a quel mirror. Questo servizio è stato deprecato a causa di problemi di affidabilità e ora httpredir.debian.org fornisce lo stesso servizio basato su CDN di deb.debian.org.

6.1.5. Risorse Non Ufficiali: mentors.debian.net

Ci sono numerose fonti, non ufficiali, di pacchetti Debian create da utenti esperti che hanno ricompilato alcuni software — Ubuntu ha reso questo sistema popolare con il suo servizio Personal Package Archive (PPA) — che i programmatori mettono a disposizione di tutti, e anche da parte di sviluppatori Debian che offrono, online, anteprime dei loro pacchetti.
Il sito mentors.debian.net è interessante (anche se fornisce solo pacchetti sorgente), dal momento che raccoglie pacchetti creati dai candidati allo status di sviluppatore ufficiale Debian o da volontari che vogliono creare pacchetti Debian senza passare attraverso quel processo di integrazione. Questi pacchetti sono messi a disposizione senza alcuna garanzia sulla loro qualità; assicurarsi di verificare la loro origine ed integrità, quindi testarli prima di considerare il loro utilizzo in produzione.
Installare un pacchetto significa dare i privilegi di root al suo creatore, perché può decidere i contenuti degli script di inizializzazione i quali sono lanciati sotto tale identità. I pacchetti Debian ufficiali sono creati da volontari che sono stati selezionati e vagliati e che possono mettere un sigillo ai loro pacchetti così che la loro origine e integrità possa essere controllata.
In generale, diffidare di un pacchetto di cui non si conosce l'origine e che non è ospitato su uno dei server Ufficiali Debian: valutare fino a che punto è possibile fidarsi del creatore e verificare l'integrità del pacchetto.

6.1.6. Proxy con cache per i pacchetti Debian

Quando un'intera rete di macchine è configurata in moda da usare lo stesso server remoto per scaricare gli stessi pacchetti aggiornati, qualsiasi amministratore sa che sarebbe vantaggioso avere un proxy intermedio che agisce da cache locale per la rete (vedere il riquadro VOCABOLARIO Cache).
Si può configurare APT in modo che usi un proxy "standard" (vedere la Sezione 6.2.4, «Opzioni di configurazione» per la parte riguardante APT e la Sezione 11.6, «Proxy HTTP/FTP» per la parte proxy), ma l'ecosistema Debian offre opzioni migliori per risolvere il problema. Il software dedicato presentato in questa sezione è più intelligente di un semplice proxy con cache perché può fare affidamento sulla struttura specifica dei repository APT (per esempio sa quando singoli file sono obsoleti oppure no, e perciò regola il tempo per il quale vengono conservati).
apt-cacher e apt-cacher-ng funzionano come i normali server proxy con cache. Il file sources.list di APT resta invariato, ma APT viene configurato in modo da usarli come proxy per le richieste in uscita.
approx, invece, agisce come un server HTTP che fa da "mirror" per qualsiasi numero di repository remoti nei suoi URL di più alto livello. La mappatura tra queste directory di più alto livello e gli URL remoti dei repository viene memorizzata in /etc/approx/approx.conf:
# <name>   <repository-base-url>
debian     https://deb.debian.org/debian
security   http://security.debian.org/debian-security
approx viene eseguito in modo predefinito sulla porta 9999 tramite un socket systemd e richiede che gli utenti modifichino il proprio file sources.list in modo che punti al server approx:
# Sample sources.list pointing to a local approx server
deb http://localhost:9999/security bookworm-security main contrib non-free non-free-firmware
deb http://localhost:9999/debian   bookworm main contrib non-free non-free-firmware