Erlang: начальный подчиненный узел - PullRequest
5 голосов
/ 17 апреля 2010

Я пытаюсь запустить подчиненный узел erlang в кластере и получаю сообщение "bash: erl: command not found" Хотя у меня есть псевдоним для Эрл. Вот что я на самом деле делаю:

[user@n001 ~]$ erl -rsh ssh -sname n001    
Eshell V5.7.5  (abort with ^G)
    (n001@n001)1> slave:start_link("user@n002", n002, "-rsh ssh").
    bash: erl: command not found
                                {error,timeout}
    (n001@n001)2>

Может быть, что-то не так? Спасибо.

UPDATE: Я добавил erlang bin dir в переменную $ PATH; Я установил переменную $ ERLANG_ROOT_DIR; создал символическую ссылку в ~ / to erl - но ничего не изменилось ... Кстати, я установил erlang в ~ / bin / erlang dir ...

Ответы [ 5 ]

2 голосов
/ 07 мая 2010

Беда была в bash: На самом деле erlang подключается к узлу через ssh, вызывая sh по умолчанию в неинтерактивном режиме. Но когда bash запускается в неинтерактивном режиме, он не читает .bashrc, где хранятся мои переменные пути и псевдонимы. Так что я перешел на Zsh, и теперь все в порядке! ;)

1 голос
/ 19 апреля 2010

Вы, похоже, используете неправильный формат для поля Хост start_link / 3;

Это должен быть атом, представляющий хост, где находится имя узла (второй параметр, такжеатом) должен быть запущен, в результате чего узел Name@Host.

Так что в вашем случае это будет

slave:start_link('n002', 'n002', "-rsh ssh").
1 голос
/ 18 апреля 2010

Я считаю, что псевдоним не будет соблюдаться

Эрл действительно должен быть на вашем пути

Кроме того, я считаю, что ваш .bashrc тоже не выполняется. Таким образом, вам может понадобиться символическая ссылка "erl" на / usr / bin или / usr / local / bin

0 голосов
/ 25 марта 2012

Просто используйте

>ssh user@n002 erl

, чтобы проверить, нормально ли работает erl на n002.

0 голосов
/ 28 апреля 2010

я предполагаю, что это Erlang cookie.

ты можешь пинговать n002? если да, то имеют ли два узла один и тот же файл cookie?

например, вы можете попробовать: erl -sname abc -rsh ssh -setcookie secretcookie

erl> slave: start (n002, имя, "-setcookie secretcookie"). %%, так что эти два узла совместно используют cookie

...