1

我有 3 个包,我们正在构建spec文件来安装我们的应用程序:

Package A
Package B
Package C

A depends on B
A depends on c

问题是这些软件包中的每一个都安装了需要在安装前关闭 App Server 并在安装后重新启动的东西。

如果只安装 B 或 C,这很好。

安装 A 并且有新版本的 B 和/或 C 时出现的问题,我的 App Server 需要 3 次串行重启,每次重启大约需要 10 分钟。

当我们构建 RPM 时,有没有办法让 A 和 B 检测到它们作为 A 的依赖项被安装/更新,而不是重新启动服务器并让 A 这样做?

4

1 回答 1

1

我不知道是否有本地方法可以做到这一点,但我过去所做的是%pre如果目标服务正在运行(例如httpd),则检查所有包。如果是,请关闭它并使用at它在未来一段合理的时间内(如两分钟)重新启动。每个 RPM 还会检查重新启动是否已经在队列中(我使用了一个随机队列,例如“n”或其他东西),如果是,它会再将它撞出两分钟。最终结果应该是服务器只出现一次,即在安装最终软件包后两分钟。

缺点:即使atLSB中,由于某些原因,少数机器没有安装它,所以我不得不将它添加到我的Requires标签中。

于 2014-01-30T02:18:56.827 回答