考虑:
$ 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,所以我无法向您解释您感兴趣的特定标志,但希望这能有所帮助。
请记住,您可能必须安装所需的所有必要软件包,即使它们已安装在以前的交换机中。我忽略了是否可以采取不同的做法。