RPM verification fails with unsatisfied dependencies for libraries provided by the RPM

Andy Helten andy.helten at dot21rts.com
Wed Dec 2 17:11:56 UTC 2009


I have a custom built RPM, created on a RedHat 5.1 system with RPM 
version 4.4.2.  This RPM installs some executables as well as some 
shared libraries, such as libapr-1.so.0, that are not installed on our 
embedded (i.e. small CF for local storage) RedHat 5.1 system but are 
required by those executables.

The problem I am having is that dependency checking fails during 
verification for the shared libraries provided by my RPM unless a 
previous version of my RPM is already installed.  I would prefer to 
leave dependency checking enabled and do not want to maintain the 
dependencies on my own.  The question is:  how do I force RPM 
verification to recognize the shared libraries provided by that RPM so 
that is doesn't (incorrectly) complain about unsatisfied dependencies.  
Note that this failed dependency check does not prevent installation, it 
just causes "rpm --verify --package blah-1.7.8.9-1.i386.rpm" to fail.

The reason for wanting verification to work correctly is to avoid failed 
installations that could result in a complex and error-prone rollback 
procedure.  The rollback could be complex because this identical RPM is 
installed on multiple processor boards during an upgrade.  Additionally, 
the installation is script driven over the network to these multiple 
processor boards.  By first running verification on all the boards, our 
script is able to abort the full install on these systems if 
verification fails on any one of them.

Below is some query output from the RPM and then an example of the 
failed verification showing which libraries are causing the "unsatisfied 
dependency".

Thanks for any help,
Andy


======================================
sbc0 root 2->rpm -q --provides -p blah-1.7.8.9-1.i386.rpm
libapr-1.so.0 
libaprutil-1.so.0 
libbfscsc.so 
libbftticsc.so 
libbitcsc.so 
libbnscsc.so 
libeslcsc.so 
libgefcmn-nvram.so 
libgefcmn-temp.so 
libgefcmn-timers.so 
libgefcmn-watchdog.so 
libhlappcsc.so 
libiomp5.so 
libippcore.so.6.0 
libipps.so.6.0 
libippvm.so.6.0 
libjpcsc.so 
liblog4cxx.so.10 
libpecsc.so 
libprcsc.so 
librccsc.so 
libsbpcsc.so 
libtcucsc.so 
libticsc.so 
libvipcsc.so 
libvme.so 
libxerces-c.so.28 
blah = 1:1.7.8.9-1


sbc0 root 3->rpm -q --requires -p blah-1.7.8.9-1.i386.rpm
/bin/bash 
/bin/sh 
/bin/sh 
libapr-1.so.0 
libaprutil-1.so.0 
libc.so.6 
libc.so.6(GLIBC_2.0) 
libc.so.6(GLIBC_2.1) 
libc.so.6(GLIBC_2.1.3) 
libc.so.6(GLIBC_2.2) 
libc.so.6(GLIBC_2.3) 
libc.so.6(GLIBC_2.3.2) 
libc.so.6(GLIBC_2.3.4) 
libc.so.6(GLIBC_2.4) 
libdl.so.2 
libdl.so.2(GLIBC_2.0) 
libdl.so.2(GLIBC_2.1) 
libgcc_s.so.1 
libgcc_s.so.1(GCC_3.0) 
libgcc_s.so.1(GLIBC_2.0) 
libgefcmn-nvram.so 
libgefcmn-timers.so 
libiomp5.so 
libippcore.so.6.0 
libipps.so.6.0 
libippvm.so.6.0 
liblog4cxx.so.10 
libm.so.6 
libm.so.6(GLIBC_2.0) 
libnsl.so.1 
libpthread.so.0 
libpthread.so.0(GLIBC_2.0) 
libpthread.so.0(GLIBC_2.1) 
libpthread.so.0(GLIBC_2.3.2) 
libpthread.so.0(GLIBC_2.3.3) 
libpthread.so.0(GLIBC_2.3.4) 
librt.so.1 
librt.so.1(GLIBC_2.2) 
librt.so.1(GLIBC_2.3.4) 
libstdc++.so.6 
libstdc++.so.6(CXXABI_1.3) 
libstdc++.so.6(CXXABI_1.3.1) 
libstdc++.so.6(GLIBCXX_3.4) 
libutil.so.1 
libvme.so 
libxerces-c.so.28 
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH) 


sbc0 root 4->rpm --verify --package --nofiles blah-1.7.8.9-1.i386.rpm
Unsatisfied dependencies for blah-1.7.8.9-1.i386: libapr-1.so.0, 
libaprutil-1.so.0, libiomp5.so, libippcore.so.6.0, libipps.so.6.0, 
libippvm.so.6.0, liblog4cxx.so.10, libxerces-c.so.28


More information about the Rpm-list mailing list