从https://stackoverflow.com/a/48374564/156458
update-alternatives --config java
/usr/bin/java
通过将符号链接安装到命令as/usr/bin/javac
等来工作。
如何update-alternatives --config somecommand
找到 的符号链接somecommand
?
例如,它是否依赖于,因此其工作方式与直接在 bash 中运行时$PATH
bash 查找文件的方式相同?somecommand
somecommand
如果文件somecommand
不是符号链接,可以update-alternative --config somecommand
工作吗?
谢谢。
答案1
工作方式update-alternatives
在其描述联机帮助页。给定命令(或文件,一般来说,替代方案不限于命令)的可用替代列表存储在/var/lib/dpkg/alternatives
Debian 及其衍生版本的文件中;因此 的替代方案java
存储在 中/var/lib/dpkg/alternatives/java
。在 Fedora、RHEL 及其衍生产品上,文件存储在/var/lib/alternatives
.
当一个包希望提供替代方案时,它会使用update-alternatives --install
(和适当的参数)来安装它;当它希望删除替代项时,它会使用update-alternatives --remove
.如有必要,您可以使用这些来提供您自己的替代方案。
请注意,在 Java 的具体情况下,在 Debian 及其衍生版本上,替代方案处理稍微复杂一些,您应该使用update-java-alternatives
而不是手动操作所有替代方案。
如果由于某种原因替代管理的文件不是符号链接,update-alternatives
则将认为替代已损坏并拒绝触及它。