1

作成した 2 つの RPMS (lib.rpm と program.rpm) があり、1 つには共有ライブラリが含まれています。libtest.so、libtest.so.1、libtest.so.1.0。もう1つは、共有ライブラリにリンクされた単一のバイナリを含みます。test_program。

lib.rpm を新しいマシンに問題なくインストールしました。test_program をコピーして、正常に実行しました。次に、test_program を含む program.rpm をビルドしますが、これも問題ありません。しかし、rpm -ivh program.rpm を実行すると、次のようになります。

error: Failed dependencies:
    libtest.so.1() (64bit) is needed by test_program-0.1-1.x86_64

それでも、test_program で ldd を実行すると、明らかに /usr/lib64/libtest.so.1 にファイルが見つかります。

私の仕様ファイルは両方とも最低限のものです。パッケージの説明の他に、%files の下にエントリを追加し、AutoReqProv を no に設定しただけです。

それで、何が得られますか?

4

1 に答える 1

1

あなたが与えたpastebin_linkで私は気づきました

AutoReqProv: no

これにより、rpm のデータが満たされないことが原因だと思いProvidesます。このため、ファイルに関する情報が rpm データベースに移動しません。

解決策は、それを削除するAutoReqProvか、に設定することyesです。

編集: Nghiaのコメントによると、それは役に立ちません:

なぜこれが必要なのかわかりませんが、本当に必要な場合は、明示的に言及してください

Provides: /usr/lib64/libtest.so /usr/lib64/libtest.so.1 /usr/lib64/libtest.so.1.0

おそらくあなたの問題を解決します。

于 2013-02-21T11:27:05.990 に答える