List of all packages installed using Homebrew

Is it possible to and how do I get a list of all the packages installed on my Mac using Homebrew? I am not interested in packages installed outside of Homebrew.


Solution 1:

brew list and brew list --cask

Running brew list will show a list of all your installed Homebrew packages.

In addition, brew list --cask will provide the items installed using Homebrew Cask.

brew list

Solution 2:

brew leaves shows you all top-level packages. That is packages that are not dependencies. This should be the most interesting if you are using the list to re-install packages.

In order to include the descriptions, use

brew leaves | xargs -n1 brew desc

Solution 3:

brew bundle may also be interesting if you are asking because you want to manage your brew installation. This includes casks, which brew list does not. It is aimed at having reproducible Homebrew setups.

# creates Brewfile in the current directory from currently-installed packages
brew bundle dump
# edit Brewfile
# install everything from the Brewfile
brew bundle

You can use the --global flag to operate on your ~/.Brewfile and -f/--force to force overwriting of your existing file (for installation, this will force uninstallation of not-listed packages).

Solution 4:

Executing brew list command shows a simple, alphabetically sorted list of all the installed packages.

However, various required packages (dependencies) get automatically installed when installing a package using Homebrew. It is possible to view the list of all the installed packages as a nicely formatted dependency tree. To view it, execute the following command:

brew deps --tree --installed

An example output is as shown below:

gdbm

openssl

python
├── gdbm
├── openssl
├── readline
├── sqlite
│   └── readline
└── xz

readline

sqlite
└── readline

xz

The independently listed packages (e.g. gdbm and openssl in the example output above) have no dependencies. The packages depicted as part of a tree structure have their dependency listed at immediate lower level (e.g. package sqlite requires that the package readline to be installed). The packages listed at leaf nodes in the tree structures have no dependencies.

Dependencies visualised in a tree structure can help in easily getting rid of the unnecessary packages.