gpt4 book ai didi

haskell - 堆栈没有正确解决依赖关系

转载 作者:行者123 更新时间:2023-12-04 18:59:18 24 4
gpt4 key购买 nike

我正在尝试设置 Hakyll在一个新的 Ubuntu 16.04 实例上,但我似乎无法正确理解基于堆栈的设置说明。

stack install hakyll 开始,我得到:

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for hakyll-4.9.3.0:
http-conduit-2.1.11 must match >=2.2 && <2.3 (latest applicable is 2.2.3)

Plan construction failed.

我在绑定(bind)到 stack-install http-conduit-2.1.11 时遇到了类似的错误,这次是:
Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for http-conduit-2.2.3:
http-client-0.4.31.2 must match >=0.5 && <0.6 (latest applicable is 0.5.5)
http-client-tls-0.2.4.1 must match >=0.3 && <0.4 (latest applicable is 0.3.3.1)

Plan construction failed.

在解决了依赖项(也使用堆栈)后,我再次尝试 stack install http-conduit-2.1.11 ,但我再次遇到相同的依赖错误。

包裹 http-client-0.4.31.2http-client-tls-0.2.4.1出现在我的 ~/.stack/precompiled/x86_64-linux/ghc-8.0.1/1.24.0.0/ ,这在我的 $PATH 中没有明确说明,但是这感觉像是一个非常hacky的解决方案,我还没有找到任何推荐这种方法的文档。

如何在我的机器上正确安装 Hakyll?

最佳答案

使用堆栈的依赖管理意味着可重现和声明性,这意味着只有在所有依赖项都记录在项目的 .cabal 文件中并且项目的 stack.yaml 定义了这些依赖项的版本后,堆栈项目才会编译 resolver 中的依赖关系或 extra-deps 部分。

您的困惑似乎源于对 stack install 的误解。做。命令行帮助有这样的说法:

  build                    Build the package(s) in this directory/configuration
install Shortcut for 'build --copy-bins'
...
--[no-]copy-bins Enable/disable copying binaries to the local-bin-path
(see 'stack path')
stack install不保存任何依赖项。

因此,使 hakyll 可用作代码依赖项的正确方法是:
  • 使用 stack init 创建合适的堆栈项目如果您已经有 Cabal 包,或 stack new如果你不这样做。
  • 添加 hakyll到库或可执行文件build-depends在您的 .cabal 文件中。
  • 尝试 stack build并按照任何错误消息中的说明进行操作,直到所有问题都得到解决。
  • 关于haskell - 堆栈没有正确解决依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776516/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com