3 155
contributi
Wtf (discussione | contributi) Nessun oggetto della modifica |
Wtf (discussione | contributi) |
||
Riga 107: | Riga 107: | ||
Bisogna specificare obbligatoriamente il percorso completo del file se questo non si trova nella directory <code>/etc/apt/sources.list.d</code> | Bisogna specificare obbligatoriamente il percorso completo del file se questo non si trova nella directory <code>/etc/apt/sources.list.d</code> | ||
== | == Pinning, ovvero come usare repository appartenenti a differenti relase == | ||
{{Box|NOTE| Le sezioni 5.1, 5.2, 5.3 e 5.4 sono una riproposizione della guida originale pubblicata su [http://www.mirkopagliai.it/debian-repository-e-pinning www.mirkopagliai.it], distribuita secondo licenza originale CC.}} | |||
=== Introduzione === | |||
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, o meglio “tra i repository”, che permette di installare con semplicità del software appartenente a una versione di Debian diversa da quella in uso o anche solo appartenente alla stessa distribuzione, ma proveniente da un altro repository. Tutto ciò eliminando il rischio di creare problemi nel sistema e nel gestore dei pacchetti poiché non è detto che l'attribuzione di priorità automatica dia il risultato voluto e/o migliore. | |||
Il pinning permette anche di scegliere se installare solo un pacchetto da un’altra versione o 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.<br> | |||
Per una guida esaustiva <code>man apt_preferences</code>. | |||
=== 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''. | |||
=== HOW TO === | |||
Spesso abbiamo la necessità di installare la nuova versione di un pacchetto di cui proprio non possiamo fare a meno, che però non è disponibile per il rilascio di Debian che abbiamo installato. | Spesso abbiamo la necessità di installare la nuova versione di un pacchetto di cui proprio non possiamo fare a meno, che però non è disponibile per il rilascio di Debian che abbiamo installato. | ||
Riga 117: | Riga 199: | ||
In questo how-to mostrerò come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental, Marillat (multimedia/video) e Rarewares.org (multimedia/audio), ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc...). | In questo how-to mostrerò come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental, Marillat (multimedia/video) e Rarewares.org (multimedia/audio), ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc...). | ||
=== Impostare i repository === | ==== Impostare i repository ==== | ||
Assicuriamoci di essere l'utente root e procediamo. | Assicuriamoci di essere l'utente root e procediamo. | ||
Riga 143: | Riga 225: | ||
</pre> | </pre> | ||
=== Configurare apt === | ==== Configurare apt ==== | ||
A questo punto dobbiamo preparare due file normalmente non presenti sulla nostra debianbox: si tratta dei file <code>/etc/apt/preferences</code> e <code>/etc/apt/apt.conf</code>. | A questo punto dobbiamo preparare due file normalmente non presenti sulla nostra debianbox: si tratta dei file <code>/etc/apt/preferences</code> e <code>/etc/apt/apt.conf</code>. | ||
Riga 149: | Riga 231: | ||
==== Il file <code>preferences</code> ==== | ===== Il file <code>preferences</code> ===== | ||
Creiamo il file <code>/etc/apt/preferences</code>: | Creiamo il file <code>/etc/apt/preferences</code>: | ||
Riga 212: | Riga 294: | ||
==== Il file <code>apt.conf</code> ==== | ===== Il file <code>apt.conf</code> ===== | ||
Ora creiamo il file <code>/etc/apt/apt-conf</code> | Ora creiamo il file <code>/etc/apt/apt-conf</code> |
contributi