[R-sig-Debian] So nearly there, but can't install rJava
Sebastian Meyer
@eb@meyer @end|ng |rom |@u@de
Tue Jan 22 16:22:33 CET 2019
Dear Chris,
Maybe you could try debugging the error
> *** Java interpreter doesn't work properly.
based on the underlying javareconf script.
Scrolling through
> less `R RHOME`/bin/javareconf
we can see that the script exits from
> echo "Java interpreter : $JAVA"
> jires=`$JAVA -classpath ${tools_classpath} getsp -test`
> if test "$jires" != "Test1234OK"; then
> echo "$jires"
> echo "~*** Java interpreter doesn't work properly.~"|${SED-sed} -e 'y/~/\n/' >&2
> exit 1
> fi
>From your output we can see that the Java interpreter ($JAVA) has been
found at /usr/lib/jvm/default-java/jre/bin/java, but the subsequent call
failed / didn't return the expected test result.
You could try to run that code manually and see what you get and where
the problem is:
> JAVA=`R CMD config JAVA`
> echo $JAVA
> ## /usr/lib/jvm/default-java/jre/bin/java
> R_SHARE_DIR=`R --slave -e 'cat(R.home("share"))'`
> echo $R_SHARE_DIR
> ## /usr/share/R/share
> tools_classpath=${R_SHARE_DIR}/java
> ls $tools_classpath
> ## getsp.class README
> $JAVA -classpath ${tools_classpath} getsp -test
> ## Test1234OK
NB: the variable R_SHARE_DIR is set in the `which R` script.
Good luck!
Sebastian
Am 22.01.19 um 14:45 schrieb Chris Evans:
> Thanks Dirk and Enrico,
>
> First clarification: I'm in this mess because I'm trying to run R 3.5.2 within Debian stable (9/"sretch") using the stretch-cran35 repository. That uses and provides r-api-35 but many of the packages depend upon r-api-3. As Johannes said a day or so back, the way around this is to use install.packages() in R to get the packages you want. That leads you into quite a lot of manual identification of dependencies and I worked through all the ones I hit until I was left with the only packages I use that I can't install sharing just one dependency: they all depend on rJava and I can't install from the r-cran-rjava package in the stretch-cran35 repository because that's one of the packages that depends on r-api-3.
>
> I thought that installing the default java and jdk Debian packages and using R CMD javareconf (as root) would set the right variables for install.packages("rJava") to work but no go. It fails with this information:
>
> checking Java support in R... present:
> interpreter : '/usr/lib/jvm/default-java/jre/bin/java'
> archiver : '/usr/lib/jvm/default-java/bin/jar'
> compiler : '/usr/lib/jvm/default-java/bin/javac'
> header prep.: '/usr/lib/jvm/default-java/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.
>
> ERROR: configuration failed for package ‘rJava’
> * removing ‘/usr/local/lib/R/site-library/rJava’
>
> I think the problem may be options setting where R/rJava will look for Java so I tried:
>
>> options(java.home="/usr/lib/jvm/java-8-openjdk-amd64/")
>> options("java.home")
> $java.home
> [1] "/usr/lib/jvm/java-8-openjdk-amd64/"
>
> but that doesn't change things.
>
> As far as I can see Debian is happy with the setup of java and javac:
>
> root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2# java -version
> openjdk version "1.8.0_181"
> OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
> OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
> root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2# javac -version
> javac 1.8.0_181
> root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2# update-alternatives --config javac
> There is only one alternative in link group javac (providing /usr/bin/javac): /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
> Nothing to configure.
> root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2# update-alternatives --config java
> There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
> Nothing to configure.
> root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2#
>
> And I have the full jdk not just the headless version I can see the header files:
>
> root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2# ls -lsart /usr/lib/jvm/java-8-openjdk-amd64/include/
> total 220
> 80 -rw-r--r-- 1 root root 78425 Oct 22 19:05 jvmti.h
> 8 -rw-r--r-- 1 root root 4771 Oct 22 19:05 jvmticmlr.h
> 76 -rw-r--r-- 1 root root 74698 Oct 22 19:05 jni.h
> 8 -rw-r--r-- 1 root root 7404 Oct 22 19:05 jdwpTransport.h
> 12 -rw-r--r-- 1 root root 9687 Oct 22 19:05 jawt.h
> 24 -rw-r--r-- 1 root root 21125 Oct 22 19:05 classfile_constants.h
> 4 drwxr-xr-x 2 root root 4096 Jan 22 08:09 linux
> 4 drwxr-xr-x 3 root root 4096 Jan 22 08:09 .
> 4 drwxr-xr-x 8 root root 4096 Jan 22 12:55 ..
> root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2#
>
> But I can't reconfigure R for Java:
>
> root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2# R CMD javareconf
> *** JAVA_HOME is not a valid path, ignoring
> Java interpreter : /usr/lib/jvm/default-java/jre/bin/java
> /usr/lib/R/bin/javareconf: 1: /usr/lib/R/bin/javareconf: /usr/lib/jvm/default-java/jre/bin/java: not found
>
>
> *** Java interpreter doesn't work properly.
>
> root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2#
>
> I hope this helps someone see something I can fix!
>
> Tangential question: surely I'm not rare in running R 3.5.2 on Stretch am I?
> Other tangential question: is there anything that can be done to fix the r-api-3/r-api-3.5 issue. You can see I'm no programmer or sysadmin but if there is anything I can do to help ...?
>
> TIA all,
>
> Chris
>
>
>
> ----- Original Message -----
>> From: "Dirk Eddelbuettel" <edd using debian.org>
>> To: "Chris Evans" <chrishold using psyctc.org>
>> Cc: "r-sig-debian" <r-sig-debian using r-project.org>
>> Sent: Tuesday, 22 January, 2019 12:21:39
>> Subject: Re: [R-sig-Debian] So nearly there, but can't install rJava
>
>> On 22 January 2019 at 10:14, Chris Evans wrote:
>> | root using DebianAdvent:/home/chris/Downloads/gmp-6.1.2# apt-get install
>> | openjdk-8-jdk-headless
>> | Reading package lists... Done
>> | Building dependency tree
>> | Reading state information... Done
>> | openjdk-8-jdk-headless is already the newest version (8u181-b13-2~deb9u1).
>> | openjdk-8-jdk-headless set to manually installed.
>> | 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
>> |
>> | Anyone else got any ideas?
>>
>> Install the full-blown jdk no just headless.
>>
>> In the sources for rJava I have as a build-depends
>>
>> openjdk-10-jdk
>>
>> which may of course be a virtual. At some point we had more than JDK
>> implementation. See what you can find there.
>>
>> Dirk
>>
>> --
>> http://dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org
>
More information about the R-SIG-Debian
mailing list