重建的kmod软件包不通过`YUM`更新,而是通过`rpm`更新


2

我用以下版本构建了一个软件包:

kmod-dahdi-linux 10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686

这应该是系统上已安装的升级:

kmod-dahdi-linux 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686

当我做一个yum localupdate我得到以下:

Resolving Dependencies
--> Running transaction check
---> Package kmod-dahdi-linux.i686 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686 will be updated
---> Package kmod-dahdi-linux.i686 10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686 will be an update
--> Finished Dependency Resolution

但是当它遇到事务检查时,我遇到文件冲突,就像它没有更新软件包,而是并排安装,如下所示:

file /lib/modules/2.6.32-431.el6.i686/dahdi/dahdi.ko from install of kmod-dahdi-linux-10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686.i686
conflicts with file from package kmod-dahdi-linux-2.9.0.1-72_centos6.2.6.32_431.el6.i686.i686

我尝试过时的版本已过时,我尝试过升级时代(如您所见,现在的时代已经是10)

当我做:

rpm -Uvh kmod-dahdi-linux-2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686.i686.rpm

它可以正确升级。

我已经仔细检查了rpmversion显示为较新的版本:

# rpmdev-vercmp 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686 10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686
10:2.9.1.1-75_shmz65.1.11.2.6.32_431.el6.i686 is newer

有任何想法吗?

附加信息:

我已经重新配置了RPM以使其具有完全相同的dist标签,但仍然失败。

# yum localupdate kmod-dahdi-linux-2.9.1.1-11_centos6.2.6.32_431.el6.i686.i686.rpm
Resolving Dependencies
--> Running transaction check
---> Package kmod-dahdi-linux.i686 0:2.9.0.1-72_centos6.2.6.32_431.el6.i686 will be updated
---> Package kmod-dahdi-linux.i686 0:2.9.1.1-11_centos6.2.6.32_431.el6.i686 will be an update
--> Finished Dependency Resolution

Transaction Check Error:
  file /lib/modules/2.6.32-431.el6.i686/dahdi/dahdi.ko from install of kmod-dahdi-linux-2.9.1.1-11_centos6.2.6.32_431.el6.i686.i686 conflicts with file from package kmod-dahdi-linux-2.9.0.1-72_centos6.2.6.32_431.el6.i686.i686

Answers:


0

Yum使用了installonlypkg:s指令,它执行的不是升级软件包,而是进行安装,因此可以同时安装同一软件包的两个不同版本。

这对于内核软件包(通常是默认设置)很有用,因此,如果升级时出现错误,它可以让您使用以前的内核。(来自RHEL6部署指南):

installonlypkgs =以空格分隔的软件包列表在这里,您可以提供以空格分隔的yum可以安装但永远不会更新的软件包列表。有关默认情况下仅安装的软件包列表,请参见yum.conf(5)手册页。

关于内核软件包:

[...]特别是,内核软件包应始终列在installonlypkgs中(因为它们是默认情况下),

对于kmod软件包,请检查此bz的注释,以了解kmod软件包受此影响的原因。这是用于保险丝的,但是相同的逻辑适用于您的rpm:

%rpm -qp-提供kmod-fuse-2.7.4-21.el5.i686.rpm内核模块= 2.6.18-128.1.10.el5 fuse-kmod = 2.7.4-21.el5 modalias(char- major-10-229)
kmod-fuse = 2.7.4-21.el5

...并且kernel-modules在installonlypkgs列表中,所以yum会按照提示进行操作。


事实证明,我的程序包提供了解决kernel-modules 的方法Provides: 。我知道这不是最好的解决方案,但目前可以使用。还有其他更好的选择吗?肯定有人必须在同一内核之前更新内核模块软件包……
goozbach 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.