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

退出打印视图

更新时间: 2014 年 7 月
 
 

交付软件包

IPS 提供了三种不同的软件包交付方式,使用户可以安装软件包:

基于本地文件的系统信息库

用户通过本地网络访问此系统信息库。发布者源是系统信息库的路径,如 /net/host1/export/ipsrepo

基于远程 HTTP 的系统信息库

用户通过 HTTP 或 HTTPS 访问此系统信息库。发布者源是一个地址,如 http://pkg.example.com/

软件包归档文件

软件包归档文件是一个独立文件。发布者源是归档文件的路径,如 /net/host1/export/ipsarchive.p5p

在上述每种情况中,软件包均已按照发布软件包中所述使用 pkgsend publish 命令发布。使用 pkgrecv 命令可检索现有系统信息库中的软件包或软件包归档文件,满足一般用途要求。有关更多信息,请参见 pkgrecv(1) 手册页。有关如何创建和维护一般用途的系统信息库的信息,请参见在 Oracle Solaris 11.2 中复制和创建软件包系统信息库

交付到软件包系统信息库

以下示例显示了如何将测试系统信息库中的新软件包交付到所设置的一般用途的本地文件系统信息库。由于此示例中的软件包非常小,因此获取和发送大小均为零。

$ pkgrecv -s my-repository -d /net/host1/export/ipsrepo mypkg
Processing packages for publisher mypublisher ...
Retrieving and evaluating 1 package(s)...
PROCESS                                         ITEMS   GET (MB)   SEND (MB)
Completed                                         1/1    0.0/0.0     0.0/0.0

验证软件包在新系统信息库中是否存在:

$ pkgrepo info -s /net/host1/export/ipsrepo
PUBLISHER   PACKAGES STATUS           UPDATED
solaris     4455     online           2013-07-09T23:41:24.312974Z
mypublisher 1        online           2013-07-22T20:57:36.951042Z
$ pkgrepo list -p mypublisher -s /net/host1/export/ipsrepo
PUBLISHER   NAME                    0 VERSION
mypublisher mypkg                     1.0,5.11-0:20130720T005452Z

使用相同的 pkgrecv 命令可将软件包交付到 HTTP 或 HTTPS 系统信息库。这种情况下,请将相应的 pkg/server 服务实例的 pkg/inst_root 属性值指定为 -d 参数。此系统信息库由 svc:/application/pkg/server 服务提供给用户,该服务会运行 pkg.depotd。有关更多信息,请参见 pkg.depotd(1M) 手册页。

如果该映像没有子映像(非全局区域),用户可以使用 -g 选项安装新软件包,如以下命令所示。-g 选项可将 mypublisher 发布者添加到该映像中配置的发布者列表。

$ pkg install -g /net/host1/export/ipsrepo mypkg

如果该映像具有子映像,用户必须在映像中配置 mypublisher 发布者,如以下命令所示。

$ pkg set-publisher -p /net/host1/export/ipsrepo

交付为软件包归档文件

软件包归档文件是包含发布者信息以及该发布者提供的一个或多个软件包的独立文件。将软件包交付为软件包归档文件对无法访问软件包系统信息库的用户很方便。这些用户可以轻松地从 Web 站点下载软件包归档文件,复制到 U 盘,或刻录到 DVD 中。

pkgrecv 命令可以将软件包从软件包系统信息库添加到软件包归档文件,或将软件包从软件包归档文件添加到软件包系统信息库。将软件包从软件包归档文件添加到软件包系统信息库时,需要注意的是,软件包归档文件不包含缺省发布者前缀等系统信息库配置。大多数 pkgrepo 子命令对软件包归档文件无效。pkgrepo list 命令可处理软件包归档文件。

以下命令会创建 mypkg 软件包的一个软件包归档文件。由于此归档文件尚不存在,因此您必须指定 -a 选项。根据约定,软件包归档文件具有文件扩展名 .p5p

$ pkgrecv -s my-repository -a -d myarchive.p5p mypkg
Retrieving packages for publisher mypublisher ...
Retrieving and evaluating 1 package(s)...
DOWNLOAD                                  PKGS       FILES   XFER (MB)   SPEED
Completed                                  1/1         3/3     0.0/0.0  782k/s

ARCHIVE                                              FILES   STORE (MB)
myarchive.p5p                                        14/14      0.0/0.0

如果该映像没有子映像(非全局区域),用户可以使用 -g 选项安装新软件包,如以下命令所示。-g 选项可将 mypublisher 发布者添加到该映像中配置的发布者列表。

$ pkg install -g myarchive.p5p mypkg

如果该映像具有子映像,用户必须在映像中配置 mypublisher 发布者,如以下命令所示。

$ pkg set-publisher -p myarchive.p5p

软件包归档文件可以在非全局区域中设置为本地发布者的源。

使用软件包系统信息库和归档文件

使用 pkgrepo 命令可列出系统信息库或归档文件中的最新可用软件包:

$ pkgrepo list -s my-repository '*@latest'
PUBLISHER   NAME                                          O VERSION
mypublisher mypkg                                           1.0,5.11-0:20130720T005452Z
$ pkgrepo list -s myarchive.p5p '*@latest'
PUBLISHER   NAME                                          O VERSION
mypublisher mypkg                                           1.0,5.11-0:20130720T005452Z

此输出可用于构建脚本,以便使用给定系统信息库中所有软件包的最新版本创建归档文件。