jueves, 27 de diciembre de 2007

Mirror Debian con Debmirror y rsync

Quise montar un mirror para experimentar, sin embargo esto era muy molesto debido a que debería de bajarme toooodossss los paquetes desde internet con mi conexión 256k, entonces apliqué algunos trucos que me dieron resultado partiendo desde los 4 dvd de Debian lenny que tenía en mi poder y de los 3 Dvds de Etch también. Haré el ejemplo con los de Lenny, que es la versión que uso en mi casa.

Primero lo primero, instalar los paquetes necesarios para este trabajo

Paso # 1

# aptitude install debmirror
# aptitude install apache2
# aptitude install rsync

Si tengo los DVDs/ISO de Debian voy al siguiente paso #2, de lo contrario voy al paso # 4, específicamente 4.2

Paso # 2

como tengo los 4 dvds en el disco local.

mount -o loop /home/isos/lenny1.iso /media/lenny1
mount -o loop /home/isos/lenny2.iso /media/lenny2
mount -o loop /home/isos/lenny3.iso /media/lenny3
mount -o loop /home/isos/lenny4.iso /media/lenny4


Paso # 3

luego, una vez instalado apache, hago un link simbólico para que debmirror vaya a bajarse los paquetes a mi "mirror http"

mirror:/var/www# ln -s /media/lenny1 ./debian

Paso # 4

En 4.1 --host=IP coloco la IP de mi máquina, de donde debmirror se va a bajar algunos paquetes mientras crea la estructura del mirror, luego se hace lo mismo lenny2 lenny3 y lenny4, o sencillamente pueden copiarse todo /pool de los dvds con rsync hacia la carpeta donde tendrán almacenado el mirror... (paso #5) y pasar al paso #6.

4.1 (se ejecuta solo si tengo los DVDs de Debian)
debmirror --debug --progress --verbose --nosource --host=192.168.0.1 section=main,contrib,non-free --method=http --root=/debian --dist=lenny --arch=i386 --ignore-release-gpg /home/mirror/debian

ir al paso # 5

4.2 (se ejecuta si no tengo los DVDs de Debian)

debmirror --debug --progress --verbose --nosource --host=debian.unesr.edu.ve --section=main,contrib,non-free --method=http --root=/debian --dist=etch,lenny --arch=i386 --ignore-release-gpg /home/mirror/debian

Si hemos ejecutado el paso 4.2 entonces ha finalizado la creación del mirror, solo nos queda configurar apache y los sources.list de las estaciones, ir al paso #7

Paso # 5

Copiamos todos los paquetes de los dvds, y nos ahorramos tiempo y ancho de banda de los paquetes que aun no han sido actualizados... esto es excelente para las versiones estables que las actualizaciones son pequeñas dado que son solo de seguridad.

rsync -avIL /media/lenny1/pool/ /home/mirror/debian/pool/
rsync -avIL /media/lenny2/pool/ /home/mirror/debian/pool/
rsync -avIL /media/lenny3/pool/ /home/mirror/debian/pool/
rsync -avIL /media/lenny4/pool/ /home/mirror/debian/pool/

Paso # 6

Una vez copiados los archivos debemos ejecutar debmirror, yo lo hice con rsync para que me actualizara solo los paquetes nuevos.

debmirror --debug --progress --verbose --nosource --host=debian.unesr.edu.ve --section=main,contrib,non-free --method=rsync --root=:debian --dist=etch,lenny --arch=i386 --ignore-release-gpg --rsync-options=-aIL /media/hdb1/mirror/debian


Paso # 7
Una vez terminado de crear el server con los paquetes, procedemos a configurar apache para luego configurar el sources.list de las estaciones.

reiniciamos apache.

# apachectl -k restart


luego configuramos los /etc/apt/sources.list

deb http://192.168.0.1/debian lenny main contrib non-free


Nota: recordemos crear un link simbólico de ../debian.../dist/lenny a ../debian/dist/testing, de esta manera podremos actualizar tanto como testing o lenny (en ese caso) al igual hacer con etch y stable.


Todo hasta aca bien, pero debemos hacer que se actualice el mirror automáticamente, preferiblemente todos los días en horas donde no se use mucho el ancho de banda, en mi caso lo puse a las 11pm.

Acá tres scripts sencillos para correr cada día en el crontab

#*************************** S C R I P T S **************************

#!/bin/sh
#1.- debian
debmirror --debug \
--progress \
--verbose \
--nosource \
--host=ftp.debian.org \
--method=rsync \
--root=:debian \
--dist=lenny \
--arch=i386 \
--getcontents \
--ignore-missing-release \
--ignore-release-gpg \
--rsync-options=-aIL \
/var/www/debian

#!/bin/sh
#2.- debian-security

debmirror --debug \
--progress \
--verbose \
--nosource \
--host=security.debian.org \
--section=main,contrib,non-free \
--method=rsync \
--root=:debian-security \
--dist=etch/updates,lenny/updates \
--arch=i386 \
--getcontents \
--ignore-missing-release \
--ignore-release-gpg \
--rsync-options=-aIL \
/var/www/debian-security


#!/bin/sh
#3.- debian-multimedia

debmirror --debug \
--progress \
--verbose \
--nosource \
--host=www.debian-multimedia.org \
--section=main \
--method=http \
--root=/ \
--dist=etch,lenny \
--arch=i386 \
--getcontents \
--ignore-missing-release \
--ignore-release-gpg \
/var/www/debian-multimedia


#************************** F I N *********************


ahora debemos poner esos scripts en archivos y darle permisos de ejecución

# chmod u+x debian.sh
# chmod u+x debian-security.sh
# chmod u+x debian-multimedia.sh

Luego editamos el crontab para que se ejecuten automáticamente, en mi caso las 11pm

# crontab -e

0 23 * * * /root/debian.sh
0 23 * * * /root/debian-security.sh
0 23 * * * /root/debian-multimedia.sh


con eso debe funcionar todo...

Saludos.

1 comentario:

Anónimo dijo...

Excelente!
GAPAAR
(X.y%+x.-9=yy)*a =?