Yum Exclude 示例跳过 Linux 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
- 点赞
- 收藏
- 关注作者
评论(0)