rpm 脚本返回 1 有什么作用?

rpm 脚本返回 1 有什么作用?

根据 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

我只有部分答案,但我希望它能对你有所帮助......

  1. 安装将考虑失败的,但据我所知没有实际影响:这些文件仍然会存在于您的系统等中。%preun然而,我在删除脚本失败的包时遇到了麻烦。
  2. 未撤消任何操作.rpm无法神奇地知道如何撤消您在脚本中输入的命令。
  3. 我真的不知道是否涉及事务机制。您可以对此进行一些测试:安装一个好的 rpm 和一个带有损坏%post脚本的 rpm...

相关内容