博客 / Linux/ 解决 Linode 主机 yum 安装出现 Error: Cannot retrieve repository metadata (repomd.xml) 错误

解决 Linode 主机 yum 安装出现 Error: Cannot retrieve repository metadata (repomd.xml) 错误

解决 Linode 主机 yum 安装出现 Error: Cannot retrieve repository metadata (repomd.xml) 错误

问题现象

在 Linode 主机上使用 yum 安装软件包时,出现无法获取仓库元数据(repomd.xml)的错误。错误信息通常表现为无法解析 CentOS 官方镜像或 Linode 内部镜像的域名,例如:

Loaded plugins: fastestmirror
Setting up Install Process
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=stock error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=extras&infra=stock error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=updates&infra=stock error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
http://mirrors.linode.com/centos/6/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.linode.com'"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

问题原因

此错误通常由以下一个或多个原因导致:

  • DNS 解析失败:系统无法解析 mirrorlist.centos.org 或 mirrors.linode.com 等域名。
  • 网络配置问题:防火墙(如 iptables)规则可能阻止了 DNS 查询或 HTTP/HTTPS 流量。
  • 系统 DNS 设置错误:/etc/resolv.conf 文件中的 DNS 服务器配置不正确或不可用。
  • CentOS 6 生命周期结束:原文示例为 CentOS 6,该系统已于 2020 年 11 月结束生命周期(EOL),官方镜像已移至 vault.centos.org,可能导致默认镜像源失效。

解决方案

1. 检查并修复 DNS 配置

首先测试域名解析是否正常:

ping -c 4 google.com
nslookup mirrorlist.centos.org

如果无法解析,需要检查并编辑 /etc/resolv.conf 文件,确保配置了有效的 DNS 服务器。对于 Linode 主机,可以添加以下公共 DNS:

nameserver 8.8.8.8
nameserver 8.8.4.4

2. 检查防火墙设置

临时停止 iptables 防火墙以确认是否为防火墙规则导致:

service iptables stop  # CentOS 6
# 或
systemctl stop firewalld  # CentOS 7/8

如果停止防火墙后 yum 工作正常,则需要调整防火墙规则,放行 DNS(端口 53)和 HTTP/HTTPS(端口 80、443)的出站流量。

3. 更新或替换镜像源(针对旧系统)

对于已结束生命周期的 CentOS 版本(如 CentOS 6),需要将基础镜像源替换为归档地址(vault.centos.org)。编辑对应的 .repo 文件(如 /etc/yum.repos.d/CentOS-Base.repo),将 mirrorlistbaseurl 中的 mirror.centos.org 替换为 vault.centos.org

例如,将:

baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

改为:

baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/

4. 清理 yum 缓存并重试

执行以下命令清理缓存并重新尝试:

yum clean all
yum makecache

总结

遇到“Cannot retrieve repository metadata”错误时,应首先排查 DNS 解析和网络连通性问题。对于旧版操作系统,还需考虑镜像源是否已失效并相应更新。建议将系统升级至受支持的版本(如 CentOS 7/8 或 AlmaLinux/Rocky Linux),以获得持续的安全更新和软件支持。

发表评论

您的邮箱不会公开。必填项已用 * 标注。