Не удалось установить OCaml на macOS Mac M1
Я установил Merlin 6 месяцев назад, чтобы иметь возможность скомпилировать Ocaml, и у меня не было проблем. Я недавно обновился, чтобы обновить все, но не удалось заставить пакет работать.
Когда я пытаюсь переустановить его, я получаю это сообщение об ошибке (opam install -y merlin):
[coq-released] synchronised from https://coq.inria.fr/opam/released
[default] no changes from https://opam.ocaml.org
The following actions will be performed:
∗ install ocaml-base-compiler 4.12.0 [required by ocaml]
∗ install ocaml-config 2 [required by ocaml]
∗ install ocaml 4.12.0 [required by merlin]
∗ install ocamlfind 1.9.3 [required by dot-merlin-reader]
∗ install dune 2.9.3 [required by merlin]
∗ install result 1.5 [required by merlin]
∗ install easy-format 1.3.2 [required by yojson]
∗ install csexp 1.5.1 [required by merlin]
∗ install cppo 1.6.8 [required by yojson]
∗ install biniou 1.2.1 [required by yojson]
∗ install yojson 1.7.0 [required by merlin]
∗ install dot-merlin-reader 4.1 [required by merlin]
∗ install merlin 4.4-412
===== ∗ 13 =====
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><>
⬇ retrieved biniou.1.2.1 (cached)
⬇ retrieved csexp.1.5.1 (cached)
⬇ retrieved dot-merlin-reader.4.1 (cached)
⬇ retrieved cppo.1.6.8 (cached)
⬇ retrieved easy-format.1.3.2 (cached)
⬇ retrieved dune.2.9.3 (cached)
⬇ retrieved ocaml-base-compiler.4.12.0 (cached)
⬇ retrieved result.1.5 (cached)
⬇ retrieved ocamlfind.1.9.3 (cached)
⬇ retrieved yojson.1.7.0 (cached)
⬇ retrieved merlin.4.4-412 (cached)
[ERROR] The installation of ocaml-base-compiler failed at "make install".
#=== ERROR while installing ocaml-base-compiler.4.12.0 ========================#
# context 2.1.2 | macos/arm64 | | https://opam.ocaml.org#71d8d30e
# path ~/.opam/4.12.0/.opam-switch/build/ocaml-base-compiler.4.12.0
# command ~/.opam/opam-init/hooks/sandbox.sh install make install
# exit-code 2
# env-file ~/.opam/log/ocaml-base-compiler-11755-86d59b.env
# output-file ~/.opam/log/ocaml-base-compiler-11755-86d59b.out
### output ###
# if test -f ocamlnat ; then \
# [...]
# "/Users/theosouchon/.opam/4.12.0/lib/ocaml"; \
# /usr/bin/install -c -m 644 \
# toplevel/opttopstart.cmx toplevel/opttopstart.o \
# "/Users/theosouchon/.opam/4.12.0/lib/ocaml/compiler-libs"; \
# fi
# cd "/Users/theosouchon/.opam/4.12.0/lib/ocaml/compiler-libs" && \
# ranlib ocamlcommon.a ocamlbytecomp.a ocamloptcomp.a
# ranlib: error: exactly one archive should be specified
# make[2]: *** [installoptopt] Error 1
# make[1]: *** [installopt] Error 2
# make: *** [install] Error 2
Если у вас когда-нибудь появится идея решить эту проблему, мне интересно
Большое спасибо, Тео Сушон.
1 ответ
Проблема, которая у вас есть, не имеет ничего общего с мерлином как таковым. Проблема в том, что вы не можете собрать компилятор с помощью набора инструментов llvm, который по умолчанию используется на вашей машине.
Версия инструмента GNU может принимать несколько аргументов архива, в отличие от версии llvm, которая не работает более чем с одним архивом.
Общий ответ заключается в том, что вам следует установить и выбрать цепочку инструментов GNU для сборки OCaml. Я бы начал свое расследование с бега
which ranlib
чтобы понять, почему у вас сломан ПУТЬ. Также возможно, что вы использовали
brew
чтобы установить набор инструментов llvm, затем используйте
brew unlink
отменить это. В конце концов, вы хотите
ranlib
на вашем пути, что для
ranlib --version
отпечатки
GNU ranlib
, нет
LLVM
.
Кроме того, в macOS есть инструмент под названием
xcode-select
который позволяет вам устанавливать и выбирать наборы инструментов. У меня нет последней версии macOS, поэтому я не уверен, но вы можете попробовать запустить
xcode-select --install
установить набор инструментов и использовать
xcode-select --switch
чтобы выбрать подходящий.
С учетом всего сказанного, средства отслеживания проблем OCaml и opam гораздо лучше подходят для решения таких проблем, чем SO.