這裡介紹如何在 Fedora、CentOS 或 RHEL 中鎖定套件,讓指定套件與軟體維持固定的版本,避免 yum 自動安裝或更新。

在目前主流的 Linux 系統上,絕大部分的軟體都是透過套件管理系統來安裝或更新的,管理者只要定期執行更新指令,即可讓所有的軟體維持在最新狀態。

然而在某些狀況下,我們可能會希望某些軟體固定維持在特定的版本下,不用隨著系統自動更新而改變,這時候就要將這種需要固定版本的軟體排除在套件管理系統之外。


以下我們介紹在 Fedora、CentOS 與 Red Hat Linux 中,如何設定 yum 套件管理系統,鎖定指定的套件,避免自動更新。

排除套件

在執行 yum 指令時,若要排除特定的套件,可以使用 --exclude 參數:

# 排除 nginx 套件
sudo yum --exclude=nginx update

在指定套件時,可以使用一般 shell 中的萬用字元,例如若要排除 nginx 相關的套件,可以執行:

# 排除 nginx 相關套件
sudo yum --exclude='nginx*' update

如果要排除多個不同的套件,可以使用多個 --exclude 參數分開指定,例如:

# 排除多個套件
sudo yum --exclude=nginx --exclude=php update

永久設定檔

如果要永久排除套件,可以將設定寫入 /etc/yum.conf 設定檔中:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

# 防止 nginx 相關套件更新
exclude=nginx*

若要排除多個套件,則用空白分隔即可:

# 排除多個套件
exclude=nginx php

若要排除所有 32 位元的套件,可以這樣寫:

# 排除 32 位元的套件
exclude=*.i?86

參考資料:TecmintnixCraftredhat