Vraag Wat doet `update-alternatives` precies?


Wat is het commando? update-alternatives gebruikt voor?

Neem dit voorbeeld:

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

Wat doet het? Hoe verschilt het van het toevoegen van jdk aan het pad?

Laten we zeggen dat ik het commando heb uitgevoerd. Hoe zou ik terugkeren naar de oorspronkelijke staat?


84
2017-12-27 11:13


oorsprong


Je kan ook gebruiken sudo update-alternatives --config java en javac en javaws om te kiezen tussen geïnstalleerde versies. - Shayan


antwoorden:


Het werkt de links bij /etc/alternatives om voor dit doel naar het programma te wijzen. Er zijn veel voorbeelden, zoals x-www-browser, editor, enz. die een link naar de browser of editor van uw voorkeur zal bevatten. Sommige scripts of systeemhulpprogramma's willen mogelijk dat u een bestand handmatig bewerkt (bijvoorbeeld configuratieconflict in dpkg) en ze zullen de alternatieven bekijken om je de editor van keuze te geven. Voor java, dit is de Java runtime-omgeving - Oracle's, OpenJRE, etc.

De links in /etc/alternatives zijn slechts symbolische koppelingen. Je kunt ze bijvoorbeeld zien met behulp van

ls -l /etc/alternatives

Bovendien is de reguliere /usr/bin binaries zijn ook symlinks. bijv .:

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

Dus nee PATH moet worden gewijzigd. Het gebruikt alleen symbolische koppelingen.


62
2017-12-27 11:19



Dus met andere woorden, ik kan een enkel commando typen en het zal me om keuzes vragen. Dat is het enige extra voordeel ten opzichte van het instellen van een pad rechts. Laten we ook zeggen dat ik een andere verkoper van Java ook heb geïnstalleerd. Hoe zou ik Java updaten om naar beide leveranciers te verwijzen? - Developer Android
Je kunt niet wijzen op beide, zoals je beschrijft. Het hele doel ervan is om een ​​enkele verwijzing naar de implementatie van de invoer te hebben zoals in het gegeven voorbeeld. Zonder vragen. En ieder van de kandidaten zou moeten werken - het zou gewoon een voorkeur van de beheerder moeten zijn. En nogmaals: het heeft niets te maken met PATHs. - gertvdijk
Oke. Dat maakt alles duidelijk. Ik weet dat ik terugkom op paden, maar ik wil gewoon het verschil tussen hen begrijpen. In het geval van een pad moeten we de locatie expliciet specificeren, maar in dit geval zijn het gewoon sym-links zodat wanneer we java typen het eerst / etc / alternatieven doorzoekt. Of heb ik het mis bij het maken van deze veronderstelling? - Developer Android