我正在用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
我到处搜索这个消息,但我无法得到任何提示。有没有人有解决这个问题的线索?感谢。
答案 0 :(得分:2)
compilers/3.08.3/3.08.3/3.08.3.comp
,描述该编译器版本的基础包的文件告诉:
packages: [
"base-unix"
"base-bigarray"
"base-threads"
"base-ocamlbuild"
]
因此需要base-unix
,base-bigarray
,base-threads
和base-ocamlbuild
。但是,base-ocamlbuild
,packages/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
的文档。