Go to main content

手册页部分 1:用户命令

退出打印视图

更新时间: 2022年7月27日 星期三
 
 

pkgrepo(1)

名称

pkgrepo - 映像包管理系统的系统信息库管理实用程序

用法概要

/usr/bin/pkgrepo create [--version ver] uri_or_path
/usr/bin/pkgrepo add-publisher -s repo_uri_or_path
    publisher ...
/usr/bin/pkgrepo remove-publisher [-n] [--synchronous]
    -s repo_uri_or_path publisher ...
/usr/bin/pkgrepo get [-F format] [-H] [-p publisher]...
    -s repo_uri_or_path [--key ssl_key --cert ssl_cert]...
    [section/property ...]
/usr/bin/pkgrepo info [-F format] [-H] [-p publisher]...
    -s repo_uri_or_path [--key ssl_key --cert ssl_cert]...
/usr/bin/pkgrepo list [-F format] [-H] [-p publisher]...
    -s repo_uri_or_path [--key ssl_key --cert ssl_cert]...
    [pkg_fmri_pattern ...]
/usr/bin/pkgrepo contents [-m]
    [-t action_name[,action_name]...]... -s repo_uri_or_path
    [--key ssl_key --cert ssl_cert]... [pkg_fmri_pattern...]
/usr/bin/pkgrepo rebuild [-p publisher]...
    -s repo_uri_or_path [--key ssl_key --cert ssl_cert]...
    [--no-catalog] [--no-index]
/usr/bin/pkgrepo refresh [-p publisher]...
    -s repo_uri_or_path [--key ssl_key --cert ssl_cert]...
    [--no-catalog] [--no-index]
/usr/bin/pkgrepo remove [-n] [-p publisher]...
    -s repo_uri_or_path pkg_fmri_pattern ...
/usr/bin/pkgrepo set [-p publisher]... -s repo_uri_or_path
    section/property=[value] ...
/usr/bin/pkgrepo set [-p publisher]... -s repo_uri_or_path
    section/property=([value]) ...
/usr/bin/pkgrepo verify [-d] [-p publisher]...
    [-i ignored_dep_file]...  [--disable verification]...
    -s repo_uri_or_path
/usr/bin/pkgrepo fix [-v] [-p publisher]...
    -s repo_uri_or_path
/usr/bin/pkgrepo diff [-vq] [--strict] [--parsable] [-p publisher]...
    -s first_repo_uri_or_path [--key ssl_key --cert ssl_cert]...
    -s second_repo_uri_or_path [--key ssl_key --cert ssl_cert]...
/usr/bin/pkgrepo help
/usr/bin/pkgrepo version

描述

pkgrepo provides the ability to create and manage pkg(7) package repositories.软件包系统信息库是一组预定义的目录和文件,允许 pkg 和发布客户机(例如 pkgsend pkgrecv)存储和检索软件包数据。此外,当需要对软件包系统信息库进行基于网络的访问时,pkg.depotd 可以提供对该系统信息库的客户机访问权限,以存储和/或检索软件包数据。

选项

支持以下选项:

–?
–-help

显示用法消息。

子命令

支持以下子命令:

pkgrepo create [–-version ver] uri_or_path

Create a pkg(7) repository at the specified location.

该子命令仅可以与基于文件系统的系统信息库一起使用。

–-version

使用与指定版本兼容的格式创建系统信息库。缺省情况下,会创建版本为 4 的系统信息库。Supported versions are:

3

支持为单个发布者存储软件包,目录版本为 1 ,搜索版本为 1。

4

支持为多个发布者存储软件包,目录版本为 1 ,搜索版本为 1。

pkgrepo add-publisher –s repo_uri_or_path publisher ...

将指定的发布者添加到系统信息库中。新的发布者没有软件包或内容。

该子命令仅可以与基于第 4 版文件系统的系统信息库一起使用。

–s repo_uri_or_path

对位于给定 URI 或文件系统路径的系统信息库进行操作。

pkgrepo remove-publisher [–n] [–-synchronous] –s repo_uri_or_path publisher ...

从系统信息库中删除指定的发布者。删除指定发布者的所有软件包和其他所有数据。

如果删除了缺省发布者,并且系统信息库中只剩余了一个发布者,则剩余的发布者将成为缺省发布者。系统信息库的 publisher/prefix 属性将设置为该剩余发布者。

如果删除了缺省发布者,但系统信息库中剩余多个发布者,或者从系统信息库中删除了最后一个发布者,则将取消设置 publisher/prefix 属性。

该子命令仅可以与基于第 4 版文件系统的系统信息库一起使用。

–n

试运行操作而不更改发布者。在退出之前,会显示要删除的每个发布者的软件包个数。

–s repo_uri_or_path

对位于给定 URI 或文件系统路径的系统信息库进行操作。

–-synchronous

等待操作完成,然后返回。如果未指定此选项,命令将立即返回并在后台异步删除发布者。

pkgrepo get [–F format] [–H] [–p publisher]... –s repo_uri_or_path [–-key ssl_key –-cert ssl_cert]... [section/property ...]

显示系统信息库或其发布者的属性信息。

缺省情况下,会在单独的行中列显每个属性及其值。空的 ASCII 字符串值用一对双引号 ("") 表示。ASCII 字符串值中的以下 Bourne shell 元字符以及换行符、空格符和制表符都必须使用反斜杠 (\) 进行转义:

; & ( ) | ^ < > \ " ' `

有关显示发布者和系统信息库属性的示例,请参见“示例”部分。

有关属性列表以及每个属性的用途和值,请参见下文的 set 子命令。

–F format

指定备用输出格式。format 的值可以是 tsv(以制表符分隔的值)、json(单行 JavaScript 对象表示法)或 json-formatted(格式易于阅读的 JavaScript 对象表示法)。

–H

在列出时省略标题。

–p publisher

显示给定发布者的属性信息。特殊值 all 显示所有发布者的属性。可以多次指定此选项。

–s repo_uri_or_path

对位于给定 URI 或文件系统路径的系统信息库进行操作。

–-key ssl_key –-cert ssl_cert

使用 –-key 选项指定用于从 HTTPS 系统信息库进行软件包检索的客户机 SSL 密钥文件。使用 –-cert 选项指定用于从 HTTPS 系统信息库进行软件包检索的客户机 SSL 证书文件。可以多次指定此选项对。

section/property

仅显示指定属性的值,例如 publisher/prefixrepository/version。有关完整的属性列表,请参见 set 子命令。

pkgrepo info [–F format] [–H] [–p publisher]... –s repo_uri_or_path [–-key ssl_key –-cert ssl_cert]...

显示系统信息库已知的软件包发布者的列表。该列表包括每个发布者的软件包数量、最后一次更新发布者的软件包数据的时间以及发布者的软件包数据的状态(例如当前是否处于正在处理状态)。

–p publisher

仅显示给定发布者的数据。如果没有提供该选项,将显示所有发布者的数据。可以多次指定此选项。

有关其他所有选项的说明,请参见上面的 pkgrepo get 命令。

pkgrepo list [–F format] [–H] [–p publisher]... –s repo_uri_or_path [–-key ssl_key –-cert ssl_cert]... [pkg_fmri_pattern ...]

列出 repo_uri_or_path 系统信息库中与指定 pkg_fmri_pattern 模式匹配的软件包。如果未指定任何模式,将列出系统信息库中的所有软件包。The pkg_fmri_pattern pattern can include the ? and * characters as glob(3C)-style wildcards to match one or more packages.

在缺省输出中,第一列包含软件包发布者的名称。第二列包含软件包的名称。第三列是显示软件包状态的标志。状态列中的 o 值表示软件包已过时。状态列中的 r 值表示已重命名软件包,但格式已过时。A value of l in the status column indicates the package is legacy, meaning that it will be removed in the future.第四列包含软件包的发行版本和分支版本。See pkg(7) for information about release and branch versions.

–p publisher

仅显示给定发布者的软件包。如果没有提供该选项,将列出所有发布者的软件包。可以多次指定此选项。

有关其他所有选项的说明,请参见上面的 pkgrepo get 命令。

pkgrepo contents [–m [–t action_name[,action_name]...]... –s repo_uri_or_path [–-key ssl_key –-cert ssl_cert]... [pkg_fmri_pattern...]

列出 repo_uri_or_path 系统信息库中的所有软件包。如果指定了 pkg_fmri_pattern,将显示系统信息库中所有匹配软件包的内容(操作属性)。

–m

显示指定软件包中操作的所有属性。

–t action_name

仅显示指定软件包中的指定操作。可以多次指定 –t 选项;也可以通过使用逗号分隔操作名称,将多个操作指定为一个 –t 选项的参数。The value of action_name is one of the actions listed in “Actions” in the pkg(7) man page, such as file, dir, driver, depend, or set.

有关其他所有选项的说明,请参见上面的 pkgrepo get 命令。

pkgrepo rebuild [–p publisher]... –s repo_uri_or_path [–-key ssl_key –-cert ssl_cert]... [–-no-catalog] [–-no-index]

放弃在系统信息库中找到的所有目录、搜索以及其他缓存信息,然后根据系统信息库的当前内容重新创建这些信息。

–p publisher

仅针对给定发布者执行操作。如果没有提供该选项或者指定了特定值 all,则对所有发布者执行操作。可以多次指定此选项。

–-no-catalog

不重新生成软件包数据。

–-no-index

不重新生成搜索索引。

有关其他所有选项的说明,请参见上面的 pkgrepo get 命令。

pkgrepo refresh [–p publisher]... –s repo_uri_or_path [–-key ssl_key –-cert ssl_cert]... [–-no-catalog] [–-no-index]

将在系统信息库中找到的所有新软件包编入目录并更新所有搜索索引。这主要供延迟的发布使用(pkgsend–-no-catalog –-no-index 选项)。

–p publisher

仅针对给定发布者执行操作。如果没有提供该选项或者指定了特定值 all,则对所有发布者执行操作。可以多次指定此选项。

–-no-catalog

不添加任何新软件包。

–-no-index

不更新搜索索引。

有关其他所有选项的说明,请参见上面的 pkgrepo get 命令。

pkgrepo remove [–n] [–p publisher]... –s repo_uri_or_path pkg_fmri_pattern ...

从系统信息库中删除与指定的 pkg_fmri_pattern 模式匹配的软件包,其中包括这些软件包所引用的且未被其他任何软件包使用的所有文件。The pkg_fmri_pattern pattern can include the ? and * characters as glob(3C)-style wildcards to match one or more packages.


注 - 删除关联发布者的所有搜索索引数据。

该子命令仅可以与基于文件系统的系统信息库一起使用。


注意  - 此操作不可逆并且不得在其他客户机正在访问系统信息库时使用,因为这样会使得它们在执行检索操作期间出现故障。


–n

试运行操作而不进行软件包更改。在退出之前,会显示要删除的软件包的列表。

–p publisher

仅删除给定发布者的匹配软件包。如果没有提供该选项,会删除所有发布者的所有匹配软件包。可以多次指定此选项。

–s repo_uri_or_path

对位于给定 URI 或文件系统路径的系统信息库进行操作。

pkgrepo set [–p publisher]... –s repo_uri_or_path section/property=[value] ...
pkgrepo set [–p publisher]... –s repo_uri_or_path section/property=([value]) ...

为系统信息库或发布者设置指定属性的值。

该子命令仅可以与基于文件系统的系统信息库一起使用。

–p publisher

仅为给定发布者设置属性数据。如果发布者尚未存在,将添加该发布者。特殊值 all 可用于设置所有发布者的属性。

–s repo_uri_or_path

对位于给定 URI 或文件系统路径的系统信息库进行操作。

可以使用以下格式之一指定属性和值:

section/property=

清除属性值。

section/property=value

将属性值替换为给定值。

section/property=(value1 value2 valueN)

将属性值替换为值列表。

对于系统信息库第 3 和 4 版,可以为系统信息库设置以下属性:

publisher/prefix

代表缺省发布者名称的字符串。第一个字符必须是 a-z、A-Z 或 0-9。该字符串的剩余部分只能包含字符 0-9、-、.、a-z 以及 A-Z。该值指示存在多个发布者的软件包时或者将软件包发布到系统信息库但没有指定发布者时,应当使用的发布者。

对于系统信息库第 3 版和第 4 版,可以为系统信息库中的各发布者设置以下属性。设置这些属性时应使用 –p 选项至少指定一个发布者。

publisher/alias

字符串,代表在使用系统信息库的配置数据添加发布者时客户机应当使用的缺省别名。第一个字符必须是 a-z、A-Z 或 0-9。该字符串的剩余部分只能包含字符 0-9、-、.、a-z 以及 A-Z。

repository/check-certificate-revocation

用于检查证书是否已撤销的布尔值。如果此属性设置为 True,则 pkgrepo verifypkgrepo fix 命令将尝试访问用于签名验证的证书中的任何 CRL 分发点,以确定证书自颁发以来是否已被撤销。缺省值为 False。此属性仅由 verifyfix 子命令用来验证系统信息库的内容。此属性不影响客户机设置。This value should be the same as the corresponding pkg(1) property value.

repository/collection_type

可以使用值 coresupplemental,表明此系统信息库中提供的软件包类型。

core 类型表明系统信息库包含该库中的软件包所声明的所有依赖项。core 类型主要用于操作系统的系统信息库。

supplemental 类型表明系统信息库包含依赖于另一个系统信息库中的软件包或要与另一个系统信息库中软件包一起使用的软件包。

repository/description

纯文本段落,描述系统信息库的用途和内容。

repository/detailed_url

URI,代表提供更多有关系统信息库信息的文档的位置(例如网页)。

repository/legal_uris

文档的位置列表 (URI),提供关于系统信息库的其他法律信息。

repository/mirrors

系统信息库的位置列表 (URI),这些系统信息库包含系统信息库的软件包内容的副本但不包含软件包元数据。

repository/name

纯文本字符串,包含系统信息库的名称。

repository/origins

系统信息库的位置列表 (URI),这些系统信息库包含该系统信息库的软件包元数据和内容的完整副本。

repository/refresh_seconds

整数值,表示客户机在每次更新检查之后和检查系统信息库以查找更新的软件包数据之前应当等待的秒数。

repository/registration_uri

代表资源位置的 URI,必须使用该位置才能获取访问系统信息库的证书。注册网页就是一个示例。

repository/related_uris

系统信息库的位置列表 (URI),这些系统信息库包含用户可能感兴趣的软件包。

repository/signature-required-names

在验证软件包签名时必须视为证书通用名称的名称列表。此属性仅由 verifyfix 子命令用来验证系统信息库的内容。此属性不影响客户机设置。These values should be the same as the corresponding pkg(1) property values.

repository/trust-anchor-directory

目录的绝对路径名称,包含此系统信息库中的软件包的信任锚。如果未指定,将使用 /etc/certs/CA/。此属性仅由 verifyfix 子命令用来验证系统信息库的内容。此属性不影响客户机设置。This value should be the same as the corresponding pkg(1) property value.

此处没有记录但列在 get 子命令输出中的属性均保留供内部使用,不应对其进行设置。

pkgrepo verify [–d] [–p publisher]... [–i ignored_dep_file]... [–-disable verification]... –s repo_uri_or_path

验证软件包系统信息库内容的以下属性是否正确:

  • 文件校验和

  • 文件权限

    还将检查指向系统信息库的路径,确保 pkg5srv 用户可以读取系统信息库内容。对于在系统具有非全局区域时使用 svc:/application/pkg/server 服务或使用 svc:/application/pkg/system-repository 服务变为可用的系统信息库,需要进行此检查。

  • 软件包清单权限

  • 软件包清单内容(包括依赖项)

    依赖项检查过程验证每个软件包清单中引用的每个文件是否在系统信息库中。另请参见下面的 –d–i–-disable 选项。

  • 软件包签名

    基于 repository/signature-required-namesrepository/trust-anchor-directoryrepository/check-certificate-revocation 属性的值计算软件包清单签名。

相应错误将发送到 stdout。如果发送任何错误,则 pkgrepo 命令将退出并显示非零返回代码。

该子命令仅可以与基于第 4 版文件系统的系统信息库一起使用。

–p publisher

仅针对指定发布者执行操作。如果没有指定发布者或者指定了特定值 all,则对所有发布者执行操作。可以多次指定此选项。

–d

执行完整的依赖性验证。此选项不能与 --disable dependency 一起使用。

–i ignored_dep_file

执行依赖性验证,但忽略文件中指定的依赖性。此选项不能与 --disable dependency 一起使用。

–-disable verification

禁用指定的验证。当前的允许值:dependency

–s repo_uri_or_path

对位于给定 URI 或文件系统路径的系统信息库进行操作。

pkgrepo fix [–v] [–p publisher]。。。 –s repo_uri_or_path

通过以下方法修复系统信息库的内容:首先验证系统信息库,然后将所有无效系统信息库内容移至系统信息库内的隔离目录。

如果发现系统信息库错误,将自动执行系统信息库重新生成操作。If any errors are found, a message is emitted to stdout showing which packages must be re-imported using pkgsend(1) or pkgrecv(1) in order to restore the repository contents.

该子命令仅可以与基于第 4 版文件系统的系统信息库一起使用。

–v

包括详细说明系统信息库验证过程中发现的错误的输出。

–p publisher

仅针对指定发布者执行操作。如果没有指定发布者或者指定了特定值 all,则对所有发布者执行操作。可以多次指定此选项。

–s repo_uri_or_path

对位于给定 URI 或文件系统路径的系统信息库进行操作。

pkgrepo diff [–vq] [–-strict] [–-parsable] [–p publisher]... –s first_repo_uri_or_path... [–-key ssl_key –-cert ssl_cert]... –s second_repo_uri_or_path... [–-key ssl_key –-cert ssl_cert]...

比较两个系统信息库并显示二者之间的差异。

输出文件开头的 - 符号仅指示在第一个系统信息库中找到的项目,而 + 符号仅指示在第二个系统信息库中找到的项目。开头没有符号说明它是通用项目。

–v

包括用于详述比较的输出(包括 per-fmri 输出)。

–q

执行静默比较;将不生成任何输出。

–-strict

比较上次修改目录的时间戳。这可用于确定一个系统信息库是否为另一个系统信息库的确切克隆。

–-parsable

以 JSON 格式生成可解析的输出。

–p publisher

仅针对指定发布者执行操作。如果没有指定发布者或者指定了特定值 all,则对所有发布者执行操作。可以多次指定此选项。

–s repo_uri_or_path

对位于给定 URI 或文件系统路径的系统信息库进行操作。

–-key ssl_key –-cert ssl_cert

使用 –-key 选项指定用于从 HTTPS 系统信息库进行软件包检索的客户机 SSL 密钥文件。使用 –-cert 选项指定用于从 HTTPS 系统信息库进行软件包检索的客户机 SSL 证书文件。可以多次指定此选项对。在第一个 –s 之后、第二个 –s 之前指定的对将应用于第一个系统信息库。在第二个 –s 之后指定的对将应用于第二个系统信息库。

pkgrepo help

显示用法消息。

pkgrepo version

Display a unique string that identifies the version of the pkg(7) system.由 version 操作生成的值不能进行排序,并且对于在不平等情况下的比较而言是不安全的。

示例

示例 1 创建软件包系统信息库
$ pkgrepo create /my/repository
示例 2 Display Information

显示发布者摘要以及系统信息库中软件包的数量。

$ pkgrepo info -s /my/repository
PUBLISHER   PACKAGES STATUS UPDATED
example.com 5        online 2011-07-22T18:09:09.769106Z
$ pkgrepo info -s http://pkg.oracle.com/solaris/release/
PUBLISHER PACKAGES STATUS UPDATED
solaris   3941     online 2010-11-12T19:24:25.967246Z
示例 3 重新生成目录和搜索数据

重新生成系统信息库的目录和搜索数据。

$ pkgrepo rebuild -s /my/repository
示例 4 刷新目录和搜索数据

刷新系统信息库的目录和搜索数据。

$ pkgrepo refresh -s /my/repository
$ pkgrepo refresh -s http://example.com/repository
示例 5 显示所有系统信息库属性
$ pkgrepo get -s /export/repoSolaris11
SECTION    PROPERTY    VALUE
publisher  prefix      solaris
repository description Local\ copy\ of\ the\ Oracle\ Solaris\ 11\ repository
repository name        Oracle\ Solaris\ 11
repository version     4
$ pkgrepo get -s http://pkg.oracle.com/solaris/release/
SECTION    PROPERTY VALUE
deployment content  s11_11-11
deployment pubdate  20111102T222051Z
publisher  prefix   solaris
repository version  4
示例 6 显示所有发布者属性
$ pkgrepo get -s http://pkg.oracle.com/solaris/release/ -p all
PUBLISHER SECTION    PROPERTY         VALUE
solaris   publisher  alias
solaris   publisher  prefix           solaris
solaris   repository collection-type  core
solaris   repository description      This\ repository\ serves\ the\ Oracle\
Solaris\ 11\ Package\ repository.
solaris   repository legal-uris       ()
solaris   repository mirrors          (http://pkg-cdn1.oracle.com/solaris.release/)
solaris   repository name             Oracle\ Solaris\ 11\ Package\ Repository
solaris   repository origins          ()
solaris   repository refresh-seconds
solaris   repository registration-uri ""
solaris   repository related-uris     ()
示例 7 设置缺省发布者
$ pkgrepo set -s /my/repository publisher/prefix=example.com
示例 8 设置发布者属性
$ pkgrepo set -s /my/repository -p example.com \
repository/origins=http://example.com/repository
示例 9 将新的发布者添加到系统信息库中
$ pkgrepo add-publisher -s /my/repository example.com

退出状态

将返回以下退出值:

0

命令成功(或者对于 pkgrepo diff 未遇到任何差异)。

1

出现错误。

2

指定的命令行选项无效。

3

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

4

没有进行更改时,无需执行任何操作。

5

针对 pkgrepo diff 找到了差异。

99

发生了意外的异常。

属性

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

ATTRIBUTE TYPE
ATTRIBUTE VALUE
可用性
package/pkg
接口稳定性
Uncommitted(未确定)

另请参见

pkg(1)pkgrecv(1)pkgsend(1)pkg.depotd(8)pkg(7)

在 Oracle Solaris 11.4 中创建软件包系统信息库

https://github.com/oracle/solaris-ips

附注

大多数 pkgrepo 操作不可用于软件包归档文件。A package archive is a file, typically with a .p5p extension, as described in the –a option in the pkgrecv(1) man page.软件包归档文件包含软件包但不包含系统信息库配置。但是,pkgrepo listpkgrepo infopkgrepo contents 命令适用于软件包归档文件。