我已经完成了以下步骤:
$ mkdir mongoEg
$ cd mongoEg
$ cabal init
...
配置为作为可执行文件运行。我将mongodb
添加到build-depends
列表中。我制作了一个虚拟的Main.hs
文件,并在那里放了一个基本的hello世界。然后我做
$ cabal sandbox init
$ cabal install --only-dependencies
回应:
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: monogEg-0.1.0.0 (user goal)
next goal: mongodb (dependency of monogEg-0.1.0.0)
Dependency tree exhaustively searched.
Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.
我了解了人们遇到的其他问题,并删除了~/.ghc
,删除了我的mongoEg
目录,然后重复以获得相同的结果。我尝试在http://howistart.org/posts/haskell/1处执行类似的步骤,发现一切正常。
然后我猜测mongodb
包本身有问题。我似乎能够在全球环境中cabal install mongodb
并在沙箱之外使用它而没有任何问题。那么,为什么cabal沙箱不会与mongodb包一起玩呢?
有关详细信息,请参阅此要点:https://gist.github.com/anonymous/e5a548cf7d9ec59bea31
答案 0 :(得分:3)
看完这里后
我看到答案说明包名称区分大小写。所以我尝试将mongodb
更改为MongoDB拼写它的方式,即MongoDB
。这不起作用,所以我尝试将其改为mongoDB
,最后很高兴。
所以尽管我可以做cabal install mongodb
我不能使用相同的拼写从.cabal
文件中安装它,这显然是完全愚蠢的。我相信我会找到一个合适的地方来引起我对principle of least surprise这种公然违反的愤怒,但是现在我可以对新人说这是最不必要的混淆。