ITA - Debian apt pinning
August 2025 (756 Words, 5 Minutes)
gestire i pacchetti tra Stable, Testing, Unstable ed Experimental
Attraverso il meccanismo del pinning, APT permette di stabilire con precisione da quale repository debbano essere installati o aggiornati i pacchetti. Questo consente, ad esempio, di mantenere un sistema basato su Debian Stable, installando soltanto alcuni pacchetti provenienti da testing oppure unstable, senza compromettere la stabilità dell’intero sistema. In questo articolo vedremo come funziona il pinning, come configurarlo e quali sono gli scenari più comuni.
Attenzione: utilizzare contemporaneamente più repository Debian richiede una buona conoscenza del sistema; una configurazione errata può causare aggiornamenti indesiderati o dipendenze difficili da risolvere.
Cos’è il Pinning?
APT assegna una priorità ad ogni versione disponibile di un pacchetto.
Quando si esegue un comando come:
sudo apt install nome-pacchetto
APT confronta tutte le versioni disponibili e sceglie quella con la priorità più elevata.
Il Pinning permette di modificare queste priorità.
Come funziona APT
APT legge i repository configurati in:
/etc/apt/sources.list
/etc/apt/sources.list.d/
Successivamente assegna una priorità alle versioni disponibili.
Per visualizzare le priorità di un pacchetto:
apt-cache policy vim
Esempio:
vim:
Installed: 2:9.0.1378-2
Candidate: 2:9.1.1234-1
Version table:
2:9.1.1234-1 400
400 http://deb.debian.org/debian testing/main amd64 Packages
*** 2:9.0.1378-2 900
900 http://deb.debian.org/debian stable/main amd64 Packages
La colonna numerica rappresenta la priorità assegnata.
File di configurazione
Il Pinning viene configurato tramite uno o più file presenti in:
/etc/apt/preferences.d/
Ad esempio:
/etc/apt/preferences.d/debian.pref
oppure
/etc/apt/preferences.d/99-pinning
Struttura di una regola
Una regola è composta da tre elementi.
Package: *
Pin: release a=stable
Pin-Priority: 900
Package
Indica il pacchetto interessato.
Può essere:
Package: *
per tutti i pacchetti oppure
Package: firefox
per un singolo pacchetto.
Pin
Indica quale repository utilizzare.
Ad esempio:
Pin: release a=stable
oppure
Pin: release a=testing
È anche possibile utilizzare il codename della distribuzione.
Pin: release n=bookworm
Pin-Priority
Specifica la priorità.
Maggiore è il numero, maggiore sarà la probabilità che quella versione venga scelta.
Significato delle priorità
| Priorità | Significato |
|---|---|
| <0 | Il pacchetto non verrà mai installato |
| 1-99 | Installato solo se richiesto esplicitamente |
| 100 | Mantiene la versione installata |
| 500 | Priorità predefinita |
| 990 | Preferita rispetto alle altre release |
| >1000 | Consente anche il downgrade |
Scenario 1 - Stable come sistema principale
Questa è probabilmente la configurazione più comune.
Repository:
deb http://deb.debian.org/debian stable main
deb http://deb.debian.org/debian testing main
File:
Package: *
Pin: release a=stable
Pin-Priority: 900
Package: *
Pin: release a=testing
Pin-Priority: 400
In questo modo tutti gli aggiornamenti arriveranno da Stable.
Per installare un pacchetto da Testing sarà sufficiente:
sudo apt install -t testing nome-pacchetto
Scenario 2 - Sistema Testing con accesso a Unstable
Repository:
deb http://deb.debian.org/debian testing main
deb http://deb.debian.org/debian unstable main
Pinning:
Package: *
Pin: release a=testing
Pin-Priority: 900
Package: *
Pin: release a=unstable
Pin-Priority: 400
In questo modo sarà possibile installare occasionalmente software proveniente da Unstable.
Scenario 3 - Utilizzare Experimental
Il repository Experimental non deve mai essere utilizzato come repository principale.
Si aggiunge semplicemente:
deb http://deb.debian.org/debian experimental main
con priorità molto bassa:
Package: *
Pin: release a=experimental
Pin-Priority: 1
I pacchetti verranno installati esclusivamente con:
sudo apt install -t experimental nome-pacchetto
Verificare le priorità
Per controllare la configurazione:
apt-cache policy
oppure
apt-cache policy nome-pacchetto
Questi comandi sono fondamentali durante il debug del Pinning.
Installare una versione specifica
È possibile richiedere una release precisa.
sudo apt install -t testing firefox-esr
oppure una versione specifica.
sudo apt install vim=2:9.1.1234-1
Errori comuni
Dare priorità troppo elevate
Una priorità superiore a 1000 permette il downgrade automatico.
Va utilizzata solo quando realmente necessario.
Mescolare troppe release
Stable, Testing, Unstable ed Experimental possono convivere, ma ogni nuova release aumenta il rischio di dipendenze incompatibili.
Ignorare le dipendenze
Installare un singolo pacchetto da Unstable potrebbe richiedere decine di librerie aggiuntive.
Prima di confermare un’installazione leggere attentamente l’elenco delle modifiche proposte da APT.
Buone pratiche
- mantenere Stable come repository principale quando possibile;
- utilizzare Testing solo per i pacchetti necessari;
- usare Unstable con moderazione;
- usare Experimental esclusivamente per test;
- verificare sempre il risultato con
apt-cache policy; - mantenere un backup del sistema prima di modificare il Pinning.
Riferimenti
-
Debian Wiki https://wiki.debian.org/AptConfiguration
-
Debian Wiki - DebianRepository/UseThirdParty https://wiki.debian.org/DebianRepository/UseThirdParty
-
Manuale di
apt_preferenceshttps://manpages.debian.org/apt_preferences -
Manuale di
sources.listhttps://manpages.debian.org/sources.list -
Manuale di
apthttps://manpages.debian.org/apt -
Debian Handbook - APT https://www.debian.org/doc/manuals/debian-handbook/
-
Debian Packages https://packages.debian.org/
-
Debian Package Tracker https://tracker.debian.org/
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale Theme Moonwalk