[dennis@athosian python-pycurl (master)]$ ldd /usr/lib64/python2.7/site-packages/pycurl.so linux-vdso.so.1 => (0x00007fff00e64000) libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007fef3d3b0000) libpython2.7.so.1.0 => /usr/lib64/libpython2.7.so.1.0 (0x00007fef3cfde000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fef3cdc1000) libc.so.6 => /lib64/libc.so.6 (0x00007fef3ca1d000) libidn.so.11 => /lib64/libidn.so.11 (0x00007fef3c7ea000) liblber-2.4.so.2 => /usr/lib64/liblber-2.4.so.2 (0x00007fef3c5dc000) libldap-2.4.so.2 => /usr/lib64/libldap-2.4.so.2 (0x00007fef3c392000) librt.so.1 => /lib64/librt.so.1 (0x00007fef3c188000) libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fef3bf4e000) libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fef3bc73000) libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fef3ba49000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fef3b846000) libz.so.1 => /lib64/libz.so.1 (0x00007fef3b62f000) libssl3.so => /usr/lib64/libssl3.so (0x00007fef3b3f9000) libsmime3.so => /usr/lib64/libsmime3.so (0x00007fef3b1cd000) libnss3.so => /usr/lib64/libnss3.so (0x00007fef3ae91000) libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007fef3ac71000) libplds4.so => /lib64/libplds4.so (0x00007fef3aa6e000) libplc4.so => /lib64/libplc4.so (0x00007fef3a86a000) libnspr4.so => /lib64/libnspr4.so (0x00007fef3a62c000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fef3a428000) libssh2.so.1 => /usr/lib64/libssh2.so.1 (0x00007fef3a203000) libutil.so.1 => /lib64/libutil.so.1 (0x00007fef39fff000) libm.so.6 => /lib64/libm.so.6 (0x00007fef39d7a000) /lib64/ld-linux-x86-64.so.2 (0x0000003865e00000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fef39b5f000) libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00007fef39944000) libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fef3973a000) libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fef39538000) libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007fef392db000) libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fef38f44000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fef38d0c000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fef38aed000) libfreebl3.so => /lib64/libfreebl3.so (0x00007fef38889000) [dennis@athosian python-pycurl (master)]$ rpm -q --requires python-pycurl libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libcurl >= 7.21.1 libcurl.so.4()(64bit) libpthread.so.0()(64bit) libpython2.7.so.1.0()(64bit) python(abi) = 2.7 rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1 [dennis@athosian python-pycurl (master)]$ while the python module in python-pycurl links to lots of different things the rpm doesnt have requires for them. this can result in a non working package if noting else pulls in what is required rpm should add requires automatically
Nope, ldd is just reporting the libraries recursively while rpm only collects the directly linked libraries. Contrast the above with eg [pmatilai@localhost ~]$ objdump -p /usr/lib64/python2.7/site-packages/pycurl.so|grep NEEDED NEEDED libcurl.so.4 NEEDED libpython2.7.so.1.0 NEEDED libpthread.so.0 NEEDED libc.so.6 Run objdump -p recursively on the above four libraries and everything they link to and you'll get the same list as with ldd.