无法更新/删除/重新安装 postgresql 14

无法更新/删除/重新安装 postgresql 14

在 Ubuntu 21.10 上,

当尝试apt使用包postgresql( Ubuntu 14.4-1.pgdg21.10+1) 执行任何操作时,进程挂起Setting up postgresql-14 [...]

$ sudo apt remove postgresql
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  postgresql
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 71,7 kB disk space will be freed.
Do you want to continue? [Y/n] 
(Reading database ... 574023 files and directories currently installed.)
Removing postgresql (14+241.pgdg21.10+1) ...
Setting up postgresql-14 (14.4-1.pgdg21.10+1) ...

同上apt remove,,...apt reinstallapt upgrade

我可以不经过这个初始化步骤强制删除吗?

编辑:dpkg说该包未安装:

$ sudo dpkg -i postgresql
dpkg: error: cannot access archive 'postgresql': No such file or directory

apt autoremove仍然挂起:

$ sudo apt autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up postgresql-14 (14.4-1.pgdg21.10+1) ...

答案1

首先

如果您有一段时间没有更新系统,您首先需要运行:

sudo apt update

安装和删除软件包同样需要最新的软件包数据库。

第二

您遇到的问题:

Removing postgresql (14+241.pgdg21.10+1) ...

进而

Setting up postgresql-14 (14.4-1.pgdg21.10+1) ...

即,当您指定时,系统尝试在尝试删除软件包之后安装它apt remove package-name...通常,表明软件包处于损坏/不稳定状态...要么它一开始就没有正确安装(丢失/损坏的文件)或者你更改了该软件包的某些已安装文件(名称,权限,路径或内容)...您需要先修复它...修复软件包的最简单方法是像这样重新安装它:

sudo apt install --reinstall package-name

或强制重新配置(谨慎使用--force)就像这样:

sudo dpkg-reconfigure --force package-name

那么,请阅读以下摘录男人适合

移除软件包会删除所有打包的数据,但通常会留下一些小的(经过修改的)用户配置文件,以防意外删除。在这种情况下,只需对意外删除的软件包发出安装请求即可恢复其功能。另一方面,您可以通过调用来清除这些残留文件清除 即使是已经删除的软件包。请注意,这不会影响存储在您的主目录中的任何数据或配置。

并决定是否使用:

sudo apt remove package-name

或者:

sudo apt purge package-name

或者 (需谨慎):

sudo dpkg -r --force-remove-reinstreq package-name

要理解这一点,请阅读以下摘录人dpkg

标记为 reinst-required 的软件包已损坏,需要重新安装。这些软件包无法删除,除非使用选项强制删除强制删除-reinstreq

或作为最后的手段(必须极其小心):

sudo dpkg -r --force-all package-name

最后

仔细阅读错误消息,并注意确切的包命名……例如postgresql-14通常是不是和 一样postgresql

答案2

有一个脚本叫做/var/lib/dpkg/info/postgresql-14.postinst

#!/bin/sh

set -e

VERSION=${DPKG_MAINTSCRIPT_PACKAGE##*-}

if [ "$1" = configure ]; then
    . /usr/share/postgresql-common/maintscripts-functions

    configure_version $VERSION "$2"
fi

这就是明显的原因。通过注释此脚本的内容,问题消失了,我终于可以解除阻止了apt

相关内容