手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

pkgrecv(1)

名称

pkgrecv - 映像包管理系统内容检索实用程序

用法概要

/usr/bin/pkgrecv [-aknrv] [-s (src_path|src_uri)]
    [-d (dest_path|dest_uri)] [-c cache_dir]
    [-m match] [--raw]
    [--key src_key --cert src_cert]
    [--dkey dest_key --dcert dest_cert]
    (fmri|pattern) ...
/usr/bin/pkgrecv [-s (src_path|src_uri)] --newest
/usr/bin/pkgrecv [-nv] [-s (src_path|src_uri)]
    [-d (dest_path|dest_uri)] [-p publisher]...
    [--key src_key --cert src_cert] --clone

描述

pkgrecv–s 选项指定的 pkg(5) 系统信息库或软件包归档文件检索每个匹配 fmripattern 的软件包的所有版本,并且可以将检索到的软件包重新发布到 –d 选项指定的软件包系统信息库或软件包归档文件。缺省情况下,会以 pkgpkg.depotd 以及软件包发布工具可使用的软件包系统信息库格式检索软件包。

不重新发布未更改的软件包。因此,更新现有系统信息库的时间取决于新的和已更改软件包的数量。

使用 –m 选项可指定是检索每个匹配软件包的所有版本还是每个匹配软件包的最新版本。

如果未指定要检索的 '*',则可以指定 –r 选项来确保检索指定软件包的所有依赖项。


注 - 不要同时使用 pkgrecv 的多个实例来将软件包重新发布到同一目标系统信息库或归档文件。在这种情况下,新检索的软件包可以包含重复操作。

在将软件包检索到 dest_uri 中的 pkgrecv 操作后,如果 dest_uri 系统信息库必须支持 pkg search 操作,则在该系统信息库上运行 pkgrepo refresh 以更新搜索索引。

选项

支持以下选项:

–h

显示用法消息。

–a

将检索的软件包数据存储在 –d 选项指定的位置中的 pkg(5) 归档文件中。–d 指定的文件不能已经存在。–a 选项仅可以与基于文件系统的目标一起使用。尽管不要求,但还是强烈建议使用文件扩展名 .p5p(例如: archive.p5p)。–a 选项不能与 –-raw 选项一起使用。

–c cache_dir

指定将用于缓存已下载内容的目录的路径。如果没有提供此目录,客户机将自动选择一个高速缓存目录。如果下载中断并且已自动选择了一个高速缓存目录,可使用该选项继续执行下载。有关如何设置用于存储临时数据的位置的详细信息,请参见下文的“环境变量”部分。

–d (dest_path|dest_uri)

指定应重新发布检索的软件包的文件系统路径或 URI。如果指定 –a,此目标必须是尚未存在的软件包归档文件。如果未指定 –a,此目标必须是已经存在的软件包系统信息库。使用 pkgrepo 命令创建新软件包系统信息库。如果未指定 –d,则使用值 PKG_DEST。请参见下面的“环境变量”。

–k

使检索的软件包内容保持压缩状态。重新发布时会忽略该选项。压缩的软件包内容不得与 pkgsend 一起使用。

–m match

在指定 pattern 或未充分指定 fmri 时控制要检索哪些软件包版本。在下面的说明中,–s 选项所指定的源中存在下面的四个示例软件包。在这些 FMRI 中,@: 之间的字符表示已编号的软件包版本,: 至结尾的字符表示版本字符串的时间戳部分。

pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.24.0:20120904T180335Z
pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.24.0:20120903T170234Z
pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.23.0:20120820T165108Z
pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.23.0:20120819T155007Z
all-timestamps

检索匹配 fmri pattern 的每个软件包的所有版本(隐式的 all-versions)。如果未指定 –m 选项,这将是缺省行为。在上面的例子中,将检索到全部四个软件包。

all-versions

检索匹配 fmripattern 的每个软件包的每个版本的最新时间戳。在上面的例子中,将检索到下面两个软件包:

pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.24.0:20120904T180335Z
pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.23.0:20120820T165108Z
latest

只检索匹配 fmripattern 的每个软件包的最新版本。在上面的例子中,将检索到下面的软件包:

pkg://solaris/package/pkg@0.5.11,5.11-0.175.1.0.0.24.0:20120904T180335Z
–n

执行试运行,不进行任何更改。

–p publisher

只克隆指定的发布者。可以多次指定此选项。–p 选项只有在与 –-clone 选项一起使用时才有效。

–r

递归检索每个匹配的 fmripattern 的所有依赖项。

–s (src_path|src_uri)

指定要从中接收软件包数据的 pkg(5) 系统信息库或软件包归档文件的文件系统路径或 URI。如果未指定 –s,则使用值 PKG_SRC。请参见下面的“环境变量”。

–v

显示详细输出,包括检索到的软件包个数及其完整 FMRI、检索到的文件个数以及估计的传输大小。

–-key src_key

指定用于从源 HTTPS 系统信息库进行软件包检索的客户机 SSL 密钥文件。

–-cert src_cert

指定用于从源 HTTPS 系统信息库进行软件包检索的客户机 SSL 证书文件。

–-dkey dest_key

指定用于向目标 HTTPS 系统信息库发布软件包的客户机 SSL 密钥文件。

–-dcert dest_cert

指定用于向目标 HTTPS 系统信息库发布软件包的客户机 SSL 证书文件。

–-clone

为源系统信息库创建完全一致的副本。缺省情况下,仅当源系统信息库中的发布者也存在于目标中时,克隆操作才会成功。要限制仅对指定的发布者使用克隆操作,请使用 –p 选项。使用 –p 选项指定的发布者如果不在目标系统信息库中,则会将其添加到其中。存在于目标系统信息库中但不在源系统信息库中的软件包将被删除。如果发生错误,克隆操作会导致目标系统信息库更改。因此,目标系统信息库应位于自己的 ZFS 数据集中,并且在执行克隆操作之前应创建一个快照。

–-newest

列出 –s 选项指定的系统信息库中提供的最新版本的软件包。将忽略所有其他选项。

–-raw

按主干和版本,检索一组目录结构中的原始软件包数据并将其存储在 –d 指定的位置中。–-raw 选项仅可以与基于文件系统的目标一起使用。此软件包数据可用于方便地修改和重新发布软件包,也许通过更正文件内容,也许通过提供附加的软件包元数据。–-raw 选项不能与 –a 一起使用。

示例

示例 1 列出最新的软件包

列出名为 test 的系统上的系统信息库中的最新软件包。

$ pkgrecv -s http://test --newest
pkg://solaris/system/library/c++-runtime@0.5.11,5.11-0.175.0.0.0.2.1:20120921T190358Z
pkg://solaris/system/library/freetype-2@2.4.8,5.11-0.175.1.0.0.7.1234:20120109T215840Z
pkg://solaris/system/library/math@0.5.11,5.11-0.175.0.0.0.2.1:20120921T190432Z
示例 2 检索原始软件包数据

以能够与 pkgsend publish 结合使用的合适格式从示例 1 中接收 c++-runtime 软件包。

$ pkgrecv -s http://test \
-d /local/repo --raw \
c++-runtime@0.5.11,5.11-0.175.0.0.0.2.1:20120921T190358Z
Processing packages for publisher solaris ...
Retrieving and evaluating 1 package(s)...
PROCESS       ITEMS     GET (MB)    SEND (MB)
Completed       1/1      3.5/3.5      0.0/0.0
$ ls /local/repo
pkg5.repository  publisher  system%2Flibrary%2Fc%2B%2B-runtime
示例 3 从系统中检索依赖项

从名为 test 的系统中接收软件包 editor/vim 及其所有依赖项。

$ pkgrecv -s http://test -d /local/repo -r editor/vim
示例 4 仅检索最新版本

仅从名为 test 的系统中接收软件包 editor/vim 的最新版本。

$ pkgrecv -s http://test -d /local/repo -m latest -v \
editor/vim
Processing packages for publisher solaris ...
Retrieving and evaluating 1 package(s)...

Retrieving packages ...
        Packages to add:       1
      Files to retrieve:    1557
Estimated transfer size: 9.21 MB

Packages to transfer:
editor/vim@7.3.600,5.11-0.175.1.0.0.24.0:20120904T172128Z

PROCESS                                     ITEMS    GET (MB) SEND (MB)
Completed                                     1/1     9.2/9.2 25.4/25.4
示例 5 检索所有版本并远程重新发布

从名为 test 的系统中接收软件包 library/zlib 的所有版本,然后将其重新发布到名为 remote 的系统上的远程系统信息库中。

$ pkgrecv -s http://test -d http://remote:10000 \
-m all-versions library/zlib
示例 6 从系统信息库中检索依赖项

从位于 /export/repo 的系统信息库中接收软件包 editor/gnu-emacs 及其所有依赖项。

$ pkgrecv -s /export/repo -d /local/repo -r editor/gnu-emacs
示例 7 检索其他软件包和更改的内容

从位于 http://pkg.oracle.com/solaris/release/ 的系统信息库中将并非已存在的所有软件包和所有已更改内容接收到位于 /export/repoSolaris11 的系统信息库。

$ pkgrecv -s http://pkg.oracle.com/solaris/release/ \
-d /export/repoSolaris11 -m all-timestamps '*'

将位于 https://pkg.oracle.com/solaris/support/的安全系统信息库中的所有尚不存在的软件包和所有更改内容接收到位于 /export/repoSolaris11 的系统信息库。

$ pkgrecv -s https://pkg.oracle.com/solaris/support/ \
-d /export/repoSolaris11 -m all-timestamps \
--key /var/pkg/ssl/Oracle_Solaris_11_Support.key.pem \
--cert /var/pkg/ssl/Oracle_Solaris_11_Support.certificate.pem '*'
示例 8 创建软件包归档文件

根据位于 http://example.com:10000 的系统信息库创建包含软件包 editor/gnu-emacs 及其所有依赖项的软件包归档文件。

$ pkgrecv -s http://example.com:10000 -d /my/emacs.p5p -a \

-r editor/gnu-emacs
示例 9 将软件包从归档文件复制到系统信息库中

将软件包归档文件中的所有软件包复制到位于 /export/repo 中的现有系统信息库。

$ pkgrecv -s /my/archive.p5p -d /export/repo '*'

环境变量

支持以下环境变量:

PKG_DEST

要将检索到的软件包保存到的目录的路径,或者要复制软件包的系统信息库或软件包归档文件的文件系统路径或 URI。

PKG_SRC

URI 或文件系统路径代表要从中检索软件包的 pkg(5) 系统信息库或软件包归档文件的位置。

TMPDIR

在程序执行期间用于存储临时数据的目录的绝对路径。如果未设置,则存储临时数据的缺省路径为 /var/tmp

退出状态

将返回以下退出值:

0

命令成功。

1

出现错误。

2

指定的命令行选项无效。

3

请求了多项操作,但只有一部分操作成功。

99

发生了意外的异常。

属性

有关下列属性的说明,请参见 attributes(5):

属性类型
属性值
可用性
package/pkg
接口稳定性
Uncommitted(未确定)

另请参见

pkgrepo(1)pkgsend(1)pkg(5)

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

https://java.net/projects/ips/pages/Home

附注

当使用基于文件系统的目标系统信息库时,在完成软件包传输后必须重新启动提供该系统信息库服务的任何 pkg.depotd 进程,以便在其 Web 界面或搜索响应中反映更改。有关更多信息,请参见 pkg.depotd(1M)。