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-get
source.list(5) ファイルにリストされている最速のインスタンスがダウンロードされます。 APTのデフォルト設定はインスタンスの選択には影響せず、バージョンの選択にのみ影響します。
優先順位は、単にインストールされているパッケージのバージョンを決定します(バージョン番号で指定)。識別されたら、最初に使用可能なパッケージリポジトリを使用してダウンロードします。