Tutorial: Uninstall/remove a Homebrew package including all its dependencies
I have a Homebrew formula that I wish to uninstall/remove along with all its dependencies, skipping packages whom other packages depend upon (a.k.a. Cascading package removal in Package manager parlance).
e.g. Uninstall package
a which depends on packages
c, where package
d also depends on the package
c. The result should uninstall both
How can I do that?
There must be a way to uninstall a package without leaving unnecessary junk behind.
Solutions Uninstall/remove a Homebrew package including all its dependencies
Solution 1: Uninstall/remove a Homebrew package including all its dependencies
To install and use, issue the following commands:
$ brew tap beeftornado/rmtree $ brew rmtree <package>
See the above link for more information and discussion.
[EDIT] see the new command
brew autoremove in https://stackoverflow.com/a/66719581/160968
It appears that currently, there’s no easy way to accomplish this.
However, I filed an issue on Homebrew’s GitHub page, and somebody suggested a temporary solution until they add an exclusive command to solve this.
There’s an external command called
brew leaves which prints all packages that are not dependencies of other packages.
If you do a logical and on the output of
brew leaves and
brew deps <package>, you might just get a list of the orphaned dependency packages, which you can uninstall manually afterwards. Combine this with
xargs and you’ll get what you need, I guess (untested, don’t count on this).
EDIT: Somebody just suggested a very similar solution, using
join instead of
brew rm FORMULA brew rm $(join <(brew leaves) <(brew deps FORMULA))
See the comment on the issue mentioned above for more info.
Solution 2: Uninstall/remove a Homebrew package including all its dependencies
By the end of 2020, the Homebrew team added a simple command
brew autoremove to remove all unused dependencies.
First, uninstall the package:
brew uninstall <package>
Then, remove all the unused dependencies:
Solution 3: Uninstall/remove a Homebrew package including all its dependencies
brew tap ggpeti/rmrec brew rmrec pkgname
Solution 4: Uninstall/remove a Homebrew package including all its dependencies
Based on @jfmercer answer (corrections needed more than a comment).
Remove package’s dependencies (does not remove package):
brew deps [FORMULA] | xargs brew remove --ignore-dependencies
brew remove [FORMULA]
Reinstall missing libraries:
brew missing | cut -d: -f2 | sort | uniq | xargs brew install
meld after discovering MeldMerge releases.
Solution 5: Uninstall/remove a Homebrew package including all its dependencies
Using this answer requires that you create and maintain a file that contains the package names you want installed on your system. If you don’t have one already, use the following command and delete the package names what you don’t want to keep installed.
brew leaves > brew_packages
Then you can remove all installed, but unwanted packages and any unnecessary dependencies by running the following command
brew_clean is available here: https://gist.github.com/cskeeters/10ff1295bca93808213d
This script gets all of the packages you specified in brew_packages and all of their dependancies and compares them against the output
brew list and finally removes the unwanted packages after verifying this list with the user.
At this point, if you want to remove a package, you simply remove it from the brew_packages file and then re-run
brew_clean brew_packages. It will remove, but not
Solution 6: Uninstall/remove a Homebrew package including all its dependencies
Save the following script as brew-purge
#!/bin/bash #:Usage: brew purge formula #: #:Removes the package and all dependancies. #: #: PKG="$1" if [ -z "$PKG" ];then brew purge --help exit 1 fi brew rm $PKG [ $? -ne 0 ] && exit 1 while brew rm $(join <(brew leaves) <(brew deps $PKG)) 2>/dev/null do : done echo Package $PKG and its dependancies have been removed. exit 0
Now install it with the following command
sudo install brew-purge /usr/local/bin
Now run it
brew purge package
Example using gpg
$ brew purge gpg Uninstalling /usr/local/Cellar/gnupg/2.2.13... (134 files, 11.0MB) Uninstalling /usr/local/Cellar/adns/1.5.1... (14 files, 597.5KB) Uninstalling /usr/local/Cellar/gnutls/3.6.6... (1,200 files, 8.9MB) Uninstalling /usr/local/Cellar/libgcrypt/1.8.4... (21 files, 2.6MB) Uninstalling /usr/local/Cellar/libksba/1.3.5... (14 files, 344.2KB) Uninstalling /usr/local/Cellar/libusb/1.0.22... (29 files, 508KB) Uninstalling /usr/local/Cellar/npth/1.6... (11 files, 71.7KB) Uninstalling /usr/local/Cellar/pinentry/1.1.0_1... (12 files, 263.9KB) Uninstalling /usr/local/Cellar/libassuan/2.5.3... (16 files, 444.2KB) Uninstalling /usr/local/Cellar/libtasn1/4.13... (59 files, 436KB) Uninstalling /usr/local/Cellar/libunistring/0.9.10... (54 files, 4.4MB) Uninstalling /usr/local/Cellar/nettle/3.4.1... (85 files, 2MB) Uninstalling /usr/local/Cellar/p11-kit/0.23.15... (63 files, 2.9MB) Uninstalling /usr/local/Cellar/gmp/6.1.2_2... (18 files, 3.1MB) Uninstalling /usr/local/Cellar/libffi/3.2.1... (16 files, 296.8KB) Uninstalling /usr/local/Cellar/libgpg-error/1.35... (27 files, 854.8KB) Package gpg and its dependancies have been removed. $
I hope the Uninstall/remove a Homebrew package including all its dependencies solution would be useful for you to learn something new from this solution. If it helped you then don’t forget to bookmark our site for more Quiz Answers and