1. 程式人生 > >ubuntu下update-alternatives命令的使用

ubuntu下update-alternatives命令的使用

在ubuntu系統中,update-alternatives是專門維護系統命令連結符的工具,其可以對某個工具的多個軟體版本進行管理,通過它可以很方便的設定系統預設使用哪個命令的哪個軟體版本。

在命令列中直接輸入update-alternatives --help命令,
[19:19:24]@~$ update-alternatives --help
Usage: update-alternatives [<option> ...] <command>

Commands:
  --install <link> <name> <path> <priority>
    [--slave <link> <name> <path>] ...
                           add a group of alternatives to the system.
  --remove <name> <path>   remove <path> from the <name> group alternative.
  --remove-all <name>      remove <name> group from the alternatives system.
  --auto <name>            switch the master link <name> to automatic mode.
  --display <name>         display information about the <name> group.
  --query <name>           machine parseable version of --display <name>.
  --list <name>            display all targets of the <name> group.
  --get-selections         list master alternative names and their status.
  --set-selections         read alternative status from standard input.
  --config <name>          show alternatives for the <name> group and ask the
                           user to select which one to use.
  --set <name> <path>      set <path> as alternative for <name>.
  --all                    call --config on all alternatives.

<link> is the symlink pointing to /etc/alternatives/<name>.
  (e.g. /usr/bin/pager)
<name> is the master name for this link group.
  (e.g. pager)
<path> is the location of one of the alternative target files.
  (e.g. /usr/bin/less)
<priority> is an integer; options with higher numbers have higher priority in
  automatic mode.

Options:
  --altdir <directory>     change the alternatives directory.
  --admindir <directory>   change the administrative directory.
  --log <file>             change the log file.
  --force                  allow replacing files with alternative links.
  --skip-auto              skip prompt for alternatives correctly configured
                           in automatic mode (relevant for --config only)
  --verbose                verbose operation, more output.
  --quiet                  quiet operation, minimal output.
  --help                   show this help message.
  --version                show the version.
[19:19:28]@~$


其工作原理如下:系統路徑下,/usr/bin/<name>這個軟連結,指向了/etc/alternatives/<name>這個檔案,其其實也是個軟連結,指向了該<name>命令的實際可執行檔案;如下:

lrwxrwxrwx 1 root root 22  5月  6  2015 /usr/bin/java -> /etc/alternatives/java*

lrwxrwxrwx 1 root root 70 10月 28 14:11 /etc/alternatives/java -> /home/likewise-open/SPREADTRUM/hunter.ding/tools/jdk1.8.0_112/bin/java*
可見,通過兩次軟連結,我們可以定位到實際的java檔案;後面我們針對這個軟體版本的管理都是通過改變/etc/alternatives/ --> /實際可執行檔案 的軟連結來進行的。

來看一個例子,在上面的java可執行組中,修改一下java的版本:

[19:37:17]@~$ java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) Server VM (build 25.112-b15, mixed mode)
[19:37:20]@~$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                                                    Priority   Status
------------------------------------------------------------
* 0            /home/likewise-open/SPREADTRUM/hunter.ding/tools/jdk1.8.0_112/bin/java   1062      auto mode
  1            /home/likewise-open/SPREADTRUM/hunter.ding/tools/jdk1.8.0_112/bin/java   1062      manual mode
  2            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java                           1060      manual mode
  3            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java                           1061      manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode.
[19:37:24]@~$ java -version
java version "1.6.0_35"
OpenJDK Runtime Environment (IcedTea6 1.13.7) (6b35-1.13.7-1ubuntu0.12.04.2)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
[19:37:26]@~$
可見我們已經將java的版本從1.8切換到1.6了,這樣我們來看一下軟連結例項:

lrwxrwxrwx 1 root root 22  5月  6  2015 /usr/bin/java -> /etc/alternatives/java*

lrwxrwxrwx 1 root root 46 10月 28 19:37 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java*
呵呵,/usr/bin/java -> /etc/alternatives/java* 的連結未改變,而改變的是/etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java*。

主要的幾個命令用法如下:

  • --install <link> <name> <path> <priority>

向系統中新增一個新的alternatives組,

link:指向/etc/alternatives/<name>的符號引用

name:這個連結組的名稱

path:這個命令對應的可執行檔案的實際路徑

priority:優先順序,在auto模式下,數字較大的選項有較高的優先順序

示例: sudo update-alternatives --install /usr/bin/java  java  /home/likewise-open/SPREADTRUM/hunter.ding/tools/jdk1.8.0_112/bin/java  1062

  • --remove <name> <path>   remove <path> from the <name> group alternative.

移除系統中註冊的某個<name>的某個軟體版本<path>

  • --display <name>         display information about the <name> group.
  • --list <name>            display all targets of the <name> group.

顯示命令<name>的資訊及目標檔案

[19:53:34]@~$ update-alternatives --display java
java - manual mode
  link currently points to /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
/home/likewise-open/SPREADTRUM/hunter.ding/tools/jdk1.8.0_112/bin/java - priority 1062
/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java - priority 1060
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java - priority 1061
Current 'best' version is '/home/likewise-open/SPREADTRUM/hunter.ding/tools/jdk1.8.0_112/bin/java

[19:53:49]@~$ update-alternatives --list java
/home/likewise-open/SPREADTRUM/hunter.ding/tools/jdk1.8.0_112/bin/java
/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

  • --config <name>          show alternatives for the <name> group and ask the user to select which one to use.

配置命令<name>的版本,如下:

[19:55:48]@~$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                                                    Priority   Status
------------------------------------------------------------
  0            /home/likewise-open/SPREADTRUM/hunter.ding/tools/jdk1.8.0_112/bin/java   1062      auto mode
* 1            /home/likewise-open/SPREADTRUM/hunter.ding/tools/jdk1.8.0_112/bin/java   1062      manual mode
  2            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java                           1060      manual mode
  3            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java                           1061      manual mode

Press enter to keep the current choice[*], or type selection number: 0
[19:55:56]@~$
這樣就使用java1.8作為java命令的預設版本。

相關推薦

[轉載] ubuntuupdate-alternatives命令的使用

ubuntu下update-alternatives命令的使用 https://www.cnblogs.com/caidi/p/6009217.html 在ubuntu系統中,update-alternatives是專門維護系統命令連結符的工具,其可以對某個工具的多個軟體版本進行管理,通過它

ubuntuupdate-alternatives命令的使用

在ubuntu系統中,update-alternatives是專門維護系統命令連結符的工具,其可以對某個工具的多個軟體版本進行管理,通過它可以很方便的設定系統預設使用哪個命令的哪個軟體版本。 在命令列中直接輸入update-alternatives --help命令,[19:19:24]@~$ upda

轉 使用update-alternatives命令進行版本的切換

引言 在Debian系統中,我們可能會同時安裝有很多功能類似的程式和可選配置,可能會出現同一軟體的多個版本並存的場景。比如像是一些程式語言工具,一些系統中自帶的是python2.6,而現在python2.7和python3.4使用較多,還有java有1.6,1.7和1.8版本。  up

Ubuntu資料庫常用命令

登入MySQL $ sudo mysql -u root -p 列舉所有的資料庫 mysql> show databases; (*分號) 建立名叫database_name的資料庫 mysql> create database database_name; 進入某一個數據庫

Ubuntuapt-get命令0%[正在連線 us.archive.ubuntu.com]

這是由於DNS域名解析器沒配置好 如果直接去在 /etc/resolv.conf下設定nameserver,在重啟後會被覆蓋掉,繼續變回原來那個。   正確方法是 1. sudo vim /etc/resolvconf/resolv.conf.d/head 2.

在Centosalternatives命令切換各個版本的jdk的方法

自己通過rpm安裝了個jdk1.8,預設安裝在/usr/java中,應除錯需要,在伺服器的/usr/local/java目錄裡安裝jdk-6u25-linux-x64.bin,預設建立/usr/local/java/jdk1.6.0_25,需要切換著使用JDK執行如下命令: [[email

ubuntu修改終端命令輸入行顏色配置

1.背景 玩ubuntu終端時,因為命令輸入行顏色預設是依據終端配置檔案中的顏色方案,往往是與輸出文字同一顏色,因此輸出文字一多的情況下經常是無法一下子就判別出從哪一行開始輸出的,所以有必要對其進行自主配色。 2.操作 1)進入~/.bashrc檔案,找到

ubuntu使用vi命令修改檔案並儲存例項

關於vi命令的使用,以前百度了半天也沒找到詳細的操作例項,都是抄來超區一些沒有的東西。這裡我提供一個使用vi命令修改檔案並儲存的詳細例項教程,分享了!就以修改/opt/lampp/etc/extra/httpd-xampp.conf這個檔案為例,我們找到這段程式碼:# si

Ubuntu防火牆相關命令

參考文章:https://www.cnblogs.com/kluan/p/5993767.html 安裝方法 sudo apt-get install ufw 當然,這是有圖形介面的(比較簡陋),在新立得裡搜尋gufw試試…… 使用方法 1. 啟用 sudo

虛擬機器中ubuntumake menuconfig命令缺少ncurses解決方法

 在臺式機上按著教程弄編譯核心什麼的,發現同樣是RHEL5,我的make menuconfig就缺失ncurses。然後我裝的RHEL5還連不上網了,那怎麼辦,沒法傳東西,vmtools還弄不上,又不像win7預設就vmtools,然後折騰著ubuntu,也有相同問題,好在

ubuntugit常用命令

1.從遠端clone倉庫,隨後會要求輸入網站使用者名稱密碼。clone的倉庫會存放在/home下,如果想clone到制定目錄,首先cd 指定目錄。 git clone git://github.co

ubuntu的resolvconf命令

dns地址的存放地址是/etc/resolv.conf 這是一個連結檔案 但是如果直接寫這樣有點蛋疼,最後你會發現他有時會被抹去。為什麼呢, 因為這是ubuntu裡 resolvconf這個指令碼命令的原因。 resolvconf是debian系裡一個管理dns的命令,dh

Ubuntuapt-get命令詳解及速度優化

在Ubuntu下,apt-get近乎是最常用的shell命令之一了,因為該命令是Ubuntu通過新立得安裝軟體的常用工具命令。 本文列舉了常用的APT命令引數: apt-cache search package 搜尋軟體包 apt-cache show package

Ubuntu的常用命令總結

目錄 前言 linux最重要的就是命令,但是這些命令很是麻煩,比較難記,所以特此總結一下! 常用命令 nfs掛載命令 mount -t nfs 192.168.1.20:/nfs /opt -o nolock 192.168.1

Ubuntu代替dos2unix命令 (轉自兩個檔案)

$ dpkg -L tofrodos /. /usr /usr/bin /usr/bin/fromdos /usr/share /usr/share/man /usr/share/man/man1 /usr/share/man/man1/fromdos.1.gz /usr/share/doc /usr/sha

UbuntuMysql常用命令詳解

Mysql安裝目錄 資料庫目錄 /var/lib/mysql/ 配置檔案 /usr/share/mysql(mysql.server命令及配置檔案) 相關命令 /usr/bin(mysqladmin mysqldump等命令) 啟動指令碼 /et

Ubuntugit基礎命令

git是程式碼版本管理的一個強有力的工具。網上有很多關於如何使用git的教程。這些教程通常很詳細,對git各方面命令都作了說明。但是初學者不會用到太多命令,過於詳細的講解令初學者迷惑。於是我整理了git的基礎命令,讓初學者對git有更好的把握。 安裝git

Ubuntu使用ls命令顯示檔案顏色相關內容及修改

<轉載自:http://pcyoyo.com/?p=465> 在Ubuntu下,使用ls命令顯示目錄下檔案及資料夾時會先顯示不同顏色,如下圖所示: 如果知道了不同顏色分別代表的含義,那麼對於我們檢視目錄下檔案資訊方便了很多,所以就搜尋了一下相關文章,找

ubuntu如何使用命令刪除軟體

ubuntu下使用命令刪除軟體 前些天在自己的ubuntu上裝了有道詞典,我的ubuntu 版本是14.04,但是有道詞典只支援16.04,在14.04版本下存在一些問題,比如:1.螢幕取詞、劃譯功能不能使用 2.經常程式崩潰 於是就打算將軟體解除安裝,但是

Ubuntu安裝TeamViewer[命令列方式]

第一步: 下載 安裝包 從官網下載ubuntu的deb安裝包 下載連結: https://downloadus1.teamviewer.com/download/version_12x/teamvi