I repository ed il loro utilizzo: differenze tra le versioni

mNessun oggetto della modifica
Riga 128: Riga 128:
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à 100''' alla versione dei pacchetti già installati.
* priorità '''100''' alla versione dei pacchetti già installati.
* '''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".
* 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".
* '''priorità 990''' alle versioni che non sono installate e appartengono alla distribuzione obiettivo.
* priorità '''990''' alle versioni che non sono installate e appartengono alla distribuzione obiettivo.


Piccolo esempio teorico. Si supponga quanto segue:
Piccolo esempio teorico. Si supponga quanto segue:
Riga 151: Riga 151:


* Pin '''minore di 0''' (negativo), l’installazione del candidato è impedita a priori (salvo apposito comando).
* Pin '''minore di 0''' (negativo), l’installazione del candidato è impedita a priori (salvo apposito comando).
* Pin compreso '''tra 1 e 99''', il candidato sarà installato solo se sono verificate entrambe le seguenti due condizioni: primo non esistono candidati appartenenti ad altre distribuzioni, secondo nel sistema non è già installata una versione (anche inferiore) del candidato.
* Pin compreso tra '''1 e 99''', il candidato sarà installato solo se sono verificate entrambe le seguenti due condizioni: primo non esistono candidati appartenenti ad altre distribuzioni, secondo nel sistema non è già installata una versione (anche inferiore) del candidato.
* Pin compreso tra 100 e 499, il candidato sarà installato solo se non esistono candidati appartenenti ad altre distribuzioni e se la versione eventualmente già installata non è superiore a quella del candidato.
* Pin compreso tra '''100 e 499''', il candidato sarà installato solo se non esistono candidati appartenenti ad altre distribuzioni e se la versione eventualmente già installata non è superiore a quella del candidato.
* Pin compreso '''tra 500 e 989''', il candidato sarà installato solo se non esistono candidati appartenenti alla distribuzione obiettivo e se la versione eventualmente già installata non è superiore a quella del candidato. Si noti che il semplice fatto di aver installato una certa distribuzione, per esempio testing, non significa aver definito la distribuzione obiettivo, che può essere solo definita manualmente dall'utente (il come sarà spiegato nella discussione del file <code>apt.conf</code>).
* Pin compreso tra '''500 e 989''', il candidato sarà installato solo se non esistono candidati appartenenti alla distribuzione obiettivo e se la versione eventualmente già installata non è superiore a quella del candidato. Si noti che il semplice fatto di aver installato una certa distribuzione, per esempio testing, non significa aver definito la distribuzione obiettivo, che può essere solo definita manualmente dall'utente (il come sarà spiegato nella discussione del file <code>apt.conf</code>).
* Pin compreso tra '''990 e 999''', il candidato sarà installato solo se non esistono altri candidati con pin maggiore e se la versione eventualmente già installata non è superiore a quella del candidato.
* Pin compreso tra '''990 e 999''', il candidato sarà installato solo se non esistono altri candidati con pin maggiore e se la versione eventualmente già installata non è superiore a quella del candidato.
* Pin '''1000 o superiore''', il candidato sarà installato se non esistono altri candidati con pin maggiore, è quindi possibile la retrocessione di versione (downgrade) se la versione eventualmente già installata è superiore a quella del candidato. Es. è possibile installare la versione 1.1 di un pacchetto anche se ad essere già installata è la 1.2 o superiore.
* Pin '''1000''' o superiore, il candidato sarà installato se non esistono altri candidati con pin maggiore, è quindi possibile la retrocessione di versione (downgrade) se la versione eventualmente già installata è superiore a quella del candidato. Es. è possibile installare la versione 1.1 di un pacchetto anche se ad essere già installata è la 1.2 o superiore.


== /etc/apt/apt.conf ==
== /etc/apt/apt.conf ==
Riga 169: Riga 169:


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 -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>.
* 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 al valore specificato in <code>apt.conf</code> o in caso contrario in base al file preferences o 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
<pre>
<pre>
Riga 189: Riga 190:
</pre>
</pre>


== Il file /etc/apt/preferences ==
== /etc/apt/preferences ==
Nel  file preferences è possibile definire la priorità delle varie versioni  dei pacchetti tramite un sistema basato sui pin. Vediamo quindi i  possibili valori dei pin, avendo cura di ricordare che con "target  relase" si intende quella specificata alla  riga  <code>APT::Default-Release</code> del file  <code>apt.conf</code> (quindi testing nel caso del  precedente esempio).
 
* pin maggiore di 1000: il pacchetto ha  l’assoluta priorità nell’installazione, anche nel caso cioè che sia  disponibile una versione dello stesso nel repository della "target  relase" e persino se l'eventuale versione già installata è più recente  (quindi è possibile anche un downgrade);
Questo è il file dove è possibile definire tutte le priorità che si vogliono, fermo restando quanto detto nella sezione dedicata ad <code>apt.conf</code>. La sintassi generale è la seguente:
* pin compreso tra 991 e  1000: il pacchetto viene installato anche nel caso sia disponibile una  versione dello stesso nel repository della "target relase", ma NON se  nel sistema è già presente una versione più recente;
<pre>
* pin  compreso tra 501 e 990: il pacchetto sarà installato solo se questo non è  presente nella "target relase" e/o se la versione eventualmente già  installata non è più recente;
Package: nome pacchetto o espressione regolare
* pin compreso tra 101 e 500: il  pacchetto sarà installato solo se questo non è presente nella "target  relase" e/o in altri repository e/o se la versione eventualmente già  installata non è più recente;
Pin: parametro da usare per identificare la versione desiderata
* pin compreso tra 0 e 100: il pacchetto viene installato solo se non è installata nessuna versione del pacchetto;
Pin-Priority: numero
* pin minore di 0 (negativo): l’installazione del pacchetto è impedita a priori (salvo apposito comando), qualsiasi sia l’origine.
</pre>
Ecco un esempio del file preferences:
Un paio di esempi del tutto arbitrari:
<pre>
<pre>
Package: *
Package: vlc
Pin: release a=testing
Pin: release a=testing
Pin-Priority: 900
Pin-Priority: 991
   
   
Package: *
Package: virtualbox4*
Pin: release o=Debian
Pin: Release o=Oracle Corporation
Pin-Priority: -10
Pin-Priority: 780
</pre>
</pre>
Questo esempio tiene conto di due casi:
Nel primo esempio si è definito il pinning per il pacchetto di nome "vlc", richiedendo che le versioni appartenenti alla distribuzione testing abbiano priorità 991. Nel secondo invece sfruttando una semplicissima espressione regolare si impone che tutti i pacchetti il cui nome inizia per "virtualbox4" e appartenenti al repository la cui origine è definita come "Oracle Corporation" abbiano priorità 780.
# i pacchetti della testing, cui viene assegnato pin 900 (dalla riga 1 alla 3);
# tutti gli altri pacchetti di tutte le altre versioni (in questo caso quindi di stable e unstable), cui viene assegnato pin -10 (dalla riga 5 alla 7).
In altri termini, qui abbiamo specificato che i pacchetti della testing (che è anche la versione indicata in apt.conf) dovranno  avere la massima priorità. Ai pacchetti di altre versioni non è assegnata nessuna priorità (pin minore di 0) e quindi verranno  eventualmente installati solo su nostro comando.<br>
Per una guida esaustiva <code>man apt_preferences</code>.


== Installare pacchetti di differenti versioni ==
== Installare pacchetti di differenti versioni ==
Fatto  questo, sarà sufficiente aggiungere al proprio  ''/etc/apt/sources.list'' i repository delle altre versioni che ci  interessano.
Fatto  questo, sarà sufficiente aggiungere al proprio  ''/etc/apt/sources.list'' i repository delle altre versioni che ci  interessano.
Per installare pacchetti dalla nostra versione in  uso, quella che abbiamo anche specificato in ''apt.conf'', procederemo  normalmente, come abbiamo sempre fatto. Per pacchetti di altre versioni,  invece, avremo a disposizione due comandi:
Per installare pacchetti dalla nostra versione in  uso, quella che abbiamo anche specificato in ''apt.conf'', procederemo  normalmente, come abbiamo sempre fatto. Per pacchetti di altre versioni,  invece, avremo a disposizione due comandi:
2 894

contributi