update-alternatives命令
快速复习:
增加:$sudo update-alternatives --install 程序生成的快捷方式的目标完整位置 程序名 程序其中一个版本的完整路径
配置:$sudo update-alternatives --config 程序名(如java)
删除:$sudo update-alternatives --remove 程序名 其中不要版本的完整路径
如下:
$sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-openjdk-i386/bin/java 1071
$sudo update-alternatives --config java
$sudo update-alternatives --remove java /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java
1,作用:
在linux上可能有多个版本的gcc或g++,Debian 系列发行linux 用 sudo update-alternatives 命令可以设置一个版本当设置默认程序。
多个版本的应用共用一个组名,如java,这个java 并不是一个真正的程序,它是一个快捷方式文件,配置默认程序,在 /etc/alternatives/ 下。
2,命令
在终端输入 update-alternatives --help
Usage: update-alternatives [<option> ...] <command> Commands:
--install <link> <name> <path> <priority>
[--slave <link> <name> <path>] ...
add a group of alternatives to the system.
--remove <name> <path> remove <path> from the <name> group alternative.
--remove-all <name> remove <name> group from the alternatives system.
--auto <name> switch the master link <name> to automatic mode.
--display <name> display information about the <name> group.
--query <name> machine parseable version of --display <name>.
--list <name> display all targets of the <name> group.
--get-selections list master alternative names and their status.
--set-selections read alternative status from standard input.
--config <name> show alternatives for the <name> group and ask the
user to select which one to use.
--set <name> <path> set <path> as alternative for <name>.
--all call --config on all alternatives. <link> is the symlink pointing to /etc/alternatives/<name>.
(e.g. /usr/bin/pager)
<name> is the master name for this link group.
(e.g. pager)
<path> is the location of one of the alternative target files.
(e.g. /usr/bin/less)
<priority> is an integer; options with higher numbers have higher priority in
automatic mode. Options:
--altdir <directory> change the alternatives directory.
--admindir <directory> change the administrative directory.
--log <file> change the log file.
--force allow replacing files with alternative links.
--skip-auto skip prompt for alternatives correctly configured
in automatic mode (relevant for --config only)
--verbose verbose operation, more output.
--quiet quiet operation, minimal output.
--help show this help message.
--version show the version.
其中4个很重要
- $sudo update-alternatives --install 程序生成的快捷方式的完整位置 程序名 程序其中一个版本的完整路径
$sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-openjdk-i386/bin/java 1071
会在/usr/bin 和 /etc/alternatives 下生成相应文件。
- $sudo update-alternatives --remove 程序名 其中不要版本的完整路径,如:
$sudo update-alternatives --remove java /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java
- $sudo update-alternatives --config 程序名 ,如:
$sudo update-alternatives --config java
- 彻底删除
$sudo update-alternatives --remove-all java
会把/etc/alternatives/java也删掉
3,示例
以共存多个jdk为例:
注意:
这种方法并不好,这种只能改一个程序的默认版本,如java,但是javac、javah等还是前一个版本的,要同样的操作java,javah,javac等才是完整的改jdk版本,改jdk版本用环境变量切换脚本比这个方法好。 参看 这里「linux 切换多个jdk脚本」。
现在系统中已经安装了openjdk7,同时又想与jdk8共存,按下方法操作:
第1步:安装jdk8
下载 jdk安装文件,解压并复制到 /usr/lib/jvm/ 下
第2步:把jdk8安装到java alternatives中
$sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_102/bin/java 2048
其中:
- /usr/bin/java 是个快捷方式,它是java的生成的快捷方式的完整路径,这里把它生成的在/usr/bin/java
- java 是多个java版本的组名
- /usr/lib/jvm/jdk1.8.0_102/bin/java 是其中jdk8版本java的完整路径。
- 2048 是jdk8版本的优先级 ,当命令链接已存在时,需高于当前值,因为当alternative为自动模式时,系统默认启用priority高的链接
第3步:配置
$sudo update-alternatives --config java
选择其中一个就可以 了。
注意:如果添加错了,可以用--remove 删除
$sudo update-alternatives --remove java /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java
4,疑问
如果在 .profile或者.bashrc里配置了JAVA_HOME,并加入了PATH,那么
alternatives指定的和 .profile或者.bashrc 认优先?如:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_102
export PATH=$JAVA_HOME/bin:$PATH:.
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
这要看PATH路径先后,
export PATH=$JAVA_HOME/bin:$PATH:. 就是/usr/lib/jvm/jdk1.8.0_102/bin/java 先。
export PATH=$PATH:$JAVA_HOME/bin:. 就是/usr/bin/java先
update-alternatives命令的更多相关文章
- alternatives命令使用方法
alternatives命令使用方法 alternatives是Linux下的一个功能强大的命令.仅仅能在root权限下运行.如系统中有几个命令功能十分相似,却又不能任意删除,那么能够用 altern ...
- 使用Linux的alternatives命令替换选择软件的版本
上周在安装搜索引擎Elasticsearch时,要求安装比较新的java 版本,我选择了java 1.8.0,安装java 成功后使用java -version 发现使用的版本仍旧是1.6.0, 查询 ...
- alternatives 命令学习
最经在捣鼓Cloudera的cdh ,发现里面使用了alternatives命令,由于不懂这个命令,让我走了好多弯路. 现在mark一下 ubuntu 12.04 系统的命令为:update-alte ...
- alternatives命令用法
alternatives是Linux下的一个功能强大的命令.只能在根权限下执行.如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用替代指定一个全局的设置.alternatives常用于同一个 ...
- 关于Linux系统下jdk版本切换问题(alternatives命令的使用)
[root@danny lib]# cd /usr/lib/jvm [root@danny jvm]# [root@danny jvm]# ls java java--openjdk-.b13.el7 ...
- linux alternatives命令详解
alternatives是Linux下的一个功能强大的命令.只能在root权限下执行.如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 alternatives 来指定一个全局的设置. a ...
- 运行npm update等命令出错后如何分析问题根源
我今天工作时,在当前前端项目工作目录下执行命令npm update 结果遇到如下错误:registry error parsing json npm ERR! Unexpected token < ...
- npm update常用命令使用
一.更新 npm-check检查更新 npm install -g npm-check npm-check 2. npm-upgrade更新 npm install -g npm-upgrade np ...
- ceph-deploy install时,远端节点在执行apt-get update命令时失败
环境 OS:Ubuntu 16.04 背景 使用ceph-deploy部署Ceph集群,调用ceph-deploy install命令在远端节点安装ceph环境,执行apt-get update命令时 ...
- (笔记)Mysql命令update set:修改表中的数据
update set命令用来修改表中的数据. update set命令格式:update 表名 set 字段=新值,… where 条件; 举例如下:mysql> update MyClass ...
随机推荐
- java装饰者模式理解
java 装饰者模式其实就是扩展子类的功能,和继承是一个性质. 但继承是在编译时就固定扩展了父类的一些功能,而装饰者模式是在运行过程中动态绑定对象,实现一个子类可以随时扩展功能. 将方法排列组合,也可 ...
- JVM中启用逃逸分析
-XX:+DoEscapeAnalysis 逃逸分析优化JVM原理我们知道java对象是在堆里分配的,在调用栈中,只保存了对象的指针.当对象不再使用后,需要依靠GC来遍历引用树并回收内存,如果对象数量 ...
- 夺命雷公狗---DEDECMS----8dedecms干掉首页和-文档页-栏目页的页面的广告
我们首先来将首页生成静态页面,如下图所示: 成功后,如下显示: 如果成功后则在文件夹下多了一个index.html的文件.. 我们的首页静态页面是通过模版文件生成,所以我们只需要把模版文件的广告标签删 ...
- 《zw版·delphi与halcon系列原创教程》hello,zw
<zw版·delphi与halcon系列原创教程>hello,zw 按惯例,第一个程序是‘hello’ 毕竟,Halcon是专业的图像库,所以我们就不用纯文本版的,来一个专业版.Halco ...
- [转载]Emmet使用手册
转载地址: http://www.w3cplus.com/tools/emmet-cheat-sheet.html 介绍 Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率 ...
- oracle中的函数
ORACLE中函数 Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型.常见的 ...
- 视频处理控件TVideoGrabber中如何混合多个视频源(2)
在前面的<视频处理控件TVideoGrabber混合多个视频源(1)>一文中,已经对TVideoGrabber中混合视频源做了一些内容的说明,本文将继续前文: >>>TV ...
- 161104、NoSQL数据库:key/value型之levelDB介绍及java实现
简介:Leveldb是一个google实现的非常高效的kv数据库,能够支持billion级别的数据量了. 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计.特别是LSM算法.LevelDB ...
- linux死锁检测的一种思路【转】
转自:http://www.cnblogs.com/mumuxinfei/p/4365697.html 前言: 上一篇博文讲述了pstack的使用和原理. 和jstack一样, pstack能获取进 ...
- Docker CPU 资源限制——CPU固定核功能测试
Docker使用Linux cgroup来实现资源的限制,对于CPU的限制有两种方法: 1.cpuset CPU Set限定容器使用某个固定的CPU核.使用默认的libcontainer引擎时,可以通 ...