2011-09-20 95 views
4

我有两台Arch(64)机器,我试图安装yesod。首先,一个简单的'cabal install yesod'出色地进行。关于第二个,我收到以下错误,而建设aesod本地依赖性:为什么aeson-native安装失败?

Configuring aeson-native-0.3.3...
Preprocessing library aeson-native-0.3.3...
Building aeson-native-0.3.3...
[1 of 6] Compiling Data.Aeson.Functions (Data/Aeson/Functions.hs, dist/build/Data/Aeson/Functions.o)
[2 of 6] Compiling Data.Aeson.Types (Data/Aeson/Types.hs, dist/build/Data/Aeson/Types.o)

Data/Aeson/Types.hs:196:22:
No instance for (NFData Object)
arising from a use of rnf'<br> Possible fix: add an instance declaration for (NFData Object)<br> In the expression: rnf o<br> In an equation for rnf': rnf (Object o) = rnf o
In the instance declaration for `NFData Value'
cabal: Error: some packages failed to install:
aeson-native-0.3.3 failed during the building phase. The exception was:
ExitFailure 1

后失败,并且我做了一个新的GHC安装,并取消了GHC-PKG和.cabal目录。同样的错误。埃森本地人似乎没有错,因为它在其他地方运作良好,所以我的环境必须以某种方式责怪。在发生故障的机器上,我过去曾尝试过使用pacman来管理hackage libs(主要用于xmonad)。不知道它是否应该重要,但我从来没有确定如何/如果cabal和pacman知道对方正在做什么。

GHC是7.0.3。我在所有安装之前进行了更新。任何想法可能会在这个环境中出错?

感谢/ O

回答

5

你并不孤单。这应该能够得到固定的:

> cabal install deepseq-1.1.0.2 
> ghc-pkg unregister deepseq-1.2.0.1 --force 

然后你就可以安装任何aeson包。请验证它确实deepseq-1.2.0.1你键入ghc-pkg list deepseq


我有这个错误太前几天安装,但不aesonaeson-native。我拉请github fix然后它已经在hackage,但不幸的只有aeson而不是aeson-native。我可以建议你尝试拉请求修复aeson-native包。回馈社区真的很好,尝试一下吧! :)

+0

非常感谢,这解决了它(并感谢下面的海报更详细地描述了在Hackage上发生的事情)。缩小包装限制是我可能实际上能够自己推出并且不会完全搞砸的事情。谢谢大家! – jdo

+0

很高兴为你工作,并且你也可以解释hammars更丰富的答案。顺便说一句。您可以使用github在线编辑器为这些单线程的请求提供真正的优势。您避免了整个克隆 - 拉 - 编辑 - 提交 - 推 - 拉请求步骤。 :d – Tarrasch

3

Object仅仅是一个Data.Map一种代名词,它看来,NFData实例Data.Map是最近moved from the deepseq package to containers

然而,这个containers的新版本显然还没有在Hackage上发布,所以既然你使用的是最新版本的deepseq,那么这个实例在任何一个包中都找不到。

我希望这个问题很快就会被纠正。与此同时,您应该能够将deepseq降级到版本1.1.0.2,这是实例移动之前的最新版本。