Instalação e configuração do servidor
Instale o pacote “debmirror” disponível em testing ou unstable:
# apt-get install debmirror
Crie um usuário e um grupo que será dono do processo que iremos automatizar para o uso do debmirror:
# groupadd mirror
# useradd -g mirror -d /mirror -c “Debian Mirror” mirror
Crie os diretórios necessários para o repositório.
# mkdir -p /mirror/debian # mkdir /mirror/non-US # chown -R mirror:mirror /mirror
Criando os scripts para a sincronização
Iremos criar agora os script para a sincronização dos repositórios:
Repositório US:
# emacs /usr/local/bin/mirror1.sh
#!/bin/bash
su mirror -c “debmirror /mirror/debian –method=http –progress –nosource –host=ftp.br.debian.org –root=/debian –dist=woody,sarge,sid –section=main,contrib,non-free –arch=i386 –cleanup –getcontents”
Repositório non-US:
# emacs /usr/local/bin/mirror2.sh
#!/bin/bash
su mirror -c “debmirror /mirror/non-US –method=http –progress –nosource –host=ftp.br.debian.org –root=/debian-non-US –dist=woody/non-US,sarge/non-US,sid/non-US –section=main,contrib,non-free –arch=i386 –cleanup ?getcontents”
Você pode alterar a opção –method por ftp, http ou rsync -e. Leia o manual do debmirror para maiores detalhes.
# man debmirror
Permitindo a leitura escrita e execução somente para o usuário root:
# chmod 700 /usr/local/bin/mirror*.sh
Repositório local, http e ftp na sua LAN
Para uso local, em seu /etc/apt/sources.list coloque as linhas:
deb file:/mirror/debian sid main non-free contrib
deb file:/mirror/non-US sid/non-US main contrib non-free
Você pode alterar a versão conforme a sua necessidade trocando onde esta sid por woody ou sarge.
Vamos agora configurar para que você possa ter o repositório disponível para outras máquinas.
Configurando o Apache:
Edite o arquivo de configuração /etc/apache/httpd.conf:
# emacs /etc/apache/httpd.conf
Troque “<Directory /var/www>” por “<Directory /mirror>”.
Reinicie o Apache:
# /etc/init.d/apache restart
Edite o arquivo /etc/apt/sources.list nos clientes para configurar o repositório no protocolo HTTP:
# emacs /etc/apt/sources.list
deb http://(ip_ou_host_do_servidor)/debian/ sid main non-free contrib
deb http://(ip_ou_host_do_servidor)/non_US/ sid/non-US main contrib non-free
Configurando o proftpd:
Para ter o repositório disponível por ftp, edite o arquivo de configuração do proftpd:
# emacs /etc/proftpd.conf
Altere as TAGS da configuração compreendidas entre <Anonymous …> </Anonymous> por:
<Anonymous ~mirror>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidSh off
# Limit the maximum number of anonymous logins
MaxClients 20
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>
Edite o arquivo /etc/apt/sources.list nos clientes para configurar o repositório no protocolo FTP:
deb ftp://(ip_ou_host_do_servidor)/debian/ sid main non-free contrib
deb ftp://(ip_ou_host_do_servidor)/non_US/ sid/non-US main contrib non-free
Automatizando o processo
Com o crontab podemos se aproveitar das horas de menor uso da rede para fazer a sincronização:
# crontab -e
insira a linha:
0 22 * * * /usr/local/mirror1.sh 2>&1 > /dev/null;/usr/local/mirror2.sh 2>&1 > /dev/null
Salve e feche.
# /etc/init.d/cron restart
No crontab configurei para que todos os dias a partir das 22:00hs o servidor atualize o repositório.