我想有一个简单的方法来确保我的系统中的软件包,无论它们是在全局软件包还是用户软件包数据库中,都与当前LTS Haskell中的版本相对应 .
我认为有fairly simple ways为特定项目做这样的事情 . 但我不清楚如何为我的Haskell系统实现这一目标 . 我已经安装了Stack(使用Cabal),并且尽可能使用Homebrew(例如,对于Haskell,仅用于 cabal-install
) . 我被haskell-stack诱惑了,但目前还不清楚到底是做什么的 .
有没有一种简单的方法可以确保我的系统的Haskell包(无论它们驻留在哪里)与LTS Haskell相匹配?
1 回答
如果您正在使用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 init
或stack new
时) .顺便说一下,看起来Homebrew
haskell-stack
公式只是安装Stack的另一种方式,所以如果你已经有了Stack,就没有必要使用它了 .