101 votes

Comment utiliser la commande update-alternatives --config java

J'installe Apache Solr sur Linux Debian (Squeeze). On m'a demandé d'installer sun-java jdk en premier. On me dit ensuite que je dois utiliser la commande sudo update-alternatives --config java pour s'assurer qu'un java particulier (sun-java) est le runtime par défaut. Pourtant, lorsque je lance cette commande, j'obtiens :

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:

Alors quel numéro dois-je sélectionner pour avoir sun-java comme runtime par défaut ? De plus, que signifient exactement les modes automatique et manuel ? Si je sélectionne 3 ci-dessus et que j'exécute la commande update-alternative, je reçois le même résultat que ci-dessus. Là encore, rien ne semble avoir changé, sauf que l'astérisque (*) se trouve maintenant devant le 3, bien que le mode manuel soit toujours indiqué.

Existe-t-il un moyen de confirmer que ce que j'ai fait est correct ?

59voto

Jordan Denison Points 1282

Vous remarquerez un grand changement dans la sélection des options si vous tapez "java -version" après l'avoir fait. Ainsi, si vous exécutez update-alternatives --config java et sélectionnez l'option 3 vous utiliserez le Soleil mise en œuvre.
Par ailleurs, en ce qui concerne auto vs manual mode le fait de faire une sélection devrait la faire sortir de auto mode par cette page en train de battre :

Lorsque vous utilisez le --config les alternatives listeront toutes les choix pour le groupe de liens dont le nom donné est le lien principal. Vous serez alors invité à choisir les choix à utiliser pour le groupe de liens. groupe de liens. Une fois que vous avez effectué un changement, le groupe de liens ne sera plus dans la liste des liens principaux. auto mode . Vous devrez utiliser le --auto afin de retourner à l'état automatique.

Et je crois auto mode est défini lorsque vous installez le premier/seul JRE/JDK.

44voto

Richard Grimshaw Points 441

En supposant que l'on ait installé un JDK dans l'ordinateur de l'utilisateur. /opt/java/jdk1.8.0_144 alors :

  1. Installer l'alternative pour javac

    $ sudo update-alternatives --install /usr/bin/javac javac /opt/java/jdk1.8.0_144/bin/javac 1
  2. Vérifier / mettre à jour la configuration des alternatives :

    $ sudo update-alternatives --config javac

S'il n'y a qu'une seule alternative pour javac un message vous le dira, sinon sélectionnez l'option pour le nouveau JDK.

Pour vérifier que tout est correctement configuré alors :

$ 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

Et enfin

$ javac -version
javac 1.8.0_144

Répétez pour java, keytool, jar, etc. si nécessaire.

40voto

jopasserat Points 2839

update-alternatives est problématique dans ce cas car elle vous oblige à mettre à jour tous les éléments dépendant du JDK.

Dans ce but précis, le paquet java-common contient un outil appelé update-java-alternatives .

C'est simple à utiliser. Commencez par lister les installations JDK disponibles sur votre machine :

root@mylaptop:~# 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

Et ensuite en prendre un :

root@mylaptop:~# update-java-alternatives -s java-1.7.0-openjdk-amd64

23voto

user2733648 Points 191

Voici comment j'installe 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

12voto

Stephane Janicaud Points 2299

J'utilise Ubuntu 18.04 LTS. La plupart du temps, lorsque je modifie mon java je veux aussi utiliser la même javac version.
J'utilise update-alternatives de cette façon, en utilisant un java_home alternative au lieu de :

Installation

Installer chaque version de java dans /opt/java/<version> par exemple

~$ ll /opt/java/
total 24
drwxr-xr-x 6 root root 4096 jan. 22 21:14 ./
drwxr-xr-x 9 root root 4096 feb.  7 13:40 ../
drwxr-xr-x  8 stephanecodes stephanecodes 4096 jan.   8  2019 jdk-11.0.2/
drwxr-xr-x  7 stephanecodes stephanecodes 4096 dec.  15  2018 jdk1.8.0_201/

Configurer les alternatives

~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk-11.0.2/ 100
~$ sudo update-alternatives --install /opt/java/current java_home /opt/java/jdk1.8.0_201 200

Déclarer JAVA_HOME (Dans ce cas, j'utilise une initialisation globale script pour cela)

~$ sudo sh -c 'echo export JAVA_HOME=\"/opt/java/current\" >> environment.sh'

Déconnectez-vous ou redémarrez Ubuntu (cela rechargera /etc/profile.d/environment.sh )

Utilisation

Changer la version de java

Choisissez la version que vous voulez utiliser

~$ sudo update-alternatives --config java_home

There are 2 choices for the alternative java_home (providing /opt/java/current).

  Selection    Path                    Priority   Status
------------------------------------------------------------
  0            /opt/java/jdk-11.0.2     200       auto mode
  1            /opt/java/jdk-11.0.2     200       manual mode
* 2            /opt/java/jdk1.8.0_201   100       manual mode

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

Vérifier la version

~$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

~$ javac -version
javac 11.0.2

Conseil

Ajoutez la ligne suivante à ~/.bash_aliases fichier :

alias change-java-version="sudo update-alternatives --config java_home && java -version && javac -version"

Utilisez maintenant le change-java-version commande pour changer la version de java

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X