Как установить определенную версию ocaml-компилятора (и совместимых пакетов) с помощью opam (или другого оператора)?Как установить определенную версию ocaml-компилятора с opam
Я быстро просмотрел документацию по opam, но я не нашел соответствующую информацию.
Мне нужен ocaml-компилятор (желательно нативный компилятор кода) для создания унисона, программного обеспечения для синхронизации файлов. Мне нужно построить унисон на двух машинах, используя ту же версию ocaml, или иначе унисон испускает ошибку и отменяет свой долг (yiiii!).
Я попытался здание OCaml версии 4.04.0 от смоляного шара, а затем использовать его для создания унисона, но на одном из машины сборки унисона потерпела неудачу с сообщением об ошибке,
make[1]: Entering directory '/home/norio/Downloads/unison/unison-2.48.4_expand/src'
ocamlc -o mkProjectInfo unix.cma str.cma mkProjectInfo.ml
File "mkProjectInfo.ml", line 1:
Error: Error while linking /home/norio/Downloads/unison/ocaml_for_unison/lib/ocaml/unix.cma(Unix):
The external function `unix_has_symlink' is not available
if [ -f `which etags` ]; then \
etags *.mli */*.mli *.ml */*.ml */*.m *.c */*.c *.txt \
; fi
make[1]: Leaving directory '/home/norio/Downloads/unison/unison-2.48.4_expand/src'
Я не» я хочу отправиться на поиски unix_has_symlink
и посвятить себя изучению болота зависимостей библиотек, где многие разработчики упали до того, как появилась цивилизация, и были разработаны администраторы пакетов.
Есть ли что-нибудь подобное, opam install ocamlc-4.04
и opam install all-packages
?
Добавление
сообщение об ошибке о unix_has_symlink
наблюдалась на машине под управлением Linux Mint 18 Cinnamon 64 бит. Является ли эта функция частью некоторой библиотеки unix/linux, а не ocaml-пакета?
Вы не возражаете, если я спрошу подробности о ОС на машине, что вы получаете эту ошибку? Я думаю, что 'unix_has_symlink' - довольно стандартная штука Unix. –
@MikePierce Спасибо за ваш комментарий. Я добавил информацию в исходное сообщение. – norio
Это ужасное решение, но похоже, что otherlib, вызывающий 'unix_has_symlink', является новым и не был в более старых версиях OCaml (не OCaml 4.01.0). Таким образом, вы можете установить старую версию, если это не будет разрешено. :/ –