Ir al contenido principal

Servidor de repositorios en una Red Local

Cómo mantener actualizadas varias máquinas al mismo tiempo

En situaciones en las que administrás varias máquinas, Apt puede ser de mucha ayuda ya que hace que el proceso de actualización y aplicación de los parches de seguridad para cada máquina sea muy simple. El problema es que, con el método tradicional, una vez que sale una actualización, tenés que bajar una copia de todos los nuevos paquetes para cada una de las máquinas, lo que implica un consumo fenomenal de nuestro ancho de banda y del ancho de banda del servidor oficial.

Afortunadamente, existe un método que nos permite actualizar una de las máquinas y, desde allí, actualizar el resto de las máquinas que componen nuestra red. Este método, además de reducir los costos y optimizar el uso de nuestro ancho de banda, evita la duplicación de paquetes en las distintas máquinas: todas instalan los paquetes utilizando nuestro "servidor de caché".

Cuando estás ejecutando la misma distribución en diferentes máquinas (ya sea en el trabajo, en laboratorios de computación, en "granjas" de servidores, en clusters o incluso en tu pequeña red doméstica) puede resultar útil crear un repositorio caché en tu red para que una vez descargado un paquete desde un repositorio oficial todas las demás máquinas lo descarguen desde ese repositorio caché que está almacenado en una máquina de tu red a la que llamaremos "servidor". De esta manera, las actualizaciones descargadas desde una máquina pueden ser instaladas en las demás sin necesidad de volver a descargarlas desde los repositorios oficiales.

Primero veamos algunas soluciones "no tradicionales" que NO recomiendo, pero que seguramente te vendrán a la mente a la hora de resolver esta cuestión.

Compartir /etc/apt

Cuando instalás un paquete en una distro Debian (o sus derivadas), éste se almacena localmente en el directorio '/etc/apt'. Cuando un paquete es requerido, Apt primero busca en este directorio para ver si existe una copia local (o sea, un caché), evitando así su descarga innecesaria. Como resultado de ello, a varios de Uds. seguramente se les habrá ocurrido que una buena forma de resolver el problema en cuestión podría ser elegir una computadora, que designaríamos como una suerte de servidor, que se actualizaría utilizando los repositorios oficiales, y que compartiría su directorio '/etc/apt' con el resto de las máquinas de la red. No obstante, este método podría derivar en problemas vinculados al bloqueo del archivo 'sources.list'. En general, no es la solución más utilizada ni la más conveniente.

Mover los paquetes

En vez de compartir un directorio '/etc/apt' común, otra alternativa podría ser que cada compu utilice su propio directorio local de caché pero generar un script que se ocupe de copiar los paquetes de una máquina a la otra de modo que queden todas actualizadas. Una herramienta para llevar adelante esta tarea puede ser 'apt-move', pero sinceramente no se las recomiendo porque no es lo suficientemente transparente para el usuario final. Además, puede significar una utilización completamente innecesaria de espacio en disco ya que deberán copiarse todos los paquetes en cada una de las máquinas.

Sistemas de caché dedicados

La mejor solución para este problema es la utilización de un sistema de caché dedicado. De lo que se trata, en definitiva, es de crear una copia de los servidores oficiales en una de las máquinas de tu red y luego configurar al resto de las máquinas para que, en vez de buscar las actualizaciones desde los servidores oficiales, lo hagan utilizando este caché (o copia) local.

Existe una variedad de sistemas diseñados para trabajar con Apt, incluyendo apt-cacher, apt-proxy, y apt-cached.

Aquí vamos a tratar con apt-cacher, que es el más sencillo de usar.

Apt-cacher

Apt-cacher es bien diferente de otros sistemas de caché de repositorios ya que no es un programa independiente ("stand-alone") sino que corre como un script CGI bajo Apache. Esto tiene varias ventajas, como por ejemplo, convertirlo en una herramienta pequeña y simple pero al mismo tiempo muy poderosa y, por consiguiente, más robusta porque no precisa de un código propio para el manejo de protocolos, y es muy flexible porque podés usar el mecanismo de control de acceso de Apache en caso de que quieras limitar el número de máquinas que se encuentren habilitadas para acceder al caché.

Apt-cacher sólo necesita ser instalado en una máquina, aquella que decidas que debe funcionar como tu caché local de repositorios. Luego, el resto de las computadoras de tu red deberán ser configuradas para que realicen los pedidos de actualizaciones al caché y no a los servidores oficiales.

Configuración del servidor

Para instalar basta con

sudo apt-get install apt-cacher

Este paquete tiene dependencias con apache, perl y wget, por lo que los instalará si no lo tenés previamente instalados.

Una vez instalado, es recomendable reiniciar Apache:

/etc/init.d/apache restart

Finalmente, lo único que hay que hacer es ajustar los parámetros por defecto del script. Escribí en un terminal:

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

En general, todos los valores por defecto están bien, pero es recomendable ajustar los tres siguientes:

admin_email=mimail@miservidor
generate_reports=1
expire_hours=24

El segundo elemento es una variable de tipo booleana que determina la generación de reportes (0 no genera reportes, 1 sí los genera). El primer elemento, en cambio, es la dirección de correo electrónico a la que se enviarán los reportes creados. El tercer y último elemento determina la cantidad de horas que debe esperar Apt para verificar si hay actualizaciones disponibles en los servidores oficiales.

Si utilizás un proxy, no te olvides de agregar los siguientes elementos:

http_proxy=proxy.example.com:8080
use_proxy=1

Para verificar que funcione, podés acceder a tu caché local a través de la url http://nombre_servidor/apt-cacher/ y aparecerá una página donde se muestra la configuración de apt-cacher. Recordá que 'nombre_servidor' debe ser reemplazado por el IP de la máquina que hayas designado como 'servidor', o sea, como depositaria del caché local de paquetes.

Configuración clientes

Ahora lo único que hay que hacer es modificar los sources.list de los clientes para que pasen a través del servidor. Si el IP del servidor es 123.123.123.123, hay que añadirlo a cada línea del sources.list, y además tener cuidado y que todos hagan referencia al mismo servidor, sino el cache no tendrá efecto.

sudo gedit /etc/apt/sources.list

Nota: ¡Ojo! En Debian y sus derivados el 'sources.list' se almacena en '/etc/apt'. Sin embargo, en otras distribuciones puede ser que se almacene en otra ruta. En caso de que no encuentres el archivo siempre podés encontrarlo ingresando 'locate sources.list' en un terminal.

Una vez abierto el archivo, siendo el IP de nuestro servidor 123.123.123.123, habría que modificar todas las líneas usando el siguiente criterio:
# Originales
#deb http://ftp.us.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ sid main contrib non-free

# Modificados
deb http://123.123.123.123/apt-cacher/ftp.us.debian.org/debian/ sid main contrib non-free
deb-src http://123.123.123.123/apt-cacher/ftp.us.debian.org/debian/ sid main contrib non-free

Como ves, hay que agregar al comienzo de la dirección URL el IP del servidor + '/apt-cacher/'. Luego va el resto de la línea original.

Estadísticas de tráfico

Si agregaste el elemento 'generate_reports=1' en el archivo 'apt-cacher.conf', apt-cacher generará estadísticas de accesos, a las que podés acceder con el url '/apt-cacher/report'.



Si, por algún motivo, necesitás generar las estadísticas antes de las cantidad de horas establecidas en 'apt-cacher.conf', ejecutá el el siguiente comando:

/usr/share/apt-cacher/apt-cacher-report.pl

Entradas populares de este blog

Fallo al obtener la lista de compartición del servidor

 - Ubuntu Karmic Koala El problema. El detalle es que a veces tengo que revisar archivos que están en otras computadoras que utilizan windows. Al momento de darle en el menú Lugares - Red - Red de Windows y al elegir el grupo de trabajo en el que están mis equipos me aparece el siguiente error. No se puede montar el lugar. Fallo al obtener la lista de compartición del servidor. La solución . La encontré en este articulo de los Foros de Ubuntu, lo voy a copiar tal cual, espero que no le moleste al autor y solo a manera de respaldo. # — Aquí inicia el articulo de los foros de Ubuntu – 1- En principio es necesario que estén instalados: samba samba-common smbclient winbind   2- Luego editar el archivo /etc/samba/smb.conf sudo gedit /etc/samba/smb.conf   A los cambios necesarios para adaptar el sistema, según los tutoriales de samba es necesario tener presente que: a- Donde dice workgroup = WORKGROUP, reemplazar WORKGROUP por el nombre de grupo de ...

Rootear en Ubuntu un teléfono Android

Tengo un teléfono con Android, concretamente un Motorola Defy, y resulta que en Android, basado en Linux, eres un simple usuario y solo puedes realizar algunas tareas. Otras te están vetadas. Conseguir los permisos de superusuario, se llama entre los entendidos rootear el móvil. En principio es una operación que no entraña riesgos, pero en esta vida todo puede fallar. Así que debe quedar claro que si decides rootear el teléfono, lo haces bajo tu propia responsabilidad. También debes entender, que si rooteas el teléfono, los SAT aprovechan para lavarse las manos de cualquier problema y anular la garantía. Y por último, debes saber que es posible que ya no recibas las actualizaciones automáticas de Android. Para rootear teléfonos se utiliza una aplicación llamada Superoneclick . En mi caso, esta parece ser la única solución. Pero este es un programa para Windows, por lo que.... Afortunadamente, esta escrito en .NET, por lo que vamos a poder ejecutarlo con MONO en nuestro ...

Descargar Packet Tracer 5.2 [Windows y Linux]

Packet Tracer 5.2 [Windows y Linux] Packet Tracer es la herramienta de aprendizaje y simulación de redes interactiva para los instructores y alumnos de Cisco CCNA. Esta herramienta les permite a los usuarios crear topologías de red, configurar dispositivos, insertar paquetes y simular una red con múltiples representaciones visuales. Packet Tracer se enfoca en apoyar mejor los protocolos de redes que se enseñan en el currículum de CCNA. Este producto tiene el propósito de ser usado como un producto educativo que brinda exposición a la interfaz comando – línea de los dispositivos de Cisco para practicar y aprender por descubrimiento. Packet Tracer 5.2 es la última versión del simulador de redes de Cisco Systems, herramienta fundamental si el alumno está cursando el CCNA o se dedica al networking. En este programa se crea la topología física de la red simplemente arrastrando los dispositivos a la pantalla. Luego clickando en ellos se puede ingresar ...