[% title = "Debian Packaging Manual - バイナリパッケージ" %]


[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ next ]


Debian Packaging Manual
Chapter 2 - バイナリパッケージ


バイナリパッケージは2つの部分からなります。 最初の部分には dpkg がインストールや削除に使う 様々な制御情報ファイルやスクリプトが入っています。 パッケージ制御情報ファイル, Section 2.2 を見てください。

2つめの部分はインストールされるファイルやディレクトリを含んだ アーカイブです。

将来、他にもチェックサムや電子署名などがバイナリパッケージに 含まれるようになるでしょう。 アーカイブのフォーマットについてはマニュアル deb(5) に完全な記述があります。


2.1 パッケージファイルの作成 - dpkg-deb

バイナリパッケージファイルの操作はすべて dpkg-deb によって行います。 dpkg-deb はパッケージフォーマットを 理解する唯一のプログラムです。 (dpkg-debdpkg に呼び出されます。 dpkg は依頼されたオプションが dpkg-deb に適切であるかを見分け、同じ引数で 代わりに dpkg-deb を呼び出します。)

バイナリパッケージを作るためにはパッケージの ファイルシステムデータ部分に入れたいファイルやディレクトリを 全て含むディレクトリツリーを作らなければなりません。 Debianフォーマットのソースパッケージでは、このディレクトリは 通常はパッケージのソースツリーのトップからの相対パスで debian/tmp です。

これらのファイルやディレクトリは、インストールされた時に あなたが望むようなシステム上での (あなたが作るディレクトリツリーのルートとの相対での)場所と 所有者と許可属性を持っていなければなりません。

現在のバージョンの dpkg では、 ユーザーとグループに用いる uid/username、gid/groupname の 対応はパッケージが作られたシステムと インストールされるシステムとで同じにするべきです。

あなたが作るミニチュアファイルシステムのルートに DEBIAN という特別なディレクトリを 追加しなければなりません。そこには制御情報ファイル、 特にバイナリパッケージ制御ファイルが含まれます (メイン制御情報ファイル: control, Section 2.3 を見て下さい)。

DEBIAN ディレクトリはパッケージの ファイルシステムアーカイブには入れられません。 よって、 dpkg によってパッケージが インストールされる時にはインストールされません。

パッケージの用意をしたら次のようにします。

       dpkg --build directory

これにより directory.deb に パッケージが構築されます。 (dpkg--builddpkg-deb のオプションであることを知っているため、 パッケージを構築するために dpkg-deb を同じオプションで起動します。)

新しく作られたファイルの中身を調べる方法についての詳細は manpage の dpkg-deb(8) を見てください。 次のコマンドの出力から得られることがわかるでしょう。

       dpkg-deb --info filename.deb
       dpkg-deb --contents filename.deb
       dpkg --contents filename.deb

パッケージの著作権ファイルを見るには次のコマンドが使用できます。

       dpkg --fsys-tarfile filename.deb | tar xof usr/doc/\*copyright | less

2.2 パッケージ制御情報ファイル

バイナリパッケージの制御情報部は dpkg が 理解できる名前を持ったファイルの集合です。 これらのファイルの内容は dpkg に特別に 扱われます。 - ファイルの内容がパッケージのインストールや削除の時に dpkg に使われるものであったり、 パッケージ管理者が dpkg に実行させたい スクリプトであったりします。

パッケージ制御エリアにそれ以外のファイルを入れても 構いませんが、あまりいいアイデアではありません (もっとも、それらは一般に無視されますが)。

ここで、dpkg がサポートする制御情報ファイルの 簡単なリストとそれらが何に使われるかについての概要を 挙げておきます。

control

このファイルには dpkg が使う鍵となる 情報が書かれています。このファイルにより パッケージ名とバージョンの指定や、パッケージに関する 説明のユーザーへの提供、他のパッケージとの関連の 指定などを行ないます。 メイン制御情報ファイル: control, Section 2.3 を見て下さい。

このファイルは通常 dpkg-shlibdeps の助けを 借りてソースパッケージ内の情報から dpkg-gencontrol によって自動的に 作られます。 ソースパッケージを処理するためのツール, Section 3.1 を見て下さい。

postinst, preinst, postrm, prerm

これらは dpkg が、パッケージの インストール、アップグレード、削除の時に起動する 実行可能なファイル(通常はスクリプト)です。 これらのファイルにより、パッケージがパッケージに特有の 事柄を扱ったり、dpkg が提供するよりも より複雑な処理を要求することが可能になります。 これらのファイルが、いつ、どの様に呼び出されるかに ついての詳細は パッケージ管理スクリプトと インストールの手順, Chapter 6 にあります。

これらのスクリプトに「常に同じ効き目」を持たせておく [2] ことは非常に重要です。もしエラーが起きたり、 ユーザーが dpkg を中断したり、また その他の予期できない問題が起きても、後に ひどく壊れたパッケージを残しません。

管理スクリプトは制御端末で実行されることが 保証されており、ユーザーと対話することができます。 もしパスワードのプロンプトを出す場合は、 dpkg はインストールの過程のログを とるためにスクリプトの標準入出力を同じところに リダイレクトするので /dev/tty を通じて フルスクリーンによる対話もしくは同様のことを 行なわなければなりません。 同様に、これらのスクリプトは、ログをとる目的で パイプに標準出力をリダイレクトして実行される場合も あります。そのため、Perl スクリプトは出力が バッファリングされずにすぐに表示されるようにするために $|=1 とセットして出力をバッファリングしない ように設定しなければなりません。

いずれのスクリプトも成功した場合には 0 、 失敗した場合には 0 以外を終了時の値として 返さなくてはなりません。

conffiles

このファイルには dpkg により自動的に 扱われなければならない設定ファイルのリストが含まれます (設定ファイルの取り扱い, Chapter 9 を参照)。 すべての設定ファイルをここに書く必要はないことに 注意して下さい。

shlibs

このファイルにはパッケージが提供する共有ライブラリの リストが、それぞれの依存関係の詳細と共に含まれます。 このファイルは dpkg-shlibdeps が パッケージ制御ファイルで、どの依存関係が 必要かを決める時に使用します。 shlibs ファイルの書式については shlibs ファイルの書式, Section 12.1 に記述があります。


2.3 メイン制御情報ファイル: control

dpkg がパッケージをインストールする時に使う もっとも重要な制御情報ファイルが control です。 このファイルはパッケージの`人口動態統計'をすべて 含んでいます。

Debian ソースから作られたパッケージのバイナリパッケージ 制御ファイルは dpkg-gencontrol という特別な ツールで作られます。このツールは debian/controldebian/changelogから必要な情報を捜し出します。 詳細は ソースパッケージ, Chapter 3 を見て下さい。

バイナリパッケージ制御ファイルの fields は:

制御ファイルの文法とこれらのフィールドの目的についての記述は 制御ファイルとそのフィールド, Chapter 4 で得られます。


2.4 タイムスタンプ

可能な限りアップストリームソースファイルの更新時間を パッケージ中に保持しておくことをメンテナに推奨します。 [4]


[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ next ]


Debian Packaging Manual

version revision 1.13, 2000-08-22

Ian Jackson ijackson@gnu.ai.mit.edu
校正: David A. Morris bweaver@debian.org
メンテナー: Christian Schwarz schwarz@debian.org
メンテナー: Manoj Srivastava srivasta@debian.org
メンテナー: Julian Gilbey J.D.Gilbey@qmw.ac.uk
メンテナー: The Debian Policy group debian-policy@lists.debian.org
日本語版メンテナー: 早瀬 茂規 shayase@tky3.3web.ne.jp
日本語版校正: Japanese Debian Documentation Project debian-doc@debian.or.jp