update-alternatives是ubuntu系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本,比如,我们在系统中同时安装了open jdk和sun jdk两个版本,而我们又希望系统默认使用的是sun jdk,那怎么办呢?通过update-alternatives就可以很方便的实现了。

sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_27/bin/java 1062

其中1062 为alternative更改后的优先级,新更改的优先级需要大于当前的,通过update-alternatives --display java 可以查看。

1、display选项的功能就是查看一个命令链接组的所有信息,包括链接的模式(自动还是手动)、链接priority值、所有可 用的链接命令等等。使用语法:update-alternatives --display name ,其中name为命令链接名称,如java,执行命令: update-alternatives --display java 将会出现类似下面的结果

java - auto mode

link currently points to /opt/java/jdk1.6.0_27/bin/java

/opt/java/jdk1.6.0_27/bin/java - priority 1062

/usr/lib/jvm/java-6-openjdk/jre/bin/java - priority 1061

slave java.1.gz: /usr/lib/jvm/java-6-openjdk/jre/man/man1/java.1.gz

Current 'best' version is '/opt/java/jdk1.6.0_27/bin/java'.

2、install选项的功能就是增加一组新的系统命令链接符了,使用语法为:update-alternatives --install link name path priority [--slave link name path]... 其中link为系统中功能相同软件的公共链接目录,比如/usr/bin/java(需绝对目录); name为命令链接符名称,如java; path为你所要使用新命令、新软件的所在目录; priority为优先级,当命令链接已存在时,需高于当前值,因为当alternative为自动模式时,系统默认启用priority高的链接; --slave为从alternative。

alternative有两种模式:auto和manual,默认都为auto模式,因为大多数情况下update-alternatives命令都被postinst (configure) or prerm (install)调用的,如果将其更改成手动的话安装脚本将不会更新它了。

3、remove选项的功能是删除一个alternative及相关从alternative,使用语法为:update-alternatives --remove name path,其中name与path与install中的一致,如果所删除的链接组中还有其他链接的话,系统将会自动从其他中选择一个priority高的链接作为默认为链接。

4、config选项功能为在现有的命令链接选择一个作为系统默认的,使用语法为:update-alternatives --config name,如执行:sudo update-alternatives --config java,将会有类似以下信息:

There are 2 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                      Priority   Status

------------------------------------------------------------

* 0            /opt/java/jdk1.6.0_27/bin/java             1062      auto mode

1            /opt/java/jdk1.6.0_27/bin/java             1062      manual mode

2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode

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

若是想将manual改回自动模式的话,执行命令: update-alternatives --auto name即可,如

update-alternatives --config  java

ubuntu update-alternatives的更多相关文章

  1. 解决UBUNTU update KEY错误的问题

    114down voteaccepted Run the following in your terminal, sudo apt-key adv --keyserver keyserver.ubun ...

  2. ubuntu update时发生错误

    The following packages have been kept back解决方案Ubuntu和Debian下更新软件包,在运行 sudo apt-get upgrade 有时会看到如下提示 ...

  3. ubuntu update dns server

    edit:  /etc/resolvconf/resolv.conf.d/base nameserver 114.114.114.114 execute this: $ resolvconf -u f ...

  4. 2016032701 - ubuntu安装jdk

    参考地址:http://jingyan.baidu.com/article/d621e8da0e92052865913f32.html 1.首先需要去oracle官网去下载jdk1.8,我本人下载的是 ...

  5. ubuntu环境下docker安装步骤

    本文是根据docker官方文档翻译,原文:https://docs.docker.com/engine/installation/linux/ubuntulinux/ Docker 支持以下 Ubun ...

  6. Install OpenCV 3.0 and Python 2.7+ on Ubuntu

    为了防止原文消失或者被墙,转载留个底,最好还是去看原贴,因为随着版本变化,原贴是有人维护升级的 http://www.pyimagesearch.com/2015/06/22/install-Open ...

  7. ubuntu的常用liunx命令

    一.基本命令 1.查看Ubuntu版本 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Descriptio ...

  8. Install Greenplum OSS on Ubuntu

    About Greenplum Database Greenplum Database is an MPP SQL Database based on PostgreSQL.  Its used in ...

  9. 将 Ubuntu 16.04 LTS 升级到 Ubuntu 18.04 LTS

    将 Ubuntu 16.04 LTS 升级到 Ubuntu 18.04 LTS   Ubuntu 18.04 LTS(Bionic Beaver)即将发布, 如果您正在使用Ubuntu 16.04LT ...

  10. ubuntu install zabbix

    ubuntu install zabbix reference1 reference2 some ERRORS raise during install process, may it help. z ...

随机推荐

  1. day22<IO流+>

    IO流(序列流) IO流(序列流整合多个) IO流(内存输出流) IO流(内存输出流之黑马面试题) IO流(对象操作流ObjecOutputStream) IO流(对象操作流ObjectInputSt ...

  2. 如何根据select选择的值反查option的属性

    有时候select已经被选中了,想知道这个选中option的属性又该如何处理呢? 我这里提供一种粗暴的方式 <!DOCTYPE HTML> <html lang="en-U ...

  3. python2.0_s12_day10_Twsited异步网络框架

    Twsited异步网络框架 Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等. Package application Configu ...

  4. C++虚继承的概念[转]

    C++中虚拟继承的概念 为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类.这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数 ...

  5. linux 上安装pstree

    linux 无法使用pstree centos7上默认没有安装psmisc包. 1.在 Mac OS上 brew install pstree 2.在 Fedora/Red Hat/CentOS yu ...

  6. Java实现远程服务生产与消费(RPC)的4种方法-RMI,WebService,HttpClient,RestTemplate

    目录 一. 通过rmi实现远程服务的生产与消费 远程服务提供者实现. 创建rmi-provider项目(Maven) 远程服务消费者实现 创建rmi-consumer项目 二. 通过WebServic ...

  7. Python 3 利用 Dlib 实现人脸 68个 特征点的标定

    0. 引言 利用 Dlib 官方训练好的模型 “shape_predictor_68_face_landmarks.dat” 进行 68 个点标定: 利用 OpenCv 进行图像化处理,在人脸上画出 ...

  8. Java多线程(4)----线程的四种状态

    与人有生老病死一样,线程也同样要经历开始(等待).运行.挂起和停止四种不同的状态.这四种状态都可以通过Thread类中的方法进行控制.下面给出了Thread类中和这四种状态相关的方法. 1 // 开始 ...

  9. CentOS7安装步骤详解

    准备环境 1.虚拟机  VMware Workstation 2.Centos7-64位安装包  ( CentOS-6.7-x86_64-bin-DVD1.iso ) 开始安装   进入安装初始化界面 ...

  10. 3.html+.ashx(删除学生信息)

    C03ListStu.ashx 0:false(删除);1:true(正常). (数据库里定义个BOOL型,TRUE表示正常FALSE表示删除) <html> <head> & ...