Переключение версии Java через apt?

Переключение версии Java через apt?

(Заранее извиняюсь, если форматирование некорректно, это мой первый пост, так что не стесняйтесь меня поправлять).

Обычно, когда я хочу узнать, какую версию Java я использую, я запускаю:

java -version

версия Java "1.7.0_55"

Если я хочу изменить версию Java (с Java 7 на Java 6), я могу просто указать символическую ссылку (/usr/bin/java) на соответствующий двоичный файл Java JRE. (Кстати, в данном случае нам не нужно беспокоиться о компиляторе javac или java_ws).

# readlink -f /usr/bin/java

/usr/lib/jvm/java-7-openjdk-i386/jre/bin/java

# ln -s /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java /usr/bin/java

# java -version

версия Java "1.6.0_31"

Это нормально, и насколько я могу судить, это работает.

В Solaris есть хороший способ сделать это с помощью инструмента-посредника pkg:

myHost# pkg mediator -H java

система java 1.7 система

Чтобы изменить Java с 1.7 на 1.6:

pkg set-mediator -V 1.6 java

Затем для подтверждения изменений

myHost# pkg mediator -H java

локальная система java 1.6

Мне интересно, aptесть ли эквивалент? Или есть более изящный способ переключения между версиями Java?

Редактировать: Это также может относиться к Python, поэтому я не ищу ответы, специфичные для Java.

решение1

Правильный способ переключения между несколькими версиями установленного программного обеспечения — это:

sudo update-alternatives --config <package>

Итак, для Java вам нужно выполнить:

sudo update-alternatives --config java

который должен вернуть вам установленные версии, в моем случае это:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1053      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1053      manual mode

Для переключения между версиями вы можете ввести, selectionнапример, 0, 1, 2, в данном случае в зависимости от версии, на которую вы хотите переключиться.

Однако в случае с Python, python2 и python3 не являются альтернативами, поэтому вы не найдете эту опцию, для нее вам придется создать псевдонимы.

Итак, если вы хотите, чтобы python ссылался на версию python 2.xx, а python3 ссылался на версию python 3.xx, вы можете открыть свой ~/.bash_aliasesфайл и ввести следующее:

alias python=`/usr/bin/python`
alias python3=`/usr/bin/python3`

Этот файл может быть пустым, если вы не создавали псевдонимы ранее, что нормально. Вы даже можете захотеть, чтобы псевдоним был наоборот, т. е. python ссылался на python3, а python2 ссылался на python2, вы можете настроить псевдоним по своему усмотрению.

Как вы можете видеть, это зависит от того, являются ли установленные версии альтернативами друг другу - если они альтернативы, вы можете использовать update-alternatives, если нет, вам придется подстраиваться с помощью псевдонимов или софт-линков. Возможно, есть лучшие, более чистые решения, но я о них не знаю.

Связанный контент