是否可以在本地安装Cabal包?

时间:2013-01-12 17:02:21

标签: haskell dependency-management cabal

在npm中,依赖关系安装在相对于依赖包的目录的目录node_modules中。每个包都将其依赖项存储在自身内。

然而,使用Cabal,安装软件包总是全局安装(即~/.cabal),这是一个完美的噩梦和眼泪的配方,因为不同版本的软件包会相互冲突,一切都会失败并且去错。

我想在本地安装Cabal软件包 ,即在我自己的软件包的子目录中,而不是全局安装。这些包的所有依赖关系都会这样做。我的包的目录树的示例可能如下所示:

my_package/
  dependencies/
    json/
      dependencies/
        foo/
          etc...
        bar/
          etc...
    mtl/
      etc...
  my_package.cabal
  src/
    Main.hs

这可能吗,如果可以,怎么做?

1 个答案:

答案 0 :(得分:4)

编辑:对于较新版本的cabal,您应该使用cabal sandboxes,它们现在是内置的,而不是cabal-dev。

查看cabal-dev工具。它类似于Python的virtualenv

基本上,您将使用cabal命令,使用cabal-dev。因此,要安装您正在处理的软件包,请转到该目录并执行cabal-dev install。您还可以通过ghc-pkg运行cabal-dev,这样您就可以执行cabal-dev ghc-pkg unregister foo-bar之类的操作。此外,您也可以使用GHCi启动cabal-dev ghci

默认情况下,cabal-dev会将软件包安装到项目内的cabal-dev目录中 - 这就是您在示例中调用的dependencies