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」傍注参照)。もし不幸にも、artargzip/xz/bzip2 のうち 1 つでも無かったら、足りないプログラムを別のシステムからコピーするだけで十分です(其々のプログラムは、依存関係が無く、完全に独立して動くため、単純にコピーすれば十分です)。
.deb ファイルの内容を見てみましょう:
$ ar t dpkg_1.16.10_amd64.deb
debian-binary
control.tar.gz
data.tar.gz
$ ar x dpkg_1.16.10_i386.deb
$ ls
control.tar.gz  data.tar.gz  debian-binary  dpkg_1.16.10_i386.deb
$ tar tzf data.tar.gz | head -n 15
./
./var/
./var/lib/
./var/lib/dpkg/
./var/lib/dpkg/updates/
./var/lib/dpkg/alternatives/
./var/lib/dpkg/info/
./var/lib/dpkg/parts/
./usr/
./usr/share/
./usr/share/locale/
./usr/share/locale/sv/
./usr/share/locale/sv/LC_MESSAGES/
./usr/share/locale/sv/LC_MESSAGES/dpkg.mo
./usr/share/locale/it/
$ tar tzf control.tar.gz
./
./conffiles
./preinst
./md5sums
./control
./postrm
./prerm
./postinst
$ cat debian-binary
2.0
ご覧の通り、Debian パッケージの ar アーカイブは 3 つのファイルから成り立っています:
  • debian-binary。これは使われている .debファイルのバージョンを示す (2013 年の時点ではバージョン 2.0) テキストファイルです。
  • control.tar.gz。このアーカイブファイルには、パッケージの名前やバージョンなど、利用可能なすべてのメタ情報が含まれています。このメタ情報の一部と、例えば、マシンにインストールされているパッケージのリストを照らし合わせて、パッケージ管理ツールはパッケージをインストールまたはアンインストールが可能かを決定します。
  • data.tar.gz。このアーカイブには、パッケージから展開されるすべてのファイルが含まれています; 実行ファイル、文書などすべてが保存されています。一部のパッケージでは異なる圧縮フォーマットが使われているかもしれません、このような場合、ファイルは別の名前がつけられています (bzip2 の場合 data.tar.bz2、XZ の場合 data.tar.xz、LZMA の場合 data.tar.lzma)。