Homebrew installs the stuff you need that Apple (or your Linux system) didn't. Homebrew installs packages to their own directory and then symlinks their files into /usr/local.

Homebrew won't install files outside its prefix and you can place a Homebrew installation wherever you like. Trivially create your own Homebrew packages. It's all Git and Ruby underneath, so hack away with the knowledge that you can easily revert your modifications and merge upstream updates.

Homebrew formulas are simple Ruby scripts.

What's New

  • cask/artifact: enable typed: strict across Library/Homebrew/cask/artifact/ by @dduugg in #21939
  • source: retry PyPI API requests to avoid transient errors by @p-linnane in #21944
  • build(deps): bump addressable from 2.8.9 to 2.9.0 in /Library/Homebrew by @dependabot[bot] in #21948
  • build(deps): bump addressable from 2.8.9 to 2.9.0 in /docs by @dependabot[bot] in #21949
  • cask: upgrade auto_updates casks when bundle version is stale by @bevanjkay in #21882
  • refactor: remove dead code and deprecate unused public APIs by @dduugg in #21925
  • Add brew doctor and brew cleanup for corrupt Caskroom directories by @koddsson in #21880
  • refactor: remove unused require statements by @dduugg in #21952
  • cmd/*-sync: fix uninitialized constants by @cho-m in #21956
  • docs: reflect new auto_updates behaviour by @bevanjkay in #21957
  • Add 'LANG' to the environment filter to ensure it passes into brew if/when set in the user's environment by @jamesrtnz in #21945
  • docs: add and consolidate deprecation policy by @MikeMcQuaid in #21946
  • Improve updates of auto_updates casks by @MikeMcQuaid in #21962
  • search: fix uninitialized constant by @cho-m in #21968
  • bump: add cooldown for npm and PyPI by @samford in #21888
  • cask: refine auto_updates behaviour by @bevanjkay in #21974
  • generate-cask-ci-matrix: fix Linux runner for single-arch casks by @p-linnane in #21970
  • GitDownloadStrategy: fix slow repo_valid? by using -C flag by @ismail in #21969
  • build(deps): bump the github-actions group across 1 directory with 2 updates by @dependabot[bot] in #21979
  • Fix outdated greedy cask handling by @MikeMcQuaid in #21976
  • Stop cleaning corrupt cask dirs by @MikeMcQuaid in #21980
  • build(deps): bump the bundler group across 2 directories with 16 updates by @dependabot[bot] in #21978
  • Fix flaky run_actionlint! tests by @MikeMcQuaid in #21975
  • Fix flaky conflicts_with brew spec by @MikeMcQuaid in #21977
  • Share full-name parsing helpers by @MikeMcQuaid in #21966
  • Use merge-base for git audit comparisons by @MikeMcQuaid in #21967
  • docs: document developer update channel and MCP tools by @MikeMcQuaid in #21983
  • info: avoid Formula/Cask objects for counts by @MikeMcQuaid in #21963
  • sorbet: add strict type signatures to cask files by @dduugg in #21987
  • sorbet: remove redundant T.let in initialize methods by @dduugg in #21990
  • Harden cask uninstall path checks by @MikeMcQuaid in #21989
  • cask: gate auto-updates behind opt-in by @MikeMcQuaid in #21985
  • extend/os/linux/cask/config: actually use XDG_DATA_HOME by @cho-m in #21994
  • shellenv: export FPATH so child zsh shells inherit fpath by @sumanthratna in #21910
  • Add brew generate-internal-api command by @Rylan12 in #21973
  • cask/artifact/qlplugin: fix type override by @bevanjkay in #22004