pau*_*aul 6 install ocaml package ocamlfind opam
我最近按照说明安装了OPAM,试一试它看起来不错,我想用它.但是,在我选择尝试OPAM之前,它无法检测到我手动安装的以前安装的OCAML包.
OPAM现在要为任何软件包安装做的第一件事就是安装ocamlfind.查询有关我手动安装的软件包的信息并不反映它们已经安装.这包括ocamlfind.
我害怕做任何事情,因为我不知道它可能会对安装另一个包有什么影响.OPAM至少会覆盖或重新安装ocamlfind.这会破坏我现有的ocamlfind以及我已经手动安装的所有软件包的知识以及我使用它们的能力吗?我不想再重新安装所有东西.我搜索和搜索但找不到关于这个精确主题的任何文档或论坛帖子,我不知道ocamlfind如何在幕后工作.
至少,如果OPAM可以检测或被告知哪些包已经存在以及它们驻留在哪里以避免不必要的重新编译,那将是很好的.也许它已经这样做但我无法发现它是否如此.
OPAM提供一个(或多个)的OCaml安装独立于默认的,即,编译器或库通常发现/usr/bin,/usr/lib/ocaml或/usr/local/blahblah.因此,您手动安装的OCaml系统和基于OPAM的系统可以共存.所有OPAM安装都在$HOME/.opam/switch/(默认情况下为switch = system)下完成,包括二进制可执行文件.因此,对于您的情况,OCAMlFind未被OPAM覆盖.OPAM在另一个目录中安装了另一个OCamlFind.
使用哪个系统可以通过环境变量"切换"."opam config env"显示了必须声明使用当前"switch"的变量.如果要使用默认安装,请确保这些变量不引用OPAM内容.
要使用手工编译的库和OPAM包,请在OPAM交换环境下重新编译并重新安装它们.请注意,OPAM可能会在此处覆盖您的软件包.例如,如果您在"system"OPAM目录中手动安装ocamlfind,那么如果您键入"opam install ocamlfind",则OPAM会覆盖您的OCamlFind安装.(哦,顺便说一句,我认为OPAM在这里覆盖现有安装时很难提醒我们,因为OPAM软件包没有关于它安装哪些OCamlFind软件包的信息).
使用安装在默认位置和OPAM包中的库同时是...... AFAIK,不容易.我认为至少OPAM并不是为这种用途而设计的.为避免混淆库路径,请将它们移植到OPAM交换机之一.
如果您将来获得OPAM的一些功能愿望,请将它们发布在https://github.com/OCamlPro/opam.
| 归档时间: |
|
| 查看次数: |
716 次 |
| 最近记录: |