linux 软件 名称 更新,linux软件版本管理命令update-alternatives使用详解

linux软件版本管理命令update-alternatives使用详解

update-alternatives 命令用于处理linux系统中软件版本的切换,在各个linux发行版中均提供了该命令,命令参数略有区别,但大致是一样的。

1、 注册软件

以jdk为例,安装了jdk以后,先要在update-alternatives工具中注册;

?

1

2

# update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_91/bin/java 200

# update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_111/bin/java 300

其中:

第一个参数--install表示向update-alternatives注册服务名。

第二个参数是注册最终地址,成功后将会把命令在这个固定的目的地址做真实命令的软链,以后管理就是管理这个软链;

( --install link name path priority)

其中link为系统中功能相同软件的公共链接目录,比如/usr/bin/java(需绝对目录);name为命令链接符名称,如java path为你所要使用新命令、新软件的所在目录 priority为优先级,当命令链接已存在时,需高于当前值,因为当alternative为自动模式时,系统默认启用priority高的链接;# 整数 根据版本号设置的优先级(更改的优先级需要大于当前的)

第三个参数:服务名,以后管理时以它为关联依据。

第四个参数,被管理的命令绝对路径。

第五个参数,优先级,数字越大优先级越高。

2、查看已注册列表

?

1

2

3

4

5

6

# update-alternatives --display java

java - status is auto.

link currently points to/opt/install/jdk1.8.0_111/bin/java

/opt/install/jdk1.8.0_91/bin/java - priority 200

/opt/install/jdk1.8.0_111/bin/java - priority 300

Current `best' version is/opt/install/jdk1.8.0_111/bin/java.

3、 修改命令版本

注意--display开关使用时第一行信息:

?

1

java - auto/manual mode

默认为自动版本,根据优先级,使用优先级高的。

下面手动修改为jdk1.8.0_91:

交互式修改

交互式会提示一所有可用的列表, 选择对应的索引确认。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

# update-alternatives --config java

There are 2 programswhich provide'java'.

Selection  Command

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

1/opt/install/jdk1.8.0_91/bin/java

*+ 2/opt/install/jdk1.8.0_111/bin/java

Enter to keep the current selection[+], ortype selection number: 1

# java -version

java version"1.8.0_91"

Java(TM) SE Runtime Environment (build 1.8.0_91-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

# update-alternatives --display java

java - status is manual.

link currently points to/opt/install/jdk1.8.0_91/bin/java

/opt/install/jdk1.8.0_91/bin/java - priority 200

/opt/install/jdk1.8.0_111/bin/java - priority 300

Current `best' version is/opt/install/jdk1.8.0_111/bin/java.

看到当前状态变成了manual。

修改为自动:

?

1

2

3

4

5

6

7

8

9

10

11

12

# update-alternatives --auto java

# java -version

java version"1.8.0_111"

Java(TM) SE Runtime Environment (build1.8.0_111-b14)

Java HotSpot(TM)64-Bit Server VM (build25.111-b14, mixed mode)

# update-alternatives --display java

java - status is auto.

link currently points to /opt/install/jdk1.8.0_111/bin/java

/opt/install/jdk1.8.0_91/bin/java - priority200

/opt/install/jdk1.8.0_111/bin/java - priority300

Current `best' version is /opt/install/jdk1.8.0_111/bin/java.

又改为按照优先级高的了。

立即修改

除了交互式修改,也可以使用一条命令直接修改,修改后立即生效。

?

1

# update-alternatives --set java /opt/jdk1.8.0_91/bin/java

该情形适用于你对路径很熟悉,或者你已经进入了该路径:

?

1

2

# cd /opt/jdk1.8.0_91/bin/

# update-alternatives --set java $PWD/java

4、 update-alternatives是偏门命令吗?

可能你觉得这个命令很偏门,用处不大,但实际上在linux中早已被大量的使用。我们来挖掘一下,先看看我们注册的java做了什么:

?

1

2

3

4

5

6

7

8

9

10

11

12

# ls -l /usr/bin/java

lrwxrwxrwx 1 root root 22 Jan 16 01:45/usr/bin/java ->/etc/alternatives/java*

# ls -l /etc/alternatives/

total 12

drwxr-xr-x 2 root root 4096 Jan 16 01:57 ./

drwxr-xr-x 95 root root 4096 Jan 16 01:41 ../

lrwxrwxrwx 1 root root  13 Dec 2 12:40awk ->/usr/bin/gawk*

lrwxrwxrwx 1 root root  29 Dec 2 12:40awk.1.gz ->/usr/share/man/man1/gawk.1.gz

lrwxrwxrwx 1 root root  38 Dec 2 12:38 builtins.7.gz ->/usr/share/man/man7/bash-builtins.7.gz

lrwxrwxrwx 1 root root  12 Jan 12 02:04 c++ ->/usr/bin/g++*

...

首先可以看到我们的/usr/bin/java是一个软链, 它连接到/etc/alternatives目录中的另一个软链。

而/etc/alternatives中有很多软链,这里只列出了一部分。看到awk了吧?来看看它有哪些版本:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

# update-alternatives --display awk

awk - auto mode

link best version is/usr/bin/gawk

link currently points to/usr/bin/gawk

linkawk is/usr/bin/awk

slaveawk.1.gz is/usr/share/man/man1/awk.1.gz

slave nawk is/usr/bin/nawk

slave nawk.1.gz is/usr/share/man/man1/nawk.1.gz

/usr/bin/gawk - priority 10

slaveawk.1.gz:/usr/share/man/man1/gawk.1.gz

slave nawk:/usr/bin/gawk

slave nawk.1.gz:/usr/share/man/man1/gawk.1.gz

/usr/bin/mawk - priority 5

slaveawk.1.gz:/usr/share/man/man1/mawk.1.gz

slave nawk:/usr/bin/mawk

slave nawk.1.gz:/usr/share/man/man1/mawk.1.gz

5、管理软件包

开始我们以java为例,作为jre运行环境可以,但如果你作为开发测试环境,你会发现javac找不到。

?

1

2

# javac

-bash: javac:command not found

原因是我们只对java命令做了版本管理。

事实上,update-alternatives的原理是软链管理,可以处理目录。那么我们就可以把整个软件包目录都纳入管理。

首先清理掉原来配置的java命令配置。

?

1

2

# update-alternatives --remove java /opt/jdk1.8.0_91/bin/java

# update-alternatives --remove java /opt/jdk1.8.0_111/bin/java

ubuntu里可以直接使用下面的全部清除,centos没有:

?

1

# update-alternatives --remove-all java

注册javahome管理

?

1

2

3

4

5

6

7

8

9

10

11

12

# update-alternatives --install /usr/local/jdk jdk /opt/jdk1.8.0_111 300

update-alternatives: using/opt/jdk1.8.0_111 to provide/usr/local/jdk (jdk)in auto mode

# update-alternatives --install /usr/local/jdk jdk /opt/jdk1.8.0_91 200

# update-alternatives --display jdk

jdk - auto mode

link best version is/opt/jdk1.8.0_111

link currently points to/opt/jdk1.8.0_111

link jdk is/usr/local/jdk

/opt/jdk1.8.0_111 - priority 300

/opt/jdk1.8.0_91 - priority 200

配置jdk环境变量,指向注册的软链地址。

?

1

2

3

# echo export JAVA_HOME=/usr/local/jdk >>~/.bash_profile

# echo export PATH=$PATH:$JAVA_HOME/bin >>~/.bash_profile

# source ~/.bash_profile

管理JAVA_HOME

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

# echo $JAVA_HOME

/usr/local/jdk

# java -version

java version"1.8.0_111"

Java(TM) SE Runtime Environment (build 1.8.0_111-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

# javac -version

javac 1.8.0_111

# update-alternatives --config jdk

There are 2 choicesfor the alternative jdk (providing/usr/local/jdk).

Selection  Path        Priority  Status

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

* 0/opt/jdk1.8.0_111  300    auto mode

1/opt/jdk1.8.0_111  300    manual mode

2/opt/jdk1.8.0_91  200    manual mode

Press to keep the current choice[*], ortype selection number: 2

update-alternatives: using/opt/jdk1.8.0_91 to provide/usr/local/jdk (jdk)in manual mode

# echo $JAVA_HOME

/usr/local/jdk

# java -version

java version"1.8.0_91"

Java(TM) SE Runtime Environment (build 1.8.0_91-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

# javac -version

javac 1.8.0_91

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物联网技术应用案例

物联网应用的真正价值远远不至于联网小工具和智能冰箱。物联网的不断发展下,物联网应用正在不断的帮公司提高效率,降低成本并推动收入的增长。 但是,虽然您可能会想到很多的比较典型的物联网应用方案,比如常见的工业自动化和农业中…

【渝粤教育】国家开放大学2019年春季 0736-22T烹饪工艺学(2) 参考试题

科目编号:[0736] 座位号 2018-2019学年度第二学期期末考试 烹饪工艺学(2) 试题 2019年 4 月 一、名词解释(本大题共5小题,每小题4分,共计20分) 1.热增耗 2.烧 3.上浆工…

【渝粤教育】国家开放大学2019年春季 1062文学英语赏析 参考试题

试卷代号:1062 2 0 1 9年春季学期期末统一考试 文学英语赏析试题 2019年7月 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收…

工业级4G无线路由器有哪些特点如何选择

工业级4G无线路由器因其具性能高。传输速度快且数据处理能力强等这些比较突出的特点,在电力、交通、金融、工控等各大行业中都有着广泛的应用,并受到了人们高度推崇和青睐。那么,工业级4G无线路由器有那些的特点受到消费者的青睐呢&#xff1…

3分钟看懂工业交换机EMS试验和高低温测试

机子行不行,全靠试验评。上期IES6312的开箱视频中提到,我们该如何确定产品的稳定和可靠性,本期就是12口全千兆二层网管型工业以太网交换机系列测试视频,全视频一共做了4项试验:高低温测试、EMS试验三个(静电…

测试双打简介

在编写单元测试时,您会遇到许多协作者,并且他们都有非常特殊的行为,知道在正确的时间必须使用哪种测试两倍可以使您的生活更轻松。 假 第一个是Dummy对象,它是最简单的一个,Dummy只是您为满足构造函数而传递的对象&am…

NB-IoTDTU对比于3G/4G DTU的区别和优势

作为物联网领域的新兴技术,低功耗广域网技术NB-IOT自2016年问世以来,围绕着其开展的技术研发和市场布局也在高速的发展中。而曾占据历史舞台的传统的基于移动网络的3G/4G DTU也依然活跃在人们的眼中,那么新兴的NB-IOT DTU和3G/4G DTU有哪些区…

【渝粤教育】国家开放大学2019年春季 1161开放英语3 参考试题

科目编号:1161 座位号: 2018-2019学年第二学期期末考试 开放英语3 试题(闭卷) 2019年7月 I. 交际用语(共计10分,每小题 2分) 阅读下面的小对话,从A、B、C三个选项中选出一个能填入空白处的最佳选项, 并在答…

linux 中文ssid 显示,无法连接中文 SSID 的 Wi-Fi?简单几步就搞定!

忙里偷闲,今天把树莓派拿出来准备搞点事情,但发现宿舍的中文 SSID 无法被树莓派正确识别,变成了一堆 16 进制数:虽然如此,但我猜测只是显示上的问题,猜得出是哪个 Wi-Fi,剩下应该就没什么问题了…

安防专用交换机的应用介绍

安防专用交换机作为特别类型的交换机,最近几年,由于监控行业的迅速普及与应用,安防专用交换机开始迅速在安防领域内普及,使用数量急剧增加,为安防行业的发展,提供了强有力的源动力。那么,安防工业交换机的应…

ZigBee技术的应用和优势

ZigBee一词源自蜜蜂群在发现划分位置时,通过跳ZigZag形舞蹈来告知同伴,来达到交换信息的目的。可以说是一种小的低信息量的“无线"通信方式,人们也就借此称呼一种专注于低功耗,低成本、低复杂度、低速率的、低速率的近程无线…

【渝粤教育】国家开放大学2019年春季 1308外国文学专题 参考试题

试卷代号:1 308 2 0 1 9年春季学期期末统一考试 外国文学专题 试题(开卷) 2019年7月 一、选择题(请把下列作品的作者前的字母填在括号中。每题1分,共10分) 1.《四个四重奏》( ) A.乔…

linux 下 storm环境搭建,Storm在Ubuntu环境下的单机部署

Storm在Ubuntu环境下的单机部署目录查看Ubuntu安装JDK安装Pythod安装Zookeeper安装ZeroMQ安装Jzmp安装Storm查看Ubuntu是32位还是64uname -a返回结果 > SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux,可知Ubuntu为64位安装JDK#下载64位的JDKwget http:…

【渝粤教育】国家开放大学2019年春季 1398分析化学(本) 参考试题

试卷代号:1398 分析化学(本) 试题(开卷) 2019年7月 一、单项选择题(每题2分,共60分) 1.在定量分析中,精密度与准确度之间的关系是( )。 A.精密度高…

物联网中常见的传感器类型

物联网(IOT)是最近几年来最热门的技术流行语,它指的是:在收集、共享和分析数据,并从中创造价值。但如果没有准确数据,物联网也将成为一对无用的技术,因此,传感器和执行器的重要性使其…

杭州飞畅告诉你工业环网交换机到底是什么?

环网交换机是一种特殊的交换机,因为主流的环网交换机均为工业交换机,因此一般可以将其称为工业级环网交换机。那么,工业环网交换机到底是什么呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧! 环网,…

骆驼祥子大事件时间轴_骆驼中的事件处理

骆驼祥子大事件时间轴在上一篇有关骆驼-小水车的文章中,我介绍了骆驼-小水车的组件,并使用骆驼路线中的规则实现了一些简单的面向任务的过程。 今天,我将展示如何通过添加事件处理来扩展此示例。 那么如何描述一个事件呢? 每个事…

【渝粤教育】国家开放大学2019年春季 2205-22T开放英语2 参考试题

试卷代号:2205 2018—2019学年度第二学期期末考试 开放英语2试题 2019年7月 注 意 事 项一、将你的准考证号、学生证号、姓名及分校(工作站)名称填写在答题纸规定栏内。 考试结束后,把试卷和答题纸放在桌上。试题和答题纸均不得带…

zigbee工业应用技术

1、简介 在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有这很多的有点,但是任然存在很多的缺陷。对于工业,家庭自动化控制和遥测遥控领域而言,蓝牙的技术就显得过为复杂,功耗大,距离近而且组网规模太小等&a…

linux gdb网络调试工具,Linux--gdb调试工具

gdb是强大的调试工具,下面通过一个交换函数来初步认识他main.c#include #include void swap(int a, int b){int t;t a;a b;b t;}int main(){int a 3;int b 4;swap(a, b);printf("a %d\n b %d \n", a, b);}第一步:编译命令gcc -g -Wall …