usr/src/man/zh_CN/aimanifest.1m
changeset 1763 ca9c641c8ec7
parent 1405 4202007bf64b
equal deleted inserted replaced
1762:c521dff595bc 1763:ca9c641c8ec7
     1 '\" te
     1 '\" te
     2 .\" Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
     2 .\" Copyright (c) 2011, 2012, Oracle and/or its affiliates.All rights reserved.
     3 .TH aimanifest 1M "2011 年 7 月 22 日" "SunOS 5.11" "系统管理命令"
     3 .TH aimanifest 1M "2012 年 6 月 19 日" "SunOS 5.11" "系统管理命令"
     4 .SH 名称
     4 .SH 名称
     5 aimanifest \- 修改自动化安装程序 (Automated Installer, AI) 使用的 XML 文件
     5 aimanifest \- 修改自动化安装程序 (Automated Installer, AI) 所使用的 XML 文件
     6 .SH 用法概要
     6 .SH 用法概要
     7 .LP
     7 .LP
     8 .nf
     8 .nf
     9 /usr/bin/aimanifest [\fB-h\fR]
     9 /usr/bin/aimanifest [-h]
    10 .fi
    10 .fi
    11 
    11 
    12 .LP
    12 .LP
    13 .nf
    13 .nf
    14 aimanifest add [\fB-r\fR] \fIpath\fR \fIvalue\fR
    14 aimanifest add [-r] \fIpath\fR \fIvalue\fR
    15 .fi
    15 .fi
    16 
    16 
    17 .LP
    17 .LP
    18 .nf
    18 .nf
    19 aimanifest get [\fB-r\fR] \fIpath\fR
    19 aimanifest get [-r] \fIpath\fR
    20 .fi
    20 .fi
    21 
    21 
    22 .LP
    22 .LP
    23 .nf
    23 .nf
    24 aimanifest set [\fB-r\fR] \fIpath\fR \fIvalue\fR
    24 aimanifest set [-r] \fIpath\fR \fIvalue\fR
    25 .fi
    25 .fi
    26 
    26 
    27 .LP
    27 .LP
    28 .nf
    28 .nf
    29 aimanifest load [\fB-i\fR] \fIfilename\fR
    29 aimanifest load [-i] \fIfilename\fR
    30 .fi
    30 .fi
    31 
    31 
    32 .LP
    32 .LP
    33 .nf
    33 .nf
    34 aimanifest validate
    34 aimanifest validate
    35 .fi
    35 .fi
    36 
    36 
    37 .SH 描述
    37 .SH 描述
    38 .sp
    38 .sp
    39 .LP
    39 .LP
    40 \fBaimanifest\fR 命令可创建新的 XML 清单,或修改现有的 XML 清单。尽管包含对某个 DTD 定义的有效 \fB!DOCTYPE\fR 引用的任何 XML 文件都可以使用 \fBaimanifest\fR,但是,该命令的目标用途是创建自动化安装程序 (Automated Installer, AI) 使用的派生清单。有关 AI 派生清单的信息,请参见"\fI安装 Oracle Solaris 11 系统\fR"。
    40 \fBaimanifest\fR 命令可创建新的 XML 清单或修改现有的清单。虽然 \fBaimanifest\fR 可用于包含对 DTD 定义的有效 \fB!DOCTYPE\fR 引用的任何 XML 文件,但它的设计目的是创建供自动化安装程序 (Automated Installer, AI) 使用的派生清单。有关 AI 派生清单的信息,请参见《\fI安装 Oracle Solaris 11 系统\fR》。
    41 .sp
    41 .sp
    42 .LP
    42 .LP
    43 可以多次调用 \fBaimanifest\fR 命令来开发清单。\fBAIM_MANIFEST\fR 环境变量用于指定 \fBaimanifest\fR 要修改的清单的位置。必须设置 \fBAIM_MANIFEST\fR。每次结合 \fBload\fR、\fBadd\fR 或 \fBset\fR 子命令调用 \fB aimanifest\fR 命令时都会打开、修改和保存 \fBAIM_MANIFEST \fR 文件。
    43 可以多次调用 \fBaimanifest\fR 命令以开发清单。\fBAIM_MANIFEST\fR 环境变量指定供 \fBaimanifest\fR 进行修改的清单的位置。必须设置 \fBAIM_MANIFEST\fR。每次调用带有 \fBload\fR、\fBadd\fR 或 \fBset\fR 子命令的 \fBaimanifest\fR 命令时,都会打开、修改和保存 \fBAIM_MANIFEST\fR 文件。
    44 .sp
    44 .sp
    45 .LP
    45 .LP
    46 \fBaimanifest\fR 命令可以修改的 \fBAIM_MANIFEST\fR 文件至少必须同时包含下列两个片段:
    46 \fBaimanifest\fR 命令可以修改的最小 \fBAIM_MANIFEST\fR 文件必须包含以下两项:
    47 .RS +4
    47 .RS +4
    48 .TP
    48 .TP
    49 .ie t \(bu
    49 .ie t \(bu
    50 .el o
    50 .el o
    51 对某个 DTD 的 \fB!DOCTYPE\fR 引用,该引用对于所开发的 XML 清单应该有效。
    51 对适用于所开发的 XML 清单的 DTD 的 \fB!DOCTYPE\fR 引用。
    52 .RE
    52 .RE
    53 .RS +4
    53 .RS +4
    54 .TP
    54 .TP
    55 .ie t \(bu
    55 .ie t \(bu
    56 .el o
    56 .el o
    57 该清单的根元素。
    57 该清单的根元素。
    58 .RE
    58 .RE
    59 .sp
    59 .sp
    60 .LP
    60 .LP
    61 如果使用一个空的 \fBAIM_MANIFEST\fR 文件开始操作(就像 AI 执行派生的清单脚本时那样),那么,第一个 \fBaimanifest\fR 命令必须指定 \fBload\fR 子命令来加载最起码所需的 \fBAIM_MANIFEST\fR 文件。用于修改清单的后续 \fBaimanifest\fR 命令将使用该 DTD 来确定在开发清单中的哪个位置添加元素。
    61 如果开始时使用空 \fBAIM_MANIFEST\fR 文件,则在 AI 要执行派生清单脚本时,第一个 \fBaimanifest\fR 命令必须指定 \fBload\fR 子命令,以至少装入所需的最小 \fBAIM_MANIFEST\fR 文件。修改清单的后续 \fBaimanifest\fR 命令使用 DTD 来确定在正在开发的清单中的何处添加元素。
    62 .sp
    62 .sp
    63 .LP
    63 .LP
    64 如果既要在 \fBstdout\fR 和 \fBstderr\fR 中显示消息,又要在某个文件中保存错误消息和提示性消息,请将 \fBAIM_LOGFILE\fR 环境变量设置为某个日志文件位置。信息将附加在该日志文件中。该日志文件不被清除。
    64 除了将消息显示到 \fBstdout\fR 和 \fBstderr\fR 外,若要将错误消息和信息性消息保存到文件,请将 \fBAIM_LOGFILE\fR 环境变量设置为日志文件位置。信息将附加到该日志文件。该日志文件不会被清除。
    65 .SH 选项
    65 .SH 选项
    66 .sp
    66 .sp
    67 .LP
    67 .LP
    68 \fBaimanifest\fR 命令包括以下选项:
    68 \fBaimanifest\fR 命令包含以下选项:
    69 .sp
    69 .sp
    70 .ne 2
    70 .ne 2
    71 .mk
    71 .mk
    72 .na
    72 .na
    73 \fB\fB-h\fR,\fB--help\fR\fR
    73 \fB\fB-h\fR,\fB--help\fR\fR
    74 .ad
    74 .ad
    75 .RS 15n
    75 .sp .6
    76 .rt  
    76 .RS 4n
    77 显示用法帮助消息。
    77 显示用法帮助消息。
    78 .RE
    78 .RE
    79 
    79 
    80 .sp
    80 .sp
    81 .LP
    81 .LP
    82 \fBaimanifest\fR 命令的 \fBadd\fR、\fBget\fR 和 \fBset\fR 子命令包括以下选项:
    82 \fBaimanifest\fR 命令的 \fBadd\fR、\fBget\fR 和 \fBset\fR 子命令具有以下选项:
    83 .sp
    83 .sp
    84 .ne 2
    84 .ne 2
    85 .mk
    85 .mk
    86 .na
    86 .na
    87 \fB\fB-r\fR, \fB--return-path\fR\fR
    87 \fB\fB-r\fR, \fB--return-path\fR\fR
    88 .ad
    88 .ad
    89 .RS 21n
    89 .sp .6
    90 .rt  
    90 .RS 4n
    91 返回该 \fBaimanifest\fR 命令创建或对其执行操作的 XML 元素的路径。该返回路径是一个节点 ID 链。您可以保存这个返回路径,以便对 \fBaimanifest\fR 执行后续调用时使用。使用 \fB-r\fR 选项返回的路径,比使用 XML 元素和属性值指定路径更加可靠,因为在构建 AI 清单时,这些值可能会更改。有关 \fB- r\fR 选项返回的路径的更多信息,请参见"返回路径"部分。
    91 返回该 \fBaimanifest\fR 命令创建(或对其执行操作)的 XML 元素的路径。该返回路径是节点 ID 链。您可以保存该返回路径值,以在对 \fBaimanifest\fR 的后续调用中使用。与使用 XML 元素和属性值指定路径相比,使用 \fB-r\fR 选项返回的路径会更为可靠,因为值可能会随所构建的 AI 清单而更改。有关 \fB-r\fR 选项返回的路径的更多信息,请参见“返回路径”部分。
    92 .RE
    92 .RE
    93 
    93 
    94 .sp
    94 .sp
    95 .LP
    95 .LP
    96 \fBaimanifest\fR 命令的 \fBload\fR 子命令包括以下选项:
    96 \fBaimanifest\fR 命令的 \fBload\fR 子命令包含以下选项:
    97 .sp
    97 .sp
    98 .ne 2
    98 .ne 2
    99 .mk
    99 .mk
   100 .na
   100 .na
   101 \fB\fB-i\fR, \fB--incremental\fR\fR
   101 \fB\fB-i\fR, \fB--incremental\fR\fR
   102 .ad
   102 .ad
   103 .RS 21n
   103 .sp .6
   104 .rt  
   104 .RS 4n
   105 添加新数据之前不清除 \fBAIM_MANIFEST\fR 数据。
   105 在添加新数据之前,不清除 \fBAIM_MANIFEST\fR 数据。
   106 .RE
   106 .RE
   107 
   107 
   108 .SH 子命令
   108 .SH 子命令
   109 .sp
   109 .sp
   110 .LP
   110 .LP
   111 支持以下子命令:
   111 支持以下子命令:
   112 .sp
   112 .sp
   113 .ne 2
   113 .ne 2
   114 .mk
   114 .mk
   115 .na
   115 .na
   116 \fB\fBadd [\fB-r\fR | \fB--return-path\fR] \fI path\fR \fIvalue\fR\fR\fR
   116 \fB\fBaimanifest add [-r | --return-path] \fIpath \fR \fIvalue\fR\fR\fR
   117 .ad
   117 .ad
   118 .sp .6
   118 .sp .6
   119 .RS 4n
   119 .RS 4n
   120 向 XML 清单添加新元素。在 \fIpath\fR 上使用值 \fIvalue\fR 添加新元素。有关 \fIpath \fR 的更多信息,请参见"操作数"部分。如果 \fIpath\fR 以某个属性结尾 (\fB @\fIattr\fR\fR),则新元素将包含 \fI attr\fR 属性,\fIvalue\fR 是该属性的值。
   120 将新元素添加到 XML 清单。在 \fIpath\fR 上添加新元素,其值为 \fIvalue\fR。有关 \fIpath\fR 的更多信息,请参见“操作数”部分。如果 \fIpath\fR 以属性 (\fB@\fIattr\fR\fR) 结尾,则新元素具有 \fIattr\fR 属性,而 \fIvalue\fR 为该属性的值。
   121 .sp
   121 .sp
   122 除了检查 \fIpath\fR 中的父/子关系外,不执行任何验证。
   122 除了检查 \fIpath\fR 中的父/子关系外,不执行任何验证。
   123 .sp
   123 .sp
   124 \fB-r\fR 选项返回新增节点的路径。有关更多信息,请参见"返回路径"部分。
   124 \fB-r\fR 选项可返回新添加节点的路径。有关更多信息,请参见“返回路径”部分。
   125 .sp
   125 .sp
   126 如果父路径与 \fBAIM_MANIFEST\fR 文件中的某个元素匹配,则该路径只能与一个元素匹配。新元素创建为匹配父元素的子级。路径可以指定元素和属性值,以匹配唯一的父元素,如本部分的"示例 2:包含值的路径"中所示。
   126 如果父路径与 \fBAIM_MANIFEST\fR 文件中的元素匹配,则它必须仅与一个元素匹配。新元素将创建为匹配的父元素的子项。该路径可以指定元素和属性值以匹配唯一的父元素,如本部分中“示例 2:带有值的路径”所示。
   127 .sp
   127 .sp
   128 .LP
   128 .LP
   129 如果父路径与 \fBAIM_MANIFEST\fR 文件中的元素不匹配,则会根据需要创建新元素,并将新的子元素添加到新父级。根据以下规则,将所添加元素的路径与现存元素分割开来:
   129 如果父路径与 \fBAIM_MANIFEST\fR 文件中的元素不匹配,则根据需要创建新元素并将新子元素添加到新父元素中。根据以下规则,将已添加元素的路径从以前存在的元素中分割出来:
   130 .RS +4
   130 .RS +4
   131 .TP
   131 .TP
   132 .ie t \(bu
   132 .ie t \(bu
   133 .el o
   133 .el o
   134 分割发生在路径中用于指定某个值的所有组成部分之后。
   134 分割发生在路径中用于指定某个值的所有组成部分之后。
   139 .el o
   139 .el o
   140 分割发生在路径中用于指定某个值的所有组成部分之后,且在 DTD 允许多个带相同标记的相关元素的第一个位置处。
   140 分割发生在路径中用于指定某个值的所有组成部分之后,且在 DTD 允许多个带相同标记的相关元素的第一个位置处。
   141 .RE
   141 .RE
   142 .sp
   142 .sp
   143 .LP
   143 .LP
   144 使用此 XML 清单结构分析以下示例:
   144 使用该 XML 清单模式分析以下示例:
   145 .RS +4
   145 .RS +4
   146 .TP
   146 .TP
   147 .ie t \(bu
   147 .ie t \(bu
   148 .el o
   148 .el o
   149 清单以单个 A 节点开头。
   149 清单以单个 A 节点开始。
   150 .RE
   150 .RE
   151 .RS +4
   151 .RS +4
   152 .TP
   152 .TP
   153 .ie t \(bu
   153 .ie t \(bu
   154 .el o
   154 .el o
   155 A 节点只能包含一个 B 节点子级。
   155 A 节点只能有一个 B 节点子项。
   156 .RE
   156 .RE
   157 .RS +4
   157 .RS +4
   158 .TP
   158 .TP
   159 .ie t \(bu
   159 .ie t \(bu
   160 .el o
   160 .el o
   161 B 节点可以包含多个 C 节点子级。
   161 B 节点可以有多个 C 节点子项。
   162 .RE
   162 .RE
   163 .RS +4
   163 .RS +4
   164 .TP
   164 .TP
   165 .ie t \(bu
   165 .ie t \(bu
   166 .el o
   166 .el o
   167 C 节点可以包含多个 D 节点子级。
   167 C 节点可以有多个 D 节点子项。
   168 .RE
   168 .RE
   169 \fB示例 1:简单路径\fR。AI 清单包含一个 A 节点、一个 B 节点和一个 C 节点: \fB/A/B/C\fR. 使用 \fIpath\fR 值 \fB /A/B/C/D\fR 发出了 \fB add\fR 子命令。在此情况下,将会创建新的 C 节点,因为 C 节点是路径中可以包含具有相同标记的同级的首批节点。将为新的 C 节点添加新的 D 节点作为子级。生成的清单的结构为 \fB/A/B/{C,C/D}\fR。针对 D 的不同值发出相同的命令将会导致生成三个 C 节点: \fB/A/B/{C,C/D,C/D}\fR.
   169 \fB示例 1:简单路径\fR。AI 清单具有一个 A 节点、一个 B 节点和一个 C 节点:\fB/A/B/C\fR。在 \fIpath\fR 为 \fB/A/B/C/D\fR 的情况下发出 \fBadd\fR 子命令。在这种情况下,将创建新的 C 节点,因为 C 节点是路径中可以具有带相同标记的同级节点的第一个节点。将添加新 D 节点作为新 C 节点的子项。生成的清单结构为 \fB/A/B/{C,C/D}\fR。针对不同的 D 值发出同一命令将会产生三个 C 节点:\fB/A/B/{C,C/D,C/D}\fR。
   170 .sp
   170 .sp
   171 \fB示例 2:包含值的路径\fR。AI 清单包含一个 A 节点、一个 B 节点和两个 C 节点。其中只有一个 C 节点使用值 1,因此,清单的结构为 \fB/A/B/{C,C=1}\fR。使用 \fIpath \fR 值 \fB/A/B/C=1/D\fR 和 \fIvalue\fR 值 10 发出了 \fBadd\fR 子命令。在此情况下,将不会添加新的 C 节点,原因是为 C 指定值 1 将会标识一个唯一节点,并且无法在指定某个值的分支位置上或该位置的前面分割路径。可以分割该路径的第一个位置是 D。将新增一个值为 10 的 D 节点,作为值为 1 的 C 节点的子级。生成的清单的结构为 \fB/A/B/{C,C=1/D=10}\fR。使用值 20 针对 D 发出同一命令会导致生成 \fB /A/B/{C,C=1/{D=10,D=20}}\fR。
   171 \fB示例 2:带有值的路径\fR。AI 清单具有一个 A 节点、一个 B 节点和两个 C 节点。只有其中一个 C 节点的值为 1,因此清单的结构为 \fB/A/B/{C,C=1}\fR。在 \fIpath\fR 为 \fB/A/B/C=1/D\fR 和 \fIvalue\fR 为 10 的情况下发出 \fBadd\fR 子命令。在这种情况下,不会添加新的 C 节点,因为对 C 指定值 1 会标识唯一的节点,该路径不能在指定了值的分支上或其之前进行分割。该路径可以进行分割的第一个位置是 D 处。将添加值为 10 的新 D 节点作为值为 1 的 C 节点的子项。生成的清单结构为 \fB/A/B/{C,C=1/D=10}\fR。针对值为 20 的 D 发出同一命令将产生 \fB/A/B/{C,C=1/{D=10,D=20}}\fR。
   172 .RE
   172 .RE
   173 
   173 
   174 .sp
   174 .sp
   175 .ne 2
   175 .ne 2
   176 .mk
   176 .mk
   177 .na
   177 .na
   178 \fB\fBget [\fB-r\fR | \fB--return-path\fR] \fI path\fR\fR\fR
   178 \fB\fBaimanifest get [-r | --return-path] \fIpath \fR\fR\fR
   179 .ad
   179 .ad
   180 .sp .6
   180 .sp .6
   181 .RS 4n
   181 .RS 4n
   182 检索元素或属性值。对于空的元素或属性值,将显示空字符串 (\fB""\fR)。\fI path\fR 必须匹配某个现有的唯一元素或属性。有关 \fIpath\fR 的更多信息,请参见"操作数"部分。
   182 检索元素或属性值。对于空元素或属性值,将显示空字符串 (\fB""\fR)。\fIpath\fR 必须与唯一的现有元素或属性匹配。有关 \fIpath\fR 的更多信息,请参见“操作数”部分。
   183 .sp
   183 .sp
   184 \fB-r\fR 选项返回所访问节点的路径,作为第二个返回字符串。有关更多信息,请参见"返回路径"部分。
   184 \fB-r\fR 选项可返回已访问节点的路径作为第二个返回字符串。有关更多信息,请参见“返回路径”部分。
   185 .RE
   185 .RE
   186 
   186 
   187 .sp
   187 .sp
   188 .ne 2
   188 .ne 2
   189 .mk
   189 .mk
   190 .na
   190 .na
   191 \fB\fBset [\fB-r\fR | \fB--return-path\fR] \fI path\fR \fIvalue\fR\fR\fR
   191 \fB\fBaimanifest set [-r | --return-path] \fIpath \fR \fIvalue\fR\fR\fR
   192 .ad
   192 .ad
   193 .sp .6
   193 .sp .6
   194 .RS 4n
   194 .RS 4n
   195 更改现有元素或属性的值,或者为现有元素创建新属性。不执行验证。
   195 更改现有元素或属性的值,或为现有元素创建新属性。不执行任何验证。
   196 .sp
   196 .sp
   197 更改现有元素的值时,\fIpath\fR 必须匹配某个现有的唯一元素。如果该元素包含标记相同的同级,则使用元素值或属性或者目标元素的子元素来使路径保持唯一。请参见"路径操作数"部分。
   197 更改现有元素的值时,\fIpath\fR 必须与唯一的现有元素匹配。如果该元素具有带相同标记的同级元素,则使用元素值或属性,或目标元素的子元素来使路径唯一。请参见“Path 操作数”部分。
   198 .sp
   198 .sp
   199 设置某个属性的值时,该属性不需要存在,但该属性所属的元素必须存在。
   199 设置某个属性值时,该属性不需要存在,但该属性所属的元素必须存在。
   200 .sp
   200 .sp
   201 \fB-r\fR 选项返回所更改元素的路径。有关更多信息,请参见"返回路径"部分。
   201 \fB-r\fR 选项可返回已更改元素的路径。有关更多信息,请参见“返回路径”部分。
   202 .RE
   202 .RE
   203 
   203 
   204 .sp
   204 .sp
   205 .ne 2
   205 .ne 2
   206 .mk
   206 .mk
   207 .na
   207 .na
   208 \fB\fBload [\fB-i\fR | \fB--incremental\fR] \fI filename\fR\fR\fR
   208 \fB\fBaimanifest load [-i | --incremental] \fIfilename \fR\fR\fR
   209 .ad
   209 .ad
   210 .sp .6
   210 .sp .6
   211 .RS 4n
   211 .RS 4n
   212 从文件 \fI filename\fR 加载某个 XML 清单或部分 XML 清单。除了检查元素的父/子关系外,不执行任何验证。
   212 从文件 \fIfilename\fR 中装入 XML 清单或部分 XML 清单。除了检查元素的父/子关系外,不执行任何验证。
   213 .sp
   213 .sp
   214 如果未指定 \fB-i\fR 选项,则会覆盖任何现有的 XML 数据。\fBAIM_MANIFEST\fR 文件中的所有数据将替换为 \fIfilename\fR 文件的内容。\fIfilename \fR 文件必须包含对某个 DTD 的 \fB!DOCTYPE\fR 引用,以便后续的 \fBaimanifest\fR 命令能够修改此文件。
   214 如果未指定 \fB-i\fR 选项,将覆盖任何现有 XML 数据。\fBAIM_MANIFEST\fR 文件中的所有数据将替换为 \fIfilename\fR 文件的内容。\fIfilename\fR 文件必须包括对 DTD 的 \fB!DOCTYPE\fR 引用,以便后续 \fBaimanifest\fR 命令可以修改该文件。
   215 .sp
   215 .sp
   216 如果指定了 \fB-i\fR 选项,则添加新数据之前不清除 \fBAIM_MANIFEST \fR 数据。而是以递增方式在现有 XML 数据中插入新数据,或者将新数据与现有 XML 数据合并。\fBAIM_MANIFEST\fR 中的 \fB!DOCTYPE\fR 引用指定的 DTD 用于确定如何以及在何处合并 \fIfilename\fR 数据。如果缺少 \fB!DOCTYPE\fR 引用,将使用位于 \fB/usr/share/install/ai.dtd\fR 的 AI 清单 DTD。如果无法使用 DTD 对 \fIfilename\fR 中的数据进行核对,将返回非零错误状态。
   216 如果指定 \fB-i\fR 选项,则在添加新数据之前,不清除 \fBAIM_MANIFEST\fR 数据。而是,以增量方式插入新数据或将新数据与现有 XML 数据合并。\fBAIM_MANIFEST\fR 中 \fB!DOCTYPE\fR 引用指定的 DTD 用于确定合并 \fIfilename\fR 数据的方式和位置。如果缺少 \fB!DOCTYPE\fR 引用,将使用位于 \fB/usr/share/install/ai.dtd\fR 的 AI 清单 DTD。如果 \fIfilename\fR 中的数据无法与 DTD 协调,将返回非零错误状态。
   217 .sp
   217 .sp
   218 .LP
   218 .LP
   219 以下事项会影响新数据在 \fBAIM_MANIFEST\fR 清单中的插入位置:
   219 以下注意事项会影响将新数据插入到 \fBAIM_MANIFEST\fR 清单的位置:
   220 .RS +4
   220 .RS +4
   221 .TP
   221 .TP
   222 .ie t \(bu
   222 .ie t \(bu
   223 .el o
   223 .el o
   224 靠近 \fBAIM_MANIFEST\fR 数据路径开头的元素标记与 \fIfilename\fR 数据路径的匹配程度
   224 \fBAIM_MANIFEST\fR 数据路径和 \fIfilename\fR 数据路径开头附近元素的标记的匹配程度
   225 .RE
   225 .RE
   226 .RS +4
   226 .RS +4
   227 .TP
   227 .TP
   228 .ie t \(bu
   228 .ie t \(bu
   229 .el o
   229 .el o
   230 这些 \fBAIM_MANIFEST\fR 数据元素下面允许哪些子元素
   230 这些 \fBAIM_MANIFEST\fR 数据元素下所允许的子元素
   231 .RE
   231 .RE
   232 .RS +4
   232 .RS +4
   233 .TP
   233 .TP
   234 .ie t \(bu
   234 .ie t \(bu
   235 .el o
   235 .el o
   236 在哪个位置允许标记相同的同级元素
   236 允许带相同标记的同级元素的位置
   237 .RE
   237 .RE
   238 .RS +4
   238 .RS +4
   239 .TP
   239 .TP
   240 .ie t \(bu
   240 .ie t \(bu
   241 .el o
   241 .el o
   242 无子级 \fBAIM_MANIFEST\fR 数据节点位于哪个位置
   242 不带子项的 \fBAIM_MANIFEST\fR 数据节点所在的位置
   243 .RE
   243 .RE
   244 .sp
   244 .sp
   245 .LP
   245 .LP
   246 在处理 \fIfilename\fR 数据的每个元素时,如果下列所有情况属实,则一般而言,不会为 \fBAIM_MANIFEST\fR 数据中的该元素创建新节点。而是使用新数据替换某个现有节点。
   246 处理 \fIfilename\fR 数据的每个元素时,如果符合以下所有条件,则通常不会在 \fBAIM_MANIFEST\fR 数据中为此元素创建新节点。而是,使用新数据替换现有节点。
   247 .RS +4
   247 .RS +4
   248 .TP
   248 .TP
   249 .ie t \(bu
   249 .ie t \(bu
   250 .el o
   250 .el o
   251 两组数据都包含一个标记与位置相同的节点。
   251 两个数据集均包含具有相同标记和相同位置的节点。
   252 .RE
   252 .RE
   253 .RS +4
   253 .RS +4
   254 .TP
   254 .TP
   255 .ie t \(bu
   255 .ie t \(bu
   256 .el o
   256 .el o
   257 \fBAIM_MANIFEST\fR 中的 \fB!DOCTYPE\fR 引用指定的 DTD 不允许这两个节点作为标记相同的同级元素共同存在。
   257 \fBAIM_MANIFEST\fR 中 \fB!DOCTYPE\fR 引用指定的 DTD 不允许这两个节点作为带相同标记的同级元素一起存在。
   258 .RE
   258 .RE
   259 .RS +4
   259 .RS +4
   260 .TP
   260 .TP
   261 .ie t \(bu
   261 .ie t \(bu
   262 .el o
   262 .el o
   263 \fIfilename\fR 数据元素包含子级。
   263 \fIfilename\fR 数据元素具有子项。
   264 .RE
   264 .RE
   265 插入 \fIfilename\fR 中的某个元素后,将在尽量靠近 \fBAIM_MANIFEST\fR 数据根、开始创建新节点的位置完成分割。将在允许带相同标记的同级元素的第一个位置,或者 \fB AIM_MANIFEST\fR 中不存在带相同标记的元素的第一个相应位置,创建分割操作的第一个新节点。
   265 插入 \fIfilename\fR 中的元素时,将在开始创建新节点的位置进行分割,尽可能地接近 \fBAIM_MANIFEST\fR 数据根。分割的第一个新节点将在允许带相同标记的同级元素的最早点创建,或者在相应的最早点(如果 \fBAIM_MANIFEST\fR 中不存在带相同标记的元素)创建。
   266 .sp
   266 .sp
   267 .LP
   267 .LP
   268 使用此 XML 清单结构分析以下示例:
   268 使用该 XML 清单模式分析以下示例:
   269 .RS +4
   269 .RS +4
   270 .TP
   270 .TP
   271 .ie t \(bu
   271 .ie t \(bu
   272 .el o
   272 .el o
   273 清单以单个 A 节点开头。
   273 清单以单个 A 节点开始。
   274 .RE
   274 .RE
   275 .RS +4
   275 .RS +4
   276 .TP
   276 .TP
   277 .ie t \(bu
   277 .ie t \(bu
   278 .el o
   278 .el o
   279 A 节点只能包含一个 B 节点子级。
   279 A 节点只能有一个 B 节点子项。
   280 .RE
   280 .RE
   281 .RS +4
   281 .RS +4
   282 .TP
   282 .TP
   283 .ie t \(bu
   283 .ie t \(bu
   284 .el o
   284 .el o
   285 B 节点可以包含多个 C 节点子级。
   285 B 节点可以有多个 C 节点子项。
   286 .RE
   286 .RE
   287 .RS +4
   287 .RS +4
   288 .TP
   288 .TP
   289 .ie t \(bu
   289 .ie t \(bu
   290 .el o
   290 .el o
   291 B 节点只能包含一个 E 节点子级。
   291 B 节点只能有一个 E 节点子项。
   292 .RE
   292 .RE
   293 .sp
   293 .sp
   294 .LP
   294 .LP
   295 \fB示例 1:插入标记相同的元素\fR。如果 \fBAIM_MANIFEST\fR 的内容为 \fB/A/B/C1/D1\fR,\fIfilename\fR 的内容为 \fB/A/B/C2/D2\fR,则发出 \fBload -i\fR 命令后,\fBAIM_MANIFEST \fR 文件的内容为 \fB/A/B/{C1/D1,C2/D2}\fR。C 节点是第一个可以添加新节点的位置。\fIfilename \fR 数据中的 C 节点添加在 \fBAIM_MANIFEST \fR 数据中的现有 C 节点之后。如果两个 A 元素使用不同的值,或者两个 B 元素使用不同值,则 \fIfilename\fR 元素的值将替换 \fBAIM_MANIFEST\fR 元素的值。如果两个 A 元素使用不同的属性,或者两个 B 元素使用不同的属性,则会合并这些属性值。
   295 \fB示例 1:插入带相同标记的元素\fR。如果 \fBAIM_MANIFEST\fR 的内容为 \fB/A/B/C1/D1\fR,而 \fIfilename\fR 的内容为 \fB/A/B/C2/D2\fR,则在执行 \fBload -i\fR 命令后,\fBAIM_MANIFEST\fR 文件的内容为 \fB/A/B/{C1/D1,C2/D2}\fR。C 节点是可以添加新节点的第一个位置。\fIfilename\fR 数据中的 C 节点将添加到 \fBAIM_MANIFEST\fR 数据的现有 C 节点之后。如果两个 A 元素具有不同的值或者两个 B 元素具有不同的值,则 \fIfilename\fR 元素的值将替换 \fBAIM_MANIFEST\fR 元素的值。如果两个 A 元素具有不同的属性或者两个 B 元素具有不同的属性,则将合并属性值。
   296 .RS +4
   296 .RS +4
   297 .TP
   297 .TP
   298 .ie t \(bu
   298 .ie t \(bu
   299 .el o
   299 .el o
   300 同时在 \fBAIM_MANIFEST\fR 文件和 \fIfilename\fR 文件中存在的 A 与 B 的属性将使用合并文件中 \fI filename\fR 文件的值。
   300 同时存在于 \fBAIM_MANIFEST\fR 文件和 \fIfilename\fR 文件中的 A 和 B 的属性在合并文件中采用 \fIfilename\fR 文件中的值。
   301 .RE
   301 .RE
   302 .RS +4
   302 .RS +4
   303 .TP
   303 .TP
   304 .ie t \(bu
   304 .ie t \(bu
   305 .el o
   305 .el o
   306 在 \fBAIM_MANIFEST \fR 文件或 \fIfilename\fR 文件中存在(但不在这两个文件中同时存在)的 A 与 B 的属性全部保留在合并文件中。
   306 存在于 \fBAIM_MANIFEST\fR 文件或 \fIfilename\fR 文件但不同时存在于这两个文件中的 A 和 B 的属性将都保留在合并文件中。
   307 .RE
   307 .RE
   308 \fB示例 2:插入标记不同的元素\fR。如果 \fBAIM_MANIFEST\fR 的内容为 \fB/A/B/C/D\fR,\fIfilename\fR 的内容为 \fB/A/B/E/F\fR,则发出 \fBload -i\fR 命令后,\fBAIM_MANIFEST \fR 文件的内容为 \fB/A/B/{E/F,C/D}\fR。E 节点添加在 DTD 允许这种节点的第一个位置。元素 A 和 B 的值是 \fIfilename\fR 中的值,A 和 B 的属性已根据上述"示例 1"从 \fIfilename\fR 合并为 \fBAIM_MANIFEST \fR。
   308 \fB示例 2:插入带不同标记的元素\fR。如果 \fBAIM_MANIFEST\fR 的内容为 \fB/A/B/C/D\fR,而 \fIfilename\fR 的内容为 \fB/A/B/E/F\fR,则在执行 \fBload -i\fR 命令后,\fBAIM_MANIFEST\fR 文件的内容为 \fB/A/B/{E/F,C/D}\fR。E 节点将添加到 DTD 允许该节点的第一个位置处。元素 A 和 B 的值是 \fIfilename\fR 中的值,而 A 和 B 的属性将从 \fIfilename\fR 合并到 \fBAIM_MANIFEST\fR,如上面的示例 1 所述。
   309 .sp
   309 .sp
   310 有时,无法确定正确的合并位置。如果需要跟在待合并节点后面的某个同级尚未添加,则可能会发生此情况。为避免出现此问题,请按照 DTD 强制要求的顺序,将多个节点或子树添加到某个公用父节点。如果无法确定某个节点在其新同级中的适当位置,请将此节点放置在新同级列表的末尾。
   310 有时,无法确定正确的合并位置。如果尚未在要合并的节点后添加所需的同级节点,则可能会发生这种情况。要避免出现此问题,请以 DTD 要求的顺序将多个节点或子树添加到公共父节点。如果无法确定节点的正确位置,请将节点放置在它的新同级节点列表的末尾。
   311 .RE
   311 .RE
   312 
   312 
   313 .sp
   313 .sp
   314 .ne 2
   314 .ne 2
   315 .mk
   315 .mk
   316 .na
   316 .na
   317 \fB\fBvalidate\fR\fR
   317 \fB\fBaimanifest validate\fR\fR
   318 .ad
   318 .ad
   319 .sp .6
   319 .sp .6
   320 .RS 4n
   320 .RS 4n
   321 根据 \fB!DOCTYPE\fR 语句中引用的 DTD 验证 \fBAIM_MANIFEST\fR 清单。错误将在 \fBstderr\fR 中显示。如果验证失败,则返回非零状态。
   321 针对 \fB!DOCTYPE\fR 语句中引用的 DTD 验证 \fBAIM_MANIFEST\fR 清单。错误将输出到 \fBstderr\fR。如果验证失败,将返回非零状态。
   322 .RE
   322 .RE
   323 
   323 
   324 .SH 操作数
   324 .SH 操作数
   325 .sp
   325 .sp
   326 .LP
   326 .LP
   327 需要使用以下操作数。
   327 需要以下操作数。
   328 .SS "Filename 操作数"
   328 .SS "Filename 操作数"
   329 .sp
   329 .sp
   330 .LP
   330 .LP
   331 \fBload\fR 子命令需要使用 \fIfilename\fR 操作数,该操作数是要加载到 \fBAIM_MANIFEST \fR 清单的完整清单或部分清单的名称。
   331 \fBload\fR 子命令需要 \fIfilename\fR 操作数,它是要装入到 \fBAIM_MANIFEST\fR 清单的完整或部分清单的名称。
   332 .SS "Value 操作数"
   332 .SS "Value 操作数"
   333 .sp
   333 .sp
   334 .LP
   334 .LP
   335 \fBadd\fR 和 \fBset\fR 子命令需要使用 \fIvalue\fR 操作数。\fIvalue\fR 操作数是 \fIpath\fR 操作数指定的元素或属性的有效值。
   335 \fBadd\fR 和 \fBset\fR 子命令需要 \fIvalue\fR 操作数。\fIvalue\fR 操作数是 \fIpath\fR 操作数指定的元素或属性的有效值。
   336 .SS "Path 操作数"
   336 .SS "Path 操作数"
   337 .sp
   337 .sp
   338 .LP
   338 .LP
   339 \fBaimanifest\fR 命令的 \fBadd\fR、\fBget\fR 和 \fBset\fR 子命令需要使用 \fIpath\fR 操作数。该路径定义了由元素和属性组成的 XML 分层结构中的某个节点。
   339 \fBaimanifest\fR 命令的 \fBadd\fR、\fBget\fR 和 \fBset\fR 子命令需要 \fIpath\fR 操作数。路径定义元素和属性的 XML 分层结构中的节点。
   340 .sp
   340 .sp
   341 .LP
   341 .LP
   342 XML 元素分层结构又称为 XML 树。在以下部分 AI 清单中,\fBauto_install\fR 元素是树根,\fBai_instance\fR 和 \fBsoftware \fR 元素是分枝,或子树的根。
   342 XML 元素分层结构也称为 XML 树。在以下部分 AI 清单中,\fBauto_install\fR 元素是树的根,\fBai_instance\fR 和 \fBsoftware\fR 元素是分支或子树的根。
   343 .sp
   343 .sp
   344 .in +2
   344 .in +2
   345 .nf
   345 .nf
   346 <auto_install>
   346 <auto_install>
   347   <ai_instance>
   347   <ai_instance>
   351 .fi
   351 .fi
   352 .in -2
   352 .in -2
   353 
   353 
   354 .sp
   354 .sp
   355 .LP
   355 .LP
   356 在 \fBaimanifest\fR 路径语法中,使用正斜杠字符 (/) 表示树结构中的分枝。在当前示例中,\fBsoftware\fR 元素的路径为 \fB/auto_install/ai_instance/software \fR。
   356 在 \fBaimanifest\fR 路径语法中,使用正斜杠字符 (/) 表示树结构中的分支。在当前示例中,\fBsoftware\fR 元素的路径为 \fB/auto_install/ai_instance/software\fR。
   357 .sp
   357 .sp
   358 .LP
   358 .LP
   359 属性与某个元素绑定。在 \fBaimanifest\fR 路径语法中,使用 @ 符号标识属性名称。\fBsoftware\fR 元素的 \fB type\fR 属性的路径为 \fB/auto_install/ai_instance/software@type \fR。
   359 属性将绑定到一个元素。在 \fBaimanifest\fR 路径语法中,使用 at 符号 (@) 标识属性名称。\fBsoftware\fR 元素的 \fBtype\fR 属性的路径为 \fB/auto_install/ai_instance/software@type\fR。
   360 .sp
   360 .sp
   361 .LP
   361 .LP
   362 \fBaimanifest\fR\fIpath\fR 操作数必须对应于单个元素。请根据需要包含元素和属性值,以使路径保持唯一。例如,要为以下部分 AI 清单中定义的第二个分片指定大小,可以使用路径 \fB/auto_install/ai_instance/target/disk/slice[@name="4"]/size@val\fR 来指明要为哪个分片指定大小。
   362 \fBaimanifest\fR \fIpath\fR 操作数必须对应于单个元素。根据需要包括元素和属性值以使路径唯一。例如,要指定以下部分 AI 清单中定义的第二个分片的大小,您可以使用路径 \fB/auto_install/ai_instance/target/disk/slice[@name="4"]/size@val\fR 来标识要为其指定大小的分片。
   363 .sp
   363 .sp
   364 .in +2
   364 .in +2
   365 .nf
   365 .nf
   366 <auto_install>
   366 <auto_install>
   367   <ai_instance>
   367   <ai_instance>
   376 .fi
   376 .fi
   377 .in -2
   377 .in -2
   378 
   378 
   379 .sp
   379 .sp
   380 .LP
   380 .LP
   381 允许相对路径。以上段落中显示的 \fBslice\fR 路径在指定时可以使用 \fBai_instance\fR、\fB target\fR、\fBdisk\fR 或 \fBslice\fR 开头,因为只有一个 \fBslice\fR 使用了 \fBname\fR 属性值 4。例如,可以使用路径 \fBslice[@name="4"]/size@val\fR。
   381 允许使用相对路径。可以从 \fBai_instance\fR、\fBtarget\fR、\fBdisk\fR 或 \fBslice\fR 开始指定上一段落中显示的 \fBslice\fR 路径,因为只有一个 \fBname\fR 属性值为 4 的 \fBslice\fR。例如,您可以使用路径 \fBslice[@name="4"]/size@val\fR。
   382 .sp
   382 .sp
   383 .LP
   383 .LP
   384 如果 \fIpath\fR 中的某个 \fIvalue\fR 包含正斜杠字符,则必须将该值括在单引号或双引号中,例如 \fB/name="pkg:/entire"\fR。
   384 如果 \fIpath\fR 内的 \fIvalue\fR 包含正斜杠字符,则该值必须用单引号或双引号括起来,如 \fB/name="pkg:/entire"\fR 所示。
   385 .sp
   385 .sp
   386 .LP
   386 .LP
   387 如果 \fBaimanifest\fR 调用发生在 shell 脚本中,包含引号的值可能需要额外的特殊处理。在 shell 脚本中,可能需要使用前导反斜杠字符 (\e) 对 \fBaimanifest\fR 路径值中的引号进行转义,使得 shell 不会删除或解释这些引号。检查使用的 shell 规则。以下示例显示了某个 \fBksh93\fR 脚本中的一个包含正斜杠字符的值:
   387 如果 \fBaimanifest\fR 调用位于 shell 脚本中,则包含引号的值可能需要进行其他特殊处理。在 shell 脚本中,\fBaimanifest\fR 路径值中的引号可能需要用前导反斜杠字符 (\e) 进行转义,以便 shell 不会删除或解释引号。检查要使用的 shell 规则。以下示例显示了 \fBksh93\fR 脚本中带有正斜杠字符的值:
   388 .sp
   388 .sp
   389 .in +2
   389 .in +2
   390 .nf
   390 .nf
   391 /usr/bin/aimanifest get software_data[name=\e"pkg:/entire\e"]@action
   391 /usr/bin/aimanifest get software_data[name=\e"pkg:/entire\e"]@action
   392 .fi
   392 .fi
   393 .in -2
   393 .in -2
   394 
   394 
   395 .sp
   395 .sp
   396 .LP
   396 .LP
   397 本手册页中的大多数示例都省略了反斜杠转义字符,因为本手册页假定 \fBaimanifest\fR 不是在脚本或特定 shell 中调用的。有关 AI 派生的清单脚本的信息,请参见"\fI安装 Oracle Solaris 11 系统\fR"。
   397 本手册页中的大多数示例都省略了反斜杠转义字符,因为本手册页假定不在脚本或特定 shell 中调用 \fBaimanifest\fR。有关 AI 派生清单脚本的信息,请参见《\fI安装 Oracle Solaris 11 系统\fR》。
   398 .sp
   398 .sp
   399 .LP
   399 .LP
   400 下列格式的分支显示了如何构造某个元素或元素属性的路径。
   400 以下分支格式说明了如何构造元素或元素属性的路径。
   401 .sp
   401 .sp
   402 .ne 2
   402 .ne 2
   403 .mk
   403 .mk
   404 .na
   404 .na
   405 \fB\fB/A\fR\fR
   405 \fB\fB/A\fR\fR
   406 .ad
   406 .ad
   407 .sp .6
   407 .sp .6
   408 .RS 4n
   408 .RS 4n
   409 \fBA\fR 是元素的标记名称,例如 \fB /auto_install\fR。此分支规范又称为简单分支。仅包含简单分支的路径称为简单路径。
   409 \fBA\fR 是元素的标记名称,如 \fB/auto_install\fR 所示。该分支规范也称为简单分支。只具有简单分支的路径称为简单路径。
   410 .RE
   410 .RE
   411 
   411 
   412 .sp
   412 .sp
   413 .ne 2
   413 .ne 2
   414 .mk
   414 .mk
   415 .na
   415 .na
   416 \fB\fB/A=\fIvalue\fR\fR\fR
   416 \fB\fB/A=\fIvalue\fR\fR\fR
   417 .ad
   417 .ad
   418 .sp .6
   418 .sp .6
   419 .RS 4n
   419 .RS 4n
   420 \fBA\fR 是元素的标记名称,\fI value\fR 是该元素的值,例如 \fB/name="pkg:/entire"\fR。
   420 \fBA\fR 是元素的标记名称,\fIvalue\fR 是该元素的值,如 \fB/name="pkg:/entire"\fR 所示。
   421 .RE
   421 .RE
   422 
   422 
   423 .sp
   423 .sp
   424 .ne 2
   424 .ne 2
   425 .mk
   425 .mk
   426 .na
   426 .na
   427 \fB\fB/A[B/C=\fIvalue\fR]\fR\fR
   427 \fB\fB/A[B/C=\fIvalue\fR]\fR\fR
   428 .ad
   428 .ad
   429 .sp .6
   429 .sp .6
   430 .RS 4n
   430 .RS 4n
   431 \fBA\fR 是元素,\fBB\fR 是作为 \fBA\fR 子级的元素,\fBC\fR 是作为 \fBB\fR 子级的元素,\fIvalue\fR 是 \fBC\fR 元素的值。此路径格式指定了 \fB A\fR 元素,该元素包含值为 \fIvalue\fR 的孙级元素 \fBC\fR。例如,如果您的 AI 清单包含多个 software 部分,则可以使用此格式对用于安装软件包 \fBpkg:/entire\fR 的 software 部分进行操作,如以下路径所示:
   431 \fBA\fR 是一个元素,\fBB\fR 是 \fBA\fR 的子元素,\fBC\fR 是 \fBB\fR 的子元素,\fIvalue\fR 是 \fBC\fR 元素的值。该路径格式指定的 \fBA\fR 元素具有值为 \fIvalue\fR 的孙元素 \fBC\fR。例如,如果 AI 清单具有多个软件部分,您可以使用此格式对安装软件包 \fBpkg:/entire\fR 的软件部分进行操作,如以下路径所示:
   432 .sp
   432 .sp
   433 .in +2
   433 .in +2
   434 .nf
   434 .nf
   435 software[software_data/name="pkg:/entire"]
   435 software[software_data/name="pkg:/entire"]
   436 .fi
   436 .fi
   444 .na
   444 .na
   445 \fB\fB/A[@Aattr=\fIvalue\fR]\fR\fR
   445 \fB\fB/A[@Aattr=\fIvalue\fR]\fR\fR
   446 .ad
   446 .ad
   447 .sp .6
   447 .sp .6
   448 .RS 4n
   448 .RS 4n
   449 \fBA\fR 是元素,\fBAattr\fR 是 \fBA\fR 的属性,\fIvalue\fR 是 \fBAattr\fR 属性的值。此路径格式指定了 \fBA\fR 元素,该元素包含值为 \fIvalue\fR 的属性 \fBAattr\fR。例如,如果您的 AI 清单定义了多个分片,则可以使用此格式对 \fBname\fR 值为 4 的分片进行操作,例如 \fBslice[@name="4"]\fR
   449 \fBA\fR 是一个元素,\fBAattr\fR 是 \fBA\fR 的属性,而 \fIvalue\fR 是 \fBAattr\fR 属性的值。该路径格式指定的 \fBA\fR 元素具有值为 \fIvalue\fR 的属性 \fBAattr\fR。例如,如果 AI 清单定义了多个分片,您可以使用此格式对 \fBname\fR 值为 4 的分片进行操作,如 \fBslice[@name="4"]\fR 所示。
   450 .RE
   450 .RE
   451 
   451 
   452 .sp
   452 .sp
   453 .ne 2
   453 .ne 2
   454 .mk
   454 .mk
   455 .na
   455 .na
   456 \fB\fB/A[B/C@Cattr=\fIvalue\fR]\fR\fR
   456 \fB\fB/A[B/C@Cattr=\fIvalue\fR]\fR\fR
   457 .ad
   457 .ad
   458 .sp .6
   458 .sp .6
   459 .RS 4n
   459 .RS 4n
   460 \fBA\fR 是元素,\fBB\fR 是 \fBA\fR 的子级,\fBC\fR 是 \fBB\fR 的子级,\fB Cattr\fR 是 \fBC\fR 的属性,\fIvalue\fR 是 \fBCattr\fR 属性的值。此路径格式指定了 \fBA\fR 元素,该元素包含一个孙级元素 \fBC\fR,该孙级元素的 \fBCattr\fR 属性值为 \fIvalue\fR。例如,如果您的 AI 清单包含多个 software 部分,则可以使用此格式对包含某个 publisher 部分(其 name 值为 \fBsolaris\fR)的 software 部分进行操作,例如,使用路径 \fB software[source/publisher@name="solaris"] \fR。
   460 \fBA\fR 是一个元素,\fBB\fR 是 \fBA\fR 的子元素,\fBC\fR 是 \fBB\fR 的子元素,\fBCattr\fR 是 \fBC\fR 的属性,而 \fIvalue\fR 是 \fBCattr\fR 属性的值。该路径格式指定的 \fBA\fR 元素具有孙元素 \fBC\fR,C 元素具有值为 \fIvalue\fR 的属性 \fBCattr\fR。例如,如果您的 AI 清单包含多个 software 部分,则可以使用此格式对包含某个 publisher 部分(其 name 值为 \fBsolaris\fR)的 software 部分进行操作,例如,使用路径 \fB software[source/publisher@name="solaris"] \fR。
   461 .RE
   461 .RE
   462 
   462 
   463 .sp
   463 .sp
   464 .ne 2
   464 .ne 2
   465 .mk
   465 .mk
   466 .na
   466 .na
   467 \fB\fB/A[1]\fR\fR
   467 \fB\fB/A[1]\fR\fR
   468 .ad
   468 .ad
   469 .sp .6
   469 .sp .6
   470 .RS 4n
   470 .RS 4n
   471 \fB/A[1]\fR 指定清单中某个 \fB A\fR 元素的第一个实例。例如,如果您的 AI 清单包含多个 software 部分,则可以使用此格式对第二个 software 部分进行操作,例如 \fB/auto_install[1]/ai_instance[1]/software[2] \fR。
   471 \fB/A[1]\fR 指定清单中 \fBA\fR 元素的第一个实例。例如,如果 AI 清单具有多个软件部分,您可以使用此格式对第二个软件部分进行操作,如 \fB/auto_install[1]/ai_instance[1]/software[2]\fR 所示。
   472 .sp
   472 .sp
   473 这是 \fB-r\fR 选项返回的路径格式。请参见"返回路径"部分。
   473 这是由 \fB-r\fR 选项返回的路径格式。请参见“返回路径”部分。
   474 .RE
   474 .RE
   475 
   475 
   476 .sp
   476 .sp
   477 .ne 2
   477 .ne 2
   478 .mk
   478 .mk
   479 .na
   479 .na
   480 \fB\fB/A@Aattr\fR\fR
   480 \fB\fB/A@Aattr\fR\fR
   481 .ad
   481 .ad
   482 .sp .6
   482 .sp .6
   483 .RS 4n
   483 .RS 4n
   484 此路径指定了 \fBA\fR 元素的 \fBAattr\fR 属性。此路径没有指定 \fBA\fR 元素,而是指定了 \fBAattr\fR 属性。使用此格式可以设置或获取 \fBAattr\fR 属性。
   484 该路径指定了 \fBA\fR 元素的 \fBAattr\fR 属性。该路径不指定 \fBA\fR 元素,而是指定 \fBAattr\fR 属性。可使用此格式设置或获取 \fBAattr\fR 属性。
   485 .RE
   485 .RE
   486 
   486 
   487 .sp
   487 .sp
   488 .ne 2
   488 .ne 2
   489 .mk
   489 .mk
   490 .na
   490 .na
   491 \fB\fB/A[B/C=\fIvalue\fR]@Aattr\fR\fR
   491 \fB\fB/A[B/C=\fIvalue\fR]@Aattr\fR\fR
   492 .ad
   492 .ad
   493 .sp .6
   493 .sp .6
   494 .RS 4n
   494 .RS 4n
   495 此路径格式指定了 \fBA\fR 元素的 \fBAattr\fR 属性,该元素包含值为 \fIvalue\fR 的孙级元素 \fBC\fR。
   495 该路径指定了 \fBA\fR 元素的 \fBAattr\fR 属性,A 元素具有值为 \fIvalue\fR 的孙元素 \fBC\fR。
   496 .RE
   496 .RE
   497 
   497 
   498 .sp
   498 .sp
   499 .ne 2
   499 .ne 2
   500 .mk
   500 .mk
   501 .na
   501 .na
   502 \fB\fB/A[B/C@Cattr=\fIvalue\fR]@Aattr \fR\fR
   502 \fB\fB/A[B/C@Cattr=\fIvalue\fR]@Aattr \fR\fR
   503 .ad
   503 .ad
   504 .sp .6
   504 .sp .6
   505 .RS 4n
   505 .RS 4n
   506 此路径格式指定了 \fBA\fR 元素的 \fBAattr\fR 属性,该元素包含孙级元素 \fBC\fR,该孙级元素的 \fBCattr\fR 属性值为 \fIvalue\fR。
   506 该路径指定了 \fBA\fR 元素的 \fBAattr\fR 属性,A 元素具孙元素 \fBC\fR,C 元素具有值为 \fIvalue\fR 的属性 \fBCattr\fR。
   507 .RE
   507 .RE
   508 
   508 
   509 .sp
   509 .sp
   510 .ne 2
   510 .ne 2
   511 .mk
   511 .mk
   512 .na
   512 .na
   513 \fB\fB/A/B=\fIvalue\fR@Battr\fR\fR
   513 \fB\fB/A/B=\fIvalue\fR@Battr\fR\fR
   514 .ad
   514 .ad
   515 .sp .6
   515 .sp .6
   516 .RS 4n
   516 .RS 4n
   517 此路径指定了值为 \fIvalue\fR 的 \fBB\fR 元素的 \fBBattr\fR 属性。\fBB\fR 元素是 \fBA\fR 元素的子级。
   517 该路径指定了值为 \fIvalue\fR 的 \fBB\fR 元素的 \fBBattr\fR 属性。\fBB\fR 元素是 \fBA\fR 元素的子元素。
   518 .RE
   518 .RE
   519 
   519 
   520 .SH 返回路径
   520 .SH 返回路径
   521 .sp
   521 .sp
   522 .LP
   522 .LP
   523 使用 \fB-r\fR 选项,\fBadd\fR、\fBget \fR 和 \fBset\fR 子命令将返回子命令创建或访问的元素的地址。这个返回的地址采用了节点 ID 链的格式。可以使用这个返回的地址来再次访问相同的元素,即使与该元素关联的值已发生更改。
   523 通过 \fB-r\fR 选项,\fBadd\fR、\fBget\fR 和 \fBset\fR 子命令可返回由子命令创建或访问的元素地址。该返回地址采用节点 ID 链的格式。该返回地址可用于再次访问同一元素,即使与该元素关联的值已更改。
   524 .sp
   524 .sp
   525 .LP
   525 .LP
   526 下列示例表明,使用 \fB-r\fR 选项返回的地址,比使用用于指定元素和属性值的路径可能要容易得多。从以下节点树开始:
   526 以下示例说明,由 \fB-r\fR 选项返回的地址可能比指定元素和属性值的路径更易于使用。从以下节点树开始:
   527 .sp
   527 .sp
   528 .in +2
   528 .in +2
   529 .nf
   529 .nf
   530         auto_install
   530         auto_install
   531              |
   531              |
   542 .fi
   542 .fi
   543 .in -2
   543 .in -2
   544 
   544 
   545 .sp
   545 .sp
   546 .LP
   546 .LP
   547 添加一个 \fBname\fR 属性值为 \fBdata2\fR、\fBname_type\fR 属性值为 \fBvolid\fR 的新 \fBdisk\fR 节点:
   547 添加具有 \fBname\fR 属性值 \fBdata2\fR 和 \fBname_type\fR 属性值 \fBvolid\fR 的新 \fBdisk\fR 节点:
   548 .sp
   548 .sp
   549 .in +2
   549 .in +2
   550 .nf
   550 .nf
   551         auto_install
   551         auto_install
   552              |
   552              |
   564 .fi
   564 .fi
   565 .in -2
   565 .in -2
   566 
   566 
   567 .sp
   567 .sp
   568 .LP
   568 .LP
   569 使用一条命令就能轻松添加一个包含单个属性的新 \fBdisk_name\fR 元素。要添加第二个和第三个属性,必须指定要更改的 \fBdisk_name\fR 元素。比较用于多次访问同一节点的以下两种方法。
   569 可以使用单个命令轻松添加具有一个属性的新 \fBdisk_name\fR 元素。要添加第二个和第三个属性,您必须指定要更改的 \fBdisk_name\fR 元素。比较以下用于多次访问同一节点的两种方法。
   570 .SS "通过使用值来指定路径"
   570 .SS "使用值指定路径"
   571 .sp
   571 .sp
   572 .LP
   572 .LP
   573 本示例中的命令通过使用值来指定路径。请注意,您必须在第一个命令中分配唯一值,以便能够使用该值在后续命令中指定唯一路径。如果值发生变化,该方法可能会产生错误的结果。
   573 此示例中的命令使用值指定路径。请注意,您必须在第一个命令中分配一个唯一值,以便可以使用该值在后续命令中指定唯一路径。如果值已更改,该方法可能会产生错误的结果。
   574 .sp
   574 .sp
   575 .in +2
   575 .in +2
   576 .nf
   576 .nf
   577 $ \fBaimanifest add target/disk/disk_name@name data2\fR
   577 $ \fBaimanifest add target/disk/disk_name@name data2\fR
   578 $ \fBaimanifest set \e\fR
   578 $ \fBaimanifest set \e\fR
   581 > \fBtarget/disk[disk_name@name=data2]@whole_disk true\fR
   581 > \fBtarget/disk[disk_name@name=data2]@whole_disk true\fR
   582 .fi
   582 .fi
   583 .in -2
   583 .in -2
   584 .sp
   584 .sp
   585 
   585 
   586 .SS "通过使用返回路径来指定路径"
   586 .SS "使用返回路径指定路径"
   587 .sp
   587 .sp
   588 .LP
   588 .LP
   589 多次访问同一节点的最可靠方法是将路径保存到新的 \fBdisk_name\fR 元素,然后使用这个保存的路径进行后续访问。
   589 多次访问同一节点的最可靠方法是将路径保存到新 \fBdisk_name\fR 元素,然后使用该保存路径进行后续访问。
   590 .sp
   590 .sp
   591 .in +2
   591 .in +2
   592 .nf
   592 .nf
   593 $ \fBNewDisk=$(aimanifest add -r target/disk@whole_disk true)\fR
   593 $ \fBNewDisk=$(aimanifest add -r target/disk@whole_disk true)\fR
   594 $ \fBaimanifest add ${NewDisk}/disk_name@name data2\fR
   594 $ \fBaimanifest add ${NewDisk}/disk_name@name data2\fR
   597 .in -2
   597 .in -2
   598 .sp
   598 .sp
   599 
   599 
   600 .sp
   600 .sp
   601 .LP
   601 .LP
   602 通过 \fB- r\fR 选项返回到 \fB$NewDisk\fR 的路径以 ID 形式表示节点,并且未赋值:
   602 通过 \fB-r\fR 选项返回到 \fB$NewDisk\fR 的路径采用 ID 来表示节点,并且没有值:
   603 .sp
   603 .sp
   604 .in +2
   604 .in +2
   605 .nf
   605 .nf
   606 $ \fBaimanifest add -r target/disk/@whole_disk true\fR
   606 $ \fBaimanifest add -r target/disk/@whole_disk true\fR
   607 /auto_install[1]/ai_instance[1]/target[1]/disk[2]
   607 /auto_install[1]/ai_instance[1]/target[1]/disk[2]
   610 .sp
   610 .sp
   611 
   611 
   612 .SH 示例
   612 .SH 示例
   613 .sp
   613 .sp
   614 .LP
   614 .LP
   615 要尝试演示这些示例,需要设置 \fBAIM_MANIFEST\fR。
   615 要尝试执行这些示例,您需要设置 \fBAIM_MANIFEST\fR。
   616 .sp
   616 .sp
   617 .in +2
   617 .in +2
   618 .nf
   618 .nf
   619 $ \fBexport AIM_MANIFEST=/tmp/aimtest.xml\fR
   619 $ \fBexport AIM_MANIFEST=/tmp/aimtest.xml\fR
   620 .fi
   620 .fi
   621 .in -2
   621 .in -2
   622 .sp
   622 .sp
   623 
   623 
   624 .sp
   624 .sp
   625 .LP
   625 .LP
   626 \fBaimanifest\fR 命令可以修改的 \fBAIM_MANIFEST\fR 文件至少必须同时包含下列两个片段:
   626 \fBaimanifest\fR 命令可以修改的最小 \fBAIM_MANIFEST\fR 文件必须包含以下两项:
   627 .RS +4
   627 .RS +4
   628 .TP
   628 .TP
   629 .ie t \(bu
   629 .ie t \(bu
   630 .el o
   630 .el o
   631 对某个 DTD 的 \fB!DOCTYPE\fR 引用,该引用对于所开发的 XML 清单应该有效。
   631 对适用于所开发的 XML 清单的 DTD 的 \fB!DOCTYPE\fR 引用。
   632 .RE
   632 .RE
   633 .RS +4
   633 .RS +4
   634 .TP
   634 .TP
   635 .ie t \(bu
   635 .ie t \(bu
   636 .el o
   636 .el o
   637 该清单的根元素。
   637 该清单的根元素。
   638 .RE
   638 .RE
   639 .sp
   639 .sp
   640 .LP
   640 .LP
   641 以下示例显示了某个 AI 清单最起码所需的 \fBAIM_MANIFEST\fR 清单文件:
   641 以下示例显示 AI 清单的最小 \fBAIM_MANIFEST\fR 清单文件:
   642 .sp
   642 .sp
   643 .in +2
   643 .in +2
   644 .nf
   644 .nf
   645 <!DOCTYPE auto_install SYSTEM "file:///usr/share/install/ai.dtd">
   645 <!DOCTYPE auto_install SYSTEM "file:///usr/share/install/ai.dtd">
   646 <auto_install/>
   646 <auto_install/>
   647 .fi
   647 .fi
   648 .in -2
   648 .in -2
   649 
   649 
   650 .sp
   650 .sp
   651 .LP
   651 .LP
   652 通常,您会在对现有有效 AI 清单执行操作的派生清单脚本中使用 \fBaimanifest\fR 命令。要尝试演示这些示例,您可以复制 \fB/usr/share/auto_install/manifest/default.xml \fR,然后定义 \fBAIM_MANIFEST\fR 以引用该副本。确保该副本可写。
   652 通常,您将在派生清单脚本中使用 \fBaimanifest\fR 命令,对现有的有效 AI 清单进行操作。要尝试执行这些示例,您可以复制 \fB/usr/share/auto_install/manifest/default.xml\fR,然后定义 \fBAIM_MANIFEST\fR 以引用该副本。确保该副本可写。
   653 .LP
   653 .LP
   654 \fB示例 1 \fR设置 \fBauto_reboot\fR 属性
   654 \fB示例 1 \fR设置 \fBauto_reboot\fR 属性
   655 .sp
   655 .sp
   656 .in +2
   656 .in +2
   657 .nf
   657 .nf
   670 .fi
   670 .fi
   671 .in -2
   671 .in -2
   672 .sp
   672 .sp
   673 
   673 
   674 .LP
   674 .LP
   675 \fB示例 3 \fR通过使用值路径添加发布者
   675 \fB示例 3 \fR使用值路径添加发布者
   676 .sp
   676 .sp
   677 .LP
   677 .LP
   678 此示例中的软件包系统信息库是位于 \fBfile:///net/host2/export/extras_repo \fR 的文件系统信息库。发布者为 \fBextras\fR。
   678 该示例中的软件包系统信息库是 \fBfile:///net/host2/export/extras_repo\fR 中的文件系统信息库。发布者为 \fBextras\fR。由于一个 \fBsoftware\fR 元素只能具有一个 \fBsource\fR 元素,因此本示例会将新 \fBpublisher\fR 元素添加到包含 \fBsolaris\fR 发布者的 \fBsource\fR 元素中。
   679 
   679 
   680 .sp
   680 .sp
   681 .in +2
   681 .in +2
   682 .nf
   682 .nf
   683 $ \fBaimanifest add \e\fR
   683 $ \fBaimanifest add \e\fR
   684 > \fBsoftware/source/publisher@name extras\fR
   684 > \fBsoftware[@type=IPS]/source[publisher@name=solaris]/publisher@name \e\fR
       
   685 \fBextras\fR
   685 $ \fBaimanifest add \e\fR
   686 $ \fBaimanifest add \e\fR
   686 > \fBsoftware/source/publisher[@name=extras]/origin@name \e\fR
   687 > \fBpublisher[@name=extras]/origin@name \e\fR
   687 > \fBfile:///net/host2/export/extras_repo\fR
   688 > \fBfile:///net/host2/export/extras_repo\fR
   688 $ \fBaimanifest set \e\fR
   689 .fi
   689 > \fBsoftware[source/publisher@name=extras]@name extras\fR
   690 .in -2
   690 $ \fBaimanifest set \e\fR
   691 .sp
   691 > \fBsoftware[source/publisher@name=extras]@type IPS\fR
   692 
   692 .fi
   693 .sp
   693 .in -2
   694 .LP
   694 .sp
   695 如果您以 \fBdefault.xml\fR AI 清单起步,则这些 \fBaimanifest\fR 命令将导致以下 AI 清单条目。为简明起见,省略了 \fBdestination\fR 和 \fBsoftware_data\fR 元素。
   695 
   696 
   696 .sp
   697 .sp
   697 .LP
   698 .in +2
   698 这些 \fBaimanifest\fR 命令将导致生成下列 AI 清单条目。\fBsoftware\fR 元素是允许相同标记的同级的 \fIpath\fR 中的第一个元素,因此,该 XML 代码部分跟在已出现在输出文件中的最后一个 \fBsoftware\fR 部分的后面。
   699 .nf
   699 
   700 <software type="IPS">
   700 .sp
       
   701 .in +2
       
   702 .nf
       
   703 <software name="extras" type="IPS">
       
   704   <source>
   701   <source>
       
   702     <publisher name="solaris">
       
   703       <origin name="http://pkg.oracle.com/solaris/release"/>
       
   704     </publisher>
   705     <publisher name="extras">
   705     <publisher name="extras">
   706       <origin name="file:///net/host2/export/extras_repo"/>
   706       <origin name="file:///net/host2/export/extras_repo"/>
   707     </publisher>
   707     </publisher>
   708   </source>
   708   </source>
   709 </software>
   709 </software>
   710 .fi
   710 .fi
   711 .in -2
   711 .in -2
   712 
   712 
   713 .LP
   713 .LP
   714 \fB示例 4 \fR通过使用返回路径添加发布者
   714 \fB示例 4 \fR使用返回路径添加发布者
   715 .sp
   715 .sp
   716 .LP
   716 .LP
   717 该示例与前一示例相同,但使用不同的方法来实现相同的结果。
   717 此示例与上一示例相同,但使用不同的方法实现相同的结果。
   718 
   718 
   719 .sp
   719 .sp
   720 .in +2
   720 .in +2
   721 .nf
   721 .nf
   722 $ \fBSW_PATH=$(aimanifest add -r \e\fR
   722 $ \fBNEW_PUB=$(aimanifest add -r \e\fR
   723 > \fB/auto_install/ai_instance/software@name extras)\fR
   723 > \fBsoftware[@type=IPS]/source[publisher@name=solaris]/publisher@name \e\fR
   724 $ \fBaimanifest set ${SW_PATH}@type IPS\fR
   724 \fBextras)\fR
   725 $ \fBPUB_PATH=$(aimanifest add ${SW_PATH}/source/publisher@name extras)\fR
   725 $ \fBecho $NEW_PUB\fR
   726 $ \fBaimanifest add \e\fR
   726 /auto_install[1]/ai_instance[1]/software[1]/source[1]/publisher[2]
   727 \fB${PUB_PATH}/origin@name file:///net/host2/export/extras_repo)\fR
   727 $ \fBaimanifest add ${NEW_PUB}/origin@name \e\fR
   728 .fi
   728 \fBfile:///net/host2/export/extras_repo\fR
   729 .in -2
   729 .fi
   730 .sp
   730 .in -2
   731 
   731 .sp
   732 .LP
   732 
   733 \fB示例 5 \fR通过添加清单段来添加发布者
   733 .LP
   734 .sp
   734 \fB示例 5 \fR通过添加清单片段添加发布者
   735 .LP
   735 .sp
   736 该示例与前一示例相同,但使用第三种方法来实现相同的结果。
   736 .LP
   737 
   737 本示例通过装入包含一个部分 AI 清单的文件添加 \fBextras\fR 发布者。在这种情况下,会单独生成一个附加的 IPS 类型的 \fBsoftware\fR 元素且定义有 \fBextras\fR 发布者。此新的 \fBsoftware\fR 元素将插入到定义了 \fBsolaris\fR 发布者的原始 IPS \fBsoftware\fR 元素之后。以这一新 \fBsoftware\fR 元素内的 \fBsoftware_data \fR 元素命名的软件包仅从 \fBextras\fR 发布者或此新 \fBsoftware\fR 元素中定义的其他发布者中进行搜索。此清单片段还定义了一个要安装的软件包,因为不包含要安装的软件的 \fBsoftware\fR 元素不起作用。
   738 .sp
   738 
   739 .LP
   739 .sp
   740 创建一个名称为 \fBextras.xml\fR、包含以下内容的文件:
   740 .LP
       
   741 创建具有以下内容的名为 \fBextras.xml\fR 的文件:
   741 
   742 
   742 .sp
   743 .sp
   743 .in +2
   744 .in +2
   744 .nf
   745 .nf
   745 <auto_install>
   746 <auto_install>
   746   <ai_instance>
   747   <ai_instance>
   747     <software name="extras" type="IPS">
   748     <software type="IPS">
   748       <source>
   749       <source>
   749         <publisher name="extras">
   750         <publisher name="extras">
   750           <origin name="file:///net/host2/export/extras_repo"/>
   751           <origin name="file:///net/host2/export/extras_repo"/>
   751         </publisher>
   752         </publisher>
   752       </source>
   753       </source>
       
   754       <software_data action="install">
       
   755         <name>pkg:/package/from/extras_repo</name>
       
   756       </software_data> 
   753     </software>
   757     </software>
   754   </ai_instance>
   758   </ai_instance>
   755 </auto_install>
   759 </auto_install>
   756 .fi
   760 .fi
   757 .in -2
   761 .in -2
   758 
   762 
   759 .sp
   763 .sp
   760 .LP
   764 .LP
   761 尽管您只需要 software 部分,但您必须同时包含 \fB auto_install\fR 和 \fBai_instance\fR 元素。必须包含 \fIpath\fR 操作数中所需的任何内容。如果加载的文件为 \fBauto_install\fR 或 \fB ai_instance\fR 元素指定了属性,则这些属性值将替换现有值,或者被添加。
   765 即使您只需要 \fBsoftware\fR 部分,您也必须包括 \fBauto_install\fR 和 \fBai_instance\fR 元素。如果装入的文件为 \fBauto_install\fR 或 \fBai_instance\fR 元素指定属性,则这些属性值将替换现有值,或者将添加这些属性值。
   762 
   766 
   763 .sp
   767 .sp
   764 .LP
   768 .LP
   765 使用以下命令将此 \fBsoftware\fR 部分添加到 \fBAIM_MANIFEST\fR 清单:
   769 使用以下命令将此 \fBsoftware\fR 部分添加到 \fBAIM_MANIFEST\fR 清单:
   766 
   770 
   771 .fi
   775 .fi
   772 .in -2
   776 .in -2
   773 .sp
   777 .sp
   774 
   778 
   775 .LP
   779 .LP
   776 \fB示例 6 \fR通过使用值路径添加软件包
   780 \fB示例 6 \fR使用值路径添加软件包
   777 .sp
   781 .sp
   778 .LP
   782 .LP
   779 该示例通过指定发布者名称作为路径中的值,将一个软件包添加到前一示例生成的 \fBsoftware\fR 元素,该元素包含名称为 \fBextras\fR 的 \fBpublisher\fR 元素。该示例还显示了如何使用相对路径规范。
   783 该示例通过将发布者名称指定为路径中的值,来将软件包添加到具有名为 \fBsolaris\fR 的 \fBpublisher\fR 元素的 \fBsoftware\fR 元素。
   780 
   784 
   781 .sp
   785 .sp
   782 .in +2
   786 .in +2
   783 .nf
   787 .nf
   784 $ \fBaimanifest add \e\fR
   788 $ \fBaimanifest add \e\fR
   785 > \fBsoftware[source/publisher@name=extras]/software_data/name \e\fR
   789 > \fBsoftware[source/publisher@name=solaris]/software_data/name \e\fR
   786 > \fBpkg:/system/utils\fR
   790 > \fBpkg:/system/utils\fR
   787 .fi
   791 .fi
   788 .in -2
   792 .in -2
   789 .sp
   793 .sp
   790 
   794 
   791 .sp
   795 .sp
   792 .LP
   796 .LP
   793 该 \fBaimanifest\fR 命令添加了以下 \fBsoftware_data \fR 部分。
   797 如果您以 \fBdefault.xml\fR AI 清单起步,则 \fBaimanifest\fR 命令会添加下面显示的第二个 \fBsoftware_data \fR 元素。
   794 
   798 
   795 .sp
   799 .sp
   796 .in +2
   800 .in +2
   797 .nf
   801 .nf
   798 <software name="extras" type="IPS">
   802 <software_data action="install">
   799   <source>
   803   <name>pkg:/entire@latest</name>
   800     <publisher name="extras">
   804   <name>pkg:/group/system/solaris-large-server</name>
   801       <origin name="file:///net/host2/export/extras_repo"/>
   805 </software_data>
   802     </publisher>
   806 <software_data>
   803   </source>
   807   <name>pkg:/system/utils</name>
   804   <software_data>
   808 </software_data>
   805     <name>pkg:/system/utils</name>
   809 .fi
   806   </software_data>
   810 .in -2
   807 </software>
   811 
   808 .fi
   812 .LP
   809 .in -2
   813 \fB示例 7 \fR使用返回路径添加软件包
   810 
   814 .sp
   811 .LP
   815 .LP
   812 \fB示例 7 \fR通过使用返回路径添加软件包
   816 此示例与上一示例相同,但使用不同的方法实现相同的结果。本示例使用带有返回路径选项的 \fBget\fR 子命令将软件包添加到定义了 \fBsolaris\fR 发布者的 \fBsoftware\fR 元素。
   813 .sp
   817 
   814 .LP
   818 .sp
   815 该示例与前一示例相同,但使用不同的方法来实现相同的结果。该示例没有指定发布者名称作为路径中的值,而是使用了示例"通过使用返回路径添加发布者"所述的保存在 \fBSW_PATH\fR 中的 \fBsoftware\fR 元素的路径。
   819 .in +2
   816 
   820 .nf
   817 .sp
   821 $ \fBNEW_PKG=$(aimanifest get -r \e\fR
   818 .in +2
   822 \fBsoftware[source/publisher@name=solaris] | awk '{print $2 }')\fR
   819 .nf
   823 $ \fBecho $NEW_PKG\fR
   820 $ \fBaimanifest add ${SW_PATH}/software_data/name pkg:/system/utils\fR
   824 /auto_install[1]/ai_instance[1]/software[1]
   821 .fi
   825 $ \fBaimanifest add ${NEW_PKG}/software_data/name \e\fR
   822 .in -2
   826 \fBpkg:/system/utils\fR
   823 .sp
   827 .fi
   824 
   828 .in -2
   825 .LP
   829 .sp
   826 \fB示例 8 \fR验证清单
   830 
       
   831 .LP
       
   832 \fB示例 8 \fR通过添加清单片段添加软件包
       
   833 .sp
       
   834 .LP
       
   835 本示例通过装入包含一个部分 AI 清单的文件来添加软件包。在这种情况下,会单独生成一个附加的 IPS 类型的 \fBsoftware\fR 元素,且该元素插入到原始 IPS \fBsoftware\fR 元素之后。这一新 \fBsoftware\fR 只包含一个 \fBsoftware_data\fR 元素;没有指定任何 \fBsource\fR 元素。以这一新 \fBsoftware\fR 元素中的 \fBsoftware_data\fR 元素命名的软件包会从上述的 \fBsoftware\fR 元素中定义的发布者中进行搜索。
       
   836 
       
   837 .sp
       
   838 .LP
       
   839 创建具有以下内容的名为 \fBnewpkg.xml\fR 的文件:
       
   840 
       
   841 .sp
       
   842 .in +2
       
   843 .nf
       
   844 <auto_install>
       
   845   <ai_instance>
       
   846     <software type="IPS">
       
   847       <software_data>
       
   848         <name>pkg:/system/utils</name>
       
   849       </software_data>
       
   850     </software>
       
   851   </ai_instance>
       
   852 </auto_install>
       
   853 .fi
       
   854 .in -2
       
   855 
       
   856 .sp
       
   857 .LP
       
   858 即使您只需要 \fBsoftware\fR 部分,您也必须包括 \fBauto_install\fR 和 \fBai_instance\fR 元素。如果装入的文件为 \fBauto_install\fR 或 \fBai_instance\fR 元素指定属性,则这些属性值将替换现有值,或者将添加这些属性值。
       
   859 
       
   860 .sp
       
   861 .LP
       
   862 使用以下命令将此 \fBsoftware\fR 部分添加到 \fBAIM_MANIFEST\fR 清单:
       
   863 
       
   864 .sp
       
   865 .in +2
       
   866 .nf
       
   867 $ \fBaimanifest load -i newpkg.xml\fR
       
   868 .fi
       
   869 .in -2
       
   870 .sp
       
   871 
       
   872 .LP
       
   873 \fB示例 9 \fR验证清单
   827 .sp
   874 .sp
   828 .LP
   875 .LP
   829 验证 \fBAIM_MANIFEST\fR 清单。
   876 验证 \fBAIM_MANIFEST\fR 清单。
   830 
   877 
   831 .sp
   878 .sp
   846 .na
   893 .na
   847 \fB\fB0\fR\fR
   894 \fB\fB0\fR\fR
   848 .ad
   895 .ad
   849 .RS 13n
   896 .RS 13n
   850 .rt  
   897 .rt  
   851 该命令已成功处理。
   898 该命令被成功处理。
   852 .RE
   899 .RE
   853 
   900 
   854 .sp
   901 .sp
   855 .ne 2
   902 .ne 2
   856 .mk
   903 .mk
   867 .ne 2
   914 .ne 2
   868 .mk
   915 .mk
   869 .na
   916 .na
   870 \fB\fBAIM_MANIFEST\fR\fR
   917 \fB\fBAIM_MANIFEST\fR\fR
   871 .ad
   918 .ad
   872 .RS 16n
   919 .sp .6
   873 .rt  
   920 .RS 4n
   874 该环境变量值是正在构建的 AI 清单的位置。
   921 该环境变量的值是所构建的 AI 清单的位置。
   875 .RE
   922 .RE
   876 
   923 
   877 .sp
   924 .sp
   878 .ne 2
   925 .ne 2
   879 .mk
   926 .mk
   880 .na
   927 .na
   881 \fB\fBAIM_LOGFILE\fR\fR
   928 \fB\fBAIM_LOGFILE\fR\fR
   882 .ad
   929 .ad
   883 .RS 16n
   930 .sp .6
   884 .rt  
   931 .RS 4n
   885 该环境变量值是 \fBaimanifest\fR 操作的日志文件的位置。
   932 该环境变量的值是 \fBaimanifest\fR 操作的日志文件位置。
   886 .RE
   933 .RE
   887 
   934 
   888 .SH 属性
   935 .SH 属性
   889 .sp
   936 .sp
   890 .LP
   937 .LP
   891 有关下列属性的描述,请参见 \fBattributes\fR(5):
   938 有关下列属性的说明,请参见 \fBattributes\fR(5):
   892 .sp
   939 .sp
   893 
   940 
   894 .sp
   941 .sp
   895 .TS
   942 .TS
   896 tab() box;
   943 tab() box;
   898 lw(1.65i) |lw(3.85i) 
   945 lw(1.65i) |lw(3.85i) 
   899 .
   946 .
   900 属性类型属性值
   947 属性类型属性值
   901 _
   948 _
   902 可用性T{
   949 可用性T{
   903 \fBsystem/install/auto-install/auto-install-common\fR(系统/安装/自动安装/通用自动安装)
   950 \fBsystem/install/auto-install/auto-install-common\fR
   904 T}
   951 T}
   905 _
   952 _
   906 接口稳定性Uncommitted(未确定)
   953 接口稳定性Uncommitted(未确定)
   907 .TE
   954 .TE
   908 
   955 
   909 .SH 另请参见
   956 .SH 另请参见
   910 .sp
   957 .sp
   911 .LP
   958 .LP
   912 installadm(1M)、\fBpkg\fR(1)
   959 \fBinstalladm\fR(1M)
   913 .sp
   960 .sp
   914 .LP
   961 .LP
   915 Part\ III, \fI"Installing Using an Install Server,"\fR in \fI《Installing Oracle Solaris 11 Systems》\fR
   962 《\fI《安装 Oracle Solaris 11 系统》\fR》中的第 III 部分,“\fI"使用安装服务器安装"\fR”