updated: 好像是因为我安装了ripgrep所以会一直更新cargo-c依赖。

不知道为啥每次sudo port -v upgrade outdated 都会重新安装cargo-c, 进而会安装编译rust。 编译rust很费时间和CPU风扇。

所以我就卸载了rust和一众依赖,后面特意又卸载了cargo-c。但是每次upgrade outdated cargo-c又回来了,很是烦人。 google一圈后,决定重新安装macport

清理安装包

尝试clean 所有的安装包:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
sudo port uninstall cargo-c
sudo port -v selfupdate
sudo port -f clean --all all
sudo rm -rf /opt/local/var/macports/packages/*
sudo rm -rf /opt/local/var/macports/distfiles/*
sudo rm -rf /opt/local/var/macports/build/*
port echo leaves
sudo port uninstall leaves
sudo port -f uninstall inactive

## SURPRISE! after upgrade, `cargo-c` come back.
sudo port upgrade outdated

卸载macport

参考官网协助步骤:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
sudo port -fp uninstall installed
sudo dscl . -delete /Users/macports
sudo dscl . -delete /Groups/macports
sudo rm -rf \
    /opt/local \
    /Applications/DarwinPorts \
    /Applications/MacPorts \
    /Library/LaunchDaemons/org.macports.* \
    /Library/Receipts/DarwinPorts*.pkg \
    /Library/Receipts/MacPorts*.pkg \
    /Library/StartupItems/DarwinPortsStartup \
    /Library/Tcl/darwinports1.0 \
    /Library/Tcl/macports1.0 \
    ~/.macports

最后一步报错了:这三个/opt/local, /opt/local/var/db, /opt/local/var/db/postgres 目录无法删除。

sudo su 切换为root还是报权限不足。

SIP

查了一下是system integrity proction(SIP)的原因

查看SIP

状态

1
2
❯ csrutil status
System Integrity Protection status: enabled.

查看用户

1
2
3
4
5
6
7
dscl . list /Users | grep -v '^_'
daemon
Guest
postgres
mixelpix
nobody
root

删除postgres

可以看到上面有postgres用户,所以删除postgres之后,就可以删除/opt/local目录了:

1
2
3
4
sudo dscl . -delete /Groups/postgres
sudo dscl . -delete /Users/postgres

sudo rm -rf /opt/local