手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

pkgmerge(1)

名称

pkgmerge - 映像包管理系统软件包合并实用程序

用法概要

/usr/bin/pkgmerge [-n] -d dest_repo
    [-p publisher_prefix]...
    -s variant=value[,...],src_repo ...
    [pkg_fmri_pattern ...]

描述

pkgmerge 是一种用于创建多变量软件包的软件包发布工具。它通过合并具有相同名称和版本的软件包(时间戳除外),使用给定源的指定变量名称和值标记合并的版本中的唯一操作,然后将新的软件包发布到目标系统信息库,从而实现此操作。仅使用每个源中各软件包的最新版本。

如果将某一操作的 pkg.merge.blend 属性设置为要合并变量的名称,则在合并之前将该操作复制到其他清单,以便在最终输出中显示该操作时不显示任何已添加的变量标记。请注意,属性 pkg.merge.blend 本身已从输出清单的所有操作中删除。对于多个传递合并,可以使用不同的值重复该属性。

在输入清单中交付到同一路径的不同操作将导致 pkgmerge 因错误而退出。

完成 pkgmerge 操作后,如果您的目标系统信息库必须支持 pkg search 操作,则在系统信息库上运行 pkgrepo refresh 以更新搜索索引。

选项

支持以下选项:

–?
–-help

显示用法消息。

–d dest_repo

指定要将合并软件包发布到的目标系统信息库的文件系统路径或 URI。目标系统信息库必须已存在。可以使用 pkgrepo 创建新的系统信息库。

–n

执行试运行,不对目标系统信息库进行任何更改。

–p publisher_prefix

指定要合并其软件包的发布者的名称。可以多次指定此选项。

缺省情况下,将合并所有源系统信息库中所有发布者的软件包。

–s variant=value[,...],src_repo

指定用于该源的软件包的变量名称和值,后跟要从中检索软件包的源系统信息库或软件包归档文件的文件系统路径或 URI。可指定多个变量,以逗号分隔。必须为所有源命名相同的变量。可以多次指定此选项。

操作数

支持下列操作数:

pkg_fmri_pattern

指定要合并的软件包。pkg_fmri_pattern 操作数可以包含 ?* 字符作为 glob(3C) 式通配符,以匹配一个或多个软件包。

环境变量

支持以下环境变量:

TMPDIR

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

示例

示例 1 指定变量名称和值

使用为从中检索到软件包的源指定的给定变量名称和值标记在指定源中发现的每个软件包:

$ pkgmerge -s arch=sparc,http://src.example.com \
-d http://dest.example.com

样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z
dir group=sys mode=0755 owner=root path=usr

操作后的样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z
set name=variant.arch value=sparc
dir group=sys mode=0755 owner=root path=usr
示例 2 合并和发布软件包

合并给定源中每个软件包的最新版本并将新软件包发布到目标系统信息库:

$ pkgmerge -s arch=sparc,http://src1.example.com \
-s arch=i386,http://src2.example.com \
-d /path/to/target/repository

源 1 (SPARC) 中的样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T121410Z
file id mode=0555 owner=root group=bin path=usr/bin/foo
dir group=sys mode=0755 owner=root path=usr

源 2 (i386) 中的样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z
file id mode=0555 owner=root group=bin path=usr/bin/foo
dir group=sys mode=0755 owner=root path=usr

合并软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z
set name=variant.arch value=sparc value=i386
file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=sparc
file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=i386
dir group=sys mode=0755 owner=root path=usr
示例 3 合并 i386 和 SPARC 系统的调试和非调试软件包

在一组用于 i386 和 SPARC 系统的调试及非调试系统信息库中,合并每个软件包的最新版本:

$ pkgmerge -s arch=sparc,debug=false,/repo/sparc-nondebug \

-s arch=sparc,debug=true,/repo/sparc-debug \
-s arch=i386,debug=false,/repo/i386-nondebug \
-s arch=i386,debug=true,/repo/i386-debug \
-d /path/to/target/repository

源 1(SPARC 非调试)中的样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T121410Z
file id mode=0555 owner=root group=bin path=usr/bin/foo
dir group=sys mode=0755 owner=root path=usr

源 2(SPARC 调试)中的样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T121411Z
file id mode=0555 owner=root group=bin path=usr/bin/foo
dir group=sys mode=0755 owner=root path=usr

源 3(i386 非调试)中的样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z
file id mode=0555 owner=root group=bin path=usr/bin/foo
dir group=sys mode=0755 owner=root path=usr

源 4(i386 调试)中的样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163428Z
file id mode=0555 owner=root group=bin path=usr/bin/foo
dir group=sys mode=0755 owner=root path=usr

合并软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163428Z
set name=variant.arch value=sparc value=i386
set name=variant.debug value=false value=true
file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=sparc variant.debug=false
file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=sparc variant.debug=true
file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=i386 variant.debug=false
file id mode=0555 owner=root group=bin path=usr/bin/foo variant.arch=i386 variant.debug=true
dir group=sys mode=0755 owner=root path=usr
示例 4 使用 pkg.merge.blend 合并

使用 pkg.merge.blend 属性合并两个不相互冲突的体系结构的软件包。

$ pkgmerge -s arch=sparc,http://src1/example.com \
-s arch=i386,http://src2.example.com \
-d /path/to/target/repository

源 1 (SPARC) 中的样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T121410Z
file 1d5eac1aab628317f9c088d21e4afda9c754bb76 mode=0555 owner=root \
    group=bin path=usr/bin/sparc/foo pkg.merge.blend=arch
file d285ada5f3cae14ea00e97a8d99bd3e357caadc0 mode=0555 owner=root \
    group=bin path=usr/bin/foo
dir group=sys mode=0755 owner=root path=usr

源 2 (i386) 中的样例软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z
file a285ada5f3cae14ea00e97a8d99bd3e357cb0dca mode=0555 owner=root \
    group=bin path=usr/bin/i386/foo pkg.merge.blend=arch
file d285ada5f3cae14ea00e97a8d99bd3e357caadc0 mode=0555 owner=root \
    group=bin path=usr/bin/foo
dir group=sys mode=0755 owner=root path=usr

合并软件包:

set name=pkg.fmri value=pkg://example.com/foo@5.11,5.11-0.200:20381001T163427Z
set name=variant.arch value=sparc value=i386
file d285ada5f3cae14ea00e97a8d99bd3e357caadc0 mode=0555 owner=root \
    group=bin path=usr/bin/foo
file a285ada5f3cae14ea00e97a8d99bd3e357cb0dca mode=0555 owner=root \
    group=bin path=usr/bin/i386/foo
file 1d5eac1aab628317f9c088d21e4afda9c754bb76 mode=0555 owner=root \
    group=bin path=usr/bin/sparc/foo
dir group=sys mode=0755 owner=root path=usr
示例 5 合并带有不同发布者前缀的软件包

仅合并带有 dev 前缀的软件包,即使这些系统信息库中的其他软件包带有 example.com 前缀也是如此。

$ pkgmerge -p dev -s arch=sparc,http://src1.example.com \
-s arch=i386,http://src2.example.com \
-d /path/to/target/repository

退出状态

将返回以下退出值:

0

命令成功。

1

出现错误。

2

指定的命令行选项无效。

99

发生了意外的异常。

属性

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

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

另请参见

pkgrepo(1)pkg(5)

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

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