Translation(s): English - Italiano


Apt è configurato da diverse risorse, incluse:


apt_preferences (pinning di APT)

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.

Il Pinning permette di cambiare priorità per solo alcuni pacchetti/repository, in modo che si possa:

<!> 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

Queste variabili sono fornite dai file Release nei repository Debian.

Vedere anche:

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.

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)$/";


CategoryPackageManagement | CategorySoftware | CategorySystemAdministration