【问题标题】:Stack doesn't install correct version of Haskell base libraryStack 没有安装正确版本的 Haskell 基础库
【发布时间】:2015-12-25 15:16:52
【问题描述】:

我对 Haskell 很陌生。我正在尝试使用堆栈构建从 GitHub 下载的项目。当我尝试运行 stack solver 时,我得到以下输出:

cabal: Could not resolve dependencies:
trying: deeplearning-hs-0.1.0.2 (user goal)
next goal: base (dependency of deeplearning-hs-0.1.0.2)
rejecting: base-4.8.1.0/installed-075... (conflict: deeplearning-hs =>
base>=4.6 && <4.7)
rejecting: base-4.8.1.0 (global constraint requires installed instance)
rejecting: base-4.8.0.0, 4.7.0.2, 4.7.0.1, 4.7.0.0, 4.6.0.1, 4.6.0.0, 4.5.1.0,
4.5.0.0, 4.4.1.0, 4.4.0.0, 4.3.1.0, 4.3.0.0, 4.2.0.2, 4.2.0.1, 4.2.0.0,
4.1.0.0, 4.0.0.0, 3.0.3.2, 3.0.3.1 (global constraint requires ==4.8.1.0)
Dependency tree exhaustively searched.

问题似乎是这种“全局约束”,但我不确定它来自哪里。我查看了我的全局 .cabal 文件,它们非常通用——它们似乎没有指定任何东西的版本。

【问题讨论】:

    标签: haskell build dependencies


    【解决方案1】:

    base 是与 GHC(编译器)捆绑在一起的库。对于每个 GHC 版本,都有一个 base 版本。

    要安装deeplearning-hs,您似乎需要满足base == 4.6.* 约束,即拥有GHC 版本7.6。不幸的是,您无法使用堆栈 AFAIK 安装旧于 7.8 的 GHC。

    如果您将base &gt;=4.6 &amp;&amp; &lt;4.7 边界更改为base &gt;= 4.6 &amp;&amp; &lt;4.8,您可以在本地使用它,即允许base 与GHC 7.8 一起使用。请注意,您不应该删除 依赖项,您应该尝试放松 约束(即版本限制)。我在本地尝试过,该软件包似乎可以使用 GHC 7.8 编译。它不能与 GHC 7.10 一起编译,因为 Foldable-Traversal-Proposal 会影响这个包。

    恕我直言,最好的方法是联系维护者并要求升级,或者更好地提交拉取请求,因为源似乎在 GitHub (which I did) 上。

    附: I relaxed the bounds on Hackage,所以你现在可以放心地用 GHC 7.8 安装它。

    【讨论】:

    • 也许他可以尝试编辑 cabal 文件,看看新 GHC 是否可以正常工作。 :)
    • 我明白了。我不知道堆栈的 GHC >= 7.8 约束。我确实尝试通过注释掉 base &gt;=4.6 &amp;&amp; &lt;4.7 的要求来编辑 cabal 文件,并遇到以下问题:Could not find module ‘Data.List’ It is a member of the hidden package ‘base-4.8.1.0’. 和“前奏曲”相同。也许最好在没有 Stack 的情况下处理这个文件,我猜这意味着下载旧版本的 GHC?
    猜你喜欢
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多