web-dev-qa-db-fra.com

Comment utiliser la commande update-alternatives --config java

J'installe Apache Solr sous Linux Debian (Squeeze). On m'a demandé d'installer Sun-Java jdk 1st. On me dit alors que je devrais utiliser la commande Sudo update-alternatives --config Java pour s'assurer qu'un Java (Sun-Java) = particulier est le moteur d'exécution par défaut. Pourtant, lorsque j'exécute cette commande, je reçois:

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 choisir pour avoir Sun-Java comme runtime par défaut? En outre, que signifient exactement les modes automatique et manuel? Si je sélectionne 3 ci-dessus et exécute la commande update-alternative, je reçois le même résultat que ci-dessus, rien ne semble avoir changé, sauf que le * est maintenant devant le 3, même s'il lit toujours le mode manuel.

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

55
user1680916

Vous remarquerez un grand changement lors de la sélection des options si vous saisissez "Java -version" après cela. Donc, si vous exécutez update-alternatives --config Java et sélectionnez l'option 3, vous utiliserez l’implémentation Sun .
Aussi, en ce qui concerne auto vs manual mode, faire une sélection doit le sortir de auto mode par cette page déclarant:

Lorsque vous utilisez le --config option, les alternatives répertorieront tous les choix du groupe de liens dont le nom donné est le lien principal. Vous serez alors invité à indiquer le choix à utiliser pour le groupe de liens. Une fois que vous apportez une modification, le groupe de liens ne sera plus dans auto mode. Vous devrez utiliser le --auto option pour revenir à l'état automatique.

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

38
Jordan Denison

update-alternatives est problématique dans ce cas car il vous oblige à mettre à jour tous les éléments en fonction du JDK.

Dans ce but spécifique, le package Java-common contient un outil appelé update-Java-alternatives.

C'est simple à utiliser. Commencez par répertorier les installations JDK disponibles sur votre ordinateur:

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 puis en prendre un:

root@mylaptop:~# update-Java-alternatives -s Java-1.7.0-openjdk-AMD64
15
jopasserat

En supposant que l’un ait installé un JDK dans /opt/Java/jdk1.8.0_144 puis:

  1. Installez l'alternative pour javac

    $ Sudo update-alternatives --install /usr/bin/javac javac /opt/Java/jdk1.8.0_144/bin/javac 1
    
  2. Vérifiez/mettez à jour la configuration alternative:

    $ Sudo update-alternatives --config javac
    

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

Pour vérifier que tout est configuré correctement, 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 cette procédure pour Java, keytool, jar, etc. selon vos besoins.

9
Richard Grimshaw

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
7
user2733648

Il y a beaucoup d'autres binaires qui doivent être liés donc je pense qu'il est bien mieux d'essayer quelque chose comme Sudo update-alternatives --all et en choisissant les bonnes alternatives pour tout le reste à part Java et javac.

4

Jetez un œil à https://wiki.debian.org/JavaPackage Au bas de cette page, une autre méthode est décrite à l'aide d'une commande du paquet Java-common

1
hinnarksen