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>标记开始的文件的主体内容。如:
<?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包,然后进行下面的操作:
运行:
/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.xml之前,也最好对最初的comps.xml做个备份,以备恢复使用。