DebMirror

De Gtmsl

    1. page was renamed from Criação de um Mirror Debian
  1. format wiki
  2. 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:

  1. 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 )

  1. /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


Category Homepage

Ferramentas pessoais