看来我错过了什么。据我了解cabal sandbox init
,从当前文件夹和所有子文件夹开始,所有cabal install
命令的范围都限定为沙箱。因此,此文件夹之外的所有内容都不在沙箱中。
那么 cabal-dev 的目的是什么?我应该使用cabal install
还是cabal-dev install
在沙箱中?
TLDRcabal-dev
是沙盒的初始解决方案,cabal sandbox
是完全集成的实现。
直到几个月前,使用cabal
. 对于任何库维护者或任何可能担心依赖冲突的人来说,这都是一个巨大的问题。为了解决这个问题,几个人却联合了一个工具,叫做cabal-dev
. 它补充cabal
并增加了沙盒的一些功能。
现在在这个存在了几年之后,在 1.18 版本中,cabal
已经获得了沙盒!这意味着我们可以从使用cabal
+切换cabal-dev
到 just cabal
since cabal
now has subsumed cabal-dev
。
此外,由于沙盒完全集成到 cabal 中,它们可以很好地与其他 cabal 功能配合使用,cabal repl
就像cabal-dev
.
最后,最近在 Haskell-Cafe 邮件列表上的讨论表明,这cabal-dev
不太可能被维护得更久,所以除了 1-2 个当前cabal sandbox
的错误之外,没有理由不切换。