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.
- urlscan_<version>-<release>.debian.tar.xz: Tarball com o diretório debian
- urlscan_<version>.orig.tar.xz: Tarball com o código do upstream inalterado.
- urlscan_<version>-<release>.dsc: Arquivo que descreve a versão atual do pacote que acabamos de baixar.
- 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:
- changelog: Registra tudo que foi feito no pacote e por quem
- compat: Define a versão do debhelper a ser usada (atualmente estamos na 9)
- 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.
- 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.
- copyright: Define a licença em que esse pacote será distribuído.
- 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 =) .