首先我想说,我是 kickstart 的新手,所以如果我使用了错误的术语,我提前道歉。
我正在努力实现的目标: 我正在尝试创建一个客户 ISO 来安装 CentOS 和我编写的基于 Web 的应用程序。我想创建一个“设备”类型的安装,以便轻松部署运行应用程序的虚拟机或裸机服务器,而不是其他任何东西。
我有一个由另一家公司基于 RHEL 制作的 ISO 示例,我正在尝试遵循他们的做法并根据我的需求对其进行自定义。
问题: 我正在查看示例 iso 中的 ks.cfg 文件,它定义了要安装的软件包,我相信它最终是 ISO 根目录中的 RPM 列表。以下是 ks.cfg 文件的摘录:
#Package install information
%packages
@ base
@ core
@ acme-base
@ acme-platform
@ acme-application
查看 iso 上的目录,我相信 @acme-platform 将导致安装 /acme/acmeplatform/RPMS/*.rpm
我的问题是如何从 @acme-platform 到 ISO 上存储实际 RPM 的目录定义此映射。
编辑:阅读第一个答案后,我想澄清这个问题:我真的在寻找哪个文件将 RPM 的位置映射到文件中引用的组ks.cfg
。我看到组成这些组的实际包是在中定义的/repodata/comps.xml
答案1
列出的包实际上是yum
包组。小组已经习惯了他们不必手动列出各个软件包(或者必须知道为特定效果推荐哪些软件包)。例如,在 RHEL 6(我假设是 CentOS 6)上,如果您只使用文本,则可以yum groupinstall Desktop
安装满足名为“Desktop”的组所需的所有软件包,最终安装 GNOME 桌面和其他应用程序 Red帽子认为你会发现有用。这是为了让这个过程变得简单,就像基本上说“我想要一个桌面”一样。
和core
组base
是 RHEL/CentOS 基础的一部分,这些acme-*
组可能适用于相关设备。他们可能将 rpm 放在同一目录中
我将从安装开始创建一个 yum 存储库来查看环回上安装的 ISO然后发出yum groupinfo
所需的命令来查看每个组都有哪些单独的包。例如,要查看base
组中的软件包,您可以键入yum groupinfo base
并看到荣耀。
它给出的软件包名称将是位于 DVD 上某处的 RPM(不记得了,但我认为有一个“RPMS”目录),软件包名称构成 RPM 文件名的第一部分。
例如,如果您看到一个名为btparser
filename 的包可能会被调用btparser-0.17-2.el6.x86_64.rpm
(不过,我只会发出 afind /path/to/mountedISO -name 'btparser*
来找到它)。
这应该会让你走上正轨。
答案2
/etc/yum.conf 和 /etc/yum.repos.d/ 中的 .repo 文件确定要使用哪个存储库。在这些存储库中,有一个文件 repodata/primary.xml 指定 RPM 的位置(通过“位置”字段)。
您可能不想将您的软件集成到主 CD 存储库中。我会在 iso 的其他位置创建它并使用 creatrepo。在 kickstart 配置中,您可以添加“repo”命令来添加此存储库,例如使用“repo --name=acme --baseurl=file://mnt/cdrom/local/repos/acme.txt”。