我有一个 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/