In qualità di amministratore di sistema Debian gestirai abitualmente pacchetti .deb
, poichè contengono unità funzionali coordinate (applicazioni, documentazione, ecc.), facilitandone l'installazione e la manutenzione. È perciò buona norma conoscere cosa sono e come usarli.
Questo capitolo descrive la struttura e il contenuto dei pacchetti "binari" e "sorgenti". I primi sono file direttamente utilizzabili da dpkg
, mentre i secondi contengono il codice sorgente e le istruzioni per costruire pacchetti binari.
5.1. Struttura di un pacchetto binario
Il formato dei pacchetti Debian è progettato in modo che il suo contenuto possa essere estratto su qualsiasi sistema Unix che abbia i classici comandi ar
, tar
e xz
o qualche volta gzip
o bzip2
. Questa proprietà apparentemente banale è importante per la portabilità e il disaster recovery.
Immagina, ad esempio, di aver eliminato per errore il programma
dpkg
e perciò di non poter più installare pacchetti Debian. Dal momento che
dpkg
è esso stesso un pacchetto Debian, sembrerebbe che il sistema sia spacciato… Fortunatamente, si conosce il formato di un pacchetto e pertanto si può
scaricareil file
.deb
del pacchetto
dpkg ed installarlo manualmente (vedi il riquadro "
STRUMENTI dpkg
, APT
e ar
). Se, sfortunatamente, uno o più dei programmi
ar
,
tar
o
gzip
/
xz
/
bzip2
fosse scomparso, sarà necessario solamente copiare il programma mancante da un altro sistema (dal momento che ognuno di essi opera in maniera completamente autonoma, senza dipendenze, una semplice copia è sufficiente). Se il sistema è stato ancora più sfortunato, ed anche questi non funzionano (forse mancano le librerie principali del sistema?), si dovrebbe provare la versione statica di
busybox
(fornito col pacchetto
busybox-static), che è ancora più autosufficiente e fornisce sottocomandi come
busybox ar
,
busybox tar
e
busybox xz
.
Questo è il contenuto di un file .deb
:
$
ar t dpkg_1.20.9_amd64.deb
debian-binary
control.tar.gz
data.tar.xz
$
ar x dpkg_1.20.9_amd64.deb
$
ls
control.tar.gz data.tar.xz debian-binary dpkg_1.20.9_amd64.deb
$
tar tJf data.tar.xz | head -n 16
./
./etc/
./etc/alternatives/
./etc/alternatives/README
./etc/cron.daily/
./etc/cron.daily/dpkg
./etc/dpkg/
./etc/dpkg/dpkg.cfg
./etc/dpkg/dpkg.cfg.d/
./etc/logrotate.d/
./etc/logrotate.d/alternatives
./etc/logrotate.d/dpkg
./sbin/
./sbin/start-stop-daemon
./usr/
./usr/bin/
$
tar tJf control.tar.xz
./
./conffiles
./control
./md5sums
./postrm
$
cat debian-binary
2.0
Come si può vedere, l'archivio ar
di un pacchetto Debian è composto da tre file:
debian-binary
This is a text file which simply indicates the version of the .deb
file package format version. In Debian Bullseye it is still version 2.0.
control.tar.xz
Questo file contiene tutti i metadati disponibili, come il nome e la versione del pacchetto così come alcuni script da eseguire prima, durante o dopo un'installazione o rimozione di esso. Alcuni di questi dati permettono agli strumenti di gestione dei pacchetti di determinare se è possibile installarlo o disinstallarlo, per esempio in base all'elenco dei pacchetti già presenti sulla macchina e se i file forniti sono stati modificati localmente.
data.tar.xz
, data.tar.bz2
, data.tar.gz
Questo archivio contiene tutti i file che devono essere estratti dal pacchetto; qui è dove sono memorizzati i file eseguibili, le librerie, la documentazione, ecc. I pacchetti possono usare altri formati di compressione, nel qual caso il file avrà un altro nome per xz
, bzip2
o gzip
.