Hardscrabble 🍫

By Max Jacobson

See also: the archives and an RSS feed

Understanding your homebrew dependencies

March 8, 2023

As a programmer who uses macOS, I greatly appreciate Homebrew, the β€œMissing Package Manager for macOS”.

I just learned about the brew leaves subcommand and was glad to discover it. Here’s a bit about how and why I’m using it.

This may be neurotic, or it may be some PTSD from when I used Arch Linux for a few years, but I try to upgrade all of my homebrew-managed dependencies regularly.

Here’s how I do it.

First, I tell homebrew to phone home and update its local list of packages, which it can use to tell if any of my locally-installed packages have updates:

$ brew update

Then I ask homebrew to list out which packages have updates available, if any:

$ brew outdated

Then, typically, I’ll upgrade all of them1:

$ brew upgrade

Very often I’ll find that some of my outdated packages have names that I do not recognize. There are only about 30 packages that I explicitly install2, but most of those have dependencies which end up getting installed too, so I end up with way more than 30 packages total – more like 138.

For example, I use vim, and vim has several dependencies that homebrew installs when it installs vim:

$ brew deps vim --tree
vim
β”œβ”€β”€ gettext
β”œβ”€β”€ lua
β”œβ”€β”€ ncurses
β”œβ”€β”€ perl
β”‚   β”œβ”€β”€ berkeley-db
β”‚   β”‚   └── openssl@1.1
β”‚   β”‚       └── ca-certificates
β”‚   └── gdbm
β”œβ”€β”€ python@3.11
β”‚   β”œβ”€β”€ mpdecimal
β”‚   β”œβ”€β”€ openssl@1.1
β”‚   β”‚   └── ca-certificates
β”‚   β”œβ”€β”€ sqlite
β”‚   β”‚   └── readline
β”‚   └── xz
└── ruby
    β”œβ”€β”€ libyaml
    β”œβ”€β”€ openssl@1.1
    β”‚   └── ca-certificates
    └── readline

Wow, look at all of those! So, because I installed vim, I also necessarily installed 15 other packages, and I’ll be updating all of them as time goes on.

When homebrew tells me that, for example, xz is outdated, a few questions enter my mind:

  1. what the heck is that?
  2. ok, it’s surely a dependency of something, but what is it a dependency of?
  3. is it possible that it’s actually not even necessary to have installed any longer? Maybe it was a dependency of something that I later uninstalled, but it just lingered around…

Answering all of those questions is possible, but I didn’t actually know how to answer them until today. Let’s take them one-by-one.

What the heck is that?

To answer this, we can use brew info:

$ brew info xz
==> xz: stable 5.4.1 (bottled)
General-purpose data compression with high compression ratio
https://tukaani.org/xz/
/opt/homebrew/Cellar/xz/5.4.1 (95 files, 1.7MB) *
  Poured from bottle on 2023-01-16 at 04:20:15
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/xz.rb
License: Public Domain and LGPL-2.1-or-later and GPL-2.0-or-later and GPL-3.0-or-later
==> Analytics
install: 456,730 (30 days), 2,613,650 (90 days), 7,814,033 (365 days)
install-on-request: 22,257 (30 days), 150,853 (90 days), 422,948 (365 days)
build-error: 44 (30 days)

Which… sure, whatever. Sounds important.

What is this a dependency of?

This is a slightly tricky thing to answer. As far as I can tell, there’s no command such as brew why xz that could simply answer why is it installed (please get in touch if I’m mistaken).

What we can do is use the brew deps command to describe the relationships between packages, and then search through it to see exactly why it is installed. For me, that prints out 1,580 lines of output, which I’ll share in full behind a collapsible details widget here:

Full output of brew deps --full-name --installed --tree (click to expand)

aom
β”œβ”€β”€ jpeg-xl
β”‚   β”œβ”€β”€ brotli
β”‚   β”œβ”€β”€ giflib
β”‚   β”œβ”€β”€ highway
β”‚   β”œβ”€β”€ imath
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   └── imath
β”‚   └── webp
β”‚       β”œβ”€β”€ giflib
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       β”œβ”€β”€ libpng
β”‚       └── libtiff
β”‚           β”œβ”€β”€ jpeg-turbo
β”‚           └── zstd
β”‚               β”œβ”€β”€ lz4
β”‚               └── xz
└── libvmaf

autoconf
└── m4

bash

bat

bdw-gc

berkeley-db
└── openssl@1.1
    └── ca-certificates

indirect/tap/bpb

brotli

ca-certificates

cairo
β”œβ”€β”€ fontconfig
β”‚   └── freetype
β”‚       └── libpng
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
β”œβ”€β”€ libpng
β”œβ”€β”€ libx11
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   └── xorgproto
β”œβ”€β”€ libxcb
β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   └── xorgproto
β”‚   └── libxdmcp
β”‚       └── xorgproto
β”œβ”€β”€ libxext
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   └── xorgproto
β”œβ”€β”€ libxrender
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   └── xorgproto
β”œβ”€β”€ lzo
└── pixman

cloc

ctags

emacs
β”œβ”€β”€ gnutls
β”‚   β”œβ”€β”€ ca-certificates
β”‚   β”œβ”€β”€ gmp
β”‚   β”œβ”€β”€ libidn2
β”‚   β”‚   β”œβ”€β”€ libunistring
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ libtasn1
β”‚   β”œβ”€β”€ libunistring
β”‚   β”œβ”€β”€ nettle
β”‚   β”‚   └── gmp
β”‚   β”œβ”€β”€ p11-kit
β”‚   β”‚   β”œβ”€β”€ ca-certificates
β”‚   β”‚   └── libtasn1
β”‚   └── unbound
β”‚       β”œβ”€β”€ libevent
β”‚       β”‚   └── openssl@1.1
β”‚       β”‚       └── ca-certificates
β”‚       β”œβ”€β”€ libnghttp2
β”‚       └── openssl@1.1
β”‚           └── ca-certificates
└── jansson

exa
└── libgit2
    └── libssh2
        └── openssl@1.1
            └── ca-certificates

fd

fnm

fontconfig
└── freetype
    └── libpng

freetype
└── libpng

fribidi

gd
β”œβ”€β”€ fontconfig
β”‚   └── freetype
β”‚       └── libpng
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libavif
β”‚   β”œβ”€β”€ aom
β”‚   β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   β”‚   └── webp
β”‚   β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚   β”‚       └── libtiff
β”‚   β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚           └── zstd
β”‚   β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚   β”‚               └── xz
β”‚   β”‚   └── libvmaf
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libpng
β”œβ”€β”€ libpng
β”œβ”€β”€ libtiff
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── zstd
β”‚       β”œβ”€β”€ lz4
β”‚       └── xz
└── webp
    β”œβ”€β”€ giflib
    β”œβ”€β”€ jpeg-turbo
    β”œβ”€β”€ libpng
    └── libtiff
        β”œβ”€β”€ jpeg-turbo
        └── zstd
            β”œβ”€β”€ lz4
            └── xz

gdbm

gdk-pixbuf
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libpng
└── libtiff
    β”œβ”€β”€ jpeg-turbo
    └── zstd
        β”œβ”€β”€ lz4
        └── xz

gettext

gh

ghostscript
β”œβ”€β”€ fontconfig
β”‚   └── freetype
β”‚       └── libpng
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ jbig2dec
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libidn
β”œβ”€β”€ libpng
β”œβ”€β”€ libtiff
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── zstd
β”‚       β”œβ”€β”€ lz4
β”‚       └── xz
β”œβ”€β”€ little-cms2
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
└── openjpeg
    β”œβ”€β”€ libpng
    β”œβ”€β”€ libtiff
    β”‚   β”œβ”€β”€ jpeg-turbo
    β”‚   └── zstd
    β”‚       β”œβ”€β”€ lz4
    β”‚       └── xz
    └── little-cms2
        β”œβ”€β”€ jpeg-turbo
        └── libtiff
            β”œβ”€β”€ jpeg-turbo
            └── zstd
                β”œβ”€β”€ lz4
                └── xz

giflib

git
β”œβ”€β”€ gettext
└── pcre2

git-delta

glib
β”œβ”€β”€ pcre2
└── gettext

gmp

gnutls
β”œβ”€β”€ ca-certificates
β”œβ”€β”€ gmp
β”œβ”€β”€ libidn2
β”‚   β”œβ”€β”€ libunistring
β”‚   └── gettext
β”œβ”€β”€ libtasn1
β”œβ”€β”€ libunistring
β”œβ”€β”€ nettle
β”‚   └── gmp
β”œβ”€β”€ p11-kit
β”‚   β”œβ”€β”€ ca-certificates
β”‚   └── libtasn1
└── unbound
    β”œβ”€β”€ libevent
    β”‚   └── openssl@1.1
    β”‚       └── ca-certificates
    β”œβ”€β”€ libnghttp2
    └── openssl@1.1
        └── ca-certificates

graphite2

graphviz
β”œβ”€β”€ gd
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libavif
β”‚   β”‚   β”œβ”€β”€ aom
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   β”‚   β”‚   └── webp
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚   β”‚   β”‚       └── libtiff
β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚           └── zstd
β”‚   β”‚   β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚   β”‚   β”‚               └── xz
β”‚   β”‚   β”‚   └── libvmaf
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libtiff
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── zstd
β”‚   β”‚       β”œβ”€β”€ lz4
β”‚   β”‚       └── xz
β”‚   └── webp
β”‚       β”œβ”€β”€ giflib
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       β”œβ”€β”€ libpng
β”‚       └── libtiff
β”‚           β”œβ”€β”€ jpeg-turbo
β”‚           └── zstd
β”‚               β”œβ”€β”€ lz4
β”‚               └── xz
β”œβ”€β”€ gts
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ netpbm
β”‚   β”‚   β”œβ”€β”€ jasper
β”‚   β”‚   β”‚   └── jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   └── gettext
β”œβ”€β”€ libpng
β”œβ”€β”€ librsvg
β”‚   β”œβ”€β”€ cairo
β”‚   β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   β”‚   └── freetype
β”‚   β”‚   β”‚       └── libpng
β”‚   β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   β”‚   └── libpng
β”‚   β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   β”‚   └── gettext
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”œβ”€β”€ libxext
β”‚   β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”œβ”€β”€ libxrender
β”‚   β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”œβ”€β”€ lzo
β”‚   β”‚   └── pixman
β”‚   β”œβ”€β”€ gdk-pixbuf
β”‚   β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   β”‚   └── gettext
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   └── pango
β”‚       β”œβ”€β”€ cairo
β”‚       β”‚   β”œβ”€β”€ fontconfig
β”‚       β”‚   β”‚   └── freetype
β”‚       β”‚   β”‚       └── libpng
β”‚       β”‚   β”œβ”€β”€ freetype
β”‚       β”‚   β”‚   └── libpng
β”‚       β”‚   β”œβ”€β”€ glib
β”‚       β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚       β”‚   β”‚   └── gettext
β”‚       β”‚   β”œβ”€β”€ libpng
β”‚       β”‚   β”œβ”€β”€ libx11
β”‚       β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚       β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   β”‚   └── libxdmcp
β”‚       β”‚   β”‚   β”‚       └── xorgproto
β”‚       β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”œβ”€β”€ libxcb
β”‚       β”‚   β”‚   β”œβ”€β”€ libxau
β”‚       β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   └── libxdmcp
β”‚       β”‚   β”‚       └── xorgproto
β”‚       β”‚   β”œβ”€β”€ libxext
β”‚       β”‚   β”‚   β”œβ”€β”€ libx11
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚       β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚       β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚       β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚       β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”œβ”€β”€ libxrender
β”‚       β”‚   β”‚   β”œβ”€β”€ libx11
β”‚       β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚       β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚       β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚       β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚       β”‚   β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”‚   └── xorgproto
β”‚       β”‚   β”œβ”€β”€ lzo
β”‚       β”‚   └── pixman
β”‚       β”œβ”€β”€ fontconfig
β”‚       β”‚   └── freetype
β”‚       β”‚       └── libpng
β”‚       β”œβ”€β”€ freetype
β”‚       β”‚   └── libpng
β”‚       β”œβ”€β”€ fribidi
β”‚       β”œβ”€β”€ glib
β”‚       β”‚   β”œβ”€β”€ pcre2
β”‚       β”‚   └── gettext
β”‚       └── harfbuzz
β”‚           β”œβ”€β”€ cairo
β”‚           β”‚   β”œβ”€β”€ fontconfig
β”‚           β”‚   β”‚   └── freetype
β”‚           β”‚   β”‚       └── libpng
β”‚           β”‚   β”œβ”€β”€ freetype
β”‚           β”‚   β”‚   └── libpng
β”‚           β”‚   β”œβ”€β”€ glib
β”‚           β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚           β”‚   β”‚   └── gettext
β”‚           β”‚   β”œβ”€β”€ libpng
β”‚           β”‚   β”œβ”€β”€ libx11
β”‚           β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚           β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚           β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   β”‚   └── libxdmcp
β”‚           β”‚   β”‚   β”‚       └── xorgproto
β”‚           β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”œβ”€β”€ libxcb
β”‚           β”‚   β”‚   β”œβ”€β”€ libxau
β”‚           β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   └── libxdmcp
β”‚           β”‚   β”‚       └── xorgproto
β”‚           β”‚   β”œβ”€β”€ libxext
β”‚           β”‚   β”‚   β”œβ”€β”€ libx11
β”‚           β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚           β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚           β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚           β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚           β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”œβ”€β”€ libxrender
β”‚           β”‚   β”‚   β”œβ”€β”€ libx11
β”‚           β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚           β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚           β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚           β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚           β”‚   β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”‚   └── xorgproto
β”‚           β”‚   β”œβ”€β”€ lzo
β”‚           β”‚   └── pixman
β”‚           β”œβ”€β”€ freetype
β”‚           β”‚   └── libpng
β”‚           β”œβ”€β”€ glib
β”‚           β”‚   β”œβ”€β”€ pcre2
β”‚           β”‚   └── gettext
β”‚           β”œβ”€β”€ graphite2
β”‚           └── icu4c
β”œβ”€β”€ libtool
β”‚   └── m4
└── pango
    β”œβ”€β”€ cairo
    β”‚   β”œβ”€β”€ fontconfig
    β”‚   β”‚   └── freetype
    β”‚   β”‚       └── libpng
    β”‚   β”œβ”€β”€ freetype
    β”‚   β”‚   └── libpng
    β”‚   β”œβ”€β”€ glib
    β”‚   β”‚   β”œβ”€β”€ pcre2
    β”‚   β”‚   └── gettext
    β”‚   β”œβ”€β”€ libpng
    β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── libxdmcp
    β”‚   β”‚       └── xorgproto
    β”‚   β”œβ”€β”€ libxext
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxrender
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ lzo
    β”‚   └── pixman
    β”œβ”€β”€ fontconfig
    β”‚   └── freetype
    β”‚       └── libpng
    β”œβ”€β”€ freetype
    β”‚   └── libpng
    β”œβ”€β”€ fribidi
    β”œβ”€β”€ glib
    β”‚   β”œβ”€β”€ pcre2
    β”‚   └── gettext
    └── harfbuzz
        β”œβ”€β”€ cairo
        β”‚   β”œβ”€β”€ fontconfig
        β”‚   β”‚   └── freetype
        β”‚   β”‚       └── libpng
        β”‚   β”œβ”€β”€ freetype
        β”‚   β”‚   └── libpng
        β”‚   β”œβ”€β”€ glib
        β”‚   β”‚   β”œβ”€β”€ pcre2
        β”‚   β”‚   └── gettext
        β”‚   β”œβ”€β”€ libpng
        β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── libxdmcp
        β”‚   β”‚       └── xorgproto
        β”‚   β”œβ”€β”€ libxext
        β”‚   β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ libxrender
        β”‚   β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ lzo
        β”‚   └── pixman
        β”œβ”€β”€ freetype
        β”‚   └── libpng
        β”œβ”€β”€ glib
        β”‚   β”œβ”€β”€ pcre2
        β”‚   └── gettext
        β”œβ”€β”€ graphite2
        └── icu4c

gts
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
β”œβ”€β”€ netpbm
β”‚   β”œβ”€β”€ jasper
β”‚   β”‚   └── jpeg-turbo
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libpng
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
└── gettext

guile
β”œβ”€β”€ bdw-gc
β”œβ”€β”€ gmp
β”œβ”€β”€ libtool
β”‚   └── m4
β”œβ”€β”€ libunistring
β”œβ”€β”€ pkg-config
└── readline

harfbuzz
β”œβ”€β”€ cairo
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   β”œβ”€β”€ libxext
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxrender
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ lzo
β”‚   └── pixman
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
β”œβ”€β”€ graphite2
└── icu4c

heroku/brew/heroku
└── heroku/brew/heroku-node

heroku/brew/heroku-node

highway

htop
└── ncurses

icu4c

imagemagick
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ ghostscript
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ jbig2dec
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libidn
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libtiff
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── zstd
β”‚   β”‚       β”œβ”€β”€ lz4
β”‚   β”‚       └── xz
β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   └── openjpeg
β”‚       β”œβ”€β”€ libpng
β”‚       β”œβ”€β”€ libtiff
β”‚       β”‚   β”œβ”€β”€ jpeg-turbo
β”‚       β”‚   └── zstd
β”‚       β”‚       β”œβ”€β”€ lz4
β”‚       β”‚       └── xz
β”‚       └── little-cms2
β”‚           β”œβ”€β”€ jpeg-turbo
β”‚           └── libtiff
β”‚               β”œβ”€β”€ jpeg-turbo
β”‚               └── zstd
β”‚                   β”œβ”€β”€ lz4
β”‚                   └── xz
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libheif
β”‚   β”œβ”€β”€ aom
β”‚   β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   β”‚   └── webp
β”‚   β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚   β”‚       └── libtiff
β”‚   β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚           └── zstd
β”‚   β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚   β”‚               └── xz
β”‚   β”‚   └── libvmaf
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libde265
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ shared-mime-info
β”‚   β”‚   └── glib
β”‚   β”‚       β”œβ”€β”€ pcre2
β”‚   β”‚       └── gettext
β”‚   └── x265
β”œβ”€β”€ liblqr
β”‚   └── glib
β”‚       β”œβ”€β”€ pcre2
β”‚       └── gettext
β”œβ”€β”€ libpng
β”œβ”€β”€ libraw
β”‚   β”œβ”€β”€ jasper
β”‚   β”‚   └── jpeg-turbo
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── libtiff
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       └── zstd
β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚           └── xz
β”‚   └── libomp
β”œβ”€β”€ libtiff
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── zstd
β”‚       β”œβ”€β”€ lz4
β”‚       └── xz
β”œβ”€β”€ libtool
β”‚   └── m4
β”œβ”€β”€ little-cms2
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
β”œβ”€β”€ openexr
β”‚   └── imath
β”œβ”€β”€ openjpeg
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libtiff
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   └── zstd
β”‚   β”‚       β”œβ”€β”€ lz4
β”‚   β”‚       └── xz
β”‚   └── little-cms2
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── libtiff
β”‚           β”œβ”€β”€ jpeg-turbo
β”‚           └── zstd
β”‚               β”œβ”€β”€ lz4
β”‚               └── xz
β”œβ”€β”€ webp
β”‚   β”œβ”€β”€ giflib
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libpng
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
β”œβ”€β”€ xz
└── libomp

imath

jansson

jasper
└── jpeg-turbo

jbig2dec

jpeg-turbo

jpeg-xl
β”œβ”€β”€ brotli
β”œβ”€β”€ giflib
β”œβ”€β”€ highway
β”œβ”€β”€ imath
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libpng
β”œβ”€β”€ little-cms2
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
β”œβ”€β”€ openexr
β”‚   └── imath
└── webp
    β”œβ”€β”€ giflib
    β”œβ”€β”€ jpeg-turbo
    β”œβ”€β”€ libpng
    └── libtiff
        β”œβ”€β”€ jpeg-turbo
        └── zstd
            β”œβ”€β”€ lz4
            └── xz

jq
└── oniguruma

krb5
└── openssl@1.1
    └── ca-certificates

libavif
β”œβ”€β”€ aom
β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   └── webp
β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚       └── libtiff
β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚           └── zstd
β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚               └── xz
β”‚   └── libvmaf
β”œβ”€β”€ jpeg-turbo
└── libpng

libde265

libevent
└── openssl@1.1
    └── ca-certificates

libheif
β”œβ”€β”€ aom
β”‚   β”œβ”€β”€ jpeg-xl
β”‚   β”‚   β”œβ”€β”€ brotli
β”‚   β”‚   β”œβ”€β”€ giflib
β”‚   β”‚   β”œβ”€β”€ highway
β”‚   β”‚   β”œβ”€β”€ imath
β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”œβ”€β”€ libpng
β”‚   β”‚   β”œβ”€β”€ little-cms2
β”‚   β”‚   β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚   └── libtiff
β”‚   β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚   β”‚       └── zstd
β”‚   β”‚   β”‚           β”œβ”€β”€ lz4
β”‚   β”‚   β”‚           └── xz
β”‚   β”‚   β”œβ”€β”€ openexr
β”‚   β”‚   β”‚   └── imath
β”‚   β”‚   └── webp
β”‚   β”‚       β”œβ”€β”€ giflib
β”‚   β”‚       β”œβ”€β”€ jpeg-turbo
β”‚   β”‚       β”œβ”€β”€ libpng
β”‚   β”‚       └── libtiff
β”‚   β”‚           β”œβ”€β”€ jpeg-turbo
β”‚   β”‚           └── zstd
β”‚   β”‚               β”œβ”€β”€ lz4
β”‚   β”‚               └── xz
β”‚   └── libvmaf
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libde265
β”œβ”€β”€ libpng
β”œβ”€β”€ shared-mime-info
β”‚   └── glib
β”‚       β”œβ”€β”€ pcre2
β”‚       └── gettext
└── x265

libidn

libidn2
β”œβ”€β”€ libunistring
└── gettext

liblqr
└── glib
    β”œβ”€β”€ pcre2
    └── gettext

libnghttp2

libomp

libpng

libraw
β”œβ”€β”€ jasper
β”‚   └── jpeg-turbo
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ little-cms2
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
└── libomp

librsvg
β”œβ”€β”€ cairo
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   β”œβ”€β”€ libxext
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxrender
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ lzo
β”‚   └── pixman
β”œβ”€β”€ gdk-pixbuf
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   β”œβ”€β”€ libpng
β”‚   └── libtiff
β”‚       β”œβ”€β”€ jpeg-turbo
β”‚       └── zstd
β”‚           β”œβ”€β”€ lz4
β”‚           └── xz
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
└── pango
    β”œβ”€β”€ cairo
    β”‚   β”œβ”€β”€ fontconfig
    β”‚   β”‚   └── freetype
    β”‚   β”‚       └── libpng
    β”‚   β”œβ”€β”€ freetype
    β”‚   β”‚   └── libpng
    β”‚   β”œβ”€β”€ glib
    β”‚   β”‚   β”œβ”€β”€ pcre2
    β”‚   β”‚   └── gettext
    β”‚   β”œβ”€β”€ libpng
    β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── libxdmcp
    β”‚   β”‚       └── xorgproto
    β”‚   β”œβ”€β”€ libxext
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxrender
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ lzo
    β”‚   └── pixman
    β”œβ”€β”€ fontconfig
    β”‚   └── freetype
    β”‚       └── libpng
    β”œβ”€β”€ freetype
    β”‚   └── libpng
    β”œβ”€β”€ fribidi
    β”œβ”€β”€ glib
    β”‚   β”œβ”€β”€ pcre2
    β”‚   └── gettext
    └── harfbuzz
        β”œβ”€β”€ cairo
        β”‚   β”œβ”€β”€ fontconfig
        β”‚   β”‚   └── freetype
        β”‚   β”‚       └── libpng
        β”‚   β”œβ”€β”€ freetype
        β”‚   β”‚   └── libpng
        β”‚   β”œβ”€β”€ glib
        β”‚   β”‚   β”œβ”€β”€ pcre2
        β”‚   β”‚   └── gettext
        β”‚   β”œβ”€β”€ libpng
        β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── libxdmcp
        β”‚   β”‚       └── xorgproto
        β”‚   β”œβ”€β”€ libxext
        β”‚   β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ libxrender
        β”‚   β”‚   β”œβ”€β”€ libx11
        β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
        β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
        β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   β”‚   β”‚   └── libxdmcp
        β”‚   β”‚   β”‚   β”‚       └── xorgproto
        β”‚   β”‚   β”‚   └── xorgproto
        β”‚   β”‚   └── xorgproto
        β”‚   β”œβ”€β”€ lzo
        β”‚   └── pixman
        β”œβ”€β”€ freetype
        β”‚   └── libpng
        β”œβ”€β”€ glib
        β”‚   β”œβ”€β”€ pcre2
        β”‚   └── gettext
        β”œβ”€β”€ graphite2
        └── icu4c

libtasn1

libtermkey
└── unibilium

libtiff
β”œβ”€β”€ jpeg-turbo
└── zstd
    β”œβ”€β”€ lz4
    └── xz

libtool
└── m4

libunistring

libuv

libvmaf

libvterm

libx11
β”œβ”€β”€ libxcb
β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   └── xorgproto
β”‚   └── libxdmcp
β”‚       └── xorgproto
└── xorgproto

libxau
└── xorgproto

libxcb
β”œβ”€β”€ libxau
β”‚   └── xorgproto
└── libxdmcp
    └── xorgproto

libxdmcp
└── xorgproto

libxext
β”œβ”€β”€ libx11
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   └── xorgproto
└── xorgproto

libxrender
β”œβ”€β”€ libx11
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   └── xorgproto
└── xorgproto

libyaml

little-cms2
β”œβ”€β”€ jpeg-turbo
└── libtiff
    β”œβ”€β”€ jpeg-turbo
    └── zstd
        β”œβ”€β”€ lz4
        └── xz

lua

luajit

luv
└── libuv

lz4

lzo

m4

mpdecimal

msgpack

ncdu
└── ncurses

ncurses

neovim
β”œβ”€β”€ gettext
β”œβ”€β”€ libtermkey
β”‚   └── unibilium
β”œβ”€β”€ libuv
β”œβ”€β”€ libvterm
β”œβ”€β”€ luajit
β”œβ”€β”€ luv
β”‚   └── libuv
β”œβ”€β”€ msgpack
β”œβ”€β”€ tree-sitter
└── unibilium

netpbm
β”œβ”€β”€ jasper
β”‚   └── jpeg-turbo
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libpng
└── libtiff
    β”œβ”€β”€ jpeg-turbo
    └── zstd
        β”œβ”€β”€ lz4
        └── xz

nettle
└── gmp

oniguruma

openexr
└── imath

openjpeg
β”œβ”€β”€ libpng
β”œβ”€β”€ libtiff
β”‚   β”œβ”€β”€ jpeg-turbo
β”‚   └── zstd
β”‚       β”œβ”€β”€ lz4
β”‚       └── xz
└── little-cms2
    β”œβ”€β”€ jpeg-turbo
    └── libtiff
        β”œβ”€β”€ jpeg-turbo
        └── zstd
            β”œβ”€β”€ lz4
            └── xz

openssl@1.1
└── ca-certificates

openssl@3
└── ca-certificates

p11-kit
β”œβ”€β”€ ca-certificates
└── libtasn1

pango
β”œβ”€β”€ cairo
β”‚   β”œβ”€β”€ fontconfig
β”‚   β”‚   └── freetype
β”‚   β”‚       └── libpng
β”‚   β”œβ”€β”€ freetype
β”‚   β”‚   └── libpng
β”‚   β”œβ”€β”€ glib
β”‚   β”‚   β”œβ”€β”€ pcre2
β”‚   β”‚   └── gettext
β”‚   β”œβ”€β”€ libpng
β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── libxdmcp
β”‚   β”‚       └── xorgproto
β”‚   β”œβ”€β”€ libxext
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ libxrender
β”‚   β”‚   β”œβ”€β”€ libx11
β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   β”‚   β”‚   └── libxdmcp
β”‚   β”‚   β”‚   β”‚       └── xorgproto
β”‚   β”‚   β”‚   └── xorgproto
β”‚   β”‚   └── xorgproto
β”‚   β”œβ”€β”€ lzo
β”‚   └── pixman
β”œβ”€β”€ fontconfig
β”‚   └── freetype
β”‚       └── libpng
β”œβ”€β”€ freetype
β”‚   └── libpng
β”œβ”€β”€ fribidi
β”œβ”€β”€ glib
β”‚   β”œβ”€β”€ pcre2
β”‚   └── gettext
└── harfbuzz
    β”œβ”€β”€ cairo
    β”‚   β”œβ”€β”€ fontconfig
    β”‚   β”‚   └── freetype
    β”‚   β”‚       └── libpng
    β”‚   β”œβ”€β”€ freetype
    β”‚   β”‚   └── libpng
    β”‚   β”œβ”€β”€ glib
    β”‚   β”‚   β”œβ”€β”€ pcre2
    β”‚   β”‚   └── gettext
    β”‚   β”œβ”€β”€ libpng
    β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── libxdmcp
    β”‚   β”‚       └── xorgproto
    β”‚   β”œβ”€β”€ libxext
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ libxrender
    β”‚   β”‚   β”œβ”€β”€ libx11
    β”‚   β”‚   β”‚   β”œβ”€β”€ libxcb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ libxau
    β”‚   β”‚   β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   β”‚   β”‚   └── libxdmcp
    β”‚   β”‚   β”‚   β”‚       └── xorgproto
    β”‚   β”‚   β”‚   └── xorgproto
    β”‚   β”‚   └── xorgproto
    β”‚   β”œβ”€β”€ lzo
    β”‚   └── pixman
    β”œβ”€β”€ freetype
    β”‚   └── libpng
    β”œβ”€β”€ glib
    β”‚   β”œβ”€β”€ pcre2
    β”‚   └── gettext
    β”œβ”€β”€ graphite2
    └── icu4c

pcre

pcre2

perl
β”œβ”€β”€ berkeley-db
β”‚   └── openssl@1.1
β”‚       └── ca-certificates
└── gdbm

pixman

pkg-config

postgresql@14
β”œβ”€β”€ icu4c
β”œβ”€β”€ krb5
β”‚   └── openssl@1.1
β”‚       └── ca-certificates
β”œβ”€β”€ lz4
β”œβ”€β”€ openssl@1.1
β”‚   └── ca-certificates
└── readline

pure
└── zsh-async

python@3.11
β”œβ”€β”€ mpdecimal
β”œβ”€β”€ openssl@1.1
β”‚   └── ca-certificates
β”œβ”€β”€ sqlite
β”‚   └── readline
└── xz

rbenv
└── ruby-build
    β”œβ”€β”€ autoconf
    β”‚   └── m4
    β”œβ”€β”€ pkg-config
    └── readline

rcm

readline

redis
└── openssl@1.1
    └── ca-certificates

ripgrep
└── pcre2

ruby
β”œβ”€β”€ libyaml
β”œβ”€β”€ openssl@1.1
β”‚   └── ca-certificates
└── readline

ruby-build
β”œβ”€β”€ autoconf
β”‚   └── m4
β”œβ”€β”€ pkg-config
└── readline

rust
β”œβ”€β”€ openssl@1.1
β”‚   └── ca-certificates
└── pkg-config

shared-mime-info
└── glib
    β”œβ”€β”€ pcre2
    └── gettext

sl

sqlite
└── readline

terminal-notifier

tig
β”œβ”€β”€ ncurses
β”œβ”€β”€ pcre2
└── readline

tmux
β”œβ”€β”€ libevent
β”‚   └── openssl@1.1
β”‚       └── ca-certificates
β”œβ”€β”€ ncurses
└── utf8proc

tree

tree-sitter

unbound
β”œβ”€β”€ libevent
β”‚   └── openssl@1.1
β”‚       └── ca-certificates
β”œβ”€β”€ libnghttp2
└── openssl@1.1
    └── ca-certificates

unibilium

utf8proc

vim
β”œβ”€β”€ gettext
β”œβ”€β”€ lua
β”œβ”€β”€ ncurses
β”œβ”€β”€ perl
β”‚   β”œβ”€β”€ berkeley-db
β”‚   β”‚   └── openssl@1.1
β”‚   β”‚       └── ca-certificates
β”‚   └── gdbm
β”œβ”€β”€ python@3.11
β”‚   β”œβ”€β”€ mpdecimal
β”‚   β”œβ”€β”€ openssl@1.1
β”‚   β”‚   └── ca-certificates
β”‚   β”œβ”€β”€ sqlite
β”‚   β”‚   └── readline
β”‚   └── xz
└── ruby
    β”œβ”€β”€ libyaml
    β”œβ”€β”€ openssl@1.1
    β”‚   └── ca-certificates
    └── readline

watch
└── ncurses

webp
β”œβ”€β”€ giflib
β”œβ”€β”€ jpeg-turbo
β”œβ”€β”€ libpng
└── libtiff
    β”œβ”€β”€ jpeg-turbo
    └── zstd
        β”œβ”€β”€ lz4
        └── xz

wget
β”œβ”€β”€ libidn2
β”‚   β”œβ”€β”€ libunistring
β”‚   └── gettext
└── openssl@3
    └── ca-certificates

x265

xorgproto

xz

yarn

youtube-dl
└── python@3.11
    β”œβ”€β”€ mpdecimal
    β”œβ”€β”€ openssl@1.1
    β”‚   └── ca-certificates
    β”œβ”€β”€ sqlite
    β”‚   └── readline
    └── xz

zsh
β”œβ”€β”€ ncurses
└── pcre

zsh-async

zsh-syntax-highlighting

zstd
β”œβ”€β”€ lz4
└── xz


As we can see… tons of things depend on xz.

This output is slightly overwhelming, but if you want to be even more overwhelmed, you can run brew deps --full-name --installed --graph to produce a visual graph representation, which I’ll present to you here:

graph of brew dependencies

You can click on it to see it in more detail.

Maybe I’m not much of a visual learner, but I’ll take the plain text representation any day.

How do I know if I even need this package any longer?

One easy way to figure out if you need a package any longer is to just try uninstalling it and seeing what happens:

$ brew uninstall xz
==> Downloading https://formulae.brew.sh/api/cask.jws.json
######################################################################## 100.0%
Error: Refusing to uninstall /opt/homebrew/Cellar/xz/5.4.1
because it is required by aom, gd, gdk-pixbuf, ghostscript, graphviz, gts, imagemagick, jpeg-xl, libavif, libheif, libraw, librsvg, libtiff, little-cms2, netpbm, openjpeg, python@3.11, vim, webp, youtube-dl and zstd, which are currently installed.
You can override this and force removal with:
  brew uninstall --ignore-dependencies xz

As you can see, homebrew refuses to uninstall it because it’s a dependency of a bunch of stuff. So, I guess, I do need this one.

It would be tedious to do this one-by-one, going through all ~100 or so of the packages I have installed that I don’t recognize the name of, just to free up some space on my hard drive.

Thankfully, it turns out that homebrew has another command, brew leaves, which will solve this problem.

If I run brew list, homebrew prints out 138 packages, many with names I don’t recognize.

If I run brew leaves instead, it prints out 38 packages, most of which I recall asking homebrew to install.

Let’s learn more about this subcommand:

$ brew leaves --help
Usage: brew leaves [--installed-on-request] [--installed-as-dependency]

List installed formulae that are not dependencies of another installed formula.

  -r, --installed-on-request       Only list leaves that were manually
                                   installed.
  -p, --installed-as-dependency    Only list leaves that were installed as
                                   dependencies.
  -d, --debug                      Display any debugging information.
  -q, --quiet                      Make some output more quiet.
  -v, --verbose                    Make some output more verbose.
  -h, --help                       Show this message.

In other words, running brew leaves will print out all of the things that can be uninstalled, because nothing depends on them. In my case, that includes vim, but not xz.

So, if there’s anything in the brew leaves output that you don’t think you need, you can probably safely uninstall it.

There are two flags there that are particularly handy: --installed-on-request and --installed-as-dependency, which filter the output based on why exactly that package is installed on your system.

If you run brew leaves --installed-as-dependency, it will print out all of the things that:

  1. were installed as a dependency of something else
  2. but are no longer a dependency of anything

That sounds eminently uninstallable if anything does.

Note that when you uninstall a package, homebrew does not uninstall that package’s dependencies. That means that many of that package’s dependencies, which were previously not uninstallable become uninstallable. In other words, they become leaves.

So, for example, if I run brew uninstall imagemagick and then check on my leaves, here’s what I see:

$ brew leaves --installed-as-dependency
ghostscript
libheif
liblqr
libraw

I still have ghostscript, libheif, liblqr, and libraw hanging around, and I can use this command to identify that they are not actually needed anymore and continue trimming my hedge.

  1. If homebrew wants to upgrade vim, I’ll usually quit any running vim processes, because it sometimes gets wonky when you upgrade it while it’s already running.Β 

  2. Which I can see spelled out in my BrewfileΒ 

Note: I don't have comments or analytics on this website, so it's hard to tell if people are reading or enjoying it. Please feel free to share any feedback or thoughts by shooting me an email or tagging me in a post on Mastodon @maxjacobson@mastodon.online.