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

kai*_*der 4 rpm

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

根据使用 config(noreplace)我的规范文件将单个文件标记为配置文件:

%config(noreplace) /opt/lm/dest/conf/db.xml
Run Code Online (Sandbox Code Playgroud)

我对版本 1 的文件进行了磁盘修改并继续升级到版本 2。我期待详细输出(使用时-Uvh)表明它已经创建了一个db.xml.rpmnew它没有但是我所做的磁盘修改完好无损。

有谁知道为什么会这样?

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

编辑 1:

如果不清楚db.xml.rpmnew文件未创建。

HBr*_*ijn 8

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

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

根据更新日志:

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

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

%config(noreplace) 的当前行为创建了一个 .rpmnewfile,如果当前文件的类型已更改为原始安装的类型。

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

Patch from Tomas Mraz.
Run Code Online (Sandbox Code Playgroud)

  • 你的 rpm 包的版本 1 和版本 2 之间包含的配置文件有区别吗?不?然后没有 .rpmnew 文件。- 隐含的逻辑是,您的自定义修改对于升级后的软件包版本仍然有效。现在,如果包的新版本具有全新的默认值,那么管理员可能/应该将他的修改与包维护者包含的新默认设置进行比较,并且 .rpmnew 文件很有用,应该创建。 (2认同)