APT.CONF(5)

名前
apt.conf - APT の設定ファイル

説明

/etc/apt/apt.conf は、APT スイートの全ツールで使用するメイン設定ファイルです。しかし、間違いなくオプションを設定しておくだけの場所などではありません。そのため、APT スイートは統一環境を提供するため、共通のコマンドラインパーサを共有しています。

APT ツールの起動時に、設定ファイルを以下の順番で読み込みます。

    1. APT_CONFIG 環境変数で指定したファイル (存在する場合)

    2. Dir::Etc::Parts にあるすべてのファイルを英数字の昇順になります。ファイル名には拡張子がないか、"conf" となっており、英数字、ハイフン (-)、アンダースコア (_)、ピリオド (.) で構成されています。そうでなければ、Dir::Ignore-Files-Silently 設定リストのパターンに一致するもの以外に対して、ファイルを無視するという注意を APT が出力します。一致する場合は黙って無視します。

    3. Dir::Etc::Main で指定される、メイン設定ファイル

    4. コマンドラインオプションにより、設定ディレクティブの上書きや設定ファイルの追加読み込みができます。

構文

設定ファイルは、機能グループごとに系統立てられたオプションを木構造で表します。オプションの指定は、2 つのコロンで区切ります。例えば APT::Get::Assume-Yes は、APT ツールグループの Get ツール用オプションです。オプションは、親グループからは継承しません。

設定言語の構文は、bind や dhcp のような ISC ツールをモデルにしています。// で始まる行はコメントとして扱われます (無視)。同様に C/C++ のコメントのような /* と */ の間もコメントとして扱います。いずれの行も、APT::Get::Assume-Yes "true"; のような形式です。引用符と行末のセミコロンは必須です。値は1行でなければならず、文字列結合はありません。値の中にバックスラッシュや余計な引用符があってはいけません。オプション名は、英数字と "/-:._+" が使用できます。以下のように波カッコを使うと、新しいスコープを開くことができます。

    APT {
      Get {
        Assume-Yes "true";
        Fix-Broken "true";
      };
    };

また適宜改行することで、より読みやすくなります。リストは、開いたスコープ、クォートで囲まれた 1 単語、そしてセミコロンと続けることで作成できます。セミコロンで区切って、複数のエントリを表せます。

    DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};

/usr/share/doc/apt/examples/configure-index.gz は一般的な設定ファイルのサンプルです。どのように設定するか参考になるでしょう。

設定項目の名前にある文字の大小は、重要ではありません。そのため、前述の例を dpkg::pre-install-pkgs とすることもできます。

前述した DPkg::Pre-Install-Pkgs の例で見られるように、リストを定義した場合、設定項目名はオプションになります。名前を指定しない場合、新しいエントリは、単純に新しいオプションをリストに追加します。名前を指定して同様にすると、あらゆる他の選択肢をオプションに再割り当てし、オプションを上書きできます。

#include (これは廃止予定でサポートしない他の実装もあります) と #clear の 2 つの特別なコマンドがあります。#include は指定したファイルを取り込みます。ファイル名がスラッシュで終わった場合には、そのディレクトリをすべて取り込みます。#clear は、設定ツリーの一部を削除するのに使用します。指定した要素と、それ以下の要素を削除します (これらの行も、セミコロンで終わる必要があることに注意してください)。

#clear コマンドは、リストや完全なスコープを削除する唯一の方法です。スコープの再オープン (や後述する :: スタイル)は、それまで書いたエントリを上書きしません。オプションでは新しい値を与えて上書きするしかありませんが、リストやスコープは上書きできません。クリアされるだけです。

すべての APT ツールでは、コマンドラインで任意の設定ディレクティブを指定できる -o オプションが使用できます。構文は、完全なオプション名 (例: APT::Get::Assume-Yes) に続き等号、その後オプションの新しい値となります。リスト名に続き :: を加えることで、リストを追加できます (疑問に思われたように、スコープ構文はコマンドラインで使用できません)。

:: を用いたリストへの項目追加は、1 行で 1 項目の場合にのみ使用でき、スコープ構文と組み合わせるべきではないことに注意してください (スコープ構文には暗黙で :: が追加されます)。両方の構文を同時に使用すると、「他のオプションと同様に名前と共に動作する、通常ではありえない名前 "::" のオプションである」といった、(残念なことに) 複数のユーザに渡るバグの引き金になります。たくさんの問題の中には、リストに追加しようと誤った構文で複数行書いたユーザが、このオプション "::" を最後に割り当てようとして、正反対の結果を得るということも含まれます。APT の次期バージョンでは、この誤用を検出すると、動作を停止しエラーを上げるようになります。そのため、APT がこの件で明白にエラーを吐かない限りは、自分でそのような構文を修正してください。

APT グループ

このオプショングループは、ツール全体に影響のある、一般的な APT の振る舞いを制御します。

Architecture
    システムアーキテクチャ - ファイルを取得したり、パッケージリストを解析するときに使用するアーキテクチャをセットします。内部でのデフォルトは、apt をコンパイルしたアーキテクチャです。

Architectures
    システムがサポートする、すべてのアーキテクチャです。例えば、amd64 (x86-64 とも呼ばれます) 命令セットを実装した CPU は、i386 (x86) 命令セット用にコンパイルされたバイナリも実行できます。このリストは、ファイルを取得しパッケージリストを解析する際に利用されます。初期のデフォルト値は、常にシステムのネイティブアーキテクチャ (APT::Architecture) です。dpkg --add-architecture を用いて、外部アーキテクチャをデフォルトリストに追加します。

Build-Profiles
    構築依存の解決にあたって有効になっているビルドプロファイルを名前空間の「profile.」接頭辞を取り除いたもの全ての一覧です。デフォルトではこの一覧は空です。dpkg-buildpackage(1) で利用される DEB_BUILD_PROFILES はこの一覧よりも優先されます。

Default-Release
    ひとつ以上のバージョンがある場合に、パッケージをインストールを行うデフォルトリリースです。リリース名や、コード名、リリースバージョンがあります。例えば 'stable', 'testing', 'unstable', 'wheezy', 'jessie', '4.0', '5.0*' となります。apt_preferences(5) も参照してください。

Ignore-Hold
    保留パッケージの無視 - このグローバルオプションは、問題解決器に保留と指定したパッケージを無視します。

Clean-Installed
    デフォルトで有効です。on の時、autoclean 機能は、ダウンロードできなくなったパッケージを、すべてキャッシュから削除します。off の場合、ローカルにインストールされているパッケージは、削除対象から外します。しかし、 APT はキャッシュから削除したパッケージの再インストール方法を、直接提供するわけではないことに注意してください。

Immediate-Configure
    デフォルトは on です。dpkg(1) の呼び出し失敗の影響を最小限にするため、インストール・更新操作の中で、APT は不可欠パッケージや重要パッケージを、可能な限り早くインストールするようになります。このオプションを無効にすると、以下のように、重要パッケージを特別パッケージと同様に扱うようになります。パッケージ A の展開とその設定の間に、パッケージ B や C などの関係ない、たくさんの他のパッケージの展開と設定が行えます。dpkg(1) の呼び出しに失敗した場合 (例: パッケージ B のメンテナスクリプトでエラー発生)、システムの状態は、パッケージ A は展開したが未設定になります。そのため、A に依存したパッケージの動作が保証されなくなり、A への依存関係は、もう満たせません。

    即時 (immediate) フラグは事前依存関係と等価なため、即時設定マーカも潜在的に、循環依存関係の問題に対して適用されます。理論上 APT は、即時設定不能と認識し、中断し、操作を継続するためにこのオプションを一時的に無効にするよう提案できます。ここで言う「理論上」という言葉に注意してください。現実世界では、安定版ではないバージョンでも、この問題にはほとんど遭遇していませんし、問題のパッケージの依存関係が誤っているか、システムの状態がすでに破損している場合に発生していました。そのため、盲目的にこのオプションを無効にするべきではありません。前述のシナリオを解決する方法の、1つにしかすぎないのです。

    このオプションを無効にして dist-upgrade のような大きな操作を実行する前に、パッケージに install を明示して、即時設定が行われないようにするべきです。ですが、動作の改善とアップグレードプロセスの修正のため、以下のバグリンクから、問題をディストリビューションと APT チームにも報告していただきたいです。

Force-LoopBreak
    何をしようとしているのか本当に判っているのでなければ、絶対にこのオプションを有効にしないでください。不可欠 (essential) パッケージ同士で、競合 (Conflicts) /競合や競合/事前依存 (Pre-Depend) のループに落ち込んだときに、不可欠パッケージを一時的に削除してループを抜けられるようにします。そんなループはあり得ないはずで、あるとすれば重大なバグです。このオプションは、tar, gzip, libc, dpkg, dash とそれらが依存しているパッケージ以外の不可欠パッケージで動作します。

Cache-Start, Cache-Grow, Cache-Limit
    APT は、バージョン 0.7.26 から、利用できる情報を格納するため、サイズ可変なメモリマップキャッシュファイルを使用します。Cache-Start は、キャッシュサイズが増大していくヒントとして動作し、従って APT が起動時に要求するメモリ量です。デフォルト値は、20971520 バイト (~20 MB) です。この領域の量が、APT に利用可能になっている必要があることに注意してください。そうでなければ、無様に失敗することになります。そのため、メモリに制限のあるデバイスで、たくさんのソースが設定され、それが増加していくシステムでは、この値をより低くしておくべきです。Cache-Grow は、Cache-Start が足りなくなったという領域定義イベントにより、どの程度キャッシュサイズを増加させるかを、バイト数で定義します。デフォルトは 1048576 (~1 MB) です。この値は全情報を格納できる量になるか、Cache-Limit に達するまで、繰り返し適用されます。Cache-Limit のデフォルトは 0 で、無制限です。Cache-Grow に 0 をセットすると、キャッシュの自動増加を無効にします。

Build-Essential
    構築依存関係で不可欠なパッケージを定義します。

Get
    Get サブセクションは apt-get(8) ツールを制御します。このオプションの詳細は apt-get(8) の文書を参照してください。

Cache
    Cache サブセクションは apt-cache(8) ツールを制御します。このオプションの詳細は apt-cache(8) の文書を参照してください。

CDROM
    CDROM サブセクションは apt-cdrom(8) ツールを制御します。このオプションの詳細は apt-cdrom(8) の文書を参照してください。

ACQUIRE グループ

オプションの Acquire グループは、パッケージのダウンロードやダウンロードに関して責任を持つ、様々な「取得 (acquire) 方法」 を制御します (sources.list(5) も参照)。

Check-Valid-Until
    セキュリティ関連のオプションで、デフォルトは true です。Release ファイルの有効期限検証により、長期間のリプレイ攻撃を防ぎます。さらに、例えばユーザが、もう更新されないミラーサイトを識別するのを支援します。しかしこの機能は、ユーザのシステム時計が正確であることに依存しています。アーカイブメンテナは、Valid-Until ヘッダがある Release ファイルを作成するよう推奨されていますが、このヘッダを付与しない、またはより厳密な値が必要な場合、以下の Max-ValidTime オプションを使用できます。

Max-ValidTime
    Release ファイルを作成してから (Date ヘッダ)、有効であるとみなせる最大時間 (秒数) です。Release ファイル自体に Valid-Until ヘッダがある場合、その 2 つのうち、より早い日付が有効期間として使用されます。デフォルト値は 0 で「無期限」を表します。オプション名にアーカイブのラベルを付与することで、アーカイブ固有の設定を作成できます。

Min-ValidTime
    Release ファイルを作成してから (Date ヘッダ)、有効であるとみなせる最小時間 (秒数) です。Valid-Until がある頻繁に更新されるアーカイブの、ほとんど更新されない (ローカル) ミラーを使用する場合に、完全に有効期限チェックを無効にする代わりに使用してください。オプション名にアーカイブのラベルを付与することで、アーカイブ固有の設定を作成できます。

PDiffs
    (Packages のような) インデックス全体をダウンロードするのではなく、PDiffs と呼ばれる差分をダウンロードしようとします。デフォルトでは True です。

    PDiffs の使用を制限するふたつのサブオプションがあります。FileLimit では、ファイルを更新するのに、PDiff ファイルをダウンロードできる最大数を指定します。一方、SizeLimit は、対象ファイルのサイズに対して、全パッチサイズの最大パーセンテージを指定します。どちらの制限を超えても、パッチをダウンロードする代わりに、完全なファイルをダウンロードします。

Queue-Mode
    キューモード - Queue-Mode は、APT がどのように並列接続を行うか、host か access で指定できます。host は、ターゲットホストごとに 1 接続を開きます。access は、URI タイプごとに 1 接続を開きます。

Retries
    リトライの回数を設定します。0 でない場合、APT は失敗したファイルに対して、与えられた回数だけリトライを行います。

Source-Symlinks
    ソースアーカイブのシンボリックリンクを使用します。true がセットされているとき、可能ならコピーの代わりにシンボリックリンクを張ります。true がデフォルトです。

http
    http::Proxy には、HTTP URI で使用するデフォルトプロキシを設定します。http://[[user][:pass]@]host[:port]/ という標準形で表します。ホストごとのプロキシを、http::Proxy::<host> という形で指定できます。この時、プロキシを使用しないという意味の特殊キーワード DIRECT も使用できます。上記の設定をなにも指定しないと、環境変数 http_proxy を使用します。

    HTTP/1.1 準拠のプロキシキャッシュの制御について 3 種類の設定があります。No-Cache はプロキシに対して、いかなる時もキャッシュを使用しないと伝えます。Max-Age は、プロキシのキャッシュにあるインデックスファイルの最大利用期間 (秒) を設定します。No-Store は、リクエストしたアーカイブファイルを、プロキシがキャッシュに格納しないように指定します。これにより (大きな) .deb ファイルでプロキシのキャッシュが汚れるのを防げます。

    timeout オプションは、この方法でのタイムアウトまでの時間を設定します。これには、接続のタイムアウトとデータのタイムアウトが含まれています。

    Acquire::http::Pipeline-Depth の設定は、例えばレイテンシの高い接続で有益な、HTTP パイプライン (RFC 2616 8.1.2.2 節) を有効にするのに使用できます。これにより、パイプラインを用いて送信する、リクエスト数を指定できます。旧バージョンの APT は、デフォルトで 10 でしたが、HTTP/1.1 仕様に対応しないウェブサーバやプロキシの数が、増え続けることによる問題を回避するため、デフォルト値は 0 (= 無効) です。

    Acquire::http::AllowRedirect は APT がリダイレクトをたどるかどうかを制御します。デフォルトでは有効です。

    使用する帯域を制限するには、Acquire::http::Dl-Limit に秒あたりのキロバイトで整数値を与えます。デフォルト値は 0 で、制限を解除し、使用できる帯域をすべて使おうとします。このオプションは暗黙的に、同時に複数のサーバからダウンロードしなくなることに注意してください。

    クライアントが既知の識別子を使用する場合にのみ、プロキシがアクセスを許可する場合、Acquire::http::User-Agent を使用して、http でダウンロードするための、異なる User-Agent を設定できます。

    Acquire::http::Proxy-Auto-Detect を使って利用する http プロキシを検出するための外部コマンドを指定できます。APT はコマンドが標準出力に http://proxy:port/ 形式でプロキシを出力することを期待しています。これは全体を指定する Acquire::http::Proxy よりも優先されますが Acquire::http::Proxy::$HOST 経由でセットした特定のホストのプロキシ設定はこれよりも優先されます。avahi を利用する実装例については squid-deb-proxy-client(1) パッケージを見てください。このオプションは古い ProxyAutoDetect よりも優先されます。

https
    Cache-control, Timeout, AllowRedirect, Dl-Limit, proxy の各オプションは、HTTPS URI でも http メソッドと同様に動作します。また、明示的に値を指定しない場合のデフォルト値も同様です。Pipeline-Depth オプションはまだサポートしていません。

    CaInfo サブオプションは、信頼済み証明書情報の保持場所を指定します。<host>::CaInfo は、同様のホストごとのオプションです。Verify-Peer 真偽値サブオプションは、信頼済み証明書に対してサーバのホスト証明書を、検証するかどうかを決定します。<host>::Verify-Peer は、同様のホストごとのオプションです。Verify-Host 真偽値サブオプションは、サーバのホスト名を検証するかどうかを決定します。<host>::Verify-Host は、同様のホストごとのオプションです。SslCert は、クライアント認証に使用する証明書を決定します。<host>::SslCert は、同様のホストごとのオプションです。SslKey は、クライアント認証に使用する秘密鍵を決定します。<host>::SslKey は、同様のホストごとのオプションです。SslForceVersion は、デフォルトで使用する SSL のバージョンを上書きします。'TLSv1' か 'SSLv3' という文字列を指定できます。<host>::SslForceVersion は、同様のホストごとのオプションです。

ftp
    ftp::Proxy は、FTP URI を使用する際のデフォルトプロキシを設定します。ftp://[[user][:pass]@]host[:port]/ という標準形で表します。ホストごとのプロキシを、ftp::Proxy::<host> という形で指定できます。この時、プロキシを使用しないという意味の特殊キーワード DIRECT も使用できます。上記の設定をなにも指定しないと、環境変数 ftp_proxy を使用します。FTP プロキシを使用するには、設定ファイルに ftp::ProxyLogin スクリプトを設定する必要があります。このエントリには、接続する際にプロキシサーバに送信するコマンドを設定します。どのようにするのかは /usr/share/doc/apt/examples/configure-index.gz の例を参照してください。URI を構成するコンポーネントに対応する置換変数は、$(PROXY_USER), $(PROXY_PASS), $(SITE_USER), $(SITE_PASS), $(SITE), $(SITE_PORT) です。

    timeout オプションは、この方法でのタイムアウトまでの時間を設定します。これには、接続のタイムアウトとデータのタイムアウトが含まれています。

    設定のいくつかは、パッシブモードを制御するものです。一般的に、パッシブモードのままにしておく方が安全で、ほぼどんな環境でも動作します。しかしある状況下では、パッシブモードが無効のため、代わりにポートモード FTP を使用する必要があります。この設定は、プロキシを通る接続や特定のホストへの接続全般に有効です (設定例はサンプル設定ファイルを参照してください)。

    環境変数 ftp_proxy に HTTP URL を指定すると FTP over HTTP のプロキシが利用可能になります。構文は前述の http についての説明を参照してください。設定ファイルの中でこれをセットすることはできません。また、効率が悪いため FTP over HTTP を使用するのは推奨しません。

    ForceExtended の設定は RFC2428 の EPSV コマンドと EPRT コマンドの使用を制御します。デフォルトでは false で、コントロールコネクションが IPv6 の時にのみ、このコマンドを使用するということです。これを true にセットすると、IPv4 コネクションでも、強制的にこのコマンドを使用します。ほとんどの FTP サーバは RFC2428 をサポートしていないことに注意してください。

cdrom
    cdrom メソッドを利用する URI では、設定できるオプションはマウントポイントだけです。/etc/fstab で設定されているように、CD-ROM (または DVD など) ドライブのマウントポイントを cdrom::Mount に設定しなければなりません。マウントポイントが fstab に記述できない場合、かわりにマウント・アンマウントコマンドも使用できます。構文は、cdrom ブロックを

        /cdrom/::Mount "foo";

    の形で記述します。スラッシュを後につけるのが重要です。アンマウントコマンドは UMount で指定することができます。

gpgv
    GPGV URI 用の唯一のオプションは、gpgv に渡す追加パラメータのオプションである、gpgv::Options です。

CompressionTypes
    acquire メソッドが理解できる、圧縮法のリストです。Packages のようなファイルは、さまざまな圧縮形式が利用できます。デフォルトでは acquire メソッドは、bzip2, lzma, gzip で圧縮されたファイルを伸張できます。この設定では、より多くの形式を、オンザフライで追加したり、使用するメソッドで変更したりできます。構文は以下のようになります。

        Acquire::CompressionTypes::FileExtension "Methodname";

    また、Order サブグループを使用して、取得システムが、圧縮ファイルのダウンロードを試みる順番を定義できます。取得システムは先頭のものを試行し、エラーが発生すると次の圧縮タイプのダウンロードを開始します。そのため、どれかを他のものより優先したい場合、単にそのタイプを先頭に追加してください。まだ追加していないデフォルトタイプは、リストの最後に追加されます。つまり、

        Acquire::CompressionTypes::Order:: "gz";

    とすると、gzip で圧縮されたファイルを bzip2 や lzma よりも優先的に使用します。もし lzma を gzip や bzip2 よりも優先するべきなら、設定を以下のようにしてください。

        Acquire::CompressionTypes::Order { "lzma"; "gz"; };

    bz2 は自動的に追加されるため、明示する必要はありません。

    実行時に Dir::Bin::Methodname をチェックすることに注意してください。このオプションが設定されていると、ファイルがある場合に、この方法しか使われなくなります。例えば、bzip2 メソッド (内蔵) の設定は以下になります。

        Dir::Bin::bzip2 "/bin/bzip2";

    また、コマンドラインに指定した一覧のエントリは設定ファイルに指定したものの後、デフォルトエントリの前に追加されることに注意してください。この場合、設定ファイルに指定した内容よりも前に指定するには、オプションを直接 (一覧スタイルでなく) 指定してください。これにより定義された一覧が上書きされ、このタイプのもののみ定義されます。

    特殊なタイプ uncompressed は、非圧縮ファイルを優先するために使用できますが、ほとんどのアーカイブは非圧縮ファイルを提供しないため、ほとんどローカルミラーでのみ有効になることに注意してください。

GzipIndexes
    gzip 圧縮インデックス (Packages, Sources, Translations) をダウンロードする際、ローカルで展開せずに、gzip で圧縮したままにします。これにより、かなりディスク領域を節約できますが、ローカルパッケージキャッシュを構築する際に、CPU の能力を余計に消費します。デフォルトでは false です。

Languages
    Languages サブセクションは、Translation ファイルをダウンロードし、APT が説明の翻訳を表示しようとする場合の挙動を制御します。APT はリストの先頭にある言語で、まず有効な説明を表示しようとします。Languages は 短い形式や長い形式の言語コードで、定義できます。すべてのアーカイブが、全言語の Translation ファイルを、提供しているわけではないことに注意してください。長い言語コードは特に見かけません。

    デフォルトのリストには "environment" と "en" があります。"environment" はここでは特殊な意味があります。これは実行時に、LC_MESSAGES 環境変数から取得した言語コードに置換されます。また、このリストには、同じコードが2度現れないように確認してください。LC_MESSAGES が "C" に設定されているだけの場合、Translation-en ファイルを (利用可能であれば) 使用します。強制的に APT が Translation ファイルを使用しないようにするには、Acquire::Languages=none と設定してください。"none" はもうひとつの特殊な意味を持つコードで、適切な Translation ファイルの検索を中止します。環境から実際の言語を指定されなかった場合、この値を用いて APT に翻訳をダウンロードさせます。そのため、以下の設定例では、英語ロケールの場合 "en, de" の順になり、ドイツ語ロケールの場合 "de, en" の順になります。"fr" はダウンロードされますが、フランス語ロケール ("fr, de, en" の順になる) でないと、APT が使用しないことに注意してください。

        Acquire::Languages { "environment"; "de"; "en"; "none"; "fr"; };

    注意: 異なる環境 (例: 異なるユーザや他のプログラム) で APT を実行したことによる問題を防ぐため、/var/lib/apt/lists/ にあるすべての Translation ファイルを、リストの最後 (暗黙の "none" の後) に追加します。

ForceIPv4
    ダウンロード時に IPv4 プロトコルだけを使うように強制します。

ForceIPv6
    ダウンロード時に IPv6 プロトコルだけを使うように強制します。

ディレクトリ

Dir::State セクションは、ローカル状態情報に関するディレクトリを保持します。lists は、ダウンロードしたパッケージ一覧を格納するディレクトリで、status は dpkg(1) の状態ファイルの名前を表します。preferences は APT の preferences ファイルの名前です。Dir::State には、/ や ./ で始まらないサブアイテムすべてに、前に付加するデフォルトディレクトリを含んでいます。

Dir::Cache は、ローカルキャッシュ情報に関する場所を格納しています。これは、ダウンロード済アーカイブの場所を示す Dir::Cache::archives と同様に、srcpkgcache と pkgcache のパッケージキャッシュの場所になります。それぞれに空文字をセットすることで、キャッシュの生成を無効にできます。これにより起動時に遅くなりますが、ディスク容量を節約できます。おそらく、srcpkgcache よりも pkgcache を無効にすることが多いと思います。Dir::State と同様、Dir::Cache はデフォルトディレクトリを含んでいます。

Dir::Etc は設定ファイルの場所を格納しています。sourcelist はソースリストの場所を示し、main はデフォルトの設定ファイルです。(APT_CONFIG で設定ファイルを指定された場合のみ、この設定の効果があります)

Dir::Parts 設定は、指定されたディレクトリから、字句単位の全ての設定断片を読みこみます。これを設定した後に、メイン設定ファイルをロードします。

バイナリプログラムは Dir::Bin で指定します。Dir::Bin::Methods はメソッドハンドラの場所を指定し、gzip, bzip2, lzma, dpkg, apt-getdpkg-sourcedpkg-buildpackage, apt-cache はそれぞれプログラムの場所を指定します。

設定項目 RootDir は特別な意味を持ちます。設定されていると、Dir:: のすべてのパスは、絶対パスとして指定してもRootDir からの相対パスとなります。そのため例えば、RootDir が /tmp/staging にセットされており、Dir::State::status が /var/lib/dpkg/status にセットされている場合、status ファイルを /tmp/staging/var/lib/dpkg/status から探します。

Ignore-Files-Silently リストは、断片ディレクトリの解析中に、APT が黙って無視をするファイルを指定します。デフォルトではそれぞれ、.disabled, ~, .bak, .dpkg-[a-z]+ で終わるものが、黙って無視されます。最後のデフォルト値を見ればわかる通り、このパターンには正規表現を使用できます。

DSELECT での APT

dselect(1) メソッドで APT を使用する際、いくつかの設定ディレクティブでデフォルトの動作を制御します。これは DSelect セクション以下にあります。

Clean
    キャッシュクリーンモード - この値は always, prompt, auto, pre-auto, never のうちひとつを取ります。always と prompt は更新後、全パッケージをキャッシュから削除します。prompt (デフォルト) では条件付きで削除します。auto はダウンロード不能パッケージ (例えば新バージョンで置き換えられたもの) を削除します。pre-auto はこの動作を、新パッケージをダウンロードする直前に行います。

options
    この変数の内容は、install 時のコマンドラインオプションと同様に apt-get(8) に渡されます。

Updateoptions
    この変数の内容は、update 時のコマンドラインオプションと同様に apt-get(8) に渡されます。

PromptAfterUpdate
    true の場合、dselect(1) の [U]pdate 実行時に、続行のためのプロンプトを毎回表示します。デフォルトはエラーが発生した場合のみです。

APT が DPKG(1) を呼ぶ方法

いくつかの設定項目で APT がどのように dpkg(1) を呼び出すかを制御できます。DPkg セクションにあります。

options
    dpkg(1) に渡すオプションのリストです。オプションは、リスト記法を使用して指定しなければなりません。また、各リストは単一の引数として dpkg(1) に渡されます。

Pre-Invoke, Post-Invoke
    dpkg(1) を呼び出す前後で実行するシェルコマンドのリストです。options のようにリスト記法で指定しなければなりません。コマンドは /bin/sh を通して呼び出され、何か問題があれば APT が異常終了します。

Pre-Install-Pkgs
    dpkg(1) を呼び出す前に実行するシェルコマンドのリストです。options のようにリスト記法で指定しなければなりません。コマンドは /bin/sh を通して呼び出され、何か問題があれば、APT は異常終了します。APT はインストールしようとする全 .deb ファイルのファイル名を、要求したファイルディスクリプタについて1 行ずつ、デフォルトではコマンドの標準入力に送ります。

    このプロトコルのバージョン 2 では、(プロトコルのバージョンや APT 設定スペース、パッケージを含む) 詳細情報やファイル、変更されているバージョンを出力します。バージョン 3 では出力の各バージョンにアーキテクチャと MultiArch フラグが追加されています。

    コマンド cmd で利用するプロトコルのバージョンは DPkg::Tools::options::cmd::Version の設定により選択でき、デフォルトはバージョン 1 となっています。リクエストしたバージョンを APT がサポートしていない場合はサポートしている最大のバージョンの情報を代わりに送ります。

    情報の送信に利用するファイルディスクリプタは DPkg::Tools::options::cmd::InfoFD によりリクエストでき、デフォルトは 0 で標準入力を指定します。バージョン 0.9.11 から利用可能となりました。環境変数 APT_HOOK_INFO_FD を見ることでこのオプションに対応していることを検出でき、それには確認として利用しているファイルディスクリプタの番号が収録されています。

Run-Directory
    APT は dpkg(1) を呼び出す前にこのディレクトリに移動します。デフォルトは / です。

Build-options
    これらのオプションは、パッケージのコンパイル時に dpkg-buildpackage(1) に渡されます。デフォルトでは署名を無効にし、全バイナリを生成します。

  dpkg トリガの使い方 (および関連オプション)

APT は、複数の dpkg(1) 呼び出しトリガを、積極的に行わせる方法で dpkg(1) を呼び出せます。オプションがなければ、実行のたびに dpkg(1) は一度トリガを引くだけです。そのため、このオプションを有効にすると、インストールやアップグレードにかかる時間を、短くできます。将来、このオプションを、デフォルトで有効にする方向であることに注意してください。しかし、APT が dpkg(1) を呼ぶ方法といった大幅な変更を行うには、もっとたくさんのテストが必要です。したがって、このオプションは現在実験中で、本番環境では使用するべきではありません。さらに、すべてのフロントエンドが、実際には全パッケージを設定中なのに、半分 (もしくはそれ以上) の時間 100% のままとなり、進捗レポートを壊してしまいます。

APT がこのオプションをサポートすることや、将来このオプションが (大きな) トラブルの原因にならないことは、保証されないことに注意してください。このオプションの現在のリスクと問題を理解し、テストを手伝う十分な勇気があるなら、新しい設定ファイルを作成し、オプションの組み合わせのテストをお願いしたいです。遭遇したどんなバグ、問題、改善点を、どのようなオプションを使用したかと添えて報告してください。デバッグに役立つ可能性のある情報を dpkg(1) に問い合わせることを提案します (例: dpkg --audit を参照)。防御的なオプションの組み合わせは、以下のようになります。

    DPkg::NoTriggers "true";
    PackageManager::Configure "smart";
    DPkg::ConfigurePending "true";
    DPkg::TriggersPending "true";

DPkg::NoTriggers
    dpkg(1) を呼び出すすべてのフラグ (ConfigurePending 呼び出し以外) を付与しません。実際にこれが何を意味するのか興味があるなら、dpkg(1) を参照してください。要するに、追加呼び出しで明示的に呼び出されない限り、このフラグがあると、dpkg(1) はトリガを実行しません。また、古いバージョンの APT に、意味がわずかに異なる、このオプションが存在することに注意してください (ドキュメントなし)。以前のこのオプションは、dpkg(1) の呼び出し設定に、--no-triggers を追加するだけでした。現在 APT は、このフラグを、展開呼び出しや削除呼び出しにも追加します。

PackageManager::Configure
    有効な値は "all", "smart", "no" です。デフォルト値は "all" で、APT にすべてのパッケージを設定させます。"smart" では、他のパッケージを展開する前に、設定が終わっていなければならないパッケージ (事前依存) のみを設定し、残りを ConfigurePending オプション (後述) で生成した dpkg(1) 呼び出しで設定します。他方では、"no" は何も設定しません。設定については dpkg(1) にすべて依存します (事前依存があると失敗します)。このオプションを all 以外の値に設定すると、次のオプションを暗黙的に有効にします。そうしないと、設定が完了せず、起動しなくなる可能性があるからです。

DPkg::ConfigurePending
    このオプションがセットされると、dpkg(1) にすべての必要な設定とトリガを扱わせるように、APT は dpkg --configure --pending を呼び出します。前述のオプションが all に設定されていない場合、このオプションは、デフォルトで有効となります。しかし、APT を複数回連続して実行する場合 (インストーラなど) には、無効にしたほうが便利かもしれません。このシナリオでは、最後以外のすべての実行で、無効にできます。

DPkg::TriggersPending
    installed として認識されない保留トリガがあるパッケージを、smart 設定するのに便利です。dpkg(1) は現在、先行依存関係には無力な unpacked として扱います (debbugs #526774 参照)。このパッケージを設定するのに必要なトリガのみでなく、すべてのトリガを処理することに注意してください。

OrderList::Score::Immediate
    不可欠パッケージ (と、その依存しているパッケージ) は展開を終えると、すぐに設定するべきです。アップグレードプロセスの初期に、設定してしまうのが良いのですが、現在 DPkg::TriggersPending を要求しているパッケージも同時に行うため、かなり多くのトリガ (すべてが必要とは限らない) を処理することになります。不可欠パッケージは、デフォルトではスコアを高く設定されていますが、即時フラグは相対的に低くなっています (先行依存パッケージのほうが高い)。このオプションと、これと同じグループに属するものは、このスコア付けを変更するのに使用します。以下の例では、デフォルト値を変更しています。

        OrderList::Score {
        	Delete 500;
        	Essential 200;
        	Immediate 10;
        	PreDepends 50;
        };

PERIODIC オプションと ARCHIVES オプション

オプションの APT::Periodic グループと APT::Archives グループは、/etc/cron.daily/apt スクリプトを使用して、apt の定期更新の挙動を設定します。このオプションのドキュメントは、このスクリプトの先頭を参照してください。

デバッグオプション

Debug:: セクションのオプションを有効にすると、apt ライブラリを利用するプログラムの標準エラー出力に、デバッグ情報を送るようになったり、主に apt の挙動をデバッグするのに便利な、特殊モードを有効にしたりできます。普通のユーザには、ほとんどのオプションは興味がないでしょうが、以下のものは興味を引くかもしれません。

    • Debug::pkgProblemResolver は、dist-upgrade, upgrade, install, remove, purge で行われた判断についての出力を有効にします。

    • Debug::NoLocking はファイルロックをすべて無効にします。これは、非 root ユーザとして操作 (例えば apt-get -s install) を行う場合に使用します。

    • Debug::pkgDPkgPM は apt が実際に dpkg(1) を起動する際の各コマンドラインを表示します。

    • Debug::IdentCdrom は CD-ROM ID にある statfs データを含めないようにします。

以下は apt に対するデバッグオプションのすべてです。

Debug::Acquire::cdrom
    cdrom:// ソースへのアクセスに関する情報を出力します。

Debug::Acquire::ftp
    FTP を用いたパッケージのダウンロードに関する情報を出力します。

Debug::Acquire::http
    HTTP を用いたパッケージのダウンロードに関する情報を出力します。

Debug::Acquire::https
    HTTPS を用いたパッケージのダウンロードに関する情報を出力します。

Debug::Acquire::gpgv
    gpg を用いた暗号署名の検証に関する情報を出力します。

Debug::aptcdrom
    CD-ROM にあるパッケージ集合に対して、アクセスするプロセスについての情報を出力します。

Debug::BuildDeps
    apt-get(8) での構築依存関係解決のプロセスを説明します。

Debug::Hashes
    apt ライブラリが生成した、暗号化ハッシュを出力します。

Debug::IdentCDROM
    CD-ROM の ID を生成する際に statfs という、CD-ROM ファイルシステムにある使用済・未使用ブロックの数からの情報を含めないようにします。

Debug::NoLocking
    ファイルのロックをすべて無効にします。例えば、同時にふたつの 「apt-get update」 を実行できるようになります。

Debug::pkgAcquire
    グローバルダウンロードキューに対する項目の追加・削除の際にログを出力します。

Debug::pkgAcquire::Auth
    ダウンロードしたファイルのチェックサムや暗号署名の確認に関する、状態メッセージやエラーを出力します。

Debug::pkgAcquire::Diffs
    パッケージインデックスリスト差分のダウンロード・適用時の、情報やエラーを出力します。

Debug::pkgAcquire::RRed
    インデックス全体ではなくインデックス差分のダウンロードの際に、apt パッケージリストへのパッチ適用に関する情報を出力します。

Debug::pkgAcquire::Worker
    実際のダウンロードを行う際の、サブプロセスとのやりとりをログに出力します。

Debug::pkgAutoRemove
    パッケージの自動インストールや、不要パッケージの削除に関するイベントを、ログに出力します。

Debug::pkgDepCache::AutoInstall
    依存関係解決のために、どのパッケージが自動的にインストールされたかのデバッグメッセージを生成します。これは完全な apt 依存関係解決プログラム (Debug::pkgProblemResolver を参照) ではなく、例えば apt-get install で実行された、初期の自動インストール経路に対応しています。

Debug::pkgDepCache::Marker
    ProblemResolver が動作する際に、一時保留・インストール・削除としてマークされたパッケージに関する、デバッグメッセージを生成します。各追加・削除は追加アクションのトリガとなり、これをオリジナルのエントリの下に、空白 2 個でインデントして表示します。各行は、MarkKeep, MarkDelete, MarkInstall となり、package-name <a.b.c -> d.e.f | x.y.z> (section) が続きます。ここで、a.b.c は、そのパッケージの現在のバージョン、d.e.fは、インストール予定のバージョン、x.y.z はより新しいけれどインストール対象外のバージョン (pin のスコアが低いため) です。後のふたつは、存在しない、ないしインストール中のバージョンと同じ場合、省略されます。section はパッケージが現れるセクション名です。

Debug::pkgDPkgPM
    dpkg(1) 起動時に、起動した際の正確なコマンドラインを出力します。引数は空白で区切られます。

Debug::pkgDPkgProgressReporting
    状態ファイルディスクリプタに、dpkg(1) から受信したすべてのデータと、そのデータを解析中に発生したエラーを出力します。

Debug::pkgOrderList
    apt が dpkg(1) にパッケージを渡す順番を決める、アルゴリズムのトレースを生成します。

Debug::pkgPackageManager
    dpkg(1) を呼び出す際に、実行手順を追跡した状態メッセージを出力します。

Debug::pkgPolicy
    起動時の各パッケージの優先度を表示します。

Debug::pkgProblemResolver
    依存関係解決システムの実行内容を追跡します (これは複雑な依存関係の問題に遭遇した場合にのみ、適用されます)。

Debug::pkgProblemResolver::ShowScores
    全インストール済みパッケージの、pkgProblemResolver が計算したスコアを一覧表示します。パッケージの説明は、Debug::pkgDepCache::Marker で説明したものと同じです。

Debug::sourceList
    /etc/apt/vendors.list から読み込んだ、ベンダの情報を出力します。

Debug::RunScripts
    aptのフックにより呼び出される外部コマンドを表示します。これには例えば、設定オプション DPkg::{Pre,Post}-Invoke や APT::Update::{Pre,Post}-Invoke があります。

サンプル

/usr/share/doc/apt/examples/configure-index.gz は、全利用可能オプション値のサンプルを参照できる、設定ファイルのサンプルです。

ファイル

/etc/apt/apt.conf
    APT 設定ファイル。 設定項目: Dir::Etc::Main

/etc/apt/apt.conf.d/
    APT 設定ファイル断片。 設定項目: Dir::Etc::Parts

関連項目

apt-cache(8), apt-config(8), apt_preferences(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>

この翻訳文書には未訳部分が含まれている可能性があることに 注意してください。 翻訳がオリジナルに追従できていない場合、 内容を失わないようにこのようにしています。

著者

Gunthorpe Jason[FAMILY Given]

[FAMILY Given]

Burrows Daniel[FAMILY Given] <dburrows@debian.org>
    Debug::* に関する最初のドキュメント

注記

1.  APT バグページ
    http://bugs.debian.org/src:apt