Criando um repositório de pacotes Debian para distribuir múltiplas versões de um pacote deb customizado

4

Estamos construindo uma aplicação, que será empacotada em um pacote DEB. Gostaríamos de poder instalar e (no futuro) atualizar esse aplicativo em vários servidores Linux com interação manual mínima, usando apt-get .

Para isso, planejamos implantar nosso próprio repositório de pacotes DEB dentro da organização. (Por isso, hospedamos nosso pacote SOMENTE, mas não espelham o repositório externo existente) Esse repositório de pacotes deve ser usado por todos os servidores Linux dentro da organização para instalar apenas o nosso pacote de aplicativos.

Alguém pode me explicar como isso deve ser feito (incluindo as melhores práticas)?

  • Como configurar um repositório mínimo de pacotes DEB para nosso pacote (e manusear quando uma nova versão é lançada)?
  • Configurando servidores Debian assim que esse pacote único seria buscado em nosso pacote DEB personalizado servidor de repositório dentro da organização.
por Peter G. Horvath 28.02.2017 / 16:01

2 respostas

1

Depois de passar algum tempo pesquisando as várias fontes de documentação, criei a seguinte solução, que estou compartilhando na esperança de que isso ajude outras pessoas também:

  1. Na máquina usada para hospedar o repositório, configure um repositório pessoal de acordo com a descrição da documentação do Ubuntu mas NÃO adicione a entrada sources.list nessa máquina.
  2. Exponha o diretório com os arquivos DEB e o arquivo Packages.gz por meio de um servidor da Web, por exemplo, com Nginx para que esteja disponível todas as máquinas que consumirão o arquivo DEB.

  3. Nas máquinas, que buscarão o pacote DEB, adicione uma entrada ao arquivo /etc/apt/sources.list , que aponta para o seu servidor (substitua o foobar pelo seu próprio URL): deb [trusted=yes] http://foobar/ /

  4. Executar sudo apt update
  5. Execute sudo apt install foobar para instalar seu próprio pacote (substitua foobar pelo nome do seu próprio pacote)

NOTA: esta configuração hospeda os pacotes DEB sem qualquer proteção fornecida por pacotes / repositórios assinados. Caso o repositório seja disponibilizado para um público mais amplo do que os servidores da sua equipe que residem em uma sub-rede protegida por trás de um firewall da empresa, você provavelmente desejará implementar a assinatura do repositório e dos pacotes.

    
por 01.03.2017 / 15:23
0

Você pode fazer isso manualmente com o dpkg-scanpackages, como você explicou em sua resposta. No entanto, existem algumas ferramentas de níveis mais altos para lidar com isso também. Uma ferramenta simples para ajudar, que também suporta migração e repositórios assinados e outras coisas, é chamada reprepro . Para começar, algo assim pode funcionar:

$ mkdir ~/repo
$ cd ~/repo
$ mkdir incoming conf repository
$ cat > conf/options <<EOF
morguedir +o/old-versions
outdir +b/repository
EOF
$ cat > conf/distributions <<EOF
Codename: stretch
Origin: <you>
Label: <you>
Description: <description of this repository>
Architecture: source amd64 i386
Components: main
SignWith: <your gpg key ID>
EOF
$ cat > conf/incoming <<EOF
Name: incoming
IncomingDir: incoming
LogDir: logs
TempDir: /tmp
Multiple: yes
Permit: older_version unused_files
Allow: stretch
EOF

Agora, sempre que você quiser adicionar pacotes ao seu repositório, adicione os pacotes (com o arquivo .changes ) no diretório ~/repo/incoming e, em seguida:

cd ~/repo
reprepro processincoming incoming

Isso pedirá sua senha de chave GPG (a menos que seja uma senha sem senha); uma vez que você entrou, o repositório estará atualizado e será assinado.

A Reprepro está bem documentada na sua página de manual ; Eu sugiro que você dê uma olhada se precisar de mais detalhes do que isso.

    
por 24.01.2018 / 12:35