Jon*_*han 1 haskell d3.js haskell-stack
我只想尝试Haskell d3js包.这是我试过的:
stack install d3js
Run Code Online (Sandbox Code Playgroud)
但它给出了错误:
Error: While constructing the build plan, the following exceptions were encountered:
In the dependencies for d3js-0.1.0.0:
base-4.9.1.0 must match >=4.6 && <4.7 (latest applicable is 4.6.0.1)
Run Code Online (Sandbox Code Playgroud)
我试过stack install base-4.6.0.1,它没有输出任何东西,但完成没有错误,但我尝试时仍然得到相同的错误stack install d3js.
我也尝试过使用cabal:
$ cabal install d3js
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: d3js-0.1.0.0 (user goal)
next goal: base (dependency of d3js-0.1.0.0)
rejecting: base-4.9.1.0/installed-4.9... (conflict: d3js => base>=4.6 && <4.7)
rejecting: base-4.10.0.0, base-4.9.1.0, base-4.9.0.0, base-4.8.2.0,
base-4.8.1.0, base-4.8.0.0, base-4.7.0.2, base-4.7.0.1, base-4.7.0.0,
base-4.6.0.1, base-4.6.0.0, base-4.5.1.0, base-4.5.0.0, base-4.4.1.0,
base-4.4.0.0, base-4.3.1.0, base-4.3.0.0, base-4.2.0.2, base-4.2.0.1,
base-4.2.0.0, base-4.1.0.0, base-4.0.0.0, base-3.0.3.2, base-3.0.3.1
(constraint from non-upgradeable package requires installed instance)
Dependency tree exhaustively searched.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我该如何解决这个依赖问题?
如您所见,d3js包在基础包上有一个上限.基础包是与给定版本的GHC一起提供的一组模块,包括例如Prelude.由于基础版附带GHC,因此如果不安装不同的GHC,则无法安装与已有版本不同的版本.
d3js软件包是最后一次(并且仅)在2013年更新,其基本版本边界表明它只适用于GHC 7.6.不幸的是,Stack在2013年不存在,并且没有与GHC 7.6一起使用的stackage版本.您可能有一些成功指示Stack(以及Cabal)忽略上层版本绑定并使用LTS 2.22与GHC 7.8.4,尽管d3js包的基础上限,但d3js包可能兼容,但我没有测试过.您可以通过设置allow-newer: Truestack.yaml文件来完成此操作.
然而,情况可能就是d3js软件包太旧而无法与Stack提供的GHC一起使用.
作为最后的手段,您可以通过在本地下载,更新其边界(并且可能修复导致的任何不兼容性)以及配置stack.yaml文件来将其视为本地包和额外依赖项来修复它.有关说明,请参阅堆栈配置文档中的本地依赖包.