早崎トップ 研究(気候気象) 研究(大気汚染) データリスト Linux Tips Mac Tips

GMT_setup (hysk)

GMT 4.x のセットアップ(tar ball 使用)

最近は yum でも GMT がインストールできるため, tarball から手動インストールする人も少ないだろう (See also yum の使い方 (hysk)). ただ,自分の使いかたでは, 異なるバージョンを混在させて使うことがあるので, yum で管理されると少々困る. yum によるアップデートは便利だが, 個人的に重要なソフト・ツールは自分でメンテナンスしたい.

 用意するもの (v4.x系)

 前提条件 (v4.x系)

  • GMTインストール以前に,下記の準備がなされていることを確認する:
    • X11 開発ツールがインストール済みである (例えば libXt-devel & libXaw-devel)
    • NetCDF 4.x 系列がインストール済みである (CentOS なら,yum install 可能. 手動インストールの詳細は NetCDF のセットアップ 参照)
  • インストール時に関係する条件・環境変数(NetCDF も手動インストールした場合)
    NETCDF=/usr/local/netcdf4
    NETCDFHOME=$NETCDF
    NETCDF_INC=$NETCDF/include
    NETCDF_LIB=$NETCDF/lib
    
  • 私は NetCDF も tarball でインストールしているので, netcdf.h の include を正しく行うために上記設定が必要. 個人設定ファイルでも対処できるが, 複数ユーザが使う可能性もある (共有計算機の場合 and/or 自分PCでアカウントを使い分ける,など)ので, /etc/profile に書く (See Linux個人設定#ログインスクリプト).

 手順 (v4.x 系)

特に特殊な事は必要ない. 古典的な configure & make によるコンパイル.

例では v4.5.5 だが,v4.5.14 (+矢羽パッチ) までは同一手順でコンパイル可能なのを確認 (2014-02-16 (v4.5.11); update 2015-11-11 (v4.5.14)). 多少 warning を吐くけど,無視して構わない.

$ ./configure --prefix=/usr/local/GMT-4.5.5
$ make
# make install install-data install-man install-doc

環境によっては,xgrid のコンパイルに失敗する (X11 の開発環境,特に libXaw-devel が未インストールの場合). この場合, libX11aw-devel をyum で追加するか, configure 時に --disable-xgrid をつければよい (力技で,./src/xgrid を remove ないし別の場所に move してから, 再度 make しても何とかできる)

xgrid に限らず,ヘッダファイル不足(ex. Intrinsic.h など)によるコンパイル失敗の場合は, 開発関連ツールのインストール不足の可能性が高い. エラーメッセージに表示されたヘッダファイルを RPM パッケージから探す方法の例は下記(CentOS 7.x の場合):

$ sudo make 
  (GMT コンパイル.途中でエラーをはいて止まる)
  (中略)
make[2]: ディレクトリ `/data/mnt/raid1/project/src/GMT/GMT4.5.14/gmt-4.5.14/src/xgrid' に入ります
gcc -O2 -Wall  -fPIC -fno-strict-aliasing -std=c99 -I/home/viper/hayasaki/r1/project/src/GMT/GMT4.5.14/gmt-4.5.14/src  -I/usr/local/netcdf4/include     -c -o xgrid_utility.o xgrid_utility.c
xgrid_utility.c:5:27: 致命的エラー: X11/Intrinsic.h: そのようなファイルやディレクトリはありません
 #include 
                           ^
コンパイルを停止しました。
make[2]: *** [xgrid_utility.o] エラー 1
make[2]: ディレクトリ `/data/mnt/raid1/project/src/GMT/GMT4.5.14/gmt-4.5.14/src/xgrid' から出ます
make[1]: *** [xgrid] エラー 2
make[1]: ディレクトリ `/data/mnt/raid1/project/src/GMT/GMT4.5.14/gmt-4.5.14' から出ます
make: *** [suppl] エラー 2



$ sudo yum provides \*/Intrinsic.h
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.iij.ad.jp
 * extras: www.ftp.ne.jp
 * updates: ftp.nara.wide.ad.jp
libXt-devel-1.1.4-6.1.el7.i686 : X.Org X11 libXt development package
Repo        : base
Matched from:
Filename    : /usr/include/X11/Intrinsic.h



libXt-devel-1.1.4-6.1.el7.x86_64 : X.Org X11 libXt development package
Repo        : base
Matched from:
Filename    : /usr/include/X11/Intrinsic.h



libXt-devel-1.1.4-6.1.el7.x86_64 : X.Org X11 libXt development package
Repo        : @base
Matched from:
Filename    : /usr/include/X11/Intrinsic.h

  (この場合は,libXt-devel を yum でインストール)
$ sudo yum -y install libXt-devel
  • シンボリックリンクを張る
ln -s /usr/local/GMT-4.5.5  /usr/local/gmt

※直接 /usr/local/gmt をインストール先としないのは, バージョンアップ時の動作検証や 複数バージョンの使い分けを容易にする目的があるから.

GMT 5.x のセットアップ(tar ball 使用)

最新版: See GMT v5セットアップ

最新版 (v5.2.1)のインストールから,ページを独立させたが... 旧バージョンを別ページにして,最新をここに残した方が良かった. 後で修正予定(2016-01-21).

 用意するもの (v5.x系)

GMT 4.x 系列は,GMT 6.x 系列がリリースされるとメンテされなくなる. そろそろ GMT 5.x 系列に移行すべき時期かもしれない(2014-02-16).

移行期には,4.x 系と 5.x 系の2つを共存させ, 5.x 系の動作確認しつつも急ぎの仕事の場合は 4.x 系を使う. 日常業務で動作に問題がなくなれば,4.x 系の使用を完全停止する.

 前提条件 (v5.x系)

  • GMTインストール以前に,下記の準備がなされていることを確認する:
    • cmake (> v2.8.5) がインストール済みである. CentOS 6.5 の yum の標準リポジトリで用意されてるパッケージは, バージョンが古い(v2.6.4-5; checked 2014-02-16). EPEL リポジトリ使えば,v2.8 を使える.
      $ sudo yum install -y cmake28
      
      なお,CentOS 7.0 では v2.8.11 なので,そのまま使えばよい(checked 2014-09-24). cmake の手動インストールの場合は下記:
      $ wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
      $ tar xzf cmake-2.8.12.2.tar.gz
      $ cd cmake-2.8.12.2
      $ ./bootstrap
      $ make
      $ sudo make install
      
    • NetCDF 4.x 系列の事前インストールが必須 (CentOS 5.x & 6.x 以後なら yum install 可能. 手動インストールの詳細は NetCDF のセットアップ 参照)
    • (optional: man を作りたい場合) sphinx がインストール済みである
      $ wget https://bitbucket.org/birkenfeld/sphinx/get/default.tar.bz2
      $ tar xjf hogehoge-sphinx-xxxxxx.tar.bz2
      $ cd hogehoge-sphinx-xxxxxx
      $ python setup.py build
      $ sudo python setup.py install
      
    • (optional: GDAL を使う場合)
      $ sudo yum -y install gdal-devel netcdf-devel 
      
      GDAL を入れると,依存関係の都合で RPMパッケージの HDF5 & NetCDF library も 強制的に入れられてしまう. 手動インストールした NetCDF library と conflict する. conflict が嫌なら,GDAL 関連も手動で入れるべし (see GDAL; source = ftp://ftp.remotesensing.org/gdal/CURRENT/).
  • インストール時に関係する条件・環境変数(NetCDF も手動インストールした場合)
    NETCDF=/usr/local/netcdf4
    NETCDFHOME=$NETCDF
    NETCDF_INC=$NETCDF/include
    NETCDF_LIB=$NETCDF/lib
    
  • 私は NetCDF も tarball でインストールしているので, netcdf.h の include を正しく行うために上記設定が必要. 個人設定ファイルでも対処できるが, 複数ユーザが使う可能性もある (共有計算機の場合 and/or 自分PCでアカウントを使い分ける,など)ので, /etc/profile に書く (See Linux個人設定#ログインスクリプト).

 手順 (v5.x 系)

cmake & make によるコンパイル.

例では v5.1.1 (2014-09-24; v5.1.0 は 2014-02-16 に確認).

$ mkdir GMT5 ; cd GMT5
$ wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/dcw-gmt-1.1.1.tar.gz
$ wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/gshhg-gmt-2.3.0.tar.gz
$ tar xzf dcw-gmt-1.1.1.tar.gz
$ tar xzf gshhg-gmt-2.3.0.tar.gz
$ wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/gmt-5.1.1-src.tar.bz2
$ wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/gmt-5.1.1-doc.tar.bz2
$ tar xjf gmt-5.1.1-src.tar.bz2
$ tar xjf gmt-5.1.1-doc.tar.bz2

$ cd gmt-5.1.1
$ cp cmake/ConfigUserTemplate.cmake cmake/ConfigUser.cmake
(edit cmake/ConfigUser.cmake)
修正は4箇所だけ

--- ここから(95行目以後)
# Set path to GSHHG Shoreline Database [auto]:
set (GSHHG_ROOT "../../gshhg-gmt-2.3.0")

# Copy GSHHG files to $/coast [FALSE]:
set (COPY_GSHHG TRUE)

# Set path to DCW Digital Chart of the World for GMT [auto]:
set (DCW_ROOT "../../dcw-gmt-1.1.1")

# Copy DCW files to $/dcw [FALSE]:
set (COPY_DCW TRUE)
--- ここまで


$ mkdir build; cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/GMT-5.1.1 ..
$ make
$ make docs_man
# make install

man コマンドでの閲覧が不要なら,sphinx のインストールや make docs_man が不要. コマンドマニュアルは,html や PDF 版もあるので. 私の場合は,ある方が個人的に便利なので入れただけ.

  • シンボリックリンクを張る
ln -s /usr/local/GMT-5.1.1  /usr/local/gmt5

※直接 /usr/local/gmt5 をインストール先としないのは, バージョンアップ時の動作検証や 複数バージョンの使い分けを容易にする目的があるから.

 異なるバージョンを共存させる(4.x & 5.x 系)

 環境変数

Under const.

デフォルトは新バージョン 5.x 系に設定. 私の場合は /etc/profile にて設定 (See Linux個人設定#ログインスクリプト).

# for GMT
export GMTHOME=/usr/local/gmt5
PATH=$GMTHOME/bin:$PATH
MANPATH="${GMTHOME}/share/man:${MANPATH}"

 使い分け

スクリプトごとに変更する場合,スクリプトの冒頭に export GMTHOME=/usr/local/gmt で変更できる... かな. gmtset を使う? いろいろと未確認.

  GMT 参照情報

更新履歴

date memo
2016-01-21 更新履歴の追加.
2014-11-11 GMT v4.5.14 のインストール,正常終了を確認.
2014-09-24 GMT v5.1.1 のインストール,正常終了を確認.
2014-02-16 GMT v4.5.11, v5.1.0 のインストール,正常終了を確認.
2011-10-27 HTML版の最終更新(富山大当時).掲載してたのは GMT v4.5.5 のみ.
2009-XX-XX 記録残ってない. たぶん,千葉大CEReS在籍時の2008 - 2009年あたりに FS wiki で作ったと思う.