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. Non-Official Resources: mentors.debian.net
6.1.5. Proxy con cache per i pacchetti Debian
6.2. aptitude, apt-get, and apt Commands
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.3. Il comando apt-cache
6.4. Frontend: aptitude, synaptic
6.4.1. aptitude
6.4.2. synaptic
6.5. Controllare l'autenticità dei pacchetti
6.6. Aggiornare da una distribuzione stabile alla successiva
6.6.1. Procedura raccomandata
6.6.2. Gestire i problemi dopo un aggiornamento
6.7. Mantenere un sistema sempre aggiornato
6.8. Aggiornamenti automatici
6.8.1. Configurare dpkg
6.8.2. Configurare APT
6.8.3. Configurare debconf
6.8.4. Gestire interazioni a riga di comando
6.8.5. La combinazione miracolosa
6.9. 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 Package 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 e produce la migliore combinazione possibile di pacchetti in base a ciò che è disponibile e compatibile (secondo le dipendenze).
APT needs to be given a “list of package sources”: the file /etc/apt/sources.list will list the different repositories (or “sources”) that publish Debian packages. APT will then import the list of packages published by each of these sources. This operation is achieved by downloading Packages.xz or a variant using a different compression method (such as Packages.gz or .bz2) files (in case of a source of binary packages) and Sources.xz or a variant (in case of a source of source packages) and by analyzing their contents. When an old copy of these files is already present, APT can update it by only downloading the differences (see sidebar SUGGERIMENTO Aggiornamento incrementale).

6.1. Compilazione del file sources.list

6.1.1. Sintassi

Ogni riga attiva del file /etc/apt/sources.list contiene la descrizione di una sorgente, formata di 3 parti separate da spazi.
Il primo campo indica il tipo di sorgente:
  • «deb» per i pacchetti binari,
  • «deb-src» per i pacchetti sorgente.
The second field gives the base URL of the source (combined with the filenames present in the Packages.gz files, it must give a full and valid URL): this can consist in a Debian mirror or in any other package archive set up by a third party. The URL can start with file:// to indicate a local source installed in the system's file hierarchy, with http:// to indicate a source accessible from a web server, or with ftp:// for a source available on an FTP server. The URL can also start with cdrom: for CD-ROM/DVD-ROM/Blu-ray disc based installations, although this is less frequent, since network-based installation methods are more and more common.
La sintassi dell'ultimo campo dipende dalla struttura del repository. Nei casi più semplici basta indicare una sottodirectory (con la barra obliqua finale obbligatoria) della sorgente desiderata (spesso è un semplice «./» che indica l'assenza di una sottodirectory: i pacchetti sono allora direttamente all'URL specificato). Nella maggior parte dei casi comuni, però, i repository saranno strutturati come un mirror Debian, con più distribuzioni ciascuna con più componenti. In questi casi, indicare la distribuzione scelta (con il suo «nome in codice», per il quale vedere la lista nel riquadro COMUNITÀ Bruce Perens, leader controverso, oppure con la «suite» corrispondente: stable, testing, unstable), poi le componenti (o sezioni) da abilitare (scelte in un mirror Debian tipico tra main, contrib e non-free).
The cdrom entries describe the CD/DVD-ROMs you have. Contrary to other entries, a CD-ROM is not always available since it has to be inserted into the drive and since only one disc can be read at a time. For those reasons, these sources are managed in a slightly different way, and need to be added with the apt-cdrom program, usually executed with the add parameter. The latter will then request the disc to be inserted in the drive and will browse its contents looking for Packages files. It will use these files to update its database of available packages (this operation is usually done by the apt update command). From then on, APT can require the disc to be inserted if it needs one of its packages.

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.1. File /etc/apt/sources.list per gli utenti di Debian Stable

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

## Debian mirror

# Base repository
deb http://ftp.debian.org/debian jessie main contrib non-free
deb-src http://ftp.debian.org/debian jessie main contrib non-free

# Stable updates
deb http://ftp.debian.org/debian jessie-updates main contrib non-free
deb-src http://ftp.debian.org/debian jessie-updates main contrib non-free

# Stable backports
deb http://ftp.debian.org/debian jessie-backports main contrib non-free
deb-src http://ftp.debian.org/debian jessie-backports main contrib non-free
This file lists all sources of packages associated with the Jessie version of Debian (the current Stable as of this writing). We opted to name “jessie” explicitly instead of using the corresponding “stable“ alias (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 dal «repository base» che contiene tutti i pacchetti ma che viene aggiornato di rado (circa una volta ogni 2 mesi per un «rilascio minore»). Gli altri repository 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 di ognuno di questi repository e le regole che lo governano.
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

Gli aggiornamenti di sicurezza vengono ospitati sulla consueta rete di mirror Debian, ma in security.debian.org (su un piccolo insieme di macchine mantenute dai Debian System Administrator). Questo archivio contiene aggiornamenti di sicurezza (preparati dal Team Debian per la sicurezza o dai manutentori dei pacchetti) per la distribuzione Stable.
Il server può anche ospitare aggiornamenti di sicurezza per Testing, ma ciò non accade molto spesso dato che questi aggiornamenti tendono a raggiungere Testing attraverso il regolare flusso di aggiornamenti che proviene da Unstable.

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.
This repository will typically contain fixes for critical bugs which could not be fixed before release or which have been introduced by subsequent updates. Depending on the urgency, it can also contain updates for packages that have to evolve over time… like spamassassin's spam detection rules, clamav's virus database, or the daylight-saving time rules of all timezones (tzdata).
In pratica questo repository è un sottoinsieme del repository proposed-updates, accuratamente selezionato dai Stable Release Manager.

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 jessie-proposed-updates alias which is both more explicit and more consistent since wheezy-proposed-updates also exists (for the Oldstable updates):
deb http://ftp.debian.org/debian jessie-proposed-updates main contrib non-free

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 Stable (che è modificata solo per risolvere i problemi più critici, come quelli di sicurezza). Dal momento che le distribuzioni Testing e Unstable possono essere più rischiose, a volte i manutentori di pacchetti offrono le versioni ricompilate per Stable delle applicazioni recenti, il che ha il vantaggio di limitare la potenziale instabilità ad un esiguo numero di pacchetti selezionati.
Il repository stable-backports è ora disponibile sui consueti mirror Debian. I backport per Squeeze però sono ancora ospitati su un server dedicato backports.debian.org) e richiedono la seguente voce in sources.list:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
I backport da stable-backports sono sempre creati dai pacchetti disponibili in Testing. Ciò assicura che tutti i backport installati siano aggiornabili alla corrispondente versione stabile, una volta che sia disponibile il successivo rilascio stabile di Debian.
Anche se questo repository fornisce versioni più recenti dei pacchetti, APT non le installa a meno che non venga esplicitamente istruito per farlo (o almeno che non lo si abbia già fatto per una versione precedente dello specifico backport in questione):
$ sudo apt-get install package/jessie-backports
$ sudo apt-get install -t jessie-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.2. File /etc/apt/sources.list per gli utenti di Debian Testing/Unstable

# Unstable
deb http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free

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

# Stable
deb http://ftp.debian.org/debian stable main contrib non-free
deb-src http://ftp.debian.org/debian stable main contrib non-free

# Aggiornamenti di sicurezza
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free
Con questo file sources.list, APT installerà i pacchetti da 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 distribuzione (molto probabilmente Testing in questo caso).
Ci sono buone ragioni per includere tutti questi repository, 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 hanno la possibilità di retrocedere pacchetti alla loro versione in Testing (che si suppone funzionante).
L'inclusione di Stable è più discussa, ma spesso dà accesso ad alcuni pacchetti che sono stati rimossi dalle versioni di sviluppo. Assicura inoltre di ottenere i più recenti aggiornamenti per i pacchetti che non sono stati modificati dall'ultimo rilascio stabile.

6.1.3.1. I repository Experimental

The archive of Experimental packages is present on all Debian mirrors, and contains packages which are not in the Unstable version yet because of their substandard quality — they are often software development versions or pre-versions (alpha, beta, release candidate…). A package can also be sent there after undergoing subsequent changes which can generate problems. The maintainer then tries to uncover them with help from advanced users who can handle important issues. After this first stage, the package is moved into Unstable, where it reaches a much larger audience and where it will be tested in much more detail.
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 http://ftp.debian.org/debian experimental main contrib non-free

6.1.4. Non-Official Resources: mentors.debian.net

There are numerous non-official sources of Debian packages set up by advanced users who have recompiled some software (Ubuntu made this popular with their Personal Package Archive service), by programmers who make their creation available to all, and even by Debian developers who offer pre-versions of their package online.
The mentors.debian.net site is interesting (although it only provides source packages), since it gathers packages created by candidates to the status of official Debian developer or by volunteers who wish to create Debian packages without going through that process of integration. These packages are made available without any guarantee regarding their quality; make sure that you check their origin and integrity and then test them before you consider using them in production.
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 da un pacchetto di cui non si conosce la provenienza e che non è ospitato su un server ufficiale Debian: valutare il grado di fiducia che si può riporre nel creatore, e controllare l'integrità del pacchetto.

6.1.5. 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   http://ftp.debian.org/debian
security http://security.debian.org
approx viene eseguito in modo predefinito sulla porta 9999 usando inetd (vedere la Sezione 9.6, «Il super-server inetd») e richiede che gli utenti modifichino i propri file sources.list in modo che puntino al server approx:
# Sample sources.list pointing to a local approx server
deb http://apt.falcot.com:9999/security jessie/updates main contrib non-free
deb http://apt.falcot.com:9999/debian jessie main contrib non-free