
Homebrew 安装 cask 报 SHA-256 校验和不匹配怎么处理【免费下载链接】brew The Package Manager for Everywhere项目地址: https://gitcode.com/GitHub_Trending/br/brew在 macOS 上运行brew install --cask cask时Homebrew 会校验下载文件与 cask 中记录的sha256是否一致。如果两者不一致安装就会失败并提示校验和不匹配。本文给出一条完整处理路径先排除本地缓存文件损坏再判断是 cask 元数据过时还是供应商替换了下载文件最后按文档给出的方式提交更新而不是绕过校验。先明白这个报错本身是保护机制cask 和 formula 一样使用 SHA-256 校验下载文件Homebrew 会拒绝安装内容不匹配的文件见 Checksum Requirements。不匹配可能对应三种情况本地缓存的下载文件损坏cask 记录的版本已过时供应商发布了新版本或新 URL供应商在未改版本号的情况下替换了下载文件这甚至可能是上游被入侵或供应链攻击的信号。所以文档给出的原则是不要绕过校验而是查明哪个文件变了、按情况处理。第一步清掉出错的那个缓存文件重试一次按 Common Issues 中 A cask checksum does not match 一节的做法先完整读完报错其中指明了出错的是哪个已下载文件。定位缓存位置brew --cache该命令显示 Homebrew 的下载缓存目录macOS 上通常是~/Library/Caches/Homebrew可用环境变量HOMEBREW_CACHE自定义。若想看该 cask 具体的缓存文件brew --cache myapp将myapp替换成你安装的 cask 名称输出即该 cask 的缓存文件/目录路径。只删除报错对应的那一个缓存文件不要清空整个缓存目录——目录里可能还有已安装的其他软件对应的下载。重新执行安装brew install --cask myapp也可以用brew fetch --force myapp达到删掉旧缓存并重新下载的效果--force会删除之前缓存的版本后重新 fetch且fetch会打印下载文件的 SHA-256 校验值。判断下一步如果这次安装成功说明之前的缓存文件损坏问题结束如果再次报校验和不匹配且显示的校验值与第一次相同说明不是本地缓存问题进入第二步。第二步brew info对比供应商当前发布仍然失败时按文档做法对比 cask 记录与供应商现状brew info myapp brew home myappbrew info myapp显示该 cask 当前记录的版本、url和sha256brew home myapp打开该 cask 的供应商首页确认供应商现在实际提供的是哪个版本、哪个下载地址。对号入座现象文档给出的判断处理方式供应商已发布新版本或新 URLcask 过时提交 cask 更新附上供应商当前版本与下载作为证据版本号没变但下载文件的 SHA-256 变了供应商原地替换了已发布的下载先按重打标签的 cask处理见下文不要直接改校验和关于第二种情况homebrew-cask 维护者指南 指出如果校验和变化没有伴随版本号变化应把它当作潜在的上游入侵或供应链攻击而不是普通更新。应通过供应商的官方联系页、公开 issue 等渠道确认变更原因并等待供应商确认后再更新校验和。另外如果失败不是持续性的也可以先按 Troubleshooting 的检查清单走一遍运行两次brew update再运行brew doctor并处理与本次失败相关的告警然后重试原安装命令。需要更新校验和时怎么做当确认是版本更新或供应商官方替换后可以核对新文件的校验值brew fetch myappbrew fetch下载 cask 的文件并打印其 SHA-256 校验值。也可以对已下载的文件手动计算shasum -a 256 /path/to/downloaded-file/path/to/downloaded-file替换为你的下载文件实际路径即报错信息中指出的那个文件或brew --cache myapp给出的路径。拿到正确的新url和sha256后向homebrew/cask仓库提交更新 PR并附上供应商当前版本与下载的证据。文档明确要求不要绕过校验也不要在供应商未确认替换属意的情况下直接提交只改校验和的更新。边界与限制不要用sha256 :no_check关闭校验来解决不匹配。Cask Cookbook 中:no_check仅用于上游配置导致无法计算校验和的场景例如 URL 在各版本间不变而不是用来绕过校验失败。本地修改 cask 文件不会进入 Homebrew 的官方更新流程元数据修复的正确路径是提交更新 PR在合并后重新brew install --cask myapp验证。如果供应商的下载链接本身打不开那属于cask 下载失败而不是校验和不匹配应先测试供应商的下载链接再判断是网络问题还是链接失效同样见 Common Issues。【免费下载链接】brew The Package Manager for Everywhere项目地址: https://gitcode.com/GitHub_Trending/br/brew创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考