update-alternatives commands
--install link name path priority [--slave link name path]...
在系統裡新增一個alternatives的group。『link』代表的是這個master link的『generic name』,『name』代表的是alternatives directory的連結(symlink),『path』則是master link的alternative路徑,也就是你實際執行實體的路徑。
在『--slave』以後的參數(link, name, path..)其實就跟之前的參數差不多,只是是用在slave上的,如果你有一筆以上的slave的話,記得後面都需要有相關的參數(link, name, path..),如果沒有任何的slave alternative的話,則相關的slave alternative就只是不會安裝,不會有什麼問題,但是會顯示相關的警告訊息就對了。但是如果你沒有指定master alternative的話,則系統會直接回fail。如果在alternative link的位置上你有安裝真的檔案的話,則這個檔案將會保持到你使用『--force』為止。
sudo update-alternatives --install /usr/bin/ht ht /usr/bin/vim.basic 2
如果這個alternative name已經在你的alternatives 系統的紀錄的話,則這筆資訊將會被加入這個group裡面。否則將會產生一個新的group,並且將其設定成automatic mode。如果你的group是『automatic mode』,而且你新加入的alternative的優先權比你現在group任何的優先權都還要高的話,則將會直接指到這個新的alternative上面去。
--set name path
將程式的參考改成你要的alternative。這個命令跟『--config』相似,但是沒有跟使用者互動的功能,因此如果需要的話,可以用這個指令在你的scirpt裡面。
底下舉個例子,首先顯示出link group - editor,目前的alternative看得出是『nano』,經由『--set』將其改為『vim.basic』。
--remove name path
刪除一個alternative和所有其相關的slave links。後面的參數『name』代表的是在alternatives directory裡面的名字。『path』的話代表其實質檔案名稱路徑。如果『name』確實是連結到『path』的條件之下,你又執行這個命令的話,則『name』將會被指到其他適當的alternative上面去,並且mode會變成『automatic mode』,而如果已經沒有任何的alternative存在的話,則將會把整個link group都刪掉。 當然在這些條件之下,所有的slave links將會被更新或是刪除,而如果本身就沒有指到任何的path的話,則沒有links會改變,只有在上面的alternative資訊會移除。
底下例子,將link group -『editor』底下的alternative - 『/bin/ed』給刪除掉:
sudo update-alternatives --remove editor /bin/ed
--remove-all name
刪除所有的alternatives和其所有相關的slave links。後面的參數『name』代表的是在alternatives directory裡面的名字。
--all
呼叫『--config』和所有的『alternatives』。這個指令在與『--skip-auto』合用非常好用,因為可以用來檢視和設定所有在automatic mode中未被設定的所有alternatives組態。其中損壞的alternatives也會被顯示出來。所以如果你想要修復這些損壞的alternatives的話,可以直接用底下這個指令:
yes '' | update-alternatives --force --all
--auto name
將alternative名稱後面的link group切換到『automatic mode』,在這個操作之下,其master symlink和其slave都將會更新,并指到相關優先權最高的安裝套件上。
--display name
顯示link group的相關資訊,包含了『group mode』,『master links』,『slave links』,還有目前的『master link』所指到的套件,哪些alternatives是可取得的,和目前所安裝優先權最高的套件等等。
--get-selections
顯示出目前所有的master alternative names,這些名字所代表的含意是它控制了一個link group,並且會顯示出相關的狀態。輸出的資訊總共分為三欄,第一欄為『alternative name』,第二個欄位是『status』,顯示的是auto 或是manual,最後一個欄位代表的是alternative系統目前的選擇。
--set-selections
在standard input輸入alternatives的組態,格式的話請直接參考options『--get-selections』,輸入相關的資料後,就會直接寫入設定,這個指令是從版本1.15.0開始有的。
--query name
跟『--display』相似,都是顯示出link group的資訊,但是格式比較是機器可以分析的格式。這部份請看手冊上的『QUERY FORMAT』部份,這邊就不探討了。
--list name
顯示出link group中所有可用的候選名單。像是底下的case一樣,列出 link group『editor』底下所有可以置換的候選名單有四個。
--config name
一個互動性比較強的設定介面,會顯示出你指定的link group上目前的選擇是那一個,然後也會把每一個候選名單和其相關資訊列出來。如下畫面,很清楚的看到目前的選擇是『vim.basic』,而其他有四個選擇,每一個候選名單的資訊都一清二楚。