带堆栈的 cabal 沙箱
cabal sandbox with stackage
我想将我的全局 cabal 配置指向仅使用 stackage LTS。
在那种情况下,cabal 沙箱是否提供任何价值?
据我所知,应该没有阴谋集团地狱了,因为所有项目都将使用一组保证一起构建的预定包。
是否有任何方法可以预构建所有 stackage LTS 包以加速所有未来的项目构建?
为什么选择沙盒?
我认为使用沙箱仍然有好处:
并不是每个包都在堆栈中,如果你最终使用了一个库或者依赖于一些不属于堆栈的东西,你不能保证它能与你的其他包一起工作。
沙盒除了防止阴谋集团地狱外还有其他用途。它们的另一个主要用途是能够添加本地目录作为包的来源。例如,假设您已经检出本地磁盘上的两个包 ~/code/a
和 ~/code/b
,并且假设 b
依赖于 a
。如果您想检查 b
是否适用于您对 a
所做的一些更改,您可以将本地 a
结帐作为源添加到 b
的 cabal 沙箱。
cd ~/code/b
cabal sandbox add-source ~/code/a
cabal build
预构建 LTS 包
如果您设置为预构建所有包,则可以使用以下命令安装 cabal.config 文件中列出的所有包。
cat cabal.config | sed -rn 's/^.* ([^ ]+) ==.*//gp' | xargs cabal install
我想将我的全局 cabal 配置指向仅使用 stackage LTS。
在那种情况下,cabal 沙箱是否提供任何价值?
据我所知,应该没有阴谋集团地狱了,因为所有项目都将使用一组保证一起构建的预定包。
是否有任何方法可以预构建所有 stackage LTS 包以加速所有未来的项目构建?
为什么选择沙盒?
我认为使用沙箱仍然有好处:
并不是每个包都在堆栈中,如果你最终使用了一个库或者依赖于一些不属于堆栈的东西,你不能保证它能与你的其他包一起工作。
沙盒除了防止阴谋集团地狱外还有其他用途。它们的另一个主要用途是能够添加本地目录作为包的来源。例如,假设您已经检出本地磁盘上的两个包
~/code/a
和~/code/b
,并且假设b
依赖于a
。如果您想检查b
是否适用于您对a
所做的一些更改,您可以将本地a
结帐作为源添加到b
的 cabal 沙箱。cd ~/code/b cabal sandbox add-source ~/code/a cabal build
预构建 LTS 包
如果您设置为预构建所有包,则可以使用以下命令安装 cabal.config 文件中列出的所有包。
cat cabal.config | sed -rn 's/^.* ([^ ]+) ==.*//gp' | xargs cabal install