Como criar um repositório local usando o apt-mirror e o mirrorkit?

9

Ter um repositório local pode ser muito útil. É possível usar rsyncpara criar um espelho de repositório, mas isso resulta no download de todas as versões, mesmo em versões mais antigas, e incluiria arquivos para arquiteturas que podem não ser necessárias.

apt-mirrorpermite escolher seletivamente partes do repositório. mirrorkitfornece um front-end para o apt-mirror.

Qual é a melhor maneira de criar um espelho de repositório local para partes selecionadas dos arquivos do Ubuntu?

Por exemplo, pode-se desejar incluir:

  • Principal, Restrita, Universo, Multiverso, Todo Ubuntu e Lubuntu, mas exclui outros derivados, como Kubuntu e Xubuntu.

  • Somente AMD64 e i386, mas excluem outras arquiteturas.

  • Apenas Trusty Tahr, mas não Precise Penguin ou Utopic Unicorn.

Pode-se desejar configurar o processo para que ele seja baixado de um espelho local, e não dos arquivos principais.

Como posso criar repositório local usando apt-mirrore mirrorkitpara uma arquitetura, versão ou variante selecionada do Ubuntu?

user75798
fonte
Excluir o Kubuntu? Você quer dizer excluir os ISOs do Kubuntu ou excluir qualquer pacote que esteja sendo usado pelo Kubuntu?
Muru
Exclua os ISOs do Kubuntu e do Xubuntu, por exemplo. Talvez existam muitos deles (Precision Kubuntu ARM, Precise Kubuntu i386, Quantal Kubuntu ARM, Quantal Kubuntu i386 ...) e o download do espelho inicial poderia ser concluído mais rapidamente sem esses ISOs. Mas se são apenas mais alguns Gigabytes, talvez isso não importe tanto.
user75798
1
Os ISOs são hospedados separadamente dos pacotes. Portanto, você pode usar o apt-mirror como faria normalmente para espelhar os repositórios de pacotes e usar alguma outra ferramenta para os ISOs. A questão torna-se então encontrar filtros de exclusão apropriados para essa ferramenta (digamos rsync).
Muru
"você pode usar o apt-mirror como faria normalmente" Sinto muito, não sei como fazer isso. É exatamente isso que eu gostaria de ser explicado.
user75798

Respostas:

9

O repositório de CDs e o repositório de software são dois componentes distintos (eles ainda têm páginas separadas da Barra de Ativação: cdmirrors e archivemirrors ). Portanto, espelhá-los são duas tarefas distintas. Além disso, embora os vários tipos tenham pastas diferentes no repositório do CD, eles compartilham um repositório de software. Assim, você pode espelhar seletivamente as imagens por sabor, mas não o software. Para o repositório de software, você pode espelhar seletivamente com base em:

  • liberar ( trusty, precise, etc.)
  • arquitetura ( amd64, i386, etc.)
  • tipo de pacote (binário [ deb] vs fonte [ deb-src])
  • canais ( trusty, trusty-updates, trusty-backports, etc.)
  • secções ( main, multiverse, etc.)

Para espelhar o repositório de software, use apt-mirror.

apt-mirrorestá configurado usando /etc/apt/mirror.list. Tem um formato muito semelhante ao sources.list. O arquivo de configuração instalado pelo pacote possui algumas opções comentadas que listam seus padrões. Se desejar, você pode descomentar e alterá-los.

Para espelhar um repositório, você precisa adicionar uma linha mirror.listcomo gostaria para sources.list:

deb http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe

O padrão é espelhar apenas a arquitetura do host; portanto, se você estiver em um Ubuntu de 64 bits, apenas amd64será espelhado. Você precisa adicionar outra linha do formulário:

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

E para pacotes de origem:

deb-src http://us.archive.ubuntu.com/ubuntu trusty main multiverse restricted universe

Se você estiver procurando por um espelho razoavelmente completo, essas linhas seriam o mínimo (eu também recomendaria o -updatescanal):

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

Por fim, você precisa adicionar uma cleanlinha para que os pacotes que não estão mais disponíveis no repositório sejam filtrados para remoção:

clean http://us.archive.ubuntu.com/ubuntu

Digamos que suas variáveis ​​sejam assim (os padrões):

set base_path    /var/spool/apt-mirror
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $var_path/clean.sh

Então:

  • O repositório será espelhado para $mirror_path/parent-hostname/directory(então /var/spool/apt-mirror/mirror/us.archive.ubuntu.com/ubuntu)
  • O clean.sh(que será um conjunto de rmcomandos para excluir pacotes e diretórios obsoletos) será /var/spool/apt-mirror/var/clean.sh.
  • Os logs irão para /var/spool/apt-mirror/var.

O apt-mirrorpacote instala um cron job ( /etc/cron.d/apt-mirror), que você deve editar para habilitar (descomentando a linha que contém /usr/bin/apt-mirror). Você também deve adicionar um trabalho cron para execução clean.sh(eu o executo semanalmente).

Obviamente, você deve substituir http://us.archive.ubuntu.com./ubuntupor qualquer espelho que preferir.

muru
fonte
1
É mesmo deb-amd64ou deb arch=amd64? I só pode encontrar o último um em manpage
Anwar
1
@ Anwar, o primeiro. O último é para sources.list, que tem um formato semelhante, mas não idêntico. Veja manpages.ubuntu.com/manpages/trusty/en/man1/apt-mirror.1.html , onde deb-powerpcestá o exemplo.
Muru
Oh! Eu não tive experiência com o apt-mirror. Pensei que era para sources.list. Graças
Anwar
2

Eu recomendo o apt-cacher para aqueles com espaço limitado ou aqueles com preços exorbitantes da Internet em seus países.

O apt-mirror, supostamente, requer pelo menos 15 GB para cada sabor (32/64 bits) da distribuição que você deseja. O apt-cacher usa apenas os pacotes que você instalou.

Leia Criar um repositório local do Ubuntu usando o Apt-Mirror e o Apt-Cacher para obter mais detalhes / instruções, por favor.

nyxee
fonte