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

退出打印视图

更新时间: 2014 年 9 月
 
 

如何更新本地 IPS 软件包系统信息库


注 -  如果使用 svc:/application/pkg/mirror SMF 服务定期更新系统信息库,则无需执行此过程。有关使用 mirror 服务的说明,请参见如何从 Internet 自动复制系统信息库
  1. 创建软件包系统信息库的 ZFS 快照。

    确保具有要更新的系统信息库的当前快照。

    $ zfs list -t all -r rpool/export/IPSpkgrepos/Solaris
    NAME                                          USED  AVAIL  REFER  MOUNTPOINT
    rpool/export/IPSpkgrepos/Solaris             17.6G  78.4G    34K  /export/IPSpkgrepos/Solaris
    rpool/export/IPSpkgrepos/Solaris@initial         0      -  17.6G  -

    如果已具有该系统信息库的快照,请使用 zfs diff 命令检查该快照是否与系统信息库数据集相同。

    $ zfs diff rpool/export/IPSpkgrepos/Solaris@initial
    $

    如果 zfs diff 命令未生成输出,则该快照与其父数据集相同,您可以将该快照用于更新。

    如果 zfs diff 命令生成了输出,或者如果您没有系统信息库的快照,则按照如何从 Internet 显式复制系统信息库Step 6 中所示创建新快照。然后将此新快照用于更新。

  2. 创建软件包系统信息库的 ZFS 克隆。

    克隆系统信息库快照以创建可以更新的系统信息库的副本。

    $ zfs clone rpool/export/IPSpkgrepos/Solaris@initial rpool/export/IPSpkgrepos/Solaris_tmp
    $ zfs list -r rpool/export/IPSpkgrepos/Solaris/
    NAME                                          USED  AVAIL  REFER  MOUNTPOINT
    rpool/export/IPSpkgrepos/Solaris             17.6G  78.4G    34K  /export/IPSpkgrepos/Solaris
    rpool/export/IPSpkgrepos/Solaris@initial         0      -  17.6G  -
    rpool/export/IPSpkgrepos/Solaris_tmp           76K  78.4G  17.6G  /export/IPSpkgrepos/Solaris_tmp
  3. 更新软件包系统信息库的 ZFS 克隆。

    正如可从文件或在 HTTP 位置中创建原始系统信息库一样,您可以从文件或在 HTTP 位置中更新系统信息库。

    • zip 文件更新。

      请参见Example 2–2。如果指定目标已包含软件包系统信息库,则 zip 文件的内容将添加到现有系统信息库的内容。

    • 从 ISO 文件更新。
      1. 挂载 ISO 映像。
        $ mount -F hsfs ./sol-11_2-incr-repo.iso /mnt
      2. 将 ISO 文件内容复制到系统信息库克隆。

        使用 rsynctar,如如何从 iso 文件复制系统信息库中所示。

        $ rsync -aP /mnt/repo/ /export/IPSpkgrepos/Solaris_tmp
      3. 取消挂载 ISO 映像。
    • 从系统信息库更新。

      将其他系统信息库中的内容复制到系统信息库克隆。如果要从安全站点复制,请确保已安装必需的 SSL 证书和密钥,并指定必需的证书和密钥选项。

      $ pkgrecv -s https://pkg.oracle.com/solaris/support \
      -d /export/IPSpkgrepos/Solaris_tmp \
      --key /path-to-ssl_key --cert /path-to-ssl_cert '*'

      有关 pkgrecv 命令的更多信息,请参见 pkgrecv(1) 手册页。因为仅对更改过的软件包进行更新,因此更新系统信息库的时间可能比填充原始系统信息库的时间少很多。请参见复制系统信息库的性能注意事项中的性能提示。

      如果 pkgrecv 操作中断,请按照继续执行中断的软件包接收中的说明进行操作。

  4. 将工作系统信息库替换为更新后的克隆。
    $ svcadm disable -st pkg/server:solaris
    $ zfs promote rpool/export/IPSpkgrepos/Solaris_tmp
    $ zfs rename rpool/export/IPSpkgrepos/Solaris rpool/export/IPSpkgrepos/Solaris_old
    $ zfs rename rpool/export/IPSpkgrepos/Solaris_tmp rpool/export/IPSpkgrepos/Solaris

    有关 svcadm 命令的更多信息,请参见 svcadm(1M) 手册页。

  5. 验证更新后的系统信息库。

    使用 pkgrepo verify 命令验证更新后的系统信息库。有关 pkgrepo verifypkgrepo fix 命令的更多信息,请参见 pkgrepo(1) 手册页。

  6. 将新软件包编入目录并更新搜索索引。

    将在新更新的系统信息库中找到的所有新软件包编入目录,并更新所有搜索索引。

    $ pkgrepo refresh -s rpool/export/IPSpkgrepos/Solaris
  7. 创建软件包系统信息库的 ZFS 快照(即新更新的克隆)。
    $ zfs snapshot rpool/export/IPSpkgrepos/Solaris@S11U2SRU1
  8. 重新启动 SMF 服务。

    如果要通过 HTTP 接口提供系统信息库,请重新启动 SMF 服务。重新启动该服务时务必指定相应的服务实例。

    $ svcadm restart pkg/server:solaris
  9. 删除旧的系统信息库。

    如果更新后的系统信息库正常工作,让您满意,则可以删除旧的系统信息库。

    $ zfs destroy rpool/export/IPSpkgrepos/Solaris_old