软件包升级时未创建 .rpmnew 文件?

软件包升级时未创建 .rpmnew 文件?

我目前正在测试使用指令安装带有配置文件的 RPM config(noreplace)

按照使用 config(noreplace)我的 spec 文件将单个文件标记为配置文件:

%config(noreplace) /opt/lm/dest/conf/db.xml

我对版本 1 的文件进行了磁盘修改,然后继续升级到版本 2。我期望详细输出(使用时-Uvh)表明它已创建,db.xml.rpmnew但事实并非如此,然而我所做的磁盘修改是完整的。

有人知道为什么会这样吗?

一些背景信息:我使用相同的 tar 文件来创建版本 1 和 2,这应该不会有什么区别,但无论如何我还是想提一下。

编辑1:

如果不清楚的话,则db.xml.rpmnew文件未创建。

答案1

您观察到的是预期的行为。.rpmnew仅当同时满足以下两个条件时才会创建包:

  1. 新 RPM 软件包中的默认配置文件与当前/以前版本的 RPM 软件包中原有的配置文件不同。(软件包维护者对默认配置文件进行了更改。)
  2. 磁盘上的实际配置文件已从当前/以前版本的软件包所含的默认配置文件中更改。(默认配置文件的更改由管理员进行。)

根据变更日志:

提交 e64bf5b93ab689e6031fce4489e4ae38ebaebef1
作者:Panu Matilainen
日期:2007 年 8 月 28 日星期二 09:04:09 +0300

当包中的文件没有改变时避免使用 .rpmnew (rhbz#194246)

%config(noreplace) 的当前行为是创建一个 .rpmnewfile,当且仅当当前文件的类型已更改为最初安装的类型。

此补丁改变了这一行为,因此当新旧(在数据库和包中)相同 -> 未更改时,函数返回 FA_SKIP -> 它不会破坏任何内容,只是跳过安装包中的文件。此补丁还处理相反的情况,即当新旧包包含 %config符号链接并且磁盘上有常规文件时。

Patch from Tomas Mraz.

相关内容