3
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?

【macOS】wgrib2(v3.7.0)のインストール

Last updated at Posted at 2025-08-02

はじめに

wgrib2 は、GRIB2 ファイルを操作するプログラムで、アメリカ海洋大気庁(NOAA)を構成するアメリカ国立気象局(NWS)の国立環境予測センター(NCEP)が配布している。

この記事は、以前公開した以下の記事の更新版である。

実行環境のバージョン

バージョン
アーキテクチャ ARM64
OS macOS Sequoia 15.5
GCC Homebrew GCC 15.1.0

依存ライブラリをインストール

$ brew install gcc cmake netcdf zlib libpng openblas lapack jasper libaec pkg-config

作業用ディレクトリの用意

$ mkdir -p ~/tmp/wgrib2 && cd ~/tmp/wgrib2

ソースコードの取得

$ for repo in ip g2c wgrib2; do \
    git clone "https://github.com/NOAA-EMC/NCEPLIBS-${repo}.git"; \
    cd "NCEPLIBS-${repo}"; \
    git switch --detach "v$(grep -m1 -o '[0-9]\+\.[0-9]\+\.[0-9]\+' VERSION 2>/dev/null)"; \
    cd ..; \
  done

パッチの適用

オリジナルのバックアップを作成

$ for d in NCEPLIBS-{g2c,wgrib2}; do cp -R "$d" "$d.orig"; done

NCEPLIBS-g2c へのパッチ

まず、 NCEPLIBS-g2cCMakeLists.txt にパッチを当てるために、以下のようなパッチファイル( ~/tmp/wgrib2/g2c.diff )を作成する。

~/tmp/wgrib2/g2c.diff
diff -ur NCEPLIBS-g2c.orig/CMakeLists.txt NCEPLIBS-g2c/CMakeLists.txt
--- NCEPLIBS-g2c.orig/CMakeLists.txt
+++ NCEPLIBS-g2c/CMakeLists.txt
@@ -18,15 +18,15 @@
 # Handle user options.
 option(ENABLE_DOCS "Enable generation of doxygen-based documentation." OFF)
 option(USE_PNG "Use PNG library"      ON)
 option(USE_Jasper "Use Jasper library"   ON)
 option(USE_OpenJPEG "Use OpenJPEG library" OFF)
-option(USE_AEC "Use LibAEC library" OFF)
+option(USE_AEC "Use LibAEC library" ON)
 option(BUILD_SHARED_LIBS "Build shared libraries" ON)
 option(BUILD_STATIC_LIBS "Build static libraries" ON)
 option(FTP_TEST_FILES "Fetch and test with files on FTP site." OFF)
 option(FTP_LARGE_TEST_FILES "Fetch and test with very large files on FTP site." OFF)
 option(FTP_EXTRA_TEST_FILES "Test with more large files fetched via FTP." OFF)
 option(LOGGING "Turn on internal logging messages. Only useful to g2c developers." OFF)
 option(PTHREADS "Turn on thread-safty with pthreads." OFF)
 option(UTILS "Build and install some utility programs." ON)
 option(BUILD_G2C "Build the g2c file-based API." ON)

作成したら、パッチを適用する。

$ patch -p0 < g2c.diff

NCEPLIBS-wgrib2 へのパッチ

次に、NCEPLIBS-wgrib2 の CMakeLists.txt にもパッチを当てるために、以下のようなパッチファイル( ~/tmp/wgrib2/wgrib2.diff )を作成する。

~/tmp/wgrib2/wgrib2.diff
diff -ur NCEPLIBS-wgrib2.orig/CMakeLists.txt NCEPLIBS-wgrib2/CMakeLists.txt
--- NCEPLIBS-wgrib2.orig/CMakeLists.txt
+++ NCEPLIBS-wgrib2/CMakeLists.txt
@@ -18,21 +18,21 @@
 # Handle user build options.
 option(ENABLE_DOCS "Enable generation of doxygen-based documentation." OFF)
-option(USE_NETCDF "Use NetCDF" off)
+option(USE_NETCDF "Use NetCDF" on)
 option(USE_REGEX "Use Regex?" on)
 option(USE_TIGGE "Use tigge?" on)
 option(USE_MYSQL "Use MySQL?" off)
-option(USE_IPOLATES "Use Ipolates" off)
+option(USE_IPOLATES "Use Ipolates" on)
 option(USE_UDF "Use UDF?" off)
-option(USE_OPENMP "Use OpenMP?" off)
+option(USE_OPENMP "Use OpenMP?" on)
 option(USE_PROJ4 "Use Proj4?" off)
 option(USE_WMO_VALIDATION "Use WMO Validation?" off)
 option(DISABLE_TIMEZONE "Disable posix Timezone?" off)
 option(DISABLE_ALARM "Disable Alarm?" off)
 set(USE_NAMES "NCEP")
-option(USE_G2CLIB_HIGH "Use g2c high-level decoder (-g2clib 2)?" off)
+option(USE_G2CLIB_HIGH "Use g2c high-level decoder (-g2clib 2)?" on)
-option(USE_G2CLIB_LOW "Use g2c low-level decoders (png,jpeg2000)?" off)
+option(USE_G2CLIB_LOW "Use g2c low-level decoders (png,jpeg2000)?" on)
-option(USE_AEC "Use AEC to enable encoding/decoding of GRIB2 data with CCSDS packing (packing type 42)." off)
+option(USE_AEC "Use AEC to enable encoding/decoding of GRIB2 data with CCSDS packing (packing type 42)." on)
 option(BUILD_EXTRA "Build user-contributed code" OFF)
 option(FTP_TEST_FILES "Fetch and test with files on FTP site." OFF)
 option(FTP_LARGE_TEST_FILES "Fetch and test with very large files on FTP site." OFF)
 option(FTP_EXTRA_TEST_FILES "Fetch even more large files from FTP and test them." OFF)

USE_OPENMPon にすることで、マルチコアを用いた並列処理が可能になる。

作成したら、パッチを適用する。

$ patch -p0 < wgrib2.diff

ライブラリの配置

ソースを /opt にコピーする

$ sudo cp -R NCEPLIBS-{g2c,wgrib2,ip} /opt/

rpath のための環境変数を準備

$ RP_IP="/opt/homebrew/opt/NCEPLIBS-ip/lib"
  RP_G2C="/opt/homebrew/opt/NCEPLIBS-g2c/lib"
  RP_W2="/opt/homebrew/opt/NCEPLIBS-wgrib2/lib"
  RP_ALL="${RP_IP};${RP_G2C};${RP_W2}"
  export RP_IP RP_G2C RP_W2 RP_ALL

ビルドとインストール

ip

$ cd /opt/NCEPLIBS-ip
$ sudo mkdir build && cd build
$ sudo cmake .. \
  -DCMAKE_INSTALL_PREFIX=/opt/homebrew/opt/NCEPLIBS-ip \
  -DCMAKE_INSTALL_RPATH="${RP_ALL}" \
  -DCMAKE_INSTALL_NAME_DIR="@rpath" \
  -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \
  -DBUILD_SHARED_LIBS=ON \
  -DBLAS_LIBRARIES=/opt/homebrew/opt/openblas/lib/libblas.dylib \
  -DLAPACK_LIBRARIES=/opt/homebrew/opt/lapack/lib/liblapack.dylib
$ sudo make -j$(sysctl -n hw.logicalcpu)
$ sudo make install

g2c

$ cd /opt/NCEPLIBS-g2c
$ sudo mkdir build && cd build
$ JASPER_INCLUDE_DIR="/opt/homebrew/opt/include/jasper"
  JASPER_LIBRARIES="/opt/homebrew/opt/lib/libjasper.dylib"
  JPEG_INCLUDE_DIR="/opt/homebrew/opt/include"
  JPEG_LIBRARY="/opt/homebrew/opt/lib/libjpeg.dylib"
  export JASPER_INCLUDE_DIR JASPER_LIBRARIES JPEG_INCLUDE_DIR JPEG_LIBRARY
$ sudo cmake .. \
  -DCMAKE_INSTALL_PREFIX=/opt/homebrew/opt/NCEPLIBS-g2c \
  -DCMAKE_INSTALL_RPATH="${RP_ALL}" \
  -DCMAKE_INSTALL_NAME_DIR="@rpath" \
  -DCMAKE_OSX_DEPLOYMENT_TARGET=15.0 \
  -DCMAKE_OSX_ARCHITECTURES=arm64
$ sudo make -j$(sysctl -n hw.logicalcpu)
$ sudo make install

wgrib2

Homebrew でインストールされている gcc・g++・gfortran のバージョンを確認しておく。ここでは、 gcc-15g++-15gfortran-15 を前提とする。また、OpenMP による並列処理を有効にしている。

$ cd /opt/NCEPLIBS-wgrib2
$ sudo mkdir build && cd build
$ if [ ! -f /opt/homebrew/lib/gcc/15/libgomp.dylib ]; then \
    sudo ln -sf /opt/homebrew/lib/gcc/15/libgomp.1.dylib /opt/homebrew/lib/gcc/15/libgomp.dylib; \
  fi
$ LDFLAGS="-L/opt/homebrew/opt/zlib/lib"
  CPPFLAGS="-I/opt/homebrew/opt/zlib/include" \
  PKG_CONFIG_PATH="/opt/homebrew/opt/zlib/lib/pkgconfig"
  export LDFLAGS CPPFLAGS PKG_CONFIG_PATH
$ sudo cmake .. \
  -DCMAKE_INSTALL_PREFIX=/opt/homebrew/opt/NCEPLIBS-wgrib2 \
  -DCMAKE_PREFIX_PATH="/opt/homebrew/opt/NCEPLIBS-ip;/opt/homebrew/opt/NCEPLIBS-g2c" \
  -DCMAKE_C_COMPILER=/opt/homebrew/bin/gcc-15 \
  -DCMAKE_CXX_COMPILER=/opt/homebrew/bin/g++-15 \
  -DCMAKE_Fortran_COMPILER=/opt/homebrew/bin/gfortran-15 \
  -DCMAKE_INSTALL_RPATH="${RP_ALL}" \
  -DCMAKE_INSTALL_NAME_DIR="@rpath" \
  -DCMAKE_EXE_LINKER_FLAGS="-L/opt/homebrew/lib/gcc/15 -lgomp" \
  -DUSE_OPENMP=ON \
  -DOpenMP_C_FLAGS="-fopenmp" \
  -DOpenMP_C_LIB_NAMES="gomp" \
  -DOpenMP_C_LIBRARIES="/opt/homebrew/lib/gcc/15/libgomp.dylib" \
  -DOpenMP_gomp_LIBRARY="/opt/homebrew/lib/gcc/15/libgomp.dylib"
$ sudo make -j$(sysctl -n hw.logicalcpu)
$ sudo make install
$ sudo ln -sf /opt/homebrew/opt/NCEPLIBS-wgrib2/bin/wgrib2 /opt/homebrew/bin

インストールの確認

以下のように表示されれば、正常にインストールできている。

$ wgrib2 -version  # → 3.7.0

不要な作業用ディレクトリの削除

$ sudo rm -rf ~/tmp/wgrib2

アップデートの手順

wgrib2 のみ更新する場合

まず、最新版のソースコードを取得する。

$ cd /opt/NCEPLIBS-wgrib2
$ git fetch --tags origin
$ git switch [新しいタグ]  # 例:新しいタグが v3.8.0 の場合には、git switch v3.8.0

必要があれば、NCEPLIBS-wgrib2 へのパッチを参考に、 /opt/NCEPLIBS-wgrib2/CMakeLists.txt に対するパッチを適用する。

既存の build ディレクトリを削除して、再度作成する。wgrib2 のビルド・インストール手順と同様に、ビルドとインストールを行う。

$ sudo rm -rf build && sudo mkdir build && cd build
$ if [ ! -f /opt/homebrew/lib/gcc/15/libgomp.dylib ]; then \
    sudo ln -sf /opt/homebrew/lib/gcc/15/libgomp.1.dylib /opt/homebrew/lib/gcc/15/libgomp.dylib; \
  fi
$ LDFLAGS="-L/opt/homebrew/opt/zlib/lib"
  CPPFLAGS="-I/opt/homebrew/opt/zlib/include" \
  PKG_CONFIG_PATH="/opt/homebrew/opt/zlib/lib/pkgconfig"
  export LDFLAGS CPPFLAGS PKG_CONFIG_PATH
$ sudo cmake .. \
  -DCMAKE_INSTALL_PREFIX=/opt/homebrew/opt/NCEPLIBS-wgrib2 \
  -DCMAKE_PREFIX_PATH="/opt/homebrew/opt/NCEPLIBS-ip;/opt/homebrew/opt/NCEPLIBS-g2c" \
  -DCMAKE_C_COMPILER=/opt/homebrew/bin/gcc-15 \
  -DCMAKE_CXX_COMPILER=/opt/homebrew/bin/g++-15 \
  -DCMAKE_Fortran_COMPILER=/opt/homebrew/bin/gfortran-15 \
  -DCMAKE_INSTALL_RPATH="${RP_ALL}" \
  -DCMAKE_INSTALL_NAME_DIR="@rpath" \
  -DCMAKE_EXE_LINKER_FLAGS="-L/opt/homebrew/lib/gcc/15 -lgomp" \
  -DUSE_OPENMP=ON \
  -DOpenMP_C_FLAGS="-fopenmp" \
  -DOpenMP_C_LIB_NAMES="gomp" \
  -DOpenMP_C_LIBRARIES="/opt/homebrew/lib/gcc/15/libgomp.dylib" \
  -DOpenMP_gomp_LIBRARY="/opt/homebrew/lib/gcc/15/libgomp.dylib"
$ sudo make -j$(sysctl -n hw.logicalcpu)
$ sudo make install
$ sudo ln -sf /opt/homebrew/opt/NCEPLIBS-wgrib2/bin/wgrib2 /opt/homebrew/bin

以下のように表示されれば、正常にアップデートされている。

$ wgrib2 -version  # → [新しいタグ](例:v3.8.0)

新しいバージョンに問題があり、ロールバックする際には、 git switch [前のタグまたはコミット] を実行して、同様にビルドとインストールを行う。

ip と g2c も併せて更新する場合

ip の更新

$ cd /opt/NCEPLIBS-ip
$ git fetch --tags origin
$ git switch [新しいタグ]  # 例:新しいタグが v5.5.0 の場合には、git switch v5.5.0
$ sudo rm -rf build && sudo mkdir build && cd build
$ RP_IP="/opt/homebrew/opt/NCEPLIBS-ip/lib"
  RP_G2C="/opt/homebrew/opt/NCEPLIBS-g2c/lib"
  RP_W2="/opt/homebrew/opt/NCEPLIBS-wgrib2/lib"
  RP_ALL="${RP_IP};${RP_G2C};${RP_W2}"
  export RP_IP RP_G2C RP_W2 RP_ALL
$ sudo cmake .. \
  -DCMAKE_INSTALL_PREFIX=/opt/homebrew/opt/NCEPLIBS-ip \
  -DCMAKE_INSTALL_RPATH="${RP_ALL}" \
  -DCMAKE_INSTALL_NAME_DIR="@rpath" \
  -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \
  -DBUILD_SHARED_LIBS=ON \
  -DBLAS_LIBRARIES=/opt/homebrew/opt/openblas/lib/libblas.dylib \
  -DLAPACK_LIBRARIES=/opt/homebrew/opt/lapack/lib/liblapack.dylib
$ sudo make -j$(sysctl -n hw.logicalcpu)
$ sudo make install

g2c の更新

$ cd /opt/NCEPLIBS-g2c
$ git fetch --tags origin
$ git switch [新しいタグ]  # 例:新しいタグが v2.3.0 の場合には、git switch v2.3.0

必要があれば、NCEPLIBS-g2c へのパッチを参考に、 /opt/NCEPLIBS-g2c/CMakeLists.txt に対するパッチを適用する。

$ sudo rm -rf build && sudo mkdir build && cd build
$ JASPER_INCLUDE_DIR="/opt/homebrew/opt/include/jasper"
  JASPER_LIBRARIES="/opt/homebrew/opt/lib/libjasper.dylib"
  JPEG_INCLUDE_DIR="/opt/homebrew/opt/include"
  JPEG_LIBRARY="/opt/homebrew/opt/lib/libjpeg.dylib"
  export JASPER_INCLUDE_DIR JASPER_LIBRARIES JPEG_INCLUDE_DIR JPEG_LIBRARY
$ sudo cmake .. \
  -DCMAKE_INSTALL_PREFIX=/opt/homebrew/opt/NCEPLIBS-g2c \
  -DCMAKE_INSTALL_RPATH="${RP_ALL}" \
  -DCMAKE_INSTALL_NAME_DIR="@rpath" \
  -DCMAKE_OSX_DEPLOYMENT_TARGET=15.0 \
  -DCMAKE_OSX_ARCHITECTURES=arm64
$ sudo make -j$(sysctl -n hw.logicalcpu)
$ sudo make install

wgrib2 の更新

wgrib2 のみ更新する場合 と同様。

アンインストール

$ sudo rm -rf /opt/homebrew/bin/wgrib2 /opt/homebrew/opt/NCEPLIBS-{wgrib2,g2c,ip} /opt/NCEPLIBS-{wgrib2,g2c,ip}

他のプロセスなどが使用していなければ、 libgomp のシンボリックリンクも消す。

$ sudo rm -f /opt/homebrew/lib/gcc/15/libgomp.dylib

参考文献

3
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
3
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?