Como criar pacote deb para instalação do seu programa

Criar pacote deb de seu programa lhe permitirá ter uma instalação rápida e limpa, de modo que o sistema alvo não precise de ambiente de compilação. E isso é ótimo, porque agiliza o processo e permite que você possa enviar o programa para seu cliente mesmo instalar, sem maiores complicações.

Já mostrei nesse outro artigo como criar um instalador para seus programas feitos em Qt. Tem mais uma forma de fazer a instalação, como visto no artigo anterior, mas agora vamos “subindo o nível”, dessa vez criando um pacote para instalar através do gerenciador de pacotes dpkg e para o próximo artigo, deixo uma surpresa.

Modos de criar pacote deb

Dá pra fazer de várias maneiras. Como não é um procedimento de rotina, não faço de cabeça o pacote, então sempre recorro a alguma referência – e isso é o que sempre enfatizo; é importante ter os conceitos, decorar é limitante e demorado. E qual seria a referência? Simples!

Quando instalamos algum programa através do apt, os arquivos baixados ficam em /var/cache/apt/archives. Sempre que esquecer, agora já tem duas opções; ou você recorre a esse artigo, ou repita o processo a seguir.

Copiando um dos arquivos .deb contidos no diretório supracitado, bastará extrair o conteúdo em algum lugar e então usá-lo como referência para criar a estrutura do seu programa:

mkdir ~/lab
cd lab
cp /var/cache/apt/archives/arquivo_escolhido.deb .
dpkg -e arquivo_escolhido.deb .
dpkg -X arquivo_escolhido.deb

O comando dpkg com a flag “-X” extrai a estrutura de diretórios de sistema, semelhante à compilação do artigo anterior. O comando dpkg com a flag “-e” extrai o diretório DEBIAN, que contém o arquivo de controle e opcionalmente um arquivo com a somatória md5. Fiz a descompressão de exemplo com o pacote cutecom, um programa de comunicação serial.

Agora temos a estrutura de diretórios raiz e um diretório DEBIAN. Vejamos o conteúdo do arquivo control:

Package: cutecom
Version: 0.30.3-1
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Roman I Khimov <roman@khimov.ru>
Installed-Size: 346
Depends: libc6 (>= 2.14), libgcc1 (>= 1:3.0), libqt5core5a (>= 5.6.0~beta), libqt5gui5 (>= 5.0.2) | libqt5gui5-gles (>= 5.0.2), libqt5serialport5 (>= 5.6.0), libqt5widgets5 (>= 5.2.0), libstdc++6 (>= 4.1.1)
Suggests: lrzsz
Section: comm
Priority: optional
Homepage: http://github.com/neundorf/CuteCom
Description: Graphical serial terminal, like minicom
 Cutecom is a graphical serial terminal, like minicom.
 It is aimed mainly at hardware developers or other people who need a
 terminal to talk to their devices. It features lineoriented interface
 instead of character-oriented, xmodem, ymodem, zmodem support
 (requires the lrzsz package) and hexadecimal input and output among
 other things.
 It is written using the Qt library originally by Trolltech (www.trolltech.com).

Ótimo, já consegui relembrar tudo! Precisamos de um nome de pacote, versão de software, arquitetura pode ser all, InstalledSize é opcional, Depends é opcional, Suggests é opcional, Priority é opcional, homepage é opcional. Description é opcional. Mas se quiser saber todas as possiblidades, agora que sabemos o nome do arquivo necessário dentro do diretório DEBIAN, basta consultar a documentação. Aqui temos a documentação dessas e de outras propriedades do arquivo control.

Em suma, tudo o que precisamos é da estrutura de diretórios e suas dependências e o diretório DEBIAN com o arquivo de controle para  criar pacote deb:

tree - criar pacote deb

Agora basta descer um nível de diretório e gerar o pacote para instalação:

dpkg-deb -b arquivo-png/ arquivo-png-0.1.deb

O arquivo terá o nome definido como parâmetro, mas é ideal que o nome do pacote tenha o nome do diretório a ser compilado. Meu arquivo de controle ficou assim:

Package: arquivo-png
Version: 0.1
Architecture: all
Maintainer: eu mesmo <eu@mesmo.com.br>
Depends:
Suggests: gwenview
Priority: optional
Homepage: https://www.dobitaobyte.com.br
Description: Uma imagem .png

Quando instalado, o arquivo xgo.png será colocado na mesma estrutura definida dentro do diretório do pacote, ou seja, nesse caso estará disponível em /tmp.

Para instalar o pacote:

sudo dpkg -i arquivo-png-0.1.deb

Para obter informações do pacote instalado:

dpkg -l arquivo-png

Que retornará algo como:

dpkg -l - criar pacote deb

Para remover:

sudo dpkg -r arquivo-png

Agora sabemos criar pacote deb para instalação de nossos programas. Basta então copiar seu programa para outro sistema compatível e instalá-lo desse modo ou como exemplificado no artigo anterior – que aliás, lhe auxiliará a compor o diretório raiz do programa.

Fecharei a série com o próximo artigo, acompanhe!

 

 

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.