"データディレクトリ/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をインストールすると、この問題が発生しました。

私が知っている限り、rootlessはpostgresqlで使用される機能をサポートしていないため、Nethunter rootlessをインストールする場合、このパッケージは重要ではありません。しかし、修正したい場合...

あなたがしなければならないことは、以下を実行することだけです:

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が同じファイルに対して異なる所有者を表示する理由はわかりません。ルート化されていない奇妙な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 Webサイトからダウンロード)では、/var/lib/postgresql/13/mainのグループと所有者が次のように表示されます。

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

単にディレクトリを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

関連情報