- 09/11/2011
- 06:42 pm
- Canaima, Debian, Software Libre, Tutoriales
Muchas veces se hace útil tener una copia idéntica (mirror) del repositorio de paquetes Debian y Canaima en tu computadora: Acelera la instalación de paquetes, la creación de imágenes con canaima-semilla y permite tener un ambiente pruebas en caso de que manejes un repositorio en ambientes de producción.
Hacerlo no es tan difícil y requiere muy poca atención luego de realizado el procedimiento. Eso sí, el tiempo que utilizaremos inicialmente dependerá de tu velocidad de conexión. Podrás elegir cuales arquitecturas replicar y decidir si incluir las fuentes de los paquetes o no.
Mirror Debian
Descarga el script ftpsync.
Crea un usuario en la computadora o servidor que utilizarás para hospedar el mirror. Para este ejemplo utilizaremos el usuario “mirror”.
Inicia sesión con ese usuario. Puedes hacerlo con el comando login mirror.
Copia y descomprime el ftpsync.tar.gz en la carpeta /home/ del usuario mirror. Aparecerá una carpeta etc, una bin, y otra log.
Cambia el nombre del archivo etc/ftpsync.conf.sample a etc/ftpsync.conf.
Edita el archivo etc/ftpsync.conf de la siguiente forma:
- Descomenta la variable
MIRRORNAME. - Descomenta la variable
TOy le vas a poner de valor la ruta donde quieres que se haga el mirror, preferiblemente algo que pueda ver un servidor web como /var/www, para este ejemplo utilizaremos/var/www/debian. Es importante que esa carpeta pertenezca al usuario que creaste para el mirror. - Descomenta la variable
RSYNC_PATHy ponle “debian”. - Descomenta la variable
RSYNC_HOSTy ponle “ftp.us.debian.org” o cualquier otro mirror del cual quieras hacer tu mirror, siempre y cuando se le pueda acceder por ftp. - Descomenta la variable
LOGDIR. - Descomenta la variable
LOG. - Descomenta la variable
ERRORSONLYy ponle “false”. - Descomenta la variable
FULLLOGSy ponle “true”. - Descomenta la variable
ARCH_EXCLUDEy lista las arquitecturas que quieres excluir. Si quieres excluir las fuentes añades “source”. Por ejemplo, en canaima sólo hacemos mirror de i386, amd64 y las fuentes, por lo que esa variable vale: “alpha arm armel hppa hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc s390 sh sparc”. - Descomenta la variable
TRACE. - Descomenta la variable
RSYNCy ponle “rsync”. - Descomenta la variable
RSYNC_OPTIONS. - Descomenta la variable
RSYNC_OPTIONS1. - Descomenta la variable
RSYNC_OPTIONS2.
Finalmente, configura un cron para que se corra a determinadas horas. Edita el archivo /etc/crontab (como superusuario) y añade esta línea al final:
30 1 * * * mirror /home/mirror/bin/ftpsync sync:all
Esta línea correrá el script /home/mirror/bin/ftpsync sync:all por el usuario mirror todos los días a la 1:30am.
Mirror Canaima
Instala el paquete debmirror.
aptitude install debmirror
Inicia sesión con el usuario mirror que creaste para el mirror Debian.
Ejecuta el comando que aparece a continuación. El último parámetro es la ruta donde publicarás el repositorio, la cual debe pertenecer al usuario mirror y estar en un lugar visible para un servidor web como /var/www.
debmirror --debug --progress --verbose --source --host=repositorio.canaima.softwarelibre.gob.ve --section=usuarios --method=rsync --root=:canaima --dist=estable,desarrollo,pruebas --arch=i386,amd64 --ignore-release-gpg --rsync-options=-aIL /var/www/canaima
Finalmente, debemos configurar un cron para que se ejecute a determinadas horas.
Creemos un script BASH en la ruta /home/mirror/mirror-canaima.sh que tenga el siguiente contenido:
#!/bin/bash
debmirror --debug --progress --verbose --source --host=repositorio.canaima.softwarelibre.gob.ve --section=usuarios --method=rsync --root=:canaima --dist=estable,desarrollo,pruebas --arch=i386,amd64 --ignore-release-gpg --rsync-options=-aIL /var/www/canaima
Edita el archivo /etc/crontab (como superusuario) y añade esta línea al final:
30 1 * * * mirror /home/mirror/mirror-canaima.sh
Esta línea correrá el script /home/mirror/mirror-canaima.sh por el usuario mirror todos los días a la 1:30am.
¿Cómo usarlos?
Bien, una vez creados los mirrors, tenemos varias formas de usarlos e incluso, compartirlos con nuestros amigos.
Para usarlo localmente, podemos sustituir nuestro tradicional mirror debian en nuestro archivo /etc/apt/sources.list:
deb http://universo.canaima.softwarelibre.gob.ve/ squeeze main contrib non-free
por
deb file:/var/www/debian main contrib non-free
Y nuestro repositorio Canaima:
deb http://repositorio.canaima.softwarelibre.gob.ve/ roraima usuarios
por
deb file:/var/www/canaima roraima usuarios
Para permitir que otros puedan acceder a nuestros mirrors, debemos instalar un servidor web como apache, lighttpd o nginx.
Instalemos apache:
aptitude install apache2
Listo, dile a tus compañeros que usen la siguiente línea para el mirror Debian:
deb http://TU-DIRECCIÓN-IP/debian main contrib non-free
o esta para el mirror Canaima:
deb http://TU-DIRECCIÓN-IP/canaima roraima usuarios
¡Espero que te haya servido!
Por el bien que significa ahorrar ancho de banda y espacio en disco para cosas útiles, te recomiendo usar apt-cacher-ng, así no tendrás que descargarte todo el repositorio y tendrás a la mano los paquetes que realmente usas. Tengo unas 6 máquinas virtuales en KVM + 5 cowbuilders de sid, testing y experimental (con diferentes versiones de GCC) que se alimentan de este caché de paquetes y puedo usar mi ancho de banda en otras cosas en vez de tener todo un repositorio a la vez. Me permite incluso tener múltiples arquitecturas sin problema de espacio en disco ni 4 días para que se actualice a la última versión.
Saludos.
Gracias! Estuve echándole un ojo, me parece muy bien
¿Qué espacio en disco ocupan los repositorios de canaima?
Unos 3GB
Que tal, estoy siguiendo tu guia para hacer el repositorio local de canaima, pero al ejecutar:
debmirror –debug –progress –verbose –source –host=repositorio.canaima.softwarelibre.gob.ve –section=usuarios –method=rsync –root=:canaima –dist=estable,desarrollo,pruebas –arch=i386,amd64 –ignore-release-gpg –rsync-options=-aIL /var/www/canaima
Aparecen los siguientes errores y advertencias:
******************************************************
Patch binary missing, falling back to –diff=none
Ed binary missing, falling back to –diff=none
Mirroring to /var/www/canaima from rsync://anonymous@repositorio.canaima.softwarelibre.gob.ve/canaima/
Arches: i386,amd64
Dists: estable,desarrollo,pruebas
Sections: usuarios
Including source.
Pdiff mode: none
Download at most 200 files per rsync call.
Will clean up AFTER mirroring.
Attempting to get lock, this might take 2 minutes before it fails.
Get Release files.
rsync: failed to connect to repositorio.canaima.softwarelibre.gob.ve: Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(122) [Receiver=3.0.7]
rsync: failed to connect to repositorio.canaima.softwarelibre.gob.ve: Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(122) [Receiver=3.0.7]
rsync: failed to connect to repositorio.canaima.softwarelibre.gob.ve: Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(122) [Receiver=3.0.7]
Errors:
Patch binary missing, falling back to –diff=none
Ed binary missing, falling back to –diff=none
Download of dists/estable/Release failed
Download of dists/desarrollo/Release failed
Download of dists/pruebas/Release failed
Failed to download some Release or Release.gpg files!
WARNING: releasing 1 pending lock…
***********************************************************
Y llega hasta ahí. No me descarga nada.
Espero me puedas indicar como solucionar esto.
Gracias.
Saludos.
Buen día!!… se requiere crear obligatoriamente mirror de debian conjuntamente con el de canaima?? o el de canaima solo se besta para las dependencias??