=begin
= spml の deb パッケージ作成・管理の手引
#* 竹広真一, 佐々木洋平
# * 2007/10/27 (佐々木 洋平) RD 化
# * 2007/10/12 (竹広 真一) 作成
== この文書について
この文書は (())
の debian パッケージ作成の手引である.
== ソースダウンロード先
* (())
== パッケージ命名規則
使用するオプショナルライブラリと使用したコンパイラ毎に
ライブラリを用意するので, 名前を
spml-[(オプショナルライブラリ名)-]*-(コンパイラ名)
とする.
コンパイラ名は
ffcN Fujitsu Fortran90 compiler ver. N (N はバージョン名)
ifcN Intel fortran ver. N
以下では ffc Ver.5 を用いることを想定する.
オプショナルライブラリとして想定されるものは
lapack, ssl2 : 行列計算(固有値)用ライブラリ
fftw2 : FFT 用ライブラリ
の 2 種類である. 生成されるパッケージ名はそれぞれ
spml-ffcN Fujitsu Fortran 使用
spml-lapack-ffcN Fujitsu Fortran, lapack 使用
spml-ssl2-ffcN Fujitsu Fortran, ssl2 使用
spml-fftw2-ffcN Fujitsu Fortran, fftw2 使用
spml-fftw2-lapack-ffcN Fujitsu Fortran, fftw2, lapack 使用
spml-fftw2-ssl2-ffcN Fujitsu Fortran, fftw2, ssl2 使用
spml-doc ドキュメント,サンプルプログラム
である.
またソース名は
spml-<コンパイラ名>
もしくは
spml-doc
としている(単一のソースから複数のパッケージを生成している).
== 環境変数の設定
パッケージ作成, 更新作業の前にパッケージ情報に引用される環境変数 EMAIL
と DEBFULLNAE を適切に設定しておくこと. 例えば
$ export EMAIL=uwabami(at)gfd-dennou.org # (at) は @ に置きかえる.
$ export DEBFULLNAE="Youhei SASAKI"
EMAIL, DEBFULLNAME は適宜各人の情報に合わせる.
== deb パッケージ化: 初めての場合
=== 事前インストールパッケージ
事前に以下のパッケージが実行環境にインストールされているか確認する.
dh-make
debhelper
build-essential
fakeroot
cdbs
また, FFC を使用する場合には
ffc(>= N) もしくは ffcpara(>= N)
ispack-ffcN
ispack-fftw2-ffcN
fftw-no2underscore
netcdf-ffcN
gt4f90io-ffcN
lapack-dev
ifc を使用する場合には
ifcN
ispack-ifcN
ispack-fftw2-ifcN
fftw-no2underscore
netcdf-ifcN
gt4f90io-ifcN
lapack-dev
をインストールしておく.
=== パッケージ情報ディレクトリの作成
ソースをダウンロードして展開後, パッケージ情報を作成する. 例えば, ソー
スを展開して生成されるディレクトリが spml-4.2 であり, 作成するソースパッ
ケージが spml-ffcN-4.2 の場合,
$ tar xvzf spml.tar.gz
$ mv spml-4.2 spml-ffcN-4.2
$ cd spml-ffcN-4.2
$ dh_make -m -b -f ../spml.tar.gz
とする. dh_make のオプションとして,
-m: シングルバイナリの生成
-f: オリジナルソースアーカイブを指定
-b: パッケージ作成に cdbs を使用する.
を指定した.
=== パッケージ情報の編集
今回は不要なので, debian ディレクトリ内の *.ex, *.EX のついた雛形ファイ
ルは削除しておく.
==== control の編集
以下では使うコンパイラが ffcN(Nはバージョン番号) の場合について記述する.
Source セクションは次の通りである.
Source: spml-ffcN
Section: math
Priority: optional
Maintainer: Youhei Sasaki
Build-Depends: cdbs, debhelper (>= 5), autotools-dev, ffc(>=N)|ffcpara(>=N),
netcdf-ffcN, netcdfg-dev, gt4f90io-ffcN, ispack-ffcN,
ispack-fftw2-ffcN, fftw-no2underscore, lapack3-dev
Standards-Version: 3.7.2
また, Package セクションはパッケージ毎に記述する.
例えば作成するパッケージが
spml-fftw2-lapack-ffcN
の場合には
Package: spml-fftw2-lapack-ffcN
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
netcdf-ffcN, netcdfg-dev, gt4f90io-ffcN,
ispack-fftw2-ffcN, fftw-no2underscore, lapack3-dev
Description: SPML is Fortran90 module library for solveing fundamental GFD problems
SPML (a SPectral Model Library) is a Fortran90 module library for
constructing spectral models for fundamental geophysical fluid
dynamic problems. Fortran90 modules of this library are based on
ISPACK (http://www.gfd-dennou.org/arch/ispack), which is also library
for spectral models but written in Fortran77. This package provides
module binary files built with Fujitsu Fortran Compiler ver. 5, using
fftw2 library, include lapack interface. GFD-Dennu Club spmodel
project web site is http://www.gfd-dennou.org/arch/spmodel.
である. 詳細は実ファイルを参照されたい.
==== copyright
ソースを落とした URL, Upstream Author を修正する. Copyright, License セ
クションは ソースの COPYRIGHT を参照する様に記述しておく.
==== docs, postinst, prerm
これらのファイルは pre-build.sh によって, rules から生成される.
詳細は pre-build.sh を参照されたい.
==== rules
パッケージ化には cdbs を用いる. 詳細は実ファイルを参照されたい.
==== パッケージ作成
バイナリとソースの両方を更新したい場合にはソース直下において
$ debuild -rfakeroot -uc -us
を実行する. その結果, 一つ上のディレクトリに
spml-ffcN__i386.deb
spml-lapack-ffcN__i386.deb
spml-ssl2-ffcN__i386.deb
spml-fftw2-ffcN__i386.deb
spml-fftw2-lapack-ffcN__i386.deb
spml-fftw2-ssl2-ffcN__i386.deb
spml-ffcN_.diff.gz
spml-ffcN_.dsc
spml-ffcN__i386.build
spml-ffcN__i386.changes
spml-ffcN_.orig.tar.gz
が生成される. また, バイナリだけを更新したい場合にはソース直下において
$ fakeroot ./debian/rules binary
とする.
== パッケージの修正
=== ソースの展開
既に作成したパッケージに不具合があった場合, もしくは更新する場合には,
spml-ffcN_.diff.gz
spml-ffcN_.dsc
spml-ffcN_3.6.2.orig.tar.gz
をダウンロードしてきて
$ dpkg-source -x spml-ffcN_.dsc
を実行する. もしくは,
$ apt-get source spml-ffcN
とする. これにより, debian ディレクトリを含むソースツリーが展開される.
=== 使用するコンパイラを変える場合
変更すべき点は
* control
* ソース名, パッケージ名, Description のコンパイラ名の変更
* rules
* EXT 変数, FC 変数
* changelog の更新
を行なう. changelog の更新には
$ dch -i
を行うと良い. これによりエディタが changelog ファイルを時動的に読み込ん
で起動する. この場合, 記載されるパッケージ番号が自動的に一つ上るが,コン
パイラの違いによる新パッケージ生成であるから, パッケージ名とバージョン
を適切に修正する.
バージョンを明示したい場合は
$ dch -v
とする. ここで指定するバージョンは <ソースバージョン>- のようにする.
後はパッケージ作成と手順は同じである.
=== パッケージの不具合
ソースに修正を加え changelog を更新した後は新規パッケージと同様の手順
でパッケージを生成する.
== ソースが更新された場合.
ソースが更新された場合(ここでは spml-0.4.3 がリリースされたとする),
古いソースディレクトリにて
$ uupdate -u ../spml.tar.gz -v 0.4.3
を実行する. これにより, 時動的にソースが更新される. 1 つ上のディレ
クトリに新しいソースツリーが展開されているのでそちらへ移動し, あと
は新規パッケージと同様の手順でパッケージ化する.
== 参考文献
* やまだ あきら, 鵜飼 文敏, 2006: 『入門 Debian パッケージ』, 技術評論社, ISBN: 4-7741-2768-X
* 旧版 TEBIKI.spml_deb.txt