3 155
contributi
Wtf (discussione | contributi) |
Wtf (discussione | contributi) mNessun oggetto della modifica |
||
Riga 3: | Riga 3: | ||
}} | }} | ||
{{Versioni compatibili}} | {{Versioni compatibili}} | ||
= 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 = | |||
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 = | |||
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 = | |||
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 == | |||
È 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 == | |||
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 == | |||
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 == | |||
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 = | |||
== 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 | * 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 == | |||
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 == | |||
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 == | |||
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 == | |||
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 == | |||
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 == | |||
Assicuriamoci di essere l'utente root e procediamo. | Assicuriamoci di essere l'utente root e procediamo. | ||
Riga 252: | Riga 252: | ||
</pre> | </pre> | ||
== 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> === | |||
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> === | |||
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 = | |||
== 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. | ||
contributi