Remove leaf and dependencies in Homebrew

A leaf in Homebrew is a formula that is not a dependency of another installed formula. You can list the currently installed leaves using the brew leaves command. See thoughtbot’s brew leaves post for more information on this command.

Removing a leaf in Homebrew can suddenly introduce many more leaves; the dependencies of the formula you removed. In this post I will show you how to remove a leaf as well as all its dependencies not used by any other formulae. These steps will work in Bash and Zsh.

Create a text file containing regex patterns for all the leaves. We’ll use this file later as input to grep.

$ brew leaves | xargs -I {} echo "^{}$" > leaves.txt

Edit leaves.txt, removing any that you want to uninstall.

Get the list of applications to remove, then remove them. Repeat this process until brew leaves | grep ... output is empty.

$ brew leaves | grep -v --file leaves.txt
gcc
$ brew remove gcc
Uninstalling /usr/local/Cellar/gcc/10.2.0_4... (1,465 files, 339.5MB)
$ brew leaves | grep -v --file leaves.txt
isl
libmpc
$ brew remove isl libmpc
Uninstalling /usr/local/Cellar/isl/0.23... (72 files, 5MB)
Uninstalling /usr/local/Cellar/libmpc/1.2.1... (13 files, 423.6KB)

Alternatively, you can perform the list and remove in one step:

$ brew leaves | grep -v --file leaves.txt | xargs brew remove
Uninstalling /usr/local/Cellar/mpfr/4.1.0... (29 files, 5.1MB)