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!

Marco
quelle

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.

yossile
quelle
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! .

Adam Ryczkowski
quelle
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.

Benutzer unbekannt
quelle
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.

emilBeBri
quelle
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"

TrevorL
quelle