删除GHC快照后编译旧项目出现依赖缺失的解决方法
解决删除Haskell Stack快照后旧项目编译报错的问题
你遇到的问题本质是:删除的两个月以上的快照中,包含了旧项目依赖的groups-0.5.3库(对应报错里的HSgroups-0.5.3-IYEy0wlfuCnJAATXPgKDMS),Stack找不到已删除的快照路径,导致编译失败。以下是具体解决方法:
强制重新构建项目依赖
进入旧项目根目录,执行命令:stack build --force-dirty该命令会强制Stack重新校验所有依赖项,发现缺失的库后自动从Hackage下载并重建对应的快照环境。
重新安装对应Resolver的快照环境
查看旧项目stack.yaml文件中的resolver字段(比如lts-22.20,对应你使用的GHC 9.8.2),执行命令:stack resolver <你的resolver版本> --install-ghc这会重新安装该resolver对应的完整快照,补全缺失的依赖文件。
彻底清理缓存后重建(极端情况)
如果上述方法无效,可执行以下命令清理所有本地Stack缓存和快照:stack purge之后进入旧项目目录执行
stack build,让Stack完全重新下载并构建所有依赖。
注:之前执行的stack clean --full仅清理项目自身的构建产物,无法修复全局快照缺失的问题,所以未能解决报错。
内容的提问来源于stack exchange,提问作者141592653
相关产品推荐
相关产品推荐

