`update-alternatives`到底是做什么的?


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 javajavacjavaws在已安装版本之间进行选择。
Shayan

Answers:


73

/etc/alternatives为此,它将更新指向该程序的链接。有很多示例,例如x-www-browsereditor等,这些示例将链接到您喜欢的浏览器或编辑器。某些脚本或系统工具可能希望您手动编辑文件(例如,中的配置冲突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修改。它仅使用符号链接。


因此,换句话说,我可以键入一个命令,它将提示我进行选择。这是设置正确路径的唯一附加优势。还可以说我也安装了另一家Java供应商。如何更新Java以指向两个不同的供应商?
开发人员Android

您不能像您描述的那样指向两者。它的全部目的是使单个指针指向条目的实现,如给定示例中所示。没有问题。而且任何候选人都应该工作-这只是管理员的偏爱。再说一次:与PATHs 无关。
gertvdijk 2012年

1
好的。这样可以清除一切。我知道我会回到道路,但我只想了解它们之间的区别。在路径的情况下,我们必须明确指定位置,但是在这种情况下,它只是符号链接,因此当我们键入java时,它将首先搜索/ etc / alternatives。还是我做这个假设错了?
开发人员Android
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.