korrekte Installation und Konfiguration von openJDK und R.


7

Ich bin relativ neu in Ubuntu, daher kenne ich nicht viele Befehle, die wahrscheinlich für viele von euch zum Standard geworden sind. Ich versuche, R und damit die notwendigen Java-Abhängigkeiten für die Installation einzurichten, z. B. JGR, Rjava usw. Ich habe einige Anweisungen dazu gelesen, aber irgendwie muss ich etwas falsch gemacht haben. Hier ist der Zustand von R und Java:

R --version

R version 2.14.1 (2011-12-22)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-linux-gnu (64-bit)

java -version

java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.1)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)

R CMD javareconf

Java interpreter : /usr/bin/java
Java version     : 1.6.0_23
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: /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib/jni:/lib:/usr/lib
JNI linker flags : -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
JNI cpp flags    : 

Aber wenn ich versuche, 'JavaGD' in R zu installieren, was eine Abhängigkeit für JGR ist, bekomme ich:

...
checking Java support in R... present:
interpreter : '/usr/bin/java'
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.
...

Jede Hilfe wäre sehr dankbar. Vielen Dank!

Antworten:


6

Ich bin nicht mit R vertraut, aber basierend auf Ihrer Konsole scheint es, dass R ein JDK benötigt, während Sie eine JRE als Standard-JAVA-Ausgangsvariable haben. Ich würde Ihnen empfehlen, sicherzustellen, dass Sie das JDK installiert haben oder es installieren ( sudo apt-get install openjdk-6-jdk).
Stellen Sie außerdem sicher, dass Ihre Umgebungsvariable JAVA_HOME auf das JDK und nicht auf die JRE zeigt (Sie können in Ihrer Ausgabe sehen, dass derzeit der Java-Home-Pfad festgelegt ist /usr/lib/jvm/java-6-openjdk/jre.


openjdk-6-jdk ist installiert. Wenn ich den Pfad zu / usr / lib / jvm / java-6-openjdk setze, erhalte ich immer noch den gleichen Fehler
Marco

Yossile riet den Weg/usr/lib/jvm/java-6-openjdk/jre
Panther

irrelevante Antwort Die Importinformationen aus dem Protokoll sind die letzte Zeile: müssen von root ausgeführt werden (wie in anderen Antworten erwähnt)
Sylvain

5

Man sollte nicht blind installieren openjdk-6-jdk. Was mir geholfen hat, war die Änderung der Java-Version. Zum Glück gibt es dafür ein nettes Ubuntu-Tool:

sudo update-alternatives --config java

Dort können Sie sehen, welche Javas bereits auf dem System verfügbar sind, und den gewünschten einstellen. Und dann entweder openjdk-7-jdkoder openjdk-6-jdk(oder beides) installieren

und erst dann laufen

sudo R CMD javareconf

Weitere Informationen zu Java-Optionen finden Sie im Community-Wiki von Ubuntu

PS Für Leute, die von Google hierher kommen: Dieser Beitrag hilft unter anderem bei der Lösung von Problemen mit der rj-Installation in R mit der Fehlermeldung : R is not configured with full Java support. Please make sure an JDK is installed and run R CMD javareconf. Als ich das tat, hieß es : NOTE: Your JVM has a bogus java.library.path system property!. Also: Sie müssen nicht mit den Bibliothekspfaden von Java herumspielen! .


Dies funktionierte für mich unter Ubuntu 16.04, aber ich musste R mitsudo -i R
Imran Ali

2

R CMD javareconf als root

bedeutet, dass Sie sudo verwenden müssen, um Ihren Befehl auszugeben:

sudo R CMD javareconf

Sie werden nach Ihrem Passwort (Ihrem normalen Benutzerpasswort) gefragt.


Alle oben genannten Befehle wurden zu Beginn der Sitzung als Root-Benutzer über sudo -su ausgeführt. Entschuldigung, ich habe vergessen, das zu erwähnen.
Marco

0

Yossiles Antwort hat mir auf dem Weg geholfen, aber hier ist die für Neulinge freundliche Version, die sich auch auf die Antwort auf diese Frage stützt .

Was für mich funktioniert hat, war Folgendes: -

1) Öffnen Sie / etc / environment in Ihrem bevorzugten txteditor:

sudo gedit /etc/environment

2) Fügen Sie eine neue Zeile mit "JAVA_HOME" und dem Pfad zum Korrigieren des jr-Verzeichnisses hinzu. Im Fall von Java 8 lautet dies:

JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"

3) Geben Sie die aktualisierte Umgebung ein und überprüfen Sie die Variable:

source /etc/environment
echo $JAVA_HOME

4) Aktualisieren Sie die Java-R-Konfiguration wie folgt:

sudo R CMD javareconf

5) Installieren Sie RJava, XLConnect oder ein anderes Java-abhängiges R-Paket, das Sie suchen.


0

Ja, Update-Alternativen sind der bequemste Verknüpfungsmechanismus , um verschiedene JVM-Versionen zu verwalten - selbst von verschiedenen Anbietern wie Oracle / OpenJDK. Ich bin offen für Korrekturen, aber ich würde sagen, man braucht ein JDK und nicht nur eine JVM für das R-Setup.

Die Gliederung zur Vorbereitung der R JAVA-Konfiguration lautet:

  1. Stellen Sie sicher, dass sich die erforderliche JVM korrekt in befindet /usr/lib/jvm
  2. Richten Sie die Verknüpfung mit update-alternatives --installfür jeden von R benötigten JAVA-Befehl ein
  3. Verwenden Sie update-alternatives --configurediese Option, um eine Standard-JVM auszuwählen
  4. Aktualisieren Sie die R-Konfiguration

Um sicherzustellen, dass sich das JDK bereits am richtigen Speicherort befindet, fragen Sie die Liste der installierten JVMs mit dem Befehl ab

ls /usr/lib/jvm

Wenn der Ordner kein JDK enthält, verschieben Sie den gesamten JVM-Ordner mit dem folgenden Befehl vom extrahierten tar.gz(Download) nach /usr/lib/jvm:

sudo mv <JDK folder> /usr/lib/jvm

Für die folgenden JAVA-Befehle benötigt R separate Terminaleinträge für Update-Alternativen:

  • Dolmetscher: '/ usr / bin / java'
  • Archivierer: '/ usr / bin / jar'
  • Compiler: '/ usr / bin / javac'
  • Header-Vorbereitung: '/ usr / bin / javah'

Die Einträge für jdk1.8.0_51lauten wie folgt:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_51/bin/java" 2

sudo update-alternatives --install "/usr/bin/jar" "jar"  "/usr/lib/jvm/jdk1.8.0_51/bin/jar" 2

sudo update-alternatives --install "/usr/bin/javac" "javac"  "/usr/lib/jvm/jdk1.8.0_51/bin/javac" 2

sudo update-alternatives --install "/usr/bin/javah" "javah"  "/usr/lib/jvm/jdk1.8.0_51/bin/javah" 2

NB. Die Ausgabe nach der Ausführung von update-alternatives --installfür JVM jdk1.8.0_51sollte ähnlich sein wie:

Update-Alternativen: Verwenden von /usr/lib/jvm/jdk1.8.0_51/bin/java, um / usr / bin / java (Java) im automatischen Modus bereitzustellen

um die gewünschte JVM als Standard auszuwählen

sudo update-alternatives --config java

Wenn nur eine einzelne JVM eingerichtet ist, wird die folgende Ausgabe im Terminal angezeigt

Es gibt nur eine Alternative in der Linkgruppe Java (Bereitstellung von / usr / bin / java): /usr/lib/jvm/jdk1.8.0_51/bin/java Nichts zu konfigurieren.

Alternativ muss die entsprechende Eintragsnummer für die gewünschte JVM ausgewählt werden

um zu überprüfen, ob die richtige JVM verknüpft ist

java --version

Aktualisieren Sie abschließend das R-Setup mit:

sudo R CMD javareconf

Beachten Sie, dass dieses Setup möglicherweise nicht funktioniert, wenn Sie versucht haben, Ihre JVM auf andere Weise "fest zu verdrahten"

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.