如何以简单的方式切换opam编译器?什么是--set切换标志



考虑:

$ opam switch set ocaml-variants.4.07.1+flambda_coq-serapi.8.11.0+0.11.1
# Run eval $(opam env --switch=ocaml-variants.4.07.1+flambda_coq-serapi.8.11.0+0.11.1) to update the current shell environment
$ eval $(opam env --switch=ocaml-variants.4.07.1+flambda_coq-serapi.8.11.0+0.11.1)
[NOTE] To make opam select the switch ocaml-variants.4.07.1+flambda_coq-serapi.8.11.0+0.11.1 in the current shell, add --set-switch or set OPAMSWITCH

但它根本没有告诉我--set-switch应该去哪里。为什么?哪里

相关:

  • OPAM中的交换机环境

很难理解为什么它会给你一个命令,但这个命令却不起作用。如果你浏览opam手册页,它会显示(opam开关):

opam开关集全局设置默认开关。如果启用了shell挂钩,则会将当前shell会话与该交换机同步,除非当前目录是本地交换机,而使用该本地交换机。您可以始终使用eval$(opam-env--switch=switch--set switch)显式指定开关,这将覆盖shell钩子。

如果你这样做,它就会起作用:

eval $(opam env --switch=ocaml-variants.4.07.1+flambda_coq-serapi.8.11.0+0.11.1 --set-switch)

参见:

$ opam switch
#  switch                                                  compiler                       description
coq-8.10                                                ocaml-base-compiler.4.07.1     coq-8.10
default                                                 ocaml.4.14.0                   default
→  ocaml-variants.4.07.1+flambda_coq-serapi.8.11.0+0.11.1  ocaml-variants.4.07.1+flambda  ocaml-variants.4.07.1+flambda_coq-serapi.8.11.0+0.11.1

这真是令人讨厌和困惑。

我也遇到了类似的问题。一个新的OCaml编译器发布了,我想更改我正在使用的编译器。

您可以使用$ opam switch list列出可用的。我有一个默认的开关,如果您按照官方页面(名为default)中的安装说明进行操作,就会生成它。

然后,我用5.1.0版本的编译器创建了另一个开关,使用:$ opam switch create 5.1.0。我没有提供新开关的名称,只是我想要的编译器版本。因此,开关名称变成了编译器版本,即5.1.0。

现在列出可用的交换机,并通过写入所需交换机的相应名称来选择新交换机:$ opam switch set 5.1.0

此外,阅读switch选项的文档也会有所帮助。通过在终端$ opam switch --help中写入进行尝试。这是我为分配一个不同的开关所做的。

我刚开始使用OCaml,所以我无法向您解释您感兴趣的特定标志,但希望这能有所帮助。

请记住,您可能必须安装所需的所有必要软件包,即使它们已安装在以前的交换机中。我忽略了是否可以采取不同的做法。

最新更新