yum 包管理器关于退出代码的奇怪行为:

Weird Behavior from yum package manager regarding exit codes:

我使用 yum 作为包管理器,因为我在 Centos 上。我正在使用内核 header 和开发包,并注意到一些我无法通过谷歌搜索找到信息的特殊行为:

目前我为当前内核安装了 headers 和开发包,但是每当我执行 yum 命令在本地安装这些(我有 RPM)时,我会得到不同的行为:

(注意:我正在致力于自动化安装,所以我知道在我当前的环境中这样做毫无价值。我只是想了解这种不一致)

[root@host mydir]# rpm -qa | grep kernel
kernel-headers-2.6.32-573.7.1.el6.x86_64
kernel-2.6.32-504.el6.x86_64
kernel-2.6.32-573.7.1.el6.x86_64
kernel-devel-2.6.32-573.7.1.el6.x86_64
libreport-plugin-kerneloops-2.0.9-25.el6.centos.x86_64
kernel-2.6.32-573.3.1.el6.x86_64
kernel-firmware-2.6.32-573.22.1.el6.noarch
abrt-addon-kerneloops-2.0.8-34.el6.centos.x86_64
dracut-kernel-004-388.el6.noarch

已安装有问题的两个软件包(devel 和 headers for kernel-2.6.32-573.7.1.el6.x86_64

[root@host mydir]# ver=`uname -r`

尝试安装 headers:

[root@host mydir]# yum install kernel-header-${ver}
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
Nopackage kernel-header-2.6.32-573.7.1.el6.x86_64 available.
Error: Nothing to do

[root@host mydir]# echo $?
1

退出并出现错误,但是当我对开发包尝试同样的操作时...

[root@host mydir]# yum install kernel-devel-${ver}
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
Nothing to do

[root@host mydir]# echo $?
0

简单:yum 没有可用的旧软件包。唯一可用的 "kernel-headers package" 是最新的 CentOS 6.8 更新 = kernel-headers-2.6.32-642.1.1.el6

除此之外,内核头文件 (/usr/include/*) 并不一定要遵循内核版本:它们用于构建应用程序。必须匹配的两个包是 kernel、kernel-devel。

更新http://mirror.centos.org/centos/6.8/updates/

发布http://mirror.centos.org/centos/6.8/os/