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,静静等待安装完成。
搞定。顺带升级了数据库。

世上只有root好♪

posted @ 2022-05-26 18:00  ZZBBYY  阅读(438)  评论(0编辑  收藏  举报