使用 Stack 安装本地包
Installing local package with Stack
是否可以从类似于 stack build package-name
的源安装软件包? (Stackage 上带有包的字母词,但不带有自定义包)
嗯,stack build
(在源目录中)?
Stack 实际上并没有安装 库的概念,它只安装可执行文件。要“安装”本地来源的软件包,您需要指定 您希望安装它们的目的 :通过 location:
中的 location:
字段将它们作为依赖项添加到另一个项目13=] 该项目的 stack.yaml
文件中的字段。
这可以说是明智的,因为有人可能会说,除了在另一个 Haskell 项目(或在 REPL 中,您可以使用 stack ghci
调用它之外,您无法对已安装的库执行任何操作).不过,我个人并不认同这一点,我喜欢能够说 现在安装该库 。这是我一直坚持使用老式 cabal-install 而不是 Stack 的原因之一。这样,您就可以
cabal install
从源目录中。
Cabal-install 经常受到批评:它的本地安装很容易失去同步,然后你会遇到奇怪的依赖冲突,需要重建很多东西。我从来没有发现这个 那么多 的问题,无论如何,最近的 Cabal 通过 Nix-style builds 解决了这个问题,这不会产生冲突。
是否可以从类似于 stack build package-name
的源安装软件包? (Stackage 上带有包的字母词,但不带有自定义包)
嗯,stack build
(在源目录中)?
Stack 实际上并没有安装 库的概念,它只安装可执行文件。要“安装”本地来源的软件包,您需要指定 您希望安装它们的目的 :通过 location:
中的 location:
字段将它们作为依赖项添加到另一个项目13=] 该项目的 stack.yaml
文件中的字段。
这可以说是明智的,因为有人可能会说,除了在另一个 Haskell 项目(或在 REPL 中,您可以使用 stack ghci
调用它之外,您无法对已安装的库执行任何操作).不过,我个人并不认同这一点,我喜欢能够说 现在安装该库 。这是我一直坚持使用老式 cabal-install 而不是 Stack 的原因之一。这样,您就可以
cabal install
从源目录中。
Cabal-install 经常受到批评:它的本地安装很容易失去同步,然后你会遇到奇怪的依赖冲突,需要重建很多东西。我从来没有发现这个 那么多 的问题,无论如何,最近的 Cabal 通过 Nix-style builds 解决了这个问题,这不会产生冲突。