构建环境隔离和文件系统差异

dav*_*k01 8 linux debian build rpm isolation

好的,所以在试图追踪第n次各种软件的依赖关系并复制各种人为所有不同的linux发行版做的工作后,我想知道是否有更好的方法来捆绑各种软件到.rpm或.deb文件中以便于分发.

我目前为此做的设置是各种工具的frankenstein怪物,但主要是Vagrant和libguestfs,它们是在Fedora中运行的源代码构建的,因为没有任何发行版实际发布它virt-diff.以下是我目前遵循的步骤:

  1. 使用Vagrant框或通过Live CD创建一个OS来启动基本操作系统.
  2. 导出.vmdk并调用它base-image.
  3. 旋转上一张图像的精确副本并前往城镇:使用包管理器或其他方法下载,编译和安装我需要的所有部分.再一次,导出.vmdk并调用它non-base-image.
  4. 使两个基本映像可用于具有libguestfs的Fedora来宾操作系统.
  5. 使用virt-diff差异比较两个图像和转储数据文件调用diff.
  6. 运行几个ruby脚本按摩diff到另一种格式,其中包含我需要的信息,没有任何废话,我不喜欢的东西/var.
  7. 运行另一个脚本以guestfish使用一堆copy-out命令生成脚本.
  8. 运行guestfish脚本.
  9. 运行另一个脚本以重新生成符号链接,diff因为guestfish无法执行此操作.
  10. 将生成的文件夹结构转换为.deb或.rpm文件并发送.

我想知道是否有更好的方法来做到这一点.你认为会有,但我还没弄清楚.

Ali*_*orm 3

我肯定会考虑以下内容:

A)

  • yum list(选择你的包/依赖项)
  • 使用前面列表中的 yumdownloader (或使用您已经下载的 pkg)
  • 创建仓库
  • 附带安装脚本的媒体,该安装脚本将 cd 存储库添加到 repolist 等。

或 B)

如上所述的前两个步骤,然后将 rpm 打包到存档中,构建一个包含上述所有内容的软件包,并作为后期脚本启动 rpm 的实际安装(沿着 rpm -Uvh /tmp/repo/* 的行) (也许在清理阶段)。不知道是否可以避免 rpm 数据库上的锁定。