依存関係(DEPENDENCY<<1.2)
を持つパッケージPACKAGE
のaptリポジトリを管理しています。 PACKAGE
とDEPENDENCY
の両方が私のリポジトリで利用可能です。
DEPENDENCY
のバージョン(バージョン4.0.0)をリリースしましたが、同じPACKAGE
完全にクリーンなマシンにをインストールすると、次のエラーで失敗します。
The following packages have unmet dependencies:
PACKAGE : Depends: DEPENDENCY (< 1.2.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
利用可能なDEPENDENCYのバージョンを確認すると、<< 1.2
要件を満たす既知のパッケージがあることがわかります。
Sudo apt list -a DEPENDENCY
Listing... Done
DEPENDENCY/stable 4.0.0 all
DEPENDENCY/stable 1.1.12 all
DEPENDENCY/stable 1.1.11 all
DEPENDENCY/stable 1.1.10 all
...
私は実際にパッケージ[〜#〜]と[〜#〜]を管理しているので、リポジトリ側でこれを修正できますが、どうすればよいですか? apt
が正しい依存関係を認識しないのはなぜですか?
(apt --fix-broken
を実行しても、サーバー側でパッケージが何らかの理由で壊れているため、機能しません)。
APTは、要件に基づいてパッケージのバージョンを解決するのではなく、可用性(および優先順位)に基づいて解決します。言い換えれば、それは実際にはコヒーレントリポジトリで動作するように設計されていますつまりパッケージの単一バージョンのリポジトリ。関連するすべてのパッケージはリポジトリ内のバージョンでインストールできます。 (これがDebianリポジトリのほとんどの場合の動作方法であり、リリースリポジトリの要件です。)
DEPENDENCY
は同じスイート内の複数のバージョンで使用できますが、特に明記されていない限り、APTは最高バージョンの4.0.0のみを考慮します。
おそらく、APT状況を手動で解決するのを手伝う必要があります:
apt install PACKAGE DEPENDENCY=1.1.12
それでも、それがうまくいくかどうかは100%わかりません。
一般的な解決策として、リポジトリで異なるスイートを使用し、PACKAGE
とDEPENDENCY
が同じスイート内で相互に受け入れ可能なバージョンで存在することを確認する必要があります。したがって、DEPENDENCY
のバージョン4.0.0は、互換性のあるバージョンでPACKAGE
が使用可能になるまで、PACKAGE
なしで別のスイートになります。