Realice (Ubuntu) una actualización de lanzamiento utilizando un espejo Aptly local (faltan archivos de metalanzamiento)

Realice (Ubuntu) una actualización de lanzamiento utilizando un espejo Aptly local (faltan archivos de metalanzamiento)

Fondo

Actualmente tenemos una configuración de espejo deb local que utiliza instantáneas de Aptly debido a razones regulatorias (por ejemplo: los servidores no pueden recuperar paquetes a través de Internet). Todo esto funciona bien para actualizaciones normales. Cuando necesitamos realizar una actualización de la versión (de Ubuntu 18.04 a 20.04), normalmente podemos simplemente reemplazar la VM, pero algunos servidores requieren que realicemos una actualización de la versión local utilizando nuestro espejo.

Estado actual

Hemos configurado/etc/update-manager/meta-lanzamientoen nuestros nodos para apuntar a nuestro espejo pero, por supuesto, no haymeta-lanzamiento y meta-lanzamiento-ltsarchivos en nuestro Aptly. Si luego copiamos el oficialmeta-lanzamientoarchivos que se entregarán desde nuestro Aptly, todavía no funcionará porque se refiere a un montón de URL externas diferentes, instaladores, documentaciones, etc. e incluso si cambiaramos las URL para que apunten a nuestro Aptly, todos esos archivos no estarían allí. . Entonces tendríamos que copiarlos y servirlos también.

¿Solución?

¿Necesitamos analizar elmeta-lanzamientoarchivos, descargar todos los instaladores, etc. servirlos y generar los nuestros propiosmeta-lanzamientoarchivos de eso? ¡Debe haber una forma más sencilla de hacer esto! ¿Tenemos que construir esto desde cero o hay herramientas disponibles?

https://www.aptly.info/

PD. Estamos pensando en cambiar a Pulp 3 ya que Aptly parece estar parcialmente abandonado, no sabemos si eso ayudaría con el problema de actualización del lanzamiento.

Respuesta1

Lo que hicimos fue sincronizar nuestro espejo local, descargar elmeta-lanzamiento&meta-lanzamiento-ltsarchivos, así como el actualizador requerido, incluida la información de firma y versión (bionic.tar.gz bionic.tar.gz.gpg etc.) de los repositorios predeterminados de Ubuntu.

archive.ubuntu.com/ubuntu/dists/bionic/main/dist-upgrader-all/current/

Luego, los pusimos a disposición desde nuestro espejo y modificamos el contenido de los archivos de metalanzamiento que coincidían con nuestra URL espejo.

[fragmento de metalanzamiento]

[METARELEASE]
URI = http://$YOUR_MIRROR_HERE/ubuntu_1604/meta-release
URI_LTS = http://$YOUR_MIRROR_HERE/ubuntu_1604/meta-release-lts

[fragmento de meta-lanzamiento-lts]

[...]
Release-File: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic/Release
ReleaseNotes: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement
ReleaseNotesHtml: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html
UpgradeTool: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/bionic.tar.gz
UpgradeToolSignature: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/bionic.tar.gz.gpg

Nosotros usamos "apto dist-actualización -dy" para descargar/recuperar todos los paquetes en PACKAGECACHE local primero. Puede anular PACKAGECACHE y los archivos fuentes.list personalizados usando indicadores apt/dpkg; esto se puede omitir si no se requiere una actualización completa sin conexión.

/etc/apt/apt.conf.d/10upgrade

dir::etc::sourcelist /srv/apt/custom_sources.list;
dir::cache::archives /srv/apt/packages;"

Con esta configuración, puede actualizar completamente utilizando solo paquetes/configuraciones locales y evitar la comunicación con los repositorios de ubuntu.com durante la actualización.

Una advertencia fue el uso de servidores proxy http en todo el sistema en /etc/environment; simplemente anule esto llamando al actualizador con un entorno personalizado:

$ export HTTP_PROXY="" 
$ export http_proxy="" 
$ export DEBUG_UPDATE_MANAGER=true

El actualizador no lee /etc/apt/apt.conf.d/10proxy ya que es solo para transporte.

Sin estos pasos, el actualizador aún intenta acceder a archive.ubuntu.com utilizando su proxy configurado, lo que resulta en una falla en la actualización.

Y finalmente llamarlo usando un subshell para capturar todos los resultados del registro además de la información en /var/log/dist-upgrade/main.log

$ (do-release-upgrade -f DistUpgradeViewNonInteractive) &>> $somelog

Espero que esto ayude (lo construimos desde cero)

información relacionada