Product SiteDocumentation Site

15.3. Criando um Repositório de Pacotes para o APT

Falcot Corp gradualmente começou a manter alguns pacotes Debian modificados localmente a partir de pacotes existentes ou criados do zero para distribuir dados e programas internos.
Para facilitar a instalação, eles querem a integração destes pacotes em um repositório que possa ser acessado diretamente usando a ferramenta APT. Por motivos de manutenção óbvios, eles querem separar os pacotes internos dos pacotes refeitos localmente. O objetivo é ter as entradas correspondentes no arquivo /etc/apt/sources.list.d/falcot.list como segue:
deb http://packages.falcot.com/ updates/
deb http://packages.falcot.com/ internal/
Os administradores, portanto, configuram uma máquina virtual em seu servidor HTTP interno, com /srv/vhosts/packages/ como a raiz do espaço web associado. A própria gestão do arquivo é delegada ao comando mini-dinstall (no pacote similarly-named). Esta ferramenta mantém um olho em um diretório incoming/ (no nosso caso, /srv/vhosts/packages/mini-dinstall/incoming/) e espera por novos pacotes lá; quando um pacote for carregado, ele é instalado em um repositório Debian em /srv/vhosts/packages/. O comando mini-dinstall lê o arquivo *.changes criado quando o pacote Debian é gerado. Esses arquivos contêm uma lista de todos os outros arquivos associados com a versão do pacote (*.deb, *.dsc, *.diff.gz/*.debian.tar.gz, *.orig.tar.gz, ou seus equivalentes com outras ferramentas de compressão), e que permitem mini-dinstall saber quais arquivos instalar. Arquivos *.changes também contêm o nome da distribuição alvo (muitas vezes unstable) mencionado na última entrada debian/changelog, e mini-dinstall usa essas informações para decidir onde o pacote deve ser instalado. É por isso que os administradores devem sempre alterar este campo antes de construir um pacote, e configurá-lo para internal ou updates, dependendo da localização do alvo, mini-dinstall gera os arquivos exigidos pela APT, como Packages.gz.
Para configurar o mini-dinstall é necessário a configuração do arquivo ~/.mini-dinstall.conf; no caso da Falcot Corp, o conteúdo é o seguinte:
[DEFAULT]
archive_style = flat
archivedir = /srv/vhosts/packages

verify_sigs = 0
mail_to = admin@falcot.com

generate_release = 1
release_origin = Falcot Corp
release_codename = stable

[updates]
release_label = Recompiled Debian Packages

[internal]
release_label = Internal Packages
Uma decisão que merece atenção é a geração de arquivos Release para cada arquivo. Isso pode ajudar a gerenciar as prioridades de instalação de pacotes usando o arquivo de configuração /etc/apt/preferences (veja Seção 6.2.5, “Gerenciar prioridades de pacote” para detalhes).
Executar mini-dinstall realmente começa um daemon em segundo plano. Enquanto este daemon é executado, ele irá verificar se há novos pacotes no diretório incoming/ a cada meia hora; quando um novo pacote chegar, ele será movido para o arquivo e os arquivos Packages.gz e Sources.gz serão restaurados. Se executar um daemon é um problema, mini-dinstall pode também chamar no modo batch (com a opção -b) cada vez que um pacote for enviado para o diretorio incoming/. Outras possibilidades oferecidas pelo mini-dinstall estão documentados na sua página do manual mini-dinstall(1).