• 作者:老汪软件技巧
  • 发表时间:2024-09-03 15:01
  • 浏览量:

Debian 中的 update-alternatives 命令是系统上多版本软件管理的利器。它允许您轻松地在同一程序的不同版本之间切换。假设您在单个系统上安装了多个 Java 版本或 Python 版本,在 update-alternatives 的帮助下,您可以将程序的任何版本设置为系统的默认版本。

什么是 update-alternatives?

update-alternatives 是一个命令行工具,可帮助您设置、维护和管理不同版本软件的符号链接。这些符号链接指向系统上的实际文件,使得在不同版本之间切换变得很容易。

为什么用 update-alternatives?

当您的系统上安装了一个程序的多个版本,并且希望在它们之间轻松切换时,使用更新替代方案是有益的。例如,如果您安装了两个版本的 Python,您可以使用 update-alternatives 来切换系统使用的默认版本。

update-alternatives 是如何工作的?

当您在 Debian 上安装软件时,它通常会在 /usr/bin 目录。这些链接指向实际程序文件。

请参阅下图, php 8.3 被设置成 PHP 的默认版本,链接到 /usr/bin/php 二进制文件。

让我们看一些实际的例子来理解如何使用 update-alternatives 命令。

Example 1: Managing Multiple PHP Versions

我已经在系统上安装了 PHP 7.4, PHP 8.1 和 PHP 8.3。默认情况下,安装过程为每个已安装的版本创建 update-alternatives 引用,您可以使用以下命令在它们之间切换。

sudo update-alternatives --config php

执行命令后,您应该看到以下输出。

There are 3 choices for the alternative php (providing /usr/bin/php).
  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.3   83        auto mode
  1            /usr/bin/php7.4   74        manual mode
  2            /usr/bin/php8.1   81        manual mode
  3            /usr/bin/php8.3   83        manual mode
Press  to keep the current choice[*], or type selection number:

输入选择号并单击 Enter,以使其成为系统的默认 PHP 版本。

如何切换版本_切换另一个版本_

Example 2: Managing Java Versions

在前面的示例中,已经创建了链接,但是如果没有创建链接呢?我们需要为应用程序创建一组版本链接。假设您安装了多个 Java 版本,我们首先将不同的 java 版本添加到组中,然后选择默认版本。

让我们创建一个链接 Java 8,并命名组为 Java

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1

执行完命令后,您应该看到以下输出

update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode

接下来,在同一组中为 Java 11 创建一个链接

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 2

执行完命令后,您应该看到以下输出

update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode

使用以下命令,在版本之间切换

sudo update-alternatives --config java

执行完命令后,您应该看到以下输出

There are 2 choices for the alternative java (providing /usr/bin/java).
  Selection    Path                                         Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   2         auto mode
  1            /usr/lib/jvm/java-8-openjdk-amd64/bin/java    1         manual mode
  2            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   2         manual mode
Press  to keep the current choice[*], or type selection number:

选择任意选择号并按 Enter 使其成为系统上的默认 Java 版本。

我的开源项目