爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9141|回复: 20

接上次,ubuntu虚拟机下的WRF安装过程全纪录

[复制链接]

新浪微博达人勋

发表于 2022-6-23 19:30:27 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 112f7 于 2022-7-24 14:02 编辑
一开始.png
接上次安装完之后,可以点vmware软件里的新建快照,保留一个最初始的系统状态,这样万一玩崩了不至于从头开始。或者依次选择“虚拟机>快照>新建快照”
(图) 快照.png
先解决一下下载源的问题,默认的源速度很慢,我不要求几兆每秒吧起码不能几k每秒。
(图) ub2.png ub最佳服务器.png
因此在桌面点左下角九个点处点击显示应用程序,打开“软件和更新”,方盒子模样那个。点“下载自”,选“其他站点”,点“选择最佳服务器”。选自己熟悉的也行,或者清华他们的,或者自动选的也足够用了。
过一会等他结束,点“选择服务器”以确认,输入密码以认证,点关闭。
然后按照提示更新一下语言包软件包什么的,比如重新载入软件列表和更新语言支持。系统可以不升级到20
ubuntu版本介绍忽略就行
(图) 关闭.png
接下来要写写代码,因此有几点必须要说一下:
1、ubuntu虽然有人机交互界面,但是linux核心的终端控制作为内核还是不变的,大部分操作都要在终端上进行。
2、终端,如下图的样子。
3、电脑不太行的尽量别随便改VMware的窗口大小,保持全屏,我有两次为了复制代码方便弄了VMware和Edge的二分屏,然后ubuntu在适应分辨率的时候卡崩了直接开不了机,两次。
4、"sudo su"命令是用来将后续命令统一赋予管理员权限的,在输入正确密码后后续命令提示符变成白色#号,否则需要在每一处需要管理员权限的命令前增加“sudo”字段。
5、前面说的root权限虽然好用但是在该环境下生成的文件也只有管理员有更改权限,会很麻烦,所以合理使用sudo su命令。
6、cd是改目录用的,apt-get是安装软件用的,install是安装的意思,等。
7、一口气粘贴很多命令时,有时候最后一个命令不会被自动执行,记得回车。
8、ubuntu里crtl+c是终止运行,终端里慎用ctrl+c,不要和win里的复制搞混
(终端图) sudo.png

一、为了极大地提高安装wrf的效率,需要win和ubuntu之间共用粘贴板,方法是启用vm-tools:
在桌面右键打开终端,依次键入以下命令:
sudo apt-get autoremove open-vm-tools 输完要回车执行
sudo apt-get update                             输完要回车执行
sudo apt-get install open-vm-tools-desktop 输完要回车执行

第一次sudo的时候会让输密码,输就是了
y.png
会有询问空间占用的问题,输入y就行了
然后键入reboot命令重启虚拟机

二、在“虚拟机>设置”里可以添加共享文件夹,根据图里的选项,点击“添加”即可添加共享文件夹,有时候会比较方便
share.png 共享之后(我的名字叫Eshare)的位置在这,从桌面左边点击“文件”,进入文件系统,然后“其他位置>计算机>mnt>hgfs”

三、安装基本软件
在桌面打开终端,粘贴这些东西,根据我的经验,装这些东西之后就能成功安装wrf(可能会有一些用不到的)
sudo su
apt-get install gcc cpp gfortran g++ m4 make cshlibhdf5-mpich-dev libpng-dev libnetcdff-dev netcdf-bin mpi intltool git zlib*
代码的意思是安装gcc、cpp、make等一系列软件
然后检查更新:
apt-get update
apt-get upgrade
会花费几分钟

四、环境变量
这里的东西参考了这篇博文里写的,并添加了一些必要的不会导致报错的语句
小白跑WRF第二天,安装环境(各种编译器)的准备_野生的气象小流星的博客-CSDN博客_wrf安装
它里面的软件测试环节这里省去了,我做了好几遍都是没问题的,下面编辑环境变量
用nano打开bashrc,或者进主目录按crtl+h显示隐藏文件,打开bashrc进行编辑:
sudo nano ~/.bashrc
把这些东西粘贴到最后:记得改用户文件夹名字
export DIR=/home/(这里请输入自己的用户名文件夹)/Build_WRF/LIBRARIES
export CC=gcc
export CXX=g++
export FC=gfortran
export CFLAGS='-m64'
export F77=gfortran
export FFLAGS='-m64'
export PATH=$DIR/mpich/bin:$PATH
export PATH=$DIR/netcdf/bin:$PATH
export NETCDF=$DIR/netcdf
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include
export LDFLAGS=-L$DIR/grib2/lib
export CPPFLAGS=-I$DIR/grib2/include
export LD_LIBRARY_PATH=$DIR/grib2/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$DIR/hdf5/lib:$LD_LIBRARY_PATH
export HDF5=$DIR/hdf5
export CURL=$DIR/curl
export ZLIB=$DIR/grib2
exportLD_LIBRARY_PATH=${NETCDF}/lib:${LD_LIBRARY_PATH}
exportLD_RUN_PATH=${NETCDF}/lib:${LD_RUN_PATH}
如果使用nano编辑的,最后ctrl+x退出,它会问要不要保存,输入y然后回车
如果双击用文本编辑器打开的,点击保存然后退出
添加好之后,执行以下命令以生效环境变量:
source ~/.bashrc
然后:
reboot
重启虚拟机


五、
根据“野生的气象小流星”中引用的即WRF官方推荐的文件树结构,需要:
在主目录下执行以下命令,mkdir是创建目录的意思
mkdir Build_WRF
mkdir TESTS
不要在root(sudo)下做这个,不然文件夹上会有一个小锁
(主目录图)
双击进入Build_WRF,打开终端,再创建一个文件夹
mkdir LIBRARIES

六、mwget
(可以不装,不影响WRF正常使用,后面的命令里如果出现mwget的换成wget即可)
为了从长计议,安装mwget,一个多线程下载器,防止下载大文件太慢(静态地理数据急哭了)
在主目录依次执行以下命令:
sudo apt install build-essential
sudo apt upgrade intltool
sudo apt install  libssl-dev
wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2
tar -xjvf mwget_0.1.0.orig.tar.bz2
cd mwget_0.1.0.orig
./configure
sudo make
(图) cpp.png
根据经验,make命令后必报错,所以根据博文Ubuntu安装mwget_流星的眼眸的博客-CSDN博客_ubuntu安装mwget
进入刚才解压缩后的mwget_0.1.0.orig/src文件夹,打开报错的.cpp文件,在开头添加以下三行代码:
#include <string.h>
#include <string>
using std::string;
共三个.cpp文件,所以要make三次以找出所有报错文件,修改后记得保存
最后安装:
sudo make install
输入:
mwget -h
出现介绍文字表示成功

七、第三方依赖库
就不麻烦了一口气全上来,在代码最后解释含义
在Build_WRF下,执行(全部粘贴进去):
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/mpich-3.0.4.tar.gz
wgethttps://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.22/src/hdf5-1.8.22.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/netcdf-4.1.3.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/jasper-1.900.1.tar.gz
wget  https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/libpng-1.2.50.tar.gz
wget https://curl.se/download/curl-7.83.1.tar.gz
tar xzvfzlib-1.2.7.tar.gz        
cd zlib-1.2.7  
./configure--prefix=$DIR/grib2                  
make
make install
cd ..  
tar xzvfmpich-3.0.4.tar.gz        
cd mpich-3.0.4                    
./configure--prefix=$DIR/mpich
make
make install
cd..  
tar xzvflibpng-1.2.50.tar.gz      
cd libpng-1.2.50                    
./configure--prefix=$DIR/grib2
make
make install
cd ..
tar xzvfjasper-1.900.1.tar.gz        
cd jasper-1.900.1                  
./configure--prefix=$DIR/grib2
make
make install
cd..  
tar xzvfcurl-7.83.1.tar.gz
cd curl-7.83.1
./configure--prefix=${CURL} --with-amissl
make
make install
cd ..
tar zxvfhdf5-1.8.22.tar.gz
cd hdf5-1.8.22
./configure--with-zlib=${ZLIB} --prefix=${HDF5} --enable-fortran --enable-fortran2003
make
make install
cd ..
tar xzvfnetcdf-4.1.3.tar.gz        
cd netcdf-4.1.3  
CPPFLAGS=-I${HDF5}/includeLDFLAGS=-L${HDF5}/lib ./configure --prefix=${NETCDF}
make
make install
cd ..

会很久,十几分钟
本人建议不要让它锁屏,动动鼠标
最后一行记得补一个回车
整体的意思是,先下载七个库,然后对每一个库依次进行解压缩文件夹、进入文件夹、配置、编译、安装、退出文件夹的操作。最后两个库有点特殊,因为根据小流星的教程做下来,我最后安装WRF的时候会报netcdf4的错,所以最后根据这个教程做了HDF5对netcdf支持的代码:
ubuntu下安装NetCDF之HDF4/HDF5对NetCDF的支持_ISmileLi的博客-CSDN博客_ubuntu安装netcdf
但是兼容性测试的环节就不能按小流星(或官方)的程序测试,不过我这样做下来是没问题的。
如果安装出来LIBIARIES文件夹下是空的,可能是因为环境变量没生效或者没保存,返回去再加上
如果出现这个提示,说明库本身的安装没有问题了
(netcdf成功图) netcdf成功.png

好了好了,安装WRF
八、好累啊,好复杂
在Build_WRF下打开终端,执行以下命令:
mwget https://www2.mmm.ucar.edu/wrf/src/WRFV4.0.TAR.gz
tar xzvfWRFV4.0.TAR.gz
cd WRF
./configure
Wrf比较大,我用了mwget
即下载wrf、解压缩、进入文件夹、配置
(wrf配置图) wrf配置.png
这里选择34或者32,回车后选1(基本)再回车。
我这里选的是34和1
假如说这里失败了,在确认前面步骤没错的情况下,改一下第一个选项,比如34改成32或者33试一下
(wrf配置成功图) wrf配置成功.png
然后运行:
./compileem_real >& log.compile
会很久,二十多分钟。结束时候去Build_WRF\WRF\main\里找四个exe文件,或者执行此命令:
ls -lsmain/*.exe
(wrf4exe成功图) wrf4exe.png
其他文件夹比如WRF\run\里的exe是链接过去的,如果main里没有exe只有run里有的话也是安装失败的。
错误信息保存在log.compile里,在WRF文件夹下,从后往前找能看到error信息(比如有一次出现了hdf5的gfortran编译不支持,因此不得不在之前的代码里加入了--enable-fortran--enable-fortran2003)

九、WPS
在Build_WRF下执行以下命令:
wgethttps://www2.mmm.ucar.edu/wrf/src/WPSV4.0.TAR.gz
tar xzvfWPSV4.0.TAR.gz
cd WPS
./clean
./configure
(WPS选择图) wps选择.png
选3,dmpar,和刚才wrf的选择相对应
出现此图即为成功:
(wps成功图) wps成功.png
这里它会自动检查之前c、Fortran的运行是否良好,我之前出了一些问题,在这篇博文中找到答案,在环境变量里增添两行语句,这一步已经在之前的步骤里写好了:
http://t.zoukankan.com/cuancuancuanhao-p-10711140.html
现在执行此命令:
./compile>& compile.log & tail -f compile.log
当屏幕停止跳动后(约一分钟),也就是这个画面:
(停止跳动图) 停止跳动.png
按键盘上的ctrl+c终止程序运行
然后执行此命令查看3个exe文件是否已经生成:
ls -las *.exe
(wps3exe成功图) wps3exe成功图.png
在小流星的文章里,修改了namelist.wps文件。为了后面成功地运行wrf案例,也修改一下:
(namelist.wps.txt)
篇幅原因就不把原文放上来了,文件在开头压缩包里,同名文件。要把里面的一处中文字改成自己的文件名!然后删除.txt后缀!最后替换掉Build_WRF\WPS\下的namelist.wps!
【为了以防万一,先说一下,在后续运行WRF时,如果出现无法读取namelist.input,或其他从win里移动到ub的文件无法读取的问题,需要在ubuntu下打开namelist.input,清空内容,复制windows下namelist.input.txt中的内容,粘贴到ub下同名文件夹内,最后重新运行程序,可能因为win和linux的字符编码有些不同】

十、静态地理数据
在Build_WRF下执行:
mkdir WPS_GEOG
以创建文件夹
然后根据namelist.wps中的设置,也就是geog_data_res变量,下载对应的数据包,放入刚才创建的文件夹里
数据量很大,我也是费了一番心思才找齐,东西我放百度网盘了,要的自提:
《在文章最后》
这一部分需要将解压缩后的20个文件夹直接放在WPS_GEOG里,最好是直接在ub里解压缩,以防出现linux和win字符编码不同的错误,因此在压缩包所在文件夹执行以下命令:
xz -djingtaigeog.tar.xz
tar -xvfjingtaigeog.tar
tar xjvfalbedo_modis.tar.bz2
tar xjvfclayfrac_5m.tar.bz2
tar xjvferod.tar.bz2
tar xjvfgreenfrac_fpar_modis.tar.bz2
tar xjvflai_modis_10m.tar.bz2
tar xjvflake_depth.tar.bz2
tar xjvfmaxsnowalb_modis.tar.bz2
tar xjvfmodis_landuse_20class_30s_with_lakes.tar.bz2
tar xjvfnlcd2011_can_ll_9s.tar.bz2
tar xjvfnlcd2011_imp_ll_9s.tar.bz2
tar xjvforogwd_10m.tar.bz2
tar xjvfsandfrac_5m.tar.bz2
tar xjvfsoiltemp_1deg.tar.bz2
tar xjvfsoiltype_bot_30s.tar.bz2
tar xjvfsoiltype_bot_10m.tar.bz2
tar xjvftopo_gmted2010_30s.tar.bz2
tar xjvfvarsso_10m.tar.bz2
tar xjvfNUDAPT44_1km.tar.bz2
tar xjvfsoiltype_top_30s.tar.bz2
tar xjvfsoiltype_top_10m.tar.bz2
然后要手动把全部文件夹移动到WPS_GEOG里,删除全部无用文件
(抱歉这里十分繁琐,因为来回的压缩和解压缩20G的数据太费时间了,就先这样吧)
(效果图) 效果图.png

十一、ARWpost
在Build_WRF文件夹下打开终端,运行以下代码:
wgethttps://www2.mmm.ucar.edu/wrf/src/ARWpost_V3.tar.gz
tar -zxvfARWpost_V3.tar.gz
cd ARWpost
./configure
意思为从下载到配置的过程
选择3,即gfortran,我们始终都用的这个工具,保持一致
图(ARWpost成功)
ARWpost成功.png
然后进入Build_WRF\ARWpost\src\Makefile,这里有个makefile文件,makefile的是用来统一集合编译的,往往一个工程里包含很多待编译的文件,makefile的存在使得用户只要使用“make”命令即可一键编译
根据小流星的教程,我们需要将
第19行:-L$(NETCDF)/lib -I$(NETCDF)/include -lnetcdf
修改为:-L$(NETCDF)/lib-I$(NETCDF)/include -lnetcdff -lnetcdf
要是嫌麻烦,我给的替换压缩包里有,同名的,直接换就行了,但是后缀“txt”务必要去掉
第二个修改的:
位置:\Build_WRF\ARWpost\configure.arwp
第37行:CFLAGS =-m64
修改为:CFLAGS= -fPIC -m64

第38行:CPP =/lib/cpp -C -P -traditional
修改为:CPP= /lib/cpp -P -traditional
这里两个文件的修改步骤我直接cp了,因为做下来没有问题,本着能跑就不动的原则,还是照做
文件替换压缩包里也有,同名的

现在在ARWpost文件夹下执行:
./compile
ls -ls *.exe
图(ARWpostexe成功) ARWpostexe成功.png
如果出现这样一个exe文件,则成功,这一步在我装的很多遍里没有出过问题

最后修改namelist.ARWpost
位置:\Build_WRF\ARWpost\namelist.ARWpost
这里有两个要改成自己文件夹名字的地方,注意改好之后要去掉后缀名然后替换原文件,压缩包里有

十二、数据准备
最开始装WRF时就是去官网下的和小流星一样时间的数据文件,所以说这里我就不改别的了,直接放上。

后续WRF运行教程参考小流星的文章:
小白跑WRF第七天,运行WRF案例_野生的气象小流星的博客-CSDN博客_wrf运行实例
最后说几点小流星没提但是说不定会用的东西:
1、 WRF运行错误日志文件在Build_WRF/WRF/test/em_real/rsl.error.0000,几线程运行就会有几个错误文件
2、 如果之前哪里的步骤出错,在运行real.exe的时候就会有五花八门的问题出来,到时候具体问题具体分析
3、 ARWpost后处理得到的数据可以用GRADS来分析,但是grads也是要在linux环境下跑的,论坛里有大佬做的win下运行的opengrads程序,跑的时候一定要先开Xming,目录是OpenGrADS2.1.a2\opengrads\Contents\Resources\Xming\Xming.exe。在win下win+r,输入cmd调出命令行,使用d:或其他字母,更改盘符,使用cd ProgramFiles\OpenGrADS2.1.a2\opengrads\Classic\bin或其他路径,定位到grads文件夹,然后输入grads运行grads即可。把生成的.ctl控制文件拖入命令行,使用d tc或set z 15等来显示地图或调整高度,结果展示在Xming内。

用到的附件:
1、静态地理数据
链接:https://pan.baidu.com/s/190ybfCHfKQPQGYj9V4oX0g
提取码:khaj
2、文中用到的大部分代码
代码(大部分).txt (5.51 KB, 下载次数: 22)

评分

参与人数 1金钱 +20 收起 理由
KIMO23 + 20 很给力!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2022-6-23 19:45:49 | 显示全部楼层
发了几次帖子了,论坛的发帖技巧还没整明白
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-6-30 16:30:19 | 显示全部楼层
很详细的教程,谢谢分享!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-7-19 09:26:42 | 显示全部楼层
属实佩服……
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2022-7-21 17:09:32 | 显示全部楼层
您好,安装mpich的时候,执行make,提示找不到makefile
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-7-24 14:01:10 | 显示全部楼层
302945988 发表于 2022-7-21 17:09
您好,安装mpich的时候,执行make,提示找不到makefile

是不是configure的原因,或者环境变量的问题?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-7-24 14:03:28 | 显示全部楼层
突然发现,好几个cd后面都没有空格。。
已改正
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-7-24 18:58:20 | 显示全部楼层
112f7 发表于 2022-7-24 14:01
是不是configure的原因,或者环境变量的问题?

谢谢作者回复,发现是fortran编译器版本太新了,安装mpich不支持,换成9点几的成功了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-7-29 11:50:57 | 显示全部楼层
五是不是没写全啊 grib2文件夹后续出现了 但没有创建啊
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-7-30 13:17:00 | 显示全部楼层
郑锦文 发表于 2022-7-29 11:50
五是不是没写全啊 grib2文件夹后续出现了 但没有创建啊

啥意思,没看懂,grib2软件包是解压缩时候自动生成的,libiaries下的grib2是安装grib2的时候自动创建的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表