checkinstall 使用メモ
履歴
- 2022-05-25 高橋芳幸 新規作成
動機
debian パッケージを作ってみようかと思い検索していたら checkinstall というのを見つけたので, 試しにそれを使ってみた.
方針
checkinstall を使って, ispack, gtool5, spml の debian パッケージを作成する. それら debian パッケージでインストールできるライブラリを使って DCPAM をコンパイルする.
準備
checkinstall のインストール
$ sudo apt install checkinstall
ruby のインストール
$ sudo apt install ruby
MPI, NetCDF のインストール
$ sudo apt install openmpi-bin libopenmpi-dev $ sudo apt install netcdf-bin libnetcdff-dev
ispack
$ wget http://www.gfd-dennou.org/library/ispack/ispack-1.0.4.tar.gz $ tar xvf ispack-1.0.4.tar.gz $ cd ispack-1.0.4
Mkinclude を下のように変更.
FFLAGS = -O3 ---> FFLAGS = -O3 -fopenmp -fPIE MPIFFLAGS = -O3 ---> MPIFFLAGS = -O3 -fopenmp -fPIE
Makefile の最後に下の行を追加.
install:
cp libisp.a /usr/local/ispack/lib/libispack.a
make
$ make
ディレクトリがないと checkinstall が止まるので一時的に ディレクトリを作る.
$ sudo mkdir -p /usr/local/ispack/lib
パッケージの作成
$ checkinstall --type=debian --install=no --pkglicense=unknown
ディレクトリを削除
$ sudo rm -r /usr/local/ispack
できたパッケージをインストール
$ sudo dpkg -i ispack_1.0.4-1_amd64.deb
gtool
$ wget http://www.gfd-dennou.org/library/gtool/gtool5/gtool5_current.tgz
$ tar xvf gtool5_current.tgz
$ cd gtool5-20160613
$ export FC=mpif90
$ export FFLAGS=
$ export SYSFFLAGS="-I/usr/include"
$ ./configure \
--with-netcdf-include=/usr/include/netcdf.inc \
--with-netcdf=/usr/lib/x86_64-linux-gnu/libnetcdf.so \
--with-netcdff=/usr/lib/x86_64-linux-gnu/libnetcdff.a \
--enable-mpi
$ make
$ make test
一時的にディレクトリを作成 (ここではパーミッションも変えないといけないらしい)
$ sudo mkdir -p /usr/local/gtool5/lib $ sudo chmod 777 /usr/local/gtool5/lib
パッケージの作成
$ checkinstall --type=debian --install=no --pkglicense=unknown
ディレクトリを削除
$ sudo rm -r /usr/local/gtool5
できたパッケージをインストール
$ sudo dpkg -i gtool5_20160613-1_amd64.deb
spml
$ wget http://www.gfd-dennou.org/library/spmodel/spml_current.tar.gz
$ tar xvf spml_current.tar.gz
$ cd spml-0.8.0
$ export FC=mpif90
$ export FCFLAGS="-O3 -fopenmp -fPIE"
$ ./configure \
--with-netcdf=/usr/lib/x86_64-linux-gnu/libnetcdf.so \
--with-netcdff=/usr/lib/x86_64-linux-gnu/libnetcdff.a \
--with-netcdf-include=/usr/include/netcdf.h \
--with-gtool5=/usr/local/gtool5/lib/libgtool5.a \
--with-ispack=/usr/local/ispack/lib/libispack.a \
--with-mpifc=/usr/bin/mpif90 \
--with-mpiexec=/usr/bin/mpiexec
libsrc/Makefile から ef_module を含む行・部分を削除. (ef_module 関連のコンパイルで止まるため. 原因不明.)
コンパイル
$ make
テスト
$ make test
一時的にディレクトリを作成
$ sudo mkdir -p /usr/local/spmodel/lib $ sudo chmod 777 /usr/local/spmodel/lib/
パッケージの作成
$ checkinstall --type=debian --install=no --pkglicense=unknown
ディレクトリの削除
$ sudo rm -r /usr/local/spmodel
できたパッケージをインストール
$ sudo dpkg -i spml_0.8.0-1_amd64.deb
DCPAM
$ wget http://www.gfd-dennou.org/library/dcpam/dcpam5/dcpam5-20180304-2.tgz
$ tar xvf dcpam5-20180304-2.tgz
$ cd dcpam5-20180304-2
$ export FC=/usr/local/spmodel/bin/mpispmfrt
$ export FFLAGS="-O3 -fopenmp -pedantic -DSJPACK -DSLTT2D1DMONOTONIC"
$ ./configure \
--with-netcdf=/usr/lib/x86_64-linux-gnu/libnetcdf.so \
--with-netcdff=/usr/lib/x86_64-linux-gnu/libnetcdff.a \
--with-netcdf-include=/usr/include/netcdf.mod \
--with-ispack=/usr/local/ispack/lib/libispack.a \
--with-gtool5=/usr/local/gtool5/lib/libgtool5.a \
--with-spml=/usr/local/spmodel/lib/libspml-omp.a \
--enable-mpi
$ make
感想
- ここまでに書いた方法で debian パッケージは作れる.
- gtool や spml に付随するコマンド (例えば mpispmfrt) のパスが問題.
- /usr/bin の下にシンボリックを作れば良いのだが, それはどのようにすれば良いのかな.
- 様々な情報の付加が課題.