Я пытаюсь запустить erlang ведомый узел на кластере, и я получаю "удар: Эрл: команда, не найденная" сообщение. Хотя у меня есть псевдоним для Эрл. Вот то, что я на самом деле делаю:
[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>
Возможно, существует что-то не так?Спасибо.
ОБНОВЛЕНИЕ: я добавил erlang dir мусорного ведра к своей переменной $PATH; я установил переменную $ERLANG_ROOT_DIR; созданная символьная ссылка в ~ / в Эрл - но ничто не изменилось... Btw, я установил erlang в ~/bin/erlang dir...
Проблема была в bash: На самом деле erlang подключается к node через ssh, вызывая sh по умолчанию в неинтерактивном режиме. Но когда bash запускается в неинтерактивном режиме, он не читает .bashrc, где находятся мои переменные пути и псевдонимы сохраняются. Итак, я переключился на zsh, и теперь все в порядке! ;)
Я считаю, что псевдоним не будет соблюдаться
erl должен действительно быть на вашем пути
Кроме того, я считаю, что ваш .bashrc также не выполняется. Таким образом, вам может потребоваться символическая ссылка "erl" на / usr / bin или / usr / local / bin
Похоже, вы используете неправильный формат для поля Host в start_link / 3;
Это должен быть атом, представляющий хост, на котором должно быть запущено имя узла (второй параметр, также атом), в результате получается имя узла @ Host.
Итак, в вашем случае это будет
slave:start_link('n002', 'n002', "-rsh ssh").
Думаю, это cookie Erlang.
вы можете проверить связь с n002? если да, то есть ли у двух узлов одинаковые cookie?
например, вы можете попробовать: erl -sname abc -rsh ssh -setcookie secretcookie
erl> slave: start (n002, name, "-setcookie secretcookie"). %%, поэтому эти два узла используют общий файл cookie