如何使用 opam 安装特定版本的 ocaml 编译器
How to install a specific version of ocaml compiler with opam
如何使用 opam(或其他包管理器)安装特定版本的 ocaml 编译器(和兼容包)?
我快速浏览了 opam 文档,但没有找到相关信息。
我需要ocaml编译器(最好是本地代码编译器)来构建unison,一个文件同步软件。我需要在使用相同版本的 ocaml 的两台机器上构建 unison,否则 unison 会发出错误并中止其职责(yiiii!)。
我尝试从 tar 球构建 ocaml 版本 4.04.0,然后使用它来构建 unison,但是在其中一台机器上,unison 的构建失败并显示错误消息
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.04
和 opam install all-packages
?
附录
在机器 运行 Linux Mint 18 Cinnamon 64 位上观察到有关 unix_has_symlink
的错误消息。此函数是某些 unix/linux 库的一部分,而不是 ocaml 包的一部分吗?
要使用特定版本的编译器创建开关,请执行
opam switch create <compiler-version>
(注意:旧的 opam 1.x 是 opam switch <compiler-version>
)
例如,
opam switch create 4.07.0
或者,如果您想创建一个全新的开关,使用与其他开关相同的编译器,则语法为
opam switch create <name> <compiler-version>
例如,
opam switch create myproj 4.07.0
注意,如果<name>
是一个文件夹,那么会创建一个本地开关,例如opam switch ./myproj 4.07.0
会直接在myproj
文件夹中创建一个开关。
要从特定版本开始,即当您第一次安装 opam 时,只需执行
opam init --compiler=<version>
例如,
opam init --compiler=4.07.0
要列出可用版本,请执行
opam switch
要查看更多,请执行
opam switch list-available
要安装编译器的变体,例如带有 flambda 或 spacetime 的编译器,请使用以下通用语法,
opam switch create <switch-name> ocaml-variants.<version>+options <options>...
例如,
opam switch create myswitch ocaml-variants.4.13.0+options ocaml-option-flambda
使用 opam search ocaml-options
获取可用选项的完整列表。可以指定多个选项,例如,
opam switch create myswitch ocaml-variants.4.13.0+options ocaml-option-flambda ocaml-option-spacetime ocaml-option-static
如何使用 opam(或其他包管理器)安装特定版本的 ocaml 编译器(和兼容包)?
我快速浏览了 opam 文档,但没有找到相关信息。
我需要ocaml编译器(最好是本地代码编译器)来构建unison,一个文件同步软件。我需要在使用相同版本的 ocaml 的两台机器上构建 unison,否则 unison 会发出错误并中止其职责(yiiii!)。
我尝试从 tar 球构建 ocaml 版本 4.04.0,然后使用它来构建 unison,但是在其中一台机器上,unison 的构建失败并显示错误消息
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.04
和 opam install all-packages
?
附录
在机器 运行 Linux Mint 18 Cinnamon 64 位上观察到有关 unix_has_symlink
的错误消息。此函数是某些 unix/linux 库的一部分,而不是 ocaml 包的一部分吗?
要使用特定版本的编译器创建开关,请执行
opam switch create <compiler-version>
(注意:旧的 opam 1.x 是 opam switch <compiler-version>
)
例如,
opam switch create 4.07.0
或者,如果您想创建一个全新的开关,使用与其他开关相同的编译器,则语法为
opam switch create <name> <compiler-version>
例如,
opam switch create myproj 4.07.0
注意,如果<name>
是一个文件夹,那么会创建一个本地开关,例如opam switch ./myproj 4.07.0
会直接在myproj
文件夹中创建一个开关。
要从特定版本开始,即当您第一次安装 opam 时,只需执行
opam init --compiler=<version>
例如,
opam init --compiler=4.07.0
要列出可用版本,请执行
opam switch
要查看更多,请执行
opam switch list-available
要安装编译器的变体,例如带有 flambda 或 spacetime 的编译器,请使用以下通用语法,
opam switch create <switch-name> ocaml-variants.<version>+options <options>...
例如,
opam switch create myswitch ocaml-variants.4.13.0+options ocaml-option-flambda
使用 opam search ocaml-options
获取可用选项的完整列表。可以指定多个选项,例如,
opam switch create myswitch ocaml-variants.4.13.0+options ocaml-option-flambda ocaml-option-spacetime ocaml-option-static