7.1 实用技巧精选
4 分钟阅读
安装旧版本 formula
homebrew/core 中的部分 formula 以“版本化 formula”形式提供,命名形如 gcc@9、python@3.11。先搜索是否存在需要的版本:
| |
找不到你需要的具体版本时,可参考官方 Locking installed formulae at specific versions。请记住 Homebrew 是滚动发布,并不保证任意旧版本都可安装。
快速让软件从 PATH 中“消失”
某个软件与正在构建的项目不兼容时,可以先解除链接:
| |
之后想恢复,再链接回来:
| |
预先下载 formula 的文件
有时用 HTTP 之外的渠道下载更快。Homebrew 的下载会保存在缓存目录的 downloads 子目录中,文件名形如 <url-hash>--<formula>-<version>。先查看预期缓存路径:
| |
手动下载完成后,把文件移动过去:
| |
更省事的办法是直接让 brew 预下载:
| |
它会同时显示文件的 SHA-256 哈希,对更新 formula 版本也很方便。
没有 Xcode CLT 时安装需要编译的软件
进入 brew 环境后再用其他语言工具链安装依赖:
| |
brew sh 会把 brew 的环境变量导入当前 shell,gem 等工具能据此找到编译所需的设置;brew 自动选定的优化参数也会一并生效。
只安装依赖而不安装 formula 本体
| |
适合你想自己编译、却希望依赖由 brew 提供的情形。
用 brew exec 在脚本中临时使用工具
brew exec 可以为一条命令安装所需 formula,并把它们的可执行目录临时放进 PATH:
| |
--formulae 后跟逗号分隔的 formula 列表,-- 之后是要执行的命令及其参数。缺失的 formula 会被自动安装;bin、sbin 以及对应依赖路径会被前置到 PATH。命令也可以是路径,很适合便携脚本、演示与 CI 引导代码——不必为此写 Brewfile。
支持 env -S 的系统还能在 shebang 中声明:
| |
进入交互式 Homebrew shell
| |
会进入 brew(main):001> 这样的交互环境,可查看示例:
| |
例如查看某个 formula 对象可用哪些方法:
| |
隐藏啤酒杯 emoji
| |
也可以把完成时显示的啤酒杯替换成自己喜欢的字符:
| |
迁移整台 Homebrew 环境
官方推荐的方式就是 Brewfile:
| |
为 brew 定义别名
brew alias 类似 shell 的 alias,用于定义执行其他 brew 命令或 shell 命令的自定义命令:
| |
规则要点:
- 内置 brew 命令名不能用作别名;
- 别名默认补上
brew前缀;以!或%开头则不补:brew alias status='!git status'使brew status执行git status;%前缀用于 shell 展开,例如保留局部变量;
- 需要
!时建议用单引号防止 shell 解释; - 用
--edit在$EDITOR中编辑别名:
| |
编辑器插件
- Visual Studio Code:Brewfile 提供 Ruby 语法高亮;Brew Services 可启停 Homebrew 服务;
- Vim:brew.vim 为内联补丁提供高亮;
- Emacs:homebrew-mode 提供补丁高亮与辅助函数,pcmpl-homebrew 提供补全。
让 macOS 终端支持右键“Open man Page”
在 macOS 的“终端”中右键命令名并选择“Open man Page”可以快速查看手册。因为终端不加载 ~/.zshrc 等 dotfiles,需要给它额外的 man 路径提示:
| |
Intel Mac 上之后还需要修复权限:
| |
使用缓存代理或镜像
brew 支持通过环境变量从缓存代理或镜像获取 bottle 与 JSON API。以 https://artifacts.example.com 的 JFrog Artifactory 为例:
| |
部分制品仓库不支持匿名显式认证(例如 Sonatype Nexus),可设置:
| |
也可以在安装前用 HOMEBREW_BREW_GIT_REMOTE 指向 Homebrew/brew 的内部镜像(见 2.2 安装后的环境配置与高级安装选项)。国内网络环境下,这是加速 brew 下载的常见做法;请务必只使用可信镜像。
在 macOS/Linux 共用同一份 dotfiles
想在不同操作系统使用相同的 shell 初始化文件时,可以检测 brew 安装目录并按需加载:
| |
第一行在尚未加载 brew 时把三种平台的候选目录放进 PATH,第二行找到 brew 后正确初始化环境。