我使用的R 2.13从CRAN apt repo的Ubuntu 10.04,我正在尝试安装Deducer,这需要JGR / rJava,但rJava拒绝构建/安装,抱怨无法构建一个JNI应用程序.我建议使用sudo R CMD javareconf,但这只会导致关于未设置的配置的不同错误.我发现了
R: rJava package install failing,所以我尝试了安装r-cran-rjava的建议(但是这是0.8和Deducer / JGR似乎坚持安装0.9)和我的$JAVA_HOME,所有这一切都无济于事.有任何想法吗?
这是一个更完整的诀窍:
$sudo aptitude install r-cran-rjava ... $R R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos,'help()' for on-line help,or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > install.packages(c('JGR','Deducer')) Installing package(s) into ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13’ (as ‘lib’ is unspecified) also installing the dependencies ‘rJava’,‘JavaGD’,‘iplots’ trying URL 'http://cran.cnr.Berkeley.edu/src/contrib/rJava_0.9-1.tar.gz' Content type 'application/x-gzip' length 527197 bytes (514 Kb) opened URL ================================================== downloaded 514 Kb trying URL 'http://cran.cnr.Berkeley.edu/src/contrib/JavaGD_0.5-4.tar.gz' Content type 'application/x-gzip' length 102242 bytes (99 Kb) opened URL ================================================== downloaded 99 Kb trying URL 'http://cran.cnr.Berkeley.edu/src/contrib/iplots_1.1-4.tar.gz' Content type 'application/x-gzip' length 330323 bytes (322 Kb) opened URL ================================================== downloaded 322 Kb trying URL 'http://cran.cnr.Berkeley.edu/src/contrib/JGR_1.7-7.tar.gz' Content type 'application/x-gzip' length 536564 bytes (523 Kb) opened URL ================================================== downloaded 523 Kb trying URL 'http://cran.cnr.Berkeley.edu/src/contrib/Deducer_0.4-4.tar.gz' Content type 'application/x-gzip' length 5325794 bytes (5.1 Mb) opened URL ================================================== downloaded 5.1 Mb * installing *source* package ‘rJava’ ... checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o c hecking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/wait.h that is POSIX.1 compatible... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for string.h... (cached) yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking for unistd.h... (cached) yes checking for an ANSI C-conforming const... yes checking whether time.h and sys/time.h may both be included... yes configure: checking whether gcc supports static inline... yes checking whether setjmp.h is POSIX.1 compatible... yes checking whether sigsetjmp is declared... yes checking whether siglongjmp is declared... yes checking Java support in R... present: interpreter : '/usr/bin/java' archiver : '/usr/bin/jar' compiler : '/usr/bin/javac' header prep.: '/usr/bin/javah' cpp flags : '-I/usr/lib/jvm/java-6-openjdk/jre/../include' java libs : '-L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server -L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64 -L/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib/jni -L/lib -L/usr/lib -ljvm' checking whether JNI programs can be compiled... configure: error: Cannot compile a simple JNI program. See config.log for details. Make sure you have Java Development Kit installed and correctly registered in R. If in doubt,re-run "R CMD javareconf" as root. ERROR: configuration Failed for package ‘rJava’ * removing ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13/rJava’ * installing *source* package ‘JavaGD’ ... checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/wait.h that is POSIX.1 compatible... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for string.h... (cached) yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking for unistd.h... (cached) yes checking for an ANSI C-conforming const... yes checking whether time.h and sys/time.h may both be included... yes checking for stdlib.h... (cached) yes checking for GNU libc compatible malloc... yes checking return type of signal handlers... void checking for memset... yes checking for mkdir... yes checking for rmdir... yes checking for select... yes checking for socket... yes checking Java support in R... present: interpreter : '/usr/bin/java' cpp flags : '-I/usr/lib/jvm/java-6-openjdk/jre/../include' java libs : '-L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server -L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64 -L/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib/jni -L/lib -L/usr/lib -ljvm' checking whether JNI programs can be compiled... configure: error: Cannot compile a simple JNI program. See config.log for details. ERROR: configuration Failed for package ‘JavaGD’ * removing ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13/JavaGD’ ERROR: dependency ‘rJava’ is not available for package ‘iplots’ * removing ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13/iplots’ ERROR: dependencies ‘rJava’,‘iplots’ are not available for package ‘JGR’ * removing ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13/JGR’ ERROR: dependencies ‘rJava’,‘JGR’ are not available for package ‘Deducer’ * removing ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13/Deducer’ The downloaded packages are in ‘/tmp/RtmpCSITmm/downloaded_packages’ Warning messages: 1: In install.packages(c("JGR","Deducer")) : installation of package 'rJava' had non-zero exit status 2: In install.packages(c("JGR","Deducer")) : installation of package 'JavaGD' had non-zero exit status 3: In install.packages(c("JGR","Deducer")) : installation of package 'iplots' had non-zero exit status 4: In install.packages(c("JGR","Deducer")) : installation of package 'JGR' had non-zero exit status 5: In install.packages(c("JGR","Deducer")) : installation of package 'Deducer' had non-zero exit status > R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos,or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > install.packages('rJava') Installing package(s) into ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13’ (as ‘lib’ is unspecified) trying URL 'http://cran.cnr.Berkeley.edu/src/contrib/rJava_0.9-1.tar.gz' Content type 'application/x-gzip' length 527197 bytes (514 Kb) opened URL ================================================== downloaded 514 Kb * installing *source* package ‘rJava’ ... checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/wait.h that is POSIX.1 compatible... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for string.h... (cached) yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking for unistd.h... (cached) yes checking for an ANSI C-conforming const... yes checking whether time.h and sys/time.h may both be included... yes configure: checking whether gcc supports static inline... yes checking whether setjmp.h is POSIX.1 compatible... yes checking whether sigsetjmp is declared... yes checking whether siglongjmp is declared... yes checking Java support in R... present: interpreter : '/usr/bin/java' archiver : '/usr/bin/jar' compiler : '/usr/bin/javac' header prep.: '/usr/bin/javah' cpp flags : '-I/usr/lib/jvm/java-6-openjdk/jre/../include' java libs : '-L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server -L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64 -L/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib/jni -L/lib -L/usr/lib -ljvm' checking whether JNI programs can be compiled... configure: error: Cannot compile a simple JNI program. See config.log for details. Make sure you have Java Development Kit installed and correctly registered in R. If in doubt,re-run "R CMD javareconf" as root. ERROR: configuration Failed for package ‘rJava’ * removing ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13/rJava’ The downloaded packages are in ‘/tmp/RtmpTk0ftk/downloaded_packages’ Warning message: In install.packages("rJava") : installation of package 'rJava' had non-zero exit status > $sudo R CMD javareconf Java interpreter : /usr/bin/java Java version : 1.6.0_20 Java home path : /usr/lib/jvm/java-6-openjdk/jre Java compiler : /usr/bin/javac Java headers gen.: /usr/bin/javah Java archive tool: /usr/bin/jar Java library path: $(JAVA_HOME)/lib/amd64/server:$(JAVA_HOME)/lib/amd64:$(JAVA_HOME)/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib/jni:/lib:/usr/lib JNI linker flags : -L$(JAVA_HOME)/lib/amd64/server -L$(JAVA_HOME)/lib/amd64 -L$(JAVA_HOME)/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib/jni -L/lib -L/usr/lib -ljvm JNI cpp flags : Updating Java configuration in /etc/R Done. $R R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos,or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > install.packages('rJava') Installing package(s) into ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13’ (as ‘lib’ is unspecified) trying URL 'http://cran.cnr.Berkeley.edu/src/contrib/rJava_0.9-1.tar.gz' Content type 'application/x-gzip' length 527197 bytes (514 Kb) opened URL ================================================== downloaded 514 Kb * installing *source* package ‘rJava’ ... checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes c hecking for sys/wait.h that is POSIX.1 compatible... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for string.h... (cached) yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking for unistd.h... (cached) yes checking for an ANSI C-conforming const... yes checking whether time.h and sys/time.h may both be included... yes configure: checking whether gcc supports static inline... yes checking whether setjmp.h is POSIX.1 compatible... yes checking whether sigsetjmp is declared... yes checking whether siglongjmp is declared... yes checking Java support in R... present: interpreter : '/usr/bin/java' archiver : '/usr/bin/jar' compiler : '/usr/bin/javac' header prep.: '/usr/bin/javah' cpp flags : '' java libs : '-L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server -L/usr/lib/jvm/java-6-openjdk/jre/lib/amd64 -L/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64 -L/usr/java/packages/lib/amd64 -L/usr/lib/jni -L/lib -L/usr/lib -ljvm' 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. ERROR: configuration Failed for package ‘rJava’ * removing ‘/home/yang/R/x86_64-pc-linux-gnu-library/2.13/rJava’ The downloaded packages are in ‘/tmp/RtmpsJBxfe/downloaded_packages’ Warning message: In install.packages("rJava") : installation of package 'rJava' had non-zero exit status >
Dah,发布后不久,我在这里找到答案:
http://r-interface.blogspot.com/2012/04/install-r-jgr-and-deducer-in-ubuntu.html
虽然我已经安装了Sun Java,但关键是运行update-java替代方案,以便在运行javareconf之前首先切换到Sun Java:
sudo update-java-alternatives -s java-6-sun sudo R CMD javareconf