一、问题背景
使用 yum 时报错,yum list 或 yum 安装任何东西都报错
CentOS-8 - Base - mirrors.aliyun.com 299 B/s | 2.3 kB 00:07
Errors during downloading metadata for repository 'base':
- Status code: 404 for https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/repodata/repomd.xml (IP: 39.96.118.194)
- Curl error (7): Couldn't connect to server for http://mirrors.aliyuncs.com/centos/8/BaseOS/x86_64/os/repodata/repomd.xml [Failed to connect to mirrors.aliyuncs.com port 80: Connection timed out]
- Status code: 404 for http://mirrors.cloud.aliyuncs.com/centos/8/BaseOS/x86_64/os/repodata/repomd.xml (IP: 100.100.2.148)
Error: Failed to download metadata for repo 'base': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
关键信息:Cannot download repodata/repomd.xml: All mirrors were tried
二、解决方案
阿里云官方文档:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11CyvQPT
1、原因分析:
centos8项目官方已于2021年底停止,相关源已无法使用,所以网上22年前的换源教程都已无法使用。
2、如何解决:
(1)进入配置文件内,删除所有的.repo文件(也可以备份)
# 进入配置文件夹
cd /etc/yum.repos.d/
# 删除旧的配置文件
rm *.repo
# 输入“y”回车确认
(2)ls 确保该目录下的.repo文件已完全删除
注意必须全部删除,或全部移除备份到别处,否则就算你切换的 yum 源,也还是会报上面的错
(3)下载可以用的.repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 如果你没有安装wget,也可以用下面命令:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
(4)清除缓存,及运行 yum makecache 生成缓存
yum clean all
yum makecache
3、如果你是非阿里云ECS用户,可能回会出现 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 的信息,不过不影响使用。你可以修改相关的配置:
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
三、具体原因分析
可以看这篇文章:https://blog.csdn.net/weixin_42325823/article/details/122839554
主要就是镜像库丢了,正常的是有这个 repomd.xml 文件的,比如这个 /centos/8-stream/
可以到《阿里云开源镜像目录》https://mirrors.aliyun.com/centos/ 查看各版本情况
但是这个 centos/8/ 就没有了
然后我把代表8的这个 releasever 改成 了 releasever-stream。据说是可以,但是我没有试