CentOS8于2021年12月31日提前EOL,Linux社区也不再维护此版本,各大提供dnf/yum源的厂商也都按照官方要求把镜像移动,导致dnf/yum使用中报错,所以我们需要重新配置repo。
但是阿里官方也停止了对如何repo配置的文档更新,导致能下载CentOS-Base.repo,却无法正常dnf makecache,经过我自已一段时间的研究终于解决了问题。
方法如下:
1、备份旧repo配置:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载阿里云源repo配置文件:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
3、依据cenos社区官方发布的说明,使用sed命令替换相应的repo文件参数(注销mirrorlist选项,开启baseurl选项):
minorver=8.5.2111
sudo sed -e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|^#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/|baseurl=http://mirrors.aliyun.com/centos-vault/$minorver/extras/$basearch/os/|g" \
-i.bak \
/etc/yum.repos.d/CentOS-Linux-AppStream.repo
minorver=8.5.2111
sudo sed -e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|^#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/|baseurl=http://mirrors.aliyun.com/centos-vault/$minorver/extras/$basearch/os/|g" \
-i.bak \
/etc/yum.repos.d/CentOS-Linux-BaseOS.repo
(注释:以上2段命令替换的是CentOS-Linux-AppStream.repo和CentOS-Linux-BaseOS.repo文件中的参数,如果dnf makecache时其它repo文件报错,按照这2个命令对比参数自行修改参数或直接修改报错的repo文件即可。)
成功替换后的2个文件如下图所示:
4、清理、重生成YUM源:
dnf clean all
dnf makecache
配置完毕(centos8开始dnf全面替代yum并兼容)。
5、补充一下如何直接修改repo文件:
1)、首先,打开CentOS-Base.repo,复制阿里云提供的三段baseurl=XXXXXXX:
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/
http://mirrors.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/
http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/
2)、其次,打开dnf makecache时报错的对应的repo文件:
这里看到报错的是appstream,所以要修改CentOS-Linux-AppStream.repo文件,打开它,注销掉“mirrorlist”,添加阿里源:
哪个repo报错就反复如上这样编辑它,直到无错为成,成功生成dnf/yum缓存: