root是ao的——记一次Termux排错
这两天 Matepad Paper 刚到手,立刻装上了华为快乐TermTermux。
在网上转了一圈之后找到了一个十分适合Termux的渗透工具(集):Nethunter-In-Termux
严格来说它装的并不是Nethunter而是kali的minimal installation;但是这样反而更好,支持vnc,开GUI时感官上更接近pc。(那么大个10.3寸屏幕不要面子的吗)
然后就在我 apt upgrade
的时候,悲剧发生了:
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-14
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-14_14.3-1_arm64.deb ... invoke-rc.d: could not determine current runlevel
Stopping PostgreSQL 14 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-14 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 14 database server: main
Error: Data directory /var/lib/postgresql/14/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-14_14.3-1_arm64.deb (--unpack): new postgresql-14 package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing: /var/cache/apt/archives/postgresql-14_14.3-1_arm64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
找到文件夹,chown
无果,chmod
无果,退回到termux再chown
,还是无果。
推测是rootless的锅,或者是systemd(bus)没跑起来造成的。
暴力解决方案:强制重装。
--force-overwrite没用
打开/var/lib/dpkg/status
,找到postgresql-14
描述,把status从"install ok installed"
改成"install ok not-installed"
,让包管理认为软件从来没装过(所以会跳过毫无卵用且疯狂报错的预删除脚本)
在终端输入apt install postgresql-14
,静静等待安装完成。
搞定。顺带升级了数据库。