homebrew-core
🍻 Default formulae for the missing package manager for macOS (or Linux)
Top Related Projects
The MacPorts ports tree
The Microsoft community Windows Package Manager manifest repository
Nix Packages collection & NixOS
[MIRROR] Official Gentoo ebuild repository
Quick Overview
Homebrew/homebrew-core is the core formulae repository for Homebrew, the popular package manager for macOS (and Linux). It contains the definitions for thousands of packages that can be installed using Homebrew, making it a central hub for macOS software distribution and management.
Pros
- Extensive collection of software packages for macOS
- Community-driven, with frequent updates and contributions
- Well-maintained and curated by experienced maintainers
- Integrates seamlessly with the Homebrew package manager
Cons
- Can sometimes lag behind the latest software versions
- Occasional conflicts between formulae or with system-installed software
- Limited to command-line tools and libraries (GUI apps are handled separately)
- Requires regular updates to keep packages current
Getting Started
To use Homebrew and access the packages in homebrew-core:
- Install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Update Homebrew:
brew update
- Install a package:
brew install <package_name>
- Search for available packages:
brew search <keyword>
- Upgrade installed packages:
brew upgrade
For more information and advanced usage, visit the official Homebrew documentation at https://docs.brew.sh/.
Competitor Comparisons
The MacPorts ports tree
Pros of macports-ports
- More comprehensive package management system with better dependency handling
- Supports multiple versions of packages installed simultaneously
- Isolates installations from the base system, reducing conflicts
Cons of macports-ports
- Generally slower installation process compared to Homebrew
- Requires more disk space due to its isolation approach
- Less user-friendly for beginners, with a steeper learning curve
Code Comparison
macports-ports:
PortSystem 1.0
name example
version 1.0
categories devel
maintainers example.com:user
description An example port
long_description ${description}
homebrew-core:
class Example < Formula
desc "An example formula"
homepage "https://example.com"
url "https://example.com/example-1.0.tar.gz"
sha256 "abcdef1234567890abcdef1234567890"
def install
system "./configure", "--prefix=#{prefix}"
system "make", "install"
end
end
Both repositories use different syntaxes for defining packages. MacPorts uses TCL-based Portfiles, while Homebrew uses Ruby-based formulae. The MacPorts approach is more verbose but offers finer control over the installation process, while Homebrew's syntax is more concise and easier to read for many users.
The Microsoft community Windows Package Manager manifest repository
Pros of winget-pkgs
- Native Windows integration and support
- Simpler package submission process for developers
- Centralized management through Windows Package Manager
Cons of winget-pkgs
- Smaller package ecosystem compared to homebrew-core
- Limited to Windows platform only
- Less mature and established community
Code Comparison
winget-pkgs manifest (YAML):
PackageIdentifier: Example.App
PackageVersion: 1.0.0
PackageName: Example App
Publisher: Example Publisher
License: MIT
ShortDescription: A sample application
Installers:
- Architecture: x64
InstallerUrl: https://example.com/app-installer.exe
InstallerType: exe
homebrew-core formula (Ruby):
class ExampleApp < Formula
desc "A sample application"
homepage "https://example.com"
url "https://example.com/app-1.0.0.tar.gz"
sha256 "abcdef1234567890abcdef1234567890"
license "MIT"
def install
system "./configure", "--prefix=#{prefix}"
system "make", "install"
end
end
Both repositories serve as package management systems, but winget-pkgs focuses on Windows while homebrew-core primarily targets macOS and Linux. winget-pkgs uses YAML manifests for package definitions, whereas homebrew-core employs Ruby-based formulae. The homebrew-core ecosystem is more extensive and mature, but winget-pkgs offers tighter Windows integration and a simpler submission process for developers.
Nix Packages collection & NixOS
Pros of nixpkgs
- Reproducible builds and system configurations
- Declarative approach to package management
- Supports multiple versions of packages simultaneously
Cons of nixpkgs
- Steeper learning curve due to unique Nix language
- Smaller community and ecosystem compared to Homebrew
- Can be more resource-intensive for system management
Code Comparison
nixpkgs:
{ stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
pname = "example";
version = "1.0.0";
src = fetchFromGitHub {
owner = "example";
repo = "example";
rev = "v${version}";
sha256 = "0000000000000000000000000000000000000000000000000000";
};
}
homebrew-core:
class Example < Formula
desc "Example package"
homepage "https://example.com"
url "https://github.com/example/example/archive/v1.0.0.tar.gz"
sha256 "0000000000000000000000000000000000000000000000000000"
def install
system "./configure", "--prefix=#{prefix}"
system "make", "install"
end
end
The nixpkgs example uses a declarative approach with the Nix language, while homebrew-core uses Ruby with a more imperative style. nixpkgs focuses on reproducibility and isolation, whereas homebrew-core aims for simplicity and ease of use for macOS users.
[MIRROR] Official Gentoo ebuild repository
Pros of gentoo
- Offers more granular control over package compilation and optimization
- Provides a more comprehensive system-wide package management approach
- Allows for a highly customized and tailored system configuration
Cons of gentoo
- Significantly longer installation and update times due to source compilation
- Steeper learning curve and more complex management for new users
- Requires more system resources and maintenance effort
Code comparison
gentoo (ebuild):
EAPI=7
inherit cmake
DESCRIPTION="A fast and lightweight key-value database"
HOMEPAGE="https://github.com/google/leveldb"
SRC_URI="https://github.com/google/leveldb/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD"
SLOT="0/${PV}"
KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~ppc64 ~x86"
IUSE="snappy static-libs test"
homebrew-core (Ruby):
class Leveldb < Formula
desc "Key-value storage library with ordered mapping"
homepage "https://github.com/google/leveldb/"
url "https://github.com/google/leveldb/archive/1.23.tar.gz"
sha256 "9a37f8a6174f09bd622bc723b55881dc541cd50747cbd08831c2a82d620f6d76"
license "BSD-3-Clause"
depends_on "cmake" => :build
depends_on "snappy"
The gentoo ebuild offers more explicit control over compilation flags and USE flags, while the homebrew-core formula provides a simpler, more streamlined approach to package installation.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Homebrew Core
Core formulae for the Homebrew package manager.
How do I install these formulae?
Just brew install <formula>
. This is the default tap for Homebrew and is installed by default.
More Documentation, Troubleshooting, Contributing, Security, Community, Donations, License and Sponsors
See these sections in Homebrew/brew's README.
Top Related Projects
The MacPorts ports tree
The Microsoft community Windows Package Manager manifest repository
Nix Packages collection & NixOS
[MIRROR] Official Gentoo ebuild repository
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot