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

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

幸运的是它还处于testing阶段,而且由于没有正式发布,所以我希望避免编写任何数据库迁移脚本,除非(甚至是)实际上有必要这样做。

升级将失败,因为(新)数据库模式创build发生在从未在升级过程中运行的脚本中,从而使应用程序处于不良状态。 如果安装了Ax,我想让它们擦除并重新安装。

我发现RPM的“冲突”标签,似乎做这个工作,但错误信息是误导“文件____与包Ax的文件冲突”和一个足够聪明的人可能会尝试升级和replace冲突,这不是因为创build数据库所需的scriptlet仍然不会运行。

发生冲突时是否可以打印出更具描述性的错误信息? 有没有一个“正确的方法来做到这一点”的select?

如果你的软件包不能升级,你应该考虑重命名软件包 。 例如,如果你的软件的第三个版本是重写的话,你最终可能会得到foo3-3.0.0-1.x86_64 ,这foo3-3.0.0-1.x86_64 foo <= 3.0.0 foo3-3.0.0-1.x86_64

只有在升级path在技术上不可行时才适用。

https://fedoraproject.org/wiki/Packaging:Guidelines#Renaming.2FReplacing_Existing_Packages

此外,由于您提到它是一个testing版,您可能需要查看其版本控制指南 ,以便在数字上sorting。 (您将希望非Beta版本来replacetesting版。)

https://fedoraproject.org/wiki/Packaging:Versioning#Prerelease_versions