刚开始使用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初学者错误还是这是怎么回事?
答案 0 :(得分:1)
Nix与“ apt”之类的软件包管理器有很大不同。派生工具(类似于程序包)被设计为在隔离的环境中构建,在该环境中,派生工具负责通过引用其他派生工具提供自己的依赖关系。因此,您无需显式安装任何程序即可构建软件包。
还要注意,尽管Nixpkgs使用Cabal库来构建Haskell软件包,但通过Nix安装软件包与使用cabal-install进行安装却大不相同。实际上,它更接近于Stack,因为Nixpkgs基于堆栈定义了haskellPackages
,并且避免了阴谋式的依赖性解析。但是,它确实允许您使用Cabal求解器来检查依赖项是否与Cabal文件中指定的版本匹配。可以使用Nixpkgs中的doJailbreak
功能禁用此检查。
我认为我们不需要研究Nixpkgs中Haskell包装的细节,因为您应该能够从nixos-18.09
通道中获得预先构建的darcs。 nixos-unstable
中的Nix表达式会准确生成您的错误消息。
我建议您使用最新的发行渠道nixos-18.09
,因为nixos-unstable
会定期中断。请参阅Nix手册以获取changing your channel configuration.