Что именно делает update-альтернатива?


99

Для чего используется команда update-alternatives?

Возьмите этот пример:

sudo update-alternatives --install /usr/bin/java java /usr/local/java/jre1.7.0_09/bin/java 1

Что оно делает? Чем он отличается от добавления JDK к пути?

Допустим, я выполнил команду. Как бы я вернуться к исходному состоянию?


2
Вы также можете использовать sudo update-alternatives --config javaи javacи javawsвыбирать между установленными версиями.
— Шаян

Ответы:


73

Он обновляет ссылки, /etc/alternativesчтобы указать программу для этой цели. Есть много примеров, например x-www-browser, editorи т. Д., Которые будут ссылаться на браузер или редактор по вашему выбору. Некоторые сценарии или системные инструменты могут потребовать, чтобы вы редактировали файл вручную (например, конфликт конфигурации в dpkg), и они рассмотрят альтернативные варианты, чтобы дать вам выбор редактора. Ведь javaэто среда выполнения Java - Oracle, OpenJRE и т. Д.

Ссылки в /etc/alternativesэто просто символические ссылки. Вы можете увидеть их, используя, например,

ls -l /etc/alternatives

Более того, обычные /usr/binдвоичные файлы также являются символическими ссылками. Например:

ls -l /usr/bin/java
  lrwxrwxrwx 1 root root 22 Aug 14 10:33 /usr/bin/java -> /etc/alternatives/java
ls -l /etc/alternatives/java
  lrwxrwxrwx 1 root root 46 Aug 14 10:33 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java

Таким образом, нет PATHдолжно быть изменено. Он просто использует символические ссылки.


Другими словами, я могу ввести одну команду, и она предложит мне сделать выбор. Это единственное добавленное преимущество по отношению к правильному пути. Также предположим, что у меня установлен другой поставщик java. Как мне обновить java, чтобы он указывал на двух разных поставщиков?
— Разработчик Android

Вы не можете указать на то, что вы описываете. Вся цель этого состоит в том, чтобы иметь единственный указатель на реализацию записи, как в приведенном примере. Без вопросов. И любой из кандидатов должен работать - это должно быть просто предпочтением администратора. И снова: это не имеет ничего общего с PATHс.
— gertvdijk

1
Хорошо. Это проясняет ситуацию. Я знаю, что возвращаюсь к путям, но я просто хочу понять разницу между ними. В случае пути мы должны явно указать местоположение, но в этом случае это просто символические ссылки, так что когда мы набираем java, он сначала ищет / etc / альтернативы. Или я ошибся в этом предположении?
— Разработчик Android
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.