2016-11-30 4 views
4

Как установить определенную версию 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-пакета?

+0

Вы не возражаете, если я спрошу подробности о ОС на машине, что вы получаете эту ошибку? Я думаю, что 'unix_has_symlink' - довольно стандартная штука Unix. –

+0

@MikePierce Спасибо за ваш комментарий. Я добавил информацию в исходное сообщение. – norio

+0

Это ужасное решение, но похоже, что otherlib, вызывающий 'unix_has_symlink', является новым и не был в более старых версиях OCaml (не OCaml 4.01.0). Таким образом, вы можете установить старую версию, если это не будет разрешено. :/ –

ответ

8

Для перехода к конкретной версии компилятора сделать

opam switch <compiler-version> 

Например,

opam switch 4.03.0 

Чтобы начать с определенной версией, т.е. при первой установке opam, просто сделать

opam init --compiler=<version> 

Например,

opam init --compiler=4.03.0 

Чтобы получить список доступных версий сделать

opam switch 

Чтобы увидеть еще больше, делать

opam switch -a 
Смежные вопросы