在安装ChemmineOB等依赖rjava的软件时候需要先配置java环境。同时ChemmineOB还依赖于Openbabel。笔者在这里为大家记录如何配置这类环境。因为这类环境实在是很折腾人。依赖于底层软件的包安装起来就是这么费劲。
第一步:ubuntu(14.04)中更新源之后升级r-base。之后可以选择安装rstudio。
第二步:配置rjava。首先配置ubuntu的java环境:
打开终端,使用下面的命令:
- java -version
如果你看到像下面的输出,这就意味着你并没有安装过Java:
- The program ‘java’ can be found in the following packages:
- *default-jre
- * gcj-4.6-jre-headless
- * openjdk-6-jre-headless
- * gcj-4.5-jre-headless
- * openjdk-7-jre-headless
- Try: sudo apt-get install
根据需要选择安装。这里笔者安装过程如下:
- sudo add-apt-repository ppa:webupd8team/java
- sudo apt-get update
- sudo apt-get install oracle-java8-installer
- sudo apt-get install oracle-java8-set-default
第三步:确认java环境:
在启动终端并输入
- gedit /etc/profile
在末尾添加一下配置,保存并退出
- #set jdk environment
- export JAVA_HOME=/usr/lib/jvm/java-8-oracle
- export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
- export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
终端输入一下命令使配置生效
- source /etc/profile
最好在.bashrc里面也给出相同的配置。
第四步:安装rjava:
报错:
conftest.c:1:17: fatal error: jni.h: No such file or directory
compilation terminated.
make: *** [conftest.o] Error 1
Unable to compile a JNI program
checking Java support in R... present:
interpreter : '/usr/lib/jvm/jdk1.7.0_25/jre/bin/java'
archiver : '/usr/lib/jvm/jdk1.7.0_25/bin/jar'
compiler : '/usr/lib/jvm/jdk1.7.0_25/bin/javac'
header prep.: '/usr/lib/jvm/jdk1.7.0_25/bin/javah'
cpp flags : ''
java libs : ''
configure: error: One or more Java configuration variables are not set.
Make sure R is configured with full Java support (including JDK). Run
R CMD javareconf
as root to add Java support to R.
If you don't have root privileges, run
R CMD javareconf -e
to set all Java-related variables and then install rJava.
发现虽然经过source。但是java环境并没有通过R CMD javaeconf的配置。这时候应该重启电脑。
重启后正确的结果应该是输入R CMD javareconf 得到:
Java interpreter : /usr/lib/jvm/java-8-oracle/jre/bin/java
Java version : 1.8.0_121
Java home path : /usr/lib/jvm/java-8-oracle
Java compiler : /usr/lib/jvm/java-8-oracle/bin/javac
Java headers gen.: /usr/lib/jvm/java-8-oracle/bin/javah
Java archive tool: /usr/lib/jvm/java-8-oracle/bin/jar
JAVA_HOME : /usr/lib/jvm/java-8-oracle
Java library path: $(JAVA_HOME)/jre/lib/amd64/server
JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm
Updating Java configuration in /usr/lib/R
Done.
红色部分通过了就表示你rjava环境配置好了。这时候可以直接通过rstudio的命令:
install.packages('rjava')来安装rjava了。
第五步:安装openbabel。
这个openbabel提供了软件本身,gui版本,还有各类语言的扩展,比如python-openbabel。笔者在这里吃亏很严重。因为直接安装ChemmineOB等依赖openbabel的包是不可能行的。除非特殊情况的版本合适,配置默认。直接安装会提示找不到openbabel/generic.h的头文件。
首先我们尝试在软件中心安装openbabel软件本身。发现仍不能安装ChemmineOB。在ChemmineOB的官网description里面找到一些提示。其针对win和linux都有提示。
Compling with OpenBabel in a non-standard location
---------------------------------------------------
If the OpenBabel include and/or library files are not in one of the default
search paths (e.g., /usr/lib,/usr/include, /usr/local/lib,/usr/local/include), then you must set the
following environment variables before installing the ChemmineOB package:
OPEN_BABEL_INCDIR = path to header files
OPEN_BABEL_LIBDIR = path to shared (.so) library file
These values can also be set through command line switches to the configure scripts:
R CMD INSTALL --configure-args='--with-openbabel-include=... --with-openbabel-lib=...' ChemmineOB.tgz
where the '...' are replaced by the relevant paths.
因此尝试根据提示重新更改configure参数来安装。发现仍然失败,原因在于lib文件.so文件可以找到。但是with-openbabel-include还是不对。
这里的关键在于这个头文件是存在于dev包里面的。所以。。笔者建议安装synaptic package manager。在里面输入babel。找到libopenbabel-dev然后安装然后最终成功。
最终安装命令:
install.packages("~/Downloads/ChemmineOB_1.12.0.tar.gz", configure.args = c("--with-openbabel-include=/usr/include/openbabel-2.0", "--with-openbabel-lib=/usr/lib/libopenbabel.so"), repos = NULL, type = "source")
这里特别注意openbabel-2.0里面还有一层目录。这里多写一层也会出错。汗。。
请使用手机"扫一扫"x
你好,有个关于PHP网站的问题需要咨询你,麻烦添加下我381829616