问题原因
YUM无法在配置的路径中找到所需的仓库元数据,可能原因如下:
操作系统生命周期结束:官方YUM源仓库已被迁移至归档服务器(vault),原镜像源地址失效,需通过处理操作系统EOL将镜像源切换至归档仓库。
环境变量配置了错误的HTTP代理:在 /etc/profile 文件中配置了HTTP/HTTPS 代理,导致YUM无法连接到镜像服务器,需检查并修复环境变量配置错误。
centos-release 软件包缺失:软件包缺失会导致 YUM 无法找到任何可用的源,配置文件中使用的变量可能因缺少关联包而无法被正确解析,最终拼接出错误的URL,需安装centos-release 软件包。
解决方案
处理操作系统EOL
EOL系统存在安全风险,以下操作仅为临时修复,建议尽快进行操作系统更换与迁移。
CentOS 6
备份源配置文件。
# 备份Base源配置 sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 备份EPEL源配置 sudo cp /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup切换 Base 源至存档镜像。
sudo vim /etc/yum.repos.d/CentOS-Base.repo编辑
CentOS-Base.repo文件,将其内容完全替换为如下内容:[base] name=CentOS-6.10 enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6 [updates] name=CentOS-6.10 enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/updates/$basearch/ gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6 [extras] name=CentOS-6.10 enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/extras/$basearch/ gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6切换
EPEL源至存档镜像。vim /etc/yum.repos.d/epel.repo编辑
epel.repo文件,将其内容完全替换为如下内容:[epel] name=Extra Packages for Enterprise Linux 6 - $basearch enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/epel-archive/6/$basearch gpgcheck=0 gpgkey=http://mirrors.cloud.aliyuncs.com/epel-archive/RPM-GPG-KEY-EPEL-6执行
yum repolist命令,若成功列出仓库列表而没有报404错误,表示问题已解决。
CentOS 7
备份源配置文件。
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup下载新源配置文件。
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo清理并重建YUM缓存。
yum clean all && yum makecache执行
yum repolist,若成功列出仓库列表而没有报404错误,表示问题已解决。
检查并修复环境变量配置错误
检查代理环境变量。
echo $http_proxy echo $https_proxy移除代理配置。
若上一步返回了代理地址,则编辑/etc/profile文件,找到包含export http_proxy=或export https_proxy=的行,在行首添加 # 将其注释掉。sudo vim /etc/profile# export http_proxy="http://your.proxy.address:port" # export https_proxy="https://your.proxy.address:port"执行
yum repolist命令,若成功列出仓库列表而没有报404错误,表示问题已解决。
安装centos-release 软件包
检查软件包是否安装。
若返回
package centos-release is not installed,则需要进行安装。sudo rpm -q centos-release下载软件包。
访问阿里云镜像下载,找到最新版本的
centos-release-*.rpm包并复制链接。将<URL>替换为复制的链接。
sudo wget <URL>以CentOS 7 为例,<URL>为
https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/centos-release-7-9.2009.0.el7.centos.x86_64.rpm。安装软件包。
将<文件名>替换为下载的软件包文件名。
sudo rpm -ivh <文件名>以CentOS 7为例,<文件名>为
centos-release-7-9.2009.0.el7.centos.x86_64.rpm。执行
yum repolist命令,若成功列出仓库列表而没有报404错误,表示问题已解决。