從Yum更新中排除特定/某些包的三種方法
作為系統(tǒng)更新的一部分,你也許需要在基于 Red Hat 系統(tǒng)中由于應(yīng)用依賴排除一些軟件包。
如果是,如何排除?可以采取多少種方式?有三種方式可以做到,我們會(huì)在本篇中教你這三種方法。
包管理器是一組工具,它允許用戶在 Linux 系統(tǒng)中輕松管理包。它能讓用戶在 Linux 系統(tǒng)中安裝、更新/升級(jí)、刪除、查詢、重新安裝和搜索軟件包。
對(duì)于基于 Red Hat 的系統(tǒng),我們使用 yum 包管理器 和 rpm 包管理器 進(jìn)行包管理。
什么是 yum?
yum 代表 “Yellowdog Updater, Modified”。Yum 是用于 rpm 系統(tǒng)的自動(dòng)更新程序和包安裝/卸載器。
它在安裝包時(shí)自動(dòng)解決依賴關(guān)系。
什么是 rpm?
rpm 代表 “Red Hat Package Manager”,它是一款用于 Red Hat 系統(tǒng)的功能強(qiáng)大的包管理工具。
RPM 指的是 .rpm 文件格式,它包含已編譯的軟件和必要的庫(kù)。
方法 1:手動(dòng)或臨時(shí)用 yum 命令排除包
我們可以在 yum 中使用 --exclude 或 -x 開(kāi)關(guān)來(lái)阻止 yum 命令獲取特定包的更新。
我可以說(shuō),這是一種臨時(shí)方法或按需方法。如果你只想將特定包排除一次,那么我們可以使用此方法。
以下命令將更新除 kernel 之外的所有軟件包。
要排除單個(gè)包:
# yum update --exclude=kernel或者# yum update -x 'kernel'
要排除多個(gè)包。以下命令將更新除 kernel 和 php 之外的所有軟件包。
# yum update --exclude=kernel* --exclude=php*或者# yum update --exclude httpd,php
方法 2:在 yum 命令中永久排除軟件包
這是永久性方法,如果你經(jīng)常執(zhí)行修補(bǔ)程序更新,那么可以使用此方法。
為此,請(qǐng)?jiān)?/etc/yum.conf 中添加相應(yīng)的軟件包以永久禁用軟件包更新。
添加后,每次運(yùn)行 yum update 命令時(shí)都不需要指定這些包。此外,這可以防止任何意外更新這些包。
# vi /etc/yum.conf[main]cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=0debuglevel=2logfile=/var/log/yum.logexactarch=1obsoletes=1gpgcheck=1plugins=1installonly_limit=3exclude=kernel* php*
方法 3:使用 Yum versionlock 插件排除包
這也是與上面類似的永久方法。Yum versionlock 插件允許用戶通過(guò) yum 命令鎖定指定包的更新。
為此,請(qǐng)運(yùn)行以下命令。以下命令將從 yum update 中排除 freetype 包。
或者,你可以直接在 /etc/yum/pluginconf.d/versionlock.list 中添加條目。
# yum versionlock add freetypeLoaded plugins: changelog, package_upload, product-id, search-disabled-repos, subscription-manager, verify, versionlockAdding versionlock on: 0:freetype-2.8-12.el7versionlock added: 1
運(yùn)行以下命令來(lái)檢查被 versionlock 插件鎖定的軟件包列表。
# yum versionlock listLoaded plugins: changelog, package_upload, product-id, search-disabled-repos, subscription-manager, verify, versionlock0:freetype-2.8-12.el7.*versionlock list done
運(yùn)行以下命令清空該列表。
# yum versionlock clear

























