代码之家  ›  专栏  ›  技术社区  ›  Adam Lindberg

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

  •  8
  • Adam Lindberg  · 技术社区  · 14 年前

    我有以下描述:

    #!/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版本现在有点老了,这可能不再是问题了。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Kim Reece    14 年前

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

    如果是这样的话,跑步 ps -FC erlang 当它等待超时时,应该显示具有不同路径的进程。