Configurando um espelho do repositório Debian
- Espelhar ou não
- O que espelhar
- De onde fazer um espelho
- Como fazer um espelho
- Fazendo um espelho parcial
- Quando fazer o espelho
- Configurações adicionais recomendadas
- Como adicionar um espelho à lista de espelhos
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:
- Um espelho é necessário em minha localização? Talvez já existam outros espelhos próximos.
- Eu tenho os recursos necessários para hospedar um espelho? Espelhos usam um espaço de disco e banda consideráveis, é preciso estar apto a arcar com o custo.
- Um espelho é a escolha certa? Algumas vezes pessoas erroneamente iniciam um espelho, quando na verdade elas querem executar um proxy cache, tal como o apt-cacher-ng.
O que espelhar
A página principal sobre espelhos lista os repositórios disponíveis para espelhamento.
- Usuários procurarão pelo repositório debian/ para instalar o Debian através da rede, para construir CDs (com o jigdo) e para atualizar sistemas já instalados.
-
O debian-cd/ é um repositório que não é idêntico em todos os servidores
espelhos. Em alguns ele contém apenas modelos jigdo para construir
imagens de CD (usados em combinação com o debian/), em alguns ele contém
imagens já construídas e em alguns, ambos.
Veja a página sobre espelhamento das imagens de CD para mais informações. - O debian-archive contém o verdadeiro arquivo de repositórios, as versões antigas e obsoletas do Debian. Ele geralmente será de interesse apenas para um pequeno segmento de usuários.
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:
- como um arquivo compactado em http://ftp-master.debian.org/ftpsync.tar.gz
- como um repositório git: git clone https://ftp-master.debian.org/git/archvsync.git
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:
DEVE realizar uma sincronização em 2 estágios
O espelhamento do arquivo deve ser feito em dois estágios. O primeiro rsync deve ignorar os arquivos de índice. As opções de exclusão corretas para o primeiro rsync são:
--exclude Packages* --exclude Sources* --exclude Release* --exclude InRelease --exclude i18n/* --exclude ls-lR*O primeiro estágio não deve apagar nenhum arquivo.
O segundo estágio deverá transferir os arquivos acima que não foram incluídos e apagar os arquivos que não pertençam ao espelho.
Justificativa: se o espelhamento do arquivo é feito em um único estágio, há períodos nos quais os arquivos de índices farão referências para arquivos que ainda não foram espelhados.
NÃO DEVE ignorar
pushes
enquanto estiver em execução (para push mirroring).Se um
push
é recebido durante a execução de uma sincronização, ele NÃO DEVE ser ignorado. Todo o processo de sincronização deve ser reexecutado.Justificativa: a maioria das implementações dos scripts de espelhos do Debian deixará o espelho em um estado inconsistente caso um segundo
push
seja recebido enquanto a primeira sincronização ainda está em execução. É provável que num futuro próximo, a frequência dospushes
aumente.- Execute o rsync com pelo menos estas opções: --recursive --times --links --hard-links --delete.
- Se você tem espaço extra em disco, também use a opção --delete-after para evitar alguns problemas temporários de atualização.
- Depois que o rsync tiver feito o espelho, adicione um arquivo de registro
de data com o mesmo nome do seu servidor ao subdiretório
project/trace/do seu espelho do Debian. Ou seja execute o comando date -u > .../debian/project/trace/seu.servidor depois que o seu rsync diário estiver terminado. - 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.
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.
