update-alternatives 使用詳解

zmxyzmxy1234發表於2020-06-05

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

轉載於:www.jianshu.com/p/4d27fa2dce86

本作品採用《CC 協議》,轉載必須註明作者和本文連結