centos 7 yum安装失败(出现repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found)的解决方法

https://www.cnblogs.com/alantop/p/13456268.html

 

出现具体的错误提示如下:

http://mirrors.aliyun.com/non-supported/rhel/7/x86_64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found
正在尝试其它镜像。

1 删除老仓库文件

cd /etc/yum.repos.d

rm *.*

2.卸载yum包 

rpm -qa yum yum-3.4.3-150.el7.centos.noarch

卸载安装组件

rpm -qa | grep yum | xargs rpm -e --nodeps 

rpm -qa yum

3.下载最新的rpm包

http://mirrors.163.com/centos/7/os/x86_64/Packages/ 这个目录下 找最新的rpm包,并下载。

yum-最新版.centos.noarch.rpm 

yum-metadata-parser-最新版.x86_64.rpm

yum-plugin-fastestmirror-最新版.noarch.rpm

下载 wget 跟你找到最新软件包名称

4 安装yum

rpm -ivh yum-*

查看安装是否成功

 

rpm -qa yum

5. 导入证书

rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7

6.添加阿里的源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

7.清除缓存 生成新的缓存

yum clean all

yum makecache

分类: centos

<think>我们遇到了一个关于yum镜像源的问题,用户尝试使用阿里云的CentOS 7镜像源时,遇到了404错误。错误信息中提到了URL:https://mirrors.aliyun.com/repo/Centos-7.repo/repodata/repomd.xml 返回404。这个URL看起来有些问题,因为通常我们配置的repo文件中的baseurl指向的是目录,而不是一个具体的.repo文件,并且后面不应该有/repodata/repomd.xml。 根据引用[1]中的经验,我们知道阿里云镜像源的路径结构发生了变化。特别是对于CentOS 7,正确的镜像源配置应该是使用baseurl指向目录,并且注意版本号。在引用[1]中提到,将$releasever替换为7(因为原CentOS 6的路径已经不存在了)。但是这里我们注意到用户提供的URL中包含了“repo/Centos-7.repo”,这实际上是一个repo配置文件,而不是一个存放rpm包的目录。因此,我们怀疑用户错误地将repo配置文件的URL当作了baseurl。 正确的做法应该是: 1. 下载阿里云的CentOS 7的repo配置文件到/etc/yum.repos.d/目录。 2. 在repo配置文件中,baseurl应该是类似这样的:http://mirrors.aliyun.com/centos/7/os/x86_64/,而不是指向一个.repo文件。 所以,我们需要重新配置yum源。 步骤: 1. 备份原有的repo文件。 2. 下载阿里云提供的CentOS 7的repo配置文件。 3. 清理yum缓存并重建。 但是,我们注意到用户提供的错误URL是:https://mirrors.aliyun.com/repo/Centos-7.repo/repodata/repomd.xml 这个URL是错误的,因为阿里云并没有在/repo/Centos-7.repo/这个路径下提供repodata。实际上,正确的repo配置文件下载地址是:http://mirrors.aliyun.com/repo/Centos-7.repo (注意:没有后面的/repodata/repomd.xml) 因此,我们推断用户可能在配置baseurl时错误地将repo配置文件的URL当成了仓库的baseurl。或者,可能是用户手动创建了一个.repo文件,但其中的baseurl配置错误。 解决方案如下: 步骤1:删除或备份当前错误的repo文件 我们可以先将/etc/yum.repos.d/目录下所有repo文件备份,然后删除,然后重新下载正确的阿里云repo文件。 步骤2:下载正确的阿里云CentOS 7的repo配置文件 ```bash # 备份整个目录 mkdir /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ # 下载阿里云CentOS 7的repo文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ``` 步骤3:更新缓存 ```bash yum clean all yum makecache ``` 如果上述步骤中,wget无法解析mirrors.aliyun.com,则需要先配置DNS(如用户之前的问题),或者使用curl -O 如果wget没有安装。 另外,根据引用[4],我们也可以使用sed命令来修改已有的repo文件,将baseurl中的$releasever替换为7(如果repo文件中使用了该变量)。但是,在阿里云提供的CentOS-7.repo文件中,已经正确配置了baseurl,所以不需要替换。 但是,如果用户使用的是自己编写的repo文件,那么需要确保baseurl指向正确的路径。正确的baseurl应该是: baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/ 注意:这里我们使用的是http协议,避免https可能出现的证书问题(当然阿里云的https也是可用的,但有时可能因为证书问题导致错误)。 如果按照上述步骤操作后仍然出现404错误,那么可能是由于阿里云镜像同步问题,或者用户所在网络访问阿里云镜像有特定的路径。这时,我们可以尝试更换其他镜像源,如网易源(引用[1]中提到)或者中科大源(引用[4]中提到)。 例如,使用网易源: ```bash wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo ``` 或者使用中科大源(EPEL)的配置方式(参考引用[4])来配置基础源。 另外,引用[3]中提到,对于zabbix源,他们使用了替换命令将官方源替换为阿里云源。我们可以借鉴这种方法,但要注意,我们这里不是zabbix源,而是基础源。 最后,如果问题仍然存在,我们可以手动测试baseurl是否有效: ```bash curl -I http://mirrors.aliyun.com/centos/7/os/x86_64/repodata/repomd.xml ``` 应该返回200 OK。 如果返回404,则说明该路径确实不存在,这时需要检查镜像站点的目录结构是否发生变化。 总结:核心问题是用户配置的baseurl不正确,我们需要重新配置正确的repo文件。 下面给出完整的解决方案:</think>### 🔍 解决阿里云 CentOS 7 镜像源 404 错误 #### 📌 问题核心原因 阿里云镜像源路径已更新,旧版 `Centos-7.repo` 文件中的路径已失效(返回 404),主要因为: 1. **路径结构变更**:阿里云调整了 CentOS 镜像目录结构[^1] 2. **版本号变量错误**:`$releasever` 变量未正确解析为 `7`[^1] 3. **协议问题**:部分旧配置使用 `http` 而非 `https`[^3] --- ### 🔧 完整解决方案(CentOS 7) #### 步骤 1:删除旧配置文件 ```bash # 备份并删除旧配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup ``` #### 步骤 2:获取最新阿里云源(关键) ```bash # 下载 2023 新版配置(强制 HTTPS) curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-7.9.2009.repo # 或使用官方推荐配置 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo ``` #### 步骤 3:手动修复路径变量 ```bash # 替换所有 $releasever 为 7 sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo # 确保使用 https sed -i 's/http:/https:/g' /etc/yum.repos.d/CentOS-Base.repo ``` #### 步骤 4:禁用无效仓库 ```bash # 查找问题仓库 grep -l "404" /var/cache/yum/*/repomd.xml | cut -d/ -f4 # 禁用特定仓库(示例) yum-config-manager --disable base,extras,updates ``` #### 步骤 5:重建缓存 ```bash yum clean all rm -rf /var/cache/yum yum makecache ``` --- ### ⚠️ 备选方案:使用其他镜像源 若阿里云仍不可用,改用以下源: #### 1. 腾讯云源 ```bash curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.cloud.tencent.com/repo/centos7_base.repo ``` #### 2. 华为云源 ```bash curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo ``` #### 3. 网易源(引用[1]方案) ```bash wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo ``` --- ### ✅ 验证修复 ```bash # 测试仓库可用性 yum repolist # 尝试安装测试包 yum install -y tree ``` > 📌 **关键提示**:若遇到 `pygpgme` 错误(引用[2]),执行: > ```bash > yum install -y pygpgme # 安装签名验证工具 > rpm --import https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 # 导入密钥 > ``` --- ### 📚 镜像源配置原理 正确的基础源路径结构: ``` https://mirrors.aliyun.com/centos/ ├── 7.9.2009/ # 具体版本目录 ├── 7/ # 主版本目录(需 $releasever=7) └── vault/ # 归档目录(旧版) ``` 配置文件中 `baseurl` 应为: ```ini baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ ``` ---
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值