跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / RMT 指南 / 在 RMT 服务器上镜像储存库
适用范围 SUSE Linux Enterprise Server 15 SP2

3 在 RMT 服务器上镜像储存库

您可以在 RMT 服务器上镜像安装和更新储存库。这样便无需在每台计算机上下载更新,从而节省时间和带宽。

在使用默认配置的情况下,RMT 每晚会自动镜像已启用的产品储存库一次。

镜像的储存库默认储存于 /var/lib/rmt/public/repo 中。

注意
注意:更改镜像储存库的默认位置

要更改镜像储存库的默认位置,请将 /usr/share/rmt/public/repo 符号链接指向所需的目录。可以使用 ln -sfn /usr/share/rmt/public/repo TARGET 命令(将 TARGET 替换为所需的目标)来完成此操作。请确保该目标具有 rmt 用户和 nginx 组的读写权限。如果您要将镜像储存库储存到其他目录或储存设备,

当启用的储存库完全镜像后,您可以通过在客户端计算机上运行 SUSEConnect --url https://RMT_HOSTNAME 来向 RMT 注册您的客户端系统。成功注册后,客户端计算机上的 Zypper 将使用来自 RMT 服务器的储存库。

重要
重要:SUSE Linux Enterprise Server 11 客户端

RMT 不支持系统为 SUSE Linux Enterprise Server 11 及以下版本的客户端。

3.1 镜像身份凭证

在创建 SUSE Linux Enterprise 储存库的本地镜像之前,您需要具有相应的组织身份凭证。您可以从 SUSE Customer Center 获取身份凭证。

要从 SUSE Customer Center 获取身份凭证,请执行以下步骤:

  1. 访问 SUSE Customer Center (http://scc.suse.com) 并登录。

  2. 如果您是多个组织的成员,请从左侧边栏中选择要使用的组织。

  3. 从顶部菜单中选择代理

  4. 右上角即会显示身份凭证。

  5. 要查看口令,请选择眼睛符号。

应当使用 YaST RMT 服务器配置模块对获取的身份凭证进行设置,或将其直接添加到 /etc/rmt.conf 文件中。有关 /etc/rmt.conf 文件的详细信息,请参见第 5.3.1 节 “/etc/rmt.conf”

3.2 同步储存库元数据

需要使用从 SUSE Customer Center 下载的信息定期更新本地 RMT 数据库。其中包括有关可用产品和储存库的信息。

同步通过 systemd 计时器 rmt-server-sync.timer 来完成。要查看状态(例如下次运行时间),请使用 systemctl status

root # systemctl status rmt-server-sync.timer
● rmt-server-sync.timer - RMT Sync timer
   Loaded: loaded (/usr/lib/systemd/system/rmt-server-sync.timer; enabled; vendor preset: disabled)
   Active: active (waiting) since Fri 2018-06-22 04:22:34 EDT; 2h 34min ago
  Trigger: Sat 2018-06-23 03:53:00 EDT; 20h left

Jun 22 04:22:34 d31 systemd[1]: Started RMT Sync timer.

要手动更新 RMT 数据库,请使用 rmt-cli sync 命令。有关详细信息,请参见第 5.1.2 节 “sync

3.3 镜像软件包

RMT 服务器上会镜像所启用的储存库的软件包。系统会每天定期下载一次软件包。不过,您也可以随时手动触发下载。

定期镜像由 systemd 计时器 rmt-server-mirror.timer 执行。要显示状态(例如下次运行时间),请使用 systemctl status

root # systemctl status rmt-server-mirror.timer
● rmt-server-mirror.timer - RMT Mirror timer
   Loaded: loaded (/usr/lib/systemd/system/rmt-server-mirror.timer; enabled; vendor preset: disabled)
   Active: active (waiting) since Fri 2018-06-22 04:22:34 EDT; 2h 34min ago
  Trigger: Sat 2018-06-23 02:17:57 EDT; 19h left

Jun 22 04:22:34 d31 systemd[1]: Started RMT Mirror timer.

要手动更新镜像的软件包,请使用 rmt-cli mirror 命令。有关详细信息,请参见第 5.1.6 节 “mirror

3.4 启用和禁用储存库镜像

可以单独启用或禁用储存库镜像,也可以通过指定产品来启用或禁用储存库镜像。一次可以指定一个或多个储存库或产品。如果储存库处于启用状态,系统会在镜像过程中下载并更新其软件包。要启用或禁用储存库镜像,您需要提供产品字符串或 ID 或者储存库名称或 ID。一般情况下,您会想要启用或禁用产品,因为这样会自动启用或禁用与产品关联的所有储存库。

3.4.1 使用产品

要启用或禁用产品的所有储存库,请使用 rmt-cli products enable IDrmt-cli product disable ID 命令。要检索已禁用但可用的产品的 ID,请使用 rmt-cli products list --all 命令。要检索已启用的产品的 ID,请使用 rmt-cli product list 命令。

示例:

tux > sudo rmt-cli products list --all
+------+----------------------+---------+--------+--------------+---------------
| ID   | Product              | Version | Arch   | Mirror?      | Last mirrored
+------+----------------------+---------+--------+--------------+---------------
[...]
| 1743 | SUSE Package Hub     | 15      | x86_64 | Don't Mirror |
|      | PackageHub/15/x86_64 |         |        |              |
[...]

tux > sudo rmt-cli products enable 1743
2 repo(s) successfully enabled.

tux > sudo rmt-cli products disable 1743
2 repo(s) successfully disabled.
提示
提示:一次启用和禁用多个产品

要一次启用或禁用多个产品,请指定产品 ID 或字符串的空格分隔列表。例如:

tux > sudo rmt-cli products enable 1743 SLES/15/x86_64 SLES/12

3.4.2 使用储存库

要启用或禁用特定储存库的镜像,请使用 rmt-cli repos enable IDrmt-cli repos disable ID 命令。要检索已禁用但可用的储存库的 ID,请使用 rmt-cli repos list --all 命令。要检索已启用的储存库的 ID,请使用 rmt-cli repos list 命令。

示例:

tux > sudo rmt-cli repos list --all
+--------+-------------------------+-------------------------------------------+
| SCC ID | Name                    | Description                               |
+--------+-------------------------+-------------------------------------------+
[...]
| 3061   | SUSE-PackageHub-15-Pool | SUSE-PackageHub-15-Pool for sle-15-x86_64 |
[...]
+--------+-------------------------+-------------------------------------------+

tux > sudo rmt-cli repos enable 3061
Repository successfully enabled.

tux > sudo rmt-cli repos disable 3061
Repository successfully disabled.
提示
提示:一次启用和禁用多个储存库

要一次启用或禁用多个储存库,请指定储存库 ID 的空格分隔列表。例如:

tux > sudo rmt-cli repos disable 2526 3263

3.5 删除镜像数据

第 3.4 节 “启用和禁用储存库镜像”中所述禁用储存库或产品镜像后,已镜像的数据仍保留在本地硬盘上。其中包括镜像的 RPM 软件包。要去除这些数据,请手动去除对应的目录:

tux > sudo rm -r /usr/share/rmt/public/repo/SUSE/Products/PRODUCT/VERSION/ARCHITECTURE/

3.6 添加自定义储存库

您可以使用 RMT 服务器镜像自定义储存库。这些储存库不是 SUSE Customer Center 提供的。它们可能是第三方供应商(例如 Open Build Service)提供的,也可能是使用 createrepo 创建的。

自定义储存库可以作为独立储存库使用,也可以关联到产品。这样,您便可以在已注册到 RMT 服务器的客户端上使用一个命令连接多个储存库。

下面的示例过程演示了镜像第三方储存库的过程。

  1. 将远程储存库添加到 RMT 服务器。将 URL 替换为储存库的 URL。将 NAME 替换为您为储存库所选择的名称。

    root # rmt-cli repos custom add URL NAME
  2. 列出所有自定义储存库以获取新储存库的 ID。

    root # rmt-cli repos custom list
  3. (可选)将新的自定义储存库关联到某个产品。例如,如果所有桌面客户端都需要这个新的自定义储存库,则可将其关联到 SUSE Linux Enterprise Desktop 产品。

    root # rmt-cli repos custom attach REPOSITORY_ID PRODUCT_ID

    REPOSITORY_ID 替换为新自定义储存库的 ID。将 PRODUCT_ID 替换为要将储存库关联到的产品的 ID。如果您需要检索 PRODUCT_ID,请使用命令 rmt-cli products list --all

  4. 启用新自定义储存库的镜像。

    root # rmt-cli repos custom enable REPOSITORY_ID

要获取所有可用自定义储存库命令的列表,请参见第 5.1.4 节 “repos

3.7 导出和导入储存库

RMT 具有可导入和导出有关可用储存库和镜像软件包的数据的内置函数。例如,可以通过在本地复制已镜像的 RPM 软件包来加快新 RMT 服务器的设置。

另一个用例是脱机模式。通过脱机模式,可以将数据传输到断开连接的 RMT 服务器,从而实现为气隙网络中的计算机提供更新等目的。

下面的过程说明了如何使用 USB 驱动器在两台 RMT 服务器之间传输数据及镜像的 RPM。服务器 sun 与 SUSE Customer Center 相连,而服务器 sirius 则位于气隙网络中。

  1. 登录服务器 sun

    root@sun # rmt-cli sync
    root@sun # rmt-cli mirror
  2. 连接一个 USB 驱动器(假设为 /dev/sdb),并将其装入到所需位置(例如 /mnt/external)。

    root@sun # mount /dev/sdb1 /mnt/external
    1. 导出有关可用储存库和产品的数据。

      root@sun # rmt-cli export data /mnt/external/
    2. 导出已启用储存库的列表。在下一步导出储存库时需要使用该导出文件。

      root@sun # rmt-cli export settings /mnt/external/
    3. 导出镜像的 RPM 软件包。此过程可能需要较长时间,具体视镜像储存库的大小而定。

      root@sun # rmt-cli export repos /mnt/external/
  3. sun 卸载并拔出磁盘,然后转到 sirius

    root@sun # umount /mnt/external
  4. 将 USB 驱动器连接到 sirius,并将其装入到 /mnt/external 中。

    root@sirius # mount /dev/sdb1 /mnt/external
    1. 导入有关可用储存库和产品的元数据。

      root@sirius # rmt-cli import data /mnt/external/
    2. 导入镜像的 RPM 软件包。此过程可能需要较长时间,具体视镜像储存库的大小而定。

      root@sirius # rmt-cli import repos /mnt/external/
  5. sirius 上根据需要启用储存库。有关详细信息,请参见第 3.4 节 “启用和禁用储存库镜像”

注意
注意:从气隙服务器导出启用的设置

如果您的气隙服务器 (sirius) 具有许多启用的储存库,或者启用的储存库经常更改,我们建议从此服务器中导出储存库设置。

然后可将导出的设置导入到与 SUSE Customer Center 相连的服务器 (sun) 中。这样便能确保 sun 下载了 sirius 所需的所有数据。