在本文中,我們將向您展示如何使用 Yum 包管理器從更新中排除特定包。 您可能希望定期更新 CentOS 或 RHEL 系統,但忽略某些軟件包,特別是如果更新可能會干擾系統中的某些主要應用程序。
另請參閱 : 如何從 apt-get 升級中排除特定包
從更新中排除特定包
我們首先使用 Centos 7 上的 Yum 包管理器檢查哪些包需要升級,如下所示。
yum list updates | cat -n
樣本輸出
1 Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
2 Updated Packages
3 bind-libs-lite.x86_64 32:9.9.4-51.el7_4.2 rhui-REGION-rhel-server-releases
4 bind-license.noarch 32:9.9.4-51.el7_4.2 rhui-REGION-rhel-server-releases
5 binutils.x86_64 2.25.1-32.base.el7_4.2 rhui-REGION-rhel-server-releases
6 cloud-init.x86_64 0.7.9-9.el7_4.2 rhui-REGION-rhel-server-releases
7 dhclient.x86_64 12:4.2.5-58.el7_4.1 rhui-REGION-rhel-server-releases
8 dhcp-common.x86_64 12:4.2.5-58.el7_4.1 rhui-REGION-rhel-server-releases
9 dhcp-libs.x86_64 12:4.2.5-58.el7_4.1 rhui-REGION-rhel-server-releases
10 glibc.x86_64 2.17-196.el7_4.2 rhui-REGION-rhel-server-releases
11 glibc-common.x86_64 2.17-196.el7_4.2 rhui-REGION-rhel-server-releases
12 initscripts.x86_64 9.49.39-1.el7_4.1 rhui-REGION-rhel-server-releases
13 iwl7265-firmware.noarch 22.0.7.0-58.el7_4 rhui-REGION-rhel-server-releases
14 kernel.x86_64 3.10.0-693.17.1.el7 rhui-REGION-rhel-server-releases
15 kernel-tools.x86_64 3.10.0-693.17.1.el7 rhui-REGION-rhel-server-releases
16 kernel-tools-libs.x86_64 3.10.0-693.17.1.el7 rhui-REGION-rhel-server-releases
要從更新中排除特定包,語法如下
yum --exclude=packagename* update
為了 example, 如果您想排除我們列表中第 10 位的包 glibc,請運行
# yum --exclude=glibc* update
樣本輸出
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
Resolving Dependencies
--> Running transaction check
---> Package bind-libs-lite.x86_64 32:9.9.4-51.el7_4.1 will be updated
---> Package bind-libs-lite.x86_64 32:9.9.4-51.el7_4.2 will be an update
---> Package bind-license.noarch 32:9.9.4-51.el7_4.1 will be updated
---> Package bind-license.noarch 32:9.9.4-51.el7_4.2 will be an update
---> Package binutils.x86_64 0:2.25.1-32.base.el7_4.1 will be updated
---> Package binutils.x86_64 0:2.25.1-32.base.el7_4.2 will be an update
---> Package cloud-init.x86_64 0:0.7.9-9.el7_4.1 will be updated
---> Package cloud-init.x86_64 0:0.7.9-9.el7_4.2 will be an update
---> Package dhclient.x86_64 12:4.2.5-58.el7 will be updated
---> Package dhclient.x86_64 12:4.2.5-58.el7_4.1 will be an update
---> Package dhcp-common.x86_64 12:4.2.5-58.el7 will be updated
---> Package dhcp-common.x86_64 12:4.2.5-58.el7_4.1 will be an update
---> Package dhcp-libs.x86_64 12:4.2.5-58.el7 will be updated
---> Package dhcp-libs.x86_64 12:4.2.5-58.el7_4.1 will be an update
---> Package initscripts.x86_64 0:9.49.39-1.el7 will be updated
---> Package initscripts.x86_64 0:9.49.39-1.el7_4.1 will be an update
您可能已經註意到,包 glibc 不在我們的列表中,因為我們在命令中排除了它。
排除運行的包列表
# yum --exclude=glibc* --exclude=cloud-init* update
或者,您可以使用下面的命令來實現相同的目的。
yum -x 'packagename*' update
要使用相同的命令排除多個包,請運行以下命令
yum -x 'packageName1*' -x 'packageName2*' update
永久禁止特定軟件包在 Yum 中更新
要禁用特定軟件包獲取更新,請使用您選擇的文本編輯器打開以下配置文件
/etc/yum.conf
在配置文件的末尾,附加以下內容
exclude=samba httpd mariadb php
以上不包括 samba、httpd、MariaDB、PHP 包的更新。
排除 32 位包
排除=*.i?86 *.i686
現在,如果您嘗試更新每個單獨的軟件包,您將收到提示“沒有標記為更新的軟件包”
樣本輸出
[root@ip-172-31-16-136 ec2-user]# yum update httpd
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
rhui-REGION-client-config-server-7 | 2.9 kB 00:00:00
rhui-REGION-rhel-server-releases | 3.5 kB 00:00:00
rhui-REGION-rhel-server-rh-common | 3.8 kB 00:00:00
No packages marked for update
[root@ip-172-31-16-136 ec2-user]# yum update samba
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
No packages marked for update
[root@ip-172-31-16-136 ec2-user]# yum update mariadb
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
No packages marked for update
[root@ip-172-31-16-136 ec2-user]# yum update php
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
No packages marked for update
從更新中排除存儲庫
首先,您可能想查看一下系統中的可用存儲庫。 為此,請運行以下命令
yum repolist
輸出
repo id repo name status
Webmin Webmin Distribution Neutral 111
base/7/x86_64 CentOS-7 - Base 9,591
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 12,382
extras/7/x86_64 CentOS-7 - Extras 392
filebeat/x86_64 Filebeat for ELK clients 44
google-chrome google-chrome 3
ius/x86_64 IUS Community Packages for Enterprise Linux 7 - x86_64 468
kibana-5.x Kibana repository for 5.x packages 338
logstash-5.x Elastic repository for 5.x packages 338
nux-dextop/x86_64 Nux.Ro RPMs for general desktop use 2,575
updates/7/x86_64 CentOS-7 - Updates 1,962
repolist: 28,204
要禁用 repo 更新,我們在 yum update 命令旁邊使用 ‘–disablerepo=reponame’ 選項。
yum --disablerepo=reponame update
或者,’update’ 命令可以在 ‘disablerepo=reponame’ 選項之前,如圖所示
yum update -disablerepo=reponame
在上面 example, 如果我想禁用 kibana-5.x 更新,我會運行
yum --disablerepo=kibana-5.x update
要在一行中排除多個存儲庫,請使用逗號分隔存儲庫,如下所示
yum update--disablerepo=kibana-5.x,logstash-5.x
這樣做的作用是它會更新其餘的 repos 但忽略 kibana-5.x
使用啟用的參數從更新中排除存儲庫
您可以在存儲庫配置文件中將 ‘enabled’ 參數設置為 0,而不是在 yum update 命令中禁用存儲庫更新。
repo 配置文件位於 /etc/yum.repos.d 中,如圖
[root@epicenter ~]# ls -l /etc/yum.repos.d/
total 84
-rw-r--r--. 1 root root 1664 Aug 30 2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Aug 30 2017 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Aug 30 2017 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 Aug 30 2017 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 Aug 30 2017 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Aug 30 2017 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 Aug 30 2017 CentOS-Vault.repo
-rw-r--r-- 1 root root 390 Jan 28 20:05 decathorpe-elementary-stable-fedora-25.repo
-rw-r--r-- 1 root root 391 Jan 28 21:03 decathorpe-elementary-stable.repo
-rw-r--r-- 1 root root 951 Oct 2 20:44 epel.repo
-rw-r--r-- 1 root root 1050 Oct 2 20:44 epel-testing.repo
-rw-r--r--. 1 root root 178 Oct 4 13:01 filebeat.repo
-rw-r--r-- 1 root root 173 Jan 10 12:54 google-chrome.repo
-rw-r--r-- 1 root root 1150 Feb 23 2017 ius-archive.repo
-rw-r--r-- 1 root root 1131 Feb 23 2017 ius-dev.repo
-rw-r--r-- 1 root root 1073 Feb 23 2017 ius.repo
-rw-r--r-- 1 root root 1150 Feb 23 2017 ius-testing.repo
-rw-r--r--. 1 root root 212 Oct 3 12:05 kibana.repo
-rw-r--r--. 1 root root 216 Oct 3 14:01 logstash.repo
-rw-r--r-- 1 root root 477 Jul 31 2014 nux-dextop.repo
-rw-r--r--. 1 root root 163 Oct 3 11:23 webmin.repo
要排除 kibana-5.x 存儲庫,請使用文本編輯器打開配置文件並將“啟用”選項設置為 0,如下所示。
vim /etc/yum.repos.d/kibana.repo
如果您運行 yum repolist,存儲庫將不會顯示在結果中,如圖所示
repo id repo name status
Webmin Webmin Distribution Neutral 111
base/7/x86_64 CentOS-7 - Base 9,591
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 12,382
extras/7/x86_64 CentOS-7 - Extras 392
filebeat/x86_64 Filebeat for ELK clients 44
google-chrome google-chrome 3
ius/x86_64 IUS Community Packages for Enterprise Linux 7 - x86_64 468
logstash-5.x Elastic repository for 5.x packages 338
nux-dextop/x86_64 Nux.Ro RPMs for general desktop use 2,575
updates/7/x86_64 CentOS-7 - Updates 1,962
repolist: 27,866
這意味著在運行 yum update 命令時不會更新 kibana 存儲庫中的任何包。
感謝您花時間閱讀本教程。 我們希望我們已經解決瞭如何在 Yum 中禁用特定軟件包的問題。 免費嘗試一下,然後將您的反饋反饋給我們。