Co dokładnie robi „aktualizacja-alternatywy”?


99

Do czego służy polecenie update-alternatives?

Weź ten przykład:

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

Co to robi? Czym różni się od dodania jdk do ścieżki?

Powiedzmy, że uruchomiłem polecenie. Jak powrócę do pierwotnego stanu?


2
Można również użyć sudo update-alternatives --config javaa javaci javawswybierać pomiędzy zainstalowanymi wersjami.
Shayan

Odpowiedzi:


73

Aktualizuje łącza w /etc/alternativescelu wskazania programu w tym celu. Jest wiele przykładów, jak x-www-browser, editoritp że będzie link do przeglądarki lub redaktor preferencjami. Niektóre skrypty lub narzędzia systemowe mogą wymagać ręcznej edycji pliku (np. Konflikt konfiguracji dpkg), a oni sprawdzą alternatywy, by dać ci edytor do wyboru. Do javatego jest środowisko wykonawcze Java - Oracle, OpenJRE, etc.

Linki w /etc/alternativesto tylko symboliczne linki. Możesz je zobaczyć na przykład za pomocą

ls -l /etc/alternatives

Co więcej, zwykłe /usr/binpliki binarne są również dowiązaniami symbolicznymi. Na przykład:

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

Więc nie PATHtrzeba modyfikować. Po prostu używa dowiązań symbolicznych.


Innymi słowy, mogę wpisać jedną komendę, która poprosi mnie o wybory. To jedyna dodatkowa zaleta w porównaniu z ustawieniem właściwej ścieżki. Powiedzmy też, że mam zainstalowanego innego dostawcę Java. Jak zaktualizować Javę, aby wskazywała na dwóch różnych dostawców?
Deweloper Android

Nie możesz wskazać obu tak, jak to opisujesz. Jego celem jest posiadanie jednego wskaźnika do implementacji wpisu, jak w podanym przykładzie. Bez pytań I każdy z kandydatów powinien działać - powinna to być tylko preferencja administratora. I znowu: nie ma to nic wspólnego z PATHs.
gertvdijk

1
W porządku. To wszystko wyjaśnia. Wiem, że wracam na ścieżki, ale chcę tylko zrozumieć różnicę między nimi. W przypadku ścieżki musimy jawnie określić lokalizację, ale w tym przypadku po prostu sym linki, aby po wpisaniu java najpierw szuka / etc / alternatives. Czy też mylę się przy przyjmowaniu tego założenia?
Programista Android
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.