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?
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 dansauto 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.
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
En supposant que l’un ait installé un JDK dans /opt/Java/jdk1.8.0_144
puis:
Installez l'alternative pour javac
$ Sudo update-alternatives --install /usr/bin/javac javac /opt/Java/jdk1.8.0_144/bin/javac 1
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.
#!/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
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
.
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