web-dev-qa-db-ja.com

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を構築する方法は?

これが重要な場合は、openSUSE11.4。

編集

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

5
greenoldman

これは、現在のrpm/rpmbuildバージョンの制限またはバグだと思います。私はこの問題を報告したので、ある意味で質問に答えられると思います。

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

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

  • libwx_baseu_net-2_8-0-wxcontainer-2.8.12-3.1.x86_64
  • libwx_baseu_net-2_8-0-compat-lib-wxcontainer-2.8.12-3.1.x86_64

2番目のrpmがないと、パッケージマネージャーや依存アプリケーションは、対応するwxライブラリがまったく存在しないことを認識しません。

2
greenoldman

追加する 提供します スペックファイルヘッダーへのフィールド。例:.
提供:lib_missing_complaint.so()(64bit)

依存関係が次のように始まる場合、これは機能しません。 ../
その場合は
AutoReq:いいえ

1
Michael Enke

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

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

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

1
Šimon Tóth