I repository ed il loro utilizzo: differenze tra le versioni

Nessun oggetto della modifica
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>


== Repository appartenenti a differenti relase ==
== 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>
2 894

contributi