1. 程式人生 > >在Ubuntu中通過update-alternatives切換軟體版本

在Ubuntu中通過update-alternatives切換軟體版本

    update-alternatives是ubuntu系統中專門維護系統命令連結符的工具,通過它可以很方便的設定系統預設使用哪個命令、哪個軟體版本,比如,我們在系統中同時安裝了open jdk和sun jdk兩個版本,而我們又希望系統預設使用的是sun jdk,那怎麼辦呢?通過update-alternatives就可以很方便的實現了。

  sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_27/bin/java 1062  

其中1062 為alternative更改後的優先順序,新更改的優先順序需要大於當前的,通過update-alternatives --display java 可以檢視。

現在介紹下 update-alternatives 命令中的幾個主要選項,diplay、install、remove、config; 

   1、display選項的功能就是檢視一個命令連結組的所有資訊,包括連結的模式(自動還是手動)、連結priority值、所有可 用的連結命令等等。使用語法:update-alternatives --display name ,其中name為命令連結名稱,如java,執行命令: update-alternatives --display java 將會出現類似下面的結果

java - auto mode

        link currently points to /opt/java/jdk1.6.0_27/bin/java

/opt/java/jdk1.6.0_27/bin/java - priority 1062

/usr/lib/jvm/java-6-openjdk/jre/bin/java - priority 1061

  slave java.1.gz: /usr/lib/jvm/java-6-openjdk/jre/man/man1/java.1.gz

Current 'best' version is '/opt/java/jdk1.6.0_27/bin/java'.

   2、install選項的功能就是增加一組新的系統命令連結符了,使用語法為:update-alternatives --install link name path priority [--slave link name path]... 其中link為系統中功能相同軟體的公共連結目錄,比如/usr/bin/java(需絕對目錄); name為命令連結符名稱,如java; path為你所要使用新命令、新軟體的所在目錄; priority為優先順序,當命令連結已存在時,需高於當前值,因為當alternative為自動模式時,系統預設啟用priority高的連結; --slave為從alternative。

    alternative有兩種模式:auto和manual,預設都為auto模式,因為大多數情況下update-alternatives命令都被postinst (configure) or prerm (install)呼叫的,如果將其更改成手動的話安裝指令碼將不會更新它了。

   3、remove選項的功能是刪除一個alternative及相關從alternative,使用語法為:update-alternatives --remove name path,其中name與path與install中的一致,如果所刪除的連結組中還有其他連結的話,系統將會自動從其他中選擇一個priority高的連結作為預設為連結。

   4、config選項功能為在現有的命令連結選擇一個作為系統預設的,使用語法為:update-alternatives --config name,如執行:sudo update-alternatives --config java,將會有類似以下資訊:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status

------------------------------------------------------------

* 0            /opt/java/jdk1.6.0_27/bin/java             1062      auto mode

  1            /opt/java/jdk1.6.0_27/bin/java             1062      manual mode

  2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode

Press enter to keep the current choice[*], or type selection number: 

   若是想將manual改回自動模式的話,執行命令: update-alternatives --auto name即可,如

 update-alternatives --config  java