2011-09-12 37 views
-2

我的目的是通過rpm將已構建的libmy.so作爲可安裝的庫進行分發。RPM相關性錯誤

以下是代表.spec文件的片段

================================= =========

%定義ELX EL5 %限定拱x86_64的

名稱:my_rpm 版本:1.0 需要:

%製備型

%定義debug_package%{零}

%建立

%安裝

%文件

%defattr( - ,根,根)

/家庭/%{ELX} /%{ arch} /%{name} _%{version} /lib/libmy.so

============================ ==============

在編譯libmy.so時,我將它鏈接到作爲另一個rpm的一部分安裝的libxx.so。

在安裝如上述步驟1的一部分所創建的RPM,它給即使安裝libxx.so在機器上以下依賴誤差

============== =============================================

rpm -ivh * RPM

錯誤:失敗的依賴關係:

libxx.so()(64位)由* RPM所需

================================================= ==========

我們已經嘗試下面的事情

期間,我們認爲,若libxx.so所在的路徑不存在於ld.so.conf中的分析。但是,在libxx.so所在的位置添加路徑條目並不能幫助我們。

請讓我們知道我們是否需要執行任何額外的步驟來消除此依賴性錯誤。

回答

3

安裝時,rpm正在查找RPM數據庫中的條目;它不會測試系統上的文件或可鏈接的文件。

什麼是

$ rpm -q --whatprovides libXX.so 

輸出,將列出該軟件包提供libXX.so。如果沒有軟件包提供它,您的RPM將有一個依賴性錯誤。從Requires:條目中刪除libXX.so。如果您沒有手動指定它,可能會自動檢測到它。在你的spec文件,您可以設置:

AutoReqProv: no 

這將禁用Requires:所有自動檢測。

http://www.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html