【问题标题】:Opam / findlib warning "... has multiple definitions"Opam / findlib 警告“......有多个定义”
【发布时间】:2014-05-19 10:57:39
【问题描述】:

我在我的主目录中有一个 opam 的本地安装和一个 ocaml 编译器和几个库的 (fedora) 软件包安装。

在任何项目中运行 ocamlbuild 命令都会产生很多警告:

findlib: [WARNING] Package dynlink has multiple definitions in /home/choeger/.opam/system/lib/dynlink/META, /usr/lib64/ocaml/dynlink/META
findlib: [WARNING] Package bigarray has multiple definitions in /home/choeger/.opam/system/lib/bigarray/META, /usr/lib64/ocaml/bigarray/META
findlib: [WARNING] Package unix has multiple definitions in /home/choeger/.opam/system/lib/unix/META, /usr/lib64/ocaml/unix/META
findlib: [WARNING] Package camlp4 has multiple definitions in /home/choeger/.opam/system/lib/camlp4/META, /usr/lib64/ocaml/camlp4/META
findlib: [WARNING] Package threads has multiple definitions in /home/choeger/.opam/system/lib/threads/META, /usr/lib64/ocaml/threads/META

我对 opam 的理解是支持不同位置的多个安装,但是这些警告会使任何编译输出变得混乱。

有没有办法告诉 findlib 我知道这些其他安装并且不打印这些无用的警告?

编辑:因为我被要求提供我的 ocamlfind 输出:

choeger@daishi ~ % ocamlfind printconf
    Effective configuration:
    Configuration file:
        /home/choeger/.opam/system/lib/findlib.conf
    Search path:
        /home/choeger/.opam/system/lib
        /usr/lib64/ocaml
    Packages will be installed in/removed from:
        /home/choeger/.opam/system/lib
    META files will be installed in/removed from:
        the corresponding package directories
    The standard library is assumed to reside in:
        /usr/lib64/ocaml
    The ld.conf file can be found here:
        /usr/lib64/ocaml/ld.conf

【问题讨论】:

  • 会不会是因为没有执行,eval `opam config env`? Fedora 包是 OPAM 中定义的System 编译器?
  • 运行此命令后出现同样的错误。
  • ocamlfind printconf的结果是什么?
  • 您通过 OPAM 切换到的任何编译器都会发生这种情况吗?
  • 我的猜测是 OCAMLPATH 正在被设置并且它被附加到那个搜索路径列表中。我不认为这是必要的——我没有设置它。

标签: ocaml opam ocamlfind


【解决方案1】:

我刚刚找到了问题的解决方案:

 sudo yum remove ocaml-findlib

显然,这个包附带了所有那些双重定义的 ocaml 库。我仍然认为 opam 应该能够处理这种情况(IMO 更具体的包管理器应该总是对更不具体的安装敏感),但是 opam 还没有被 Fedora 打包,所以应该预料到这样的事情。至少烦人的警告消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    相关资源
    最近更新 更多