Homebrew (package manager)
{{Short description|macOS CLI package manager in Ruby}}
{{For|the software built by consumers|Homebrew (video games)}}
{{Other uses|Homebrew (disambiguation)}}
{{Primary sources|date=April 2022}}
{{Infobox software
| name = Homebrew
| logo = Homebrew logo.svg
| logo alt = Homebrew logo
| screenshot = 250px
| caption = Homebrew 4.2.2 man page in the Mac Terminal
| author = Max Howell
| released = {{Start date and age|2009|05|20|df=yes}}{{GitHub|https://github.com/Homebrew/brew/releases/tag/0.1|Homebrew release 0.1}}
| latest release version = {{Wikidata|properties|references|edit|P348}}
| latest release date = {{Start date and age|{{Wikidata|qualifier|P348|P577}}}}
| latest preview version = {{Wikidata|properties|references|edit|P348|P548=Q51930650}}
| latest preview date = {{Start date and age|{{Wikidata|qualifier|single|P348|P548=Q51930650|P577}}}}
| programming language = {{Wikidata|properties|references|edit|P277}}
| operating system = {{Wikidata|properties|references|edit|P306}}
| language = English
| genre = {{Wikidata|properties|references|edit|P31}}
| license = {{Wikidata|properties|references|edit|P275}}
| website = {{Official URL|}}
}}
Homebrew is a free and open-source software package management system that simplifies the installation of software on Apple's operating system, macOS, as well as Linux. The name is intended to suggest the idea of building software on the Mac depending on the user's taste. Originally written by Max Howell, the package manager has gained popularity in the Ruby on Rails community and earned praise for its extensibility.{{cite web|url=https://blog.engineyard.com/2010/homebrew-os-xs-missing-package-manager/ |title=Homebrew: OS X's Missing Package Manager |first=Andre |last=Arko |publisher=Engine Yard |work=Engine Yard blog |url-status=dead |archive-url=https://web.archive.org/web/20150708101237/https://blog.engineyard.com/2010/homebrew-os-xs-missing-package-manager/ |archive-date=July 8, 2015 }} Homebrew has been recommended for its ease of use{{cite web|last1=Hoffman|first1=Chris|title=Homebrew for OS X Easily Installs Desktop Apps and Terminal Utilities|url=http://www.howtogeek.com/211541/homebrew-for-os-x-easily-installs-desktop-apps-and-terminal-utilities/|website=How-to Geek|access-date=24 June 2015|archive-date=24 March 2015|archive-url=https://web.archive.org/web/20150324003221/http://www.howtogeek.com/211541/homebrew-for-os-x-easily-installs-desktop-apps-and-terminal-utilities/|url-status=dead}} as well as its integration into the command-line interface.{{cite web|last1=Terpstra|first1=Brett|title=Homebrew, the perfect gift for command line lovers|url=https://www.engadget.com/2009/12/25/homebrew-the-perfect-gift-for-command-line-lovers/|website=Engadget|date=25 December 2009 |access-date=24 June 2015}} Homebrew is a member of the Open Source Collective,{{cite web | url=https://opencollective.com/homebrew | title=Homebrew - Open Collective | date=12 January 2024 }} and is run entirely by unpaid volunteers.{{cite web|last1=McQuaid|first1=Mike|title=Homebrew/brew/README.md|url=https://github.com/Homebrew/brew/blob/master/README.md|website=GitHub|access-date=5 February 2021|archive-url=https://web.archive.org/web/20210205172401/https://github.com/Homebrew/brew/blob/master/README.md#who-we-are|archive-date=5 February 2021|url-status=bot: unknown}}
Homebrew has made extensive use of GitHub to expand the support of several packages through user contributions. In 2010, Homebrew was the third-most-forked repository on GitHub.{{cite web|title=Popular Forked Repositories|url=https://github.com/popular/forked|website=GitHub|access-date=24 June 2015|archive-url=https://web.archive.org/web/20100311081541/http://github.com/popular/forked|archive-date=11 March 2010|url-status=dead}} In 2012, Homebrew had the largest number of new contributors on GitHub.{{cite web|url=https://github.com/blog/1359-the-octoverse-in-2012|title=The Octoverse in 2012|publisher=GitHub}} In 2013, Homebrew had both the largest number of contributors and issues closed of any project on GitHub.{{cite web |title=GitHub Octoverse 2013 |url=http://octoverse.github.com/ |url-status=usurped |archive-url=https://web.archive.org/web/20140207125857/http://octoverse.github.com/|archive-date=2014-02-07 }}
Homebrew has spawned several sub-projects such as Linuxbrew, a Linux port now officially merged into Homebrew;{{cite web|url=https://linuxbrew.sh|title=Linuxbrew|website=Linuxbrew|access-date=2019-02-02}}{{cite web|url=https://github.com/Linuxbrew/brew/blob/93389fde63974f096156344e281610acec44130c/README.md|title=Linuxbrew Readme|website=GitHub|access-date=2019-03-29}} Homebrew Cask, which builds upon Homebrew and focuses on the installation of GUI applications;{{cite web|url=https://github.com/homebrew/homebrew-cask|title=Homebrew Cask|website=Github|access-date=15 April 2019}} and "taps" dedicated to specific areas or programming languages like PHP.{{cite web|url=https://github.com/Homebrew/homebrew-php|title=Homebrew/homebrew-php|website=GitHub|access-date=25 June 2015}}
History
Homebrew was written by Max Howell in 2009.{{cite web|last1=Howell|first1=Max|title=I'll start with a rare Belgian yeast and Sussex hops|url=https://github.com/Homebrew/homebrew/commit/29d85578e75170a6c0eaebda4d701b46f1acf446|website=GitHub|access-date=24 June 2015}} In March 2013, Homebrew successfully completed a Kickstarter campaign to raise funds for servers to test and build formulae and managed to raise {{Currency|14859|GBP}}.{{cite web|title=brew test-bot|url=https://www.kickstarter.com/projects/homebrew/brew-test-bot/description|website=Kickstarter|access-date=25 June 2015}} On December 13, 2013, the Homebrew repository migrated from Howell's GitHub account to its own project account.{{Cite tweet |user=MacHomebrew |number=410681585407901696 |date= 11 December 2013|title=This Saturday morning at 0100 GMT we will be migrating Homebrew}} In February 2015, due to downtime at SourceForge which resulted in binaries being unavailable, Homebrew moved their hosting to Bintray.{{Cite tweet |user=MacHomebrew |number=569872540845387777 |date= 23 February 2015|title=Homebrew's bottles (binary packages) are now hosted by @bintray}} On September 21, 2016, Homebrew version 1.0.0 was released.{{GitHub|https://github.com/Homebrew/brew/releases/tag/1.0.0|Homebrew release 1.0.0}} As of February 2021, Homebrew is maintained by a team of 34 people. In January 2019, Linuxbrew was merged back into Homebrew, adding beta support for Linux and the Windows Subsystem for Linux to the Homebrew feature set.{{cite web |title=Homebrew 1.9.0 |url=https://brew.sh/2019/01/09/homebrew-1.9.0/ |website=Homebrew |date=9 January 2019 |access-date=10 January 2019}} On February 2, 2019, Homebrew version 2.0.0 was released.{{cite web |last1=McQuaid |first1=Mike |title=2.0.0 |url=https://brew.sh/2019/02/02/homebrew-2.0.0/ |website=Homebrew |date=2 February 2019 |access-date=3 February 2019}} On September 21, 2020, Homebrew version 2.5.2 was released with support for bottle taps (binary package repositories) via GitHub Releases.{{cite web |last1=Dziurla |first1=Dawid |date=2020-11-18 |df=mdy |title=Homebrew tap with bottles uploaded to GitHub Releases |url=https://brew.sh/2020/11/18/homebrew-tap-with-bottles-uploaded-to-github-releases/ |department=blog |website=Homebrew |access-date=2021-04-08}} Version 3.0.0 was released almost exactly two years after 2.0.0, on February 5, 2021, and added official support for Macs with Apple silicon.{{cite web |last1=McQuaid |first1=Mike |title=3.0.0 |url=https://brew.sh/2021/02/05/homebrew-3.0.0/ |website=Homebrew |date=5 February 2021 |access-date=5 February 2021}}
On April 12, 2021, Homebrew version 3.1.0 was released completing their migration of bottles (binary packages) to GitHub Packages before the May 1, 2021 shutdown of Bintray as previously announced by JFrog.{{cite web |last1=McQuaid |first1=Mike |date=2021-04-12|df=mdy |title=3.1.0 |url=https://brew.sh/2021/04/12/homebrew-3.1.0/ |department=blog |website=Homebrew |access-date=2021-04-13}} On February 16, 2023, Homebrew version 4.0.0 was released which defaults to fetching Homebrew-maintained formulae from hosted JSON files rather than local Git-cloned taps.{{cite web |last1=McQuaid |first1=Mike |date=2023-02-16|df=mdy |title=4.0.0 |url=https://brew.sh/2023/02/16/homebrew-4.0.0/ |department=blog |website=Homebrew |access-date=2023-07-07}}
Implementation
Homebrew is written in the Ruby programming language and targets the version of Ruby that comes installed with the macOS operating system. By default, it is installed into /usr/local
on Intel-based machines and /opt/homebrew
on Apple silicon.{{Cite web|last=smittytone|date=2021-02-07|title=How to migrate to native Homebrew on an M1 Mac|url=https://blog.smittytone.net/2021/02/07/how-to-migrate-to-native-homebrew-on-an-m1-mac/|access-date=2021-08-11|website=smittytone messes with micros|language=en}}{{Cite web|title=Discussion: longterm Homebrew prefix on Apple Silicon Macs · Issue #9177 · Homebrew/brew|url=https://github.com/Homebrew/brew/issues/9177|access-date=2021-08-11|website=GitHub|language=en}} The installation consists of a Git repository that enables users to update Homebrew by pulling an updated repository from GitHub.{{citation needed|date=February 2024}} The package manager builds software from source using "formulae", Ruby scripts constructed with the Homebrew domain-specific language (DSL) for managing dependencies, downloading source files, and configuring and compiling software. Binary packages called "bottles" provide pre-built formulae with default options.{{Citation |title=Homebrew Terminology |work=Formula Cookbook |url=https://docs.brew.sh/Formula-Cookbook |access-date=2024-02-27 |publisher=Homebrew |language=en}}
Homebrew does not honor the default privileges of /usr/local
; directory ownership is changed from root with group permissions for the wheel group to the installing user and the "admin" group. Specifically, the mode changes from drwxr-xr-x root wheel
to drwxrwxr-x myuser admin
.{{cite web |last1=Ounsworth |first1=Mike |title=What are the security implications of Homebrew and Macports? |url=https://security.stackexchange.com/a/191614 |website=StackExchange Information Security |access-date=2 April 2019}} All files, not just the directories, have their ownership changed by the installer. This is considered by some as a major security flaw.{{cite web |last1=Phil |first1=Stokes |title=How Homebrew invites users to get pwned |url=https://applehelpwriter.com/2018/03/21/how-homebrew-invites-users-to-get-pwned/ |website=AppleHelpWriter.com |date=21 March 2018 |access-date=2 April 2019}}
Data collection
Homebrew collects installation, build error, and operating system version statistics via InfluxDB.{{cite web |title=4.0.0 – Homebrew |url=https://brew.sh/2023/02/16/homebrew-4.0.0/ |website=Homebrew Blog |date=16 February 2023 |access-date=2023-07-07}} As of Homebrew 4.0.23, no data is collected via Google Analytics.{{ cite web| title=4.0.23 Release notes|url=https://github.com/Homebrew/brew/releases/tag/4.0.23 |website=GitHub Releases |access-date=2023-07-07 }} Users can view analytics data from the last 30, 90, and 365 days on the Homebrew website.{{cite web |title=Analytics Data |url=https://formulae.brew.sh/analytics/ |website=Homebrew Formulae |access-date=1 November 2018}}
It is possible to opt out of data collection with the command brew analytics off
.{{cite web |title=Analytics Command |url=https://docs.brew.sh/Manpage#analytics-subcommand |website=Homebrew Manual |access-date=2023-07-07}}
Operating system support
Homebrew typically supports macOS versions wherefor Apple still releases security updates, i.{{nbsp}}e., the current major version of macOS as well as the two previous (major) versions. {{As of|2025|01}} this included macOS 13 "Ventura," macOS 14 "Sonoma," and macOS 15 "Sequoia."
Version history
class="wikitable" style="text-align:center; margin-top: 0px;"
! Version ! Released ! Latest MacOS ! Minimum MacOS ! Short Blog Description{{cite web |title=Homebrew — Homebrew |url=https://brew.sh/blog/ |website=Homebrew Blog |access-date=15 March 2024 }} |
4.4.0
| |Sequoia (15) |Ventura (13) | |
4.3.0
| |rowspan=2|Sonoma (14) |rowspan=2|Monterey (12) | |
4.2.0
|2023-12-18 |major performance upgrades (e.g. using Ruby 3.1, upgrading fewer dependencies), .env file configuration and macOS Sonoma support. |
4.1.0
|2023-07-20 |rowspan=3|Ventura (13) |rowspan=3|Big Sur (11) |significant improvements to the security/reliability/performance/usability of Homebrew 4.0.0's new JSON API, the completion of the migration of analytics from Google Analytics in the US to InfluxDB in the EU and groundwork for later macOS Sonoma (14) support. |
4.0.0
|2023-02-16 |Enables significantly faster Homebrew-maintained tap updates by migrating from Git-cloned taps to JSON downloads. |
3.6.0
|2022-09-07 |preliminary macOS Ventura support, the need for—eval-all/HOMEBREW_EVAL_ALL and a migration to Ubuntu 22.04 as our CI platform. |
3.5.0
|2022-06-06 |rowspan=3|Monterey (12) |rowspan=3|Catalina (10.15) |improved brew update behaviour |
3.4.0
|2022-02-28 |HOMEBREW_NO_ENV_HINTS to hide configuration suggestions, brew services supported on systemd on Linux, brew install—overwrite and Homebrew beginning the process to leave the SFC. |
3.3.0
|2021-10-25 |migration from Homebrew/linuxbrew-core to Homebrew/homebrew-core for all Homebrew on Linux users, the official support of macOS Monterey (and, as usual, dropping the support for Mojave due to us only supporting 3 macOS versions) and the addition of an opt-in HOMEBREW_INSTALL_FROM_API flag to avoid needing to have Homebrew/homebrew-core or Homebrew/homebrew-cask repositories tapped/cloned locally. |
3.2.0
|2021-06-21 |~Monterey (12) |rowspan=5|10.10+ (unknown) |brew install now upgrades outdated formulae by default and basic macOS 12 (Monterey) support. |
3.1.0
|2021-04-12 | rowspan=4 |Big Sur (11) |migration of our bottles (binary packages) to GitHub Packages. |
3.0.0
|2021-02-05 |official Apple Silicon support and a new bottle format in formulae. |
2.7.0
|2020-12-21 |API deprecations. |
2.6.0
|2020-12-01 |macOS Big Sur support on Intel, brew commands replacing all brew cask commands, the beginnings of macOS M1/Apple Silicon/ARM support and API deprecations. |
2.5.0
|2020-09-08 |rowspan=4|Catalina (10.15) |rowspan=2|Yosemite (10.10) |better brew cask integration, license support and API deprecations. |
2.4.0
|2020-06-11 |dropping macOS Mavericks support, the deprecation of devel versions and brew audit speedups. |
2.3.0
|2020-05-29 |rowspan=4|Mavericks (10.9) |GitHub Actions CI usage, fetching resources before installation, Docker image improvements and the deprecation of brew install from URLs. |
2.2.0
|2019-11-27 |macOS Catalina support, performance increases and better Homebrew on Linux ecosystem integration. |
2.1.0
|2019-04-04 | rowspan=4 |Mojave (10.14) |casks on https://formulae.brew.sh, search on Homebrew sites and better Docker support. |
2.0.0
|2019-02-02 |official support for Linux and Windows 10 (with Windows Subsystem for Linux), brew cleanup running automatically, no more options in Homebrew/homebrew-core, and removal of support for OS X Mountain Lion (10.8) and older. |
1.9.0
|2019-01-09 | rowspan=10 |Mountain Lion (10.8) and older |Linux support, (optional) automatic brew cleanup and providing bottles (binary packages) to more Homebrew users. |
1.8.0
|2018-10-23 |official Mojave support, linkage auto-repair on brew upgrade, brew info displaying analytics data and quarantining Cask's downloads. |
1.7.0
|2018-07-15 |~Mojave (10.14) |fixes for macOS 10.14 Mojave's developer beta, Homebrew Formulae's JSON analytics and formulae APIs and various formula API deprecations. |
1.6.0
|2018-04-09 | rowspan=7 |? |brew install python installing Python 3, the deprecation of Homebrew/homebrew-php and various formula API deprecations. |
1.5.0
|2018-01-19 |deprecations of formula APIs and some Homebrew organisation formula taps. |
1.4.0
|2017-12-11 |Homebrew filters environment variables. |
1.3.0
|2017-07-31 |brew install python no longer installs a python binary without manual PATH additions and instead installs a python2 binary. This avoids overriding the system python binary by default when installing Python as a dependency. It also paves the way to eventually have python be Python 3.x. |
1.2.0
|2017-05-01 |most Homebrew taps (package repositories) in the Homebrew GitHub organisation have been deprecated and the currently buildable software moved into Homebrew/homebrew-core. This will improve the quality and availability of all their software. |
1.1.0
|2016-11-07 |We've had a great response to Homebrew 1.0.0 and been iterating on our work there. That 1.1.0 follows 1.0.9 is a happy coincidence due to breaking changes; in the future we may have a e.g. 1.1.10. |
1.0.0
|2016-09-21 |In the seven years since Homebrew was created by @mxcl our community has grown to almost 6000 unique contributors, a wide-reaching third-party "tap" ecosystem and thousands of packages. |
See also
{{Portal|Free and open-source software}}
{{div col}}
- Fink
- Gentoo/Alt
- MacPorts
- Nix
- Pkgsrc
- FreeBSD Ports
- Installer (macOS)
- List of software package management systems
{{div col end}}
References
{{reflist}}
External links
{{Wikidata property | P8443 }}
- {{Official website}}
- {{Github|Homebrew/brew|Homebrew}}
- [https://changelog.com/podcast/223 "The Changelog #223: Homebrew and Package Management with Mike McQuaid"]. 2016-10-07.
{{Ruby programming language}}
{{Package management systems}}
Category:Free package management systems
Category:Free software programmed in Ruby