Configurando um espelho do repositório Debian

Espelhar ou não

Nós apreciamos todos os novos espelhos, cada futuro mantenedor de espelho deveria ter certeza que ele pode responder todas estas questões antes de tentar iniciar seu próprio espelho:

O que espelhar

A página principal sobre espelhos lista os repositórios disponíveis para espelhamento.

Por favor, consulte a página de tamanho do espelho para informações mais precisas sobre o tamanho dos espelhos.

O repositório debian-security/ contém as atualizações de segurança lançadas pela equipe de segurança do Debian. Soa interessante para todos, mas como as atualizações de segurança são esporádicas, seria necessário espelhá-las muito freqüentemente para se manter atualizado (ou usar espelhamento push), por isso nós não recomendamos. Ao invés disso, o Debian faz tudo que é necessário para manter a alta disponibilidade do security.debian.org.

Nota: o repositório debian-non-US/ é considerado obsoleto desde a versão 3.1 (sarge) lançada em Junho de 2005.

De onde fazer um espelho

Muitas pessoas parecem pensar que o ftp.debian.org é a localização oficial dos pacotes do Debian e que ele será o melhor lugar de todos para fazer o espelho. Isto é falso.

ftp.debian.org é meramente um dos vários servidores que é atualizado por um servidor interno do Debian. Este endereço está atualmente localizado em um único servidor nos Estados Unidos, e ele ainda existe principalmente por retro-compatibilidade.

Os espelhos oficiais tendem a ser um bom lugar a partir do qual espelhar. Qualquer servidor que esteja na lista completa de espelhos e que possua os rótulos Type: Push-Primary ou Type: Push-Secondary deveria ser um bom lugar de onde se fazer um espelho. Por favor, escolha um que esteja perto de você, tanto em termos de rede como geograficamente.

Não existe nenhuma diferença aparente entre diferentes servidores Push-Primary já que eles fazem parte do processo de espelhamento. Por outro lado, se muitas pessoas usarem o ftp.debian.org (e infelizmente isso acontece), muita banda é desperdiçada sem necessidade.

Administradores de espelhos nos Estados Unidos deveria espelhar a partir de ftp.us.debian.org (o endereço de espelho oficial dos EUA, que é um espelho Push-Primary). Mas, como este endereço é também um apelido "round-robin" para várias máquinas, normalmente faz sentido determinar quais dos componentes é o melhor e então espelhar a partir deste em particular.
A vantagem de fazer isso é que evita o risco de falhas quando realizando rsync em dois estágios (diferentes estágios podem acabar em máquinas diferentes durante as janelas de tempo nas quais eles tem dados diferentes, causando uma condição de disputa ("race"). A desvantagem é que concentra em único site o desempenho que pode varia, mas que é atualmente inerente à nossa rede de espelhos em geral.

Como fazer um espelho

O método recomendado para se fazer um espelho é usando o script anonftpsync.

O protocolo de espelhamento que nós recomendamos é o rsync.

Por favor, não espelhe o Debian usando o wget e outras ferramentas baseadas em FTP. Pode parecer que elas funcionam bem, mas há vários problemas (elas não detectam hard links, é difícil fazer um espelho parcial, etc).

Configuração rsync

Nós recomendamos uso deste script para fazer o espelho dos repositórios. Siga as instruções no script para configurar um espelho.

Alguns conselhos para aqueles que preferem métodos diferentes:

Fazendo um espelho parcial

Considerando o grande tamanho dos repositórios do Debian, algumas pessoas preferem fazer um espelho apenas da parte que elas necessitam. Se você quer excluir alguma coisa, você deve excluir as arquiteturas.

Com o anonftpsync, isto pode ser feito editando a variável ARCH_EXCLUDE.

Nós advertimos fortemente sobre a exclusão dos subdiretórios project/, doc/ e outros. Normalmente eles são menores, e de muita utilidade para os usuários. Especialmente project/trace, que ajuda muito se houver algum problema com o espelho.

É possível usar outros scripts escritos especialmente para isso mas, usualmente, eles não são necessários e não são recomendados para espelhos oficiais. Por exemplo, este conjunto de opções rsync excluiria todas as arquiteturas:
--exclude binary-alpha/ --exclude *_alpha.deb --exclude *_alpha.udeb --exclude installer-alpha/ --exclude Contents-alpha*
--exclude binary-amd64/ --exclude *_amd64.deb --exclude *_amd64.udeb --exclude installer-amd64/ --exclude Contents-amd64*
--exclude binary-arm/ --exclude *_arm.deb --exclude *_arm.udeb --exclude installer-arm/ --exclude Contents-arm*
--exclude binary-hppa/ --exclude *_hppa.deb --exclude *_hppa.udeb --exclude installer-hppa/ --exclude Contents-hppa*
--exclude binary-hurd-i386/ --exclude *_hurd-i386.deb --exclude *_hurd-i386.udeb --exclude installer-hurd-i386/ --exclude Contents-hurd-i386*
--exclude binary-i386/ --exclude *_i386.deb --exclude *_i386.udeb --exclude installer-i386/ --exclude Contents-i386*
--exclude binary-ia64/ --exclude *_ia64.deb --exclude *_ia64.udeb --exclude installer-ia64/ --exclude Contents-ia64*
--exclude binary-m68k/ --exclude *_m68k.deb --exclude *_m68k.udeb --exclude installer-m68k/ --exclude Contents-m68k*
--exclude binary-mips/ --exclude *_mips.deb --exclude *_mips.udeb --exclude installer-mips/ --exclude Contents-mips*
--exclude binary-mipsel/ --exclude *_mipsel.deb --exclude *_mipsel.udeb --exclude installer-mipsel/ --exclude Contents-mipsel*
--exclude binary-powerpc/ --exclude *_powerpc.deb --exclude *_powerpc.udeb --exclude installer-powerpc/ --exclude Contents-powerpc*
--exclude binary-s390/ --exclude *_s390.deb --exclude *_s390.udeb --exclude installer-s390/ --exclude Contents-s390*
--exclude binary-sparc/ --exclude *_sparc.deb --exclude *_sparc.udeb --exclude installer-sparc/ --exclude Contents-sparc*

Quando fazer o espelho

O repositório principal é atualizado duas vezes por dia. Os espelhos geralmente começam a ser atualizadas em torno de 09:00 e 21:00 (ambos os horários UTC), mas estes não são horários fixos e você não deveria fixar seu espelho neles.

Nós recomendamos que você faça o espelhamento uma vez por dia. Espelhar mais do que duas vezes por dia não tem propósito e provavelmente vai levar você a ser banido — nunca faça isso.

Seu espelho deveria atualizar algumas horas depois dos pulsos de espelhamento do repositório principal. Você deveria verificar se o site do qual você está fazendo espelho tem um arquivo de registro de data no subdiretório project/trace/. O arquivo do registro de data terá o mesmo nome do site, e irá conter o horário de término da última atualização do espelho. Adicione algumas horas a esse horário (por segurança) e faça o espelho dele.

A maneira mais fácil de se ter automaticamente o espelhamento executado todos os dias é usando o cron. Veja man crontab para detalhes.

Note que se seu site for atualizado com um mecanismo push, então você não precisa se preocupar com nada disso.

Espelhamento disparado por push (Push-triggered)

Espelhamento push é uma forma de espelhamento que nós desenvolvemos para minimizar o tempo que leva para que as mudanças no repositório cheguem aos espelhos. Um espelho upstream usa um gatilho SSH que diz aos demais espelhos para se atualizarem. O pushing é usualmente limitado a um gatilho seguro que não aceita dados variáveis, de forma que o restante do processo de espelhamento seja simplesmente puxar os dados de forma similar a uma tarefa cron.

O espelhamento push é necessário para manter vários servidores em sincronia (tais como servidores em round-robin de DNS como ftp.us.debian.org), e nós geralmente usamos isto para os nossos espelhos de primeiro e segundo nível. Para espelhos normais, este método requer bastante esforço para ser configurado que na verdade não compensam quando comparados com uma tarefa cron bem ajustada.

Para uma descrição mais detalhada de como isto funciona, porque ele é seguro, e como configurar um espelho push, veja a explicação completa.

Configurações adicionais recomendadas

Se você for tornar um espelho do Debian disponível através de HTTP, adicione as seguintes configurações nas suas configurações do Apache (presumindo, obviamente, que você usará Apache) no bloco <Directory /caminho/para/seu/espelho/do/debian>, onde /caminho/para/seu/espelho/do/debian deve ser o nome atual do diretório onde você mantém seu espelho:

   Options +Indexes +SymlinksIfOwnerMatch
   IndexOptions NameWidth=* +SuppressDescription

Isso ativa os índices de diretório e garante que os links simbólicos irão funcionar. Os nomes de arquivo nos índices de diretório não ficarão truncados, e descrições (na maior parte não existentes) não serão mostradas.

No Apache 1.3.x, a seguinte opção também pode ser adicionada:

   DirectoryIndex .

Não adicione esta opção no Apache 2.x.

Como adicionar um espelho à lista de espelhos

Uma vez que um espelho é configurado, ele deveria ser registrado no Debian a fim de ser incluído na lista de espelhos. Pedidos podem ser feitos usando nosso formulário web.

Quaisquer problemas ou dúvidas podem ser enviadas para mirrors@debian.org.