我已经构建了一个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
答案 0 :(得分:0)
如果你自己构建RPM,你可以用你自己的一个覆盖prereq扫描脚本,然后在它看到你正在寻找的神奇的那个时打印出来。
在我的机器上,我开始挖掘/lib/rpm/redhat/find-requires
。