Acelerar la descarga de actualizaciones para varias PC Linux

Me encuentro con el siguiente problema.

Tengo que instalar Linux (Ubuntu o Linux Mint o similar) en varias máquinas. La instalación tiene que ser “atendida“, es decir que tiene que ser realizada paso a paso por cada uno de los operadores de cada PC en la forma más natural posible (es decir no puedo hacer un deploy). La red es de 1Gb, pero (aquí viene el problema) el acceso a Internet deja mucho que desear y tengo que terminar con las instalación en una hora o menos, con los paquetes de idioma instalados y el sistema actualizado a la fecha.

Montar un mirror local no es una opción. No se de cuantos GB estaremos hablando, pero solo necesito que estén disponibles unos 500 a 600 MB de archivos que son los que se descargan durante la instalación y en la actualización post actualización.

La solución que encontré es montar una cache para apt. Hay varias alternativas, pero una de las que más y mejores opciones ofrece es apt-cache-ng o ACNG.

El funcionamiento es el siguiente. Se instala un servicio en la PC servidor, el cual recibe las peticiones de los paquetes a descargar por parte de las PC clientes. Si un paquete se pide por primera vez, se descarga de Internet, dejando una copia almacenada en la cache del servidor. Cuando otra PC requiere el mismo paquete, este se descarga del servidor, sin necesidad de recurrir a Internet. Es decir que el servidor actúa como un proxy-cache.

¿Cómo lo hacemos funcionar?

En el servidor:

Instalamos ACNG.

$ sudo apt-get install apt-cacher-ng

Vamos a querer que el servidor almacene en cache sus actualizaciones, así cuando actualizamos el servidor, estos paquetes quedan disponibles para los clientes. Para esto creamos un archivo y agregamos el siguiente contenido:

$ sudo nano /etc/apt/apt.conf.d/02proxy
Acquire::http:Proxy "http://localhost:3142";

Acá le indicamos a apt que use como proxy al servicio de ACNG que escucha en el puerto 3142.

Puedo acceder a otras opciones editando el archivo /etc/apt-cacher-ng/acng.conf. Ahí puedo especificar donde se almacena la cache, que archivo contiene el log, que puerto se usa, etc.

También puedo acceder vía web a un reporte del uso de ACNG usando la siguiente dirección http://localhost:3142/acng_report.html. Si quiero que otros no tengan acceso a este reporte puedo establecer un usuario y contraseña editando el archivo /etc/apt-cacher-ng/security.conf y agregando la siguiente linea:
AdminAuth: user:passwd

Todo listo, pero nos falta algo. APT ya tiene una cache local donde almacena los últimos .deb descargados y esta se encuentra en /var/cache/apt/archives, por lo que podemos aprovechar estos archivos para no tener que descargarlos nuevamente. Vamos a importarlos a ACNG.

Para esto vamos a crear un directorio, copiar todos los .deb de la cache de APT y cambiar los dueños de estos archivos:

$ sudo mkdir /var/cache/apt-cacher-ng/_import
$ sudo cp /var/cache/apt/archives/*.deb /var/cache/apt-cacher-ng/_import
$ sudo chown -R apt-cacher-ng:apt-cacher-ng /var/cache/apt-cacher-ng/_import

por último accedemos a http://localhost:3142/acng_report.html y hacemos click en el botón Start import, en la sección Import para que realice la importación.

En el cliente

Solo nos queda crear un archivo antes de comenzar con la instalación:

$ sudo nano /etc/apt/apt.conf.d/02proxy
Acquire::http:Proxy "http://IP_del_Servidor:3142";

Esto nos servirá para acelerar la descarga de los paquetes de idiomas y de las actualizaciones durante la instalación. Luego tenemos que repetir el mismo paso en el sistema ya instalado para que sirva para la actualización post-instalación y las demás actualizaciones a futuro.

Pueden encontrar más información aquí:

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s