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
alternatives 命令学习的更多相关文章
- 别出心裁的Linux命令学习法
别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚 ...
- Git版本控制软件结合GitHub从入门到精通常用命令学习手册(转)
简要参考:http://www.tuicool.com/articles/mEvaq2 http://gitref.org/zh/index.html GIT 学习手册简介 本站为 Git 学习参考手 ...
- penghui_031413 Bat命令学习
penghui_031413 Bat命令学习 基础部分:====================================================================== ...
- Linux命令学习
Linux命令学习 Ubuntu常用快捷键 •Ctrl+Alt+T: 打开终端 •Ctrl+Shift+T: 新建标签页 •Tab: 终端中命令补全 •Alt+数字N: 终端中切换到第N个标签页 •↑ ...
- alternatives命令使用方法
alternatives命令使用方法 alternatives是Linux下的一个功能强大的命令.仅仅能在root权限下运行.如系统中有几个命令功能十分相似,却又不能任意删除,那么能够用 altern ...
- Linux的几个概念,常用命令学习
Linux的几个概念,常用命令学习---------------------------------设备名装载点// 通过装载点访问设备-------------------------------- ...
- Java命令学习系列(7):Javap(转)
原文出处: Hollis(@Hollis_Chuang) javap是jdk自带的一个工具,可以对代码反编译,也可以查看java编译器生成的字节码. 一般情况下,很少有人使用javap对class文件 ...
- TCP/IP协议学习之实例ping命令学习笔记
TCP/IP协议学习之实例ping命令学习笔记(一) 一. 目的为了让网络协议学习更有效果,在真实网络上进行ping命令前相关知识的学习,暂时不管DNS,在内网中,进行2台主机间的ping命令的整个详 ...
- 使用Linux的alternatives命令替换选择软件的版本
上周在安装搜索引擎Elasticsearch时,要求安装比较新的java 版本,我选择了java 1.8.0,安装java 成功后使用java -version 发现使用的版本仍旧是1.6.0, 查询 ...
随机推荐
- 创建一个zookeeper的会话(实现watcher)
在先前的章节中,我们利用zkCli去了解了一下主要的zookeeper的操作.在接下来的章节中,我们将会学习一下在应用中是怎样利用zookeeper的api的.接下来我们将利用一个程序展示一下,怎样来 ...
- Java Unit Testing - JUnit & TestNG
转自https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaUnitTesting.html yet another insignifican ...
- 高仿webqq做的一个webos桌面效果和web聊天工具,桌面效果完好,功能强大
QQ技术交流群:159995692 /-------- 暂时开放的測试 帐号/password:[88888888/1;666666/1] ---------/ 正如大家所知的E ...
- C++中的const完全解析
1. const修饰普通变量和指针 const修饰变量,一般有两种写法:const TYPE value;TYPE const value; 这两种写法在本质上是一样的.它的含义是:const修饰的类 ...
- android checkbox radiogroup optionmenu dialog
\n换行 UI visible:View.INVISIBLE 不可见,占用空间,View.GONE 不可见,不占用空间 菜单 res右击新建menu xml 自动新建menu文件夹 context ...
- POJ1077 Eight —— 双向BFS
主页面:http://www.cnblogs.com/DOLFAMINGO/p/7538588.html (代码一直在精简完善……) 代码一:两个BFS, 两段代码: 用step控制“你一步, 我一步 ...
- YTU 2443: C++习题 复数类--重载运算符3+
2443: C++习题 复数类--重载运算符3+ 时间限制: 1 Sec 内存限制: 128 MB 提交: 1368 解决: 733 题目描述 请编写程序,处理一个复数与一个double数相加的运 ...
- MySQL数据库设计常犯的错以及对性能的影响
1.过分的反范式化为表建立太多的列 我们在设计数据库的结构时,比较容易犯的第一个错误就是对表进行了过分的反范式化的设计,这就容易造成了表中的列过多,虽然说Mysql允许为一个表建立很多的列,但是由于M ...
- Swift语言学习(四)字符串与Array等集合的使用
Swift 提供了C和Objective-C基础类型的自己一套版本,包括用于整型的Int,用于浮点值的Double和Float,用于布尔值的Boolean,和用于文本数据的String.Swift还提 ...
- html5--6-35 列表和表格
html5--6-35 列表和表格 实例 学习要点 掌握列表和表格的样式设置 表格有关的属性: border-collapse 设置是否把表格边框合并为单一的边框.属性值:separate 默认值/c ...