【问题标题】:Force RPM to examine physical files when Upgrading升级时强制 RPM 检查物理文件
【发布时间】:2015-10-15 06:33:09
【问题描述】:

tldr;是否可以在使用 -U “升级”软件包时强制 RPM 检查磁盘上的物理文件是否有更改?

目前情况:

  1. 安装 rpm a1
  2. 应用程序修改了 a1 中的文件。
  3. rpm -V a 显示正在修改的文件。
  4. 安装 rpm a2(使用 -U:升级)。此 rpm 包含与 a1 中的大部分相同的文件(它是下一个版本,仅更改了一些文件)
  5. rpm -V a 表明只有部分文件没有恢复到 a2 rpm 中的内容。

我最好的猜测是,rpm 仅将已安装包 a1 中的文件的 md5 与包 a2 中的文件进行比较,并且只有当 md5 不匹配时,它才会查看物理文件。 我将如何强制 rpm 查看所有文件,就像使用 -V 一样?

修改文件的示例输出:

/ # rpm -V a
missing   c /xxx/config/xyz.ini
S.5....T c /xxx/config/foo.xml
S.5....T c /xxx/config/firmware/xx.cfw
S.5....T c /xxx/config/bar.txt
S.5....T c /xxx/config/bar.xml

rpm -qc 确实列出了它们。

【问题讨论】:

  • 有问题的文件是否在 RPM 中标记为配置文件? rpm -qc a 是否列出了它们? rpm -V a 的输出到底是什么?
  • 通过那个指针我发现:www-uxsup.csx.cam.ac.uk/~jw35/docs/rpm_config.html rpm 文件是用 cmake 构建的,难道 cmake 默认将所有文件添加为配置文件?
  • 我怀疑 cmake 正在构建 rpm 包本身。几乎可以肯定的是,它只是使用现有的.spec 文件,其中标记为%config/%config(noreplace) 文件。如果这不是您想要的,那么您可以编辑/修复规范文件以不这样做。给定配置文件标记,如果这些文件没有被更新,那么 RPM 完全按照它的指示进行操作。
  • 我明天(星期一)会调查它,但据我所知,这只是正确配置 cmake 的问题,您能否将您的评论移至答案?
  • CMake确实会生成一个spec文件,所有添加绝对路径的文件都用%config标记,所有添加相对路径的文件都没有标记。

标签: rpm


【解决方案1】:

您描述的行为是 RPM 规范文件中标记为 %config(noreplace) 的文件的正确行为。因为该标记向 rpm 表明该文件旨在由用户/系统管理员修改,并且不应在软件包升级时自动替换。

我会检查这些文件是否在规范文件中以这种方式列出,以及这是否是这些文件的正确标记。

【讨论】:

  • 我们使用 CMake 创建 RPM 文件。事实证明,以绝对文件名传递给 CMake 的路径将在规范文件(由 CMake 生成)中标记为配置文件。所以这是我们的配置问题,而不是 RPM 中的问题。
猜你喜欢
  • 2013-01-08
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 2014-11-17
  • 2014-12-11
  • 1970-01-01
相关资源
最近更新 更多