dpkg(1)

名前
dpkg - Debian パッケージマネージャ

書式
dpkg [options] action

警告
このマニュアルは、dpkg のコマンドライン・オプションやパッケージ状態について、dpkg --help で得られる情報よりもさらに詳細に理解したい利用者のために書かれたものである。 パッケージ管理者は、dpkg がどのようにパッケージをインストールするのかを理解するという目的では、このマニュアルを読まないほうがよい。パッケージをインストールするときや削除するときの dpkg の動作に関する記述は、特に不充分である。

説明
dpkg は、Debian パッケージの、インストール、構築、削除、管理をするためのツールである。dselect(1) は、dpkg の代表的なフロントエンドで、よりユーザフレンドリなツールである。dpkg は、コマンドライン引き数によって完全に制御することができる。コマンドライン引き数は、1 つのアクションと、0 個以上のオプションとで構成される。アクションパラメータは、dpkg に何をさせるのかを指定し、オプションはそのアクションのふるまいを制御する。 また、dpkg は dpkg-deb(1) のフロントエンドとしても使うことができる。以下のアクションは dpkg-deb のアクションであり、dpkg にこれらを引き数として与えると、dpkg-deb に同じ引き数を与えて起動する。
    -b, --build,
    -c, --contents,
    -I, --info,
    -f, --field,
    -e, --control,
    -x, --extract,
    -X, --vextract,
    --fsys-tarfile.
これらのアクションについては、dpkg-deb(1) にくわしい情報がある。

パッケージに関する情報
dpkg は、いくつかの利用可能なパッケージに関する有用な情報を管理している。この情報は、パッケージ状態、パッケージ選択状態、そしてフラグの 3 つに分類できる。これらの値は主に dselect によって変更される。

  パッケージ状態

installed
    パッケージの展開と設定が完了している。

half-installed
    パッケージのインストールは開始しているが、何らかの理由で完了していない。

not-installed
    パッケージはシステムにインストールされていない。

unpacked
    パッケージは展開されたが、設定はされていない。

half-configured
    パッケージは展開され、設定も開始しているが何らかの理由によって完了していない。

config-files
    パッケージの設定ファイルだけが存在している。

  パッケージ選択状態

install
    パッケージはインストールするように選択されている。

deinstall
    パッケージは deinstallation するように選択されている(設定ファイルを除くすべてのファイルを削除したい)。

purge
    パッケージは purge するように選択されている(設定ファイルも含めたすべてのファイルを削除したい)。

  パッケージフラグ

hold
    パッケージは hold (変更禁止)されている。これは --force-hold で強制しない限り dpkg で扱わないということである。

reinst-required
    パッケージは reinst-required されている。これは、壊れている状態でインストールされていて、再インストールが要求されているということである。このパッケージは --force-reinstreq で強制しない限り、削除することができない。

アクション

dpkg -i | --install package_file...
    指定したパッケージをインストールする。もし --recursive または -R オプションを指定する場合、package_file に、参照するディレクトリを指定しなければならない。 インストールは、以下の手順で構成されている。
    1. インストールするパッケージの制御ファイルを取り出す。
    2. もし同じパッケージの別のバージョンがすでにインストール済みの場合、新しいパッケージのインストールの前に、インストール済みのパッケージの prerm スクリプトを実行する。
    3. もしパッケージが preinst スクリプトを提供している場合、それを実行する。
    4. 新しいファイルを展開する。同時に、失敗したときに元に戻せるように、古いファイルを保存する。
    5. もし同じパッケージの別のバージョンがすでにインストール済みの場合、先にインストールされていたパッケージの postrm を実行する。このスクリプトが、新しいパッケージの preinst の後に実行されることに注意すること。これは、新しいファイルが書き込まれるのと同時に古いファイルが削除されるためである。
    6. パッケージの設定をする。これがどのように実行されるか、 --configure の項にくわしい情報がある。

dpkg --unpack package_file ...
    パッケージを展開する、しかし設定はしない。もし --recursive または -R オプションを指定する場合、Package_file に、参照するディレクトリを指定しなければならない。

dpkg --configure package ... | -a | --pending
    展開済みのパッケージを再設定する。もし、-a または --pending を指定した場合、まだ設定されていない展開済みのすべてのパッケージを設定する。 設定は、以下の手順で構成されている。
    1. 設定ファイルを展開する。同時に、失敗したときに元に戻せるように、古い設定ファイルを保存する。
    2. もしパッケージが postinst スクリプトを提供している場合、それを実行する。

dpkg -r | --remove | -P | --purge package ... | -a | --pending
    インストール済みのパッケージを削除する。-r または --remove は、設定ファイルを除いたすべてを削除する。こうすることで、後で再インストールしたときに再設定をしなくてよくなる(設定ファイルの一覧は、debian/conffiles コントロールファイルにある)。-P または --purge は、設定ファイルを含むすべてを削除する。引き数として、パッケージ名の代わりに -a または --pending が指定された場合には、/var/lib/dpkg/status ファイルで remove または purge のマークを持つすべての展開済みパッケージを、それぞれ remove または purge する。 パッケージの削除は以下の手順で構成されている。
    1. prerm スクリプトを実行する。
    2. インストールしたファイルを削除する。
    3. postrm スクリプトを実行する。

dpkg --update-avail | --merge-avail Packages-file
    dpkg や dselect が管理する利用可能なパッケージの情報を更新する。--merge-avail アクションは、古い情報に Packages-file の情報を組み合わせる。--update-avail アクションは、古い情報を Packages-file の情報で置き換える。Debian と一緒に配布されている Packages-file の名前は簡単に Packages である。dpkg は、利用可能なパッケージの情報を /var/lib/dpkg/available に記録する。 available ファイルの取得と更新を行なう、もっとも簡単なコマンドは dselect update である。

dpkg -A | --record-avail package_file ...
    dpkg や dselect が管理する利用可能なパッケージの情報を、package_file パッケージからの情報で更新する。もし --recursive または -R オプションを指定する場合、Package_file に、参照するディレクトリを指定しなければならない。

dpkg --forget-old-unavail
    インストールされていなくて利用可能でないパッケージの情報を消去する。

dpkg --clear-avail
    利用可能なパッケージの情報を消去する。

dpkg -C | --audit
    インストールが完了していないパッケージを探す。dpkg はインストールを完了させるためにどうすればよいかを提案する。

dpkg --get-selections [package-name-pattern...]
    パッケージ選択リストを標準出力に書き出す。パターンを指定しない場合、purge 状態のパッケージは表示されない。

dpkg --set-selections
    パッケージ選択リストを標準入力から読み込んで設定する。ファイルの形式は '<package> <state>' でなければならない。state は、install、hold、deinstall または purge のいずれかである。空行や、行が '#' で始まるコメント行を使用してもよい。

dpkg --clear-selections
    essential でないパッケージすべての選択状態を deinstall にする。--set-selections に与えるリストにないパッケージを deinstall するため、--set-selections の直前に使うためのものである。

dpkg --yet-to-unpack
    インストールするために選択されたが、何らかの理由でまだインストールされていないパッケージを探す。

dpkg --print-architecture
    dpkg のインストールするアーキテクチャ(例えば、"i386")を表示する。

dpkg --compare-versions ver1 op ver2
    二項演算子 op で 2 つのバージョンを比較する。dpkg の返り値は、指定した条件を満たすなら成功(0)、そうでなければ失敗(0 以外)となる。演算子は 2 つのグループに分かれる。これは ver1 か ver2 が欠けているときのふるまいの違いによる。lt le eq ne ge gt は、欠けているバージョンがどれよりも古いとみなす。lt-nl le-nl ge-nl gt-nl は、欠けているバージョンがどれよりも新しいとみなす。< << <= = >= >> > は、control ファイルの文法との互換性のためだけに提供されている。

dpkg --command-fd <n>
    ファイル記述子 <n> から一連のコマンドをうけいれる。注意: 追加のオプションはコマンドラインとこのファイル記述子を通じて指定でき、一回の実行を通じてそれらがリセットされることはない。

dpkg --help
    簡単なオプション一覧を表示する。

dpkg --force-help
    --force-thing オプション一覧を表示する。

dpkg -Dh | --debug=help
    デバッグ用オプション一覧を表示する。

dpkg --licence | dpkg --license
    dpkg のライセンスを表示する。

dpkg --version
    dpkg のバージョン情報を表示する。

dpkg-deb actions
    以下のアクションのくわしい情報は dpkg-deb(1) を参照すること。
    dpkg -b | --build directory [filename]
        deb パッケージを構築する。
    dpkg -c | --contents filename
        deb パッケージに含まれるファイル一覧を表示する。
    dpkg -e | --control filename [directory]
        パッケージから制御情報を取り出す。
    dpkg -x | --extract filename directory
        パッケージに含まれるファイルをすべて取り出す。
    dpkg -f | --field  filename [control-field] ...
        パッケージの制御フィールドを表示する。
    dpkg --fsys-tarfile filename
        Debian パッケージに含まれる tar ファイルを表示する。
    dpkg -I | --info filename [control-file]
        パッケージに関する情報を表示する。
    dpkg -X | --vextract filename directory
        パッケージに含まれるファイルを展開し、ファイル名を表示する。

dpkg-query actions
    以下のアクションの詳細は、dpkg-query(1) を参照すること。
    dpkg -l | --list package-name-pattern ...
        指定したパターンにマッチする名前のパッケージを表示する。
    dpkg -s | --status package-name ...
        指定したパッケージの状態を報告する。
    dpkg -L | --listfiles package ...
        package パッケージによってシステムにインストールされたファイルを表示する。
    dpkg -S | --search filename-search-pattern ...
        指定したファイルがどのパッケージからインストールされたか検索する。
    dpkg -p | --print-avail package
        /var/lib/dpkg/available にある package の詳細情報を表示する。

オプション
すべてのオプションは、コマンドラインや、dpkg の設定ファイルである /etc/dpkg/dpkg.cfg で指定できる。設定ファイルの各行は、(先頭のダッシュが無いこと以外はコマンドラインオプションと全く同じ)オプションか、(行頭が # の)コメントである。

--abort-after=number
    dpkg の処理を中断させるエラー数を変更する。デフォルトは 50 である。

-B|--auto-deconfigure
    パッケージを削除するとき、削除するパッケージに依存した別のパッケージがインストールされている場合がある。このオプションを指定すると、削除するパッケージに依存しているパッケージの設定を取り消す。

-Doctal | --debug=octal
    デバッグモードにする。 octal は、以下の一覧から望む値をビットごとの論理和で組み合わせたものである(これらの値は、将来のリリースでは変更される可能性があるので注意すること)。-Dh または --debug=help はこれらの値を表示する。
     数値 説明
        1 一般的に役に立つ進行状況
        2 管理スクリプトの呼び出し状況と状態
       10 各ファイル処理の情報
      100 各ファイル処理の大量の情報
       20 各設定ファイルの情報
      200 各設定ファイルの大量の情報
       40 依存関係、競合関係
      400 依存関係、競合関係の大量の情報
     1000 dpkg/info ディレクトリなどに関する大量の情報
     2000 正気でないほどの大量の情報

--force-things | --no-force-things | --refuse-things
    指定した things を強制実行する(force)、または拒否する(refuse) (no-force と refuse は同じ意味)。things に、以下の項目をコンマで区切って指定する。--force-help オプションでこれらの説明を表示する。(*)マークのあるものは、デフォルトで強制実行される。 警告: これらのオプションは、おもに熟練したユーザだけが使うことを意図したものである。影響を完全に理解しないままにこれらを使うと、システム全体を壊してしまうかもしれない。 all: 全ての強制オプションを指定する(または打ち消す)。 downgrade(*): より新しいバージョンがすでにインストールされていたとしても、指定したパッケージをインストールする。 警告: 現在の dpkg は、ダウングレード時にいかなる依存関係のチェックもしない。そのため、ダウングレードすることで、ほかのパッケージの依存関係を警告なしに壊すかもしれない。これは深刻な副作用となる可能性があり、主要なシステム構成をダウングレードすることでシステムを壊してしまうこともありうる。注意して使用すること。 configure-any: 指定したパッケージに依存していて、すでに展開されているが、まだ設定されていないパッケージも一緒に設定をする。 hold: たとえ "hold" とマークされていても、そのパッケージの処理をする。 remove-reinstreq: 壊れていて、再インストールが必要だとマークされていたとしても、パッケージを削除する。これにより、例えば、パッケージの一部が dpkg に管理されないで残るなどの問題がおこるかもしれない。 remove-essential: essential とされるパッケージであっても削除する。essential パッケージには、たいてい最も基本的な UNIX コマンドが含まれる。これらのパッケージを削除すると、システム全体が動作しなくなることもあるので、注意して削除すること。 depends: すべての依存問題を警告に変える。 depends-version: 依存関係の確認をするとき、バージョンを無視する。 conflicts: 他のパッケージと競合してもインストールする。たいていはいくつかファイルを上書きすることになるため、危険である。 confmiss: 常に、欠けている設定ファイルをインストールする。このオプションは、変更(ファイルを削除したこと)を保存しないため、危険である。 confnew: 設定ファイルが変更されていた場合、問い合わせなしに新しいバージョンの設定ファイルをインストールする。ただし、--force-confdef を同時に指定した場合は、デフォルトの動作が優先される。 confold: 設定ファイルが変更されていた場合、問い合わせなしに古いバージョンの設定ファイルを保持する。ただし、--force-confdef を同時に指定した場合は、デフォルトの動作が優先される。 confdef: 設定ファイルが変更されていた場合、常にデフォルトの動作をする。デフォルトの動作がなく、--force-confnew と --force-confold のどちらも同時に指定していない場合、ユーザに尋ねるために中断する。指定している場合は、指定されたオプションによって最終的な動作が決まる。 overwrite: あるパッケージで提供されているファイルを、インストールするパッケージのファイルで上書きする。 overwrite-dir: あるパッケージで提供されているディレクトリを、インストールするパッケージのファイルで上書きする。 overwrite-diverted: 退避(divert した)版のファイルを非退避(divert していない)版のファイルで上書きする。 architecture: パッケージが間違ったアーキテクチャ用であっても処理をする。 bad-path: 重要なプログラムが PATH に含まれていなくても実行する。問題が起きる可能性は高い。 not-root: root でないときでも、それをインストール(または削除)しようと試みる。 bad-verify: 信頼性チェックに失敗してもインストールする。

--ignore-depends=package,...
    指定したパッケージに関する依存関係の確認を無視する(実際は、依存関係を確認し、競合に対して警告メッセージを出して、アクションを実行する)。

--new | --old
    パッケージのフォーマットが新しいか古いかを指定する。これは dpkg-deb(1) のオプションである。

--nocheck
    パッケージを構築するときに、制御ファイルの内容も読まず、確認もしない。これは dpkg-deb(1) のオプションである。

--no-act | --dry-run | --simulate
    期待される動作をすべて実行するが、どのような変更も書き込まない。これは、実際にはシステムに何の変更も加えずに、指定したアクションで何がおこるのかを確認するためのものである。 オプション --no-act は、必ずアクションパラメータより前に与えること。さもなくば、望ましくない結果が起きる可能性がある(例えば、システムに何も変更を加えるつもりがないのに、 dpkg --purge foo --no-act を実行すると、最初にパッケージ foo を本当に purge し、次にパッケージ --no-act を purge しようとする、ということになる)。

-R | --recursive
    指定したディレクトリを再帰的に検索し、みつけた *.deb というパターンにマッチするファイルをすべて扱う。これは、-i, -A, --install, --unpack そして --avail アクションとともに使うことができる。

-G  インストール済みのパッケージのほうがバージョンが新しければ、インストールしない。これは --refuse-downgrade の別名である。

--root=dir | --admindir=dir | --instdir=dir
    デフォルトのディレクトリを変更する。admindir はインストール済みのパッケージやインストールされていないパッケージの状態に関する情報などを提供する、多数のファイルが格納されているディレクトリで、デフォルトは /var/lib/dpkg である。instdir はパッケージをインストールするときに参照されるディレクトリで、デフォルトは / である。また、instdir は、パッケージのインストールスクリプトが実行される前に chroot(2) するディレクトリのパスである。つまり、スクリプトは instdir をルートディレクトリとみなす。root を変更すると、instdir を dir に、admindir を dir/var/lib/dpkg に変更する。

-O | --selected-only
    インストール(または削除)作業をするように選択したパッケージのみを処理する。実際の指定は、dselect や dpkg を使って行なう。例えば、あるパッケージが削除されるのは、そのパッケージが削除されるよう選択されているということである。

-E | --skip-same-version
    すでに同じバージョンのパッケージがインストールされていたら、インストールしない。

--status-fd <n>
    ファイル記述子 <n> にパッケージ状態の情報を送る。これは複数与えることができる。状態の情報は `status: <pkg>: <pkg qstate>' の形式である。エラーは `status: <pkg>: error: extend-error-message' として報告される。設定ファイルの衝突は `status: conffile-prompt: conffile : 'current-conffile' 'new-conffile' useredited distedited' として報告される。

--log=filename
    状態の変更やアクションの記録を、デフォルトの /var/log/dpkg.log から filename に変更する。このオプションを複数回指定した場合は、最後のファイル名が使われる。ログメッセージは次の形式である。`YYYY-MM-DD HH:MM:SS status <state> <pkg> <installed-version>' は状態の変更。`YYYY-MM-DD HH:MM:SS <action> <pkg> <installed-version> <available-version>' はアクションで、<action> は install、upgrade、remove、purge のいずれか。`YYYY-MM-DD HH:MM:SS conffile <filename> <decision>' は設定ファイルの変更で、<decision> は install か keep のどちらかである。

--no-debsig
    パッケージの署名を確認しない。

ファイル

/etc/dpkg/dpkg.cfg
    オプションのデフォルト値を記述する設定ファイル。

/var/log/dpkg.log
    デフォルトのログファイル(/etc/dpkg/dpkg.cfg(5) と --log オプションも参照)。

以下に示すファイルはデフォルトの値である。どのようにしてファイルの位置を変更するかについては、--admindir オプションの項を参照すること。

/var/lib/dpkg/available
    使用できるパッケージの一覧。

/var/lib/dpkg/status
    使用できるパッケージの状態。このファイルは、パッケージに削除のマークがあるかどうか、インストール済みかどうか、などの情報が含まれている。くわしくは、パッケージに関する情報の項を参照すること。

以下のファイルはバイナリパッケージを構成するファイルである。これらのファイルに関するくわしい情報は、deb(5) を参照すること。

control

conffiles

preinst

postinst

prerm

postrm

環境変数

DPKG_NO_TSTP
    任意の値で定義すると、シェルエスケープをしたときに dpkg 自体を一時停止(suspend)するのではなく、新しいシェルを起動する。

SHELL
    dpkg が新しいシェルを起動するときに、実際に起動するプログラム。

COLUMNS
    dpkg が整形テキストを表示する時に参照するコラム数。現在は -l オプションでのみ参照されている。

例
vi(1) エディタに関連のあるパッケージの一覧を表示する。
     dpkg -l '*vi*'
2 つのパッケージの /var/lib/dpkg/available にある項目を表示する。
     dpkg --print-avail elvis vim | less
自分でパッケージのリストから検索する。
     less /var/lib/dpkg/available
elvis パッケージを削除する。
     dpkg -r elvis
パッケージをインストールするには、まずそのパッケージをアーカイブや CDROM から探す必要がある。"available" ファイルによれば、vim パッケージは "editors" セクションに属している。
     cd /cdrom/hamm/hamm/binary/editors
     dpkg -i vim_4.5-3.deb
パッケージ選択状況のコピーを作成する。
     dpkg --get-selections >myselections
このファイルをほかのコンピュータに転送して、インストールする。
     dpkg --clear-selections
     dpkg --set-selections <myselections
これは実際にはインストールも削除もしないことに注意。これは単に要求しているパッケージの選択状態を設定するだけである。実際に要求しているパッケージをダウンロードしインストールするには別のアプリケーションが必要である。例えば、dselect を起動して、"導入(Install)" を選べばよい。 通常、パッケージの選択状態を変更するには dselect(1) を使用するほうが便利である。

機能の追加
apt、aptitude、debsums パッケージをインストールすると便利な機能を追加できる。

関連項目
dselect(1), dpkg-deb(1), dpkg-query(1), deb(5), deb-control(5), dpkg.cfg(5), dpkg-reconfigure(8).

バグ
--no-act の提供する情報はたいていの場合、不充分である。

著者
dpkg に貢献した人のリストは /usr/share/doc/dpkg/THANKS に
挙げてある。

翻訳者
喜瀬浩 <kise@fuyuneko.jp>

翻訳校正
Debian JP Documentation ML <debian-doc@debian.or.jp>