ocamlfind看不到安装包

时间:2014-01-03 22:10:43

标签: ocaml 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/user/.opam/4.00.1/bin/ocamlfind

$ opam list 
Installed packages for 4.00.1:
[...]
ocamlfind             1.4.0  A library manager for OCaml
[...]

提前致谢。

2 个答案:

答案 0 :(得分:18)

做一个:

eval $(opam config env)

这应该解决问题。

#编辑1:

如果仍然无效,请删除目录

/home/adam/.opam/4.00.1

再试一次。

答案 1 :(得分:2)

由于评论的限制和我所做的部分结果,我正在回答。这是'〜/ .opam'目录中'grep -r'ocamlnet'*'的结果: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管理此包所需的某些文件。 E.g。

    ~/.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
    
  3. 我没有足够的知识来深入了解它,但它看起来像ocamlnet成为opam使用的其他几个包的快捷方式。更改后特别

    -package ocamlnet
    

    到我正在使用的确切模块

    -package netstring
    

    一切都编译正常。对于ocamlnet包的奇怪案例(以及迈克尔的提示),我仍然愿意接受任何其他解决方案或解释。(b)。