2013-04-20 157 views
2

我试图通过cabal安装安装hake。无法通过cabal安装Hake安装

首先 - 虽然可用的最新的包是1.3.7,阴谋试图安装1.2

除了:

~ % cabal install hake-1.2 
Resolving dependencies... 
Configuring hake-1.2... 
Building hake-1.2... 
Preprocessing library hake-1.2... 

Development/Hake.hs:49:8: 
    Could not find module `System.Directory.Tools' 
    Perhaps you meant System.Directory (from directory-1.1.0.2) 
    Use -v to see a list of the files searched for. 
Failed to install hake-1.2 
cabal: Error: some packages failed to install: 
hake-1.2 failed during the building phase. The exception was: 
ExitFailure 1 

如果我尝试更加具体的 - 我得到其他错误

~ % cabal install hake-1.3.7 
Resolving dependencies... 
cabal: Could not resolve dependencies: 
trying: hake-1.3.7 
rejecting: base-3.0.3.2, 3.0.3.1 (global constraint requires installed 
instance) 
rejecting: base-4.5.1.0/installed-81d... (conflict: hake => base<=4.3.1.0) 
rejecting: base-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 (global constraint 
requires installed instance) 

我很难过。

更新

看来笔者已在源的有关更改包装,至少在GitHub上https://github.com/YoshikuniJujo/hake_haskell,但他们不是在Hackage呢。

回答

5

hake上有base的上限,阻止使用最新版本的ghc安装最新版本。 (旧版本的hake缺少上限,但实际上需要一个,这就解释了您得到的第一个错误。)

最好的选择是联系作者并要求他将更新后的版本上传到Hackage。下一个最好的(也是更直接的)选项是自己编辑.cabal文件。

$ cabal unpack hake-1.3.7 
$ cd hake-1.3.7 

然后编辑hake.cabal,找到Build-Depends:线包含base<=4.3.1.0和改变,要简单地说base代替。然后在该目录中说

$ cabal install 

。当然,这种修改依赖并不总是有效,但在这种情况下,似乎是这样。

+0

谢谢你 - 我想我应该把学习小组放在更高的名单上。 – Abizern 2013-04-20 17:08:39

2

看着依赖关系base (≤4.3.1.0)hake-1.3.7需要相当旧版本的base库。看起来像是想要at most GHC 7.0。 Cabal认为它不能满足base的要求,所以拒绝安装hake

hake-1.2,另一方面,没有指定base上的要求。由于Cabal并不知道这个要求,所以它错误地试图构建hake,它只是不能编译。