What exactly does `update-alternatives` do?
Solution 1
It updates the links in /etc/alternatives
to point to the program for this purpose. There's lots of examples, like x-www-browser
, editor
, etc. that will link to the browser or editor of your preference. Some scripts or system tools may want you to edit a file manually (e.g. configuration conflict in dpkg
) and they'll look into the alternatives to give you the editor of choice. For java
, this is the Java runtime environment - Oracle's, OpenJRE, etc.
The links in /etc/alternatives
are just symbolic links. You can see them using for example
ls -l /etc/alternatives
Moreover, the regular /usr/bin
binaries are also symlinks. E.g.:
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
So, no PATH
has to be modified. It just uses symbolic links.
Solution 2
While @gertvdjik's answer is a good explanation of how alternatives work at the lower level, it doesn't explicitly say how to revert the original state.
I find it easier to use the corresponding GUI galternatives
which is available as a package. To install it, just run:
sudo apt-get install galternatives
Then managing alternatives becomes much easier. For java in particular, you have a lot of auxiliary binaries which you'll have to update and it's faster to overview them in the GUI.
Related videos on Youtube
Developer Android
Updated on September 18, 2022Comments
-
Developer Android almost 2 years
What is the command
update-alternatives
used for?Take this example:
sudo update-alternatives --install /usr/bin/java java /usr/local/java/jre1.7.0_09/bin/java 1
What does it do? How is it different from adding jdk to the path?
Let's say that I have run the command. How would I revert back to the original state?
-
Admin over 6 yearsYou can also use
sudo update-alternatives --config java
andjavac
andjavaws
to choose between installed versions.
-
-
Developer Android over 11 yearsSo in other words I can type in a single command and it will prompt me for choices. That is the only added advantage over setting a path right. Also lets say I have a different vendor of java also installed How would I update java to point to both the two different vendors?
-
Developer Android over 11 yearsOkay. That clears things up. I know I am coming back to paths but I just want to understand the difference between them . In case of a path we have to explicitly specify the location but in this case it just sym links so that when we type java it searches /etc/alternatives first. Or am i wrong in making this assumption?