“cabal-dev”和“cabal sandbox init”如何相互关联?

时间:2013-11-02 03:47:58

标签: haskell cabal

似乎我错过了一些东西。据我所知cabal sandbox init说,从当前文件夹和所有子文件夹开始,所有cabal install命令都限定在沙箱中。因此,此文件夹外的所有内容都不在沙盒中。

然后cabal-dev的目的是什么?我应该在沙盒中使用cabal install还是cabal-dev install

1 个答案:

答案 0 :(得分:21)

TLDR,cabal-dev是沙盒的初始解决方案,cabal sandbox是完全集成的实现。

直到几个月前,使用cabal的沙箱构建还没有令人愉快的方法。对于任何图书馆维护者或任何可能担心依赖性冲突的人来说,这都是一个巨大的问题。为了解决这个问题,除了一些人之外,还有一个名为cabal-dev的工具。它补充了cabal并添加了一些沙箱功能。

现在已经存在了几年,在版本1.18中,cabal获得了沙箱!这意味着我们可以从使用cabal + cabal-dev切换到cabal,因为cabal现已包含cabal-dev

此外,由于沙箱完全集成到cabal中,因此它们与其他cabal功能很好地匹配,例如cabal replcabal-dev是不可能的。

最后,最近关于Haskell-Cafe邮件列表的喋喋不休表明,cabal-dev不太可能维持更长时间,因此除了cabal sandbox中的1-2个当前错误之外,没有理由不切换。

相关问题