Homebrew生态项目简介:Zerobrew、WailBrew

最近又重新用Mac作为开发环境,于是对Homebrew相关的概念(或项目)稍微关注一下;进一步,搜集相关开源项目,记录得到本文。

题外话:很多次看到某某项目志在成为Homebrew的平替,可是这么多年下来,还是没有哪个成功过。

Homebrew在macOS包管理领域的地位稳固得一逼,这背后是一个由技术、生态、用户体验和社区网络共同构筑的护城河。

原因维度 具体分析
先发与网络效应 Homebrew是第一个成功解决macOS缺乏主流包管理器痛点的项目。海量用户、教程、脚本都围绕它构建,形成巨大的转换成本。新项目面临"鸡生蛋蛋生鸡"的生态困境
庞大而成熟的生态 Homebrew拥有超万款软件包(Formula),覆盖开发、工具到桌面应用的方方面面。二进制预编译包大大提升安装速度和成功率。这是任何新项目短期内难以企及的核心资源
与系统的深度集成 Homebrew的安装路径、权限管理等设计已与macOS及开发者的工作流深度融合。谨慎地遵循Unix传统和macOS的目录结构,保证出色的系统兼容性和稳定性
持续的迭代与改进 Homebrew团队始终保持活跃更新,不断改进性能(如增量更新)、增加功能(如官方支持AppleSilicon)。这使得它总能化解部分"平替"项目的性能或功能优势
强大的社区与品牌 brew install已成为macOS开发者社区的常识和流行语。这种强大的品牌心智和社区认同,是新项目难以逾越的无形壁垒

但是,这些挑战者的价值不容忽视。它们像鲶鱼一样,持续刺激Homebrew自身进行优化(例如加快速度、改善用户体验),最终让整个社区受益。

作为Mac用户,看个人需求,不用Homebrew,则可以直接无视本文;若有简单使用,可大致浏览前面章节;若对Homebrew生态有兴趣,可以往下翻阅。当然本文并不会很深入,简单介绍,入门实战。

Homebrew

官网,开源(GitHub,46.6K Star,11K Fork)。几乎是装机必备的包管理工具。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

命令行:

bash 复制代码
brew search 
brew info
brew install
brew install --verbose --debug FORMULA|CASK
brew update
brew upgrade
brew uninstall
brew list 
brew config
brew doctor
brew create URL [--no-fetch]
brew edit
brew commands

操作示意图


Formula和Cask

特性 Formula(公式) Cask(木桶)
管理的软件类型 命令行工具、开发库、服务(如wgetpython) GUI应用程序(如chrome)
安装目标位置 通常安装在/usr/local/Cellar(Intel)或/opt/homebrew/Cellar(AppleSilicon)下,并链接到系统路径。 通常直接安装到/Applications目录,和手动拖拽安装一样
软件包格式 通常是从源码编译,或安装预编译的二进制命令行程序 下载并解压官方提供的.dmg.pkg等macOS应用程序包
使用命令 brew install node brew install --cask firefox
比喻 原料和厨房工具,在后台用来制作东西的 成品菜肴:直接端上桌,开盖即用

从Homebrew 2.0开始,安装图形应用通常需要加上--cask参数。但许多常见应用(如firefox)即使不加参数,Homebrew也能智能识别并作为Cask安装。

无论Formula还是Cask,本质都是用Ruby编写的文件,定义:

  • 软件的名称、描述、版本;
  • 软件的源代码地址或下载地址;
  • 软件的依赖关系;
  • 安装步骤(对于Formula可能是编译指令,对于Cask则是解压和拷贝指令);
  • 配置选项等。

dmg和pkg

.dmg.pkg,两种格式都是macOS上分发和安装软件的常见方式,但交互和集成深度不同。

特性 .dmg .pkg
本质 磁盘映像文件,类似于一个虚拟U盘或光盘 安装程序包,包含一个由"安装器"应用程序执行的标准化安装脚本
安装体验 手动拖拽。打开后,通常需要将应用图标拖到/Applications的快捷方式上 向导式安装。双击后运行图形化的安装向导,用户点击继续即可完成
安装内容 通常只包含应用程序本身,有时附带一个指向应用程序文件夹的快捷方式 可以安装更复杂的内容:包括应用程序、系统框架、配置文件、后台服务等
系统集成 较浅。通常只是把应用拷贝到指定位置 较深。可以在系统级目录安装文件、运行安装后脚本、需要管理员密码授权
卸载方式 直接删除。从/Applications拖到废纸篓即可 可能需要专用卸载程序,或使用系统偏好设置中的移除功能(如果支持)
典型用途 分发大多数独立的桌面应用程序,如Chrome 分发需要深度系统集成的软件,如驱动程序、开发工具链、企业软件
与Cask关系 自动下载.dmg文件,挂载它,将其中的应用程序复制到/Applications,后卸载.dmg,全程自动化 会调用系统安装器以静默模式运行,无需用户点击

Tap

Brewfile

Brewfile包含所有Homebrew安装过的软件、Mac App Store应用、全局npm包等,作用是为开发环境提供一份完整配方,方便在新机器上快速重建。

命令行使用:

bash 复制代码
# Homebrew自动扫描当前已安装的所有内容,并生成Brewfile
brew bundle dump --describe --force
# 安装所有依赖
brew bundle install
# 检查当前系统是否符合Brewfile描述
brew bundle check
# 卸载Brewfile中未列出的、通过Homebrew安装的软件
brew bundle cleanup
# 列出Brewfile中所有条目
brew bundle list
# 在Brewfile环境上下文中执行命令
brew bundle exec <命令>

Brewfile文件示例:

复制代码
# 1. 首先指定使用的Taps(软件源仓库)
tap "homebrew/cask"
tap "homebrew/core"
tap "homebrew/bundle"  # Brewfile功能本身所在的Tap
tap "adoptopenjdk/openjdk"  # 第三方Tap示例:Java发行版
# 2. 命令行工具 (Formulae)
brew "node"          # Node.js
brew "python@3.11"   # 指定版本的Python
brew "mas"           # Mac App Store命令行工具
# 3. 图形应用程序 (Casks)
cask "google-chrome"
# 4. 安装Mac App Store应用程序(需要先安装mas)
mas "Xcode", id: 497799835               # Xcode
mas "Things 3", id: 904280696            # 任务管理
mas "Magnet", id: 441258766              # 窗口管理(App Store版)
# 5. 安装全局npm包(通过Homebrew安装的node)
npm "typescript", global: true
npm "yarn", global: true
npm "@angular/cli", global: true
# 6. 启动服务(通过brew services管理)
service "mysql" # 安装mysql Formula后,可设置开机启动
service "redis", args: ["start"]  # 启动redis服务

Applite

官网,开源(GitHub,6.4K Star,168 Fork)现代化的Homebrew GUI工具,

Zerobrew

开源(GitHub,5.4K Star,131 Fork)基于Rust的项目Zerobrew,旨在成为一个更快、更现代的Mac包管理器,带来前所未有的极速体验。官方文档

核心思想是借鉴近年来在Python社区大放异彩的超高速工具uv的设计模型,并将其巧妙地应用于Mac软件包管理。通过一系列创新设计,它实现令人惊叹的性能提升,冷启动安装速度可达Homebrew的5倍,而热启动(缓存命中)安装速度更是高达20倍!

GitHub官方披露的基准测试报告

Package Homebrew ZB(cold) ZB(warm) ColdSpeedup WarmSpeedup
Overall(top100) 452s 226s 59s 2.0x 7.6x
ffmpeg 3034ms 3481ms 688ms 0.9x 4.4x
libsodium 2353ms 392ms 130ms 6.0x 18.1x
sqlite 2876ms 625ms 159ms 4.6x 18.1x
tesseract 18950ms 5536ms 643ms 3.4x 29.5x

先进的架构设计:

  1. 内容可寻址存储(Content-addressable store):所有软件包都根据其内容的sha256哈希值存储在/opt/zerobrew/store/{sha256}/目录下。如果一个特定版本的软件包已经被安装过一次,后续任何需要它的安装请求都无需重新下载或解压,而是直接复用,实现"秒装"。
  2. APFS clonefile技术:当从store中将软件包安装到指定位置时,利用苹果文件系统(APFS)的写时复制(copy-on-write)特性。这会创建一个几乎不占用额外磁盘空间的克隆文件,极大提升链接速度和磁盘效率。
  3. 并行下载与流式执行:能够并行处理多个下载任务,并对进行中的请求进行去重。更重要的是,下载、解压和链接等步骤会以流式(Streaming)方式并发执行,一个包还没下载完,另一个包的解压可能已经开始,最大化地利用了系统资源和网络带宽。
  4. 复用Homebrew CDN:直接从Homebrew官方CDN下载预编译好的二进制包(bottles)。保证软件包来源的稳定性和可靠性,同时也能够无缝访问Homebrew庞大的软件生态。

实战

安装:

bash 复制代码
curl -sSL https://raw.githubusercontent.com/lucasgelfond/zerobrew/main/install.sh | bash

安装过程中,会检查系统架构(如aarch64-apple-darwin)和是否已经安装Rust及其生态工具:

使用:命令设计与Homebrew非常相似,学习和迁移成本极低,可轻松地将brew替换为zb来执行常用操作。

bash 复制代码
zb install jq
# 同时安装多个包
zb install wget git
zb uninstall jq
# 基于manifest文件安装
zb install --file Brewfile
# 当前目录中Brewfile的简写
zb bundle
# 清空所有已安装包
zb reset
# 垃圾回收:清理未被使用的store条目
zb gc

Cakebrew

官网,开源(GitHub,5K Star,256 Fork)Homebrew GUI工具。

安装:brew install --cask cakebrew

Whalebrew

官网,开源(GitHub,4.2K Star,108 Fork)项目,用Docker容器化方式运行命令行工具,实现环境隔离。

WailBrew

官网,为Homebrew提供一套简洁直观的开源(GitHub,1.9K Star,78 Fork)可视化GUI,使用Wails框架开发,结合Go的后端效能与React的灵活性。

能够直观展示所有已安装的软件包,支持一键检查更新、安装新软件或卸载旧应用,清晰查看复杂的依赖关系。 执行系统诊断,完全不需要记忆复杂的终端机指令。支持批量检查过期包并选择单独或全部更新,查看详细的包信息包括依赖关系和冲突提示。

BrewMate

官网,开源(GitHub,264 Star,32 Fork)基于SwiftUI开发的Homebrew GUI工具。

相关推荐
雪域迷影17 小时前
MacOS下源码安装SDL3并运行hello.c示例程序
c语言·开发语言·macos·sdl3
阿捏利21 小时前
详解Mach-O(五)Mach-O LC_SYMTAB
macos·ios·c/c++·mach-o
2601_949146531 天前
Swift语音通知接口集成手册:iOS/macOS开发者如何调用语音API
macos·ios·swift
爱喝水的木子1 天前
新mac入手装的一些好用的提高效率的软件
macos
懒狗不更新1 天前
mac m2安装 aria2 以及对应图形化界面 AriaNg 文件损坏
macos
逆向APP2 天前
mac端为claude code配置ida mcp
macos·claude
沧州刺史2 天前
使用 rust / rdev 在 macos 上监听键鼠事件,但在使用中文输入法时异常退出
开发语言·后端·macos·rust
黑黍2 天前
macos的iTerm2中zsh + oh-my-zsh命令行如何使光标快速向右移动
macos
御坂10101号2 天前
OpenClaw 导致 Mac Mini 卖爆?炒作与安全的悖论
人工智能·安全·macos·prompt
青芒.2 天前
10个20GB大视频如何高效处理?M3 Mac + FFmpeg 最佳实践全解析
macos·ffmpeg·音视频