【发布时间】:2017-11-11 14:41:30
【问题描述】:
我目前正在通过Gabriel's tutorial 处理 Nix 和 Haskell。
在 nix 中有 channels 并且它们包含 (类似于 Stack LTS 版本) 一组精选的 Hackage 包和一个 GHC 编译器。
对于每个 LTS 版本Stackage 显示 GHC 编译器的版本和版本 每个黑客包。在开始使用频道之前,我可以在哪里查找有关 nix 频道的信息?
【问题讨论】:
我目前正在通过Gabriel's tutorial 处理 Nix 和 Haskell。
在 nix 中有 channels 并且它们包含 (类似于 Stack LTS 版本) 一组精选的 Hackage 包和一个 GHC 编译器。
对于每个 LTS 版本Stackage 显示 GHC 编译器的版本和版本 每个黑客包。在开始使用频道之前,我可以在哪里查找有关 nix 频道的信息?
【问题讨论】:
给定一个修订哈希,比如说683c68232e91f76386db979c461d8fbe2a018782,您可以列出来自该修订的所有包
nix-env -qaP -f https://github.com/NixOS/nixpkgs-channels/archive/683c68232e91f76386db979c461d8fbe2a018782.tar.gz
您还可以混合和匹配来自不同版本的软件包。唯一的缺点是没有官方方法可以搜索旧版本的包。
我写了https://lazamar.co.uk/nix-versions 来帮助解决这个问题。它显示了软件包的所有过去版本、它们的派生源以及如何安装它们。
【讨论】:
对于 Haskell 包的版本,我找到了答案:有像 https://raw.githubusercontent.com/NixOS/nixpkgs/release-16.09/pkgs/development/haskell-modules/hackage-packages.nix 这样的文件。这些文件真的不太好用……
编辑
在这个文件中我可以
搜索= "base" 然后我可以找到base 库的版本。
从基础库的版本我可以lookup的GHC版本。
这给出了下表:
newest -> base-4.10.0.0 -> GHC 8.2.1
17.09 -> base-4.10.0.0 -> GHC 8.2.1
17.03 -> base-4.9.1.0 -> GHC 8.0.2
16.09 -> base-4-9.0.0 -> GHC 8.0.1
16.03 -> base-4.8.2.0 -> GHC 7.10.3
15.09 -> base-4.8.2.0 -> GHC 7.10.3
但是更简单的方法会很好......
【讨论】:
ghc 并没有出现在第一页上。但你明白了。)