はじめに
wgrib2はNOAAが開発・配布しているGRIB2形式のデータを扱うツールである。公式HPの一番上には新着情報が載っていて、このような記載がある。
Wgrib2 development has been transitioning from a makefile build to a github/CMake build. This allows future wgrib2 development to be integrated into a the software build/maintanence system that is used by NCEP and the NOAA R&D HPC systems. Wgrib2 version 3.3.0 has the major functionality of wgrib2 v3.1.3. (Ubuntu: IP-7/18/2024?, AEC-yes, JPEG200-no, PNG-no).
ファイルをGithubに移動し、makefileでmakeじゃなくて、cmakeでビルドするようになりましたとのこと。確かにこれまでの配布サイトでは最新verが3.1.3だが、Githubでは最新verが3.4.0になっている。(執筆時)
正直あまり変わらないとは思うけど、公式が移動したって言っているし、新機能も触りたいので最新版をインストールしたいです。私個人はCMakeのほうが慣れているし。でも周りを見てもネットの記事も従来の手法でやっているので、ここにやり方を残します。
まあ、公式ドキュメントのInstallingの通りやればいいんですけど……。
環境
- WSL2
- Ubuntu 22.04.4 LTS
- GNU Fortran 11.4.0
- gcc 11.4.0
- cmake 3.22.1
事前準備
gfortranとgccをインストールしておく。
sudo apt install gfortran
sudo apt install gcc
cmakeもapt installでよいが、古いバージョンをインストールしてくる。apt installでとってきた(と思われる)cmake.3.22.1で動いたので多分大丈夫です。
sudo apt install cmake
最新版をインストールする方法
最新版をとってきたい場合は公式サイトからソースをとってきてビルド&インストールする必要がある。バージョンは都度変えてください。(すみません、検証していません。)
wget https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2.tar.gz
tar xvf cmake-3.30.2.tar.gz
cd cmake-3.30.2
mkdir build
cd build
../configure --prefix=/path/to/install/cmake/3.30.2
make
make install
ダウンロードする
Githubにリリースが置いてあるので、latestをとってくる。
wget https://github.com/NOAA-EMC/wgrib2/archive/refs/tags/v3.4.0.tar.gz
tar xvf v3.4.0.tar.gz
CMakeの実行
/usr/local/{bin,lib,include}にインストールする想定です。が、注意点があるのでこの章を最後まで読んでからやってください。
cd wgrib2-3.4.0
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make
ctest
sudo make install
これでwgrib2がインストールされました。が、コマンドが反応しません。
/usr/local/binを見てみる。
nastukodachi@kc169160:/usr/local/bin$ ll
total 95704
drwxr-xr-x 3 root root 4096 Aug 1 09:31 ./
drwxr-xr-x 11 root root 4096 Apr 30 09:53 ../
lrwxrwxrwx 1 root root 45 Apr 30 09:53 corepack -> ../lib/node_modules/corepack/dist/corepack.js*
lrwxrwxrwx 1 root root 27 Apr 30 09:53 n -> ../lib/node_modules/n/bin/n*
-rwxr-xr-x 1 root root 97981176 Apr 30 09:53 node*
lrwxrwxrwx 1 root root 38 Apr 30 09:53 npm -> ../lib/node_modules/npm/bin/npm-cli.js*
lrwxrwxrwx 1 root root 38 Apr 30 09:53 npx -> ../lib/node_modules/npm/bin/npx-cli.js*
drwxr-xr-x 2 suedmond36 suedmond36 4096 Aug 23 09:18 wgrib2/
natsukodachi@kc169160:/usr/local/bin$ ll wgrib2/
total 2992
drwxr-xr-x 2 suedmond36 suedmond36 4096 Aug 23 09:18 ./
drwxr-xr-x 3 root root 4096 Aug 1 09:31 ../
-rwxr-xr-x 1 root root 3054512 Aug 23 09:24 wgrib2*
wgrib2の中にwgrib2の実行ファイルがある。これだと反応してくれない……ので、パスを追加する。
export PATH=$PATH:/usr/local/bin/wgrib2
もしくは、wgrib2を一つ上に持ってくるか、シンボリックリンクをusr/local/binに作る。dirのwgrib2と名前が被るのでこちらは名前を変えて後で捨てる。
cd /usr/local/bin
sudo mv wgrib2 dir_wgrib2
sudo mv dir_wgrib2/wgrib2 .
sudo rm -fr dir_wgrib2
場所が場所なので操作は慎重に。まじで怖いので、インストール場所は適当なとこにしておいて、実行ファイルをusr/local/binに移動するとか、新しくパス通すほうがよかったと思う。(というかそうやってクリーンにビルドするのがCMakeの利点だったりするのに……)
おわりに
だれかwgrib2をディレクトリを作成せずインストールする方法があったら教えてください。