# 表題 dcl-5.3 debian パッケージ作成の手引 # # 履歴 2004/11/15 小高正嗣 ■ この文書について この文書は地球流体電脳倶楽部ライブラリ DCL (dcl-5.3) の debian パッ ケージ作成の手引である. ■ ソースダウンロード先 http://www.gfd-dennou.org/arch/dcl/dcl-5.3.tar.gz ■ インストール先ディレクトリ構成 複数の Fortran コンパイラによるバイナリを共存させるため, インストー ル先ディレクトリには - (ハイフン)以下にコンパイラ名を示す拡張子を付 ける. /usr/lib/dcl-5.3-XX/lib/ libdcl52f77.a 置場 dclbase/ カラーマップ等の置場 include/ *.h の置場 bin/ dclfrt などのコマンド置場 /usr/lib/libf77dcl53.a --> /usr/lib/dcl-5.3-XX/lib/libf77dcl53.a /usr/bin/dclfrt --> /usr/lib/dcl-5.3-XX/bin/dclfrt dclcc --> /usr/lib/dcl-5.3-XX/bin/dclcc dclconfig --> /usr/lib/dcl-5.3-XX/bin/dclconfig /usr/share/doc/dcl-5.3-XX/ README などのドキュメント置場 拡張子の一覧を以下に示す ffcX Linux 対応 Fujitsu Fortran & C Package ver.X ifcX Intel Fortran90 コンパイラ ver.X g77 GNU Fortran77 コンパイラ (g77) ■ 環境変数の設定 パッケージ情報に引用される環境変数 EMAIL と DEBFULLNAE を設定する. $ export EMAIL=odakker(at)gfd-dennou.org"> $ export DEBFULLNAE="Masatsugu Odaka" ■ 事前インストールパッケージ 事前に以下のパッケージが実行環境にインストールされているか確認する. deb パッケージ化関連ツール dh-make dpkg-dev fakeroot devscripts dcl の依存パッケージ woody: libgtk1.2 libgtk1.2-dev (pkg-config を使えるようにする) imlib-base imlib1 imlib-dev gdk-imlib-dev gdk-imlib1 sarge: libgtk2.0 libgtk2.0-dev (pkg-config を使えるようにする) imlib-base imlib1 ■ deb パッケージ化: 初めての場合 1) ソースをダウンロードして展開後, ソースのディレクトリ名を <パッケージ名> - <バージョン名> に変更する. 名前に使える文字列は "a-z0-9","+","-" である. 大文字は 使えないことに注意. 今回の場合は $ tar xvzft dcl-5.3.tar.gz とすと, dcl-5.3 というディレクトリが作成されるので, そのまま用いる. 2) パッケージ情報の作成 次にパッケージ情報の雛型を作成する. ライブラリとその他のツールに 分割してコンパイルするため, $ dh_make -m とする(詳しくは dh_make の man を参照). これにより, ソースアーカイ ブトップディレクトリに debian ディレクトリが作成される. 編集するファイルは以下の通り ・control パッケージ名などのパッケージ情報を記載する. コンパイラの種類毎に control.(コンパイラ名を示す拡張子) というファイルを用意する. 初期状態は以下のようになっている. Source: dcl Section: Priority: optional Maintainer: ODAKA Masatsugu > Build-Depends: debhelper (>> 3.0.0) Standards-Version: 3.5.2 Package: dcl Architecture: any Depends: ${shlibs:Depends} Description: Package: dcl-doc Architecture: all Description: Documentation for dcl これを以下のように変更する. - Section: は math - ライブラリのパッケージ名は dcl-(コンパイラ名を示す拡張子) とする. - ライブラリの依存関係には Suggests: (コンパイラのパッケージ名) - ドキュメントのパッケージ名は dcl-util とする. 詳細は実ファイルを参照. ・copyright ライセンス規定を記述する. 詳細は実ファイルを参照. ・changelog パッケージの更新履歴を記述する. これも詳細は実ファイルを参照. ・dirs パッケージのインストール先ディレクトリ. を記述. ・docs, dcl-util.docs パッケージに含めるドキュメントファイルを記述する. ここでは ソース直下の以下のファイル名を記述する - docs: CHECK CREDITS HISTORY INSATLL IMG_dclclr.png IMG_g2pk01.png IMG_g2pk02.png IMG_umpack.png NOTE README README_clrmap README_gt2dlib README_itr51 README_umfmap - dcl-utils.docs: README_pslib ・rules パッケージ化を行うための Makefile. - ヘッダ部: 以下を追加 !-------------------------------------------------------------- EXT=g77 FC=g77 CC=gcc FFLAGS= PACKAGE=dcl-$(EXT) UTILPACKAGE=dcl-util PREFIXLIB=dcl-5.2-$(EXT) !-------------------------------------------------------------- - config.status: configure のオプション追加 !-------------------------------------------------------------- #./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \--prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info (export CC=$(CC) ; export FC=$(FC) ; export FFLAGS='$(FFLAGS)' ; ./conf\igure --prefix=/usr/lib/$(PREFIXLIB)) !-------------------------------------------------------------- - install: インストール先ディレクトリ名を変更 !-------------------------------------------------------------- dh_installdirs usr/lib/$(PREFIXLIB)/bin usr/lib/$(PREFIXLIB)/lib # Add here commands to install the package into debian/dcl. $(MAKE) install prefix=$(CURDIR)/debian/dcl-$(EXT)/usr/lib/$(PREFIXLIB) dh_movefiles --sourcedir=debian/dcl-$(EXT) !-------------------------------------------------------------- - binary-indep: doc-util をパッケージ化する手順を追加 !-------------------------------------------------------------- dh_installdirs -p$(UTILPACKAGE) -Pdebian/dcl-util usr/bin (cd dvlop/pslib && $(MAKE) install prefix=../../debian/dcl-util/usr) dh_installdocs -p$(UTILPACKAGE) -Pdebian/dcl-util demo dvlop dh_installdeb -p$(UTILPACKAGE) -Pdebian/dcl-util dpkg-gencontrol -isp -p$(UTILPACKAGE) -Pdebian/dcl-util chown -R root.root debian/dcl-util chmod -R go=rX debian/dcl-util dpkg --build debian/dcl-util .. !-------------------------------------------------------------- - binary-arch: 各種コマンドのリンクをはる. !-------------------------------------------------------------- dh_installchangelogs -a dh_link usr/lib/$(PREFIXLIB)/bin/dclfrt usr/bin/dclfrt.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dclcc usr/bin/dclcc.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dcldate usr/bin/dcldate.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dclexec usr/bin/dclexec.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dcltone usr/bin/dcltone.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dclver usr/bin/dclver.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dclclr usr/bin/dclclr.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dcldbs usr/bin/dcldbs.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dclfont usr/bin/dclfont.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dclpara usr/bin/dclpara.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/dcltrf usr/bin/dcltrf.$(EXT) \ usr/lib/$(PREFIXLIB)/bin/repsl usr/bin/repsl.$(EXT) !-------------------------------------------------------------- ・postinst, prerm スクリプト パッケージのインストール前後に行う作業を記述する. ここでは update-alternatives コマンドによるシンボリックリンクの作成 を行う. 詳細は実ファイルを参照. 3) パッケージ化 ソース直下のディレクトリにて $ dpkg-buildpackage -rfakeroot を実行する. その結果, 一つ上のディレクトリに dcl-g77_5.3-1_i386.deb dcl-util_5.3-1_all.deb dcl_5.3-1.dsc dcl_5.3-1_i386.changes dcl_5.3-1.diff.gz dcl_5.3.orig.tar.gz が作成される. ■ deb パッケージ化: 再パッケージ化する場合 既に作成したパッケージに不具合があり, 再パッケージ化する場合, dcl_5.3-1.dsc dcl_5.3-1.diff.gz dcl_5.3.orig.tar.gz をダウンロードして $ dpkg-source -x dcl-5.3-1.dsc を実行する. これにより, debian ディレクトリを含むソースツリーが復元 できる. ソース直下に移動後, $ dch -i を行う. これによりエディタが changelog ファイルを時動的に読み込んで 起動する. 記載されるパッケージ番号も時動的に 1 つ繰り上がる. あとは新規パッケージと同様の手順でパッケージ化する. ■ deb パッケージ化: ソースが更新された場合. ソースが更新された場合(ここでは dcl-5.4 がリリースされたとする), 古いソースディレクトリにて $ uupdate -u dcl-5.4.tar.gz を実行する. これにより, 時動的にソースが更新される. 1 つ上のディレ クトリに新しいソースツリーが展開されているのでそちらへ移動し, あと は新規パッケージと同様の手順でパッケージ化する.