如何防止并行安装多个版本的 RPM?

How to prevent parallel installation of multiple version of an RPM?

我正在创建一个 RPM 文件(使用 rpmbuild)。目前可以并行安装多个版本的 RPM(显然 RPM 不会阻止这种情况),但这会导致问题,因为我的 %pre%post 脚本会创建和删除一些文件,因此多个并行安装会相互冲突。

有没有办法在构建 RPM 时防止这种并行安装?

该软件包适用于 CentOS (RHEL) 6。

编写 %pre%post 脚本来处理这个问题(它们被赋予一个参数,指示事务完成时将安装多少个版本的包)。

或者,您可以尝试与您自己的软件包的所有旧版本发生冲突。这可能有用。

没有必要阻止并行安装,因为在给出并发请求时 RPM 数据库(或 YUM)会很忙。但是,如果您的软件包创建的文件不属于“%files”列表的一部分,那么您必须提供安装、卸载和升级。

对于升级,您需要一个一致的版本控制方案:"newer" 包必须有一个 "higher" 版本号。鉴于此,您的规范文件必须能够检查不同的模式(安装、卸载和升级)。详细信息在 RPM upgrade uninstalls the RPM 中,似乎缺少具体示例。