Create package Debian - Criar um pacote Debian
Autor: Renato Soares de Melo | Publicado: 2011-01-27T13:09:00-08:00



Quem precisa do Zeca? :)

Instalar um programa em Linux é tão fácil que simplesmente esquecemos do método "antigo" de dois cliques e next, next e next. Há alguns casos que se assemelham com o "Next", mas nada melhor que um "apt-get", "dpkg -i" ou simplesmente dois cliques e...fim. :)
Há também a instalação em modo gráfico com o Kpackagekit ou Synaptic, bastando apenas pesquisar pelo programa, selecioná-lo se estiver disponível, mandar ver na instalação. Onde está a vantagem de tudo isso?
1 Você não precisará ir na barraca do Zeca e comprar um piratão.

2 Você não vai passar raiva com o Zeca porque o Crack do programa não está funcionando.

3 Você não vai precisar voltar no Zeca para trocar a bomba.

4 Não entrará em fúria quando colocar o novo CD do Zeca no PC, sendo atacado por um vírus ou praga que veio de "brinde".

5 Você não precisará dizer que o Zeca é um enganador, muito menos denunciá-lo no Procon por venda de produtos de baixa qualidade.

6 Você não precisará pagar R$ 100,00 ou mais em um programa original, tendo milhares de programas bons e gratuitos.

Pode parecer brincadeira, mas isso já aconteceu com muita gente (menos a parte do Procon kkkk Acho eu.). Mas para quem usa Linux... Isso é coisa de sofredor e noobie.
Package Debian - Linux é tudo original em pacote ;)

Um pacote Debian é o programa propriamente dito, empacotado com toda a estrutura para seu funcionamento, podendo ser adquirido por download na net ou usando o gerenciador de pacotes de sua distribuição.
Há muitas distribuições baseadas em Debian, cada uma com melhorias significativas para o usuário final. Escolher uma distribuição mais amigável pode ser a porta de entrada no mundo Linux. Veja a imagem abaixo e entenda como funciona a hierarquia de algumas distribuições Debian:


Essas distribuições possuem o gerenciador de pacotes e usam o arquivo ".deb" para instalar os programas. Mas oque é esse pacote na verdade?

Para você ver a estrutura do pacote Debian basta baixar qualquer um, então faça comando abaixo no diretório onde o pacote está (No Terminal):

dpkg-deb -x nome_do_Pacote.deb /home/usuário

No comando acima eu escolhi o lugar onde será extraído a estrutura do pacote em /home/usuário, podendo ser onde você estiver afim. Vale lembrar que em "usuário" é o seu nome de usuário.
Bem, um pacote Debian não é composto apenas de uma estrutura de diretórios onde será copiados os arquivos do programas, mas temos também um diretório de controle dentro desse pacote. Para extrair o diretório de controle faça:
dpkg-deb -e nome_do_pacote.deb /home/usuário/DEBIAN

Ficou confuso entender? Bem, quando queremos criar um pacote Debian, precisamos primeiro criar um diretório (pasta) com o nome do programa, depois dentro desse diretório criamos um outro diretório chamado DEBIAN (Diretório de controle) e outros diretórios apontando para os lugares onde ficarão os arquivos do programa. Veja a imagem abaixo:


Diretório do pacote = É  a pasta raíz do pacote, temos que colocar o nome do nosso programa. Lembre-se que devemos colocar com letras minúsculas.

DEBIAN = Diretório onde ficará os scripts de controle do pacote (vamos falar mais sobre isso). Quando um pacote é instalado, esse diretório não entra na hierarquia do sistema.

/usr = Arquivos de usuários nativos da distribuição

/usr/local = Para instalação de programas não oficiais da Distribuição

/usr/loca/bin = Em "bin" ficam os executáveis de programas ou diretórios dos programas não oficiais. Exemplo:

usr/local/bin/meu_programa_criado/executável_programa

ou

usr/local/bin/executável_programa
/usr/share = Diretório de compartilhamento, independente da arquitetura.

/usr/share/pixmaps = Aqui ficam os ícones dos programas

/usr/share/menu = Colocamos os lançadores dos nossos programas

/usr/share/applications = Nesse ficam os atalhos para Desktop

Entender a estrutura de diretórios do Linux ajuda muito na hora de criar seus pacotes, organizando cada detalhe de maneira correta. Caso tenha dúvidas pesquise no Google, porque esse é o melhor professor que criaram até hoje :)



Estrutura de diretório LinuxVendo novamente a imagem 3 neste blog, percebemos que o pacote Debian, nada mais é, que um meio de copiar os arquivos já prontos para diretórios do sistema. Bastando apenas criar uma estrutura de diretórios que simule o caminho correto para onde vão os arquivos.

ENTENDENDO O DIRETÓRIO DEBIAN

Faltou falarmos do diretório DEBIAN, que vai de intruso nesse pacote. O diretório DEBIAN não vai fazer parte da estrutura de diretórios do sistema, sendo ignorado, mas possuindo a funcionalidade de executar scripts antes e depois da instalação do pacote. Veja abaixo os scripts padrão do diretório DEBIAN:

control = O arquivo de controle "control" é muito importante, porque ele vai especificar o nome do pacote, nome do mantenedor, versão do pacote, listar as dependências necessárias para funcionar o pacote, descrição do pacote e para que serve. O arquivo pode ser mais abrangente, mas esses são as informações básicas do arquivo de controle "control". Veja abaixo um exemplo do arquivo control:

Package: zsnes Source: zsnes (1.510-2.2)
Version: 1.510-2.2+b1 Architecture: i386
Maintainer: Joshua Kwan
 Installed-Size: 4084 
Depends: libao4 (&gt;= 1.0.0), libc6 (&gt;= 2.3.6-6~), libgcc1 (&gt;= 1:4.1.1), libgl1-mesa-glx | libgl1, libpng12-0 (&gt;= 1.2.13-4), libsdl1.2debian (&gt;= 1.2.10-1), libstdc++6 (&gt;= 4.1.1), zlib1g (&gt;= 1:1.2.2.3)

Section: otherosfs
Priority: optional 
Description: Emulator of the Super Nintendo Entertainment System (TM)  ZSNES allows you to play classic games written for the "SNES" game  console on a GNU/Linux system. It supports advanced features such as  multiplayer gameplay over a TCP/IP network.  .  Please note that many separately-available games playable under this  emulator are non-free. See /usr/share/doc/zsnes/README.Debian for more  information.

postinst = Atualiza o menu na instalação (script shell)

#!/bin/sh
set -e
# Automatically added by dh_installmenu
if [ "$1" = "configure" ] &amp;&amp; [ -x "`which update-menus 2&gt;/dev/null`" ]; then
 update-menus
fi
# End automatically added section


postrm = Atualiza menu na desinstalação do programa (script shell)

#!/bin/sh
set -e 
# Automatically added by dh_installmenu
if [ -x "`which update-menus 2&gt;/dev/null`" ]; then update-menus ; fi
# End automatically added section

Podemos ver que dentro do diretório DEBIAN ficará os três arquivos acima. O criador do pacote pode colocar outros, mas esses dois fazem o básico para começar. Então nosso diretório DEBIAN ficou assim:

Um dica básica é dissecar pacotes Debian pequenos e tentar entender oque os scripts fazem. Estudar bem a estrutura do pacote, analisando os caminhos apontados e os arquivos que serão instalados.

FINALIZANDO O PACOTE DEBIAN

Quando você já tiver feito todos os passos necessários para criação do pacote, então já é hora de transformar tudo em DEB. Faça o comando abaixo no terminal:

dpkg-deb -b  

No comando acima eu mostrei o cominho completo onde está o pacote base e depois o caminho completo onde será criado o pacote Debian pronto. Ficaria assim no meu caso:

dpkg-deb -d /home/renato/tralhas /home/renato/tralhas

No meu diretório há o pacote base e depois será criado o pacote Debian final.

Fazer um pacote Debian é muito facil se você já conhece o básico da estrutura de diretórios do Linux. Acho que é muito divertido criar nossos próprios pacotes e, no final de tudo, ele instalar e funcionar perfeitamente.

Fiz este post com base em minhas pesquisas, mas pode conter erros que não pude notar ou por falta de conhecimento mais avançado. Peço que me corrijam se há algum erro, afinal, não sou expert em Linux ainda.