cd ..

解决 CentOS 镜像源解析错误及相关问题

周五下午,正准备在 CentOS 服务器上装个工具,随手一敲 yum install,终端直接甩了一句冷冰冰的报错回来。相信不少运维同学对这个场景都不陌生——明明昨天还好好的,今天突然就不行了。

那个让人头疼的报错

执行 yum 命令时,终端弹出了这么一行:

注意: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”

翻译成人话就是:系统找不到 CentOS 官方镜像列表的服务器地址了。

为什么会这样?原因其实不复杂,无外乎这几种情况:

  1. 网络连接本身出了问题
  2. DNS 解析挂了
  3. CentOS 官方镜像服务器暂时抽风
  4. 本地 yum 源配置文件过期或损坏

其中最常见的,尤其是 CentOS 7 逐渐走向 EOL 之后,就是官方源不再维护导致的域名解析失败。这时候最靠谱的办法,就是把源换成国内镜像。

换源三步走

思路很简单:备份旧配置、下载新配置、刷新缓存。

第一步,先把原来的 repo 文件备份好,万一新源有问题还能回滚:

sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

第二步,从阿里云镜像下载对应版本的 repo 文件:

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

注意: 根据您的 CentOS 版本选择适当的 repo 文件。

第三步,清除旧缓存并重新生成:

sudo yum clean all
sudo yum makecache

到这里如果一切顺利,再跑一次 update 应该就没问题了:

sudo yum update

别急,还有个 GPG 密钥的坑

换完源以为万事大吉了?不一定。第一次用新源安装或更新软件包时,你很可能会看到这样的警告:

警告: /var/cache/yum/x86_64/7/updates/packages/device-mapper-event-1.02.170-6.el7_9.5.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 从 http://mirrors.aliyun.com/centos/RPM-GPG-KEY-centos7 检索密钥

这是因为新源使用的 GPG 签名密钥和你本地存储的不一样。系统在说:“这个包的签名我没见过,你确定要装吗?”

解决办法很简单,手动导入阿里云的 GPG 密钥即可:

sudo rpm --import https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

导入之后,后续的安装和更新就不会再弹这个警告了。

如果换源也不管用

有时候问题并不出在源上,可能是更底层的网络配置有问题。这时候可以试试:

  1. 检查网络连接——先 ping 一下外网,确认服务器能正常上网
  2. 临时使用其他 DNS 服务器——比如在 /etc/resolv.conf 里加上 nameserver 8.8.8.8
  3. 编辑 /etc/hosts 文件,手动添加 mirrorlist.centos.org 的 IP 地址

写在最后

回头来看,这其实是个很典型的运维小问题,但第一次遇到的时候确实容易让人摸不着头脑。几个关键点值得记住:

  • 换源之前一定要备份,养成好习惯
  • 选择地理位置近的镜像源,下载速度会快很多
  • 换源后记得处理 GPG 密钥,不然每次安装都会弹警告
  • 导入密钥时确认来源可信——毕竟这关系到软件包的安全验证

大多数情况下,换源加导入密钥就能彻底解决 Could not resolve host: mirrorlist.centos.org 这个问题。如果还是不行,那就得往网络层面深挖了。