我的博客已搬家,請(qǐng)移步到 http://shao-fan.com/blog 閱讀最新內(nèi)容!
Ubuntu/Debian中的update-alternative用來(lái)對(duì)系統(tǒng)中不同版本的同個(gè)軟件進(jìn)行管理。
比如,系統(tǒng)中可能裝有GNU的Java編譯器,和SUN的Java編譯器??梢杂胾pdate-alternatives來(lái)設(shè)置當(dāng)前使用它們中的哪一個(gè)。
它的原理是在/usr/bin中建立一個(gè)link,指向/etc/alternatives中的一個(gè)文件,而些文件又是一個(gè)link,指向當(dāng)前使用的命令。比如java命令,查看如下:
$ which java
/usr/bin/java
$ ls -l /usr/bin/java
lrwxrwxrwx /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx /etc/alternatives/java -> /usr/lib/j2re1.5-sun/bin/java
$ ls -l /usr/lib/j2re1.5-sun/bin/java
-rwxr-xr-x /usr/lib/j2re1.5-sun/bin/java
參數(shù)--display可以某個(gè)軟件的當(dāng)前配置,如:
$ /usr/sbin/update-alternatives --display java
java - status is auto.
link currently points to /usr/lib/j2re1.5-sun/bin/java
/usr/lib/kaffe/bin/java - priority 300
slave java.1.gz: /usr/share/man/man1/java.kaffe.1.gz
/usr/lib/j2re1.5-sun/bin/java - priority 315
slave java.1.gz: /usr/lib/j2re1.5-sun/man/man1/java.1.gz
Current `best' version is /usr/lib/j2re1.5-sun/bin/java.
status有auto和manual兩種。一旦用戶(hù)更改了系統(tǒng)的默認(rèn)設(shè)置,它就變?yōu)閙anual。在auto的狀態(tài)下,系統(tǒng)會(huì)根據(jù)幾套配置的priority來(lái)判斷當(dāng)前應(yīng)該使用哪套配置。
每套配置可以設(shè)定多個(gè)link,它們被稱(chēng)為slave。上面的例子中,有兩套java的配置。一套是/usr/lib/kafe/bin/java,另一套是/usr/lib/j2re1.5-sun/bin/java,它們各有一個(gè)slave。在些例中這些slave設(shè)置的是java命令的 manual。當(dāng)更改了配置時(shí),用man命令查看的幫助也會(huì)相應(yīng)更改。
參數(shù)--config可以用來(lái)更改當(dāng)前的配置。
$ sudo /usr/sbin/update-alternatives --config java
There are 2 alternatives which provide `java'.
Selection Alternative
-----------------------------------------------
1 /usr/lib/kaffe/bin/java
*+ 2 /usr/lib/j2re1.5-sun/bin/java
Press enter to keep the default*, or type selection number: 1
Using `/usr/lib/kaffe/bin/java' to provide `java'.
參數(shù)--install用來(lái)設(shè)置一套新的配置。具體參見(jiàn) http://blog.stevenkroon.com/2006/08/29/debian-update-alternatives/