乱気流の研究のため、気象場の数値解析をするためにローカル環境にWRFの環境構築をしたいと考えたのがモチベーションでした。
しかし、Chat GPTを活用したり、WRFに詳しい先生に協力を仰いでもコンパイル失敗地獄から抜け出すことができず、数ヶ月が過ぎていました。
ある日、こんな記事に出会いました。
@kasugab3621さんが書かれたこのブログのおかげでApple Silicon MacでもWRFの環境構築が完了し、無事コンパイル失敗地獄から抜け出すことができました。
この記事では、先に紹介したブログを参考にしつつ、自分がつまづいたところを詳細に述べていきたいと思います。
対象者は、私のような初心者やこれまで大学や企業、研究機関でなどでWRFを利用していたけど、自分のPCでも環境を構築したいという方向けです。
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
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@41edda1a43e4:/#
このような表示になったらrootユーザーとしてログインできています。
ちなみに@以降の文字はログインのたびに変わります。
3 スクリプト実行準備
これまでの手順で進んでいればコンテナ内のrootにいると思います。
一旦コンテナ外(dockerの外、ローカル側)に出ます。
次にWRFのインストールとコンパイルの準備を進めていきますが、exit
を入力することでコンテナ外(ローカル側)に出ることができます。
root@41edda1a43e4:/# 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ユーザーに登録します。
root@e4edfa990d25:/# passwd ubuntu
上記を実行すると、passward入力画面が表示されます。
成功したら
passwd: password updated successfully
と出ます。
root@e4edfa990d25:/# gpasswd -a ubuntu sudo
と入力し、Adding user ubuntu to group sudo
の結果が返ってきたらOKです。
3.4 パッケージのインストール
ここからはパッケージのインストールです。
まずはaptを最新にしましょう。
ちなみに、aptの解説はこちらをどうぞ。
root@41edda1a43e4:/# apt update
All packages are up to date.
と最後に出たらOKです。
sudo, wget, nano, lessをインストールします
root@41edda1a43e4:/# apt install sudo wget nano less
Do you want to continue? [Y/n]
という表示が出たら、yを入力しreturnキー
次にubuntuユーザーでsudoが使えるかチェックしましょう。
root@41edda1a43e4:/# su - ubuntu
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@41edda1a43e4:~$ sudo ls -a
[sudo] password for ubuntu:
. .. .bash_logout .bashrc .cache .profile .sudo_as_admin_successful
以下のプログラムを実行すると、WRFとWPSのインストールが始まります。
ubuntu@41edda1a43e4:~$ bash WRF4.6.1_Install.bash
環境の関係により1時間以上かかる可能性があります。
Installation has completed
が出たらインストールとコンパイルが完了しています。
念のためディレクトリの中を確認しましょう。
ubuntu@41edda1a43e4:~/Build_WRF$ cd
._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/
ubuntu@41edda1a43e4:~/Build_WRF$ ls WRF-4.6.1-ARW/run/*exe
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ファイルは不要なので消去しておきましょう。
ubuntu@41edda1a43e4:~/Build_WRF$ rm *tar.gz *TAR.gz
(オプション) ARWpostのインストール
私のブログではWRFの可視化はPythonを行うので不要ではあるのですが、OpenGrADSを使って可視化をされる方は必要な作業です。
コンテナ内のホームディレクトリに戻ります。
ubuntu@41edda1a43e4:~/Build_WRF$ cd
ARWpost_install.bashファイルを作ります。nanoエディタであれば
nano ARWpost_install.bash
以下をコピペします。
#!/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
, でしたね!
同じホームディレクトリで以下を実行
ubuntu@41edda1a43e4:~/Build_WRF$ bash ARWpost_install.bash
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ディレクトリに移動して実行ファイルを確認しましょう。
ubuntu@41edda1a43e4:~/Build_WRF$ ls ARWpost/*exe
ARWpost/ARWpost.exe
このようにファイルの存在が確認できればOKです。
お疲れ様でした!
さて、WRFをインストールできたけど、実行する方法は?と思った方については、こちらの記事をご覧ください。