Gestione dei pacchetti in Debian (2a parte).

Gestione dei pacchetti in Debian (2a parte).

Disponibilità di un pacchetto.

La gestione dei pacchetti Debian, richiede che i programmi che ne consentono l’installazione, siano in grado di sapere quali sono i pacchetti effettivamente disponibili. I pacchetti disponibili sono quelli che si trovano in una distribuzione su CD-ROM, in una copia locale nel filesystem (eventualmente condiviso in rete), in un sito Internet,… In ogni caso, tali informazioni sono contenute in un file che accompagna i pacchetti (uno per ogni raggruppamento principale), e si tratta di `Packages’, o `Packages.cd’ nel caso di distribuzioni suddivise su più dischi (CD-ROM, o dischi di altro tipo che possono essere sostituiti durante l’installazione).debian
15.2 Stratificazione degli strumenti di gestione dei pacchetti Debian

Gli strumenti per la gestione dei pacchetti Debian sono molti, e questi intervengono a livelli diversi. La figura 15.1 mostra la piramide, alla base della quale si trovano gli strumenti fondamentali.

/ \
/ \
/ \
/ Dselect APT \
/ apt-get \
/ dpkg \
/ dpkg-deb dpkg-split \
/______________________________\

Gerarchia tra gli strumenti di gestione dei pacchetti Debian.

In breve:

*`dpkg-deb’ interviene solo al livello di archivi Debian, consentendo l’estrazione e l’archiviazione in questo formato;

*`dpkg-split’ è uno strumento aggiuntivo in grado di suddividere e riassemblare assieme gli archivi Debian, in modo da poterli gestire in file più piccoli, soprattutto quando questi devono essere trasportati su dischetti;

*`dpkg’ interviene nei pacchetti Debian, a livello elementare, consentendone l’installazione e la loro disinstallazione, avvalendosi eventualmente di `dpkg-deb’ quando necessario;

*`apt-get’ interviene nei pacchetti Debian, a livello più evoluto di `dpkg’, essendo in grado di risolvere da solo molti problemi di dipendenze;

*Dselect è, allo stato attuale, lo strumento di livello più alto per la gestione dei pacchetti, che si avvale di tutti gli strumenti inferiori;

*APT è uno strumento parallelo a Dselect in corso di sviluppo, del quale, per ora, è disponibile solo `apt-get’.

Gestione elementare attraverso gli strumenti fondamentali.

debian blu

Per l’installazione e la disinstallazione dei pacchetti Debian, lo strumento più banale è dato dall’eseguibile `dpkg’. Questo è in grado di utilizzare a sua volta anche `dpkg-deb’, quando si vuole intervenire a livello di archivio Debian.

dpkg []

Alla fine della riga di comando di `dpkg’ deve apparire l’indicazione di un’azione, che può essere preceduta da alcune opzioni. Come si intuisce, l’azione stabilisce cosa debba fare `dpkg’, mentre le opzioni ne alterano l’ambito. Qui viene mostrato solo l’uso di alcune azioni, perché per le altre conviene agire attraverso strumenti di livello superiore. Non viene mostrato l’uso delle opzioni, comunque si può approfondire l’uso di `dpkg’ consultando la pagina di manuale dpkg(8).

Alcune azioni

-c … | –contents …

Questa azione richiama l’utilizzo di `dpkg-deb’ allo scopo di mostrare l’elenco dei file contenuti nell’archivio Debian indicato come argomento.

-f … | –field …

Questa azione richiama l’utilizzo di `dpkg-deb’ allo scopo di mostrare le informazioni di controllo sui pacchetti contenuti negli archivi elencati.

-I … | –info …

Questa azione richiama l’utilizzo di `dpkg-deb’ allo scopo di mostrare tutte le informazioni disponibili sui pacchetti contenuti negli archivi elencati.

-i … | –install …

Installa o aggiorna i pacchetti contenuti negli archivi indicati come argomento. Questa azione può essere abbinata all’opzione `-R’, o `–recursive’, allo scopo di installare tutti i pacchetti i cui archivi si trovano in una directory, che diventerebbe quindi l’argomento di questa azione.

L’installazione del pacchetto include anche la configurazione dello stesso.

–configure …

Richiede espressamente di eseguire la configurazione dei pacchetti indicati (ammesso che questi non risultino già installati e configurati correttamente).

-r … | –remove …

Leggi anche:  Aircrack-NG, ottimo set di strumenti per testare la sicurezza delle reti wireless (auditing).

Rimuove i pacchetti indicati, senza eliminare i file di configurazione.

–purge …

Elimina completamente i pacchetti indicati, compresi i file di configurazione.

-l […] | –list […]

Mostra l’elenco dei pacchetti corrispondenti ai modelli indicati (si usano i caratteri jolly comuni, proteggendoli in modo che la shell non li interpreti direttamente). Se vengono indicati dei modelli, vengono fornite informazioni su tutti i pacchetti conosciuti, non solo quelli installati, mentre utilizzando l’azione senza argomenti, si ottengono informazioni solo sui pacchetti installati, o che comunque hanno mantenuto i file di configurazione.

-s … | –status …

Mostra le informazioni sullo stato dei pacchetti indicati, aggiungendo anche la descrizione se il pacchetto risulta installato. In questo caso non si possono più utilizzare i caratteri jolly.

-L … | –listfiles …

Elenca i file che appartengono a un pacchetto, in base a quanto contenuto nell’archivio originale. Tuttavia, non è possibile conoscere in questo modo quali file sono stati creati dagli script di installazione del pacchetto stesso.

-S … | –search …

Permette di fare una ricerca per trovare a quali pacchetti appartengono i file indicati come argomento, con o senza l’ausilio di caratteri jolly. In particolare, se si indica un nome o un modello senza l’indicazione di un percorso, si ottengono tutti i pacchetti che hanno file o directory con quel nome.

-C | –audit

Controlla i pacchetti installati per determinare quali sono stati installati solo parzialmente.

debian install

–compare-versions

Si tratta di una richiesta particolare fatta a `dpkg’, con la quale si ottiene il confronto tra due stringhe che rappresentano una versione (completa di revisione). Ciò può essere molto utile nella realizzazione di script. Se il confronto da un risultato Vero, `dpkg’ restituisce zero, mentre negli altri casi restituisce un valore maggiore. Gli operatori che possono essere utilizzati sono elencati nella tabella 15.2

Espressione Descrizione
eq Vero se le versioni sono uguali.
ne Vero se le versioni sono differenti.
lt Vero se la prima versione è minore della seconda.
le Vero se la prima versione è minore o uguale alla seconda.
gt Vero se la prima versione è maggiore della seconda.
ge Vero se la prima versione è maggiore o uguale alla seconda.

Espressioni per il confronto tra le versioni attraverso l’uso dell’azione `–compare-versions’ con `dpkg’.

Esempi

$ dpkg -c zsh_3.1.2-10.deb

Mostra l’elenco dei file che compongono il pacchetto `zsh’, contenuti nell’archivio indicato, esclusi i file che vengono creati dagli script del pacchetto stesso.

$ dpkg -I zsh_3.1.2-10.deb

Mostra tutte le informazioni disponibili sull’archivio indicato.

# dpkg -i zsh_3.1.2-10.deb

Installa, o aggiorna, il pacchetto contenuto nell’archivio indicato, ammesso che ciò sia possibile in relazione alle dipendenze di questo.

# dpkg -r zsh

Rimuove il pacchetto indicato, senza eliminare i file di configurazione.

# dpkg –purge zsh

Elimina completamente il pacchetto indicato, compresi i file di configurazione.

$ dpkg -l

Elenca lo stato di tutti i pacchetti installati, o dei quali rimangono i file di configurazione.

$ dpkg -l z\*

Elenca lo stato di tutti i pacchetti conosciuti che iniziano con la lettera «z». Si osservi l’uso della barra obliqua inversa per proteggere l’asterisco contro l’interpretazione da parte della shell.

$ dpkg -s zsh

Mostra le informazioni sullo stato del pacchetto indicato, in modo più dettagliato.

$ dpkg -L zsh

Elenca i file che appartengono al pacchetto `zsh’.

$ dpkg -S /bin/cat

Cerca di scoprire a chi appartiene il file `/bin/cat’, e scopre che appartiene al pacchetto `textutils’.

15.2.2 Gestione più evoluta dei pacchetti: organizzazione di una copia della distribuzione

Per una gestione più evoluta dei pacchetti, occorre definire la fonte di questi, e da lì, deve essere ottenibile il file `Packages’. Per comprendere la cosa, è necessario prima di tutto conoscere in che modo dovrebbe essere organizzato un CD-ROM o una copia nel filesystem della distribuzione. Lo schema seguente rappresenta l’essenziale ( viene sostituito dalla sigla dell’architettura per cui sono fatti i pacchetti):

Leggi anche:  PythonCAD programma di disegno comandabile da script nel linguaggio Python.

debian 2
debian/
|– .disk/
| `– info
|
`– dists/
|– stable/
| |– main/
| | `– binary-/
| | |– Packages
| | |– Packages.gz
| | |– Packages.cd
| | |– Packages.cd.gz
| | `– *.deb
| |
| |– contrib/
| | `– binary-/
| | |– Packages
| | |– Packages.gz
| | |– Packages.cd
| | |– Packages.cd.gz
| | `– *.deb
| |
| |– non-free/
| | `– binary-/
| | |– Packages
| | |– Packages.gz
| | |– Packages.cd
| | |– Packages.cd.gz
| | `– *.deb
| |
| |– non-US/
| | `– binary-/
| | |– Packages
| | |– Packages.gz
| | |– Packages.cd
| | |– Packages.cd.gz
| | `– *.deb
| |
| `– local/
| `– binary-/
| |– Packages
| |– Packages.gz
| |– Packages.cd
| |– Packages.cd.gz
| `– *.deb
|
`–local/
`– local –> ../stable/local

debian_by_morlockonzark-d4jpajt

Il file `debian/.disk/info’ è indispensabile quando la distribuzione è suddivisa su più dischi. Questo file contiene una riga che serve a identificare il supporto. I file `debian/dists/stable/*/binary-/Packages’, assieme alle loro versioni compresse con `gzip’, contengono le informazioni sui pacchetti contenuti negli archivi che si trovano nella stessa directory, o in quelle successive, mentre i file `debian/dists/stable/*/binary-/Packages.cd’ contengono le informazioni di tutti i file `Packages’ delle stesse directory per tutti i dischi in cui si articola la distribuzione.

Di tutta questa struttura, la directory `debian/’ è la radice, o l’inizio, e questa è la posizione che viene richiesta dai programmi per la gestione dei pacchetti quando devono attingere le informazioni sulla disponibilità dei pacchetti.

Come si vede dalla struttura mostrata, una distribuzione Debian si articola anche in componenti, e questo fondamentalmente a causa di possibili limitazioni nell’uso e nella distribuzione del software relativo. In generale, gli archivi che si trovano a partire da `debian/dists/stable/main/’ sono quelli principali che non contengono limitazioni particolari, mentre per gli altri valgono considerazioni differenti. Le varie componenti in cui si articola una distribuzione sono identificate dai nomi delle directory che si diramano da `debian/dists/stable/’.
15.2.3 apt-get

APT è un sistema evoluto di gestione dei pacchetti Debian che ne permetterà l’utilizzo attraverso un’interfaccia grafica. Attualmente è disponibile `apt-get’, che a sua volta si avvale di `dpkg’, ed è in grado di semplificare molto l’installazione e l’aggiornamento dei pacchetti, rispettando le dipendenze.

Per funzionare, `apt-get’ richiede la presenza di un file di configurazione, `/etc/apt/sources.list’, all’interno del quale vanno elencate le fonti da cui si possono ottenere delle distribuzioni Debian. Questo file può contenere commenti, preceduti dal simbolo `#’, righe vuote che vengono ignorate come i commenti, e righe contenenti ognuna l’indicazione di un’origine, espressa secondo la sintassi seguente:

deb …

Per esempio, per indicare l’utilizzo della distribuzione `stable’ (come si è visto fino a questo punto negli esempi) contenuta a partire da `/home/pippo/debian/’, della quale si vogliono tutte le componenti normali, si può utilizzare la direttiva seguente:

deb file:/home/pippo/debian/ stable main contrib non-free non-US local

Nello stesso modo si potrebbero indicare degli URI riferiti a siti FTP o HTTP. Inoltre, è importante tenere presente che si possono indicare molte fonti differenti, come si vede dall’esempio seguente:

deb file:/home/pippo/1/debian/ stable main contrib non-free non-US local
deb file:/home/pippo/2/debian/ stable main contrib non-free non-US local
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable non-US

debian_gnu_linux_by_petux7-d3hezqx

Dopo la configurazione, `apt-get’ richiede espressamente che gli sia ordinato di leggere le sorgenti per aggiornare l’elenco locale dei pacchetti disponibili, in modo da disporre di una visione di ciò che esiste e delle dipendenze relative. Si osservi lo schema sintattico per l’utilizzo di `apt-get’:

apt-get [] [] […]

Da quello che si vede, nella riga di comando di `apt-get’ non si fa mai riferimento direttamente ad archivi Debian, ma sempre solo a pacchetti.

Leggi anche:  Kolibri OS è un progetto ambizioso che si presenta come il più piccolo sistema operativo dalle prestazioni estreme.

Per comprendere il funzionamento di `apt-get’ è bene cominciare da alcuni esempi. Normalmente si inizia aggiornando l’elenco locale dei pacchetti disponibili;

# apt-get update

quindi potrebbe essere conveniente chiedere l’aggiornamento dei pacchetti, riferiti alla stessa versione della distribuzione che si sta utilizzando.

# apt-get upgrade

Per installare o aggiornare un pacchetto specifico, soddisfando le dipendenze necessarie, si può intervenire come nell’esempio seguente,

# apt-get install zsh

dove si mostra in che modo installare o aggiornare il pacchetto `zsh’, rispettando le dipendenze. Infine, per aggiornare il proprio sistema a una nuova versione della distribuzione, si utilizza il comando

# apt-get -f dist-upgrade

seguito generalmente da una richiesta esplicita di configurazione dei pacchetti che ne avessero bisogno, per mezzo di `dpkg’:

# dpkg –configure –pending

Alcuni comandi

update

Risincronizza l’elenco locale dei pacchetti rispetto alle origini dichiarate nel file di configurazione. In generale, prima di un comando `upgrade’ o `dist-upgrade’, occorrerebbe eseguire un comando `update’.

upgrade

Aggiorna tutti i pacchetti che risultano già installati, e per i quali è disponibile un aggiornamento. L’aggiornamento non viene fatto se questo può provocare degli inconvenienti.

dist-upgrade

Aggiorna tutti i pacchetti che risultano già installati, e per i quali è disponibile un aggiornamento. L’aggiornamento viene fatto tenendo conto delle dipendenze, che nel frattempo potrebbero essere cambiate (di solito quando si tratta di un aggiornamento che coinvolge l’intera distribuzione).

Di solito, dopo questo tipo di operazione, si avvia il comando `dpkg –configure –pending’ allo scopo di procedere con la configurazione di ciò che richiede tale passaggio.

install …

Installa i pacchetti indicati come argomento, provvedendo a sistemare anche le dipendenze. È bene sottolineare che vanno indicati i nomi dei pacchetti, e non i nomi degli archivi che li contengono.

check

Esegue un controllo, anche sui pacchetti che sono stati installati in modo errato.

clean

APT utilizza un deposito transitorio per gli archivi utilizzati per l’installazione o l’aggiornamento. Si tratta della directory `/var/cache/apt/archives/’, che va ripulita periodicamente attraverso il comando `clean’.
Alcune opzioni

-f | –fix-broken

Con l’uso di questa opzione si fa in modo che `apt-get’ cerchi di sistemare i problemi legati alle dipendenze. Questa opzione può essere usata da sola, senza l’indicazione di un comando, oppure con un comando, di solito `dist-upgrade’, per richiedere espressamente la sistemazione dei problemi che si possono generare con lo stesso.

-s | –simulate

Simula l’esecuzione del comando, in modo da mostrare cosa si otterrebbe.

Dselect.

Nell’ambito dei programmi che funzionano utilizzando uno schermo a caratteri normale, Dselect è il più evoluto per la gestione dei pacchetti Debian, tenendo conto però che dispone di un’interfaccia complessa e poco intuitiva. A Dselect viene dedicato il prossimo capitolo.
15.3 Riferimenti

*Havoc Pennington, Debian Tutorial, 1999

http://www.debian.org/~hp/tutorial/

*John Goerzen, Ossama Othman, Debian GNU/Linux Guide, 1999

http://www.newriders.com/debian/debian-guide.tar.bz2

*Susan G. Kleinmann, Sven Rudolph, Joost Witteveen, The Debian GNU/Linux FAQ, 1999

ftp://ftp.debian.org/debian/doc/FAQ/

debian_kernel_free

Precedente Gestione dei pacchetti in Debian (1a parte). Successivo Come passare a Ubuntu per chi è abituato ad usare Windows (1a Parte).

Lascia un commento