When yo installed a .pkg file on your mac, the question is how to remove it again.
Here's how to do it (using Go as an example).
We start with listing the installed packages:
$ pkgutil --pkgs
For Go, the package name is
Then we can inspect which files the package installed by executing:
$ pkgutil --files org.golang.go etc etc/paths.d etc/paths.d/go usr usr/local usr/local/go ... usr/local/go/test/varinit.go usr/local/go/test/winbatch.go usr/local/go/test/writebarrier.go usr/local/go/test/zerodivide.go
As you can see, these paths are relative, not absolute. They are relative to the install location of the package. To get the install location of the package, you can execute:
$ pkgutil --pkg-info org.golang.go package-id: org.golang.go version: go1.16beta1 volume: / location: / install-time: 1608468554
As they are installed in the root, we first need to go to that directory. This is important as the remaining commands use the relative paths to this location.
$ cd /
Beware! Modifying the filesystem with root privileges can be hazardous.
We can then start with removing the actual files:
$ pkgutil --only-files --files org.golang.go | tr '\n' '\0' | xargs -n 1 -0 sudo rm -f
Then, we can also remove all empty directories with:
$ pkgutil --only-dirs --files org.golang.go | tail -r | tr '\n' '\0' | xargs -n 1 -0 sudo rmdir
Note that we are using the
rmdir command here instead of
rm -r. The
rmdir command only removes the folders if they are empty. We want to keep the non-empty folders as there are folders in the list which are shared between different applications (e.g. the
/usr/local folder which you don't want to remove).
The last step is to make the system forget that the package was installed:
$ sudo pkgutil --forget org.golang.go
Before you execute this, please be aware that if you don't use the commands correctly, you might bring your system into an unusable state, so proceed with caution.