如何從 Yum 更新中排除特定包

在本文中,我們將向您展示如何使用 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 中禁用特定軟件包的問題。 免費嘗試一下,然後將您的反饋反饋給我們。