7.3 用 JSON 查询与脚本化 brew
2 分钟阅读
为什么需要 JSON 接口
brew list 列出已安装 formula,brew deps foo 显示 foo 的依赖。想获得更丰富、结构化的信息,官方建议使用 brew info 的 JSON 输出,而不是针对 Homebrew 内部 Ruby 代码编写脚本。外部命令会随 Homebrew 代码重构而变化,而 JSON 输出更稳定。下面的示例统一用 jq 解析 JSON:
| |
brew info –json
| |
- 默认 schema 版本为
v1,只包含 formula 信息; --json=v2同时包含 formula 与 cask;- schema 在不升级版本号的情况下可以新增字段;破坏性变更才会提升 schema 版本。
常用查询
JSON 输出的顶层元素永远是数组,因此用 map 处理。查看所有已安装 formula 的完整 JSON:
| |
找出已链接的 keg-only formula:
| |
找出已安装但没有链接的普通 formula:
| |
结合 brew deps、brew uses 与 jq,可以写出“哪些已安装包依赖 openssl”“哪些包没有 bottle”等一次性诊断脚本。
无需本机即可查询:formulae.brew.sh API
formulae.brew.sh 提供有文档的 JSON API,可以直接访问 brew info --json=v1 的同类数据,不要求本机安装 Homebrew。适合构建网页、监控或 CI 脚本。
结论与建议
- 优先用 JSON 输出而不是解析终端彩色文本;
- 若 JSON 缺少你需要的信息,到官方仓库提交请求,最好附带补丁;
- 在 4.3 维护与诊断:doctor、cleanup、config 中提到的
brew config也是脚本友好的文本来源。