如何管理Cabal沙盒

6

当前文档中的cabal显示了一个sandbox子命令。

github上相应的页面不再包含关于沙盒的部分。

我正在使用cabal版本3.2.0.0,但是sandbox子命令不存在。使用cabal管理沙盒的正确方法是什么?

显然,文档正在进行重大改革,提到了Nix-style/new-/v2命令,但对于新手来说,使用cabal管理沙盒的规范方式还不清楚。

1个回答

9

现在不再需要沙盒了。 Nix-style store 可以完成沙盒的所有功能,并且做得更好。只需在裸目录中使用 cabal build (cabal v2-build 适用于3.0 之前的 cabal)和其他 cabal 命令,而无需担心沙盒。


谢谢,@Daniel,但是我如何获得类似于Python venv的自包含Haskell环境,即沙盒的等效物呢? - Bernhard Wagner
1
@BernhardWagner 为了恰当地回答这个问题,我们需要知道你为什么需要一个。 v2风格的安装处理不了你有哪些需求? - Carl
2
@BernhardWagner 所有的软件包都是在一个自包含的 Haskell 环境中构建的。(或者说:你有什么观察结果让你相信你已经拥有了一个自包含的环境?) - Daniel Wagner
2
@BernhardWagner cabal >= 3 可以在共享的中央存储库中存储每个库的多个版本(以前,这样做可能会导致冲突,因此添加了单独的沙盒作为临时措施)。当您开发一个包并调用 cabal build 时,您的构建过程会看到适合您 cabal 文件中的 build-depends 的存储库的“视图”。您不需要沙盒,也不需要单独“cabal install”依赖项:一切都由 cabal build 处理。您可能需要定期运行 cabal update 来刷新可用软件包列表。 - danidiaz
1
@BernhardWagner 您可以使用 -w 参数来为每个命令请求特定的编译器,或者使用 cabal configure(仍然带有 -w)来默认使用特定的编译器,以供未来没有 -w 标志的命令使用。 - Daniel Wagner
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接