RPM 是否已安装?二进制比较

RPM 是否已安装?二进制比较

在我目前的工作地点,我们有时会收到一包 RPM,并被告知要更新我们的环境。为我们提供更新的实体在流程上非常松懈,有时会更改软件包而不更新任何版本号等。所以我们必须盲目地安装他们给我们的任何东西(这可能需要很长时间)。

例如:有时我们安装了 abc-1.2.3.rpm,然后又得到了一个新的 abc-1.2.3.rpm,它包含修复程序,但版本号完全相同!是的。这很愚蠢,但我们必须处理它。

有没有办法知道某个 RPM 文件是否与当前安装的文件匹配?通过 MD5SUM、SHA1 或二进制 diff 等?

为了解决这个问题,我们复制系统中特定目录中安装的所有 RPM,然后对它们和任何新文件进行二进制文件比较(如果它们具有匹配的文件名)。如果二进制比较显示不同,则我们安装该 RPM,并将 RPM 文件移动到该“已安装”目录(以供将来比较)

一定有更好的方法。有什么建议吗?

答案1

乍一看,您可能会考虑基于 rpm --verify 的某些操作,但它不允许您询问“已安装的文件是否与此 RPM 文件中的文件相同?”,而是询问“已安装的文件是否与 RPM 数据库中列出的文件相同(已安装软件包)”

但是,您可以编写一个脚本来执行基于“rpm --query --dump --package some.rpm”的类似操作,它将输出文件名(带有 MD5),然后您可以进行检查。

理想情况下,打包者似乎确实需要使用 Release 字段。

相关内容