Debianでパッケージをリリースできるようにしたい - よりDebianらしく - 2014-04-03 - ククログ

ククログ

株式会社クリアコード > ククログ > Debianでパッケージをリリースできるようにしたい - よりDebianらしく

Debianでパッケージをリリースできるようにしたい - よりDebianらしく

はじめに

以前、オープンソースのカラムストア機能付き全文検索エンジンであるGroongaをDebianに入れるために必要な作業について、最初のとっかかりであるWNPPへのバグ登録の紹介記事を書きました。

今回は、現在進行中であるGroongaのDebianリポジトリ入りを目指す作業の中から、Debianらしいパッケージを用意するときに必要なLintianについて紹介します。

よりDebianらしいパッケージを用意するには

WNPPにバグ登録をしたら次はパッケージを用意する必要があります。Groongaの場合には、すでにパッケージ自体は独自リポジトリで提供していたので、パッケージを作る部分については新たに作業は必要ありませんでした。

問題になるのは、作ったパッケージがDebianのポリシーにきちんと適合しているか、という点です。

パッケージに関する指針はドキュメント化されているので、じっくりと一読すれば作ったパッケージに問題があるかは判断できるでしょう。

ただし、あまりdebパッケージに詳しくない場合にはちょっと大変な作業です。明らかに問題のある箇所は自動的に検出して、必要な修正を行うようにしたいところです。

Lintianとは

上記の目的の達成に役立つのがLintianです。LintianはDebianパッケージを確認し、バグやポリシーに違反している箇所を報告してくれる便利なツールです。debuildでパッケージをビルドしたときに以下のようなログを見たことがあるはずです。これはdebuildがlintianも一緒に実行してくれているからです。

Now running lintian...
W: groonga-plugin-suggest: binary-without-manpage usr/bin/groonga-suggest-create-dataset
W: groonga-plugin-suggest: binary-without-manpage usr/bin/groonga-suggest-httpd
W: groonga-plugin-suggest: binary-without-manpage usr/bin/groonga-suggest-learner
W: groonga-httpd: binary-without-manpage usr/sbin/groonga-httpd
W: groonga-httpd: binary-without-manpage usr/sbin/groonga-httpd-restart
W: groonga-bin: manpage-has-errors-from-man usr/share/man/man1/groonga.1.gz 4070: warning [p 43, 10.0i]: can't break line
W: groonga-bin: binary-without-manpage usr/bin/groonga-benchmark
Finished running lintian.

Debian 新メンテナーガイドには、パッケージのエラーの検証という章が設けられており、Lintian以外のパッケージの問題を確認する方法が紹介されています。

Lintianでパッケージの問題を確認するには

debuildでパッケージをビルドしている場合には、最後にlintianも実行してくれるので個別に実行する必要はありませんが、単体で実行したい場合には次のようにコマンドを実行します。

% lintian -i -I --show-overrides groonga_4.0.0-1_amd64.changes

上記でも良いのですが、さらに詳細をチェックしたい場合もあるでしょう。以下のようにすると、パッケージのアップロードによく使われるmentors.debian.netのレポートと同様の確認を行うことができます。

% lintian -EviIL +pedantic groonga_4.0.0-1_amd64.changes

もしエラーの理由の詳細説明が不要なら、-iは指定しなくても良いでしょう。

% lintian -EvIL +pedantic groonga_4.0.0-1_amd64.changes

上記指定でどんな風なチェック結果になるかは、Groongaの例が参考になるでしょう。

lintianが報告する内容にはタグが必ず含まれています。例えば最初にあげたログだと「binary-without-manpage」が該当します。

どう修正したらいいかのヒントはタグに対応するページがあるので、そちらを参考にすると良いでしょう。例えば、「binary-without-manpage」に対応するページはLintian Tag: binary-without-manpageとなっています。

まとめ

今回はDebianに入れようとしているパッケージがDebianらしいものになっているか確認する方法を紹介しました。 ビルドしたパッケージを新規にDebian入りさせるためには、このあとスポンサーにレビューしてもらわなければなりません。それらについては、またの機会に記事にしたいと思います。