Empacotamento Debian básico
Introdução
[editar | editar código-fonte]Os pacotes são as peças que formam todas as distribuições Linux e podem conter programas, bibliotecas de sistema ou mesmo coisas como papéis de parede e ícones. Alguns pacotes dependem de outros (um certo programa pode precisar de uma biblioteca que faz parte de outro pacote por exemplo), as chamadas dependências. Outros pacotes recomendam a instalação de pacotes adicionais para ampliar as funcionalidades de um pacote instalado.
Os pacotes existentes nas distribuições são criados por colaboradores. Neste tutorial abordaremos apenas o empacotamento com extensão .deb estes que são os utilizados para a distribuição de software nas distribuições Debian.
Configurando ambiente para empacotamento
[editar | editar código-fonte]Para empacotarmos qualquer software devemos saber quais são suas dependências. A melhor forma para esse procedimento é criar um ambiente "limpo" ou uma instalação Debian nova. Um detalhe importante neste caso é que devemos empacotar nosso software na distribuição conhecida com "unstable". A política de atualizações do Debian permite que novos pacotes sejam lançados apenas na distribuição instável. Após alguns meses de avaliação o pacote é passado para a distribuição de testes e só depois para a versão estável do Debian.
Para a criação do ambiente Debian ou também chamado de jaula podemos criar uma máquina virtual ou usar usar a ferramenta chamada "debootstrap" [1] . Esta ferramenta cria uma nova instalação do Debian em um subdiretório de uma distribuição Debian já instalada.
Para configurar uma jaula basta utilizar os seguintes comandos:
apt-get install debootstrap
debootstrap sid /jaulasid http://ftp.br.debian.org/debian
chroot /jaulasid
echo proc /proc proc defaults 0 0 >> /etc/fstab
mount /proc
Configurando o bashrc
[editar | editar código-fonte]Após entrar na instalação Debina por meio do chroot ,podemos adicionar algumas configurações no bashrc para facilitar o trabalho e empacotamento. Este arquivo define alguns comandos a serem executados após a criação de uma sessão no terminal e pode ser encontrado em /etc/bash.bashrc. Segue a configuração do bashrc[2]:
alias ls='ls --color=auto'
alias tree='tree -aC'
alias debuildsa='dpkg-buildpackage -sa -ksua_chave_gpg'
alias uscan='uscan --verbose --report'
alias apt-cache='LANG=C apt-cache'
alias man='LANG=C man'
export DEBFULLNAME="seu_nome_completo_sem_acentos/cedilha"
export DEBEMAIL="seu_e-mail"
export EDITOR=vim
export QUILT_PATCHES=debian/patches
export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"
export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"
export PS1='JAULA-SID-\u@\h:\w\$ '
Estes comandos configuram alguns parâmetros para as configurações de pacotes, como o e-mail do desenvolvedor e o nome do mesmo. Além disso define parâmetros para o desenvolvimento de patches, tópico que não será abordado neste tutorial. Para que as alterações sejam concluídas, devemos executar o comando:
source /etc/bash.bashrc
Pacotes necessários
[editar | editar código-fonte]Apenas dois pacotes são necessários para a construção de pacotes Debian. O primeiro deles é o build-essential, este pacote tem dependências básicas assumidas na construção de pacotes, além de ferramentas para a construção dos mesmos, como o dpkg-dev. Outro pacote necessário é o devscripts, que possui muitos scripts importantes para o empacotamento.[3]
Abaixo um comando para instalação mais completa, com ferramentas necessárias para edição de texto, construção de patches e teste de pacotes. Após a instalação uma reconfiguração do locales para internacionalização e a limpeza dos arquivos temporários de instalação.
apt-get install blhc devscripts dh-make dput-ng locales vim quilt renameutils spell tree build-essential
dpkg-reconfigure locales tzdata
apt-get clean
Construindo pacotes
[editar | editar código-fonte]Para a construção de pacotes devemos entender o fluxo de trabalho geral:
- WEB/UPSTREAM/MIRROR -----> SOURCE -----> BINÁRIO
- O primeiro passo é obter o pacote do upstream ou de um mirror Debian .
- Após a obtenção do pacote e descompactação do mesmo, devemos nos certificar que ele esta no formato nome_do_pacote-versão.tar.{bz2,gz,xz} .
- Gerar o diretório debian com o dh_make:
dh_make -f ../<fonte>.tar.gz -c <licença>
- Verificar licenças dos arquivos.
- Modificar os arquivos necessários para o empacotamento. Os principais estão listados abaixo:
- control – meta-dados acerca do pacote (dependências, etc)
- rules – especifica como compilar o pacote
- copyright – informação de copyright para o pacote
- changelog – história do pacote Debian
- Construir pacote e verificar os erros do lintian:
debuild -us -uc