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
.