% 表題 電脳サーバで debian バイナリパッケージを開発するtips % % 履歴 1998/10/06 豊田英司 % $Id: howto-build-deb-package.txt,v 1.2 1999/02/18 13:20:06 toyoda Exp toyoda $ 1. はじめに 電脳サーバの OS であり、地球流体電脳倶楽部関係者がもっともよく 利用する OS であるところの Debian GNU/Linux システムは バイナリパッケージによるソフトウェア・インストールの容易さを 大きな特長とする。 したがって当然ソフトウェア開発にあたってはこのバイナリパッケージを 作成したいものであるが、手順がめんどくさいのでまとめとかないと 忘れそうである。のでこれを記す。 2. 下準備 2.1 perl についての注意 現在の perl は環境変数 LANG が ja では文句を言って死ぬ。 C か ja_JP.ujis にするべきである。 $ export LANG=ja_JP.ujis 2.2 pgp を使えるようになる あらかじめパスフレーズを設定しておかなければならない。 $ pgp -kg email address を変えたら変えないといけない。 それから開発を行うすべてのホストに ~/.pgp/{pub,sec}ring.pgp をコピーしておくこと。 2.3 Debian 関係の環境変数 deb-make(8) が EMAIL 環境変数を必要とする。 これは pgp でパスフレーズを作った email address になっていないといけない。 $ export EMAIL=toyoda(at)gfd-dennou.org 3. ソフトウェア作成上の心得 ・OS や何らかの絶対パスに依存しないようにする ・Makefile を使う 4. ソフトウェアの debian binary package 化 4.1 deb-make $ deb-make deb-make はディレクトリツリーを debian 化してくれる。 deb-make するためにはディレクトリ名が name-version のごとくに なっていなければならない。具体的には somepath/httpauth/httpauth-0.0 などというものを作って httpauth-0.0 の中で deb-make を行うと httpauth-0.0/debian というディレクトリができ、 各種のファイルが置かれる。このとき httpauth-0.0 直下の Makefile が トップの Makefile になるようにならなければならない。 また somepath/httpauth の下にいろいろなものが置かれるので、 「2段構成」にしておかねばならない。 4.2 Makefile の修正 インストール先を $(DESTDIR) 相対に変更する。 Makefile で $(MAKE) を使ってもうひとつの make を起動する場合は コマンドラインに DESTDIR=$(DESTDIR) を追加すべし。 4.3 dpkg-buildpackage $ dpkg-buildpackage -rsudo pgp 署名をしたくなければ -us -uc などとつければよい。 5. その後のファイル管理 5.1 保管すべきファイル dpkg-buildpackage によって name-version/ * name_version-debianversion.diff.gz * name_version-debianversion.dsc name_version-debianversion_i386.changes * name_version-debianversion_i386.deb * name_version.orig.tar.gz が生成される。 世界の再現に必要なものは * をつけたものである。 5.2 保守 保守すなわちバグフィックスには最新の注意をはらわねばならない。 まず、debianization の問題か、それ以前の問題かを切り分けるべきである。 debianization の問題の場合は、name-version/ に入って いろいろ編集して、再パッケージ化するだけでよい。 debianversion の変更は dch でおこなう # はずだが、インストールされていない。なぜだ?! しかしより多くの場合は元のソースコードにバグがある。 これを再パッケージ化で済まそうとすると、 name_version.orig.tar.gz の中身が更新されず、いずれ改変が 見失われる危険がある。 つまり、もととなるパッケージをバージョンアップするという操作で あるべきである。 もともと deb-make の想定しているスタイルはソフトウェアの本流を保守 している人と資源が Debian とは独立に存在していて、これを 随時取得してパッケージ化するというものである。 だからこそ Debian 側にはバージョン管理機構が存在しないのであり、 要するにこれをさぼってはいけないのである。 # 豊田の個人的事情で言うと、ひょっとすると UNIX と DOS の二重構造の # 桎梏が利点になるかもしれない、と思い付いたことだけ書いておく。 % $Log: howto-build-deb-package.txt,v $ % Revision 1.2 1999/02/18 13:20:06 toyoda % added RCS keywords %