rpmはライブラリの依存関係をどのように解決しますか?

rpmはライブラリの依存関係をどのように解決しますか?

私はそのようなライブラリ(lddの出力)にリンクするパッケージを作成しようとしています。

libwx_baseu-2.8.so.0 => /usr/lib64/wx-2.8-wxcontainer/libwx_baseu-2.8.so.0

とても簡単ですか?ただし、rpmbuildを使用してプログラムをパッケージ化してインストールしようとすると、rpmはライブラリの欠落について文句を言います(上記を参照)。

エラー:依存関係に失敗しました:

    libwx_baseu-2.8.so.0()(64bit) 
    libwx_baseu-2.8.so.0(WXU_2.8)(64bit)

私の考えでは、rpmbuildがデフォルトのlibディレクトリ/usr/lib64の依存関係を設定しているようです。

質問- この問題を解決する方法(まあ、強制的にインストールされますが、避けたい)つまり、wx-2.8-wxcontainerサブディレクトリ(このライブラリの場合)への依存関係が設定されるようにrpmを構築する方法は?

重要な場合は、openSUSE 11.4を使用してください。

編集する

インストールを強制する --nodeps を使用してこれらのパッケージをインストールできます。これにより、インストーラは完全に機能します。明らかにシステム自体ではなく、rpmやrpmbuildに問題があるのです。

答え1

私はこれが現在rpm / rpmbuildバージョンの制限やバグだと思います。問題を報告したのである程度質問に対する回答になったようです。

https://bugzilla.novell.com/show_bug.cgi?id=697943

常にwx rpmをペアでインストールする必要があります。 1つは実際のライブラリを持ち、もう1つは単に「ライブラリをインストールしました」とマークされたパッケージです。

  • libwx_baseu_net-2_8-0-wxcontainer-2.8.12-3.1.x86_64
  • libwx_baseu_net-2_8-0-互換性ライブラリ-wxcontainer-2.8.12-3.1.x86_64

2番目のrpmがないと、パッケージマネージャおよび/または関連アプリケーションは、対応するwxライブラリが存在するかどうかを知ることができません。

答え2

1つ追加供給フィールドは仕様ファイルヘッダーに書き込まれます。たとえば、
lib_missing_complaint.so()(64 ビット) が提供されます。

依存関係が../で始まると機能しません。
この場合は
AutoReqを使用してください。

答え3

ファイルとパッケージを混ぜていると思います。

ライブラリがディスクに存在しても依存関係を解決するために使用できるという意味ではありません。これを行うには、このライブラリを提供するパッケージが必要です。

一方、依存関係解決の場合、ファイルが実際に存在する必要さえありません。いくつかのインストールされたパッケージが提供するという事実だけで十分です。

関連情報