使 OPAM 在 MacOS X 下与系统编译器一起工作
making OPAM work with system compiler under MacOS X
我正在尝试在 MacOS 下对 OPAM 进行非常基本的安装。使用 macports
我安装了以下软件包:
- opam @1.2.0
- ocaml-findlib @1.5.5
- ocaml-camlp4 @4.02.0.1_1
当我做 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。
我不确定您的安装出了什么问题,也许您不应该安装 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`
命令。
我正在尝试在 MacOS 下对 OPAM 进行非常基本的安装。使用 macports 我安装了以下软件包:
- opam @1.2.0
- ocaml-findlib @1.5.5
- ocaml-camlp4 @4.02.0.1_1
当我做 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。
我不确定您的安装出了什么问题,也许您不应该安装 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`
命令。