homebrew formula 是定义命令行软件安装逻辑的 ruby 脚本,须含 class 名、url、version、sha256、depends_on 和 install 方法;支持 configure/make、go 构建或二进制直装;本地用 brew install --build-from-source 验证,发布前需 audit 合规。

Homebrew Formula 是一个 Ruby 脚本文件(以 .rb 结尾),它定义了如何下载、编译、安装和测试一个命令行软件。写好一个 Formula,就能让任意工具通过 brew install mytool 一键部署,无需手动解压、配置路径或处理依赖。
Formula 的核心组成要素
每个 Formula 文件必须包含以下关键部分,缺一不可:
-
class 名称:必须与文件名一致,且首字母大写、无下划线(如
Mytool对应mytool.rb) - url:源码或二进制归档包的下载地址(支持 GitHub releases、tar.gz、zip 等)
-
version:明确指定版本号,不能用
"latest"这类模糊值 -
sha256:归档包的校验哈希(
brew create会自动计算,手动编写需用shasum -a 256 xxx.tar.gz补全) -
depends_on:声明运行或构建时依赖(如
"cmake" => :build或"openssl@3") -
install 方法块:描述具体安装逻辑,通常含
system "./configure"、make、make install等步骤
常见安装逻辑写法示例
多数 C/C++ 项目走 configure/make 流程,Ruby 脚本中常用 cd 切入源码目录后执行构建:
def install
cd "source" do
system "./configure", "--prefix=#{prefix}", "--disable-debug"
system "make"
system "make", "install"
end
若为 Go 工具,可直接构建二进制:
def install system "go", "build", "-o", bin/"mytool", "cmd/mytool/main.go"
若为预编译二进制包(如 CLI 工具发行版),则用 bin.install 直接复制:
def install bin.install "mytool-darwin-arm64" => "mytool"
本地调试与测试技巧
写完 Formula 后别急着提交,先在本地验证是否能真正安装成功:
- 用
brew install --build-from-source ./mytool.rb强制从本地脚本构建 - 加
--verbose和--debug查看每步输出和错误位置 - 安装后运行
brew test mytool(需提前在 Formula 中定义test do块) - 检查文件是否落入正确路径:
brew --prefix mytool应返回/opt/homebrew/Cellar/mytool/1.0.0类似路径
发布到公开 tap 的准备要点
想让别人也能 brew tap-add username/myrepo && brew install mytool,需注意:
- 新建 GitHub 仓库(如
username/homebrew-myrepo),根目录放mytool.rb - Formula 文件名必须小写、无特殊字符,且 class 名严格匹配(如
Mytool) - 确保
url可公开访问,GitHub Releases 最稳妥;避免用私有 Git 仓库或临时链接 - 首次提交前运行
brew audit --new mytool.rb检查格式合规性(如 license 是否声明、描述是否完整)











