CentOS 7 已于 2024-06-30 EOL(停止维护),官方源 mirrorlist.centos.org 已下线,默认的阿里云源文件 (mirrors.aliyun.com/repo/Centos-7.repo) 仍指向旧地址,会导致 yum makecacheCould not resolve host404

解决方案:切换到阿里云的 Vault 归档仓库(mirrors.aliyun.com/centos-vault/),这是阿里云为 EOL 系统维护的镜像。

1. 备份原 repo

mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/backup/CentOS-Base.repo.bak

2. 写入 Vault 版 repo 文件

cat > /etc/yum.repos.d/CentOS-Base.repo <<'EOF'
[base]
name=CentOS-7 - Base - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-7 - Updates - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-7 - Extras - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7
EOF

💡 7.9.2009 是 CentOS 7 的最终版本号,固定这个版本可以避免 Vault 仓库路径变动导致 yum 失效。如果你想锁到更老的版本(比如 7.6.1810),把上面三处路径里的 7.9.2009 替换即可。

3. 清理缓存并重建

yum clean all
yum makecache

执行完 yum makecache 没有报错,出现 Metadata Cache Created,即表示源切换成功。

4. 验证

# 测试 base 源是否可用
yum repolist

# 期望输出里能看到 base/7 和 extras/7 等条目
# repolist: XXXX
# repo id          repo name                    status
!base/7/x86_64     CentOS-7 - Base              enabled: XXXX
!extras/7/x86_64   CentOS-7 - Extras            enabled: XXX
!updates/7/x86_64  CentOS-7 - Updates           enabled: XXXX

5. 可选:同步 EPEL 源

CentOS 7 的 EPEL 源也迁到了 Vault:

cat > /etc/yum.repos.d/epel.repo <<'EOF'
[epel]
name=Extra Packages for Enterprise Linux 7 - mirrors.aliyun.com
baseurl=https://mirrors.aliyun.com/epel-archive/7/$basearch
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel-archive/RPM-GPG-KEY-EPEL-7
EOF

yum clean all
yum makecache

常见问题

报错 原因 修复
Could not resolve host: mirrorlist.centos.org 还残留老 repo 确认 /etc/yum.repos.d/CentOS-Base.repo 已是 Vault 版本,删掉其他 .repo
404 Not Found 版本号路径错误 7.9.2009 改成 Vault 里实际存在的目录
GPG key retrieval failed gpgkey 路径变了 用本文提供的 RPM-GPG-KEY-CentOS-7 路径
No package xxx available 该包没归档到 Vault 升级到 CentOS Stream / Rocky / AlmaLinux,或自建 yum 仓库

长期建议

Vault 源是短期过渡方案,阿里云不一定永久保留归档目录。生产环境建议:

  1. 升级到 CentOS Stream 8/9 — RHEL 滚动更新分支,持续维护
  2. 迁移到 Rocky Linux 或 AlmaLinux — RHEL 1:1 兼容二进制,社区活跃
  3. 新业务直接上容器化 — 减少对宿主 OS 包管理的依赖

相关阅读