在 Linux 系统中,update-alternatives
是一种用于管理命令软链接的工具,适合管理多个版本共存的程序,例如不同版本的 PHP、Java、GCC、Python 等。通过它可以灵活控制哪个版本被调用、切换默认版本、统一管理系统路径下的可执行程序。
✅ 基本原理
Linux 中大多数命令其实都是 /usr/bin/xxx
的可执行文件,这些文件很多是软链接:
ls -l /usr/bin/php
# 可能指向 -> /etc/alternatives/php
# 再指向 -> /usr/bin/php8.2
update-alternatives
就是负责管理 /etc/alternatives/
中的这些链接,并允许你注册多个候选路径、设置优先级、手动切换或自动切换。
✅ 常用参数说明
参数 | 说明 |
---|---|
--install |
添加一个新候选版本 |
--remove |
移除某个候选路径 |
--config |
手动选择当前使用哪个版本 |
--set |
直接设置当前使用路径 |
--display / --query |
查看当前配置状态 |
--auto |
恢复为优先级自动选择模式 |
▶ –install 参数详解
update-alternatives --install
是添加“候选版本”的关键命令,它的完整语法格式如下:
sudo update-alternatives --install <链接路径> <名字> <实际可执行路径> <优先级>
参数位置 | 含义 | 示例值 | 说明 |
---|---|---|---|
链接路径 |
创建的统一入口点 | /usr/bin/php |
这是用户最终执行命令时调用的路径 |
名字 |
系统识别用的名称 | php |
是“组名”,管理同类版本的别名 |
实际路径 |
程序的真实可执行文件路径 | /usr/bin/php7.4 |
要加入的某个版本路径 |
优先级 |
一个整数 | 74 |
数值越大,优先级越高,自动模式下会选择它 |
✅ 实例说明:
你系统中已经安装了 PHP 7.4 和 PHP 8.2,可以这样添加:
sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82
结果:
- 会建立
/etc/alternatives/php
→/usr/bin/php8.2
- 同时
/usr/bin/php
会是最终入口,间接指向 8.2
📎 注意事项:
- 这个命令并不会删除已存在的链接,只是“添加一个候选项”;
- 优先级影响“自动模式”(
--auto
)下的选择; 名字
一定要保持一致,比如php
,用来归组管理;- 不支持自动创建
实际路径
,它必须已经存在。
✅ 使用场景举例
▶ 管理多个 PHP 版本(7.4 和 8.2)
添加候选版本
sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82
手动切换版本
sudo update-alternatives --config php
终端提示选择:
There are 2 choices for the alternative php (providing /usr/bin/php):
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.2 82 auto mode
1 /usr/bin/php7.4 74 manual mode
设置为自动根据优先级
sudo update-alternatives --auto php
▶ 查看候选状态
sudo update-alternatives --display php
输出信息包含当前使用版本、优先级、是否手动模式等。
▶ 删除某个版本
sudo update-alternatives --remove php /usr/bin/php7.4
🧠 适合管理的典型程序
php
java
gcc
/g++
editor
(vim / nano / emacs)awk
/sh
/python
(⚠ Python 不推荐用此方式)
⚠ 注意事项
- 使用
--install
的路径必须真实存在; - 如果使用
update-alternatives
设置python
,可能会影响系统组件,慎用; - 它不会安装程序本身,只是管理已存在的路径和链接;
- 修改的是系统范围的命令,需
sudo
权限。
✅ 总结
update-alternatives
是 Linux 官方提供的软链接选择器,适用于系统中存在多个程序版本时的路径控制问题。它不负责安装或卸载软件,而是通过注册路径和配置优先级,实现快速切换和统一入口的目的。
对于开发者或运维人员,合理利用该命令可以让系统更可控、更灵活。