2

我正在尝试通过 cabal install 安装无须鳕。

首先 - 虽然可用的最新软件包是 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 中。

4

3 回答 3

5

baseon有一个上限hake,可以防止最新版本与最新版本的 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

在那个目录中。当然,这种修改依赖项并不总能保证有效,但在这种情况下,似乎可以。

于 2013-04-20T16:56:42.470 回答
2

查看依赖项base (≤4.3.1.0)hake-1.3.7需要一个相当旧版本的base库。看起来它最多需要 GHC 7.0。Cabal 认为无法满足要求base,因此拒绝安装hake

hake-1.2,另一方面,没有指定对 的上限要求base。由于 Cabal 不知道需求,它错误地尝试构建hake,它只是无法编译。

于 2013-04-20T16:57:41.947 回答
1

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

于 2013-12-23T16:18:59.750 回答