国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

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

2020-07-27 18:55:21
字體:
來源:轉載
供稿:網友

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

update-alternatives 命令用于處理linux系統中軟件版本的切換,在各個linux發行版中均提供了該命令,命令參數略有區別,但大致是一樣的。

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

其中:

第一個參數--install表示向update-alternatives注冊服務名。

第二個參數是注冊最終地址,成功后將會把命令在這個固定的目的地址做真實命令的軟鏈,以后管理就是管理這個軟鏈;

第三個參數:服務名,以后管理時以它為關聯依據。

第四個參數,被管理的命令絕對路徑。

第五個參數,優先級,數字越大優先級越高。

2、查看已注冊列表

# update-alternatives --display javajava - 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 300Current `best' version is /opt/install/jdk1.8.0_111/bin/java.

3、 修改命令版本

注意--display開關使用時第一行信息:

java - auto/manual mode

默認為自動版本,根據優先級,使用優先級高的。

下面手動修改為jdk1.8.0_91:

交互式修改

交互式會提示一所有可用的列表, 選擇對應的索引確認。

# update-alternatives --config javaThere 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/javaEnter to keep the current selection[+], or type selection number: 1# java -versionjava 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 javajava - 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 300Current `best' version is /opt/install/jdk1.8.0_111/bin/java.

看到當前狀態變成了manual。

修改為自動:

# update-alternatives --auto java# java -versionjava 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 javajava - 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 300Current `best' version is /opt/install/jdk1.8.0_111/bin/java.

又改為按照優先級高的了。

立即修改

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

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

該情形適用于你對路徑很熟悉,或者你已經進入了該路徑:

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

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

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

# ls -l /usr/bin/javalrwxrwxrwx 1 root root 22 Jan 16 01:45 /usr/bin/java -> /etc/alternatives/java*# ls -l /etc/alternatives/total 12drwxr-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.gzlrwxrwxrwx 1 root root  38 Dec 2 12:38 builtins.7.gz -> /usr/share/man/man7/bash-builtins.7.gzlrwxrwxrwx 1 root root  12 Jan 12 02:04 c++ -> /usr/bin/g++*...

首先可以看到我們的/usr/bin/java是一個軟鏈, 它連接到/etc/alternatives目錄中的另一個軟鏈。

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

# update-alternatives --display awkawk - 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找不到。

# javac-bash: javac: command not found

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

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

首先清理掉原來配置的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 300update-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 jdkjdk - 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環境變量,指向注冊的軟鏈地址。

# 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 -versionjava 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 -versionjavac 1.8.0_111# update-alternatives --config jdkThere 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 modePress <enter> to keep the current choice[*], or type selection number: 2update-alternatives: using /opt/jdk1.8.0_91 to provide /usr/local/jdk (jdk) in manual mode# echo $JAVA_HOME/usr/local/jdk# java -versionjava 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 -versionjavac 1.8.0_91

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 津市市| 遂溪县| 怀安县| 九龙城区| 邯郸县| 修武县| 南京市| 大同市| 鹿泉市| 宜兰县| 荃湾区| 白城市| 乌兰浩特市| 冕宁县| 湘阴县| 阜新市| 金沙县| 湛江市| 明光市| 通渭县| 达尔| 镇赉县| 高淳县| 肇庆市| 永福县| 清河县| 紫金县| 贞丰县| 景德镇市| 电白县| 阿城市| 涿鹿县| 珠海市| 澳门| 揭阳市| 屏边| 武穴市| 偏关县| 治县。| 淅川县| 包头市|