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).