yum 安装程序找不程序安装包,诸如类似 No package zlib-devel available 报错的解决
一、问题现象
在root权限下安装zlib-devel包,
# yum install -y zlib zlib-devel
出现如下报错,
Loaded plugins: langpacks, product-id, search-disabled-repos No package zlib-devel available. Nothing to do
表明yum找不到zlib-devel安装包,这说明yum不能正常访问存贮zlib-devel的安装包的镜像。不同版本CentOS系统,yum访问/镜像上不同位置的程序安装包。这样的访问是由相应的repo配置文件来实现。配置错误的repo文件导致CentOS系统不能正确访问的163镜像,也就安装不了相应的程序包。
二、问题解决
经网上搜索,解决方案是,相应的CentOS的系统版本,要有正确对应的CentOSn-Base.repo文件(n或为5,或6,或7),同时要修改CentOSn-Base.repo文件中的bug。具体过程如下:
1、查看系统版本和位数
# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 7.4 (Maipo)
CentOS系统为7.4版本。因此要下载CentOS7-Base.repo文件。
2、下载正确版本CentOS7-Base.repo文件并修改bug
# cd /etc/yum.repos.d
清除系统已有yum缓存内容
# yum clean all
下载CentOS7-Base-163.repo文件,一定要存于 /etc/yum.repos.d文件夹中:
# wget /.help/CentOS7-Base-163.repo
将文件中的$releasever
全部替换成7
:
# sed -i 's/$releasever/7/g' ./CentOS7-Base-163.repo
本人在排错过程中,下载了repo对应的版本5文件CentOS5-Base-163.repo,也将文件中$releasever改为5,运行yum安装命令出现了如下错误。图中显示得很清楚,镜像的网址/centos/5/addons/x86_64/repodata/repomd.xml
没有找到,这是CentOS系统版本和repo版本不相匹配的原因。
然后再执行:
# yum makecache
最后成功安装:
# yum install -y zlib zlib-devel