对包含有冲突软件包的自定义通道进行查错

设置包含有冲突软件包的自定义通道时,某些功能(例如创建引导储存库)可能会导致未定义的行为,并使客户端注册失败。

例如,版本号较高的有冲突软件包可能会包含在引导储存库中。此类软件包(例如 python3-zmqzeromq)可能会导致创建引导储存库时出错,或者在客户端引导期间导致问题。

在父供应商通道下面添加自定义通道(例如 EPEL 通道)时,无法直接解决软件包冲突问题。此问题的解决方法是将自定义通道与供应商通道分开。需要在单独的树中创建自定义通道。如果需要将自定义通道作为子通道递送,可以使用内容生命周期管理 (CLM) 创建此类环境。可以从不同的树添加 CLM 项目中的源。如果使用这种方法,自定义通道将保留在构建的环境中的父项之下。但是,供应商通道树仍然不包含自定义通道和引导储存库。然后可以正常注册客户端。

将包含有冲突软件包的自定义通道(salt、zeromq 等)创建为子通道时,以下步骤可能有助于避免该问题:

过程:避免自定义通道中包含有冲突的软件包
  1. 从父通道中去除作为子通道的自定义通道。有关详细信息,请参见 administration:custom-channels.adoc#_manage_custom_channels

  2. 在单独的树中创建自定义通道。有关详细信息,请参见 administration:custom-channels.adoc#_creating_custom_channels_and_repositories。 要在内容生命周期管理 (CLM) 中添加作为子通道的自定义通道,请执行以下操作:

    • 在 SUSE Manager Web UI 中,导航到内容生命周期,然后单击 创建项目。输入名称标签

    • 将源挂接到项目。使用所需的供应商通道和自定义通道。(分享使用 CentOS8 的示例)

    • 将环境添加到项目中。例如,使用 CentOS8。

    • 要构建环境,请单击 构建 按钮。这会创建一个包含供应商通道和自定义通道的环境,这些通道可与激活密钥相关联并用于引导客户端。

  3. 重要说明:在 CLM 项目中,建议添加一个过滤器用于排除有问题或有冲突的软件包。否则会在客户端更新期间安装版本号较高的有冲突软件包。有关过滤的详细信息,请参见 administration:content-lifecycle-examples.adoc#exclude-higher-kernel-version

  4. 要将最新补丁添加到 CLM 环境(包含供应商通道和自定义通道),请在项目中单击 构建 按钮。需要执行此操作才能重构建环境。

如果直接在 Red Hat Enterprise Linux 客户端(或 SUSE Liberty Linux、CentOS、Oracle Linux 等兼容系统)上使用 Extra Packages for Enterprise Linux (EPEL),将会安装 EPEL 提供的 Salt 软件包,这会丢失 SUSE Manager 提供的 Salt 软件包中包含的某些功能。此问题非常严重,因为这样将会生成一个包含非 SUSE Salt 软件包的引导储存库。因此,系统不支持这样的使用场景。如果您需要启用 EPEL 储存库,请务必提前过滤掉 EPEL 提供的 Salt 软件包(例如,在软件  管理  通道  EPEL  软件包中去除 Salt 软件包)。