Um pacote debian é um pacote de software que pode ser instalado pelo sistema de gerenciamento de pacotes do Debian. Pacotes debian possuem a extensão ".deb". Neste projeto de gerência de configuração, foi realizado o empacotamento debian do Enem Amigo.
Tarball: um tarball é um conjunto de arquivos agrupados através do utilitário tar. Sua extensão é ".tar". Muitos arquivos .tar são comprimidos com o compressor de arquivos gzip e o resultado é o arquivo com extensão ".tar.gz" (esse é seu tarball).
Source package: é um pacote construído a partir do upstream tarball e que é utilizado para a criação do pacote binário.
Binary package: é um pacote construído à partir do source package e que será instalado de fato (este é o .deb).
Durante o empacotamento, duas ferramentas essenciais do Debian foram utilizadas: o dh_make e o debuild. É necessário instalar alguns pacotes que são utilizados durante o empacotamento:
O empacotamento é um processo relativamente burocrático e exige que uma série de convenções sejam seguidas. Porém, este processo se faz necessário para garantir que a instalação daquela versão do software seja realizada corretamente. Em primeiro lugar, é necessário criar o upstream tarball do projeto. Para isso, basta adicionar ao nome do projeto a versão correspondente do software que será empacotado, no caso do Enem Amigo a seguinte renomeação foi feita:
Vale lembrar que estes padrões de nome não são por acaso, as ferramentas de empacotamento do Debian esperam que os pacotes sigam estas convenções. O nome consiste no nome do source package, um underscore e a versão do software seguida pela extensão .orig.tar.gz. Em seguida, é necessário entrar na raíz do projeto e criar um diretório debian/ que será usado durante o empacotamento. Para realizar esta etapa, a ferramenta dh_make foi utilizada da seguinte forma:
Após a confirmação de alguns dados, o dh_make irá criar o diretório debian com uma série de arquivos de exemplo. Optamos por remover estes arquivos:
Cada projeto possui seu próprio contexto, sua própria forma de geração de build, seus arquivos de configuração, manuais, enfim, suas peculiaridades. Portanto, é difícil fornecer uma receita genérica para empacotar um software, pois cada sistema possuirá um contexto próprio. No caso do Enem Amigo, nós criamos alguns arquivos para a execução da build do projeto e instalação do seu pacote em uma distribuição Debian.
Este comando irá gerar o pacote binário enem-amigo_1.0-1_amd64.deb que pode ser distribuído e instalado em sistemas Debian-like através do gerenciador de pacotes dpkg. Exemplo de instalação:
O empacotamento Debian é uma técnica excelente para a distribuição de um software, porém, ela possui uma certa curva de aprendizado.
A realização do deploy foi através dos servidores em nuvem do DigitalOcean. O primeiro passo é a criação de um droplet, para isso é necessário criar um usuário e acessar o DigitalOcean onde pode ser criado e escolhido a distruição, os one-click apps, os snapshots (cria cópias do backup), o backup, o tamanho do seu droplet, a região que está o servidor e opções adicionais como private networking, ipv6, entre outros.
Através do SSH é possível o acesso ao servidor para o início da sua configuração, o IP para essa etapa é o Floating IP disponibilizado pelo DigitalOcean. Para a configuração, foram instalados os seguintes pacotes:
O próximo passo necessário é criar uma chave SSH para o seu repositório no GitHub e associá-la ao seu droplet. O último passo é alterar as configurações no arquivo de configuração do nginx que fica em /config/nginx.conf.