# Empacotamento Debian básico
## Introdução

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

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" . 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:

### Configurando o bashrc

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:
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:

### Pacotes necessários

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.
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.

## Construindo pacotes

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