2016-11-30 167 views
4

如何使用opam(或其他软件包管理器)安装特定版本的ocaml编译器(和兼容软件包)?如何使用opam安装特定版本的ocaml编译器

我快速浏览了opam文档,但没有找到相关信息。

我需要ocaml编译器(最好是本机代码编译器)来构建一致性文件同步软件。我需要使用相同版本的ocaml在两台机器上建立一致性,否则一致发出错误并放弃其职责(yiiii!)。

我从焦油球试图建设ocaml的版本4.04.0,然后用它建立统一,但在机器的一个统一的构建与错误消息失败,

make[1]: Entering directory '/home/norio/Downloads/unison/unison-2.48.4_expand/src' 
ocamlc -o mkProjectInfo unix.cma str.cma mkProjectInfo.ml 
File "mkProjectInfo.ml", line 1: 
Error: Error while linking /home/norio/Downloads/unison/ocaml_for_unison/lib/ocaml/unix.cma(Unix): 
The external function `unix_has_symlink' is not available 
if [ -f `which etags` ]; then \ 
    etags *.mli */*.mli *.ml */*.ml */*.m *.c */*.c *.txt \ 
      ; fi 
make[1]: Leaving directory '/home/norio/Downloads/unison/unison-2.48.4_expand/src' 

我不我希望为探索unix_has_symlink函数而奋斗,并致力于探索图书馆依赖的沼泽,在这个沼泽中,许多开发人员在文明来临之前就已经失败了,并且包管理者被发明出来。

有没有类似的, opam install ocamlc-4.04opam install all-packages


补遗

unix_has_symlink左右正在运行Linux Mint的18肉桂64位机器上观察到的错误消息。这个函数是一些unix/linux库的一部分,而不是ocaml包吗?

+0

你介意我问有关你得到这个错误的机器上的操作系统的详细信息?我认为'unix_has_symlink'是一个非常标准的Unix事物。 –

+0

@MikePierce感谢您的评论。我在原帖中添加了信息。 – norio

+0

这是一个糟糕的解决方案,但它看起来像调用'unix_has_symlink'的otherlib是新的并且不在旧版本的OCaml中(不是OCaml 4.01.0)。所以如果这个问题没有得到解决,你可以安装一个旧版本。 :/ –

回答

8

要切换到编译器的特定版本不

opam switch <compiler-version> 

例如,

opam switch 4.03.0 

要开始使用特定版本,即,当你第一次安装OPAM,只是做

opam init --compiler=<version> 

例如,

opam init --compiler=4.03.0 

要列出可用的版本做

opam switch 

要看到更多的,做

opam switch -a 
相关问题