From: "Sebastian Meyer" <seb.meyer at fau.de>
To: "r-sig-debian" <r-sig-debian at r-project.org>
Sent: Tuesday, 22 January, 2019 15:22:33
Subject: Re: [R-sig-Debian] So nearly there, but can't install rJava
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 at 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 at DebianAdvent:/home/chris/Downloads/gmp-6.1.2# javac -version
javac 1.8.0_181
root at 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 at 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 at 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 at 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 at DebianAdvent:/home/chris/Downloads/gmp-6.1.2#
But I can't reconfigure R for Java:
root at 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 at 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 at debian.org>
To: "Chris Evans" <chrishold at psyctc.org>
Cc: "r-sig-debian" <r-sig-debian at 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 at 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 at debian.org