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 有 2 個候選項可用於替換 python (提供 /usr/bin/python)。 選擇 路徑 優先級 狀態 ------------------------------------------------------------ 0 /usr/bin/python3.5 2 自動模式 * 1 /usr/bin/python2.7 1 手動模式 2 /usr/bin/python3.5 2 手動模式 要維持當前值[*]請按<回車鍵>,或者鍵入選擇的編號:
- 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