您好,登錄后才能下訂單哦!
update-alternatives命令怎么在linux中使用?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
linux軟件版本管理命令update-alternatives使用詳解
update-alternatives 命令用于處理linux系統(tǒng)中軟件版本的切換,在各個(gè)linux發(fā)行版中均提供了該命令,命令參數(shù)略有區(qū)別,但大致是一樣的。
1、 注冊軟件
以jdk為例,安裝了jdk以后,先要在update-alternatives工具中注冊;
# 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注冊服務(wù)名。
第二個(gè)參數(shù)是注冊最終地址,成功后將會(huì)把命令在這個(gè)固定的目的地址做真實(shí)命令的軟鏈,以后管理就是管理這個(gè)軟鏈;
第三個(gè)參數(shù):服務(wù)名,以后管理時(shí)以它為關(guān)聯(lián)依據(jù)。
第四個(gè)參數(shù),被管理的命令絕對路徑。
第五個(gè)參數(shù),優(yōu)先級(jí),數(shù)字越大優(yōu)先級(jí)越高。
2、查看已注冊列表
# 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ì)提示一所有可用的列表, 選擇對應(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
該情形適用于你對路徑很熟悉,或者你已經(jīng)進(jìn)入了該路徑:
# cd /opt/jdk1.8.0_91/bin/ # update-alternatives --set java $PWD/java
4、 update-alternatives是偏門命令嗎?
可能你覺得這個(gè)命令很偏門,用處不大,但實(shí)際上在linux中早已被大量的使用。我們來挖掘一下,先看看我們注冊的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中有很多軟鏈,這里只列出了一部分。看到awk了吧?來看看它有哪些版本:
# 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
原因是我們只對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
注冊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)境變量,指向注冊的軟鏈地址。
# 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
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。