David's Blog

Debian: Fazendo Meu Primeiro Pacote - Parte 1

Quando abrimos nosso terminal e digitamos sudo apt-get install mutt, estamos dizendo para o Debian, que queremos instalar um pacote chamado mutt usando o gerenciador de pacotes apt-get e que estamos fazendo isso com permissões de root.

Não irei comentar nesse post como é a política de upload de pacotes no Debian, além do fato de existir muita documentação do Debian relacionado a isso. Basicamente o que irei comentar aqui, são as ferramentas necessárias para criar um pacote para o debian, mais expecificamente um pacote em que o upstream é escrito em python.

Em resumo um pacote Debian é formado por:

 * Diretório debian
 * Código do upstream

Estamos considerando o caso em que não iremos criar um pacote do zero, logo o diretório debian já irá existir. Para baixar a ultima versão do pacote no debian basta fazer:

sudo apt-get source urlscan

Quando baixarmos o source do urlscan três arquivo e um diretório irão aparecer.

  1. urlscan_<version>-<release>.debian.tar.xz: Tarball com o diretório debian
  2. urlscan_<version>.orig.tar.xz: Tarball com o código do upstream inalterado.
  3. urlscan_<version>-<release>.dsc: Arquivo que descreve a versão atual do pacote que acabamos de baixar.
  4. urlscan-<version>: Diretório com o código do upstream + diretório debian

É dentro do diretório debian que iremos definir como o pacote será construido(aonde os arquivos de configuração e os binários gerados serão colocados). Basicamente o diretório debian deve ter no mínimo a os seguintes arquivos:

  1. changelog: Registra tudo que foi feito no pacote e por quem
  2. compat: Define a versão do debhelper a ser usada (atualmente estamos na 9)
  3. control: Define quais as dependências de construção e instalação do pacote, além de informações básicas requeridas pelo Debian, como o nome do pacote, uma breve descrição, e etc.
  4. rules: Define o passo a passo para a construção do pacote. O Debian está ai para te ajudar, então o recomendado é utilizar os helpers do Debian, e deixar que eles façam o trabalho pesado. Pode ocorrer de que o comportamento padrão dos helpers não seja o suficiente, então nesse caso, você pode sobrescrevê-los adicionando o que for necessário.
  5. copyright: Define a licença em que esse pacote será distribuído.
  6. watch: Nesse arquivo você definirá uma regex, que será executada pelo comando uscan, para encontrar novas versões do upstream.

O upstream é a pessoa,comunidade ou organização que desenvolve o código fonte do software que você quer empacotar. Hoje em dia, boa parte dos upstreams estão em plataformas como github, gitlab e sourceforge, então provavelmente seu arquivo watch irá apontar para um desses lugares.

O upstream que iremos empacotar será o urlscan(https://packages.qa.debian.org/u/urlscan.html). Esse programa faz o parser de arquivos html e extrai e apresenta urls de uma maneira amigável. Esse pacote deve ser usado com um cliente de email que rode no terminal, como é o caso do mutt.

O primeiro passo a se fazer é tentar construir o pacote dentro do seu ambiente de empacotamento(no meu caso eu uso o vagrant com o debian sid). Vale lembrar que sempre que formos empacotar algo para o debian, obrigatoriamente temos que estar em um ambiente debian unstable.

Abra o arquivo control dentro do diretório debian, e veja quais os pacotes foram colocados como dependência(Build-Depends-Indep). Iremos precisar instalá-los para que o pacote possa ser construído.

Com todas as dependências instaladas, e estando na raiz do diretório urlscan-<version> execute o comando debuild. Se tudo der certo teremos, um diretório acima do diretório raiz do source, um pacote .deb do urlscan.

Continuamos no proximo post =) .

Comments