Como Criar um Espelho Parcial Automático do Sistema de Empacotamento Debian?

2

Eu tenho várias máquinas em casa rodando Debian Linux, e eu tenho vontade de fazer um espelho parcial do sistema de empacotamento. Eu considerei fazer um espelho completo, mas não uso a maioria dos pacotes. No entanto, a maioria das soluções de espelho parcial que eu encontrei exigem que você coloque manualmente os pacotes em um arquivo de configuração. Existe uma maneira de ter um espelho parcial tal que meu servidor local baixa / atualiza pacotes quando eu os instalo no cliente?

Além disso, talvez suporte também para o Ubuntu (eu tenho algumas VMs do Ubuntu).

Obrigado!

    
por BBmineTesting 10.01.2018 / 04:15

2 respostas

2

Existem algumas coisas para fazer, mas eu entendo não querer fazer um espelho completo do Debian. Claro, eles definem um espelho completo como todas as arquiteturas, todos os lançamentos.

Um subconjunto menor, mas ainda maior do que você deseja, é usar apt-mirror - dessa forma, você pode reduzi-lo a uma única versão e arquitetura, se desejar. link

O que você provavelmente quer é armazenar em cache qualquer pacote na primeira vez que fizer o download e disponibilizá-lo para todas as máquinas da sua rede. Você pode fazer isso colocando um proxy entre seus clientes e os servidores espelho, e há um (bem, alguns, mas o mais recente é) proxy / webserver combo tudo em um apt-cacher-ng que você pode apontar seu Debian local / Ubuntu / Mint / etc máquinas em. link

    
por 10.01.2018 / 05:06
0

Não sou especialista, mas fiz algo parecido. Não totalmente automático, mas envolve digitar apenas alguns comandos.

Primeiro, pegue a lista do que está em uso (supondo que todas as máquinas tenham o mesmo arco):

$ apt list --installed > install.list

Em seguida, traduza-o para o formato apt compreensível:

$ sed -r  's/ \[.*?\]//g' install.list | sed -r 's/(^.*?)\/.*?[ ](.*?)[ ](.*?)$/:=/g' > install.list.to.dl

Faça o download das versões atuais dos pacotes:

$ xargs apt download < install.list.to.dl

Isso fará o download de todos os debs que foram atualmente instalados no diretório atual.

Você precisaria criar um arquivo Packages.gz para adicionar esta pasta como fonte para o apt. Por exemplo,

$ cd ~/deb_server/debs/
$ dpkg-scanpackages -m . /dev/null | gzip -9c >  Packages.gz  

EDIT: o caminho para o dpkg-scanpackages deve ser relativo, caso contrário, isso irá interromper o processo de download mais tarde

(- m permite que você tenha várias versões, se você quiser a versão mais recente, remova-o)

Agora você precisa abrir um servidor de arquivos, por exemplo, apache2 e configurá-lo para indexar arquivos.

/etc/apache2/sites-enabled/000-debserver.conf

Contendo:

 DocumentRoot /var/www
   <Directory /var/www/>
     Options +Indexes +FollowSymLinks
     Require all granted
   </Directory>

E finalmente você precisa criar um link simbólico da pasta deb para / var / www. (Ou configure o servidor para o local de download deb atual), por exemplo,

$ ln -s ~/deb_server/debs/ /var/www/repo

O último bit é adicionar a máquina do servidor como a única fonte para atualizações apt em cada máquina de destino.

$ deb [trusted=yes] http://deb_server_ip/repo /

Se você deseja atualizar os pacotes, você precisa re-executar o apt download da lista, mas sem a versão.

$ sed -r  's/ \[.*?\]//g' install.list | sed -r 's/(^.*?)\/.*?[ ](.*?)[ ](.*?)$/:/g' > install.list.for.update

$ apt update && xargs apt download < install.list.for.update

e atualize o Packages.gz.

Não tenho certeza se este é o melhor caminho, mas funciona para mim.

    
por 10.01.2018 / 08:37

Tags