如何确保我的 Haskell 包匹配 LTS Haskell?

How do I ensure that my Haskell packages match LTS Haskell?

我想要一种简单的方法来确保我系统中的软件包,无论它们是在全局还是用户软件包数据库中,都与当前 LTS Haskell 中的版本相对应。 =15=]

我了解到有 fairly simple ways to do something like this for a specific project. But it's not clear to me how to achieve this for my Haskell system as a whole. I have Stack installed already (using Cabal), and use Homebrew where I can (e.g., for Haskell, just for cabal-install). I'm tempted by haskell-stack,但不清楚具体是做什么的。

有没有简单的方法来确保我系统的 Haskell 软件包(无论它们位于何处)匹配 LTS Haskell?


如果您正在使用 cabal-install,最好的办法是将 https://www.stackage.org/lts-3.8/cabal.config?global=true 的内容(根据您的喜好调整 LTS 快照 slug)附加到您的 ~/.cabal/config。不过,我会提醒您不要这样做,因为您很可能希望对不同的项目使用不同的快照。强烈建议使用带有 cabal-install 的沙箱(事实上,我在我的 cabal 配置中设置了 require-sandbox: true 以确保我不会忘记)。

对于 Stack,LTS 快照始终是特定于项目的;没有全局设置。但是在 ~/.stack/global/stack.yaml 中设置 resolver: 值是为了在特定项目之外 运行 stack 时设置它,并且还会影响新项目的解析器选择(当您使用stack initstack new).

顺便说一句,看起来 Homebrew haskell-stack 公式只是安装 Stack 的另一种方法,因此如果您已经拥有 Stack,则无需使用它。