8.3 Cask 安装问题

原文链接: https://docs.brew.sh/Common-Issues

cask 下载失败

用下面的命令打开 cask 官网,并亲自测试厂商的下载链接:

1
brew home <cask>
  • 如果厂商下载本身也失败:向厂商报告,或检查网络连接;
  • 如果厂商发布了不同版本或 URL:提交 cask 更新。

cask 校验和不匹配

仔细阅读错误,找到下载文件,只删除那一个缓存文件并重试一次:

1
brew cleanup --prune=all   # 慎用:这会把整个下载缓存都清掉

更精准的做法是定位并删除单个缓存文件(路径可通过 brew --cache --cask <cask> 查看),然后只重试该 cask。

如果校验和仍然不一致,把 brew info <cask> 与厂商当前发行版本对照。持续不匹配通常意味着 cask 已过期,或厂商替换了既有下载文件。不要绕过校验和;携带厂商当前版本与下载链接的证据提交 cask 更新。

注意:上面 --prune=all 属于全缓存清理,非必要不建议使用;官方指引只要求移除错误中指明的那一个文件。

安装 cask 时权限被拒

确认你的用户能写入所选择的应用目录,并确认 brew doctor 没有报告属主问题。需要把应用装到 /Applications 之外时,显式使用:

1
brew install --cask --appdir=~/Applications <cask>

求助别人之前,先提供失败路径的 ls -ld 输出。不要在未确认出错路径及预期属主的情况下,递归修改整个 Caskroom 或 Homebrew 前缀的所有权/权限。

声明中的应用或文件缺失

厂商可能重命名或移动了压缩包内的文件。先获取并检查压缩包,再与 cask 定义对比:

1
2
brew fetch <cask>
brew cat <cask>

确认实际文件路径后,把 cask 中对应的 artifact 描述更新为当前路径(写法参考 Cask Cookbook 的 artifact 章节),并提交 cask 更新。

cask 应用升级后丢 Dock 位置或权限

这是 Homebrew 的更新策略与 macOS 权限共同作用的结果。解决方法是让运行 Homebrew 的终端获得“App 管理”或“完全磁盘访问权限”,使 Homebrew 能采用原地替换(in-place)升级策略。完整解释见 5.2 自更新应用、–greedy 与 –adopt。

需要记住的三件事

  1. cask 校验和、Gatekeeper 与签名检查都是安全边界,不要为了“装上”而关闭;
  2. 排查先从单文件、单缓存开始,不要对整个前缀做破坏性操作;
  3. 找不到原因时,按 8.1 排查清单 收集 brew config、brew doctor 与完整日志后到 Homebrew/homebrew-cask 上报。