How does rpm resolve library dependencies

dependenciesdynamic-linkinglibrariesrpm

I try to make a package of a program which is linked to such library (output from ldd):

libwx_baseu-2.8.so.0 =>
/usr/lib64/wx-2.8-wxcontainer/libwx_baseu-2.8.so.0

Pretty straightforward, right? But when I make a package of this program (with rpmbuild) and then try to install it, rpm complains about missing library (this one above):

error: Failed dependencies:

    libwx_baseu-2.8.so.0()(64bit) 
    libwx_baseu-2.8.so.0(WXU_2.8)(64bit)

My guess is, rpmbuild set the dependency for the main lib directory, i.e. /usr/lib64.

Question — how to fix this issue (ok, one would be forced install, but I would like to avoid it)? I.e. how to build rpm so the dependencies would set for the wx-2.8-wxcontainer subdirectory (for this library)?

openSUSE 11.4, if this matters.

Edit

I can install such package with –nodeps which forces installation, and after that install program works perfectly. So clearly, rpm or rpmbuild has issues, not the system itself.

Best Answer

I think this is limitation or bug in current rpm/rpmbuild versions. I reported this issue so I think in a way question is answered:

https://bugzilla.novell.com/show_bug.cgi?id=697943

You always have to install wx rpms in pairs — one with real library, the other package which simply says "the library was installed".

  • libwx_baseu_net-2_8-0-wxcontainer-2.8.12-3.1.x86_64
  • libwx_baseu_net-2_8-0-compat-lib-wxcontainer-2.8.12-3.1.x86_64

Without the second rpm, the package manager and/or dependent application would not know that the corresponding wx library is present at all.

Related Question