APT_PREFERENCES(5) | APT | APT_PREFERENCES(5) |
名前¶
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";
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.10"
で始まる perl
パッケージを、高い優先度に設定します。空白で区切り、複数のパッケージを指定できます。
Package: perl Pin: version 5.10* Pin-Priority: 1001
•汎用形式は、与えられたディストリビューションにある、すべてのパッケージ
(Release
ファイルに列挙したパッケージ)
の優先度や、FQDNで指定した、特定のインターネットサイトから取得するパッケージの優先度を割り当てます。
APT
プリファレンスファイルに書かれている汎用形式のエントリは、パッケージのグループについてのみ適用されます。例えば以下のレコードは、ローカルサイトにある全パッケージについて、高い優先度を割り当てます。
注意:
ここで使われるキーワードは、ホスト名にマッチするのに使われる
"origin"
です。以下のレコードは、ホスト名が
"ftp.de.debian.org"
で識別されるサーバ由来のすべてのバージョンに、高い優先度を割り当てます。
Release
ファイルに指定されたような、ディストリビューションの
Origin と
混同しないようにしてください。Release
ファイルにある "Origin:"
タグは、インターネットアドレスではなく、"Debian"
や "Ximian"
といった作者やベンダ名です。
以下のレコードは、アーカイブ名が
"unstable"
となっているディストリビューションに属するパッケージを、すべて低い優先度に割り当てます。
以下のレコードは、コード名が
"jessie"
となっているディストリビューションに属するパッケージのバージョンを、高い優先度に割り当てます。
以下のレコードは、アーカイブ名が
"stable"
で、リリースバージョン番号が
"7.0"
となっているリリースに属するパッケージを、すべて高い優先度に割り当てます。
Package: * Pin: origin "" Pin-Priority: 999
Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999
Package: * Pin: release a=unstable Pin-Priority: 50
Package: * Pin: release n=jessie Pin-Priority: 900
Package: * Pin: release a=stable, v=7.0 Pin-Priority: 500
正規表現と glob(7) 構文¶
APT は glob(7) 表現と、スラッシュで囲んだ正規表現による pin もサポートしています。例えば以下の例は、gnome で始まる ( glob(7) 風表現) か kde を含む (スラッシュで囲んだ POSIX の拡張正規表現) 名前の、experimental 由来のすべてのパッケージに、優先度500を割り当てます。Package: gnome* /kde/ Pin: release n=experimental Pin-Priority: 500
Package: * Pin: release n=precise* Pin-Priority: 990
APT が優先度に割り込む方法¶
APT プリファレンスファイルで割り当てた優先度 (P) は、正負の整数でなくてはなりません。これは (おおざっぱにいうと) 以下のように解釈されます。 P >= 1000パッケージがダウングレードしても、このバージョンのパッケージをインストール
990 <= P < 1000
インストールされているバージョンの方が新しいのでなければ、ターゲットリリースに含まれなくても、このバージョンのパッケージをインストール
500 <= P < 990
ターゲットリリースに属するバージョンがあったり、インストールされているバージョンの方が新しいのでなければ、このバージョンのパッケージをインストール
100 <= P < 500
他のディストリビューションに属するバージョンがあったり、インストールされているバージョンの方が新しいのでなければ、このバージョンのパッケージをインストール
0 < P < 100
このパッケージがインストールされていない場合、このバージョンのパッケージをインストール
P < 0
このバージョンのインストール禁止
特定形式のレコードが利用可能パッケージバージョンに一致した場合、最初のレコードが、パッケージバージョンの優先度を決定します。失敗して、汎用形式のレコードが利用可能パッケージバージョンに一致した場合、最初のレコードが、パッケージバージョンの優先度を決定します。
例えば、APT
プリファレンスファイルの上の方に、以下のレコードが書かれていると仮定してください。
Package: perl Pin: version 5.10* Pin-Priority: 1001 Package: * Pin: origin "" Pin-Priority: 999 Package: * Pin: release unstable Pin-Priority: 50
•バージョン番号が
"5.10"
で始まっていれば、perl
の最新の利用可能パッケージがインストールされます。バージョン
5.10*
が利用可能で、バージョン
5.14*
がインストールされている場合、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/wheezy/Release
です。これは、このディレクトリ以下にある
全パッケージに適用する、複数行のレコード
1
つから成っています。Packages
ファイルと違い Release
ファイルは、以下のようにほとんどの行が
APT
優先度の設定に関連します。
Archive: 行や Suite: 行
このディレクトリツリーに属する全パッケージのアーカイブ名です。例えば、"Archive:
stable" や "Suite: stable"
という行は、Release
ファイルの親ディレクトリツリー以下にある全パッケージが、stable
アーカイブだと指定します。APT
プリファレンスファイルでこの値を指定するには、以下の行が必要になります。
Codename: 行
Pin: release a=stable
このディレクトリツリーに属する全パッケージのコード名です。たとえば、"Codename:
jessie" という行は、Release
ファイルの親ディレクトリツリー以下にある全パッケージが、jessie
と名前のついたバージョンであると指定します。APT
プリファレンスファイルでこの値を指定するには、以下の行が必要になります。
Version: 行
Pin: release n=jessie
リリースバージョン名です。例えば、このツリーのパッケージが、Debian
リリースバージョン 7.0
に属するとします。通常
testing
ディストリビューションや
unstable
ディストリビューションには、まだリリースされていないので、バージョン番号が付きません。APT
プリファレンスファイルでこれを指定するには、以下の行のいずれかが必要になります。
Component: 行
Pin: release v=7.0 Pin: release a=stable, v=7.0 Pin: release 7.0
Release
ファイルの、ディレクトリツリーにあるパッケージのライセンスコンポーネント名です。例えば、"Component:
main"
という行は、このディレクトリ以下の全ファイルが、main
コンポーネント (Debian
フリーソフトウェアガイドラインの元でライセンスされている)
であることを表します。APT
プリファレンスファイルでこのコンポーネントを指定するには、以下の行が必要になります。
Origin: 行
Pin: release c=main
Release
ファイルのディレクトリツリーにあるパッケージの提供者名です。ほとんど共通で
Debian です。APT
プリファレンスファイルでこの提供者を指定するには、以下の行が必要になります。
Label: 行
Pin: release o=Debian
Release
ファイルのディレクトリツリーにあるパッケージのラベル名です。ほとんど共通で
Debian です。APT
プリファレンスファイルでこのラベルを指定するには、以下の行が必要になります。
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
ファイルを含んでいます。
Pin: release l=Debian
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
apt-get install package-name apt-get upgrade apt-get dist-upgrade
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
apt-get install package-name apt-get upgrade apt-get dist-upgrade
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 jessie or sid Package: * Pin: release n=jessie 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
apt-get install package-name apt-get upgrade apt-get dist-upgrade
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), Debian JP Documentation ML <debian-doc@debian.or.jp> この翻訳文書には未訳部分が含まれていることに注意してください。 翻訳がオリジナルに追従できていない場合、 内容を失わないようにこのようにしています。著者¶
[FAMILY Given]注記¶
- 1.
- APT バグページ
09 6 月 2012 | APT 0.9.7.9 |