macOS的包管理工具pkguitl并不提供卸载软件的命令, 但是当更新软件包的时候会pkguitl自动删除旧的文件再安装, 因此我们可以利用这个特性, 打包一个空软件包让系统清理我们想要卸载的软件包的文件, 而不是像以前那样列出文件再删除
首先创建一个空目录
mkdir root
然后打包这个空软件包
pkgbuild --root root --identifier <Your Package ID Here> uninstall.pkg
这里的Package ID是想要卸载的软件包的id, 可以通过pkgutil --pkgs查看
双击安装这个软件包, 最后删除该包的索引即可
sudo pkgutil --forget <Your Package ID Here>
这个应该是最安全的方法了, GitHub上有一个pkg uninstaller, 它是通过判断一个目录是否被其他包使用, 没有的话就递归删除. 要不是我在用之前看了一遍代码, 我的/private/etc差点就被删了.