Repository & pinning: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
nessun oggetto della modifica
mNessun oggetto della modifica
Nessun oggetto della modifica
Riga 8: Riga 8:


[[Categoria:Apt]] [[Categoria:Repository ufficiali]]
[[Categoria:Apt]] [[Categoria:Repository ufficiali]]
== MANUTENERE DEBIAN ==
Dopo aver installato una Debian nasce il bisogno di aggiungere nuovi programmi e allo stesso tempo tenerla costantemente aggiornata.<br />
Per questo scopo Debian dispone di un tool potentissimo: ''apt'' (Advanced Packaging Tool), con numerosi strumenti sia da riga di comando (la shell), come dpkg, apt-get, aptitude, dselect, wajig, sia per mezzo di interfacce grafiche come synaptic, aptitude, adept, gjig ed altri.<br />
Per comprendere appieno tutto il meccanismo delle installazioni e degli aggiornamenti bisogna conoscere com'è strutturata una Debian. Questo articolo vuole essere un'introduzione alla comprensione della struttura per la gestione dei 20.000 ed oltre pacchetti che Debian offre. Per approfondimenti consultare le ricche pagine di documentazione che accompagnano Debian come ''debian-reference-it'', ''debian-faq-it'', etc.
Struttura di una Debian
== VERSIONI ==
'''Oldstable''': come si intuisce dal nome una vecchia stabile, supportata riguardo gli aggiornamenti per la sicurezza per un certo periodo di tempo in contemporanea alla stabile.
'''Stable''': la versione stabile ufficiale che beneficia quotidianamente degli aggiornamenti riguardo la sicurezza. Questa è la versione raccomandata per macchine di produzione e server.
'''Testing''': la versione di sviluppo destinata a divenire la nuova Stable (secondo ultime fonti con cadenza biennale [http://www.debian.org/News/2009/20090729/wiki/Help:Link Debian News Links] *** ''qui inserire il link a una risposta di Steve dove ne parla''*** ), anch'essa usufruisce degli aggiornamenti per la sicurezza, destinata ad un uso desktop (soggetta a qualche bug) sconsigliata per server e macchine di produzione. Della testing non esistono immagini ufficiali, ma da http://cdimage.debian.org/cdimage/weekly-builds/ è possibile scaricare delle immagini settimanali.
'''Unstable (sid)''': il titolo dice tutto! Qui si trovano i pacchetti più recenti ma che ancora non sono stati abbastanza testati per passare in testing, quindi in questa versione di sviluppo è possibile trovare molti pacchetti con bug. L'uso è riservato a coloro che vogliono testare pacchetti recenti e sanno a cosa vanno incontro. Per questo ramo non esistono immagini.
'''Experimental''': questa non è una release, non esiste nessuna immagine, non ha nessun supporto ed è riservata solamente a testare i pacchetti, è una vasca "pool" dove vengono immesse delle versioni di pacchetti recentissimi, l'uso è riservato solo per far dei test.
== REPOSITORY ==
Riguardo i pacchetti, Debian ha tre grandi vasche - pool.<br />
<br />
'''main''' qui si trovano i pacchetti che rispettano la policy debian, la DFSG – Debian Free Sotware Guidelines, pacchetti totalmente free.<br />
<br />
'''contrib''' pacchetti free ma che hanno alcune dipendenze che non rispettano la DFSG<br />
<br />
'''non-free''' pacchetti binari disponibili ma licenza e codice sorgente non libero.<br />
<br />
da questa premessa si evince che sia il tipo di versione (stable, testing o unstable) che la tipologia dei pacchetti (main, contrib o non-free) vengono lasciati scegliere all'utente. Altra cosa da tenere in considerazione è che in questi repository non vi è traccia di pacchetti multimediali(codec audio-video) che non rispettino la DFSG. A ciò pone rimedio un repository, mantenuto da un gruppo di sviluppatori: ''http://debian-multimedia.org/''.<br />
<br />
In una Debian-box il file che contiene tutte le "indicazioni" per la gestione del parco software è: ''/etc/atp/sources.list''.<br />
===COME CONFIGURARE I REPOSITORY PER DEBIAN..... ===
==== STABLE ====
Per avere una Debian stable completamente Free, in /etc/apt/sources.list si deve avere:
<pre>deb http://ftp.it.debian.org/debian/ stable main</pre>
e per una Debian stable con tutti i pacchetti disponibili:
<pre>deb http://ftp.it.debian.org/debian/ main contrib non-free</pre>
E' da considerare che, per non intasare il server, si possono utilizzare altri mirror (vedi http://www.debian.org/mirror/list per una lista completa), oppure per trovare il mirror più performante usare ''apt-spy''.<br />
<br />
Se si vogliono anche i pacchetti ''multimedia'' (codec audio-video non-free) aggiungiamo la riga seguente:
<pre>deb http://www.debian-multimedia.org stable main</pre>
per avere una maggiore banda possiamo utilizzare un mirror più vicino come:
<pre>deb http://mi.mirror.garr.it/mirrors/debian-multimedia stable main</pre>
per aggiugere la chiave pubblica dei repository multimedia dal terminale diamo i seguenti comandi:
<pre>apt-get update && apt-get install multimedia-keyring</pre>
Considerato il lungo lasso di tempo che intercorre per il rilascio di una stable nasce la necessità di avere aggiornati alcuni pacchetti. Debian mette a disposizione un altro repository che si integra alla perfezione, ovvero ''http://www.backports.org/dokuwiki/doku.php'' da cui è possibile scaricare pacchetti più recenti che si integrano con il ramo ''stable''. Per usufruire di questo repository aggiungere in ''/etc/apt/sources.list'' la seguente riga:
<pre>deb http://www.backports.org/debian lenny-backports main contrib non-free</pre>
quindi aggiungere la chiave pubblica:
<pre>apt-get update && apt-get install debian-backports-keyring</pre>
Per installare un pacchetto dal repository ''backports'' procedere in questo modo:
<pre>apt-get -t lenny-backports install nome_pacchetto</pre>
Riepilogando, per avere la disponibilità di tutti i pacchetti nel sources.list si deve avere:
<pre>
deb http://ftp.it.debian.org/debian/ stable main contrib non-free
deb http://mi.mirror.garr.it/mirrors/debian-multimedia stable main
deb http://www.backports.org/debian lenny-backports main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib
deb http://volatile.debian.org/debian-volatile/ lenny/volatile main</pre>
==== TESTING / UNSTABLE ====
Come detto precedentemente la versione Testing non ha un rilascio ufficiale, essendo costantemente aggiornata, ma si possono avere degli snapshot giornalieri o settimanali reperibili rispettivamente:
- ''immagini giornaliere ''
<pre>http://cdimage.debian.org/cdimage/daily-builds/ </pre>
- ''immagini settimanali''
<pre>http://cdimage.debian.org/cdimage/weekly-builds/</pre>
{{ Warningbox | le immagini possono soffrire di qualche bug e l'installazione può interrompersi e non terminare correttamente. Per non aver problemi far riferimento alla STABLE}}
Quindi per avere una Debian Testing/Unstable ci sono due possibilità:
* Usare una delle immagini giornaliere o settimanali;
* Fare un upgrade della Stable a Testing/Unstable;
Per il primo punto scaricare l'immagine iso, masterizzarla su un cd vergine e proseguire con l'installazione comune.
Per una guida grafica consultare
<pre>http://guide.debianizzati.org/index.php/Installare_Debian_Lenny_-_Guida_Grafica</pre>
oppure il numero 0 della e-zine
<pre>http://e-zine.debianizzati.org/</pre>
Riguardo l'upgrade da Stable a Testing bisogna modificare il file /etc/apt/sources.list aggiungendo i repository della Testing ovvero:
<pre>deb http://ftp.it.debian.org/debian/ testing main</pre>
ovviamente come per la Stable se si vogliono abilitati tutti i repository, contrib non-free e multimedia si deve avere il file /etc/apt/sources.list nella seguente maniera:
<pre>deb http://ftp.it.debian.org/debian/ stable main contrib non-free
deb http://mi.mirror.garr.it/mirrors/debian-multimedia stable main
deb http://ftp.it.debian.org/debian/ testing main contrib non-free
deb http://mi.mirror.garr.it/mirrors/debian-multimedia testing main</pre>
Salvato il file si procede con:
<pre>apt-get update
apt-get install apt dpkg aptitude
aptitude safe-upgrade
aptitude full-upgrade</pre>
Giunti a questo punto si dovrebbe essere in Debian Testing. Essendo Testing in continua evoluzione si raccomanda di fare degli upgrade quotidianamente.
{{ Warningbox |  maggiore è il lasso di tempo tra il rilascio della Stable e la Testing, maggiori sono le possibilità di fallimento nell'upgrade. Solo dopo il rilascio della nuova Stable è assicurato l'upgrade }}
==== UNSTABLE ====
Per fare un upgrade alla versione Debian Unstable, come detto non esistono immagini ufficiali, quindi bisogna partire da una Testing o da una installazione del sistema base ( netinstall, businesscard ), quindi modificare /etc/apt/sources.list aggiungendo i repository per Unstable :
<pre>deb http://ftp.it.debian.org/debian/ testing main contrib non-free
deb http://mi.mirror.garr.it/mirrors/debian-multimedia testing main
deb http://ftp.it.debian.org/debian/ unstable main contrib non-free
deb http://mi.mirror.garr.it/mirrors/debian-multimedia unstable main</pre>
Salvato il file si procede con:
<pre>apt-get update
apt-get install apt dpkg aptitude
aptitude safe-upgrade
aptitude full-upgrade</pre>
si può far riferimento alla guida
<pre>http://guide.debianizzati.org/index.php/Installare_Debian_SID</pre>
{{ Warningbox | L'uso di Unstable può compromettere la funzionalità del Sistema Operativo, siate consci di quello che state facendo }}
== PINNING ==
Abbiamo visto come poter avere una Debian Stable, Testing o Unstable adattando i repository all'uopo. Però, usando una Stable o una Testing potrebbe nascere l'esigenza di bloccare un pacchetto o volerlo aggiornare ad una versione che si trova in un ramo superiore senza compromettere la stabilità e la funzionalità della versione che si sta utilizzando o addirittura fare un downgrade di un pacchetto o dell'intera versione (caso molto delicato). Per far ciò Debian utilizza un meccanismo molto sofisticato, chiamato ''pinning'', che permette di assegnare ai vari pacchetti una priorità per l'installazione indipendentemente dal ramo o versione di cui fanno parte (stable, testing, unstable, experimental).<br />
Per far ciò bisogna agire su due file:<br />
<br />
  ''/etc/apt/apt.conf'' e ''/etc/apt/preferences''<br />
<br />
Di norma questi due file non sono presenti dopo un'installazione, quindi bisogna crearli ex-novo utilizzando un editor di testo.<br />
<br />
Cosa si andrà a scrivere in questi due file? Cercheremo di inserire alcune funzioni base, per aver un minimo di funzionalità.
{{ Warningbox | considerata la complessità dell'argomento, questo mini how-to ha il solo scopo all'introduzione di questa utility, per un uso avanzato far riferimento a
<pre>man apt.conf
http://manpages.debian.net/man/5/apt_preferences</pre> }}
in questo file si daranno le indicazioni
<pre>
della versione che si vuole utilizzare come default stable
della dimensione della cache
del purge dei pacchetti
della pulizia della cache
del fix dei pacchetti rotti (causa dipendenze non soddisfatte)
del fix dei pacchetti non possibili da installare
di mostrare gli upgrade dei pacchetti
di forzare il loop dei pacchetti rotti (causa dipendenze non soddisfatte)
di permettere l'installazione di pacchetti non autenticati (manca la chiave pubblica)</pre>
quindi il file '''/etc/apt/apt.conf''' sarà come segue
  <pre>
  APT::Default-Release "stable";
  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>
'''/etc/apt/preferences'''
Prima di vedere la sintassi per strutturare il file cerchiamo di capire il valore che la policy Debian assegna ad un singolo pacchetto o alla release (stable o testing) in generale:<br />
<br />
PIN valori<br />
<br />
superiore a '''1000''' ha l'assoluta priorità nell'installazione può implicare il downgrade<br />
<br />
da '''991 a 1000''' il pacchetto verrà installato anche se non fa parte della release (specificata in apt.conf), a meno che la versione installata sia più recente<br />
<br />
da '''551 a 990''' il pacchetto verrà installato a meno che ci sia disponibile una versione che fa parte della release (specificata in apt.conf) o che la versione installata sia più recente<br />
<br />
da '''101 a 550''' il pacchetto verrà installato a meno che ci sia disponibile una versione appartenente a qualsiasi release o che la versione installata sia più recente<br />
<br />
da '''0 a 100''' il pacchetto viene installato solo se non è installata nessuna versione del pacchetto<br />
<br />
minore di '''0''' previene l'installazione del pacchetto, qualsiasi sia l'origine<br />
<br />
<br />
Avendo visto il valore del PIN possiamo adattare il nostro file ''/etc/apt/preferences'' ai nostri bisogni, bloccando o retrocedendo oppure aggiornando i vari pacchetti. Da tenere in considerazione che se usiamo una stable ed installiamo un pacchetto da testing o unstable non avremo più la garanzia che essa ci offre.<br />
<br />
<br />
Qualche esempio pratico<br />
<br />
Fondamentale aver creato il file '''/etc/apt/apt.conf''' (dove avremo specificato la nostra release preferita: stable o testing) e aver abilitato tutti i reposytory delle diverse release in '''/etc/apt/sources.list'''
<pre>deb http://ftp.it.debian.org/debian/ stable main contrib non-free
deb http://mi.mirror.garr.it/mirrors/debian-multimedia stable main
deb http://www.backports.org/debian lenny-backports main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib
deb http://volatile.debian.org/debian-volatile/ lenny/volatile main
deb http://ftp.it.debian.org/debian/ testing main contrib non-free
deb http://mi.mirror.garr.it/mirrors/debian-multimedia testing main
deb http://ftp.it.debian.org/debian/ unstable main contrib non-free
deb http://mi.mirror.garr.it/mirrors/debian-multimedia unstable main</pre>
Ovviamente chi usa Testing può omettere i repository della Stable.<br />
<br />
<br />
Ora possiamo vedere la policy Debian riguardo alle release:
<pre>apt-cache policy</pre>
ci restituirà il PIN delle release, giusto per farci un'idea.<br />
Lo stesso per vedere la policy di un singolo pacchetto  es:
<pre>apt-cache policy nano</pre>
=== STABLE ===
Prendiamo in considerazione di lavorare con una Stable e il file preferences nel seguente modo
<pre>
          Package: *
          Pin: release a=stable
          Pin-Priority: 900
          Package: *
          Pin: release o=Debian
          Pin-Priority: -10  </pre>
Cerchiamo di capire il significato delle tre righe
<pre>Package: *  vuol dire tutti i pacchetti
Pin: release a=stable  (a) tutti i pacchetti della release stable
Pin-Priority: 900  verranno installati solo pacchetti più aggiornati della stessa release (se ce ne sono)</pre>
     
mentre
<pre>Package: *  vuol dire tutti i pacchetti
Pin: release o=Debian  (other)  pacchetti di altre release
Pin-Priority: -10 nessuna priorità</pre>
In questo caso verranno installati solo pacchetti più aggiornati della stessa release (se ce ne sono) e nessun altro pacchetto di release diverse verrà installato.<br />
Se si vuole installare un pacchetto proveniente dalla release Testing si possono usare due comandi:
<pre>apt-get install nome_pacchetto/testing</pre>
(''installerà il pacchetto con le dipendenze della stable'')
<pre>apt-get install -t testing nome_pacchetto</pre>
''(installerà il pacchetto con le dipendenze della release testing. Il pacchetto non verrà più aggiornato fino a quando non ridaremo lo stesso comando)''<br />
<br />
{{ Warningbox | Considerata la stabilità della release Stable usando pacchetti di altre release potrebbe comprometterne la stabilità. Per avere una
perfetta integrazione con Stable meglio usare il pinning con i pacchetti provenienti dai backports }}
Se, ad esempio, volessimo installare la versione più recente di ''openoffice'' dai ''backports'':
<pre>apt-get -t lenny-backports install openoffice.org</pre>
per evitare che nei prossimi upgrades il pacchetto venga retrocesso alla versione della ''Stable'' nel file preferences aggiungere
<pre>Package: openoffice.org
Pin: release a=lenny-backports
Pin-Priority: 999</pre>
In questo modo rimarrà installata la versione del Backports.<br />
<br />
Come detto precedentemente in questa maniera possiamo fare il downgrade sia di un pacchetto o dell'intera release, basta agire sul file preferences indicando il pacchetto o la release modificando il Pin-Priority.<br />
Vediamo qualche esmpio concreto.<br />
<br />
''ES. n1''  voglio il ''pacchetto-1.0.1''  indipendentemente dalla release che utilizzo
<pre>Package: pacchetto
Pin: version 1.0.1
Pin-Priority: 1001</pre>
in questo modo  ''pacchetto'' versione ''1.0.1'' non verrà mai scalzato né da una versione più recente né da una più vecchia (in caso di downgrade).<br />
<br />
''ES. n2''  fare il downgrade di una release (questo passaggio è molto delicato, usatelo con cautela):
          <pre>
          Package: *
          Pin: release a=stable
          Pin-Priority: 1001
          Package: *
          Pin: release o=Debian
          Pin-Priority: -10</pre>
in questo modo basta
<pre>aptitude update
aptitude safe-upgrade
aptitude full-upgrade</pre>
similmente con apt:
<pre>apt-get update
apt-get upgrade
apt-get dist-upgrade</pre>
=== TESTING ===
Se si sta utilizzando Testing a si ha l'esigenza d'installare un pacchetto da Unstable o Experimental (usare con molta cautela), come visto sopra creiamo i due files '''/etc/apt/apt.conf''' e '''/etc/apt/preferences''' come  segue:<br />
<br />
'''/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>
'''/etc/apt/preferences'''
<pre>
          Package: *
          Pin: release a=testing
          Pin-Priority: 800
          Package: *
          Pin: release a=unstable
          Pin-Priority: 600
          Package: *
          Pin: release a=experimental
          Pin-Priority: 50
          Package: *
          Pin: release o=Debian
          Pin-Priority: -10  </pre>
Questo farà in modo che apt installi di default i pacchetti provenienti dalla release ''Testing''.<br />
Se si vogliono installare pacchetti provenienti da ''Unstable'' o ''Experimental'':
<pre>apt-get install nome_pacchetto/unstable</pre>
''questo installerà il pacchetto con le dipendenze della testing''
<pre>apt-get install -t unstable nome_pacchetto</pre>
''questo installerà il pacchetto con le dipendenze della release unstable''<br />
<br />
Per quanto riguarda il mantenimento o il downgrade di un pacchetto specifico operare come indicato sopra nella sezione STABLE.
909

contributi

Menu di navigazione