Обнаруживает ли Ocaml OPAM ранее установленные пакеты Ocaml?

Я недавно установил OPAM в соответствии с инструкциями, чтобы попробовать, он выглядит хорошо, и я хотел бы его использовать. Однако он не может обнаружить ранее установленные пакеты OCAML, которые я установил вручную, прежде чем я решу попробовать OPAM.

Первое, что OPAM хочет сделать для установки любого пакета сейчас, - это установить ocamlfind. Запрос информации о пакетах, которые я установил вручную, не означает, что они уже установлены. Сюда входит ocamlfind.

Я боюсь что-либо делать, потому что понятия не имею, какой эффект может иметь установка другого пакета. OPAM, по крайней мере, перезапишет или переустановит ocamlfind. Сразит ли это мой существующий ocamlfind и его знания обо всех пакетах, которые я уже установил вручную, и мою способность их использовать? Я не хочу заново все переустанавливать. Я искал и искал, но не могу найти никакой документации или сообщений на форуме по этой конкретной теме, и я точно не знаю, как работает ocamlfind под капотом.

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


person paul    schedule 27.05.2013    source источник


Ответы (1)


OPAM предоставляет одну (или несколько) установок OCaml независимо от установки по умолчанию, то есть компилятора или библиотек, которые обычно находятся в /usr/bin, /usr/lib/ocaml или /usr/local/blahblah. Следовательно, ваша система OCaml, установленная вручную, и система на основе OPAM могут сосуществовать. Вся установка OPAM выполняется под $HOME/.opam/switch/ (по умолчанию переключатель = system), включая двоичный исполняемый файл. Итак, в вашем случае OCamlFind не был перезаписан OPAM. OPAM установил еще один OCamlFind в другой каталог.

Используемая система может быть "переключена" переменными среды. «opam config env» показывает переменные, которые вы должны объявить, чтобы использовать текущий «переключатель». Если вы хотите использовать установку по умолчанию, убедитесь, что эти переменные не относятся к OPAM.

Чтобы жить с вашими вручную скомпилированными библиотеками и пакетами OPAM, перекомпилируйте и переустановите их в среде с переключением OPAM. Обратите внимание, что OPAM может перезаписать ваши пакеты здесь. Например, если вы устанавливаете ocamlfind вручную в «системный» каталог OPAM, то при вводе «opam install ocamlfind» OPAM перезаписывает вашу установку OCamlFind. (О, кстати, я думаю, что OPAM трудно предупредить нас, когда он перезаписывает существующую установку здесь, поскольку пакет OPAM не имеет информации о том, какие пакеты OCamlFind он устанавливает).

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

Если в будущем вы получите какие-либо пожелания в отношении OPAM, опубликуйте их на странице https://github.com/OCamlPro/opam.

person camlspotter    schedule 27.05.2013