如何强制Stack重新拉取snapshot中配置的URL资源
问题根因
你使用的是指向分支头部的zip URL,URL本身未发生变化,Stack默认以URL作为缓存键识别依赖,因此不会主动检测上游内容更新,依旧使用历史缓存。你删除~/.stack后旧缓存仍然存在,是因为Stack的下载缓存还会默认存放在~/.cache/stack路径下,该目录未被清理导致缓存残留。
解决方案
以下方案按优先级从高到低排列:
方案1:给依赖绑定固定commit(根治)
将URL替换为对应最新提交的固定commit zip地址,避免分支更新后URL不变导致的缓存识别问题,配置示例如下:resolver: lts-14.0 packages: - url: https://github.com/llvm-hs/llvm-hs/archive/替换为最新提交的完整哈希.zip subdirs: - llvm-hs - llvm-hs-pure也可以在依赖配置中增加
sha256字段指定最新zip包的哈希值,Stack检测到哈希不匹配会自动重新下载。方案2:全量清理所有缓存
执行以下命令删除所有Stack相关缓存:rm -rf ~/.stack ~/.cache/stack ./.stack-work清理完成后重新执行构建命令即可拉取最新的zip包。
方案3:临时强制重新下载
不需要清理缓存,执行构建时添加--force-download参数即可强制Stack忽略本地缓存重新拉取所有依赖:stack build --force-download
内容的提问来源于stack exchange,提问作者andrew-wja
相关产品推荐
相关产品推荐

