3.1 默认前缀、bottle 与下载缓存
2 分钟阅读
原文链接: https://docs.brew.sh/FAQ
为什么必须安装在默认位置
Homebrew 为大量 formula 提供了预编译二进制包,也就是 bottle。这些 bottle 只有在安装到默认前缀时才能直接使用;装在别的前缀时,Homebrew 只能从源码构建。源码构建耗时长、容易失败,而且官方不提供支持。默认前缀是:
/opt/homebrew:Apple Silicon Mac;/usr/local:Intel Mac;/home/linuxbrew/.linuxbrew:Linux。
所以官网才会反复强调:“请把 Homebrew 装在默认前缀,这样就能使用预编译二进制包。换一个前缀,后果自负。”
为什么 Apple Silicon 默认用 /opt/homebrew
选择 /opt/homebrew 是为了让 Apple Silicon 原生安装与 Rosetta 2 下使用的 /usr/local 安装可以共存,并且两者都能使用 bottle。在 M4 上直接采用默认值即可。
bottle 何时无法使用
即使安装了 Homebrew,下列情况也会触发源码构建而不是“倒入”bottle:
- 显式传入了
--build-from-source选项; - 没有适用于当前系统版本的 bottle(macOS 的 bottle 只针对受支持的 macOS 版本生成);
- Homebrew 没有装在默认前缀(少数 bottle 例外);
- 安装命令传入了 formula 选项,例如
brew install <formula>会优先找 bottle,而brew install --with-foo <formula>会触发源码构建。
下载的文件都放在哪里
运行下面的命令可以查看下载缓存目录:
| |
通常输出 ~/Library/Caches/Homebrew。如果希望预先下载某个 formula 的源码或 bottle,可以使用:
| |
该命令还会显示文件的 SHA-256 哈希,方便你核对下载内容。缓存的细节见 7.1 实用技巧精选。
什么时候需要关心这些概念
- 安装报“此系统版本没有 bottle”,先检查 macOS 是否受支持;
- 换过安装位置或自定义了 prefix,安装突然变慢,优先怀疑失去了 bottle 支持;
- 想离线安装或预下载大文件,用
brew fetch配合brew --cache。