Cacheado de paquetes con apt-cacher-ng
Repositorios
O sistema de xestion de paquetes de Ubuntu deriva do sistema usado na distribución Debian. Un paquete .deb contén todos os ficheiros, datos e instruccións para desarrollar unha funcionalidade concreta ou unha aplicación software. Os paquetes normalmente poden atoparse nos repositorios e en función da súa complexidade poden ter dependencias; é dicir, precisan de paquetes adicionais para poder funcionar correctamente. O ficheiro /etc/apt/sources.list contén a listaxe principal de repositorios:
main para software soportado oficialmente por Canonical. restricted para software soportado pero que non ten unha licenza completamente libre. universe para software mantido pola comunidade (non ten soporte oficial). multiverse para software que non é libre.
... deb http://archive.ubuntu.com/ubuntu/ jammy main restricted # deb-src http://archive.ubuntu.com/ubuntu/ jammy main restricted ...
Tamén é posible atopar repositorios en calquera ficheiro de extensión .list dentro do directorio /etc/apt/sources.list.d/ e tambén engadir/eliminar repositorios e PPAs (Personal Package Archive) co comando add-apt-repository. No seguinte exemplo, podemos ver o repositorio de ondrej con versión mais actualizadas de PHP para Ubuntu:
$ ls -lhF /etc/apt/sources.list.d/ total 512 -rw-r--r-- 1 root root 140 may 20 18:16 ondrej-ubuntu-php-jammy.list $ cat /etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main # deb-src https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main
Como pode verse nos exemplos anteriores os repositorios están en equipos situados en Internet, e polo tanto para actualizar a listaxe de paquetes dispoñibles nos repositorios, actualizar o sistema ou instalar paquetes, o noso equipo ten que acceder a Internet e proceder a descargar os arquivos correspondentes. Seguramente no desenvolvemento das prácticas na casa ou no IES atopámonos coas seguintes situacións:
- Temos que instalar o mesmo programa en 2, 3, 4, 5, 10, 30, ..., equipos Linux.
- Temos que actualizar 2, 3, 4, 5, 10, 30, ..., equipos Linux e a gran maioría das actualizacións consisten nos mesmos paquetes.
Cando facemos unha práctica na clase con Linux todo o alumnado ten que instalar/actualizar os mesmos paquetes.
Todo depende da conexión a Internet dispoñible, pero é posible que en todas as situacións anteriores a instalación sexa lenta ó saturar a saída a Internet da clase/IES para buscar nos repositorios a mesma información ou polo menos esta forma de traballar non é a máis óptima. Estamos na situación amosada na seguinte figura, onde todos os equipos saen a Internet e van buscar directamente a información ós repositorios:
Sin apt-cacher-ng
Fig. Acceso directo ós repositorios para buscar información/paquetes.
apt-cacher-ng
Aquí é onde entra en xogo apt-cacher-ng e o 'cacheado' de paquetes. A idea de apt-cacher-ng é a de todas as cachés:
- A primeira vez que un equipo pida un paquete, apt-cacher-ng irá ós repositorios correspondentes a buscalo, enviará o paquete ó cliente e ademais gardará unha copia do mesmo no seu disco duro.
- As seguintes veces que se pida ese paquete, apt-cacher-ng proporcionará a copia que gardou, aforrando ter que ir ós repositorios a buscalo e entregándoo á velocidade da rede local.
Con apt-cacher-ng as peticións dos equipos van pola rede interna da organización e únicamente sae ós repositorios de Internet a máquina onde corre o servizo apt-cacher-ng. Estariamos ante a seguinte situación:
Con apt-cacher-ng
Fig. Acceso ós repositorios para buscar información/paquetes usando apt-cacher-ng.
Cando temos que instalar en varios equipos os mesmos paquetes acadamos un aforro bestial de tempo e ancho de banda. A modo de exemplo, hai uns cantos anos a conexión a Internet nun centro proporcionaba uns 6 Megas e cando faciamos a instalación de software algo pesado, como Virtualbox ou Wireshark, a instalación demorábase moito debido á saturación da saída a Internet; sen embargo, configurando os equipos para usar un servidor apt-cacher-ng no centro, a instalación remataba en poucos minutos.
Apt-cacher-ng non está pensado para traballar só con servidores, cachea todo tipo de paquetes incluíndo os que están presentes nas distribucións de escritorio con contorno gráfico. Continuando co exemplo anterior, actualizar os 20 equipos Lubuntu dunha aula de informática de ESO/Bach. cuns 300 MBytes de paquetes a descargar (por cada equipo) sen apt-cacher-ng rozaba o infernal; e con apt-cacher-ng e os paquetes cacheados, o tema solucionase novamente en poucos minutos.
Outra punto a ter en conta é que apt-cacher-ng pode correr nunha máquina virtual sen grandes prestacións; e de feito, así é como estaba no meu antigo centro (máquina virtual Ubuntu 16.04 con 512MB de RAM en Virtualbox), dando servizo a varias aulas de informática e distintas versións de Ubuntu. Eu tamén teño apt-cacher-ng nun contedor no equipo da casa para acelerar algunhas probas para prácticas (p.e. algunhas do estilo das que imos facer neste tema onde creo contedores e automáticamente instalo sofware ou alguhas como as feitas en escenarios tipo os de alta dispoñibilidade).