快速复习:

增加:$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命令的更多相关文章

  1. alternatives命令使用方法

    alternatives命令使用方法 alternatives是Linux下的一个功能强大的命令.仅仅能在root权限下运行.如系统中有几个命令功能十分相似,却又不能任意删除,那么能够用 altern ...

  2. 使用Linux的alternatives命令替换选择软件的版本

    上周在安装搜索引擎Elasticsearch时,要求安装比较新的java 版本,我选择了java 1.8.0,安装java 成功后使用java -version 发现使用的版本仍旧是1.6.0, 查询 ...

  3. alternatives 命令学习

    最经在捣鼓Cloudera的cdh ,发现里面使用了alternatives命令,由于不懂这个命令,让我走了好多弯路. 现在mark一下 ubuntu 12.04 系统的命令为:update-alte ...

  4. alternatives命令用法

    alternatives是Linux下的一个功能强大的命令.只能在根权限下执行.如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用替代指定一个全局的设置.alternatives常用于同一个 ...

  5. 关于Linux系统下jdk版本切换问题(alternatives命令的使用)

    [root@danny lib]# cd /usr/lib/jvm [root@danny jvm]# [root@danny jvm]# ls java java--openjdk-.b13.el7 ...

  6. linux alternatives命令详解

    alternatives是Linux下的一个功能强大的命令.只能在root权限下执行.如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 alternatives 来指定一个全局的设置. a ...

  7. 运行npm update等命令出错后如何分析问题根源

    我今天工作时,在当前前端项目工作目录下执行命令npm update 结果遇到如下错误:registry error parsing json npm ERR! Unexpected token < ...

  8. npm update常用命令使用

    一.更新 npm-check检查更新 npm install -g npm-check npm-check 2. npm-upgrade更新 npm install -g npm-upgrade np ...

  9. ceph-deploy install时,远端节点在执行apt-get update命令时失败

    环境 OS:Ubuntu 16.04 背景 使用ceph-deploy部署Ceph集群,调用ceph-deploy install命令在远端节点安装ceph环境,执行apt-get update命令时 ...

  10. (笔记)Mysql命令update set:修改表中的数据

    update set命令用来修改表中的数据. update set命令格式:update 表名 set 字段=新值,… where 条件; 举例如下:mysql> update MyClass ...

随机推荐

  1. 在Tomcat里使用配置连接池连接数据库

    一:首先在Tomcat下的conf/context.xml文件里的contenx标签里配置数据源: <Resource name="jdbc/zzz" auth=" ...

  2. -05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作

    2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp ...

  3. 关于 VS 无法转到定义和无法转到使用的问题

    今天提交完代码以后突然发现  咦  怎么F12 .点击右键的方法都不能转到定义了    转到引用 也提示  没有发现   重启VS  还是不行 .去找王晓  他也不清楚(其实我知道 他应该也不清楚  ...

  4. MVC4中下拉菜单和单选框的简单设计方法

    举例一: @Html.LabelFor(model => model.Gender) @Html.DropDownListFor(model => model.Gender, new[] ...

  5. merge into 的用法

    已创建 1 行.   SQL> commit;   ----不带where子句 SQL>  merge into merge1   2     using merge2   3   on ...

  6. Tomcat上的项目部署到WebLogic上の注意事项

    1.修改web.xml: <!-- <display-name>weboutweb</display-name> --> <!-- 注释掉 display-n ...

  7. c 指针(一)

    一:什么是指针 变量i  的存储地址为P(假设为2000),*P  为指针变量 一个变量的地址称为该变量的“指针”.如果有另一个变量专门存放另一变量的地址(指针),则它称为“指针变量”. 指针是一个地 ...

  8. linux下的网络配置

    临时生效的命令: 设置静态ip: ip addr add 192.168.1.2/24 dev eth0 设置网关: ip route add default via 192.168.1.1 启动某个 ...

  9. SqlServer:此数据库处于单用户模式,导致数据库无法删除的处理

    此数据库处理单用户模式,尚在连接当中,无法删除(既使将SQLServer停止后再启动也是如此) USE [master] GO /****** Object: StoredProcedure [dbo ...

  10. 常用的I/O流类型

    1.I/O流类型基础.(类中方法和子类查看java spring API) 抽象类java.io.InputStream:是所有字节输入流的父类,定义了以字节为基本单位读取数据的基本方法 抽象类jav ...