确保具有要更新的系统信息库的当前快照。
$ 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 中所示创建新快照。然后将此新快照用于更新。
克隆系统信息库快照以创建可以更新的系统信息库的副本。
$ 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
正如可从文件或在 HTTP 位置中创建原始系统信息库一样,您可以从文件或在 HTTP 位置中更新系统信息库。
请参见Example 2–2。如果指定目标已包含软件包系统信息库,则 zip 文件的内容将添加到现有系统信息库的内容。
$ mount -F hsfs ./sol-11_2-incr-repo.iso /mnt
使用 rsync 或 tar,如如何从 iso 文件复制系统信息库中所示。
$ rsync -aP /mnt/repo/ /export/IPSpkgrepos/Solaris_tmp
将其他系统信息库中的内容复制到系统信息库克隆。如果要从安全站点复制,请确保已安装必需的 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 操作中断,请按照继续执行中断的软件包接收中的说明进行操作。
$ 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) 手册页。
使用 pkgrepo verify 命令验证更新后的系统信息库。有关 pkgrepo verify 和 pkgrepo fix 命令的更多信息,请参见 pkgrepo(1) 手册页。
将在新更新的系统信息库中找到的所有新软件包编入目录,并更新所有搜索索引。
$ pkgrepo refresh -s rpool/export/IPSpkgrepos/Solaris
$ zfs snapshot rpool/export/IPSpkgrepos/Solaris@S11U2SRU1
如果要通过 HTTP 接口提供系统信息库,请重新启动 SMF 服务。重新启动该服务时务必指定相应的服务实例。
$ svcadm restart pkg/server:solaris
如果更新后的系统信息库正常工作,让您满意,则可以删除旧的系统信息库。
$ zfs destroy rpool/export/IPSpkgrepos/Solaris_old