Заставить OPAM работать с системным компилятором под MacOS X

Я пытаюсь сделать очень простую установку OPAM под MacOS. Используя macports, я установил следующие пакеты:

  1. опам @ 1.2.0
  2. ocaml-findlib @ 1.5.5
  3. ocaml-camlp4 @ 4.02.0.1_1

когда я сделал opam init (не как root, так как он нужен только для одного пользователя).opam switch показывает, что я использую системный компилятор:

system C system Системный компилятор (4.02.1)

Затем я попытался установить 'lwt' через opam, но он наполовину потерпел неудачу с ошибками:

# 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

Я пробовал перед установкой компилятора OCAML и CAMLP через OPAM, и в этом случае это работает, но меня беспокоит, что у меня есть две установки компилятора для одной и той же версии. Я бы предпочел использовать системный компилятор OCAML и CAMLP, если это возможно.

1 ответ

Решение

Я не уверен, что идет не так в вашей установке, может быть, вам не следует устанавливать 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 и начать с нуля. А также, я надеюсь, что вы не забыли активировать свой опам магическим путем:

$ eval `opam config env`

команда.

Другие вопросы по тегам