2

I have built a package with the following version:

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

Which should be an upgrade of the one installed on the system:

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

when I do a yum localupdate I get the following:

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

But when it hits the transaction check, I get file conflicts like it's not updating the package, but installing it side-by-side, as seen here:

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

I've tried obsoletes for older versions, I've tried upping the Epoch (as you can see mine has an epoch of 10 now)

When I do:

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

it upgrades properly.

I've double checked the rpmversion shows as newer:

# 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

Any ideas?

Additional information:

I've re-tooled my RPM to have the exact same dist tag and it still fails.

# 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

1 Answer 1

0

Yum has this installonlypkg:s directive, what it does is rather than upgrading a package, it does an install, so that two different versions of the same package may be installed simultanously.

This is good for kernel packages, which typically is the default setting, so it can allow you to fall back to the previous kernel, in case there was errors with the upgraded on. (from RHEL6 deployment guide):

installonlypkgs=space separated list of packages Here you can provide a space-separated list of packages which yum can install, but will never update. Refer to the yum.conf(5) manual page for the list of packages which are install-only by default.

And on the subject of kernel packages:

[...] In particular, kernel packages should always be listed in installonlypkgs (as they are by default),

For the case of kmod packages, check the comments of this bz for why kmod packages is affected by this. This is for fuse, but same logic applies to your rpm:

% rpm -qp --provides kmod-fuse-2.7.4-21.el5.i686.rpm kernel-modules = 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

...and kernel-modules is in the installonlypkgs list, so yum is doing what it is told.

1
  • It turns out my package was providing kernel-modules The way I fixed it was to remove the Provides: line and rebuild the package. I know that's not the best solution, but it works for now. Any other, better options? Surely someone has had to update a kernel module package for the same kernel before…
    – goozbach
    Jul 2, 2014 at 13:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .