Nix:安装 ssreflect

Nix: installing ssreflect

我正在使用 Coq(版本 8.5-6),安装了 Nix。我想安装 ssreflect,最好也安装 Nix。我找到的关于此的唯一信息是 。但是,这与安装 ssreflect 无关,只是试用一下。尽管如此,我还是试着尝试了一下,但最终收到了数百条警告(关于各种 .v.ml4 文件的内容)并且等不及进程结束。一个相当典型的警告如下所示:

File "./algebra/ssralg.v", line 856, characters 0-39: Warning: Implicit Arguments is deprecated; use Arguments instead

所以问题是:我究竟如何安装 ssreflect w/ Nix?

编辑:阅读 ejgallego 的评论后,似乎无法安装带有 Nix 的 ssreflect -- 尤其是。如果只想安装 ssreflect w/out 其他模块(鳍组、代数等)。所以我也有以下问题:

make install 安装 ssreflect 是否可以使用 Nix 安装的 Coq?

您需要注意以下几点:

  • Nix 是一个基于源代码的包管理器,带有二进制缓存。许多软件包是预构建的,可以在二进制缓存中使用,因此它们的安装不会花费很长时间;一些包(特别是开发库)不是预构建的,Nix 在安装它们时需要花费一些时间来编译它们。请耐心等待:您只需要等待第一次完整编译(是的,math-comp 在编译时会发出很多警告);下一次,该软件包将在您当地的 Nix 商店中提供。

  • 由于OPAM也是基于源码的,用OPAM代替Nix不会让你节省时间。您不能将安装了 Nix 的 Coq 与安装了 OPAM 的 SSReflect 混为一谈,因为后者会将前者作为 OPAM 依赖项。

  • Nix 使用库的方法不是安装它们,而是使用 nix-shell 加载它们。 nix-shell 将 "install" 库并为您设置一些环境变量(例如 $COQPATH 在这种情况下)。

  • 您也可以使用 Nix 安装的 Coq 自己从源代码编译软件包,但您不能 运行 make install 因为这会尝试在安装 SSReflect 的同一位置安装Coq 已安装,但 Nix 商店是不可更改的。相反,您可以跳过此步骤,并手动设置 $COQPATH

  • 确实,完整的math-comp的编译需要很长时间。有一个更轻量的 Coq ssreflect 包。您可以使用:

    nix-shell -p coqPackages_8_6.ssreflect