Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ubuntu 10.4中使用自定义Erlang时,在escript中启动Erlang从属节点失败_Ubuntu_Erlang - Fatal编程技术网

在Ubuntu 10.4中使用自定义Erlang时,在escript中启动Erlang从属节点失败

在Ubuntu 10.4中使用自定义Erlang时,在escript中启动Erlang从属节点失败,ubuntu,erlang,Ubuntu,Erlang,我有以下描述: #!/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!"). 在Ubunt

我有以下描述:

#!/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!").
在Ubuntu10.04上运行时,我发现:

$ ./start_slave
Node started successfully!
$
我想安装我自己的Erlang(最新版本,dialyzer的调试编译文件等),因为Ubuntu上的Erlang库存安装缺少一些功能。我将Erlang二进制文件放入
~/Applications/bin
中。启动Erlang正常工作,在Erlang外壳中启动从属节点也可以工作

然而,现在我的描述不起作用了。大约60秒后,它返回一个错误:

$ ./start_slave                                   
escript: exception error: no match of right hand side value {error,timeout}
即使我将第一行更改为escript以使用我的erlang版本,它仍然不起作用:

#!/home/user/Applications/bin/escript
从节点通过调用
erlang:open_port/2
启动,该调用似乎在使用
sh
,而该调用不会读取设置自定义
路径的
环境变量的.bashrc
文件。当
slave:start_link/3
等待从节点响应时,似乎会发生超时,而从节点从未响应过

我如何在Ubuntu10.4上启动自己的Erlang安装并在escripts中启动从属节点

更新:我尝试在
/etc/environment
中添加自定义Erlang的路径(Ubuntu中设置了原始的
路径),但这并没有改变任何事情


更新2:接受给出的唯一答案(即使它没有解决问题)。Ubuntu和Erlang版本现在有点旧了,这可能不再是一个问题。

从属节点是否可能与其他Erlang安装一起运行?在我看到的“Erlang节点有不同的Cookie”中,超时错误的原因列在下面,我相信这种情况可能会发生


如果是这种情况,在等待超时的同时运行
ps-FC erlang
应该会显示具有不同路径的进程。

是否确实要使用
start\u link
而不是
start
?这样,当脚本自行终止时(在调用main之后出现),从属服务器会自动退出。请参阅
start\u link
的文档。关键是节点启动时间甚至在“start\u link/3返回”之前就已超时。此外,关键是要运行测试,因此我可以在脚本死亡时让节点死亡。:-)它实际上没有启动,或者启动后立即崩溃。我看不到从属节点的进程。在任何情况下,它都应该使用相同的cookie,因为我在
~/.erlang.cookie
中设置了它,因为没有给出其他答案,所以接受此答案。但是,我从来没有发现如何解决这个问题-(