为什么我不能用mongodb安装--only-dependencies?

时间:2014-11-20 18:40:04

标签: mongodb haskell cabal

我已经完成了以下步骤:

$ 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

1 个答案:

答案 0 :(得分:3)

看完这里后

Cabal configure in a sandbox complains "At least the following dependencies are missing" on installed packages

我看到答案说明包名称区分大小写。所以我尝试将mongodb更改为MongoDB拼写它的方式,即MongoDB。这不起作用,所以我尝试将其改为mongoDB,最后很高兴。

所以尽管我可以做cabal install mongodb我不能使用相同的拼写从.cabal文件中安装它,这显然是完全愚蠢的。我相信我会找到一个合适的地方来引起我对principle of least surprise这种公然违反的愤怒,但是现在我可以对新人说这是最不必要的混淆。