前言:许多人在手动安装WRF时,常常会被其复杂的依赖关系和编译过程中的诸多问题所困扰。然而,通过使用Spack包管理器来安装WRF,可以显著提升安装过程的速度和效率。Spack作为一种先进的包管理工具,它自动化了依赖管理,简化了编译过程,对初学者来说非常友好,使得安装变得快速、简便且高效。
1.下载并复制spack包到linux中
把packet包拷贝到home目录下,注:以下操作均在普通用户下的终端完成
tar -zxvf spack-0.20.2.tar.gz -C ~/ #(解压spack包到home目录下)
2.安装所需库
sudo apt update #(更新软件包列表)
sudo apt install vim -y #(安装文本编辑)
sudo apt install gcc -y #(安装gcc编译器)
sudo apt install g++ -y
sudo apt install gfortran -y #(安装gfortran编译器)
sudo apt-get install build-essential -y #(安装构建工具)
sudo apt-get install git -y
sudo apt-get install gettext -y
sudo apt-get install m4
sudo apt install python3 -y #(安装python语言,要求大于3.6.8版本,可以使用python3 –version查看版本信息)
python3 -c "import ctypes" #(在Python 3中执行一个短小的Python脚本,该脚本导入了Python标准库中的ctypes模块)
3.安装前预操作
添加目录位置变量,以简化指令的输入
export DIR=/home/用户名/spack
echo $DIR #返回结果应该为/home/xxx/spack
4.spack包操作
执行环境变量,完成spack的配置
source $DIR/share/spack/setup-env.sh
输入vi ~/.bashrc设置环境变量,,在最后一行加入以下代码,保存后输入:source ~/.bashrc使环境生效。
source /home/用户名/spack/share/spack/setup-env.sh #在最下面一行加入,你setup-env.sh所在路径
spack激活
mkdir $DIR/../apps_spack #(创建文件)
cp $DIR/../spack/spack.yaml apps_spack/ #(把spack.yaml文件复制)
spack env activate -d $DIR/../apps_spack #(激活spack.yaml环境)
5.软件安装
spack add zlib #(把zlib软件加入spack环境中)
spack install #(安装该软件)
spack add wps@4.3.1 ^netcdf-c+parallel-netcdf+hdf4^hdf5+cxx+fortran^netcdf-fortran@4.6.0 ^wrf@4.3.3 #(把wrf软件及相关包加入spack环境中,相关版本可以输入spack info wps查看)
spack install #(安装该软件,如果出现c++问题,检查spack.yaml,把路径改为/usr/bin/g++)
spack load wps #(加载wps)
如果需要安装WRF-Chem,把wrf改为wrf-chem就行
如果由于网络安装失败,请魔法上网输入以下代码后再次安装
export http_proxy=魔法地址(电脑IP地址):魔法端口
export https_proxy=魔法地址(电脑IP地址):魔法端口
#电脑IP地址可以按住windows+R键,输入cmd,回车后再输入ipconfig就可以看到了
#魔法端口取决于你的软件,通过Clash,打开允许局域网连接和系统代理,可以看到默认端口
spack install
spack load wps
6.设置环境变量
注意:只是安装需求的话这部分可以不操作,但是如果有重新编译WRF需求需要这部分操作(存在部分问题,还需要解决)
新建env.sh脚本
vi $DIR/share/spack/run-env.sh #创建run-env.sh脚本
将以下环境变量设置写入run-env.sh中,保存并退出
#!/bin/bash
# 设置编译器环境变量
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
export FC=/usr/bin/gfortran
export F77=/usr/bin/gfortran
export F90=/usr/bin/gfortran
# 设置软件安装路径
export SOFTWARE_HOME=/home/wrf/spack/opt/spack/linux-ubuntu22.04-zen2/gcc-11.4.0/
export HDF5=$SOFTWARE_HOME/hdf5
export NETCDF=$SOFTWARE_HOME/netcdf
export WRF_HOME=$SOFTWARE_HOME/WRF-4.3.3
export GRIB2_HOME=$SOFTWARE_HOME/WRF/lib/grib2
# 更新PATH和LD_LIBRARY_PATH环境变量
export PATH=$WRF_HOME/main:$SOFTWARE_HOME/WPS-4.3.1:$PATH
export LD_LIBRARY_PATH=$HDF5/lib:$NETCDF/lib:$WRF_HOME/lib:$GRIB2_HOME/lib:$LD_LIBRARY_PATH
# 设置其他环境变量
export LDFLAGS="-L$GRIB2_HOME/lib"
export CPPFLAGS="-I$GRIB2_HOME/include"
export JASPERLIB=$GRIB2_HOME/lib
export JASPERINC=$GRIB2_HOME/include
授予run-env.sh权限
vi $DIR/share/spack/run-env.sh
将run-env.sh写入环境变量,最后保存退出后,source ~/.bashrc使环境变量生效
source /home/用户名/spack/share/spack/setup-env.sh #在最下面一行加入,你setup-env.sh所在路径
7.将软件备份
在所有的步骤完成后,把WRF和WPS文件夹复制一下,在其它地方存一个备份。
spack find -p wps(查找到wps的路径)
cp -rpa wps路径/wrf路径 指定文件夹路径
8.地理信息数据准备
(1)在https://www2.mmm.ucar.edu/wrf/users/download/get_sources_wps_geog.html网站上下载必要的静态数据
(2)将静态地理数据复制拷贝到Linux中,后续WPS处理需要指向这些数据
(3)批量解压数据
for tar in *.tar.bz2; do tar xvf $tar; done #(批量解压)