OCaml:安装utop后无法运行

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

这里发生了什么?我是新手,可能有些关于安装方面的问题我还没理解。


你能否尝试在终端中执行以下命令:eval `opam config env` - Kakadu
我尝试了这个,但出于某些原因它没有起作用。请看下面我的答案。 - akim330
重新打开终端对我有用,安装Opam会更改.bashrc文件,需要重新启动bash。 - kristianp
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中执行。


似乎仍然不起作用。请查看下面我的回答,其中包含输入eval 'opam config env'时返回的代码。也许那能提供一些见解?感谢您的回复! - akim330
1
对我有用!谢谢。 - DCS

5
大多数在线资源中安装OCaml utop的方法似乎有点误导用户。事实是,当使用sudo apt-get命令安装opam时,不需要再次使用相同的命令安装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

如需详细信息和处理错误,请参考此博客文章


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”命令未找到。对我来说,上面的路径是无意义的。是否有人能够查看返回的内容,以确定问题可能是什么?


4
您的引号符号不正确。您需要像 À 这样的引号符号。它位于我的键盘上靠近“1”按钮的位置。 - Kakadu
哦,就是这样。我不知道那个字符的存在。非常感谢你! - akim330

0

我的Ubuntu-14 / Mint也出了问题。

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

并且在再次执行以下操作之前删除.opam/目录:

  1. opam init
  2. opam install utop

问题解决了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接