comps.xml文件定制

comps.xml文件定制

目录(?)

  1. 1 编辑compsxml文件

  2. 2 产生完整的compsxml文件

参考: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>标记开始的文件的主体内容。如:

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEcompsPUBLIC"-//RedHat,Inc.//DTDCompsinfo//EN""comps.dtd">
<comps>

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

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

(1) 组列表

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

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

<group>
<id>somegroup</id>
<name>SampleGroup</name>
<default>true</default>
<uservisible>false</uservisible>
<description>Thisisasillysamplegroup</description>
<packagelist>
<packagereqtype="mandatory">bash</packagereq>
<packagereqtype="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>RandomGroups</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做个备份,以备恢复使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇