Ticket #1014 (closed defect: fixed)
Package plugin can't resolve dependencies for rpms with Require: tags for full paths that aren't Provided explicitly
Reported by: | https://www.google.com/accounts/o8/id?id=AItOawm53g_OvEixgi55cBdUXTHWrAwrQcK1PlU | Owned by: | https://www.google.com/accounts/o8/id?id=AItOawnSjgovXZr-_V3vGkvMSR0pc5LDykRc1Nc |
---|---|---|---|
Priority: | major | Milestone: | Bcfg2 1.2.0 Release |
Component: | bcfg2-server | Version: | 1.0 |
Keywords: | Cc: |
Description
I have <Package name="acroread" /> as a required package in a bundle that manages a RHEL5 host. The acroread package lists this as what it requires:
$ rpm -qR acroread /usr/lib/libldap-2.3.so.0 /usr/lib/liblber-2.3.so.0 /usr/lib/libcups.so.2 /bin/sh /bin/sh rpmlib(PayloadFilesHavePrefix?) <= 4.0-1 rpmlib(CompressedFileNames?) <= 3.0.4-1 /bin/sh libACE.so libACE.so(VERSION) libadobelinguistic.so libAdobeXMP.so libAdobeXMP.so(VERSION) libAGM.so [... snipped a bunch of unrelated requirements ... ]
For example, rpm can resolve what provides /usr/lib/libldap-2.3.so.0:
$ rpm -q --whatprovides /usr/lib/libldap-2.3.so.0 openldap-2.3.43-12.el5_6.7.i386
RPM knows what provides that requirement, and therefore the packages are installed when it's installed with yum. However, when bcfg2 runs, I see this in the bcfg2 logs:
2011-06-13 14:30:06,012 bcfg2-server[8427]: Got unknown entries 2011-06-13 14:30:06,012 bcfg2-server[8427]: ['/usr/lib/libcups.so.2', '/usr/lib/liblber-2.3.so.0', '/usr/lib/libldap-2.3.so.0', 'gpg-pubkey']
(you can safely ignore gpg-pubkey for this issue)
I suspect that the problem is that the Packages plugin isn't able to translate the requirement for /usr/lib/liblber-2.3.so.0 into requiring a package that *includes* that library, instead just looking for packages that claim to *provide* that path.
'acroread' also requires /bin/sh, but that doesn't show up in the missing entries because the bash package actually claims to Provide /bin/sh:
$ rpm -qR bash /bin/bash /bin/sh /bin/sh /bin/sh config(bash) = 3.2-24.el5 libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libdl.so.2()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libtermcap.so.2()(64bit) mktemp rpmlib(CompressedFileNames?) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix?) <= 4.0-1 rtld(GNU_HASH)
I suspect this is mostly a poorly made package by Red Hat (it comes from RHN), and it should require the library correctly, but that's a bit beyond my control. However, this is also a problem with other packages, for example acroread-plugins also causes unknown entries:
$ rpm -q --whatrequires /usr/lib/nspluginwrapper/npwrapper.so
acroread-plugin-9.4.2-1.el5.i386
$ rpm -q --whatprovides /usr/lib/nspluginwrapper/npwrapper.so
nspluginwrapper-1.3.0-9.el5.i386
$ rpm -qR acroread-plugin|grep /
/usr/lib/nspluginwrapper/npwrapper.so /bin/sh /bin/sh
and java-1.6.0-sun-jdbc:
$ rpm -q --whatprovides /usr/lib/libodbcinst.so
unixODBC-devel-2.2.11-7.1.i386
$ rpm -q --whatrequires /usr/lib/libodbcinst.so
java-1.6.0-sun-jdbc-1.6.0.26-1jpp.1.el5.i586
$ rpm -qR java-1.6.0-sun-jdbc.x86_64|grep /
/usr/lib64/libodbc.so /usr/lib64/libodbcinst.so
I suspect that the Packages plugin needs to have deeper knowledge into what a package Provides beyond the explicit Provides listed in the package.
Attachments
Change History
comment:1 Changed 12 years ago by solj
- Milestone changed from Bcfg2 1.2.0 Release to Bcfg2 1.2.1 Release (Bugfix)
comment:2 Changed 12 years ago by https://www.google.com/accounts/o8/id?id=AItOawnSjgovXZr-_V3vGkvMSR0pc5LDykRc1Nc
- Owner changed from desai to https://www.google.com/accounts/o8/id?id=AItOawnSjgovXZr-_V3vGkvMSR0pc5LDykRc1Nc
- Status changed from new to accepted
comment:3 Changed 12 years ago by https://www.google.com/accounts/o8/id?id=AItOawnSjgovXZr-_V3vGkvMSR0pc5LDykRc1Nc
- Status changed from accepted to closed
- Resolution set to fixed
This is resolved in https://github.com/solj/bcfg2/commit/bd0fd1c4c32864414b60b51828c79198503cb3f6