cabal-install

时间:2015-05-31 12:31:43

标签: haskell cabal cabal-install stackage

我对Haskell来说是一个全新的阴谋集团,而我正努力让yesod工作。

我的cabal版本是cabal-install版本1.20.0.3 使用Cabal库的1.20.0.2版本

这是我在安装alex时发生的事情:

$ cabal install alex
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: alex-3.1.4 (user goal)
next goal: QuickCheck (dependency of alex-3.1.4)
rejecting: QuickCheck-2.8.1, 2.8 (global constraint requires ==2.7.6)
trying: QuickCheck-2.7.6
next goal: transformers (dependency of QuickCheck-2.7.6)
rejecting: transformers-0.4.3.0, 0.4.2.0, 0.4.1.0, 0.3.0.0, 0.2.2.1, 0.2.2.0,
0.2.1.0, 0.2.0.0, 0.1.4.0, 0.1.3.0, 0.1.1.0, 0.1.0.1, 0.1.0.0, 0.0.1.0,
0.0.0.0, 0.4.0.0 (global constraint requires installed instance)
Dependency tree exhaustively searched.

第二次尝试:

$ cabal install alex happy yesod-bin --allow-newer
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: alex-3.1.4 (user goal)
trying: QuickCheck-2.7.6/installed-1a8... (dependency of alex-3.1.4)
trying: tf-random-0.5/installed-ef3... (dependency of
QuickCheck-2.7.6/installed-1a8...)
next goal: primitive (dependency of tf-random-0.5/installed-ef3...)
rejecting: primitive-0.5.0.1/installed-8e5... (global constraint requires
==0.6)
rejecting: primitive-0.6 (conflict: tf-random =>
primitive==0.5.0.1/installed-8e5...)
rejecting: primitive-0.5.4.0, 0.5.3.0, 0.5.2.1, 0.5.1.0, 0.5.0.1, 0.5, 0.4.1,
0.4.0.1, 0.4, 0.3.1, 0.3, 0.2.1, 0.2, 0.1 (global constraint requires ==0.6)
Dependency tree exhaustively searched.

安装alex需要做什么?

一个相关的问题是这个: cabal install --- global constraint requires installed instance

@kosmikus对该问题的评论是:

  

因此Stackage LTS配置文件包含约束变换器   安装,意味着只有一个已经存在的版本   可以使用变压器。这是合理的,因为GHC附带了一个   特定版本的变压器。对于ghc-7.8,这是   变压器-0.3.0.0。出于某种原因,这个安装的版本不是   通过cabal-install考虑。您的部分日志不包含   足够的信息,看看为什么。

如何修复Stackage LTS配置文件? Ubuntu在哪里?

2 个答案:

答案 0 :(得分:1)

问题的原因是我的GHC太老了。我下载了更新版本并解决了问题。

尝试失败(和错误)

您当前目录中应该有cabal.config个文件。使用任何文本编辑器打开它并搜索transformers installed字符串。

找到后,请将其替换为transformers ==0.4.3.0或您喜欢的任何其他版本。

这是一个糟糕的解决方案,因为正如dfeurer所写:

  

transformers位于包依赖关系结构中。一世   相信它只取决于base;我想象绝大多数   Hackage上的软件包直接或间接依赖于它。如果你   升级transformers,几乎每个系统中的依赖都会   如果你愿意的话,这与你的目标相反   使用Stackage。

Sibi清洁解决方案

按原样使用堆叠包。如果您有一些导致问题的全局包,则删除它们并专门使用堆栈。同时在每个项目中使用沙箱是一个好主意。

答案 1 :(得分:1)

试试这个cabal install alex --allow-newer