10

我正在尝试通过 Real World OCaml 书来学习 OCaml。他们有一个指南,我应该通过它来安装 Core 包和 utop。然而,虽然我似乎使用 Opam 成功安装了这两个,但当我尝试使用它们时它们都不起作用。

我知道它们已安装,因为当我尝试再次安装它们时,我收到以下消息:

$ opam install utop core
[NOTE] Package utop is already installed (current version is 1.10).
[NOTE] Package core is already installed (current version is 109.55.02).

但是,当我尝试输入“utop”启动 utop 时,它不起作用。

$ utop
bash: utop: command not found

当我尝试打开核心时也是如此:

$ open Core.Std
Couldn't get a file descriptor referring to the console

这里发生了什么?我是编程新手,所以可能有一些关于安装的东西我只是不理解。

4

4 回答 4

9

关于utop,您的$PATH. 你做过:

$ eval `opam config env`

如果您希望 opam 在您的新 shell 中正确自动设置,您应该将以下内容添加到您的.bashrc

. ~/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true

至于打不开Core.Std,你的shell当然打不开,这个命令必须在utop.

于 2013-12-23T08:45:32.627 回答
4

大多数在线资源中在 ubuntu 中安装 OCaml utop 的方法似乎有点误导用户。问题是当使用命令安装 opam 时,sudo apt-get无需使用相同的命令再次安装 OCaml,因为 OCaml 附带了 opam 安装。因此,您唯一需要做的就是正确初始化 opam 的状态,该状态定义了您的主文件夹中的 OPAM 根目录。

因此,如果您之前安装了任何 OCaml,请先将其删除以避免冲突。

sudo apt-get purge --auto-remove ocaml-source
sudo apt-get purge opam

然后安装 opam。

sudo add-apt-repository ppa:avsm/ppa
sudo apt-get update
sudo apt-get install opam

初始化 opam 的状态

opam init

如果它显示依赖项丢失警告,请尝试此命令,

opam install depext
opam depext conf-m4.1

然后验证ocaml安装,

eval 'opam config env'
ocaml

然后安装 UTop,

opam install utop
eval `opam config env`
utop

有关详细信息和处理错误,请参阅此博客文章

于 2016-07-03T07:52:22.570 回答
0

我的 Ubuntu-14 / Mint 也被“破坏”了

在这里阅读 Ubuntu 部分后; https://opam.ocaml.org/doc/Install.html

并在再次执行之前删除 .opam/ 目录;

  1. 操作初始化
  2. opam 安装 utop

解决它 !

于 2015-01-03T11:32:13.470 回答
0

所以,我确实尝试了 eval 'opam config env',结果如下:

$ eval 'opam congif env'
CAML_LD_LIBRARY_PATH="/home/jharvard/.opam/4.01.0/lib/stublibs"; export CAML_LD_LIBRARY_PATH; 
PERL5LIB="/home/jharvard/.opam/4.01.0/lib/perl5"; export PERL5LIB;
OCAML_TOPLEVEL_PATH="/home/jharvard/.opam/4.01.0/lib/toplevel"; export OCAML_TOPLEVEL_PATH;
MANPATH="/home/jharvard/.opam/4.01.0/man:"; export MANPATH; PATH="/home/jharvard/.opam/4.01.0/bin:/etc/log50.d:/etc/log50.d:/usr/lib/qt-3.3/bin:/etc/log50.d:/usr/libexec/lightdm:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/jharvard/.local/bin:/home/jharvard/bin"; export PATH;

然后它仍然说找不到“utop”命令。上面的路径对我来说是胡言乱语。任何人都可以查看它返回的内容,看看这是否表明问题可能是什么?

于 2013-12-24T01:26:10.210 回答