我有以下描述:
#!/usr/bin/env escript
%%! -name test_starter@127.0.0.1
main(_) ->
NodeName = test,
Host = '127.0.0.1',
Args = "",
{ok, _Node} = slave:start_link(Host, NodeName, Args),
io:format("Node started successfully!").
在Ubuntu 10.04上运行时,我得到了:
$ ./start_slave
Node started successfully!
$
我想安装自己的erlang(最新版本,针对透析器的调试编译文件等),因为Ubuntu上的erlang的stock安装缺少一些特性。我把二郎双星放进去了
~/Applications/bin
. 启动erlang正常工作,启动erlang shell内的从属节点也正常工作。
但是,现在我的描述不起作用了。大约60秒后,它返回一个错误:
$ ./start_slave
escript: exception error: no match of right hand side value {error,timeout}
即使我将第一行更改为esccript以使用我的Erlang版本,它仍然不起作用:
#!/home/user/Applications/bin/escript
从节点通过调用
erlang:open_port/2
好像在用
sh
反过来又看不到我的
.bashrc
设置自定义的文件
PATH
环境变量。超时似乎发生在
slave:start_link/3
等待从节点做出响应,而这永远不会发生。
如何在Ubuntu10.4上滚动自己安装的erlang并启动esccripts内的从属节点?
更新:
我试着在里面添加自定义二郎的路径
/etc/environment
(原文在哪里)
路径
在Ubuntu中设置)但这不会改变任何东西…
更新2:
接受给出的唯一答案(即使它没有解决问题)。Ubuntu和Erlang版本现在有点老了,这可能不再是问题了。