使用之前阿里云镜像安装的yum,可能是安装新软件还是怎了的,忽然yum就不能用了,出现The requested URL returned error: 404的错误提示。

没辙,自己也不是专家,上网搜吧,很多教程里都提到了重新更新yum源,所以先试试更新yum源。

国内有两个主流的yum源:
网易:http://mirrors.163.com/.help/
阿里开源镜像:http://mirrors.aliyun.com/repo/

我的系统镜像用的是centos 6.3,所以选择列表中的centos 6即可:
http://mirrors.163.com/.help/CentOS6-Base-163.repo
http://mirrors.aliyun.com/repo/Centos-6.repo

centos系统上默认的yum源配置地址为
/etc/yum.repos.d/CentOS-Base.repo

先备份一下(好习惯)

mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup/

更新指令可以为

wget http://mirrors.aliyun.com/repo/Centos-6.repo /etc/yum.repos.d/CentOS-Base.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

清除系统yum缓存并生成新的yum缓存

yum clean all
yum makecache

在最后一步,yum makecache出错,跟一开始的错误一致,尝试更新软件yum install vim报同样的错误。
好吧,得承认,错误并不在于外部,方向错了。

再仔细看一下错误提示信息,里面有提到$releasever 变量未定义什么的。把错误信息放到百度里搜索,找到新的修改错误思路,也就是《Centos 在用yum时的 $releasever问题》。

按照《Centos 在用yum时的 $releasever问题》的解释是因为$releasever变量没有定义,它获取版本号是从系统 /etc/centos-release中获取的,或者说跟这个有关(rpm -q centos-release 获取),而centos-release没有安装,yum此时无法使用,按照这种情况,只能先修改$releasever,让yum正常使用,之后再去更新centos-release。

/etc/yum.repos.d/CentOS-Base.repo文件内所有$releasever变量都改成centos系统版本号(我的是6),执行yum updateyum makecacheyum install centos-release,后面都是成功的。

因为当前rpm -q centos-release 是可以获取到$releasever的值,所以手动去把系统版本号(我的是6)再改成变量$releasever,再执行yum 安装指令也是没有问题的。或者再次更新yum源,都ok。

参考:
Centos 在用yum时的 $releasever问题
使用yum安装软件出现“The requested URL returned error: 404”解决方法
CentOS7系统配置国内yum源和epel源