So beheben Sie den AppStream-Repository-Metadatenfehler unter CentOS 8
Einführung
Wenn Sie unter CentOS 8 ein Update ausführen oder versuchen, ein Paket zu installieren, bricht der Paketmanager möglicherweise mit folgendem Fehler ab:
Failed to load metadata for 'AppStream' repo: Cannot prepare internal mirror list: No URLs in mirror list.
Dies ist keine Netzwerkstörung oder ein vorübergehendes Mirror-Problem. Es handelt sich um das erwartete Ergebnis davon, dass CentOS 8 das Ende seines Lebenszyklus erreicht hat. Dieser Artikel erklärt, warum der Fehler auftritt, was die richtige langfristige Lösung ist, und wie Sie das System vorübergehend wieder online bringen, falls Sie weiterhin darauf zugreifen müssen.

Warum dieser Fehler auftritt
CentOS Linux 8 hat am 31. Dezember 2021 das Ende seines Lebenszyklus erreicht. Nach diesem Datum wurde der Mirrorlist-Dienst für CentOS Linux 8 eingestellt und die Pakete wurden auf den Archivserver vault.centos.org verschoben.
Die Repository-Dateien auf dem System verweisen weiterhin auf mirrorlist.centos.org. Da dieser Dienst keine URLs mehr zurückgibt, kommt die Mirror-Liste leer zurück, und der Paketmanager hat keine Adresse, von der er Metadaten herunterladen kann. Das ist die Meldung, die Sie sehen.
Die Pakete wurden nicht gelöscht. Sie wurden auf einen Archivserver, vault.centos.org, verschoben. Das macht die im Folgenden beschriebene vorübergehende Lösung möglich.
Empfohlene Lösung: Migration zu AlmaLinux oder Rocky Linux
Da CentOS 8 keine Updates mehr erhält, einschließlich Sicherheitsupdates, stellt der Weiterbetrieb im Produktivsystem ein Risiko dar. Die richtige Lösung besteht darin, zu einer Distribution zu wechseln, die binärkompatibel mit dem bereits laufenden System ist.
AlmaLinux und Rocky Linux sind kostenlose, von der Community unterstützte Nachbauten von Red Hat Enterprise Linux. Sie sind als direkte Ersatzlösungen für CentOS konzipiert, sodass bestehende Software und Konfigurationen in den meisten Fällen ohne Änderungen weiterlaufen. Beide Projekte bieten ein In-Place-Migrationsskript, das CentOS 8 konvertiert, ohne den Server neu zu installieren.
Erstellen Sie vor der Migration immer ein vollständiges Backup oder einen Snapshot. Eine In-Place-Konvertierung ändert zentrale Systempakete, und Sie sollten einen Weg zurück haben, falls etwas schiefgeht.
Beide Migrationsskripte benötigen einen funktionierenden Paketmanager, um die neuen Pakete herunterzuladen. Auf einem CentOS-8-System, das das Ende seines Lebenszyklus erreicht hat, sind die Repositories nicht mehr erreichbar. Wenden Sie daher zuerst die im nächsten Abschnitt beschriebene vorübergehende Lösung an und führen Sie anschließend die Migration durch.
Migration zu AlmaLinux 8:
curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh bash almalinux-deploy.sh

Migration zu Rocky Linux 8:
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh bash migrate2rocky.sh -r

Nachdem das Skript abgeschlossen ist, starten Sie den Server neu und bestätigen Sie das neue System mit:
cat /etc/os-release dnf repolist


Falls der Server nicht in place migriert werden kann oder Sie lieber neu beginnen möchten, richten Sie einen neuen VPS mit bereits installiertem AlmaLinux oder Rocky Linux ein und übertragen Sie Ihre Daten dorthin. INTROSERV bietet Linux-VPS mit diesen Distributionen bereits bei der Bestellung an.
Vorübergehende Lösung: Repositories auf das Archiv umleiten
Verwenden Sie dies nur, wenn das System für kurze Zeit wieder funktionieren muss, zum Beispiel um vor der Migration ein letztes Backup zu erstellen, oder um eine nicht kritische Maschine bis zum Abschluss der Migration am Laufen zu halten. Dadurch wird CentOS 8 nicht wieder unterstützt, und es kommen keine Updates zurück.
Bevor Sie die folgenden Befehle ausführen, prüfen Sie die genaue Version Ihrer Installation mit cat /etc/centos-release. Dieser Artikel verwendet 8.5.2111 als Beispiel. Ersetzen Sie dies durch die auf Ihrem System gemeldete Version. Wenn Sie die falsche archivierte Version angeben, kann DNF 404-Fehler zurückgeben, da dieses Verzeichnis für Ihre Installation nicht existiert.

Die folgenden Befehle deaktivieren die nicht mehr funktionierende Mirror-Liste und leiten die Repository-Dateien stattdessen auf den Archivserver vault.centos.org um:
cd /etc/yum.repos.d/ sed -i 's/^mirrorlist/#mirrorlist/g' CentOS-* sed -i 's|^#baseurl=.*mirror.centos.org|baseurl=https://vault.centos.org|g' CentOS-* sed -i 's|/$contentdir/$releasever/|/8.5.2111/|g' CentOS-*
Im Gegensatz zu den aktiven Repositories ist das Archiv unter festen Release-Verzeichnissen organisiert, zum Beispiel 8.5.2111. Dadurch verweist der Standardpfad $releasever nicht mehr auf gültige Inhalte und muss durch die genaue archivierte Version ersetzt werden. Dies gilt für alle drei Standard-Repository-Dateien, AppStream, BaseOS und Extras, nicht nur für AppStream.
Überprüfen Sie nach Ausführung der obigen Befehle jede Repository-Datei einzeln, anstatt der Sammelbearbeitung blind zu vertrauen, da sich bei einem sed-Befehl über drei Dateien leicht ein falsches Zeichen oder ein falsches Trennzeichen unbemerkt einschleichen kann.
Prüfen Sie die AppStream-Datei:
cat CentOS-Linux-AppStream.repo
Die baseurl-Zeile sollte genau wie folgt lauten, wobei das Release-Verzeichnis Ihrer eigenen Version entspricht:
baseurl=https://vault.centos.org/8.5.2111/AppStream/x86_64/os/

Prüfen Sie die BaseOS-Datei auf die gleiche Weise:
cat CentOS-Linux-BaseOS.repo
Und die Extras-Datei:
cat CentOS-Linux-Extras.repo
Sobald alle drei Dateien bestätigt sind, leeren Sie den Cache und erstellen Sie ihn neu:
dnf clean all dnf makecache dnf repolist

Wenn ein Repository korrekt repariert wurde, lädt es nun seine Metadaten fehlerfrei herunter. Wenn eine Datei noch einen Tippfehler enthält, meldet dnf das jeweils fehlgeschlagene Repository, sodass Sie leicht zurückgehen und genau diese Datei überprüfen können.
Das Archiv enthält die letzten vor dem Ende des Lebenszyklus veröffentlichten Pakete. Sie erhalten keine neueren Versionen oder Sicherheitspatches mehr. Betrachten Sie dies als Möglichkeit, das System bis zur Migration erreichbar zu halten, nicht als dauerhaften Zustand.
Um zu bestätigen, dass Pakete korrekt installiert werden und nicht nur die Metadaten geladen werden, testen Sie mit einem beliebigen kleinen Paket:
dnf install -y wget


Sobald dies erfolgreich ist, führen Sie das eigentliche Update aus:
dnf update -y
Fazit
Der AppStream-Metadatenfehler unter CentOS 8 ist ein Zeichen dafür, dass die Distribution das Ende ihres Lebenszyklus erreicht hat. Die einzige langfristige Lösung besteht darin, idealerweise nach einem vollständigen Backup zu einer unterstützten, binärkompatiblen Distribution wie AlmaLinux oder Rocky Linux zu migrieren. Der Workaround über vault.centos.org bleibt nützlich, jedoch nur als kurzfristige Brücke, um den Server lange genug lauffähig zu halten, bis Sie sicher von CentOS 8 wegwechseln.