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