折腾笔记:在itanium2服务器上安装gnuplot及octave的故事

在服务器上处理大数据,前一阶段一直把数据整理好了再传到本地用Matlab画图分析。最近希望更高效些,直接在服务器上可视化,于是开始折腾。此处记录折腾过程中的点滴经验,备忘并供参考。

  • step 1: 开启服务器的本地图形显示。

只要两边操作系统的ssh不是太老,这一步很简单

ssh -X user@host

  • step 2: 搜罗可用的画图程序

服务器上现成的只有 gnuplot和 IDL。自己一直没学IDL,因为Matlab用的挺好。现在有了学些IDL的理由了?于是在本地装上IDL,尝试画图:天哪,一个plot,plots之类的命令,后面竟然有N=inf多个的属性;不手动设好坐标轴甚至都可能看不到所画的内容?而且三维图不能交互旋转。试试iplot,结果窗口老死;服务器上的iplot响应也无敌慢。折腾一个下午又一晚上,还是算了吧。

gnuplot倒是个不错的东西,轻巧;4.0以上的版本中三维图也可以旋转,这正是我想要的。只是这东西似乎不适合用来编程,不能定义和处理数组?!试了半天只成功定义了一个x={1,2},结果一查文档,此乃复数x=1+2i而非数组也,faint。把数据预处理之后存入文件,然后用gnuplot直接把数据文件画出来倒很方便。

于是考虑C编程调用绘图库函数。搜罗了一些库比如pgplot,plplot,包括gnuplot,但画图之前都要有一堆初始化,太麻烦。

还有一个选择是脚本编程,利用python,slang,tcl之类的脚本语言编程并调用相应的画图库。只可惜我还不会。

  • step 3: 安装matlab

还是直接装个Matlab吧,刚好前一阵下载了最新的Matlab 2009 linux版。scp上传到服务器,因为是iso文件,所以尝试挂载:

mkdir disk
mount Matlab2009a-unix.iso disk -o loop

结果报错:权限不够。搜索一番之后确认:没有root权限,挂载之事是做不了的,即便挂载的是个光盘镜像。

不能挂载,便解压缩之:打开nautilus,右击iso文件,选择“解压缩到此处”(图形界面下的压缩管理器可以完成此事,不过命令行下如何解压iso,自己查了半天还是没找到)。然后安装,报错:不支持此系统。去mathworks官网上确认了一下:matlab当前是不支持ia64的。郁闷的ia64。

  • step 4: matlab替代程序

没有matlab,便退而求其次,选用开源版的替代品:octave和scilab。

scilab也没有ia64的binary下载;自己编译的话,看着34M的源码包加上一百多M的prerequirement(这东西似乎也是binary并且也没有ia64的),我退缩了。

octave小巧很多,源码10M,当然功能也要缩水不少。上传,编译,基本顺利。只是画图时会报警告:比如

 line 0: undefined variable: in

而且画出的三维图也不能转。估计是gnuplot的问题,因为octave和scilab画图时都是调用的gnuplot。服务器现有的gnuplot版本4.0,于是尝试升级。下载了gnuplot4.2源码,但很遗憾,配置时缺少X11的头文件,所以没有窗口支持(也就是不能在屏幕画图)。联系服务器管理员帮忙,结果被无视(可怜)。

  • step 5: gnuplot安装

自己还是不死心,去pbone下载了gnuplot4.3的rpm包。找不到ia64,只有32位的,但似乎32位程序也可以在ia64上面运行。但直接rpm安装是没有权限的,于是在本地把rpm解压缩(仍然在图形界面下右击,利用压缩管理器解压),然后上传。可以运行,但画图时报错:

Expected X11 driver: /usr/lib/gnuplot/4.3/gnuplot_x11
Exec failed: No such file or directory
似乎gnuplot在利用绝对路径来找gnuplot_x11,而自己是把相关文件都解压到了自定义的目录。

尝试用rpm安装:

rpm -ivhf gnuplot-4.3-1su103.i586.rpm --relocate /usr=/home/kambrain/opt --dbpath=/home/kambrain/rpmdb --nodeps

因为默认情况下该程序是装到/usr目录下的,但自己没有管理员权限装不了,所以用relocate选项装在自家目录下;没有root权限修改不了rpm的database,所以使用自定义的dbpath;为避免依赖关系问题,使用nodeps选项。

但还是报错: /usr/bin/gnuplot写不进去。

尝试替换根目录

rpm -ivhf gnuplot-4.3-1su103.i586.rpm --root /home/kambrain/opt --dbpath=/home/kambrain/rpmdb --nodeps

可以进行大部分安装,尽管最后还是有错误信息。切换到安装好的目录下,运行gnuplot,画图时报之前的错

Expected X11 driver: /usr/lib/gnuplot/4.3/gnuplot_x11
Exec failed: No such file or directory

还是路径问题。查找gnuplot的帮助文档,未找到设置gnuplot_x11路径的相关信息。

最后一招,考虑修改gnuplot的二进制文件,把其中的gnuplot_x11的路径都改成当前的路径。用ghex2打开gnuplot文件,查找/usr/lib/gnuplot,结果找到这样的字串:GNUPLOT_DRIVER_DIR

尝试 export GNUPLOT_DRIVER_DIR=.... (设成gnuplot_x11的目录)

然后运行gnuplot,画图,成功!设置了这个变量之后,直接解压的rpm文件也可以成功运行,不需要用rpm安装。

至于octave,它在画图时会调用默认的gnuplot(就是你在命令行直接输入gnuplot所运行的那个版本); 想让新装的gnuplot成为默认很简单:将它的路径加到PATH变量最前端。不如我的gnuplot文件(不是gnuplot目录)是/home/kambrain/opt/bin/gnuplot,那么

export PATH=/home/kambrain/opt/bin:$PATH

然后执行octave,便会调用 /home/kambrain/opt/bin/gnuplot;画图,不再报错了;三维图,也能转了。

把上面的export语句加到用户家目录下的.bash_profile中,以后每次登录都会自动export,就可以方便的使用自己的gnuplot和octave了。

 

 

 

 

评论

octave同matlab 提交者: kambrian

评论查看选项

选择您喜欢的显示评论的模式,并点击"保存设置"来激活您所做的改变。