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.