我们在Centos 5.5上运行一个系统,并使用一个包含我们所有软件的RPM安装我们的软件。当我们需要应用热修复或补丁时,当前系统只需坚持使用tar并解压缩它。
我正在尝试开发一个可跟踪,可重复的系统来应用热修复和补丁,但我不太确定RPM在这个过程中扮演什么角色。
根据我的理解,如果我们提高版本号并重新安装,即使只更改了一个文件,RPM也会爆炸。这要求我们绝对确定没有人在我们不知道的系统上放置另一个修补程序,因为它将被替换。
是否可以制作包含JUST新文件的RPM并将其应用于现有RPM?这将如何影响系统的后续升级?
答案 0 :(得分:2)
RPM的重点是具有可重复,可验证的安装。您应该生成一个新的RPM,并将更新加入其中(通过补丁或新的上游源)。
拆分单片包将允许您单独升级部件。
答案 1 :(得分:2)
问题是更改rpm本地安装的文件并忘记它们。
如果您将此作为修补程序过程,请在修补程序之后立即构建新的rpm,然后部署新的rpm。
如果允许人们在修补程序之后将修补程序放在计算机之上而没有将其提交到正常进程,那么就会引发灾难。
你可以做的一件事就是提醒你,你有修补程序是使用
rpm -q --verify (your rpm name)
这将打印自安装rpm以来已更改的文件列表。这样你至少知道修补了哪些文件,应该加以考虑。
答案 2 :(得分:0)
您可以使用deltarpm(但我不推荐它,请参见下文)。 使用旧的rpm和新的rpm(在构建机器上),您可以使用deltarpm工具生成delta。 在安装了软件的盒子上使用deltarpm工具,然后可以自动将旧rpm升级到新rpm(如果需要,可以将其降级)。
我不喜欢它,因为如果旧rpm提供的任何(非配置)文件将发生更改,您将无法安装此修复程序。而且deltarpm它不是生产就绪的工具。你被警告了。
作为deltarpm的替代方案,我建议将您的软件拆分为几个较小的RPM,并提供新RPM的子集作为修补程序。这是最常见的方法。