新建Stack项目添加graphite依赖后因空接口文件构建失败
问题成因
报错的核心原因是Stack全局快照目录中存储的GHC接口文件(.hi后缀)损坏,本次新增graphite依赖后触发了全依赖链构建,构建过程中读取到了之前异常生成的空接口文件,就抛出了Data.Binary.getPrim: end of file错误。
这类损坏文件通常是之前某次依赖构建过程异常中断导致的,比如构建时磁盘空间不足、手动强制终止构建进程、系统资源耗尽被OOM杀死进程等,和graphite包本身无关。
修复方法
- 优先清理损坏的快照目录:直接删除报错日志中指向的损坏快照文件夹,执行命令:
rm -rf /home/waynevanson/.stack/snapshots/x86_64-linux-tinfo6/b3cf699ace1558dcb39ae886a5a104f0e17753ec2ae390d996aa847a910da0d0
删除完成后重新执行stack build,Stack会自动重新下载、构建所有需要的依赖,不会再复用损坏的文件。
- 如果清理单个快照目录后仍报错,可以执行全局缓存清理命令
stack clean --full,再重新执行构建。 - 若反复出现相同问题,先检查本地磁盘剩余空间是否充足,排查构建过程是否存在主动中断、系统资源不足的情况,避免再次生成损坏的接口文件。
内容的提问来源于stack exchange,提问作者Wayne Van Son
相关产品推荐
相关产品推荐

