如何标记Homebrew Tap Cask公式为已更新?解决升级检测失效问题
问题描述
我有一个用于下载并安装预构建pkg的Homebrew Cask,代码如下:
cask "mypkg" do version "1.0.0.0" sha256 "4b928d..." url "https://location/my.pkg", name "mytestpkg" desc "My Test Pkg" pkg "#{version}-My-Test-Package.pkg" uninstall pkgutil: "my.pkg" end
最近我更新了该Cask的版本号和sha256值,但运行brew upgrade时无法检测到更新或变化。目前只能通过以下步骤获取更新:
- 卸载Cask
- 卸载Tap
- 安装Tap
- 安装Cask
请问是否有办法标记Cask或Tap为已更新?
解决方案
1. 更新本地Tap仓库
如果你的Cask托管在自定义Tap里,先进入Tap的本地目录(默认路径为/usr/local/Homebrew/Library/Taps/[你的用户名]/[tap名]),执行:
git pull
拉取Tap仓库的最新代码后,Homebrew就能识别到Cask的版本更新。
2. 强制重新安装Cask
无需卸载Tap和Cask,直接用强制安装命令覆盖现有版本:
brew install --cask --force [你的cask名]
该命令会跳过版本检查,直接下载并安装最新版本的Cask。
3. 检查Cask配置正确性
- 确认
url字段与新版本pkg的地址匹配:你当前url是固定地址,但pkg字段使用了#{version}变量,若新版本pkg文件名包含版本号,url也应对应包含版本号,比如:
否则Homebrew会判定下载文件无变化,无法识别版本更新。url "https://location/#{version}-My-Test-Package.pkg" - 确保版本号格式符合Homebrew规范,避免格式问题导致版本检测失效。
4. 刷新Homebrew缓存
执行以下命令清理并刷新缓存,确保Homebrew读取到最新的Cask信息:
brew cleanup brew update
内容的提问来源于stack exchange,提问作者chughts
相关产品推荐
相关产品推荐

