NOME
apt_preferences - file di controllo delle preferenze per APTDESCRIZIONE
Il file delle preferenze di APT, /etc/apt/preferences e i file frammento nella directory /etc/apt/preferences.d/ possono essere usati per controllare quale versione verrà selezionata per l'installazione. Quando il file sources.list(5) contiene riferimenti a più di una distribuzione, potrebbero essere disponibili per l'installazione diverse versioni di un pacchetto (ad esempio stable e testing). APT assegna una priorità a ciascuna versione che è disponibile. Tenendo in considerazione i limiti imposti dalle dipendenze, apt-get seleziona per l'installazione la versione con la più alta priorità. Le preferenze di APT scavalcano le priorità che APT assegna in modo predefinito alle versioni dei pacchetti, dando perciò all'utente il controllo su quale venga selezionata per l'installazione. Quando il file sources.list(5) contiene riferimenti a più di una fonte, potrebbero essere disponibili più istanze della stessa versione di un pacchetto. In questo caso apt-get scarica l'istanza elencata per prima nel file sources.list(5). Le preferenze di APT non hanno effetto sulla scelta dell'istanza, ma solo sulla scelta della versione. Le preferenze sono uno strumento potente nelle mani di un amministratore di sistema, ma possono anche diventare il suo incubo peggiore se usate con poca cautela! APT non mette in dubbio le preferenze scelte, perciò impostazioni sbagliate possono avere come risultato pacchetti non installabili o decisioni sbagliate durante l'aggiornamento dei pacchetti. Se vengono mescolati più rilasci di distribuzione può sorgere un numero ancora più grande di problemi, se non si sono capiti bene i concetti spiegati nei prossimi paragrafi. I pacchetti inclusi in uno specifico rilascio non sono testati (e perciò non sempre funzionano come atteso) in rilasci più vecchi o più nuovi, o insieme ad altri pacchetti da altri rilasci. Ci si consideri avvertiti. Notare che i file nella directory /etc/apt/preferences.d vengono analizzati in ordine alfanumerico crescente e i loro nomi devono conformarsi alle seguenti convenzioni: non devono avere estensione o avere estensione "pref", e possono contenere solo caratteri alfanumerici, trattini (-), trattini bassi (_) e punti (.). In caso contrario APT stampa un messaggio che informa che un file è stato ignorato, a meno che tale file non corrisponda ad un modello nell'elenco di configurazione Dir::Ignore-Files-Silently, nel qual caso viene ignorato in modo silenzioso.Assegnazioni della priorità predefinite di APT
Se non c'è alcun file di preferenze o non c'è nel file una voce applicabile ad una versione particolare, allora la priorità assegnata a quella versione è la priorità della distribuzione a cui essa appartiene. È possibile distinguere una distribuzione, il «rilascio obiettivo», che riceve in modo predefinito una priorità maggiore delle altre distribuzioni. Il rilascio obiettivo può essere impostato nella riga di comando di apt-get o nel file di configurazione di APT, /etc/apt/apt.conf. Notare che questa impostazione ha precedenza rispetto a qualsiasi priorità generale sia stata impostata nel file /etc/apt/preferences descritto in seguito, ma non rispetto a pacchetti per cui è specificatamente indicato un pin. Per esempio,apt-get install -t testing un-pacchetto
APT::Default-Release "stable";
to the versions coming from archives which in
their Release files are marked as "NotAutomatic: yes" but not
as "ButAutomaticUpgrades: yes" like the Debian experimental archive,
as well as versions that are not phased on this systems.
priorità 100
alla versione che è già
installata (se esiste) e alla versioni che provengono da archivi che, nei loro
file Release, sono contrassegnati come «NotAutomatic: yes» e
«ButAutomaticUpgrades: yes», come l'archivio Debian backports a
partire da squeeze-backports.
priorità 500
alle versioni che non appartengono al rilascio
obiettivo.
priorità 990
alle versioni che appartengono al rilascio
obiettivo.
Alla versione viene assegnata la più alta di queste priorità la
cui descrizione corrisponde alla versione.
Se il rilascio obiettivo non è stato specificato, allora APT assegna
semplicemente la priorità 100 a tutte le versioni di pacchetto
installate e la priorità 500 a tutte le versioni di pacchetto non
installate, tranne le versioni che provengono da archivi che, nei loro file
Release, sono contrassegnati come «NotAutomatic: yes»; queste
ultime versioni hanno priorità 1, oppure priorità 100 se sono in
aggiunta contrassegnate come «ButAutomaticUpgrades: yes».
Per determinare quale versione di un pacchetto installare APT applica poi le
seguenti regole, elencate in ordine di precedenza.
•Non retrocede mai ad una versione
più bassa, a meno che la priorità della versione disponibile non
sia maggiore di 1000. («Retrocedere» significa installare una
versione meno recente di un pacchetto al posto di una più recente.
Notare che nessuna delle priorità predefinite di APT è maggiore
di 1000; priorità così alte possono solo essere impostate nel
file delle preferenze. Notare inoltre che retrocedere un pacchetto può
essere rischioso.)
•Installa la versione con la
priorità più alta.
•Se due o più versioni hanno la
stessa priorità, installa la versione più recente (cioè
quella con il numero di versione più alto).
•Se due o più versioni hanno la
stessa priorità e lo stesso numero di versione, ma hanno una qualche
differenza in alcuni dei loro metadati, oppure viene usata l'opzione
--reinstall, installa quella non installata.
In una situazione tipica, la versione installata di un pacchetto
(priorità 100) non è così recente come una delle versioni
disponibili dalle fonti elencate nel file sources.list(5)
(priorità 500 o 990). Quindi il pacchetto viene aggiornato quando viene
eseguito apt-get install un-pacchetto o apt-get
upgrade.
Più raramente, la versione installata di un pacchetto è
più recente di qualsiasi altra versione disponibile. Il
pacchetto non viene retrocesso quando viene eseguito apt-get install
un-pacchetto o apt-get upgrade.
A volte la versione installata di un pacchetto è più recente di
quella che appartiene al rilascio obiettivo, ma non così recente come
la versione che appartiene a qualche altra distribuzione. Un tale pacchetto
verrà di fatto aggiornato quando viene eseguito apt-get install
un-pacchetto o apt-get upgrade, perché almeno
una delle versioni disponibili ha una priorità più alta
di quella installata.
Phased Updates
APT understands a field called Phased-Update-Percentage which can be used to control the rollout of a new version. It is an integer between 0 and 100. A system's eligibility to a phased update is determined by seeding random number generator with the package source name, the version number, and /etc/machine-id, and then calculating an integer in the range [0, 100]. If this integer is larger than the Phased-Update-Percentage, the version is pinned to 1, and thus held back. Otherwise, normal policy rules apply. In case you have multiple systems that you want to receive the same set of updates, you can set APT::Machine-ID to a UUID such that they all phase the same, or set APT::Get::Never-Include-Phased-Updates or APT::Get::Always-Include-Phased-Updates to true such that APT will never/always consider phased updates.L'effetto delle preferenze di APT
Il file delle preferenze di APT permette all'amministratore di sistema di controllare l'assegnazione delle priorità. Il file consiste di uno o più record su più righe, separati da righe vuote. I record possono avere una tra due forme: una forma specifica e una forma generica.•La forma specifica assegna una
priorità (una «Pin-Priority») ad uno o più
pacchetti specifici con una versione o un intervallo di versioni specifici. Ad
esempio, il record seguente assegna una priorità alta a tutte le
versioni del pacchetto perl il cui numero di versione inizia con
«5.32». Più pacchetti possono essere separati da spazi.
Package: perl Pin: version 5.32* Pin-Priority: 1001
•La forma generica assegna una
priorità a tutte le versioni di pacchetto in una data distribuzione
(cioè a tutte le versioni dei pacchetti che sono elencati in un
determinato file Release) o a tutte le versioni di pacchetto che provengono da
un particolare sito Internet identificato in base al suo nome di dominio
pienamente qualificato.
Queste voci in forma generica nel file di preferenze di APT si applicano solo ai
gruppi di pacchetti. Per esempio, il record seguente assegna una
priorità alta a tutte le versioni di pacchetto disponibili dal sito
locale.
Un avvertimento: la parola chiave usata in questo caso è
«origin» e può essere usata per indicare un nome host. Il
record seguente assegna una priorità alta a tutte le versioni
disponibili dal server identificato dal nome host
«ftp.de.debian.org»
Questo non deve essere confuso con l'Origine di una distribuzione come
indicata in un file Release. Ciò che segue il tag
«Origin:» in un file Release non è un indirizzo Internet,
ma un nome di autore o produttore, come «Debian» o
«Ximian».
Il record seguente assegna una priorità bassa a tutte le versioni di
pacchetto che appartengono ad una qualsiasi distribuzione il cui nome di
archivio è «unstable».
Il record seguente assegna una priorità alta a tutte le versioni di
pacchetto che appartengono ad una qualsiasi distribuzione il cui nome in
codice è «trixie».
Il record seguente assegna una priorità alta a tutte le versioni di
pacchetto che appartengono ad un qualsiasi rilascio il cui nome di archivio
è «stable» e il cui numero di versione del rilascio
è «12».
Package: * Pin: origin "" Pin-Priority: 999
Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999
Package: * Pin: release a=unstable Pin-Priority: 50
Package: * Pin: release n=trixie Pin-Priority: 900
Package: * Pin: release a=stable, v=12 Pin-Priority: 500
Matching packages in the Package field
The Package field specifies the package that a pinning priority is applied to. The field can either contain a binary package name, a source package name (prefixed with "src:"), a glob(7) expression or a regular expression (surrounded by slashes). Multiple package names, glob(7) expressions and regular expressions can be listed separated by whitespace in which case the record will match any of the matched packages. By default, only packages of the native architecture are matched. To match binary packages of any architecture, add the :any suffix to the package name. You can also limit matching to a specific architecture by appending the architecture name to the package name, separated by a colon character. For example, the following example uses a glob expression and a regular expression to assign the priority 500 to all packages from experimental where the name starts with gnome (as a glob(7)-like expression) or contains the word kde (as a POSIX extended regular expression surrounded by slashes).Package: gnome* /kde/ Pin: release a=experimental Pin-Priority: 500
Package: * Pin: release n=lunar* Pin-Priority: 990
Package: src:apt Pin: version 2.6.1 Pin-Priority: 990
Package: src:*apt*:any Pin: version * Pin-Priority: 990
Come APT interpreta le priorità
Le priorità (P) assegnate nel file delle preferenze di APT devono essere rappresentate da interi positivi o negativi. Vengono interpretate nel modo seguente (semplificando le cose): P >= 1000causa l'installazione di una versione anche se
ciò costituisce una retrocessione del pacchetto
990 <= P < 1000
causa l'installazione di una versione anche se
non proviene dal rilascio obiettivo, a meno che la versione installata non sia
più recente
500 <= P < 990
causa l'installazione di una versione, a meno
che non ci sia una versione disponibile appartenente al rilascio obiettivo o
la versione installata non sia più recente
100 <= P < 500
causa l'installazione di una versione, a meno
che non ci sia una versione disponibile appartenente ad una qualche altra
distribuzione o la versione installata non sia più recente
0 < P < 100
causa l'installazione di una versione solo se
nessuna versione del pacchetto è installata
P < 0
impedisce l'installazione della versione
P = 0
ha un comportamento non definito, non
usarlo.
Il primo record in forma specifica, che corrisponde ad una versione di pacchetto
disponibile, determina la priorità della versione del pacchetto. In
caso contrario, la priorità del pacchetto viene definita come il valore
massimo di tutte le priorità definite da record in forma generica che
corrispondono alla versione. I record definiti usando modelli nel campo Pin
diversi da «*» sono trattati come record in forma specifica.
Per esempio, supponendo che il file di preferenze di APT contenga i tre record
descritti in precedenza:
Package: perl Pin: version 5.32* Pin-Priority: 1001 Package: * Pin: origin "" Pin-Priority: 999 Package: * Pin: release unstable Pin-Priority: 50
•Verrà installata la più
recente versione disponibile del pacchetto perl, fintanto che il suo numero di
versione inizia con «5.32». Se è disponibile una
qualsiasi versione 5.32* di perl e la versione installata è 5.36*,
allora perl verrà retrocesso.
•Una versione di un qualsiasi pacchetto
diverso da perl che sia disponibile sul sistema locale ha la priorità
rispetto ad altre versioni, incluse quelle che appartengono al rilascio
obiettivo.
•Una versione di un pacchetto la cui
origine non sia il sistema locale, ma un qualche altro sito elencato in
sources.list(5) e che appartiene ad una distribuzione unstable, viene
installata solamente se è selezionata per l'installazione e nessuna
versione del pacchetto è già installata.
Determinazione delle proprietà di versione del pacchetto e di distribuzione
Le posizioni elencate nel file sources.list(5) dovrebbero fornire i file Packages e Release che descrivono i pacchetti disponibili in quelle posizioni. Il file Packages si trova normalmente nella directory .../dists/ nome-dist/ componente/arch: per esempio, .../dists/stable/main/binary-i386/Packages. È costituito da una serie di record su più righe, uno per ogni pacchetto disponibile in tale directory. In ciascun record solo due righe sono rilevanti per l'impostazione delle priorità di APT: la riga Package:indica il nome del pacchetto
la riga Version:
indica il numero di versione per il pacchetto
indicato
Il file Release si trova normalmente nella directory .../dists/
nome-dist: ad esempio, .../dists/stable/Release o
.../dists/bookworm/Release. Consiste di un record su più righe che si
applica a tutti i pacchetti nell'albero di directory sottostante alla
directory genitrice. A differenza di ciò che avviene per il file
Packages, quasi tutte le righe in un file Release sono importanti per
l'impostazione delle priorità di APT:
la riga Archive: o Suite:
indica l'archivio a cui appartengono tutti i
pacchetti nell'albero di directory. Per esempio, la riga «Archive:
stable» o «Suite: stable» specifica che tutti i pacchetti
nell'albero di directory sottostante la directory che contiene il file Release
sono nell'archivio stable. Per specificare questo valore nelle preferenze di
APT si deve usare la riga:
la riga Codename:
Pin: release a=stable
indica il nome in codice a cui appartengono
tutti i pacchetti nell'albero di directory. Per esempio, la riga
«Codename: trixie» specifica che tutti i pacchetti nell'albero
di directory sottostante la directory che contiene il file Release
appartengono ad una versione chiamata trixie. Per specificare questo valore
nelle preferenze di APT si deve usare la riga:
la riga Version:
Pin: release n=trixie
indica la versione del rilascio. Per esempio,
i pacchetti nell'albero potrebbero appartenere alla versione 12 del rilascio
Debian. Notare che normalmente non esiste un numero di versione per le
distribuzioni testing e unstable, perché non sono ancora state
rilasciate. Per specificare questo valore nelle preferenze di APT si deve
usare una delle seguenti righe:
la rigaComponent:
Pin: release v=12 Pin: release a=stable, v=12 Pin: release 12
indica le componenti con le varie licenze
associate ai pacchetti nell'albero di directory del file Release. Per esempio,
la riga «Component: main» specifica che tutti i pacchetti
nell'albero di directory provengono dalla componente main, e quindi che sono
rilasciati nei termini elencati nelle Linee guida per il Software Libero di
Debian. Per specificare questa componente nelle preferenze di APT si deve
usare la riga:
la riga Origin:
Pin: release c=main
indica l'origine dei pacchetti nell'albero di
directory del file Release. Normalmente è Debian. Per specificare
questa origine nelle preferenze di APT si deve usare la riga:
la riga Label:
Pin: release o=Debian
indica l'etichetta dei pacchetti nell'albero
di directory del file Release. Normalmente è Debian. Per specificare
questa etichetta nelle preferenze di APT si deve usare la riga:
Tutti i file Packages e Release recuperati dalle posizioni elencate nel file
sources.list(5) sono memorizzati nella directory /var/lib/apt/lists o
nel file indicato dalla variabile Dir::State::Lists nel file apt.conf. Per
esempio, il file
debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release contiene
il file Release recuperato dal sito debian.lcs.mit.edu per i file
dell'architettura binary-i386 nella componente contrib della distribuzione
unstable.
Pin: release l=Debian
Righe opzionali in un record delle preferenze di APT
Ogni record nel file delle preferenze di APT può iniziare opzionalmente con una o più righe che cominciano con la parola Explanation:. Ciò fornisce un posto dove mettere commenti.ESEMPI
Seguire Stable in modo continuativo
Il seguente file di preferenze di APT fa sì che APT assegni una priorità più alta di quella predefinita (500) a tutte le versioni di pacchetto che appartengono alla distribuzione stable, e una priorità eccezionalmente bassa alle versioni di pacchetto che appartengono alle altre distribuzioni Debian.Explanation: Disinstallare o non installare ogni versione di Explanation: pacchetto originata da Debian che non sia nella Explanation: distribuzione stable Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10
apt-get install nome-pacchetto apt-get upgrade apt-get dist-upgrade
apt-get install pacchetto/testing
Seguire Testing o Unstable in modo continuativo
Il seguente file di preferenze di APT fa sì che APT assegni una priorità alta alle versioni di pacchetto nella distribuzione testing, una priorità più bassa alle versioni di pacchetto nella distribuzione unstable, e una priorità eccezionalmente bassa alle versioni di pacchetto nelle altre distribuzioni Debian.Package: * Pin: release a=testing Pin-Priority: 900 Package: * Pin: release a=unstable Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
apt-get install nome-pacchetto apt-get upgrade apt-get dist-upgrade
apt-get install pacchetto/unstable
Seguire l'evoluzione di un rilascio in base al nome in codice
Il seguente file delle preferenze di APT farà sì che APT assegni una priorità più alta di quella predefinita (500) a tutte le versioni di pacchetto che appartengono alla distribuzione con il nome in codice specificato, e una priorità eccezionalmente bassa alle versioni di pacchetto che appartengono ad altre distribuzioni, nomi in codice e archivi Debian. Notare che con questa preferenza, APT segue la migrazione di un rilascio dall'archivio testing a stable e successivamente a oldstable. Se si vuole seguire il progresso, ad esempio, di testing indipendentemente dai cambi di nome in codice si devono usare le configurazioni negli esempi precedenti.Explanation: Disinstallare o non installare qualsiasi versione di pacchetto Explanation: originata da Debian che non sia nella distribuzione con Explanation: nome in codice trixie o sid Package: * Pin: release n=trixie Pin-Priority: 900 Explanation: Debian unstable ha sempre il nome in codice side Package: * Pin: release n=sid Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
apt-get install nome-pacchetto apt-get upgrade apt-get dist-upgrade
apt-get install pacchetto/sid
FILE
/etc/apt/preferencesFile di preferenze di versione. Qui si
specifica il "pinning", ossia una preferenza a prendere determinati
pacchetti da una fonte separata o da una diversa versione di una
distribuzione. Voce di configurazione: Dir::Etc::Preferences.
/etc/apt/preferences.d/
Frammenti di file per le preferenze di
versione. Voce di configurazione: Dir::Etc::PreferencesParts.
VEDERE ANCHE
apt-get(8) apt-cache(8) apt.conf(5) sources.list(5)BUG
Pagina dei bug di APT[1]. Se si desidera segnalare un bug in APT, vedere /usr/share/doc/debian/bug-reporting.txt o il comando reportbug(1).TRADUZIONE
Traduzione in italiano a cura del Team italiano di localizzazione di Debian <[email protected]>. In particolare hanno contribuito Eugenia Franzoni (2000), Hugh Hartmann (2000-2012), Gabriele Stilli (2012), Beatrice Torracca (2012, 2014, 2015). Notare che questa versione tradotta del documento può contenere parti non tradotte. Ciò è voluto, per evitare di perdere contenuti quando la traduzione non è aggiornata rispetto all'originale.AUTORE
Team APTNOTE
- 1.
- Pagina dei bug di APT
03 gennaio 2022 | APT 2.6.1 |