打包RPM,避免创建.rpmnew文件

时间:2016-03-17 12:46:14

标签: linux rpm

我正在打包自己的一些软件,作为我需要的安装的一部分 将一些配置文件放在3.方使用的目录中。

为避免覆盖已在本地更改的配置,该文件在RPM .spec文件中标记为配置文件:

%config(norelace) /opt/lmd/conf/srv1.conf

问题是升级rpm现在会生成文件

 /opt/lmd/conf/srv1.conf.rpmnew

如果/opt/lmd/conf/srv1.conf已在本地更改。 3.d方软件读取/ opt / lmd / conf / *中的所有内容。

我能以某种方式在RPM .spec文件中标记配置文件,以便不生成这样的.rpmnew文件吗?

3 个答案:

答案 0 :(得分:1)

不是我意识到的。这个(以及人为的等价物.bak.off.tmp等)是大多数工具在读取配置文件时全局*.conf或类似的原因。

如果您无法修改第三方工具来解决该问题,那么您无法直接安装到该目录并让用户进行复制。

(您可以打包旧文件或旧配置文件的总和,并根据%post等中的当前文件检查这些文件,但这很丑陋,手动且容易出现故障。)

可能能够手动删除/移动.rpmnew(或%post)scriptlet中的%posttrans个文件,但我不知道如果这实际上是可能的(按时间顺序)。

答案 1 :(得分:1)

这些备份是出于好的理由而且只有在这些文件被更改时才会完成。这里描述了何时创建.rpmsave和何时.rpmnew:http://www-uxsup.csx.cam.ac.uk/~jw35/docs/rpm_config.html

存在工具rpmconf,可以帮助查找,合并和删除这些文件。但是因为它查询rpm数据库(因为它是交互式的),所以不应该从rpm scriptlet调用它。

如果第三方SW读取/ opt / lmd / conf / *中的所有内容,那么我将调用该错误,因为最佳做法是只读取/opt/lmd/conf/.conf这样的方法,例如httpd - 阅读/etc/httpd/conf.d/.conf。因此,请与供应商联系并将其报告为错误。

答案 2 :(得分:1)

另一种选择是将您放入目录的配置文件默认为 nothing ,即所有选项都已注释掉。

(我仍然认为这不是一个问题应该解决,但另一个供应商应该......因为这对任何打包配置文件的人来说都是一个问题。)