2015-12-14 32 views
1

我已經建立了一個RPM包來保存我的應用程序,但是嘗試安裝會產生錯誤關於丟失FAAD庫:找到丟失的依賴的父母在rpm包

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

如果你正在構建自己的RPM,你可以用自己的一個重寫的前提條件掃描腳本,然後打印出來時,看到的法寶之一,你要尋找的。

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

+0

這是一個非常好的線索。謝謝。不過,我已經深入瞭解它。在這臺Centos 6機器中,/ usr/lib/rpm和/ usr/lib/rpm/redhat具有相似的內容。我不認爲要麼執行find-require。我已經將/ usr/lib/rpm中的所有內容都移出了,並且rpmbuild *仍然*聲明需要libfaad。難道這會被硬編碼到rpmbuild? – Danny