我目前正在开发我的第一个Linux RPM软件包以供发布。在%post挂钩期间,我想确保特定文件驻留在目标系统上。如果此文件存在,我希望安装继续。如果缺少此文件,我希望RPM中止安装并报告错误代码。
.spec文件中的条件逻辑工作正常,但在错误情况下添加“return 1”会导致RPM抛出错误(具有讽刺意味的是,在这种情况下RPM会返回错误代码)。但是告诉RPM安装失败并正常退出的“正确”方法是什么?
谢谢!
答案 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