Come amministratore di sistema Debian, si gestiranno abitualmente pacchetti .deb
, dal momento che contengono unità funzionali coordinate (applicazioni, documentazione, ecc.), di cui facilitano l'installazione e la manutenzione. È perciò una buona idea conoscere cosa sono e come usarli.
Questo capitolo descrive la struttura e il contenuto dei pacchetti "binari" e "sorgenti". I primi sono file .deb
, 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 gzip
(qualche volta xy
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 perciò si può scaricare il file
.deb
del pacchetto
dpkg e installarlo manualmente (vedi il riquadro "
STRUMENTI dpkg
, APT
e ar
). Se per sfortuna 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 gunzip
.
Questo è il contenuto di un file .deb
:
$
ar t dpkg_1.17.23_amd64.deb
↵
debian-binary↵
control.tar.gz↵
data.tar.gz↵
$
ar x dpkg_1.17.23_amd64.deb
↵
$
ls
↵
control.tar.gz data.tar.gz debian-binary dpkg_1.17.23_amd64.deb↵
$
tar tzf data.tar.gz | head -n 15
↵
./↵
./var/↵
./var/lib/↵
./var/lib/dpkg/↵
./var/lib/dpkg/parts/↵
./var/lib/dpkg/info/↵
./var/lib/dpkg/alternatives/↵
./var/lib/dpkg/updates/↵
./etc/↵
./etc/logrotate.d/↵
./etc/logrotate.d/dpkg/↵
./etc/dpkg/↵
./etc/dpkg/dpkg.cfg.d/↵
./etc/dpkg/dpkg.cfg↵
./etc/alternatives/↵
$
tar tzf control.tar.gz
↵
./↵
./conffiles↵
./postinst↵
./md5sums↵
./prerm↵
./preinst↵
./control↵
./postrm↵
$
cat debian-binary
↵
2.0
↵
Come si può vedere, l'archivio ar
di un pacchetto Debian è composto da tre file:
debian-binary
. Questo è un file di testo che indica semplicemente la versione del file .deb
usato (nel 2015: versione 2.0).
control.tar.gz
. Questo file archivio contiene tutte le meta-informazioni disponibili, come il nome e la versione del pacchetto. Alcune di queste meta-informazioni permettono agli strumenti di gestione dei pacchetti di determinare se è possibile installarlo o disinstallarlo, per esempio secondo l'elenco dei pacchetti già sulla macchina.
data.tar.gz
. Questo archivio contiene tutti i file che devono essere estratti dal pacchetto; qui è dove sono memorizzati i file eseguibili, la documentazione, ecc. Alcuni pacchetti possono usare altri formati di compressione, nel qual caso il file avrà un altro nome (data.tar.bz2
per bzip2, data.tar.xz
per XZ).