cabal sandbox v。全球包db

时间:2015-06-06 16:47:05

标签: haskell ghc cabal

在cabal沙箱中安装时,cabal仍将使用全局包db中的包(特别是来自Haskell平台的包)。这可能会导致安装冲突。是否可以将cabal配置为忽略全局包db?

我看到-no-global-package-db本身已经通过ghc-pkg选项(参见https://ghc.haskell.org/trac/ghc/ticket/5977)实现了相应的功能,--global将忽略全局包db不要传递import cv2标志。有没有办法同样配置cabal?

此外,还有一个针对cabal的封闭问题暗示相反的行为(重建所有内容而不是使用已安装的Haskell平台中的软件包),所以我不确定这种行为是否随着时间的推移而发生变化;见https://github.com/haskell/cabal/issues/1695

1 个答案:

答案 0 :(得分:1)

你应该能够传递cabal configure --package-db标志,如下所示:

--package-db=DB                  Append the given package database to the
                                 list of package databases used (to satisfy
                                 dependencies and register into). May be a
                                 specific file, 'global' or 'user'. The
                                 initial list is ['global'], ['global',
                                 'user'], or ['global', $sandbox],
                                 depending on context. Use 'clear' to reset
                                 the list to empty. See the user guide for
                                 details.

因此,特别是,您可以将其传递给clear,然后将其传递给沙箱数据库。

Storage and Interpretation of Cabalized Packages文章中详细讨论了这一点。