在rpm包中找到缺少的依赖项的父级

时间:2015-12-14 13:18:06

标签: rpm rpmbuild

我已经构建了一个RPM包来保存我的应用程序,但是尝试安装它会产生关于缺少faad库的错误:

rpm --install dvstor-8.0-0.i386.rpm
error: Failed dependencies:
    libfaad.so.0 is needed by dvstor-8.0-0.i386

(实际安装了libfaad.so.2)。

所以我的一个二进制文件链接到了错误的版本......如何找出哪一个?

rpm包本身包含600个文件,rpm -qpR dvstor-8.0-0.i386.rpm列出了60种不同的依赖项,包括我自己的几个共享库和众多系统库。

除了在所有这些文件上运行ldd <file> | grep libfaad之外,是否有更简单的方法来查找必须重新链接的文件?

我已经检查了应用程序二进制文件及其直接共享库,但没有任何乐趣。必须在另一个文件中引用...

编辑1 这里参考的是rpmbuild的输出。请注意中间的libfaad.so.0。那里有任何提示吗?

Processing files: dvstor-core-8.0-2.i386
Provides: libdvscfg.so.8 libdvsfileactions.so.8 libdvstc.so.8
          libdvsutils.so.8 libvlcplugin.so
Requires(interp): /bin/sh /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 
    rpmlib(FileDigests) <= 4.6.0-1 
    rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(pre): /bin/sh
Requires(post): /bin/sh
Requires(postun): /bin/sh
Requires: /bin/bash /bin/sh /usr/bin/perl libACE.so.5.5.0 libICE.so.6 libSM.so.6
   libX11.so.6 libXt.so.6 libagent++.so libavcodec.so libavcodec.so.57
   libavcodec.so.57(LIBAVCODEC_57) libavformat.so libavformat.so.57 libavutil.so 
   libavutil.so.55 libavutil.so.55(LIBAVUTIL_55) libc.so.6 libc.so.6(GLIBC_2.0)
   libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.1.2) 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.3) libc.so.6(GLIBC_2.3.4) libcrypto.so.10
   libdl.so.2 libdl.so.2(GLIBC_2.0) libdl.so.2(GLIBC_2.1) 
   libdvscfg.so.8 libdvsfileactions.so.8 libdvstc.so.8 libdvsutils.so.8 libfaac.so.0 
   libfaad.so.0 libfreeimage.so.3 libgcc_s.so.1 libgcc_s.so.1(GCC_3.0) libgcc_s.so.1(GCC_3.4)
   libgcc_s.so.1(GLIBC_2.0) libgsm.so.1 libm.so.6 libm.so.6(GLIBC_2.0) libm.so.6(GLIBC_2.1)
   libmcstdh264dec.so.7 libmp3lame.so.0 libncurses.so.5 libnspr4.so libogg.so.0
   libpcap.so.1 libplc4.so libplds4.so libpthread.so.0 libpthread.so.0(GLIBC_2.0)
   libpthread.so.0(GLIBC_2.1) libpthread.so.0(GLIBC_2.2) libpthread.so.0(GLIBC_2.3.2)
   libpthread.so.0(GLIBC_2.3.4) librt.so.1 libsnmp++.so libsnmp.so.20 libstdc++.so.6
   libstdc++.so.6(CXXABI_1.3) libstdc++.so.6(GLIBCXX_3.4) libstdc++.so.6(GLIBCXX_3.4.4)
   libswresample.so.2 libswscale.so.4 libswscale.so.4(LIBSWSCALE_4) libtheora.so.0 
   libtinfo.so.5 libvorbis.so.0

1 个答案:

答案 0 :(得分:0)

如果你自己构建RPM,你可以用你自己的一个覆盖prereq扫描脚本,然后在它看到你正在寻找的神奇的那个时打印出来。

在我的机器上,我开始挖掘/lib/rpm/redhat/find-requires

相关问题