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

99

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

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

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

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

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

Разработчик Android
источник
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должно быть изменено. Он просто использует символические ссылки.

gertvdijk
источник
Другими словами, я могу ввести одну команду, и она предложит мне сделать выбор. Это единственное добавленное преимущество по отношению к правильному пути. Также предположим, что у меня установлен другой поставщик java. Как мне обновить java, чтобы он указывал на двух разных поставщиков?
Разработчик Android
Вы не можете указать на то, что вы описываете. Вся цель этого состоит в том, чтобы иметь единственный указатель на реализацию записи, как в приведенном примере. Без вопросов. И любой из кандидатов должен работать - это должно быть просто предпочтением администратора. И снова: это не имеет ничего общего с PATHс.
gertvdijk
1
Хорошо. Это проясняет ситуацию. Я знаю, что возвращаюсь к путям, но я просто хочу понять разницу между ними. В случае пути мы должны явно указать местоположение, но в этом случае это просто символические ссылки, так что когда мы набираем java, он сначала ищет / etc / альтернативы. Или я ошибся в этом предположении?
Разработчик Android