Repository & pinning: differenze tra le versioni

Riga 188: Riga 188:


Abbiamo visto come poter avere una Debian Stable, Testing o Unstable adattando i repository all'uopo. Però, usando una Stable o una Testing potrebbe nascere l'esigenza di bloccare un pacchetto o volerlo aggiornare ad una versione che si trova in un ramo superiore senza compromettere la stabilità e la funzionalità della versione che si sta utilizzando o addirittura fare un downgrade di un pacchetto o dell'intera versione (caso molto delicato). Per far ciò Debian utilizza un meccanismo molto sofisticato, chiamato ''pinning'', che permette di assegnare ai vari pacchetti una priorità per l'installazione indipendentemente dal ramo o versione di cui fanno parte (stable, testing, unstable, experimental).<br />
Abbiamo visto come poter avere una Debian Stable, Testing o Unstable adattando i repository all'uopo. Però, usando una Stable o una Testing potrebbe nascere l'esigenza di bloccare un pacchetto o volerlo aggiornare ad una versione che si trova in un ramo superiore senza compromettere la stabilità e la funzionalità della versione che si sta utilizzando o addirittura fare un downgrade di un pacchetto o dell'intera versione (caso molto delicato). Per far ciò Debian utilizza un meccanismo molto sofisticato, chiamato ''pinning'', che permette di assegnare ai vari pacchetti una priorità per l'installazione indipendentemente dal ramo o versione di cui fanno parte (stable, testing, unstable, experimental).<br />
Per far ciò bisogna agire su due file:<br />
Per far ciò bisogna agire su due file: <code>/etc/apt/apt.conf</code> e <code>/etc/apt/preferences</code><br />
<br />
<br/>
  ''/etc/apt/apt.conf'' e ''/etc/apt/preferences''<br />
Di norma questi due file non sono presenti dopo un'installazione, quindi bisogna crearli ex-novo utilizzando un editor di testo.<br/>
<br />
<br/>
Di norma questi due file non sono presenti dopo un'installazione, quindi bisogna crearli ex-novo utilizzando un editor di testo.<br />
<br />
Cosa si andrà a scrivere in questi due file? Cercheremo di inserire alcune funzioni base, per aver un minimo di funzionalità.
Cosa si andrà a scrivere in questi due file? Cercheremo di inserire alcune funzioni base, per aver un minimo di funzionalità.


{{ Warningbox | considerata la complessità dell'argomento, questo mini how-to ha il solo scopo all'introduzione di questa utility, per un uso avanzato far riferimento a
{{ Warningbox | considerata la complessità dell'argomento, questo mini how-to ha il solo scopo all'introduzione di questa utility, per un uso avanzato far riferimento a [http://manpages.debian.net/man/5/apt_preferences man apt.conf] }}


<pre>man apt.conf
In '''/etc/apt/apt.conf''' si daranno le indicazioni:


http://manpages.debian.net/man/5/apt_preferences</pre> }}
- della versione che si vuole utilizzare come default (stable)<br>
- della dimensione della cache<br>
- del purge dei pacchetti<br>
- della pulizia della cache<br>
- del fix dei pacchetti rotti (causa dipendenze non soddisfatte)<br>
- del fix dei pacchetti non possibili da installare<br>
- di mostrare gli upgrade dei pacchetti<br>
- di forzare il loop dei pacchetti rotti (causa dipendenze non soddisfatte)<br>
- di permettere l'installazione di pacchetti non autenticati (manca la chiave pubblica)<br>


in questo file si daranno le indicazioni
quindi il file sarà come segue


<pre>
<pre>
della versione che si vuole utilizzare come default stable
della dimensione della cache
del purge dei pacchetti
della pulizia della cache
del fix dei pacchetti rotti (causa dipendenze non soddisfatte)
del fix dei pacchetti non possibili da installare
di mostrare gli upgrade dei pacchetti
di forzare il loop dei pacchetti rotti (causa dipendenze non soddisfatte)
di permettere l'installazione di pacchetti non autenticati (manca la chiave pubblica)</pre>
quindi il file '''/etc/apt/apt.conf''' sarà come segue
  <pre>
   APT::Default-Release "stable";  
   APT::Default-Release "stable";  


Riga 247: Riga 232:
'''/etc/apt/preferences'''
'''/etc/apt/preferences'''


Prima di vedere la sintassi per strutturare il file cerchiamo di capire il valore che la policy Debian assegna ad un singolo pacchetto o alla release (stable o testing) in generale:<br />
Prima di vedere la sintassi per strutturare il file cerchiamo di capire il valore che la policy Debian assegna ad un singolo pacchetto o alla release (stable o testing) in generale:<br/>
<br />
<br/>
PIN valori<br />
'''Valore del PIN:'''<br/>
<br />
- superiore a '''1000''' ha l'assoluta priorità nell'installazione può implicare il downgrade<br/>
superiore a '''1000''' ha l'assoluta priorità nell'installazione può implicare il downgrade<br />
- da '''991 a 1000''' il pacchetto verrà installato anche se non fa parte della release (specificata in apt.conf), a meno che la versione installata sia più recente<br/>
<br />
- da '''551 a 990''' il pacchetto verrà installato a meno che ci sia disponibile una versione che fa parte della release (specificata in apt.conf) o che la versione installata sia più recente<br/>
da '''991 a 1000''' il pacchetto verrà installato anche se non fa parte della release (specificata in apt.conf), a meno che la versione installata sia più recente<br />
- da '''101 a 550''' il pacchetto verrà installato a meno che ci sia disponibile una versione appartenente a qualsiasi release o che la versione installata sia più recente<br/>
<br />
- da '''0 a 100''' il pacchetto viene installato solo se non è installata nessuna versione del pacchetto<br/>
da '''551 a 990''' il pacchetto verrà installato a meno che ci sia disponibile una versione che fa parte della release (specificata in apt.conf) o che la versione installata sia più recente<br />
- minore di '''0''' previene l'installazione del pacchetto, qualsiasi sia l'origine<br/>
<br />
<br/>
da '''101 a 550''' il pacchetto verrà installato a meno che ci sia disponibile una versione appartenente a qualsiasi release o che la versione installata sia più recente<br />
Avendo visto il valore del PIN possiamo adattare il nostro file ''/etc/apt/preferences'' ai nostri bisogni, bloccando o retrocedendo oppure aggiornando i vari pacchetti. Da tenere in considerazione che se usiamo una stable ed installiamo un pacchetto da testing o unstable non avremo più la garanzia che essa ci offre.<br/>
<br />
<br/>
da '''0 a 100''' il pacchetto viene installato solo se non è installata nessuna versione del pacchetto<br />
<br/>
<br />
Qualche esempio pratico<br/>
minore di '''0''' previene l'installazione del pacchetto, qualsiasi sia l'origine<br />
<br/>
<br />
Fondamentale aver creato il file '''/etc/apt/apt.conf''' (dove avremo specificato la nostra release preferita: stable o testing) e aver abilitato tutti i repository delle diverse release in '''/etc/apt/sources.list'''
<br />
Avendo visto il valore del PIN possiamo adattare il nostro file ''/etc/apt/preferences'' ai nostri bisogni, bloccando o retrocedendo oppure aggiornando i vari pacchetti. Da tenere in considerazione che se usiamo una stable ed installiamo un pacchetto da testing o unstable non avremo più la garanzia che essa ci offre.<br />
<br />
<br />
Qualche esempio pratico<br />
<br />
Fondamentale aver creato il file '''/etc/apt/apt.conf''' (dove avremo specificato la nostra release preferita: stable o testing) e aver abilitato tutti i reposytory delle diverse release in '''/etc/apt/sources.list'''


<pre>deb http://ftp.it.debian.org/debian/ stable main contrib non-free
<pre>
deb http://ftp.it.debian.org/debian/ stable main contrib non-free


deb http://mi.mirror.garr.it/mirrors/debian-multimedia stable main
deb http://www.deb-multimedia.org stable main non-free


deb http://www.backports.org/debian lenny-backports main contrib non-free
deb http://ftp.it.debian.org/debian/ stable-backports main contrib non-free


deb http://security.debian.org/ lenny/updates main contrib
deb http://security.debian.org/ stable/updates main contrib non-free


deb http://volatile.debian.org/debian-volatile/ lenny/volatile main
deb http://ftp.it.debian.org/debian/ stable-updates main contrib non-free


deb http://ftp.it.debian.org/debian/ testing main contrib non-free
deb http://ftp.it.debian.org/debian/ testing main contrib non-free


deb http://mi.mirror.garr.it/mirrors/debian-multimedia testing main
deb http://www.deb-multimedia.org stable main non-free


deb http://ftp.it.debian.org/debian/ unstable main contrib non-free
deb http://ftp.it.debian.org/debian/ unstable main contrib non-free


deb http://mi.mirror.garr.it/mirrors/debian-multimedia unstable main</pre>
deb http://www.deb-multimedia.org unstable main non-free
</pre>




Ovviamente chi usa Testing può omettere i repository della Stable.<br />
Ovviamente chi usa Testing può omettere i repository della Stable.<br/>
<br />
<br/>
<br />
<br/>
Ora possiamo vedere la policy Debian riguardo alle release:
Ora possiamo vedere la policy Debian riguardo alle release:


Riga 308: Riga 288:


<pre>
<pre>
          Package: *
Package: *
          Pin: release a=stable
Pin: release a=stable
          Pin-Priority: 900
Pin-Priority: 900


          Package: *
Package: *
          Pin: release o=Debian
Pin: release o=Debian
          Pin-Priority: -10   </pre>
Pin-Priority: -10
</pre>


Cerchiamo di capire il significato delle tre righe
Cerchiamo di capire il significato delle tre righe:


<pre>Package: *  vuol dire tutti i pacchetti
'''Package: *''' vuol dire tutti i pacchetti<br>
'''Pin: release a=stable''' tutti i pacchetti della release stable<br>
'''Pin-Priority: 900''' verranno installati solo pacchetti più aggiornati della stessa release (se ce ne sono)<br>
<br>     
mentre<br>


Pin: release a=stable  (a) tutti i pacchetti della release stable
'''Package: *''' vuol dire tutti i pacchetti<br>
 
'''Pin: release o=Debian''' (other) pacchetti di altre release<br>
Pin-Priority: 900  verranno installati solo pacchetti più aggiornati della stessa release (se ce ne sono)</pre>
'''Pin-Priority: -10''' nessuna priorità<br>
     
<br>
mentre
In questo caso verranno installati solo pacchetti più aggiornati della stessa release (se ce ne sono) e nessun altro pacchetto di release diverse verrà installato.<br/>
 
<pre>Package: *  vuol dire tutti i pacchetti
 
Pin: release o=Debian (other) pacchetti di altre release  
 
Pin-Priority: -10 nessuna priorità</pre>
 
In questo caso verranno installati solo pacchetti più aggiornati della stessa release (se ce ne sono) e nessun altro pacchetto di release diverse verrà installato.<br />
Se si vuole installare un pacchetto proveniente dalla release Testing si possono usare due comandi:
Se si vuole installare un pacchetto proveniente dalla release Testing si possono usare due comandi:


Riga 341: Riga 318:
<pre>apt-get install -t testing nome_pacchetto</pre>
<pre>apt-get install -t testing nome_pacchetto</pre>


''(installerà il pacchetto con le dipendenze della release testing. Il pacchetto non verrà più aggiornato fino a quando non ridaremo lo stesso comando)''<br />
''(installerà il pacchetto con le dipendenze della release testing. Il pacchetto non verrà più aggiornato fino a quando non ridaremo lo stesso comando)''<br/>
<br />
<br/>
{{ Warningbox | Considerata la stabilità della release Stable usando pacchetti di altre release potrebbe comprometterne la stabilità. Per avere una  
{{ Warningbox | Considerata la stabilità della release Stable, usare pacchetti di altre release potrebbe comprometterne la stabilità. Per avere una perfetta integrazione con Stable meglio usare il pinning con i pacchetti provenienti dai backports }}
 
perfetta integrazione con Stable meglio usare il pinning con i pacchetti provenienti dai backports }}


Se, ad esempio, volessimo installare la versione più recente di ''openoffice'' dai ''backports'':  
Se, ad esempio, volessimo installare la versione più recente di ''libreoffice'' dai ''backports'':  


<pre>apt-get -t lenny-backports install openoffice.org</pre>
<pre>apt-get -t stable-backports install libreoffice</pre>


per evitare che nei prossimi upgrades il pacchetto venga retrocesso alla versione della ''Stable'' nel file preferences aggiungere
per evitare che nei prossimi upgrades il pacchetto venga retrocesso alla versione della ''Stable'' nel file preferences aggiungere:


<pre>Package: openoffice.org
<pre>Package: libreoffice
Pin: release a=lenny-backports
Pin: release a=stable-backports
Pin-Priority: 999</pre>
Pin-Priority: 999</pre>


In questo modo rimarrà installata la versione del Backports.<br />
In questo modo rimarrà installata la versione del Backports.<br/>
<br />
<br/>
Come detto precedentemente in questa maniera possiamo fare il downgrade sia di un pacchetto o dell'intera release, basta agire sul file preferences indicando il pacchetto o la release modificando il Pin-Priority.<br />
Come detto precedentemente in questa maniera possiamo fare il downgrade sia di un pacchetto o dell'intera release, basta agire sul file preferences indicando il pacchetto o la release modificando il Pin-Priority.<br/>
Vediamo qualche esmpio concreto.<br />
Vediamo qualche esmpio concreto.<br/>
<br />
<br/>
''ES. n1''  voglio il ''pacchetto-1.0.1''  indipendentemente dalla release che utilizzo
''ES. n° 1''  voglio il ''pacchetto-1.0.1''  indipendentemente dalla release che utilizzo


<pre>Package: pacchetto
<pre>
Package: pacchetto
Pin: version 1.0.1
Pin: version 1.0.1
Pin-Priority: 1001</pre>
Pin-Priority: 1001
</pre>


in questo modo  ''pacchetto'' versione ''1.0.1'' non verrà mai scalzato né da una versione più recente né da una più vecchia (in caso di downgrade).<br />
in questo modo  ''pacchetto'' versione ''1.0.1'' non verrà mai scalzato né da una versione più recente né da una più vecchia (in caso di downgrade).<br/>
<br />
<br/>
''ES. n2''  fare il downgrade di una release (questo passaggio è molto delicato, usatelo con cautela):
''ES. n° 2''  fare il downgrade di una release (questo passaggio è molto delicato, usatelo con cautela):


          <pre>
<pre>
          Package: *
Package: *
          Pin: release a=stable
Pin: release a=stable
          Pin-Priority: 1001
Pin-Priority: 1001


          Package: *
Package: *
          Pin: release o=Debian
Pin: release o=Debian
          Pin-Priority: -10</pre>
Pin-Priority: -10
</pre>


in questo modo basta
in questo modo basta
Riga 395: Riga 373:
=== TESTING ===
=== TESTING ===


Se si sta utilizzando Testing a si ha l'esigenza d'installare un pacchetto da Unstable o Experimental (usare con molta cautela), come visto sopra creiamo i due files '''/etc/apt/apt.conf''' e '''/etc/apt/preferences''' come segue:<br />
Se si sta utilizzando Testing e si ha l'esigenza di installare un pacchetto da Unstable o Experimental (usare con molta cautela), come visto sopra creiamo i due files '''/etc/apt/apt.conf''' e '''/etc/apt/preferences''' come segue:<br/>
<br />
<br/>
'''/etc/apt/apt.conf'''
'''/etc/apt/apt.conf'''
  <pre>
  <pre>
Riga 421: Riga 399:
'''/etc/apt/preferences'''
'''/etc/apt/preferences'''
<pre>
<pre>
          Package: *
Package: *
          Pin: release a=testing
Pin: release a=testing
          Pin-Priority: 800
Pin-Priority: 800


          Package: *
Package: *
          Pin: release a=unstable
Pin: release a=unstable
          Pin-Priority: 600
Pin-Priority: 600


          Package: *
Package: *
          Pin: release a=experimental
Pin: release a=experimental
          Pin-Priority: 50  
Pin-Priority: 50


          Package: *
Package: *
          Pin: release o=Debian
Pin: release o=Debian
          Pin-Priority: -10   </pre>
Pin-Priority: -10
</pre>


Questo farà in modo che apt installi di default i pacchetti provenienti dalla release ''Testing''.<br />
Questo farà in modo che apt installi di default i pacchetti provenienti dalla release ''Testing''.<br/>
Se si vogliono installare pacchetti provenienti da ''Unstable'' o ''Experimental'':
Se si vogliono installare pacchetti provenienti da ''Unstable'' o ''Experimental'':


Riga 447: Riga 426:


''questo installerà il pacchetto con le dipendenze della release unstable''<br />
''questo installerà il pacchetto con le dipendenze della release unstable''<br />
<br />
<br/>
Per quanto riguarda il mantenimento o il downgrade di un pacchetto specifico operare come indicato sopra nella sezione STABLE.
Per quanto riguarda il mantenimento o il downgrade di un pacchetto specifico operare come indicato sopra nella sezione STABLE.


[[Categoria:E-zine]]
[[Categoria:E-zine]]
317

contributi