Skip to content

Пакетный менеджер OPAM

OCaml Package Manager (или просто OPAM) — пакетный менеджер для OCaml, управляющий пакетами в их исходном виде (в виде исходников), является частью OCaml Platform, как и Dune.

Через него можно поставить компилятор и всё остальное.

Опыт использования OPAM

Документация

Обновление пакетов

sh
$ opam update
$ opam upgrade

Могут возникать ошибки, из-за конфликта версий, но тут остается страдать.

Установка зависимостей проекта

Если проект имеет OPAM-манифест, то вы можете установить зависимости прописанные в нём, используя следующую команду:

sh
$ opam install . --deps-only

Окружения (они же switches)

OPAM хранит компилятор и пакеты в окружениях, называемые switch. При стандартной установки у вас должно появиться глобальное default окружение.

Работа с окружениями

Для работы с окружениями используйте команды из подгруппы opam switch.

Локального окружения для проекта

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

sh
$ opam switch create . --deps-only

Публикация пакета

Смотрите тут.

Зависимости

pin-depends

Если вы хотите запинить зависимость в вашем пакете, то вы должно прописать поле pin-depends в ваш .opam манифест (для Dune смотрите .opam.template).

Пример добавления библиотеки vkashka с Git репозитория:

opam
pin-depends: [
  [ "vkashka.dev" "git+https://github.com/dx3mod/vkashka.git" ]
]

Оф. документация: https://opam.ocaml.org/doc/Manual.html#opamfield-pin-depends.