I repository ed il loro utilizzo: differenze tra le versioni

m
nessun oggetto della modifica
mNessun oggetto della modifica
Riga 3: Riga 3:
}}
}}
{{Versioni compatibili}}
{{Versioni compatibili}}
== Introduzione ==
= Introduzione =
Il [[repository]] è a tutti gli effetti un archivio ordinato dove sono raccolti i pacchetti Debian (siano essi pacchetti binari o sorgenti) in modo ben organizzato e costantemente aggiornato. In ogni sistema Debian i repository utilizzati vengono indicati nel file <code>/etc/apt/sources.list</code>. Vedi anche [[Faq#Repository|FAQ: Cos'è un '''repository'''?]].
Il [[repository]] è a tutti gli effetti un archivio ordinato dove sono raccolti i pacchetti Debian (siano essi pacchetti binari o sorgenti) in modo ben organizzato e costantemente aggiornato. In ogni sistema Debian i repository utilizzati vengono indicati nel file <code>/etc/apt/sources.list</code>. Vedi anche [[Faq#Repository|FAQ: Cos'è un '''repository'''?]].


== La Struttura dei repository ==
= La Struttura dei repository =
Un repository è suddivisibile, grossomodo, in due sezioni:
Un repository è suddivisibile, grossomodo, in due sezioni:
* '''dists''' in questo ramo sono contenuti i file di controllo, che permettono il funzionamento del sistema di pacchettizzazione. Infatti sono presenti i file che descrivono i pacchetti presenti nell'archivio (divisi per la release di appartenenza);
* '''dists''' in questo ramo sono contenuti i file di controllo, che permettono il funzionamento del sistema di pacchettizzazione. Infatti sono presenti i file che descrivono i pacchetti presenti nell'archivio (divisi per la release di appartenenza);
Riga 16: Riga 16:
* '''tools''' contiene degli strumenti Dos per la creazione di dischetti di boot, partizionamento e lancio di Linux.
* '''tools''' contiene degli strumenti Dos per la creazione di dischetti di boot, partizionamento e lancio di Linux.


== La Suddivisione del repository ==
= La Suddivisione del repository =
Navigando un po' tra gli archivi Debian, si nota subito una particolare suddivisione: i repository, infatti, sono divisi in '''main''', '''contrib''' e '''non-free''', nel modo seguente:
Navigando un po' tra gli archivi Debian, si nota subito una particolare suddivisione: i repository, infatti, sono divisi in '''main''', '''contrib''' e '''non-free''', nel modo seguente:
* '''main''' è la sezione principale, che contiene il 90% dei pacchetti presenti in Debian;
* '''main''' è la sezione principale, che contiene il 90% dei pacchetti presenti in Debian;
Riga 25: Riga 25:




== Sources.list ==
= Sources.list =
La gestione dei repository avviene principalmente tramite modifiche al file <code>'''/etc/apt/sources.list'''</code>, questo è forse il più importante file di configurazione del sistema di gestione dei pacchetti Debian; contiene infatti l'elenco e gli indirizzi dei repository a cui apt accede.
La gestione dei repository avviene principalmente tramite modifiche al file <code>'''/etc/apt/sources.list'''</code>, questo è forse il più importante file di configurazione del sistema di gestione dei pacchetti Debian; contiene infatti l'elenco e gli indirizzi dei repository a cui apt accede.


=== Ordine di Inserimento ===
== Ordine di Inserimento ==
È importante inserire i repository con un giusto ordine: i primi in elenco, infatti, sono i più importanti (o favoriti). Per migliorare le performance, è consigliabile ordinarli per velocità (es. prima il CD-ROM, poi la rete locale, poi internet, ecc.).
È importante inserire i repository con un giusto ordine: i primi in elenco, infatti, sono i più importanti (o favoriti). Per migliorare le performance, è consigliabile ordinarli per velocità (es. prima il CD-ROM, poi la rete locale, poi internet, ecc.).


Riga 39: Riga 39:
per aggiornare la lista dei pacchetti.
per aggiornare la lista dei pacchetti.


=== Sintassi ===
== Sintassi ==
Ogni riga che descrive un repository ha una ben determinata sintassi:
Ogni riga che descrive un repository ha una ben determinata sintassi:
<pre>
<pre>
Riga 57: Riga 57:
* <code>'''componente/i'''</code>: indica le sezioni (<code>main</code>, <code>contrib</code>, <code>non-free</code>) del repository da inserire; sono possibili scelte multiple.
* <code>'''componente/i'''</code>: indica le sezioni (<code>main</code>, <code>contrib</code>, <code>non-free</code>) del repository da inserire; sono possibili scelte multiple.


=== Alcuni esempi ===
== Alcuni esempi ==
Non c'è niente di meglio, per capire la sintassi del file <code>sources.list</code>, di un po' di esempi.
Non c'è niente di meglio, per capire la sintassi del file <code>sources.list</code>, di un po' di esempi.


Riga 95: Riga 95:
Per altri repository vedere: [[Repository ufficiali|Lista repository ufficiali Debian]] e [[Repository non ufficiali]].
Per altri repository vedere: [[Repository ufficiali|Lista repository ufficiali Debian]] e [[Repository non ufficiali]].


=== Sources.list aggiuntivi ===
== Sources.list aggiuntivi ==
A volte può capitare di avere l'esigenza di avere più di un file contenente la lista dei repository da cui scaricare i pacchetti. Questo può capitare nel caso il file <code>sources.list</code> inizi a contenere un numero molto elevato di righe oppure perché si vogliono utilizzare dei repository diversi per le normali operazioni sui pacchetti.
A volte può capitare di avere l'esigenza di avere più di un file contenente la lista dei repository da cui scaricare i pacchetti. Questo può capitare nel caso il file <code>sources.list</code> inizi a contenere un numero molto elevato di righe oppure perché si vogliono utilizzare dei repository diversi per le normali operazioni sui pacchetti.


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 ==
= Pinning =


=== Introduzione ===
== Introduzione ==


Come molti sapranno, esistono tre distribuzioni di Debian (chiamate anche release):
Come molti sapranno, esistono tre distribuzioni di Debian (chiamate anche release):
Riga 123: Riga 123:
* Col termine distribuzione si intendono stable, testing e unstable. Ciascuna distribuzione ha un suo singolo repository (fonte) principale (due se si conteggia anche l'eventuale repository dedicato agli aggiornamenti di sicurezza) che è quello automaticamente dichiarato dall'installer di debian, ma si tenga presente che ogni distribuzione può avere più fonti sia ufficiali che non ufficiali.
* Col termine distribuzione si intendono stable, testing e unstable. Ciascuna distribuzione ha un suo singolo repository (fonte) principale (due se si conteggia anche l'eventuale repository dedicato agli aggiornamenti di sicurezza) che è quello automaticamente dichiarato dall'installer di debian, ma si tenga presente che ogni distribuzione può avere più fonti sia ufficiali che non ufficiali.
* Col termine fonti si intendono genericamente i repository, ufficiali (es. stable, testing, unstable e backports) o meno (es. deb-multimedia), che forniscono pacchetti relativi ad una o più distribuzioni. Ogni fonte può avere più copie di se stesso (mirrors).
* Col termine fonti si intendono genericamente i repository, ufficiali (es. stable, testing, unstable e backports) o meno (es. deb-multimedia), che forniscono pacchetti relativi ad una o più distribuzioni. Ogni fonte può avere più copie di se stesso (mirrors).
* Il pinning nasce come strumento per regolare la priorità in base al numero di versione dei pacchetti, e non alla loro fonte. È tuttavia possibile gestire anche questo secondo caso, almeno in parte, prestando attenzione.
* Il pinning è uno strumento per regolare la priorità in base al numero di versione dei pacchetti, e non alla fonte di provenienza. Questo significa che non è possibile discriminare tra due pacchetti aventi lo stesso numero di versione e provenienti da due repository differenti, ovvero in caso di pari versione ad essere installato sarà la versione proveniente dal repository elencato per primo nel file <code>sourrces.list</code>.


=== Priorità come punteggio ===
== Priorità come punteggio ==
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:


Riga 157: Riga 157:
* 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 ==


Questo file insieme ad altri permette di definire le opzioni di APT e relativi strumenti senza bisogno di digitarli sempre da riga di comando. Si vedano le guide dedicate ad [[Apt-get | Apt-Get]] e [[Aptitude]] per alcuni brevi esempi contenenti alcui dei parametri più comuni.
Questo file insieme ad altri permette di definire le opzioni di APT e relativi strumenti senza bisogno di digitarli sempre da riga di comando. Si vedano le guide dedicate ad [[Apt-get | Apt-Get]] e [[Aptitude]] per alcuni brevi esempi contenenti alcui dei parametri più comuni.
Riga 166: Riga 166:
che equivale alla dichiarazione in riga di comando dell'opzione '''-t distribuzione_voluta''' sia in [[Apt-get | Apt-Get]] che [[Aptitude]]. Tale dichiarazione attribuisce priorità 990 a tutti i pacchetti appartenenti alla distribuzione specificata
che equivale alla dichiarazione in riga di comando dell'opzione '''-t distribuzione_voluta''' sia in [[Apt-get | Apt-Get]] che [[Aptitude]]. Tale dichiarazione attribuisce priorità 990 a tutti i pacchetti appartenenti alla distribuzione specificata


{{Warningbox|Tale priorità si applica alla distribuzione e non alla fonte, quindi ad ottenere la suddetta priorità non saranno solo i pacchetti appartenenti al repository principale (o ai due repository principali), ma anche quelli provenienti da altre fonti se contrassegnati dal gestore del repository come appartenenti alla tal distribuzione}}
{{Warningbox|Tale priorità si applica alla distribuzione e non alla fonte, quindi ad ottenere la suddetta priorità non saranno solo i pacchetti appartenenti al repository principale (o ai due repository principali), ma anche quelli provenienti da altre fonti se contrassegnati dal gestore del repository come appartenenti alla tal distribuzione.}}


Si noti inoltre che:
Si noti inoltre che:
Riga 189: Riga 189:
</pre>
</pre>


=== Il file /etc/apt/preferences ===
== 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).
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 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);
Riga 213: Riga 213:
Per una guida esaustiva <code>man apt_preferences</code>.
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:
Riga 225: Riga 225:
che installa ''pacchetto'' dalla ''unstable'' con le dipendenze della ''unstable''.
che installa ''pacchetto'' dalla ''unstable'' con le dipendenze della ''unstable''.


=== Un esempio concreto ===
== Un esempio concreto ==


In questo how-to mostrerò come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental e deb-multimedia (audio/video) 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 e deb-multimedia (audio/video) 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 252: Riga 252:
</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>.
Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi.
Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi.


===== 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 322: Riga 322:
Possiamo vedere che nel file Release è contenuto proprio il dato che stavamo cercando: Origin.
Possiamo vedere che nel file Release è contenuto proprio il dato che stavamo cercando: Origin.


===== 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>
Riga 362: Riga 362:
che provvederà a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze.
che provvederà a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze.


== Approfondimenti ==
= Approfondimenti =
=== Sitografia ===
== Sitografia ==
* I paragrafi 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.
* I paragrafi 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.


2 894

contributi