Yum Exclude 示例跳过 Linux Yum 更新包

举报
Tiamo_T 发表于 2022/09/15 23:43:28 2022/09/15
【摘要】 当您执行 yum update 时,它​​将下载您系统上安装的所有软件包的最新版本,并将它们升级到最新版本。 您可能处于不希望 yum 自动更新一个(或多个)特定软件包的情况。

当您执行 yum update 时,它​​将下载您系统上安装的所有软件包的最新版本,并将它们升级到最新版本。

您可能处于不希望 yum 自动更新一个(或多个)特定软件包的情况。

在这些情况下,请使用 yum exclude 选项,如下例所示。

1. 使用选项 -x 排除单个包

例如,在这个系统上,我们使用的是 PHP 5.1,并且在这个系统上运行的自定义 php 应用程序还没有使用任何其他新版本的 PHP 进行测试。

# rpm -q php
php-5.1.0-27.el6_5.x86_64

因此,在这种情况下,当我们进行更新时,我们只想排除一个特定的包,即 php。正如我们在下面看到的,当我们执行 'yum update' 命令时,以下表明 php 包将更新到 5.3.3 版。

# yum check-update php
php.x86_64    5.3.3-40.el6_6      updates

以下将在 yum 更新期间仅排除一个包(php)。

# yum -x php update

2. 使用选项 -x 排除多个包

您可以通过指定多个 -x 选项来排除多个包,如下所示:


yum -x php -x httpd update

您还可以通过指定以逗号分隔的包列表来排除多个包。下面的行为与上面完全相同。

yum -x php,httpd update

3. 使用通配符排除多个包(例如内核包)

在大多数情况下,您可能不希望 yum update 自动升级内核。

在进行真正的 yum 更新之前,您可以执行 yum check-update,它会显示在 yum 更新期间它将升级的所有软件包。

正如你在下面看到的,在这个例子中,有三个内核相关的包将被 yum update 升级。

# yum check-update | grep -i kernel
kernel.x86_64            2.6.32-504.1.3.el6  updates
kernel-firmware.noarch   2.6.32-504.1.3.el6  updates
kernel-headers.x86_64    2.6.32-504.1.3.el6  updates

我们可以简单地使用 shell glob 通配符,而不是在 -x 排除列表中指定所有单独的包名称,如下所示。以下将排除在 yum 更新期间开始升级的所有内核相关软件包。

yum -x kernel* update

4. -x 选项中的多个通配符列表

您还可以在 -x 选项中指定多个通配符列表。

如下所示,下图表示有多个 php 包将在下一次 yum 更新时升级。

# yum check-update | grep -i php
php.x86_64         5.3.3-40.el6_6   updates
php-cli.x86_64     5.3.3-40.el6_6   updates
php-common.x86_64  5.3.3-40.el6_6   updates
php-xml.x86_64     5.3.3-40.el6_6   updates

如果你想在下一次 yum 更新时排除所有 php 和内核相关的包,你可以使用下面的。请注意,您应该在此示例中使用 ' '。

yum -x 'php*' -x 'kernel*' update

5. 使用--exclude 代替-x

您也可以使用 –exclude 代替 -x,如下所示:

yum --exclude php update
yum --exclude httpd update
yum --exclude kernel update

yum -exclude php*,httpd*,kernel* update

6. 使用 yum.conf 文件排除软件包

您可以在 /etc/yum.conf 文件中指定它们,而不是在命令行中指定要排除的软件包。

例如,要排除所有要从 yum 更新中排除的 php、httpd 和内核包,请添加以下行:

exclude=php* httpd* kernel*

或者,执行以下命令:

echo "exclude=php* httpd* kernel*" >> /etc/yum.conf

7. 使用逗号分隔列表

您还可以通过指定以逗号分隔的通配符包列表来排除多个包。下面的行为与上面完全相同。

yum -x php*,kernel* update

为了与我们使用上面的 -x 选项显示其他示例的方式保持一致,您还可以使用逗号(而不仅仅是空格)来分隔多个包,如下所示:

# vi /etc/yum.conf
exclude=php*,httpd*,kernel*

8. 自定义回购文件中的排除参数

除了在主 yum.conf 文件中指定 exclude 参数,您还可以在单​​独的存储库文件中指定它。

例如,如果你已经安装了 mongodb,你将在 /etc/yum.repos.d 目录下拥有 mongodb.repo。您可以在此 mongodb.repo 文件中指定 mongodb 存储库的排除包列表。

# vi /etc/yum.repos.d/mongodb.repo
exclude=mongo*

9. 使用 check-update 模拟 Yum Exclude Check (Dry-run -x)

您还可以指定 -x 选项以及 check-update。这有助于您检查您在命令行或 yum.conf 文件中指定的 -x 选项是否按预期工作。

例如,以下表示在 yum update 期间将升级内核。

# yum check-update | grep -i kernel
kernel.x86_64                        2.6.32-504.1.3.el6                  updates
kernel-firmware.noarch               2.6.32-504.1.3.el6                  updates
kernel-headers.x86_64                2.6.32-504.1.3.el6                  updates

以下表明 -x 标志将按预期工作,因为它没有在结果中返回任何内容。

# yum -x kernel* check-update | grep -i kernel

例如,假设 yum.conf 文件中存在以下排除行。

# grep exclude /etc/yum.conf
exclude=php*,httpd*,kernel*

然后,以下表明上述 /etc/yum.conf 中指定的排除列表将按预期工作,因为 check-update 未在以下输出中显示这些包(包括内核)。

# yum check-update | egrep 'php|httpd|kernel'

10.忽略从yum.conf文件中排除

如果您想禁用 yum.conf 文件中提到的排除项。即如果您不希望 yum update 考虑在 yum.conf 文件中指定的排除列表,您可以从命令行使用 –disableexcludes 选项。

在我们之前的示例中,我们排除了 yum 更新要更新的 php、httpd 和内核包。

但是,如果您希望 yum 忽略该排除列表(即禁用排除)并继续升级 php、httpd 和内核作为常规 yum 更新命令的一部分,请执行以下命令:

yum --disableexcludes=all update

以下是您可以为 disableexcludes 指定的三个可能值

  • all 禁用所有排除
  • main 禁用在 yum.conf 文件的主要部分中指定的排除项
  • repo 禁用为给定 repo id 指定的排除项

如果您只想为特定的自定义存储库禁用排除,您可以指定 repo id(它是 yum repolist 命令中的第一列,如下所示)。

# yum repolist
repo id   repo name           status
mongodb   MongoDB Repository    240
base      CentOS-6 - Base     6,518
extras    CentOS-6 - Extras      35
updates   CentOS-6 - Updates    315

以下将禁用(忽略)/etc/yum.repos.d 目录下的 mongodb.repo 文件中指定的排除列表。

yum --disableexcludes=mongodb update
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。