CentOS yum Error: Failed to download metadata for repo 'appstream'问题解决

本文介绍CentOS 8在使用yum update更新时,遭遇报错:Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist 的解决方法。

CentOS yum Error: Failed to download metadata for repo 'appstream'问题解决

1 问题描述

在CentOS8中,执行yum update更新时,遭遇报错:

1
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

根据提示,显示mirror list中找不到可用的URL,导致无法获取appstream repo的元信息。

2 解决方法

2.1 相关资料中的解决方法

我查到的资料中,已有的解决方案是通过sed工具批量查询和替换/etc/yum.repos.d/中的软件仓库配置信息。

引用自:https://www.cnblogs.com/EthanWong/p/15932675.html

1
2
3
4
5
6
# 进入yum.repos.d 目录下
cd /etc/yum.repos.d/
# 修改源链接
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
# 要将之前的mirror.centos.org 改成 vault.centos.org
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

上述文章指出,因为CentOs Linux 8 从 2021.10.31 号后已经停止维护,所以之后更新镜像需要通过 vault.centos.org来获取更新。相应的,文中给出的方案就是将/etc/yum.repos.d/中,各个软件仓库配置文件中的mirrorlist字段都注释掉,不采用镜像列表,而是启用baseurl去连接源站,且原站修改为http://vault.centos.org

2.2 本文的解决方法

我认为上述修改软件配置的方案也许可行,但问题的实质是因为:RHEL修改了CentOS的开源方案,将CentOS改为CentOS Stream的形式进行后续迭代。过去的CentOS与RHEL共享核心代码,只是RHEL额外具备一些增值软件和服务。目前的CentOS Stream将作为RHEL的“开发版”,即:开发的新代码先发布到CentOS Stream上进行验证,再合入RHEL。通过Fedora Linux, CentOS Stream这依次两道试验阶段,再合入RHEL,以保障RHEL的高可靠。

CentOS Stream

Continuously delivered distro that tracks just ahead of Red Hat Enterprise Linux (RHEL) development, positioned as a midstream between Fedora Linux and RHEL. For anyone interested in participating and collaborating in the RHEL ecosystem, CentOS Stream is your reliable platform for innovation.

CentOS Linux 8因为这项变更,EOL被改为2021年底,因此2022年开始,CentOS Linux 8的mirrorlist下架,代码停止维护。

因此,该问题解决方法的最佳实践应当是根据官方文档,将已经EOL的CentOS Linux 8迁移到CentOS Stream 8的发行分支上。(或采用其他Linux,如:Debian)。

https://www.centos.org/centos-stream/

1
2
dnf --disablerepo '*' --enablerepo extras swap centos-linux-repos centos-stream-repos
dnf distro-sync

dnf是CentOS 8默认的包管理器。按照上述命令,通过dnf重新配置软件repo并同步数据,即可迁移到CentOS Stream发行分支上。

DNF stands for Dandified YUM is a software package manager for RPM-based Linux distributions. It is used to install, update and remove packages in the CentOS operating system. It is the default package manager of CentOS8.

迁移后的CentOS Stream 8的EOL为May 31st, 2024。