分享最新优惠信息
购买主机更加划算

RHEL Linux系统使用YUM/DNF禁用Package(包)更新的简单方法

DNF(Dandified Yum)是YUM(Yellowdog Updater Modified)的下一代版本,它是基于Red Hat的Linux发行版的一个开源的默认包管理器,用于从官方软件库和第三方库获取、安装、升级、删除以及查询Package(包)。

在更新系统时,有时候我们不希望更新某些软件包,例如Apache Server ( HTTP )、MySQLPHP或任何其它主要应用程序,因为更新此类软件可能会破坏服务器上当前正在运行的Web应用程序并导致重大问题。因此,建议停止此类软件的更新,直到应用程序获得最新的更新补丁。

在本文中,小编将简单介绍如何在基于RPM发行版(如RHELCentOSFedoraRocky LinuxAlmaLinux)上使用YUMDNF包管理器排除(禁用)某些包更新。此外,还可以从任何第三方存储库中排除或禁用某些包的更新。

Package(包)

排除语法如下:

exclude=package package1 packages*

上述exclude指令可在/etc/yum.conf/etc/dnf/dnf.conf配置文件中定义,其中包含要从更新或安装中排除的软件包列表。

上述语法将排除“ package ”、“ package1 ”和“ package ”更新或安装列表。每个关键字应该用空格分隔以排除包。

如何排除YUM或DNF中的包

要排除(禁用)特定的软件包更新,可以使用编辑器打开名为/etc/yum.conf/etc/dnf/dnf.conf的文件。

# vi /etc/yum.conf
或者
# vi /etc/dnf/dnf.conf

使用exclude关键字在文件底部添加以下行,如下所示。

[main] 
cachedir=/var/cache/yum/$basearch/$releasever 
keepcache=0 
debuglevel=2 
logfile=/var/log/yum.log 
exactarch=1 
obsoletes=1 
gpgcheck=1
[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
或者
# dnf 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/dnf命令从EPEL存储库更新上面指定的文件,如下所示。

# dnf update perl php python
或者
# yum update perl php python
样本输出如下
Last metadata expiration check: 0:00:37 ago on Wednesday 17 November 2021 03:41:28 AM EST.
Package perl available, but not installed.
No match for argument: perl
No match for argument: php
No match for argument: python
Error: No packages marked for upgrade.

此外,你还可以使用yum/dnf命令行选项来排除包,而无需将它们添加到存储库文件中。

# yum --exclude=httpd update
或者
# dnf --exclude=httpd update

要排除软件包列表,请使用以下命令。

# yum --exclude=mysql\* --exclude=httpd\* update
或者
# dnf --exclude=mysql\* --exclude=httpd\* update

通过以上这种方式,你可以排除所需的任何软件包的更新。当然,还有很多其它方法可以做到以上的效果,本文就不在赘述了。

未经允许不得转载:惠主机 » RHEL Linux系统使用YUM/DNF禁用Package(包)更新的简单方法