Translation(s): English - Italiano
Apt è configurato da diverse risorse, incluse:
sourceslist - liste di repository software (source, fonti)
SecureApt - chiavi per l'autenticazione sicura dei pacchetti
apt_preferences e apt.conf descritti in seguito
Opzioni di esecuzione/parametri della riga di comando degli strumenti di gestione dei pacchetti
Contents
apt_preferences (pinning di APT)
Debian Reference - Gestione dei pacchetti Debian - 2.7.3. Modificare la versione candidata
man 5 apt_preferences
man 5 apt.conf
man 8 apt-config
Quando sono abilitati più repository Apt, un pacchetto può essere presente in diversi. Per sapere quale deve essere installato, Apt assegnapriorità ai pacchetti. Quella predefinita è 500.
- Se i pacchetti hanno la stessa priorità, vince il pacchetto con il più alto numero di versione (il più recente).
- Se i pacchetti hanno priorità diverse, vince quella con la priorità più alta.
Il Pinning permette di cambiare priorità per solo alcuni pacchetti/repository, in modo che si possa:
preferire un pacchetto Debian Backports rispetto a uno di Debian Stable: in modo predefinito i repository Debian backports hanno una priorità più bassa di stabile (100). Non vengono installati o aggiornati a meno che non siano esplicitamente configurati per farlo (o il pacchetto esista solamente in backports).
permettere solo alcuni pacchetti da un repository di terze parti e ignorare gli altri anche se più recenti: si può voler aggiungere repository sperimentali/unstable/di terze parti con software aggiuntivo o più recente, ma permettere l'installazione solo di alcuni dei pacchetti.
- forzare la regressione di un pacchetto (non raccomandato).
Con alcune eccezioni (Debian Backports) non è raccomandato mescolare repository o rilasci a meno che non siano preparati specialmente. Vedere Non rompere Debian. Non abilitare repository Debian Unstable su Debian Stable. Quando si usa il pinning è necessario assicurarsi per conto proprio della compatibilità tra i pacchetti dato che Debian non la garantisce.
Per visualizzare la priorità di un pacchetto specifico, usare apt-cache policy nomepacchetto:
$ apt-cache policy claws-mail claws-mail: Installed : (none) Candidate : 3.14.1-3+b1 Version table : 3.17.1-1~bpo9+1 100 100 https://deb.debian.org/debian stretch-backports/main amd64 Packages 3.14.1-3+b1 500 500 https://deb.debian.org/debian stretch/main amd64 Package
Nell'esempio sopra il pacchetto che verrebbe installato (Candidate) sarebbe il più vecchio, la versione 3.14 da stretch/main. stretch-backports/main ha una versione più nuova 3.17, ma con una priorità più bassa (100 invece di 500 di stretch).
Per visualizzare la priorità globale di ogni fonte di Apt (repository):
$ apt-cache policy Package files: # Il repository predefinito https://wiki.debian.org/DebianStable con priorità 500 500 https://deb.debian.org/debian stable/main amd64 Packages o=Debian,n=stable,l=Debian,c=main,b=amd64 origin deb.debian.org # Il repository per le https://wiki.debian.org/PointReleases Debian (risoluzione di problemi di sicurezza e bug gravi ~ ogni 2 mesi) 500 https://deb.debian.org/debian stable-updates/main amd64 Packages release o=Debian,a=oldstable-updates,n=stable-updates,l=Debian,c=main,b=amd64 origin deb.debian.org # Il repository https://wiki.debian.org/DebianSecurity con tempo di risposta breve per risoluzione di problemi di sicurezza 500 http://security.debian.org stable/updates/main amd64 Packages release v=9,o=Debian,a=oldstable,n=stable,l=Debian-Security,c=main,b=amd64 origin security.debian.org # Il repository https://wiki.debian.org/DebianBackports che ha una priorità di 100 100 https://deb.debian.org/debian stable-backports/main amd64 Packages release o=Debian Backports,a=stable-backports,n=stable-backports,l=Debian Backports,c=main,b=amd64 origin deb.debian.org # La priorità dei pacchetti installati localmente 100 /var/lib/dpkg/status release a=now
Forzare l'installazione di un pacchetto da un repository
Per dire ad Apt di installare un pacchetto da stretch-backports, anche se il pacchetto ha priorità bassa:
apt install -t stretch-backports claws-mail
Notare che il pacchetto non verrà automaticamente aggiornato in caso di esecuzione di un aggiornamento con Apt.
Preferire sempre i pacchetti da un repository
Per preferire sempre i pacchetti da stretch-backports (e perciò permettere gli aggiornamenti con Apt), impostare una priorità più alta per il pacchetto proveniente dal rilascio stretch-backports. Modificare il file /etc/apt/preferences.d/99debian-backports (o crearlo):
Package: claws-mail Pin: release a=stretch-backports Pin-Priority: 900
Ora se si installa il pacchetto claws-mail si installerà la versione da stretch-backports. L'esecuzione di un aggiornamento di Apt prenderà automaticamente le versioni più nuove da stable-backports. Eseguendo di nuovo apt-cache policy si può vedere:
Pinned packages: claws-mail -> 3.17.1-1~bpo9+1 with priority 900
Installazione impedita o selettiva da repository di terze parti
Per evitare l'installazione di pacchetti più nuovi da un repository di terze parti (Non rompere Debian), anche se hanno uguale priorità, modificare il file /etc/apt/preferences.d/99mio-repository-personalizzato in base all'URL per origin:
# Non preferire mai pacchetti dal repository mio-repository-personalizzato Package: * Pin: origin mio.repository.personalizzato.url Pin-Priority: 1 # Permettere l'aggiornamento solo di mio-software-specifico da mio-repository-personalizzato Package: mio-software-specifico Pin: origin mio.repository.personalizzato.url Pin-Priority: 500
o in base al nome del repository:
# Non preferire mai pacchetti dal repository mio-repository-personalizzato Package: * Pin: release o=nome-mio-repository-personalizzato Pin-Priority: 1 # Permettere l'aggiornamento solo di mio-software-specifico da mio-repository-personalizzato Package: mio-software-specifico Pin: release o=nome-mio-repository-personalizzato Pin-Priority: 500
Il modo in cui si nominano i file in /etc/apt/preferences.d/ è libero ma l'ultimo in ordine alfabetico ha la precedenza.
Il * dopo Package: non è un carattere jolly, ma un caso speciale che significa "tutto". I caratteri jolly NON sono supportati. Tuttavia vengono accettati caratteri jolly alla fine delle versioni (2.6* corrisponde sia a 2.6 sia a 2.6.18).
Altre note sul pinning
In aggiunta a usare origin, si può fare il pinning di pacchetti sulla base di altre variabili. apt-cache policy mostra le altre variabili che possono essere utilizzate come chiave per il Pin::
1 https://deb.debian.org/debian stretch-backports/non-free i386 Packages release o=Debian Backports,a=stretch-backports,n=stretch-backports,l=Debian Backports,c=non-free,b=i386 origin deb.debian.org
release: il nome completo del ?rilascio Debian, il nome in codice (n) o il numero di rilascio (v)
a, archive: archivio (directory base nel repository
c,component: main/contrib/non-free
origin: nome di dominio del repository (informazione da verificare)
l,label: ToDo
b,architecture: architettura del processore
version: versione del pacchetto
Queste variabili sono fornite dai file Release nei repository Debian.
Vedere anche:
APT HOWTO (Documentazione obsoleta) sulla gestione dei pacchetti
Carlo Wood's Debian Cheat Sheet (2007)
John H. Robinson's Apt-Pinning per principianti (2002)
apt.conf
Apt accetta file di configurazione (senza estensione) in /etc/apt/apt.conf.d/. Questi vengono elaborati da Apt in ordine numerico/alfabetico. Anche /etc/apt/apt.conf è valido, ma deprecato.
Questi file contengono direttive utilizzate da tutti gli strumenti nella suite Apt; si può ottenere un elenco di tutti i valori correnti con apt-config dump.
Dpkg::Pre-Install-Pkgs {"miocomando";};: esegue miocomando prima dell'installazione/spacchettamento da parte di dpkg.
Dpkg::Pre-Invoke {"miocomando";};: esegue miocomando prima che apt chiami dpkg
Dpkg::Post-Invoke {"miocomando";};: esegue miocomando dopo che apt ha chiamato dpkg
Acquire::http::Proxy "http://proxy:8080";: imposta il proxy per scaricamenti via HTTP
Acquire::https::Proxy "https://proxy:8443";: imposta il proxy per scaricamenti via HTTPS
Acquire::http::Timeout "2";: imposta il tempo di scadenza per scaricamenti HTTP
Acquire::https::Timeout "2";: imposta il tempo di scadenza per scaricamenti HTTPS
Acquire::ftp::Timeout "2";: imposta il tempo di scadenza per scaricamenti FTP
Se si deve veramente utilizzare FTP, quello che segue imposta il proxy FTP:
Acquire::ftp { Proxy "ftp://proxy:2121/"; ProxyLogin { "USER $(SITE_USER)@$(SITE)"; "PASS $(SITE_PASS)"; } }
CategoryPackageManagement | CategorySoftware | CategorySystemAdministration