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 の下にシンボリックを作れば良いのだが, それはどのようにすれば良いのかな.
- 様々な情報の付加が課題.