编译失败:ocamlfind:找不到包“xmlm”

问题描述

我正在尝试通过命令行远程机器使用 .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

虽然目录中确实存在 config 文件

有什么帮助吗?!! 谢谢

解决方法

要通过 opam 提供软件包(假设 opam 已正确安装和配置),您需要:

  1. 安装软件包
  2. 激活您的 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获取最新版本。