YUM(Yellowdog更新修改)是几种Linux版本一样RHEL( 红帽企业Linux), 摘录 S( 社区企业操作系统 )和Fedora一个开源默认的包管理系统。 yum工具是用来安装 , 升级 ,在系统中的分布存储库中删除基于RPM软件包。
但有时我们不想做更新某些软件包,如Apache服务器 (HTTP),MySQL,PHP和其他主要的应用程序,因为如果这样的更新可能会在服务器上损害当前运行的Web应用程序或您可能会停止更新,直到将应用程序打补丁与新的更新。
YUM排除软件包更新
在这篇文章中,我们将向您展示如何,我们可以使用YUM工具排除(禁用)某些软件包更新。 我们可以从任何第三方存储库中排除或禁用某些包更新。 排除语法如下。
exclude=package package1 packages*
上述语法将排除“ 包 ”,“ 包1”和“ 一揽子 ”更新或安装列表。 每个关键字应以空格分隔,以便排除包。
如何排除YUM中的包
为了排除(禁用)特定的软件包更新,称为/etc/yum.conf中与您选择的编辑器打开文件。
# vi /etc/yum.conf
使用exclude关键字在文件底部添加以下行,如下所示。
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release # This is the default, if you make this bigger yum won't see if the metadata # is newer on the remote and so you'll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which don't keep old packages around. If you don't like this checking # interupting your command line usage, it's much better to have something # manually check the metadata once an hour (yum-updatesd will do this). # metadata_expire=90m # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d ## Exclude following Packages Updates ## exclude=httpd php mysql
在上面的例子中,该行排除将禁用“ 的httpd”,“PHP”和“mysql的 ”包更新。 让我们尝试安装或使用YUM命令,如下图所示更新其中之一。
# yum update httpd
示例输出
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos.01link.hk * extras: centos.01link.hk * updates: mirrors.hns.net.in base | 3.7 kB 00:00 extras | 3.0 kB 00:00 updates | 3.5 kB 00:00 updates/primary_db | 2.7 MB 00:16 Setting up Update Process No Packages marked for Update
如何从EPEL Repo中排除软件包
要排除的软件包安装或更新来自EPEL软件库,然后打开名为/etc/yum.repos.d/epel.repo文件。
# vi /etc/yum.repos.d/epel.repo
通过指定要从更新中排除的包来添加排除行。
[epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 ## Exclude following Packages Updates ## exclude=perl php python
现在尝试更新上面使用YUM命令EPEL软件库指定的文件。
# yum --enablerepo=epel update perl php python
示例输出
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.hns.net.in * epel: ftp.kddilabs.jp * extras: mirrors.hns.net.in * updates: mirrors.hns.net.in Setting up Update Process No Packages marked for Update
您还可以使用yum命令行选项来排除包而不添加到存储库文件。
# yum --exclude=httpd update
要排除程序包列表,请使用以下命令。
# yum --exclude=mysql\* --exclude=httpd\* update
这样,您可以排除任何所需的包的更新。 还有很多其他方法可以做,例如,最近我们编译了一篇文章,关于4在Linux中使用yum命令阻止/禁用或锁定某些包的有用方法,您应该在这里阅读: