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