我希望有一种简单的方法来确保我的系统中的软件包,无论它们是在全局软件包还是用户软件包数据库中,都与当前LTS Haskell中的版本相对应。
我认为有fairly simple ways为特定项目做这样的事情。但是我不清楚如何为我的Haskell系统实现这一目标。我已经安装了Stack(使用Cabal),并且尽可能使用Homebrew(例如,对于Haskell,仅用于cabal-install
)。我被haskell-stack
诱惑,但目前还不清楚到底是做什么的。
有没有一种简单的方法可以确保我的系统的Haskell软件包(无论它们驻留在哪里)与LTS Haskell相匹配?
答案 0 :(得分:4)
如果您正在使用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快照始终是项目特定的;没有全球设置。但是,在resolver:
中设置~/.stack/global/stack.yaml
值会在特定项目之外运行stack
时设置它,并且还会影响新项目解析程序的选择(当您使用{{1}时}或stack init
)。
stack new
公式只是安装Stack的另一种方式,所以如果你已经有了Stack,那么就不需要使用它了。