浅析解决CentOS8 yum官方源下线后无法使用问题及具体原因分析

一、问题背景

  使用 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

二、解决方案

  这里其实给大家一个建议,也算是自己的一个心得吧:很多时候我们看到报错,都会习惯性的复制报错信息,然后百度或者谷歌搜索看别人是如何解决的。但是很多时候,问题并不一致,或者说,报错的关键信息复制的不对的话,也很容易就走到岔路上去。很多时候,我建议是好好阅读一下报错信息,了解主要是因为什么报错,然后再去对症下药,有针对性的搜索和过滤更适合的解决方案。

  所以呢,其实我最开始没有认真阅读报错信息,想当然的复制了第一行报错:Errors during downloading metadata for repository 'base',然后去搜索,最后走了很多弯路,试了网上别人的很多种解决方案,都不生效。最后,静下心来,好好阅读了一下报错全部信息,找到了关键报错:Cannot download repodata/repomd.xml,才发现了问题所在。

  所以这里就主要说一下最终解决,其实主要还是官方的问题,详见阿里云官方文档: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/ 就没有了。

  我们可以去看 centos8 的情况 mirrors.aliyun.com/centos/8/re… 就会看到这样的一行提示:This directory (and version of CentOS) is deprecated. 官方都不推荐了,我们肯定就不能用啦。

四、扩展

  其实我们了解到主要原因就是因为 centos8 的镜像库 repomd.xml 文件丢了,但是比如 centos8-stream 是有的,也就是说我们可以把 yum 源的 repo.xml 里代表 8 的这个 releasever 全部改成 releasever-stream,这样也是可以解决问题的。

  如何操作呢?修改CentOS-Base.repo文件内容如下:替换 "releasever/" 为 "releasever-stream/"

[root@mo12-0003 ~]# sed -i 's/releasever\//releasever-stream\//g' /etc/yum.repos.d/CentOS-Base.repo

  然后重置缓存即可

[root@mo12-0003 ~]# yum clean all
[root@mo12-0003 ~]# yum makecache

 

posted @ 2022-05-10 22:31  古兰精  阅读(3238)  评论(1编辑  收藏  举报