JavaScript is required to for searching.
跳过导航链接
退出打印视图
映像包管理系统手册页     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

用户命令

packagemanager(1)

pkg(1)

pkgdepend(1)

pkgdiff(1)

pkgfmt(1)

pkglint(1)

pkgmerge(1)

pkgmogrify(1)

pkgrecv(1)

pkgrepo(1)

pkgsend(1)

pkgsign(1)

pm-updatemanager(1)

系统管理命令

标准、环境和宏

pkg

- 映像包管理系统的检索客户端

用法概要

/usr/bin/pkg [options] command [cmd_options] [operands]
/usr/bin/pkg refresh [--full] [publisher ...]
/usr/bin/pkg install [-nvq] [-g path_or_uri ...] [--accept]
    [--licenses] [--no-be-activate] [--no-index] [--no-refresh]
    [--no-backup-be | --require-backup-be] [--backup-be-name name]
    [--deny-new-be | --require-new-be] [--be-name name]
    [--reject pkg_fmri_pattern ...] pkg_fmri_pattern ...
/usr/bin/pkg uninstall [-nvq] [--no-be-activate] [--no-index]
    [--no-backup-be | --require-backup-be] [--backup-be-name name]
    [--deny-new-be | --require-new-be] [--be-name name]
    pkg_fmri_pattern ...
/usr/bin/pkg update [-fnvq] [-g path_or_uri ...] [--accept]
    [--licenses] [--no-be-activate] [--no-index] [--no-refresh]
    [--no-backup-be | --require-backup-be] [--backup-be-name name]
    [--deny-new-be | --require-new-be] [--be-name name]
    [--reject pkg_fmri_pattern ...] [pkg_fmri_pattern ...]
/usr/bin/pkg list [-Hafnsuv] [-g path_or_uri ...]
    [--no-refresh] [pkg_fmri_pattern ...]
/usr/bin/pkg info [-lr] [-g path_or_uri ...] [--license]
    [pkg_fmri_pattern ...]
/usr/bin/pkg contents [-Hmr] [-a attribute=pattern ...]
    [-g path_or_uri ...] [-o attribute ...] [-s sort_key]
    [-t action_type ...] [pkg_fmri_pattern ...]
/usr/bin/pkg search [-HIaflpr] [-o attribute ...]
    [-s repo_uri] query
/usr/bin/pkg verify [-Hqv] [pkg_fmri_pattern ...]
/usr/bin/pkg fix [--accept] [--licenses] [pkg_fmri_pattern ...]
/usr/bin/pkg revert [-nv] [--no-be-activate]
    [--no-backup-be | --require-backup-be] [--backup-be-name name]
    [--deny-new-be | --require-new-be] [--be-name name]
    (--tagged tag-name ... | path-to-file ...)
/usr/bin/pkg mediator [-aH] [-F format] [mediator ...]
usr/bin/pkg set-mediator [-nv] [-I implementation]
    [-V version] [--no-be-activate]
    [--no-backup-be | --require-backup-be] [--backup-be-name name]
    [--deny-new-be | --require-new-be] [--be-name name]
    mediator ...
/usr/bin/pkg unset-mediator [-nvIV] [--no-be-activate]
    [--no-backup-be | --require-backup-be] [--backup-be-name name]
    [--deny-new-be | --require-new-be] [--be-name name]
    mediator ...
/usr/bin/pkg variant [-H] [variant.variant_name ...]
/usr/bin/pkg change-variant [-nvq] [-g path_or_uri ...]
    [--accept] [--licenses] [--no-be-activate]
    [--no-backup-be | --require-backup-be] [--backup-be-name name]
    [--deny-new-be | --require-new-be] [--be-name name]
    variant_name=value ...
/usr/bin/pkg facet [-H] [facet_name ...]
/usr/bin/pkg change-facet [-nvq] [-g path_or_uri ...]
    [--accept] [--licenses] [--no-be-activate]
    [--no-backup-be | --require-backup-be] [--backup-be-name name]
    [--deny-new-be | --require-new-be] [--be-name name] 
    facet_name=[True|False|None] ...
/usr/bin/pkg avoid [pkg_fmri_pattern ...]
/usr/bin/pkg unavoid [pkg_fmri_pattern ...]
/usr/bin/pkg freeze [-n] [-c reason] [pkg_fmri_pattern] ...
/usr/bin/pkg unfreeze [-n] [pkg_name_pattern] ...
/usr/bin/pkg property [-H] [propname ...]
/usr/bin/pkg set-property propname propvalue
/usr/bin/pkg add-property-value propname propvalue
/usr/bin/pkg remove-property-value propname propvalue
/usr/bin/pkg unset-property propname ...
/usr/bin/pkg publisher [-HPn] [publisher ...]
/usr/bin/pkg set-publisher [-Ped] [-k ssl_key] [-c ssl_cert]
    [-g origin_to_add | --add-origin origin_to_add ...]
    [-G origin_to_remove | --remove-origin origin_to_remove ...]
    [-m mirror_to_add | --add-mirror mirror_to_add ...]
    [-M mirror_to_remove | --remove-mirror mirror_to_remove ...]
    [--enable] [--disable] [--no-refresh]
    [--reset-uuid] [--non-sticky] [--sticky]
    [--search-after publisher] [--search-before publisher]
    [--search-first]
    [--approve-ca-cert path_to_CA]
    [--revoke-ca-cert hash_of_CA_to_remove]
    [--unset-ca-cert hash_of_CA_to_remove]
    [--set-property name_of_property=value]
    [--add-property-value name_of_property=value_to_add]
    [--remove-property-value name_of_property=value_to_remove]
    [--unset-property name_of_property_to_delete]
    publisher
/usr/bin/pkg set-publisher -p repo_uri 
    [-Ped] [-k ssl_key] [-c ssl_cert]
    [--non-sticky] [--sticky]
    [--search-after publisher] [--search-before publisher]
    [--search-first] 
    [--approve-ca-cert path_to_CA]
    [--revoke-ca-cert hash_of_CA_to_remove]
    [--unset-ca-cert hash_of_CA_to_remove]
    [--set-property name_of_property=value]
    [--add-property-value name_of_property=value_to_add]
    [--remove-property-value name_of_property=value_to_remove]
    [--unset-property name_of_property_to_delete]
    [publisher]
/usr/bin/pkg unset-publisher publisher ...
/usr/bin/pkg history [-Hl] [-t [time | time-time],...]
    [-o column,...] [-n number]
/usr/bin/pkg purge-history
/usr/bin/pkg rebuild-index
/usr/bin/pkg update-format
/usr/bin/pkg version
/usr/bin/pkg help
/usr/bin/pkg image-create [-FPUfz] [--force]
    [--full | --partial | --user] [--zone]
    [-k ssl_key] [-c ssl_cert]
    [--no-refresh] [--variant variant_name=value ...]
    [-g path_or_uri | --origin path_or_uri ...]
    [-m uri | --mirror uri ...]
    [--set-property name_of_property=value]
    [--facet facet_name=(True|False) ...]
    [(-p | --publisher) [name=]repo_uri] dir

描述

pkg 是映像包管理系统的检索客户端。在有效配置下,可以调用 pkg 来为要安装的软件包创建位置(称为“映像”),然后将软件包安装到这些映像中。软件包由发布者发布。发布者可使其软件包在一个或多个系统信息库上可用,或者在软件包归档中可用。pkg 从发布者的系统信息库或软件包归档中检索软件包,然后将软件包安装到映像中。

发布者名称将个人、个人组或组织标识为一个或多个软件包的源。为避免发布者名称冲突并有帮于标识发布者,最佳做法是使用代表发布软件包实体的域名作为发布者名称。

系统信息库是客户端可在其中发布和检索软件包内容(该软件包包含的文件,例如程序和文档)和元数据(有关该软件包的信息,例如其名称和描述)的位置。例如,有一个名为 example.org 的发布者,其系统信息库位于 URI http://example.org/repository

pkg 还可以卸载软件包、刷新发布者元数据(例如可用软件包的列表)、验证映像中的软件包安装,以及查询映像中的各个标记。也可以对 pkg(5) 系统信息库执行这些查询。

映像有三种类型:完整映像:能够提供完整的系统;部分映像:与完整映像(父映像)链接,但本身无法提供完整的系统;用户映像。

选项

支持以下选项:

-R dir

对根目录为 dir 的映像进行操作。如果未根据环境指定或确定目录,则缺省值为 /。有关更多信息,请参见“环境变量”部分。

--help-?

显示用法消息。

子命令

支持以下子命令:

refresh [--full] [publisher ...]

对于每个指定的发布者,更新客户端可用软件包列表和发布者元数据。如果未指定任何发布者,则针对所有发布者执行此操作。

使用 --full 时,会强制完全检索所有发布者元数据(而不是尝试增量更新),并请求操作期间使用的所有代理忽略高速缓存的数据。此选项用于进行故障排除,正常情况下不应使用。

install [-nvq] [-g path_or_uri ...] [--accept] [--licenses] [--no-be-activate] [--no-index] [--no-refresh ] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | --require-new-be] [--be-name name] [--reject pkg_fmri_pattern ...] pkg_fmri_pattern ...

安装与映像中安装的软件包所允许的 pkg_fmri_pattern 匹配的软件包,并将其更新到最新版本。要显式请求安装软件包的最新版本,请在 pkg_fmri_pattern 的版本部分使用 latest。例如,指定 vim@latest

安装过程中,某些配置文件可能被重命名或替换。有关软件包系统如何确定要保留的文件,以及在软件包操作期间如何保留这些文件的更多信息,请参见 pkg(5) 手册页中的“文件操作”。

如果某个软件包在避免列表中,则安装该软件包会将它从该列表中删除。

使用 -g 时,会暂时将指定的软件包系统信息库或归档添加到从中检索软件包数据的映像中的源列表内。如果也可以通过映像中配置的发布者使用指定源中的软件包,客户端将仅从指定的源检索这些软件包的内容。确定要使用的软件包版本时,优先选择映像中配置的、但在给定源中找不到的发布者。安装或更新后,在映像中找不到的发布者提供的任何软件包将添加到映像配置中,且添加的软件包没有源。可以多次指定此选项。

使用 -n 时,会试运行操作而不进行软件包更改。

使用 -q 时,会在执行请求的操作期间隐藏进度消息。

使用 -v 时,会在执行请求的操作期间发出详细进度消息,并显示详细的规划信息(例如更改侧面、中介者和变体)。可以多次指定此选项,以增加显示的规划信息量。

使用 --accept 时,表示同意并接受所更新或安装的软件包的许可证条款。如果不提供此选项,且任何软件包许可证都要求接受,则安装操作将失败。

使用 --licenses 时,会在此操作过程中显示已安装或更新的软件包的所有许可证。

使用 --no-backup-be 时,不会创建备份引导环境。

使用 --no-be-activate 时,如果创建了一个引导环境 (boot environment, BE),则下次引导时,不会将该 BE 设置为活动 BE。有关更多信息,请参见 beadm(1M)。

使用 --no-index 时,不会在操作成功完成后更新搜索索引。

使用 --no-refresh 时,不会尝试联系系统信息库来让映像发布者检索最新的可用软件包列表和其他元数据。

使用 --backup-be-name 时,使用给定参数命名创建的备份引导环境。使用 --backup-be-name 意味着 --require-backup-be。另请参见 beadm(1M)。

使用 --be-name 时,会将新创建的引导环境重命名为给定的参数。使用 --be-name 意味着 --require-new-be。另请参见 beadm(1M)。

使用 --require-backup-be 时,如果不创建新的引导环境,则始终创建一个备份引导环境。如果不使用该选项,则根据映像策略创建备份引导环境。有关何时自动创建备份引导环境的说明,请参见下面“映像属性”中的 be-policy

使用 --require-new-be 时,始终创建新的引导环境。如果不使用该选项,则根据映像策略创建引导环境。有关何时自动创建引导环境的说明,请参见下列“映像属性”中的 be-policy。该选项不能与 -require-backup-be 一起使用。

使用 --deny-new-be 时,不会创建新的引导环境。如果需要新的引导环境,则不执行此操作。

使用 --reject 时,会阻止安装其名称与给定模式匹配的软件包。如果已安装匹配的软件包,则在此操作过程会将其删除。作为组依赖性目标的被拒绝软件包将放置在避免列表中。

uninstall [-nvq] [--no-be-activate ] [--no-index] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | - -require-new-be] [--be-name name] pkg_fmri_pattern ...

删除与 pkg_fmri_pattern 匹配的已安装软件包。

如果某个软件包是组依赖性的主体,则卸载该软件包会将它放置在避免列表中。请参见下面的 avoid 子命令。

对于其他所有选项,请参阅上面的 install 命令,以了解其用法及效果。

update [-fnvq] [-g path_or_uri ...] [--accept] [--licenses] [--no-be-activate] [--no-index] [--no-refresh ] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | --require-new-be] [--be-name name] [--reject pkg_fmri_pattern ...] [pkg_fmri_pattern ...]

如果不使用任何参数,或者星号 (*) 是提供的模式之一,则将当前映像中安装的所有软件包更新到由安装的软件包和发布者配置强加于系统的约束所允许的最新版本。要显式请求安装软件包的最新版本,请在 pkg_fmri_pattern 的版本部分使用 latest。例如,指定 vim@latest

如果提供了 pkg_fmri_patternupdate 将与 pkg_fmri_pattern 匹配的已安装软件包替换为由安装的软件包和发布者配置强加于系统的模式和约束所允许的最新版本。可以指定比已安装版本更高或更低的版本,以便对特定软件包执行就地降级或升级。不支持跨越软件包重命名边界或过时边界更新特定的软件包。

作为将要由 update 降级的软件包的一部分、自安装原始版本以来已更改的任何保留配置文件,将会使用扩展名 .update 进行重命名。有关软件包系统如何确定要保留的文件,以及在软件包升级期间如何保留这些文件的更多信息,请参见 pkg(5) 手册页中的“文件操作”。

使用 -f 选项时,不会在更新已安装的所有软件包时执行客户端最新状态检查。

对于其他所有选项,请参阅上面的 install 命令,以了解其用法及效果。

list [-Hafnsuv] [-g path_or_uri ...][--no-refresh] [pkg_fmri_pattern ...]

未提供参数时,显示当前映像中软件包的列表,包括版本和安装状态等信息。提供参数时,显示指定软件包的信息。缺省情况下,会排除不同体系结构或区域类型的软件包变体。输出通常包括三个列:

NAME (PUBLISHER)            VERSION           IFO
system/core-os              0.5.11-0.169      i--
x11/wm/fvwm (fvwm.org)      2.6.1-3           i--

第一列包含软件包的名称。如果安装(或者提供)该软件包的发布者在发布者搜索顺序上不是第一个,则该发布者名称将列在软件包名称的后面,并括在括号中。第二列包含软件包的发行版本和分支版本。有关发行版本和分支版本以及变量的信息,请参见 pkg(5) 手册页。

最后一列包含一组标志,用于显示软件包的状态:

  • I 列中的 i 表明软件包已安装。

  • F 列中的 f 表明软件包已冻结。

  • O 列中的 o 表明软件包已过时。O 列中的 r 表明软件包已重命名(一种形式的过时)。

使用 -H 时,将忽略列表的标题。

使用 -a 时,会列出已安装的软件包,以及可用于安装的软件包的最新版本。如果软件包得到已安装 incorporation 和映像变体的允许,则认为这些软件包可用于安装。如果指定了一个或多个模式,则会列出与指定模式匹配的、得到任何已安装 incorporation 和映像变体允许的最新版本。如果不使用 -a,则仅列出已安装的软件包。

使用 -f-a 时,会列出所有变体的所有软件包的所有版本,而不管 incorporation 约束或安装状态如何。使用这些选项时,要显式列出某个软件包的最新版本,请为 pkg_fmri_pattern 的版本部分使用 latest。例如,指定 vim@latest

使用 -g 时,会使用指定的软件包系统信息库或归档作为操作的软件包数据源。可以多次指定此选项。如果未指定 -n,则可使用 -g 表示 -a

使用 -n 时,会显示所有已知软件包的最新版本,而不管安装状态如何。

使用 -s 时,会显示单行短格式,用于提供软件包名称和摘要。此选项可与 -a-n-u-v 一起使用。

使用 -u 时,仅列出其更高版本可用的软件包。此选项不能与 -g 一起使用。

使用 -v 时,会在第一列中显示完整的软件包 FMRI,包括发布者和完整版本(VERSION 列将会消失)。此选项可与 -a-n-u 一起使用。

使用 --no-refresh 时,不会尝试联系系统信息库来让映像发布者检索最新的可用软件包列表。

info [-lr] [-g path_or_uri ...][--license] [pkg_fmri_pattern ...]

以用户可读的格式显示有关软件包的信息。可以指定多个 FMRI 模式。如果未指定模式,则显示映像中所有已安装软件包的相关信息。

使用 -g 时,会使用指定的软件包系统信息库或归档作为操作的软件包数据源。可以多次指定此选项。可使用 -g 表示 -r

使用 -l 时,仅显示已安装的软件包的信息。这是缺省值。

使用 -r 时,会根据可用的最新版本匹配软件包,并从映像的已配置发布者系统信息库中检索当前未安装的软件包的相关信息(如有必要)。使用此选项时,必须至少指定一个软件包。如果不指定 -r,则缺省情况下仅显示已安装的软件包。

使用 --license 时,会显示软件包的许可证文本。此选项可与 -l-r 结合使用。

contents [-Hmr] [-a attribute=pattern ...][-g path_or_uri ...][-oattribute,...][-ssort_key] [-t action_type ...][pkg_fmri_pattern ...]

显示软件包的内容(操作属性)。未指定选项或操作数时,显示安装在当前映像中的操作的 path 属性值,属性值按字母顺序排列。有关操作及其属性的信息,请参见 pkg(5) 手册页中的“操作”。另请参见以下伪属性名称列表。

使用 -a 时,会将输出限制为在选项参数中带有某个命名属性的那些操作,该属性的值与选项参数中的 (glob) 模式匹配(在属性名称后面添加一个等号)。如果指定了多个 -a 选项,则会显示与其中任一选项匹配的操作。

使用 -g 时,将显示指定软件包系统信息库或归档文件中可以安装在此映像中的软件包的信息。可以安装的软件包包含当前已安装的软件包以及其他满足此映像安装条件(例如变量和侧面限制)的软件包。可以多次指定此选项。可使用 -g 表示 -r

使用 -m 时,将显示指定软件包中所有操作的所有属性,其中包括无法安装在此映像中的操作。

使用 -o 时,将按列出的第一个属性的值对列出的属性排序。可以多次指定 -o 选项;也可以通过使用逗号分隔属性名称,将多个属性指定为一个 -o 选项的参数。仅显示包含所请求属性的操作。

使用 -r 时,将显示此映像中配置的发布者系统信息库中可以安装在此映像中的最新可用软件包版本的信息。可以安装的软件包包含当前已安装的软件包以及其他满足此映像安装条件(例如变量和侧面限制)的软件包。使用此选项时,必须至少指定一个软件包。

使用 -s 时,会按指定的操作属性对操作进行排序。如果未提供此选项,则缺省设置是按照路径或者按照 -o 选项指定的第一个属性进行排序。可以多次指定 -s 选项。

使用 -t 时,仅列出指定类型的操作。可以在一个逗号分隔的列表中指定多个类型。可以多次指定此选项。

使用 -H 时,将忽略列表的标题。

使用 pkg_fmri_pattern 时,仅显示那些指定软件包的信息。

为方便起见,可以使用多个特殊的伪属性名称:

action.hash

操作的散列值(如果该操作承载了有效负荷)。

action.key

该操作的关键属性值。例如,对于 file 操作,关键属性是文件的路径。某些操作不具备关键属性。

action.name

操作的名称。例如,对于某个文件操作,该项为 file

action.raw

匹配操作的所有属性。

pkg.fmri

包含操作的软件包的完整 FMRI,例如 pkg://solaris/web/amp@0.5.11,5.11-0.169:20110705T153434Z

pkg.name

包含操作的软件包的名称,例如 web/amp

pkg.publisher

包含操作的软件包的发布者,例如 solaris

pkg.shortfmri

包含操作的软件包的短格式 FMRI,例如 pkg://solaris/web/amp@0.5.11,5.11-0.169

contentssearch 子命令是彼此相关的:两者都可在系统中查询软件包的内容。contents 子命令显示一个或多个已安装或可安装软件包中的操作,根据指定的选项过滤输出。search 子命令从另一个方向处理查询,显示包含用户提供的标记的所有软件包的名称。

每个子命令都能够表达另一个子命令也能表达的某些查询。应该谨慎选择所需的子命令,因为使用其中一个子命令来表达某个给定查询,可能比使用另一个子命令更为自然。

search [-HIaflpr] [-o attribute,...][-srepo_uri] query

搜索 query 的匹配项并显示结果。要为哪些标记建立索引是与操作相关的,不过可以包括内容散列和路径名称。有关操作及其属性的信息,请参见 pkg(5) 手册页中的“操作”。另请参见上面的 pkg contents 和下面的 -o 中的伪属性名称的列表。

缺省情况下,会将查询解释为要精确匹配的一系列条件。可将 ?* 字符用作 glob(3C) 式通配符,以更灵活地获取查询匹配项。

使用 -H 时,会省略标题。

使用 -I 时,会使用区分大小写的搜索。

缺省情况下,使用 -a 时,会执行搜索并显示有关匹配操作的信息。

缺省情况下,search 会删改低于当前安装版本的软件包中的结果,以及当前 incorporation 排除的软件包版本中的结果。使用 -f 可显示所有结果,而不管软件包版本如何。

使用 -l 时,会搜索映像的已安装软件包。

使用 -o 时,可以控制结果的各列。可以多次指定 -o 选项;也可以通过使用逗号分隔属性名称,将多个属性指定为一个 -o 选项的参数。除了上面概述的伪属性外,还为搜索结果定义了下列属性:

search.match

对应于与搜索查询匹配的字符串。

search.match_type

对应于包含与搜索查询匹配的字符串的属性。

使用 -p 时,会显示其某些操作与每个查询词匹配的软件包。使用此选项相当于在查询中的每个词两侧添加尖括号 (<>)。有关 <> 运算符的更多描述,请参见下文。

缺省情况下,使用 -r 时,会搜索对应于映像发布者的系统信息库。

使用 -s 时,会搜索位于给定 URI 的 pkg(5) 系统信息库。可以多次指定此选项。不支持软件包归档。

可以同时指定 -l-r(或 -s),在此情况下,将会同时执行本地搜索和远程搜索。

除了支持简单的标记匹配和通配符搜索外,还支持更复杂的查询语言。可通过使用单引号或双引号('")来搜索短语。请务必考虑所用的 shell,使 pkg 能够真正识别 '"

支持使用 AND 和 OR 的布尔搜索。支持字段(或结构化)查询。这些命令的语法为 pkg_name:action_type:key:token。对缺少的字段使用隐式通配符。搜索 :basename:pkg 将会匹配包含关键字 basename 且与标记 pkg 匹配的所有软件包中的所有操作类型。pkg_nametoken 字段中支持显式通配符。action_typekey 必须完全匹配。

要将操作转换为包含这些操作的软件包,请使用 <>。使用 -a 选项时,搜索 token 会导致返回与 token 匹配的操作的相关信息,而搜索 <token> 会导致返回一个软件包列表,这些软件包包含与 token 匹配的操作。

verify [-Hqv] [pkg_fmri_pattern ...]

验证当前映像中的软件包安装。如果相关发布者的当前签名策略不是 ignore,则会根据策略验证每个软件包的签名。有关如何应用签名策略的说明,请参见下面的“映像属性”中的 signature-policy

使用 -H 时,会省略验证输出中的标题。

使用 -q 时,如果出现任何致命错误,则不会显示任何信息,但会返回失败消息。

使用 -v 时,会包括有关软件包的提示性消息。

fix [--accept] [--licenses] [pkg_fmri_pattern ...]

修复 pkg verify 报告的任何错误。已安装软件包内容的验证基于定制的内容分析,该分析可能会返回与其他程序不同的结果。

使用 --accept 时,表示同意并接受所更新或安装的软件包的许可证条款。如果不提供此选项,且任何软件包许可证都要求接受,则操作将失败。

使用 --licenses 时,会在此操作过程中显示要安装或更新的软件包的所有许可证。

revert [-nv] [--no-be-activate ] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | --require-new-be] [--be-name name] (--tagged tag-name ... | path-to-file ...)

将文件恢复为其交付时的状态。可以使用特定值标记所有文件,也可以恢复单个文件。文件所有权和保护也会得到恢复。


注意

注意 - 将某些可编辑文件恢复为其缺省值可能会使系统无法引导,或导致其他故障。


对于其他所有选项,请参阅上面的 install 命令,以了解其用法及效果。

mediator [-aH] [-F format] [mediator ...]

显示所有中介者的当前选定版本和/或实现;如果提供了参数,则仅显示指定中介者的当前选定版本和/或实现。

使用 -a 时,会列出可针对当前安装的软件包设置的中介。

使用 -F 时,指定备用输出格式。当前,只有 tsv(Tab Separated Values,制表符分隔值)有效。

使用 -H 时,将忽略列表的标题。

set-mediator [-nv] [-I implementation] [-V version] [--no-be-activate] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | - -require-new-be] [--be-name name] mediator ...

设置当前映像中指定中介者的版本和/或实现。

使用 -I 时,会设置要使用的中介接口的实现。缺省情况下,如果未指定版本,则允许所有实现版本。要指定一个没有版本的实现,请附加 @ 符号。

使用 -V 时,会设置要使用的中介接口的版本。

如果指定的中介者版本和/或实现当前不可用,则会删除使用指定中介者的任何链接。

对于其他所有选项,请参阅上面的 install 命令,以了解其用法及效果。

unset-mediator [-nvIV] [--no-be-activate ] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | --require-new-be] [--be-name name] mediator ...

将指定中介者的版本和/或实现恢复为系统缺省值。

使用 -I 时,仅恢复中介接口的实现。

使用 -V 时,仅恢复中介接口的版本。

对于其他所有选项,请参阅上面的 install 命令,以了解其用法及效果。

variant [-H] [variant.variant_name ...]

未提供参数时,显示在此映像中设置的所有变量的当前值。提供参数时,显示在此映像中设置的每个指定变量 ( variant.variant_name) 的值。

使用 -H 时,将忽略列表的标题。

有关变量的更多信息,请参见 pkg(5) 手册页中的“侧面和变量”。

change-variant [-nvq] [-g path_or_uri ...] [--accept] [--licenses] [--no-be-activate] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | - -require-new-be] [--be-name name] variant_name=value ...

更改在当前映像中设置的指定变量的值。

有关选项的用法和效果,请参阅上面的 install 命令。

更改变量的值可能会导致删除、更新或安装某些软件包内容。更改变量值还可能会导致安装、更新或删除整个软件包,以满足新的映像配置。有关变量的更多信息,请参见 pkg(5) 手册页中的“侧面和变量”。

facet [-H] [facet_name ...]

未提供参数时,显示使用 pkg change-facet 命令在此映像中显式设置的所有侧面的当前值。提供参数时,显示在此映像中设置的每个指定侧面 (facet_name) 的值。

使用 -H 时,将忽略列表的标题。

有关侧面的更多信息,请参见 pkg(5) 手册页中的“侧面和变量”。

change-facet [-nvq] [-g path_or_uri ...] [--accept] [--licenses] [--no-be-activate] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | - -require-new-be] [--be-name name] facet_name=[True|False|None] ...

更改当前映像中设置的指定侧面的值。

可以将侧面设置为 TrueFalse。将侧面设置为 None 时,系统会将缺省值 True 应用于该侧面;因此将安装任何由此侧面约束的操作。有关操作的信息,请参见 pkg(5) 手册页中的“操作”。

有关选项的用法和效果,请参阅上面的 install 命令。

更改侧面的值可能会导致删除、更新或安装某些软件包内容。更改侧面值还可能会导致安装、更新或删除整个软件包,以满足新的映像配置。有关侧面的更多信息,请参见 pkg(5) 手册页中的“侧面和变量”。

avoid [pkg_fmri_pattern ...]

如果指定的软件包是某个组依赖性的目标,则会通过将匹配指定模式的软件包名称放置在避免列表中,来避免安装这些软件包。只能避免安装当前尚未安装的软件包。如果某个软件包当前是某个 group 依赖性的目标,则卸载该软件包会将它放置在免除列表中。

如果不提供任何参数,则会显示每个避免安装的软件包,以及与该软件包存在组依赖性的任何软件包。

如果需要满足 require 依赖性,则会安装免除列表中的软件包。如果删除了该依赖性,则会卸载相应的软件包。

unavoid [pkg_fmri_pattern ...]

从避免列表中删除指定的软件包。使用此子命令无法删除避免列表中与某个已安装软件包的组依赖性相匹配的软件包。要从免除列表中删除与某个 group 依赖性相匹配的软件包,请安装该软件包。

如果不提供任何参数,则会显示已避免安装的软件包的列表。

freeze [-n] [-c reason] [pkg_fmri_pattern] ...

将指定的软件包冻结到指定的版本。如果未提供版本,则必须安装该软件包,然后将它冻结在该已安装版本。如果安装或更新冻结的软件包,则其最终版本必须与冻结时使用的版本匹配。例如,如果某个软件包在冻结时的版本为 1.2,则可以将它更新到 1.2.1、1.2.9、1.2.0.0.1,等等。但该软件包的最终版本不能为 1.3 或 1.1。pkg_fmri_pattern 中指定的发布者用于查找匹配的软件包。但是,在冻结过程中不会记录发布者信息。软件包只针对其版本(而不是发布者)进行冻结。冻结一个已经冻结的软件包会将冻结版本替换为新指定的版本。

如果未提供任何软件包,则会显示有关当前已冻结软件包的信息:软件包名称、版本、冻结时间以及任何相关原因。

冻结某个软件包不会阻止删除该软件包。删除软件包时不会显示警告。

使用 -c 时,会记录冻结软件包的 reason。当安装或更新因冻结而不能继续进行时,将会显示该原因。

使用 -n 时,会试运行操作,并显示要冻结的软件包的列表,但不冻结任何软件包。

unfreeze [-n] [pkg_name_pattern ] ...

从指定的软件包中删除冻结操作施加的约束。将会忽略提供的版本。

使用 -n 时,会试运行解冻,并显示要解冻的软件包的列表,但不解冻任何软件包。

property [-H] [propname ...]

显示映像属性信息。如果不提供参数,则会显示所有映像属性的名称和值。如果请求了特定的属性名称列表,则显示这些属性的名称和值。有关映像属性的说明,请参见下面的“映像属性”。

使用 -H 时,将忽略列表的标题。

set-property propname propvalue

更新现有映像属性或添加新的映像属性。

add-property-value propname propvalue

向现有映像属性添加值,或添加新的映像属性。

remove-property-value propname propvalue

从现有映像属性中删除值。

unset-property propname ...

删除一个或多个现有映像属性。

publisher [-HPn] [publisher ...]

显示发布者信息。如果不提供参数,则会按搜索优先顺序显示所有发布者、其源 URI 和镜像的列表。如果请求了特定的发布者,则显示这些发布者的详细配置。

使用 -H 时,将忽略列表的标题。

使用 -P 时,仅按发布者搜索顺序显示第一个发布者。

使用 -n 时,仅显示已启用的发布者。

set-publisher [-Ped] [-k ssl_key] [-c ssl_cert] [-g origin_to_add | --add-origin origin_to_add ...] [-G origin_to_remove | --remove-origin origin_to_remove ...] [-m mirror_to_add | - -add-mirror mirror_to_add ...] [-M mirror_to_remove | --remove-mirror mirror_to_remove ...] [--enable ] [--disable] [--no-refresh] [--reset-uuid ] [--non-sticky] [--sticky] [--search-after publisher] [--search-before publisher] [--search-first] [--approve-ca-cert path_to_CA] [--revoke-ca-cert hash_of_CA_to_remove] [--unset-ca-cert hash_of_CA_to_remove] [--set-property name_of_property=value] [--add-property-value name_of_property=value_to_add] [--remove-property-value name_of_property= value_to_remove] [--unset-property name_of_property_to_delete ] publisher

更新现有发布者,或添加软件包发布者。如果未指定任何影响搜索顺序的选项,则会将新发布者附加到搜索顺序,因此,会最后搜索这些新发布者。

使用 -P--search-first 时,会将指定的发布者设置在搜索顺序的首位。安装新软件包时,将首先搜索此发布者。对已安装软件包的更新将来自最初提供该软件包的同一发布者,前提是该发布者保持粘滞。将 -P--search-first-p 一起使用时,仅将添加的发布者放置在搜索顺序的首位。

使用 --non-sticky 时,会指定级别比此发布者更高的发布者可以为最初通过此发布者安装的软件包提供更新。

使用 --sticky 时,会指定对通过此发布者安装的软件包的更新必须也来自此发布者。这是缺省行为。

使用 --search-before 时,会更改发布者搜索顺序,以便在指定的发布者之前搜索被修改的发布者。与 -p 一起使用时,--search-before 仅适用于添加的发布者。

使用 --search-after 时,会更改发布者搜索顺序,以便在指定的发布者之后搜索被修改的发布者。与 -p 一起使用时,--search-after 仅适用于添加的发布者。

使用 --approve-ca-cert 时,会将给定的证书添加为可信的 CA 证书。pkg publisher 命令的详细输出中列出了用户批准的 CA 证书的 PEM 表示法散列。

使用 --revoke-ca-cert 时,会将具有其 PEM 表示法的给定散列的证书视为已撤销。pkg publisher 命令的详细输出中列出了用户撤销的 CA 证书的散列。

使用 --unset-ca-cert 时,会从已批准证书列表和已撤销证书列表中删除具有给定散列的证书。

使用 --set-property 时,会更新现有的发布者属性,或添加新的发布者属性。

使用 --add-property-value 时,会向现有的发布者属性添加值,或添加新的发布者属性。

使用 --remove-property-value 时,会从现有的发布者属性中删除某个值。

使用 --unset-property 时,会删除某个现有的发布者属性。

使用 -c-k 时,会分别指定客户端 SSL 证书和密钥。

使用 -g (--add-origin) 时,会将指定的 URI 或路径添加为给定发布者的源。这应该是软件包系统信息库或归档的位置。

使用 -G (--remove-origin) 时,会从给定发布者的源列表中删除 URI 或路径。可以使用特殊值 * 来删除所有源。

使用 --no-refresh 时,不会尝试联系系统信息库来让映像发布者检索最新的可用软件包列表和其他元数据。

使用 --reset-uuid 时,会选择一个新的唯一标识符,用于向其发布者标识此映像。

使用 -m (--add-mirror) 时,会将 URI 添加为给定发布者的镜像。

使用 -M (--remove-mirror) 时,会从给定发布者的镜像列表中删除 URI。可以使用特殊值 * 来删除所有镜像。

使用 -p 时,会从指定的系统信息库 URI 中检索发布者配置信息。如果指定了发布者,则仅添加或更新匹配的发布者。如果未指定发布者,则根据需要添加或更新所有发布者。此选项不能与 -g--add-origin--G--remove-origin-m--add-mirror-M--remove-mirror--disable--enable--no-refresh--reset-uuid 选项结合使用。

使用 -e (--enable) 时,会启用发布者。使用 -d (--disable) 时,会禁用发布者。填充软件包列表时,或者执行某些软件包操作(安装、卸载和更新)时,将不使用被禁用的发布者。但是,仍可以设置和查看被禁用的发布者的属性。如果只存在一个发布者,则不能将其禁用。

/usr/bin/pkg set-publisher -p repo_uri [-Ped] [-k ssl_key] [-c ssl_cert] [--non-sticky] [--sticky] [--search-after publisher] [--search-before publisher] [--search-first] [--approve-ca-cert path_to_CA] [--revoke-ca-cert hash_of_CA_to_remove] [--unset-ca-cert hash_of_CA_to_remove] [--set-property name_of_property= value] [--add-property-value name_of_property =value_to_add] [--remove-property-value name_of_property=value_to_remove ] [--unset-property name_of_property_to_delete ] [publisher]

使用 -p 时,会从指定的系统信息库 URI 中检索发布者配置信息。如果指定了发布者,则仅添加或更新匹配的发布者。如果未指定发布者,则根据需要添加或更新所有发布者。有关可以与 -p 选项结合使用的其他选项的说明,请参见上面介绍的 pkg set-publisher-p 选项不能与以下选项结合使用:-g--add-origin-G--remove-origin-m--add-mirror-M--remove-mirror--disable--enable--no-refresh--reset-uuid

unset-publisher publisher ...

删除与一个或多个给定发布者相关联的配置。

history [-Hl] [-t [ time | time-time],...][-ocolumn,...][-n number]

显示适用映像的命令历史记录。

使用 -H 时,将忽略列表的标题。

使用 -t 时,会显示时间戳(格式为 %Y-%m-%dT%H:%M:%S)逗号分隔列表的日志记录(请参见 strftime(3C))。要指定时间范围,请在开始和完成时间戳之间使用连字符 (-)。可以将关键字 now 用作当前时间的别名。如果指定的时间戳包含重复的时间戳或重叠的日期范围,则每个重复的历史记录事件仅显示一次。

使用 -l 时,会以长格式显示日志记录,也就是说,除了显示标准格式的内容外,还包括命令的结果、命令完成时间、所用客户端的版本和名称、执行操作的用户名,以及执行命令时遇到的任何错误。

使用 -n 时,仅显示指定数目的最近条目。

使用 -o 时,会使用指定的列名逗号分隔列表显示输出。有效的列名为:

be

在其上启动此操作的引导环境的名称。

be_uuid

在其上启动此操作的引导环境的 uuid

client

客户端的名称。

client_ver

客户端的版本。

command

用于此操作的命令行。

finish

完成此操作时的时间。

id

启动此操作的用户 ID。

new_be

此操作创建的新引导环境。

new_be_uuid

此操作创建的新引导环境的 uuid

operation

操作的名称。

outcome

此操作的结果摘要。

reason

有关此操作的结果的其他信息。

snapshot

执行此操作期间创建的快照。仅当成功完成操作后未自动删除快照时,才会记录此信息。

start

启动此操作时的时间。

time

执行此操作所用的总时间。对于用时不到一秒的操作,将显示 0:00:00。

user

启动此操作的用户名。

如果指定了 commandreason 列,则它们必须是 -o 列表中的最后一项,这样才能让输出字段彼此分隔。这两列不能显示在同一个 history 命令中。

如果系统上不再存在该引导环境,则在 benew_be 值的后面会显示一个星号 (*)。

可通过使用 be_uuidnew_be_uuid 字段查找当前引导环境名称,来获取 benew_be 的值。如果某个引导环境后来已重命名,随后又被删除,则显示的 benew_be 值是执行 pkg 操作时记录的值。

purge-history

删除所有现有历史记录信息。

rebuild-index

重建由 pkg search 使用的索引。这是一项恢复操作,不适用于一般用途。

update-format

将映像格式更新到当前版本。完成此操作后,该映像无法再在早期版本的 pkg(5) 系统上使用。

version

显示一个用于标识 pkg(1) 版本的唯一字符串。不保证在不同版本中,此字符串在任何方面都具有类似性。

image-create [-FPUfz] [--force ] [--full | --partial | --user] [--zone] [-k ssl_key] [-c ssl_cert] [--no-refresh] [--variant variant_name=value ...] [-g path_or_uri | --origin path_or_uri ...] [-m uri | - -mirror uri ...] [--set-property name_of_property =value][--facet facet_name=(True|False) ...] [(-p | --publisher) [name=] repo_uri] dir

dir 指定的位置,创建一个适合于软件包操作的映像。缺省的映像类型为“用户”,即 -U (--user) 选项指定的类型。可以将映像类型设置为完整映像(--F--full),或者设置为与完整映像(包括给定的 dir 路径)链接的部分映像(-P--partial)。可以使用 -g--origin 指定其他源。可以使用 --m--mirror 指定其他镜像。

必须使用 -p--publisher 选项提供软件包系统信息库 URI。如果还提供了某个发布者名称,则创建映像时仅添加该发布者。如果未提供发布者名称,则会将指定的系统信息库已知的所有发布者添加到映像。完成初始创建操作后,将会尝试检索与此发布者关联的目录。

对于使用客户端 SSL 验证的发布者,可以通过 -c-k 选项注册客户端密钥和客户端证书。此密钥和证书用于映像创建期间添加的所有发布者。

如果要在非全局区域上下文中运行映像,则可以使用 -z (--zone) 选项设置相应的变体。

使用 -f (--force) 时,会基于现有映像强制创建一个映像。请慎用此选项。

使用 --no-refresh 时,不会尝试联系系统信息库来让映像发布者检索最新的可用软件包列表和其他元数据。

使用 --variant 时,会将指定的变体设置为指示值。有关变量的更多信息,请参见 pkg(5) 手册页中的“侧面和变量”。

使用 --facet 时,会将指定的侧面设置为指示值。有关侧面的更多信息,请参见 pkg(5) 手册页中的“侧面和变量”。

使用 --set-property 时,会将指定的映像属性设置为指示值。有关映像属性的说明,请参见下面的“映像属性”。

映像属性

以下属性可定义映像的特征。这些属性存储有关映像的用途、内容和行为的信息。要查看映像中这些属性的当前值,请使用 pkg property 命令。要修改这些属性的值,请使用 pkg set-propertypkg unset-property 命令。

be-policy

(字符串)指定在打包操作期间何时创建引导环境。允许使用以下值:

default

应用缺省 BE 创建策略 create-backup

always-new

所有软件包操作均需要重新引导:在下次引导时在设为活动状态的新 BE 中执行这些操作。除非显式请求,否则不会创建备份 BE。

该策略最为安全,但是它比大多数站点的需要更为严格,因为在不重新引导的情况下无法添加任何软件包。

create-backup

对于需要重新引导的软件包操作,在下一次引导时,将创建一个新的 BE 并将其设置为处于活动状态。如果修改了软件包或安装了可能影响内核的内容,并且该操作影响实时 BE,将创建备份 BE,但不会将其设置为活动状态。也可以显式请求创建备份 BE。

仅当新安装的软件导致系统不稳定时(有可能发生,但比较少见),该策略才可能存在风险。

when-required

对于需要重新引导的软件包操作,在下一次引导时,将创建一个新的 BE 并将其设置为处于活动状态。除非显式请求,否则不会创建备份 BE。

该策略的风险性最高,因为如果对实时 BE 的打包更改使得以后不可再进行更改,则可能没有可回退到的最近 BE。

ca-path

(字符串)一个路径名称,指向为执行 SSL 操作而将 CA 证书保存到的目录。此目录的格式特定于底层 SSL 实现。要对可信 CA 证书使用替代位置,请将此值更改为指向另一个目录。有关 CA 目录的要求,请参见 SSL_CTX_load_verify_locations(3openssl) 的 CApath 部分。

缺省值:/etc/openssl/certs

check-certificate-revocation

(布尔型)如果此属性设置为 True,则软件包客户机将尝试访问用于签名验证的证书中的任何 CRL 分发点,以确定证书自颁发以来是否已被撤销。

缺省值:False

flush-content-cache-on-success

(布尔型)如果此属性设置为 True,则完成安装或更新操作后,软件包客户机将删除其内容高速缓存中的文件。对于更新操作,仅从源 BE 中删除内容。如果随后目标 BE 中发生了打包操作,并且此选项未发生更改,则软件包客户机将刷新其内容高速缓存。

在磁盘空间有限的系统上,可以使用此属性使内容高速缓存保持为较小的大小。此属性可能会导致花费更长的时间来完成操作。

缺省值:True

mirror-discovery

(布尔型)此属性通知客户端使用 mDNS 和 DNS-SD 发现本地链路内容镜像。如果此属性设置为 True,则客户机尝试从其动态发现的镜像中下载软件包内容。要运行一个通过 mDNS 通告其内容的镜像,请参见 pkg.depotd(1M)。

缺省值:False

send-uuid

(布尔型)执行网络操作时发送映像的通用唯一标识符 (Universally Unique Identifier, UUID)。尽管用户可以禁用此选项,但是某些网络系统信息库可能会拒绝与不提供 UUID 的客户机通信。

缺省值:True

signature-policy

(字符串)确定在映像中安装、更新、修改或验证软件包时,要对清单执行哪些检查。应用于软件包的最终策略取决于映像策略和发布者策略的组合。该策略组合的严格程度至少相当于这两个策略单独执行时较严格的那一个。缺省情况下,软件包客户机不检查证书是否已撤销。要启用这些检查(可能需要客户机访问外部 Web 站点),请将 check-certificate-revocation 映像属性设置为 True。允许使用以下值:

ignore

忽略所有清单的签名。

verify

验证所有具有签名的清单的签名是否有效,但不要求签名所有安装的软件包。这是缺省值。

require-signatures

要求所有新安装的软件包至少具有一个有效签名。如果安装的软件包不具备有效签名,pkg fixpkg verify 命令也会发出警告。

require-names

require-signatures 遵循相同的要求,但还要求 signature-required-names 属性中列出的字符串显示为用于验证签名信任链的证书的通用名称。

signature-required-names

(字符串列表)在验证软件包签名时必须视为证书通用名称的名称列表。

trust-anchor-directory

(字符串)包含映像信任锚的目录的路径名称。此路径是映像的相对路径。缺省值为 ignore

use-system-repo

(布尔型)此属性指示映像是否应使用系统信息库作为映像和发布者配置的源,以及作为与提供的发布者通信的代理。缺省值为 False。有关系统信息库的信息,请参见 pkg.sysrepo(1M)。

发布者属性

以下属性定义了特定发布者的签名策略。具有相同名称的映像属性定义了该映像的签名策略。要查看特定发布者的这些属性的当前值,请使用 pkg publisher publisher_name 命令。要修改发布者的这些签名策略属性的值,请使用 pkg set-publisher 命令的 --set-property--unset-property 选项。

signature-policy

(字符串)此属性的作用与同名映像属性的功能相同,不过它仅适用于来自特定发布者的软件包。

signature-required-names

(字符串列表)此属性的作用与同名映像属性的功能相同,不过它仅适用于来自特定发布者的软件包。

示例

示例 1 在配置了发布者的情况下创建映像

使用 /aux0/example_root 中存储的发布者 example.com 创建一个新的完整映像。

$ pkg image-create -F -p example.com=http://pkg.example.com:10000 \
/aux0/example_root

示例 2 创建一个映像并指定附加源和镜像

使用发布者 example.com 创建一个新的完整映像。该映像还有一个附加镜像、两个附加源,并存储在 /aux0/example_root 中。

$ pkg image-create -F -p example.com=http://pkg.example.com:10000 \
-g http://alternate1.example.com:10000/ \
-g http://alternate2.example.com:10000/ \
-m http://mirror.example.com:10000/ \
/aux0/example_root

示例 3 在未配置发布者的情况下创建映像

在未配置发布者的情况下,在 /aux0/example_root 中创建一个新的完整映像。

$ pkg image-create -F /aux0/example_root

示例 4 安装软件包

在当前映像中安装最新版本的 widget 软件包。

$ pkg install application/widget

示例 5 列出软件包的指定内容

列出 system/file-system/zfs 软件包的内容。显示操作名称、文件模式(如果已定义)、大小(如果已定义)、路径和目标(如果为链接)。将操作限制为类型 dirfilelinkhardlink,因为指定可用于所有操作的 action.name 属性将显示一个列出了所有操作的行,而此处并不需要显示它。

$ pkg contents -t dir,file,link,hardlink \
-o action.name,mode,pkg.size,path,target system/file-system/zfs
ACTION.NAME MODE PKG.SIZE PATH                 TARGET
dir         0755          etc
dir         0755          etc/fs
dir         0755          etc/fs/zfs
link                      etc/fs/zfs/mount     ../../../usr/sbin/zfs
link                      etc/fs/zfs/umount    ../../../usr/sbin/zfs
dir         0755          etc/zfs
dir         0755          kernel
dir         0755          kernel/drv
dir         0755          kernel/drv/amd64
file        0755  1706744 kernel/drv/amd64/zfs
file        0644      980 kernel/drv/zfs.conf
dir         0755          kernel/fs
dir         0755          kernel/fs/amd64
hardlink                  kernel/fs/amd64/zfs  ../../../kernel/drv/amd64/zfs
...

示例 6 列出两个软件包的指定内容

列出 web/browser/firefoxmail/thunderbird 的内容,将显示的内容仅限于软件包名称,以及其 path 属性以 .desktop.png 结尾的操作的路径属性。

$ pkg contents -o pkg.name,path -a path=\*.desktop \
-a path=\*.png web/browser/firefox mail/thunderbird
PKG.NAME            PATH
web/browser/firefox usr/share/applications/firefox.desktop
mail/thunderbird    usr/share/applications/thunderbird.desktop
web/browser/firefox usr/share/pixmaps/firefox-icon.png
mail/thunderbird    usr/share/pixmaps/thunderbird-icon.png
...

示例 7 搜索软件包

在软件包数据库中搜索标记 bge

$ pkg search bge
INDEX       ACTION VALUE                      PACKAGE
driver_name driver bge                        pkg:/driver/network/bge@0.5.11-0.169
basename    file   kernel/drv/sparcv9/bge     pkg:/driver/network/bge@0.5.11-0.169
basename    file   kernel/drv/amd64/bge       pkg:/driver/network/bge@0.5.11-0.169
pkg.fmri    set    solaris/driver/network/bge pkg:/driver/network/bge@0.5.11-0.169

该标记在软件包 driver/network/bge 中,既用作代表 /kernel/drv/ arch/bge 的文件操作的根基名称,又用作驱动程序名称。

示例 8 搜索依赖于指定软件包的软件包

搜索依赖于 package/pkg 的已安装软件包。

$ pkg search -l 'depend::package/pkg'
INDEX       ACTION VALUE                    PACKAGE
incorporate depend package/pkg@0.5.11-0.169 pkg:/consolidation/ips/ips-incorporation@0.5.11-0.169
require     depend package/pkg@0.5.11-0.169 pkg:/system/install@0.5.11-0.169
require     depend package/pkg@0.5.11-0.169 pkg:/package/pkg/system-repository@0.5.11-0.169

示例 9 搜索依赖性

在安装的软件包中搜索所有 incorporate 依赖性。

$ pkg search -l 'depend:incorporate:'
INDEX       ACTION VALUE                           PACKAGE
incorporate depend pkg:/BRCMbnx@0.5.11,5.11-0.133  pkg:/consolidation/osnet/osnet-incorporation@0.5.11-0.169
incorporate depend pkg:/BRCMbnxe@0.5.11,5.11-0.133 pkg:/consolidation/osnet/osnet-incorporation@0.5.11-0.169
...

示例 10 添加发布者

添加新的发布者 example.com,该发布者的系统信息库位于 http://www.example.com/repo

$ pkg set-publisher -g http://www.example.com/repo example.com

示例 11 添加具有密钥和证书的发布者

添加新的发布者 example.com,该发布者的安全系统信息库位于 https://secure.example.com/repo,其密钥和证书存储在目录 /root/creds 中。

$ pkg set-publisher -k /root/creds/example.key \
-c /root/creds/example.cert -g https://secure.example.com/repo \
example.com

示例 12 添加并自动配置发布者

使用自动配置功能添加一个新的发布者,该发布者的系统信息库位于 /export/repo

$ pkg set-publisher -p /export/repo

示例 13 添加并手动配置发布者

使用手动配置功能添加新的发布者 example.com,该发布者的系统信息库位于 /export/repo/example.com

$ pkg set-publisher -g /export/repo example.com

示例 14 验证所有签名的软件包

配置一个映像以验证所有签名的软件包。

$ pkg set-property signature-policy verify

示例 15 要求签名所有软件包

配置一个映像,以要求签名所有软件包,并要求字符串 example.com 显示为信任链中某一个证书的通用名称。

$ pkg set-property signature-policy require-names example.com

示例 16 要求对来自指定发布者的所有软件包进行签名

配置一个映像,以便必须对通过发布者 example.com 安装的所有软件包进行签名。

$ pkg set-publisher --set-property signature-policy=require-signatures \
example.com

示例 17 要求信任链中存在指定的字符串

将字符串 foo 添加到映像的通用名称列表,这些通用名称必须显示在签名的信任链中才能视为有效。

$ pkg add-property-value signature-require-names foo

示例 18 从指定发布者的信任链中删除某个字符串

从通用名称列表中删除字符串 foo,必须显示这些通用名称才能验证发布者 example.com 的签名。

$ pkg set-publisher --remove-property-value signature-require-names=foo \
example.com

示例 19 添加可信 CA 证书

添加 /tmp/example_file.pem 中存储的证书,作为发布者 example.com 的可信 CA 证书。

$ pkg set-publisher --approve-ca-cert /tmp/example_file.pem \
example.com

示例 20 撤销证书

撤销发布者 example.com 的、包含散列 a12345 的证书,防止该证书验证来自 example.com 的软件包的任何签名。

$ pkg set-publisher --revoke-ca-cert a12345 example.com

示例 21 忘记针对某个证书执行的操作

使 pkg 忘记用户曾经添加或撤销了证书 a12345

$ pkg set-publisher --unset-ca-cert a12345 example.com

示例 22 将软件包降级

将安装的软件包 foo@1.1 降级到更低的版本。

$ pkg update foo@1.0

示例 23 切换发生冲突的软件包安装

当两个软件包发生冲突时,切换所安装的软件包。假定软件包 A 依赖于软件包 B 或软件包 C,而 B 和 C 是互斥的。如果安装了 A 和 B,则使用以下命令即可改为使用 C 而不是 B,且无需卸载 A:

$ pkg install --reject B C

示例 24 列出软件包归档中的软件包

列出某个软件包归档中所有软件包的所有版本。

$ pkg list -f -g /my/archive.p5p

示例 25 列出软件包系统信息库中的软件包

列出某个系统信息库中所有软件包的所有版本。

$ pkg list -f -g http://example.com:10000

示例 26 显示有关软件包归档中某个软件包的信息

显示软件包归档中某个软件包的最新版本的软件包信息。该软件包当前不一定已安装。

$ pkg info -g /my/archive.p5p pkg_name

示例 27 显示软件包归档中某个软件包的内容

显示软件包归档中某个软件包的内容。该软件包当前未安装。

$ pkg contents -g /my/archive.p5p pkg_name

示例 28 删除发布者的所有源和镜像

删除某个发布者的所有源和镜像,并添加新的源。

$ pkg set-publisher -G '*' -M '*' -g http://example.com:10000 \
example.com

环境变量

PKG_IMAGE

用于软件包操作的映像所在的目录。如果指定了 -R,则会忽略此属性。

PKG_CLIENT_CONNECT_TIMEOUT

传输操作期间尝试建立连接时等待的秒数(针对每次尝试),达到此秒数后,客户端会异常中止操作。值 0 表示无限期等待。

缺省值为:60

PKG_CLIENT_LOWSPEED_TIMEOUT

传输操作期间低于 lowspeed 限制(1024 字节/秒)的秒数,达到此秒数后,客户端会异常中止操作。值 0 表示不中止运行。

缺省值为:30

PKG_CLIENT_MAX_CONSECUTIVE_ERROR

客户端异常中止操作之前发生瞬态传输错误的最大次数。值 0 表示不中止运行。

缺省值为:4

PKG_CLIENT_MAX_REDIRECT

在传输操作期间,异常中止某个连接之前允许的最大 HTTP 或 HTTPS 重定向次数。值 0 表示不中止运行。

缺省值为:5

PKG_CLIENT_MAX_TIMEOUT

客户端异常中止操作之前每台主机上的最大传输尝试次数。值 0 表示不中止运行。

缺省值为:4

http_proxyhttps_proxy

HTTP 或 HTTPS 代理服务器。

退出状态

将返回以下退出值:

0

命令成功。

1

出现错误。

2

指定的命令行选项无效。

3

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

4

未进行更改-没有要执行的操作。

5

无法对实时映像执行请求的操作。

6

无法完成请求的操作,因为尚未接受所安装或更新的软件包的许可证。

7

该映像当前已被另一个进程使用,无法修改。

99

发生了意外的异常。

文件

可将 pkg(5) 映像放置在较大文件系统中的任意位置。在以下文件描述中,标记 $IMAGE_ROOT 用于区分相对路径。对于典型的系统安装,$IMAGE_ROOT 等效于 /

$IMAGE_ROOT/var/pkg

完整或部分映像的元数据目录。

$IMAGE_ROOT/.org.opensolaris,pkg

用户映像的元数据目录。

在特定映像的元数据中,某些文件和目录可能包含修复和恢复期间有用的信息。标记 $IMAGE_META 引用元数据所在的顶层目录。$IMAGE_META 通常是上述两个路径之一。

$IMAGE_META/lost+found

在软件包操作期间移动的有冲突目录和文件的位置。某个已删除目录的未打包内容的位置。

$IMAGE_META/publisher

为每个发布者包含一个目录。每个目录存储特定于发布者的元数据。

$IMAGE_META 目录分层结构中的其他路径是专用的,可能会进行更改。

属性

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

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

另请参见

pkgsend(1)pkg.depotd(1m)glob(3C)、pkg(5)beadm(1M)

http://hub.opensolaris.org/bin/view/Project+pkg/