2010-05-11 39 views
5

我的Perl代码以root身份安装了几个(4)rpm文件。在安装新版本之前,下一次安装将删除它们(rpm -e)。其中一个不会删除,rpm -e会给出未安装的错误。但是,稍后安装更新的文件时,会显示消息已经安装。Linux rpm安装但不能擦除。为什么?

手动尝试删除给出相同的结果。我的问题是如何强制从rpm数据库中删除某些东西,以及为什么存在这种矛盾(不是从rpm -e安装的,并且已经从rpm -Uvhrpm -ivh安装)?

+4

删除它也许最好在superuser.com上发布此问题?!另外,请尝试:rpm -e --nodeps {package_name} – mosg 2010-05-11 13:26:21

回答

11
  1. 安装完成后,使用软件包名称,而不是软件包文件名。
  2. 在升级之前,您不需要删除软件包。这样做意味着一个或两个包装都损坏了。
1

rpm -e --force停止它来检查其他依赖强制删除软件包,rpm -e --nodeps

这可能是您的RPM数据库处于弯曲某种方式变了形,你不妨试试的rpm --rebuilddb

+1

强制以这种方式删除rpm不再适用于CentOS 6.4。试图强制返回响应:rpm:只有安装,升级,rmsource和rmspec可能会被强制 – Magellan 2014-09-08 23:07:34

6

它也不会消失可能是因为小脚本的一个失败的原因。手动操作并观察错误。如果它提到一个失败的scriptlet,请尝试用rpm -e --noscripts

+0

谢谢 - 这解决了我用我自己构建的包的问题,​​它在预删除scriptlet中有错误。 – RCross 2015-02-16 17:53:23