Linux · 2012/11/15 0

使用 update-alternatives 管理多版本共存的软件

今天因为特殊需求, 安装了一个较低版本的 gcc , 这样多个 gcc 版本之间的切换就成了问题
默认情况下, gcc 这种经常被各种版本弄来弄去的软件, 在系统中直接使用的通常都是个文件链接, 如下

$ ll /usr/bin/gcc
lrwxrwxrwx 1 root root 21 11月 15 11:23 /usr/bin/gcc -> /usr/bin/gcc-4.6

所以按照常规的做法来说, 只要直接替换这个链接文件到你确实需要的文件就可以了, 但是话说回来偶尔切换一次两次还好, 如果频繁的切换, 终究还是有点 egg pain 的.XD 因此本篇的主角 update-alternatives 就要登场了. update-alternatives的使用也很简单, 以本篇的gcc为例, 首先我们来添加 gcc 的配置管理

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc-4.1.2 40

由上可见, –install 对应了4个参数, 分别代表着: 实际执行软链, 配置名称, 实际执行文件, 权重, 这样我们针对 gcc 的配置就算完成了, 接下来就是看看如何使用了, 使用如下:

$ sudo update-alternatives --config gcc
有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。

  选择       路径                    优先级  状态
------------------------------------------------------------
* 0            /usr/bin/gcc-4.6           50        自动模式
  1            /usr/bin/gcc-4.6           50        手动模式
  2            /usr/local/bin/gcc-4.1.2   40        手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:_

只要填入对应的编号, 配置就算完成了.

至此多版本管理软件 update-alternatives 我们就算会用了, 更多帮助请参见 update-alternatives –help

另:我们现在来观察一下, gcc 当前的状态:

$ ll /usr/bin/gcc
lrwxrwxrwx 1 root root 21 11月 15 11:23 /usr/bin/gcc -> /etc/alternatives/gcc*

实际上是转为 gcc 生成了一个链接

参考资料: http://fhqdddddd.blog.163.com/blog/static/186991542010211102151596/