【系统定制】创建自己的安装包组

Kickstart

安装好的系统默认在root/目录下生成anaconda-ks.cfg文件

安装包部分

%packages

@^minimal
@core
chrony

%end

@后跟安装包组名(id字段),安装包组可自定义

也可以在该段直接声明您需要安装的包名

(可直接加*号代替全部)会将Packages目录下的所有rpm包安装到新的系统中


XML文件

文件名称:$hexstring-comps.xml在镜像的repodata文件夹下

createrepo命令利用该文件在当前目录下生成repodata/文件夹

createrepo -g $hexstring-comps.xml .

组列表

<group>
  <id>group</id>
  <name>Group</name>
  <default>true</default>
  <uservisible>false</uservisible>
  <description>Create a 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 可选安装

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:此包需要的包的名字

将xml文件修改内容需要添加在标签的上方,之后使用createrepo命令生成repodata文件夹

即完成了我们自定义组的全部步骤可以在kickstart文件中使用@引用自定义的组名(id字段)


生成xml

为了方便定制 使用下面的脚本来自动生成我们需要的xml文件

sh ***.sh rpmdir idname

脚本内容如下

#!/usr/bin/bash
# $1 -> rpmdir $2 -> id
set -e

array=()
i=1

#change dir to destdir
cd `pwd`/$1

fakexml=`ls`

#seperate string 
for element in $fakexml
do

temp=`echo $element`
array[$i]=`echo ${temp%-[0-9].*[0-9].*.rpm}`
i=`expr $i + 1`

done

STRING+="  <group>\n"
STRING+="    <id>$2</id>\n"
STRING+="    <name>$2</name>\n"
STRING+="    <default>true</default>\n"
STRING+="    <packagelist>\n"

i=0
size=${#array[@]} #the number of packages

while [ $i -lt $size ]
do

STRING+="      <packagereq type=\"default\">"${array[$i]}"</packagereq>\n"
i=`expr $i + 1`

done


STRING+="    </packagelist>\n"
STRING+="  </group>\n"

echo -ne $STRING > create.xml

exit 0

参考文档

Linux 操作系统安装盘的定制

23.3. KICKSTART 语法参考


版权声明:本文为code__L原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。