我在vm上安装了最低版本的nixos,然后安装一些pkg,比如i3、firefox、代码。。。
但是当我想安装haskell的ghc编译器时,我遇到了一个问题
我使用官方网站上的ghcup来安装haskell生态系统它需要一些需求,比如python3、gcc,。。。。,我安装了所有的
我成功安装了ghcup,但当我想安装ghc时发生此错误:
checking for -ar ... no
checkinf for ar ... no
configure: error: cannot find ar in your PATH, no idea how to make a library
我安装了一些类似binutils的pkg,但错误仍然存在。
到目前为止,ghcup在NixOS上不起作用。我确实打开了一个与此相关的上游问题:https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/174
如果你想在Nix上安装ghc,你有几个选项:
- 使用通过nixpkgs提供的:
❯ nix-shell -p ghc
❯ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.10.7
如果您想要GHC版本,而您正在使用的nixpkgs中不存在该版本,则必须使用具有适当版本的修订集。有几种方法可以找到它:
- 检查Nix软件包搜索页面中是否有可用版本:https://search.nixos.org/packages
- 在nix软件包版本中搜索ghc:https://lazamar.co.uk/nix-versions/查询示例:https://lazamar.co.uk/nix-versions/?channel=nixos-19.09&包装=ghc
- 使用nixhub查找正确的修订版:https://www.nixhub.io/
- 使用程绍创建的列表查找版本:https://github.com/TerrorJack/old-ghc-nix
我主要使用上面的第二种方法。假设我想要GHC 8.10.4,我可以从那里的搜索中找到修订集。一旦我有了它,我就创建一个shell.nix
文件,如下所示:
let
pkgs = import (builtins.fetchTarball {
url =
"https://github.com/NixOS/nixpkgs/archive/9986226d5182c368b7be1db1ab2f7488508b5a87.tar.gz";
}) { };
in pkgs.stdenv.mkDerivation {
name = "my-project";
buildInputs = [ pkgs.zlib pkgs.ghc ];
}
然后你可以做以下事情:
$ nix-shell -v
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.10.4
请注意,除了上面使用的nix-shell
之外,您还可以使用其他技术。