问题描述
我正在尝试通过命令行远程机器使用 .ml
命令编译 OCaml make
文件,但它显示了这个错误:
+ ocamlfind ocamlc -c -package xmlm -package unix -o pms.cmo pms.ml
ocamlfind: Package `xmlm' not found
Command exited with code 2.
Hint: Recursive traversal of subdirectories was not enabled for this build,as the working directory does not look like an ocamlbuild project (no
'_tags' or 'myocamlbuild.ml' file). If you have modules in subdirectories,you should add the option "-r" or create an empty '_tags' file.
To enable recursive traversal for some subdirectories only,you can use the
following '_tags' file:
true: -traverse
<dir1> or <dir2>: traverse
Compilation unsuccessful after building 6 targets (5 cached) in 00:00:00.
Makefile:10 : la recette pour la cible « native » a échouée
make: *** [native] Erreur 10
我尝试使用此命令导出环境:
eval $(/usr/bin/opam config env --root=/path/Ocaml/opam-ocaml-4.04-strech)
但我也有这个错误:
# opam-version 1.2.2
# os linux
File /p/opas/src/Ocaml/opam-ocaml-4.04-strech/config does not exist
有什么帮助吗?!! 谢谢
解决方法
要通过 opam 提供软件包(假设 opam 已正确安装和配置),您需要:
- 安装软件包
- 激活您的 opam
要安装名为 foo 的软件包,请在您的 shell 中执行以下命令
opam install foo
要激活您的 opam 安装(启用搜索路径),请发出以下命令
eval $(opam config env)
或者,使用现代 opam(即 2.x 版)只需 eval $(opam env)
在此之前,您需要正确初始化您的 opam 安装,即安装编译器(或使用系统编译器)和基础包。这是通过 opam init
命令在您的家中创建 opam 管理的子目录来完成的,例如,使用(按照今天的标准是旧的)OCaml 4.04.0 版,您可以像这样初始化它
opam init --comp=4.04.0
初始化完成后,不要忘记通过 eval $(opam config env)
激活它,现在您可以安装软件包了。
最后,您使用的 opam
版本已过时且很久以前已弃用,因此它没有接收更新,并且此版本可以理解的存储库已冻结且不再更新。您确实需要将您的 opam 更新到 2.x 版本。请按照opam installation instructions获取最新版本。