APT固定依存性分析

APT固定依存性分析

Debian では、APT 固定がどのように機能するかを把握しようとしていますが、優先順位の解決方法を特定するのが困難です。

source.list次の項目が正しい順序で含まれるファイルがあります。

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

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

  • ストレッチには包装が含まれていますdependency version 1.0
  • テスト付きパッケージdependency version 2.0
  • 不安定なパッケージprogramにはdependency version 2.0

パッケージはprogramによって異なりますdependency version 2.0

このパッケージをインストールする必要がありますprogramが、できるだけ少ない数のパッケージをインストールしたいので、このブランチを固定するために次のunstableファイルを作成しました。preferences

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

unstableどのように機能するかを正しく理解したら、APTに明示的に通知するときにのみパッケージをインストールする必要があります。

また、そのブランチがデフォルトブランチであることをapt.conf確認するためにファイルを作成しました。stable

APT::Default-Release "stable";

コマンドを実行した後apt-get updateの分岐の優先順位は次のとおりです。

stable: 990
testing: 500
unstable: -1

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

apt-get install -t unstable program

今私の質問は、APTがどの時点でパッケージをインポートするのかdependency version 2.0ということです。どちらも同じパッケージバージョンをtesting持っているので、どちらが選択されますか?unstable

私が正しく理解した場合、-t unstableそのオプションを持つAPTは自分が属するパッケージに対して990の優先順位を設定しますunstableが、私の経験ではパッケージから抽出しますtesting

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

答え1

これの説明は次のとおりです。apt_preferencesマンページ:

source.list(5) ファイルに複数のリリース (安定版やベータ版など) への参照が含まれている場合は、複数のバージョンのパッケージをインストールに使用できます。 APTは利用可能な各バージョンに優先順位を割り当てます。依存性に応じて、apt-get最も優先順位の高いバージョンがインストール先として選択されます。 APTのデフォルト設定では、APTがデフォルトでパッケージのバージョンに割り当てる優先順位を上書きして、ユーザーがインストール用に選択するバージョンを制御できるようにします。

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

優先順位は、単にインストールされているパッケージのバージョンを決定します(バージョン番号で指定)。識別されたら、最初に使用可能なパッケージリポジトリを使用してダウンロードします。

関連情報