6

我决定试一试。我已经安装了它并用它来安装最新版本的 ghc。我已经使用堆栈安装了一些软件包,但是这些软件包对 ghc 不可见,当我使用 ghc-pkg 列出软件包时,我看到我通过堆栈安装的软件包不存在。为什么是这样?我是否误解了堆栈的目的?

4

1 回答 1

8

Stack 从不接触全局包数据库。它使用分层数据库方法

  1. 全球数据库 - 原封不动
  2. 堆栈快照中的包被安装到快照数据库中
  3. 每个项目在本地安装其他包

因此,大多数包都安装在快照数据库中,而不是污染全局数据库,因此可以共享大多数包。由于堆栈快照中的包是兼容的(即总是一起编译),我们不会遇到Cabal hell

您可以使用stack ghcistack ghc运行配置了包数据库的相应命令。

更准确的解释在堆栈 wiki

于 2015-07-13T20:55:38.443 回答