适用于所有 CentOS 7.x 以及 CentOS 8.x / Stream 8 环境
修复完成后可继续安装软件,但请注意:官方不再提供安全更新,生产环境强烈建议迁移至 Rocky Linux / AlmaLinux / RHEL
1. 现象速查
执行 yum install 或 yum update 时出现以下报错:
Could not retrieve mirrorlist http://mirrorlist.centos.org/...
Could not resolve host: mirrorlist.centos.org根本原因是 CentOS 官方已于
- CentOS 8:2021-12-31 EOL
- CentOS 7:2024-06-30 EOL
官方已将mirrorlist.centos.org下线。
2. 修复思路(二选一)
| 方案 | 说明 | 适用场景 |
|---|---|---|
| A. 切换 Vault 归档源 | 使用第三方镜像站保留的历史 RPM 包 | 短期过渡、只想维持现有环境 |
| B. 原地迁移至 Rocky/Alma | 二进制兼容、获得持续更新 | 长期生产、合规需求 |
本文先给出 方案 A 的完整命令;方案 B 迁移脚本见文末附录。
3. 方案 A:一键替换 Vault 源(CentOS 7 示例)
3.1 备份原 repo
sudo mkdir -p /etc/yum.repos.d/bak
sudo mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/bak/3.2 使用阿里云 Vault 源(推荐,国内最快)
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo \
https://mirrors.aliyun.com/repo/Centos-vault-7.repo3.3 可选:同步替换 EPEL 源
sudo curl -o /etc/yum.repos.d/epel.repo \
https://mirrors.aliyun.com/repo/epel-archive-7.repo3.4 重建缓存并验证
sudo yum clean all
sudo yum makecache
sudo yum repolist # 应能列出 base/updates/extras 等
sudo yum install -y wget # 测试安装至此,CentOS 7 即可继续装包。
4. CentOS 8 / Stream 8 专用命令
# 备份
sudo mkdir -p /etc/yum.repos.d/bak
sudo mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/bak/
# 使用清华 Vault 源
sudo tee /etc/yum.repos.d/CentOS-Stream-vault.repo <<'EOF'
[baseos]
name=CentOS Stream 8 - BaseOS
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/8-stream/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
enabled=1
[appstream]
name=CentOS Stream 8 - AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/8-stream/AppStream/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
enabled=1
EOF
sudo yum clean all && sudo yum makecache同样适用于 CentOS Linux 8 的 8.5.2111 归档。
5. 一键脚本(懒人版)
复制整段即可:
#!/bin/bash
# CentOS-7/8 Vault 源一键修复
set -e
if [[ -f /etc/centos-release ]]; then
V=$(grep -oE '[0-9]+\.[0-9]+' /etc/centos-release | head -1)
if [[ $V =~ ^7 ]]; then
curl -o /etc/yum.repos.d/CentOS-Base.repo \
https://mirrors.aliyun.com/repo/Centos-vault-7.repo
curl -o /etc/yum.repos.d/epel.repo \
https://mirrors.aliyun.com/repo/epel-archive-7.repo
elif [[ $V =~ ^8 ]]; then
curl -o /etc/yum.repos.d/CentOS-Stream-vault.repo \
https://mirrors.tuna.tsinghua.edu.cn/centos-vault/8-stream/CentOS-Stream-BaseOS.repo
fi
yum clean all && yum makecache
echo "Vault 源已生效,请执行 yum update 验证"
else
echo "非 CentOS 系统,脚本退出"
fi保存为 fix-centos-eol.sh,执行:
chmod +x fix-centos-eol.sh
sudo ./fix-centos-eol.sh6. 长期方案:原地迁移至 Rocky Linux 8(可选)
| 步骤 | 命令 | 说明 |
|---|---|---|
| 备份 | rsync -av / /backup/$(hostname)-$(date +%F) | 全系统快照 |
| 升级工具 | curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh | Rocky 官方脚本 |
| 执行迁移 | sudo bash migrate2rocky.sh -r | 约 10–15 min |
| 重启 | sudo reboot | 检查版本 cat /etc/os-release |
迁移后 yum/dnf 源指向 Rocky 官方,可持续获得更新。
7. 常见问题 FAQ
| 问题 | 解决 |
|---|---|
yum 提示 GPG key 错误 | 手动导入:rpm --import https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7 |
| 第三方仓库(Remi、Docker)同样失效 | 同步替换为对应 Vault 地址或改用 AlmaLinux/Rocky |
| 容器镜像失效 | 使用 rockylinux:8 / almalinux:8 作为基础镜像 |
8. 参考与致谢
- 阿里云 CentOS EOL 应对方案
- 清华开源镜像站 Vault 说明
- Rocky Linux 官方迁移脚本仓库
PIGYun 建议
若业务需长期稳定,请在完成 Vault 修复后立即规划 Rocky Linux 9 或 AlmaLinux 9 迁移。