1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GrADSをCentOS8で使う

Last updated at Posted at 2021-06-15

はじめに

Grid Analysis and Display System (GrADS)
これ、気象データを扱う人なら使ったことがある(使っている)人が非常に多いソフトなんじゃないかと思います。
ところが、最近CentOS8がリリースされて、COLAからダウンロードする本家本元のGrADSがうまく動かなくなってしまいました(少なくとも私は...)
今回、OpenGrADSから提供されているバンドル版のGrADSであれば、CentOS8でも無事動作したので、備忘録として残しておきます。

バイナリーのダウンロード

バイナリーは、Sourceforgeからダウンロードします。
今回は、最新バージョン(2021年6月15日時点)の2.2.1.oga.1をダウンロードします。

当方環境は、lddのバージョンが2.28のLinux64bitなので、opengrads-2.2.1.oga.1-bundle-x86_64-pc-linux-gnu-glibc_2.17.tar.gzをダウンロードしました。
なお、ダウンロードするバイナリーは、lddのバージョン以下のものを使わなければいけないそうです。

インストール

ダウンロードしたバイナリーを適当な場所に保存して展開します。

> cd /usr/local/src/opengrads
> tar zxvf opengrads-2.2.1.oga.1-bundle-x86_64-pc-linux-gnu-glibc_2.17.tar.gz

今回は、バイナリー版のGrADSなので、コンパイル済みの実行ファイルが/usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/binに既にあり、これを実行するだけでいいのではないか?と思うかもしれませんが、それをやってみると、

> cd opengrads-2.2.1.oga.1/Classic/bin
> ./grads
./grads: error while loading shared libraries: libgrib2c.so.0: cannot open shared object file: No such file or directory

となり、うまくいきません。
これは、単にLD_LIBRARY_PATHに実行に必要なライブラリの位置が示されていないためです。
実行に必要なライブラリは、opengrads-2.2.1.oga.1/Classic/bin/gexにあるので、これをLD_LIBRARY_PATHに指定してあげればよいです。であれば、.bash_profile

export LD_LIBRARY_PATH=/usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex:$LD_LIBRARY_PATH

と追記しよう!と思うかもしれませんが、これをやってしまうと、他のプログラムが動かなくなります。
例えば、emacsを起動しようとすると、

> emacs -nw aaa.txt
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libz.so.1: version `ZLIB_1.2.9' not found (required by /lib64/libpng16.so.16)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /lib64/libwebkit2gtk-4.0.so.37)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib64/libwebkit2gtk-4.0.so.37)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /lib64/libwebkit2gtk-4.0.so.37)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib64/libjavascriptcoregtk-4.0.so.18)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /lib64/libjavascriptcoregtk-4.0.so.18)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /lib64/libjavascriptcoregtk-4.0.so.18)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /lib64/libicuuc.so.60)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /lib64/libicui18n.so.60)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /lib64/libwoff2dec.so.1.0.2)
emacs: /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib64/libaspell.so.15)

あらゆるライブラリのバージョンが合わなくなり大量のエラーがでます。

今回は、gradsを実行するときだけ、gradsに必要なライブラリを指定するようなラッパーコマンドを作ってこの問題を回避します。

作ったラッパーコマンドは以下になります。

#!/bin/bash

export GA2UDXT=/usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/udxt
export GAUDPT=/usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex/udpt
export GADDIR=/usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/data

LD_LIBRARY_PATH=/usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/gex:$LD_LIBRARY_PATH /usr/local/src/opengrads/opengrads-2.2.1.oga.1/Classic/bin/grads "$@"

あとは、gradsという名前で保存して、実行権限を与えて、/usr/local/binのようなPATHの通ったところに配置すれば、gradsと叩けば今まで通りgradsを使えました。

なお、このラッパーコマンドのなかで、ついでに、gradsの実行に必要な定数データやUDPTについても設定しちゃっています。

おわりに

今回の方法が正解なのかはよく分かりませんが、とりあえず当方環境では動いたのでよしとします。
GrADSはいつまでサポート続くのかよく分からないので論文用の図はpython に完全に乗り換えましたが、やっぱりquick look はGrADS
が楽です。jupyter-grads-kernel使えば、jupyter 上でgrads 使えますし、ネットワーク越しでも動きが軽いですしね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?