Ubuntu 的 /etc/alternatives 机制

adu*_*ity 28 linux debian ubuntu

我试图更好地理解 Ubuntu 的 /etc/alternatives 机制。基础很简单:它允许在同一台机器上安装多个“提供程序”,并配置默认设置。例如,如果您安装了 Java SE 5 和 Java SE 6,则 /etc/alternatives 句柄是您的默认 JRE。

我想了解的是:

  1. 是否有将选项添加到其中的中央注册表?
  2. 创建包时,如何将特定包配置为替代方案?我可以将其设为默认值吗?

小智 20

Afaik,您可以使用update-alternatives命令的--install选项创建替代方案。如果您想注册一个软件包作为替代,您可以将此命令添加到软件包安装后脚本中。

您可以通过--set选项或通过将备用组置于自动模式并确保您的软件包具有最高优先级来将您的软件包设置为安装时的默认设置。

没有中央存储库,只有此命令使用的两个目录:

   alternatives directory
          A directory, by default /etc/alternatives, containing the symlinks.

   administrative directory
          A directory, by default /var/lib/dpkg/alternatives, containing update-alternatives’ state  infor?
          mation.
Run Code Online (Sandbox Code Playgroud)

update-alternatives手册页的相关片段:

   --install genname symlink altern priority [--slave genname symlink altern]...
          Add a group of alternatives to the system.  genname is the generic name for the master link, sym?
          link is the name of its symlink in the alternatives directory,  and  altern  is  the  alternative
          being  introduced for the master link.  The arguments after --slave are the generic name, symlink
          name in the alternatives directory and the alternative for a slave link.  Zero  or  more  --slave
          options, each followed by three arguments, may be specified.

          If the master symlink specified exists already in the alternatives system’s records, the informa?
          tion supplied will be added as a new set of alternatives for the group.  Otherwise, a new  group,
          set  to  automatic mode, will be added with this information.  If the group is in automatic mode,
          and the newly added alternatives’ priority is higher than any other  installed  alternatives  for
          this group, the symlinks will be updated to point to the newly added alternatives.


   --set name path
          Set the program path as alternative for name.  This is equivalent to --config but is non-interac?
          tive and thus scriptable.

   --auto link
          Switch the master symlink link to automatic mode.  In the process, this symlink  and  its  slaves
          are updated to point to the highest priority installed alternatives.
Run Code Online (Sandbox Code Playgroud)