update-alternatives 命令用於處理 Linux 系統中軟件版本的切換,使其多版本共存。alternatives 的管理目錄 /etc/alternatives 。
alternatives 管理方式
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 24 1120 2017 /usr/bin/python -> /etc/alternatives/python
$ ls -l /etc/alternatives/python
lrwxrwxrwx 1 root root 18 1121 2017 /etc/alternatives/python -> /usr/bin/python2.7
python 這個可執行命令實際是一個鏈接,指向了 /etc/alternatives/python 。而這個也是一個鏈接,指向了 /usr/bin/python2.7 ,這才是最終的可執行文件。alternatives 實際上是通過軟鏈接的方式對版本進行管理。
語法:
$ update-alternatives --help
用法:update-alternatives [<選項> ...] <命令>
命令:
--install <鏈接> <名稱> <路徑> <優先級>
[--slave <鏈接> <名稱> <路徑>] ...
在系統中加入一組候選項。
--remove <名稱> <路徑> 從 <名稱> 替換組中去除 <路徑> 項。
--remove-all <名稱> 從替換系統中刪除 <名稱> 替換組。
--auto <名稱> 將 <名稱> 的主鏈接切換到自動模式。
--display <名稱> 顯示關於 <名稱> 替換組的信息。
--query <名稱> 機器可讀版的 --display <名稱>.
--list <名稱> 列出 <名稱> 替換組中所有的可用候選項。
--get-selections 列出主要候選項名稱以及它們的狀態。
--set-selections 從標准輸入中讀入候選項的狀態。
--config <名稱> 列出 <名稱> 替換組中的可選項,並就使用其中哪一個,征詢用戶的意見。
--set <名稱> <路徑> 將 <路徑> 設置為 <名稱> 的候選項。
--all 對所有可選項一一調用 --config 命令。
<鏈接> 是指向 /etc/alternatives/<名稱> 的符號鏈接。(如 /usr/bin/pager)
<名稱> 是該鏈接替換組的主控名。(如 pager)
<路徑> 是候選項目標文件的位置。(如 /usr/bin/less)
<優先級> 是一個整數,在自動模式下,這個數字越高的選項,其優先級也就越高。
..........
實例
- display 參數顯示關於 Python 替換組的信息
$ update-alternatives --display python
python - 手動模式
link best version is /usr/bin/python3.5
鏈接目前指向 /usr/bin/python2.7
link python is /usr/bin/python
/usr/bin/python2.7 - 優先級 1
/usr/bin/python3.5 - 優先級 2
- 選擇候選項
$ update-alternatives --config python
- install 參數用於添加一個命令的link值
# 添加 python link
$ update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
# 第一個參數: --install 表示向update-alternatives注冊服務名。
# 第二個參數: 注冊最終地址,成功后將會把命令在這個固定的目的地址做真實命令的軟鏈,以后管理就是管理這個軟鏈;
# 第三個參數: 服務名,以后管理時以它為關聯依據。
# 第四個參數: 被管理的命令絕對路徑。
# 第五個參數: 優先級,數字越大優先級越高。
-remove 參數用於刪除一個命令的link值,其附帶的slave也將一起刪除
$ update-alternatives –remove python /usr/bin/python2.7