Debian & Ubuntu 设置默认程序方法
Debian & Ubuntu 使用 dpkg 包管理器,其包含一个 update-alternatives 工具,旨在解决默认首选程序的问题。在系统同时安装多个相同功能的程序情况下,可以按需设置指定程序及版本为默认。
update-alternatives 通过创建维护符号链接来确定命令关联的程序。默认程序的确定分自动和手动两种模式。自动模式根据程序自带优先级参数选择(由开发者设定),手动模式由用户自行设置切换。
update-alternatives 用法
update-alternatives [<选项> ...] <命令>
| 命令参数 | 执行操作 |
|---|---|
| –install <链接> <名称> <路径> <优先级> [–slave <链接> <名称> <路径>] |
创建程序候选组,添加候选程序参数 <链接>是指向 /etc/alternatives/<名称> 的符号链接(例如 /usr/bin/pager)<名称>是该链接组的主名称 (例如 pager)<路径>是程序目标文件的位置 (例如 /usr/bin/less)<优先级>是一个整数,自动模式下数字越高程序优先级越高 –slave 是一个可选项参数,用于设置程序关联的次要链接 |
| –remove <名称> <路径> | 从<名称>候选组中删除<路径>项 |
| –remove-all <名称> | 删除<名称>候选组记录 |
| –auto <名称> | 将<名称>的主链接切换到自动模式 |
| –display <名称> | 显示有关<名称>候选组的信息 |
| –query <名称> | 机器可读版的 –display <名称> |
| –list <名称> | 显示<名称> 候选组里的所有可用候选项 |
| –get-selections | 列出主候选项名称和它们的状态 |
| –set-selections | 从标准输入中读取候选项的状态 |
| –config <名称> | 列出<名称>候选组中的可选项,并由用户选择要使用哪一个。选择后,链接组将被设置为手动模式 |
| –set <名称> <路径> | 将<路径>设置为<名称>的候选项,同时候选组设置为手动模式 |
| –all | 对所有选项调用 –config 命令 |
| 选项参数 | 功能作用 |
|---|---|
| –altdir <目录> | 更改默认 /etc/alternatives/ 候选项目录 |
| –admindir <目录> | 更改默认 /var/lib/alternatives/ 管理目录 |
| –log <文件> | 更改日志文件 |
| –force | 允许强制用替代链接替换文件 |
| –skip-auto | 自动模式下跳过设置正确候选项的提示 (仅与 –config 相关) |
| –verbose | 输出详细操作信息 |
| –quiet | 安静模式,不输出信息 (除非出现错误) |
| –help | 显示 update-alternatives 帮助信息 |
| –version | 显示 update-alternatives 版本信息 |
设置默认程序示例
以设置默认文本编辑器为例。先看下 editor 可执行命令的链接路径情况。
# ls -l /usr/bin/editor lrwxrwxrwx 1 root root 24 Jan 8 16:22 /usr/bin/editor -> /etc/alternatives/editor # ls -l /etc/alternatives/editor lrwxrwxrwx 1 root root 9 Jan 8 16:22 /etc/alternatives/editor -> /bin/nano
上面依次查询的命令最终指向默认编辑器的可执行文件目录,结果为 nano 编辑器。
使用 update-alternatives --display editor 命令可以查看当前 editor 程序候选项的相关参数。
选择切换 editor 默认程序。下面演示将默认编辑器改为 Vim。
# update-alternatives --config editor There are 3 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/nano 40 manual mode 2 /usr/bin/vim.basic 30 manual mode 3 /usr/bin/vim.tiny 15 manual mode Press to keep the current choice[*], or type selection number: 2 update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode
切换程序版本示例
首先补充一下,有些程序未必会显示在候选列表里。例如 Python,查询提示不存在。
# update-alternatives --display python update-alternatives: error: no alternatives for python
需要手动创建 python 候选组,然后添加已经安装的程序版本,用 --install 命令,具体如下。
# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20 # update-alternatives --install /usr/bin/python python /usr/bin/python3.5 10
添加后再运行 update-alternatives --config python 命令切换程序版本。
Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/python2.7 20 auto mode 1 /usr/bin/python2.7 20 manual mode 2 /usr/bin/python3.5 10 manual mode
选择后查询是否已经切换成功。
# python --version Python 3.5.3

