[ English | Japanese ] [ 地球流体電脳倶楽部 / SPMODEL プロジェクト / Debian パッケージ / SIGEN ]

ispack の deb パッケージ作成・管理の手引


  1. この文書について
  2. ソースダウンロード先
  3. パッケージ名の規則
  4. 環境変数の設定
  5. deb パッケージ化: 初めての場合
  6. パッケージの修正
  7. ソースが更新された場合.
  8. 参考文献

この文書について

この文書は ispack の Debian パッケージ作成の手引である.

ソースダウンロード先

<URL:http://www.gfd-dennou.org/arch/ispack/>

より ispack.tar.gz を落してくる. 2007/10/16 の時点では, ispack-0.71 を使用した.

パッケージ名の規則

使用したコンパイラ毎のライブラリを作成する. パッケージ名にもちいるコンパイラ名は

ffcN    Fujitsu Fortran90 compiler ver. N (N はバージョン名)
ifcN    Intel Fortran ver. N

である. また, FFT として FFTW2 を使用した場合には -fftw2 をつける.

生成されるパッケージ名は以下の通りである

ispack-ffcN             Fujistu Fortran 使用
ispack-fftw2-ffcN       Fujistu Fortran, fftw2 使用
ispack-ifcN             Intel Fortran 使用
ispack-fftw2-ifcN       Intel Fortran, fftw2 使用
ispack-g95              g95 を使用
ispack-fftw2-g95        g95, fftw2 を使用
ispack                  GNU Fortran(gfortran) を使用
ispack-fftw2            GNU Fortran(gfortran), fftw2 を使用
ispack-doc              ドキュメント, サンプルプログラムを格納

gfortran, g95 については mpi 関連のライブラリを作成している. また, 及び共有ライブラリは作成していない.

環境変数の設定

パッケージ作成, 更新作業の前にパッケージ情報に引用される環境変数 EMAIL と DEBFULLNAE を適切に設定しておくこと. 例えば

$ export EMAIL=uwabami(at)gfd-dennou.org # (at) は @ に置きかえる.
$ export DEBFULLNAE="Youhei SASAKI"

EMAIL, DEBFULLNAME は適宜各人の情報に合わせる.

deb パッケージ化: 初めての場合

事前インストールパッケージ

事前に以下のパッケージが実行環境にインストールされているか確認する.

dh-make
debhelper
build-essential
fakeroot
cdbs

パッケージ情報ディレクトリの生成

ソースをダウンロードして展開後, パッケージ情報を作成する. 例えば, ソー スを展開して生成されるディレクトリが ispack-0.71 であり, 作成するパッケー ジが ispack-ffcN の場合,

$ tar xvzf ispack.tar.gz
$ mv ispack-0.71 ispack-ffcN-0.71
$ dh_make -m -b -f ../ispack.tar.gz --copyright=lgpl

とする. dh_make のオプションとして,

-m: マルチパッケージを生成
-f: オリジナルソースアーカイブを指定
-b: パッケージ作成に cdbs を使用する.
--copyright: ライセンス. ispack は LGPL なので lgpl を指定

をつけた.

パッケージ情報の編集

今回は不要なので, debian 内の *.ex, *.EX のついた雛形ファイルは削除して おく.

control の編集

以下では使うコンパイラが ffcN(Nはバージョン番号) の場合について記述する. Source セクションは次の通りである.

Source: ispack-ffcN
Section: math
Priority: extra
Maintainer: Youhei Sasaki <uwabami(at)gfd-dennou.org>
Build-Depends: debhelper (>= 5), dpatch, cdbs, build-essential, ffc(>=N)|ffcpara(>=N)
Standards-Version: 3.7.2

Package セクションはパッケージ名毎に, それぞれ

Package: ispack-ffcN
Architecture: i386
Depends:
Recommends: ffc(>=N), ispack-doc
Description: ISPACK FORTRAN subroutine library for scientific computing
  This package is built with Fujitsu Fortran Compiler Ver.N
  Please visit http://www.gfd-dennou.org/arch/ispack/ (in Japanese).

Package: ispack-fftw2-ffcN
Architecture: i386
Depends:
Recommends: ffc(>=N)|ffcpara(>=N), fftw-no2underscore, ispack-doc
Description: ISPACK FORTRAN subroutine library for scientific computing
  This package is built with Fujitsu Fortran Compiler Ver.N,
  using fftw2 library for FFT transformation in P2PACK routines.
  Please visit http://www.gfd-dennou.org/arch/ispack/ (in Japanese).

とする.

copyright

ソースを落とした URL, Upstream Author を修正する. また, Copyright 以下に, 本体の COPYRIGHT をコピーする.

docs

パッケージに含めるドキュメントファイルを記述する. ここではソース直下の以下のファイル名を記述する.

CHANGELOG
README
TODO

rules

パッケージ化には cdbs を用いる. cdbs はパッケージ作成の際の一連の作業を 自動化するためのツールである. ispack は configure を用いて install する わけでは無いので, build の際にディレクトリまで指定して仮 install を行なっ ておく.

具体的には, パッケージ毎の build ルールを以下の様に定める. たとえば, ispack-ffcN については

build/ispack-ffcN::
        cp debian/Mkinclude.${FC} Mkinclude
        mkdir -p ${FC_DESTDIR}
        $(MAKE)
        $(MAKE) static
        cp debian/Mkinclude Mkinclude
        $(MAKE) clean

とする. ${FC}, ${FC_DESTDIR} は rules 内で設定されている.

ispack-doc は

build/ispack-doc::
        mkdir -p  ${DOC_DESTDIR}/tex
        mkdir -p  ${DOC_DESTDIR}/manual
        for i in $(DIRS) ; do \
           cd $$i/doc ; \
           if [ -f $$i.tex ]; then \
              cp $$i.tex ../../${DOC_DESTDIR}/tex/ ; \
              platex $$i.tex ; platex $$i.tex; dvipdfmx $$i.dvi ; \
              rm $$i.aux $$i.log $$i.dvi ; \
              mv $$i.pdf ../../${DOC_DESTDIR}/manual/ ;\
           fi ; \
           cd ../.. ; \
        done
        cp -r sample ${DOC_DESTDIR}
        cp debian/Mkinclude Mkinclude
        $(MAKE) clean

としている. ${DOC_DESTDIR} は rules 内で設定している.

また, ispack-0.71 の fepack には行のインデントをタブで行なっている箇所 が存在する(次回リリースでは修正されるとの事). これを修正するためのパッ チを当てるために dptach を使っている(cdbs の rules を読み込んでいる).

パッチは debian/patches 以下に拡張子を .dpatch として置く. 実体は diff ファイルである. 新たにパッチを加えたい場合には XX_hogehoge.dpatch とし て debian/patches に置き, debian/patches/00list に内容を記述する.

パッチが正しく適応されるかは

$ debian/rules patch-stamp
$ debian/rules unpatch

によって確認できる.

詳細は実ファイルを参照されたい.

Mkinclude

ソース直下の Mkinclude を debian/Mkinclude.(コンパイラ名) へコピーし,コ ンパイラに合わせて適宜編集する. また, ドキュメント生成の際に使用するの で,本体の Mkinclude も debian/Mkinclude へコピーしておく.

パッケージ作成

バイナリとソースの両方を更新したい場合にはソース直下において

$ debuild -rfakeroot -uc -us

を実行する. その結果, 一つ上のディレクトリに

ispack-ffcN_<version>_<architecure>.deb
ispack-fftw2-ffcN_<version>_<architecure>.deb
ispack-ffcN_<version>.orig.tar.gz
ispack-ffcN_<version>.diff.gz
ispack-ffcN_<version>.changes
ispack-ffcN_<version>.dsc

が生成される. また, バイナリだけを更新したい場合にはソース直下において

$ fakeroot ./debian/rules binary

とする.

パッケージの修正

ソースの展開

既に作成したパッケージに不具合があった場合, もしくは更新する場合には,

ispack-ffcN_0.71.orig.tar.gz
ispack-ffcN_0.71-1.dsc
ispack-ffcN_0.71-1.diff.gz

をダウンロードしてきて

$ dpkg-source -x ispack-ffcN_0.71-1.dsc

を実行する. もしくは,

$ apt-get source ispack-ffcN (NN はパッケージの名前)

とする. これにより, debian ディレクトリを含むソースツリーが展開される.

使用するコンパイラを変える場合

修正するのは

を行なう. changelog の更新には

$ dch -i

を行うと良い. これによりエディタが changelog ファイルを時動的に読み込ん で起動する. この場合, 記載されるパッケージ番号が自動的に一つ上るが,コン パイラの違いによる新パッケージ生成であるから, パッケージ名とバージョン を適切に修正する.

バージョンを明示したい場合は

$ dch -v <version>

とする. ここで指定するバージョンは <ソースバージョン>-<debian パッケー ジバージョン> のようにする.

後はパッケージ作成と手順は同じである.

パッケージの不具合

ソースに修正を加え changelog を更新した後は新規パッケージと同様の手 順でパッケージを生成する.

ソースが更新された場合.

ソースが更新された場合(ここでは ispack-0.72 がリリースされたとする), 古いソースディレクトリにて

$ uupdate -u ../ispack.tar.gz -v 0.72

を実行する. これにより, 時動的にソースが更新される. 1 つ上のディレ クトリに新しいソースツリーが展開されているのでそちらへ移動し, あと は新規パッケージと同様の手順でパッケージ化する.

参考文献


SPMODEL Development Group / GFD Dennou Staff dcstaff@gfd-dennou.org
Last Updated: 2009/03/02, Since: 2005/05/10