无法通过cabal安装安装Hake

时间:2013-04-20 16:43:39

标签: haskell cabal hake

我正在尝试通过cabal安装来安装hake。

首先 - 虽然最新的软件包是1.3.7,但cabal试图安装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中。

3 个答案:

答案 0 :(得分:5)

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

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

$ cabal unpack hake-1.3.7
$ cd hake-1.3.7

然后修改hake.cabal,找到包含Build-Depends:的{​​{1}}行,并将其改为简单地说base<=4.3.1.0。然后说

base

在该目录中。当然,这种修改依赖关系并不总能保证能够正常工作,但在这种情况下,似乎也是如此。

答案 1 :(得分: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,并且它无法编译。

答案 2 :(得分:1)

感谢您使用我的程序。 我是作家。 我上传了新版本的hake。 请试一试。 http://hackage.haskell.org/package/hake-1.3.8.1