我对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在哪里?
答案 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