在Ubuntu 21.10,
当试图在包apt (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 reinstall,apt 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) ...发布于 2022-06-20 09:45:00
如果您有一段时间没有更新您的系统,那么首先需要运行:
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或者强制重新配置(use警告使用 --force),如下所示:
sudo dpkg-reconfigure --force package-name然后,阅读男子汉的摘录:
删除包将删除所有打包的数据,但通常会留下很小(修改过的)用户配置文件,以防删除是意外的。只需为意外删除的包发出安装请求,就会恢复其功能,就像以前一样。另一方面,即使在已经删除的包上,也可以调用清除来清除这些剩菜。请注意,这不会影响存储在主目录中的任何数据或配置。
并决定是否使用:
sudo apt remove package-name或者:
sudo apt purge package-name或(caution需要):
sudo dpkg -r --force-remove-reinstreq package-name要理解,请阅读人dpkg的以下摘录:
标记为required的包已损坏,需要重新安装。这些包不能被移除,除非强制使用选项-强制-删除-reinstreq。
或者作为最后的手段(extreme警告需要):
sudo dpkg -r --force-all package-name仔细阅读错误信息并注意正确的包命名..。例如,postgresql-14通常是<#>不与postgresql相同。
发布于 2022-06-20 10:37:22
有一个名为/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的阻碍了。
https://askubuntu.com/questions/1414861
复制相似问题