Crear un mirror de Debian


Para quien no lo sepa, un mirror (también conocido como repositorio o sitio de réplica) no es más que un servidor que contiene una réplica exacta de otro, en este caso de Debian. Contiene todos los paquetes oficiales de la distribución, y se suelen crear para facilitar las descargas y garantizar el acceso a la información cuando el servidor principal no esté disponible. Suelen sincronizarse con el servidor principal para mantener la integridad de la información.

Realmente no existen demasiados motivos para crear un mirror, algunos de ellos pueden ser que deseemos colaborar con la comunidad o que tengamos una empresa u organización en la que haya suficientes máquinas para tener un mirror local y acelerar todo el proceso de descarga de paquetes.

Debemos tener en cuenta que un mirror completo de Debian son 647 GB, aunque podemos tener un mirror parcial en función de nuestras necesidades con lo que reduciríamos el espacio de disco necesario.

Si lo que deseamos es crearlo para colaborar con el Proyecto Debian, debemos tener en cuenta que necesitamos un ancho de banda de subida considerable y que debemos registrarlo, siempre cumpliendo las reglas y directrices que se nos indican, para que Debian tenga constancia y lo incluya en su lista de repositorios para que los usuarios puedan disfrutar de él.

Voy a contar como crear un mirror local parcial de Debian, en Debian por supuesto.

Para crear el mirror lo primero que debemos hacer es descargar un fichero comprimido que nos ayudará a realizar todo el proceso. Abrimos un terminal y ejecutamos:

root@mirror:/usr/src/# wget http://ftp-master.debian.org/ftpsync.tar.gz

Y lo descomprimimos:

root@mirror:/usr/src/# tar zxvf ftpsync.tar.gz

Ahora necesitamos crear un usuario que se encargue de ejecutar todo lo relacionado con el mirror, ya que no es conveniente por motivos de seguridad que lo haga el usuario root:

root@mirror:/usr/src/# adduser mirror

Creamos a continuación un directorio donde se va a descargar el mirror, debemos asegurarnos que haya suficiente espacio, y hacemos al usuario que hemos creado propietario del mismo:

root@mirror:/usr/src/# mkdir /var/mirror
root@mirror:/usr/src/# chown mirror:mirror /var/mirror

Cambiamos al usuario que hemos creado y creamos los siguientes directorios:

root@mirror:/usr/src/# su - mirror
mirror@mirror:/home/mirror# mkdir bin etc log

Y copiamos los archivos necesarios de los que descargamos anteriormente:

mirror@mirror:/home/mirror# cp /usr/src/bin/ftpsync bin/
mirror@mirror:/home/mirror# cp /usr/src/etc/ftpsync.conf.sample etc/ftpsync.conf
mirror@mirror:/home/mirror# cp /usr/src/etc/common etc/

A continuación editamos el fichero /home/mirror/etc/ftpsync.conf según nuestras necesidades. Los parámetros más relevantes son los siguientes:

TO=»/var/mirror/debian/»
RSYNC_PATH=»debian»
RSYNC_HOST=ftp.es.debian.org
LOGDIR=»/home/mirror/log»
LOG=»${LOGDIR}/${NAME}.log»
ARCH_EXCLUDE=»alpha arm armel hppa hurd-i386 ia64 kfreebsd-amd64 kfreebsd-i386 mipsel mips powerpc s390 sparc»
RSYNC=rsync

De este modo le indicamos donde descargar el repositorio, el path, el servidor con el que sincronizar, el directorio de logs, el fichero de logs, las arquitecturas a excluir, descargaremos sólo sources, i386 y amd64, y el programa para sincronizarlo. Todas las demás opciones las dejamos por defecto.

Ya está configurado el mirror, fácil verdad? Pero esto aún no se ha terminado.

Necesitamos agregar una tarea al cron para que se sincronice automáticamente cuando le indiquemos:

mirror@mirror:/home/mirror# crontab -e

Agregamos la siguiente línea al final:

0 22 * * * /home/mirror/bin/ftpsync #lanza el script ftpsync todos los dias a las 22:00 horas

Nos salimos del usuario mirror y volvemos a root:

mirror@mirror:/home/mirror# exit
root@mirror:/usr/src#

Ahora necesitamos configurar apache para que el mirror esté disponible por http. Para ello creamos el fichero /etc/apache2/sites-available/mirror con el siguiente contenido:

DocumentRoot /var/mirror/

Options +Indexes +SymlinksIfOwnerMatch
IndexOptions NameWidth=* +SuppressDescription

ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined

Habilitamos el sitio creado y deshabilitamos el sitio por defecto:

root@mirror:/usr/src# a2ensite mirror
root@mirror:/usr/src# a2dissite default

Por último necesitamos que el usuario mirror sea el encargado de ejecutar apache para no tener problemas de permisos, para ello editamos el fichero /etc/apache2/envvars y dejamos las siguientes líneas tal que así:

export APACHE_RUN_USER=mirror
export APACHE_RUN_GROUP=mirror

Y reiniciamos apache:

root@mirror:/usr/src# /etc/init.d/apache2 restart

Ahora tan sólo tenemos que ejecutar ftpsync como usuario mirror para que empiece a sincronizarse el mirror. Dependiendo de la velocidad de bajada de nuestra conexión a internet puede ser una tarea larga, no desesperéis, la primera vez siempre es difícil, las siguientes va mejor.

Por cierto hasta que el mirror no se haya sincronizado completamente no se podrá hacer uso de él.

Para usarlo tan sólo añadimos las líneas necesarias al fichero /etc/apt/sources.list en el siguiente formato:

deb http://mirror.dominio.es/debian/ squeeze main

También si abrimos un navegador y accedemos a la url http://mirror.dominio.es podremos navegar por el repositorio.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *