
(Заранее извиняюсь, если форматирование некорректно, это мой первый пост, так что не стесняйтесь меня поправлять).
Обычно, когда я хочу узнать, какую версию 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
, если нет, вам придется подстраиваться с помощью псевдонимов или софт-линков. Возможно, есть лучшие, более чистые решения, но я о них не знаю.