705

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.

0
849

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

5
  • 3
    If you had this list in a txt file. How would you go about installing all of them? brew install < list.txt doesn't seem to work.
    – Jonathan
    Nov 4 '14 at 14:19
  • 47
    @Jonathan xargs brew install < list.txt Feel free to ask a separate question for more details or clarification.
    – grg
    Nov 4 '14 at 19:33
  • 3
    @grgarside - love ur terminal prompt. would you be willing to share your config files for getting my prompt to look like that? Dec 9 '14 at 20:21
  • 2
    @Kaushik I've finally written a blog post about my terminal/shell setup—feel free to ask any questions there.
    – grg
    Dec 14 '14 at 12:56
  • also added the --versions flag at the end to get the list with the versions installed
    – H A
    Mar 3 at 0:22
462

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
0
112

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

1
  • 7
    A recent dump of mine suggests that bundle now excludes dependencies. There are some other changes like quote style and ordering that are making it harder to understand the diff, but overall it looks like at least some libraries are missing from Brewfile but installed. May 16 '17 at 5:04
64

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.

0
10

You may use brew list | grep 'package-name' or if are looking for specific package.
brew list 'package-name' also works and provides additional information.

6

To see brew packages :

brew list

To see cask packages :

brew list --cask

To see upgradable brew packages :

brew outdated

To see upgradable cask packages

brew outdated --cask
0
4

Others have mentioned brew leaves, which lists things that aren't dependencies; and brew deps --tree --installed which lists the dependency tree for all installed packages.

I find the most useful output of any answers yet is the combination of these.

brew deps --tree $(brew leaves)

This will list the complete tree of your brew install.

1

You can use this snippet to list all installed packages and sort them by their size.

brew list --formula | \
    xargs -n1 -P8 -I {} \
    sh -c "
        brew info {} | \
        egrep '[0-9]* files, ' | \
        sed 's/^.*[0-9]* files, \(.*\)).*$/{} \1/'
    " | \
    sort -h -r -k2 - | \
    column -t

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .