我正在尝试创建一个 Red Hat 7.8 ISO,其中包含一组已更新到最新版本的精简版 rpm。我弄清楚了如何隔离所需的软件包并下载它们,但是当我创建新的 ISO 时,它会启动,启动安装程序,但它从未在本地媒体上找到安装源。我已遵循以下步骤:
- 装载源 ISO
- 将整个文件结构复制到临时文件夹中
- 过滤 rpm 以仅显示我需要的 rpm
- 使用 yumdownloader 下载各个 RPM 的最新版本到新的软件包中
- 删除原有的Packages文件夹,并重命名为newPackages包。
下一步是创建新的 repodata,我通过在 Packages 中运行以下命令来执行此操作:
createrepo -dpo .. .
它在 repodata 文件夹中创建新的 repo 文件并替换 repomd.xml 文件
但是,当我启动时,它找不到 ISO 上的存储库。
是否有其他文件需要更新才能识别新的 repo,或者我需要一些选项来制作与 ISO 兼容的 repo?我是否删除了初始安装所需的 rpm?
答案1
我找到了很多引用 comps.xml 的页面,最后我发现源 ISO 上的 comps.xml 文件名更长,并且位于存档中。在我的例子中,文件名是:
c0dee7823d016c47d3d8ad66d65f6cbce5284a00f349dc4d7a72a971c283edd0-comps.xml.gz
弄清楚之后,我提取了文件,并将其放在新 ISO 树的父文件夹中。然后,使用以下命令,我成功地使用 Packages 文件夹中精简的软件包列表更新了原始 repo(从 Packages 文件夹运行此命令):
createrepo --update -g ../../comps.xml -dpo .. .
分解命令:
- --update 告诉 createrepo 更新 repodata 文件夹中的现有文件
- -g ../../comps.xml 从源 comps.xml 文件复制软件包组
- -dp -d 标志创建数据库文件,-p 使 XML 文件更美观
- -o 指定输出的位置。在本例中,父文件夹是原始 repodata 文件夹所在的位置
末尾的句点 (.) 指的是当前文件夹,所有包都位于此处。