根据 RPM 文档,%前,%邮政,%preun和%postun脚本必须返回 0 才能继续进行(卸载)。
(1)但是其中一个脚本返回非零值会产生什么效果呢?
(2)到目前为止进行的操作是否会被撤消,让系统保持调用 RPM 安装(卸载)之前的状态?
(3)是否涉及交易机制?
我查看了文档(包括 Fedora 官方文档在内的许多页面),但没有找到任何线索(至少据我理解,没有“白纸黑字”的东西)。
答案1
我找到的信息来自 Redhat 错误 216221 从 2006 年 11 月开始。我不知道以下文字是否仍然有效。
该帖子的最后一条内容是:
- %pre 和 %preun 脚本以非零代码退出会导致安装/清除失败,就像以前一样。需要保留此行为,因为各种软件包都会使用此行为来阻止某些条件下的安装/卸载。
- 其他脚本的非零退出代码仅被视为警告(即 %postun 失败将记录警告,但包仍将被删除)
- 由于信号和其他“异常”原因而死亡的脚本仍然被视为错误
- 对于所有脚本错误,都会向回调发出 RPMCALLBACK_SCRIPT_ERROR 通知,并在“amount”参数和“total”参数中传递失败脚本的标签,其中包含 RPMRC_OK / RPMRC_FAIL,以表示 rpm 是否将其视为警告或错误
答案2
我只有部分答案,但我希望它能对你有所帮助......
- 安装将考虑失败的,但据我所知没有实际影响:这些文件仍然会存在于您的系统等中。
%preun
然而,我在删除脚本失败的包时遇到了麻烦。 - 未撤消任何操作.
rpm
无法神奇地知道如何撤消您在脚本中输入的命令。 - 我真的不知道是否涉及事务机制。您可以对此进行一些测试:安装一个好的 rpm 和一个带有损坏
%post
脚本的 rpm...