gpt4 book ai didi

haskell - 使用 Stack 作为全局包管理器的推荐方法

转载 作者:行者123 更新时间:2023-12-02 11:50:56 26 4
gpt4 key购买 nike

我想全局安装一些 Haskell 库,例如我的编辑器的 Haskell 集成使用的 hindent。推荐的方法是什么?

我认为stack installhindent是执行此操作的正确方法。然而,后来我想更新我的软件包,却发现没有办法做到这一点。根据the GitHub issue report I found ,

stack is concerned with managing a local build sandbox for a project. It isn't intended to be a global package manager.

似乎有一些解决方法,例如维护一个虚拟项目,该项目人工依赖于我想要安装的软件包。这听起来像是一个可怕的黑客攻击,我一直无法找到任何关于实际应该采取什么方法的官方文档。

无法使用我的系统包管理器(Homebrew)安装 Haskell 包,因为它们没有打包。

我本来会针对 Stack 提出问题报告,但是贡献指南要求我在 下提出问题。标签。

最佳答案

好吧,任何项目中的stack install都将安装到~/.local/bin,因此使您安装的任何可执行文件都可以全局访问。

全局项目在没有项目的情况下运行堆栈时使用,它位于~/.stack/global-project/stack.yaml

如果您希望所有全局可访问的工具具有相同的依赖项(也许是为了确保 ghc 版本匹配或其他),那么您可以创建一个旨在构建所有这些工具的项目。它是否是“全局项目”取决于您 - 它没有什么特别的,如果您运行堆栈并且不在项目中,它只是默认值。

为了记录“我想要全局安装哪些 haskell 可执行文件”,您可以考虑创建一个 shell 文件,例如

#!/bin/sh
stack install hindent

然后每当您更改已安装工具的版本时就运行它。

另外,对于像intero这样需要匹配ghc版本的工具,你可以执行stack install --copy-compiler-tool intero,它将可用当堆栈与该 ghc 版本一起使用时,在 PATH 上。

关于haskell - 使用 Stack 作为全局包管理器的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49504206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com