跳过导航链接 | |
退出打印视图 | |
![]() |
映像包管理系统手册页 Oracle Solaris 11 Information Library (简体中文) |
- 映像包管理系统发布客户机
/usr/bin/pkgsend [options] command [cmd_options] [operands]
/usr/bin/pkgsend generate [-T pattern] [--target file] source ...
/usr/bin/pkgsend publish [-b bundle ...] [-d source ...] [-s repo_uri_or_path] [-T pattern] [--no-catalog] [manifest ...]
通过 pkgsend,可使用软件包清单将新软件包和新软件包版本发布到映像包管理系统信息库。要创建或管理系统信息库,请参见 pkgrepo(1)。要从现有系统信息库的软件包中创建软件包归档文件,请参见 pkgrecv(1)。有关软件包清单的更多信息,请参见 pkg(5)。
完成 pkgsend 操作后,在系统信息库上运行 pkgrepo refresh 或 pkgrepo rebuild 以构建搜索索引。
支持以下选项:
显示用法消息。
支持以下子命令:
读取每个 source(例如,SVR4 软件包、目录或 tar 文件)并将介绍 source 的清单发送到 stdout。在输出清单中,file 和 dir 操作将所有者设置为 root,并将组设置为 bin。
然后可以注释输出清单,使用 pkgdepend(1) 添加或分析依赖项,并在将其传递到 publish 子命令之前使用 pkglint(1) 验证其正确性。
以下是支持的源:
文件系统格式 SVR4 软件包
数据流格式 SVR4 软件包
tar 文件
目录
如果源中文件的基本名称与使用 -T 指定的模式匹配,则将文件的时间戳添加到该文件的操作中。pattern 使用 shell 匹配规则:
匹配所有内容。
匹配任何单个字符。
匹配 seq 中的任何字符。
匹配不在 seq 中的任何字符。
如果指定源是一个目录,当单个 inode 具有多个路径名称时,则没有明确的方式区分 file 操作与 hardlink 操作。通常,在文件系统遍历中发现的第一个视为文件,其余的视为硬链接。这可以是任意的,具体取决于文件系统的实现方式。要指定哪些路径名称应视为文件,请将每个路径名称作为参数传递到 --target 选项。该选项不会影响其他类型的源,因为它们可以表明哪些路径名称是文件,哪些是硬链接。
当提供 SVR4 软件包作为源时,pkgsend 会确认不存在具有类操作脚本的文件,以及不存在安装前、安装后、删除前或删除后脚本。但与 manifest 类一起安装的任何 SMF 清单除外。将从所有可重定位路径中删除 BASEDIR 。
SVR4 DESC 参数将转换为 pkg.description 值。SVR4 NAME 参数将转换为 pkg.summary 值。
将使用指定软件包清单的软件包发布到目标软件包系统信息库,并从提供的源中检索该软件包的文件。如果指定了多个清单,它们将以提供的顺序联接。如果未指定清单,则从 stdin 中读取清单。
使用 -b 时,将指定的包添加到源列表,以便在清单中查找文件时进行搜索。包是 tar 文件和 SVR4 软件包等源。如果多次指定该选项,则以在命令行显示的顺序对源进行搜索。如果同时指定 - b 和 -d,则首先搜索 -d 源。有关支持的包及其使用方式的说明,请参阅以上的 generate 子命令。
使用 -d 时,将指定的目录添加到源列表,以便在清单中查找文件时进行搜索。如果多次指定该选项,则以在命令行显示的顺序对源进行搜索。有关支持的源及其使用方式的说明,请参阅以上的 generate 子命令。
使用 -s 时,将软件包发布到位于给定 URI 或文件系统路径的系统信息库。有关发布限制和建议的更多信息,请参见下面的“附注”部分。另请参见“环境变量”部分。
使用 --no-catalog 时,不将软件包添加到发布者的目录。当一次发布多个软件包,并且必须连续执行发布者目录更新时,建议使用该选项。完成发布后,可使用 pkgrepo (1) 的 refresh 子命令将新软件包添加到相应的发布者目录。
有关所有其他选项的用法及其影响,请参阅以上的 generate 子命令。
目标系统信息库的路径或 URI。
示例 1 生成并发布软件包
使用 pkgsend generate 创建软件包并将其发布。
$ pkgsend generate /path/to/proto > /path/to/manifests/foo.p5m
将 example.com 发布者的软件包 FMRI 添加到 foo.p5m 的开头。
set name=pkg.fmri value=pkg://example.com/foo@1.0
结果清单应类似于以下内容:
set name=pkg.fmri value=pkg://example.com/foo@1.0 dir group=sys mode=0755 owner=root path=usr dir group=bin mode=0755 owner=root path=usr/bin file usr/bin/foo group=bin mode=0555 owner=root path=usr/bin/foo
$ pkgsend publish -s http://example.com:10000 -d /path/to/proto \ /path/to/manifests/foo.p5m
示例 2 创建和发布普通软件包
为包含以下行的发布者 example.com 创建清单:
set name=pkg.fmri value=pkg://example.com/foo@1.0-1 file /exdir/foo mode=0555 owner=root group=bin path=/usr/bin/foo
发布软件包:
$ pkgsend publish -s http://example.com:10000 -d /exdir
示例 3 使用已经存在的清单
使用基于文件系统的发布和已经存在的清单发布软件包。
$ pkgsend publish -s /tmp/example_repo -d /tmp/pkg_files \ /tmp/pkg_manifest
将返回以下退出值:
命令成功。
出现错误。
指定的命令行选项无效。
发生了意外的异常。
有关下列属性的说明,请参见 attributes(5):
|
pkgdepend(1)、pkgrepo(1)、pkg.depotd(1m)、pkg(5)
http://hub.opensolaris.org/bin/view/Project+pkg/
由于发布协议限制,当发布大小超过 128 MB 的单个软件包文件时,必须使用基于文件系统的发布。当需要系统信息库的访问控制时,也建议使用基于文件系统的发布。
当使用基于文件系统的发布时,在完成发布后必须重新启动提供目标系统信息库服务的任何 pkg.depotd 进程,以便在其 Web 界面或搜索响应中反映更改。有关更多信息,请参见 pkg.depotd(1M)。