未找到堆栈初始化包

Stack init package not found

当尝试使用 Stack 构建现有项目时,我遇到了类似

的错误
bv not found
- Genesis requires >=0.3 && <0.4 && -any
- exp requires -any

stack init 期间。这些包都安装在沙箱中,来自 hackage。我几乎可以肯定 Stack 不会查看沙箱,但为什么它找不到来自 hackage 的包?我也可以通过 运行 cabal build 进行构建。

stack先不看Hackage。它尝试仅使用 Stackage (you can find the exact snapshot you are using in the resolver field of stack.yaml). bv does not seem to be in Stackage (at least it is not in the latest LTS snapshot) 快照中的包来构建您的项目。幸运的是,这个问题很容易解决:只需 运行 stack solver --modify-stack-yaml。这将识别所有非 Stackage 依赖项并将它们添加到 stack.yamlextra-deps 字段中。从那时起,这些依赖项将构建在项目的 .stack-work 子目录中的某个位置,其方式与 cabal-install 沙箱中的包非常相似。