最初,Homebrew 是一个从源代码构建的包管理器,所有用户环境变量和非 Homebrew 安装的软件都可以用于构建。此后,Homebrew 添加了 Requirement
以指定对非 Homebrew 软件(例如由 brew cask
提供的软件,如 X11/XQuartz)的依赖项,superenv
构建系统以去除未指定的依赖项,环境过滤以阻止用户环境泄漏到 Homebrew 构建中,以及 default_formula
以指定 Requirement
可以由特定公式满足。
随着 Homebrew 主要成为一个二进制包管理器,大多数用户使用 default_formula
来满足 Requirement
,而不是使用任意替代项。为了提高质量并减少差异,Homebrew 现在专门支持将默认公式用作普通依赖项,不再支持使用任意替代项。
如果你希望针对 Homebrew 提供的自定义非 Homebrew 依赖项(例如非 Homebrew、非 macOS ruby
)进行构建,那么你必须 创建并维护你自己的 tap,因为这些公式不会被 Homebrew/homebrew-core 接受。完成此操作后,你可以在公式中指定 env :std
,这将允许例如 which ruby
访问你现有的 PATH
变量,并允许编译链接到此 Ruby。你还可以 在你的公式中包含自定义 Requirement,更准确地描述你针对其构建的非 Homebrew 软件。