跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

2 AutoYaST 控制文件 编辑源文件

2.1 简介 编辑源文件

一个 控制文件,也称为 配置文件,是单个系统的配置描述。它由具有属性的资源集合组成,包括对复杂结构(如列表、记录、树和大型嵌入或引用对象)的支持。

2.2 格式 编辑源文件

XML 配置文件格式提供了一致的文件结构,易于学习和记忆,以便配置新的系统。

AutoYaST 控制文件使用 XML 来描述系统安装和配置。XML 是一种常用的标记语言,许多用户熟悉该语言的概念和用于处理 XML 文件的工具。如果您编辑现有的控制文件或创建新的控制文件,强烈建议验证控制文件。可以使用验证 XML 解析器(例如 xmllintjing)来完成此操作(请参阅 第 3.3 节,“手动创建/编辑控制文件”)。

以下示例显示了 XML 格式的控制文件

示例 2.1: AutoYaST 控制文件(profile)
<?xml version="1.0"?>
<!DOCTYPE profile>
<profile
  xmlns="http://www.suse.com/1.0/yast2ns"
  xmlns:config="http://www.suse.com/1.0/configns">
  <partitioning config:type="list">
    <drive>
      <device>/dev/sda</device>
      <partitions config:type="list">
        <partition>
          <filesystem config:type="symbol">btrfs</filesystem>
          <size>10G</size>
          <mount>/</mount>
        </partition>
        <partition>
          <filesystem config:type="symbol">xfs</filesystem>
          <size>120G</size>
          <mount>/data</mount>
        </partition>
      </partitions>
    </drive>
  </partitioning>
  <scripts>
    <pre-scripts>
      <script>
        <interpreter>shell</interpreter>
        <filename>start.sh</filename>
        <source>
        <![CDATA[
#!/bin/sh
echo "Starting installation"
exit 0

]]>

        </source>
      </script>
    </pre-scripts>
  </scripts>
</profile>

2.3 结构 编辑源文件

下面是一个基本的控制文件容器的示例,其具体内容将在本章后面进行说明。

示例 2.2: 控制文件容器
<?xml version="1.0"?>
<!DOCTYPE profile>
<profile
  xmlns="http://www.suse.com/1.0/yast2ns"
  xmlns:config="http://www.suse.com/1.0/configns">
  <!-- RESOURCES -->
</profile>

根节点 <profile> 包含一个或多个不同的资源元素。允许的资源元素在模式文件中指定。

2.3.1 资源和属性 编辑源文件

资源元素包含多个不同的属性和资源元素,或者相同资源的多个实例,或者为空。资源元素的允许内容在模式文件中指定。

属性元素为空或包含文字值。每个资源元素中允许的属性元素和值在模式文件中指定。

一个元素可以是其他元素的容器(资源),也可以具有文字值(属性);它不能同时具有两者。此限制在模式文件中指定。具有多个值的配置组件必须表示为属性值中的嵌入式列表,或作为嵌套资源。

空元素,例如 <foo></foo><bar/>,将 不会出现在解析的数据模型中。通常,这被解释为需要一个合理的默认值。在需要显式空字符串的情况下,请使用 CDATA 部分:<foo><![CDATA[]]></foo>

2.3.2 嵌套资源 编辑源文件

嵌套资源元素允许构建任意级别的树状配置组件结构。

有两种类型的嵌套资源:映射和列表。映射(也称为关联数组、哈希或字典)包含带有标签名称标识的混合内容。列表或数组具有所有相同类型的项目。

示例 2.3: 嵌套资源
...
<drive>
  <device>/dev/sda</device>
  <partitions config:type="list">
     <partition>
        <size>10G</size>
        <mount>/</mount>
     </partition>
     <partition>
        <size>1G</size>
        <mount>/tmp</mount>
     </partition>
  </partitions>
</drive>
....

在上面的示例中,drive 资源是一个映射,包含一个 device 属性和一个 partitions 资源。partitions 资源是一个列表,包含多个 partition 资源的实例。每个 partition 资源是一个映射,包含一个 sizemount 属性。

嵌套资源的默认类型是映射,尽管您可以根据需要指定它。必须使用 config:type="list" 属性将列表标记为列表。

Tip
提示:使用排序器类型注释

openSUSE Leap 15.3 开始,可以使用 t 属性代替 config:type 来指定元素类型。

<mode t="boolean">true</mode>

2.3.3 属性 编辑源文件

全局属性用于定义资源和属性上的元数据。属性用于定义上下文切换。它们还用于命名和键入属性,如前几节所示。属性位于单独的命名空间中,因此无需将它们视为默认命名空间中的保留字。

config:type 属性确定解析的数据模型中资源或属性的类型。对于资源,列表需要 list 类型,而映射是默认类型,不需要属性。有一个例外。当映射为空时,需要将其标记为映射,以免与简单的字符串值混淆。

示例 2.4: 一个空映射
<general t="map" />

对于属性,可以使用 booleansymbolinteger,默认值为字符串。

除了映射和字符串值(如前所述)之外,属性不是可选的。可能看起来属性是可选的,因为模式的各个部分在数据类型的使用方面并不十分一致。在某些地方,枚举由符号表示,而在其他地方需要字符串。有些资源需要 config:type="integer",而另一些资源将从字符串属性解析数字。有些资源使用 config:type="boolean",而另一些资源需要 yes 甚至 1。如有疑问,请参阅模式文件。

打印此页面