首页 > 代码库 > 在64位ubuntu上安装alienbrain客户端

在64位ubuntu上安装alienbrain客户端

一、首先从Alienbrain_EN_10.5.zip安装包(网上可搜索下载)里提取出linux版安装文件:Installations/Clients/Linux/NoVM/install.bin并chmod+x使之可执行

二、如果直接运行,可能会出现大把问题,逐步解决如下:

1、首先是报libc.so.6找不到:strings: ‘/lib/libc.so.6‘: No such file。这里只要做个链接:/lib/libc.so.6 -> /lib/x86_64-linux-gnu/libc.so.6

2、然后报当前java不支持32位程序:This Java instance does not support a 32-bit JVM。这是典型的64位ubuntu问题,用apt装的openjdk都是64位的。于是去java网站下载一个i586的版本,解压后,用update-alternatives来修改当前默认java:

dyj@dyj-VirtualBox:/usr/lib/jvm$ sudo tar zxvf /media/sf_hh/Downloads/jre-7u55-linux-i586.tar.gz

dyj@dyj-VirtualBox:/usr/lib/jvm$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.7.0_55/bin/java 2000

3、切换之后再执行java,报错: 

dyj@dyj-VirtualBox:~$ /usr/lib/jvm/jre1.7.0_55/bin/java
bash: /usr/lib/jvm/jre1.7.0_55/bin/java: 没有那个文件或目录

这个也是典型的64位ubuntu问题,需要安装32位库,但从13.10开始安装方式变了不能再直接用apt-get install ia32来一次性安装,需要以指定:i386后缀的方式一一安装每个包。一般安装这些也就够了:

sudo apt-get install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386

4、现在执行install.bin,又报找不到awt错:java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit。网上搜索这个错误大部分给出的答案都是增加一个-Djava.awt.headless=true的参数来执行java,但那不是我们需要的,因为这里本来就是要显示awt安装界面。实际上这是因为java的awt用到的本地库也没有32位版本,只需要逐一安装即可。先用ldd查看awt的依赖:

dyj@dyj-VirtualBox:~$ ldd /usr/lib/jvm/jre1.7.0_55/lib/i386/xawt/libmawt.so
linux-gate.so.1 => (0xf7775000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf76f5000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf76af000)
libawt.so => /usr/lib/jvm/jre1.7.0_55/lib/i386/xawt/../libawt.so (0xf75fd000)
libXext.so.6 => not found
libX11.so.6 => not found
libXrender.so.1 => not found
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf75f8000)
libXtst.so.6 => not found
libXi.so.6 => not found
libjava.so => /usr/lib/jvm/jre1.7.0_55/lib/i386/xawt/../libjava.so (0xf75d3000)
libjvm.so => not found
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7424000)
/lib/ld-linux.so.2 (0xf7776000)
libjvm.so => not found
libjvm.so => not found
libverify.so => /usr/lib/jvm/jre1.7.0_55/lib/i386/xawt/../libverify.so (0xf7417000)
libjvm.so => not found

缺的这一堆libX的库,也没细究各有什么用,只要安装两个包:libqt,libxtst即可。

附带记一下,要给任意java程序设定参数,可以这种形式:export _JAVA_OPTIONS=-Djava.awt.headless=true

5、再次执行install.bin,终于一路顺利了,弹出了installanywhere风格的界面,跟mac/windows上果然差不多。

6、装完后,会在~/下创建一个runalienbrain链接,运行即可。但是有的时候又会报这个错:

Stack Trace:
java.lang.IllegalArgumentException: Malformed \uxxxx encoding.

这多半是因为PS1环境变量里写了\u(用户名),而alienbrain在执行前会先把所有环境变量导出生成一个文件,在加载这文件时遇到\u,与java里unicode字符串的表示法巧合冲突了。解决办法就是先unset PS1再运行即可,反正只是影响当前terminal。