Haciendo mirrors de Debian con ftpsync y de Canaima con debmirror

 

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 TO y 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_PATH y ponle “debian”.
  • Descomenta la variable RSYNC_HOST y 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 ERRORSONLY y ponle “false”.
  • Descomenta la variable FULLLOGS y ponle “true”.
  • Descomenta la variable ARCH_EXCLUDE y 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 RSYNC y 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!



ACCIONES

Soy un joven venezolano al que le gusta mucho leer y escribir. Ingeniero de Telecomunicaciones, amante de la tecnología, y el Software Libre. Comencé a trabajar como desarrollador de Canaima GNU/Linux en 2009, y ahora se ha convertido en uno de mis pasatiempos más entretenidos. Si te gusta lo que escribo por acá, te invito a seguirme en twitter, facebook, o las actualizaciones por RSS.

ACERCA DE LUIS ALEJANDRO

Artículos Relacionados

  • En Hunting Bears no se ha escrito nada parecido a ésto antes.

Existen 6 opiniones acerca de esta entrada.

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

  2. Gracias! Estuve echándole un ojo, me parece muy bien ;)

  3. rockelinux dice:

    ¿Qué espacio en disco ocupan los repositorios de canaima?

  4. Luis Jimenez dice:

    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.

  5. J Dugarte dice:

    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??

Puedes emitir tus opiniones en el siguiente Formulario.


 




El campo "Página Web" es opcional. Tu correo no será publicado.