H!

Yo se que este tema lo han tratado otras veces en la lista pero me
parece que "recordar es volver a vivir". Hasta hace un tiempo trabaje
con Fedora Core y siempre fue un problema lo de las actualizaciones de
seguridad o obtener los repositorios para la distro, esta fue, entre
otras, una de las razones por las cuales migre a Ubuntu en todas sus
variantes (Desktop y Server).

La solución la encontré por medio del paquete apt-cacher que hace un
trabajo genial haciendo una cache de los paquetes que los usuarios
descargan de los repositorios. La instalación es tan sencilla como (en
[1] esta se puede ver una guía de instalación para Ubuntu):

  sudo apt-get install apt-cacher

El demonio es muy ligero y casi no consume recursos, la configuración se
puede modificar con

  sudo vim /etc/apt-cacher/apt-cacher.conf

Los valores por defecto funcionaran en la mayoría de los casos, es
posible que se deban modificar las siguiente entradas:

http_proxy, use_proxy, http_proxy_auth, use_proxy_auth
  si se usa un proxy para acceder a los repositorios reales
  esto es necesario para la mayoría de nosotros.
allowed_hosts
  quien puede conectarse a la cache, aquí se puede especificar
  la red local completa, p.e: 10.0.0.0/8
limit
  importante, restringir el ancho de banda a usar, en una red
  con 512kbs de salida con 20Kbytes es suficiente
cgi_advise_to_use
  para que se muestre una pequeña ayuda de uso


En los clientes solo hay que cambiar las lineas del sources.list de:

deb http://archive.ubuntu.com/ubuntu/ hardy main

a

deb http://ip.del.apt.cacher:3142/archive.ubuntu.com/ubuntu/ hardy main

Por ejemplo.

Solo para tener una idea panorámica, en mi red con 5 labs de 31 máquinas
corriendo Ubuntu 7.04, unas cuantas con Debian etch y otras con Kubuntu,
las estadísticas de la cache son las que siguen:

          Cache hits        Cache misses     Total 
---------------------------------------------------
Requests  45099 (79.55%)    11587 (20.44%)   56686 
Transfers 14.946GB (79.65%) 3.817GB (20.34%) 18.763GB

y el tamaño en disco es de 5.3 GB, de esta manera no tengo que tener un
repositorio completo ocupándome tremendo espacio en disco y
desactualizado además.

Y la cosa no termina ahí, ¿Qué pasa si el apt-cacher no puede acceder a
los repositorios? nos quedamos sin repositorios pero eso se puede
resolver usando un par de trucos (LO QUE SIGUE ES SOLO UNA IDEA para
comenzar a trabajar, use bajo su propio riesgo).

Primero necesitamos un servidor web, en este ejemplo tomamos lighttpd
que es lo más sencillo que hay y funciona como se instala:

sudo apt-get install lighttpd

creamos los directorios que necesitamos:

cd /var/www
sudo mkdir mirepo
cd mirepo
ln -s /var/cache/apt-cacher/packages binary

Podemos probar que todo este bien accediendo a la url del servidor por
medio de:

  http://ip.del.apt.cacher/mirepo/binary/ 

Lo que debe mostrar un listado extenso de paquetes. Ahora solo falta una
herramienta que nos permita construir el archivo Packages.gz:

  sudo apt-get install dpkg-dev

y 

  cd /var/www/mirepo
  dpkg-scanpackages -m binary /dev/null | gzip -9c > binary/Packages.gz

listo, los paquetes guardados en la cache se podrán usar agregando la
siguiente linea al sources.list del cliente:

  deb http://ip.del.apt.cacher/mirepo binary/

Pero debemos escribir un script que corra con el cron y que actualice el
repo cada cierto tiempo, por ejemplo:

#!/bin/bash

# para apt-cacher y lighttpd para que el contenido de la cache
# no cambie mientras trabajamos con los archivos.
/etc/init.d/lighttpd stop
/etc/init.d/apt-cacher stop

# construir el archivo Packages.gz
cd /var/www/mirepo
dpkg-scanpackages -m binary /dev/null | gzip -9c > binary/Packages.gz

# arrancar los servicios parados
/etc/init.d/apt-cacher start
/etc/init.d/lighttpd start

Este script podemos guardarlo en /usr/local/bin como build-repo.sh y
darle permisos de ejecución con:

sudo chmod u+x /usr/local/bin/build-repo.sh

Ahora solo falta agregarlo al cron:

sudo crontab -e

Agregar una linea como esta:

0 0 * * * bash /usr/local/bin/build-repo.sh

Y con eso quedamos listos, de esta forma podemos pensar es hacer una
cascada caches con el apt-cacher, digamos que los que tienen acceso
directo a los repositorios en internet podrían levantar sus caches de
esta manera, mientras que otros pueden usar de la misma manera el
apt-cacher solo que configurando sus clientes para que accedan el repo
creado por el primero y así sucesivamente.

Espero que le sirva a alguien.

Refs:

[1] https://help.ubuntu.com/community/Apt-Cacher-Server 
[2]
http://www.debuntu.org/how-to-set-up-a-repository-cache-with-apt-cacher 
[3]
http://mediakey.dk/~cc/howto-create-your-own-debian-or-ubuntu-package-repository/

-- 
Yoel Benitez <[EMAIL PROTECTED]>
Facultad Regional Granma - UCI

_______________________________________________
Cancelar suscripción
https://listas.softwarelibre.cu/mailman/listinfo/linux-l
Buscar en el archivo
http://listas.softwarelibre.cu/buscar/linux-l

Responder a