DebMirror
De Gtmsl
- page was renamed from Criação de um Mirror Debian
- format wiki
- language en
Conteúdo |
Manual debmirror
Instalação e configuração do servidor
- 1. Instale o pacote "debmirror" disponível em testing ou unstable:
- # apt-get install debmirror
- 2. 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
- 3. 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
- 1. Iremos criar agora os script para a sincronização dos repositórios:
- a. Repositório US:
- # vi /usr/local/bin/mirror1.sh
#!/bin/bash
su mirror -c "debmirror /mirror/debian --method=ftp --progress --nosource --host=ftp.br.debian.org --root=/debian dist=woody,sarge,sid,etch --section=main,contrib,non-free --arch=i386 --cleanup getcontents -v --proxy=http://proxy2.ibge.gov.br:80 --ignore-release-gpg"
- b. Repositório non-US:
- # vi /usr/local/bin/mirror2.sh
#!/bin/bash
su mirror -c "debmirror /mirror/non-US --method=ftp --progress --nosource --host=ftp.br.debian.org --root=/debian-non-US --dist=woody/non-US,sarge/non-US --section=main,contrib,non-free --arch=i386 --cleanup ?getcontents -v --proxy=http://proxy2.ibge.gov.br:80 --ignore-release-gpg"
Explicação das opções seguidas:
debmirror /mirror/non-US
--method=ftp
--progress , exibe a barra de progresso dos arquivos que estão sendo baixados
--nosource , não inclui o fonte (source)
--host=ftp.br.debian.org , nome do host que será espelhado
--root=/debian-non-US , nome do diretório que será espelhado
--dist=woody/non-US,sarge/non-US , as distribuições que serão baixadas
--section=main,contrib,non-free , as sessões que serão baixadas
--arch=i386 , tipo de arquitetura de computador que será baixada
--cleanup , limpa qq arquivo e diretório desconhecido no mirror local
--getcontents , baixa os aquivos Contents.arch.gz
-v , verbose --proxy=http://proxy2.ibge.gov.br:80 , o proxy --ignore-release-gpg , não falhar se o arquivo Release.gpg file estiver faltando
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:
# vi /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:
# vi /etc/apt/sources.list
deb http://(ip_ou_host_do_servidor)/debian/ sarge main non-free contrib
deb http://(ip_ou_host_do_servidor)/non_US/ sarge/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:
# vi /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/ sarge main non-free contrib
deb ftp://(ip_ou_host_do_servidor)/non_US/ sarge/non-US main contrib non- fre
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 23 * * * /usr/local/bin/mirror1.sh 2>&1 > /dev/null;/usr/local/bin/mirror2.sh 2>&1 > /dev/null Salve e feche. (ctrl k x )
- /etc/init.d/cron restart
No crontab configurei para que todos os dias a partir das 23:00hs o servidor atualize o repositório.
Observações finais
Você deve ter bastante espaço em disco para fazer esta solução: média 35Gb.
Se por acaso você não tem tanto espaço disponível, faça como eu, coloque
somente a versão que você deseja nos scripts mirror1.sh e mirror2.sh
retirando da opção --dist uma ou mais opções (woody, sarge, sid).
Sobre este manual
Este manual foi elaborado por:
Angela Gomes <angela.gomes@ibge.gov.br>
Gerência de Tecnologia e Suporte Técnico
IBGE/DI/COINF/GETES
A publicação no wiki do Gtmsl foi realizada por:
Leonardo Rodrigues de Mello <leonardo.mello@planejamento.gov.br>
Gerência de Inovações tecnológicas
MP/SLTI/DSI
este documento foi baseado no tutorial disponível em:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1452

