APT_PREFERENCES(5) APT APT_PREFERENCES(5) NOME apt_preferences - file di controllo delle preferenze per APT DESCRIZIONE 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 verra selezionata per l'installazione. Quando il file sources.list(5) contiene riferimenti a piu di una distribuzione, potrebbero essere disponibili per l'installazione diverse versioni di un pacchetto (ad esempio stable e testing). APT assegna una priorita a ciascuna versione che e disponibile. Tenendo in considerazione i limiti imposti dalle dipendenze, apt-get seleziona per l'installazione la versione con la piu alta priorita. Le preferenze di APT scavalcano le priorita che APT assegna in modo predefinito alle versioni dei pacchetti, dando percio all'utente il controllo su quale venga selezionata per l'installazione. Quando il file sources.list(5) contiene riferimenti a piu di una fonte, potrebbero essere disponibili piu 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, percio impostazioni sbagliate possono avere come risultato pacchetti non installabili o decisioni sbagliate durante l'aggiornamento dei pacchetti. Se vengono mescolati piu rilasci di distribuzione puo sorgere un numero ancora piu 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 percio non sempre funzionano come atteso) in rilasci piu vecchi o piu 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 e 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 priorita predefinite di APT Se non c'e alcun file di preferenze o non c'e nel file una voce applicabile ad una versione particolare, allora la priorita assegnata a quella versione e la priorita della distribuzione a cui essa appartiene. E possibile distinguere una distribuzione, il <>, che riceve in modo predefinito una priorita maggiore delle altre distribuzioni. Il rilascio obiettivo puo 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 priorita generale sia stata impostata nel file /etc/apt/preferences descritto in seguito, ma non rispetto a pacchetti per cui e specificatamente indicato un pin. Per esempio, apt-get install -t testing un-pacchetto APT::Default-Release "stable"; Se il rilascio obiettivo e stato specificato, allora APT usa il seguente algoritmo per impostare le priorita delle versioni di un pacchetto. Assegna: priorita 1 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. priorita 100 alla versione che e gia installata (se esiste) e alla versioni che provengono da archivi che, nei loro file Release, sono contrassegnati come <> e <>, come l'archivio Debian backports a partire da squeeze-backports. priorita 500 alle versioni che non appartengono al rilascio obiettivo. priorita 990 alle versioni che appartengono al rilascio obiettivo. Alla versione viene assegnata la piu alta di queste priorita la cui descrizione corrisponde alla versione. Se il rilascio obiettivo non e stato specificato, allora APT assegna semplicemente la priorita 100 a tutte le versioni di pacchetto installate e la priorita 500 a tutte le versioni di pacchetto non installate, tranne le versioni che provengono da archivi che, nei loro file Release, sono contrassegnati come <>; queste ultime versioni hanno priorita 1, oppure priorita 100 se sono in aggiunta contrassegnate come <>. Per determinare quale versione di un pacchetto installare APT applica poi le seguenti regole, elencate in ordine di precedenza. o Non retrocede mai ad una versione piu bassa, a meno che la priorita della versione disponibile non sia maggiore di 1000. (<> significa installare una versione meno recente di un pacchetto al posto di una piu recente. Notare che nessuna delle priorita predefinite di APT e maggiore di 1000; priorita cosi alte possono solo essere impostate nel file delle preferenze. Notare inoltre che retrocedere un pacchetto puo essere rischioso.) o Installa la versione con la priorita piu alta. o Se due o piu versioni hanno la stessa priorita, installa la versione piu recente (cioe quella con il numero di versione piu alto). o Se due o piu versioni hanno la stessa priorita 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 (priorita 100) non e cosi recente come una delle versioni disponibili dalle fonti elencate nel file sources.list(5) (priorita 500 o 990). Quindi il pacchetto viene aggiornato quando viene eseguito apt-get install un-pacchetto o apt-get upgrade. Piu raramente, la versione installata di un pacchetto e piu 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 e piu recente di quella che appartiene al rilascio obiettivo, ma non cosi recente come la versione che appartiene a qualche altra distribuzione. Un tale pacchetto verra di fatto aggiornato quando viene eseguito apt-get install un-pacchetto o apt-get upgrade, perche almeno una delle versioni disponibili ha una priorita piu 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 priorita. Il file consiste di uno o piu record su piu righe, separati da righe vuote. I record possono avere una tra due forme: una forma specifica e una forma generica. o La forma specifica assegna una priorita (una <>) ad uno o piu pacchetti specifici con una versione o un intervallo di versioni specifici. Ad esempio, il record seguente assegna una priorita alta a tutte le versioni del pacchetto perl il cui numero di versione inizia con <<5.32>>. Piu pacchetti possono essere separati da spazi. Package: perl Pin: version 5.32* Pin-Priority: 1001 o La forma generica assegna una priorita a tutte le versioni di pacchetto in una data distribuzione (cioe 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 priorita alta a tutte le versioni di pacchetto disponibili dal sito locale. Package: * Pin: origin "" Pin-Priority: 999 Un avvertimento: la parola chiave usata in questo caso e <> e puo essere usata per indicare un nome host. Il record seguente assegna una priorita alta a tutte le versioni disponibili dal server identificato dal nome host <> Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999 Questo non deve essere confuso con l'Origine di una distribuzione come indicata in un file Release. Cio che segue il tag <> in un file Release non e un indirizzo Internet, ma un nome di autore o produttore, come <> o <>. Il record seguente assegna una priorita bassa a tutte le versioni di pacchetto che appartengono ad una qualsiasi distribuzione il cui nome di archivio e <>. Package: * Pin: release a=unstable Pin-Priority: 50 Il record seguente assegna una priorita alta a tutte le versioni di pacchetto che appartengono ad una qualsiasi distribuzione il cui nome in codice e <>. Package: * Pin: release n=trixie Pin-Priority: 900 Il record seguente assegna una priorita alta a tutte le versioni di pacchetto che appartengono ad un qualsiasi rilascio il cui nome di archivio e <> e il cui numero di versione del rilascio e <<12>>. Package: * Pin: release a=stable, v=12 Pin-Priority: 500 L'effetto dell'operatore virgola e simile ad un <> nella logica: tutte le condizioni devono essere soddisfatte affinche il pin faccia corrispondenza. Esiste una sola eccezione: per ciascun tipo di condizione (come due condizioni <>), solo l'ultima di queste condizioni viene controllata. 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 Di norma queste espressioni possono essere utilizzate ovunque c'e una stringa. Percio il pin seguente assegna la priorita 990 a tutti i pacchetti provenienti da un rilascio il cui nome inizia con lunar. Package: * Pin: release n=lunar* Pin-Priority: 990 Se un'espressione regolare viene usata in un campo Package, il comportamento e equivalente a quello che si otterrebbe se l'espressione regolare fosse sostituita da un elenco di tutti i nomi di pacchetto a cui corrisponde. Non e chiaro se questo comportamento verra modificato in futuro; percio si dovrebbero sempre indicare per primi i pin con caratteri jolly, in modo che i pin specifici successivi abbiano precedenza su di essi. Il modello <<*>> in un campo Package non viene considerato come un'espressione glob(7). To pin all binaries produced by the apt source package of this APT's version to 990, you can do: Package: src:apt Pin: version 2.9.6 Pin-Priority: 990 Source package pinning can be combined with regular expressions and glob patterns, and can also take a binary architecture. For example, let's pin all binaries for all architectures produced by any source package containing apt in its name to 990: Package: src:*apt*:any Pin: version * Pin-Priority: 990 The :any suffix makes sure to select binary packages from any architecture. Without that suffix, apt implicitly assumes the :native suffix which would only select packages from the native architecture. Come APT interpreta le priorita Le priorita (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 >= 1000 causa l'installazione di una versione anche se cio 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 piu 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 piu 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 piu recente 0 < P < 100 causa l'installazione di una versione solo se nessuna versione del pacchetto e 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 priorita della versione del pacchetto. In caso contrario, la priorita del pacchetto viene definita come il valore massimo di tutte le priorita 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 Allora: o Verra installata la piu recente versione disponibile del pacchetto perl, fintanto che il suo numero di versione inizia con <<5.32>>. Se e disponibile una qualsiasi versione 5.32* di perl e la versione installata e 5.36*, allora perl verra retrocesso. o Una versione di un qualsiasi pacchetto diverso da perl che sia disponibile sul sistema locale ha la priorita rispetto ad altre versioni, incluse quelle che appartengono al rilascio obiettivo. o 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 e selezionata per l'installazione e nessuna versione del pacchetto e gia installata. Determinazione delle proprieta 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. E costituito da una serie di record su piu righe, uno per ogni pacchetto disponibile in tale directory. In ciascun record solo due righe sono rilevanti per l'impostazione delle priorita 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 piu righe che si applica a tutti i pacchetti nell'albero di directory sottostante alla directory genitrice. A differenza di cio che avviene per il file Packages, quasi tutte le righe in un file Release sono importanti per l'impostazione delle priorita di APT: la riga Archive: o Suite: indica l'archivio a cui appartengono tutti i pacchetti nell'albero di directory. Per esempio, la riga <> o <> 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: Pin: release a=stable la riga Codename: indica il nome in codice a cui appartengono tutti i pacchetti nell'albero di directory. Per esempio, la riga <> 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: Pin: release n=trixie la riga Version: 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, perche non sono ancora state rilasciate. Per specificare questo valore nelle preferenze di APT si deve usare una delle seguenti righe: Pin: release v=12 Pin: release a=stable, v=12 Pin: release 12 la rigaComponent: indica le componenti con le varie licenze associate ai pacchetti nell'albero di directory del file Release. Per esempio, la riga <> 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: Pin: release c=main la riga Origin: indica l'origine dei pacchetti nell'albero di directory del file Release. Normalmente e Debian. Per specificare questa origine nelle preferenze di APT si deve usare la riga: Pin: release o=Debian la riga Label: indica l'etichetta dei pacchetti nell'albero di directory del file Release. Normalmente e Debian. Per specificare questa etichetta nelle preferenze di APT si deve usare la riga: Pin: release l=Debian 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. Righe opzionali in un record delle preferenze di APT Ogni record nel file delle preferenze di APT puo iniziare opzionalmente con una o piu righe che cominciano con la parola Explanation:. Cio fornisce un posto dove mettere commenti. ESEMPI Seguire Stable in modo continuativo Il seguente file di preferenze di APT fa si che APT assegni una priorita piu alta di quella predefinita (500) a tutte le versioni di pacchetto che appartengono alla distribuzione stable, e una priorita 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 Con un file sources.list(5) adatto e il file di preferenze descritto sopra, uno qualsiasi dei seguenti comandi fara si che APT aggiorni il sistema alle versioni piu recenti di stable. apt-get install nome-pacchetto apt-get upgrade apt-get dist-upgrade Il seguente comando fara si che APT aggiorni il pacchetto specificato alla versione piu recente nella distribuzione testing; il pacchetto non verra successivamente aggiornato a meno di non usare nuovamente questo comando. apt-get install pacchetto/testing Seguire Testing o Unstable in modo continuativo Il seguente file di preferenze di APT fa si che APT assegni una priorita alta alle versioni di pacchetto nella distribuzione testing, una priorita piu bassa alle versioni di pacchetto nella distribuzione unstable, e una priorita 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 Con un file sources.list(5) adatto e il file di preferenze descritto sopra, uno qualsiasi dei seguenti comandi fara si che APT aggiorni il sistema alle versioni piu recenti di testing. apt-get install nome-pacchetto apt-get upgrade apt-get dist-upgrade Il comando seguente fara si che APT aggiorni il pacchetto specificato alla piu recente versione nella distribuzione unstable. Successivamente, apt-get upgrade aggiornera il pacchetto alla versione piu recente in testing, se e piu nuova di quella installata, altrimenti alla piu recente versione in unstable se e piu recente di quella installata. apt-get install pacchetto/unstable Seguire l'evoluzione di un rilascio in base al nome in codice Il seguente file delle preferenze di APT fara si che APT assegni una priorita piu alta di quella predefinita (500) a tutte le versioni di pacchetto che appartengono alla distribuzione con il nome in codice specificato, e una priorita 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 Con un file sources.list(5) adatto e il file di preferenze descritto sopra, uno qualsiasi dei seguenti comandi fara si che APT aggiorni il sistema alle versioni piu recenti nel rilascio con nome in codice trixie. apt-get install nome-pacchetto apt-get upgrade apt-get dist-upgrade Il comando seguente fara si che APT aggiorni il pacchetto specificato alla piu recente versione nella distribuzione sid. Successivamente, apt-get upgrade aggiornera il pacchetto alla versione piu recente in trixie, se e piu nuova di quella installata, altrimenti alla piu recente versione in sid se e piu recente di quella installata. apt-get install pacchetto/sid FILE /etc/apt/preferences File 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 . 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 puo contenere parti non tradotte. Cio e voluto, per evitare di perdere contenuti quando la traduzione non e aggiornata rispetto all'originale. AUTORE Team APT NOTE 1. Pagina dei bug di APT https://bugs.debian.org/src:apt APT 2.9.6 03 gennaio 2022 APT_PREFERENCES(5)