%preun
我们以前分发的 RPM 脚本中有一个错误。此错误已得到纠正,但现在升级到较新版本失败,因为以前的版本无法干净地卸载:
Error in PREUN scriptlet in rpm package perl-perfSONAR-OPPD-MP-server
/var/tmp/rpm-tmp.veW9Jb: line 5: syntax error: unexpected end of file
error: %preun(perl-perfSONAR-OPPD-MP-server-3.4-1.pSPS.noarch) scriptlet
failed, exit status 2
可以通过手动卸载过时的软件包(不执行该%preun
部分),然后重新安装新的软件包来解决此问题:
rpm -e --nopreun perl-perfSONAR-OPPD-MP-server-3.4-1.pSPS.noarch
rpm -i --replacepkgs perl-perfSONAR-OPPD-MP-server-3.5-0.0.a1.pSPS.noarch.rpm
这是一个手动过程,需要系统管理员的干预,我们希望避免这种情况。
是否有人知道通过 yum 执行相同操作的方法,以便删除先前的软件包,然后安装新的软件包而不会出现错误,所有这些都只需一个 yum 命令或通过 yum 自动升级即可完成?
如果有必要的话,我们正在使用 CentOS 6。
答案1
目前还没有已知的方法可以使用有缺陷的脚本来自动执行 yum 升级:yum 不会解析也不会将必要的禁用程序传递给 rpm lib。