安装rpm时,如果已安装较新版本,则安装将停止。
如何在spec文件的%postun
部分实现相同的逻辑?
在上图中,我希望用户只能卸载最新的升级。
编辑以回应Chris Maes的评论
是的,这是一种奇怪的方法。但是使用rpm -Uvh <rpm-name>
升级会卸载以前的版本。但我们也希望允许用户回滚到以前的版本。
假设已连续3次升级,即升级A,B&amp; C.
用户可能想要卸载C并返回B,或者甚至可能是A。
使用rpm -U
方式,在升级C之后,我们没有办法逐步从C降级到B再降到A.所以我们决定采用这种方式并在每次升级安装时,我们将备份更改的文件。在降级期间,我们可以简单地替换先前升级的文件。
但是,我们希望确保用户在卸载时遵循相同的顺序。
我使用的方法可能是错的。请随时提出替代方案。
答案 0 :(得分:1)
如果你的更新包含一个文件(或一堆文件;为简单起见,名为 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(甚至可以检测到这个版本),这将升级/降级他的数据。并且您可以控制该脚本,然后您可以按正确的顺序对其进行编码。