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

3

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

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

Para ser mais claro: Eu quero que o apt-get verifique tanto os repositórios regulares na internet quanto 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 deve baixar os arquivos da Internet.

    
por Marcelo Ruiz 06.10.2015 / 05:57

2 respostas

0

Eu finalmente consegui resolver isso e está funcionando muito bem, então quero compartilhá-lo com pessoas que querem implementar algo semelhante.

Meu primeiro problema foi que meu sistema suporta multi-arch, então os repositórios espelhados devem conter pacotes i386 e amd64 (eu não espelhei fontes) para evitar erros de download. Isso é feito em /etc/apt/mirror.list como 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

Meu base_path definido nesse arquivo é / mnt / apt-mirrors , e eu executo um script que monta um disco rígido externo conectado à porta USB do meu roteador como um compartilhamento de 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 de repositórios FTP no início em / etc / apt / sources .list Esta configuração faz com que o apt-get use os repositórios FTP primeiro ao baixar os arquivos e então use os definidos em /etc/apt/sources.list.d , desde que o espelhamento estão 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

em que você substitui usuário pelo nome de usuário que tem acesso concedido ao servidor FTP, : senha com sua senha, se necessário, para conectar (caso contrário, remover) e < strong> lan-resource com o endereço do servidor FTP na sua LAN (decidi editar o / etc / hosts para evitar a repetição do endereço IP codificado, onde defini 192.168.0.1 como lanftpserver para usar neste campo).

    
por Marcelo Ruiz 13.10.2015 / 17:12
1

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

  1. Instale dpkg-dev
  2. Coloque os pacotes em um diretório
  3. Crie um script que verificará os pacotes e criará um arquivo apt-get update pode ler
  4. Adicione uma linha ao seu sources.list apontando para o seu repositório

Instalar dpkg-dev

Abra um terminal:

sudo apt-get install dpkg-dev

O diretório

Crie um diretório para guardar 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.

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

Crie um script chamado update-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-repo in ~/bin . ( ~ significa o diretório inicial. Se ~/bin ainda 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-scanpackages examina todos os pacotes em lan-repo , e a saída é compactada e gravada no arquivo packages.gz , que apt-get update pode ler (veja abaixo uma referência que explica isso detalhadamente). /dev/null é um arquivo vazio - isto é - é improvisado para um arquivo de sobreposição que contém algumas informações adicionais sobre os pacotes, que no nosso caso não são realmente necessários. Veja deb-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, você está pronto.

Opção de 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 um 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 o Synaptic, o 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ê, contanto que podem ser satisfeitas.

    
por jamiejackherer 06.10.2015 / 23:46