yum install -y zlib zlib-devel 报错

查看zlib包是否重复

$ rpm -qa | grep zlib

例:

[root@VM_0_4_centos ~]# rpm -qa | grep zlib
zlib-1.2.7-15.el7.i686
zlib-1.2.7-15.el7.x86_64

移除一个zlib包

[root@VM_0_4_centos ~]# yum remove zlib-1.2.7-15.el7.i686

发行版中的i386/i686/x86-64的区别:

i386用来处理32位系统,i686是i386的下集;x86-64用来处理64位系统。

linux发行版中的i386/i686/x86-64各自含义:

  • i386通常被用来作为对Intel(英特尔)32位微处理器的统称;
  • i386的子集包含i686,i686适用于Pentium Pro,也适用于K7架构的Athlon;
  • x86-64,又称“AMD64”或“x64”,是一种64位元的电脑处理器架构。它是建基于现有32位元的x86架构,由AMD公司所开发;

再次安装

[root@VM_0_4_centos ~]# yum install -y zlib zlib-devel

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访问http://mirrors.163.com/镜像上不同位置的程序安装包。

这样的访问是由相应的repo配置文件来实现。配置错误的repo文件导致CentOS系统不能正确访问的163镜像,也就安装不了相应的程序包。

问题解决

经网上搜索,解决方案是,相应的CentOS的系统版本,要有正确对应的CentOSn-Base.repo文件(n或为5,或6,或7),同时要修改CentOSn-Base.repo文件中的bug。

具体过程如下:

1、查看系统版本和位数

# cat /etc/redhat-release
Red 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 http://mirrors.163.com/.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安装命令出现了如下错误。

图中显示得很清楚,镜像的网址http://mirrors.163.com/centos/5/addons/x86_64/repodata/repomd.xml没有找到,这是CentOS系统版本和repo版本不相匹配的原因。

然后再执行:

# yum makecache

最后成功安装:

# yum install -y zlib zlib-devel

总结