Opam switch install无法安装旧版本的ocaml(3.08.3)

时间:2016-04-01 08:11:16

标签: ocaml resolve opam

我正在用ocaml和opam做一些工作。 我需要版本3.08.3的ocaml,所以我尝试通过opam安装此版本。 opam switch install 3.08.3 我希望上面的命令会成功安装它。但它不可能。 opam-switch无法安装3. *版本的ocaml,并出现以下错误消息。 [ERROR] Could not resolve set of base packages 我到处搜索这个消息,但我无法得到任何提示。有没有人有解决这个问题的线索?感谢。

1 个答案:

答案 0 :(得分:2)

compilers/3.08.3/3.08.3/3.08.3.comp,描述该编译器版本的基础包的文件告诉:

packages: [
  "base-unix"
  "base-bigarray"
  "base-threads"
  "base-ocamlbuild"
]

因此需要base-unixbase-bigarraybase-threadsbase-ocamlbuild。但是,base-ocamlbuildpackages/base-ocamlbuild/base-ocamlbuild.base/opam的包描述说:

ocaml-version: [>= "3.10" & < "4.03"]

它表示在ocamlbuild之前3.10不可用。实际上,ocamlbuild是从3.10开始引入的。编译器描述文件3.08.3.comp可能有错误。如果您在https://github.com/ocaml/opam-repository/issues处为修复程序提出错误标记,那就太棒了。

对于一种解决方法,我建议手动安装OCaml 3.08,而不是使用OPAM命令:我认为使用OPAM 3.08几乎没有任何好处ocamlbuild不可用,因为大多数OPAM包假设存在ocamlbuild

您还可以使用不含3.08.3.comp的固定"base-ocamlbuild"文件创建自己的OPAM回购副本。有关详细信息,请参阅opam repo的文档。