2013-12-23 180 views
9

我试图通过真实世界OCaml书籍学习OCaml。他们有一个我应该安装Core软件包和utop的指南。然而,虽然我似乎使用Opam成功安装了这两个,但是当我尝试使用它们时,它们都不起作用。OCaml:安装后无法运行utop

我知道他们正在安装,因为当我尝试重新安装它们,我得到这个消息:

$ 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 

同样,当我尝试打开核心:

​​

这是怎么回事?我是编程新手,所以可能会有一些关于安装的问题,我只是不理解。

+0

你可以尝试在终端执行这个:eval \'opam config env \' – Kakadu

+0

我试过这个,但由于某种原因它没有工作。请参阅下面的答案。 – akim330

+0

重新打开终端为我工作,安装Opam会对.bashrc进行更改,这需要重新启动bash。 – kristianp

回答

9

关于utop,看起来你没有在你的$PATH。你做:

$ eval `opam config env` 

如果你想OPAM是正确自动安装在您的新壳,你应该添加下列到您的.bashrc

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

至于未能打开Core.Std,你当然不能在你的shell中打开它,这个命令必须在utop中发布。

+0

仍似乎没有工作。请参阅下面的答案,以查看在输入eval'opam config env'时返回的代码。也许这将提供一些见解?感谢您的回应! – akim330

+1

为我工作!谢谢。 – DCS

0

所以,我没有尝试的eval“OPAM配置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

+0

Doh。就是这样。我不知道那个角色是否存在。非常感谢! – akim330

+0

快乐的露营:) – Kakadu

3

在Ubuntu的大多数在线资源中安装OCaml utop的方法看起来像是一种误导用户。在使用sudo apt-get命令安装opam时,不需要使用相同的命令再次安装OCaml,因为OCaml附带了opam安装。所以你唯一需要做的就是正确地初始化你的home文件夹中定义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 

详细信息和处理错误,请参阅本blog post