ocamlfind не видит установленный пакет
Я хотел скомпилировать свой проект с помощью команды:
ocamlfind ocamlopt -package ocamlnet -package batteries -package unix -linkpkg oauth.ml
но я получаю следующую ошибку:
ocamlfind: Package `ocamlnet' not found
make: *** [oauth.cmi] Error 2
После некоторых исследований этой проблемы я прочитал, что могут быть проблемы с пакетами, установленными через opam, и пакетами, установленными перед установкой opam (в данном случае с ocamlfind), поэтому я попытался проверить это и застрять, потому что ocamlfind установлен через opam. Кто-нибудь знает, что я могу попытаться сделать, чтобы решить эту проблему?
$ which ocamlfind
/home/adam/.opam/4.00.1/bin/ocamlfind
$ opam list
Installed packages for 4.00.1:
[...]
ocamlfind 1.4.0 A library manager for OCaml
[...]
Заранее спасибо.
2 ответа
Сделать:
eval $(opam config env)
Это должно решить проблему.
# Редактировать 1:
Если это все еще не работает, удалите каталог
/home/adam/.opam/4.00.1
и попробуйте еще раз.
Я делаю ответ из-за ограничения в комментариях и частичных результатов, которые я сделал. Вот результат 'grep -r 'ocamlnet' *' в каталоге '~/.opam': http://pastebin.com/8cJqMXDY, взглянув на строки 1-90, мы можем заключить, что на самом деле библиотеки ocamlnet нет все (или я ищу это не в том месте - но, как я написал в комментарии, все было установлено с использованием opam - я был бы рад услышать некоторые мнения по этому вопросу). Эти подозрения могут быть частично подтверждены двумя способами:
- фактически в строках 1-90 у нас есть все двоичные файлы компонентов ocamlnet ( http://projects.camlcity.org/projects/dl/ocamlnet-3.7.3/doc/html-main/index.html).
Строки 90-* не похожи на некоторые файлы, необходимые для управления этим пакетом с помощью opam. Например
~/.opam/repo/default/packages/ocamlnet$ tree -r . . ├── ocamlnet.3.7.3 │ ├── url │ ├── opam │ ├── files │ │ └── ocamlnet.install │ └── descr ├── ocamlnet.3.6.5 │ ├── url │ ├── opam │ ├── files │ │ ├── ocamlnet.install │ │ ├── netpop.patch │ │ ├── nethttpd_types.patch │ │ └── cloexec.patch │ └── descr ├── ocamlnet.3.6.3 │ ├── url │ ├── opam │ ├── files │ │ └── ocamlnet.install │ └── descr ├── ocamlnet.3.6.0 │ ├── url │ ├── opam │ ├── files │ │ ├── ocamlnet-ocaml4.diff │ │ └── ocamlnet.install │ └── descr ├── ocamlnet.3.5.1 │ ├── url │ ├── opam │ ├── files │ │ └── ocamlnet.install │ └── descr └── ocamlnet.3.2.1 ├── url ├── opam ├── files │ └── ocamlnet.install └── descr
Я не обладаю достаточно большими знаниями, чтобы углубиться в это, но мне кажется, что ocamlnet станет просто ярлыком для нескольких других пакетов, используемых opam. Тем более что после смены
-package ocamlnet
точный модуль, который я использую
-package netstring
все скомпилировано нормально. Я все еще открыт для любых других решений или объяснений для любопытного случая пакета ocamlnet (и подсказок Майкла) B).