Запуск подчиненного узла Erlang в escript завершается неудачно при использовании пользовательского Erlang в Ubuntu 10.4. - PullRequest
8 голосов
/ 27 мая 2010

У меня есть следующий сценарий:

#!/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 (последняя версия, отладочные скомпилированные файлы для диализатора и т. Д.), Поскольку в стандартной установке Erlang на Ubuntu отсутствуют некоторые функции. Я положил свои двоичные файлы 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 файл, который устанавливает мою пользовательскую переменную среды PATH. Тайм-аут, по-видимому, возникает, когда slave:start_link/3 ожидает ответа подчиненного узла, чего он никогда не делает.

Как я могу свернуть мою собственную установку Erlang и запустить подчиненные узлы внутри сценариев в Ubuntu 10.4?

Обновление: Я пытался добавить путь к своему настраиваемому Erlang внутри /etc/environment (где установлен исходный PATH в Ubuntu), но это ничего не меняет ...

Обновление 2: Принятие единственного предоставленного ответа (хотя это не решило проблему). Версии Ubuntu и Erlang устарели, и это может больше не быть проблемой.

1 Ответ

1 голос
/ 03 июня 2010

Возможно ли, что ведомый узел запускается с другой установкой Erlang? Перечисленные по причинам ошибки тайм-аута в документации по подчиненным узлам я увидел, что "узлы Эрланга имеют разные куки", которые, как я полагаю, могут возникнуть в этом случае.

Если бы это было так, выполнение ps -FC erlang в ожидании тайм-аута должно показывать процессы с разными путями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...