Pacotes Debian Por Um Mano Do Slackware

Primeiro vamos aos esclarecimentos para tentar evitar qualquer flame. Sou usuário de Slackware ha 6 anos mais ou menos mas faz 2 anos que convivo diariamente com Debian. Esse ensaio sobre os pacotes desta última distro é feito em cima da minha experiência com as duas e não representa qualquer tipo de preconceito com a distro. Espero que leiam até o final antes de comentar ou expressar uma opinião mais acalorada. Agora vamos ao que interessa.

Estrutura Do Pacote

A estrutura de um pacote .deb pronto é simples e não tem nada complexo. E um pacote do Slackware não fica atrás. A diferença principal é que os dados do software estão em um tar separado dos arquivos que fazem o controle da instalação. Não são muitos arquivos e em resumo o principal de um pacote .deb é:

debian-binary
Arquivo de texto com a versão do binário do pacote.
control.tar.gz
Meta informação do pacote. Dependências e coisas do tipo.
data.tar ou data.tar.gz ou data.tar.bz2 ou ainda data.tar.lzma
O diretório que contém os arquivos do programa a ser instalado.

Tudo isso comprimido em um pacote ar. Acho que é o mínimo e o máximo necessário para um controle de pacotes com dependencias como no Debian.

No Slackware a estrutura é semelhante mas é basicamente um pacote tar gzip, bzip ou xz que representa o mesmo que o data.tar no pacote Debian, mas com um sub-diretório install onde estão os arquivos de controle da instalação.

Geração do Pacote e a Aberração Debianization

Ok, aqui o bixo pega. Então vou fazer em forma de comparativo entre Slackware e Debian.

No Slackware

É nois que voa bruxão

A geração de pacotes no Slackware é feita usando preferivelmente um script em shell para automatização da compilação e empacotamento chamado SlackBuild Script, é um shell script perfeitamente normal que qualquer pessoa com o mínimo de experiência no mesmo consegue dar manutenção. Em geral o que o slackbuild faz pode ser divido em duas fases:

  1. Compilação e instalação do pacote em um diretório temporário
  2. Geração do pacote com o facilitador makepkg

A primeira fase é feita usando as ferramentas disponíveis pela aplicação. Pode ser autoconf, ant ou qualquer build system. Até mesmo um chroot se faz necessário em alguns casos. A segunda parte é a normalização do pacote que consiste em compactação de man pages, strip de shared libraries, a inclusão do próprio build script como doc e dos arquivos para o diretório install/ e por fim a compactação do diretório e criação do t?z.

É importante ressaltar que nos pacotes Slackware o código fonte original não é mexido e sequer distribuido junto com os SlackBuilds na maioria dos casos. Alguns casos existem onde patches são necessários para que o pacote funcione corretamente mas estes são aconselhados somente se o programa não puder funcionar sem este ou isso representar um risco grave de segurança e estabilidade. A politica pura e simples é: Desenvolvimento é papel dos desenvolvedores e não dos empacotadores.

No Debian

Coididoido esse debian.

O documento de política de desenvolvimento do Debian é um monstro de 10 sessões com mais 10 sub-sessões cada e 7 anexos. Recomendo a leitura se quiser confirmar o que eu digo aqui. Vou resumir a forma de criação padrão de pacotes.

A mudança na forma de pensar já começa na nomenclatura do indivíduo que empacota. No Slackware é um empacotador. No Debian é um desenvolvedor.

Primeiro salva-se o código fonte original em um .orig e então pode se começar a Debianização do aplicativo. Um pacote é feito geralmente usando de 2 a 4 aplicativos facilitadores e geralmente o autoconf é o responsável pela geração do pacote. Tudo isso fica dentro do código fonte em um diretório debian/. A estrutura é complexa e é necessário um longo periodo e leitura da documentação para a compreensão do sistema de empacotamento e criação de um pacote seguindo todas as guidelines.

Na documentação em vários trechos é recomendado a edição do código fonte original para debianização do aplicativo. O que ao meu ver só maximiza as possibilidades de problema como aquele infame warning no openssl que foi silenciado por um Debian desenvolver e fez com que as chaves de milhares de servidores fossem geradas de forma previsível.

Também há uma preocupação grande mas parcialmente justificável de separar os cabeçalhos de bibliotecas em pacotes adicionais e usar a mesma estrutura para gerar mais de um pacote elevando a complexidade do sistema.

Pensamentos Finais

Não muitos, eu não gosto desse sistema e as guidelines do Debian são uma aberração pra mim. Vou tentar criar um DebBuild script para gerar pacotes Debian no estilo Slackware e posto aqui se o fizer.

Meu chefe certo dia falou que o sistema do Slackware dependia do “artista” e não era processual o suficiente. Mas lendo a guideline do Debian eu descobri que ele está errado nisso, pois a inversa é verdadeira. O sistema do Debian é justamente isso, um sistema com sub-sistemas e macro-sistemas usados para gerar coisas que no final das contas são simples, uma arquitetura digna de um arteiro e não artista.

PS IMPORTANTE

Eu falo aqui da forma de geração de pacotes recomendada e ensinada pelo documento abaixo. NÃO estou considerando outras formas, se existirem, de gerar pacotes Debian. Como por exemplo a utilização de um script sh ou CDBS.

Referências

deb (file format) From Wikipedia, the free encyclopedia

Debian Policy Manual From Debian.org

PS.  gentil correção do caio:

[11:39] <caio1982> guax: debian-binary nao eh a versao do pacote, seu animal, eh a versao dos binarios do debian (.debs em geral distribuidos em “formato debian”, nao sao backward compatible pra sempre)

PS2. adição do caio: http://build-common.alioth.debian.org/cdbs-doc.html

Tags: , , , ,

2 Responses to “Pacotes Debian Por Um Mano Do Slackware”

  1. Rafael Says:

    Preconceituoso..

  2. guax Says:

    Tu nem leu, seu fdp.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">