そのようなライブラリ(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には、システム自体ではなく、問題があります。
これは、現在のrpm/rpmbuildバージョンの制限またはバグだと思います。私はこの問題を報告したので、ある意味で質問に答えられると思います。
https://bugzilla.novell.com/show_bug.cgi?id=69794
常にwxrpmをペアでインストールする必要があります。1つは実際のライブラリを使用し、もう1つは単に「ライブラリがインストールされました」と表示するパッケージです。
2番目のrpmがないと、パッケージマネージャーや依存アプリケーションは、対応するwxライブラリがまったく存在しないことを認識しません。
追加する 提供します スペックファイルヘッダーへのフィールド。例:.
提供:lib_missing_complaint.so()(64bit)
依存関係が次のように始まる場合、これは機能しません。 ../
その場合は
AutoReq:いいえ
あなたはファイルとパッケージを混ぜていると思います。
ライブラリがディスクに存在するという事実は、依存関係を解決するために使用できるという意味ではありません。そのためには、このライブラリを提供するパッケージが必要です。
一方、依存関係を解決するために、ファイルは実際には存在する必要さえありません。インストールされたパッケージがそれを提供するという事実だけで十分なはずです。