update-alternatives 命令用于处理 Linux 系统中软件版本的切换,使其多版本共存。alternatives 的管理目录 /etc/alternatives

alternatives 管理方式

$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 24 1120 2017 /usr/bin/python -> /etc/alternatives/python $ ls -l /etc/alternatives/python
lrwxrwxrwx 1 root root 18 1121 2017 /etc/alternatives/python -> /usr/bin/python2.7

python 这个可执行命令实际是一个链接,指向了 /etc/alternatives/python 。而这个也是一个链接,指向了 /usr/bin/python2.7 ,这才是最终的可执行文件。alternatives 实际上是通过软链接的方式对版本进行管理。

语法

$ update-alternatives --help
用法:update-alternatives [<选项> ...] <命令> 命令:
--install <链接> <名称> <路径> <优先级>
[--slave <链接> <名称> <路径>] ...
在系统中加入一组候选项。
--remove <名称> <路径> 从 <名称> 替换组中去除 <路径> 项。
--remove-all <名称> 从替换系统中删除 <名称> 替换组。
--auto <名称> 将 <名称> 的主链接切换到自动模式。
--display <名称> 显示关于 <名称> 替换组的信息。
--query <名称> 机器可读版的 --display <名称>.
--list <名称> 列出 <名称> 替换组中所有的可用候选项。
--get-selections 列出主要候选项名称以及它们的状态。
--set-selections 从标准输入中读入候选项的状态。
--config <名称> 列出 <名称> 替换组中的可选项,并就使用其中哪一个,征询用户的意见。
--set <名称> <路径> 将 <路径> 设置为 <名称> 的候选项。
--all 对所有可选项一一调用 --config 命令。 <链接> 是指向 /etc/alternatives/<名称> 的符号链接。(如 /usr/bin/pager)
<名称> 是该链接替换组的主控名。(如 pager)
<路径> 是候选项目标文件的位置。(如 /usr/bin/less)
<优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。
..........

实例

  • display 参数显示关于 Python 替换组的信息
$ update-alternatives --display python
python - 手动模式
link best version is /usr/bin/python3.5
链接目前指向 /usr/bin/python2.7
link python is /usr/bin/python
/usr/bin/python2.7 - 优先级 1
/usr/bin/python3.5 - 优先级 2
  • 选择候选项
$ update-alternatives --config python
有 2 个候选项可用于替换 python (提供 /usr/bin/python)。
选择 路径 优先级 状态
------------------------------------------------------------
0 /usr/bin/python3.5 2 自动模式
* 1 /usr/bin/python2.7 1 手动模式
2 /usr/bin/python3.5 2 手动模式 要维持当前值[*]请按<回车键>,或者键入选择的编号:
  • install 参数用于添加一个命令的link值
# 添加 python link
$ update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2 # 第一个参数: --install 表示向update-alternatives注册服务名。
# 第二个参数: 注册最终地址,成功后将会把命令在这个固定的目的地址做真实命令的软链,以后管理就是管理这个软链;
# 第三个参数: 服务名,以后管理时以它为关联依据。
# 第四个参数: 被管理的命令绝对路径。
# 第五个参数: 优先级,数字越大优先级越高。
  • remove 参数用于删除一个命令的link值,其附带的slave也将一起删除
$ update-alternatives –remove python /usr/bin/python2.7

linux 软件多版本共存的更多相关文章

  1. Linux下快速静态编译Qt以及Qt动态/静态版本共存

    Qt下静态编译Qt,根据我的经验,如果按照Windows下那种直接拿官方sdk安装之后的文件来编译是行不通的,需要直接下载Qt的source包,目前诺基亚的源码叫做qt-everywhere-open ...

  2. 使用Linux的alternatives命令替换选择软件的版本

    上周在安装搜索引擎Elasticsearch时,要求安装比较新的java 版本,我选择了java 1.8.0,安装java 成功后使用java -version 发现使用的版本仍旧是1.6.0, 查询 ...

  3. Python linux多版本共存以及虚拟环境管理(转摘)

    Python linux多版本共存以及虚拟环境管理 2017年08月01日 18:42:25 sliderSun 阅读数:197更多 个人分类: python   版权声明:本文为博主原创文章,未经博 ...

  4. Linux系统之路——python多版本共存问题(ps:自行切换python版本,pip安装遇到的一些问题)

    经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2.x,自己需要Python 3.x: 此时需要在系统中安装多个Python, ...

  5. linux 下多版本gcc 共存问题

    linux 下多版本gcc 共存问题 http://blog.csdn.net/isfirst/article/details/42296583 参考 http://blog.csdn.net/chi ...

  6. Linux下快速静态编译Qt以及Qt动态/静态版本共存(提供了编译4.6,5.6的精通编译脚本,并且apt-get install 需要的库也全列出来了。还有分析问题的心理过程)good

    qt4.6 Linux./configure -static -release -confirm-license -opensource -qt-zlib -qt-libpng -qt-libjpeg ...

  7. centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课

    centos LAMP第一部分-环境搭建  Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课 打命令之后可以输入: e ...

  8. linux 软件的安装与Tarball

    Linux 系统上真正认识的可执行文件其实是二进制文件 ( binary program ) shell scripts 只是利用 shell (例如 bash) 这支程序的功能进行一些判断式,而最终 ...

  9. linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

    红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...

随机推荐

  1. cache verilog实现

    cache原理: https://www.cnblogs.com/mikewolf2002/p/10984976.html cache的verilog实现 实现的cache是16k, 4way组相连c ...

  2. linux防火墙和SELinux

    1. 关闭防火墙 永久性生效 开启:chkconfig iptables on 关闭:chkconfig iptables off 即时生效 开启:service iptables start 关闭: ...

  3. LabWindows/CVI第一章:基本规则

    一. #include<stdio.h>      //头文件,#号是预处理指令,standard input output header的缩写. void main()          ...

  4. 前端开发者必备的Nginx知识

    摘要: 最常用的Web服务器 -- Nginx 原文:前端开发者必备的Nginx知识 作者:ConardLi Fundebug经授权转载,版权归原作者所有. Nginx在应用程序中的作用 解决跨域 请 ...

  5. IDEA Mac 快捷键

    智能提示 ⌘ -> command ⇧ -> shift ⌥ -> option ⬆ -> 上箭头 ⬇ -> 下箭头 ⌃ -> Control 编辑 快捷键 说明 ...

  6. Idea中Spring整合MyBatis框架中配置文件中对象注入问题解决方案

    运行环境:Spring框架整合MaBitis框架 问题叙述: 在Spring配置文件applicationContext-mybatis.xml中配置好mybatis之后 <?xml versi ...

  7. 在 Visual Studio 中安装 FxCop 分析器

    本文转自 微软官网 : https://docs.microsoft.com/zh-cn/visualstudio/code-quality/install-fxcop-analyzers?view= ...

  8. Python使用进程间共享变量来控制两个进程(监听键盘和相机录制)的交互

    我有个简单的应用需求: 1. 该应用随时会监听键盘的输入: 2. 当输入指定键时会控制相机录制的启动和关闭. 监听键盘是一个事件循环,相机录制也是一个循环录制的过程.我试着用 Python 启动两个进 ...

  9. 【笔试题】python文件操作

    请说出下面代码结果及原因,很easy. 说明:test.txt文件不存在 with open('test.txt','w+') as f: f.write('34') f.seek(0) f.writ ...

  10. 19-C#笔记-多态性

    # 静态多态性 --- ## 1 函数重载 和C++一样. --- ## 2 运算符重载 public static operator public static Box operator+ (Box ...