如何从yum更新中排除特定包

时间:2020-03-05 15:26:40  来源:igfitidea点击:

在本文中,我们将向我们展示如何使用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

例如,如果要排除在我们列表中的第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位包

排除= *。
我?
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,我们将使用"--disabledepo = reponame"选项与yum update命令一起使用。

yum --disablerepo=reponame update

或者,"更新"命令可以在"disableDepo = reponame'option之前,如图所示

yum update -disablerepo=reponame

在上面的例子中,如果我想从更新中禁用Kibana-5.x,我会运行

yum --disablerepo=kibana-5.x update

要在一行中排除多个存储库,请使用逗号分隔存储库,如下所示

yum update--disablerepo=kibana-5.x,logstash-5.x

这是什么样的是它将更新其余的Repo物,但遗漏了kibana-5.x

从使用已启用的参数更新时排除存储库

我们可以在存储库配置文件中将"已启用"参数设置为0,而不是禁用Repo。
repo配置文件位于/etc/yum.repos.d中,如图所示

[root@epicenter ~]# ls -l /etc/yum.repos.d/
total 84
-rw-r--r--. 1 root root 1664 Aug 30  2016 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Aug 30  2016 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Aug 30  2016 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 Aug 30  2016 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Aug 30  2016 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Aug 30  2016 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 Aug 30  2016 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 Nov 23  2016 ius-archive.repo
-rw-r--r--  1 root root 1131 Nov 23  2016 ius-dev.repo
-rw-r--r--  1 root root 1073 Nov 23  2016 ius.repo
-rw-r--r--  1 root root 1150 Nov 23  2016 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 May 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 Repo的任何包。