在Linux RPM安装/升级期间设置错误状态

时间:2013-05-10 18:21:12

标签: linux install rpm

我目前正在开发我的第一个Linux RPM软件包以供发布。在%post挂钩期间,我想确保特定文件驻留在目标系统上。如果此文件存在,我希望安装继续。如果缺少此文件,我希望RPM中止安装并报告错误代码。

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

谢谢!

3 个答案:

答案 0 :(得分:2)

该特定文件是RPM的一部分?如果没有,进行此检查的正确位置在%pre部分。如果是,您可以使用%verify进行验证。当%post运行时,包已经安装,因此它不能“失败”

答案 1 :(得分:1)

将支票放入%pre部分,或将其添加到Requires字段,以便rpm自行检查。

答案 2 :(得分:0)

  

"对"是什么?告诉RPM安装失败的方法   优雅地退出?

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

听起来非常像文件是依赖项,在这种情况下它应该列为需要: / path / to / file

如果它是您为其控制部署的特定于站点的文件,则RPM应部署其自己的良好默认值,您可以在%files 下使用%config指定(默认值)了noreplace)。这将确保不会覆盖任何现有配置,并且默认值将写为 /path/to/file.rpmnew

如果要替换现有配置,则应使用%config 而不使用(noreplace)选项,这会导致现有文件移到 /path/to/file.rpmsave