Homebrew (package management software)

Homebrew
Screenshot
The help output for the brew command running in the Terminal
Original author(s) Max Howell
Initial release 2009 (2009)
Repository Edit this at Wikidata
Written in Ruby
Operating system macOS
Type Package manager
License BSD license
Website brew.sh

Homebrew is a free and open-source software package management system that simplifies the installation of software on Apple's macOS operating system. Originally written by Max Howell, the package manager has gained popularity in the Ruby on Rails community and earned praise for its extensibility.[1] Homebrew has been recommended for its ease of use[2] as well as its integration into the command line.[3] Homebrew is a non-profit project member of the Software Freedom Conservancy, and is run entirely by unpaid volunteers.[4]

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

Homebrew has spawned several sub-projects such as Linuxbrew, which is a Linux port,[8] Homebrew Cask, which builds upon Homebrew and focuses on the installation of GUI applications,[9] and "taps" dedicated to specific areas or programming languages like PHP.[10]

History

Homebrew was written by Max Howell in 2009.[11] 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.[12] On December 13, 2013, the Homebrew repository migrated from Howell's GitHub account to its own project account.[13] In February 2015, due to downtime at SourceForge which resulted in binaries being unavailable, Homebrew moved their hosting to bintray.[14] As of July 2016, Homebrew is maintained by a team of 12 developers.[15]

Implementation

Homebrew is written in the Ruby programming language and targets the version of Ruby that comes installed with the macOS operating system. It is by default installed into /usr/local and consists of a git repository, allowing the user to update Homebrew by pulling an updated repository from GitHub. The package manager builds software from source using "formulae", Ruby scripts constructed with Homebrew's 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 with group permissions for the wheel group to the installing user and the "admin" group. All files, not just the directories, have their ownership changed by the installer. Output from the installer:

==> This script will install:

/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew

==> The following existing directories will be made group writable:

/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/share
/usr/local/var
/usr/local/etc/bash_completion.d
/usr/local/lib/pkgconfig
/usr/local/share/aclocal
/usr/local/share/doc
/usr/local/share/info
/usr/local/share/locale
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man3
/usr/local/share/man/man5
/usr/local/share/man/man7

==> The following existing directories will have their owner set to you:

/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/share
/usr/local/var
/usr/local/etc/bash_completion.d
/usr/local/lib/pkgconfig
/usr/local/share/aclocal
/usr/local/share/doc
/usr/local/share/info
/usr/local/share/locale
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man3
/usr/local/share/man/man5
/usr/local/share/man/man7

==> The following existing directories will have their group set to admin:

/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/share
/usr/local/var
/usr/local/etc/bash_completion.d
/usr/local/lib/pkgconfig
/usr/local/share/aclocal
/usr/local/share/doc
/usr/local/share/info
/usr/local/share/locale
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man3
/usr/local/share/man/man5
/usr/local/share/man/man7

==> The following new directories will be created:

/usr/local/Homebrew
/usr/local/Frameworks

Data collection

Homebrew collects user behaviour data and reports it to Google Analytics.[16] It is possible to opt out with the command brew analytics off.[16]

See also

References

  1. Arko, Andre. "Homebrew: OS X's Missing Package Manager". Engine Yard blog. Engine Yard. Archived from the original on July 8, 2015.
  2. Hoffman, Chris. "Homebrew for OS X Easily Installs Desktop Apps and Terminal Utilities". How-to Geek. Retrieved 24 June 2015.
  3. Terpstra, Brett. "Homebrew, the perfect gift for command line lovers". Engadget. Retrieved 24 June 2015.
  4. https://github.com/Homebrew/brew/blob/master/README.md#who-are-you
  5. "Popular Forked Repositories". GitHub. Archived from the original on 11 March 2010. Retrieved 24 June 2015.
  6. "The Octoverse in 2012". GitHub.
  7. "GitHub Octoverse 2013".
  8. "homebrew/linuxbrew". GitHub. Retrieved 25 June 2015.
  9. "Homebrew-Cask". caskroom. Retrieved 11 April 2018.
  10. "Homebrew/homebrew-php". GitHub. Retrieved 25 June 2015.
  11. Howell, Max. "I'll start with a rare Belgian yeast and Sussex hops". GitHub. Retrieved 24 June 2015.
  12. "brew test-bot". Kickstarter. Retrieved 25 June 2015.
  13. @MacHomebrew (11 December 2013). "This Saturday morning at 0100 GMT we will be migrating Homebrew" (Tweet) via Twitter.
  14. @MacHomebrew (23 February 2015). "Homebrew's bottles (binary packages) are now hosted by @bintray" (Tweet) via Twitter.
  15. McQuaid, Mike. "homebrew/Readme". GitHub. Retrieved 16 July 2016.
  16. 1 2 "Homebrew's Anonymous Aggregate User Behaviour Analytics". GitHub. 20 September 2016. Archived from the original on 26 November 2016. Retrieved 26 November 2016.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.