I'm trying to start erlang slave node on cluster and I receive "bash: erl: command not found" message. Though I have alias for erl. Here is what I actually do:
[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>
Maybe, there is something wrong?
Thanks.
UPDATE:
I've added erlang bin dir to my $PATH variable; I've set $ERLANG_ROOT_DIR variable; created symlink in ~/ to erl - but nothing have changed...
Btw, I have installed erlang in ~/bin/erlang dir...
The trouble was in bash:
Actually erlang connects to node via ssh, invoking default sh in non-interactive mode.
But when bash is started in non-interactive mode, it doesn't read .bashrc where my path variables and aliases are stored.
So I switched to zsh and all is ok now! ;)
I believe that the alias won't be honored
erl needs to actually be in your path
Also, I believe that your .bashrc doesn't execute either. So you may have to symlink "erl" to /usr/bin or /usr/local/bin
You seem to be using a wrong format for the Host field of start_link/3;
It should be an atom representing the host where the node Name (second parameter, also an atom) should be started, resulting in node Name@Host.
So in your case that would be
slave:start_link('n002', 'n002', "-rsh ssh").
my guess is erlang cookie.
can you ping n002 ?
if yes, then do the two nodes have the same cookie ?
for example you can try:
erl -sname abc -rsh ssh -setcookie secretcookie
erl> slave:start(n002, name, "-setcookie secretcookie"). %% so these two nodes share a cookie
Just use
>ssh user@n002 erl
to check if erl is ok on n002.