alternatives 命令学习

最经在捣鼓Cloudera的cdh ,发现里面使用了alternatives命令,由于不懂这个命令,让我走了好多弯路。

现在mark一下

ubuntu 12.04 系统的命令为:update-alternatives

RedHat 6.4 系统命令为:alternatives,其中update-alternatives命令是/usr/sbin/alternatives的软链接。

现在以ubuntu 12.04 系统为基础。

假设系统中一个程序,存在多个版本

/opt/chenfool/chent1/chentest

代码

#!/bin/bash

echo "test1"

/opt/chenfool/chent2/chentest

代码

#!/bin/bash

echo "test2"

将/opt/chenfool/chent1/chentest 程序加入alternatives管理中

update-alternatives --install /usr/sbin/chentest chentest /opt/chenfool/chent1/chentest 1

将/opt/chenfool/chent1/chentest 程序加入alternatives管理中

update-alternatives --install /usr/sbin/chentest chentest /opt/chenfool/chent2/chentest 2

说明:

update-alternatives --install <link> <name> <path> <priority>

link:是目标的程序

name:是指定你程序中在alternatives中的名字(建议与link同名),它会在/etc/alternatives目录下建立同名文件,同时,它也是个软链接

path:是你要真实的程序路径

priority:是你程序的版本号

建立好一个映射关系后,可以通过命令查看你的程序版本

update-alternatives --display chentest

输出:

/opt/chenfool/chent1/chentest - priority 1
/opt/chenfool/chent2/chentest - priority 2

选择你需要的版本

update-alternatives --config chentest

输出:

  Selection    Path                           Priority   Status
------------------------------------------------------------
* 0            /opt/chenfool/chent2/chentest   2         auto mode
  1            /opt/chenfool/chent1/chentest   1         manual mode
  2            /opt/chenfool/chent2/chentest   2         manual mode

Press enter to keep the current choice[*], or type selection number:

输入你的选择的版本即可。

原理:

/usr/sbin/chentest—>/etc/alternatives/chentest—>/opt/chenfool/chent1/chentest

它实质就是通过一个软链接来实现不同版本的选择。

alternatives存储对应关系的文件

ubuntu系统:/var/lib/dpkg/alternatives/chentest

RedHat系统:/var/lib/alternatives/chentest

manual
/usr/sbin/chentest

/opt/chenfool/chent1/chentest
1
/opt/chenfool/chent2/chentest
2

删除一个版本

update-alternatives --remove chentest /opt/chenfool/chent2/chentest

从alternatives 管理中删除一个程序,/usr/sbin/chentest会被删除

update-alternatives --remove-all chentest

手动清理alternatives的文件

rm -f /var/lib/dpkg/alternatives/chentest
rm -f /etc/alternatives/chentest
rm -f /usr/sbin/chentest

参考文章:

http://blog.csdn.net/chszs/article/details/4158485

posted @ 2014-05-29 14:17  chenfool  阅读(530)  评论(0编辑  收藏  举报