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. фактически в строках 1-90 у нас есть все двоичные файлы компонентов ocamlnet ( http://projects.camlcity.org/projects/dl/ocamlnet-3.7.3/doc/html-main/index.html).
  2. Строки 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).

Другие вопросы по тегам