是否可以从类似stack build package-name
的来源安装软件包? (后者适用于Stackage上的包,但不适用于自定义包)
答案 0 :(得分:2)
嗯,stack build
(在源目录中)?
Stack实际上没有安装库的概念,它只安装可执行文件。要“安装”本地源程序包,您需要指定 要安装的内容:通过location:
中的packages:
字段将它们作为依赖项添加到另一个项目中该项目的stack.yaml
文件中的字段。
这可以说是明智的,因为,有人可能会说,除了在另一个Haskell项目中调用它(或者你可以用stack ghci
获取的REPL),你无法对已安装的库做任何事情。我个人并不坚持,但我真的能够说现在安装该库。这是我一直坚持使用旧的cabal-install而不是Stack的原因之一。有了它,你可以
cabal install
来自源目录。
Cabal-install经常受到批评:它的本地安装很容易失去同步,然后你就会遇到奇怪的依赖冲突,需要重建很多东西。我从来没有发现这个那么多的问题,无论如何这已经在最近的Cabal中通过Nix-style builds得到了解决,它永远不会产生冲突。