在维护一些老服务器时,CentOS 7 依然很常见。
比较典型的问题就是执行:
yum update
或者:
yum install wget
突然开始出现 Repo 无法访问、镜像地址失效、无法下载 metadata 等问题。
如果这台服务器因为业务原因暂时还不能升级系统,可以先检查 YUM Repo,并将失效的软件源调整到仍可访问的镜像或归档源。
需要先说明:CentOS 7 已经不再是正常维护中的系统。
CentOS Vault 保存的是历史版本的软件包快照,并不是持续更新的软件仓库,也不会继续获得新的 CentOS 7 安全更新。
因此本文更适合:
老服务器临时恢复 YUM、安装维护工具、迁移业务前处理旧环境。
不建议为了继续长期运行 CentOS 7,而把换源当成系统安全更新的替代方案。
一、先检查当前 CentOS 版本
换源以前先确认系统:
cat /etc/centos-release
或者:
cat /etc/os-release
如果确实是 CentOS Linux 7,再继续下面的操作。
同时查看当前 Repo:
ls -lh /etc/yum.repos.d/
还可以执行:
yum repolist
如果已经出现仓库连接错误,这一步的报错信息也值得保留下来,后面可以用来判断究竟是 DNS、网络还是 Repo 本身的问题。
二、确认 wget 是否已经安装
原始操作记录第一步使用:
yum install -y wget
这也是你原文实际使用的命令。
如果已经安装,会提示软件包存在;如果没有,则会尝试通过当前 YUM 源安装。
这里建议保留原文第 1 页的 yum install -y wget 实际截图。
不过有一种情况要注意:
如果当前 YUM 源已经彻底失效,那么:
yum install -y wget
本身也可能失败。
这种情况下不必卡在 wget 上,如果系统已经有 curl,后面直接用 curl 下载 Repo 文件即可。
检查:
curl --version
三、备份原来的 CentOS YUM 源
修改 Repo 之前先备份。
进入目录:
cd /etc/yum.repos.d/
检查文件:
ls -lh
然后备份:
cp -a CentOS-Base.repo CentOS-Base.repo.bak
也可以直接:
mv CentOS-Base.repo CentOS-Base.repo.backup
阿里云目前的 CentOS 镜像帮助页面同样建议在替换 Repo 之前先备份原文件。
这里和原始文档有一个小区别。
原文写的是:
cp /CentOS-Base.repo /CentOS-Base-repo.bak
而前一步已经进入 /etc/yum.repos.d/。
为了避免路径问题,我更建议使用:
cp -a CentOS-Base.repo CentOS-Base.repo.bak
或者写完整路径:
cp -a /etc/yum.repos.d/CentOS-Base.repo
/etc/yum.repos.d/CentOS-Base.repo.bak
这里可以继续使用原文章里的备份 Repo 截图,但正文采用修正后的命令。
四、下载 CentOS 7 阿里云 Repo
阿里云当前的 CentOS 镜像帮助页面仍然提供 CentOS 7 Repo 下载方式。
使用 wget:
wget -O /etc/yum.repos.d/CentOS-Base.repo
https://mirrors.aliyun.com/repo/Centos-7.repo
如果没有 wget,可以使用:
curl -o /etc/yum.repos.d/CentOS-Base.repo
https://mirrors.aliyun.com/repo/Centos-7.repo
原来的操作记录使用的是:
wget http://mirrors.aliyun.com/repo/Centos-7.repo
下载完成以后,再通过:
mv Centos-7.repo CentOS-Base.repo
进行替换。
现在直接使用 -O 写入:
/etc/yum.repos.d/CentOS-Base.repo
步骤会更少。
而且这里建议使用 HTTPS。
原文第 1 页的 wget 下载截图仍然可以保留,作为实际操作记录。
五、CentOS 7 普通源不可用时怎么办?
这是现在维护 CentOS 7 最值得注意的地方。
如果更换 Repo 后依然遇到:
Could not resolve host
Cannot find a valid baseurl for repo
Cannot retrieve metalink
Failed to download metadata
不要一直重复:
yum clean all
yum makecache
首先需要确认到底是什么原因。
检查网络:
ping -c 4 223.5.5.5
检查 DNS:
ping -c 4 mirrors.aliyun.com
如果 IP 能通、域名不通,更像 DNS 问题。
如果网络和 DNS 都正常,但 CentOS 7 Repo 仍不可用,就要考虑使用 CentOS Vault 归档源。
CentOS 官方仍保留 7.9.2009 的 Vault,例如 Base、Updates 等历史仓库内容;不过官方明确提醒,这是历史快照,而不是继续更新的软件树。
所以:
Vault 可以解决“旧软件包还能不能下载”
但不能解决:
CentOS 7 还能不能继续获得新的安全补丁
这是两个完全不同的问题。
六、清理旧 YUM 缓存
换完 Repo 后先清理旧缓存:
yum clean all
如果想把已有缓存目录一起清掉,可以检查:
du -sh /var/cache/yum
然后重新生成缓存。
你原始操作文档也采用了:
yum clean all
来清理旧缓存。
这里直接保留原文第一页 yum clean all 的终端截图。
七、重新生成 YUM 缓存
执行:
yum makecache
如果 Repo 正常,应该能够看到 Base、Updates、Extras 等仓库开始读取 metadata。
然后检查:
yum repolist
重点不是一定要看到某个固定的软件包数量,而是确认:
Repo 能正常访问
没有大量 Failed
能够读取软件包元数据
你上传的原始文档第二页也记录了 yum makecache 的实际执行过程。
这里建议直接放原图第二页中的 yum makecache 截图。
八、测试 YUM 是否恢复正常
可以先测试查询:
yum list installed | head
再尝试:
yum check-update
如果需要更新:
yum update
你的原始操作最后一步也是:
yum makecache
yum update
这里继续放原来的 yum update 截图。
不过在 2026 年的 CentOS 7 环境中需要再次提醒:
yum update能执行成功,不代表服务器已经获得当前最新安全补丁。
因为归档仓库提供的是 CentOS 7 生命周期结束前留下的软件包。
九、出现 Cannot find a valid baseurl 怎么排查?
这是 CentOS 7 换源时很常见的报错。
例如:
Cannot find a valid baseurl for repo: base/7/x86_64
先不要急着修改 Repo。
检查 IP:
ip addr
检查默认路由:
ip route
检查公网:
ping -c 4 223.5.5.5
检查 DNS:
cat /etc/resolv.conf
然后:
ping -c 4 mirrors.aliyun.com
如果:
223.5.5.5 能通
mirrors.aliyun.com 不通
优先检查 DNS。
如果两者都不能访问,则应该先处理服务器网络,而不是继续换 YUM 源。
十、换源以后怎么确认到底使用了哪个仓库?
可以执行:
yum repolist -v
或者:
grep -RniE '^(baseurl|mirrorlist|metalink)'
/etc/yum.repos.d/
这样可以快速发现当前 Repo 到底指向:
mirrors.aliyun.com
还是:
vault.centos.org
或者仍然残留其他已经失效的地址。
这一步在排查老服务器时很有用。
有些机器并不是只有一个:
CentOS-Base.repo
还可能安装了:
epel.repo
docker-ce.repo
mysql-community.repo
remi.repo
即使 CentOS Base 已经修复,其中某个第三方 Repo 失效,也可能导致:
yum update
继续报错。
所以遇到问题时不要只检查一个文件。
十一、临时禁用出问题的软件源
如果确认只是某一个第三方 Repo 出问题,不一定需要删除它。
先查看:
yum repolist all
例如某个仓库暂时不可用,可以针对单次命令禁用:
yum --disablerepo=仓库名称 update
这样比直接删除整个 /etc/yum.repos.d/ 更稳妥。
网上有些教程会让用户直接执行:
rm -rf /etc/yum.repos.d/*
不建议这么做。
这里可能包含 Docker、MySQL、EPEL 或其他业务需要的软件源配置。
十二、CentOS 7 服务器还能继续使用吗?
能启动、能安装软件和“适合继续作为长期公网生产系统”是两回事。
CentOS Vault 官方自己就说明:
Vault 是旧版本软件树的快照,不会继续向这些归档树加入安全更新。
因此,如果只是:
旧业务临时运行
↓
恢复 YUM
↓
安装迁移工具
↓
备份数据
↓
迁移新服务器
使用 Vault 很有意义。
但如果是准备重新部署一台新的 Web、数据库或者 VPS 生产服务器,就没有太大必要再从 CentOS 7 开始。
对于仍然保留 CentOS 使用习惯的环境,可以考虑迁移到当前仍受支持的 EL 系发行版;迁移之前则应该先测试应用、PHP、数据库、OpenSSL 和其他依赖的兼容性,而不是直接跨大版本升级生产机。
常用命令整理
确认系统:
cat /etc/centos-release
查看 Repo:
ls -lh /etc/yum.repos.d/
备份:
cp -a /etc/yum.repos.d/CentOS-Base.repo
/etc/yum.repos.d/CentOS-Base.repo.bak
下载阿里云 CentOS 7 Repo:
curl -o /etc/yum.repos.d/CentOS-Base.repo
https://mirrors.aliyun.com/repo/Centos-7.repo
阿里云当前镜像帮助页面仍提供这一 CentOS 7 Repo 配置方法。
清理缓存:
yum clean all
重新建立:
yum makecache
查看仓库:
yum repolist
详细检查:
yum repolist -v
测试更新:
yum check-update
需要更新时:
yum update
总结
CentOS 7 出现 YUM 源失效时,处理思路其实不用复杂化。
先确认:
系统版本
↓
网络 / DNS
↓
当前 Repo 地址
↓
备份 Repo
↓
更换可访问的软件源
↓
yum clean all
↓
yum makecache
↓
yum repolist
如果服务器只是因为旧镜像地址下线导致 YUM 无法工作,更换 Repo 或切换 Vault 可以恢复旧软件包访问。
但是要区分:
“YUM 恢复正常”不等于“CentOS 7 又恢复安全更新”。
对于必须暂时保留的老业务,可以把恢复 YUM 当成维护和迁移手段;对于新服务器,则更适合直接选择仍处于支持周期内的系统。

评论列表 (0条):
加载更多评论 Loading...