alternatives 使用

发布时间 2023-08-24 11:57:08作者: Donaver

alternatives作用

在Linux系统中,alternatives 是一个管理系统中不同软件的命令行工具。它允许你在同一系统上安装并管理多个软件版本,然后轻松地在这些版本之间切换,以满足不同应用程序的需求。

具体来说,alternatives 工具用于管理系统中的符号链接(symbolic links),这些链接将特定命令或程序链接到实际的二进制文件。通过使用alternatives,你可以为某个命令或程序设置多个备选项,并且可以通过简单的命令进行切换。这在你需要在不同版本之间进行选择时特别有用,例如在不同版本的编译器、Java运行时环境、文本编辑器等方面。

常用命令

 $ alternatives --help
 alternatives version 1.7.4 - Copyright (C) 2001 Red Hat, Inc.
 This may be freely redistributed under the terms of the GNU Public License.
 ​
 usage: alternatives --install <link> <name> <path> <priority>
                     [--initscript <service>]
                     [--family <family>]
                     [--slave <link> <name> <path>]*
        alternatives --remove <name> <path>
        alternatives --auto <name>
        alternatives --config <name>
        alternatives --display <name>
        alternatives --set <name> <path>
        alternatives --list
 ​
 common options: --verbose --test --help --usage --version --keep-missing
                 --altdir <directory> --admindir <directory>
  1. --install <link> <name> <path> <priority>:安装一个备选项。这将在 <link> 处创建一个符号链接,将其链接到 <path> 中的文件。<name> 是标识该备选项的名称,而 <priority> 是整数值,用于指定优先级,较低的优先级表示较高的优先级。

  2. --remove <name> <path>:从备选项中删除一个项目。指定要删除的备选项的名称 <name> 和路径 <path>

  3. --auto <name>:自动选择给定名称 <name> 的默认备选项。这将基于备选项的优先级进行选择。

  4. --config <name>:显示给定名称 <name> 的备选项配置菜单,允许用户手动选择备选项。

  5. --display <name>:显示给定名称 <name> 的备选项配置信息,包括备选项的当前状态、优先级等。

  6. --set <name> <path>:将给定名称 <name> 的备选项设置为指定的路径 <path>

  7. --list:列出所有已经安装的备选项,显示备选项的名称、路径和优先级。

这些命令的"common options"是一些常见选项,如:

  • --verbose:显示详细信息。

  • --test:测试模式,显示执行命令的效果,但不实际应用更改。

  • --help:显示帮助信息。

  • --usage:显示用法信息。

  • --version:显示版本信息。

  • --keep-missing:在备选项不存在时保留备选项条目。

  • --altdir <directory>:指定备选项目录。

  • --admindir <directory>:指定备选项管理员目录。

--install

--installalternatives命令的一个选项,用于安装新的备选项。以下是 --install 命令的参数详细说明:

 $ update-alternatives --install <link> <name> <path> <priority>
            [--initscript <service>]
            [--family <family>]
            [--slave <link> <name> <path>]*
  • <link>:这是一个路径,表示要创建的符号链接的位置。这个符号链接将作为备选项来使用,通常是在系统的某个路径中,比如 /usr/bin

  • <name>:这是备选项的名称,用于标识备选项。这个名称是你在之后使用其他alternatives命令时需要引用的标识符。

  • <path>:这是要与 <link> 链接的实际文件路径。当你选择这个备选项时,<link> 将链接到这个文件。

  • <priority>:这是一个整数值,用于指定备选项的优先级。较低的优先级值表示较高的优先级。在某些情况下,当你使用--auto选项时,备选项的优先级将影响默认选择。

  • [--initscript <service>]:这是一个可选的参数,用于关联备选项与系统的初始化脚本(init script)。

  • [--family <family>]:这是一个可选的参数,用于指定备选项的家族(family)。家族可以在一些特定情况下使用,以确保相关备选项彼此兼容。

  • [--slave <link> <name> <path>]:这是可选的参数,允许你创建与主备选项相关联的从属备选项。这些从属备选项会随着主备选项的变化而变化。

综上所述,--install 选项允许你在<link> 处创建一个符号链接,将其链接到 <path> 中的文件。这个新创建的备选项将具有一个唯一的 <name> 和给定的 <priority>。你还可以关联初始化脚本、设置备选项家族以及创建从属备选项。

例如配置java环境变量:

 $ sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_161/bin/java 0
 # 或者
 $ sudo alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_161/bin/java 0
 ​
 # 查看执行命令后在 /usr/bin/创建的软链接文件
 $ ls -l /usr/bin/java
 ​
 lrwxrwxrwx 1 root root 22 Aug 24 02:44 /usr/bin/java -> /etc/alternatives/java
 ​
 # 查看在/etc/alternatives/创建的软链接文件
 ls -l /etc/alternatives/
 ​
 lrwxrwxrwx 1 root root 31 Aug 24 02:44 java -> /usr/java/jdk1.7.0_161/bin/java

--remove

--removealternatives 命令的一个选项,用于从备选项列表中删除一个特定的备选项。以下是 --remove 命令的参数详细说明:

 $ update-alternatives --remove <name> <path>
  • <name>:这是要删除的备选项的名称。该名称是你之前使用 --install 命令创建备选项时指定的名称。

  • <path>:这是要删除的备选项的实际文件路径。该路径是你之前使用 --install 命令创建备选项时指定的路径。

例如删除之前配置的java环境:

 $ sudo update-alternatives --remove java /usr/java/jdk1.7.0_161/bin/java
 # 或者
 $ sudo alternatives --remove java /usr/java/jdk1.7.0_161/bin/java
 ​
 # 执行命令可以看到之前的软连接文件被删除
 $ ls -l /usr/bin/java
 $ ls -l /etc/alternatives/

--config

--configalternatives 命令的一个选项,用于配置给定备选项的默认值。这个选项允许用户从一组可用的备选项中手动选择一个作为默认选项。以下是 --config 命令的参数详细说明:

 $ update-alternatives --config <name>
  • <name>:这是要配置的备选项的名称。该名称是你之前使用 --install 命令创建备选项时指定的名称。

通过执行 --config 命令,你可以显示一个交互式的菜单,其中列出了与给定名称相关联的备选项列表。用户可以从中选择一个备选项作为默认选项。这对于在多个备选项之间进行手动选择非常有用,比如在你需要在不同版本之间切换的情况下。

例如切换java版本:

 $ update-alternatives --config java
 ​
 There are 2 programs which provide 'java'.
 ​
   Selection    Command
 -----------------------------------------------
    1           /usr/java/jdk1.8.0_151/bin/java
 *+ 2           /usr/lib/jvm/jdk-1.8-oracle-x64/bin/java
 ​
 Enter to keep the current selection[+], or type selection number: 
 # 输入对应数字,按回车键即可完成切换
 # 查看java 版本
 $ java -version

--set

--setalternatives 命令的一个选项,用于将特定备选项设置为默认选项,而无需交互式选择。这可以在命令行中直接设置一个备选项作为默认选项。以下是 --set 命令的参数详细说明:

 $ update-alternatives --set <name> <path>
  • <name>:这是要设置为默认选项的备选项的名称。该名称是你之前使用 --install 命令创建备选项时指定的名称。

  • <path>:这是要设置为默认选项的备选项的实际文件路径。该路径是你之前使用 --install 命令创建备选项时指定的路径。

通过执行 --set 命令,你可以直接将指定的备选项设置为默认选项,而不需要手动交互选择。这对于自动化脚本或配置文件中设置默认选项非常有用。

例如,如果你想要将备选项 myeditor 设置为默认编辑器,你可以执行以下命令:

 $ sudo update-alternatives update-alternatives --set editor /usr/bin/myeditor

这将直接将 myeditor 设置为默认编辑器。

请注意,执行 --set 命令可能需要管理员权限(使用 sudo),因为它涉及到系统级别的更改。设置默认选项后,符号链接将被更新,以链接到指定的路径。

--display

--displayalternatives 命令的一个选项,用于显示有关特定备选项的配置和信息。它允许你查看备选项的当前状态、优先级以及与之关联的路径等。以下是 --display 命令的参数详细说明:

 $ update-alternatives --display <name>
  • <name>:这是要显示信息的备选项的名称。该名称是你之前使用 --install 命令创建备选项时指定的名称。

通过执行 --display 命令,你可以查看与给定名称相关联的备选项的详细信息。

例如,如果你之前安装了备选项 myeditor,你可以执行以下命令:

 $ update-alternatives --display editor

这将显示与编辑器相关的备选项信息,包括当前使用的备选项、备选项的优先级、关联的路径等。

--display 命令通常不需要管理员权限,因为它只是显示信息,而不涉及对系统的实际更改。

--auto

--autoalternatives 命令的一个选项,用于自动选择备选项中的默认选项。当你在使用这个选项时,alternatives 会根据备选项的优先级自动选择一个默认选项。以下是 --auto 命令的参数详细说明:

 $ sudo update-alternatives--auto <name>
  • <name>:这是要自动选择默认选项的备选项的名称。该名称是你之前使用 --install 命令创建备选项时指定的名称。

通过执行 --auto 命令,你可以使系统根据备选项的优先级自动选择一个默认选项。优先级较高的备选项将被选中作为默认选项。

例如,如果你之前安装了备选项 myeditor,你可以执行以下命令:

 update-alternatives --auto editor

这将根据备选项的优先级自动选择一个编辑器作为默认选项。

请注意,执行 --auto 命令可能需要管理员权限(使用 sudo),因为它涉及到系统级别的更改。自动选择备选项不会显示交互式菜单,而是基于备选项的优先级进行自动选择。