Repository & pinning: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
estensione (TODO: da ridurre qualcosa per rientrare sotto 32KB...)
(estensione (TODO: da ridurre qualcosa per rientrare sotto 32KB...))
Riga 29: Riga 29:
Il concetto di priorità viene gestito attraverso l'assegnazione di un punteggio ai vari pacchetti, sia installati che ancora da installare. Valgono le seguenti regole:
Il concetto di priorità viene gestito attraverso l'assegnazione di un punteggio ai vari pacchetti, sia installati che ancora da installare. Valgono le seguenti regole:


* priorità '''1''', caso particolare e poco comune. Si veda il manuale per maggiori informazioni.
* priorità '''1''', caso particolare e poco comune. È quella di default per ''experimental'' ('''NotAutomatic: yes''' nel file ''Release'' del repository). Si veda il manuale (<code>man apt_preferences</code>) per maggiori informazioni.
* priorità '''100''' alla versione dei pacchetti già installati.
* priorità '''100''' alla versione dei pacchetti già installati e quella dei backports ufficiali ('''NotAutomatic: yes''' e '''ButAutomaticUpgrades: yes''' nel file ''Release'' del repository).
* priorità '''500''' alle versioni che non sono installate e non appartengono alla distribuzione obiettivo, dove con quest'ultimo termine si deve intendere "Default Release", "Target Release". Si noti per alcuni repository (come backports) in realtà la priorità predefinita di tali pacchetti risulta essere 100 e non 500 (vedasi manuale per maggiori informazioni).
* priorità '''500''' alle versioni che non appartengono alla distribuzione obiettivo, dove con quest'ultimo termine si deve intendere "Default Release", "Target Release". Si noti che di default non esiste una "Default Release", e quindi ogni repository ha una priorità di 500, salvo ''backports'' ed ''experimental''.
* priorità '''990''' alle versioni che non sono installate e appartengono alla distribuzione obiettivo, posto che l'utente abbia definito una distribuzione obiettivo, altrimenti la priorità assegnata sarà una di quelle appena descritte.
* priorità '''990''' alle versioni che non sono installate e appartengono alla distribuzione obiettivo, posto che l'utente abbia definito una distribuzione obiettivo, altrimenti la priorità assegnata sarà una di quelle appena descritte.


Riga 67: Riga 67:
* Gli intervalli sopra citati sono presi tali e quali dal manuale di ''apt_preferences'', tuttavia a volte si è osservato che i limiti funzionano come dovrebbero se traslati in alto di una unità, ad esempio l'ultimo intervallo potrebbe partire da 1001 invece che da 1000.
* Gli intervalli sopra citati sono presi tali e quali dal manuale di ''apt_preferences'', tuttavia a volte si è osservato che i limiti funzionano come dovrebbero se traslati in alto di una unità, ad esempio l'ultimo intervallo potrebbe partire da 1001 invece che da 1000.
* APT può derogare alle regole generali sopra esposte in casi particolari per soddisfare le varie dipendenze dei pacchetti.}}
* APT può derogare alle regole generali sopra esposte in casi particolari per soddisfare le varie dipendenze dei pacchetti.}}
== Priorità come punteggio in caso di aggiornamento ==
Se una versione di un pacchetto è già installata sul sistema, la lettura dei punteggi può portare a un'errata interpretazione delle priorità. In particolare:
* il downgrade è possibile solo con una priorità a partire da 1000, il che significa che tutti i repository con priorità minore di 1000 sono ignorati, se la loro versione è inferiore a quella attualmente installata;
* i pacchetti installati hanno priorità 100, il che significa che un pacchetto può essere aggiornato automaticamente se esiste almeno un repository con una versione più recente e priorità almeno 100.
Supponiamo che si assegni priorità 990 alla stable. I backports di default ne hanno una di 100. Ciò significa che non si può installare (automaticamente) una versione di un pacchetto che si trovi in entrambi i repository.<br/>
Ma se si è già installato un pacchetto dai backports, impostando manualmente la target release (che assegna priorità temporanea di 990), quel pacchetto verrà aggiornato automaticamente quando saranno disponibili nuovi aggiornamenti, perché la priorità della stable non è sufficiente al downgrade e pertanto il repository è ignorato, mentre d'altra parte la versione dei backports è più recente e la priorità (di default) è almeno pari a quella locale, che è sempre di 100.


= /etc/apt/apt.conf =
= /etc/apt/apt.conf =
Riga 86: Riga 95:


Si noti inoltre che:
Si noti inoltre che:
* Le dichiarazioni di parametri da riga di comando hanno sempre la precedenza su quelli definiti in un file di configurazione, quindi usare un comando del tipo <code>apt-get install pacchetto -t distribuzione_taldeitali</code> sorpassa qualunque distribuzione obiettivo (''Default-Release'') dichiarata nel file <code>apt.conf</code>.
* Le dichiarazioni di parametri da riga di comando hanno sempre la precedenza su quelli definiti in un file di configurazione, quindi usare un comando del tipo <code>apt-get install pacchetto -t distribuzione_taldeitali</code> sorpassa qualunque distribuzione obiettivo (''Default-Release'') dichiarata nel file <code>apt.conf</code>. Quindi avere un pinning a 990 in preferences non è necessariamente equivalente a impostare una ''Default-Release''.
* Comandi del tipo <code>apt-get install pacchetto/distribuzione_taldeitali</code> non cambiano la ''target release'', ma si limitano a dire di prelevare lo specifico pacchetto dalla distribuzione indicata invece che da quella predefinita. Questo implica che le dipendenze continueranno ad essere risolte in base alla distribuzione obiettivo eventualmente specificata in <code>apt.conf</code> e/o in base al file preferences e/o in accordo all'algoritmo predefinito.
* Comandi del tipo <code>apt-get install pacchetto/distribuzione_taldeitali</code> non cambiano la ''target release'', ma si limitano a dire di prelevare lo specifico pacchetto dalla distribuzione indicata invece che da quella predefinita. Questo implica che le dipendenze continueranno ad essere risolte in base alla distribuzione obiettivo eventualmente specificata in <code>apt.conf</code> e/o in base al file preferences e/o in accordo all'algoritmo predefinito.
* Definire una distribuzione obiettivo in <code>apt.conf</code> è equivalente a dichiarare in <code>preferences</code> (si veda la prossima sezione) quanto segue
* Definire una distribuzione obiettivo in <code>apt.conf</code> è equivalente a dichiarare in <code>preferences</code> (si veda la prossima sezione) quanto segue
Riga 173: Riga 182:


Sebbene non sia necessario definire il pinning nel caso ci si limiti ad usare i repository ufficiali della propria release di debian, può comunque essere prudente definire un file <code>apt.conf</code>. Se infatti si dovesse decidere di aggiungere altri repository in seguito non si rischierebbe il disastro nel caso in cui ci si dimenticasse di definire correttamente un pinning.
Sebbene non sia necessario definire il pinning nel caso ci si limiti ad usare i repository ufficiali della propria release di debian, può comunque essere prudente definire un file <code>apt.conf</code>. Se infatti si dovesse decidere di aggiungere altri repository in seguito non si rischierebbe il disastro nel caso in cui ci si dimenticasse di definire correttamente un pinning.
Ciò avrebbe effetto sia sul repository principale, sia su quello della sicurezza. Ma non sugli eventuali ''updates'' o ''proposed-updates'', che non sarebbero più aggiornati automaticamente, salvo che per i pacchetti già installati da quei repository. Per riabilitare gli aggiornamenti automatici è necessario impostare un pinning a 990, pari a quello della ''Default-Release''.
Allo stesso modo in una release pura i pacchetti dei ''backports'' continuano a restare disabilitati per la loro prima installazione, salvo presenti soltanto nei ''backports'' o li si scelga manualmente come target release, ma i pacchetti installati dai ''backports'' vengono aggiornati automaticamente senza bisogno di pinning. Il che corrisponde al loro comportamento di default anche in assenza di una ''Default-Release'', per cui non c'è bisogno di cambiarlo.


=== sources.list ===
=== sources.list ===
Riga 190: Riga 203:
         Get
         Get
         {
         {
                AllowUnauthenticated 1;
                 AutomaticRemove "true";
                 AutomaticRemove "true";
                 Fix-Broken "true";
                 Fix-Broken "true";
Riga 230: Riga 242:
         Get
         Get
         {
         {
                AllowUnauthenticated 1;
                 AutomaticRemove "true";
                 AutomaticRemove "true";
                 Fix-Broken "true";
                 Fix-Broken "true";
Riga 249: Riga 260:
<pre>
<pre>
Package: iceweasel*
Package: iceweasel*
Pin: release a=stable-backports
Pin: release n=wheezy-backports
Pin-Priority: 992
Pin-Priority: 992


Package: libreoffice*
Package: libreoffice*
Pin: release a=stable-backports
Pin: release n=wheezy-backports
Pin-Priority: 992
Pin-Priority: 992
</pre>
</pre>
Riga 282: Riga 293:
         Get
         Get
         {
         {
                AllowUnauthenticated 1;
                 AutomaticRemove "true";
                 AutomaticRemove "true";
                 Fix-Broken "true";
                 Fix-Broken "true";
3 581

contributi

Menu di navigazione