APTピン留めの依存関係の解決

DebianでAPTピン留めがどのように機能するかをマスターしようとしていますが、優先順位をどのように解決するかを理解するのに苦労しています。

source.listファイルがあります。このファイルには次のエントリが正確な順序で含まれています。

deb <repository> stretch main deb <repository> testing main deb <repository> unstable main 

次のリポジトリにはブランチごとにこれらのパッケージが含まれています:

  • ストレッチにはパッケージが含まれていますdependency version 1.0;
  • テストにはパッケージ

;

  • unstableにはパッケージprogramdependency version 2.0;
  • パッケージprogramdependency version 2.0に依存します。

    インストールする必要がありますパッケージprogramですが、unstableからインストールするパッケージをできるだけ少なくしたいので、次のこのブランチを固定するファイル:

    Package: * Pin: release a=unstable Pin-Priority: -1 

    理解している場合正しく機能する場合は、APTに明示的に指示した場合にのみunstableからパッケージをインストールする必要があります。

    apt.conf

    ブランチがデフォルトであることを確認するための

    ファイル:

    APT::Default-Release "stable"; 

    コマンド

    の場合、ブランチには次の優先順位が必要です。

    stable: 990 testing: 500 unstable: -1 

    パッケージをインストールしますprogram、これを行うには、次のコマンドを実行します。

    apt-get install -t unstable program 

    ここで、私の質問は、APTがどのブランチからパッケージdependency version 2.0testingunstableの両方に同じバージョンのパッケージがあるため、どちらが選択されますか?

    正しく理解すると、-t unstableオプションを指定したAPTは、unstableに属するパッケージに990の優先度を設定しますが、私が経験したことから、testingからプルします。

    では、なぜAPTは優先度500のtestingからパッケージをプルするのですか? unstableは990に設定されていますか?また、unstableからできるだけ少ないパッケージをインストールするための最適な方法は何ですか?

    コメント

    • バージョンが同じ場合、ファイルも同じです。Aptは最速または1番目を選択しますミラーを定義しましたが、ダウンロードしたファイルのURLは同じです。自分で確認してください。ディスク容量の問題により、Debianリポジトリは'パッケージの2つの同一ファイル/バージョンを保存しません。

    回答

    これは、 マンページ

    sources.list(5)ファイルを使用すると、パッケージのいくつかのバージョンをインストールできる場合があります。複数のディストリビューションへの参照が含まれています(たとえば、stableとtesting)。 APTは、使用可能な各バージョンに優先順位を割り当てます。依存関係の制約に従い、apt-getはインストールの優先度が最も高いバージョンを選択します。 APT設定は、APTがデフォルトでパッケージバージョンに割り当てる優先順位を上書きするため、インストール用に選択するものをユーザーが制御できます。

    同じバージョンのパッケージの複数のインスタンスは、ソースが.list(5)ファイルには、複数のソースへの参照が含まれています。この場合、apt-getは、sources.list(5)ファイルの最初にリストされているインスタンスをダウンロードします。 APT設定はインスタンスの選択に影響せず、バージョンの選択にのみ影響します。

    優先度は、(バージョン番号で指定された)のバージョンのみを決定します。パッケージがインストールされます。それが決定されると、最初に利用可能なパッケージリポジトリを使用してダウンロードします。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です