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.
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.