我尝试安装和卸载postgres
9.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 ~]#
如何解决这个错误?
任何帮助都将不胜感激,因为我对 postgres 完全是新手,这是我第一次尝试在 postgres 上做一些事情。
答案1
那么如何使用 rpm 命令呢:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACK-AGE_NAME ...
您可以先直接尝试,然后使用 --nodeps 参数,如下所示:
rpm -ev postgresql93-server-9.3.6-1PGDG.rhel5
完整命令详情: RPM 擦除命令
答案2
这种错误很可能是由脚本引起的。在删除软件包时,RPM 会在删除软件包之前运行“preuninstall”,在删除软件包之后运行“postuninstall”。如果“preuninstall”失败,则不会删除该软件包。
您可以使用 检查软件包的脚本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):
我猜你的 postgresql93-server RPM 有类似的东西,并且最后一个命令(部分chkconfig --del
)失败导致包无法被删除。
我可以建议两个选择。
1)不运行脚本的情况下删除包:
rpm -e --noscripts postgresql93-server
2)重新安装该软件包,以期修复所有损坏的内容,因为“preuninstall”将作为参数传递 1,并且失败的代码将不会运行。
yum reinstall postgresql93-server
yum remove postgresql93-server