安装、管理和删除用户空间组件


Red Hat Enterprise Linux 8

使用 YUM 软件管理工具管理 BaseOS 和 AppStream 存储库中的内容

Red Hat Customer Content Services

摘要

使用 YUM 工具查找、安装和使用通过 BaseOS 和 AppStream 存储库分发的内容。了解如何使用软件包、模块、流和配置文件。

对红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

通过 Jira 提交反馈(需要帐户)

  1. 登录到 Jira 网站。
  2. 单击顶部导航栏中的 Create
  3. Summary 字段中输入描述性标题。
  4. Description 字段中输入您的建议以改进。包括文档相关部分的链接。
  5. 点对话框底部的 Create

第 1 章 Red Hat Enterprise Linux 8 中的软件管理工具

在 Red Hat Enterprise Linux (RHEL) 8 中,使用 YUM 管理软件。YUM 基于 DNF 技术,它增加了对模块化功能的支持。

注意

上游文档将技术识别为 DNF,该工具称为 DNF。因此,RHEL 8 中新的 YUM 工具返回的一些输出包括 DNF

虽然 YUM 基于 DNF,但它与 RHEL 7 中使用的 YUM 兼容。对于软件安装,yum 命令及其大多数选项在 RHEL 8 中的工作方式与 RHEL 7 中相同。

所选的 YUM 插件和工具已移植到新的 DNF 后端,并可安装在 RHEL 7 中相同的名称下。软件包还提供兼容性符号链接。因此,您可以在通常的位置查找二进制文件、配置文件和目录。

注意

RHEL 7 中 YUM 提供的旧 Python API 不再可用。您可以将插件和脚本迁移到 RHEL 8 中 YUM 提供的新的 DNF Python API 中。如需更多信息,请参阅 DNF API 参考

第 2 章 RHEL 8 中的内容发布

在以下部分中,了解软件如何在 Red Hat Enterprise Linux 8 中分发。

2.1. 软件仓库

Red Hat Enterprise Linux (RHEL)通过不同的存储库分发内容,例如:

BaseOS
BaseOS 存储库中的内容由底层操作系统功能的核心组件组成,其为所有安装提供基础。此内容以 RPM 格式提供,它的支持条款与 RHEL 早期版本中的条款类似。
AppStream

AppStream 仓库的内容包括额外的用户空间应用程序、运行时语言和数据库来支持各种工作负载和使用案例。AppStream 中的内容以以下格式提供:

  • RPM 软件包
  • 模块,它们是 RPM 格式的扩展
重要

RHEL 需要 BaseOS 和 AppStream 内容集,它们在所有 RHEL 订阅中都提供。有关安装说明,请参阅从安装介质主动安装 RHEL

CodeReady Linux Builder
CodeReady Linux Builder 存储库在所有 RHEL 订阅中可用。它为开发人员提供了额外的软件包。红帽不支持 CodeReady Linux Builder 存储库中包含的软件包。

其他资源

2.2. 应用程序流

Red Hat Enterprise Linux (RHEL) 8 引入了多个名为 Application Streams 的用户空间组件版本的概念。这些组件的交付和更新频率会比核心操作系统软件包更频繁。这为自定义 Red Hat Enterprise Linux RHEL 提供了更大的灵活性,而不影响平台或特定部署的底层稳定性。Application Streams 通过 AppStream 软件仓库提供。

提供以下格式的应用程序流:

  • RPM 软件包
  • 模块,它们是 RPM 格式的扩展
重要

每个 Application Stream 都有自己的生命周期,它可能比 RHEL 8 的生命周期相同或更短。如需更多信息,请参阅 Red Hat Enterprise Linux Application Streams 生命周期

始终决定您要安装应用程序流的哪个版本,并确保首先查看 RHEL 应用程序流生命周期。

2.3. 模块简介

模块是代表一个组件的一组 RPM 软件包。典型的模块包含以下软件包类型:

  • 带有应用程序的软件包
  • 带有特定于应用程序依赖项库的软件包
  • 带有应用程序文档的软件包
  • 带有助手工具的软件包

2.3.1. 模块流

模块流是可以作为 AppStream 物理存储库中的虚拟存储库的过滤器。AppStream 组件的模块流版本。每个流都独立接收更新,它们可以依赖于其他模块流。

模块流可以是活跃的或者不活跃的。活跃的流可让系统访问特定模块流中的 RPM 软件包,允许安装相应的组件版本。

在以下情况下,流处于活跃状态:

  • 如果管理员明确启用了它。
  • 如果流是启用的模块的依赖项。
  • 如果流是默认流。每个模块都可以具有默认流。默认流可让您轻松使用 RHEL 软件包而无需了解模块。默认流处于活跃状态,除非禁用了整个模块或启用了该模块的另一个流。

给定时间点上只能激活一个特定模块的流。因此,系统中只能安装一个组件版本。不同的容器可以使用不同的版本。

重要

默认流在整个 RHEL 主发行版本中不会改变。始终考虑每个流的 生命周期。不要依赖默认流,在 RHEL 主发行版本结束前,默认流达到生命周期结束状态。

某些模块流依赖于其他模块流。例如,以下模块流依赖于特定的 perl 模块流:

  • perl-App-cpanminus
  • perl-DBD-MySQL
  • perl-DBD-Pg
  • perl-DBD-SQLite
  • perl-DBI
  • perl-YAML
  • freeradius

在为运行时用户应用程序或开发人员应用程序选择特定流前,请考虑以下几点:

  • 所需的功能以及支持哪个组件版本。
  • 与您的应用程序或用例兼容。
  • Application Stream 和您的更新计划 的生命周期

有关所有可用模块和流的列表,请查看 软件包清单。有关每个组件的更改,请查看 发行注记

2.3.2. 模块配置集

模块配置文件是为特定用例要一起安装的推荐的软件包列表,如服务器、客户端、开发、最小安装或其他。这些软件包列表可以包含模块流以外的软件包,通常是来自 BaseOS 存储库或流依赖项的软件包。

使用配置集安装软件包是为方便用户提供的一次性操作。它不会阻止安装或卸载该模块提供的任何软件包。您还可以使用同一模块流的多个配置集安装软件包,而无需进一步准备步骤。

每个模块流可以有任何数量的配置集,包括没有。对于任何给定模块流,其某些配置集可以被标记为 default,然后如果您未明确指定配置集,则用于配置集安装操作。但是,模块流的默认配置文件的存在不是必需的。

例 2.1. httpd 模块配置集

提供 Apache Web 服务器的 httpd 模块为安装提供以下配置集:

# yum module list httpd
Name           Stream           Profiles                            Summary
httpd          2.4 [d]          common [d], devel, minimal          Apache HTTP Server

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

在本例中,提供了以下配置文件:

  • 常见 :生产环境就绪的软件包。这是默认的配置文件([d])。
  • devel :对 httpd 进行修改所需的软件包。
  • 最小 :提供正在运行的 Apache Web 服务器的最小软件包集合。

第 3 章 配置 YUM

YUM 及相关工具的配置信息保存在 /etc/yum.conf 文件中。此文件包含一个必需的 [main] 部分,可用于设置具有全局效果的 YUM 选项。

3.1. 查看当前的 YUM 配置

/etc/yum.conf 文件中的 [main] 部分只包含明确设置的设置。但是,您可以显示 [main] 部分的所有设置,包括尚未设置的部分,因此请使用它们的默认值。

步骤

  • 显示全局 YUM 配置:

    # yum config-manager --dump

其他资源

  • 您系统上的 dnf.conf (5) 手册页

3.2. 设置 YUM 主要选项

/etc/yum.conf 配置文件包含一个 [main] 部分。本节中的键值对会影响 YUM 如何运行并对待存储库。

步骤

  1. 编辑 /etc/yum.conf 文件。
  2. 根据您的要求更新 [main] 部分。
  3. 保存更改。

其他资源

  • [main] OPTIONSOPTIONS FOR BOTH [main] AND REPO sectiona on you system 的 dnf.conf (5) man page

3.3. 启用和禁用 YUM 插件

YUM 工具中,插件会被默认加载。但是,您可以影响 YUM 加载的插件。

警告

禁用所有插件只用于诊断潜在的问题。YUM 需要特定的插件,如 product-idsubscription-manager,并且禁用它们会导致 Red Hat Enterprise Linux 无法从 Content Delivery Network (CDN)安装或更新软件。

步骤

  • 使用以下方法之一来影响 YUM 使用插件的方式:

    • 要在全局范围内启用或禁用 YUM 插件的加载,请将 plugins 参数添加到 /etc/dnf/dnf.conf 文件的 [main] 部分。

      • 设置 plugins=1 (默认)以启用载入所有 YUM 插件。
      • 设置 plugins=0 以禁用载入所有 YUM 插件。
    • 要禁用特定的插件,请将 enabled=False 添加到 /etc/dnf/plugins/<plug-in_name>.conf 文件的 [main] 部分中。
    • 要禁用特定命令的所有 YUM 插件,请在命令中附加-- noplugins 选项。例如,要为单个 update 命令禁用 YUM 插件,请输入:

      # yum --noplugins update
    • 要为单个命令禁用特定的 YUM 插件,请在命令中附加-- disableplugin=plugin-name 选项。例如,要为单个 update 命令禁用特定的 YUM 插件,请输入:

      # yum update --disableplugin=<plugin_name>
    • 要为单个命令启用特定的 YUM 插件,请在命令中附加-- enableplugin=plugin-name 选项。例如,要为单个 update 命令启用特定的 YUM 插件,请输入:

      # yum update --enableplugin=<plugin_name>

3.4. 从 YUM 操作中排除软件包

您可以使用 excludepkgs 选项,将 YUM 配置为排除任何 YUM 操作中的软件包。您可以在 /etc/yum.conf 文件的 [main] 或 repository 部分中定义 excludepkgs

注意

您可以使用 --disableexcludes 选项,临时禁止从操作中排除配置的软件包。

步骤

  • 通过在 /etc/yum.conf 文件中添加以下行,从 YUM 操作中排除软件包:

    excludepkgs=<package_name_1>,<package_name_2> ...

    或者,使用全局表达式而不是软件包名称来定义您要排除的软件包。如需更多信息,请参阅在 yum 输入 中指定全局表达式

其他资源

  • 您系统上的 dnf.conf (5) 手册页

第 4 章 搜索 RHEL 8 内容

在以下部分中,了解如何使用 YUM 查找和检查 Red Hat Enterprise Linux 8 中 AppStream 和 BaseOS 软件仓库中的内容。

4.1. 搜索软件包

要识别提供您需要的软件的软件包,您可以使用 YUM 搜索存储库。

步骤

  • 根据您的场景,使用以下选项之一来搜索存储库:

    • 要在软件包的名称或摘要中搜索术语,请输入:

      $ yum search <term>
    • 要在软件包的名称、概述或描述中搜索术语,请输入:

      $ yum search --all <term>

      请注意,在描述中使用 --all 选项进行额外搜索比普通搜索操作要慢。

4.2. 列出软件包

您可以使用 YUM 显示存储库中可用的软件包列表及其版本。

步骤

  • 列出所有可用软件包的最新版本,包括构架、版本号以及从其中安装的存储库:

    $ yum list --all
    ...
    cups.x86_64           1:2.2.6-57.el8       @rhel-AppStream
    cups-client.x86_64    1:2.2.6-57.el8       @rhel-AppStream
    cups-devel.i686       1:2.2.6-57.el8       rhel-AppStream
    cups-devel.x86_64     1:2.2.6-57.el8       rhel-AppStream
    ...

    存储库前面的 @ 符号表示此行中的软件包当前已安装。

    另外,要显示所有可用的软件包,包括版本号和架构,请输入:

    $ yum list --all
    ...
    cups-1:2.2.6-57.el8.x86_64
    cups-client-1:2.2.6-57.el8.x86_64
    cups-devel-1:2.2.6-57.el8.i686
    cups-devel-1:2.2.6-57.el8.x86_64
    ...

    另外,您可以使用其他选项而不是 --all 来过滤输出,例如:

    • 使用 --installed 仅列出已安装的软件包。
    • 使用 --available 列出所有可用软件包。
    • 使用 --upgrades 列出新版本提供的软件包。
注意

您可以通过将全局表达式附加为参数来过滤结果。如需更多信息,请参阅在 yum 输入 中指定全局表达式

4.3. 列出软件仓库

要获得系统上启用和禁用的存储库的概述,您可以列出它们。

步骤

  1. 列出系统中所有启用的软件仓库,:

    # yum repolist

    要只显示某些存储库,请在命令中附加以下选项之一:

    • 附加 --disabled 只列出禁用的存储库。
    • 附加 --all 列出启用和禁用的存储库。
  2. 可选:列出仓库的附加信息:

    # yum repoinfo <repository_name>
    注意

    您可以通过将全局表达式附加为参数来过滤结果。如需更多信息,请参阅在 yum 输入 中指定全局表达式

4.4. 显示软件包信息

您可以查询 YUM 存储库来显示软件包的详情,如下所示:

  • Version
  • 发布
  • 架构
  • 软件包大小
  • 描述

步骤

  • 显示一个或多个可用软件包的信息:

    # yum info <package_name>

    这个命令显示当前安装的软件包的信息,如果有的话,显示存储库中的较新版本。

注意

您可以通过将全局表达式附加为参数来过滤结果。如需更多信息,请参阅在 yum 输入 中指定全局表达式

4.5. 列出软件包组和它们提供的软件包

软件包组捆绑多个软件包,您可以使用软件包组在一个步骤中安装分配给组的所有软件包。但是,在安装前必须识别所需软件包组的名称。

步骤

  1. 列出已安装的和可用的组:

    # yum group list

    请注意,您可以通过在 yum group list 命令 中附加-installed and- available 选项来过滤结果。通过使用 --hidden 选项,您可以在输出中显示隐藏组。

  2. 列出特定组中包含的强制的、可选的和默认的软件包:

    # yum group info <group_name>
    注意

    您可以通过将全局表达式附加为参数来过滤结果。如需了解更多详细信息,请参阅 在 yum 输入 中指定全局表达式

  3. 可选:查看已安装的和可用的组数量:

    # yum group summary

4.6. 列出可用模块及其内容

通过搜索模块并使用 YUM 显示它们的信息,您可以识别存储库中可用的模块,并在安装模块前选择适当的流。

步骤

  1. 使用以下方法之一列出模块信息:

    • 列出所有可用模块:

      $ yum module list
      Name         Stream   Profiles                                Summary
      ...
      nodejs       18       common [d], development, minimal, s2i   Javascript runtime
      postgresql   15       client, server [d]                      PostgreSQL server and client module
      ...
      
      Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

      使用 yum module list <module_name > 命令列出相同的信息,但只列出特定模块。

    • 搜索哪个模块提供了某个软件包:

      $ yum module provides <package_name>

      例如,要显示哪些模块和配置文件提供了 npm 软件包,请输入:

      $ yum module provides npm
      ...
      npm-1:8.19.4-1.16.20.2.4.module+el8.9.0+21536+8fdee1fb.x86_64
      Module   : nodejs:16:8090020240315081818:a75119d5:x86_64
      Profiles : common development s2i
      Repo     : rhel-AppStream
      Summary  : Javascript runtime
      ...
  2. 使用以下方法之一列出模块详情:

    • 列出模块的所有详情,包括描述、所有配置文件的列表以及模块提供的所有软件包的列表:

      $ yum module info <module_name>

      例如,要显示 nodejs 模块的详情,请输入:

      $ yum module info nodejs
      ...
      Name             : nodejs
      Stream           : 20
      Version          : 8090020240228165436
      Context          : a75119d5
      Architecture     : x86_64
      Profiles         : common [d], development, minimal, s2i
      Default profiles : common
      Repo             : rhel-AppStream
      Summary          : Javascript runtime
      Description      : Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
      Requires         : platform:[el8]
      Artifacts        : nodejs-1:20.11.1-1.module+el8.9.0+21380+12032667.src
                       : nodejs-1:20.11.1-1.module+el8.9.0+21380+12032667.x86_64
      ...
    • 列出每个模块配置文件安装了哪些软件包:

      $ yum module info --profile <module_name>
      注意

      每个配置集会安装不同的软件包集合,包括其依赖性。

      例如,要显示 nodejs 模块的此信息,请输入:

      $ yum module info --profile nodejs
      ...
      Name        : nodejs:18:8090020240301110609:a75119d5:x86_64
      common      : nodejs
                  : npm
      development : nodejs
                  : nodejs-devel
                  : npm
      minimal     : nodejs
      s2i         : nodejs
                  : nodejs-nodemon
                  : npm
      ...

其他资源

4.7. 在 YUM 输入中指定全局表达式

您可以通过将一个或多个全局表达式附加为参数来过滤 yum 命令的结果。

步骤

  • 如果您在 yum 命令中使用全局表达式,则使用以下方法之一:

    • 将整个全局表达式用单引号或双引号括起来:

      # yum provides "*/<file_name>"

      请注意,您必须在 &lt ;file_name > 之前使用一个反斜杠(/)字符作为绝对路径,或者为 */,如果完整路径未知,则使用通配符。

    • 在它们前面使用反斜杠(\)字符转义通配符字符:

      # yum provides \*/<file-name>

4.8. 其他资源

第 5 章 安装 RHEL 8 内容

在以下部分中,了解如何使用 YUM 在 Red Hat Enterprise Linux 8 中安装内容。

5.1. 安装软件包

如果软件不是默认安装的一部分,您可以手动安装它。YUM 会自动解析并安装依赖项。

先决条件

  • 可选:您知道您要安装的软件包的名称
  • 如果要安装的软件包由模块流提供,则会启用对应的模块流。如需更多信息,请参阅 启用模块流

    注意

    如果软件包是由标记为默认的模块流提供的,则 yum 会在安装此软件包前自动启用该模块流。

步骤

  • 使用以下方法之一安装软件包:

    • 要从存储库安装软件包,请输入:

      # yum install <package_name_1> <package_name_2> ...

      如果您在支持多个构架(如 AMD64 和 Intel 64)的系统中安装软件包,您可以通过将其附加到软件包名称来指定软件包的架构:

      # yum install <package_name>.<architecture>
    • 如果您只知道软件包提供的文件的路径,但知道软件包名称,您可以使用此路径安装相应的软件包:

      # yum install <path_to_file>
    • 要安装本地 RPM 文件,请输入:

      # yum install <path_to_RPM_file>

      如果软件包有依赖项,还要指定到这些 RPM 文件的路径。否则,YUM 从存储库下载依赖项,或者如果存储库中不可用,则会失败。

其他资源

5.2. 安装软件包组

软件包组捆绑多个软件包,您可以使用软件包组在一个步骤中安装分配给组的所有软件包。

流程

  • 使用以下方法之一安装软件包组:

    • 要按组名称安装软件包组,请输入以下命令之一:

      # yum group install <group_name>
      # yum install @<group_name>
    • 要根据 groupID 安装软件包组,请输入:

      # yum group install <group_ID>

5.3. 启用模块流

如果要安装的软件包由模块流提供,您必须启用对应的模块流。

注意

如果软件包是由标记为默认的模块流提供的,则 yum 会在安装此软件包前自动启用该模块流。

重要

建议您始终选择特定的模块流进行安装。始终考虑每个流的 生命周期

请注意,某些默认模块流在 RHEL 主发行版本结束前到达生命周期结束状态。

步骤

  • 启用模块流:

    # yum module enable <module_name>:<stream>
    注意

    如果之前因为默认而激活的模块的另一个流会变得不活跃。

5.4. 安装模块化内容

对于某些软件,红帽提供了模块。您可以使用模块安装特定版本(流)和一组软件包(配置文件)。

重要

始终考虑模块流的 生命周期

先决条件

  • 您没有任何从同一模块的另一个流安装的软件包。

流程

  1. 列出提供您要安装的软件包的模块:

    # yum module list <module_name>

    例如,要列出提供 postgresql-server 软件包的模块,请输入:

    $ yum module list postgresql
    Name        Stream  Profiles            Summary
    postgresql  9.6     client, server [d]  PostgreSQL server and client module
    postgresql  10 [d]  client, server [d]  PostgreSQL server and client module
    postgresql  12      client, server [d]  PostgreSQL server and client module
    postgresql  13      client, server [d]  PostgreSQL server and client module
    postgresql  15      client, server [d]  PostgreSQL server and client module
    
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

    输出显示 postgresql 模块与流 9.610121315 一起提供。默认流为 10 ([d])。

  2. 安装所选模块流:

    # yum module install <module-name>:<stream>/<profile>

    如果定义了流的默认配置集,您可以在命令中省略 /& lt;profile > 来安装此流的默认配置集。

    例如,要为 postgresql 模块流 13 安装默认配置集(服务器),请输入:

    # yum module install postgresql:13
    ...
    Dependencies resolved.
    ===================================================================================================================
     Package                  Architecture  Version                                        Repository             Size
    ===================================================================================================================
    Installing group/module packages:
     postgresql-server        x86_64        13.10-1.module+el8.7.0+18279+1ca8cf12          rhel-AppStream        5.6 M
    Installing dependencies:
     libicu                   x86_64        60.3-2.el8_1                                   rhel                  8.8 M
     libpq                    x86_64        13.5-1.el8                                     rhel-AppStream        198 k
     postgresql               x86_64        13.10-1.module+el8.7.0+18279+1ca8cf12          rhel-AppStream        1.5 M
    Installing module profiles:
     postgresql/server
    Enabling module streams:
     postgresql                             13

验证

  • 验证是否启用了正确的模块流([e]),并且安装了所需的配置文件([i]):

    # yum module list postgresql
    ...
    Name                Stream          Profiles                       Summary
    postgresql          9.6             client, server [d]             PostgreSQL server and client module
    postgresql          10 [d]          client, server [d]             PostgreSQL server and client module
    postgresql          12              client, server [d]             PostgreSQL server and client module
    postgresql          13 [e]          client, server [d] [i]         PostgreSQL server and client module
    postgresql          15              client, server [d]             PostgreSQL server and client module
    postgresql          16              client, server [d]             PostgreSQL server and client module
    
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

5.5. 指定安装的软件包详情

您可以为精确的软件包安装过程指定软件包详情。要做到这一点,在 yum install 命令中附加以下后缀来明确定义如何解析参数:

  • use -n 指定软件包的确切名称。
  • use -na 指定确切的软件包名称和构架。
  • use -nevra 指定确切的软件包名称、epoch、版本、发行和架构。

流程

  • 根据您的场景,使用以下选项之一优化软件包安装过程:

    • 要使用其确切的名称安装软件包,请输入:

      # yum install-n <package_name>
    • 要使用其确切的名称和构架安装软件包,请输入:

      # yum install-na <package_name>.<architecture>
    • 要使用其确切的名称、epoch、版本、发行和架构安装软件包,请输入:

      # yum install-nevra <package_name>-<epoch>:<version>-<release>.<architecture>

5.6. 其他资源

第 6 章 更新 RHEL 8 内容

通过 YUM,您可以检查您的系统是否有待处理的更新。您可以列出需要更新的软件包,并选择更新单个软件包、多个软件包或者所有软件包。如果您选择要更新的软件包有依赖项,这些依赖项也会被更新。

6.1. 检查更新

要识别您系统上安装的软件包是否有可用的更新,您可以列出它们。

流程

  • 检查已安装的软件包的可用更新:

    # yum check-update

    输出返回有可用更新的软件包及其依赖项列表。

6.2. 更新软件包

您可以使用 YUM 同时更新单个软件包或所有软件包及其依赖项。

重要

当对内核应用更新时,无论您是否使用 yum updateyum install 命令,YUM 始终会安装一个新内核。请注意,这只适用于使用 installonlypkgs YUM 配置选项识别的软件包。例如,这些软件包包括 kernelkernel-corekernel-modules 软件包。

  • 根据您的场景,使用以下选项之一应用更新:

    • 要更新所有软件包及其依赖项,请输入:

      # yum update
    • 要更新单个软件包,请输入:

      # yum update <package_name>
重要

如果您在 BIOS 或 IBM Power 系统上升级了 GRUB 引导装载程序软件包,请重新安装 GRUB。请参阅 重新安装 GRUB

6.3. 更新软件包组

软件包组捆绑多个软件包,您可以使用软件包组在一个步骤中更新分配给组的所有软件包。

流程

  • 从特定软件包组更新软件包:

    # yum group update <group_name>
重要

如果您在 BIOS 或 IBM Power 系统上升级了 GRUB 引导装载程序软件包,请重新安装 GRUB。请参阅 重新安装 GRUB

第 7 章 在 RHEL 8 中自动化软件更新

DNF AutomaticYUM 的替代命令行界面,它适用于使用 systemd 计时器、cron 作业和其他此类工具自动和常规执行。

DNF Automatic 根据需要同步软件包元数据,检查可用更新,然后根据您配置工具的方式执行以下操作之一:

  • Exit
  • 下载更新的软件包
  • 下载并应用更新

然后,通过选定的机制(如标准输出或电子邮件)报告操作的结果。

7.1. 安装 DNF Automatic

要自动并定期检查和下载软件包更新,您可以使用 dnf-automatic 软件包提供的 DNF Automatic 工具。

流程

  • 安装 dnf-automatic 软件包:

    # yum install dnf-automatic

验证

  • 通过确认 dnf-automatic 软件包是否存在,来验证安装是否成功:

    # rpm -qi dnf-automatic

7.2. DNF Automatic 配置文件

默认情况下,DNF Automatic 使用 /etc/dnf/automatic.conf 作为其配置文件来定义其行为。

配置文件被分隔为以下主题部分:

  • [commands]

    设置 DNF Automatic 的操作模式。

    警告

    [commands] 部分中操作模式的设置会被所有计时器单元的 systemd 定时器单元覆盖,dnf-automatic.timer 除外。

  • [emitters]

    定义如何报告 DNF Automatic 的结果。

  • [command] 部分

    提供命令发布程序配置。

  • [command_email]

    为用来发送电子邮件的外部命令提供电子邮件发布程序配置。

  • [email]

    提供电子邮件发布程序配置。

  • [base]

    覆盖 YUM 主配置文件中的设置。

使用 /etc/dnf/automatic.conf 文件的默认设置,DNF Automatic 会检查可用的更新,下载这些更新,并以标准输出的形式报告结果。

其他资源

7.3. 启用 DNF Automatic

要运行 DNF Automatic 一次,您必须启动一个 systemd 计时器单元。但是,如果要定期运行 DNF Automatic,您必须启用计时器单元。您可以使用 dnf-automatic 软件包提供的计时器单元之一,或者您可以为计时器单元创建一个插入文件来调整执行时间。

先决条件

  • 您可以通过修改 /etc/dnf/automatic.conf 配置文件来指定 DNF Automatic 的行为。

流程

  • 立即启用并执行 systemd 计时器单元:

    # systemctl enable --now <timer_name>

    如果想只启用计时器,而不立即执行它,请省略 --now 选项。

    您可以使用以下计时器:

    • dnf-automatic-download.timer:下载可用更新。
    • dnf-automatic-install.timer:下载并安装可用更新。
    • dnf-automatic-notifyonly.timer:报告可用的更新。
    • dnf-automatic.timer:下载、下载并安装,或报告可用更新。

验证

  • 验证计时器是否已启用:

    # systemctl status <timer_name>
  • 可选:检查系统中的每个计时器最后一次运行:

    # systemctl list-timers --all

其他资源

7.4. dnf-automatic 软件包中包含的 systemd 计时器单元的概述

systemd 定时器单元优先并覆盖 /etc/dnf/automatic.conf 配置文件中有关下载和应用更新的设置。

例如,如果您在 /etc/dnf/automatic.conf 配置文件中设置了 download_updates = yes 选项,但您已激活了 dnf-automatic-notifyonly.timer 单元,则不会下载软件包。

计时器单元功能覆盖 /etc/dnf/automatic.conf 文件的 [commands] 部分中的 apply_updatesdownload_updates 设置?

dnf-automatic-download.timer

下载软件包以便进行更新。

这个计时器单元没有安装更新的软件包。要执行安装,您必须运行 yum update 命令。

dnf-automatic-install.timer

下载并安装更新的软件包。

dnf-automatic-notifyonly.timer

仅下载存储库数据,以保持存储库缓存最新,并通知您有关可用的更新。

这个计时器单元没有下载或安装更新的软件包

dnf-automatic.timer

下载和应用更新时此计时器的行为由 /etc/dnf/automatic.conf 文件中的设置指定。

这个计时器下载软件包,但不安装它们。

其他资源

  • 您系统上的 dnf-automatic (8) 手册页

第 8 章 删除 RHEL 8 内容

在以下部分中,了解如何使用 YUM 删除 Red Hat Enterprise Linux 8 中的内容。

8.1. 删除安装的软件包

您可以使用 YUM 删除系统上安装的单个软件包或多个软件包。如果您要删除的任何软件包都有未使用的依赖项,YUM 也会卸载这些依赖项。

流程

  • 删除特定软件包:

    # yum remove <package_name_1> <package_name_2> ...

8.2. 删除软件包组

软件包组捆绑多个软件包。您可以使用软件包组在单个步骤中删除分配给组的所有软件包。

流程

  • 使用以下方法之一安装软件包组:

    • 要按组名称删除软件包组,请输入以下命令之一:

      # yum group remove <group_name>
      # yum remove @<group_name>
    • 要根据 groupID 删除软件包组,请输入:

      # yum group remove <group_ID>

8.3. 删除安装的模块内容

当删除安装的模块内容时,您可以从 所选配置集 或整个 流中删除软件包

重要

YUM 会尝试删除所有名称与安装配置集或流的软件包对应的软件包,包括其依赖软件包。在进行操作前,务必检查要删除的软件包列表,特别是您是否在系统中启用了自定义软件仓库。

8.3.1. 从安装的配置集中删除软件包

当您删除安装有配置集的软件包时,所有名称与配置集安装的软件包相对应的软件包都会被删除。这包括其依赖项,但被其他配置集所需的软件包除外。

要从所选流中删除所有软件包,请完成 从模块流中删除所有软件包 中的步骤。

先决条件

  • 使用 yum module install module_name:stream/profile命令安装 所选配置集,或使用 yum install module_name:stream命令作为 默认配置文件。

流程

  • 卸载属于所选配置文件的软件包:

    # yum module remove <module_name>:<stream>/<profile>

    例如,要从 php:7.3 模块流的 devel 配置集中删除软件包,请输入:

    # yum module remove php:7.3/devel
    (...)
    Dependencies resolved.
    =========================================================================
     Package                Arch   Version                       Repository                         Size
    =========================================================================
    Removing:
     libzip                 x86_64 1.5.2-1.module+el8.1.0+3189+a1bff096
                                                                 @rhel-8-for-x86_64-appstream-rpms 313 k
     php-devel              x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms 5.3 M
     php-pear               noarch 1:1.10.9-1.module+el8.1.0+3189+a1bff096
                                                                 @rhel-8-for-x86_64-appstream-rpms 2.1 M
     php-pecl-zip           x86_64 1.15.4-1.module+el8.1.0+3189+a1bff096
                                                                 @rhel-8-for-x86_64-appstream-rpms 119 k
     php-process            x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms 117 k
    Removing unused dependencies:
     autoconf               noarch 2.69-27.el8                   @rhel-8-for-x86_64-appstream-rpms 2.2 M
    ...
    Disabling module profiles:
     php/devel
    
    Transaction Summary
    =========================================================================
    Remove  64 Packages
    
    Freed space: 193 M
    Is this ok [y/N]: y
    警告

    在进行删除事务前,请检查 Removing:Removing unused dependencies: 中的软件包列表。这个事务会删除请求的软件包、未使用的依赖项和依赖的软件包,这可能导致系统故障。

    或者,从流中的所有安装配置集中卸载软件包:

    # yum module remove <module_name>:<stream>
    注意

    这些操作不会从不属于任何配置集的流中删除软件包。

验证

  • 验证正确的配置文件是否已删除:

    $ yum module info php
    ...
    Name             : php
    Stream           : 7.3 [e] [a]
    Version          : 8020020200715124551
    Context          : ceb1cf90
    Architecture     : x86_64
    Profiles         : common [d] [i], devel, minimal [i]
    Default profiles : common
    Repo             : rhel-AppStream
    ...
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive

    当前安装 devel 以外的所有配置集([i])。

8.3.2. 从模块流中删除所有软件包

当您删除使用模块流安装的软件包时,所有名称与流安装的软件包对应的软件包都会被删除。这包括其依赖项,但其他模块所需的软件包除外。

要从所选的配置文件中只删除软件包,请完成 从安装的配置文件中删除软件包 中的步骤。

先决条件

  • 启用模块流,并至少安装流中的一些软件包。

流程

  1. 从所选流中删除所有软件包:

    # yum module remove --all <module_name>:<stream>

    例如,要从 php:7.3 模块流中删除所有软件包,请输入:

    # yum module remove --all php:7.3
    (...)
    Dependencies resolved.
    =========================================================================
     Package                Arch   Version                       Repository                         Size
    =========================================================================
    Removing:
     libzip                 x86_64 1.5.2-1.module+el8.1.0+3189+a1bff096
                                                                 @rhel-8-for-x86_64-appstream-rpms 313 k
     php-cli                x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms  11 M
     php-common             x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms 6.5 M
     php-devel              x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms 5.3 M
     php-fpm                x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms 5.6 M
     php-json               x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms  53 k
     php-mbstring           x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms 1.9 M
     php-pear               noarch 1:1.10.9-1.module+el8.1.0+3189+a1bff096
                                                                 @rhel-8-for-x86_64-appstream-rpms 2.1 M
     php-pecl-zip           x86_64 1.15.4-1.module+el8.1.0+3189+a1bff096
                                                                 @rhel-8-for-x86_64-appstream-rpms 119 k
     php-process            x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms 117 k
     php-xml                x86_64 7.3.5-5.module+el8.1.0+4560+e0eee7d6
                                                                 @rhel-8-for-x86_64-appstream-rpms 557 k
    Removing unused dependencies:
     autoconf               noarch 2.69-27.el8                   @rhel-8-for-x86_64-appstream-rpms 2.2 M
    ...
    Disabling module profiles:
     php/common
     php/devel
     php/minimal
    
    Transaction Summary
    =========================================================================
    Remove  73 Packages
    
    Freed space: 220 M
    Is this ok [y/N]: y
    警告

    在进行删除事务前,请检查 Removing:Removing unused dependencies: 中的软件包列表。这个事务会删除请求的软件包、未使用的依赖项和依赖的软件包,这可能导致系统故障。

  2. 可选:输入以下命令之一重置或禁用流:

    # yum module reset <module_name>
    # yum module disable <module_name>

验证

  • 验证所选模块流中的所有软件包是否都已删除:

    $ yum module info php
    ...
    Name             : php
    Stream           : 7.3 [e] [a]
    Version          : 8020020200715124551
    Context          : ceb1cf90
    Architecture     : x86_64
    Profiles         : common [d], devel, minimal
    Default profiles : common
    ...
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive

    php 模块的 7.3 流当前已启用([e]),但没有安装此流中的软件包([i])。

8.4. 指定删除的软件包详情

您可以为准确的软件包删除过程指定软件包详情。要做到这一点,请在 yum remove 命令中附加以下后缀来明确定义如何解析参数:

  • use -n 指定软件包的确切名称。
  • use -na 指定确切的软件包名称和构架。
  • use -nevra 指定确切的软件包名称、epoch、版本、发行和架构。

流程

  • 根据您的场景,使用以下选项之一优化软件包删除过程:

    • 要使用其确切的名称删除软件包,请输入:

      # yum remove-n <package_name>
    • 要使用其确切的名称和构架删除软件包,请输入:

      # yum remove-na <package_name>.<architecture>
    • 要使用其确切的名称、epoch、版本、发行和架构来删除软件包,请输入:

      # yum remove-nevra <package_name>-<epoch>:<version>-<release>.<architecture>

8.5. 其他资源

第 9 章 处理软件包管理历史记录

使用 yum history 命令,您可以查看以下信息:

  • YUM 事务的时间线.
  • 交易发生的日期和时间。
  • 受交易影响的软件包的数量。
  • 交易是否成功或被中止。
  • RPM 数据库是否在交易之间更改了。

您还可以使用 yum history 命令来撤销事务。

9.1. 列出交易

您可以使用 YUM 执行以下任务:

  • 列出最新的交易。
  • 列出对所选软件包的最新操作。
  • 显示特定交易的详细信息。

流程

  • 根据您的场景,使用以下选项之一显示交易信息:

    • 要显示所有最新的 YUM 事务列表,请输入:

      # yum history

      输出包含以下信息:

      • Action (s) 列显示在交易期间执行了哪种操作类型,如 Install (I)、Upgrade (U)、删除(E)和其他操作。
      • Altered 列显示事务期间执行的操作数。操作数也可以后跟事务的结果。

        有关 Action (s)Altered 列的值的更多信息,请参阅系统中的 yum (8) 手册页。

    • 要显示对所选软件包的所有最新操作的列表,请输入:

      # yum history list <package_name>
    • 要显示特定交易的详情,请输入:

      # yum history info <transaction_id>
注意

您可以通过将全局表达式附加为参数来过滤结果。如需了解更多详细信息,请参阅 在 yum 输入 中指定全局表达式

其他资源

  • 系统中 yum (8) 手册页

9.2. 恢复 YUM 事务

如果要撤销事务期间执行的操作,恢复 YUM 事务非常有用。例如,如果您使用 yum install 命令安装多个软件包,您可以通过恢复安装事务来一次性卸载这些软件包。

您可以使用以下方法恢复 YUM 事务:

  • 使用 yum history undo 命令恢复单个 YUM 事务。
  • 使用 yum history rollback 命令恢复指定事务和最后一个事务之间执行的所有 YUM 事务。
重要

不支持使用 yum history undoyum history rollback 命令降级 RHEL 系统软件包到旧版本。这尤其涉及 selinuxselinux-policy-*kernelglibc 软件包,以及 glibc 的依赖项,如 gcc。因此,不建议将系统降级到次版本(例如,从 RHEL 8.1 到 RHEL 8.0),因为它可能会使系统处于不正确的状态。

9.2.1. 恢复单个 YUM 事务

您可以使用 yum history undo 命令恢复在单个事务中执行的步骤:

  • 如果事务安装了新软件包,yum history undo 会卸载该软件包。
  • 如果事务卸载了软件包,yum history undo 会重新安装该软件包。
  • 如果旧的软件包仍然可用,yum history undo 命令还会尝试将所有更新的软件包降级到之前的版本。
注意

如果旧的软件包版本不可用,则使用 yum history undo 命令的降级会失败。

流程

  1. 确定您要恢复的事务的 ID:

    # yum history
    ID | Command line     | Date and time     | Action(s)      | Altered
    --------------------------------------------------------------------
    13 | install zip      | 2022-11-03 10:49  | Install        |    1
    12 | install unzip    | 2022-11-03 10:49  | Install        |    1
  2. 可选:通过显示其详情来验证您要恢复的事务:

    # yum history info <transaction_id>
  3. 恢复事务:

    # yum history undo <transaction_id>

    例如,如果要卸载之前安装的 unzip 软件包,请输入:

    # yum history undo 12

    如果要恢复最后一个事务,请输入:

    # yum history undo last

9.2.2. 恢复多个 YUM 事务

您可以使用 yum history rollback 命令恢复指定事务和最后一个事务之间执行的所有 YUM 事务。请注意,交易 ID 指定的交易保持不变。

流程

  1. 确定您要恢复到的状态的事务 ID:

    # yum history
    ID | Command line     | Date and time     | Action(s)   | Altered
    ------------------------------------------------------------------
    14 | install wget     | 2022-11-03 10:49  | Install     |    1
    13 | install unzip    | 2022-11-03 10:49  | Install     |    1
    12 | install vim-X11  | 2022-11-03 10:20  | Install     |  171 EE
  2. 恢复指定的事务:

    # yum history rollback <transaction_id>

    例如,要恢复到 wgetunzip 软件包安装前的状态,请输入:

    # yum history rollback 12

    或者,要恢复事务历史记录中的所有事务,请使用事务 ID 1

    # yum history rollback 1

第 10 章 管理自定义软件存储库

您可以在 /etc/yum.conf 文件中配置一个仓库。或者 /etc/yum.repos.d/ 目录中的 .repo 文件。

注意

建议您在 /etc/yum.repos.d/ 中的新或现有 .repo 文件中定义仓库,因为 YUM 读取所有带有 .repo 文件扩展名的文件。

/etc/yum.conf 文件包含 [main] 部分,可以包含一个或多个可用于设置特定存储库选项的存储库部分([ &lt;repository_ID> ])。您在 /etc/yum.conf 文件的单个仓库部分定义的值会覆盖 [main] 部分中设置的值。

10.1. YUM 存储库选项

/etc/yum.conf 配置文件包含带有方括号中的存储库 ID 的存储库部分([ <repository_ID&gt; ])。您可以使用这些部分来定义独立的 YUM 存储库。

重要

存储库 ID 必须是唯一的。

有关可用存储库 ID 选项的完整列表,请查看系统上 dnf.conf (5) 手册页中的 [ <repository_ID> ] OPTIONS 部分。

10.2. 添加一个 YUM 存储库

您可以通过在 /etc/yum.repos.d/ 目录中的 .repo 文件中定义 YUM 存储库。

流程

  1. 在您的系统中添加软件仓库:

    # yum-config-manager --add-repo <repository_URL>

    请注意,此命令添加的存储库默认被启用。

  2. 查看并(可选)更新上一命令在 /etc/yum.repos.d/ <repository_URL&gt; .repo 文件中创建的 存储库设置:

    # cat /etc/yum.repos.d/<repository_URL>.repo
警告

从基于证书的 Content Delivery Network (CDN)以外的未验证或不信任的源获取并安装软件包具有潜在的安全风险,并可能导致安全性、稳定性、兼容性和可维护性问题。

10.3. 启用一个 YUM 存储库

在系统中添加了 YUM 存储库后,启用它以确保安装和更新。

流程

  • 启用存储库:

    # yum-config-manager --enable <repository_id>

10.4. 禁用一个 YUM 存储库

要防止特定软件包安装或更新,您可以禁用包含这些软件包的 YUM 存储库。

流程

  • 禁用软件仓库:

    # yum-config-manager --disable <repository_id>

第 11 章 管理 Application Stream 内容的版本

AppStream 仓库的内容可以在多个版本中提供,对应于模块流。例如,您可以安装系统上已安装的模块的不同版本。

11.1. 模块依赖关系和流更改

传统上,提供内容的软件包依赖于其他软件包,并且通常指定所需的依赖项版本。对于模块中包含的软件包,此机制也会应用这个机制,但将软件包及其特定版本分组到模块和流中可以进一步的限制。另外,模块流可以声明与其他模块流的依赖关系,独立于其包含的软件包并提供它们。

在使用软件包或模块操作后,所有底层已安装软件包的所有依赖项树都必须满足软件包声明的所有条件。另外,必须满足所有模块流依赖项。例如,禁用模块流可能需要禁用其他模块流。不会自动删除任何软件包。

请注意,以下操作可能导致后续的自动操作:

  • 启用模块流可能导致启用其它模块流。
  • 安装模块流配置文件或从流安装软件包可能导致启用其它模块流,并安装其它软件包。
  • 删除软件包可能导致删除其他软件包。如果模块提供了这些软件包,则模块流仍然启用,以准备进一步安装,即使这些流中没有安装这些软件包。这会镜像未使用的 YUM 存储库的行为。
重要

当同一模块的另一个流已启用时,您不能启用模块的流。要切换流,请完成 切换到更新的流 中的步骤。或者 ,重置模块然后启用新流

重要

在切换到不同流之前从流中删除安装的所有软件包可防止系统达到这样一种状态,即软件包可以在没有提供它们的存储库或流的情况下安装。

11.2. 模块化和非模块化依赖项的交互

模块依赖关系 是常规 RPM 依赖项之上的额外层。模块依赖关系与存储库间可能存在的依赖关系的行为相似。这意味着安装不同的软件包需要同时解析 RPM 依赖项和模块依赖关系。

系统将始终保留模块和流选择,除非明确指示要更改它们。模块软件包将接收目前启用的模块流中包含的提供此软件包的更新,但不会升级到另一流中包含的版本。

11.3. 重置模块流

重置模块是一种操作,它将此模块返回到其初始状态,既没有启用也没有禁用。如果模块有一个配置的默认流,则此流会因为重置模块而变为活动状态。

重置模块非常有用,例如,如果您希望只从模块中提取 RPM 内容而不启用该模块。在启用模块并提取其内容后,您可以使用 yum module reset 命令,将此模块重置为其初始状态。

流程

  • 重置模块状态:

    # yum module reset <module_name>

    模块返回到初始状态。已启用的流和安装的配置集的信息会被清除,但没有删除安装的内容。

11.4. 禁用一个模块的所有流

具有默认流的模块始终会激活一个流。如果要使模块的所有模块流中的内容无法访问,您可以禁用整个模块。

先决条件

流程

  • 禁用模块:

    # yum module disable <module_name>

    使用您要禁用的模块的名称替换 module-name

    yum 命令要求确认,然后禁用模块及其所有流。所有模块流都不再活跃。没有安装的内容被删除。

11.5. 切换到更新的流

当您切换到后期模块流时,所有对应的软件包都被后期版本替代。

重要

备份您的数据,并按照特定于组件的迁移说明进行操作。

或者,您可以删除从当前流安装的所有模块内容,重置模块 ???并安装新流

先决条件

  • 这个系统已被完全更新。
  • 在系统中安装的软件包都比该程序库中可用软件包更新。

流程

  1. 确定您的系统是否已准备好切换到更新的流:

    # yum distro-sync
    重要

    这个命令必须完成 Nothing to do.Complete!。如果它没有提出更改而要求确认,请仔细检查这些更改,并考虑是否要继续。如有必要,重复运行 YUM distro-sync 命令。另外,您可以拒绝推荐的修改,然后手动将您的系统改为命令返回 Nothing to do.Complete!

    通过在切换流之前检查 yum distro-sync 结果,您可以防止更改与流切换不相关的系统,因为此流程的最后一步也需要同样的命令。

  2. 将活动流更改为后续流:

    # yum module reset <module-name>
    # yum module enable <module-name>:<new-stream>
  3. 同步安装的软件包以在流间进行更改:

    # yum distro-sync

    如果此操作建议更改流外的内容,请仔细检查它们。

    注意
    • 如果某些安装的软件包依赖于之前的流,且后续流中没有兼容版本,YUM 会报告依赖关系冲突。在这种情况下,使用- allowerasing 选项删除这些软件包,因为它们因为缺少依赖项而无法与后续流一起安装。
    • 在切换 Perl 模块时,您必须始终使用 --allowerasing 选项,因为基本 RHEL 8 安装中的某些软件包依赖于 Perl 5.26
    • 您需要为解释语言重新安装二进制扩展,这些语言通常在启用新流后使用 C 或 C++ 编写。例如,使用以下命令安装软件包:

      • ruby 模块中的 gem 命令。如需更多信息,请参阅如何在 RHEL 8 中切换 Ruby 流
      • nodejs 模块中的 npm 命令
      • perl 模块中的 cpan 命令
      • php 模块中的 pecl 命令

11.6. 定义自定义默认模块流和配置文件

默认情况下,YUM 实用程序使用包含模块的存储库中定义的默认模块流。您可以在 /etc/dnf/modules.defaults.d/ 目录中配置默认流和默认模块配置集。

重要

始终考虑模块流的 生命周期

先决条件

流程

  1. 显示可用的流及其配置集:

    # yum module list <module_name>

    例如,要列出 postgresql 模块的可用流及其配置集,请输入:

    # yum module list postgresql
    (…​)
    Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
    Name             Stream       Profiles                Summary
    postgresql       9.6          client, server [d]      PostgreSQL server and client module
    postgresql       10 [d]       client, server [d]      PostgreSQL server and client module
    postgresql       12           client, server [d]      PostgreSQL server and client module
    postgresql       13           client, server [d]      PostgreSQL server and client module
    postgresql       15           client, server [d]      PostgreSQL server and client module
    …​
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
  2. /etc/dnf/modules.defaults.d/ drop-in 目录中创建 YAML 配置文件。

    例如,使用以下内容创建 /etc/dnf/modules.defaults.d/postgresql.yaml 文件,将 13 定义为 postgresql 模块的默认流,server 作为 postgresql 模块的默认配置集:

    ---
    document: modulemd-defaults
    version: 1
    data:
      module: postgresql
      stream: "13"
      profiles:
        13: [server]

验证

  • 验证默认流和配置集设置:

    # yum module list postgresql
    (…​)
    Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
    Name             Stream       Profiles                Summary
    postgresql       9.6          client, server          PostgreSQL server and client module
    postgresql       10           client, server          PostgreSQL server and client module
    postgresql       12           client, server          PostgreSQL server and client module
    postgresql       13 [d]       client, server [d]      PostgreSQL server and client module
    postgresql       15           client, server          PostgreSQL server and client module
    …​
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

第 12 章 YUM 命令列表

在以下部分中,检查用于列出、安装和删除 Red Hat Enterprise Linux 8 的内容的 YUM 命令。

12.1. 在 RHEL 8 中列出内容的命令

以下是在 Red Hat Enterprise Linux 8 中查找内容及其详情的常用 YUM 命令:

命令描述

yum search term

使用与软件包相关的术语搜索软件包。

yum repoquery package

为所选软件包及其版本搜索已启用的 YUM 存储库。

yum list

列出所有已安装的和可用的软件包信息。

yum list --installed

yum repoquery --installed

列出系统上安装的所有软件包。

yum list --available

yum repoquery

列出用于安装的所有已启用的存储库中的所有软件包。

yum repolist

列出系统上所有启用的存储库。

yum repolist --disabled

列出系统上所有禁用的存储库。

yum repolist --all

列出启用和禁用的存储库。

yum repoinfo

列出有关存储库的其他信息。

yum info package_name

yum repoquery --info package_name

显示可用软件包的详细信息。

yum repoquery --info --installed package_name

显示系统上安装的软件包的详情。

yum module list

列出模块及其当前状态。

yum module info module_name

显示模块的详细信息。

yum module list module_name

显示模块的当前状态。

yum module info --profile module_name

显示与所选模块的可用配置文件关联的软件包。

yum module info --profile module_name:stream

使用指定流显示与模块的可用配置为念关联的软件包。

yum module provides package

确定哪些模块、流和配置集提供软件包。

请注意,如果软件包在任何模块外可用,这个命令的输出为空。

yum group summary

查看已安装的和可用的组的数量。

yum group list

列出所有已安装的和可用的组。

yum group info group_name

列出特定组中包含的强制的和可选的软件包。

12.2. 在 RHEL 8 中安装内容的命令

以下是在 Red Hat Enterprise Linux 8 中安装内容的常用 YUM 命令:

命令描述

yum install package_name

安装软件包。

如果软件包由模块流提供,则 yum 会解析所需的模块流,并在安装此软件包时自动启用它。这也会以递归方式对所有软件包依赖项进行。如果更多模块流满足要求,则使用默认模块流。

yum install package_name_1 package_name_2

同时安装多个软件包及其依赖项。

yum install package_name.arch

multilib 系统(AMD64、Intel 64 机器)上安装软件包时,通过将其追加到软件包名称来指定软件包的架构。

yum install /usr/sbin/binary_file

通过将二进制路径用作参数来安装二进制文件。

yum install /path/

从本地目录安装之前下载的软件包。

yum install package_url

使用软件包 URL 安装远程软件包。

yum module enable module_name:stream

使用特定流启用模块。

请注意,运行这个命令不会安装任何 RPM 软件包。

yum module install module_name:stream

yum install @module_name:stream

从特定的模块流安装默认配置集。

请注意,运行这个命令还会启用指定的流。

yum module install module_name:stream/profile

yum install @module_name:stream/profile

使用特定流安装所选配置文件。

yum group install group_name

按组名称安装软件包组。

yum group install group_ID

按 groupID 安装软件包组。

yum install-n <package_name>

使用其确切的名称安装软件包。

yum install-na <package_name>.<architecture>

使用其确切的名称和架构安装软件包。

yum install-nevra <package_name>-<epoch>:<version>-<release>.<architecture>

使用其确切的名称、epoch、版本、发行和架构安装软件包。

12.3. 在 RHEL 8 中删除内容的命令

以下是删除 Red Hat Enterprise Linux 8 中内容的常用 YUM 命令:

命令描述

yum remove package_name

删除特定软件包以及所有依赖的软件包。

yum remove package_name_1 package_name_2

同时删除多个软件包及其未使用的依赖项。

yum group remove group_name

按组名称删除软件包组。

yum group remove group_ID

按 groupID 删除软件包组。

yum module remove --all module_name:stream

从指定的流中删除所有软件包。

请注意,运行此命令可从系统中删除关键软件包。

yum module remove module_name:stream/profile

从安装的配置文件删除软件包。

yum module remove module_name:stream

从指定流中的所有安装的配置文件删除软件包。

yum module reset module_name

将模块重置为初始状态。

请注意,运行此命令不会从指定的模块中删除软件包。

yum module disable module_name

禁用一个模块及其所有流。

请注意,运行此命令不会从指定的模块中删除软件包。

yum remove-n <package_name>

使用其确切的名称删除软件包。

yum remove-na <package_name>.<architecture>

使用其确切的名称和架构来删除软件包。

yum remove-nevra <package_name>-<epoch>:<version>-<release>.<architecture>

使用其确切的名称、epoch、版本、发行和架构来删除软件包。

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.