Product SiteDocumentation Site

Capítulo 5. Sistema de Empacotamento: Ferramentas e Princípios Fundamentais

5.1. Estrutura de um Pacote Binário
5.2. Metainformação do Pacote
5.2.1. Descrição: O arquivo control
5.2.2. Scripts de Configuração
5.2.3. Checksums, Lista de arquivos de configuração, e outros.
5.3. Estrutura de um Pacote Fonte
5.3.1. Formato
5.3.2. Uso no Debian
5.4. Manipulando Pacotes com o dpkg
5.4.1. Instalando pacotes
5.4.2. Remoção de pacote
5.4.3. Consultando o banco de dados do dpkg e inspecionando os arquivos .deb
5.4.4. Arquivo de log do dpkg
5.4.5. Suporte Multi-Arqu
5.5. Coexistência com outros sistemas de pacotes
Como um administrador de sistemas Debian, você vai rotineiramente manipular 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 é 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 propriedade aparentemente trivial é importante para a portabilidade e recuperação de desastres.
Imagine, for example, that you mistakenly deleted the dpkg program, and that you could thus no longer install Debian packages. dpkg being a Debian package itself, it would seem your system would be done for... Fortunately, you know the format of a package and can therefore download the .deb file of the dpkg package and install it manually (see sidebar FERRAMENTAS dpkg, APT e ar). If by some misfortune one or more of the programs ar, tar or gzip/xz/bzip2 have disappeared, you will only need to copy the missing program from another system (since each of these operates in a completely autonomous manner, without dependencies, a simple copy will suffice). If your system suffered some even more outrageous misfortune, and even these don't work (maybe the deepest system libraries are missing?), you should try the static version of busybox (provided in the busybox-static package), which is even more self-contained, and provides subcommands such as busybox ar, busybox tar and busybox xz.
In case of a misfortune, you better also have a backup of your system (see Seção 9.10, “Recuperação de dados (backup)”).
Dê uma olhada no conteúdo de um arquivo .deb:
$ ar t dpkg_1.21.22_amd64.deb
debian-binary
control.tar.gz
data.tar.xz
$ ar x dpkg_1.21.22_amd64.deb
$ ls
control.tar.gz  data.tar.xz  debian-binary  dpkg_1.21.22_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
./lib/
./lib/systemd/
./lib/systemd/system/
./lib/systemd/system/dpkg-db-backup.service
$ tar tJf control.tar.xz
./
./conffiles
./control
./md5sums
./postinst
./postrm
./prerm
$ 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 Bookworm 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.