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/ ディレクトリが生成され、その中にいくつかのファイルができている。ファイルは以下のとおり。
パッケージに関する情報を記述するファイル。例えば、パッケージ名、パッケージの分類、依存関係などが記述できる。
ライセンス関係が記述されるファイル。
パッケージの更新記録を記述するファイル。ソースの更新記録ではない。
パッケージングするドキュメントを指定する。
コンパイル過程では作成されないが必要なディレクトリを記述する。パッケージ化では一度ローカルなディレクトリにルート以下のツリー構造を再現するのだが、例えば /usr/bin などのディレクトリは元々存在するため、通常のコンパイルでこれらのディレクトリの生成は明示されない。逆にコンパイル過程で生成されるディレクトリについてはわざわざ記述する必要はない。複数のパッケージに分割する場合は *.dirs というファイルを作成する。
このファイルに記述されたファイルをパッケージに含める。
パッケージ化の手順を示すファイル。パッケージ化の 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 ネイティブプログラムの場合はコンパイル作業が無いため パッケージ化の手順が一部省略される。 その反面インストールスクリプトと 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 はほとんど
役に立たない。