爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 58251|回复: 95

CMAQ v5.0.2安装教程on Ubuntu 15.04 with GCC

  [复制链接]

新浪微博达人勋

发表于 2015-8-11 07:30:58 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lrxwisdom 于 2015-8-14 12:47 编辑

因为学校的服务器不给用我,只好在自己的机器上安装CMAQv5.0.2。期间各种折腾,现在终于弄完成了,现在把安装过程记录下来分享给大家。
  • ·      Ubuntu安装:
之前试过RedhatCentOS,觉得如果是在自己的机器上安装还是Ubuntu比较好用,友好的界面,流畅的过度动画,完善的包管理器,关键还有国人专门开发的版本,各种贴心啊。下载地址:
http://www.ubuntu.com/download/desktop
http://www.ubuntu.com/download/ubuntu-kylin
第一个是原始版本,我用的第二个kylin版,15.0464位。

如果是在虚拟机上安装没有什么问题。如果是直接安装,用UltraISO制作启动U盘会无法直接进入安装程序,没有关系,进入命令行之后输入live可以进入liveCD模式(类似winPE),然后点击桌面上的安装Ubuntu即可进入安装程序。

如果是安装双系统,需要在windows下安装分区助手,把动态磁盘转换成基本磁盘(如果之前用windows自带工具把磁盘分成四个区及以上的会自动变成动态磁盘),然后除c盘和系统保留的空间保持主分区之外,其余分区转换成逻辑分区。不这么做Ubuntu安装程序很可能无法正确识别分区。我就是在这里纠结很久。

特别提醒1:如果是安装双系统,选择安装类型一定要选择其他,否则会覆盖windows
特别提醒2:分配磁盘空间的时候很多教程说要弄4个挂载点,其实只用挂载“/”这一个挂载点就够了。
特别提醒3:一定要选择连网安装,不然后面software里面不能正常安装synaptic package manager

具体安装可以参考:http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html
安装完成后,获取root权限
打开终端(terminal)输入:
sudo passwd root
设定密码的时候光标不会动滴。
sudo gedit /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf
然后该输入密码,弹出一个文本编辑器。
补全以下命令(哪项没有就添加哪项):
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true
allow-guest=false


安装中文输入法(没这个查资料很不方便):
参考:http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html
先在语言支持里面把输入方式改成fcitx。重启系统,在右上的语言栏里面选配置,加入pinyinwb等输入法。

安装flash(跑模型的时候很无聊滴,看看视频也不错):
系统自动firefoxchromium两个浏览器,如果用系统自带的软件中心只能按照firefoxflash插件。可以访问下面网址:
https://get.adobe.com/cn/flashplayer/
选择APTfor Ubuntu 会下载一个安装包然后自动跳转到软件中心安装。
chromium浏览器有个问题,会每隔十秒左右自动刷新页面。我试网上关闭google即使搜索的方法也没用,我也下载了chrome的正式linux版也没用。但是在国外,chromechromium)的unblockyouku插件是不可取代的,怎么办?一个临时的解决办法是同时打开chromium和随便其他程序的一个窗口,打开视频之后然后鼠标点击那个程序窗口只要不再次点击chromium就不会刷新了。

安装synaptic package manager
打开软件中心softwarecenter,搜索synaptic直接点install安装就好。

安装其他应用,现在Windows很多软件都能找到在软件中心(kylin版有两个软件中心,一个原版ubuntu自带,一个专门针对国人优化的版本)找到Ubuntulinux)的对应版本。我常用软件里面有QQ里面找不到,可以使用网页版或者使用(WineQQhttp://www.ubuntukylin.com/applications/showimg.php?id=23&)。


可以说不玩大型游戏,Ubuntu已经可以取代Windows系统了(其实Steam已经有linux版本了)
到此ubuntu的安装配置基本告一段落。

怕万一系统崩溃,恢复麻烦可以先备份一下系统。
需要先登录到root账号,如果只是在普通账号下使用su命令提示到root权限还是会出错。具体命令:
cd /
tar -cvpzf /media/root/BED4FFD0D4FF8943/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /
其中/media/root/BED4FFD0D4FF8943/backup.tgz是备份路径和备份名称。具体含义参考:http://os.51cto.com/art/201003/188486.htm

还原系统
光盘或者U盘启动进入liveCD模式
=======分割线======
sudo -i
进入root权限
fdisk -l
查看想恢复到的分区是哪一个,一般就是ld83的那个
格式化那个分区
mount /dev/sda*
*对应挂载分区的编号。
grub-install--root-directory=/mnt /dev/sda
显示没有No error reported则修复引导成功
下面还需要改一下挂载分区的uuid以便引导程序能改顺利识别
chroot /mnt
cd /
========[size=14.6666669845581px]分割线=======
分割线以内的可以跳过,修改下面命令把备份的系统还原到新磁盘下。
tar -xvpzf /media/sda7/backup.tgz -C /
转到还原磁盘目录
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
mkdir media

其中/media/sda7/backup.tgz是备份文件放置的路径。
打开文件管理器,在要恢复到的分区点击右键,点击properties,查看改分区的uuid
gedit /etc/fstab
gedit/boot/grub.cfg
利用geditreplace allctrl+h)把老uuid换成新的
·      
  • GCC编译器安装
首先如果有PGI编译器请参照如下链接安装各种库文件:
https://www.pgroup.com/resources/netcdf/netcdf43_pgi2014.htm
我就是因为学校不给PGI许可证才折腾到现在,之前试过intel的学生版编译器也不成功,最后才转投GCC
Ubuntu 15.04自带的编译器是GCCv4.9.2,但是我必须先把它降级成4.6版。
根据这个帖子4.7以上的版本编译ioapi会出现Error: 'runspec' of module 'm3utilio', importedat。。。
里面提到的解决方法我试了,貌似没用。如果哪位大神成功解决请留言,一定向你请教。
参考:http://blog.csdn.net/astrotycoon/article/details/8069621
这里有个trick,那就是Ubuntu默认只有gccg++,而没有gfortran降级之前还需要安装gfortran4.9.2版。
安装gfortran4.9.2版和gcc4.6命令如下:
sudo apt-get install gfortran gfortran-multilib gcc-4.6gcc-4.6-multilib g++-4.6 g++-4.6-multilib gfortran -4.6 gfortran -4.6-multilib
然后用下面几个命令改变4.64.9版本的优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 40
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-4.6 50
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-4.9 40
然后使用下面命令看gcc各版本的优先顺序
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
sudo update-alternatives --config gfortran
然后使用下面命令查看当前编译器版本
gcc --version
g++ --version
gfortran --version
确认当前gccg++gfortran都是4.6版本。

  • ·      库文件的安装
CMAQ的官方说明文档里面说只需要NETCDFIOAPI两个库,如果需要多核并行再加一个mpichopenmpi也可以,这里只介绍mpich),但其实需要还zlibHDF5NETCDF也在4.2及以后版本几个语言版本分开了,很多教程里面说只用装c库和fortran库,但其实c++库也需要安装。
Netcdf  cfortran其实可以独立安装,但是因为要安装c++zlibhdf5必须也安装。
另外需要couple的话还需要安装pvm3,这在ioapiCMAQ配置里面需要加入pvm3的路径,但是我没用到pvm3,所以就不介绍了,需要的同学可以自行加入。

注意:如果复制的命令无法运行请检查是不是有空格或者“--”被系统吞掉了
安装zlib
wget是下载命令,如果下载地址不能用请自行下载相关安装压缩包。
sudo make如果不想每次都输入sudo可以先su提升到管理员权限。
我的安装压缩包都放在/home/leo/CMAQ_libs下面,大家可以安装需要改变存放路径。
--prefix前面“-“是两个,复制粘贴的时候很可能被系统吞掉一个,需要注意
cd /home/leo/CMAQ_libs
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/netcdf
make
make check
sudo make install
cd ..
这里很多教程是把zlibHDF5NETCDF分别按照在三个不同的目录,但是本人亲测只有把三个安装在同一个目录下,安装netcdf时才不会提示找不到zlib
装在同一个目录下的方法,参考netcdfpython的安装https://code.google.com/p/netcdf4-python/wiki/UbuntuInstall

安装hdf5
wget https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.14/src/hdf5-1.8.14.tar.gz
tar xf hdf5-1.8.14.tar.gz
cd hdf5-1.8.14
./configure --prefix=/usr/local/netcdf --enable-shared --enable-hl --with-zlib=/usr/local/netcdf
make -j 4
make -j 4 check
sudo make -j 4 install
cd ..

如果只用单核makehdf5需要很长时间,这里 –j 4是使用多个核心make可以根据电脑配置改变核心数。


安装netcdf c
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.3.3.1.tar.gz
tar xf netcdf-4.3.3.1.tar.gz
cd netcdf-4.3.3.1
LDFLAGS=-L/usr/local/netcdf/lib CPPFLAGS=-I/usr/local/netcdf/include ./configure --enable-netcdf-4 --enable-dap --enable-shared --prefix=/usr/local/netcdf
make
make check
sudo make install
cd ..
这里--enable-netcdf-4 --enable-dap这里很多教程是选择disable掉来解决找不到zlib的问题,但是安装c++库的时候会提示netcdf-4必须enable,所以解决办法就是把zlibhdf5 netcdf安装到一个文件夹下面。
Netcdf make 不能加 –j 4,不然会出错,亲测!


安装netcdf c++
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-cxx-4.2.tar.gz
tar xf netcdf-cxx-4.2.tar.gz
cd netcdf-cxx-4.2
LDFLAGS=-L/usr/local/netcdf/lib CPPFLAGS=-I/usr/local/netcdf/include ./configure --enable-shared --prefix=/usr/local/netcdf
make
make check
sudo make install
cd ..
这里没有--enable-netcdf-4 --enable-dap


安装netcdf fortran
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-fortran-4.4.2.tar.gz
tar xf netcdf-fortran-4.4.2.tar.gz
cd netcdf-fortran-4.4.2
LDFLAGS=-L/usr/local/netcdf/lib CPPFLAGS=-I/usr/local/netcdf/include ./configure --enable-shared --prefix=/usr/local/netcdf
make
make check
sudo make install
cd ..
这里还是没有--enable-netcdf-4 --enable-dap
另外我下载的时候netcdf-cxx-4.2.tar.gz的名字会莫名其妙的变成4.4.2.tar.gz。大家注意一下。



安装mpich
wget http://www.mpich.org/static/downloads/3.1.4/mpich-3.1.4.tar.gz
tar xf mpich-3.1.4.tar.gz
cd mpich-3.1.4
./configure --prefix=/usr/local/mpich
make -j 4
make -j 4 check
sudo make  -j 4 install
cd ..
这里make也需要很长时间,make -j 4加速能不能用我没有试过,大家自行尝试吧。
更新:后来试了一边,测试是通过的
更新:这里如果不加--prefix=/usr/local/mpich 就不用设置专门为mpich设置环境变量,但是CMAQ要求ln或者cp mpich安装目录,所以必须加。不想设环境变量可以安装两次,一次加--prefix=/usr/local/mpich 一次不加--prefix=/usr/local/mpich

设置环境变量
gedit ~/.bashrc
在最后加入
#for netcdf
export NETCDF=/usr/local/netcdf
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
#for mpich
export PATH=/usr/local/mpich/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/mpich/lib:${LD_LIBRARY_PATH}
export MANPATH=/usr/local/mpich/share/man:${MANPATH}
保存退出退出
source ~/.bashrc
不得不说ubuntu这个gedit的文本编辑器还是很赞的,习惯使用vi的同学注意ubuntuvi很奇怪,CentosRedhatvi命令好多用不了。我反正彻底放弃在ubuntu下面使用vi了。

使用下面两个命令看看是否安装成功
which ncdump
which mpif90
如果返回安装路径说明安装成功
很多教程说要设置zlibhdf5的环境变量,对于CMAQ真的不用。


ioapi安装
ioapi安装可以是最纠结的,我耗费的很长时间,试了各种教程,各种版本intelgcc的编译器。
最后可以确定的是网上直接下载的ioapi-3.1.tar.gz如果按照教程在makeconfigure这一步肯定会报错。使用gcc4.7版本以上make步骤会报错。使用wget命令下载也会出错。(还让不让人活了!!)
官网下载地址
https://www.cmascenter.org/ioapi/download/ioapi-3.1.tar.gz
最后在如下网页找到解决办法:
https://gcc.gnu.org/wiki/GfortranBuild#ioapi
这个网页的最后提供了一个脚本,可以自动完成ioapi安装,但是脚本里面的下载链接是失效的,需要手动修改,里面的安装目录和NETCDF的路径也需要手动修改。如果不想修改可以使用我修改过的脚本,在附件里下载。
ioapi31.install (3.72 KB, 下载次数: 292)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-8-22 22:32:37 | 显示全部楼层
楼主太牛了,请问下,netcdf和ioapi是不是必须用ifort编译器编译呢?如果只用gcc编译可以吗?另外,这两个库编译有没有先后顺序?谢谢了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-8-28 10:10:09 | 显示全部楼层
rongli1015 发表于 2015-8-22 22:32
楼主太牛了,请问下,netcdf和ioapi是不是必须用ifort编译器编译呢?如果只用gcc编译可以吗?另外,这两个 ...

随便用什么编译器都可以,只是所有的文件一定要用同一种编译器编译。netcdf在前ioapi在后
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-8-28 10:10:59 | 显示全部楼层
谢谢,学习了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-9-12 23:48:55 | 显示全部楼层
谢谢楼主分享!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-9-15 08:55:35 | 显示全部楼层
正在头疼呢,感谢楼主分享!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-9-17 16:21:01 | 显示全部楼层
楼主你好,想请教一下,我在sudo ./ioapi31.install后出现错误了,还望帮忙解答一下,谢谢!
  1. cd /usr/local/ioapi_3.1; mkdir -p /usr/local/ioapi_3.1/Linux2_x86_64gfort
  2. mkdir -p /usr/local/ioapi_3.1/ioapi/fixed_src
  3. -e $ popd > /dev/null
  4. ./ioapi31.install: 1: eval: popd: not found
  5. -e $ pushd /usr/local/ioapi_3.1/Linux2_x86_64gfort > /dev/null
  6. ./ioapi31.install: 1: eval: pushd: not found
  7. -e $ cp /usr/local/netcdf/lib/libnetcdf* ./
  8. -e $ popd > /dev/null
  9. ./ioapi31.install: 1: eval: popd: not found
  10. -e $ pushd /usr/local/ioapi_3.1 > /dev/null
  11. ./ioapi31.install: 1: eval: pushd: not found
  12. -e $ sed -si 's|LIBINST\s*=\s*$(INSTALL)/$(BIN)|LIBINST=$(INSTALL)/lib|' Makefile
  13. -e $ sed -si 's|BININST\s*=\s*$(INSTALL)/$(BIN)|BININST=$(INSTALL)/bin|' Makefile
  14. -e $ sed -si 's|CPLMODE\s*=\s*cpl|CPLMODE=nocpl|' Makefile
  15. -e $ sed -si 's|IOAPIDEFS\s*=\s*-DIOAPICPL|IOAPIDEFS=|' Makefile
  16. -e $ sed -si 's|PVMINCL\s*=\s*$(PVM_ROOT)/conf/$(PVM_ARCH).def|PVMINCL=/dev/null|' Makefile
  17. -e $ echo -e 'nocpl:  dirs fix
  18.         (cd $(IODIR)   ; make -f Makefile.nocpl all)
  19.         (cd $(TOOLDIR) ; make -f Makefile.nocpl all)
  20. ' >> Makefile
  21. -e $ make configure
  22. (cd /usr/local/ioapi_3.1/ioapi   ;  sed -e 's|IOAPI_BASE|/usr/local/ioapi_3.1|' -e 's|LIBINSTALL|/usr/local/ioapi_3.1/lib|' -e 's|BININSTALL|/usr/local/ioapi_3.1/bin|' -e 's|IOAPI_DEFS||' -e 's|MAKEINCLUDE|include /usr/local/ioapi_3.1/ioapi/Makeinclude.Linux2_x86_64gfort|' -e 's|PVMINCLUDE|include  /dev/null|' < Makefile.nocpl.sed > Makefile.nocpl ; cp  Makefile.nocpl Makefile )
  23. /bin/sh: 1: cannot open Makefile.nocpl.sed: No such file
  24. cp: cannot stat `Makefile.nocpl': No such file or directory
  25. make: *** [configure] Error 1
  26. -e $ make nocpl
  27. (cd /usr/local/ioapi_3.1/ioapi   ; make fixed_src)
  28. make[1]: Entering directory `/usr/local/ioapi_3.1/ioapi'
  29. make[1]: Nothing to be done for `fixed_src'.
  30. make[1]: Leaving directory `/usr/local/ioapi_3.1/ioapi'
  31. (cd /usr/local/ioapi_3.1/ioapi   ; make -f Makefile.nocpl all)
  32. make[1]: Entering directory `/usr/local/ioapi_3.1/ioapi'
  33. make[1]: Makefile.nocpl: No such file or directory
  34. make[1]: *** No rule to make target `Makefile.nocpl'.  Stop.
  35. make[1]: Leaving directory `/usr/local/ioapi_3.1/ioapi'
  36. make: *** [nocpl] Error 2
  37. -e $ make install
  38. cd /usr/local/ioapi_3.1; mkdir -p /usr/local/ioapi_3.1/lib
  39. cd /usr/local/ioapi_3.1; mkdir -p /usr/local/ioapi_3.1/bin
  40. echo "Installing I/O API and M3TOOLS in /usr/local/ioapi_3.1/lib and /usr/local/ioapi_3.1/bin"
  41. Installing I/O API and M3TOOLS in /usr/local/ioapi_3.1/lib and /usr/local/ioapi_3.1/bin
  42. (cd /usr/local/ioapi_3.1/ioapi   ; make install)
  43. make[1]: Entering directory `/usr/local/ioapi_3.1/ioapi'
  44. make[1]: *** No rule to make target `install'.  Stop.
  45. make[1]: Leaving directory `/usr/local/ioapi_3.1/ioapi'
  46. make: *** [install] Error 2
复制代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-9-21 15:03:12 | 显示全部楼层
1009469821 发表于 2015-9-17 16:21
楼主你好,想请教一下,我在sudo ./ioapi31.install后出现错误了,还望帮忙解答一下,谢谢!

人工置顶下,求大神帮忙解答
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2015-9-21 22:55:21 | 显示全部楼层
人工帮顶
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2015-9-23 00:08:25 | 显示全部楼层
1009469821 发表于 2015-9-17 16:21
楼主你好,想请教一下,我在sudo ./ioapi31.install后出现错误了,还望帮忙解答一下,谢谢!

https://gcc.gnu.org/wiki/GfortranBuild#ioapi
你从这个这个原始页面复制代码,自己改下载、安装、netcdf的路径。
我在其他的机器上,用gfortran和pgi编译器都成功了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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