2

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

我收集到有相当简单的方法可以为特定项目做这样的事情。但是我不清楚如何为我的整个 Haskell 系统实现这一点。我已经安装了 Stack(使用 Cabal),并尽可能使用 Homebrew(例如,用于 Haskell,仅用于cabal-install)。我很受诱惑haskell-stack,但目前还不清楚它到底做了什么。

有没有一种简单的方法可以确保我的系统的 Haskell 包(无论它们位于何处)与 LTS Haskell 匹配?


4

1 回答 1

4

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

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

顺便说一句,Homebrew 公式似乎haskell-stack只是安装 Stack 的另一种方式,所以如果您已经拥有 Stack,则无需使用它。

于 2015-10-04T18:59:53.540 回答