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