在%post上恢复rpm安装失败

时间:2014-12-12 10:02:34

标签: rpm rpmbuild rpm-spec

在%post中,我正在运行几个将验证rpm安装的测试。 但是如果测试失败或后脚本失败,我该如何恢复rpm安装?

2 个答案:

答案 0 :(得分:1)

你不可能,你不应该。

%post为时已晚,无法中止。您的所有文件都已放在磁盘上等等。

你可以禁用自己,这样你就不会跑,但这就是它。

如果这些事情你真的不能让它失败那么你能做的最好就是在%pre期间进行测试并在那里中止(但即使这样也是邪恶的)。

答案 1 :(得分:1)

这是我在%{basedeploymentpath}中使用的黑客回滚:

rpm -ev

在上面的代码段中,如果找不到代表目录的变量&,则在包的名称上调用%post,使用1分叉进程。在提到的条件下,rpm -ivh脚本将以代码warning: %post(...) scriptlet failed, exit status 1退出。

如果安装过程随后在命令行(rpm -ivh)运行,并且安装后存在错误情况,则会显示以下结果:0

这是一个丑陋的黑客,但它的工作原理。 注意:如果在运行echo $?操作后执行rpm -ivh set_fact: groups: "{{ env }}_{{ hostname }}_groups" 命令的退出状态仍将显示为成功(退出pairLists: { env_1: { host1_1: [1,2,3,4], host2_1: [2,3,4,5], }, env_2: { host2_1: [3,2,3,4], host2_2: [6,5,4,3], }, }