一直卡在这里
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. 它的作用
下载这个文件的目的:
- 快速获取软件元数据(无需克隆整个
homebrew-cask
Git 仓库)。 - 确保内容安全(文件经过签名,防止篡改)。
- 减少流量(相比几十 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.json
是 Homebrew Cask API 模式的元数据文件,小而快,但国内访问容易卡。- 跳过它 不会影响安装功能,只是 Homebrew 不再用 API,而是回到本地仓库读取元数据。
- 在国内环境,配合 国内 Git 镜像,跳过它是一个非常常用的选择。