arch下安装matlab错误小记

最近由ubuntu转arch了,两个之间的差异还是不小的,KDE与unity操作差异以前pacman的包管理模式都让我觉得有点力不从心了。下面就记录一下arch linux下安装matlab 2014b过程中出现的问题吧。

UPDATE TIME: 2017/07/28

一、缺少libncurses.so.51

在完成matlab安装之后,启动matlab,终端打印错误:

Error while loading shared libraries: libncurses.so.5

显然,这是由于缺少libncurses.so.5造成的,而libncurses.so在arch中已经升至6.x的版本,所以想要5.x的版本,就需要安装包。官方源中已不在提供5.x的包的安装,需要使用aur的源手动编译安装:

$ yaourt -S ncurses5-compat-libs

二、无法启动驱动i965_dri.so2

在matlab开启启动的时候会报这样的错误:

libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  155 (GLX)
Minor opcode of failed request:  3 (X_GLXCreateContext)
Value in failed request:  0x0
Serial number of failed request:  40
Current serial number in output stream:  43
MATLAB is selecting SOFTWARE OPENGL rendering.

据说这种错误是MATLAB自带的libstdc++库和系统自身的库不兼容,所以需要手动替换一下其中libstdc++.so.6这个链接:

$ sudo ln -sf /usr/lib/libstdc++.so.6 /<your path>/MATLAB/R2014b/sys/os/glnxa64/libstdc++.so.6

注意,由于本人安装的是64位的版本,即glnx64而非glnx86,如果安装的是32位的版本,那么根据需要替换一下相应的链接即可。

三、打开系统文档不完整3

在matlab中使用doc命令打开文档会报错,而且打开的文档不完整,内部元素缺失。报错内容如下:

Exception in thread "XPCOMMessageLoop" java.lang.UnsatisfiedLinkError: /opt/MATLAB/R2014b/sys/jxbrowser/glnxa64/xulrunner/xulrunner-linux-64/libxul.so: /usr/lib/libharfbuzz.so.0: undefined symbol: FT_Get_Var_Blend_Coordinates
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary1(Unknown Source)
        at java.lang.ClassLoader.loadLibrary0(Unknown Source)
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.c(Unknown Source)
        at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.a(Unknown Source)
        at com.teamdev.jxbrowser.gecko.xpcom.MozillaToolkit.initialize(Unknown Source)
        at com.teamdev.jxbrowser.gecko.xpcom.AppShellXPCOMThread$b.run(Unknown Source)

这个arch近期才出现的情况(2017年1月份),原因是:harfbuzz所依赖的freetype2与之前的兼容性存在问题。也就是说,必须要同步更新harfbuzz(1.4以上)和freetype2(2.7+)才不会出现错误。对于系统来说,由于两者是同步更新的,自然是不会出现错误(当然,除非你安装了第三方包,如freetype2-inifinality),而由于matlab自带了freetype2.so,所以自然没有办法更新。

解决问题自然是很简单的:

解决方案一:

只需要回退harfbuzz的版本即可。根据v2ex网友的说法和本人实验, harfbuzz-1.3.4是能够较好的兼容的。不过考虑到arch不保存旧版本的harfbuzz,所以在此处提供harfbuzz-1.3.4-1-x86_64.pkg.tar.xz下载地址,然后安装即可:

sudo pacman -U /<path>/harfbuzz-1.3.4-1-x86_64.pkg.tar.xz

当然,为了保证pacman主动升级,还需要在/etc/pacman.conf设置软件包忽略升级。

解决方案二:(推荐)

将matlab自带的freetype2.so替换成系统自带的即可4:

$ sudo ln -sf /usr/lib/libfreetyp2.so.6 /<your path>/MATLAB/MATLAB/R2014b/bin/glnxa64/libfreetype.so.6

四、字体显示难看

matlab由于图形界面部分采用jvm,所以字体部分如果没有做好配置的话,那么就会非常难看,如英文显示有锯齿,中文字边缘显示不清,整体非常糟糕。这个时候需要开启jvm的反锯齿设置:

$ export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=gasp'

其中gasp也可改为lcd,显示效果可自行比较。如果想要永久生效,或许需要将其放到~/.bashrc中,或者专为matlab写一个启动方式。

五、部分字体无法显示

最近arch+kde5下的matlab 2014b出现了部分字体无法显示的问题,效果非常糟糕,基本等于没有办法使用界用了,根据研究发现,原来是jvm的锅。将matlab的jvm7改为系统的jvm8即可:

$ export J2D_D3D=false
$ export MATLAB_JAVA=/usr/lib/jvm/java-8-openjdk/jre

然后在当前命令行启动一下matlab试试效果。

Reference

此条目发表在LINUX, 软件安装分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。