佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > linux軟件版本管理命令update-alternatives使用詳解

linux軟件版本管理命令update-alternatives使用詳解

熱門標(biāo)簽:AI電銷 鐵路電話系統(tǒng) 服務(wù)外包 Linux服務(wù)器 呼叫中心市場需求 地方門戶網(wǎng)站 百度競價(jià)排名 網(wǎng)站排名優(yōu)化

linux軟件版本管理命令update-alternatives使用詳解

update-alternatives 命令用于處理linux系統(tǒng)中軟件版本的切換,在各個(gè)linux發(fā)行版中均提供了該命令,命令參數(shù)略有區(qū)別,但大致是一樣的。

1、 注冊(cè)軟件

以jdk為例,安裝了jdk以后,先要在update-alternatives工具中注冊(cè);

# 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

其中:

第一個(gè)參數(shù)--install表示向update-alternatives注冊(cè)服務(wù)名。

第二個(gè)參數(shù)是注冊(cè)最終地址,成功后將會(huì)把命令在這個(gè)固定的目的地址做真實(shí)命令的軟鏈,以后管理就是管理這個(gè)軟鏈;

第三個(gè)參數(shù):服務(wù)名,以后管理時(shí)以它為關(guān)聯(lián)依據(jù)。

第四個(gè)參數(shù),被管理的命令絕對(duì)路徑。

第五個(gè)參數(shù),優(yōu)先級(jí),數(shù)字越大優(yōu)先級(jí)越高。

2、查看已注冊(cè)列表

# 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開關(guān)使用時(shí)第一行信息:

java - auto/manual mode

默認(rèn)為自動(dòng)版本,根據(jù)優(yōu)先級(jí),使用優(yōu)先級(jí)高的。

下面手動(dòng)修改為jdk1.8.0_91:

交互式修改

交互式會(huì)提示一所有可用的列表, 選擇對(duì)應(yīng)的索引確認(rèn)。

# 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.

看到當(dāng)前狀態(tài)變成了manual。

修改為自動(dòng):

# 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.

又改為按照優(yōu)先級(jí)高的了。

立即修改

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

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

該情形適用于你對(duì)路徑很熟悉,或者你已經(jīng)進(jìn)入了該路徑:

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

4、 update-alternatives是偏門命令嗎?

可能你覺得這個(gè)命令很偏門,用處不大,但實(shí)際上在linux中早已被大量的使用。我們來挖掘一下,先看看我們注冊(cè)的java做了什么:

# 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是一個(gè)軟鏈, 它連接到/etc/alternatives目錄中的另一個(gè)軟鏈。

而/etc/alternatives中有很多軟鏈,這里只列出了一部分??吹絘wk了吧?來看看它有哪些版本:

# 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運(yùn)行環(huán)境可以,但如果你作為開發(fā)測試環(huán)境,你會(huì)發(fā)現(xiàn)javac找不到。

# javac
-bash: javac: command not found

原因是我們只對(duì)java命令做了版本管理。

事實(shí)上,update-alternatives的原理是軟鏈管理,可以處理目錄。那么我們就可以把整個(gè)軟件包目錄都納入管理。

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

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

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

# update-alternatives --remove-all java

注冊(cè)javahome管理

# 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環(huán)境變量,指向注冊(cè)的軟鏈地址。

# echo export JAVA_HOME=/usr/local/jdk >>~/.bash_profile
# echo export PATH=$PATH:$JAVA_HOME/bin >>~/.bash_profile
# source ~/.bash_profile

管理JAVA_HOME

# 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


感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • Linux date命令知識(shí)點(diǎn)總結(jié)
  • Linux date 時(shí)間設(shè)置同步命令分享
  • Linux中date命令轉(zhuǎn)換日期提示date: illegal time format問題解決
  • Linux下date命令,格式化輸出,時(shí)間設(shè)置方法
  • linux命令詳解date使用方法(計(jì)算母親節(jié)和父親節(jié)日期腳本示例)
  • Linux date命令的使用

標(biāo)簽:蘭州 衡水 黃山 崇左 銅川 仙桃 湖南 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《linux軟件版本管理命令update-alternatives使用詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    富源县| 广水市| 阿图什市| 中江县| 博湖县| 丰城市| 濮阳市| 孝感市| 汪清县| 简阳市| 柳州市| 丰城市| 佛教| 旬阳县| 东山县| 海晏县| 乐山市| 南涧| 临江市| 玉山县| 盐边县| 科技| 泗水县| 宁陕县| 镇巴县| 赤水市| 南丹县| 资溪县| 无为县| 牡丹江市| 固镇县| 镇江市| 丰原市| 湄潭县| 扎囊县| 奉贤区| 子洲县| 繁峙县| 光山县| 墨竹工卡县| 昌乐县|