将软件包发布到基于本地文件的系统信息库中。此系统信息库用于开发和测试此新软件包。如果创建一般用途的系统信息库,则应包含其他步骤,如为系统信息库创建单独的文件系统。有关创建一般用途的软件包系统信息库的信息,请参见在 Oracle Solaris 11.2 中复制和创建软件包系统信息库 。
要测试非全局区域的软件包,系统信息库位置必须可以通过系统信息库进行访问。在非全局区域内使用 pkg publisher 或 pkg list 命令可确认该软件包是否可以访问。
使用 pkgrepo(1) 命令可在系统上创建系统信息库:
$ pkgrepo create my-repository $ ls my-repository pkg5.repository
为此系统信息库设置缺省发布者。缺省发布者是系统信息库 publisher/prefix 属性的值。
$ pkgrepo -s my-repository set publisher/prefix=mypublisher
使用 pkgsend publish 命令可发布新软件包。如果可能有多个 pkgsend publish 进程同时发布到同一 -s 系统信息库,建议指定 --no-catalog 选项,因为必须连续更新发布者目录。当多个进程同时发布软件包时,如果不使用 --no-catalog 选项,发布性能会显著降低。完成发布后,可使用 pkgrepo refresh 命令将新软件包添加到相应的发布者目录。
$ pkgsend -s my-repository publish -d proto mypkg.p5m.4.res pkg://mypublisher/mypkg@1.0,5.11-0:20130720T005452Z PUBLISHED
请注意,系统信息库缺省发布者已应用至软件包 FMRI。
验证新系统信息库的权限、内容和签名是否正确:
$ pkgrepo verify -s my-repository
可以使用 pkgrepo 和 pkg list 命令检查系统信息库:
$ pkgrepo info -s my-repository PUBLISHER PACKAGES STATUS UPDATED mypublisher 1 online 2013-07-20T00:54:52.758591Z $ pkgrepo list -s my-repository PUBLISHER NAME 0 VERSION mypublisher mypkg 1.0,5.11-0:20130720T005452Z $ pkg list -afv -g my-repository FMRI IFO pkg://mypublisher/mypkg@1.0,5.11-0:20130720T005452Z ---
不建议将新软件包直接发布到 HTTP 系统信息库,因为通过 HTTP 发布时,并不对传入软件包进行授权或验证检查。请按交付到软件包系统信息库中所述将已发布的软件包交付到 HTTP 系统信息库,而不将软件包发布到 HTTP 系统信息库。如果无法对文件系统信息库进行 NFS 或 SMB 访问,在安全的网络中或者当测试多个计算机上的同一个软件包时,发布到 HTTP 系统信息库会很方便。如果直接发布到 HTTP 系统信息库,该系统信息库必须托管在包含 svc:/application/pkg/server 服务的读/写实例的计算机上(pkg/readonly 属性的值为 false)。