Comment corriger l'erreur de métadonnées du dépôt AppStream sur CentOS 8
Introduction
Lorsque vous exécutez une mise à jour ou essayez d'installer un paquet sur CentOS 8, le gestionnaire de paquets peut s'arrêter avec l'erreur suivante :
Failed to load metadata for 'AppStream' repo: Cannot prepare internal mirror list: No URLs in mirror list.
Il ne s'agit ni d'un problème réseau ni d'un problème temporaire de miroir. C'est le résultat attendu du fait que CentOS 8 a atteint la fin de sa vie. Cet article explique pourquoi cette erreur se produit, quelle est la solution correcte à long terme, et comment remettre temporairement le système en ligne si vous devez encore y accéder.

Pourquoi cette erreur se produit
CentOS Linux 8 a atteint la fin de sa vie le 31 décembre 2021. Après cette date, le service de liste de miroirs pour CentOS Linux 8 a été retiré et les paquets ont été déplacés vers le serveur d'archives vault.centos.org.
Les fichiers de dépôt du système pointent toujours vers mirrorlist.centos.org. Comme ce service ne renvoie plus aucune URL, la liste de miroirs revient vide, et le gestionnaire de paquets n'a plus d'adresse à partir de laquelle télécharger les métadonnées. C'est le message que vous voyez.
Les paquets n'ont pas été supprimés. Ils ont été déplacés vers un serveur d'archives, vault.centos.org. C'est ce qui rend possible la solution temporaire décrite ci-dessous.
Solution recommandée : migrer vers AlmaLinux ou Rocky Linux
Étant donné que CentOS 8 ne reçoit plus aucune mise à jour, y compris de sécurité, le maintenir en production représente un risque. La solution correcte consiste à passer à une distribution compatible au niveau binaire avec le système que vous exploitez déjà.
AlmaLinux et Rocky Linux sont des reconstructions gratuites de Red Hat Enterprise Linux, prises en charge par la communauté. Elles sont conçues comme des remplacements directs de CentOS, de sorte que les logiciels et la configuration existants continuent de fonctionner sans modification dans la plupart des cas. Les deux projets fournissent un script de migration sur place qui convertit CentOS 8 sans réinstaller le serveur.
Effectuez toujours une sauvegarde complète ou un instantané avant de migrer. Une conversion sur place modifie des paquets système essentiels, et il est préférable de disposer d'un moyen de revenir en arrière en cas de problème.
Les deux scripts de migration nécessitent un gestionnaire de paquets fonctionnel pour télécharger les nouveaux paquets. Sur un système CentOS 8 arrivé en fin de vie, les dépôts ne sont plus accessibles ; appliquez donc d'abord la solution temporaire de la section suivante, puis exécutez la migration.
Pour migrer vers AlmaLinux 8 :
curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh bash almalinux-deploy.sh

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

Une fois le script terminé, redémarrez le serveur et confirmez le nouveau système avec :
cat /etc/os-release dnf repolist


Si le serveur ne peut pas être migré sur place, ou si vous préférez repartir d'une installation propre, déployez un nouveau VPS avec AlmaLinux ou Rocky Linux déjà installé et transférez-y vos données. INTROSERV propose des VPS Linux avec ces distributions disponibles dès la commande.
Solution temporaire : rediriger les dépôts vers les archives
N'utilisez cette méthode que lorsque vous avez besoin que le système fonctionne à nouveau pour une courte durée, par exemple pour effectuer une dernière sauvegarde avant la migration, ou pour maintenir en fonctionnement une machine non critique jusqu'à ce que la migration puisse être terminée. Cela ne rend pas CentOS 8 à nouveau pris en charge et ne restaure pas les mises à jour.
Avant d'exécuter les commandes ci-dessous, vérifiez la version exacte de votre installation avec cat /etc/centos-release. Cet article utilise 8.5.2111 à titre d'exemple. Remplacez-le par la version indiquée sur votre propre système. Si vous indiquez une version archivée incorrecte, DNF peut renvoyer des erreurs 404, car ce répertoire n'existe pas pour votre installation.

Les commandes ci-dessous désactivent la liste de miroirs devenue inutilisable et redirigent les fichiers de dépôt vers le serveur d'archives vault.centos.org :
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-*
Contrairement aux dépôts actifs, les archives sont organisées selon des répertoires de version fixes, par exemple 8.5.2111. Par conséquent, le chemin par défaut $releasever ne pointe plus vers un contenu valide et doit être remplacé par la version archivée exacte. Cela s'applique aux trois fichiers de dépôt par défaut, AppStream, BaseOS et Extras, et pas seulement à AppStream.
Après avoir exécuté les commandes ci-dessus, vérifiez chaque fichier de dépôt individuellement plutôt que de faire aveuglément confiance à la modification groupée, car un sed appliqué en une seule fois sur trois fichiers est un endroit facile pour qu'un caractère erroné ou un séparateur incorrect passe inaperçu.
Vérifiez le fichier AppStream :
cat CentOS-Linux-AppStream.repo
La ligne baseurl doit se lire exactement comme suit, le répertoire de version correspondant à votre propre version :
baseurl=https://vault.centos.org/8.5.2111/AppStream/x86_64/os/

Vérifiez le fichier BaseOS de la même manière :
cat CentOS-Linux-BaseOS.repo
Et le fichier Extras :
cat CentOS-Linux-Extras.repo
Une fois les trois fichiers confirmés, videz le cache et reconstruisez-le :
dnf clean all dnf makecache dnf repolist

Si un dépôt a été correctement corrigé, il télécharge désormais ses métadonnées sans erreur. Si un fichier contient encore une faute de frappe, dnf signale le dépôt spécifique qui a échoué, ce qui permet de revenir facilement en arrière et de vérifier uniquement ce fichier.
Les archives contiennent les derniers paquets publiés avant la fin de vie. Vous ne recevrez plus de versions plus récentes ni de correctifs de sécurité. Considérez cela comme un moyen de garder le système accessible jusqu'à la migration, et non comme un état permanent.
Pour confirmer que les paquets s'installent correctement, et pas seulement que les métadonnées se chargent, testez avec un petit paquet quelconque :
dnf install -y wget


Une fois cette opération réussie, exécutez la mise à jour proprement dite :
dnf update -y
Conclusion
L'erreur de métadonnées AppStream sur CentOS 8 est le signe que la distribution a atteint la fin de sa vie. La seule solution à long terme consiste à migrer vers une distribution prise en charge et compatible au niveau binaire, telle qu'AlmaLinux ou Rocky Linux, idéalement après une sauvegarde complète. La solution de contournement via vault.centos.org reste utile, mais uniquement comme un pont temporaire permettant de maintenir le serveur en fonctionnement suffisamment longtemps pour quitter CentOS 8 en toute sécurité.