Homebrew (package manager)

Last updated
Homebrew
Original author(s) Max Howell
Initial release21 May 2009;15 years ago (2009-05-21) [1]
Stable release
4.4.17 [2]   OOjs UI icon edit-ltr-progressive.svg / 20 January 2025;3 days ago (20 January 2025)
Repository
Written inRuby, [3] HTML, [3] shell script, [3] JavaScript [3]   OOjs UI icon edit-ltr-progressive.svg
Operating system macOS, Linux, [4] Windows Subsystem for Linux [4]   OOjs UI icon edit-ltr-progressive.svg
Available inEnglish
Type system-level package manager, free and open-source software  OOjs UI icon edit-ltr-progressive.svg
License 2-clause BSD License [5]   OOjs UI icon edit-ltr-progressive.svg
Website brew.sh OOjs UI icon edit-ltr-progressive.svg

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. [6] Homebrew has been recommended for its ease of use [7] as well as its integration into the command-line interface. [8] Homebrew is a member of the Open Source Collective, [9] and is run entirely by unpaid volunteers. [10]

Contents

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. [11] In 2012, Homebrew had the largest number of new contributors on GitHub. [12] In 2013, Homebrew had both the largest number of contributors and issues closed of any project on GitHub. [13]

Homebrew has spawned several sub-projects such as Linuxbrew, a Linux port now officially merged into Homebrew; [14] [15] Homebrew Cask, which builds upon Homebrew and focuses on the installation of GUI applications; [16] and "taps" dedicated to specific areas or programming languages like PHP. [17]

History

Homebrew was written by Max Howell in 2009. [1] [18] In March 2013, Homebrew successfully completed a Kickstarter campaign to raise funds for servers to test and build formulae and managed to raise £ 14,859. [19] On December 13, 2013, the Homebrew repository migrated from Howell's GitHub account to its own project account. [20] In February 2015, due to downtime at SourceForge which resulted in binaries being unavailable, Homebrew moved their hosting to Bintray. [21] On September 21, 2016, Homebrew version 1.0.0 was released. [22] As of February 2021, Homebrew is maintained by a team of 34 people. [10] 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. [23] On February 2, 2019, Homebrew version 2.0.0 was released. [24] On September 21, 2020, Homebrew version 2.5.2 was released with support for bottle taps (binary package repositories) via GitHub Releases. [25] 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. [26] 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. [27] 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. [28]

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. [29] [30] The installation consists of a Git repository that enables users to update Homebrew by pulling an updated repository from GitHub.[ citation needed ] 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. [31]

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. [32] All files, not just the directories, have their ownership changed by the installer. This is considered by some as a major security flaw. [33]

Data collection

Homebrew collects installation, build error, and operating system version statistics via InfluxDB. [34] As of Homebrew 4.0.23, no data is collected via Google Analytics. [35] Users can view analytics data from the last 30, 90, and 365 days on the Homebrew website. [36]

It is possible to opt out of data collection with the command brew analytics off. [37]

Operating system support

Homebrew typically supports macOS versions wherefor Apple still releases security updates, i. e., the current major version of macOS as well as the two previous (major) versions. As of January 2025 this included macOS 13 “Ventura,” macOS 14 “Sonoma,” and macOS 15 “Sequoia.”

Version history

VersionReleasedLatest MacOSMinimum MacOSShort Blog Description [38]
4.4.0Sequoia (15)Ventura (13)
4.3.0Sonoma (14)Monterey (12)
4.2.02023-12-18major performance upgrades (e.g. using Ruby 3.1, upgrading fewer dependencies), .env file configuration and macOS Sonoma support.
4.1.02023-07-20Ventura (13)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.02023-02-16Enables significantly faster Homebrew-maintained tap updates by migrating from Git-cloned taps to JSON downloads.
3.6.02022-09-07preliminary macOS Ventura support, the need for --eval-all/HOMEBREW_EVAL_ALL and a migration to Ubuntu 22.04 as our CI platform.
3.5.02022-06-06Monterey (12)Catalina (10.15)improved brew update behaviour
3.4.02022-02-28HOMEBREW_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.02021-10-25migration 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.02021-06-21~Monterey (12)?brew install now upgrades outdated formulae by default and basic macOS 12 (Monterey) support.
3.1.02021-04-12Big Sur (11)migration of our bottles (binary packages) to GitHub Packages.
3.0.02021-02-05official Apple Silicon support and a new bottle format in formulae.
2.7.02020-12-21API deprecations.
2.6.02020-12-01macOS 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.02020-09-08Catalina (10.15)Yosemite (10.10)better brew cask integration, license support and API deprecations.
2.4.02020-06-11dropping macOS Mavericks support, the deprecation of devel versions and brew audit speedups.
2.3.02020-05-29Mavericks (10.9)GitHub Actions CI usage, fetching resources before installation, Docker image improvements and the deprecation of brew install from URLs.
2.2.02019-11-27macOS Catalina support, performance increases and better Homebrew on Linux ecosystem integration.
2.1.02019-04-04Mojave (10.14)casks on https://formulae.brew.sh, search on Homebrew sites and better Docker support.
2.0.02019-02-02official 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.02019-01-09Mountain Lion (10.8) and olderLinux support, (optional) automatic brew cleanup and providing bottles (binary packages) to more Homebrew users.
1.8.02018-10-23official Mojave support, linkage auto-repair on brew upgrade, brew info displaying analytics data and quarantining Cask’s downloads.
1.7.02018-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.02018-04-09?brew install python installing Python 3, the deprecation of Homebrew/homebrew-php and various formula API deprecations.
1.5.02018-01-19deprecations of formula APIs and some Homebrew organisation formula taps.
1.4.02017-12-11Homebrew filters environment variables.
1.3.02017-07-31brew 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.02017-05-01most 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.02016-11-07We’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.02016-09-21In 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

Related Research Articles

<span class="mw-page-title-main">Irssi</span> Text-mode IRC client

Irssi is an Internet Relay Chat (IRC) client program for Linux, FreeBSD, macOS and Microsoft Windows. It was originally written by Timo Sirainen, and released under the terms of the GNU GPL-2.0-or-later in January 1999.

<span class="mw-page-title-main">Wine (software)</span> Windows compatibility software

Wine is a free and open-source compatibility layer to allow application software and computer games developed for Microsoft Windows to run on Unix-like operating systems. Developers can compile Windows applications against WineLib to help port them to Unix-like systems. Wine is predominantly written using black-box testing reverse-engineering, to avoid copyright issues. No code emulation or virtualization occurs. Wine is primarily developed for Linux and macOS.

<span class="mw-page-title-main">Package manager</span> Software tools for handling softwares packages

A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.

Darwin is the core Unix-like operating system of macOS, iOS, watchOS, tvOS, iPadOS, audioOS, visionOS, and bridgeOS. It previously existed as an independent open-source operating system, first released by Apple Inc. in 2000. It is composed of code derived from NeXTSTEP, FreeBSD, other BSD operating systems, Mach, and other free software projects' code, as well as code developed by Apple. Darwin's official mascot is Hexley the Platypus.

<span class="mw-page-title-main">Fink (software)</span> Project to port and package open-source Unix software to macOS

The Fink project is an effort to port and package open-source Unix programs to macOS. Fink uses dpkg and APT, as well as its own frontend program, fink.

<span class="mw-page-title-main">Xcode</span> IDE including tools for developing software for Apple platforms

Xcode is Apple's integrated development environment (IDE) for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, tvOS, and visionOS. It was initially released in late 2003; the latest stable release is version 16, released on September 16, 2024, and is available free of charge via the Mac App Store and the Apple Developer website. Registered developers can also download preview releases and prior versions of the suite through the Apple Developer website. Xcode includes command-line tools that enable UNIX-style development via the Terminal app in macOS. They can also be downloaded and installed without the GUI.

<span class="mw-page-title-main">MacPorts</span> Package Manager for macOS

MacPorts, formerly DarwinPorts, is a package manager for macOS and Darwin. It is an open-source software project that aims to simplify the installation of other open source software. It is similar in function to Fink and the BSD ports collections.

<span class="mw-page-title-main">Transmission (BitTorrent client)</span> BitTorrent client

Transmission is a BitTorrent client which features a variety of user interfaces on top of a cross-platform back-end. Transmission is free software licensed under the terms of the GNU General Public License, with parts under the MIT License.

<span class="mw-page-title-main">TextMate</span> GUI text editor for macOS

TextMate is a free and open-source general-purpose GUI text editor for macOS created by Allan Odgaard. TextMate features declarative customizations, tabs for open documents, recordable macros, folding sections, snippets, shell integration, and an extensible bundle system.

<span class="mw-page-title-main">HomeBank</span>

HomeBank is a personal accounting software package that runs on OpenBSD, Linux, FreeBSD, Microsoft Windows, macOS and AmigaOS. Released under version 2 or later of the GNU General Public License, HomeBank is free software. HomeBank can be found in the software repositories of Linux distributions such as Debian, Fedora, Mandriva, openSUSE, Gentoo Linux, Arch Linux and Ubuntu.

<span class="mw-page-title-main">SMPlayer</span> Graphical front-end for MPlayer and mpv

SMPlayer is a cross-platform graphical front-end for MPlayer and mpv and forks of Mplayer using GUI widgets offered by Qt. SMPlayer is free and open-source software subject to the terms of the GNU General Public License version 2 or later. SMplayer has been localized in more than 30 languages.

NixOS is a free and open source Linux distribution based on the Nix package manager. NixOS uses an immutable design and an atomic update model. Its use of a declarative configuration system allows reproducibility and portability.

<span class="mw-page-title-main">OpenZFS</span> Open-source implementation of ZFS file system

OpenZFS is an open-source implementation of the ZFS file system and volume manager initially developed by Sun Microsystems for the Solaris operating system, and is now maintained by the OpenZFS Project. Similar to the original ZFS, the implementation supports features like data compression, data deduplication, copy-on-write clones, snapshots, RAID-Z, and virtual devices that can create filesystems that span multiple disks.

<span class="mw-page-title-main">Anaconda (Python distribution)</span> Python and R distribution

Anaconda is an open source data science and artificial intelligence distribution platform for Python and R programming languages. Developed by Anaconda, Inc., an American company founded in 2012, the platform is used to develop and manage data science and AI projects. In 2024, Anaconda Inc. has about 300 employees and 45 million users.

<span class="mw-page-title-main">Borg (backup software)</span> Deduplicating backup program

Borg is deduplicating backup software for various Unix-like operating systems. Borg is notably included in the Debian, Fedora, and Arch repositories.

git-annex is a distributed file synchronization system written in Haskell. It aims to solve the problem of sharing and synchronizing collections of large files independent from a commercial service or even a central server.

Apple File System (APFS) is a proprietary file system developed and deployed by Apple Inc. for macOS Sierra (10.12.4) and later, iOS 10.3, tvOS 10.2, watchOS 3.2, and all versions of iPadOS. It aims to fix core problems of HFS+, APFS's predecessor on these operating systems. APFS is optimized for solid-state drive storage and supports encryption, snapshots, and increased data integrity, among other capabilities.

<span class="mw-page-title-main">R package</span> Extensions to the R statistical programming language

R packages are extensions to the R statistical programming language. R packages contain code, data, and documentation in a standardised collection format that can be installed by users of R, typically via a centralised software repository such as CRAN. The large number of packages available for R, and the ease of installing and using them, has been cited as a major factor driving the widespread adoption of the language in data science.

<span class="mw-page-title-main">SerenityOS</span> Hobbyist desktop computing operating system

SerenityOS is a free and open source desktop operating system. It features a preemptive kernel, currently supports x86-64 based computers, and hosts multiple complex applications including its own web browser and integrated development environment (IDE). Development started in 2018—initially as a one-man project of Swedish programmer Andreas Kling—and is now developed by a community of hobbyists. The project is hosted at GitHub and is described as being not catered to "non-technical users".

References

  1. 1 2 Homebrew release 0.1 on GitHub
  2. "Release 4.4.17". 20 January 2025. Retrieved 22 January 2025.
  3. 1 2 3 4 "The Homebrew Open Source Project on Open Hub: Languages Page". Open Hub. Retrieved 17 May 2024.
  4. 1 2 "Homebrew 1.9.0". 9 January 2019. Retrieved 10 January 2019.
  5. "brew/LICENSE.txt at master". 4 January 2017. Retrieved 14 April 2021.
  6. Arko, Andre. "Homebrew: OS X's Missing Package Manager". Engine Yard blog. Engine Yard. Archived from the original on July 8, 2015.
  7. Hoffman, Chris. "Homebrew for OS X Easily Installs Desktop Apps and Terminal Utilities". How-to Geek. Archived from the original on 24 March 2015. Retrieved 24 June 2015.
  8. Terpstra, Brett (25 December 2009). "Homebrew, the perfect gift for command line lovers". Engadget. Retrieved 24 June 2015.
  9. "Homebrew - Open Collective". 12 January 2024.
  10. 1 2 McQuaid, Mike. "Homebrew/brew/README.md". GitHub. Archived from the original on 5 February 2021. Retrieved 5 February 2021.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  11. "Popular Forked Repositories". GitHub. Archived from the original on 11 March 2010. Retrieved 24 June 2015.
  12. "The Octoverse in 2012". GitHub.
  13. "GitHub Octoverse 2013". Archived from the original on 2014-02-07.
  14. "Linuxbrew". Linuxbrew. Retrieved 2019-02-02.
  15. "Linuxbrew Readme". GitHub. Retrieved 2019-03-29.
  16. "Homebrew Cask". Github. Retrieved 15 April 2019.
  17. "Homebrew/homebrew-php". GitHub. Retrieved 25 June 2015.
  18. Howell, Max. "I'll start with a rare Belgian yeast and Sussex hops". GitHub. Retrieved 24 June 2015.
  19. "brew test-bot". Kickstarter. Retrieved 25 June 2015.
  20. @MacHomebrew (11 December 2013). "This Saturday morning at 0100 GMT we will be migrating Homebrew" (Tweet) via Twitter.
  21. @MacHomebrew (23 February 2015). "Homebrew's bottles (binary packages) are now hosted by @bintray" (Tweet) via Twitter.
  22. Homebrew release 1.0.0 on GitHub
  23. "Homebrew 1.9.0". Homebrew. 9 January 2019. Retrieved 10 January 2019.
  24. McQuaid, Mike (2 February 2019). "2.0.0". Homebrew. Retrieved 3 February 2019.
  25. Dziurla, Dawid (November 18, 2020). "Homebrew tap with bottles uploaded to GitHub Releases". blog. Homebrew. Retrieved 2021-04-08.
  26. McQuaid, Mike (5 February 2021). "3.0.0". Homebrew. Retrieved 5 February 2021.
  27. McQuaid, Mike (April 12, 2021). "3.1.0". blog. Homebrew. Retrieved 2021-04-13.
  28. McQuaid, Mike (February 16, 2023). "4.0.0". blog. Homebrew. Retrieved 2023-07-07.
  29. smittytone (2021-02-07). "How to migrate to native Homebrew on an M1 Mac". smittytone messes with micros. Retrieved 2021-08-11.
  30. "Discussion: longterm Homebrew prefix on Apple Silicon Macs · Issue #9177 · Homebrew/brew". GitHub. Retrieved 2021-08-11.
  31. "Homebrew Terminology", Formula Cookbook, Homebrew, retrieved 2024-02-27
  32. Ounsworth, Mike. "What are the security implications of Homebrew and Macports?". StackExchange Information Security. Retrieved 2 April 2019.
  33. Phil, Stokes (21 March 2018). "How Homebrew invites users to get pwned". AppleHelpWriter.com. Retrieved 2 April 2019.
  34. "4.0.0 – Homebrew". Homebrew Blog. 16 February 2023. Retrieved 2023-07-07.
  35. "4.0.23 Release notes". GitHub Releases. Retrieved 2023-07-07.
  36. "Analytics Data". Homebrew Formulae. Retrieved 1 November 2018.
  37. "Analytics Command". Homebrew Manual. Retrieved 2023-07-07.
  38. "Homebrew — Homebrew". Homebrew Blog. Retrieved 15 March 2024.