Мой автоматизированный сервер сборки выполняет задание, которое зависит от Apache Ant . Сценарий вызывает apt-get install ant
. Ant зависит от openjdk-6-jre-headless
, который запускает update-alternatives
, делая себя JDK по умолчанию (переписывая мои символические ссылки в процессе). У меня уже был установлен Oracle JDK (вручную), и я не хочу запускать update-alternatives
. Я не могу вручную восстановить update-alternatives
каждый раз, когда это происходит.
Кто-то пытался исправить это в прошлом году, но был сбит: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=678195
Как я могу запретить openjdk-6-jre-headless
вызывать update-alternatives
или, в худшем случае, как мне найти значение до процесса установки и восстановить его по факту?
ОБНОВЛЕНИЕ : Я подал новый отчет об ошибке здесь . Буду признателен за вашу поддержку.
Отвечая на мой собственный вопрос:
Я использовал https://askubuntu.com/a/55960/23678 для установки Oracle JDK. Как видите, эти инструкции вызывают update-alternatives
с приоритетом 1. Когда openjdk-6-jre-headless
устанавливает себя, он устанавливает приоритет 1061 (где более высокий приоритет заменяет более низкий).
Чтобы решить эту проблему, я просто дал Oracle JDK приоритет выше 1061. Когда openjdk-6-jre-headless
установился сам, он больше не перекрывал Oracle JDK по умолчанию.
ОБНОВЛЕНИЕ : Чтобы обновить приоритеты OpenJDK, я просто перезапустил:
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
с приоритетом 2000 вместо 1 (приоритет - последний аргумент командной строки).