Pacote Debian ou deb é como um ‘instalador’ para distribuições baseadas em Debian. Existem dois tipos de pacotes Debian, ambos com a mesma funcionalidade de implementar determinado comando, recurso ou recursos.
Irei abordar a criação de um pacote Debian binário, que é o mais utilizado entre os dois tipos de pacotes. Consiste de vários arquivos executáveis, de configuração, paginas de manual, informações de propriedade, entre outras documentações. Os pacotes são comumente encontrados com a extensão ‘.deb’.
Para a criação é necessário seguir algumas regras em relação a estrutura:
- Deve se criar uma pasta onde conterá os arquivos referentes ao pacote.
- O pacote Debian é principalmente constituido de uma pasta com nome DEBIAN, onde ficarão os scripts e o arquivo control.
- Do arquivo control onde contém todos as necessidades e requisitos para a execução e instalação do referido pacote. Assim como o nome, a versão, descrição, entre outros.
- Os scripts, não são necessários, porêm muitas vezes são utilizados, na pasta DEBIAN é possível criar scripts para antes de iniciar a instalação(preinst) e remoção (prerm), e após a instalação(postinst) e remoção(postrm). Esses arquivos são comumente escritos em shell script.
Em um pacote Debian tambem é possível se colocar determinados arquivos, em determinadas pastas. Apenas colocando as pastas com seu nome exatamente como irão ficar na pasta e seu caminho.
Para exemplificar, iremos criar um pacote para execução de um PHP.
Supondo que o nome de nosso pacote, seja examplePHPDEB, a estrutura para criação do mesmo seria:
- examplePHPDEB
- DEBIAN
- control
- preinst
- postinst
- postrm
- prerm
- var
- www
- example.php
Estrutura do Pacote
Criamos a pasta do pacote DEB examplePHPDEB, dentro da mesma, estará a pasta DEBIAN onde estarão os scripts de execução, que deverão ser executados durante a instalação do pacote, e o arquivo control que possui as configurações do pacote.
Também está o nosso arquivo PHP a ser executado. Exatamente na pasta onde o mesmo deverá ficar. é colocado na estrutura da pacote o caminho exato de onde estará o mesmo após a instalação, no nosso exemplo o arquivo example.php estará em /var/www/example.php
Control
O arquivo control, é o arquivo mais importante da criação do pacote DEB, sem o mesmo, não é possível criar o pacote. Neste arquivo estarão armazenados os dados do pacote criado, como nome, versão, descrição, dependências, Mantenedor, entre outros.
Um arquivo Control pode ser composto da seguinte forma, dentro da pasta DEBIAN.
Conteúdo:
Package: examplePHPDEB Priority: optional Version: 1.00 Architecture: i386 Maintainer: Vinícius Muniz <http://www.viniciusmuniz.com> Installed-size: 10 Section: devel Depends: php5(>=5.2.1), apache2(>=2.2.3), php5-gd, php5-sqlite Homepage: http://www.viniciusmuniz.com/ Description: Pacote exemplo, para execução de um arquivo php.
Para execução de scripts antes ou após a instalação do pacote, pode se utilizar os arquivos na pasta DEBIAN:
- Preinst – Executado antes do início da instalação;
- Postinst – Executado após o termino da instalação;
- Prerm – Executado antes da remoção;
- Postrm – Executado após a remoção.
Os scripts seguem o mesmo padrão. Utilização de bash, sh ou ksh. Ou se souber “fazer marretas”, pode utilizar php, c, c++, tudo seria uma questão de fazer a chamada do arquivo com outra linguagem dentro dos scripts do pacote.
No nosso exemplo não há necessidade da utilização de um destes scripts. Porém utilizaremos, para criar um ícone no menu para abrir o navegador com o arquivo php sendo executado.
Postinst
#!/bin/sh # # Copyright (c) 2010 The Vinicius Muniz <http://viniciusmuniz.com> Authors. All rights reserved. #Add icons to all users. for usuario in $( ls /home ); do if [ ! -d /home/$usuario/.local/share/applications ]; then mkdir /home/$usuario/.local/share/applications fi cp /usr/share/applications/examplePHPDEB.desktop /home/$usuario/.local/share/applications done
Para a utilização deste script, iremos criar outro arquivo, com o nome de examplePHPDEB.desktop onde iremos armazenar os dados do atalho. O arquivo ficará armazenado dentro de /usr/share/applications/ dentro do pacote, e após a instalação neste mesmo caminho dentro do servidor.
O conteúdo do atalho será:
[Desktop Entry] # Created by Vinícius Muniz <http://ViniciusMuniz.com> Version=1.0 Encoding=UTF-8 Name=examplePHPDEB # Only KDE 4 seems to use GenericName, so we reuse the KDE strings. # From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413. GenericName=examplePHPDEB # Gnome and KDE 3 uses Comment. Comment=Example DEB Exec=/var/www/start.sh Terminal=false Type=Application Categories=GTK;Application;Development;IDE; StartupNotify=true
Para a execução do nosso arquivo iremos criar um outro arquivo em shell para abrir o navegador com o script PHP rodando. O arquivo, está especificado em Exec no arquivo .desktop será o arquivo start.sh, o conteúdo do mesmo será:
#!/bin/sh # Created by Vinícius Muniz <ViniciusMuniz.com> sudo /etc/init.d/apache2 start for i in google-chrome firefox mozilla konqueror; do if test -x "/usr/bin/$i"; then /usr/bin/$i http://localhost/example.php exit $? fi done
Após criar toda a estrutura, e editar todos os scripts que desejamos, podemos realmente ter o pacote .deb.
Utilizaremos o comando dpkg-deb. Com a sintaxe:
dpkg-deb -b <caminho da estrutura do pacote> <local onde o pacote será gerado>
Pronto, com isso, teremos o pacote DEB gerado,
e para executarmos o mesmo, podemos utilizar o comando
dpkg -i <caminho do pacote>.