2011-08-20 223 views
16

我使用RAN 2.10從CRAN apt回購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,都無濟於事。有任何想法嗎?無法在Ubuntu 10.04上安裝rJava 0.9

這裏是發生了什麼事更完整的成績單:

$ 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’, ‘JavaGD’, ‘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, 'help()' for on-line help, 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, 'help()' for on-line help, 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 
> 
+2

它給了你幾次相同的建議。有沒有理由不聽它?在這裏,如果你錯過了它:「如果有疑問,請以root身份重新運行」R CMD javareconf「。」 –

+1

咦?我明確表示,我在原來的問題中這樣做了,而且它也在成績單中...... – Yang

+0

對不起。我所看到的是你引用了一個問題,然後在進行建議的修復之前進行安裝。 –

回答

17

大新,發佈後沒多久,我發現這裏的答案:

http://r-interface.blogspot.com/2012/04/install-r-jgr-and-deducer-in-ubuntu.html

雖然我已經安裝了Sun Java中,關鍵是運行update-java-alternatives在運行javareconf之前先切換到Sun Java:

sudo update-java-alternatives -s java-6-sun 
sudo R CMD javareconf 
+0

它應該全部在Debian/Ubuntu中使用,並且在Ubuntu中使用Java SDK在爲R和rJava包構建Java配置時進行配置。如果您決定切換到不同的Java後端,則必須進行重新配置。 –

0

這裏的另一種選擇:

運行在R之前,這樣做

export LD_LIBRARY_PATH=/usr/lib/jvm/java-1.6.0-openjdk/jre/lib/amd64/server 

(以上路徑,您的特定libjvm.so的替補位置,如果你有一個不同的配置)。爲了找到libjvm.so,你可以做

sudo updatedb && locate libjvm.so 
1

另外一個(相對明顯)警告:不要做我所做的和同時安裝的Java6和java7。這導致了一個衝突,我無法通過指定路徑和環境變量來「修復」。刪除並重新安裝java6導致成功安裝JGR。 (這ubuntu下精確,在蘋果的PowerBook G4)

0

DWright是right..an替代比每次啓動R是找到你的java路徑

sudo locate libjvm.so 

和IR添加到ldpaths時間,而不是將其導出

sudo gedit /etc/R/ldpaths 

i.e 
${JAVA_HOME=/usr/java/jdk1.7.0_07/jre}