apt-move o como hacer un mirror local de debian


Supongamos el siguiente caso: tenemos una red de 5 maquinas con debian, hacemos un apt-get upgrade y descubrimos que tenemos que bajar 110Mb (han actualizado las X y el KDE), 5 * 110Mb = 550Mb. Ya que tenemos una red local pensamos ¿no sería más eficiente bajar solo 110Mb en una máquina y copiarlos después en las otras cuatro por nuestra red? En este artículo explico como se puede hacer.

Vale empezamos, supongamos que tenemos una maquina llamada “Servidor” (IP=192.168.0.1) que es la que ofrece la conexión a las otras cuatro. En esta máquina tenemos dentro del directorio /var/cache/apt/archives todos los paquetes .deb que hemos ido actualizando
El objetivo es hacer que todos estos paquetes puedan ser leidos por las otras máquinas. Para ello utilizaremos la herramienta apt-move
Básicamente el apt-move lo que hace es tomar una serie de paquetes deb de cualquier sitio y meterlos en una estructura con la misma jerarquía que un mirror de debian. La idea es que montemos un mirror de debian únicamente con los paquetes que actualicemos, para esto realizaremos una configuración el servidor (apt-move) y una configuración en los clientes (editar el sources.list)
Configurando el servidor

Lo primero de todo es instalar el paquete apt-move, para esto haremos apt-get install apt-move y procederemos de la forma habitual.

Lo siguiente es configurar el archivo /etc/apt-move.conf aquí deberemos cambiar una serie de valores para que la cosa nos funcione, está bastante bien comentado pero por si acaso ya lo explico aquí
APTSITES

Aquí especificamos los sitios que tenemos en nuestro sources.list de los que queremos que esten disponibles los paquetes. Por ejemplo, yo tengo estas líneas en mi sources.list

deb ftp://ftp.us.debian.org/debian/ unstable main non-free contrib
deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free


de forma que la variable APTSITES la definiría así “ftp.us.debian.org non-us.debian.org”, como se puede ver los sitios van separados por espacios.
ARCHS

Aqui especificamos las arquitecturas que queremos replicar, como la mayoría tenemos la arquitectura Intel especificaríamos ARCHS=”i386″, otras opciones serían “alpha arm hurd-i386 m68k powerpc sparc” siempre separadas por espacios
LOCALDIR

Esta es importante, es el directorio que va a contener el mirror que creemos. En mi caso esta en “/mnt/disk2” (un disco secundario) pero que cada uno lo ponga donde quiera 😉

La única peculiaridad de este directorio es que después debe ser accesible por http, ftp, NFS o SMB por los clientes de la red.

En mi caso el “servidor” corre un apache en /var/www, en ese directorio creo un enlace (ln -s /var/www/apt /mnt/disk2) al directorio de LOCALDIR de forma que una petición http://192.168.0.1/apt me devolvería el contenido de LOCALDIR
DIST

La/s distribuciones que queremos replicar, de momento tenemos las opciones de “stable, unstable, potato, woody y sid”, en mi caso DIST=”unstable”
PKGTYPE

Aqui especificamos que tipo de paquetes queremos replicar binarios, fuentes o ambos, las opciones son “binary source both”. Ojo que aquí sólo se puede elegir una opción. En mi caso tengo puesto que solo me replique los binarios PKGTYPE=binary
FILECACHE y LISTSTATE

Aquí especificamos donde estan los archivos locales de los paquetes. Salvo que hubiesemos cambiado la configuración del apt-get los valores por defecto funcionarán correctamente. FILECACHE=/var/cache/apt/archives y LISTSTATE=/var/lib/apt/lists
DELETE
Por último está opción nos permite lo siguiente, si en el mirror tenemos una versión del programa bla (bla-1.0) y hemos añadido una versión nueva del mismo programa (bla-1.1) nos eliminará del mirror la versión más antigua (recomendable). Las opciones son “yes” o “no”
Una vez guardados los cambios en el archivo /etc/apt-move.conf podemos empezar a utilizarlo. El procedimiento es el siguiente: en el servidor hacemos la clásica operación de actualizar apt-get update ; apt-get dist-upgrade una vez finalizada tecleamos
apt-move update
Un truco de la casa es crear el siguiente alias en el .bashrc para hacer las cosas más faciles alias apt=”apt-get update ; apt-get dist-upgrade –show-upgraded ; apt-move update”

Esta instrucción nos genera la estructura de directorios así como los archivos Packages.gz que más tarde leerá el apt-get
Configurando los clientes

En los clientes debemos editar el archivo /etc/apt/sources.list de forma que en la primera línea de sources añadiremos la ruta que hemos creado en el servidor. Un ejemplo:

Hemos comentado antes que el servidor tiene los datos accesibles vía http en la dirección 192.168.27.1/apt de forma que la línea que deberíamos añadir al sources.list del cliente sería:
deb http://192.168.27.1/apt/ distribucion main non-free contrib, donde distribucion como hemos dicho antes podría ser potato, sid …

Eso es todo 🙂 un par de puntualizaciones: uno, antes de actualizar los clientes lo correcto sería actualizar el servidor, y dos, solo estamos haciendo mirror de los paquetes que actualizemos en el servidor, si un cliente no encuentra un paquete en nuestro mirror lo descargará de cualquiera de los otros sources que tenga configurados

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=667 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.