在 Oracle® Solaris 11.2 中复制和创建软件包系统信息库

退出打印视图

更新时间: 2014 年 9 月
 
 

如何从 Internet 自动复制系统信息库

缺省情况下,svc:/application/pkg/mirror SMF 服务从 /var/share/pkg/repositories/solaris 的相应映像中定义的 solaris 发布者源定期地执行 pkgrecv 操作。pkgrecv 操作在每月某一天的凌晨 2:30 开始。要更改该缺省行为,请按照此过程所述对服务进行配置。

在每次成功运行此服务结束时,系统信息库目录都会刷新。无需刷新系统信息库以构建搜索索引。

由于此服务定期运行,因此将创建系统信息库并保持更新状态。无需按照本文档中所示的系统信息库手动更新说明进行操作。

其他系统可将其 solaris 发布者源设置为此自动更新的系统信息库,或者设置为此系统信息库的克隆。仅一个系统需要具有 Internet 发布者源并运行 mirror 服务以自动接收更新。

  1. 设置发布者源。

    缺省情况下,mirror 服务会传输根目录为 / 的映像中配置的 solaris 发布者的软件包。虽然无法直接在 mirror 服务配置中指定发布者源,但是您可以配置从中检索此信息的映像根目录。在该映像根目录下,使用 pkg set-publisher 配置要用作镜像系统信息库的 pkgrecv 传输源的发布者源。

    1. (可选)设置映像根目录。

      如果要用于 mirror 服务的发布者配置与要在此映像中使用的发布者配置不同,请在共享位置(未包含在任何 BE 中)创建用户映像,并将 mirror 服务中 config/ref_image 属性的值重置为该新映像,如以下示例所示。mirror 服务将使用 config/ref_image 映像中的发布者配置。

      $ svccfg -s pkg/mirror:default setprop config/ref_image = /var/share/pkg/mirror_svc_ref_image
      $ pkg image-create /var/share/pkg/mirror_svc_ref_image
    2. (可选)设置发布者。

      如果要使用除 solaris 发布者外的其他发布者中的软件包更新镜像系统信息库,请重置 mirror 服务中的 config/publishers 属性的值,如以下介绍添加 ha-clustersolarisstudio 发布者的示例中所示。

      $ svccfg -s pkg/mirror:default setprop config/publishers = solaris,ha-cluster,solarisstudio
    3. 设置发布者源。

      由于此服务定期运行,因此应将发布者源设置为提供常规更新的系统信息库。对于 Oracle 产品,可能需要将发布者源设置为某个支持系统信息库,以检索支持系统信息库更新 (Support Repository Update, SRU)。在以下示例中,仅当在备用映像根目录中配置发布者时才需要 -R 选项。可能不需要 -k-c 选项,具体取决于源 URI。

      $ pkg -R /var/share/pkg/mirror_svc_ref_image set-publisher \
      -g https://pkg.oracle.com/solaris/support/ -k ssl_key -c ssl_cert solaris
      $ pkg -R /var/share/pkg/mirror_svc_ref_image set-publisher \
      -g https://pkg.oracle.com/ha-cluster/support/ -k ssl_key -c ssl_cert ha-cluster
      $ pkg -R /var/share/pkg/mirror_svc_ref_image set-publisher \
      -g https://pkg.oracle.com/solarisstudio/support/ -k ssl_key -c ssl_cert solarisstudio

      使用以下命令之一验证在新映像中配置的发布者:

      $ pkg -R /var/share/pkg/mirror_svc_ref_image publisher
      $ pkg -R /var/share/pkg/mirror_svc_ref_image publisher solaris ha-cluster solarisstudio
  2. (可选)配置 mirror 服务的其他属性。

    可能需要修改 mirror 服务的其他属性,例如服务运行的时间或镜像系统信息库的位置。

    可能需要更改服务运行的时间,以更接近于匹配所镜像的发布者源的预期更新时间。要更改服务运行的时间,请修改 config/crontab_period 属性的值。

    要更改镜像系统信息库的位置,请修改 config/repository 属性的值。如果更改镜像系统信息库的位置,请将系统信息库保存在共享位置。请参见创建和使用本地 IPS 软件包系统信息库的最佳做法。缺省位置 /var/share/pkg/repositories/solaris 是未包含在任何 BE 中的共享位置。

  3. 启用 mirror 服务。

    使用 svcs mirror 命令检查 mirror 服务的状态。

    • 该服务处于禁用状态,而您想使用此服务。
      1. 如果更改了配置,请刷新服务实例。

        如果更改了 mirror 服务的任何配置(如前面步骤的 svccfg setprop 命令中所示),请刷新该服务以将更改后的值提交到正在运行的快照。如果 svcprop -p config mirror 命令的输出未显示所需的值,请确保 svccfg -s mirror:default listprop config 命令的输出显示了所需的值。使用 svcadm refresh mirror:defaultsvccfg -s mirror:default refresh 将更改后的值提交到该服务的正在运行的快照。再次使用 svcprop -p config mirror 命令以确认已按照所需方式配置了该服务。

      2. 启用服务实例。

        使用以下命令启用 mirror 服务:

        $ svcadm enable mirror:default

        使用 svcs mirror 命令确认 mirror 服务处于联机状态。该服务将按照在 config/crontab_period 属性中设置的时间运行。

    • 该服务处于联机状态,而您想立即运行此服务。

      如果该服务处于联机状态,请刷新此服务以立即运行它。应该会显示 pkg5srv 用户正在运行 svc-pkg-mirror 方法和 pkgrecv 命令。

    • 该服务处于联机状态,而您不想使用此服务。

      使用 svcadm disable mirror 命令禁用此服务。您可能希望只在一个系统上运行此服务以维护主系统信息库。而在其他系统上,您可能希望禁用此服务。

    • 该服务处于维护状态或者已降级。

      使用 svcs -xvL mirror 命令获取更多信息以诊断并修复问题。

  4. 验证系统信息库内容。

    mirror 服务结束运行后,使用 pkgrepo 命令的 infolistverify 子命令检查是否已正确复制或更新系统信息库。如果 pkgrepo verify 命令报告了错误,请尝试使用 pkgrepo fix 命令修复这些错误。有关更多信息,请参见 pkgrepo(1) 手册页。

    检查 mirror 服务的 config/crontab_period 属性的值以查看服务运行的时间。当该服务正在运行时,svcs -p mirror 命令将服务状态显示为 online* 并显示此服务启动的进程。一直等到服务状态显示为 online 且不存在与该服务关联的进程,然后再验证系统信息库。

  5. 生成新系统信息库快照。
    $ zfs snapshot rpool/VARSHARE/pkg/repositories/solaris@sol-11_2_0

接下来的步骤

您可能不希望同时复制多个发布者中的内容。为此,无需在一个 config/publishers 属性中设置多个发布者,您可以创建 pkg/mirror 服务的多个实例。例如,可以将 config/publishers 属性设置为 solaris(对于 default 实例)、ha-cluster(对于新 pkg/mirror:ha-cluster 实例)和 solarisstudio(对于新 pkg/mirror:solarisstudio 实例)。同样,可以为每个实例设置不同的 config/crontab_period。可以将每个发布者中的内容存储在一个系统信息库中(如本过程中所示),也可以为每个 pkg/mirror 实例设置单独的 config/repository 值。

另请参见

有关 SMF 命令的更多信息,请参见在 Oracle Solaris 11.2 中管理系统服务