Provided by: apt_1.6.17_amd64 

名前
apt_preferences - APT 用選択制御ファイル
説明
APT プリファレンスファイル /etc/apt/preferences と /etc/apt/preferences.d/ フォルダにある断片ファイル
は、インストールするパッケージのバージョンを制御するのに使用します。
sources.list(5) ファイルに複数のディストリビューション (stable と testing など) が指定されていて、パッ
ケージに対し複数のバージョンがインストールできることがあります。このとき APT は、利用できるバージョンごと
に優先度を割り当てます。依存関係規則を条件として、apt-get は、最も高い優先度を持つバージョンをインストー
ルするよう選択します。APT プリファレンスファイルは、APT がデフォルトで割り当てた、パッケージのバージョン
の優先度を上書きします。その結果インストールするものの選択を、ユーザが選択できるようになります。
sources.list(5) ファイルに複数の参照が書かれている場合、パッケージの同じバージョンのインスタンスが複数利
用できる可能性があります。この場合、apt-get は sources.list(5) ファイルの初めの方に指定されているところか
らダウンロードします。APT プリファレンスファイルはバージョンの選択にのみ影響し、インスタンスの選択には影
響しません。
プリファレンスファイルは、システム管理者の強い力ですが、注意して使わないと大きな悪夢にもなります! APT は
プリファレンスについて問い合わせることはしません。そのため、設定を誤ったことにより、インストールできない
パッケージに誘導されたり、パッケージのアップグレード中に誤った判断をしたりという事がありえます。以降の段
落の内容をよく理解しないで、複数のディストリビューションリリースを混ぜてしまうと、より多くの問題が発生す
る事になります。特定のリリースに含まれるパッケージは、古い/新しいリリースや、異なるリリースから持ってきた
他のパッケージとでは、テストされていません (し、予想通りに常に動作するとは限りません)。以上、警告しまし
た。
/etc/apt/preferences.d ディレクトリにあるファイルは、英数字の昇順で解析され、以下の命名規約に従う必要があ
ることに注意してください。ファイル名の拡張子はないか、"pref" となっており、英数字、ハイフン (-)、アンダー
スコア (_)、ピリオド (.) でできています。そうでなければ、Dir::Ignore-Files-Silently 設定リストのパターン
に一致するもの以外に対して、ファイルを無視するという注意を APT が出力します。一致する場合は黙って無視しま
す。
APT のデフォルト優先度の割り当て
プリファレンスファイルがなかったり、プリファレンスファイルに特定のパッケージを割り当てるエントリがない場
合、そのバージョンの優先度は、そのバージョンが属しているディストリビューションの優先度となります。デフォ
ルトで他のディストリビューションより高い優先度を持つ、特定のディストリビューションを「ターゲットリリー
ス」としておけます。ターゲットリリースは、apt-get のコマンドラインや、APT 設定ファイル /etc/apt/apt.conf
で設定できます。後述する /etc/apt/preferences ファイルで設定した一般優先度よりもこれは優先されますが、pin
止めしたパッケージには及ばないことに注意してください。例えば以下のようになります。
apt-get install -t testing some-package
APT::Default-Release "stable";
ターゲットリリースが指定されると、APT は以下のアルゴリズムで、パッケージのバージョンの優先度を設定しま
す。以下のように割り当てます。
優先度 1
Debian の experimental アーカイブのように、Release ファイルに "NotAutomatic: yes" とマークさ
れ、"ButAutomaticUpgrades: yes" とマークされていないアーカイブ由来のバージョン。
優先度 100
(もしあれば) 既にインストール済みのバージョンや、squeeze-backports 以降である Debian のバックポート
アーカイブのような、Release ファイルに "NotAutomatic: yes" かつ "ButAutomaticUpgrades: yes" とマーク
されているアーカイブ由来のバージョン。
優先度 500
ターゲットリリースに属していないバージョン。
優先度 990
ターゲットリリースに属するバージョン。
説明がバージョンとマッチし、優先順位が最も高いものがバージョンに割り当てられます。
ターゲットリリースが指定されていなければ、APT は単純にインストールしているパッケージのバージョンには優先
度 100 を、インストールしていないパッケージのバージョンには優先度 500 を割り当てます。ただし、Release
ファイルに "NotAutomatic: yes" とマークされたアーカイブ由来のバージョンは違います。こういったバージョンで
は優先度 1 を割り当て、さらに "ButAutomaticUpgrades: yes" とマークされている場合には、優先度 100 を割り当
てます。
APT は、インストールするパッケージのバージョンを決定するために、以下のルールを上から順番に適用します。
• 有効なバージョンの優先度が 1000 を越えない場合、決してダウングレードしません。(「ダウングレー
ド」は、現在のパッケージのバージョンよりも、小さいバージョンのものをインストールします。APT のデフォ
ルト優先度が 1000 を越えないことに注意してください。そのような優先度は、プリファレンスファイルでのみ
設定できます。また、パッケージのダウングレードは危険であることにも注意してください)
• 最も高い優先度のバージョンをインストールします。
• 同じ優先度のバージョンが複数存在する場合、最も新しいもの (最もバージョン番号が高いもの) をインストー
ルします。
• 優先度・バージョン番号が同じものが複数存在し、そのパッケージのメタデータが異なるか --reinstall オプ
ションが与えられている場合、インストールされていないものをインストールします。
よくある状況として、あるインストールされているパッケージのバージョン (優先度 100) が、sources.list(5)
ファイルのリストから得られるバージョン (優先度 500 か 990) よりも新しくないということがあります。この場
合、apt-get install some-package や apt-get upgrade を実行するとパッケージが更新されます。
まれに、インストールされているパッケージのバージョンが、他の有効なバージョンよりも新しい場合がありま
す。この時 apt-get install some-package や apt-get upgrade を実行しても、ダウングレードしません。
時々、インストールしているパッケージのバージョンが、ターゲットリリースに属するバージョンよりも新しく、他
のディストリビューションよりも古い場合があります。そのようなパッケージに対して apt-get install
some-package や apt-get upgrade を実行すると、パッケージは更新されます。この場合、インストールされている
バージョンよりも、少なくともひとつは、高い優先度を持つ有効なパッケージがあるからです。
APT プリファレンスファイルの効果
APT プリファレンスファイルを使うと、システム管理者が優先度を割り当てられるようになります。ファイルは、空
白行で区切られた、複数行からなるレコードで構成されています。レコードは特定形式か、汎用形式のどちらかの形
式をとります。
• 特定形式は、優先度 ("Pin-Priority") を、指定したバージョンやバージョン範囲の、指定したパッケージにつ
いて割り当てます。例えば以下のレコードは、バージョン番号が "5.20" で始まる perl パッケージを、高い優
先度に設定します。空白で区切り、複数のパッケージを指定できます。
Package: perl
Pin: version 5.20*
Pin-Priority: 1001
• 汎用形式は、与えられたディストリビューションにある、すべてのパッケージ (Release ファイルに列挙した
パッケージ) の優先度や、FQDNで指定した、特定のインターネットサイトから取得するパッケージの優先度を割
り当てます。
APT プリファレンスファイルに書かれている汎用形式のエントリは、パッケージのグループについてのみ適用さ
れます。例えば以下のレコードは、ローカルサイトにある全パッケージについて、高い優先度を割り当てます。
Package: *
Pin: origin ""
Pin-Priority: 999
注意: ここで使われるキーワードは、ホスト名にマッチするのに使われる "origin" です。以下のレコード
は、ホスト名が "ftp.de.debian.org" で識別されるサーバ由来のすべてのバージョンに、高い優先度を割り当て
ます。
Package: *
Pin: origin "ftp.de.debian.org"
Pin-Priority: 999
Release ファイルに指定されたような、ディストリビューションの Origin と 混同しないようにしてくださ
い。Release ファイルにある "Origin:" タグは、インターネットアドレスではなく、"Debian" や "Ximian" と
いった作者やベンダ名です。
以下のレコードは、アーカイブ名が "unstable" となっているディストリビューションに属するパッケージ
を、すべて低い優先度に割り当てます。
Package: *
Pin: release a=unstable
Pin-Priority: 50
以下のレコードは、コード名が "buster" となっているディストリビューションに属するパッケージのバージョ
ンを、高い優先度に割り当てます。
Package: *
Pin: release n=buster
Pin-Priority: 900
以下のレコードは、アーカイブ名が "stable" で、リリースバージョン番号が "9" となっているリリースに属す
るパッケージを、すべて高い優先度に割り当てます。
Package: *
Pin: release a=stable, v=9
Pin-Priority: 500
コンマ演算子の効果は "and" 論理に似ています: ピンが一致するようにすべての条件がピンが一致しなければなりま
せん。一つの例外があります: 条件のいずれかの型では (例えば、二つの "a" 条件)、ただ最後の条件のみがチェッ
クされます。
正規表現と glob(7) 構文
APT は glob(7) 表現と、スラッシュで囲んだ正規表現による pin もサポートしています。例えば以下の例は、gnome
で始まる (glob(7) 風表現) か kde を含む (スラッシュで囲んだ POSIX の拡張正規表現) 名前の、experimental 由
来のすべてのパッケージに、優先度500を割り当てます。
Package: gnome* /kde/
Pin: release a=experimental
Pin-Priority: 500
この表現の規則は、文字が現れうる場所なら、どこでも発生しうるという事です。したがって、以下の pin
は、bionic で始まるリリース由来の、すべてのパッケージに、優先度 990 を割り当てます。
Package: *
Pin: release n=bionic*
Pin-Priority: 990
Package フィールドも正規表現が現れる場合、正規表現を、マッチするすべてのパッケージ名のリストに置き換えた
ものとして、動作します。これは将来変更されるかどうか、まだ決定していません。そのため、まずはじめにワイル
ドカード pin を、常に記述するようにしてください。その後に続く pin で上書きされます。Package フィールドの
"*" パターンは、glob(7) 表現自体とは見なされません。
APT が優先度に割り込む方法
APT プリファレンスファイルで割り当てた優先度 (P) は、正負の整数でなくてはなりません。これは (おおざっぱに
いうと) 以下のように解釈されます。
P >= 1000
パッケージがダウングレードしても、このバージョンのパッケージをインストール
990 <= P < 1000
インストールされているバージョンの方が新しいのでなければ、ターゲットリリースに含まれなくても、この
バージョンのパッケージをインストール
500 <= P < 990
ターゲットリリースに属するバージョンがあったり、インストールされているバージョンの方が新しいのでなけ
れば、このバージョンのパッケージをインストール
100 <= P < 500
他のディストリビューションに属するバージョンがあったり、インストールされているバージョンの方が新しい
のでなければ、このバージョンのパッケージをインストール
0 < P < 100
このパッケージがインストールされていない場合、このバージョンのパッケージをインストール
P < 0
このバージョンのインストール禁止
P = 0
は動作が未定義です、使用しないでください。
利用可能なパッケージバージョンに一致する最初の特定形式のレコードが、パッケージバージョンの優先度を決定し
ます。それに失敗すると、パッケージバージョンの優先度は、バージョンに一致する汎用形式のレコードで定義され
たすべての優先度の最大値として定義されます。
例えば、APT プリファレンスファイルの上の方に、以下のレコードが書かれていると仮定してください。
Package: perl
Pin: version 5.20*
Pin-Priority: 1001
Package: *
Pin: origin ""
Pin-Priority: 999
Package: *
Pin: release unstable
Pin-Priority: 50
すると、以下のように動作します。
• バージョン番号が "5.20" で始まっていれば、perl の最新の利用可能パッケージがインストールされます。バー
ジョン 5.20* が利用可能で、バージョン 5.24* がインストールされている場合、perl はダウングレードされま
す。
• ローカルシステムで有効な、perl 以外のどんなパッケージでも、他のバージョンより (たとえターゲットリリー
スに属していても) 優先度が高くなります。
• ローカルシステムにはなくても sources.list(5) に列挙されたサイトにあるバージョンで、unstable ディスト
リビューションに属しているパッケージは、インストールするよう選択され、既にインストールされているバー
ジョンがない場合にのみインストールされます。
パッケージのバージョンとディストリビューションプロパティの決定
sources.list(5) ファイルに列挙した場所では、その場所で利用できるパッケージを記述した、Packages ファイルや
Release ファイルを提供します。
Packages ファイルは通常 .../dists/dist-name/component/arch ディレクトリにあります。例え
ば、.../dists/stable/main/binary-i386/Packages です。これは、ディレクトリにある利用可能パッケージごと
に、複数行のレコードからできています。APT 優先度の設定は、レコードごとに以下の 2 行だけです。
Package: 行
パッケージ名
Version: 行
その名前のパッケージのバージョン番号
Release ファイルは、通常 .../dists/dist-name ディレクトリにあります。例えば、.../dists/stable/Release や
.../dists/stretch/Release です。これは、このディレクトリ以下にある全パッケージに適用する、複数行のレコー
ド 1 つから成っています。Packages ファイルと違い Release ファイルは、以下のようにほとんどの行が APT 優先
度の設定に関連します。
Archive: 行や Suite: 行
このディレクトリツリーに属する全パッケージのアーカイブ名です。例えば、"Archive: stable" や "Suite:
stable" という行は、Release ファイルの親ディレクトリツリー以下にある全パッケージが、stable アーカイブ
だと指定します。APT プリファレンスファイルでこの値を指定するには、以下の行が必要になります。
Pin: release a=stable
Codename: 行
このディレクトリツリーに属する全パッケージのコード名です。たとえば、"Codename: buster" という行
は、Release ファイルの親ディレクトリツリー以下にある全パッケージが、buster と名前のついたバージョンで
あると指定します。APT プリファレンスファイルでこの値を指定するには、以下の行が必要になります。
Pin: release n=buster
Version: 行
リリースバージョン名です。例えば、このツリーのパッケージが、Debian リリースバージョン 9 に属するとし
ます。通常 testing ディストリビューションや unstable ディストリビューションには、まだリリースされてい
ないので、バージョン番号が付きません。APT プリファレンスファイルでこれを指定するには、以下の行のいず
れかが必要になります。
Pin: release v=9
Pin: release a=stable, v=9
Pin: release 9
Component: 行
Release ファイルの、ディレクトリツリーにあるパッケージのライセンスコンポーネント名です。例え
ば、"Component: main" という行は、このディレクトリ以下の全ファイルが、main コンポーネント (Debian フ
リーソフトウェアガイドラインの元でライセンスされている) であることを表します。APT プリファレンスファ
イルでこのコンポーネントを指定するには、以下の行が必要になります。
Pin: release c=main
Origin: 行
Release ファイルのディレクトリツリーにあるパッケージの提供者名です。ほとんど共通で Debian です。APT
プリファレンスファイルでこの提供者を指定するには、以下の行が必要になります。
Pin: release o=Debian
Label: 行
Release ファイルのディレクトリツリーにあるパッケージのラベル名です。ほとんど共通で Debian です。APT
プリファレンスファイルでこのラベルを指定するには、以下の行が必要になります。
Pin: release l=Debian
sources.list(5) ファイルに列挙された場所から取得した Packages ファイルや Release ファイルはすべ
て、/var/lib/apt/lists ディレクトリや、apt.conf ファイルの Dir::State::Lists 変数で指定した場所に取得され
ます。例えば、debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release ファイル
は、debian.lcs.mit.edu から取得した、unstable ディストリビューションで、contrib コンポーネント
な、binary-i386 アーキテクチャ用の Release ファイルを含んでいます。
APT プリファレンスレコードのオプション行
APT プリファレンスファイルのレコードごとに、任意で Explanation: で始まる行を持てます。これは、コメント用
の場所を確保します。
サンプル
安定版の追跡
以下の APT プリファレンスファイルは、stable ディストリビューションに属する全てのパッケージのバージョン
に、デフォルト (500) より高い優先度を割り当て、他の Debian ディストリビューションのパッケージのバージョン
には、低くてインストールできないような優先度を割り当てます。
Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900
Package: *
Pin: release o=Debian
Pin-Priority: -10
適切な sources.list(5) ファイルと上記のプリファレンスファイルにより、以下のコマンドのいずれかで最新の
stable バージョンにアップグレードできます。
apt-get install package-name
apt-get upgrade
apt-get dist-upgrade
以下のコマンドで、指定したパッケージを testing ディストリビューションの最新バージョンにアップグレードしま
す。このパッケージは、再度このコマンドを発行しないとアップグレードされません。
apt-get install package/testing
テスト版や不安定版の追跡
以下の APT プリファレンスファイルは、testing ディストリビューションのパッケージのバージョンに高い優先度を
割り当て、unstable ディストリビューションのパッケージのバージョンには低い優先度を割り当てます。また他の
Debian ディストリビューションのパッケージのバージョンには、低くてインストールできないような優先度を割り当
てます。
Package: *
Pin: release a=testing
Pin-Priority: 900
Package: *
Pin: release a=unstable
Pin-Priority: 800
Package: *
Pin: release o=Debian
Pin-Priority: -10
適切な sources.list(5) ファイルと上記のプリファレンスファイルにより、以下のコマンドのいずれかで最新の
testing バージョンにアップグレードできます。
apt-get install package-name
apt-get upgrade
apt-get dist-upgrade
以下のコマンドで、指定したパッケージを unstable ディストリビューションの最新バージョンにアップグレードし
ます。それ以降、apt-get upgrade は testing バージョンのパッケージが更新されていれば testing の最新版
に、unstable バージョンのパッケージが更新されていれば unstable の最新版にアップグレードします。
apt-get install package/unstable
コード名リリースの進化の追跡
以下の APT プリファレンスファイルは、指定したコード名のディストリビューションに属する全てのパッケージの
バージョンに、デフォルト (500) より高い優先度を割り当て、他の Debian ディストリビューション、コード
名、アーカイブのパッケージのバージョンには、低くてインストールできないような優先度を割り当てます。この
APT プリファレンスファイルにより、APT は testing アーカイブから、stable や最新の oldstable へ移行できま
す。コード名の変更に関係なく testing を追跡したい場合は、上記の設定例を使用するべきです。
Explanation: Uninstall or do not install any Debian-originated package versions
Explanation: other than those in the distribution codenamed with buster or sid
Package: *
Pin: release n=buster
Pin-Priority: 900
Explanation: Debian unstable is always codenamed with sid
Package: *
Pin: release n=sid
Pin-Priority: 800
Package: *
Pin: release o=Debian
Pin-Priority: -10
適切な sources.list(5) ファイルと上記のプリファレンスファイルにより、以下のコマンドのいずれかで、リリース
コード名が buster である最新バージョンにアップグレードできます。
apt-get install package-name
apt-get upgrade
apt-get dist-upgrade
以下のコマンドで、指定したパッケージを sid ディストリビューションの最新バージョンにアップグレードしま
す。それ以降、apt-get upgrade は buster バージョンのパッケージが更新されていれば buster の最新版に、sid
バージョンのパッケージが更新されていれば sidの最新版にアップグレードします。
apt-get install package/sid
ファイル
/etc/apt/preferences
バージョンプリファレンスファイル。 ここに "pin"の設定を行います。 つまり、別々の取得元や異なるディス
トリビューションのバージョンの、 どこからパッケージを取得するかを設定します。 設定項目:
Dir::Etc::Preferences
/etc/apt/preferences.d/
バージョンプリファレンスファイル断片。 設定項目: Dir::Etc::PreferencesParts
関連項目
apt-get(8) apt-cache(8) apt.conf(5) sources.list(5)
バグ
APT バグページ[1] をご覧ください。 APT のバグを報告する場合は、 /usr/share/doc/debian/bug-reporting.txt
や reportbug(1) コマンドをご覧ください。
翻訳
倉澤 望 <nabetaro@debian.or.jp> (2003-2006,2009-2012), Takuma Yamada <tyamada@takumayamada.com> (2016),
Debian JP Documentation ML <debian-doc@debian.or.jp>
この翻訳文書には未訳部分が含まれている可能性があることに 注意してください。 翻訳がオリジナルに追従できて
いない場合、 内容を失わないようにこのようにしています。
著者
[FAMILY Given]
注記
1. APT バグページ
http://bugs.debian.org/src:apt
APT 1.6.17 15 8 月 2015 APT_PREFERENCES(5)