解决 CentOS 镜像源解析错误及相关问题
周五下午,正准备在 CentOS 服务器上装个工具,随手一敲
yum install,终端直接甩了一句冷冰冰的报错回来。相信不少运维同学对这个场景都不陌生——明明昨天还好好的,今天突然就不行了。
那个让人头疼的报错
执行 yum 命令时,终端弹出了这么一行:
注意: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误”
翻译成人话就是:系统找不到 CentOS 官方镜像列表的服务器地址了。
为什么会这样?原因其实不复杂,无外乎这几种情况:
- 网络连接本身出了问题
- DNS 解析挂了
- CentOS 官方镜像服务器暂时抽风
- 本地 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
导入之后,后续的安装和更新就不会再弹这个警告了。
如果换源也不管用
有时候问题并不出在源上,可能是更底层的网络配置有问题。这时候可以试试:
- 检查网络连接——先 ping 一下外网,确认服务器能正常上网
- 临时使用其他 DNS 服务器——比如在
/etc/resolv.conf里加上nameserver 8.8.8.8 - 编辑 /etc/hosts 文件,手动添加 mirrorlist.centos.org 的 IP 地址
写在最后
回头来看,这其实是个很典型的运维小问题,但第一次遇到的时候确实容易让人摸不着头脑。几个关键点值得记住:
- 换源之前一定要备份,养成好习惯
- 选择地理位置近的镜像源,下载速度会快很多
- 换源后记得处理 GPG 密钥,不然每次安装都会弹警告
- 导入密钥时确认来源可信——毕竟这关系到软件包的安全验证
大多数情况下,换源加导入密钥就能彻底解决 Could not resolve host: mirrorlist.centos.org 这个问题。如果还是不行,那就得往网络层面深挖了。