【问题标题】:RPM Hotfix/Patch ApproachRPM 修补程序/补丁方法
【发布时间】:2011-07-26 01:39:04
【问题描述】:

我们在 Centos 5.5 上运行一个系统,并使用一个包含我们所有软件的 RPM 安装我们的软件。当我们需要应用热修复或补丁时,当前系统只需粘贴 tar 并解压即可。

我正在尝试开发一个可跟踪、可重复的系统来应用热修复和补丁,但我有点不确定 RPM 在这个过程中扮演什么角色。

据我了解,如果我们提高版本号并重新安装,即使只更改了一个文件,那么 RPM 也会爆炸。这要求我们绝对确定没有人在系统上放置了另一个我们不知道的修补程序,因为它将被替换。

是否可以制作仅包含新文件的 RPM 并将其应用到现有 RPM 之上?这将如何影响系统的后续升级?

【问题讨论】:

    标签: installation centos rpm hotfix


    【解决方案1】:

    你可以使用deltarpm(但我不推荐它,见下文)。 拥有旧 rpm 和新 rpm(在构建机器上),您可以使用 deltarpm 工具生成增量。 在安装了软件的盒子上使用 deltarpm 工具,您可以自动将旧 rpm 升级到新 rpm(如果需要,还可以降级)。

    我不喜欢它,因为如果旧 rpm 提供的任何(非配置)文件发生更改,您将无法安装修复程序。此外 deltarpm 它不是生产就绪的工具。您已收到警告。

    作为 deltarpm 的替代方案,我建议将您的软件拆分为几个较小的 RPM,并将新 RPM 的子集作为修补程序提供。这是最常用的方法。

    【讨论】:

      【解决方案2】:

      RPM 的重点是进行可重复、可验证的安装。您应该生成一个包含更新的新 RPM(通过补丁或新的上游源)。

      拆分您的整体包将允许您单独升级部件。

      【讨论】:

        【解决方案3】:

        问题是更改 rpm 本地安装的文件并忘记它们。

        如果您将此用作修补程序,则应在修补程序之后立即构建新 rpm,然后部署该新 rpm。

        如果允许人们将一个又一个的修补程序放在一台机器上而不将其提交给正常的进程,那么你就是在招致灾难。

        要提醒您周围有修补程序这一事实,您可以做的一件事是使用

        rpm -q --verify (your rpm name)
        

        这将打印自安装 rpm 以来已更改的文件列表。这样一来,您至少知道哪些文件被打了补丁并且应该被考虑在内。

        【讨论】:

        • 我不再在公司工作,也不再使用有问题的操作系统,但是嘿,这听起来不错。谢谢。
        猜你喜欢
        • 2011-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-09
        • 2012-08-03
        • 2017-01-31
        • 2020-12-14
        • 1970-01-01
        相关资源
        最近更新 更多