付録A Debian メンテナツールの概要

目次

A.1. 主要なツール
A.1.1. dpkg-dev
A.1.2. debconf
A.1.3. fakeroot
A.2. パッケージチェック (lint) 用ツール
A.2.1. lintian
A.2.2. debdiff
A.3. debian/rules の補助ツール
A.3.1. debhelper
A.3.2. dh-make
A.3.3. equivs
A.4. パッケージ作成ツール
A.4.1. git-buildpackage
A.4.2. debootstrap
A.4.3. pbuilder
A.4.4. sbuild
A.5. パッケージのアップロード用ツール
A.5.1. dupload
A.5.2. dput
A.5.3. dcut
A.6. メンテナンスの自動化
A.6.1. devscripts
A.6.2. autotools-dev
A.6.3. dpkg-repack
A.6.4. alien
A.6.5. dpkg-dev-el
A.6.6. dpkg-depcheck
A.7. 移植用ツール
A.7.1. quinn-diff
A.7.2. dpkg-cross
A.8. ドキュメントと情報について
A.8.1. docbook-xml
A.8.2. debiandoc-sgml
A.8.3. debian-keyring
A.8.4. debian-maintainers
A.8.5. debview

この章には、メンテナが利用できるツールについて大まかな概要が含まれています。以下は完全なものでも決定版的なものでもありませんが、よく使われているツールについての説明です。

Debian メンテナツールは、開発者を手助けし、重要な作業のために時間を作れるようにしてくれるものです。Larry Wall が言うように、やり方は一つではありません (there's more than one way to do it)。

高度なパッケージメンテナンスツールを使うのを好む人もいればそうではない人もいます。Debian は公式にはこの問題を不可知論であるとしています。どのようなツールでも作業ができるのであれば構いません。つまり、この章は誰もがどのツールを使うべきか、メンテナンス上で何をすべきかと要求する為のものではないということです。あるいは競合するツールを排して特定のツールを勧める訳でもありません。

パッケージの説明文のほとんどは実際のパッケージの説明から取ったものです。より詳細な情報はパッケージ内のドキュメントで確認できます。apt-cache show パッケージ名 コマンドでも情報を得られます。

A.1. 主要なツール

以下のツールはどのメンテナであっても、必ず必要とするものです。

A.1.1. dpkg-dev

dpkg-dev は、パッケージを展開、ビルド、Debian ソースパッケージをアップロードするのに必要なツールを含んでいます (dpkg-source を含む) 。これらのユーティリティはパッケージを作成・操作するのに必要な基礎的で、低レイヤの機能を含んでいます。そのため、これらはあらゆる Debian メンテナにとって必要不可欠なものです。

A.1.2. debconf

debconf は、パッケージを対話形式で設定できる一貫したインターフェイスを提供します。これはユーザインターフェイスに依存せず、エンドユーザがテキストのみのインターフェイス、HTML インターフェイス、ダイアログ形式のインターフェイスでパッケージを設定できます。新たなインターフェイスはモジュールとして追加できます。

このパッケージに関するドキュメントは debconf-doc パッケージ中で確認できます。

多くの人が、対話的な設定を必要とする全てのパッケージにこのシステムが使われるべきだと感じています。debconf による設定管理」 を参照してください。現在は debconf は Debian ポリシーで必要であるとはされていませんが、将来には変更されることでしょう。

A.1.3. fakeroot

fakeroot simulates root privileges. This enables you to build packages without being root (packages usually want to install files with root ownership). If you have fakeroot installed, dpkg-buildpackage will use it automatically.

A.2. パッケージチェック (lint) 用ツール

コンピュータ用のフリーオンライン辞書 (Free On-line Dictionary of Computing, FOLDOC) によると、「lint」は C コンパイラよりもより網羅的なチェックを行う Unix C 言語処理器とあります。パッケージ lint ツールは、パッケージ内の一般的な問題やポリシー違反を自動的に見つけてくれることで、パッケージメンテナを助けてくれます。

A.2.1. lintian

lintian は Debian パッケージを解剖してバグやポリシー違反の情報を出力します。一般的なエラーへのチェック同様にDebian ポリシーの多くの部分を自動チェックする機能を含んでいます。

定期的に最新の lintianunstable から取得し、パッケージを全てチェックするべきです。-i オプションは、各エラーや警告が何を意味しているのか、ポリシーを元に、詳細な説明を提供してくれ、一般的に問題をどのように修正するべきかを説明してくれることに留意してください。

何時、どのようにして Lintian を使うのか、詳細については 「パッケージをテストする」 を参照してください。

あなたのパッケージに対して Lintian によって報告されたの問題の要約はすべて https://lintian.debian.org/ から確認することもできます。このレポートは、最新の lintian による開発版ディストリビューション (unstable) 全体についての出力を含んでいます。

A.2.2. debdiff

(devscripts パッケージ、devscripts より) debdiff は二つのパッケージのファイルのリストと control ファイルを比較します。前回のアップロードからバイナリパッケージ数が変わったことや、control ファイル内で何が変わったのかなどに気付く手助けをしてくれるなど、簡単なリグレッションテストとなります。もちろん、報告される変更の多くは問題ありませんが、様々なアクシデントを防止するのに役立ってくれるでしょう。

バイナリパッケージのペアに対して実行することができます:

debdiff package_1-1_arch.deb package_2-1_arch.deb

changes ファイルのペアに対してさえも実行できます:

debdiff package_1-1_arch.changes package_2-1_arch.changes

より詳細については、debdiff(1)を参照してください。

A.3. debian/rules の補助ツール

パッケージ構築ツールは debian/rules ファイルを書く作業を楽にしてくれます。これらが望ましい、あるいは望ましくない理由の詳細については 「ヘルパースクリプト」 を参照してください。

A.3.1. debhelper

debhelper は、Debian パッケージのバイナリを作成するにあたっての共通な作業を自動化するため、debian/rules 内で使うことができるプログラムの集合体です。debhelper は、パッケージに様々なファイルをインストールし、ファイルを圧縮し、ファイルの権限を修正し、パッケージを Debian のメニューシステムに統合するプログラムを含んでいます。

いくつかのアプローチとは違って、debhelper は複数の小さな、シンプルな一貫した方法で動作するコマンドに分割されています。そのため、他の debian/rules 用ツールよりも細やかなコントロールが可能になっています。

ここに記すには一時的な、大量の小さな debhelper のアドオンパッケージがあります。apt-cache search ^dh- と実行することで一覧の多くを参照できます。

A.3.2. dh-make

dh-make パッケージは、ソースツリーを Debian パッケージをビルドするのに必要な雛形ファイルを作成するプログラム dh_make を含んでいます。その名が示すように、dh_makedebmake を書き直したもので、そのテンプレートファイルはdebhelperdh_* プログラムを使うようになっています。

dh_make によって生成された rules ファイルは、大抵の場合作業するパッケージに対して十分な基礎にはなりますが、まだこれは下地でしかありません。メンテナに残っている責務は、生成されたファイルをきれいに整理して、完全に動作してポリシーに準拠したパッケージにすることです。

A.3.3. equivs

equivs はパッケージ作成用のもう一つのパッケージです。単純に依存関係を満たしたいだけのパッケージを作成する必要がある場合に、しばしばローカルでの使用を勧められます。時折、他のパッケージに依存することだけが目的のパッケージ、「メタパッケージ (meta-packages)」を作る際にも使われます。

A.4. パッケージ作成ツール

以下のパッケージは、パッケージ作成作業を手助けしてくれます。通常実行する dpkg-buildpackage と同様に、パッケージ作成支援の作業を取り扱ってくれます。

A.4.1. git-buildpackage

git-buildpackage provides the capability to inject or import Debian source packages into a Git repository, build a Debian package from the Git repository, and helps in integrating upstream changes into the repository.

These utilities provide an infrastructure to facilitate the use of Git by Debian maintainers. This allows one to keep separate Git branches of a package for stable, unstable and possibly experimental distributions, along with the other benefits of a version control system.

A.4.2. debootstrap

debootstrap パッケージとスクリプトは、システムのどこででも Debian ベースシステムをブートストラップできるようにしてくれます。ベースシステムとは、操作するのに必要となる素の最小限パッケージ群を意味し、それに加えてシステムの残りの部分をインストールします。

この様なシステムを持つことは、様々な面で役に立つでしょう。例えば、ビルドの依存関係をテストしたい場合に chroot でそのシステムの中に入ることができます。あるいは素のベースシステムにインストールした際にパッケージがどのように振る舞うかをテストできます。chroot 作成ツールはこのパッケージを使います。以下を参照ください。

A.4.3. pbuilder

pbuilder は chroot されたシステムを構築し、パッケージを chroot 内部でビルドします。パッケージのビルド依存関係が正しいかどうかをチェックするのにとても役立ち、生成されたパッケージに不必要な誤ったビルド依存関係が存在していないことを確かめられるでしょう。

A related package is cowbuilder, which speeds up the build process using COW filesystem on any standard Linux filesystem.

A.4.4. sbuild

sbuild はもう一つの自動ビルドシステムです。同様に chroot された環境を使うことが出来ます。単独で使うことも、分散ビルド環境のネットワークの一部として使うこともできます。文字通り、移植者たちによって利用可能な全アーキテクチャのバイナリパッケージをビルドするのに使われているシステムの一部です。詳細についてはwanna-build を参照してください。それからシステムの動作については https://buildd.debian.org/ を参照してください。

A.5. パッケージのアップロード用ツール

以下のパッケージはパッケージを公式アーカイブにアップロードする作業を自動化、あるいは単純化してくれるのに役立ちます。

A.5.1. dupload

dupload は、自動的に Debian パッケージを Debian アーカイブにアップロードし、アップロードを記録し、パッケージのアップロードについてのメールを送信してくれるパッケージであり、スクリプトです。新しいアップロード先や方法を設定することもできます。

A.5.2. dput

dput パッケージとスクリプトは dupload と同じことを違ったやり方で行います。GnuPG 署名とチェックサムをアップロード前にチェックする機能や、アップロード後に dinstall を dry-run モードで実行できるなど、dupload よりもいくつか機能が多くなっています。

A.5.3. dcut

dcut スクリプト (dput パッケージの一部、dput 参照)は、ftp アップロードディレクトリからファイルを削除するのに役立ちます。

A.6. メンテナンスの自動化

以下のツールは changelog のエントリや署名行の追加、Emacs 内でのバグの参照から最新かつ公式の config.sub を使うようにするまで、様々なメンテナンス作業を自動化するのに役立ちます。

A.6.1. devscripts

devscripts は、Debian パッケージをメンテナンスするのに非常に有用なラッパーやツールを含むパッケージです。スクリプトの例としては debian/changelog ファイルをコマンドラインから操作する debchange および dch、そして dpkg-buildpackage 関連のラッパーである debuild を含んでいます。bts ユーティリティも、バグ報告の状態をコマンドライン上で更新するのにとても役立ちます。uscan はパッケージの新しいバージョン (new upstream version) をチェックするのに使えます。debrsign は、リモートでアップロード前にパッケージにサインするのに利用できます。これは GPG があるのとは違うマシンでパッケージをビルドした際に便利です。

利用可能なスクリプトの全リストについては devscripts(1) マニュアルページを参照してください。

A.6.2. autotools-dev

autotools-dev は、autoconfautomake を使っているパッケージをメンテナンスする人にとってのベストプラクティスを含んでいます。また、全ての Debian 移植版で動作することを知られている正規の config.sub および config.guess ファイルを含んでいます。

A.6.3. dpkg-repack

dpkg-repack は既にインストールされているパッケージから Debian パッケージを生成します。パッケージが展開されてから何かしら変更が加えられている場合 (例えば、/etc にあるファイルが変更されているなど)、新しいパッケージは変更を含みます。

このユーティリティは、一つのコンピュータから他のコンピュータへパッケージをコピーするのを簡単にできるようにしてくれます。また、あなたのシステムにはインストールされているがどこでも入手できなくなってしまったパッケージを再作成したり、アップグレード前にパッケージの現在の状態を保存するのに使えます。

A.6.4. alien

alien は、Debian、RPM (RedHat)、LSB (Linux Standard Base)、Solaris、Slackware などの各種バイナリパッケージのパッケージ形式を変換します。

A.6.5. dpkg-dev-el

dpkg-dev-el は、パッケージの debian ディレクトリにあるファイルを編集する際に手助けしてくれる Emacs lisp パッケージです。例えば、パッケージの現在のバグをリストアップしてくれたり、debian/changelog ファイル中の最新のエントリの終端処理してくれたりするのための手軽な機能があります。

A.6.6. dpkg-depcheck

(devscripts パッケージ、devscripts より) dpkg-depcheck は、指定されたコマンドによって使われた全てのパッケージを確認するため、コマンドを strace の下で実行します。

Debian パッケージについていうと、これは新しいパッケージの Build-Depends 行を構成するのが必要になった際に役立ちます。dpkg-depcheck を通してビルド作業を実行すると、最初の大まかなビルドの依存関係を良い形で得られます。例えば以下の様にします:

dpkg-depcheck -b debian/rules build

dpkg-depcheck は、特にパッケージが他のプログラムを実行するのに exec(2) を使っている場合に実行時の依存性を確認するのにも使えます。

より詳細については、dpkg-depcheck(1) を参照してください。

A.7. 移植用ツール

以下のツールが、移植作業者やクロスコンパイル作業に役立ちます。

A.7.1. quinn-diff

quinn-diff は、あるアーキテクチャと他のアーキテクチャとの違いを確認するのに使われます。例えば、X アーキテクチャをベースに Y アーキテクチャに移植するにはどのパッケージが必要なのかを教えてくれます。

A.7.2. dpkg-cross

dpkg-cross は、dpkg に似た方法でクロスコンパイルするためのライブラリとヘッダをインストールするツールです。さらに、dpkg-buildpackage および dpkg-shlibdeps の機能がクロスコンパイルをサポートするように拡張されます。

A.8. ドキュメントと情報について

以下のパッケージが、メンテナへの情報提供やドキュメントの作成に役立ちます。

A.8.1. docbook-xml

docbook-xml は Debian のドキュメントで一般的に使われている DocBook XML DTD を提供します (古いものは debiandoc SGML DTD を使っています) 。例えば、このマニュアルは DocBook XML で書かれています。

docbook-xsl パッケージは、ソースをビルドして様々な出力フォーマットに整形する XSL ファイルを提供します。XSL スタイルシートを使うには xsltproc のような XSLT プロセッサが必要になります。スタイルシートのドキュメントは各種 docbook-xsl-doc-* パッケージで確認できます。

FO から PDF を生成するには、xmlrofffop のような FO プロセッサが必要です。他に DocBook XML から PDF を生成するツールとしては dblatex があります。

A.8.2. debiandoc-sgml

debiandoc-sgml は Debian のドキュメントで一般的に使われている DebianDoc SGML DTD を提供します。しかし、現在は非推奨 (deprecated) となっています (代わりにdocbook-xml を使うようにしてください)。これも、ソースをビルドして様々な出力フォーマットに整形するスクリプトを提供します。

ドキュメント用の DTD は debiandoc-sgml-doc パッケージで確認できます。

A.8.3. debian-keyring

Debian 開発者の公開 GPG/PGP 鍵を含んでいます。詳細については https://wiki.debian.org/DebianMaintainer とパッケージ内のドキュメントを参照してください。

A.8.4. debian-maintainers

Debian メンテナの公開 GPG 鍵を含んでいます。詳細については https://wiki.debian.org/DebianMaintainer を参照してください。

A.8.5. debview

debview は、Debian バイナリパッケージを参照する Emacs モードを提供します。これを使うと、パッケージを展開しなくても実行できるようになります。