Rad*_*ugh 9 haskell haskell-stack
我想在全局安装一些Haskell库,例如hindent
我的编辑器的Haskell集成使用它.建议的方法是什么?
我认为这stack install hindent
是正确的方法.但是,我想更新我的包,发现没有办法做到这一点.根据我发现的GitHub问题报告,
stack涉及管理项目的本地构建沙箱.它不打算成为全球包经理.
似乎有一些解决方法,比如在我想要安装的软件包上维护一个带有人为依赖性的虚拟项目.这听起来像一个可怕的黑客,我一直无法找到任何关于应该采取什么方法的官方文件.
使用我的系统软件包管理器(Homebrew)安装Haskell软件包不是一个选项,因为它们没有打包.
我本来会打开一个针对Stack的问题报告,但是贡献指南要求我在haskell-stack标签下提出问题.
好吧,stack install
在任何项目中都会安装,~/.local/bin
从而使您安装的任何可执行文件都可以全局访问.
在没有项目的情况下运行堆栈时使用全局项目,它位于~/.stack/global-project/stack.yaml
.
如果您希望所有可全局访问的工具具有相同的依赖关系(可能是为了确保ghc版本匹配或某些东西),那么您可以创建一个旨在构建所有这些工具的项目.这取决于你是否是"全球项目" - 它没有太多特别之处,如果你运行堆栈并且不在项目中,它只是一个默认值.
为了记录"我想要全局安装什么haskell可执行文件",您可以考虑创建一个类似的shell文件
#!/bin/sh
stack install hindent
Run Code Online (Sandbox Code Playgroud)
然后每当您更改已安装工具的版本时运行此选项.
此外,对于intero
需要匹配ghc版本的工具,您可以这样做stack install --copy-compiler-tool intero
,当堆栈与该ghc版本一起使用时,它将在PATH上可用.