在 Oracle® Solaris 11.2 中使用映像包管理系统打包和交付软件

退出打印视图

更新时间: 2014 年 7 月
 
 

发布软件包

将软件包发布到基于本地文件的系统信息库中。此系统信息库用于开发和测试此新软件包。如果创建一般用途的系统信息库,则应包含其他步骤,如为系统信息库创建单独的文件系统。有关创建一般用途的软件包系统信息库的信息,请参见在 Oracle Solaris 11.2 中复制和创建软件包系统信息库

要测试非全局区域的软件包,系统信息库位置必须可以通过系统信息库进行访问。在非全局区域内使用 pkg publisherpkg 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

可以使用 pkgrepopkg 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)。