【发布时间】:2015-05-04 20:25:35
【问题描述】:
我想将我的全局 cabal 配置指定为仅使用 stackage LTS。
cabal 沙盒在这种情况下是否提供任何价值?
据我了解,不应再有阴谋集团的地狱,因为所有项目都将使用一组预定的包,这些包保证可以一起构建。
有没有办法预先构建所有堆栈 LTS 包以加快所有未来的项目构建?
【问题讨论】:
我想将我的全局 cabal 配置指定为仅使用 stackage LTS。
cabal 沙盒在这种情况下是否提供任何价值?
据我了解,不应再有阴谋集团的地狱,因为所有项目都将使用一组预定的包,这些包保证可以一起构建。
有没有办法预先构建所有堆栈 LTS 包以加快所有未来的项目构建?
【问题讨论】:
我认为使用沙盒还是有好处的:
并非每个包都在堆栈中,如果您最终使用库或依赖于不属于堆栈的内容,则无法保证它可以与您的其余包一起使用。
沙盒除了防止阴谋集团地狱之外还有其他用途。它们的另一个主要用途是能够添加本地目录作为包的来源。例如,假设您在本地磁盘上签出了两个包~/code/a 和~/code/b,假设b 依赖于a。如果您想检查 b 是否适用于您对 a 所做的一些更改,您可以将您本地的 a checkout 添加为 b 的阴谋集团沙箱的源。
cd ~/code/b
cabal sandbox add-source ~/code/a
cabal build
如果您已设置好预构建所有包,则可以使用以下命令安装 cabal.config 文件中列出的所有包。
cat cabal.config | sed -rn 's/^.* ([^ ]+) ==.*/\1/gp' | xargs cabal install
【讨论】: