Existe uma maneira simples de configurar o apt-get para otimizar downloads usando um lan apt-mirror quando disponível?

Existe uma maneira simples de configurar o apt-get para otimizar downloads usando um lan apt-mirror quando disponível?

Tenho um laptop e uma cópia local de vários repositórios em um disco rígido externo conectado ao meu roteador. Meu roteador fornece acesso a esses arquivos (com credenciais) como compartilhamentos samba e/ou servidor FTP.

Gostaria de configurar o apt-get para verificar esses repositórios quando estiverem disponíveis e baixar atualizações deles para acelerar o processo quando possível.

Para ser mais claro: quero que o apt-get verifique os repositórios regulares na Internet e o meu local quando meu laptop estiver conectado ao meu wifi. Se os arquivos nos repositórios externos forem mais recentes que os do meu espelho local ou se o espelho não estiver disponível, o apt-get deverá baixar os arquivos da Internet.

Responder1

Existem 4 etapas para configurar seu próprio repositório

  1. Instalardpkg-dev
  2. Coloque os pacotes em um diretório
  3. Crie um script que irá escanear os pacotes e criar um arquivo apt-get updateque possa ler
  4. Adicione uma linha ao sources.listapontar para o seu repositório

Instalardpkg-dev

Abra um terminal:

sudo apt-get install dpkg-dev

O diretório

Crie um diretório para manter seus pacotes. Para este exemplo, usaremos /usr/local/lan-repo.

sudo mkdir -p /usr/local/lan-repo

Agora mova todos os seus pacotes para esse novo diretório.

Pacotes que já foram baixados geralmente são armazenados em seu sistema no formato /var/cache/apt/archives. Se você instalou, apt-cacherprovavelmente terá pacotes adicionais armazenados no apt-cacher/packagesdiretório.

Crie um script chamadoupdate-lan-repo

É um script de três linhas muito simples:

#! /bin/bash
cd /usr/local/lan-repo
sudo dpkg-scanpackages . /dev/null | gzip -9c > packages.gz

Copie e cole o texto acima em seu editor de texto favorito e salve-o como update-lan-repono formato ~/bin. ( ~significa o diretório inicial. Se ~/binainda não existir, crie-o. O Ubuntu colocará automaticamente esse diretório em seu PATH. Isso o torna um bom lugar para colocar scripts pessoais.)

Agora vamos tornar o script executável:

chmod u+x ~/bin/update-lan-repo

Veja como o script funciona:

dpkg-scanpackagesanalisa todos os pacotes em lan-repo, e a saída é compactada e gravada no arquivo packages.gz, que apt-get updatepode ser lido (veja abaixo uma referência que explica isso em detalhes). /dev/nullé um arquivo vazio - isto é - é uma improvisação para um arquivo de substituição que contém algumas informações adicionais sobre os pacotes, que no nosso caso não são realmente necessárias. Verdeb-override(5)se você quiser saber mais sobre isso.

Precisamos adicionar seu repositório local ao seu arquivo sources.list

echo "deb file:/usr/local/lan-repo ./" >> /etc/apt/sources.list

e pronto.

Opção CD/DVD

Você pode armazenar o diretório que contém o arquivo .deb em um CD/DVD e usá-lo também como repositório (bom para compartilhamento entre computadores). Para usar o CD como repositório:

basta executar o comando:

sudo apt-cdrom add

usando o novo repositório.

Então sempre que você armazenar um novo pacote debian no diretório lan-repo, execute:

sudo update-lan-repo
sudo apt-get update

Agora seus pacotes locais podem ser manipulados com Synaptic, aptitude e os comandos apt: apt-get, apt-cache, etc. Quando você tenta instalar o apt-get, quaisquer dependências serão resolvidas para você, desde que possam ser atendidas.

Responder2

Finalmente consegui resolver isso e está funcionando muito bem, então quero compartilhar com pessoas que desejam implementar algo semelhante.

Meu primeiro problema foi que meu sistema suporta multi-arch, então os repositórios espelhados deveriam conter pacotes i386 e amd64 (não espelhava fontes) para evitar erros de download. Isto é feito em/etc/apt/mirror.listcomo este exemplo mostra:

deb-i386  http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

Meucaminho_basedefinido nesse arquivo é/mnt/apt-espelhos, e executo um script que monta um disco rígido externo conectado à porta USB do meu roteador como um compartilhamento Samba (você pode ver o script aqui: como usar o apt-mirror para salvar arquivos no HDD conectado ao roteador LAN

Eu queria acessar os repositórios espelhados de outros computadores na LAN, então a outra parte da solução é adicionar as definições dos repositórios FTPno inicioem/etc/apt/sources.list. Esta configuração fazapt-getusar os repositórios FTP primeiro ao baixar arquivos e depois usar aqueles definidos em/etc/apt/sources.list.d, desde que os espelhados estejam atualizados.

Os repositórios locais são definidos assim:

deb [arch=amd64,i386] ftp://user:password@lan-resource/apt-mirrors/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

onde você substituido utilizadorcom o nome de usuário que tem acesso concedido ao servidor FTP,:senhacom sua senha, se necessário para conectar (caso contrário, remova) erecurso lancom o endereço do servidor FTP na sua LAN (decidi editar/etc/hostspara evitar a repetição do endereço IP codificado, onde defini 192.168.0.1 comoservidor lanftppara usar neste campo).

informação relacionada