it-swarm.com.de

Verwendung des Befehls update-alternatives --config java

Ich installiere Apache Solr unter Linux Debian (Squeeze). Ich wurde angewiesen, Sun-Java jdk 1st zu installieren. Dann wird mir gesagt, dass ich den Befehl Sudo update-alternatives --config Java Verwenden soll, um sicherzustellen, dass eine bestimmte Java (Sun-Java)) die Standardlaufzeit ist.

There are 3 choices for the alternative Java (providing /usr/bin/Java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/Java-6-openjdk/jre/bin/Java   1061      auto mode
  1            /usr/bin/gij-4.4                           1044      manual mode
  2            /usr/lib/jvm/Java-6-openjdk/jre/bin/Java   1061      manual mode
  3            /usr/lib/jvm/Java-6-Sun/jre/bin/Java       63        manual mode

Press enter to keep the current choice[*], or type selection number:

Welche Nummer sollte ich auswählen, um Sun-Java als Standardlaufzeit zu verwenden? Was genau bedeuten der automatische und der manuelle Modus? Wenn ich oben 3 auswähle und den Befehl update-alternative ausführe, erhalte ich die gleiche Ausgabe wie oben. Wieder scheint sich nichts geändert zu haben, außer dass sich das * jetzt vor der 3 befindet, obwohl es immer noch den manuellen Modus anzeigt.

Gibt es eine Möglichkeit zu bestätigen, dass das, was ich getan habe, richtig ist?

55
user1680916

Sie werden eine große Änderung bei der Auswahl der Optionen bemerken, wenn Sie danach "Java-Version" eingeben. Wenn Sie also update-alternatives --config Java Ausführen und die Option 3 Auswählen, verwenden Sie die Sun-Implementierung .
Auch in Bezug auf auto vs manual mode Sollte eine Auswahl aus auto mode Per diese Seite entfernt werden.

Bei Verwendung der Option --config Werden in den Alternativen alle Auswahlmöglichkeiten für die Verknüpfungsgruppe aufgelistet, deren Vorname die Hauptverknüpfung ist. Anschließend werden Sie gefragt, welche Auswahl für die Linkgruppe verwendet werden soll. Sobald Sie eine Änderung vorgenommen haben, befindet sich die Linkgruppe nicht mehr in auto mode. Sie müssen die Option --auto Verwenden, um zum automatischen Status zurückzukehren.

Und ich glaube, auto mode Wird festgelegt, wenn Sie das erste/einzige JRE/JDK installieren.

38
Jordan Denison

update-alternatives ist in diesem Fall problematisch, da Sie gezwungen sind, alle Elemente abhängig vom JDK zu aktualisieren.

Für diesen speziellen Zweck ist das Paket Java-common enthält ein Tool namens update-Java-alternatives.

Es ist einfach zu benutzen. Listen Sie zunächst die auf Ihrem Computer verfügbaren JDK-Installationen auf:

[email protected]:~# update-Java-alternatives -l
Java-1.7.0-openjdk-AMD64 1071 /usr/lib/jvm/Java-1.7.0-openjdk-AMD64
Java-1.8.0-openjdk-AMD64 1069 /usr/lib/jvm/Java-1.8.0-openjdk-AMD64

Und dann nimm eins:

[email protected]:~# update-Java-alternatives -s Java-1.7.0-openjdk-AMD64
15
jopasserat

Angenommen, man hat ein JDK in /opt/Java/jdk1.8.0_144 Installiert, dann:

  1. Installieren Sie die Alternative für Javac

    $ Sudo update-alternatives --install /usr/bin/javac javac /opt/Java/jdk1.8.0_144/bin/javac 1
    
  2. Überprüfen/aktualisieren Sie die alternative Konfiguration:

    $ Sudo update-alternatives --config javac
    

Wenn es für javac nur eine einzige Alternative gibt, erhalten Sie eine entsprechende Meldung. Andernfalls wählen Sie die Option für das neue JDK aus.

Um zu überprüfen, ob alles korrekt eingerichtet ist, gehen Sie wie folgt vor:

$ which javac
/usr/bin/javac

$ ls -l /usr/bin/javac
lrwxrwxrwx 1 root root 23 Sep  4 17:10 /usr/bin/javac -> /etc/alternatives/javac

$ ls -l /etc/alternatives/javac
lrwxrwxrwx 1 root root 32 Sep  4 17:10 /etc/alternatives/javac -> /opt/Java/jdk1.8.0_144/bin/javac

Und schlussendlich

$ javac -version
javac 1.8.0_144

Wiederholen Sie diesen Vorgang nach Bedarf für Java, Keytool, Jar usw.

9

So installiere ich jdk

#!/bin/bash
cd /opt/
Sudo mkdir Java
Sudo tar -zxvf ~/Downloads/jdk-8u192-linux-x64.tar.gz
Sudo ln -s  jdk1.8.0_192 current
for file in /opt/Java/current/bin/*
do
   if [ -x $file ]
   then
      filename=`basename $file`
      Sudo update-alternatives --install /usr/bin/$filename $filename $file 20000
      Sudo update-alternatives --set $filename $file
      #echo $file $filename
   fi
done
7
user2733648

Es gibt viele andere Binärdateien, die verknüpft werden müssen, daher ist es meiner Meinung nach viel besser, etwas wie Sudo update-alternatives --all und die richtigen Alternativen für alles andere als Java und javac auswählen.

Schauen Sie sich https://wiki.debian.org/JavaPackage an. Am Ende dieser Seite wird eine andere Methode mit einem Befehl aus dem Java-common-Paket beschrieben

1
hinnarksen