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

真给力,字节跳动年度首发《音视频开发进阶指南》限时领取,理论与实战齐飞 音视频播放:音视频同步音视频解封和封装:生成一个MP4。 阅读详情
AI摘要

本文详细介绍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 programs which 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[+], or type 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 (build 1.8.0_111-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.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 - priority 200

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

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:40 awk -> /usr/bin/gawk*

lrwxrwxrwx 1 root root  29 Dec 2 12:40 awk.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

 link awk is /usr/bin/awk

 slave awk.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

 slave awk.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

 slave awk.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 choices for 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 <enter> to keep the current choice[*], or type 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

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

Ubuntu update-alternatives 安装/管理多版本 Python3及PIP3 在ubuntu系统上,使用apt命令安装python只能获取到ubuntu发布的最高版本。例如我使用的ubuntu18.04只能安装python 3.6。在日常使用过程中,经常会遇到需要不同python版本的第三方软件,甚至有些工程强行指定python版本,版本高了也不行。所以我们需要在一台机器上安装多个python版本来应对,同时也要能方便切换版本。这也会带出对应python版本切换pip的问题。本文目的在于讲述完整的如何管理多版本python及pip的配置。 阅读详情

相关推荐

正确使用update-alternatives管理jdk环境的方法

update-alternatives java多环境管理 多个jdk 管理

荒野之鹰 8632

LINUX命令:update-alternatives(软件版本管理工具)

前言在基于 LINUX 操作系统之上安装所需开发环境组件时,可能会遇到无可避免的场景是:同一个组件,我们需要同时使用到两个或者更多的版本,比如 Java 有 1.6、1.7、1.8 等多版本,又比如 Python 有 2、3 等等,这里以 Python 组件为例,以搭建一套 Android 的 AOSP 编译环境为目标,对使用 update-alternatives 命令进一步详解。

叫我Aso的专栏 3523

Discrete Optimization (Coursera) 学习笔记 Week 1 introduction (开个帖子)

Week 1 Introduction 这位教授Pascal Van Hentenryck 真的算是优化领域神级别的人物了吧?截一张Google scholar的图大家感受一下… 居然在Coursera上看到了他开的课:Discrete Optimization。试听了几节后,发现讲得很有激情,而且深入浅出。遂决定花暑假跟完这一门课。 这门课每周花两三个小时介绍基础概念,然后得花十几个小时写作业(coding)… 一开始以为Coursera上的课的作业应该不会太难,然后第一次作业(knapsack)我就被

ZJ_11701的博客 656

update-alternatives软件版本管理工具

我从不生产知识,我只是知识的搬运工 。 1 简介 update-alternatives是Ubuntu系统下的命令工具,可以对各种命令工具的多个版本进行管理; 比如当前系统安装了gcc-5.x版本,而现在想用gcc-3.x版本,就可以用update-alternatives工具在多个版本间切换,而不用重新卸载安装,重新配置环境之类的; 2 原理 ...

哈乙风的博客 2301

微分中值定理

文章目录证明根的存在性证明不等式微分中值定理有关的证明题解题方法题目1题目2题目3题目4题目5题目6题目7题目8(难) 微分中值定理:把函数改变量与一点的导数值联系起来 中值定理意义:将函数与导数联系起来 证明根的存在性 证明根的存在性:零点定理和罗尔定理 由于无法说明两端点异号,所以想罗尔定理 构造一个辅助函数,这个辅助函数的导数为要证的方程 这个辅助函数在两端点值相等,说明辅助函数的导数在0到1内存在0点。 这也就是为什么要构造一个导数为要证明的方程的原因 证明不等式 题目中出现了两点函

sparky的博客 4905

ICLR 2022)ODConv:即插即用的动态卷积 (附代码)

一定程度上讲,ODConv可以视作CondConv的延续,将CondConv中一个维度上的动态特性进行了扩展,同时了考虑了空域、输入通道、输出通道等维度上的动态性,故称之为全维度动态卷积。ODConv是一种动态卷积算法,它的原理是在卷积过程中,根据输入数据的特征动态地调整卷积核的形状和大小,以适应不同的输入数据。具体来说,ODConv通过引入一个可学习的形变模块,根据输入数据的特征动态地调整卷积核的形状和大小,从而提高了卷积神经网络的性能。此外,相比常规卷积,动态卷积的卷积核参数往往是其n倍。

PLANTTHESON的博客 2万+

linux升级成功命令,linux软件版本管理命令update-alternatives使用详解

linux软件版本管理命令update-alternatives使用详解update-alternatives 命令用于处理linux系统中软件版本的切换,在各个linux发行版中均提供了该命令,命令参数略有区别,但大致是一样的。1、 注册软件以jdk为例,安装了jdk以后,先要在update-alternatives工具中注册;# update-alternatives --install /u...

weixin_42442653的博客 780

openwrt编译及第一个安装包教程

Date: 2017.03.14 Made:SuperDeverloper Email: na1206@live.com Target: For mt7688 based board说明:本人在学习过程中走了不少弯路,希望本文档能为后来者提供便利。欢迎复制和使用本文档。本文档记录了搭建openwrt编译环境以及快速创建ipk包(openwrt上的安装程序)。本文档在实际应用中做过几次修改,以帮

SuperDevloper的博客 1万+

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

linux软件版本管理命令update-alternatives使用详解update-alternatives 命令用于处理linux系统中软件版本的切换,在各个linux发行版中均提供了该命令,命令参数略有区别,但大致是一样的。1、 注册软件以jdk为例,安装了jdk以后,先要在update-alternatives工具中注册;# update-alternatives --install /u...

weixin_28929351的博客 350

UVM仿真卡住了?别慌!手把手教你定位并解决PH_TIMEOUT超时错误

本文详细解析了UVM仿真中常见的PH_TIMEOUT超时错误,提供了从错误诊断到解决方案的完整指南。通过理解错误机制、分析调试技巧和常见问题场景,帮助验证工程师快速定位并解决这一棘手问题,同时分享了预防措施与最佳实践,提升仿真效率。

weixin_28683065的博客 368

在Simulink中实现基于深度强化学习的控制算法仿真建模

通过上述步骤,你可以在Simulink中实现基于深度强化学习的控制算法仿真建模。这种方法适用于许多复杂的控制问题,尤其是当传统控制方法难以找到有效解决方案时。随着经验的积累,你可以进一步探索不同的深度强化学习算法及其变种,以适应更广泛的应用场景。此外,还可以结合其他先进技术(如迁移学习、多智能体协作等),提升模型的表现能力。

amy_mhd的博客 414

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

linux软件版本管理命令update-alternatives使用详解update-alternatives 命令用于处理linux系统中软件版本的切换,在各个linux发行版中均提供了该命令,命令参数略有区别,但大致是一样的。1、 注册软件以jdk为例,安装了jdk以后,先要在update-alternatives工具中注册;# update-alternatives --install /u...

weixin_33761747的博客 650

AI硬件加速:CPU vs GPU性能对比

AI硬件加速:CPU vs GPU性能对比 关键词:人工智能、硬件加速、CPU、GPU、性能对比、硬件架构、并行计算、优化策略、项目实战 摘要: 本文将深入探讨AI

AI天才研究院 1914

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

linux软件版本管理命令update-alternatives使用详解update-alternatives 命令用于处理linux系统中软件版本的切换,在各个linux发行版中均提供了该命令,命令参数略有区别,但大致是一样的。1、 注册软件以jdk为例,安装了jdk以后,先要在update-alternatives工具中注册;?12# update-alternatives --install...

weixin_34602954的博客 421

【软考】高项论文写作常见模板

本文主要介绍了YYYY年MM月DD日,我所在公司承接了XXXX项目的建设过程,包括了XXX,XXX,XXX内容,涉及到XXX,XXX,XXX技术。本人在项目中承载着项目经理的角色,主要负责了XXX,XXX,XXX方面事宜。此项目时间紧,任务重,实施过程中,我们特别注重了1、XXX 2、XXX 3、XXX几个方面,经过团队的一致努力,本项目按时交付,运行至今,客户反馈良好。但是在实施过程中,也曝露除了一些问题,包括了XXX,XXX等,通过应急处理和协调,这些问题都得到了妥善解决,没有影响到项目进度。

奶爸的编程之路,也就一周冷个三天 1687

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Linux】使用update-alternatives命令进行版本的切换

引言在Debian系统中,我们可能会同时安装有很多功能类似的程序和可选配置,可能会出现同一软件的多个版本并存的场景。比如像是一些编程语言工具,一些系统中自带的是python2.6,而现在python2.7和python3.4使用较多,还有java有1.6,1.7和1.8版本。 update-alternatives是Debian系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使

Jason Ding的专栏 3万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

inux软件版本管理命令update-alternatives使用详解 update-alternatives 命令用于处理linux系统中软件版本的切换,在各个linux发行版中均提供了该命令,命令参数略有区别,但大致是一样的。 1、 注册软件 以jdk为例,安装了jdk以后,先要在update-alternatives工具中注册; 序号 命令 1 # update-altern...

weixin_43835681的博客 429

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

update-alternatives 使用详解

update-alternatives 命令用于处理 Linux 系统中软件版本的切换,使其多版本共存。alternatives 的管理目录 /etc/alternatives 。 alternatives 管理方式 $ ls -l /usr/bin/python lrwxrwxrwx 1 root root 24 1120 2017 /usr/bin/python -> /etc/alternatives/python $ ls -l /etc/alternatives/python lrwx

weixin_43848954的博客 1849

ubuntu软件版本管理:update-alternatives

update-alternatives 命令用于处理 Linux 系统中软件版本的切换,使其多版本共存。alternatives 的管理目录 /etc/alternatives 。 alternatives 管理方式 $ ls -l /usr/bin/python lrwxrwxrwx 1 root root 24 1120 2017 /usr/bin/python -> /etc/alternatives/python $ ls -l /etc/alternatives/python.

知难行更难 1865

update-alternatives命令

update-alternatives命令

lmjssjj的专栏 3255

Linux系列讲解 —— 【update-alternatives】本地软件版本管理工具(以配置python为例)

有时候在电脑上安装了某个程序的多个版本,比如python,常见的有python2.7和python3.5。在不同情况下需要使用不同版本的软件包,此时就可以使用update-alternatives进行切换 1. 查看都安装了哪些版本 可以使用whereis或者ls查找一下,可以我的电脑上安装了python2.7和python3.5两个版本的程序包(默认执行程序都在/usr/bin中) sun@ubuntu:~$ whereis python python: /usr/bin/python3.5m /u.

In_engineer的博客 6820

linux 软件版本切换命令 update-alternatives 使用心得

这真的是一个很好用的命令,合乎逻辑,操作简单。 使用方法 比如,我有两个版本的gcc及g++,分别在如下两个目录: /usr/bin/gcc-5 /usr/bin/g++-5 /usr/local/bin/gcc-7 /usr/local/bin/g++-7 首先将这两个版本都配置好,具体的用法参照这里。 sudo update-alternatives --install /usr/bin/g...

weixin_43512663的博客 2154

alternatives命令用法

alternatives是Linux下的一个功能强大的命令。只能在root权限下执行。如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 alternatives 来指定一个全局的设置。 alternatives常用于同一个系统中安装同一软件的多个版本。比如为了开发需要,我需要安装JDK10,同时还需要JDK8,我怎么样才能忽略安装路径,按照我自己的意思,使用我想要的java版本呢? 命...

duan9015的博客 7589

Linux使用 update-alternatives 管理多版本软件

Linux多版本软件管理,适用于 Debian/Ubuntu 及其衍生系统(RHEL/Fedora 通常使用 alternatives,但语法类似)。

qq_36892712的博客 681
上一篇: which ,whereis命令
下一篇: 卸载linux自带java
hellocsz
博客等级 码龄9年 608粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值