即使重新安装Ocaml(Mac OS X)也无法获得图形?

时间:2016-12-01 05:44:24

标签: macos ocaml macos-sierra

关注this post我安装了brew,然后重新安装了ocaml以包含图形:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew cask install xquartz
brew reinstall ocaml --with-x11

但重新启动计算机后,当我尝试运行使用图形的ocaml程序时出现错误

Error: Cannot find file /Users/.../.opam/4.03.0/lib/ocaml/graphics.cma
该帖还说:

  

最后记得检查正在运行的ocaml实例   是/usr/local/Cellar/objective-caml/x.yy.z[_w]/bin中的那个,和   如果不是,则将该URL添加到您的PATH环境中   变量

如何检查正在运行的ocaml实例?这张海报的意思是“将这个网址添加到你的PATH环境中”?

我已尝试将目录更改为该路径,但出现错误:

$ cd /usr/local/Cellar/objective-caml/
-bash: cd: /usr/local/Cellar/objective-caml/: No such file or directory

如果有人可以请告诉我我需要做些什么才能让graphics.cma正常工作!

更新

我已尝试创建.bashrc并输入

alias ocaml="/usr/local/Cellar/ocaml/4.04.0/bin/ocaml”

然而无济于事......我很遗憾该怎么做。如果有人能给我一个关于做什么的知识,那就太棒了!

(注意:我将4.04.0代替4.03.0,因为当我浏览目录/usr/local/Cellar/ocaml/4.03.0/bin/ocaml但目录/usr/local/Cellar/ocaml/4.04.0/bin/ocaml确实存在时)

2 个答案:

答案 0 :(得分:2)

  

如何检查正在运行的ocaml实例?

如果您的问题是:在shell提示符下的终端窗口中键入ocaml时正在运行的程序(或更常见的是execvp和其他功能)?那么你应该使用which ocaml命令

  

海报的意思是"将这个网址添加到你的PATH环境"?

详细了解PATH变量。它通常设置在您的~/.bashrc file中(如果您的交互式shell为bash,您应该使用您最喜欢的editor或其他一些bash初始化文件仔细编辑一次。您应该使用echo $PATH命令检查它是什么。另见this。请注意,expanded期间~/.bashrc bash opamshell。另请阅读PATH的文档,尤其是globbing章。

如果您使用的是$PATH,则应阅读其文档。值得注意的是Bash Startup Files(提及PATH)来自常见问题解答。

由于别名主要用于交互式shell,因此为大多数shell脚本定义别名是不够的。您确实需要在其中提到的目录中更改{{1}}和/或添加文件(或符号链接)。

PS。了解{{1}}的作用以及如何设置它对于严格使用命令行是必须的,特别是在POSIX系统上。

答案 1 :(得分:1)

通常,自制程序会将其所有二进制文件,库和设置放在/usr/local/Cellar/PACKAGENAME/VERSIONNUMBER中,但它也会在/usr/local/bin中创建指向最新包/版本的符号链接。

所以,如果你看看我的/usr/local/bin,你会看到:

ls -l /usr/local/bin

<强>输出

lrwxr-xr-x  1 mark  admin        26 30 Jan  2016 ack -> ../Cellar/ack/2.14/bin/ack
lrwxr-xr-x  1 mark  admin        43 11 Oct 13:30 amqp-consume -> ../Cellar/rabbitmq-c/0.8.0/bin/amqp-consume
lrwxr-xr-x  1 mark  admin        49 11 Oct 13:30 amqp-declare-queue -> ../Cellar/rabbitmq-c/0.8.0/bin/amqp-declare-queue
lrwxr-xr-x  1 mark  admin        48 11 Oct 13:30 amqp-delete-queue -> ../Cellar/rabbitmq-c/0.8.0/bin/amqp-delete-queue
lrwxr-xr-x  1 mark  admin        39 11 Oct 13:30 amqp-get -> ../Cellar/rabbitmq-c/0.8.0/bin/amqp-get
lrwxr-xr-x  1 mark  admin        43 11 Oct 13:30 amqp-publish -> ../Cellar/rabbitmq-c/0.8.0/bin/amqp-publish
lrwxr-xr-x  1 mark  admin        28 17 Jul 22:49 7z -> ../Cellar/p7zip/16.02/bin/7z
lrwxr-xr-x  1 mark  admin        29 17 Jul 22:49 7za -> ../Cellar/p7zip/16.02/bin/7za
lrwxr-xr-x  1 mark  admin        29 17 Jul 22:49 7zr -> ../Cellar/p7zip/16.02/bin/7zr
lrwxr

如您所见,ack指向地窖中ack的版本2.14,依此类推。

因此,一般情况下,使用自制软件时,不应直接使用Cellar中的任何内容,因为这是特定于版本的。相反,你应该使用/usr/local/bin并依靠指向酒窖中最新/最伟大的东西。这样,您在升级时不会感到痛苦,并且您不必在所有脚本中将所有app-1.01更改为app-1.0.2因为您将使用app (根据您的PATH,这意味着/usr/local/bin/app)而不是任何版本特定的。

因此,我建议您使用bash修改TextEdit个人资料,如下所示:

open -e ~/.profile

并在最后添加此行:

export PATH=/usr/local/bin:$PATH

删除所有特定于版本的别名并注销,然后重新登录。