Mon serveur de construction automatisé exécute un travail qui dépend de Apache Ant . Le script appelle apt-get install ant
. Ant dépend de openjdk-6-jre-headless
qui exécute update-alternatives
en devenant le JDK par défaut (réécrivant mes liens symboliques dans le processus). JDK Oracle (manuellement) est déjà installé sur mon ordinateur et je ne souhaite pas que update-alternatives
soit exécuté. Je ne peux pas restaurer manuellement update-alternatives
chaque fois que cela se produit.
Quelqu'un a essayé de corriger cela l'année dernière mais a été abattu: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=678195
Comment empêcher openjdk-6-jre-headless
d'appeler update-alternatives
ou, pire scénario, comment puis-je rechercher la valeur avant le processus d'installation et la restaurer après coup?
UPDATE: J'ai déposé un nouveau rapport de bogue ici . J'apprécierais votre soutien.
Répondant à ma propre question:
J'ai utilisé https://askubuntu.com/a/55960/23678 pour installer Oracle JDK. Comme vous pouvez le constater, ces instructions appellent update-alternatives
avec une priorité de 1. Lorsque openjdk-6-jre-headless
s’installe lui-même, il définit une priorité de 1061 (où une priorité supérieure remplace les priorités inférieures).
Afin de résoudre ce problème, j'ai simplement attribué à Oracle JDK une priorité supérieure à 1061. Lorsque openjdk-6-jre-headless
s'est installé, il ne supprimait plus le JDK Oracle par défaut.
UPDATE: Pour mettre à jour les priorités d'OpenJDK, j'ai simplement relancé:
Sudo update-alternatives --install "/usr/bin/Java" "Java" "/usr/lib/jvm/jdk1.7.0/bin/Java" 2000
Sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0/bin/javac" 2000
Sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0/bin/javaws" 2000
avec une priorité de 2000 au lieu de 1 (la priorité est le dernier argument de la ligne de commande).