Що саме роблять `оновлення-альтернативи`?


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's, 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 для розробника

Ви не можете вказати на те, як ви описуєте. Вся його мета - мати єдиний вказівник на виконання запису, як у наведеному прикладі. Без питань. І будь-який з кандидатів повинен працювати - це має бути лише вподобанням адміністратора. І знову: це не має нічого спільного з PATHs.
gertvdijk

1
Добре. Це очищує речі. Я знаю, що повертаюся до шляхів, але просто хочу зрозуміти різницю між ними. У випадку шляху ми повинні чітко вказати місцеположення, але в цьому випадку воно просто символізує посилання, так що коли ми вводимо Java, він спочатку шукає / etc / alternative. Або я помиляюся, роблячи це припущення?
Android для розробника
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.