Stack没有安装正确版本的Haskell基本库

时间:2015-12-25 15:16:52

标签: haskell build dependencies

我是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文件,它们非常通用 - 它们似乎没有指定任何版本。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

P.S。 I relaxed the bounds on Hackage,因此您可以使用GHC 7.8进行安装,而无需担心。