|
|
(4 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, 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.
| |
| | |
| == 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]] | |