deb パッケージ作成メモ

パッケージ生成のためのパッケージ

必須

適宜

その他前提とするパッケージ

パッケージ生成手順

NArray のパッケージ化を例とした。

環境変数の設定

以下の2つの変数はパッケージの情報に使用される

$ export EMAIL=takemoto@ep.sci.hokudai.ac.jp

$ export DEBFULLNAE="Kazuaki Takemoto"

ソースファイルの入手・展開

ソースファイルをダウンロードして入手し、作業ディレクトリに展開する。

$ wget http://www.ir.isas.ac.jp/~masa/ruby/dist/narray-0.5.7.tar.gz
$ tar zxf narray-0.5.7.tar.gz
$ ls

narray-0.5.7/

ディレクトリ名の変更

dh_make はディレクトリ名(ここでは narray-0.5.7 )を <パッケージ名>-<バージョン> のように判断してパッケージ名を生成する。そのためディレクトリ名に使える文字は "a-z0-9" と "-","+" のみである。大文字が使えないことに注意。パッケージ名は最初に"-"+"0-9" にマッチするまでの文字列が使われる。

$ mv narray-0.5.7 ruby-narray-0.5.7

これでパッケージ名が ruby-narray, バージョン名が 0.5.7 である。

パッケージ情報の生成

まず生成されたディレクトリに移動し、dh_make スクリプトを実行してパッケージ情報の雛形を作成する。そして作成した雛形を適宜修正する。

dh_make の使用方法は "dh_make -h" を見れば分かる。ここでは以下のように実行した。

$ dh_make -l -c rubys

NArray は "-l" オプションをつけてライブラリパッケージとして生成した。けれど最も簡単なパッケージ化は "-s" オプションの単一パッケージである。ほとんどのパッケージは単一パッケージで良い。"-c rubys" はライセンスのオプションである*2

この作業で debian/ ディレクトリが生成され、その中にいくつかのファイルができている。ファイルは以下のとおり。

control

パッケージに関する情報を記述するファイル。例えば、パッケージ名、パッケージの分類、依存関係などが記述できる。

copyright

ライセンス関係が記述されるファイル。

changelog

パッケージの更新記録を記述するファイル。ソースの更新記録ではない。

docs

パッケージングするドキュメントを指定する。

dirs, *.dirs

コンパイル過程では作成されないが必要なディレクトリを記述する。パッケージ化では一度ローカルなディレクトリにルート以下のツリー構造を再現するのだが、例えば /usr/bin などのディレクトリは元々存在するため、通常のコンパイルでこれらのディレクトリの生成は明示されない。逆にコンパイル過程で生成されるディレクトリについてはわざわざ記述する必要はない。複数のパッケージに分割する場合は *.dirs というファイルを作成する。

files, *.files

このファイルに記述されたファイルをパッケージに含める。

rules

パッケージ化の手順を示すファイル。パッケージ化の Makefile みたいなもの(?)。

その他

emacs の設定ファイルの修正や、パッケージ情報の参照元の設定など様々なことができるらしいが、使ったことがない。毎回消去するようにしている。

これらのファイルを適宜修正する。変更後のファイルをリンクしている。

$ vi control
$ vi changelog
$ vi copyright
$ vi docs
$ vi dirs
$ vi ruby-narray.dirs 
$ vi ruby-narray.files
$ vi ruby-narray-dev.dirs
$ vi ruby-narray-dev.files
$ vi rules

rules は変更する必要が無かった。

ソースファイルの修正

Debian ポリシーにあわせてソースファイルを修正する。といってもほとんど修正する必要はないと思われる。NArray の場合は Makefile を修正する必要があった。

$ vi Makefile

パッケージ化

以上の設定が完了したら、あとはパッケージを生成するだけである。

$ dpkg-buildpackage -rfakeroot

Ruby ネイティブプログラムの場合

Ruby ネイティブプログラムの場合はコンパイル作業が無いため パッケージ化の手順が一部省略される。 その反面インストールスクリプトと rules ファイルの修正が面倒である。

NumRu-Misc のパッケージ化を例にする

ソースファイルの入手・展開

$ wget http://www.gfd-dennou.org/arch/ruby/products/misc/misc-0.0.4.tar.gz
$ tar zxf misc-0.0.4.tar.gz

パッケージ化の情報生成

まずディレクトリ名をパッケージ名に対応させる。

$ mv misc-0.0.4 numru-misc-0.0.4

展開したディレクトリに移動し dh_make スクリプトを実行する。 ここで、dh-make-0.30-ruby であれば 電脳 Ruby プロジェクトの Ruby ネイティブプログラムに若干対応した rules ファイルを生成する *3 その場合、以下のように "-r" オプションを使う。

$ cd numru-misc-0.0.4
$ dh_make -r -c rubys -e takemoto@ep.sci.hokudai.ac.jp

生成された debian ディレクトリ内のファイルを変更する。

$ cd debian
$ rm *.ex ex* README*
$ vi control
$ vi changelog
$ vi copyright
$ vi dirs
$ vi rules
変更したファイル

ソースの変更

インストールスクリプトは変更しなければならない。 Ruby ネイティブパッケージとして生成された rules ファイルでは インストールスクリプトを

ruby install.rb $(CURDIR)/debian/$package_name/usr

のように実行する。 ここでは電脳 Ruby プロジェクトで一般に使用されているインストールスクリプト である install.rb を想定している。 この install.rb の変更は2行で、install.rb の引数(ARGV) を適用するための行と、 インストール先を設定する行を変更すればよい。 変更後の install.rb は以下のようになる。





*1 Ruby ライセンス対応版を作成した<URL:dh-make_0.30-ruby-2_i386.deb>. Ruby ライセンスのパッケージ化が微妙に楽になる.
*2 このオプションには dh_make-0.30-ruby のインストールが必要
*3 電脳 Ruby プロジェクト以外で用いられているインストールスクリプトの場合は rules ファイルを大幅に変更する必要があるため dh-make-0.30-ruby はほとんど 役に立たない。