我从不生产知识,我只是知识的搬运工 。
1 简介
update-alternatives是Ubuntu系统下的命令工具,可以对各种命令工具的多个版本进行管理;
比如当前系统安装了gcc-5.x版本,而现在想用gcc-3.x版本,就可以用update-alternatives工具在多个版本间切换,而不用重新卸载安装,重新配置环境之类的;
2 原理
在系统路径下,/usr/bin/<name>其实是个软链接,指向了文件/etc/alternatives/<name>,而这个文件也是个软链接,指向了实际的可执行文件;因此通过两次软链接就找到了实际的可执行文件;
update-alternatives针对各个工具的版本管理都是通过更改/etc/alternatives/<name>这个软链接来实现的;
比如当前系统使用的gcc版本是4.8,切换到gcc-5后,软链接就变成了相应的gcc-5;
3 使用
3.1 添加一个新的alternatives组
update-alternatives --install <link> <name> <path> <priority>
<link>:这个命令的符号引用,如/usr/bin/gcc;
<name>:这个链接组的名称,如gcc;
<path>:这个命令对应的可执行文件的实际路径,如/usr/bin/gcc-4.8;
<priority>: 优先级,数值越大,优先级越高;
比如新添加一个gcc的alternatives组,如下:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 200
3.2 切换版本
update-alternatives --config <name>
比如要切换gcc版本到4.7,执行命令如下:
sudo update-alternatives --config gcc
3.3 查看命令已注册的版本信息
update-alternatives --list <name>
update-alternatives --display <name>
3.4 在alternatives组里删除一项符号链接
update-alternatives --remove <name> <path>
比如在alternatives组里删除gcc-5这一项,输入命令:
update-alternatives --remove gcc /usr/bin/gcc-5
再查看gcc在alternatives里已注册的版本信息,就没有gcc-5这一项了;