Software:Homebrew (package manager)

From HandWiki
Short description: Software installation management software
Homebrew
Homebrew logo
Screenshot of Homebrew Man Page on MacOS Sonoma.png
Homebrew 4.2.2 man page in the Mac Terminal
Original author(s)Max Howell
Initial release21 May 2009; 15 years ago (2009-05-21)[1]
Written inRuby
Operating systemmacOS, Linux, WSL
Available inEnglish
TypePackage manager
LicenseBSD 2-Clause License

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

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

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

History

Homebrew was written by Max Howell in 2009.[1][14] 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.[15] On December 13, 2013, the Homebrew repository migrated from Howell's GitHub account to its own project account.[16] In February 2015, due to downtime at SourceForge which resulted in binaries being unavailable, Homebrew moved their hosting to Bintray.[17] On September 21, 2016, Homebrew version 1.0.0 was released.[18] As of February 2021, Homebrew is maintained by a team of 34 people.[6] 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.[19] On February 2, 2019, Homebrew version 2.0.0 was released.[20] On September 21, 2020, Homebrew version 2.5.2 was released with support for bottle taps (binary package repositories) via GitHub Releases.[21] 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.[22] 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.[23] 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.[24]

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.[25][26] The installation consists of a git repository that allows users to update Homebrew by pulling an updated repository from GitHub. 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 needed]

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

Data collection

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

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

See also


References

  1. 1.0 1.1 on GitHub
  2. Arko, Andre. "Homebrew: OS X's Missing Package Manager". Engine Yard blog. Engine Yard. https://blog.engineyard.com/2010/homebrew-os-xs-missing-package-manager/. 
  3. Hoffman, Chris. "Homebrew for OS X Easily Installs Desktop Apps and Terminal Utilities". http://www.howtogeek.com/211541/homebrew-for-os-x-easily-installs-desktop-apps-and-terminal-utilities/. 
  4. Terpstra, Brett (25 December 2009). "Homebrew, the perfect gift for command line lovers". https://www.engadget.com/2009/12/25/homebrew-the-perfect-gift-for-command-line-lovers/. 
  5. "Homebrew - Open Collective". 12 January 2024. https://opencollective.com/homebrew. 
  6. 6.0 6.1 McQuaid, Mike. "Homebrew/brew/README.md". https://github.com/Homebrew/brew/blob/master/README.md. 
  7. "Popular Forked Repositories". https://github.com/popular/forked. 
  8. "The Octoverse in 2012". GitHub. https://github.com/blog/1359-the-octoverse-in-2012. 
  9. "GitHub Octoverse 2013". http://octoverse.github.com/. 
  10. "Linuxbrew". https://linuxbrew.sh. 
  11. "Linuxbrew Readme". https://github.com/Linuxbrew/brew/blob/93389fde63974f096156344e281610acec44130c/README.md. 
  12. "Homebrew Cask". https://github.com/homebrew/homebrew-cask. 
  13. "Homebrew/homebrew-php". https://github.com/Homebrew/homebrew-php. 
  14. Howell, Max. "I'll start with a rare Belgian yeast and Sussex hops". https://github.com/Homebrew/homebrew/commit/29d85578e75170a6c0eaebda4d701b46f1acf446. 
  15. "brew test-bot". https://www.kickstarter.com/projects/homebrew/brew-test-bot/description. 
  16. @MacHomebrew (11 December 2013). "This Saturday morning at 0100 GMT we will be migrating Homebrew". https://twitter.com/MacHomebrew/status/410681585407901696. 
  17. @MacHomebrew (23 February 2015). "Homebrew's bottles (binary packages) are now hosted by @bintray". https://twitter.com/MacHomebrew/status/569872540845387777. 
  18. on GitHub
  19. "Homebrew 1.9.0". 9 January 2019. https://brew.sh/2019/01/09/homebrew-1.9.0/. 
  20. McQuaid, Mike (2 February 2019). "2.0.0". https://brew.sh/2019/02/02/homebrew-2.0.0/. 
  21. Dziurla, Dawid (2020-11-18). "Homebrew tap with bottles uploaded to GitHub Releases". https://brew.sh/2020/11/18/homebrew-tap-with-bottles-uploaded-to-github-releases/. 
  22. McQuaid, Mike (5 February 2021). "3.0.0". https://brew.sh/2021/02/05/homebrew-3.0.0/. 
  23. McQuaid, Mike (2021-04-12). "3.1.0". https://brew.sh/2021/04/12/homebrew-3.1.0/. 
  24. McQuaid, Mike (2023-02-16). "4.0.0". https://brew.sh/2023/02/16/homebrew-4.0.0/. 
  25. smittytone (2021-02-07). "How to migrate to native Homebrew on an M1 Mac" (in en). https://blog.smittytone.net/2021/02/07/how-to-migrate-to-native-homebrew-on-an-m1-mac/. 
  26. "Discussion: longterm Homebrew prefix on Apple Silicon Macs · Issue #9177 · Homebrew/brew" (in en). https://github.com/Homebrew/brew/issues/9177. 
  27. Ounsworth, Mike. "What are the security implications of Homebrew and Macports?". https://security.stackexchange.com/a/191614. 
  28. Phil, Stokes (21 March 2018). "How Homebrew invites users to get pwned". https://applehelpwriter.com/2018/03/21/how-homebrew-invites-users-to-get-pwned/. 
  29. "4.0.0 – Homebrew". 16 February 2023. https://brew.sh/2023/02/16/homebrew-4.0.0/. 
  30. "4.0.23 Release notes". https://github.com/Homebrew/brew/releases/tag/4.0.23. 
  31. "Analytics Data". https://formulae.brew.sh/analytics/. 
  32. "Analytics Command". https://docs.brew.sh/Manpage#analytics-subcommand. 

External links