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

问题描述 投票:8回答:5

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

我目前为此目的设置的是一个弗兰肯斯坦怪兽,它使用各种工具,但主要是Vagrant和libguestfs,它们是从Fedora中运行的源代码构建的,因为实际上没有发行版附带virt-diff。这是我当前要执行的步骤:

  1. 使用Vagrant盒或通过实时CD创建一个基础操作系统来启动基本操作系统。
  2. 导出.vmdk并命名为base-image
  3. 提起上一张图像的精确副本并前往城镇:使用包裹管理器,或其他某种方式来下载,编译和安装我需要的所有组件。再次导出.vmdk并将其命名为non-base-image
  4. 使两个基本映像都可用于具有libguestfs的Fedora来宾OS。
  5. 使用virt-diff区分两个图像并将该数据转储到名为diff的文件中。
  6. 运行几个ruby脚本以将diff按摩为另一种格式,该格式包含我需要的信息,并且没有一个我不喜欢/var中的内容。
  7. [运行另一个脚本以使用一堆guestfish命令为copy-out生成脚本。
  8. 运行guestfish脚本。
  9. 运行另一个脚本以从diff重新生成符号链接,因为guestfish无法执行。
  10. 将生成的文件夹结构转换为.deb或.rpm文件并发送。

我想知道是否有更好的方法可以做到这一点。您以为会有,但我还没有弄清楚。

linux build debian rpm isolation
5个回答
3
投票

我肯定会考虑以下方面:

A)

  • yum列表(选择您的软件包/依赖项)
  • 使用上一个列表中的yumdownloader(或使用您已经下载的pkgs)
  • createrepo
  • 带有安装脚本的介质上的装运,该脚本将cd repo添加到repolist等。>
  • 或B)

如上所述的前两个步骤,然后将rpm包装到一个档案文件中,构建一个包含以上所有内容的软件包,并开始实际安装rpm(沿着rpm -Uvh / tmp / repo / *行),后期脚本(可能在清理阶段)。 Dunno,如果可以这样做,可以避免在rpm数据库上锁定。


1
投票

[我认为您已经达到了复杂性的地步-的确是一个科学怪人-在这里,您应该避免担心制作带有依赖项的适当程序包。我们在之前的工作中做到了这一点-我们有一组预制的rpm程序包-它非常简单明了,包括:


1
投票

主要有3个步骤来制作具有所有依赖性的程序包(将其设为A,B和C)。


1
投票

主要是确保您的客户已安装运行包所需的所有标准上游发行版包吗?


0
投票

因此您的客户永远不会安装任何其他软件,这些软件可能会指定您要遍历的依赖关系的不同版本,对吧?

© www.soinside.com 2019 - 2024. All rights reserved.