自定义通道

自定义通道使您能够创建自己的软件包和储存库,然后可以使用这些软件包和储存库来更新您的客户端。它们还使您能够在环境中使用第三方供应商提供的软件。

本节提供有关如何创建、管理和删除自定义通道的更多细节。您必须拥有管理员特权才能创建和管理自定义通道。

1. 创建自定义通道和储存库

在创建自定义通道之前,请确定要将其关联到哪个基础通道,以及要为内容使用哪些储存库。

如果您需要将自定义软件包安装在客户端系统上,可以创建自定义子通道来管理它们。需要在 SUSE Manager Web UI 中创建通道,并为软件包创建储存库,然后将该通道指派到系统。

不要创建其中有软件包与客户端系统不兼容的子通道。

如果您要使用供应商提供的软件包,可以选择供应商通道作为基础通道。或者,选择以将自定义通道设为基础通道。

过程:创建自定义通道
  1. 在 SUSE Manager Web UI 中,导航到软件  管理  通道,然后单击 创建通道

  2. 创建软件通道页面上,为您的通道命名(例如 My Tools SLES 15 SP1 x86_64)和标签(例如 my-tools-sles15sp1-x86_64)。 标签不能包含空格或大写字母。

  3. 父通道下拉菜单中选择相关的基础通道(例如 SLE-Product-SLES15-SP1-Pool for x86_64)。 确保为软件包选择兼容的父通道。

  4. 体系结构下拉菜单中选择适当的硬件体系结构(例如 x86_64)。

  5. 根据环境的需要,在联系方法细节、通道访问控制和 GPG 字段中提供任何附加信息。

  6. 单击 创建通道

自定义通道有时需要额外的安全设置。许多第三方供应商使用 GPG 保护软件包。如果您想要在自定义通道中使用受 GPG 保护的软件包,需要信任用来为元数据签名的 GPG 密钥。然后,可以选中包含已签名的元数据?复选框,以将软件包元数据与受信任的 GPG 密钥进行匹配。

如果远程通道和储存库已使用 GPG 密钥签名,则您可以导入并信任这些 GPG 密钥。例如,从 SUSE Manager Server 上的命令行执行 spacewalk-repo-sync

/usr/bin/spacewalk-repo-sync -c <通道标签名称> -t yum

基础 zypper 调用将导入密钥(如果已提供)。Web UI 不提供此功能。

仅当您要镜像的储存库是以特殊方式设置的,并且储存库中的签名旁边提供了“key”时,才可以正常完成此操作。开放式构建服务 (OBS) 生成的所有储存库都是这种情况。对于其他储存库,需要完成特殊的准备步骤(参见下文!)。

当您创建新通道时,默认会选中启用 GPG 检查字段。如果您要将自定义软件包和应用程序添加到您的通道,请务必取消选中此字段,以便能够安装未签名的软件包。如果软件包来自不受信任的源,则禁用 GPG 检查会带来安全风险。

如果您正在注册传统的 Red Hat Enterprise Linux 7 或 SLES Expanded Support 7 客户端,有可能会看到未签名软件包的错误。有关详细信息,请参见 对注册传统 Red Hat 客户端时出现的问题进行查错

仅当储存库是有效的软件储存库时,才能使用 Web UI 将其添加到 SUSE Manager。请提前检查是否提供了所需的储存库元数据。可以使用 createreporeprepro 等工具进行这种检查。mgrpush 可帮助您将单个 RPM 推送到通道,而无需创建储存库。有关详细信息,请参见 createrepo_creprepro 的手册页。

过程:添加软件储存库
  1. 在 SUSE Manager Web UI 中,导航到软件  管理  储存库,然后单击 创建储存库

  2. 创建储存库页面上,为该储存库指定标签(例如 my-tools-sles15sp1-x86_64-repo)。

  3. 储存库 URL 字段中,提供包含 repodata 文件的目录的路径(例如 file:///opt/mytools/)。可以在此字段中使用任何有效寻址协议。

  4. 取消选中包含已签名的元数据?复选框。

  5. 可选:如果您的储存库需要客户端证书身份验证,请填写 SSL 字段。

  6. 单击 创建储存库

仅当您要镜像的储存库中在签名旁边提供了“key”时,才能正常完成上述过程。OBS 生成的所有储存库都是这种情况,但其他不是由 OBS 提供的操作系统储存库并非如此。

如果您要使用的储存库不包含 GPG 密钥,您可以自己提供一个 GPG 密钥并手动将其导入密钥环。如果您使用 gpg 命令行工具将密钥导入 /var/lib/spacewalk/gpgdir 密钥环,将永久存储该密钥。即使清理了 chroot 环境,也会持久保存该密钥。

过程:使用 GPG 密钥创建软件储存库
  1. 用于将密钥导入 pub 密钥环的 gpg 命令是:

    gpg --keyring /var/lib/spacewalk/gpgdir  --import /path/to/gpg.key
    gpg --edit-key <密钥 ID>

使用 uyuni_suiteuyuni_componentuyuni_arch 查询参数添加 Debian 非平面储存库。

uyuni_suite

是必需的。在 Debian 文档中,此参数也名为 distribution。使用此参数可以指定 apt 源。如果不提供此参数,则会使用原始方法。如果该参数以 / 结尾,则会将储存库标识为平面储存库。

uyuni_component

是可选的。此参数只能指定一个组件。无法列出组件。一个 apt 源项允许指定多个组件,但对于 Uyuni 无法做到这一点。对此,您必须为每个组件创建单独的储存库。

uyuni_arch

是可选的。如果将其省略,则会使用 SQL 查询为数据库中的通道计算体系结构名称。如果uyuni_arch与通道体系结构不匹配(有时体系结构命名不明确),请显式指定此参数。

下面提供了一些示例:

Table 1. Debian 非平面储存库映射
类型 源行/URL

apt 源行

deb https://pkg.jenkins.io/debian-stable binary/

URL 映射

https://pkg.jenkins.io/debian-stable?uyuni_suite=binary/

 

apt 源行

deb https://deb.debian.org/debian/dists stable main

URL 映射

https://deb.debian.org/debian/dists?uyuni_suite=stable&uyuni_component=main

在此处查找有关 Debian 储存库定义格式的背景信息。此信息基于 https://wiki.debian.org/DebianRepository/Format#Overview

储存库定义格式如下:

deb URI 套件 [组件 1] [组件 2] [...]

例如:

deb https://deb.debian.org/debian/dists stable main

deb https://pkg.jenkins.io/debian-stable binary/

对于每一对套件组件,规范定义了一个根据基 URL + 套件 + 组件计算的不同 URL。

过程:将储存库指派到通道
  1. 通过导航到软件  管理  通道,单击新建的自定义通道的名称,然后导航到储存库选项卡,将新储存库指派到自定义通道。

  2. 确保选中您要指派到通道的储存库,然后单击 更新储存库

  3. 导航到同步选项卡,然后单击 立即同步 立即同步。有关通道同步的详细信息,请参见下文。

过程:将自定义通道添加到激活密钥
  1. 在 SUSE Manager Web UI 中,导航到系统  激活密钥,然后选择要将自定义通道添加到的密钥。

  2. 细节选项卡上的子通道列表中,选择要关联的通道。 如果需要,您可以选择多个通道。

  3. 单击 更新激活密钥

2. 自定义通道同步

为了避免错过重要更新,SUSE 建议通过远程储存库更改来使您的自定义通道保持最新。

系统默认不会自动同步自定义通道。为了确保自定义通道保持最新状态,您需要:

  • 通过导航到同步选项卡并单击 立即同步 来手动同步该通道。

  • 储存库选项卡中设置自动同步日程安排。

您也可以为创建的所有自定义通道启用自动同步。要实现此目的,请在 /etc/rhn/rhn.conf 中进行如下设置:

java.unify_custom_channel_management = 1

启用此属性后,系统将会自动执行一次同步:

  • 在 UI 中或者使用 spacewalk-common-channels 将储存库添加到通道后

  • 在执行日常任务 mgr-sync-refresh-default 的过程中,这将同步您的所有自定义通道和供应商通道。

该过程开始后,可通过多种方式检查通道是否已完成同步:

  • 在 SUSE Manager Web UI 中,导航到管理  安装向导,然后选择产品选项卡。 产品同步时,此对话框将为每个产品显示一个完成栏。

  • 在 SUSE Manager Web UI 中,导航到软件  管理  通道,然后单击与储存库关联的通道。 导航到储存库  同步选项卡。储存库名称旁边会显示同步状态

  • 在命令提示符下检查同步日志文件:

    tail -f /var/log/rhn/reposync/<channel-label>.log

    每个子通道在同步过程中会生成自身的日志。您需要检查所有基础通道和子通道日志文件,以确保同步完成。

3. 将软件包和补丁添加到自定义通道

如果您创建新的自定义通道但未从现有通道克隆,则创建的通道不包含任何软件包或补丁。可以使用 SUSE Manager Web UI 添加所需的软件包和补丁。

自定义通道只能包含克隆的或者自定义的软件包或补丁,并且这些软件包或补丁必须与通道的基础体系结构相匹配。添加到自定义通道的补丁必须适用于通道中的软件包。

过程:将软件包添加到自定义通道
  1. 在 SUSE Manager Web UI 中,导航到软件  管理  通道,然后转到软件包选项卡。

  2. 可选:通过导航到列出/去除选项卡查看当前包含在通道中的所有软件包。

  3. 通过导航到添加选项卡将新软件包添加到通道。

  4. 选择要为其提供软件包的父通道,然后单击 查看软件包 以填充列表。

  5. 检查要添加到自定义通道的软件包,然后单击 添加软件包

  6. 如果您觉得选择合适,请单击 确认添加 以将软件包添加到通道。

  7. 可选:可以通过导航到软件  管理  通道,然后转到软件包  比较选项卡,将当前通道中的软件包与其他通道中的软件包进行比较。 要使两个通道相同,请单击 合并差异 按钮,然后解决任何冲突。

过程:将补丁添加到自定义通道
  1. 在 SUSE Manager Web UI 中,导航到软件  管理  通道,然后转到补丁选项卡。

  2. 可选:通过导航到列出/去除选项卡查看当前包含在通道中的所有补丁。

  3. 通过导航到添加选项卡,然后选择要添加的补丁类型,将新补丁添加到通道。

  4. 选择要为其提供补丁的父通道,然后单击 浏览关联补丁 以填充列表。

  5. 检查要添加到自定义通道的补丁,然后单击 确认

  6. 如果您觉得选择合适,请单击 确认 以将补丁添加到通道。

4. 管理自定义通道

SUSE Manager 管理员和通道管理员可以更改或删除任何通道。

要授予其他用户更改或删除通道的权限,请导航到软件  管理  通道,然后选择要编辑的通道。导航到管理者选项卡,并选中要向其授予权限的用户。单击 更新 以保存更改。

如果您删除某个已指派到一组客户端的通道,与已删除通道关联的任何客户端的通道状态将立即更新。这是为了确保在储存库文件中准确反映所做的更改。

无法使用 Web UI 删除 SUSE Manager 通道。只能删除自定义通道。

过程:删除自定义通道
  1. 在 SUSE Manager Web UI 中,导航到软件  管理  通道,然后选择要删除的通道。

  2. 单击 删除软件通道

  3. 删除通道页面上,检查您要删除的通道的细节,然后选中取消订阅系统复选框,以从任何可能仍已订阅的系统中去除该自定义通道。

  4. 单击 删除通道

删除通道时,不会自动去除其中的软件包。您无法更新其通道已被删除的软件包。

可以在 SUSE Manager Web UI 中删除与通道没有关联的软件包。导航到软件  管理  软件包,选中要去除的软件包,然后单击 删除软件包