我正在打包自己的一些软件,作为我需要的安装的一部分 将一些配置文件放在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
文件吗?
答案 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 ,即所有选项都已注释掉。
(我仍然认为这不是一个问题你应该解决,但另一个供应商应该......因为这对任何打包配置文件的人来说都是一个问题。)