无法卸载 RPM 包

Viv*_*shi 8 rpm

我试图安装和卸载postgres9.3。在执行了各种步骤后,我发现我手动删除了一些东西,现在我无法进一步进行。

我在这里试图实现的是删除postgres. 我无法删除postgresql93-server-9.3.6-1PGDG.rhel5包。

我收到以下错误:

[root(at)ZetaSearch01 ~]# rpm -qa | grep postg
postgresql93-server-9.3.6-1PGDG.rhel5
[root(at)ZetaSearch01 ~]# yum remove postgresql93-server-9.3.6-1PGDG.rhel5
Loaded plugins: rhnplugin, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package postgresql93-server.x86_64 0:9.3.6-1PGDG.rhel5 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================================================================
 Package
Arch
Version
Repository                           Size
========================================================================================================================================================================
Removing:
 postgresql93-server
x86_64
9.3.6-1PGDG.rhel5
installed                            15 M

Transaction Summary
========================================================================================================================================================================
Install      0 Package(s)
Update       0 Package(s)
Remove       1 Package(s)

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
error reading information on service postgresql-9.3: No such file or
directory

Removed: postgresql93-server.x86_64 0:9.3.6-1PGDG.rhel5
Complete!
[root(at)ZetaSearch01 ~]# rpm -qa | grep postg
postgresql93-server-9.3.6-1PGDG.rhel5
[root(at)ZetaSearch01 ~]#
Run Code Online (Sandbox Code Playgroud)

如何解决这个错误?

任何帮助将不胜感激,因为我对 postgres 完全是新手,这是我第一次尝试在 postgres 上做一些事情。

chu*_*utz 20

这种错误很可能是由 scriptlet 引起的。删除软件包时,RPM 会在删除软件包之前运行“preuninstall”,并在删除它之后运行“postuninstall”。如果“预卸载”失败,则不会删除软件包。

您可以使用rpm -q --scripts postgresql93-server. 比如postgresql92-server我机器上的包就包含这个(缩写版只显示预卸载)

$ rpm -q postgresql92-server --scripts  | sed -ne /^preuninstall/,/scriptlet/p
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ] ; then
    /sbin/service postgresql-9.2 condstop >/dev/null 2>&1
    chkconfig --del postgresql-9.2
fi
postuninstall scriptlet (using /bin/sh):
Run Code Online (Sandbox Code Playgroud)

我猜你的 postgresql93-server RPM 有类似的东西,最后一个命令( chkconfig --del部分)失败导致包没有被删除。

我可以建议两种选择。

1) 在不运行脚本的情况下删除包:

rpm -e --noscripts postgresql93-server
Run Code Online (Sandbox Code Playgroud)

2)重新安装软件包以希望修复损坏的任何内容,因为然后“预卸载”将作为参数传递 1 并且失败的代码将不会运行。

yum reinstall postgresql93-server
yum remove postgresql93-server
Run Code Online (Sandbox Code Playgroud)

  • `--noscripts` 成功了。这应该是答案。 (6认同)

小智 7

如何改用 rpm 命令:

rpm {-e|--erase} [--allmatches] [--nodeps]  [--noscripts]  [--notriggers]  [--test]  PACK-AGE_NAME ...
Run Code Online (Sandbox Code Playgroud)

您可以先直接尝试,然后使用 --nodeps 参数,如下所示:

rpm -ev postgresql93-server-9.3.6-1PGDG.rhel5
Run Code Online (Sandbox Code Playgroud)

完整的命令详细信息位于: RPM 擦除命令