この文書は rdoc-f95 debian パッケージ作成の手引である.
なお, 既に一度 debian パッケージ化が行なわれているものに 関しては, 簡単に更新可能なスクリプトを用意している. rdoc-f95 パッケージ自動更新の手引き を参照せよ.
作成するパッケージは 2 種類である.
オリジナルの rdoc1.8 パッケージと同様, こちらが本体である. 下記では このパッケージの作成方法を記す.
(基本的に rdoc-f95 も作成方法は同様で, 環境変数の設定 から始めればよい. deb パッケージ化: 初めての場合 では ソースコードを展開する必要は無いので, 適当な空ディレクトリを作成する).
この rdoc1.8-f95 は rdoc1.8 にパッチを当てたライブラリなので, 本来は rdoc1.8 と衝突且つ置換の関係にあるのが正しいのだが, 昨今は rdoc (ひい ては rdoc1.8) に依存するパッケージも増えており, rdoc1.8-f95 のインストー ルに伴って rdoc, rdoc1.8 パッケージが削除されるのは望ましくない. その ため, rdoc1.8-f95 は dpkg-divert を用い, rdoc1.8 でインストールされ, 且つ rdoc1.8-f95 と競合するファイルはファイル末尾に ".org" をつけて 退避させる.
このようにパッケージングすることにより, rdoc1.8 と rdoc1.8-f95 の どちらも独立に使用でき, また同時にインストールすることもできる. rdoc1.8 と rdoc1.8-f95 が同時にインストールされた場合, 機能としては rdoc1.8-f95 が優先される.
従って, rdoc, rdoc1.8 に対し, rdoc-f95, rdoc1.8-f95 からは 依存, 置換などの関係を指定しない.
(これはあくまで rdoc, rdoc1.8 との関係を書いたので, 他にも ruby1.8 に 依存するなど, 依存関係は存在する. 詳しくは作成済みの deb パッケージを 参照のこと). このようにすることで,
<URL:http://www.gfd-dennou.org/library/dcmodel/rdoc-f95/rdoc-f95.tgz>
インストール先のディレクトリは debian 上で他の Ruby ライブラリも 格納されている /usr/lib/ruby/(バージョン)/ とする. 実行ファイルは /usr/bin/ 以下に格納する.
パッケージ情報に引用される環境変数 DEBFULLNAME, DEBEMAIL, EMAIL, を設定する. (DEBEMAIL さえ設定しておけば EMAIL は 必要ないが念のため)
$ export DEBFULLNAME="Yasuhiro MORIKAWA" $ export DEBEMAIL=morikawa(at)xxx-xxxxxx.xxx $ export EMAIL=morikawa(at)xxx-xxxxxx.xxx
事前に以下のパッケージが実行環境にインストールされているか確認する.
dh-make dpkg-dev fakeroot
ソースをダウンロードして展開後, ソースのディレクトリ名を
<パッケージ名> - <バージョン名>
に変更する. 名前に使える文字列は "a-z0-9","+","-" である. 大文字は使えないことに注意. 今回の場合, 以下のようになる.
rdoc1.8-f95-20050207
パッケージ情報の作成
次にパッケージ情報の雛型を作成する.
$ dh_make -s
これにより, ソースアーカイブトップディレクトリに debian ディレクトリ が作成される.
編集するファイルは以下の通り
control
パッケージ名などのパッケージ情報を記載する. コンパイラ毎に拡張子 をつけて別ファイルとして管理する.
セクションを指定.
Section: doc
依存関係
Pre-Depends: ruby1.8 Depends: irb1.8, libruby1.8 Suggests: graphviz, libmathml-ruby
copyright
ライセンス規定を記述する. 詳細は実ファイルを参照.
changelog
パッケージの更新履歴を記述する. これも詳細は実ファイルを参照.
docs
パッケージに含めるドキュメントファイルを記述する. ここでは ソース直下の以下のファイルとディレクトリ名を記述する
README README.ja README.org doc
rdoc1.8-f95.postrm, rdoc1.8-f95.preinst
下記の rules ファイルによって, rdoc1.8-f95.postrm.in, rdoc1.8-f95.preinst.in によって 自動生成されるファイルです. 直接編集しないで ください.
これらのファイルには rdoc1.8-f95 パッケージのインストール前, およびアンインストール後に実行するコマンドを記述してあります.
具体的には, dpkg-divert によるファイルの退避とその解除を 行っています. 詳しくはファイルを参照してください.
rdoc1.8-f95.postrm.in, rdoc1.8-f95.preinst.in
上記の rdoc1.8-f95.postrm, rdoc1.8-f95.preinst の雛形 ファイルです. このファイルを元に, 下記の rules ファイル が rdoc1.8-f95.postrm, rdoc1.8-f95.preinst を生成します.
rules
パッケージ化を行うための Makefile.
Ruby のバージョン
export RUBY_VERSION=1.8
rdoc1.8-f95.postrm, rdoc1.8-f95.preinst の自動生成
RUBYLIBORG:=$(shell find -regex '.*\.\(xsl\|rb\)' | grep -v install.rb | grep -v usage.rb| sed -e "s/^\.\///g") build: debian/rdoc1.8-f95.postrm debian/rdoc1.8-f95.preinst build-stamp %: %.in cat $< | sed -e "s|@RDOCORGLIB@|$(RUBYLIBORG)|" > $@
configure は使用しないため, config.status ターゲットの configure はコメントアウト
config.status: #configure dh_testdir # Add here commands to configure the package.
インストールは, パッケージに付属の install.rb を使う. (そのため ruby パッケージが先行依存になっている).
install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/gt4f90io. ruby$(RUBY_VERSION) install.rb \ --libdir $(CURDIR)/debian/rdoc$(RUBY_VERSION)-f95/usr/lib/ruby/1.8/ \ --bindir $(CURDIR)/debian/rdoc$(RUBY_VERSION)-f95/usr/bin/ \ --binname rdoc$(RUBY_VERSION)
パッケージ化
ソース直下のディレクトリにて
$ dpkg-buildpackage -uc -us -tc -rfakeroot
を実行する. その結果, 一つ上のディレクトリに
rdoc1.8-f95_20050207.dsc rdoc1.8-f95_20050207_i386.changes rdoc1.8-f95_20050207_all.deb rdoc1.8-f95_20050207.tar.gz
が作成される.
既に作成したパッケージに不具合があり, 再パッケージ化する場合,
をダウンロードして
$ dpkg-source -x rdoc1.8-f95_20050207-X.dsc
を実行する. または
$ apt-get source rdoc1.8-f95
とする. これにより, debian ディレクトリを含むソースツリーが復元 できる.
ソース直下に移動後, 環境変数の設定 を行なってから,
$ dch -i
を行う. これによりエディタが changelog ファイルを時動的に読み込んで 起動する. 記載されるパッケージ番号も時動的に 1 つ繰り上がる. バージョンを明示したい場合は
$ dch -v <version>
とする. ここで指定するバージョンは
<ソースバージョン>-<debian パッケージバージョン>
のようにする.
あとは新規パッケージと同様の手順でパッケージ化する.