-1

libmy.so私の目的は、 RPM を介してインストール可能なライブラリとして既にビルドされているものを配布することです。

以下は、.spec ファイルのスニペットです。

%define elX el5
%define arch x86_64

Name: my_rpm
Version: 1.0
Requires: <package name which installs libxx.so >

%prep

%define debug_package %{nil}

%build

%install

%files

%defattr(-, root, root)

/home/%{elX}/%{arch}/%{name}_%{version}/lib/libmy.so

のコンパイル時に、別の RPM の一部としてインストールされているものlibmy.soにリンクしています。libxx.so

上記のステップ 1 の一部として作成された RPM のインストール中libxx.soに、マシンにインストールされていても、次の依存関係エラーが発生します。

$ rpm -ivh *rpm

error: Failed dependencies:

libxx.so()(64bit) is needed by *rpm

以下のことを試しました。

分析中に、 が配置されているパスがlibxx.soに存在しないことがわかりましたld.so.conf。ただし、あるパスのエントリを追加libxx.soしても役に立ちませんでした。

この依存エラーを取り除くために追加の手順を実行する必要があるかどうかをお知らせください。

4

1 に答える 1

3

インストール時に、rpmは RPM データベース内のエントリを探します。システムまたはリンク可能なファイルのテストは行いません。

の出力は何ですか

$ rpm -q --whatprovides libXX.so

これにより、libXX.so を提供するパッケージが一覧表示されます。パッケージが提供しない場合、RPM に依存関係エラーが発生します。エントリから libXX.so を削除しRequires:ます。手動で指定していない場合は、自動的に検出される場合があります。仕様ファイルでは、次を設定できます。

AutoReqProv: no

これにより、 のすべての自動検出が無効になりRequires:ます。

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

于 2011-09-12T18:13:30.050 に答える