# 表題 gave の deb パッケージ作成の手引 # # 履歴 2004/03/14 竹本和彰 ■ この文書について この文書は gave debian パッケージ作成の手引である. ■ ソースダウンロード先 http://www.gfd-dennou.org/arch/ruby/products/gave/gave-0.3.0.tar.gz ■ インストール先ディレクトリ gave /usr/bin 以下にインストール draw.rb /usr/lib/ruby/1.6/numru/ 以下にインストール po /usr/share/locale/ 以下にインストール ■ 環境変数の設定 パッケージ情報に引用される環境変数 EMAIL と DEBFULLNAE を設定する. $ export EMAIL=takemoto@ep.sci.hokudai.ac.jp $ export DEBFULLNAE="Kazuaki Takemoto" ■ 事前インストールパッケージ 事前に以下のパッケージが実行環境にインストールされているか確認する. dh-make dpkg-dev fakeroot devscripts ruby ruby-narray (gave 実行時に必要) numru-misc (gave 実行時に必要) numru-units (gave 実行時に必要) ruby-narray-miss (gave 実行時に必要) dcl-c-gtk (gave 実行時に必要) ruby-dcl (gave 実行時に必要) ruby-netcdf (gave 実行時に必要) gphys (gave 実行時に必要) ■ install.rb の変更 install.rb を書き換える. 変更点は - インストールトップディレクトリを引数で指定できるようにする - gave のインストール先 である. パッチファイルを末尾に添付する. ■ deb パッケージ化: 初めての場合 1) ソースをダウンロードして展開後, ソースのディレクトリ名を <パッケージ名> - <バージョン名> に変更する. 名前に使える文字列は "a-z0-9","+","-" である. 大文字は 使えないことに注意. 今回の場合ソースツリー名が gave-0.3.0 となっているので, そのまま利用する. 2) パッケージ情報の作成 次にパッケージ情報の雛型を作成する. $ dh_make -r -c rubys これにより, ソースアーカイブトップディレクトリに debian ディレクトリ が作成される. 編集するファイルは以下の通り ・control パッケージ名などのパッケージ情報を記載する. セクションを指定. Section: math 依存関係は以下のように記述する. Depends : ${shlibs:Depends}, gphys (>= 0.3.0), dcl-c-gtk (>=5.2.3.8) 依存パッケージのバージョン名パッケージ作成環境にあわせて適宜変更 する. ・copyright ライセンス規定を記述する. 詳細は実ファイルを参照. ・changelog パッケージの更新履歴を記述する. これも詳細は実ファイルを参照. ・rules パッケージ化を行うための Makefile. ソースに Makefile は添付されて いないので, $(MAKE) を実行している行はすべてコメントアウト. - install: build ... # Add here commands to install the package into debian/gave. #$(MAKE) install DESTDIR=$(CURDIR)/debian/gave ruby install.rb --prefix=$(CURDIR)/debian/gave 4) パッケージ化 ソース直下のディレクトリにて $ dpkg-buildpackage -rfakeroot を実行する. その結果, 一つ上のディレクトリに gave-1.0.0-X.diff.gz gave-1.0.0-X.dsc gave-1.0.0-X_i386.changes gave-1.0.0-X_i386.deb gave-1.0.0.orig.tar.gz が作成される. ■ deb パッケージ化: 再パッケージ化する場合 既に作成したパッケージに不具合があり, 再パッケージ化する場合, gave-1.0.0-X.diff.gz gave-1.0.0-X.dsc gave-1.0.0.orig.tar.gz をダウンロードして $ dpkg-source -x gave-1.0.0-X.dsc を実行する. または apt を使って # apt-get source numru-units とする. これにより, debian ディレクトリを含むソースツリーが復元 できる. ソース直下に移動後, $ dch -i を行う. これによりエディタが changelog ファイルを時動的に読み込んで 起動する. 記載されるパッケージ番号も時動的に 1 つ繰り上がる. あとは新規パッケージと同様の手順でパッケージ化する. ■ deb パッケージ化: ソースが更新された場合. ソースが更新された場合(ここでは gave-1.0.1 がリリースされたとする), 古いソースディレクトリにて $ uupdate -u gave-1.0.1.tar.gz を実行する. これにより, 時動的にソースが更新される. 1 つ上のディレ クトリに新しいソースツリーが展開されているのでそちらへ移動し, あと は新規パッケージと同様の手順でパッケージ化する. ■ install.rb のパッチファイル diff -c install.rb.org install.rb で作成 === ここから ============================================================== *** install.rb.org Mon Mar 15 17:48:47 2004 --- install.rb Mon Mar 15 18:09:06 2004 *************** *** 5,27 **** package = "gave" ! bindir = "/usr/local/bin" ! sitelibdir = CONFIG["sitelibdir"]+"/numru" localedir = "/usr/share/locale/" - def usage() ! print "Usage: ruby #$0 [-h|--help] [--bindir=] [--sitelibdir=] [--localedir=]\n" exit 1 end if !getopts("h","help", "bindir:#{bindir}", "sitelibdir:#{sitelibdir}", "localedir:#{localedir}") usage() end if $OPT_h || $OPT_help usage() end --- 5,30 ---- package = "gave" ! prefix="" ! bindir = "/usr/bin" ! sitelibdir = CONFIG["rubylibdir"]+"/numru" localedir = "/usr/share/locale/" def usage() ! print "Usage: ruby #$0 [-h|--help] [--prefix=] [--bindir=] [--sitelibdir=] [--localedir=]\n" exit 1 end if !getopts("h","help", + "prefix:#{prefix}", "bindir:#{bindir}", "sitelibdir:#{sitelibdir}", "localedir:#{localedir}") usage() end + + if $OPT_h || $OPT_help usage() end *************** *** 29,34 **** --- 32,42 ---- bindir = $OPT_bindir sitelibdir = $OPT_sitelibdir localedir = $OPT_localedir + + bindir = $OPT_prefix+bindir + sitelibdir = $OPT_prefix+sitelibdir + localedir = $OPT_prefix+localedir + subdir = sitelibdir+"/"+package