执行yum命令失败,提示“HTTP Error 404 -Not Found Trying other mirror”错误?

问题原因

YUM无法在配置的路径中找到所需的仓库元数据,可能原因如下:

  • 操作系统生命周期结束:官方YUM源仓库已被迁移至归档服务器(vault),原镜像源地址失效,需通过处理操作系统EOL将镜像源切换至归档仓库。

  • 环境变量配置了错误的HTTP代理:在 /etc/profile 文件中配置了HTTP/HTTPS 代理,导致YUM无法连接到镜像服务器,需检查并修复环境变量配置错误

  • centos-release 软件包缺失:软件包缺失会导致 YUM 无法找到任何可用的源,配置文件中使用的变量可能因缺少关联包而无法被正确解析,最终拼接出错误的URL,需安装centos-release 软件包

解决方案

处理操作系统EOL

重要

EOL系统存在安全风险,以下操作仅为临时修复,建议尽快进行操作系统更换与迁移

CentOS 6

  1. 备份源配置文件。

    # 备份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
  2. 切换 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
  3. 切换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
  4. 执行yum repolist命令,若成功列出仓库列表而没有报404错误,表示问题已解决。

CentOS 7

  1. 备份源配置文件。

    sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  2. 下载新源配置文件

    sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  3. 清理并重建YUM缓存

    yum clean all && yum makecache
  4. 执行yum repolist,若成功列出仓库列表而没有报404错误,表示问题已解决。

检查并修复环境变量配置错误

  1. 检查代理环境变量

    echo $http_proxy
    echo $https_proxy
  2. 移除代理配置。
    若上一步返回了代理地址,则编辑/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"
  3. 执行yum repolist命令,若成功列出仓库列表而没有报404错误,表示问题已解决。

安装centos-release 软件包

  1. 检查软件包是否安装。

    若返回package centos-release is not installed,则需要进行安装。

    sudo rpm -q centos-release
  2. 下载软件包。

    访问阿里云镜像下载,找到最新版本的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
  3. 安装软件包。

    将<文件名>替换为下载的软件包文件名。

    sudo rpm -ivh <文件名>
    CentOS 7为例,<文件名>为centos-release-7-9.2009.0.el7.centos.x86_64.rpm
  4. 执行yum repolist命令,若成功列出仓库列表而没有报404错误,表示问题已解决。