dpkg - Debian のパッケージマネージャー
概要
dpkg [オプション...] コマンド
警告
このマニュアルは、dpkg のコマンドラインオプションとパッケージの状態を、dpkg --help よりも詳細に理解したいユーザーを対象としています。
パッケージの保守者が、dpkg がパッケージをどのようにインストールするかを理解するためにこのマニュアルを使用することは意図されていません。パッケージのインストールと削除時に dpkg が何をするかの説明は、特に不十分です。
説明
dpkg は、Debian パッケージのインストール、ビルド、削除、および管理を行うためのミドルレベルツールです。dpkg の主要な、より使いやすいフロントエンドは、CLI (コマンドラインインターフェイス) として [apt]({filename}../../apt)(8)、TUI (ターミナルユーザーインターフェイス) として aptitude(8) です。dpkg 自体は、コマンドラインパラメーターによって完全に制御され、パラメーターは正確に 1 つのコマンドと 0 個以上のオプションで構成されます。コマンドパラメーターは、dpkg が何を実行するかを指示し、オプションはコマンドの動作を何らかの方法で制御します。
dpkg は、dpkg-deb(1) および dpkg-query(1) へのフロントエンドとしても使用できます。サポートされているコマンドのリストは、後述する「コマンド」セクションにあります。そのようなコマンドが検出された場合、dpkg は dpkg-deb または dpkg-query を、与えられたパラメーターとともに実行しますが、特定のオプションは現在渡されていません。そのようなオプションを使用するには、バックエンドを直接呼び出す必要があります。
パッケージに関する情報
dpkg は、利用可能なパッケージに関する有用な情報を維持します。情報は、状態、選択状態、およびフラグの 3 つのクラスに分割されます。これらの値は、主に dselect で変更することを意図しています。
パッケージの状態
インストールされていない
パッケージはシステムにインストールされていません。
設定ファイル
パッケージの構成ファイルのみ、または postrm スクリプトと、削除するために必要なデータがシステムに存在します。
半分のインストール
パッケージのインストールが開始されましたが、何らかの理由で完了していません。
展開済み
パッケージは展開されましたが、構成されていません。
半分の構成
パッケージは展開され、構成が開始されましたが、何らかの理由でまだ完了していません。
トリガー待ち
パッケージは、別のパッケージによるトリガー処理を待っています。
トリガー処理中
パッケージはトリガーされました。
インストール済み
パッケージは正しく展開され、構成されています。
パッケージの選択状態
インストール
パッケージはインストール用に選択されています。
ホールド
ホールドとしてマークされたパッケージは、同じバージョンに維持されます。つまり、明示的に要求される場合、または `--force-hold` オプションで自動的に実行することを許可される場合を除き、新しいインストール、アップグレード、または削除は自動的に実行されません。
deinstall
パッケージはアンインストール用に選択されました(つまり、設定ファイルを除くすべてのファイルを削除します)。
purge
パッケージはパージ用に選択されました(つまり、システムディレクトリからすべて、設定ファイルも含めて削除します)。
unknown
パッケージの選択状態は不明です。インストールされていない状態であり、okフラグが設定されているパッケージは、次のデータベース保存時に破棄されます。
パッケージフラグ
ok
okフラグが設定されたパッケージは、既知の状態にありますが、さらなる処理が必要な場合があります。
reinstreq
reinstreqフラグが設定されたパッケージは破損しており、再インストールが必要です。これらのパッケージは、--force-remove-reinstreqオプションを使用して強制的に削除しない限り、削除できません。
コマンド
-i, --install package-file...
パッケージをインストールします。--recursiveまたは-Rオプションが指定されている場合、package-fileはディレクトリを参照する必要があります。
インストールは、次のステップで構成されます。
新しいパッケージのコントロールファイルを抽出します。
以前に同じパッケージの別のバージョンがインストールされていた場合、古いパッケージのprermスクリプトを実行します。
パッケージによって提供されている場合は、preinstスクリプトを実行します。
新しいファイルを解凍し、同時に古いファイルをバックアップして、問題が発生した場合に復元できるようにします。
以前に同じパッケージの別のバージョンがインストールされていた場合、新しいパッケージのpreinstスクリプトの後に、古いパッケージのpostrmスクリプトを実行します。新しいファイルが書き込まれるのと同時に古いファイルが削除されるためです。
パッケージを構成します。詳細については、--configureを参照してください。
--unpack package-file...
パッケージを解凍しますが、構成は行いません。--recursiveまたは-Rオプションが指定されている場合、package-fileはディレクトリを参照する必要があります。
--no-triggersが指定されていない場合、Pre-Dependsのトリガーを処理します。
--configure package...|-a|--pending
解凍されたがまだ構成されていないパッケージを構成します。-aまたは--pendingがpackageの代わりに指定された場合、解凍されて構成されていないすべてのパッケージが構成されます。
すでに構成されているパッケージを再構成するには、dpkg-reconfigure(8)コマンド(これはdebconfプロジェクトの一部です)を試してください。
構成は、次のステップで構成されます。
conffileを解凍し、同時に古いconffileをバックアップして、問題が発生した場合に復元できるようにします。
パッケージによって提供されている場合は、postinstスクリプトを実行します。
--no-triggersが指定されていない場合、トリガーを処理します。
--triggers-only package...|-a|--pending
トリガーのみを処理します(dpkg 1.14.17以降)。保留中のすべてのトリガーが処理されます。パッケージ名が指定された場合、指定されたパッケージのトリガーのみが、必要に応じて正確に1回処理されます。このオプションの使用により、パッケージが不適切なトリガー待ち状態およびトリガー保留状態になる可能性があります。これは後で、dpkg --configure --pendingを実行することで修正できます。
-r, --remove パッケージ...|-a|--pending
インストールされたパッケージを削除します。これにより、conffileやpostrmスクリプトによってクリーンアップされるその他のデータを除くすべてが削除されます。これにより、パッケージを再インストールした場合に、再構成する必要がなくなる場合があります(conffileは、DEBIAN/conffilesコントロールファイルにリストされている設定ファイルです)。DEBIAN/conffilesコントロールファイルまたはDEBIAN/postrmスクリプトがない場合、このコマンドは--purgeの呼び出しと同等です。-aまたは--pendingがパッケージ名の代わりに指定された場合、/var/lib/dpkg/statusファイルでアンパックされ、削除されるようにマークされたすべてのパッケージが削除されます。
パッケージの削除は、次のステップで構成されます。
prermスクリプトを実行します。
インストールされたファイルを削除します。
postrmスクリプトを実行します。
--no-triggersが指定されていない限り、トリガーを処理します。
-P, --purge パッケージ...|-a|--pending
インストールされている、またはすでに削除されているパッケージをパージします。これにより、conffileやpostrmによってクリーンアップされたその他のすべてのものが削除されます。-aまたは--pendingがパッケージ名の代わりに指定された場合、/var/lib/dpkg/statusファイルでアンパックまたは削除されたが、パージされるようにマークされているすべてのパッケージがパージされます。
注意:一部の設定ファイルは、dpkgによって認識されない場合があります。これは、それらが個別の構成スクリプトを通じて作成および管理されるためです。その場合、dpkgはそれらを自身で削除しませんが、パッケージのpostrmスクリプト(dpkgによって呼び出される)は、パージ中にそれらの削除を処理する必要があります。もちろん、これはシステムディレクトリ内のファイルにのみ適用され、個々のユーザーのホームディレクトリに書き込まれた設定ファイルには適用されません。
パッケージのパージは、次のステップで構成されます。
パッケージがまだ削除されていない場合は、削除します。詳細については、--removeを参照してください。
postrmスクリプトを実行します。
--no-triggersが指定されていない限り、トリガーを処理します。
-V, --verify [パッケージ名...]
パッケージ名、または名前が省略された場合はすべてのパッケージの整合性を、パッケージによってインストールされたファイルとdpkgデータベースに保存されているファイルメタデータ情報を比較することにより検証します(dpkg 1.17.2以降)。データベース内のファイルメタデータ情報の起源は、バイナリパッケージ自体です。このメタデータは、インストールプロセス中にパッケージのアンパック時に収集されます。
現在、実行される唯一の機能的なチェックは、ファイルのコンテンツのmd5sumをデータベースに保存されている値と比較することです。チェックは、データベースにファイルのmd5sumが含まれている場合にのみ実行されます。データベースに欠落しているメタデータがあるかどうかを確認するには、--auditコマンドを使用できます。これは整合性チェックであり、セキュリティ検証として考慮されるべきではありません。
出力形式は、デフォルトではrpm形式を使用する--verify-formatオプションを使用して選択できますが、これは将来変更される可能性があるため、このコマンドの出力を解析するプログラムは、期待する形式を明示的に指定する必要があります。
-C, --audit [パッケージ名...]
パッケージ名、または省略した場合はすべてのパッケージに対して、データベースの健全性と整合性チェックを実行します(パッケージごとのチェックは dpkg 1.17.10 以降)。たとえば、システムに部分的にのみインストールされているパッケージ、または欠落、不正確、または古い制御データやファイルを持つパッケージを検索します。dpkg は、それらを修正する方法を提案します。
--update-avail [パッケージファイル]
--merge-avail [パッケージファイル]
dpkg と dselect が認識している利用可能なパッケージの情報を更新します。--merge-avail コマンドを使用すると、古い情報と Packages-file からの情報が結合されます。--update-avail コマンドを使用すると、古い情報が Packages-file の情報に置き換えられます。Packages-file は Debian に付属しており、「Packages」という名前です。Packages-file 引数が指定されていない場合、または「-」という名前の場合は、標準入力から読み取られます(dpkg 1.17.7 以降)。dpkg は、利用可能なパッケージの記録を /var/lib/dpkg/available に保存します。
利用可能なファイルを一度だけ取得および更新する簡単なコマンドは、dselect update です。ただし、このファイルは dselect を使用しない場合、特に APT ベースのフロントエンドを使用する場合はほとんど役に立ちません。APT は、利用可能なパッケージを追跡するための独自のシステムを持っています。
-A, --record-avail パッケージファイル...
パッケージファイルから情報を取得して、dpkg と dselect が認識している利用可能なパッケージの情報を更新します。--recursive または -R オプションが指定されている場合、パッケージファイルはディレクトリを参照する必要があります。
--forget-old-unavail
これは廃止され、効果がありません。dpkg は、ユーザー情報(パッケージの選択など)を含まない、インストールされていない利用できないパッケージを自動的に忘却します(dpkg 1.15.4 以降)。
--clear-avail
利用可能なパッケージに関する既存の情報を消去します。
--get-selections [パッケージ名パターン...]
パッケージの選択リストを取得し、stdout に書き込みます。パターンが指定されていない場合、以前に削除された(つまり、アンインストールされた)パッケージは表示されません。
--set-selections
stdin から読み取ったファイルを使用して、パッケージの選択を設定します。ファイルは「パッケージ 状態」という形式である必要があります。状態は、install、hold、deinstall、または purge のいずれかです。空白の行と、'#' で始まるコメント行も許可されます。
このコマンドが役に立つようにするには、利用可能なファイルが最新である必要があります。そうでない場合、不明なパッケージは警告とともに無視されます。詳細については、--update-avail および --merge-avail コマンドを参照してください。
--clear-selections
すべての非必須パッケージの状態を deinstall に設定します(dpkg 1.13.18 以降)。これは、--set-selections に渡されるリストにないパッケージをアンインストールするために、--set-selections の直前に使用することを目的としています。
--yet-to-unpack
インストール用に選択されたものの、何らかの理由でまだインストールされていないパッケージを検索します。
注:このコマンドは、利用可能なファイルとパッケージの選択の両方を使用します。
--predep-package
1 つ以上の関連する事前依存関係の対象であり、それ自体に満たされていない事前依存関係を持たない、単一のパッケージを出力します。
そのようなパッケージが存在する場合、Packages ファイルのエントリとして出力し、必要に応じて修正できます。
注:このコマンドは、利用可能なファイルとパッケージの選択の両方を使用します。
パッケージが出力された場合は 0、適切なパッケージが利用できない場合は 1、エラーが発生した場合は 2 を返します。
--add-architecture architecture
`--force-architecture` を使用せずにインストールできるパッケージのアーキテクチャのリストに、アーキテクチャを追加します (dpkg 1.16.2 以降)。dpkg がビルドされたアーキテクチャ (つまり、`--print-architecture` の出力) は、常にそのリストの一部です。
--remove-architecture architecture
`--force-architecture` を使用せずにインストールできるパッケージのアーキテクチャのリストから、アーキテクチャを削除します (dpkg 1.16.2 以降)。アーキテクチャが現在データベースで使用されている場合、操作は拒否されます。ただし、`--force-architecture` が指定されている場合は例外です。dpkg がビルドされたアーキテクチャ (つまり、`--print-architecture` の出力) は、そのリストから削除することはできません。
--print-architecture
dpkg がインストールするパッケージのアーキテクチャを出力します (例: "i386")。
--print-foreign-architectures
dpkg が、パッケージのインストールを許可するように構成されている追加のアーキテクチャの改行区切りリストを出力します (dpkg 1.16.2 以降)。
--assert-help
`--assert-feature` オプションに関するヘルプを表示します (dpkg 1.21.0 以降)。
--assert-feature
dpkg が要求された機能をサポートしていることを表明します。機能が完全にサポートされている場合は 0、機能は既知だが dpkg はまだその機能をサポートできない場合は 1、機能が不明の場合は 2 を返します。表明可能な機能の現在のリストは次のとおりです。
support-predepends
Pre-Depends フィールドをサポートします (dpkg 1.1.0 以降)。
working-epoch
バージョン文字列の Epoch をサポートします (dpkg 1.4.0.7 以降)。
long-filenames
deb(5) アーカイブ内の長いファイル名をサポートします (dpkg 1.4.1.17 以降)。
multi-conrep
複数の Conflicts および Replaces をサポートします (dpkg 1.4.1.19 以降)。
multi-arch
multi-arch フィールドとセマンティクスをサポートします (dpkg 1.16.2 以降)。
versioned-provides
バージョン付きの Provides をサポートします (dpkg 1.17.11 以降)。
protected-field
Protected フィールドをサポートします (dpkg 1.20.1 以降)。
--validate-thing string
文字列が正しい構文を持っていることを検証します (dpkg 1.18.16 以降)。文字列が有効な場合は 0、文字列が無効だが、緩やかなコンテキストでは受け入れられる可能性がある場合は 1、文字列が無効な場合は 2 を返します。検証可能なものの現在のリストは次のとおりです。
pkgname
指定されたパッケージ名を検証します (dpkg 1.18.16 以降)。
trigname
指定されたトリガー名を検証します (dpkg 1.18.16 以降)。
archname
指定されたアーキテクチャ名を検証します (dpkg 1.18.16 以降)。
version
指定されたバージョンを検証します (dpkg 1.18.16 以降)。
--compare-versions ver1 op ver2
バージョン番号を比較します。op は 2 項演算子です。dpkg は、指定された条件が満たされた場合に true (0) を返し、それ以外の場合は false (1) を返します。演算子は 2 つのグループに分けられ、どちらのグループでは、空の ver1 または ver2 の扱いが異なります。これらの演算子は、空のバージョンを任意のバージョンよりも小さいものとして扱います: lt le eq ne ge gt。これらの演算子は、空のバージョンを任意のバージョンよりも大きいものとして扱います: lt-nl le-nl ge-nl gt-nl。これらは、コントロールファイルの構文との互換性のためにのみ提供されます: < << <= = >= >> >。演算子 < と > は時代遅れであり、混乱を招くため、使用しないでください。例: 0.1 < 0.1 は true と評価されます。
-?, --help
簡単なヘルプメッセージを表示します。
--force-help
--force-thing オプションに関するヘルプを表示します。
-Dh, --debug=help
デバッグオプションに関するヘルプを表示します。
--version
dpkg のバージョン情報を表示します。
--robot オプションと組み合わせて使用すると、出力はドット区切りの数値形式のプログラムバージョン番号となり、改行は含まれません。
dpkg-deb コマンド
次のコマンドおよび dpkg フロントエンドによって公開されていないその他のコマンドとオプションの詳細については、dpkg-deb(1) を参照してください。
-b, --build directory [archive|directory]
deb パッケージをビルドします。
-c, --contents archive
deb パッケージの内容を一覧表示します。
-e, --control archive [directory]
パッケージからコントロール情報を抽出します。
-x, --extract archive directory
パッケージに含まれるファイルを抽出します。
-X, --vextract archive directory
パッケージに含まれるファイル名を抽出して表示します。
-f, --field archive [control-field...]
パッケージのコントロールフィールドを表示します。
--ctrl-tarfile archive
Debian パッケージに含まれるコントロール tar ファイルを出力します。
--fsys-tarfile archive
Debian パッケージに含まれるファイルシステム tar ファイルを出力します。
-I, --info archive [control-file...]
パッケージに関する情報を表示します。
dpkg-query コマンド
次のコマンドおよび dpkg フロントエンドによって公開されていないその他のコマンドとオプションの詳細については、dpkg-query(1) を参照してください。
-l, --list package-name-pattern...
指定されたパターンに一致するパッケージを一覧表示します。
-s, --status package-name...
指定されたパッケージのステータスを報告します。
-L, --listfiles package-name...
パッケージ名からシステムにインストールされたファイルを一覧表示します。
-S, --search filename-search-pattern...
インストールされたパッケージからファイル名を検索します。
-p, --print-avail package-name...
/var/lib/dpkg/available に見つかったパッケージ名に関する詳細を表示します。APT ベースのフロントエンドのユーザーは、代わりに apt show package-name を使用する必要があります。
オプション
すべてのオプションは、コマンドラインと dpkg 構成ファイル /etc/dpkg/dpkg.cfg またはフラグメントファイル (名前がこのシェルパターン [0-9a-zA-Z_-]* に一致) の構成ディレクトリ /etc/dpkg/dpkg.cfg.d/ でも指定できます。構成ファイル内の各行は、コマンドラインオプションと同じオプション (先頭のハイフンなし) またはコメント (「#」で始まる場合) です。
--abort-after=number
dpkg がエラーを検出した後、何回で処理を中止するかを変更します。デフォルトは 50 です。
-B, --auto-deconfigure
パッケージが削除された場合、別のインストール済みパッケージが削除されたパッケージに依存している可能性があります。このオプションを指定すると、削除されたパッケージに依存していたパッケージの自動再設定が行われます。
-Doctal, --debug=octal
デバッグを有効にします。octal は、以下のリストから必要な値をビット単位の OR 演算で結合して作成します(ただし、これらの値は将来のリリースで変更される可能性があります)。-Dh または --debug=help を使用すると、これらのデバッグ値が表示されます。
番号 説明 1 一般的な役立つ進行状況情報 2 メンテナースクリプトの呼び出しとステータス 10 処理された各ファイルに対する出力 100 処理された各ファイルに対する大量の出力 20 各設定ファイルに対する出力 200 各設定ファイルに対する大量の出力 40 依存関係と競合 400 依存関係/競合に関する大量の出力 10000 トリガーの起動と処理 20000 トリガーに関する大量の出力 40000 トリガーに関するとてつもない量の出力 1000 dpkg/info ディレクトリなどに関する大量の出力 2000 とてつもない量の出力
--force-things
--no-force-things, --refuse-things
特定の処理を強制または拒否します。--force-things と --no-force-things(--refuse-things と同じ)は、カンマ区切りの処理リストを受け取ります。--force-help を使用すると、これらの処理に関するメッセージが表示されます。アスタリスク (*) でマークされた処理は、デフォルトで強制されます。
警告:これらのオプションは、主に専門家が使用することを目的としています。完全に理解せずに使用すると、システム全体が破損する可能性があります。
all:
すべての強制オプションを有効(または無効)にします。
downgrade(*):
新しいバージョンのパッケージがすでにインストールされている場合でも、パッケージをインストールします。
警告:現在、dpkg はダウングレード時に依存関係のチェックを行わないため、ダウングレードによって他のパッケージの依存関係が壊れる場合でも警告は表示されません。これにより、重大な副作用が発生する可能性があり、重要なシステムコンポーネントをダウングレードすると、システム全体が使用できなくなる可能性があります。注意して使用してください。
configure-any:
現在のパッケージに依存する、アンパックされたが設定されていないパッケージもすべて設定します。
hold:
「ホールド」としてマークされているパッケージの自動インストール、アップグレード、または削除を許可します。ただし、これらのアクションが明示的に要求された場合、「ホールド」パッケージの選択状態は常に無視されます。
remove-reinstreq:
破損しており、再インストールが必要としてマークされているパッケージでも削除します。これにより、パッケージの一部がシステムに残る可能性があり、dpkg はそれを忘れてしまう可能性があります。
remove-protected:
パッケージが保護されている場合(dpkg 1.20.1 以降)でも削除します。保護されたパッケージには、主に重要なシステムブートインフラストラクチャや、カスタムのシステムローカルメタパッケージが含まれています。これらを削除すると、システムが起動できなくなったり、必要な機能が失われたりする可能性があるため、注意して使用してください。
remove-essential:
パッケージが必須と見なされている場合でも削除します。必須パッケージには、主に基本的な Unix コマンドが含まれており、パッケージングシステム、システムの一般的な操作、またはブート中に必要です(ただし、後者は保護されたパッケージに変換する必要があります)。これらを削除すると、システム全体が動作しなくなる可能性があるため、注意して使用してください。
depends:
依存関係の問題をすべて警告として扱う。これは、Pre-Depends と Depends フィールドに影響する。
depends-version:
Pre-Depends および Depends フィールドをチェックする際に、バージョンを無視する。
breaks:
別のパッケージとの互換性を損なう可能性がある場合でも、インストールを実行する(dpkg 1.14.6 以降)。これは、Breaks フィールドに影響する。
conflicts:
別のパッケージと競合する場合でも、インストールを実行する。これは危険であり、通常、一部のファイルが上書きされる原因となる。これは、Conflicts フィールドに影響する。
confmiss:
不足している設定ファイルをプロンプトを表示せずに常にインストールする。これは危険であり、ファイルに加えられた変更(削除)が保存されないことを意味する。
confnew:
設定ファイルが変更されており、パッケージ内のバージョンも変更されている場合、プロンプトを表示せずに常に新しいバージョンをインストールする。ただし、--force-confdef も指定されている場合は、デフォルトのアクションが優先される。
confold:
設定ファイルが変更されており、パッケージ内のバージョンも変更されている場合、プロンプトを表示せずに常に古いバージョンを保持する。ただし、--force-confdef も指定されている場合は、デフォルトのアクションが優先される。
confdef:
設定ファイルが変更されており、パッケージ内のバージョンも変更されている場合、プロンプトを表示せずに常にデフォルトのアクションを選択する。デフォルトのアクションがない場合は、ユーザーに確認を求める。ただし、--force-confnew または --force-confold も指定されている場合は、それを使用して最終的なアクションを決定する。
confask:
設定ファイルが変更された場合は、パッケージ内のバージョンが変更されていなくても、常にパッケージ内のバージョンに置き換えるようにユーザーに確認する(dpkg 1.15.8 以降)。--force-confnew、--force-confold、または --force-confdef のいずれかが指定されている場合は、それを使用して最終的なアクションを決定する。
overwrite:
あるパッケージのファイルを別のパッケージのファイルで上書きする。
overwrite-dir:
あるパッケージのディレクトリを別のパッケージのファイルで上書きする。
overwrite-diverted:
リダイレクトされたファイルを、リダイレクトされていないバージョンで上書きする。
statoverride-add:
stat オーバーライドを追加する際に、既存の stat オーバーライドを上書きする(dpkg 1.19.5 以降)。
statoverride-remove:
stat オーバーライドを削除する際に、存在しない stat オーバーライドを無視する(dpkg 1.19.5 以降)。
security-mac(*):
ファイルをファイルシステムにインストールする際に、プラットフォーム固有の必須アクセス制御(MAC)ベースのセキュリティを使用する(dpkg 1.19.5 以降)。Linux システムでは、SELinux を使用した実装が行われる。
unsafe-io:
アンパック時に安全な I/O 操作を実行しない(dpkg 1.15.8.6 以降)。現在、これには、ファイルシステムの同期をファイル名の変更前に実行しないことが含まれる。これは、一部のファイルシステムで大幅なパフォーマンスの低下を引き起こすことが知られている。残念ながら、ファイルシステムの信頼性の低い動作により、システムの突然のクラッシュ時にゼロ長のファイルが発生するため、安全な I/O が必要なファイルシステムである。
注:ext4の場合、主な原因は`nodelalloc`マウントオプションを使用することで、パフォーマンスの低下とデータ安全性の問題を修正できます。後者の問題は、システムが予期せず停止した場合でも、同期処理を行わないソフトウェアによってゼロ長のファイルが生成されないようにすることで解決されます。
警告:このオプションを使用すると、パフォーマンスが向上する可能性がありますが、データの損失につながる可能性があるため、注意して使用してください。
script-chrootless:
パッケージがこの動作モードをサポートしていない場合でも、パッケージのインストールディレクトリにchroot(2)せずに、保守スクリプトを実行します(dpkg 1.18.5以降)。
警告:これにより、ホストシステムが破壊される可能性があるため、細心の注意を払って使用してください。
architecture:
アーキテクチャが正しくない、または指定されていないパッケージでも処理します。
bad-version:
バージョンが正しくないパッケージでも処理します(dpkg 1.16.1以降)。
bad-path:
PATHに重要なプログラムが含まれていないため、問題が発生する可能性があります。
not-root:
root権限がない場合でも、(アン)インストールを試みます。
bad-verify:
認証チェックに失敗したパッケージでもインストールします。
--ignore-depends=package,...
指定されたパッケージの依存関係チェックを無視します(実際にはチェックは実行されますが、競合に関する警告のみが表示され、それ以上の処理は行われません)。これは、Pre-Depends、Depends、およびBreaksフィールドに影響します。
--no-act, --dry-run, --simulate
実行されるすべての処理を実行しますが、変更は書き込みません。これは、指定されたコマンドが実際に何をするかを、実際に変更を加えることなく確認するために使用します。
必ず、コマンドパラメータの前に`--no-act`を指定してください。そうしないと、予期しない結果になる可能性があります(例:`dpkg --purge foo --no-act`は、最初にパッケージ「foo」を削除し、次にパッケージ「--no-act」を削除しようとします。実際には何も変更したくないはずです)。
-R, --recursive
指定されたディレクトリとそのすべてのサブディレクトリで見つかったパターン`*.deb`に一致するすべての通常のファイルを再帰的に処理します。これは、`-i`、`-A`、`--install`、`--unpack`、および`--record-avail`コマンドで使用できます。
-G パッケージが既にインストールされている場合は、新しいバージョンのパッケージをインストールしません。これは`--refuse-downgrade`のエイリアスです。
--admindir=directory
管理ディレクトリをdirectoryに設定します。このディレクトリには、インストールまたはアンインストールされたパッケージの状態などに関する多くのファイルが含まれています。デフォルトは、`DPKG_ADMINDIR`が設定されていない場合は「/var/lib/dpkg」です。
--instdir=directory
パッケージのインストールディレクトリであるインストールディレクトリをdirectoryに設定します。`instdir`は、パッケージのインストールスクリプトを実行する前にchroot(2)に渡されるディレクトリでもあり、これはスクリプトが`instdir`をルートディレクトリとして認識することを意味します。デフォルトは、`DPKG_ROOT`が設定されていない場合は「/」です(dpkg 1.21.10以降)。
--root=directory
ルートディレクトリをdirectoryに設定し、インストールディレクトリを「directory」に、管理ディレクトリを「directory/var/lib/dpkg」に設定します(`DPKG_ROOT`が設定されていない場合、dpkg 1.21.10以降)。
-O, --selected-only
インストール用に選択されたパッケージのみを処理します。実際のマークは、dselectまたはdpkg(パッケージの処理時)によって行われます。たとえば、パッケージが削除された場合、削除のために選択されたものとしてマークされます。
-E, --skip-same-version
同じバージョンとアーキテクチャのパッケージがすでにインストールされている場合は、インストールしません。
dpkg 1.21.10以降、アーキテクチャも考慮されるため、パッケージのクロスグレードや、同じバージョンで異なるアーキテクチャを持つ追加のインストール可能なインスタンスのインストールが可能になります。
--pre-invoke=command
--post-invoke=command
アンパック、構成、インストール、トリガーのみ、削除、およびパージアクション(dpkg 1.15.4以降)、および add-architecture および remove-architecture アクション(dpkg 1.17.19以降)のdpkg実行の前後で実行されるように、invokeフックコマンドを設定します。このオプションは複数回指定できます。オプションが指定された順序が保持され、設定ファイルからのオプションが優先されます。環境変数 DPKG_HOOK_ACTION は、フックの現在の dpkg アクションに設定されます。
invokeフックは、--no-actが指定された場合、またはroot権限を持たない状態で--force-not-rootなしで実行された場合には実行されません。
注:フロントエンドは、1回の呼び出しでdpkgを複数回呼び出す可能性があり、その結果、フックが予想よりも多く実行される場合があります。
--path-exclude=glob-pattern
--path-include=glob-pattern
インストール時に、指定されたパターンに一致する以前に除外されたパスを、除外または再含めるように、glob-patternをパスフィルターとして設定します(dpkg 1.15.8以降)。
警告:除外するパスによっては、システム全体が完全に破損する可能性があるため、注意して使用してください。
globパターンは、シェルで使用されるのと同じワイルドカードを使用します。'*'は、空の文字列を含む任意の文字のシーケンス、および'/'に一致します。たとえば、「/usr//READ」は「/usr/share/doc/package/README」に一致します。通常、「?」は任意の単一の文字(これも「/」を含む)に一致します。そして「[」は、文字のリスト、範囲、および補完を含むことができる文字クラスを開始します。詳細については、glob(7)を参照してください。注:現在の実装では、特により具体的な再包含がある場合、必要なよりも多くのディレクトリとシンボリックリンクを再含める可能性があり、これは安全側に立って、アンパックの失敗を回避するためのものです。今後の作業で修正される可能性があります。
これを使用して、すべてのパスを除き、特定のパスのみを削除できます。一般的な例は次のとおりです。
--path-exclude=/usr/share/doc/*
--path-include=/usr/share/doc/*/copyright
これにより、すべてのドキュメントファイルを除き、著作権ファイルのみが残ります。
これらの2つのオプションは複数回指定でき、互いに交互に指定できます。どちらも指定された順序で処理され、ファイル名に一致する最後のルールが決定を行います。
バイナリパッケージの展開時にフィルタが適用され、そのため、フィルタは現在フィルタリングされているオブジェクトのタイプ(通常のファイルまたはディレクトリなど)のみを知っており、次にどのオブジェクトが処理されるかを知ることはできません。これらのフィルタは副作用を持つため(find(1)フィルタとは対照的)、/usr/share/docのようなディレクトリオブジェクトである正確なパス名を、除外しても期待どおりの結果にはなりません。除外されるのはそのパス名のみであり(コードが必要に応じて自動的に再含める可能性があります)、そのディレクトリに含まれる後続のファイルは展開に失敗します。
ヒント:シェルによるグロブの展開がないことを確認してください。
^ -verify-format format-name
^ -verifyコマンドの出力形式を設定します(dpkg 1.17.2以降)。
現在サポートされている出力形式はrpmのみで、これは何らかのチェックに失敗したすべてのパスについて1行ずつ出力されます。これらの行は次の形式です。
^ issing [c] pathname [(error-message)]
^ M5?????? [c] pathname
最初の9文字は、チェック結果を報告するために使用されます。ファイルが存在しないか、そのメタデータを取得できない場合は文字通りのmissing、または次の特殊文字のいずれかを使用して各チェックの結果を報告します。
?: チェックを実行できなかった(サポートの欠如、ファイル権限など)。.: チェックに合格した。A-Za-z0-9: 特定のチェックが失敗した。現在サポートされている位置と英数字文字は次のとおりです。?: これらのチェックは現在サポートされておらず、常に?になります。M: ファイルモードのチェックが失敗しました(dpkg 1.21.0以降)。現在、パス名のメタデータが追跡されていないため、このチェックは、既知のダイジェストを持つパス名に対してのみ、非常に単純なヒューリスティックを使用して部分的にエミュレートできます。ダイジェストを持つパス名は通常ファイルであると想定され、パス名がファイルシステム上の通常のファイルでない場合、このチェックは失敗します。このチェックは現在、十分な情報がないため、成功することはありません。5: ダイジェストチェックが失敗しました。これは、ファイルの内容が変更されたことを意味します。これは単なる整合性チェックであり、セキュリティ検証の一種とは見なすべきではありません。?: これらのチェックは現在サポートされておらず、常に?になります。
行の後にスペースが続き、属性文字が続きます。次の属性文字がサポートされています。
c: パス名がコンフィグファイルです。
最後に、もう1つのスペースが続き、パス名が続きます。
エントリがmissingタイプであり、ファイルが実際にはファイルシステムに存在しない場合、行の後にスペースが続き、括弧で囲まれたエラーメッセージが続きます。
^ -status-fd n
機械可読のパッケージの状態と進行状況の情報をファイルディスクリプタnに送信します。このオプションは複数回指定できます。通常、情報は1行に1レコードずつ、次のいずれかの形式で送信されます。
status: package: status
パッケージの状態が変更されました。状態はステータスファイルに記載されているとおりです。
status: package : error : extended-error-message
エラーが発生しました。extended-error-message 内の改行はすべて、出力前にスペースに変換されます。
status: file : conffile-prompt : 'real-old' 'real-new' useredited distedited
ユーザーにコンフィグファイルの質問が表示されます。
processing: stage: package
処理の各段階が開始される直前に送信されます。stage は、upgrade、install(両方とも展開前に送信)、configure、trigproc、disappear、remove、purge のいずれかです。
--status-logger=command
機械可読のパッケージ状態および進捗情報をシェルコマンドの標準入力に送信し、"sh -c" を介して実行します(dpkg 1.16.0 以降)。このオプションは複数回指定できます。出力形式は、--status-fd で使用されるものと同じです。
ステータスロガーは、--no-act が指定された場合、または非 root ユーザーとして --force-not-root なしで実行された場合には実行されません。
--log=filename
ステータス変更の更新とアクションを、デフォルトの /var/log/dpkg.log ではなく、filename にログ記録します。このオプションが複数回指定された場合、最後の filename が使用されます。ログメッセージの形式は次のとおりです。
YYYY-MM-DD HH:MM:SS startup type command
各 dpkg 呼び出しで、type が archives(command は unpack または install)または packages(command は configure、triggers-only、remove、または purge)の場合。
YYYY-MM-DD HH:MM:SS status state pkg installed-version
ステータス変更の更新。
YYYY-MM-DD HH:MM:SS action pkg installed-version available-version
アクションが、install、upgrade、configure、trigproc、disappear、remove、または purge のいずれかの場合。
YYYY-MM-DD HH:MM:SS conffile filename decision
コンフィグファイルの変更で、decision が install または keep の場合。
--robot
機械可読の出力形式を使用します。これは、機械可読の出力形式をそれほど出力しないコマンドの出力を解析する必要があるプログラムのインターフェイスを提供します。ローカリゼーションは使用されず、出力は解析しやすくするために変更されます。
現在サポートされているコマンドは、--version のみです。
--no-pager
情報の表示時に、ページャーの使用を無効にします(dpkg 1.19.2 以降)。
--no-debsig
パッケージ署名の検証を行わないでください。
--no-triggers
この実行ではトリガーを実行しないでください(dpkg 1.14.17 以降)。ただし、アクティブ化は記録されます。--configure package または --triggers-only package とともに使用すると、名前付きパッケージの postinst は、トリガーのみの実行が必要な場合でも実行されます。このオプションの使用により、パッケージが不適切なトリガー待ち状態およびトリガー保留状態になる可能性があります。これは後で、次のように実行することで修正できます: dpkg --configure --pending。
--triggers
以前の --no-triggers をキャンセルします(dpkg 1.14.17 以降)。
終了ステータス
0 要求されたコマンドが正常に実行されました。または、チェックまたはアサートコマンドが true を返しました。
1 チェックまたはアサーションコマンドが false を返した場合。
2 コマンドラインの使用方法、またはデータベースへのアクセス、メモリ割り当てなど、システムとのやり取りが原因で、致命的または回復不能なエラーが発生した場合。
環境
外部環境
PATH
この変数は環境で定義され、いくつかの必要なプログラムが存在するシステムパスを指している必要があります。設定されていない場合、またはプログラムが見つからない場合、dpkg は中止します。
HOME
設定されている場合、dpkg は、ユーザー固有の構成ファイルを読み込むディレクトリとしてこれを使用します。
TMPDIR
設定されている場合、dpkg は、一時ファイルとディレクトリを作成するディレクトリとしてこれを使用します。
SHELL
プログラム dpkg は、新しいインタラクティブシェルを開始するとき、またはシェルを介してコマンドを起動するときに、これを実行します。
PAGER
DPKG_PAGER
プログラム dpkg は、ページャーを実行するときに、これを使用して、「$SHELL -c」で実行します。たとえば、コンフファイルの違いを表示するときなどです。SHELL が設定されていない場合、「sh」が代わりに使用されます。
DPKG_PAGER は、PAGER 環境変数を上書きします (dpkg 1.19.2 以降)。DPKG_PAGER または PAGER で指定されたプログラムのいずれも存在しない場合、次のプログラムが順番に試されます (dpkg 1.22.12 以降)。デフォルトのページャー pager、次に less(1)、more(1)、最後に cat(1)。
DPKG_COLORS
カラーモードを設定します (dpkg 1.18.5 以降)。現在サポートされている値は、auto (デフォルト)、always、never です。
DPKG_NLS
設定されている場合、これは、ネイティブ言語サポート (または i18n サポート) をアクティブにするかどうかを決定するために使用されます (dpkg 1.22.7 以降)。サポートされている値は、0 と 1 (デフォルト) です。
DPKG_DEBUG
デバッグマスクを設定します (dpkg 1.21.10 以降)。これは 8 進数で指定します。現在サポートされているフラグは、--debug オプションで説明されています。
DPKG_FORCE
強制フラグを設定します (dpkg 1.19.5 以降)。この変数が存在する場合、組み込みの強制デフォルトは適用されません。変数が存在して空の場合、すべての強制フラグが無効になります。
DPKG_ROOT
設定されていて、--instdir または --root オプションが指定されていない場合、これはファイルシステムルートディレクトリとして使用されます (dpkg 1.21.10 以降)。
DPKG_ADMINDIR
設定されていて、--admindir または --root オプションが指定されていない場合、これは dpkg 管理ディレクトリとして使用されます (dpkg 1.20.0 以降)。
DPKG_FRONTEND_LOCKED
パッケージマネージャーフロントエンドによって設定され、dpkg はフロントエンドロックを取得しないように通知します (dpkg 1.19.1 以降)。
DPKG_PATH_PASSWD
システムパスワードファイルのパスを設定します。このパスは、--root ディレクトリを基準とします。デフォルトは /etc/passwd です。
dpkg 1.22.16 以降。
DPKG_PATH_GROUP
システムグループファイルのパスを設定します。このパスは、--root ディレクトリを基準とします。デフォルトは /etc/group です。
dpkg 1.22.16 以降。
内部環境
LESS
dpkg は、ページャーを起動するとき (dpkg 1.19.2 以降) に、「-FRSXMQ」に設定します。デフォルトの動作を変更するには、この変数をあらかじめ別の値 (空の文字列など) に設定するか、PAGER または DPKG_PAGER 変数を設定して、特定のオプションを「-+」で無効にすることができます。たとえば、DPKG_PAGER="less -+F"。
DPKG_ROOT
dpkgによって、処理対象のインストールを示すために、メンテナンスクリプト環境で定義されます(dpkg 1.18.5以降)。この値は、メンテナンスクリプトが操作するパスの先頭に追加することを意図しています。通常、この変数は空です。異なるinstdirにパッケージをインストールする場合、dpkgは通常、chroot(2)を使用してメンテナンスクリプトを呼び出し、この変数を空のままにします。ただし、--force-script-chrootlessが指定された場合、chroot(2)の呼び出しがスキップされ、この変数はinstdir(空ではない)に設定されます。
DPKG_ADMINDIR
dpkgによって、使用するdpkg管理ディレクトリを示すために、メンテナンスクリプト環境で定義されます(dpkg 1.16.0以降)。この変数は常に現在の--admindirの値に設定されます。
DPKG_FORCE
dpkgによって、現在有効になっているすべての強制オプションの名前をカンマで区切って、サブプロセス環境で定義されます(dpkg 1.19.5以降)。
DPKG_SHELL_REASON
dpkgによって、conffileプロンプトで状況を調べるために起動されたシェルで定義されます(dpkg 1.15.6以降)。現在の有効な値:conffile-prompt。
DPKG_CONFFILE_OLD
dpkgによって、conffileプロンプトで状況を調べるために起動されたシェルで定義されます(dpkg 1.15.6以降)。古いconffileへのパスが含まれます。
DPKG_CONFFILE_NEW
dpkgによって、conffileプロンプトで状況を調べるために起動されたシェルで定義されます(dpkg 1.15.6以降)。新しいconffileへのパスが含まれます。
DPKG_HOOK_ACTION
dpkgによって、フックアクションを実行するために起動されたシェルで定義されます(dpkg 1.15.4以降)。現在のdpkgアクションが含まれます。
DPKG_RUNNING_VERSION
dpkgによって、実行中のdpkgインスタンスのバージョンを、メンテナンスクリプト環境で定義します(dpkg 1.14.17以降)。
DPKG_MAINTSCRIPT_PACKAGE
dpkgによって、処理されているパッケージの(アーキテクチャ修飾されていない)パッケージ名を、メンテナンスクリプト環境で定義します(dpkg 1.14.17以降)。
DPKG_MAINTSCRIPT_PACKAGE_REFCOUNT
dpkgによって、パッケージ参照カウント(つまり、状態がインストールされていないよりも大きいパッケージインスタンスの数)を、メンテナンスクリプト環境で定義します(dpkg 1.17.2以降)。
DPKG_MAINTSCRIPT_ARCH
dpkgによって、パッケージがビルドされたアーキテクチャを、メンテナンスクリプト環境で定義します(dpkg 1.15.4以降)。
DPKG_MAINTSCRIPT_NAME
dpkgによって、実行されているスクリプトの名前(preinst、postinst、prerm、またはpostrmのいずれか)を、メンテナンスクリプト環境で定義します(dpkg 1.15.7以降)。
DPKG_MAINTSCRIPT_DEBUG
dpkgによって、メンテナンスクリプトに対してデバッグが要求されたかどうか(--debugオプションを使用)を示す値(「0」または「1」)を、メンテナンスクリプト環境で定義します(dpkg 1.4以降)。
ファイル
/etc/dpkg/dpkg.cfg.d/[0-9a-zA-Z_-]*
構成フラグメントファイル(dpkg 1.15.4以降)。
/etc/dpkg/dpkg.cfg
デフォルトオプションを含む設定ファイル。
/var/log/dpkg.log
デフォルトのログファイル(/etc/dpkg/dpkg.cfg およびオプション --log を参照)。
以下にリストされている他のファイルは、デフォルトのディレクトリにあります。これらのファイルの場所を変更する方法については、オプション --admindir を参照してください。
/var/lib/dpkg/available
利用可能なパッケージのリスト。
/var/lib/dpkg/status
利用可能なパッケージのステータス。このファイルには、パッケージが削除用にマークされているかどうか、インストールされているかどうかなど、パッケージに関する情報が含まれています。詳細については、「パッケージに関する情報」のセクションを参照してください。
ステータスファイルは毎日 /var/backups にバックアップされます。ファイルシステムの問題により、ファイルが失われたり破損したりした場合に役立ちます。
バイナリパッケージの形式と内容は、deb(5) で説明されています。
ファイルシステムファイル名
展開および構成中に、dpkg はバックアップおよびロールバックの目的でさまざまなファイル名を使用します。以下は、パッケージのインストール中にこれらのファイル名がどのように使用されるかの簡単な説明です。
*.dpkg-new
展開中に、dpkg は新しいファイルシステムオブジェクトを pathname.dpkg-new に展開します(既存のディレクトリまたはディレクトリへのシンボリックリンクはスキップされます)。展開が完了し、古いオブジェクトのバックアップが実行された後、オブジェクトは pathname に名前が変更されます。
*.dpkg-tmp
展開中に、dpkg は古いファイルシステムオブジェクトのバックアップを pathname.dpkg-tmp に作成します。バックアップは、ディレクトリの場合はファイルタイプの変更がある場合に限り、シンボリックリンクの場合は新しいシンボリックリンクコピーとして、その他のファイルシステムオブジェクトの場合はハードリンクとして実行されます。ただし、config ファイルは後で処理されるため、バックアップは作成されません。
ロールバックが必要な場合、これらのバックアップを使用してオブジェクトの以前の内容を復元します。これらは、インストールが完了すると自動的に削除されます。
*.dpkg-old
構成中に、新しいバージョンをインストールするときに、dpkg は以前の変更された config ファイルを pathname.dpkg-old にバックアップできます。
*.dpkg-dist
構成中に、古いバージョンを保持する場合、dpkg は新しい変更されていない config ファイルを pathname.dpkg-dist にバックアップできます。
セキュリティ
データベースまたはファイルシステムへの書き込みアクセスが必要な操作は、特権操作と見なされ、root 権限のエスカレーションにつながる可能性があります。これらの操作は、信頼できないユーザーに委任したり、信頼できないパッケージに対して実行したりしないでください。そうすると、システムへの root アクセスが許可される可能性があります。
一部の操作(パッケージの検証など)では、ファイルシステム上のファイルにアクセスするために root 権限が必要になる場合があります。通常は、制限された権限のためにアクセスできませんが、それ以外の場合は通常どおりに機能し、適切なメッセージが表示されます。
クエリ操作は root を必要とせず、gain-root コマンドを介してこれらの操作を特権のないユーザーに委任すると、セキュリティ上の影響(特権のエスカレーションなど)が生じる可能性があります。たとえば、ツールによって自動的にページャーが呼び出される場合などです。
また、dpkg-deb(1) および dpkg-split(1) のマニュアルページのセキュリティセクションも参照してください。
バグ
--no-act オプションは、通常、あまり役に立たない情報しか提供しません。
例
エディタ vi(1) に関連するインストール済みパッケージを一覧表示します(dpkg-query はデフォルトでは利用可能なファイルをロードしなくなりました。その場合は、dpkg-query --load-avail オプションを使用して、代わりにロードする必要があります)。
dpkg -l '*vi*'
/var/lib/dpkg/available にある 2 つのパッケージのエントリを表示します。
dpkg --print-avail vim neovim | less
パッケージのリストを自分で検索します。
dpkg --print-avail | less
インストール済みの neovim パッケージを削除します。
dpkg -r neovim
パッケージをインストールするには、まずアーカイブまたはメディアディスクからそれを見つける必要があります。プール構造に基づくアーカイブを使用する場合、アーカイブ領域とパッケージの名前がわかっていれば、パスを推測できます。
dpkg -i /media/bdrom/pool/main/v/vim/vim_9.0.2018-1_amd64.deb
パッケージ選択状態のローカルコピーを作成します。
dpkg --get-selections >myselections
このファイルを別のコンピュータに転送し、選択したパッケージマネージャーのフロントエンド(https://wiki.debian.org/Teams/Dpkg/FAQ#set-selections を参照)を使用して、利用可能なファイルを更新した後、次のようにインストールできます。
apt-cache dumpavail | dpkg --merge-avail
次のようにインストールします。
dpkg --clear-selections
dpkg --set-selections <myselections
これにより、実際にパッケージがインストールまたは削除されるわけではなく、要求されたパッケージの選択状態が設定されるだけです。要求されたパッケージを実際にダウンロードしてインストールするには、別のアプリケーションが必要です。たとえば、apt-get dselect-upgrade を実行します。
通常、dselect(1) はパッケージの選択状態を変更するための、より便利な方法を提供します。
追加機能
次のいずれかのパッケージをインストールすることで、追加機能を利用できます。apt、aptitude、debsig-verify。
関連項目
aptitude(8)、apt(8)、dselect(1)、dpkg-deb(1)、dpkg-query(1)、deb(5)、deb-control(5)、dpkg.cfg(5)、および dpkg-reconfigure(8)。
著者
/usr/share/doc/dpkg/THANKS を参照すると、dpkg に貢献した人々のリストが表示されます。