2014-01-03 2 views
5

Я хотел собрать свой проект с помощью команды: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 
[...] 

Заранее спасибо.

ответ

11

сделать:

eval $(opam config env) 

Это должно решить проблему.

# Edit 1:

Если он все еще не работает, удалить реж

/home/adam/.opam/4.00.1

и попробовать еще раз.

+0

Unfortunatelly ничего не делает: $ opam config env CAML_LD_LIBRARY_PATH = "/ home/adam/.opam/4.00.1/lib/stublibs"; экспортировать CAML_LD_LIBRARY_PATH; PERL5LIB = "/ home/adam/.opam/4.00.1/lib/perl5:"; экспорт PERL5LIB; OCAML_TOPLEVEL_PATH = "/ home/adam /.opam/4.00.1/lib/toplevel "; export OCAML_TOPLEVEL_PATH; MANPATH =":/home/adam/.opam/4.00.1/man "; export MANPATH; PATH =" ... "; export PATH; $ make [...] ocamlfind: Пакет 'ocamlnet 'не найден make: *** [oauth.cmi] Ошибка 2 – 108592

+0

Я обновил свой ответ – Michael

+0

Возможно, вы имели в виду' eval $ (opam config env) '. –

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).

Смежные вопросы