引言:理解源失效的原因与紧迫性

在运维 Rocky Linux 8 系统时,最令人头疼的突发事件之一就是软件源(Repository)突然无法访问。这通常表现为执行 dnf updateyum install 时长时间卡顿,最终报错 Could not resolve hostConnection timed out404 Not Found

这种情况通常由以下原因引起:

  1. 架构变更(最常见):Rocky Linux 8 即将到达 EOL(End of Life,生命周期结束),部分镜像站已经将 /8 的目录重定向或移至归档(Archive)区域。
  2. 网络问题:DNS 污染、运营商阻断或防火墙策略变更。
  3. 镜像源故障:使用的特定镜像站宕机或停止维护。

本指南将提供一套紧急修复方案,从诊断、替换源到验证,帮助你迅速恢复系统功能。


第一阶段:诊断故障根源

在盲目修改配置之前,我们需要先确认问题所在。

1.1 检查网络连通性

首先确认服务器是否能访问外网。

ping -c 4 8.8.8.8 

如果无法 ping 通,说明是网络层问题,需检查网卡配置或网关。

1.2 检查 DNS 解析

确认服务器能否解析域名。

nslookup rockylinux.org # 或者 ping -c 4 rockylinux.org 

如果报错 Name or service not known,请检查 /etc/resolv.conf,建议临时更改为公共 DNS:

echo "nameserver 8.8.8.8" > /etc/resolv.conf 

1.3 查看当前启用的源

查看系统当前配置了哪些源,以及它们的状态。

dnf repolist 

如果输出列表为空或报错,说明源配置已失效。


第二阶段:紧急修复 Rocky Linux 8 官方源

由于 Rocky Linux 8 已于 2024 年 5 月 31 日停止维护(EOL),官方主仓库(Main Repo)已经下线。你必须将源切换到 Vault(归档)源 才能继续使用。

2.1 备份现有源配置

这是一个好习惯,以防万一。

mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 

2.2 自动替换为 Vault 源脚本

Rocky Linux 官方提供了一个脚本,可以自动将失效的源替换为归档源。这是最稳妥的方法。

# 下载并执行官方迁移脚本 curl -o /usr/local/bin/rocky-migrate-vault.sh https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2vault/migrate2vault.sh chmod +x /usr/local/bin/rocky-migrate-vault.sh /usr/local/bin/rocky-migrate-vault.sh 

注意:脚本运行时会询问你是否确认替换,输入 yes 即可。

2.3 手动配置 Vault 源(如果脚本不可用)

如果你无法访问 GitHub 或脚本失败,请手动创建 rocky-vault.repo

创建并编辑文件:

vi /etc/yum.repos.d/rocky-vault.repo 

将以下内容粘贴进去(这是指向归档仓库的稳定地址):

[BaseOS] name=Rocky Linux 8 - BaseOS baseurl=http://dl.rockylinux.org/vault/rocky/8.10/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-8 [AppStream] name=Rocky Linux 8 - AppStream baseurl=http://dl.rockylinux.org/vault/rocky/8.10/AppStream/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-8 [extras] name=Rocky Linux 8 - Extras baseurl=http://dl.rockylinux.org/vault/rocky/8.10/extras/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-8 

提示:如果你的网络对 http 限制较多,可以尝试将 http 替换为 https


第三阶段:修复 EPEL 源失效

EPEL (Extra Packages for Enterprise Linux) 是极其重要的扩展源。EPEL 8 也已进入 EOL 阶段,官方镜像可能已移除或归档。

3.1 清理旧的 EPEL 配置

如果之前配置了错误的 EPEL 源,先清理掉。

dnf remove epel-release -y rm -f /etc/yum.repos.d/epel*.repo 

3.2 安装 EPEL 归档源

我们需要安装指向归档的 EPEL 配置。

方法 A:使用 rpm 命令安装(推荐) 注意 URL 中的 8/Everything 指向的是归档地址。

dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm 

方法 B:手动配置(如果方法 A 失败) 创建文件 /etc/yum.repos.d/epel-archive.repo

[epel] name=Extra Packages for Enterprise Linux 8 - Archive baseurl=https://dl.fedoraproject.org/pub/epel/8/Everything/$basearch/ https://archive.kernel.org/fedora-archive/epel/8/Everything/$basearch/ failovermethod=priority enabled=1 gpgcheck=0 

注意:为了保险起见,这里关闭了 gpgcheck,因为旧的 GPG 密钥可能已过期。如果你非常在意安全性,请手动导入旧密钥。


第四阶段:清理缓存并验证修复

完成源的修改后,必须执行以下步骤才能生效。

4.1 清理 DNF 缓存

旧的缓存可能会导致元数据不一致。

dnf clean all rm -rf /var/cache/dnf/* 

4.2 生成新缓存并测试

尝试列出所有可用的软件包,这会强制 DNF 重新下载元数据。

dnf makecache 

如果这一步成功,你会看到下载元数据的进度条。

4.3 最终验证

尝试安装一个简单的工具(如 htopwget)来确认源工作正常。

dnf install htop -y 

如果安装成功,说明源修复已完成。


第五阶段:长期建议

虽然上述步骤修复了当前的源失效问题,但你需要注意以下几点:

  1. 系统升级:Rocky Linux 8 已停止维护,继续使用存在安全风险。建议尽快规划升级到 Rocky Linux 9 或 AlmaLinux 9。
  2. 镜像站选择:如果你身处中国大陆,网络环境复杂,建议使用国内高校镜像站(如清华源、阿里云源),但要注意它们是否已经同步了归档(Vault)数据。
    • 清华源 Vault 地址示例https://mirrors.tuna.tsinghua.edu.cn/rocky/8.10/...
  3. 锁定内核:在源不可用的情况下,建议锁定内核版本,防止意外更新导致无法回滚。
     dnf versionlock add kernel 

通过以上步骤,你应该能够解决 Rocky Linux 8 和 EPEL 源失效的问题,恢复系统的软件包管理能力。