为什么不将包添加到 ghc 包数据库中?

Why doesn't stack add packages to the ghc package database?

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

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

  1. 全球数据库 - 未受影响
  2. stackage 快照中的软件包已安装到快照数据库中
  3. 其他包在每个项目本地安装

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

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

更准确的解释在stack wiki