2017-08-15 93 views
1

我只想試試Haskell d3js包。下面是我的嘗試:如何安裝d3js Haskell軟件包?

stack install d3js 

但它給人的錯誤:

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) 

我試過stack install base-4.6.0.1,它不輸出任何東西,但完成,沒有錯誤,但我仍然得到同樣的錯誤,當我嘗試stack install d3js

我用陰謀也試過:

$ 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. 

我在做什麼錯?我該如何解決這個依賴性問題?

回答

8

如您所見,d3js軟件包在基本軟件包上有一個上限。基本軟件包是與給定版本的GHC一起提供的一組模塊,包括例如Prelude。由於GHC基礎版本,您不能安裝與已有版本不同的版本,而無需安裝其他GHC。

d3js軟件包是最後一次(也是唯一一次)在2013年進行了更新,其基本版本界限表明它僅適用於GHC 7.6。不幸的是,Stack在2013年並不存在,並且沒有與GHC 7.6協同工作的版本。你可能會獲得一些成功,指示堆棧(從而Cabal)忽略上限的版本並且使用GHTS 7.8.4的LTS 2.22,雖然d3js包的基礎上限可能與d3js包兼容,但我沒有測試過。您可以通過在stack.yaml文件中設置allow-newer: True來完成此操作。

然而,d3js軟件包太老了,無法與Stack提供的GHCs一起使用。

作爲最後的手段,您可能可以通過在本地下載,更新其邊界(並可能修復所導致的任何不兼容),以及配置stack.yaml文件以將其視爲本地程序包和一個額外的依賴。有關說明,請參閱堆棧配置文檔中的Local dependency packages

1

這個軟件包非常舊,它對base軟件包(讀取,編譯器版本)具有固定的依賴關係。

我首先放寬d3js.cabal文件中的依賴關係要求,然後再次運行構建。如果這樣做不行,你需要破解代碼,或者使用舊的編譯器(或者堆棧解析器,如果你使用的是堆棧)。