StoneRen

跳过brew cask的api检查

Sep 04, 2025

一直卡在这里

Downloading https://formulae.brew.sh/api/cask.jws.json

采用如下方案

替换镜像

# 替换brew.git仓库
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git

# 替换homebrew-core.git
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

# 替换homebrew-cask.git
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git

# 更新生效
brew update

跳过检查

echo 'export HOMEBREW_NO_INSTALL_FROM_API=1' >> ~/.zshrc
echo 'export HOMEBREW_NO_AUTO_UPDATE=1' >> ~/.zshrc
source ~/.zshrc

我来帮你解释一下这个 https://formulae.brew.sh/api/cask.jws.json 的作用,以及跳过它的影响。


1. 它是什么

  • Homebrew 3.6 以后,安装/搜索时默认会走 API 模式(Install From API)。

  • 这个 cask.jws.json 文件,是 Homebrew Cask 元数据 的一个签名版 JSON 文件,包含了所有 Cask 包(图形化应用,比如 Chrome、VS Code、微信等)的:

    • 名称
    • 版本
    • SHA256 校验值
    • 安装方式(zip/dmg/pkg)
    • 依赖信息
  • jws(JSON Web Signature) 说明这个 JSON 是签过名的,Homebrew 会验证它的完整性和真实性。


2. 它的作用

下载这个文件的目的:

  1. 快速获取软件元数据(无需克隆整个 homebrew-cask Git 仓库)。
  2. 确保内容安全(文件经过签名,防止篡改)。
  3. 减少流量(相比几十 MB 的 git 仓库,这个 JSON 很小)。

在 API 模式下,brew install --cask something 会:

  • 先下载 cask.jws.json
  • 读取你要安装的 cask 元数据
  • 再去下载软件包

3. 如果跳过下载会怎样

跳过下载的方式是设置:

export HOMEBREW_NO_INSTALL_FROM_API=1

效果是:

  • Homebrew 不再访问 formulae.brew.sh/api
  • 而是直接去 clone / pull 本地 Git 仓库的 homebrew-cask 来读取元数据。
  • 结果是:首次更新会更慢(因为要拉取完整 Git 历史),但之后本地查找会很快。
  • brew update 会同步最新的 Git 仓库,以获取最新的包定义。

优缺点

优点:

  • 不依赖 formulae.brew.sh(解决你卡住的问题)。
  • 镜像可加速(USTC/TUNA 镜像可同步 cask 仓库)。

缺点:

  • Git 仓库更新量较大(homebrew-cask 几百 MB),更新速度依赖 Git 镜像质量。
  • 没有 API 模式那么轻量。
  • Homebrew 官方新功能(比如更快的搜索)部分依赖 API,跳过后某些命令可能退回旧实现,速度变慢。

4. 总结

  • cask.jws.jsonHomebrew Cask API 模式的元数据文件,小而快,但国内访问容易卡。
  • 跳过它 不会影响安装功能,只是 Homebrew 不再用 API,而是回到本地仓库读取元数据。
  • 在国内环境,配合 国内 Git 镜像,跳过它是一个非常常用的选择。
0-PRESENT © StoneRenver:2509181051