このRPMが「削除可能」なのはなぜですか?

このRPMが「削除可能」なのはなぜですか?

Zypperにインストールを要求すると、次のようなメッセージが表示されます。

Problem: foo-tools requires foo-lib, but this requirement cannot be provided

Problem: foo-tools requires foo-lib, but this requirement cannot be provided
  uninstallable providers: foo-lib.7.31.13.x86_64
Solution 1: do not install foo-tools
Solution 2: break foo-tools by ignoring some of its dependencies

Zypperはなぜ私が意図的に提供したRPMを「削除可能なプロバイダ」と見なすのですか?このメッセージはどういう意味ですか?意味は? RPMファイルを読み込めませんか?アーチが間違っていますか?間違ったバージョンですか?あなたは何を心配していますか? ?

答え1

foo-lib独自に満たされていない依存関係があることがわかりました。これを追加すると問題が解決しました。

しかし、問題は... Zypperはなぜそうではありませんか?説明するここに問題があるのでしょうか?通常、依存関係の問題が発生すると、特定のパッケージが見つからないというメッセージが表示されます。この不透明な「削除可能なプロバイダ」メッセージが表示されるのはなぜですか?

答え2

RPMは、システムにインストールされているファイル(バイナリ実行可能ファイルや共有ライブラリなど)のデータベースを保持します。

一部のソフトウェア(例:foo-tools)が正しく機能するには、他のソフトウェア(例:foo-lib)が必要です。この依存関係情報はRPMパッケージプログラムによって決定されます。

foo-libとfoo-toolsをRPMファイルとして使用できますが、両方がインストールされていない場合は、コマンドライン(または同等のzypper対応)からRPMに(すべて)提供してRPM See all依存関係を満たすことができます。別のオプションは、前提条件パッケージを最初にインストールすることです。

foo-libに独自の依存関係がある場合は、これらの依存関係も満たす必要があります。それ以外の場合、foo-libはfoo-libのインストール可能プロバイダではありません。

推奨しない:前提条件が他の方法で満たされていることを確認してください(必要な項目を手動でインストールし、可能であればソースからZypperに依存関係を無視するように強制します。そうすると後で問題が発生する可能性があるため、そうしないでください。

関連情報