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

netcdf の deb パッケージ作成の手引


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

この文書について

この文書は netcdf library の debian パッケージ作成の手引である.

netcdf ライブラリの GNU コンパイラ版は公式パッケージとして提供されてい る. この文書では, Intel Fortran Compiler, Fujitsu Fortran & C Compiler そして g95 を用いて作成したライブラリパッケージ作成と更新について記述 している.

ソースダウンロード先

パッケージ名

使用したコンパイラ毎にライブラリを用意するため, パッケージ名は

netcdf-(コンパイラ名)

とする. コンパイラ名は

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

とする.

以下では ffcN を用いることを想定し記述している.

環境変数の設定

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

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

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

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

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

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

dh-make
debhelper
cdbs
build-essential
fakeroot

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

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

$ tar xvzf netcdf.tar.gz
$ mv netcdf-3.6.2  netcdf-ffcN-3.6.2
$ cd netcdf-ffcN-3.6.2
$ dh_make -s -b -f ../netcdf.tar.gz

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

-s: シングルバイナリの生成
-f: オリジナルソースアーカイブを指定
-b: パッケージ作成に cdbs を使用する.

を指定した.

パッケージ情報の編集

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

control の編集

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

Source: netcdf-ffcN
Section: math
Priority: optional
Build-Depends: debhelper(>=5.0), cdbs, ffc(>=5.0)|ffcpara(>=5.0), autotools-dev, build-essential
Maintainer: Youhei SASAKI <uwabami(at)gfd-dennou.org>
Standards-Version: 3.7.2

また, Package セクションは以下の通りである.

Package: netcdf-ffcN
Architecture: any
Recommends: netcdfg-dev, netcdf-doc, netcdf-bin
Suggests: ffc (>=5.0) | ffcpara (>=5.0)
Depends: ${shlibs:Depends}
Description: NetCDF static library build with Fujitsu Fortran&C compiler ver.5.
 Alternative developer's package of NetCDF.
 This package provides NetCDF static libraries
 for Fujitsu Fortran&C compiler.

copyright

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

docs

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

README
VERSION
RELEASE_NOTES

rules

パッケージ化には cdbs を用いる. cdbs はパッケージ作成の際の一連の作業を 自動化するためのツールである. netcdf は autotools を使用するパッケージ であるから,

DEB_CONFIGURE_SCRIPT_ENV
DEB_MAKE_CLEAN_TARGET
DEB_MAKE_CHECK_TARGET

を指定している.

また, install ルールにおいて必要な静的ライブラリを除いて不要な生成物を 削除している. 具体的には

install/netcdf-ffcN::
        mv $(DEB_DESTDIR)/usr/lib/libnetcdf.a $(DEB_DESTDIR)/usr/lib/libnetcdf-$(EXT).a
        rm -f $(DEB_DESTDIR)/usr/lib/libnetcdf.la
        rm -f $(DEB_DESTDIR)/usr/lib/libnetcdf_c++.a
        rm -f $(DEB_DESTDIR)/usr/lib/libnetcdf_c++.la
        rm -fr $(DEB_DESTDIR)/usr/bin/
        rm -fr $(DEB_DESTDIR)/usr/include/
        rm -fr $(DEB_DESTDIR)/usr/share/

DEB_DESTDIR は install ルール実行時に自動的に生成される為明示的に指定す る必要は無い.

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

パッケージ作成

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

$ debuild -rfakeroot -uc -us

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

netcdf-ffcN_<version>.diff.gz
netcdf-ffcN_<version>.dsc
netcdf-ffcN_<version>_i386.build
netcdf-ffcN_<version>_i386.changes
netcdf-ffcN_<version>_i386.deb
netcdf-ffcN_3.6.2.orig.tar.gz

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

$ fakeroot ./debian/rules binary

とする.

パッケージの修正

ソースの展開

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

netcdf-ffcN_<version>.diff.gz
netcdf-ffcN_<version>.dsc
netcdf-ffcN_3.6.2.orig.tar.gz

をダウンロードしてきて

$ dpkg-source -x netcdf-ffcN_<version>.dsc

を実行する. もしくは,

$ apt-get source netcdf-ffcN

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

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

変更すべき点は

を行なう. changelog の更新には

$ dch -i

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

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

$ dch -v <version>

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

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

パッケージの不具合

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

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

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

$ uupdate -u ../netcdf.tar.gz -v 3.6.3

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

参考文献


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