다음과 같은 문제가 있습니다.
└─$ 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 사용자와 루트 사용자를 사용하여 /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 웹 사이트에서 다운로드)에서 /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