使用 nix 进行堆栈构建期间缺少 C 库错误

Missing C library error during stack build with nix

在我的项目中,我使用的库依赖于两个 C 包:sqlite3libsqlite3-dev。我使用 apt-get install 安装它们,然后使用 stack build 构建项目,一切正常。

但是,stack build 在与 nix 一起使用时失败,并显示错误消息“* 缺少 C 库:sqlite3”。我知道 nix 环境是孤立的,我必须在那里安装它。我尝试使用 nix-env -i sqlite3 安装它,但它 returns error: selector ‘sqlite3’ matches no derivations。它看起来在频道中丢失了(使用 nixpkgs-unstable)。

有什么方法可以使用通道中缺少的带有堆栈和 nix 的 C 库吗?

因为 bug in IHaskell 我正在使用 nix,否则我只用堆栈就好了。

您需要将 sqlite 添加到 stack.yaml 中的包裹部分,如下所示:

nix:
  enable: false
  packages:
    - sqlite

enable: false 在那里,因此 Stack 默认情况下不会尝试使用 Nix 进行构建。如果您想要这种行为,请删除该行。

有一个这样的例子here