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> |
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 | |
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 |