强制 RPM 擦除并安装而不是升级的正确方法是什么?

强制 RPM 擦除并安装而不是升级的正确方法是什么?

我有一个 RPM,其软件的数据库架构最近已完全重新设计。当前版本(我们称之为 B.0)与旧版本的数据库架构不兼容。

幸运的是,它仍处于测试阶段,而且由于尚未正式发布,所以我想避免编写任何数据库迁移脚本,除非(并且直到)真正有必要这样做。

升级将失败,因为(新)数据库架构创建发生在升级期间从未运行的脚本中,这会使应用程序处于不良状态。如果安装了 Ax,我希望他们删除并重新安装。

我找到了 RPM 的“冲突”标签,它似乎可以完成工作,但错误消息具有误导性“文件 ____ 与包 Ax 中的文件冲突”,并且有足够经验的人可能会尝试升级并替换冲突,但这没用,因为创建数据库所需的脚本仍然不会运行。

发生冲突时,是否可以打印更具描述性的错误消息?是否有“正确的方法”替代方案?

答案1

如果你的套餐无法升级,你应该考虑重命名包。例如,如果你的软件的第三个版本是重写的,那么你最终可能会foo3-3.0.0-1.x86_64得到已过时foo <= 3.0.0。

仅当升级路径在技术上不可行时这才是合适的。

https://docs.fedoraproject.org/en-US/packaging-guidelines/#renaming-or-replacing-existing-packages

另外,既然你提到这是一个测试版,你可能需要看看他们的版本控制指南使其保持可按数字排序。(您将希望使用非测试版本替换测试版本。)

https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/

相关内容