1

刚开始使用 Nix(2.2.1 版),在安装 darcs(2.14.1 版)时遇到了第一个问题:我收到以下错误消息(前面是调用堆栈):

Setup: Encountered missing dependencies:
base >=4.9 && <4.12,
network >=2.6 && <2.8,
stm >=2.1 && <2.5,
zip-archive ==0.3.*

我安装了 haskell 工具堆栈以及全局 ghc(尽管我认为构建 darcs 不需要两者)。

使用“apt”安装 darcs 也没有问题

我是在犯一个经典的 nix 初学者错误还是这里发生了什么?

4

1 回答 1

1

Nix 与像“apt”这样的包管理器非常不同。派生(类似于包)被设计为在隔离环境中构建,派生负责通过引用其他派生来提供自己的依赖项。因此,您不需要显式安装任何东西来构建包。

另请注意,尽管 Nixpkgs 使用 Cabal 库来构建 Haskell 包,但通过 Nix 安装包与使用 cabal-install 安装完全不同。事实上,它更接近于 Stack,因为 Nixpkgs 定义了它haskellPackages基于堆栈,并且它避免了 cabal 风格的依赖解析。但是,它确实允许您使用 Cabal 求解器来检查依赖项是否与 cabal 文件中指定的版本匹配。可以使用doJailbreakNixpkgs 中的功能禁用此检查。

不过,我认为我们不需要深入了解 Nixpkgs 中 Haskell 打包的细节,因为您应该能够从nixos-18.09频道中获得预先构建的 darcs。来自 的 Nix 表达式nixos-unstable完全生成了您的错误消息。

我建议您使用最新的发布频道nixos-18.09,因为nixos-unstable会定期中断。请参阅 Nix 手册以更改您的频道配置。

于 2019-01-15T18:39:27.570 回答