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 frequentemente 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 ftp.debian.org é a localização oficial dos pacotes do Debian e que ele será o melhor lugar de todos para fazer o espelho. Isso é falso.

ftp.debian.org é meramente um dos vários servidores que é atualizado por um servidor interno do Debian. Esse endereço está atualmente localizado em um único servidor, e ele ainda existe principalmente por retrocompatibilidade.

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 real 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 deveriam 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 têm dados diferentes, causando uma condição de disputa). A desvantagem é que concentra em único site o desempenho que pode variar, 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 famoso conjunto de scripts ftpsync, disponível de duas formas:

O protocolo de espelhamento que nós recomendamos fortemente é 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 conseguem detectar hard links, é difícil fazer espelhos parciais, etc).

Configuração rsync

Nós recomendamos usar o conjunto de scripts ftpsync para espelhar os repositórios. Siga as instruções do arquivo README incluído para configurar um espelho.

Se você usar os seus próprios scripts, a seguir listamos a funcionalidade mínima que deve ser suportada:

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 ftpsync, que é recomendado, 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.

Quando fazer o espelho

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

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 sincronismo (tais como servidores em round-robin de DNS como ftp.us.debian.org), e nós usamos isso para os nossos espelhos de primeiro e segundo nível. Mas como esse método requer um pouco mais de esforço para configurá-lo, não é comumente feito para espelhos privados.

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, por favor, adicione as seguintes definiçõ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 o 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 seja configurado, ele deveria ser registrado no Debian a fim de ser incluído na lista de espelhos. Pedidos podem ser feitos usando nosso simples formulário web.

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