Centos 8 使用 yum 报错 Error: Cannot prepare internal mirrorlist: No URLs in mirrorlist

参考链接:

问题场景

今天给老笔记本装了个 Centos 8 系统,想着搭建个 K8S 集群玩玩。等系统装完了后,常规第一步操作:更新 yum 源。结果打脸了:

sudo yum update

报错信息如下:

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

错误:下载 'appstream' 仓库的元数据失败,无法准备内部镜像列表: mirrorlist 中无 url

错误信息说的也很清楚,但是打开 CentOS-Linux-AppStream.repo 文件会发现里面有 URL 呀,只不过默认的是 Centos 官方的。

[appstream]
name=CentOS Linux $releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

原因

官方不能正常访问也挺正常的,然后就考虑换阿里提供的 Centos 镜像源: 阿里云 Centos 源,然后就看到一句话:

通知: CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。

然后通过 Google 就找到了官方的公告: https://www.centos.org/centos-linux-eol/ , 主要就是 CentOS Linux 8 将于 2021 年 12 月 31 日达到生命周期结束 (EOL),2022年1月31日,CentOS 团队将移除 CentOS 8 的所有包,并移至 vault.centos.org,以便永久存档。

解决方案

操作都比较简单,只不过要使用 sed 命令处理,又是一个强大的文件批处理命令。

使用官方镜像(不推荐)

如果网络环境较好,还想使用官方的镜像的话,可以用存档的地址 vault.centos.org 去替换 mirror.centos.org

sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*

执行完成后,再次执行:

# 可以先清理缓存,然后生成新的缓存
sudo yum clean all && yum makecache

# 或者直接 yum update,
sudo yum update

更换为阿里云镜像

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

sed -i -e "s|mirrors.cloud.aliyuncs.com|mirrors.aliyun.com|g " /etc/yum.repos.d/CentOS-*
sed -i -e "s|releasever|releasever-stream|g" /etc/yum.repos.d/CentOS-*

执行完成后,再次执行:

# 可以先清理缓存,然后生成新的缓存
sudo yum clean all && yum makecache

# 或者直接 yum update,
sudo yum update

更换为 Centos 7

Centos 8 都停止维护了,还不如继续用 Centos 7,至少 Centos 7 是在 2024年6月30日 停止维护更新。

更换为 Rocky Linux (推荐)

2020年12月8日,Red Hat公司宣布将停止开发CentOS(一个可用于生产环境的Red Hat Enterprise Linux下游版本)。作为替代,Red Hat 采用该操作系统较新的上游开发版本——称为 "CentOS Stream"。作为回应,CentOS 的最初创始人格雷戈里·库尔泽(Gregory Kurtzer) 通过 CentOS 网站上的评论宣布,他将再次启动一个项目以实现 CentOS 的最初目标。而之所以命名为Rocky Linux,是为了向早期 CentOS 的联合创始人洛基·麦高(Rocky McGaugh) 致敬。截止到12月12日,Rocky Linux 的代码库已经成为 GitHub 上最热门的代码库之一。

这个系统其实就是 Centos 开发团队在 Red Hat 公司宣布将停止开发 CentOS后出的,原汁原味的 CentOS。目前我已经慢慢的将原有 Centos 转向了 Rocky Linux。目前也正在参与 Rocky 的中文翻译工作,虽然不是系统开发人员,但是至少能尽一份力量。

Rocky Linux 官网:https://rockylinux.org/

发表评论

您的电子邮箱地址不会被公开。