Linux 如何防止rpm.spec%post代码并行运行?

Linux 如何防止rpm.spec%post代码并行运行?,linux,rpm,yum,rpm-spec,intermittent,Linux,Rpm,Yum,Rpm Spec,Intermittent,在用于指导rpm安装的rpm.spec文件中,如果在安装包后执行%post部分(如此处所述:),这是否意味着,如果针对rpm包列表触发多个yum调用,它们可能会并行执行其%post部分代码 如果YUM不支持并发操作,那么多个YUM调用就不能说明这种情况。但是,如果我们在顶级RPM的RPM.spec脚本中的单个“Requires:”参数中声明了多个RPM,那么它们的%post部分可能会并行运行,因为YUM将收到RPM安装完成的信号,从而导致操作可能会间歇性地相互冲突 关于如何解决/缓解此类问题场景

在用于指导rpm安装的rpm.spec文件中,如果在安装包后执行%post部分(如此处所述:),这是否意味着,如果针对rpm包列表触发多个yum调用,它们可能会并行执行其%post部分代码

如果YUM不支持并发操作,那么多个YUM调用就不能说明这种情况。但是,如果我们在顶级RPM的RPM.spec脚本中的单个“Requires:”参数中声明了多个RPM,那么它们的%post部分可能会并行运行,因为YUM将收到RPM安装完成的信号,从而导致操作可能会间歇性地相互冲突


关于如何解决/缓解此类问题场景,您有什么想法吗?

对于可能受其他包影响的
%post
scriptlet,您希望在
%post
scriptlet中做什么?一般来说,这不应该是一个问题,因为您不应该做任何不完全与您的包相关的事情。话虽如此,我不相信百胜是这样工作的,我也不相信这会发生(但我不确定)。但是,多个yum调用绝对不能做到这一点,yum会锁定以防止出现这种情况。假设您有多个rpm,它们应该针对J2EE应用程序服务器安装和配置web应用程序,rpm.spec脚本将调用jython脚本来执行配置更改,如果某个组件提交了影响任何其他组件的部署/同步/配置的更改,该怎么办?无法想象,抱歉,不知道这是什么样子/意思。但是,如果这样做所涉及的工具/过程非常脆弱,很容易被炸毁,那就很不幸了。但就像我说的,我不相信这是可能的。rpmlib例程(包括运行%post)是串行运行的,而不是并行运行的。唯一的并行性是通过回调来推送进度条并更新用户显示。如果在安装rpm后执行%post,则rpm.spec脚本中的代码将成为在单独的shell会话中执行的临时.sh脚本,YUM/rpm将如何控制任何交叉操作?您是说这些/tmp/xxx.sh脚本即使在“安装”了包之后仍然由RPM进程管理吗?