【发布时间】:2015-10-15 06:33:09
【问题描述】:
tldr;是否可以在使用 -U “升级”软件包时强制 RPM 检查磁盘上的物理文件是否有更改?
目前情况:
- 安装 rpm a1
- 应用程序修改了 a1 中的文件。
-
rpm -V a显示正在修改的文件。 - 安装 rpm a2(使用 -U:升级)。此 rpm 包含与 a1 中的大部分相同的文件(它是下一个版本,仅更改了一些文件)
-
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