跳过导航链接 | |
退出打印视图 | |
手册页第 1 部分:用户命令 Oracle Solaris 11 Information Library (简体中文) |
- 转换软件包格式
pkgtrans [-inosg] [-k keystore] [-a alias] [-P passwd] device1 device2 [pkginst]...
pkgtrans 实用程序用于将可安装的软件包从一种格式转换为另一种格式。它可进行下列转换:
从文件系统格式到数据流
从文件系统格式到已签名的数据流
从数据流到文件系统格式
从一种文件系统格式到另一种文件系统格式
此命令的选项和参数如下:
使用与友好名称别名相关联的公钥证书以及对应的私钥。有关更多信息,请参见 pkgadd(1M) 中的证书位置与密钥库和证书格式。
对结果数据流进行签名。
仅复制 pkginfo(4) 和 pkgmap(4) 文件。
使用密钥库检索用于生成签名的私钥。如果未指定此选项,将搜索缺省位置来查找由 -a 指定的指定私钥。如果没有给定别名且密钥库中存在多个密钥,则 pkgtrans 将中止。有关搜索位置和格式的更多信息,请参见 pkgadd(1M) 中的密钥库位置与密钥库和证书格式。
当以非 root 用户运行时,用于证书搜索的缺省基目录是 ~/.pkg/security,其中 ~ 是调用 pkgtrans 的用户的起始目录。
如果目标设备上已存在该软件包的任何实例,则会创建软件包的新实例,最大实例数由 pkginfo(4) 文件中的 MAXINST 变量指定。
覆盖目标设备上的相同实例。如果软件包实例已经存在,将覆盖现有实例。
提供用来解密密钥库的口令。有关此选项参数的语法的详细信息,请参见 pkgadd(1M) 中的口令短语参数。
指示软件包应该作为数据流(而不是作为文件系统)写入到 device2。缺省行为是以文件系统格式写入到支持这两种格式的设备中。
指示源设备。该设备上的软件包将被转换并放置到 device2 中。请参见下面的“设备说明符”。
指示目标设备。转换后的软件包将放置到该设备中。请参见下面的“设备说明符”。
指定应转换 device1 中的哪个(些)软件包实例。可以使用标记 all 来指示所有软件包。可以使用 pkginst.* 来指示某个软件包的所有实例。如果没有定义软件包,则会出现一个提示,它显示设备上的所有软件包,并询问要转换哪一个。
星号字符(*) 对于某些 shell 来说是特殊字符,可能需要转义。在 C-Shell 中,* 必须放在单引号 (') 中或者以反斜杠 (\) 为前缀。
打包工具(包括 pkgtrans、pkgadd(1M) 和 pkgchk(1M))都具有相应的选项,可以使用这些选项通过指定软件包所在的设备来指定软件包位置。下面列出了可以存储和从中检索软件包的设备类型。请注意,源设备和目标设备不能相同。
通过将设备标识符指定为设备,可以将软件包存储为字符或块设备。该设备类型的一个常见示例是可移除磁带的 /dev/rmt/0。pkgtrans 还可以生成流格式的常规文件系统文件,该格式的文件适合存储在字符设备、Web 服务器上或者作为 pkgadd(1M) 的输入。
通过指定某个文件系统目录的绝对路径可以将软件包存储到某个目录中。软件包内容将驻留在指定目录内的一个目录中。软件包目录名称必须与其在 pkginfo(4) 文件中的 PKG 定义相同。此类型的一个设备定义示例为 /export/packages。
示例 1 转换 /tmp 中的软件包
以下示例将 /tmp 中的软件包 pkg1 和 pkg2 转换为数据流格式:
example% pkgtrans -s /tmp /tmp/datastream.pkg pkg1 pkg2
示例 2 创建已签名的软件包
以下示例基于 pkg1 和 pkg2 创建已签名的软件包,并从 $PASS 环境变量读取口令:
example% pkgtrans -sg -k /tmp/keystore.p12 -a foo \ -p env:PASS /tmp /tmp/signedpkg pkg1 pkg2
示例 3 转换软件包数据流
以下示例将软件包数据流转换为文件系统格式软件包:
example% pkgtrans /tmp/pkg1.pkg ~/tmp pkg1
MAXINST 变量是在 pkginfo(4) 文件中设置的,它并声明软件包实例的最大数量。
成功完成。
出现错误。
有关下列属性的描述,请参见 attributes(5):
|
pkginfo(1)、pkgmk(1)、pkgparam(1)、pkgproto(1)、installf(1M)、pkgadd(1M)、pkgask(1M)、pkgrm(1M)、removef(1M)、pkginfo(4)、pkgmap(4)、attributes(5)、largefile(5)
《Application Packaging Developer’s Guide》
缺省情况下,如果目标设备上已存在某个软件包的任何实例,则 pkgtrans 不会转换该软件包的任何实例。如果已经存在该软件包的一个实例,使用 -n 选项将创建一个新实例。如果已经存在该软件包的一个实例,使用 -o 选项将覆盖该实例。如果目标设备是数据流,这两个选项都没有用。
软件包命令可识别 largefile(5)。它们处理大于 2 GB 的文件的方法与处理较小文件的方法相同。在其当前实现中,pkgadd(1M)、pkgtrans 和其他软件包命令最多可以处理 4 GB 的数据流。