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. Se è necessario farlo ricordarsi di assegnare a (DebianTesting) o superiori una Priority più bassa di 100 per evitare aggiornamenti automatici.
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
Foglio coi trucchetti per Debian di Carlo Wood (2007)
Apt-Pinning per principianti di John H. Robinson (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)"; } }
Fare attenzione ad usare APT::Default-Release
Forse si sono visti esempi simile a APT::Default-Release "stable"; o APT::Default-Release "bookworm";. Questo previene l'installazione degli aggiornamenti di sicurezza da parte di apt upgrade, perciò evitarlo. Invece di aumentare la priorità del rilascio attuale, considerare l'opzione di impostare una priorità più bassa dei repository aggiunti con #apt_preferences (APT pinning). A partire da Debian 11 bullseye il repository di sicurezza è chiamato stable-security e, ad esempio bookworm-security, perciò usare almeno un'espressione regolare che corrisponda a tutte le suite principali
APT::Default-Release "/^bookworm(|-security|-updates)$/";
Note di rilascio di Bullseye riguardanti la modifica della struttura degli archivi di sicurezza.
Debian-security. Re: Setting APT::Default-Release prevents installation of security updates in bookworm!?; messaggio che raccomanda di evitare questa impostazione.
Il Bug 1041708 ha un commento contenente un'opinione sul fatto che APT::Default-Release è deprecata.
CategoryPackageManagement | CategorySoftware | CategorySystemAdministration