Führen Sie (Ubuntu) ein Do-Release-Upgrade mit einem lokalen Aptly-Mirror durch (fehlende Meta-Release-Dateien)

Führen Sie (Ubuntu) ein Do-Release-Upgrade mit einem lokalen Aptly-Mirror durch (fehlende Meta-Release-Dateien)

Hintergrund

Aus rechtlichen Gründen haben wir derzeit einen lokalen Deb-Mirror mit Aptly-Snapshots eingerichtet (beispielsweise dürfen Server keine Pakete über das Internet abrufen). All dies funktioniert für normale Upgrades einwandfrei. Wenn wir ein Release-Upgrade durchführen müssen (von Ubuntu 18.04 auf 20.04), können wir normalerweise einfach die VM ersetzen, aber bei einigen Servern müssen wir ein direktes Release-Upgrade mithilfe unseres Mirrors durchführen.

Aktuellen Zustand

Wir haben konfiguriert/etc/update-manager/meta-releaseauf unseren Knoten, um auf unseren Spiegel zu zeigen, aber natürlich gibt es keineMeta-Release und Meta-Release-LTSDateien in unserem Aptly. Wenn wir dann die offizielleMeta-VeröffentlichungDateien, die von unserem Aptly bereitgestellt werden sollen, funktionieren immer noch nicht, da sie auf eine Reihe verschiedener externer URLs, Installationsprogramme, Dokumentationen usw. verweisen. Und selbst wenn wir die URLs so ändern würden, dass sie auf unser Aptly verweisen, wären all diese Dateien nicht da. Wir müssten sie also kopieren und ebenfalls bereitstellen.

Lösung?

Müssen wir dieMeta-VeröffentlichungDateien, laden Sie alle Installer herunter usw. bedienen Sie sie und generieren Sie unsere eigenenMeta-VeröffentlichungDateien daraus? Es muss doch einen einfacheren Weg geben, das zu tun! Müssen wir das von Grund auf neu erstellen oder gibt es entsprechende Tools?

https://www.aptly.info/

PS. Wir denken darüber nach, auf Pulp 3 umzusteigen, da Aptly teilweise aufgegeben zu sein scheint, ohne dass wir wüssten, ob das bei dem Problem des Release-Upgrades helfen würde.

Antwort1

Wir haben unseren lokalen Spiegel synchronisiert, dieMeta-VeröffentlichungundMeta-Release-ltsDateien sowie den benötigten Updater inklusive Signatur und Releaseinfos (bionic.tar.gz bionic.tar.gz.gpg usw.) aus den Standard-Ubuntu-Repositorys.

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

Anschließend haben wir diese über unseren Spiegel verfügbar gemacht und den Inhalt der Meta-Release-Dateien entsprechend der URL unseres Spiegels geändert.

[Meta-Release-Ausschnitt]

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

[Meta-Release-LTS-Ausschnitt]

[...]
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

Wir verwendeten "apt dist-upgrade -dy", um alle Pakete zuerst in den lokalen PACKAGECACHE herunterzuladen/abzurufen. Sie können PACKAGECACHE und benutzerdefinierte Quellenlistendateien mithilfe von apt/dpkg-Flags überschreiben. Dies kann übersprungen werden, wenn kein vollständiges Offline-Upgrade erforderlich ist.

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

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

Mit diesem Setup können Sie das Upgrade vollständig durchführen, indem Sie nur lokale Pakete/Konfigurationen verwenden und die Kommunikation mit ubuntu.com-Repos während des Upgrades verhindern.

Eine Einschränkung bestand in der Verwendung systemweiter HTTP-Proxyserver in /etc/environment – ​​setzen Sie dies einfach außer Kraft, indem Sie „Upgrader“ mit benutzerdefinierter Umgebung aufrufen:

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

Das Updater liest /etc/apt/apt.conf.d/10proxy nicht, da dies nur für den Transport dient.

Ohne diese Schritte versucht das Upgrade-Programm weiterhin, archive.ubuntu.com über Ihren konfigurierten Proxy zu erreichen, was zu einem Upgrade-Fehler führt.

Und schließlich wird es mithilfe einer Subshell aufgerufen, um alle Protokollausgaben außer den Informationen in /var/log/dist-upgrade/main.log abzufangen.

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

Hoffe, das hilft (wir haben es von Grund auf neu gebaut)

verwandte Informationen