Red Hat Bugzilla – Bug 5880
RPM 3.0.2-5.x incorrectly identifies required libraries
Last modified: 2008-05-01 11:37:52 EDT
When building a new RPM (via rpm -bb), everything builds
correctly, but rpm incorrectly identifies a "library" as
being required. The package in question is pam-ldap. There
is a linker directive (-fPIC) that is being picked up by RPM
as being a required library. This means that the resultant
rpm complains about a missing dependency when the dependency
shouldn't be there in the first place.
Can you send a pointer to the package and/or supply the spec file?
The package was pam_ldap-38-mz1.src.rpm. In this package, there is a
patch for Makefile.linux that makes the following change:
-LD_FLAGS = -x --shared -rpath $(LDAP_LIB_DIR) -lcrypt -lnsl -lpam
-lnsl -lpthread -lresolv
+LD_FLAGS = -x -shared -rpath $(LDAP_LIB_DIR) -fPIC -lcrypt -lnsl
-lpam -lnsl -lpthread -lresolv
When doing an rpm -bb <specfile>, the following are noted near the
Requires: PIC ld-linux.so.2 libc.so.6 libcrypt.so.1 libnsl.so.1
libpam.so.0 libpthread.so.0 libresolv.so.2
Since PIC isn't a package or file, it's causes failed dependencies
when you try to install the package. --nodeps works around it, but I
hate to --nodeps any installation unless I'm 100% sure that I have
what it's looking for.
I don't think this is an rpm problem, but rather a mis-linking in the pam_ldap
package (or possibly in egcs command line argument processing). Rpm simply
runs objdump on libraries and massages the output to auto-generate requirements.
the latest nss_ldap/pam_ldap I have built here do not have any problem with the