「YUM」- 禁用 mirrorlist、metalink 检查

  CREATE BY JENKINSBOT
原文链接:「YUM」- 禁用 mirrorlist、metalink 检查
文章分类:「03.Operating_System_Administration:Package_Management_System:RPM,_YUM_and_DNF:Disable_YUM_Mirrorlist」
文章标识:「0bbbf3bc」

问题描述

当我们使用 YUM 安装应用时,会检查 mirrorlist、metalink 配置,以获取速度最快的第三方镜像站点。但是第三方镜像站点不总是可靠,有时会返回各种错误。

在 CentOS release 6.5 (Final) 中,安装 epel-release 仓库后,执行 yum makecache 命令会产生如下错误:

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

在 CentOS Linux release 7.4 上,执行命令 yum install transmission-cli 产生如下错误:

...
https://mirrors.sonic.net/epel/7/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml does not match metalink for epel
https://dfw.mirror.rackspace.com/epel/7/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml does not match metalink for epel
https://d2lzkl7pfhq30w.cloudfront.net/pub/epel/7/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml does not match metalink for epel
https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml does not match metalink for epel
...

问题原因

这些问题多半是因为第三方镜像站点导致的,比如:站点无法访问;无法取回元信息;数据存在问题

解决办法

官方仓库是可靠的,我们会直接使用官方仓库。需要修改 /etc/yum.repos.d/epel.repo 文件:

# 备份
cp -drv /etc/yum.repos.d /etc/yum.repos.d.backup.$(date '+%Y%m%d')

# 注释 mirrorlist=、metalink= 行,启用 baseurl= 行
for i in $(find /etc/yum.repos.d/ -type f -name '*.repo')
do
	echo "# filename: $i"
	sed -E -i 's/^mirrorlist=/# mirrorlist=/' "$i"
	sed -E -i 's/^metalink=/# metalink=/' "$i"
	sed -E -i 's/^#\s*baseurl=/baseurl=/' "$i"
done

附加说明

如果要单独禁用某给镜像站点,可以使用 [main] 的 exclude 参数,详细参考 man 5 yum.conf 手册。

参考文献