2013-05-10 65 views
1

我目前正在开发我的第一个Linux RPM包以供发布。在%post挂钩期间,我想确保特定文件驻留在目标系统上。如果此文件存在,我想安装继续。如果这个文件丢失,我想让RPM中止安装并报告错误代码。在Linux RPM安装/升级过程中设置错误状态

.spec文件中的条件逻辑工作正常,但在错误情况下添加“返回1”会导致RPM引发错误(并且具有讽刺意味的是,在这种情况下,RPM确实会返回错误代码)。但是,告诉RPM安装失败并正常退出的“正确”方式是什么?

谢谢!

回答

2

该特定文件是RPM的一部分?如果不是,则执行此检查的正确位置位于%pre部分中。如果是,您可以使用%验证进行验证。当%运行后,包已经安装,所以它不可能是“失败”

1

要么把支票在%pre部分,或将其添加到Requires领域做出rpm自己检查你。

0

什么是“正确”的方式告诉RPM安装已失败,并 优雅地退出?

最佳实践是,如果满足所有列出的依赖关系,RPM安装应该不会失败。

这听起来非常像文件的依赖性,在这种情况下,它应该被列为要求: /路径/到/文件

如果它是你控制的部署站点特定的文件,则RPM应该部署自己预设好的,您可以在%文件%配置(了noreplace)指定。这将确保任何现有配置都不会被覆盖,并且默认设置为/path/to/file.rpmnew

如果要替换现有的配置,你可以使用%配置没有(了noreplace)选项,这将导致现有的文件被搁置移到/path/to/file.rpmsave