Nano Hash - криптовалюты, майнинг, программирование

Как установить конкретную версию компилятора ocaml с opam

Как я могу установить конкретную версию компилятора ocaml (и совместимые пакеты) с помощью opam (или другого менеджера пакетов)?

Я быстро просмотрел документацию по оператору связи, но не нашел соответствующей информации.

Мне нужен компилятор ocaml (желательно компилятор нативного кода) для создания unison, программного обеспечения для синхронизации файлов. Мне нужно создать unison на двух машинах, использующих одну и ту же версию ocaml, иначе unison выдаст ошибку и прервет свою работу (yiiii!).

Я попытался собрать ocaml версии 4.04.0 из tar-шарика, а затем использовать его для построения унисона, но на одной из машин сборка унисона завершилась неудачно с сообщением об ошибке,

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 bit. Является ли эта функция частью какой-либо библиотеки unix / linux, а не пакета ocaml?


  • Вы не возражаете, если я спрошу подробности об ОС на машине, на которой вы получаете эту ошибку? Я думаю, что unix_has_symlink - довольно стандартная вещь для Unix. 01.12.2016
  • @MikePierce Спасибо за ваш комментарий. Я добавил информацию в исходный пост. 01.12.2016
  • Это ужасное решение, но похоже, что другая библиотека, вызывающая unix_has_symlink, является новой и отсутствовала в более старых версиях OCaml (не OCaml 4.01.0). Таким образом, вы можете установить старую версию, если проблема не будет устранена. : / 01.12.2016
  • opam init --compiler=4.04.0 следует установить за вас OCaml 4.04.0. 01.12.2016
  • вы пробовали: opam switch create 4.06.0? Надо все сразу переключить и установить. 04.02.2019

Ответы:


1

Чтобы переключиться на ту или иную версию компилятора, выполните

opam switch create <compiler-version>

(Примечание: для старого opam 1.x это было opam switch <compiler-version>)

E.g.,

opam switch create 4.07.0

Или, если вы хотите создать новый новый переключатель, который использует тот же компилятор, что и какой-либо другой переключатель, тогда синтаксис

opam switch create <name> <compiler-version>

E.g.,

opam switch create myproj 4.07.0

Обратите внимание: если <name> - это папка, то будет создан локальный коммутатор, например, opam switch ./myproj 4.07.0 создаст коммутатор непосредственно в папке myproj.

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

opam init --compiler=<version>

E.g.,

opam init --compiler=4.07.0

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

opam switch 

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

opam switch list-available
01.12.2016
  • если у вас нет нужной версии opam switch create 4.06.0 отлично поработал для меня 04.02.2019
  • да, opam изменил свой интерфейс с того времени, поэтому я обновил сообщение, чтобы отразить новейший интерфейс 04.02.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..