Debian & Ubuntu 设置默认程序方法

Eric 教程 1,132 次浏览 评论已关闭

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