I repository ed il loro utilizzo
|
Versioni Compatibili Tutte le versioni supportate di Debian |
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 /etc/apt/sources.list
. Vedi anche FAQ: Cos'è un repository?.
La Struttura dei repository
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);
- doc raccoglie la documentazione di base per Debian (segnalazioni di Bug, Faq, il Contratto Sociale ed altro);
- indices contiene l'indice di tutti i file contenuti in tutti i pacchetti. Queste informazioni sono usate da
apt-file
; - non-US a causa di problemi legali dovuti al divieto di esportazione di materiale per la difesa (tra cui materiale crittografici, utilizzati anche in PGP e SSH). Per ovviare a questi problemi, i pacchetti sono stati posti in una sezione a parte, la cui distribuzione è legata a server non statunitensi;
- pool questo è l'archivio vero e proprio, dove sono contenuti i pacchetti, raggruppati per lettera iniziale;
- project contiene materiale per sviluppatori. Degne di nota la directory experimental, che contiene i pacchetti in fase di sviluppo e perfezionamento;
- 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:
- main è la sezione principale, che contiene il 90% dei pacchetti presenti in Debian;
- contrib raccoglie i pacchetti coerenti con i punti 5 e/o 6 delle DFSG, ma che dipendono da pacchetti che non la rispettano;
- non-free contiene dei pacchetti che possiedono delle limitazioni nella distribuzione (ad esempio perché non utilizzabili in ambito commerciale o perché dipendenti da applicazioni o pacchetti che non rispettano la Debian Free Software Guidelines)
Nota che... ...Debian promuove e percorre il sentiero del software totalmente libero; l'uso delle sezioni contrib e non-free è una scelta personale e non un obbligo. |
Sources.list
La gestione dei repository avviene principalmente tramite modifiche al file /etc/apt/sources.list
, 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.).
Se non si hanno esigenze particolari, gli utenti che installano Debian da CD o DVD possono cancellare o commentare le righe corrispondenti a queste sorgenti in /etc/apt/sources.list
subito dopo l'installazione. Il motivo è dovuto al fatto che i pacchetti che si trovano su questi supporti sono rapidamente superati dagli aggiornamenti presenti nei repository ufficiali; questi ultimi, se assenti, vanno ovviamente aggiunti manualmente ad /etc/apt/sources.list
.
Ogni volta che si aggiunge o si rimuove un repository dal file sources.list
è necessario impartire il comando:
# apt-get update
oppure:
# aptitude update
per aggiornare la lista dei pacchetti.
Sintassi
Ogni riga che descrive un repository ha una ben determinata sintassi:
deb[-src] <URI> <distribuzione> [componente/i]
Analizziamo i singoli componenti:
deb o deb-src
: serve ad indicare se il repository indicato contiene pacchetti binari o pacchetti sorgenti (se li contiene entrambi, è necessario specificarlo usando due righe diverse);URI
: indica l'indirizzo a cui è possibile trovare il repository; è possibile scegliere tra i seguenti metodi di accesso ai pacchetti:file
: permette di inserire un repository presente sul disco rigido del computer;cdrom
: permette di inserire un repository presente su un cd-rom;http
: permette di accedere ad un repository tramite il protocollo HTTP (se è impostata una variabile di ambientehttp_proxy
col formatohttp://server:port/
verranno usate queste opzioni per accedere al repository; in caso di necessità di autenticazione, è possibile specificare l'indirizzo del proxy, nella variabile d'ambientehttp_proxy
, nel seguente modo:http://user:pass@server:port/
, anche se risulta non essere un modo sicuro di autenticazione);ftp
: permette di accedere ad un repository tramite il protocollo FTP; è possibile specificare un proxy nello stesso modo indicato per http al punto precedente, sostituendo alla variabilehttp_proxy
ftp_proxy
;copy
: è identico a file, ma i file utilizzati vengono salvati nella cache di apt; utile nel caso di supporti removibili quali chiavette USB, floppy, memorie SD, ecc.;rsh, ssh
: permette di accedere ad un repository tramite il protocollo SSH. Non è possibile, però, effettuare alcuna autenticazione interattiva, ma solo tramite lo scambio di chiavi RSA;
distribuzione
: indica la distribuzione (o release) utilizzata, è possibile usare il nome in codice (lenny
,squeeze
,sid
) o il nome generico (stable
,testing
,unstable
);componente/i
: indica le sezioni (main
,contrib
,non-free
) del repository da inserire; sono possibili scelte multiple.
Alcuni esempi
Non c'è niente di meglio, per capire la sintassi del file sources.list
, di un po' di esempi.
I repository ufficiali (binari e sorgenti) presi da un mirror italiano:
deb http://ftp.it.debian.org/debian/ stable main deb-src http://ftp.it.debian.org/debian/ stable main
Ecco come invece si presenta la riga se si sceglie di aggiungere le sezioni contenenti software non totalmente libero.
solo contrib:
deb http://ftp.it.debian.org/debian/ stable main contrib deb-src http://ftp.it.debian.org/debian/ stable main contrib
anche non-free:
deb http://ftp.it.debian.org/debian/ stable main contrib non-free deb-src http://ftp.it.debian.org/debian/ stable main contrib non-free
Il repository di apt-build:
deb file:/var/cache/apt-build/repository apt-build main
Un repository 'artigianale' accessibile tramite un webserver:
deb http://repos.debianizzati.org ./
Un repository situato nella home dell'utente maxer, creato con dpkg-scanpackages
:
deb file:/home/maxer/repos ./
Per altri repository vedere: 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 sources.list
inizi a contenere un numero molto elevato di righe oppure perché si vogliono utilizzare dei repository diversi per le normali operazioni sui pacchetti.
Per far ciò è possibile creare dei semplici file di testo, contenenti gli indirizzi dei repository, nella directory /etc/apt/sources.list.d
. La sintassi da utilizzare al loro interno è uguale a quella del file sources.list
; si può scegliere liberamente il nome da assegnare ai file purché termini con l'estensione .list
Una volta creati i file aggiuntivi, questi verranno considerati da APT come se le righe al loro interno fossero presenti all'interno del file sources.list
.
È possibile anche specificare un file, contenente gli indirizzi dei repository, che non si trova all'interno della directory /etc/apt/sources.list.d
. Ad esempio, se il repository da cui abitualmente scarichiamo/aggiorniamo i pacchetti è irraggiungibile, basta creare un file (nell'esempio chiamato nomefile.list
) contenente dei repository appartenenti ad un diverso mirror ed eseguire:
# apt-get -o Dir::Etc::SourceList=/percorso/del/file/nomefile.list update
Bisogna specificare obbligatoriamente il percorso completo del file se questo non si trova nella directory /etc/apt/sources.list.d
Repository appartenenti a differenti relase
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.
Il caso più frequente è probabilmente quello di un'installazione di Testing con la necessità di installare anche pacchetti presenti solo in Unstable o in Experimental, oppure di voler usare un repository con pacchetti particolari, ma compilati per una release di Debian diversa dalla nostra.
APT è nostro fido alleato anche in questi frangenti, permettendoci di utilizzare fonti per pacchetti di release diverse (e soddisfarne le dipendenze) senza costringerci ad un upgrade dell'intera distribuzione e senza dover impazzire per risolvere conflitti e inconsistenze. Questa caratteristica è definita anche apt-pinning, dal pin che si imposta nel file /etc/apt/preferences
.
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
Assicuriamoci di essere l'utente root e procediamo.
Per prima cosa editiamo il file /etc/apt/sources.list
ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo, per esempio:
### Debian Ufficiale -- Testing deb http://ftp.it.debian.org/debian/ testing main non-free contrib ### Debian Ufficiale -- Testing Sicurezza deb http://security.debian.org/ testing/updates main contrib non-free ### Debian Ufficiale -- Sid deb http://ftp.it.debian.org/debian/ unstable main non-free contrib ### Debian Ufficiale -- Experimental deb http://ftp.debian.org/debian/ ../project/experimental main ### Multimedia -- Audio -- Rarewares deb http://www.rarewares.org/debian/packages/unstable ./ ### Multimedia -- Video -- Marillat deb ftp://ftp.nerim.net/debian-marillat/ etch main deb ftp://ftp.nerim.net/debian-marillat/ sid main
Configurare apt
A questo punto dobbiamo preparare due file normalmente non presenti sulla nostra debianbox: si tratta dei file /etc/apt/preferences
e /etc/apt/apt.conf
.
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 preferences
Creiamo il file /etc/apt/preferences
:
# touch /etc/apt/preferences
editiamolo col nostro editor di fiducia e inseriamo queste direttive:
Package: * Pin: release o=Unofficial Multimedia Packages Pin-Priority: 950 Package: * Pin: release o=xmixahlx Pin-Priority: 900 Package: * Pin: release a=testing Pin-Priority: 850 Package: * Pin: release a=unstable Pin-Priority: 800 Package: * Pin: release a=experimental Pin-Priority: 750
Il pinning può essere orientato ad un archivio, un'origine, la versione di un pacchetto, un componente, ecc...
Con "o=" si specifica l' origine (la distribuzione) del pacchetto, con "a=" l'archivio (sarge, sid, stable, ecc...).
Questo dato è reperibile in modo inequivocabile attraverso APT, andando a sbirciare all'interno del file "Release" che è contenuto in tutti i repository ufficiali. Per archivi personali e/o non ufficiali, invece, non è sempre e necessariamente presente (purtroppo).
Vediamo alcuni esempi:
# cd /var/lib/apt/lists # cat www.rarewares.org_debian_packages_unstable_._Release Archive: unstable Origin: xmixahlx Label: xmixahlx_rarewares-unstable Architecture: i386 # cat ftp.nerim.net_debian-marillat_dists_testing_main_binary-i386_Release Archive: testing Component: main Origin: Unofficial Multimedia Packages Label: Unofficial Multimedia Packages Architecture: i386
Dove:
- Archive = è l'archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...);
- Component = indica il tipo di componente (ad es.: main, contrib, non-free);
- Origin = specifica il proprietario del repository;
- Label = identifica il repository: potete inserire descrizioni, ecc...;
- Architecture = l'architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc...).
Possiamo vedere che nel file Release è contenuto proprio il dato che stavamo cercando: Origin.
Il file apt.conf
Ora creiamo il file /etc/apt/apt-conf
# touch /etc/apt/apt.conf
editiamolo inserendo quanto segue:
APT::Default-Release "testing"; APT::Cache-Limit 15000000; Apt::Get::Purge; APT::Clean-Installed; APT::Get::Fix-Broken; APT::Get::Fix-Missing; APT::Get::Show-Upgraded "true";
Facciamo l'update del database dei pacchetti:
# apt-get update
D'ora in avanti avremo due possibilità per installare un nuovo pacchetto: il metodo che usiamo di solito e cioè:
# apt-get install nome_pacchetto
che utilizzerà pacchetti proveniente dalla versione impostata come Default-Release in apt.conf, oppure il comando
# apt-get install -t versione_di_debian nome_pacchetto
che provvederà a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze.
NOTE Autori: Esteso da: Verificato da: |
Corretto l'8/2/2011 da Ernestus
Rielaborata l'impaginazione da Risca