“数据目录 /var/lib/postgresql/13/main 不得由 root 拥有”

“数据目录 /var/lib/postgresql/13/main 不得由 root 拥有”

我遇到以下问题:

└─$ sudo apt update && sudo apt full-upgrade -y 

[sudo] password for kali: Hit:1 http://kali.download/kali kali-rolling InR
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done 
1 package can be upgraded. Run 'apt list --upgradable' to see it. 
Reading package lists... Done 
Building dependency tree... Done 
Reading state information... Done 
Calculating upgrade... Done 
The following packages were automatically installed and are no longer required: exfat-fuse gstreamer1.0-pulseaudio libidn11 librest-0.7-0 libsoup-gnome2.4-1 
Use 'sudo apt autoremove' to remove them. 
The following packages will be upgraded: postgresql-13 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 664 not fully installed or removed. Need to get 0 B/14.7 MB of archives. After this operation, 106 kB of additional disk space will be used. 
Preconfiguring packages ... Setting up libss2:arm64 (1.46.4-1) ... (Reading database ... 255637 files and directories currently installed.) 
Preparing to unpack .../postgresql-13_13.4-2_arm64.deb ... invoke-rc.d: could not determine current runlevel 
Stopping PostgreSQL 13 database server: mainError: Data directory /var/lib/postgresql/13/main must not be owned by root ... failed! failed! 
invoke-rc.d: initscript postgresql, action "stop" failed. dpkg: warning: old postgresql-13 package pre-removal script subprocess returned error exit status 1 
dpkg: trying script from the new package instead ... 
invoke-rc.d: could not determine current runlevel Stopping PostgreSQL 13 database server: main
Error: Data directory /var/lib/postgresql/13/main must not be owned by root ... failed! failed! invoke-rc.d: initscript postgresql, action "stop" failed. 
dpkg: error processing archive /var/cache/apt/archives/postgresql-13_13.4-2_arm64.deb (--unpack): new postgresql-13 package pre-removal script subprocess returned error exit status 1 
Errors were encountered while processing: /var/cache/apt/archives/postgresql-13_13.4-2_arm64.deb 
E: Sub-process /usr/bin/dpkg returned an error code (1)

我错过了什么?

答案1

该线程没有正确标记,最上面的答案完全错误,正确答案(JP)缺少一个步骤。这个问题是在arm64上的Kali Nethunter(手机)上出现的,它仍然是一个问题,并且在所有arm64手机上都会发生。当我在一些旧设备上通过 Termux 安装 Nethunter Rootless 2022.2 时,我遇到了这个问题。

需要注意的是,如果您安装 Nethunter rootless,这个软件包并不重要,因为据我所知,rootless 不支持 postgresql 所使用的任何功能。但如果你想修复它...

您需要做的就是运行:

sudo apt update && sudo apt full-upgrade -y 

现在运行它,你必须一起运行它们,否则它将无法工作:

rm -rf /var/lib/dpkg/info/postgresql* && dpkg --configure -a

您需要再次运行此命令来升级软件包

sudo apt update && sudo apt full-upgrade -y

当 chown 命令不起作用时,OP 并不是一个完全的 n00b,这是我在出现此问题时尝试的第一件事,而且它太奇怪了,我开始寻找有关它的线程。在使用 chown 命令之前,我使用默认的 kali 用户和 root 用户检查了 /var/lib/postgresql 目录,并且该目录的所有者始终与我登录的用户匹配,并且 chown 没有更改这一点。然后我检查 /etc/passwd 看看 postgres 是否是一个用户,但它就在那里并且一切都是正确的。我不知道为什么 cli 显示同一文件的不同所有者,我猜想这可能是奇怪的 unrooted-android file-priv 东西,但上面的 3 个命令将解决升级问题。如果您要安装 Nethunter Lite 或 kali 内核,解决此问题非常重要。

答案2

这里:

PostgreSQL 13 database server: mainError: Data directory /var/lib/postgresql/13/main must not be owned by root

在新更新的 Kali VM(从 Kali 网站下载)中,/var/lib/postgresql/13/main 的组和所有者显示:

drwx------ 19 postgres postgres 4096 Sep  5 16:30 main

不知道简单地将目录 chowning 到 postgres:postgres 是否可以解决它,但我不相信这会造成伤害:-)

sudo chown postgres:postgres /var/lib/postgresql/13/main

答案3

每个人都从某个地方开始。 Kali 只是另一个发行版。这可能会有所帮助。https://www.reddit.com/r/termux/comments/mqay2w/kali_android_rootless_upgrade_issues/

似乎 postgresql 阻止安装,你可以通过执行以下操作来解除阻止:

              rm -rf /var/lib/dpkg/info/postgresql*postinst

运行以上命令后:

              dpkg --configure -a

如果这不起作用,请尝试:

              rm -rf /var/lib/dpkg/info/postgresql* && dpkg --configure -a

这样,您将擦除 postgresql 包元数据,特别是文件列表和 md5sum。包仍然可见,因为状态文件不是信息的一部分。但是当您尝试卸载该包时,实际内容将不会被卸载。

答案4

至少到目前为止,这个似乎对我有用。

rm -rf /var/lib/dpkg/info/postgresql* && dpkg --configure -a

我刚刚完成,所以现在祈祷它保持正常。做了之后才起作用

sudo apt update && sudo apt full-upgrade -y

作为卡利然后

sudo su

rm -rf /var/lib/dpkg/info/postgresql* && dpkg --configure -a
        
      and

apt update && apt full-upgrade -y
      as root

在我运行之前我仍然有一个错误

su kali

sudo apt update && sudo apt full-upgrade -y


    As kali again

相关内容