在卸载rpm之前检查更新的版本

时间:2016-06-15 15:25:54

标签: rpm rpmbuild

安装rpm时,如果已安装较新版本,则安装将停止。

如何在spec文件的%postun部分实现相同的逻辑?

enter image description here

在上图中,我希望用户只能卸载最新的升级。

编辑以回应Chris Maes的评论

是的,这是一种奇怪的方法。但是使用rpm -Uvh <rpm-name>升级会卸载以前的版本。但我们也希望允许用户回滚到以前的版本。

假设已连续3次升级,即升级A,B&amp; C.

用户可能想要卸载C并返回B,或者甚至可能是A。

使用rpm -U方式,在升级C之后,我们没有办法逐步从C降级到B再降到A.所以我们决定采用这种方式并在每次升级安装时,我们将备份更改的文件。在降级期间,我们可以简单地替换先前升级的文件。

但是,我们希望确保用户在卸载时遵循相同的顺序。

我使用的方法可能是错的。请随时提出替代方案。

2 个答案:

答案 0 :(得分:1)

如果你的更新包含一个文件(或一堆文件;为简单起见,名为 upgrade.file ),我不会在方法中看到问题:

  • 在您的存储库中保留所有mayur-upgrade-x-y.rpm
  • mayur-upgrade installs upgrade.file

现在如果你安装mayur-upgrade-1.4;它将安装upgrade.file(版本1.4)。当您强制降级时(使用zypper in -f mayur-upgrade-1-2;然后rpm文件管理系统将自动删除您的upgrade.file(版本1.4)并再次安装upgrade.file(版本1.2)。所以rpm为您完成所有簿记...

答案 1 :(得分:0)

可执行文件的升级/降级以及数据的升级/降级。你把这两者混合在一起。

当然,mayur-upgrade-x-y.x86_64.rpm会知道有关x-y之前的所有内容。所以我建议你只进行一次mayur-upgrade。如果用户降级可能比他应该调用mayur-upgrade X-Y(甚至可以检测到这个版本),这将升级/降级他的数据。并且您可以控制该脚本,然后您可以按正确的顺序对其进行编码。

相关问题