Antaño usamos la utilidad debmirror. Las cosas han cambiado y ahora usaremos una herramienta más sencilla, apt-mirror. Primero instalamos el paquete en el servidor donde vamos a crear el repositorio mirror de paquetes:
# apt-get install apt-mirror
En /etc/apt/mirror.list metemos la lista de repositorios a clonar. Este configuración, a diferencia de la antigua debmirror, tiene un formato similar a los sources.list habituales de Debian/Ubuntu:
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# set mirror_path /mirror
# set skel_path /skel
# set var_path /var
# set cleanscript /clean.sh
# set defaultarch >running host architecture<
# set postmirror_script /postmirror.sh
# set run_postmirror 0
set cleanscript /clean.sh
set defaultarch amd64 #Solo amd64
set nthreads 20
set _tilde 0
#set limit_rate 1000k
############# end config ##############
#------------------------------------------------------------------------------#
# OFFICIAL UBUNTU REPOS #
#------------------------------------------------------------------------------#
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-amd64 http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
#######################
# REPOS DE LA SECCION #
#######################
deb-amd64 http://desarrollo.educarex.es/solointranet/ubuntu/jammy/ jammy linex
deb-amd64 http://linex.educarex.es/ubuntu/jammy/ jammy linex
###### 3rd Party Binary Repos
deb-amd64 http://dl.google.com/linux/earth/deb/ stable main
clean http://es.archive.ubuntu.com/ubuntu
clean http://desarrollo.educarex.es/solointranet/ubuntu
clean http://linex.educarex.es/ubuntu
clean http://desarrollo.educarex.es/es.archive.ubuntu.com/ubuntu
En el fichero anterior configuramos la clonación de los repos de Ubuntu Jammy, el repositorio interno de nuestra red (desarrollo.educarex.es y linex.educarex.es) y el repositorio de Google Earth. Solo clono los paquetes amd64, ya que la versión i386 de los paquetes tiene un uso marginal, ocupa mucho y no tengo suficiente espacio de disco para clonar dicha parte.
Todo se descargará en var/spool/apt-mirror/mirror. Para poder hacer uso del repositorio clonado en nuestra red hay que instalar apache2 y hacer que /var/www/html/ubuntu apunte a /var/spool/apt-mirror/mirror:
# ln -sf /var/spool/apt-mirror/mirror /var/www/html/ubuntu
Para que los repositorios se clonen diariamente creamos los ficheros /etc/cron.d/apt-mirror y /etc/cron.d/apt-mirror-die:
# cat /etc/cron.d/apt-mirror
# Regular cron jobs for the apt-mirror package
00 22 * * * apt-mirror rm -f /var/spool/apt-mirror/var/apt-mirror.lock; /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
# cat /etc/cron.d/apt-mirror-die
# Matar el proceso apt-mirror
00 01 * * * root /usr/bin/killall -9 apt-mirror
A las 22:00 se lanza apt-mirror y tres horas después se corta. Por supuesto podemos cambiar estas horas para ajustar a nuestro caso. Harán falta varios días para bajar todos los repositorios completos, ya que el total son 670GB, repartidos así:
# du -sh *
5,4G desarrollo.educarex.es
111M dl.google.com
389G es.archive.ubuntu.com
574M linex.educarex.es
275G security.ubuntu.com
Si tenemos prisa siempre podemos forzar la actualización a mano o lanzar el siguiente comando para ver si está todo ya bajado:
# apt-mirror
Una vez tenemos los repositorios clonados hay que distribuir a nuestros clientes unos ficheros *.list que apunten al mirror local en lugar de a los repositorios externos a la red. Tendriamos este /etc/apt/sources.list:
#Arquitectura amd64 tira del repositorio local
deb [arch=amd64] http://servidor-mirror/ubuntu/es.archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb [arch=amd64] http://servidor-mirror/ubuntu/es.archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb [arch=amd64] http://servidor-mirror/ubuntu/es.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb [arch=amd64] http://servidor-mirror/ubuntu/security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
#Arquitectura i386 tira de repositorios en Internet
deb [arch=i386] http://es.archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb [arch=i386] http://es.archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
deb [arch=i386] http://es.archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
deb [arch=i386] http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
Fichero /etc/apt/sources.list.d/repoXubuntuLinex.list:
#Repositorio Linex Desarrollo
deb [arch=amd64] http://servidor-mirror/ubuntu/desarrollo.educarex.es/solointranet/ubuntu/jammy jammy linex
deb [arch=i386] http://desarrollo.educarex.es/solointranet/ubuntu/jammy/ jammy linex
#Repositorio Linex para Ubuntu
deb [arch=amd64] http://servidor-mirror/ubuntu/linex.educarex.es/ubuntu/jammy jammy linex
deb [arch=i386] http://linex.educarex.es/ubuntu/jammy/ jammy linex
Fichero /etc/apt/sources.list.d/google.list:
#Google Earth
deb [ arch=amd64 ] http://servidor-mirror/ubuntu/dl.google.com/linux/earth/deb/ stable main
En los ficheros anteriores cambiamos "servidor-mirror" por el nombre o ip de nuestro mirror local. Lo más cómodo es distribuir estos tres ficheros *.list mediante una tarea puppet y una vez hecho esto hacer "apt-get update" en los clientes para que sincronicen con los mirrors locales.
Y ya está, una vez completado veremos que los apt-get y pkgsync van bastante más rápidos y apenas saturan nuestra salida a Internet.
No hay comentarios:
Publicar un comentario