打包 RPM,避免创建 .rpmnew 文件
Packaging RPM, avoid creating .rpmnew file
我正在打包我自己的一些软件,作为我需要的安装的一部分
将一些配置文件放在 3. 派对使用的目录中。
为避免覆盖已在本地更改的配置,该文件在 RPM .spec 文件中被标记为配置文件:
%config(norelace) /opt/lmd/conf/srv1.conf
问题是升级 rpm 现在会生成文件
/opt/lmd/conf/srv1.conf.rpmnew
if /opt/lmd/conf/srv1.conf 已在本地更改。 3.d 派对软件读取 /opt/lmd/conf/* 中的所有内容。
我能否以某种方式在 RPM .spec 文件中标记配置文件以不生成这样的 .rpmnew
文件?
我不知道。这(以及人为的等价物 .bak
、.off
、.tmp
等)就是为什么大多数工具在读取配置文件时会出现 *.conf
或类似的原因。
如果您不能修改第三方工具来解决该问题,那么除了不直接安装到该目录并让用户进行复制外,您真的无能为力。
(您也可以打包旧文件或旧配置文件的总和,然后将它们与 %post
中的当前文件进行检查,等等。但这很丑陋,需要手动操作,并且容易出现故障。)
您可能能够手动remove/move您的%post
(或%posttrans
)脚本中的.rpmnew
文件,但是我不知道这是否真的可能(时间方面)。
进行这些备份是有充分理由的,并且只有在这些文件被更改的情况下才进行。这里描述了何时创建 .rpmsave 和何时创建 .rpmnew:http://www-uxsup.csx.cam.ac.uk/~jw35/docs/rpm_config.html
存在工具rpmconf
,可以帮助查找、合并和删除这些文件。但是因为它查询 rpm 数据库(并且因为它是交互式的)你不应该从 rpm scriptlet 调用它。
如果第 3 方 SW 读取 /opt/lmd/conf/* 中的所有内容,那么我会调用该错误,因为最佳实践是只读取 /opt/lmd/conf/.conf 这样的方式,例如httpd - 阅读 /etc/httpd/conf.d/.conf。因此,请联系您的供应商并将其报告为错误。
另一种选择是让您放入目录的配置文件默认执行 nothing,即所有选项都被注释掉。
(我仍然认为这不是 你 应该解决的问题,但其他供应商应该......因为这对任何打包配置文件的人来说都是一个问题。 )
我正在打包我自己的一些软件,作为我需要的安装的一部分 将一些配置文件放在 3. 派对使用的目录中。
为避免覆盖已在本地更改的配置,该文件在 RPM .spec 文件中被标记为配置文件:
%config(norelace) /opt/lmd/conf/srv1.conf
问题是升级 rpm 现在会生成文件
/opt/lmd/conf/srv1.conf.rpmnew
if /opt/lmd/conf/srv1.conf 已在本地更改。 3.d 派对软件读取 /opt/lmd/conf/* 中的所有内容。
我能否以某种方式在 RPM .spec 文件中标记配置文件以不生成这样的 .rpmnew
文件?
我不知道。这(以及人为的等价物 .bak
、.off
、.tmp
等)就是为什么大多数工具在读取配置文件时会出现 *.conf
或类似的原因。
如果您不能修改第三方工具来解决该问题,那么除了不直接安装到该目录并让用户进行复制外,您真的无能为力。
(您也可以打包旧文件或旧配置文件的总和,然后将它们与 %post
中的当前文件进行检查,等等。但这很丑陋,需要手动操作,并且容易出现故障。)
您可能能够手动remove/move您的%post
(或%posttrans
)脚本中的.rpmnew
文件,但是我不知道这是否真的可能(时间方面)。
进行这些备份是有充分理由的,并且只有在这些文件被更改的情况下才进行。这里描述了何时创建 .rpmsave 和何时创建 .rpmnew:http://www-uxsup.csx.cam.ac.uk/~jw35/docs/rpm_config.html
存在工具rpmconf
,可以帮助查找、合并和删除这些文件。但是因为它查询 rpm 数据库(并且因为它是交互式的)你不应该从 rpm scriptlet 调用它。
如果第 3 方 SW 读取 /opt/lmd/conf/* 中的所有内容,那么我会调用该错误,因为最佳实践是只读取 /opt/lmd/conf/.conf 这样的方式,例如httpd - 阅读 /etc/httpd/conf.d/.conf。因此,请联系您的供应商并将其报告为错误。
另一种选择是让您放入目录的配置文件默认执行 nothing,即所有选项都被注释掉。
(我仍然认为这不是 你 应该解决的问题,但其他供应商应该......因为这对任何打包配置文件的人来说都是一个问题。 )