apt-cacher-ng

Pseudo repositorio local

Una de las grandes dificultades con las que me he encontrado, en materia de mantenimiento de la arquitectura “blanda” informática[1], es la “disponibilidad” de salida a internet, más bien su carencia.

Por grande que sea el ancho de banda con el cual la escuela sale hacia la www, el gran número de equipos conectados lo hace muy vulnerable. Con lo cual la tarea de actualizar distribuciones (GNU/Huayra ahora en más) o instalar programas es una tarea entre muy ardua y tortuosa… y como agravante agrego: recurrente.

Había ya ensayado alguna idea de repositorio local que, por diferentes razones[2], nunca implementé.

Pero por suerte hoy (23/7/13) me encontré con esta idea de elProfeRoman, y luego seguí leyendo por acá

Estoy probando en casa esta solución Ya está implementada esta solución en el CEM 79 (colegio secundario de San Javier, Viedma, Rio Negro), en la Universidad Nacional del Comahue (sede Viedma-CURZA) y en mi casa (lugar en el que estoy instalando gran cantidad de GNU/Huayra de l@s estudiantes)… esta herramienta: Apt-Cacher NG la podemos sintetizar del siguiente modo:

(1) cada vez que una computadora requiere algún paquete de software (adminsitrados por apt-get) (actualización o nuevo software) se lo solicita a otra computadora de la red que actúa como proxi (servidor) ;

(2) si el servidor/proxi [ver nota 3 al final del artículo] no tiene guardado ese programa lo solicita a la www (repositorios) y se guarda una copia al entregárselo al cliente que lo solicita.

De este modo, cuándo un próximo cliente requiera el mismo paquete de software ya estará “chacheado” en el servidor/proxi/cache y no será necesario gestionarlo en la www… ergo: se ahorra muchísimo ancho de banda y tiempo.

Multipliquen por cientos de equipos que hay en un colegio y rápidamente surgirá la inquietud de implementar esta misma solución ya mismo.

Implementación

Paso 1 (servidor)

Instalar en un equipo (debería ser el de mayor capacidad de almacenamiento y procesamiento, incluso conectado a la red escolar por cable) el programa/cache: apt-cacher-ng

sudo apt-get install apt-cacher-ng

Con esto el servidor ya está funcionando!!!… si, así de simple!!!.

Si te interesa saber si efectivamente esta funcionando puedes utilizar la opción status de apt-cacher-ng (start lo inicia, stop lo detiene, restart lo detiene y vuelve a iniciar):

sudo /etc/init.d/apt-cacher-ng status

Con esto verificaremos que el servidor está funcionando… (se lo puede configurar, lo vemos más adelante).

Paso 2 (clientes / por cada uno)

Debemos indicar en las computadoras que deseamos actualizar/instalar que los paquetes pasarán por el proxi, esto es muy sencillo. Debemos crear el siguiente archivo (lo creamos y editamos al mismo tiempo):

sudo nano /etc/apt/apt.conf.d/02proxy

Y debe contener lo siguiente:

Acquire::http { Proxy "http://IPdelServidor:3142"; };

[ver nota 4] Para que el equipo requiera paquetes/programas al proxi se debe hacer un update (actualización de los paquetes instalados) (antes de ello es recomendable cerrar el terminal y volver a abrirlo):

sudo apt-get update

 … ya está funcionando…. Estamos en condiciones de realizar un upgrade (el primero demorará bastante… pero tendrás una grata sorpresa si realizas otro upgrade al finalizar el primero)

sudo apt-get dist-upgrade -y

Podemos confirmar como está funcionando el servicio,  ejecutando en el servidor, el siguiente comando:

tail -f /var/log/apt-cacher-ng/apt-cacher.log

Con él, podemos ir viendo las salidas (que como se indica en la segunda página referenciada al inicio) con I indicará que el paquete se ha descargado desde la web y con O que se sirvió en forma local.

¿Por qué el título pseudorepositorio?, pues esto no es un mirror, no es que se posean en forma local la totalidad de los programas disponibles (necesario donde no hay internet), en este caso se “van guardando” en el servidor/proxi los paquetes que van siendo requeridos para instalación. Una opción más apropiada donde existe una conexión de internet “medianamente decente”.

———–

[1] entendiendo por tal cosa todo el software escolar, el de las PC y el de la gran cantidad de netbooks con que se cuenta, gracias claro a la brillante idea de la Presidenta: Cristina Fernandez de Kirchner

[2] muchas distribuciones/versiones diferentes complica, multiplicaban la dificultad de la tarea… debían ser actualizados con determinado orden de priodicidad… etc. desistí

[3] La computadora que actúe de cache/proxi debe tener salida hacia internet. En la escuela donde esta funcionando el equipo cache/proxi se conecta a internet por cable (mediante la interfaz eth0) y al servidor escolar (siendo accesible desde cualquier AP de las aulas) mediante wifi. Es decir tiene dos interfaces de red activas y configuradas. ES MUY IMPORTANTE garantizar que la IP que el servidor escolar le entrega al proxi/cache no se modifique!!!!, se recomienda conectarse con una IP fija al servidor escolar!

[4] En mi caso, por pereza, o practicidad, el archivo 02Proxi lo tengo almacenado en la carpeta www del servidor (que tiene, además, corriendo servicio web ¿cómo lo puedo hacer?). Con lo cual lo que hago en los diferentes clientes es (conectados a la red escolar):

sudo wget IPdelServidor/02Proxi      (con esto lo descargo desde el 
                                     servidor al cliente, queda en 
                                     el mismo directorio donde estoy 
                                     ubicado)

sudo mv 02Proxi /etc/apt/apt.conf.d/  (con esto lo muevo a la 
                                      ubicación donde apt lo leerá)

ahora es simplemente (cierro y abro el terminal):

sudo apt-get update
sudo apt-get dist-upgrade -y

4 comentarios en “Pseudo repositorio local

    1. Creo que ubuntu server no implementa por defecto el demonio avahi, probá hacer
      /etc/init.d/avahi-daemon status
      si esta corriendo te da información y sino te dice que el demonio no existe.
      si es así instalas de este modo:
      sudo apt-get install avahi-daemon
      con eso funcionaría…
      Comentame de todos modos
      Otro tema: El server ubuntu ya lo tenés o estás pensando en armarlo? si es así recomiendo 100% arrancar directo a huayra server.
      Saludos

  1. Una pregunta: Apt-cacher-ng funciona con varias versiones de Ubuntu, por ejemplo.

    Es decir puedo usar apt-cacher-ng en un servidor, y que varias versiones de Ubuntu apunten a ese proxy. ¿Gestiona varias versiones o solo para una sola?.

    Ejemplo:
    Ttengo una sala con 10 PC, 5 usan Ubuntu 12.04 y otras 5 usan Ubuntu 13.04.
    O tener 5 con Xubuntu 12.04 y otras 5 con Ubuntu 13.04.

    Se puede hacer el cache de dos versiones distintas o distros “distintas” (basadas).
    Apt-cacher-ng puede realizar ese trabajo, de separar las versiones de una misma distro, o de “distintas” distros.

    Gracias! Saludos!

    1. Hola Emanuel… disculpa la demora en responder.
      Te comento: hasta donde yo se, insisto en eso: hasta donde yo se, apt-cacher-ng es ideal para este tipo de situaciones.
      En todo caso si lo probas y funciona compartinos la experiencia (si no, también).
      Abrazo

Deja un comentario

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