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

整合Springboot+MybatisPlus+达梦数据库

整合Springboot+MybatisPlus+达梦数据库,以及一些坑

波波的博客 6677

update-alternatives软件版本管理工具

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

哈乙风的博客 2301

【提示学习代码】CoOp代码详读

CoOp是对CLIP的改进工作,主要是对prompt进行学习从而不用来手动设置prompt。自定义CLIP模型:上述两个模块结合而成的CLIP。文本编码器,接收文本的输入,并输出相应的编码表示。将图像和文本进行编码并计算它们之间的相似性。permute后变成了(4,2,3)Prompt学习器,用于学习生成提示。

weixin_51293984的博客 5816

DDR内存条选购避坑指南:单Rank vs 双Rank性能实测对比(附2024年颗粒推荐)

本文深入解析了内存条中单Rank与双Rank设计的原理与性能差异。通过实战测试对比,揭示了双Rank内存在高负载场景(如3D渲染、视频剪辑)中凭借Rank Interleaving技术带来的显著性能优势,并提供了2024年针对不同用户需求的DDR4/DDR5内存选购策略与避坑指南。

ik678901的博客 1129

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

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

weixin_42442653的博客 780

经典蓝牙中的Sniff、Hold与Park模式

若主设备在Sniff Attempt窗口外发送数据,从设备无法接收,需依赖重传机制。移动时立即传输数据。:Sniff Interval=20ms,Attempt=1时隙。:传感器每2秒唤醒一次同步信标,主设备按需唤醒特定传感器采集数据。Slave进入Sniff模式:每20ms唤醒1个时隙监听数据。:设备需要短暂执行高优先级任务(如扫描其他蓝牙设备)。:无数据传输超时后,设备可能自动进入Sniff模式。:主设备通过信标唤醒从设备,或从设备主动请求退出(:平衡功耗与响应速度,适合间歇性数据传输设备。

shishuangquan111的博客 1673

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

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

weixin_28929351的博客 350

贝叶斯核机回归估计混合物健康效应 【BKMR包】——实操篇

使用 ggplot2包绘制 h 的截面# 绘制总体风险摘要。

三分钟热度 5382

MCAL中Dsadc的配置

DSADC模块作为一个专用的模块,主要应用在编码器软解码,功能强大而复杂,这里介绍了Dsadc的mcal配置和详细描述,让你全面学习和理解这个模块功能和应用。

dhyw12399999的博客 788

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

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

weixin_33761747的博客 650

使用 MATLAB/Simulink 构建一个 核电站汽轮机与发电机协调控制系统 的仿真模型

在核电机组中,汽轮机-发电机系统是将核能最终转化为电能的关键环节。与火电机组不同,核反应堆的热惯性大、功率调节慢,因此汽轮机的控制策略需与反应堆特性相匹配,实现安全、稳定、高效的能量转换。维持发电机输出功率/频率稳定(响应电网调度)调节汽轮机进汽压力(匹配一回路蒸汽供应)实现“堆-机协调控制”保障机组在启停、变负荷、甩负荷等工况下的安全性本教程将带你使用构建一个核电站汽轮机与发电机协调控制系统汽轮机调速系统(调门控制)建模发电机与电网接口建模(同步机)

xiaoheshang_123的博客 188

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

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

weixin_34602954的博客 421

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

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

weixin_43835681的博客 429

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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、付费专栏及课程。

余额充值