MENU

Mac (Apple Silicon) とDockerでWRF環境を構築する方法

乱気流の研究のため、気象場の数値解析をするためにローカル環境にWRFの環境構築をしたいと考えたのがモチベーションでした。

しかし、Chat GPTを活用したり、WRFに詳しい先生に協力を仰いでもコンパイル失敗地獄から抜け出すことができず、数ヶ月が過ぎていました。

ある日、こんな記事に出会いました。

@kasugab3621さんが書かれたこのブログのおかげでApple Silicon MacでもWRFの環境構築が完了し、無事コンパイル失敗地獄から抜け出すことができました。

この記事では、先に紹介したブログを参考にしつつ、自分がつまづいたところを詳細に述べていきたいと思います。

対象者は、私のような初心者やこれまで大学や企業、研究機関でなどでWRFを利用していたけど、自分のPCでも環境を構築したいという方向けです。

WRF環境構築時のローカル環境
・Macbook Air (2022 M2) メモリ16GB ストレージ1TB
・macOS Sequoia 15.1.1
・docker desktop Version 4.36.0
・Docker version 27.3.1
・WRF 4.6.1

1. Docker のインストール

公式サイトから Docker Desktop for Mac をインストールします。

1.1 Docker Desktop for Mac with Apple Silicon を選択

選択するとダウンロードが始まります。

1.2 ダウンロードした Docker.dmg ファイルを開く

通常、ダウンロードフォルダに保存されています。

1.3 Docker.app を Applications にドラッグ&ドロップ

1.4 アプリケーションフォルダから Docker.app を起動

Command + Space で “Docker” と検索して起動しても構いません。

“Docker.app”はインターネットからダウンロードされたアプリケーションです。開いてもよろしいですか?

というポップアップ画面が開きますが、これは「開く」をクリックします。

「開く」をクリックします。

1.5 利用規約の確認と同意

利用規約を確認し、問題なければ “Accept” をクリックします。

Commercial use of Docker Desktop at a company of more than 250 employees OR more than $10 million in annual revenue requires a paid subscription (Pro, Team, or Business).

従業員 250 人以上、または年間収益が 1,000 万ドルを超える企業で Docker Desktop を商用利用するには、有料サブスクリプション (Pro、Team、または Business) が必要です。

とあります。

上記に該当する場合はお勤めの企業のシステム担当に確認しましょう。

基本的に個人利用であれば無料で利用可能です。

1.6 設定の完了

“Use recommended settings (Requires password)” を選択して設定を完了します。

1.7 Docker Desktop の起動

認証後、アプリが起動します。アカウントを作成しなくても以下の手順に進めますが、他の Docker 利用予定がある場合はアカウントを作成しておくと便利です。

1.9 設定完了の確認

Docker Desktop の画面が表示され、右上のメニューバーにアイコンが出ていれば設定完了です。

右上のメニューバーには以下のようなアイコンが出ているか確認しましょう。

また、以下のコマンドで動作確認を行います。

% docker --version

以下のようなバージョン情報が表示されれば完了です。

Docker version 27.3.1, build ce12230

2. Ubuntu コンテナの作成

2.1 docker ディレクトリの作成

ホームディレクトリに移動し、docker ディレクトリを作成します。

% cd
% mkdir docker

2.2 コンテナ用ボリュームの作成

docker ディレクトリに移動し、ubuntu_volume を作成します。

% cd docker
% mkdir ubuntu_volume

2.3 compose.yaml の作成

compose.yaml を作成します。

エディタとして nano を使用している場合、以下のコマンドを実行してください。(お好みのエディタでも構いません。)

% nano compose.yaml

以下の内容をコピペし、保存 (Ctrl + O)、終了 (Ctrl + X) します。

services:
  ubuntu:
    image: ubuntu:24.04
    container_name: ubuntu_container
    tty: true
    platform: linux/amd64
    volumes:
      - "ubuntu_volume:/home/ubuntu"

volumes:
  ubuntu_volume:
    driver_opts:
      type: none
      device: ${PWD}/ubuntu_volume
      o: bind

2.4 コンテナの起動

dockerディレクトリで以下のコマンドを実行し、コンテナを起動します。

% docker compose up -d

以下のようなポップアップが出るが、「許可」を選択します。

起動後、以下のコマンドで確認します。

% docker ps

出力と以下のようにubuntu_container が表示されれば正常に起動しています。

CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
41edda1a43e4   ubuntu:24.04   "/bin/bash"   39 seconds ago   Up 38 seconds             ubuntu_container

起動後にcompose.yamlを編集するとコンテナが初期化されるので注意!
最初からやり直したいときは% docker rm ubuntu_containerで削除する。

docker desktopを起動しておかないと、
Cannot connect to the Docker daemon at unix:///Users/username/.docker/run/docker.sock. Is the docker daemon running?
などのエラーが返ってきます。PCの再起動後やdockerのログアウト後に上記のコマンドを実行するときはdocker desktopが起動しているか確認しましょう。

コンテナへの再ログインはdockerディレクトリで以下を実行

% docker compose exec ubuntu /bin/bash

ログイン後、

このような表示になったらrootユーザーとしてログインできています。

ちなみに@以降の文字はログインのたびに変わります。

以後のコードについては、コンテナ外で実行するプログラムは背景を黒、docker内で実行するプログラムは青の背景で記載します。

3 スクリプト実行準備

これまでの手順で進んでいればコンテナ内のrootにいると思います。

一旦コンテナ外(dockerの外、ローカル側)に出ます。

次にWRFのインストールとコンパイルの準備を進めていきますが、exitを入力することでコンテナ外(ローカル側)に出ることができます。

非ルートユーザーとしてログインしている場合はexitを2回入力することでコンテナ外に出ることができます。

ubuntu_volumeに移動します。

% cd ubuntu_volume

3.1 WRF インストールスクリプトのダウンロード

執筆時点で最新版のWRF4.6.1は以下のプログラムでダウンロードできます。

ubuntu_volume % wget https://raw.githubusercontent.com/bakamotokatas/WRF-Install-Script/refs/heads/master/WRF4.6.1_Install.bash

もし4.6.1以外のバージョン、もしくは最新版がリリースされている場合は、以下のリンクからスクリプトをダウンロードします。

執筆時点の最新版スクリプト WRF4.6.1_Install.bash を選択します。


右上付近にあるRawをクリック

wget がインストールされていない場合は Homebrew を使用してインストールします。
brew install wget

3.3 ubuntuユーザーの登録と必要なライブラリのインストール

cd ../を実行し、dockerディレクトリに移動

% docker compose exec ubuntu /bin/bashを実行して、dockerコンテナにrootユーザーとしてログインします。

後のライブラリインストールでrootではないユーザー名を使う必要があります。

好きなユーザー名でもいいですが、ここでは自動的に生成されるubuntuという名前を利用します。

注:ちなみにubuntu以外のユーザー名を使うと、以下で説明するWRFのコンパイルに失敗します。

ubuntuユーザーのパスワードを更新して、sudoユーザーに登録します。

上記を実行すると、passward入力画面が表示されます。

成功したら

passwd: password updated successfully

と出ます。

と入力し、Adding user ubuntu to group sudoの結果が返ってきたらOKです。

3.4 パッケージのインストール

ここからはパッケージのインストールです。

まずはaptを最新にしましょう。

ちなみに、aptの解説はこちらをどうぞ。

All packages are up to date.と最後に出たらOKです。

sudo, wget, nano, lessをインストールします

Do you want to continue? [Y/n]という表示が出たら、yを入力しreturnキー

次にubuntuユーザーでsudoが使えるかチェックしましょう。

To run a command as administrator (user "root"), use "sudo <command>".

See "man sudo_root" for details.
[sudo] password for ubuntu: 

.  ..  .bash_logout  .bashrc  .cache  .profile .sudo_as_admin_successful

以下のプログラムを実行すると、WRFとWPSのインストールが始まります。

環境の関係により1時間以上かかる可能性があります。

Installation has completedが出たらインストールとコンパイルが完了しています。

念のためディレクトリの中を確認しましょう。

._WPS_GEOG                      WPSV4.6.0.TAR.gz                WRFV4.6.1.tar.gz

LIBRARIES/                      WPS_GEOG/                       geog_high_res_mandatory.tar.gz

WPS-4.6.0/                      WRF-4.6.1-ARW/
WRF-4.6.1-ARW/run/ndown.exe  WRF-4.6.1-ARW/run/tc.exe

WRF-4.6.1-ARW/run/real.exe   WRF-4.6.1-ARW/run/wrf.exe

上記のようになっていれば無事WRFが使える環境ができています。

最後にWRFのインストール時に残った.tar.gzファイルは不要なので消去しておきましょう。

(オプション) ARWpostのインストール

私のブログではWRFの可視化はPythonを行うので不要ではあるのですが、OpenGrADSを使って可視化をされる方は必要な作業です。

コンテナ内のホームディレクトリに戻ります。


ARWpost_install.bashファイルを作ります。nanoエディタであれば

以下をコピペします。

#!/bin/bash
# From install_wrf.sh
##  Download and install required library and data files for WRF.
##  License: LGPL
##  Jamal Khan <jamal.khan@legos.obs-mip.fr>

# grads install
sudo apt update
sudo apt -y upgrade
sudo apt -y install grads unzip default-jre

# ARWpost install
cd ~/Build_WRF
wget -c https://www2.mmm.ucar.edu/wrf/src/ARWpost_V3.tar.gz
tar -xvzf ARWpost_V3.tar.gz -C ~/Build_WRF
cd ~/Build_WRF/ARWpost
cd arch
cp Config.pl Config.pl_backup
sed -i '79s/.*/  $response = 3 ;/' Config.pl
cd ..
./clean
sed -i -e 's/-lnetcdf/-lnetcdff -lnetcdf/g' ~/Build_WRF/ARWpost/src/Makefile
./configure #3
sed -i -e 's/-C -P/-P/g' ~/Build_WRF/ARWpost/configure.arwp
sed -i -e 's/-frecord-marker=4/-frecord-marker=4 -fallow-argument-mismatch/' ~/Build_WRF/ARWpost/configure.arwp
./compile

コピペしたらctrl + o, returnキー, ctrl + x, でしたね!

同じホームディレクトリで以下を実行

Progress 64%あたりでこのようなコメントが出てきます。

Please select the geographic area in which you live. Subsequent configuration questions will narrow
this down by presenting a list of cities, representing the time zones in which they are located.

  1. Africa   3. Antarctica  5. Asia      7. Australia  9. Indian    11. Etc
  2. America  4. Arctic      6. Atlantic  8. Europe     10. Pacific

これはタイムゾーンの設定を設定するために居住する地域の情報を求められています。

日本在住であれば 5.Asiaを選択すればいいでしょう。

Geographic area:

には5を入力してreturnキーをクリックします。


次に

Please select the city or region corresponding to your time zone.

  1. Aden         19. Chongqing    37. Jerusalem     55. Novokuznetsk   73. Tashkent
  2. Almaty       20. Colombo      38. Kabul         56. Novosibirsk    74. Tbilisi
  3. Amman        21. Damascus     39. Kamchatka     57. Omsk           75. Tehran
  4. Anadyr       22. Dhaka        40. Karachi       58. Oral           76. Tel_Aviv
  5. Aqtau        23. Dili         41. Kashgar       59. Phnom_Penh     77. Thimphu
  6. Aqtobe       24. Dubai        42. Kathmandu     60. Pontianak      78. Tokyo
  7. Ashgabat     25. Dushanbe     43. Khandyga      61. Pyongyang      79. Tomsk
  8. Atyrau       26. Famagusta    44. Kolkata       62. Qatar          80. Ulaanbaatar
  9. Baghdad      27. Gaza         45. Krasnoyarsk   63. Qostanay       81. Urumqi
  10. Bahrain     28. Harbin       46. Kuala_Lumpur  64. Qyzylorda      82. Ust-Nera
  11. Baku        29. Hebron       47. Kuching       65. Riyadh         83. Vientiane
  12. Bangkok     30. Ho_Chi_Minh  48. Kuwait        66. Sakhalin       84. Vladivostok
  13. Barnaul     31. Hong_Kong    49. Macau         67. Samarkand      85. Yakutsk
  14. Beirut      32. Hovd         50. Magadan       68. Seoul          86. Yangon
  15. Bishkek     33. Irkutsk      51. Makassar      69. Shanghai       87. Yekaterinburg
  16. Brunei      34. Istanbul     52. Manila        70. Singapore      88. Yerevan
  17. Chita       35. Jakarta      53. Muscat        71. Srednekolymsk
  18. Choibalsan  36. Jayapura     54. Nicosia       72. Taipei

が出てきます。

これはタイムゾーンの選択です。

日本在住であればTime zone:の後に78を入力します。

インストールが完了したら、Build_WRFディレクトリに移動して実行ファイルを確認しましょう。

ARWpost/ARWpost.exe

このようにファイルの存在が確認できればOKです。

お疲れ様でした!

さて、WRFをインストールできたけど、実行する方法は?と思った方については、こちらの記事をご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!