今天在windows7系统下安装ubuntu系统,同时安装一些专业软件,其中在ubuntu下安装的NCL是比较费脑筋的一项工作,在此分享一下安装过程和可能遇到的问题。
一、序言
首先NCL的安装主要分为两个步骤,第一步是适合操作系统版本的NCL下载,第二步是NCL的安装,那么针对这两个步骤官网都有非常详细的介绍,分别是第一步下载(Download NCL binaries and/or source code)和第二步安装(Install NCL/NCAR Graphics from a precompiled binary),鉴于英文阅读的难度,下面我用中文详细的讲一下操作步骤和问题。
二、NCL下载
NCL下载官网的原文说明如下(直接粘贴原文):
- Go to www.earthsystemgrid.org
- Click on "NCL: NCAR Command Language" (bottom middle of page).
- Click on "NCL Version 6.3.0" or the version you're interested in.
- Click on whether you want an OPeNDAP binary, a non OPeNDAP binary, or source code. If you don't know what OPeNDAP is, then you probably don't need it.
- Click on "Download Options".
- Click on the name of the file you want to download, and it should automatically download to your machine.
具体翻译如下
- 访问网站www.earthsystemgrid.org
- 点击网站上的 "NCL: NCAR Command Language"(位置在主页下面的中部)
- 点击"NCL Version 6.3.0" 或者其他你感兴趣的版本
- 点击OPeNDAP binary、non OPeNDAP binary或者source code的其中一个,如果你并不知道OPeNDAP是什么的话,那你可能并不需要它(意思就是选择non OPeNDAP binary)
- 点击 "Download Options"
- 点击你想下载文件的名字,就会自动下载到你的机器上面了
值得关注的是步骤4和步骤6中要面临选择版本的问题。
第4步 OPeNDAP,个人意见是如果你和我一样不知道什么是OPeNDAP,那就选“not OPeNDAP-enabled”版本好了,或者去了解一下OPeNDAP的含义再做决定。
第9步 很关键,笔者此时遇到的选项如下:
仔细比较这几个选择,主要区别在于三点:
- 系统版本;
- gcc版本(gcc是一套由GNU开发的编程语言编译器,支持多种语言,详见维基百科-gcc词条,没兴趣了解也没关系);
- 处理器类型(即i686,x86_64,64bit等选项)。
前面给出的链接包含了如何了解自己系统版本和gcc版本的提示,即输入以下三条命令:
uname -m
cat /etc/issue
gcc –-version
如下图所示,之后所有的终端指令也都是在这个命令框里输入,搜索terminal即可找到
分别能够获取自己系统的处理器类型(笔者为x86_64),系统版本(笔者为Ubuntu14.04)以及gcc版本(14.04附带版本为4.8.4)。第一点没问题,第二点NCL官方也有说明:
If your flavor of Linux or “bitness” doesn’t match, then you can
usually use one of the other ones. For example, if you have a CentOS
or Fedora system, then try a RedHat binary. If you have a Ubuntu
system, try a Debian binary.
即对于Ubuntu,应当选择Debian版本。问题是,14.0.4自带的gcc版本为4.8,而这里最大只有472,且官网有如下要求:
If your version of gcc doesn’t match any in the list, then use a
version of gcc that is lower or just slightly higher (for example, if
you have gcc 4.4.6, you can probably use a gcc 4.4.5 binary).
含义就是说ubuntu的gcc版本要比下载的NCL要求的低或者高一点,也就是说我的电脑版本是4.8大于472(也就是4.7.2),这样安装了可能有问题,虽然没有试过在高版本gcc下使用NCL到底会不会出现问题,但保险起见,我们最好还是将系统的gcc版本从4.8降至4.7。笔者在这个问题上耗费了半天时间,查阅到了很多复杂的方法都不顺利且不明所以,最后发现可以通过一个简便的方法安装低版本的gcc并将其更改为系统默认的版本(需要计算机联网)。
解决方法如下
1、在ubuntu终端中输入:
sudo apt-get install gcc-4.7
sudo命令表示需要特殊权限,在输入后可能系统要求输入用户密码,其实就是安装Ubuntu时设定的密码,亦即开机密码。输入密码时屏幕没有反应,不用管它,输完敲回车便可。在此之后如果发生权限问题,应该都可以在命令前加上sudo再试试。此时计算机开始在服务器源中下载4.7版本的gcc。下载完毕后,到gcc目录下会发现多了gcc-4.7的相关文件夹(输入gcc -v可查看gcc的目录位置)。
如果遇到了
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
现在没有可用的软件包 gcc-4.7,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
E: 软件包 gcc-4.7 还没有可供安装的候选者
这样的错误的话,
解决方法: 在你的软件源中添加源:
sudo gedit /etc/apt/source.list
添加:deb http://cz.archive.ubuntu.com/ubuntu lucid main
保存退出,再执行一遍gcc-4.7安装语句就可以安装了,参考自sudo apt-get install E: 软件包 * 还没有可供安装的候选者,
2、接下来添加gcc的配置管理,再选择默认的gcc版本:
sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.7 50
sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40
sudo update-alternatives –config gcc
第一行后面的50表示优先级,数字越大,则对应版本在第二行输入后出来的结果中排位越靠前。输入第三行之后,出来几个选项,就会发现我们现在默认使用的就是gcc-4.7了。
以上工作都完成后,gcc降级工作应该就结束了,准备工作也已完成,此时输入gcc –-version,出来的结果是4.7.3。
3、最后我们下载 ncl_ncarg-6.3.0.Linux_Debian7.8_x86_64_nodap_gcc472.tar.gz这个版本就ok了,完全符合要求
三、NCL安装
这里基本按照前文给出的NCL官网指导来做。
1、终端中输入:
mkdir /usr/local/ncl-6.3.0
表示在/usr/local/目录下新建一个名为ncl-6.3.0的文件夹。ncl压缩包(这里指ncl_ncarg-6.3.0.Linux_Debian7.8_x86_64_nodap_gcc472.tar.gz)拷贝入该文件夹中。注意,usr文件夹为只读,因此在图形界面上不好操作,需要在终端中进行,例如将压缩包从home文件夹(我放在了home中,如果在其他文件夹要修改路径)中移动到/usr/local/ncl-6.1.2文件夹中,可输入:
mv /home/ncl_ncarg-6.3.0.Linux_Debian7.8_x86_64_nodap_gcc472.tar.gz /usr/local/ncl-6.3.0
接着输入:
cd /usr/local/ncl-6.3.0
表示进入该文件夹。解压刚剪切到该目录中的压缩包:
tar -zxvf ncl_ncarg-6.3.0.Linux_Debian7.8_x86_64_nodap_gcc472.tar.gz
接下来,是官网声称“Must”的一步:设置环境变量。输入“cd”回到根目录,再输入“ls -a”,查看给出的隐藏文件列表中以“.”开头的文件,并按如下分类酌情处理:
From tcsh/csh (the file might be “.cshrc” or “.tcshrc”):
setenv NCARG_ROOT /usr/local/ncl-6.1.2
setenv PATH $NCARG_ROOT/bin:$PATH
From bash or ksh (the file might be “.bash_profile” or “.bashrc” or “.bash_profile”):
export NCARG_ROOT=/usr/local/ncl-6.1.2
export PATH=$NCARG_ROOT/bin:$PATH
From sh (the file might be “.bash_profile” or “.bashrc” or “.bash_profile”):
NCARG_ROOT=/usr/local/ncl-6.1.2
PATH=$NCARG_ROOT/bin:$PATH
export NCARG_ROOT
export PATH
笔者在列表中找到了“.bashrc”,因此适用第二种情况。注意,官网没有讲清楚的是,在终端输入这两句命令是没用的,重启后再用NCL会提示“Command not found”。我们要把这两句写入.bashrc文件中。因此我们要做的是输入:
gedit ~/.bashrc
即在gedit(也可以使用vi)编辑器下将这两句命令,也就是
export NCARG_ROOT=/usr/local/ncl-6.1.2
export PATH=$NCARG_ROOT/bin:$PATH
加入到.bashrc文件中,在文件末尾加入。
接下来要使环境变量生效,还需要在ubuntu终端执行:
source .bashrc
此时NCL安装完毕,大功即将告成。官方提供了一个检验NCL是否安装正确的方法,即输入:
ng4ex gsun01n -clean
但这时仍可能报错,提示缺少csh,还要再安装csh(仍要联网):
sudo apt-get install csh
完成!再输入ng4ex命令,画出图形,如下图,点击鼠标的话几个图形陆续演示,说明安装成功。
注:因为Ncl版本不同,本人在最后遇到ncl: error while loading shared libraries: libgfortran.so.3: cannot open shared object file: No such file or directory错误,该错误的意思是缺少libgfortran3的安装.
只要在最后输入
sudo apt-get install libgfortran3
即可。
参考文章:Ubuntu12.04下安装NCL6.1.2过程(转)