comps.xml文件定制

参考:http://www.ibm.com/developerworks/cn/linux/l-custm/

节选内容如下:

4.1 编辑comps.xml文件

在生成安装盘之前,需要注意对comps.xml文件进行修改。这个文件用来告知安装程序anaconda,用户选择了某个组是应该有哪些包需要安装,定义了在安装过程中,包是如何被捆绑在一起的。在Red Hat 8.0以前版本的发布盘中,对应的文件为comps,它只是一个简单的文本文件,在Red Hat 8.0之后的版本中,用comps.xml代替了原来的comps文件。comps.xml是一个XML文件,易于对内容进行分析和说明。

comps.xml文件开始是说明xml的版本和DTD断言,然后进入以<comps>标记开始的文件的主体内容。如:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
<comps>

comps.xml主要由三部分组成,首先是组列表,它描述了在安装过程中需要的不同的组(或组件),包括组名、组的描述和包含的RPM包;其次是组的层次结构,它将组分成不同的类,并定义了组的一个顺序,从而可以决定哪些组需要先安装;最后为一系列RPM包以及它们之间的依赖关系。

下面分别介绍comps.xml文件的这三部分:

(1) 组列表

在系统安装时,需要用到一个组中的一些属性,下面就是属性列表以及它们如何使用。一个组被定义在<group>和</group>标记之内.

一个简单的组定义可以是:

<group>
  <id>somegroup</id>
  <name>Sample Group</name>
  <default>true</default>
  <uservisible>false</uservisible>
  <description>This is a silly sample group</description>
  <packagelist>
    <packagereq type="mandatory">bash</packagereq>
    <packagereq type="default">cpio</packagereq>
  </packagelist>
</group>

下面分别说明组定义中一些参数的含义:

  • id:组的id仅仅是在comps.xml文件中作为该组的一个标识,这是必须的;
  • name:表示用户可以看到的组的名字,它也是必须的;
  • default:它表示在系统安装过程中,当选择定制(custom)安装时,该组是否在缺省情况下被选中。如果没有说明,则缺省情况下为不选中。
  • uservisible:它表示该组在缺省情况下是否在安装时可以看到,如果没有说明,缺省设置为YES,为可以看到。
  • description:它表示对该组进行简短的描述,这是必须的;
  • packagelist:它说明在该组内的一系列安装包,这也是必须的。
    packagereq:包名
    属性:
    • type:当进行安装时,判定对应的包是否是组的"强制"部分、或"缺省"部分或"可选"部分。它可以是"mandatory"、"default"或"optional"之一。
    • requires:它说明只有当它所需要(依赖)的包也安装情况下,此包才安装进系统。

(2)组层次结构

它描述了组的树状层次结构,组层次结构定义在<grouphierarchy>和</grouphierarchy>标记之间,由定义的<category>标记组成类。

一个简单的组层次结构可以如下所述:

<grouphierarchy>
  <category>
    <name>Random Groups</name>
    <subcategories>
      <subcategory>somegroup</subcategory>
    </subcategories>
  </category>
</grouphierarchy>

一个类由下面这些属性组成:

  • name: 它表示类名,是必须的;
  • subcategories: 它表示此类的一些子类,由一列表<subcategory>和</subcategory> 元素组成
    • subcategory: 前面定义的组的id

(3)RPM包

此部分说明要安装的RPM包,它定义在<package>和</package>标记之内。一个简单的RPM包部分可以如:

<package>
  <name>bash</name>
  <dependencylist>
    <dependency>mktemp</dependency>
    <dependency>bash</dependency>
    <dependency>glibc</dependency>
    <dependency>libtermcap</dependency>
  </dependencylist>
</package>
  • name:它指的是RPM包名,是必须的。
  • dependencylist:它说明此包对应的依赖的RPM包。
    • dependency:此包需要的包的名字

4.2 产生完整的comps.xml文件

上述说明的comps.xml文件中的RPM包部分是是自动产生的,为了形成完全的comps.xml文件,需要在系统中安装comps-extras RPM包,然后进行下面的操作:

  • 将comps.xml文件中的原来的RPM包部分删除;
  • 运行:
    /usr/share/comps-extras/getfullcomps.py comps.xml /path/to/tree arch >/root/filelist 在此,/path/to/tree是Red Hat Linux操作系统安装盘内容存储的地方,arch指的是体系结构,为i386。注意的是,假定comps.xml已经存放/path/to/tree/arch/RedHat/base/目录下,将此输出重定向到一个临时文件,如/root/filelist。
  • 将comps.xml文件中最后一行内容(为</comps>)删除
  • 将前面生成的临时文件添加到comps.xml中
  • 再将</comps>添加到comps.xml文件中

通过新增你的包到comps.xml文件,你可以根据你的需要做你自己的发布盘,确信你的包在缺省情况下会被安装。需要注意的一件事是你更新的包与其它包的依赖关系,这是你需要处理的,要注意你更新的包所应该放置的位置。另外,不要在文件中随意增加或删除其余的空格。在修改comps.xml之前,也最好对最初的comps.xml做个备份,以备恢复使用。



发布了99 篇原创文章 · 获赞 17 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/xztjhs/article/details/53224235