在升级过程中,%preun的值为0到$ 1

我有一个已安装在系统中的rpm包。 我想用不同的软件包名称replace旧软件包。 “rpm -Uvh [软件包名称]”应该足以将旧软件包replace为新软件包。

在网上做了一些研究之后,我发现“Obsoletes”是用来废弃一个旧的包,并用一个不同的名称replace成一个新的包。 我在我的rpm spec文件中使用了“Obsoletes”,但是当我试图从旧软件包升级时,旧软件包的%preun被$ 1 = 0调用,我预期$ 1 = 1。

如果我在任何地方出错,请纠正我。 这个问题有没有更好的解决办法?

谢谢

这个问题有没有更好的解决办法?

rpm -e --nopreun <old-package> && rpm -i <new-package>

您可以选择性地使用--no<scriptname>来启用和禁用特定的脚本,或者可以使用--noscripts禁用所有脚本。

确保你检查与新包相关的各种脚本; 你可能不得不禁用其中的一些。

史蒂夫

PS这可能是一个更好的问题发布在serverFault上 。 🙂

我对你的问题的理解是,旧的软件包在你的%preun脚本中做了一些你不想做的事情(比如删除一个用户帐户或类似的东西),对吧?

解决这个问题的一种方法是创建一个中间的虚拟rpm版本N + 1,它不包含任何文件,升级到那个包,然后更新到最终的新包。