Update alternatives java windows

Update alternatives java windows

update-alternatives [опции] —remove name path

update-alternatives [опции] —auto name

update-alternatives [опции] —display name

update-alternatives [опции] —config name

ОПИСАНИЕ

Это позволяет нескольким программам, установленным в системе одновременно, выполнять одинаковые или похожие функции. Например, во многих системах одновременно установлено несколько текстовых редакторов. Это дает возможность всем пользователям системы, при желании, пользоваться различными редакторами, но создает при этом сложности для системы при вызове программы редактирования, если пользователь не определил своих предпочтений.

Предназначение подсистемы альтернатив заключается в решении этих задач. Универсальное имя в файловой системе разделено между всеми файлами, предоставляющими взаимозаменяемые функциональные возможности. Система альтернатив и системный администратор вместе определяют, к какому файлу в системе происходит обращение при помощи универсального имени. Например, если в системе одновременно установлены текстовые редакторы ed(1) и vim(1) , то подсистема альтернатив обратится к универсальному имени /usr/bin/editor для вызова /usr/bin/vim по-умолчанию. Системный администратор может изменить параметры так, что вместо этого будет произведен вызов /usr/bin/ed , и подсистема альтернатив не изменит эти установки до тех пор, пока об этом не последует явный запрос.

Универсальное имя — это не прямая символическая ссылка к выбранной альтернативе. Вместо этого создается символическая ссылка в каталоге альтернатив , которая, в свою очередь, ссылается на конкретный файл. Это сделано для того, чтобы изменения, сделанные системным администратором, ограничивались только каталогом /etc : FHS дает основания считать это хорошей идеей.

Если пакет, предоставляющий файл со специфическими функциями, установлен, изменен или удален, вызывается update-alternatives для обновления информации об этом файле, содержащемся в подсистеме альтернатив. Вызов update-alternatives обычно происходит посредством вызова post-install или pre-install скрипта, содержащегося в пакете RPM.

Зачастую бывает полезно синхронизировать изменение нескольких альтернатив, образующих группу; например, если в системе установлено несколько версий редактора vi(1) , то man-страница /usr/share/man/man1/vi.1 должна соответствовать альтернативе, определяемой /usr/bin/vi Подсистема update-alternatives управляет этим посредством главных (master) и подчиненных (slave) ссылок; если изменяется главная ссылка, подчиненные ссылки тоже изменяются. Главная ссылка и ассоциированные с ней подчиненные образуют группу ссылок .

Каждая группа ссылок в любой момент времени может находиться в одном из двух режимов: автоматическом или не автоматическом. Если группа находится в автоматическом режиме, при установке, обновлении и удалении пакетов подсистема альтернатив сама решает, какие из ссылок требуется обновить и как. В не автоматическом режиме подсистема альтернатив не делает изменений ссылок, оставляя их на усмотрение системного администратора.

Каждая группа ссылок при первой установке в систему находится в автоматическом режиме. Если системный администратор вносит изменения в автоматические установки системы, то update-alternatives при очередном запуске обнаружит изменении группы ссылок и автоматически перейдет в не автоматический режим.

Каждая альтернатива имеет ассоциированный с ней приоритет — когда группа ссылок находится в автоматическом режиме, то альтернативами, указанными членами группы, будут те, которые имеют наивысший приоритет.

При использовании опции —config update-alternatives перечислит весь список вариантов в группе ссылок, соответствующий главной ссылке. Вам будет предложено определить, какой из вариантов вы желаете использовать. Если вы однажды сделаете изменения, то группа ссылок больше не будет работать в автоматическом режиме. Для возврата к автоматическому режиму вам необходимо использовать опцию —auto

ТЕРМИНОЛОГИЯ


ОПЦИИ


ПАРАМЕТРЫ


ДЕЙСТВИЯ


ФАЙЛЫ


КОДЫ ВОЗВРАТА


ДИАГНОСТИКА


ОШИБКИ

Если вы найдете любое расхождение между работой update-alternatives и настоящим руководством, то это ошибка реализации либо документации и перевода; пожалуйста, сообщите об этом.

Есть ли способ обновить все связанные с Java альтернативы?

Есть ли способ быстро переключаться между всеми альтернативами, связанными с Java, используя update-alternatives ?

Читайте также:  Linux all server list

Например, если вы хотите переключить Java на 7, я запускаю sudo update-alternatives —config java и выбираю Java 7 OpenJdk. Но если я бегу, update-alternatives —get-selections | grep java я получаю следующее,

Как видите, моя альтернатива Java была переключена на 7, но любая другая альтернатива, основанная на OpenJDK 6, не была переключена. Конечно, я мог бы переключать каждый из них вручную или написать скрипт для этого, но я предполагаю, что есть лучший способ сделать это.

Хитрость заключается в использовании update-java-alternatives (из java-common пакета).

Итак, чтобы перейти к OpenJDK 6-7, я использовал update-java-alternatives -l список альтернатив Java, а затем использовал его sudo update-java-alternatives -s java-1.7.0-openjdk-amd64 для JDK.

ПРИМЕЧАНИЕ. Приведенная выше команда вызвала следующие ошибки:

Это потому, что плагин openjdk не установлен по умолчанию. Чтобы исправить запустить

и перезапустить update-java-alternatives .

jbro задал тот же вопрос на http://ubuntuforums.org/showthread.php?t=1817528 и написал сценарий для этой проблемы,

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

Я немного отредактировал код, так как он не позволяет вносить изменения перед их установкой. Я добавил еще две строки следующим образом .

Для Oracle JVM запустите это:

update-java-alternatives использует файл .jinfo, чтобы определить, какие альтернативы переключаться, но также ожидает, что они были настроены отдельно.

Создайте новый файл .jinfo и записи с альтернативой обновления, если загруженный JRE / JDK не переключается с альтернативами update-java

Чтобы настроить его вручную:

Распакуйте новый JDK вместе с существующим JDK в /usr/lib/jvm/

Создайте файл .jdkname.jinfo , продублировав другой файл .jinfo в папке (или захватите его из другой установки Ubuntu: вам нужен шаблон так же, как и все остальное).

Имя файла jdkname .jinfo должно совпадать с именем jdk foldername.

Измените содержимое, чтобы задать заголовок (имена) и пути к файлам (записи программы) в соответствии с вашей новой установкой.

Удалите все строки, относящиеся к программам, опущенным в вашей версии, и добавьте строки для новых программ в /bin

Создайте альтернативы для всех программ, которые теперь есть в вашем пакете .jinfo, с помощью этого шаблона:

(Несколько связанных ответов написали это из содержимого / bin, или вы можете выполнить поиск / замену регулярного выражения в вашем файле .jinfo для генерации команд сценария.)

Обратите внимание, что 100 — это просто приоритет, который учитывается при установке версии jdk с использованием флага auto.

Проверьте альтернативы Java и переключитесь на использование JDK.

Обратите внимание, что некоторые JDK не содержат JRE, поэтому либо добавьте его, либо удалите эти записи jinfo.

Как использовать команду update-alternatives —config java

Я устанавливаю Apache Solr на Linux Debian (Squeeze). Мне было поручено установить Sun-java 1-го комплекта JDK. Затем мне говорят, что я должен использовать команду sudo update-alternatives —config java , чтобы убедиться, что конкретный java (sun-java) является средой выполнения по умолчанию. Тем не менее, когда я запускаю эту команду, я получаю:

Итак, какой номер я должен выбрать, чтобы иметь sun-java в качестве среды выполнения по умолчанию? Кроме того, что именно означают автоматический и ручной режимы? Если я выберу 3 выше и выполню команду update-alternative, то получу тот же вывод, что и выше, и снова ничего не изменится, кроме того, что * теперь находится перед 3, хотя он все еще читает ручной режим.

Есть ли способ подтвердить, что то, что я сделал, правильно?

8 ответов

Я нахожусь на Ubuntu и установил следующее в своем файле

/.bashrc : export JAVA_HOME=/opt/jdk1.8.0_91 export PATH=$JAVA_HOME/bin:$PATH и затем: echo $JAVA_HOME >/opt/jdk1.8.0_91 java -version >java version 1.8.0_91 >Java(TM) SE Runtime Environment (build 1.8.0_91-b14) >Java.

У меня есть следующая настройка. HOST: RHEL 7.3 JAVA: java-1.7.0-openjdk-devel и java-1.8.0-openjdk-devel, установленные на хосте Jenkins использует java.version 1.8.0_131 и работает совершенно нормально, но как только я меняю версию java на 1.7 с помощью команды update-alternatives —config.

Читайте также:  Постоянно выскакивает синий экран windows

Вы заметите большое изменение при выборе параметров, если после этого наберете «java -version». Поэтому, если вы запустите update-alternatives —config java и выберете опцию 3 , вы будете использовать реализацию Sun .
Кроме того, что касается auto против manual mode , то выбор должен быть сделан из auto mode на этой странице .:

При использовании параметра —config альтернативы будут перечислять все варианты для группы ссылок, заданное имя которой является главной ссылкой. Затем вам будет предложено выбрать, какой из вариантов использовать для группы ссылок . Как только вы внесете изменения, группа ссылок больше не будет находиться в auto mode . Вам нужно будет использовать опцию —auto , чтобы вернуться в автоматическое состояние.

И я считаю, что auto mode устанавливается, когда вы устанавливаете первый/только JRE/JDK.

update-alternatives в этом случае проблематично, так как он заставляет вас обновлять все элементы в зависимости от JDK.

Для этой конкретной цели пакет java-common содержит инструмент под названием update-java-alternatives .

Использовать его очень просто. Сначала перечислите JDK установки, доступные на вашем компьютере:

А потом возьми одну:

Если предположить, что кто-то установил JDK в /opt/java/jdk1.8.0_144 , то:

Установите альтернативу для javac

Проверьте / обновите конфигурацию альтернатив:

Если существует только одна альтернатива для javac , вы получите сообщение об этом, в противном случае выберите опцию для нового JDK.

Чтобы проверить, все ли настроено правильно, тогда:

Повторите процедуру для java, keytool, jar и т. д.

Недавно я установил полный Oracle jdk(а не только jre) на свой ноутбук, in /usr/lib/jvm/java-8-oracle/bin/java-это его исполняемый файл, но когда я набираю sudo update-alternatives —config java , Я не могу этого видеть, я вижу только Oracle jre. Почему и как это исправить? sudo.

во время установки java в Linux есть некоторое использование команды update-alternatives, так как я новичок в среде Linux, я хочу знать, что делает эта команда и в чем ее польза >>sudo update-alternatives —install /usr/bin/java java /usr/lib/java/JDk. /bin/java

Вот как я устанавливаю jdk

Есть много других двоичных файлов, которые нужно связать, поэтому я думаю, что гораздо лучше попробовать что-то вроде sudo update-alternatives —all и выбрать правильные Альтернативы для всего остального, кроме java и javac .

Я использую Ubuntu 18.04 LTS. Большую часть времени, когда я меняю свою версию java , я также хочу использовать ту же версию javac .
Я использую update-alternatives таким образом, используя вместо этого альтернативу java_home :

Установка

Установите каждую версию java в /opt/java/ , например

Настройка альтернатив

Declare JAVA_HOME (в данном случае я использую для этого глобальный сценарий инициализации)

Выйдите из системы или перезагрузите Ubuntu (это перезагрузит /etc/profile.d/environment.sh )

Использование

Изменить версию java

Выберите версию, которую вы хотите использовать

Проверить версию

Совет

Добавьте следующую строку в файл

Теперь используйте команду change-java-version , чтобы изменить версию java

Взгляните на https://wiki.debian.org/JavaPackage в нижней части этой страницы описан другой метод с помощью команды из пакета java-common

Если вы хотите регулярно переключать jdk (или обновлять его на Новый после его выпуска), очень удобно использовать sdkman .

Вы также можете использовать дополнительные инструменты, такие как maven с sdkman.

Похожие вопросы:

Я пишу сценарий, который устанавливает java на удаленную машину. После того, как я запустил файл .bin для JRE, как я могу установить альтернативы —config java без необходимости ввода пользователем.

Я столкнулся с этой проблемой при запуске программы java из командной строки. У меня есть openjdk-6-jdk, установленный в моей системе linux, и все еще показывает, что ошибка связана с openjdk-7-jdk.

Поэтому я получаю эту ошибку при выполнении обновления apt-get Setting up nodejs (0.10.30-1chl1

trusty1) . update-alternatives: error: alternative link /usr/bin/node is already managed by nodejs.

Читайте также:  Windows 10 изменить имя пользователя users

Я нахожусь на Ubuntu и установил следующее в своем файле

/.bashrc : export JAVA_HOME=/opt/jdk1.8.0_91 export PATH=$JAVA_HOME/bin:$PATH и затем: echo $JAVA_HOME >/opt/jdk1.8.0_91 java -version.

У меня есть следующая настройка. HOST: RHEL 7.3 JAVA: java-1.7.0-openjdk-devel и java-1.8.0-openjdk-devel, установленные на хосте Jenkins использует java.version 1.8.0_131 и работает совершенно.

Недавно я установил полный Oracle jdk(а не только jre) на свой ноутбук, in /usr/lib/jvm/java-8-oracle/bin/java-это его исполняемый файл, но когда я набираю sudo update-alternatives —config java , Я.

во время установки java в Linux есть некоторое использование команды update-alternatives, так как я новичок в среде Linux, я хочу знать, что делает эта команда и в чем ее польза >>sudo.

Я работаю на машине Ubuntu 16: lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.6 LTS Release: 16.04 Codename: xenial Мой опыт работы с Ubuntu-это.

Я использую Ubuntu 18.04 и у меня есть две версии gcc/g++, которые управляются с помощью альтернатив обновления: sudo update-alternatives —install /usr/bin/gcc gcc /usr/bin/gcc-7 100 —slave.

Я пытаюсь настроить nativescript-vue на linux, выполнив следующие действия на веб-сайте nativescript. когда я использую эту команду sudo обновление-альтернативы —config java но есть ошибка.

update-java-alternatives vs update-alternatives —config java

On Ubuntu 12.04 LTS I have installed Sun’s JDK7, Eclipse, and the Arduino IDE. I want the Arduino to use OpenJDK 6 and want Eclipse to use Sun’s JDK 7.

From my understanding I need to manually choose which Java to use before running each application. This led me to the update-java-alternatives -l command. When I run this I only see the following:

but when I run update-alternatives —config java I see the following:

I don’t understand why the update-java-alternatives doesn’t display the same 3 options. I also don’t understand how to switch between OpenJDK6 and JDK7. How I can go about using the OpenJDK6 for Arduino development and Sun JDK7 for Eclipse/Android development?

2 Answers 2

sudo update-alternatives —config java

Configures the default for the program «java». That’s the Java VM.

sudo update-alternatives —config javac

Configures the default Java compiler.

You can also see that, because the first command lists a lot of «JRE» (Java Runtime Environment) folders and the Program is just called «java».

If I check which version is being used by issuing the command java -version or javac -version , I can see, that each command changes the program being used.

However, using update-java-alternatives with a JDK Version changes both programs for me. Using the first commands, you can use a Java VM and Java Compiler from different JDKs.

update-java-alternatives requires presence of a file with extension .jinfo in directory /usr/lib/jvm. The opendjk package is shipped with a .jinfo file, the jdk of Oracle (formerly Sun) is not. As alternative, you configure alternatives without update-java-alternatives:

For example, to add java from jvm-directory /usr/lib/jvm/jdk-12.0.1 (default directory of Debian package of Oracle) with priority 2082, use the following command:

sudo update-alternatives —install /usr/bin/java java /usr/lib/jvm/jdk-12.0.1/bin/java 2082

As for switching for different development environments:

Are you talking about starting the IDE itself with different Java versions or using different versions in the IDE for compilation and running your app?

For 1.: You can specify which JVM to use in the eclipse.ini, as described here. I don’t know how to do that for the Arduino IDE.

For 2.: In Eclipse you can select the JRE/JDK to be used in Window -> Preferences -> Java -> Installed JREs. And under Java -> Compiler you could choose an older Java compliance if you wish.

EDIT: This DigitalOcean page also has a very nice explanation of everything related to Java on Ubuntu.

Оцените статью