目次
最新の内容とより実用的な例でこの入門書を書き換えたものが Guide for Debian Maintainers として入手できます。この新しい入門書を第一次的な入門書として使ってください。
ここでは, 公式アーカイブにパッケージをアップロードする前に、作成したパッケージのエラーをあなた自身で確認するために知っておかなければならない方法について、幾つか述べます。
あなたのマシン以外でのテストもまた良いアイデアです。以下に述べるすべてのテストにおける、どんな警告とエラーについてでもしっかりと確認しておかなければなりません。
あなたの 3.0 (quilt)
フォーマットのノンネイティブ Debian パッケージ
をビルドした後で、debian/patches
ディレクトリー内に
debian-changes-*
のような新規の自動生成されたパッチファイルを見つけた場合。何かの間違いで何らかのファイルを変更したか、ビルドスクリプトがアップストリームソースに変更を加えた可能性が大いにあります。あなたの間違いなら、それを修正しましょう。ビルドスクリプトが引き起こした場合は、「rules
ファイルのカスタマイズ」 にあるように dh-autoreconf
を使って根本原因を修正するか、「source/options
」 にあるように
source/options
を使って回避策をとります。
あなたのパッケージが問題なくインストールできるかどうかをテストしなければなりません。debi(1) コマンドはあなたが作成した全てのバイナリーパッケージのインストールテストに役立ちます。
$ sudo debi gentoo_0.9.12-1_i386.changes
別のシステムでインストール時に問題が起きるのを防ぐために、Debian アーカイブよりダウンロードした
Contents-
ファイルを用いて、他の既存のパッケージと重複するファイルがないことを確認しておかなければなりません。apt-file
コマンドはこの作業において恐らく役に立つでしょう。重複するファイルが存在するならば、実際に問題になることを回避するために、ファイルをリネームするか、複数のパッケージが依存する独立のパッケージに共通ファイルを移動するか、他の影響のあるパッケージと調整しながら
alternatives (update-alternatives(1) 参照)を用いるか、i386
debian/control
に
Conflicts
項目を宣言して下さい。
全てのメンテナースクリプト
(preinst
、prerm
、postinst
そして postrm
ファイルのこと) は、それが debhelper
プログラムで自動生成されたのでない場合は、正しく書くことが非常に困難です。だからあなたが新米メンテナーならばこれらは使わないで下さい
(「{pre,post}{inst,rm}
」 参照)。
パッケージがこれらの重要なメンテナースクリプトを使用するならば、インストールだけではなく、削除、完全削除 (purge)、そしてアップグレードについても確実にテストしましょう。多くのメンテナースクリプトのバグは削除もしくは完全削除の場合に発生します。これらのテストのためには、以下の様に dpkg コマンドを実行します:
$ sudo dpkg -r gentoo $ sudo dpkg -P gentoo $ sudo dpkg -i gentoo_version
-revision
_i386
.deb
以下のような順番で実行すべきでしょう:
(可能な場合は)前回バージョンをインストールします。
旧バージョンからアップグレードします。
旧バージョンになるよう、ダウングレードします (オプション)。
完全削除 (purge) します。
新しいパッケージとしてインストールします。
削除します。
もう一度インストールします。
完全削除 (purge) します。
これが最初に作成したパッケージならば、将来発生するかもしれない問題を防ぐために、異なるバージョンのダミーパッケージを作成すべきです。
あなたのパッケージが過去の Debian にてリリースされていた場合には、人々は大抵最新の Debian のリリース版に含まれているバージョンからパッケージのアップグレードをするであろう、ということに配慮しましょう。上記の手順で、そのバージョンからきちんとアップグレードできることを、忘れずに確認しておいてください。
ダウングレードは公式にはサポートされていませんが、これをサポートするのは友好的な態度です。
lintian(1) を .changes
に対して実行しましょう。lintian
コマンドはパッケージ作成時のよくある間違いをチェックするために多くのテストスクリプトを実行します。[75]
$ lintian -i -I --show-overrides gentoo_0.9.12-1_i386.changes
もちろん、.changes
のファイル名はあなたが作成したパッケージに置き換えて下さい。lintian
コマンドの出力は以下のようにマークされています:
E:
はエラーです。 確実にポリシー違反もしくはパッケージエラーです。
W:
は警告です。 ポリシー違反もしくはパッケージングエラーである可能性があります。
I:
は参考情報です。パッケージのとある性質について参考となる情報を提供します。
N:
は覚書です。 デバッグに有用な情報を詳述します。
O:
はオーバーライド通知です。 lintian-overrides
ファイルによりメッセージがオーバーライドされたメッセージです。これは --show-overrides
オプションを指定した際に表示されます。
警告が出た場合には、パッケージを調整するか、その警告が不当であることを確認して下さい。もし警告が不当である場合には 「{
」 で述べた package
.,source/}lintian-overrideslintian-overrides
を作成して下さい。
dpkg-buildpackage によるパッケージの生成と lintian の実行は、debuild(1) コマンド、もしくは pdebuild(1) コマンドを用いれば一気に実行することができます。
debdiff(1) コマンドを用いると、二つのソースパッケージに含まれているファイルを比較することができます。
$ debdiffold-package
.dscnew-package
.dsc
debdiff(1) コマンドは二つのバイナリーパッケージに含まれるファイルの一覧を比較することもできます。
$ debdiffold-package
.changesnew-package
.changes
これらのコマンドは、ソースパッケージ中でどんな変更をしたのか、バイナリーパッケージの中で意図せず削除したり配置を間違えたりしていないか、そしてバイナリーパッケージの更新時に不用意な変更をしていないかどうか、といった事柄を確認するのに便利です。
interdiff(1) コマンドを用いると、二つの
.diff.gz
ファイルを比較することができます。旧来の 1.0
ソース形式でパッケージを更新している場合には、メンテナーがソースに意図しない変更をしていないことを確認するのに便利です。
$ interdiff -zold-package
.diff.gznew-package
.diff.gz
新規の 3.0
ソースフォーマットは 「patches/*
」
で説明したように複数のパッチファイル中に変更を保存します。各々の debian/patches/*
ファイルの変化も interdiff を使って追いかけられます。
mc(1)
の様に、*.deb
パッケージファイルだけではなく、*.udev
,
*.debian.tar.gz
, *.diff.gz
,
*.orig.tar.gz
の中身を閲覧することができるファイルマネージャを用いると、多くのファイルの検査が直感的に行なえます。
不要なファイルやサイズがゼロのファイルがバイナリーパッケージとソースパッケージに含まれていないことをよく確認して下さい。
大抵は不要なファイルが正しく削除されずに残ってしまっています。rules
を調整しこれを修正して下さい。
[75] /etc/devscripts.conf
や
~/.devscripts
において 「debuildコマンド」
で述べた設定をしている場合には、lintian に -i -I
--show-overrides
オプションを指定する必要はありません。