解决CentOS 7 Yum仓库失效问题:切换至Vault仓库
问题背景
最近在CentOS 7系统中使用yum
安装软件时,遇到了以下错误:
[root@master ~]# yum install -y gcc tcl
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"
One of the configured repositories failed (未知),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
1. Contact the upstream for the repository and get them to fix the problem.
2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).
3. Run the command with the repository temporarily disabled
yum --disablerepo=<repoid> ...
4. Disable the repository permanently, so yum won't use it by default. Yum
will then just ignore the repository until you permanently enable it
again or use --enablerepo for temporary usage:
yum-config-manager --disable <repoid>
or
subscription-manager repos --disable=<repoid>
5. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:
yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
Cannot find a valid baseurl for repo: base/7/x86_64
这是由于CentOS 7已于2024年6月30日停止维护(EOL),官方关闭了默认的镜像源,导致yum
无法正常访问仓库。
解决方案
为了解决这个问题,我们可以将Yum仓库切换至CentOS的Vault仓库,这是一个归档仓库,包含了CentOS 7的所有历史版本。
以下是详细步骤:
一、备份原配置文件
在修改配置文件之前,建议先备份,以防操作失误导致系统无法恢复。
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
验证备份是否成功:
ls /etc/yum.repos.d/
如果看到CentOS-Base.repo.bak
文件,说明备份成功。
二、编辑仓库配置文件
使用vi
或vim
编辑器修改仓库配置文件:
sudo vi /etc/yum.repos.d/CentOS-Base.repo
修改内容:
- 找到
[base]
和[updates]
等仓库区块。 - 将原有的
baseurl
替换为:baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
- 注释掉
mirrorlist=
开头的行(在行首添加#
):#mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os
- 确保
gpgcheck=1
和gpgkey
路径正确:gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
保存并退出:
- 按
Esc
键退出编辑模式。 - 输入
:wq
,然后按Enter
保存并退出。
三、刷新Yum缓存
修改配置文件后,需要刷新Yum缓存以使新配置生效:
sudo yum clean all && sudo yum makecache
解释:
• yum clean all
:清除所有缓存(包括软件包元数据和旧的下载文件)。
• yum makecache
:从新仓库下载元数据并建立缓存索引。
验证缓存是否成功:
如果看到以下输出,说明缓存重建成功:
Metadata cache created
四、验证与故障排查
-
测试安装:
sudo yum install vim
观察是否能正常下载和安装软件包。
-
网络检查:
ping vault.centos.org
确保服务器能够访问Vault仓库的域名。
-
配置检查:
cat /etc/yum.repos.d/CentOS-Base.repo | grep vault
查看是否成功替换为Vault地址。