Como um administrador de sistemas Debian, você rotineiramente manipula pacotes .deb, já que eles contêm unidades funcionais consistentes (aplicações, documentação, etc.), cujas instalação e manutenção eles facilitam. Logo é uma boa ideia saber exatamente o que são e como usá-los.
Este capítulo descreve a estrutura e conteúdo dos pacotes "binários" e "fontes". Os primeiros são arquivos diretamente usáveis pelo dpkg, enquanto os segundos contém o código fonte, assim como as instruções para construir os pacotes binários.
5.1. Estrutura de um Pacote Binário
O formato do pacote Debian foi projetado para que seu conteúdo possa ser extraído em qualquer sistema Unix que contenha os clássicos comandos ar, tar e xz ou às vezes gzip ou bzip2. Esta característica aparentemente trivial é importante para a portabilidade e recuperação de desastres.
Imagine, por exemplo, que você apagou acidentalmente o programa
dpkg, e que portanto você não pode mais instalar pacotes Debian. O
dpkg sendo um pacote Debian em si, ao que parece seu sistema seria feito por... Felizmente, você conhece o formato de um pacote e pode então
baixar o arquivo
.deb do pacote
dpkg e instalar ele manualmente (veja a barra lateral sidebar
FERRAMENTAS dpkg, APT e ar) . Se por algum infortúnio um ou mais dos programas
ar,
tar ou
gzip/
xz/
bzip2 tenham sumido, você só precisa copiar o programa faltoso de outro sistema (já que qualquer um destes opera de modo totalmente autônomo, sem dependências, uma simples cópia será suficiente). Se o seu sistema sofreu um desfortúnio ainda mais ultrajante, e mesmo esses não funcionam (talvez o sistema de bibliotecas mais profundo esteja faltando?), você deve tentar a versão estática do
busybox (fornecido pelo pacote
busybox-static), a qual é ainda mais autossuficiente, e provê sub comandos tais como
busybox ar,
busybox tar e
busybox xz.
Dê uma olhada no conteúdo de um arquivo .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
Como você pode ver, o arquivo ar de um pacote Debian é composto de três arquivos:
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
Este arquivamento contém todas as meta-informações disponíveis, como o nome e a versão do pacote. Algumas destas meta-informações servem para que as ferramentas de gestão de pacotes determinem se é possível instalar e desinstalar o pacote, por exemplo, de acordo com a lista de pacotes já instalados na máquina.
data.tar.xz, data.tar.bz2, data.tar.gz
Este arquivamento contém todos os arquivos para serem extraídos do pacote; é onde os arquivos executáveis, documentação, etc, estão todos estocados. Pacotes podem usar outros formatos de compressão, e neste caso o arquivo terá um nome diferente para xz, bzip2 or gzip.