MarioDebian, mi devlog

Bitácora de un desarrollador newbie.

HOWTO cacheado de repositorios Debian/Ubuntu para colegios/instituciones

La idea de este HOWTO es poder cachear paquetes deb en un servidor local cuando en un centro tienen varios equipos con Debian/Ubuntu instalado (supongo que valdrá para otros casos menos concretos)

1.- Tenemos que tener un servidor haciendo de puerta de enlace, pongamos que tiene como IP en la LAN interna: 192.168.1.1

2.- En ese equipo tenemos que instalar un apache, el paquete approx y un servidor DNS, me quedo con dnsmasq. Se pueden tener más cosas, yo por ejemplo tengo montado un squid transparente.

3.- Configuramos approx para que cachee paquetes, en /etc/approx/approx.conf añadimos estas 2 líneas al final:

ubuntu http://uk.archive.ubuntu.com/ubuntu
debian http://ftp.uk.debian.org/debian

Lógicamente pon los repositorios que vayan mejor según tu zona geográfica y no uses los principales. Es importante que apuntemos a uno local, porque si apuntamos al principal haremos un bucle infinito. Approx por defecto sirve los repos en el puerto 9999, ahora necesitamos redirigir el 80 al 9999 de nuestra máquina. Se puede hacer con iptables (sabiendo las IPs de destino) o se puede hacer con mod_proxy de apache2.

4.- Creamos un site para apache /etc/apache2/sites-available/cache.mirror:

ProxyRequests Off
ProxyPass /debian/ http://localhost:9999/debian/ 
ProxyPassReverse /debian/ http://192.168.1.1:9999/debian/

ProxyPass /ubuntu/ http://localhost:9999/ubuntu/ ProxyPassReverse /ubuntu/ http://192.168.1.1:9999/ubuntu/

5.- Lo activamos:

# a2enmod proxy
# a2enmod proxy_http
# a2ensite cache.mirror
/etc/init.d/apache2 restart

6.-Ahora viene la magia... como los equipos de la red interna tienen 192.168.1.1 como DNS y gateway (y si no, lo forzamos con iptables) editamos /etc/hosts y añadimos:

# cache paquetes deb
192.168.1.1 archive.ubuntu.com
192.168.1.1 ftp.debian.org

En los equipos del centro tenemos que configurar los repositorios con estos repositorios, si usamos uno nacional no cacheará... Por ejemplo este sería el contenido de un sources.list de Ubuntu Hardy:

deb http://archive.ubuntu.com/ubuntu hardy main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu hardy-updates main universe multiverse restricted
deb http://archive.ubuntu.com/ubuntu hardy-security main universe multiverse restricted

7.-Reiniciamos dnsmasq (que lee el /etc/hosts antes de hacer peticiones DNS hacia fuera)

8.- Para comprobar que está funcionando en nuestro servidor miramos /var/cache/approx/ y veremos como empiezan a aparecer archivos. El paquete tiene 2 utilidades que se ejecutan diaria y semanalmente, una para actualizar los Packages.gz y otra para hacer limpieza por lo que no deberíamos preocuparnos de tener que mantener el sistema.Supongo que si crece exagerádamente y borramos el contenido de la cache seguirá funcionando y volverá a descargar...

Esta solución desde el punto de vista de consumo de ancho de banda es mejor que debmirror ya que sólo cacheamos los paquetes según se instalan, con debmirror se descarga el repositorio completo.


Articulos relacionados:

Comentarios

  1. Felipe Perucho Lo tengo que probar
    08/10/2009 | 17:31

    En mi instituto tenemos un problema misterioso con el apt-get, que no tira bien ni con conexión directa al router... A ver si con tu solución conseguimos algo :)

  2. javivf apt-cacher
    09/10/2009 | 13:50

    No conocia approx aunque uso apt-cacher desde hace algun tiempo y la verdad es que se agradece este tipo de aplicaciones para reducir el consumo de ancho de banda.
    Me ha gustado mucho tu manera de hacer transparente el sistema, gracias por la idea :)

  3. Lisandro Damián Nicanor Pérez Meyer apt-cacher y apt-cacher-ng
    09/10/2009 | 14:45

    Tu solución suena muy bien. Personalmente he usado apt-cacher y apt-cacher-ng con muy buenos resultados.

  4. Javi Lo de modificar el dns ...
    18/10/2009 | 23:34

    No queda muy bonito que ftp.debian.org apunte a 192.168 ...

    Me imagino que no queda otra si se quiere que el portatil pueda salir de clase.

    ¿No es mejor aprovechar el squid transparente para que cachee los .deb y todos las extensiones que use apt?

    Nosotros usamos nginx + apt-cacher-ng por que el apache me dió problemas con el proxypass (si funciona bien con approx, el problema estará, entonces, en apt-cacher-ng ...)

    Saludos

  5. adrian15 apt-proxy
    19/10/2009 | 19:25

    Yo use apt-proxy en mi pfc con Ubuntu y, bueno, funcionaba. No llegue a probar el approx.

    Eso sí los sources.list hay que modificarlos para que apunten a un puerto, no sé si era el 9999 o algo parecido.

    Con tu truquito de editar el hosts salvas el tener que modificar el sources.list a mano, aunque para ello creo que es más elegante hacerlo via servidor de dns.

    Aqui está explicado, lamentablemente en catalan: http://www.iescopernic.com/sergi_wiki/index.php/Servidor_DNS#Segrestar_algunes_dominis._Repositoris_Ubuntu aunque supongo que estará explicado en otros sitios.
    De todas formas leyendose el código se hace uno una idea.

    Recuerdo en la Debconf9 tenían montado algo parecido aunque supongo que más complejo, puede que tuvieran un subdominio de debian.org especial que apuntase al servidor real para que los desarrolladores pudieran hacer uploads, deb uploads o como se llamen.

Comentarios cerrados