使OPAM在MacOS X下使用系统编译器

时间:2015-03-22 18:15:12

标签: macos ocaml opam camlp4 lwt

我正在尝试在MacOS下进行非常基本的OPAM安装。使用macports 我安装了以下软件包:

  1. opam @ 1.2.0
  2. ocaml-findlib @ 1.5.5
  3. ocaml-camlp4 @ 4.02.0.1_1
  4. 当我做opam init时(不是root用户,因为我只需要一个用户)。 opam switch告诉我我正在使用系统编译器:

    system C system系统编译器(4.02.1)

    然后我尝试通过opam安装'lwt'它失败了一半:

    # ocamlfind: Package `camlp4' not found
    # W: Failure("Command ''/Users/lord/.opam/system/bin/ocamlfind' query -format %d camlp4 > '/var/folders/hh/h6kt24208xj44z0059_xd9rh0000gn/T/oasis-ca8248.txt'' terminated with error code 2")
    

    这是我的opam list

    # Installed packages for system:
    base-bigarray           base  Bigarray library distributed with the OCaml compil
    base-threads            base  Threads library distributed with the OCaml compile
    base-unix               base  Unix library distributed with the OCaml compiler
    camlp4         4.02.1+system  Camlp4 is a system for writing extensible parsers
    ocamlfind              1.5.5  A library manager for OCaml
    

    我注意到它有自己的ocamlfind,而不是系统一。也许这就是造成错误的原因:

    $ /Users/lord/.opam/system/bin/ocamlfind query -format %d camlp4
    ocamlfind: Package `camlp4' not found
    
    $ /opt/local/bin/ocamlfind query -format %d camlp4
    /opt/local/lib/ocaml/camlp4
    

    我在通过OPAM安装OCAML编译器和CAMLP之前尝试过,这种情况下它可行,但令我困扰的是我为同一版本安装了两个编译器。如果可能的话,我宁愿使用系统OCAML编译器和CAMLP。

1 个答案:

答案 0 :(得分:3)

我不确定您的安装出了什么问题,也许您不应该安装ocaml-findlib,因为它们可能会以某种方式发生冲突。我稍后会看一下。目前,以下工作

$ sudo port install ocaml ocaml-camlp4 opam
$ opam init
$ opam install ocamlfind

这将导致工作安装:

$ ocamlfind query camlp4
/opt/local/lib/ocaml/camlp4
$ which ocamlfind
/Users/ivg/.opam/system/bin/ocamlfind

更新

我已经检查了我的假设,即系统的ocamlfind可能与opam的系统冲突。它没有得到任何证据。即使你安装它们都一切正常:

$ sudo port install ocaml-findlib
$ opam init

系统的ocamlfind效果非常好:

$ ocamlfind query camlp4
/opt/local/lib/ocaml/camlp4
$ which ocamlfind
/opt/local/bin/ocamlfind

现在让我们尝试从opam安装它:

$ opam install ocamlfind

它也很好用:

$ ocamlfind query camlp4
/opt/local/lib/ocaml/camlp4
$ which ocamlfind
/Users/ivg/.opam/system/bin/ocamlfind

并且

$ opam install lwt

也很好。

所以,也许你向错误的方向移动,你可以删除你的~/.opam并从头开始。而且,我希望你不要忘记用魔法激活你的opam:

$ eval `opam config env`

命令。