我想使用命令编译我的项目:
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
[...]
提前致谢。
答案 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安装的 - 我很高兴听到关于这个主题的一些意见)。这些怀疑可以通过两种方式得到部分证实:
第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
我没有足够的知识来深入了解它,但它看起来像ocamlnet成为opam使用的其他几个包的快捷方式。更改后特别
-package ocamlnet
到我正在使用的确切模块
-package netstring
一切都编译正常。对于ocamlnet包的奇怪案例(以及迈克尔的提示),我仍然愿意接受任何其他解决方案或解释。(b)。