跳过导航链接 | |
退出打印视图 | |
添加和更新 Oracle Solaris 11 软件包 Oracle Solaris 11 Information Library (简体中文) |
软件可以具有可选组件和互斥组件。可选组件的示例包括语言环境和文档。互斥组件的示例包括 SPARC 或 x86 和调试或非调试二进制文件。在 IPS 中,可选组件称为侧面,互斥组件称为变量。
侧面和变量是映像的特殊属性,无法在单个软件包上设置。要查看映像上设置的侧面和变量的当前值,请使用 pkg facet 和 pkg variant 命令。要修改映像上设置的侧面和变量的值,请使用 pkg change-facet 和 pkg change-variant 命令。请参见 pkg(1) 手册页和下面的示例。
侧面和变量指定为软件包操作中的标记。每个侧面和变量标记都有一个名称和值。单个操作可以具有多个侧面和变量标记。具有多个侧面和变量标记的组件有多种,例如供开发者使用的特定于体系结构的头文件,或仅用于 SPARC 全局区域的组件。
以下是变量标记的一个示例 variant.arch=sparc。以下是侧面标记的一个示例 facet.devel=true。引用侧面和变量时,通常不带前导字符串 facet. 和 variant.。
侧面为布尔型:只能设置为 true(启用)或 false(禁用)。缺省情况下,映像中的所有侧面都被视为 true。某一操作的侧面标记只能具有 true 值;其他值代表的行为不确定。映像上设置的侧面可以为完整侧面(如 doc.man)或模式(如 locale.*)。要禁用侧面名称空间的一部分,仅启用其中的几个侧面时,此方式很有用。例如,您可以禁用所有语言环境,然后仅启用一个或两个特定语言环境,如以下示例所示:
# pkg change-facet locale.*=false [output about packages being updated] # pkg change-facet locale.en_US=true [output about packages being updated]
大多数变量可以具有任意数量的值。例如,arch 变量可以设置为 i386、sparc、ppc、arm 或分发支持的任何体系结构。(Oracle Solaris 中仅使用 i386 和 sparc。)但 debug 变量例外。debug 变量只能设置为 true 或 false;其他值的行为不确定。如果文件操作同时具有非调试和调试版本,则必须针对这两个版本明确设置适用的 debug 变量,如以下示例所示:
file group=sys mode=0644 overlay=allow owner=root \ path=etc/motd pkg.csize=115 pkg.size=103 preserve=true \ variant.debug.osnet=true file group=sys mode=0644 overlay=allow owner=root \ path=etc/motd pkg.csize=68 pkg.size=48 preserve=true \ variant.debug.osnet=false
要安装使用变量的软件包,必须在映像上设置变量值。arch 和 zone 变量由创建映像和安装其初始内容的程序设置。缺省情况下,debug.* 变量在映像中设置为 false。
映像中设置的侧面和变量会影响是否安装特定操作。
始终会安装不带侧面或变量标记的操作。
仅当与侧面标记匹配的所有侧面或侧面模式在映像中都设置为 false 时,才不会安装带这些标记的操作。只要有任何侧面设置为 true 或未明确设置(true 为缺省值),就会安装该操作。
仅当所有变量标记的值与映像中设置的值相同时,才会安装带这些变量标记的操作。
如果侧面和变量都允许安装操作,则会安装带有这两种标记的操作。
您可以创建自己的侧面和变量标记。以下是 Oracle Solaris 中的常用标记。
|
以下列表描述了 Oracle Solaris 中使用的一小部分侧面标记:
facet.devel facet.doc facet.doc.html facet.doc.info facet.doc.man facet.doc.pdf facet.locale.de facet.locale.en_GB facet.locale.en_US facet.locale.fr facet.locale.ja_JP facet.locale.zh_CN
可以显示在当前映像上设置的变量和侧面的值,并且可以更改当前映像中的变量和侧面。更改变量和侧面可能会更新大量软件包,并且可能需要新的 BE。在进行任何更改之前可使用 -nv 查看将执行哪些更改。
可使用 pkg variant 命令显示设置的变量值。
/usr/bin/pkg variant [-H] [variant_spec ...]
$ pkg variant VARIANT VALUE variant.opensolaris.zone global variant.arch i386 $ pkg variant -H variant.arch variant.arch i386
可使用 pkg change-variant 命令更改变量的值。
/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_spec=instance ...
由于将影响大量软件包,因此以下命令将生成大量输出。请注意,缺省情况下不会创建新的 BE,而是创建备份 BE。有关何时创建 BE 的信息,请参见引导环境策略映像属性。
使用 -n 选项可在不进行实际更改的情况下查看不使用 -n 执行操作时将更改的内容。
# pkg change-variant -nv --accept variant.debug.*=true Packages to update: 831 Variants/Facets to change: 4 Estimated space available: 112.19 GB Estimated space to be consumed: 220.76 MB Create boot environment: No Create backup boot environment: Yes Rebuild boot archive: No Changed variants/facets: variant variant.debug.*: true facet facet.locale.en_US: None facet facet.locale.en: None facet facet.locale.*: None Changed packages: solaris ...
可使用 pkg facet 命令显示设置的侧面值。
/usr/bin/pkg facet [-H] [facet_spec ...]
$ pkg facet FACETS VALUE facet.locale.en_US True facet.locale.en True facet.locale.* False $ pkg facet -H facet.locale.* facet.locale.* False
可使用 pkg change-facet 命令更改侧面的值。
/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_spec=[True|False|None] ...
使用 -n 选项可在不进行实际更改的情况下查看不使用 -n 执行操作时将更改的内容。
如果侧面值设置为 None,将从当前映像中删除侧面说明。
由于将影响大量软件包,因此以下命令将生成大量输出。请注意,使用的额外空间以千兆字节而非兆字节为单位。该操作可能需要很长时间,并导致该映像和软件包系统信息库之间发生大量网络通信流量。请注意,缺省情况下不会创建新的 BE,而是创建备份 BE。有关何时创建 BE 的信息,请参见引导环境策略映像属性。
# pkg change-facet -nv facet.locale.*=true Packages to update: 831 Variants/Facets to change: 1 Estimated space available: 112.19 GB Estimated space to be consumed: 2.96 GB Create boot environment: No Create backup boot environment: Yes Rebuild boot archive: No Changed variants/facets: facet facet.locale.*: True Changed packages: solaris ...