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. バイナリ固有の設定サブツリーに設定されたすべてのオプションは、ツリーのルートに移動されます。

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

構文

設定ファイルは、機能グループごとに系統立てられたオプションを木構造で表します。オプションの指定は、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 を用いて、外部アーキテクチャをデフォルトリストに追加します。

Compressor
    この設定項目ではどの圧縮形式をサポートするのか、その形式のサポートが apt に直接組み込まれていない場合に圧縮と展開をどのように行えばいいのか、それとこの形式で何か圧縮するのにどれくらいコストがかかるのか、という値を定義します。1つの例として、以下の内容では拡張子が .reversed のコストの低いファイルについて、ファイルの作成と保存に加えてダウンロードと展開を apt に許可し、rev による圧縮と展開の際に渡すコマンドラインパラメータを追加しない設定となります:

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

Default-Release
    ひとつ以上のバージョンがある場合に、パッケージをインストールを行うデフォルトリリースです。リリース名や、コード名、リリースバージョンがあります。例えば 'stable', 'testing', 'unstable', 'stretch', 'buster', '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-Date
    Security related option defaulting to true, enabling time-related checks. Disabling it means that the machine's time cannot be trusted, and APT will hence disable all time-related checks, such as Check-Valid-Until and verifying that the Date field of a release file is not in the future.

Max-FutureTime
    Maximum time (in seconds) before its creation (as indicated by the Date header) that the Release file should be considered valid. The default value is 10. Archive specific settings can be made by appending the label of the archive to the option name. Preferably, the same can be achieved for specific sources.list(5) entries by using the Date-Max-Future option there.

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

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

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

AllowTLS
    Allow use of the internal TLS support in the http method. If set to false, this completely disables support for TLS in apt's own methods (excluding the curl-based https method). No TLS-related functions will be called anymore.

PDiffs
    (Packages のような) インデックス全体をダウンロードするのではなく、PDiffs と呼ばれる差分をダウンロードしようとします。デフォルトでは True です。または、PDiffs オプションを使用して特定の sources.list(5) エントリまたはインデックスファイルでこれを設定できます。

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

By-Hash
    (Packages のような) インデックス全体をダウンロードするのではなく、PDiffs と呼ばれる差分をダウンロードしようとします。デフォルトでは True です。または、By-Hash オプションを使用して特定の sources.list(5) エントリまたはインデックスファイルでこれを設定できます。

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

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

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

http https
    The options in these scopes configure APTs acquire transports for the protocols HTTP and HTTPS and are documented in the apt-transport-http(1) and apt-transport-https(1) manpages respectively.

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 メソッドは、xz や gzip 等の一般的な多くの圧縮形式で展開、再圧縮できます。この設定項目ではサポートする圧縮形式を参照、変更でき、サポートする圧縮形式をさらに追加することもできます (関連項目 APT::Compressor)。

        Acquire::CompressionTypes::FileExtension "Methodname";

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

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

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

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

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

    実行時に Dir::Bin::Methodname をチェックすることに注意してください。このオプションが設定されていてその形式のサポートが apt に直接組み込まれていない場合、ファイルがある場合に、この方法しか使われなくなります。例えば、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 プロトコルだけを使うように強制します。

MaxReleaseFileSize
    Release/Release.gpg/InRelease ファイルの最大ファイルサイズです。デフォルトは 10MB です。

EnableSrvRecords
    apt が 接続するための代替サーバを選択するために RFC 2782 で指定された DRS SRV サーバレコードを使う場合は、このオプションを制御します。デフォルトは "true" です。

AllowInsecureRepositories
    十分なセキュリティ情報を提供していないリポジトリからのデータファイル読み込みを行う更新操作を許可します。デフォルトは「false」です。概念や影響、代替手段については apt-secure(8) で説明しています。

AllowWeakRepositories
    セキュリティ情報を提供してはいるものの暗号的に十分に強いものとは見なされなくなっている場合に、そういったリポジトリからのデータファイル読み込みを行う更新操作を許可します。デフォルトは「false」です。概念や影響、代替手段については apt-secure(8) で説明しています。

AllowDowngradeToInsecureRepositories
    以前に GPG 署名されたリポジトリが、更新操作中に署名なしにすることを許可します。以前に信頼されたリポジトリの有効な署名が存在しない場合、更新を拒否します。このオプションは、この保護を無効にするために使用することができます。ほぼ確実に、これを有効にすることはありません。デフォルトは false です。概念や影響、代替手段については apt-secure(8) で説明しています。

Changelogs::URI スコープ
    URI は、それらを取得する場所から知られている場合は、変更履歴の取得のみ行うことができます。好ましいリリースファイルは、「変更履歴」フィールドでこのことを示します。これが利用できない場合、Acquire::Changelogs::URI::Label::LABEL または Acquire::Changelogs::URI::Origin::ORIGIN オプションが存在し、そしてこの値が取られてる場合は、リリースファイルの Label/Origin フィールドが確認するために使用されます。リリースファイル内の値は、Acquire::Changelogs::URI::Override::Label::LABEL または Acquire::Changelogs::URI::Override::Origin::ORIGIN で上書きできます。そのパッケージ固有のデータが @CHANGEPATH@ プレースホルダに置き換えられている場合以外は、値はテキストファイルへの正常な URI にする必要があります。値は次の通りです: 1. パッケージがコンポーネント (例えば、main) からのものである場合、それ以外の場合は省略されている最初の部分です、2. ソースパッケージ名の最初の文字。ただし、ソースパッケージ名が 'lib' で始まる場合を除きます (その場合は 最初の 4 文字になります)。3. 完全なソースパッケージ名。4. 再び完全な名前および 5. ソースのバージョン。(存在する場合は) 最初、第二、第三、第四の部分はスラッシュ ('/') で区切られ、第四と第五の部分の間はアンダースコア ('_') です。このソースから変更履歴を取得することができないことを示す特別な値 'no' がこのオプションで利用可能です。この場合、可能であれば別のソースが試行されます。

バイナリユーザ設定

特に、apt のバイナリの導入では、APT::Get::Show-Versions が apt と同様に apt-get に効果を与えるように、特定のバイナリのみに影響を与えるように見えるオプションであっても、特定のバイナリのために特定のオプションを設定することは有用であり得ます。

特定のバイナリ用のオプション設定は、Binary::specific-binary スコープ内でオプションを設定して達成することができます。 apt 用のAPT::Get::Show-Versions オプションの設定は、例えば、Binary::apt::APT::Get::Show-Versions 設定の代わりに実行されることができます。

さらに上記の説明の節に見られるように、コマンドライン上のオプション自体またはコマンドラインからロードされた設定ファイル中でバイナリ固有のオプションを設定することはできません。

ディレクトリ

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

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

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

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

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

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

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 は、要求されたファイルディスクリプタを介してより多くの情報を送信します: テキスト VERSION 2 の行、APT 設定空間、ファイル名とバージョン情報を持つパッケージ処理のリスト。

    各設定ディレクティブ行は、key=value 形式です。特殊文字 (key 中のイコール記号、改行、非印字可能文字、引用符、およびパーセント記号、および value 中の改行、非印字可能文字、およびパーセント記号) は、% エンコードされます。リストは、同じキーを持つ複数のkey::=value 行で表されます。設定セクションは、空白行で終わります。

    バージョン 2 ではパッケージアクション行は 5 つのフィールドで構成されています: パッケージ名 (例え外国だとしてもアーキテクチャ資格なしで)、旧バージョン、バージョン変更の方向 (< アップグレード、> ダウングレード、= 変化なし)、新バージョン、処理。バージョンなしの場合は、バージョンフィールドはすべて "-" です (例えば、初めてパッケージをインストール時、バージョンなしは、任意の実際のバージョンよりも前として扱われます。そのため、- < 1.23.4はアップグレードとなります)。パッケージが設定されている場合のアクションフィールドは "**CONFIGURE**" で、削除されている場合は "**REMOVE**" 、解凍されている場合は .deb ファイルのファイル名です。

    バージョン 3 では、各バージョンフィールドの後に、このバージョンのアーキテクチャが続きます。バージョンなしの場合は "-" 、そして MultiArch 型 "same"、"foreign"、"allowed" または "none" を示すフィールド。"none" は単に互換性を維持するために残された、誤った型名であることに注意してください。それは"no" と読まれるべきで、ユーザは両方をサポートすることをお勧めします。

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

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

オプションの APT::Periodic グループと APT::Archives グループは、/usr/lib/apt/apt.systemd.daily スクリプトを使用して、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