Product SiteDocumentation Site

第 5 章 パッケージシステム、ツールと基本原則

5.1. バイナリパッケージの構造
5.2. パッケージのメタ情報
5.2.1. 説明、control ファイル
5.2.2. 設定スクリプト
5.2.3. チェックサム、設定ファイルのリスト
5.3. ソースパッケージの構造
5.3.1. フォーマット
5.3.2. Debian 内での使われ方
5.4. dpkg を用いたパッケージの操作
5.4.1. パッケージのインストール
5.4.2. パッケージの削除
5.4.3. dpkg のデータベースへの問い合わせと .deb ファイルの調査
5.4.4. dpkg のログファイル
5.4.5. マルチアーキテクチャサポート
5.5. 他のパッケージングシステムとの共存
Debian システム管理者は日常的に .deb パッケージを取り扱います。なぜなら、パッケージにはそのパッケージを使うために必要なすべての要素 (アプリケーション、文書など) が含まれており、パッケージによってこれらの要素のインストールとメンテナンスが楽になるからです。ゆえに、パッケージとはどのようなもので、パッケージはどのように取り扱われるべきものなのかを知っておくことは良い考えです。
この章では、「バイナリパッケージ」と「ソースパッケージ」の構造と内容について説明します。バイナリパッケージとは dpkg が直接取り扱う .deb ファイルです。一方、ソースパッケージにはソースコードおよびバイナリパッケージをビルドするための説明が含まれています。

5.1. バイナリパッケージの構造

Debian パッケージのフォーマットは伝統的なコマンドである artargzip (xzbzip2 の場合もあります) を備える Unix システムで内容を展開できるように設計されました。この一見たわいもない特徴は可搬性と障害復旧を考えると重要です。
たとえば、誤って dpkg プログラムを削除して、Debian パッケージをインストールできなくなったとしましょう。dpkg は Debian パッケージなので、もはやシステムを回復することは不可能のように見えます... 幸いなことに、パッケージの構成を知っていれば、dpkg パッケージの .deb ファイルをダウンロードし、手作業でパッケージをインストールできます (補注TOOLS dpkgAPTarを参照してください)。もし不幸にも、artargzip/xz/bzip2 のうち 1 つでもなかったら、足りないプログラムを別のシステムからコピーするだけで十分です (各々のプログラムは、依存関係がなく、完全に独立して動くため、単純にコピーすれば十分です)。システムが最悪の状況に陥ってこれらのプログラムが動かない場合 (最も根源的なシステムライブラリが欠けている場合?)、静的リンクされた busybox (busybox-static パッケージに含まれます) を試してみるべきです。静的リンクされた busybox はさらに依存関係が少なく、busybox arbusybox tarbusybox gunzip などのサブコマンドを備えています。
それでは .deb ファイルの内容を見てみましょう。
$ ar t dpkg_1.17.23_amd64.deb
debian-binary
control.tar.gz
data.tar.gz
$ ar x dpkg_1.17.23_amd64.deb
$ ls
control.tar.gz  data.tar.gz  debian-binary  dpkg_1.17.23_amd64.deb
$ tar tzf data.tar.gz | head -n 15
./
./var/
./var/lib/
./var/lib/dpkg/
./var/lib/dpkg/parts/
./var/lib/dpkg/info/
./var/lib/dpkg/alternatives/
./var/lib/dpkg/updates/
./etc/
./etc/logrotate.d/
./etc/logrotate.d/dpkg
./etc/dpkg/
./etc/dpkg/dpkg.cfg.d/
./etc/dpkg/dpkg.cfg
./etc/alternatives/
$ tar tzf control.tar.gz
./
./conffiles
./postinst
./md5sums
./prerm
./preinst
./control
./postrm
$ cat debian-binary
2.0
ご覧の通り、Debian パッケージの ar アーカイブは以下の 3 つのファイルから成り立っています。
  • debian-binary。これは使われている .deb ファイルのバージョンを示す (2015 年の時点ではバージョン 2.0) テキストファイルです。
  • control.tar.gz。このアーカイブファイルには、パッケージの名前やバージョンなど、利用できるすべてのメタ情報が含まれています。このメタ情報の一部と、たとえば、マシンにインストールされているパッケージのリストを照らし合わせて、パッケージ管理ツールはパッケージをインストールまたはアンインストールが可能かを決定します。
  • data.tar.gz。このアーカイブには、パッケージから展開されるすべてのファイルが含まれています。つまり、実行ファイル、文書などすべてが保存されています。一部のパッケージでは異なる圧縮フォーマットが使われているかもしれません、このような場合、ファイルは別の名前が付けられています (bzip2 の場合 data.tar.bz2、XZ の場合 data.tar.xz です)。