update-alternatives學習筆記

Linux 發展到今天,可用的軟件已經非常多了。這樣自然會有一些軟件的功能大致上相同。例如,同樣是編輯器,就有 nvi、vim、emacs、nano,而且我說的這些還只是一部分。大多數情況下,這樣的功能相似的軟件都是同時安裝在系統裏的,可以用它們的名稱來執行。例如,要執行 vim,只要在終端下輸入 vim 並按回車就可以了。不過,有些情況下我們需要用一個相對固定的命令調用這些程序中的一個。例如,當我們寫一個腳本程序時,只要寫下 editor,而不希望要爲“編輯器是哪個”而操心。Debian 提供了一種機制來解決這個問題,而 update-alternatives 就是用來實現這種機制的。

1)首先要介紹的參數是 --display。它使我們可以看到一個命令的所有可選命令。執行:
update-alternatives --display editor
可以看到我的機器上的所有可以用來被 editor 鏈接的命令。

2)--config。這個選項使我們可以選擇其中一個命令程序來作爲editor,執行:
update-alternatives --config editor

首先,update-alternatives 在一般情況下是由postinst 和 prerm 這樣的安裝腳本自動調用的,所以一個 alternative 的狀態有兩種:自動和手動。每個 alternative 的初始狀態都是自動。如果系統發現管理員手動修改了一個 alternative,它的狀態就從自動變成了手動,這樣安裝腳本就不會更新它了。如果你希望將一個 alternative 變回自動,只要執行代碼:
update-alternatives --auto editor

general name -- 這是指一系列功能相似的程序的“公用”名字(包括絕對路徑),比如 /usr/bin/editor。
link -- 這是指一個 alternative 在 /etc/alternative 中的名字,比如 editor。
alternative -- 顧名思義,這是指一個可選的程序所在的路徑(包括絕對路徑),比如 /usr/bin/vim。

-auto,--display 和 --config 跟的都是 link。我們要說的第三個概念是優先級。這個比較簡單,當然優先級越高的程序越好啦。最後一個概念是主和從的 alternative。想想看,你將 /usr/bin/editor 鏈接到了 vim,可是當你執行 man editor 時看到的卻是 emacs 的 manpage,你會做何感想呢?這就引出了主和從 alternative 的概念了:當更新主的 alternative 時,從的 alternative 也會被更新。

另外兩個選項:
第一個是 --install。它的格式是:  代碼:

update-alternatives --install gen link alt pri [--slave sgen slink salt] ...

gen,link,alt,pri 分別是我們上面說過的。如果需要從的 alternative,你可以用--slave 加在後面。如果你在向一個已經存在的 alternative 組中添加新的 alternatives,該命令會把這些 alternatives 加入到這個已經存在的 alternative 組的列表中,並用新的可選命令作爲新的命令;否則,將會建立一個新的自動的 alternative組。

嗚呼!我加入了一個錯誤的 alternative。我不想要這個 alternative 了。在這種情況
下,可以執行下面的命令:代碼:

update-alternatives --remove name path


首先,你不需要再/etc/alternatives/下面建立任何你想設置的鏈接名稱,因爲這完全可以通過update-alternative --install命令來實現;而且你也不需要在/usr/bin/目錄下建立相關鏈接名稱,理由同上。你只需要確定這幾個功能類似的軟件的源目的地,然後執行如下命令:(以gcc爲例)
#sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.3 100(這個優先級100必須鍵入)
#sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 90
#sudo update-alternatives --install /usr/bin/gcc gcc /ur/bing/gcc-4.2 80
以此類推。在選擇時使用如下命令即可:
#sudo update-alternatives --config gcc
以上都是在UBUNTU上測試通過的。在紅帽等Linux系統上有類似的alternatives命令,用法相同。

發佈了24 篇原創文章 · 獲贊 53 · 訪問量 100萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章