Заставить OPAM работать с системным компилятором под MacOS X
Я пытаюсь сделать очень простую установку OPAM под MacOS. Используя macports, я установил следующие пакеты:
- опам @ 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)
Затем я попытался установить '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`
команда.