Linux %在升级过程中,preun以0到$1的值传递

Linux %在升级过程中,preun以0到$1的值传递,linux,rpm,Linux,Rpm,我有一个rpm软件包,它已经安装在系统中。我想用具有不同包名的新包替换旧包。“rpm-Uvh[包名]”应该足以用新包替换旧包 在网上做了一些研究之后,我发现“废弃”用于废弃旧包,并用一个不同名称的新包替换它。 我在rpm规范文件中使用了“Obsoletes”,但当我尝试从旧包升级时,会使用$1=0调用旧包的%preun,我希望是$1=1 如果我哪里出了问题,请纠正我。有没有更好的办法解决这个问题 谢谢我对您的问题的理解是,旧软件包在其%preun脚本中执行了您不希望它执行的操作(如删除用户帐户或

我有一个rpm软件包,它已经安装在系统中。我想用具有不同包名的新包替换旧包。“rpm-Uvh[包名]”应该足以用新包替换旧包

在网上做了一些研究之后,我发现“废弃”用于废弃旧包,并用一个不同名称的新包替换它。 我在rpm规范文件中使用了“Obsoletes”,但当我尝试从旧包升级时,会使用$1=0调用旧包的%preun,我希望是$1=1

如果我哪里出了问题,请纠正我。有没有更好的办法解决这个问题


谢谢

我对您的问题的理解是,旧软件包在其%preun脚本中执行了您不希望它执行的操作(如删除用户帐户或类似操作),对吗

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

是否有更好的解决方案

rpm-e--nopreun&&rpm-i

您可以使用有选择地启用和禁用特定脚本
--no
,或者您可以使用
--noscripts
禁用所有脚本

确保检查与新包关联的各种脚本; 您可能还必须禁用其中一些功能

-史蒂夫


p、 这可能是一个更好的问题,最好发布在:

是的,你是对的,但是我不能将虚拟包分发给用户。%preun scriptlet在此负责停止守护进程并从“chkconfig”中删除条目。是否有其他方法可以升级到具有不同包名的新包,并且旧包的%preun scriptlet不会执行或在$1=1时执行。