Homebrew is a
free and
open-source software
package management system
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.
A package manager deals w ...
that simplifies the installation of software on
Apple's operating system,
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
, as well as
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
. 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
Ruby on Rails (simplified as Rails) is a server-side web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and we ...
community and earned praise for its
extensibility. Homebrew has been recommended for its ease of use as well as its integration into the
command line interface. Homebrew is a non-profit project member of the
Software Freedom Conservancy, and is run entirely by unpaid volunteers.
Homebrew has made extensive use of
GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continu ...
to expand the support of several packages through user contributions. In 2010, Homebrew was the third-most-
forked repository on GitHub. In 2012, Homebrew had the largest number of new contributors on GitHub. In 2013, Homebrew had both the largest number of contributors and issues closed of any project on GitHub.
Homebrew has spawned several sub-projects such as Linuxbrew, a Linux
port
A port is a maritime facility comprising one or more wharves or loading areas, where ships load and discharge cargo and passengers. Although usually situated on a sea coast or estuary, ports can also be found far inland, such as H ...
now officially merged into Homebrew; Homebrew Cask, which builds upon Homebrew and focuses on the installation of
GUI
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
applications; and "taps" dedicated to specific areas or programming languages like
PHP
PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
.
History
Homebrew was written by Max Howell in 2009.
In March 2013, Homebrew successfully completed a
Kickstarter campaign to raise funds for servers to test and build formulae and managed to raise . On December 13, 2013, the Homebrew repository migrated from Howell's GitHub account to its own project account. In February 2015, due to downtime at
SourceForge
SourceForge is a web service that offers software consumers a centralized online location to control and manage open-source software projects and research business software. It provides source code repository hosting, bug tracking, mirroring ...
which resulted in binaries being unavailable, Homebrew moved their hosting to
Bintray. On September 21, 2016, Homebrew version 1.0.0 was released. 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
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
to the Homebrew feature set. On February 2, 2019, Homebrew version 2.0.0 was released. On September 21, 2020, Homebrew version 2.5.2 was released with support for bottle taps (binary package repositories) via GitHub Releases. 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
Apple silicon is a series of system on a chip (SoC) and system in a package (SiP) processors designed by Apple Inc., mainly using the ARM architecture. It is the basis of most new Mac computers as well as iPhone, iPad, iPod Touch, Apple TV, ...
. 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.
Implementation
Homebrew is written in the
Ruby programming language
Ruby is an interpreted, high-level, general-purpose programming language which supports multiple programming paradigms. It was designed with an emphasis on programming productivity and simplicity. In Ruby, everything is an object, including p ...
and targets the version of Ruby that comes installed with the macOS operating system. By default, it is installed into
/usr/local
on
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the developers of the x86 seri ...
-based machines and
/opt/homebrew
on
Apple silicon
Apple silicon is a series of system on a chip (SoC) and system in a package (SiP) processors designed by Apple Inc., mainly using the ARM architecture. It is the basis of most new Mac computers as well as iPhone, iPad, iPod Touch, Apple TV, ...
. The installation consists of a
git
Git () is a distributed version control system: tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development. Its goals include speed, data in ...
repository that allows users to update Homebrew by pulling an updated repository from
GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continu ...
. 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.
Homebrew does not honor the default
privileges of
/usr/local
; directory
ownership is changed from
root
In vascular plants, the roots are the organs of a plant that are modified to provide anchorage for the plant and take in water and nutrients into the plant body, which allows plants to grow taller and faster. They are most often below the su ...
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
. All files, not just the directories, have their ownership changed by the installer. This is considered by some as a major security flaw.
Data collection
Homebrew collects installation, build error, and operating system version statistics via
Google Analytics
Google Analytics is a web analytics service offered by Google that tracks and reports website traffic, currently as a platform inside the Google Marketing Platform brand. Google launched the service in November 2005 after acquiring Urchin.
As o ...
.
It is possible to opt out with the command
brew analytics off
.
Users can view analytics data from the last 30, 90, and 365 days on the Homebrew website.
See also
*
Fink
*
Gentoo/Alt
Portage is a package management system originally created for and used by Gentoo Linux and also by ChromeOS, Calculate, Sabayon, and Funtoo Linux among others. Portage is based on the concept of ports collections. Gentoo is sometimes referre ...
*
MacPorts
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's similar in function to Fink and the BSD ports collection ...
*
Nix
*
Pkgsrc
pkgsrc (''package source'') is a package management system for Unix-like operating systems. It was forked from the FreeBSD ports collection in 1997 as the primary package management system for NetBSD. Since then it has evolved independently; in 19 ...
*
FreeBSD Ports
The FreeBSD Ports collection is a package management system for the FreeBSD operating system, providing an easy and consistent way of installing software packages. As of February 2020, there are over 38,487 ports available in the collection. It has ...
*
Installer (macOS)
*
List of software package management systems
References
External links
*
*
"The Changelog #223: Homebrew and Package Management with Mike McQuaid" 2016-10-07.
{{Package management systems
2009 software
Console applications
Free package management systems
Free software programmed in Ruby
Software using the BSD license
Utilities for Linux
Utilities for macOS