为什么不将包添加到 ghc 包数据库中?
Why doesn't stack add packages to the ghc package database?
我决定试试堆栈。我已经安装了它并用它来安装最新版本的ghc。我已经使用 stack 安装了一些包,但是这些包对 ghc 不可见,当我使用 ghc-pkg 列出包时,我看到我通过 stack 安装的包不存在。为什么是这样?我是不是误解了堆栈的用途?
Stack 从不接触全局包数据库。它使用分层数据库方法
- 全球数据库 - 未受影响
- stackage 快照中的软件包已安装到快照数据库中
- 其他包在每个项目本地安装
因此大多数包都安装在快照数据库中,而不是污染全局数据库,因此大多数包都可以共享。由于堆栈快照中的包是兼容的(即总是一起编译),我们不会 运行 进入 Cabal hell.
您可以使用 stack ghci
或 stack ghc
到 运行 相应的命令并配置包数据库。
更准确的解释在stack wiki
我决定试试堆栈。我已经安装了它并用它来安装最新版本的ghc。我已经使用 stack 安装了一些包,但是这些包对 ghc 不可见,当我使用 ghc-pkg 列出包时,我看到我通过 stack 安装的包不存在。为什么是这样?我是不是误解了堆栈的用途?
Stack 从不接触全局包数据库。它使用分层数据库方法
- 全球数据库 - 未受影响
- stackage 快照中的软件包已安装到快照数据库中
- 其他包在每个项目本地安装
因此大多数包都安装在快照数据库中,而不是污染全局数据库,因此大多数包都可以共享。由于堆栈快照中的包是兼容的(即总是一起编译),我们不会 运行 进入 Cabal hell.
您可以使用 stack ghci
或 stack ghc
到 运行 相应的命令并配置包数据库。
更准确的解释在stack wiki