15.3. Criando um Repositório de Pacotes para o APT
A 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 integrar estes 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 reconstruídos 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 gestão do repositório é delegada ao comando mini-dinstall
(no pacote de mesmo nome). 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. O mini-dinstall
gera, então, os arquivos necessários para o APT, como o 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 pacote. Isso pode ajudar a gerenciar as prioridades de instalação de pacotes usando o arquivo de configuração
/etc/apt/preferences
(veja em
Seção 6.2.5, “Gerenciar prioridades de pacote” para detalhes).
Executar mini-dinstall
começa, na verdade, 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 repositório e os arquivos Packages.gz
e Sources.gz
serão restaurados. Se executar um daemon é um problema, mini-dinstall
também pode ser chamado manualmente no modo batch (com a opção -b
) cada vez que um pacote for enviado para o diretório incoming/
. Outras possibilidades oferecidas pelo mini-dinstall
estão documentadas na sua página de manual mini-dinstall(1).