- Instalar el software necesario en el servidor.
Como primer paso, debemos instalar el servidor Apache HTTP que se encuentra en el paquete llamado apache2
, con el comando:
$ sudo apt install apache2
Instalando Apache HTTP
Luego, asegúrese de que el servicio se ejecute al inicio:
$ sudo systemctl enable apache2
Si todo está bien, nos moveremos al directorio DocumentRoot predeterminado (que es /var/www/html).
Allí podemos crear el subdirectorio /var/www/html/ubuntu
y asignarlo al propietario correspondiente, en este caso www-data
(el usuario bajo el cual se ejecuta Apache HTTP).
$ sudo mkdir -p /var/www/html/ubuntu
$ sudo chown www-data:www-data /var/www/html/ubuntu
Se recomienda encarecidamente que DocumentRoot o al menos la subcarpeta ubuntu esté en un sistema de archivos que pertenezca a un volumen lógico; de esta manera podemos ampliarlo en línea, sin tiempo de inactividad.
En el momento de mi prueba, 171,5 GiB es el espacio mínimo absoluto necesario si también se duplican los paquetes src; por lo tanto, para planificar el futuro, se recomienda tener al menos 300 GiB de espacio en disco.
Esto es principalmente una estimación si elige una versión de Ubuntu; si es necesario duplicar paquetes para diferentes versiones, los requisitos de espacio aumentarán considerablemente.
- La principal herramienta que nos permite crear un repositorio local es
apt-mirror
, para instalarlo ejecuta:
$ sudo apt install apt-mirror
En caso de que no se encuentre el paquete, asegúrese de actualizar primero la lista de paquetes con:
$ sudo apt update
- Seleccionar qué repositorios duplicar en el servidor.
Una vez instalado apt-mirror podemos hacer una copia de seguridad de su archivo de configuración /etc/apt/mirror.list
, después de eso, asegúrese de que la línea que contiene la opción set base_path
apunta a la ruta correcta para nuestro repositorio (por defecto es /var/spool/apt-mirror).
$ sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.org
Ahora puede usar su editor favorito (vi o nano, por ejemplo) para cambiar la opción base_path en el archivo mirror.list a /var/www/html/ubuntu
; también debe especificar que está duplicando los repositorios de la distribución biónica (cambie en consecuencia si tiene una versión diferente de Ubuntu), siempre en el archivo de configuración mirror.list.
archivo de configuración mirror.list
En caso de que no tenga mucho espacio en el disco, puede optar por no reflejar los paquetes src; entonces comentarás las líneas relativas:
archivo de configuración mirror.list
A continuación, copia un script importante en /var/www/html/ubuntu/var/
$ sudo mkdir -p /var/www/html/ubuntu/var
$ sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var/
- Duplicar los repositorios seleccionados localmente en el servidor.
Ahora es el momento de crear un espejo local, tenga en cuenta que un espejo inicial (desde archive.ubuntu.com
solo para este tutorial) puede llevar mucho tiempo y ralentizar su conexión, por lo que le sugiero que comience este trabajo por la noche.
Para comenzar a duplicar los paquetes de repositorios remotos en el servidor local, simplemente ejecute el comando:
$ sudo apt-mirror
Si lo necesita, puede interrumpir este proceso (con el clásico combo CTRL+C) y reiniciarlo más tarde; se reanudará desde donde se quedó.
Eventualmente llegaremos al punto en que se ejecutan los scripts clean.sh y postmirror.sh, es una señal de que el proceso de duplicación se ha completado.
Fin del proceso de duplicación.
- Configuración del proceso de sincronización automática mediante el programador cron.
Después de completar nuestra primera sincronización, necesitamos crear un trabajo cron para asegurarnos de que tenemos un repositorio local actualizado automáticamente; por ejemplo, queremos que esta tarea se ejecute todas las noches a las 2:00 a. m. y, por lo tanto:
$ sudo crontab -e
Luego editamos el crontab para agregar la siguiente línea:
00 02 * * * /usr/bin/apt-mirror
Y guarde y salga (usando vi, nano o cualquier editor configurado).
- Configuración de la lista de repositorios locales.
En cualquier cliente que vaya a usar nuestro repositorio local necesitamos editar el archivo de configuración /etc/apt/sources.list
especificando nuestro repositorio local y deshabilitando cualquier remoto.
En nuestro caso se han descargado los siguientes repositorios:
Repositorios locales del servidor NOTA
Se recomienda comentar cualquier línea en el /etc/apt/sources.list
archivo que hace referencia a repositorios no reflejados en nuestro servidor, por ejemplo, en este caso, cualquier línea que comience con deb-src
y que contiene bionic-backports
han sido comentados.
Si no lo hace, es posible que obtenga el error
Release file has not been found
al ejecutar el comando apt update en el cliente.
En primer lugar, reemplazamos cualquier cadena archive.ubuntu.com con nuestra IP espejo local, en este caso 10.0.0.42. Por supuesto, su dirección IP local podría ser diferente.
$ sudo sed -i.bak0 "s/archive\.ubuntu\.com/10\.0\.0\.\42/g" /etc/apt/sources.list
Este comando creará el archivo de respaldo /etc/apt/sources.list.bak0
y reemplace cualquier archive.ubuntu.com
cadena con 10.0.0.42
.
Se está ejecutando de nuevo un ajuste adicional sed de esta manera:
$ sudo sed -i.bak1 "s/ubuntu/ubuntu\/mirror\/archive\.ubuntu\.com\/ubuntu/g" \ /etc/apt/sources.list
Esto es necesario ya que apt-mirror agrega la ruta mirror/archive.ubuntu.com/ubuntu
a nuestro camino base. Aquí se creará otro archivo de copia de seguridad
/etc/apt/sources.list.bak1.
A los efectos de este tutorial, solo duplicamos paquetes o repositorios de archive.ubuntu.com; por supuesto, puede agregar otros repositorios no oficiales en el archivo mirror.list en el servidor, pero luego debe volver a ejecutar apt-mirror allí y editar en cualquier cliente el archivo sources.list en consecuencia.
- Actualice el índice del repositorio local.
Ahora debe asegurarse de que el firewall del cliente no bloquee el puerto 80 y luego puede ejecutar:
$ sudo apt update
Y estás listo para ir.
Actualización de la lista de paquetes desde los repositorios locales.
Configurar un repositorio local en Ubuntu no es tan difícil como parece y puede ser útil siempre que tenga una red local y recursos de disco adecuados.