Introduzione al pinning: differenze tra le versioni

(redirect a guida principale)
 
(5 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
#REDIRECT [[Repository_%26_pinning]]
== Introduzione al pinning su Debian ==
Come molti sapranno, esistono tre versioni di Debian (chiamate anche release):
# Debian stable, attualmente ''Squeeze'';
# Debian testing, attualmente ''Wheezy'';
# Debian unstable, attualmente (e sempre,  un nome fisso) ''Sid''.
Il software della stable non viene aggiornato, eccezion fatta per gli aggiornamenti della sicurezza; il software della testing e della unstable viene al contrario aggiornato frequentemente, con una maggiore frequenza per la unstable. Oltre queste tre, ci sarebbero anche la ''oldstable'' (la vecchia stable, precedente all’attuale stable) e la ''experimental'' (una versione altamente sperimentale), ma di scarsissima diffusione rispetto alle altre (e che vi sconsiglio caldamente).
<br/>
Vi invito ad un approfondimento dell’argomento (approfondimento che personalmente considero molto interessante), sia sulle precise differenze tra le versioni, sia sui meccanismi che portano al passaggio da una versione a un’altra².
<br/><br/>
Ora, spesso accade che utilizzando la testing o ancor di più la stable si voglia del software più nuovo rispetto a quello in dotazione; o che al contrario, utilizzando la testing o ancor di più la unstable si voglia del software più stabile rispetto a quello in dotazione. Qui entra in gioco il pinning dei repository – meglio “tra i repository” -, che permette di installare con semplicità del software appartenente a una versione di Debian diversa da quella in uso, senza creare casino nel sistema e nel gestore dei pacchetti e permettendo di scegliere se installare solo un pacchetto da un’altra versione o se anche le sue relative dipendenze (alternativamente, verranno utilizzate le dipendenze della versione in uso, se disponibili).
Affinché questo sia possibile, è necessario innanzitutto istruire apt secondo i nostri desideri. I file in questione sono due e precisamente ''/etc/apt/apt.conf'' e ''/etc/apt/preferences'', che ora andremo ad analizzare. In un’installazione di default questi due file non sono normalmente presenti (vengono utilizzate delle impostazioni di default), quindi dovremmo procedere col crearli manualmente con i privilegi di root.
 
== Il file /etc/apt/apt.conf ==
<pre>
APT::Default-Release "testing";
APT::Cache-Limit 24000000;
Apt::Get::Purge;
APT::Clean-Installed;
APT::Get::Fix-Broken;
APT::Get::Fix-Missing;
APT::Get::Show-Upgraded "true";
APT::Force-LoopBreak=true;
APT::Get::AllowUnauthenticated 1;
</pre>
Andiamo ad analizzare questo esempio riga per riga:
# specifichiamo la versione di Debian predefinita, quella che vogliamo utilizzare di default (nel mio caso e negli esempi successivi la testing);
# specifichiamo la dimensione della cache;
# ordiniamo il purge dei pacchetti;
# ordiniamo la pulizia della cache;
# chiediamo di sistemare automaticamente i pacchetti che presentano dipendenze non soddisfatte;
# chiediamo di sistemare i pacchetti non possibili da installare;
# chiediamo di mostrare gli upgrade dei pacchetti;
# chiediamo di forzare il ''loop'' dei pacchetti con dipendenze non soddisfatte;
# autorizziamo l’installazione di pacchetti non autenticati.
Essendo questo un argomento molto complesso, per scoprire tutte le funzioni disponibili e per approfondire il funzionamento di quelle appena elencate, vi rimando al manuale e agli help:
<pre>
# apt-get --help
# aptitude --help
man apt.conf
</pre>
 
== Il file /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);
* 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;
* 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;
* 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 compreso tra 0 e 100: il pacchetto viene installato solo se non è installata nessuna versione del pacchetto;
* pin minore di 0 (negativo): l’installazione del pacchetto è impedita a priori (salvo apposito comando), qualsiasi sia l’origine.
Ecco un esempio del file preferences:
<pre>
Package: *
Pin: release a=testing
Pin-Priority: 900
Package: *
Pin: release o=Debian
Pin-Priority: -10
</pre>
Questo esempio tiene conto di due casi:
# 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.
 
== Installare tramite pinning ==
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:
<pre>
# apt-get install pacchetto/unstable
</pre>
che installa ''pacchetto'' dalla ''unstable'' con le dipendenze della versione indicata in ''/etc/apt/apt.conf'' (nell’esempio vista prima, la testing), se disponibili. In alternativa:
<pre>
# apt-get install -t unstable pacchetto
</pre>
che installa ''pacchetto'' dalla ''unstable'' con le dipendenze della ''unstable''.
 
== Credits ==
Questa guida è una riproposizione della guida originale pubblicata su [http://www.mirkopagliai.it/debian-repository-e-pinning www.mirkopagliai.it], distribuita secondo licenza originale CC.
<br/>
<br/>
[[Categoria:Apt]]

Versione attuale delle 11:25, 30 ago 2014

Reindirizza a: