【发布时间】:2015-04-30 08:13:10
【问题描述】:
我正在创建一个 RPM 文件(使用 rpmbuild)。目前可以并行安装多个版本的 RPM(显然 RPM 不会阻止这种情况),但这会导致问题,因为我的 %pre 和 %post 脚本会创建和删除一些文件,因此多个并行安装会与彼此。
在构建 RPM 时有没有办法防止这种并行安装?
该软件包适用于 CentOS (RHEL) 6。
【问题讨论】:
标签: linux centos rpm rhel rpmbuild
我正在创建一个 RPM 文件(使用 rpmbuild)。目前可以并行安装多个版本的 RPM(显然 RPM 不会阻止这种情况),但这会导致问题,因为我的 %pre 和 %post 脚本会创建和删除一些文件,因此多个并行安装会与彼此。
在构建 RPM 时有没有办法防止这种并行安装?
该软件包适用于 CentOS (RHEL) 6。
【问题讨论】:
标签: linux centos rpm rhel rpmbuild
编写可以处理此问题的 %pre 和 %post 脚本(为它们提供一个参数,指示在事务完成时将安装多少个版本的包)。
或者,您可以尝试与您自己的软件包的所有旧版本冲突。这可能行得通。
【讨论】:
没有必要阻止并行安装,因为 RPM 数据库(或 YUM)在发出并发请求时会很忙。但是,如果您的包创建的文件不属于“%files”列表,那么您必须提供安装、卸载和升级。
对于升级,您需要一致的版本控制方案:“较新”的软件包必须具有“较高”的版本号。鉴于此,您的规范文件必须提供检查不同模式(安装、卸载和升级)的规定。 RPM upgrade uninstalls the RPM 中的详细信息似乎缺少具体示例。
【讨论】:
rpm 或 yum 安装软件包。我记得rpm 有可能最终安装多个版本。但是,使用 yum(以及一致的版本控制方案 - 您没有提供详细信息)我没有看到 yum 导致多个版本。
yum可以确定版本是相关的,它会根据版本号决定哪个“更新”)。此链接显示有人使用不同的包名称来获取多个版本:lists.baseurl.org/pipermail/yum/2007-May/020910.html
yum可用时,它是首选的安装方法,以避免使用的不同数据库之间的混淆。
rpm -Uvh mypackage-2.0-1.x86_64.rpm