2010-04-17 17 views
5

Estoy tratando de iniciar el nodo esclavo erlang en el clúster y recibo el mensaje "bash: erl: comando no encontrado". Aunque tengo alias para erl. Esto es lo que realmente hago:Erlang: nodo esclavo inicial

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

Tal vez, hay algo mal? Gracias.

ACTUALIZACIÓN: Agregué erlang bin dir a mi variable $ PATH; Establecí la variable $ ERLANG_ROOT_DIR; enlace simbólico creado en ~/a ERL - pero nada ha cambiado ... Erlang Por cierto, he instalado en ~/bin/dir Erlang ...

Respuesta

2

El problema fue en bash: En realidad, erlang se conecta al nodo a través de ssh, invocando sh por defecto en modo no interactivo. Pero cuando bash se inicia en modo no interactivo, no lee .bashrc donde están almacenados mis alias y las variables de ruta. ¡Así que cambié a zsh y todo está bien ahora! ;)

+1

'.bashrc' por lo general contiene la siguiente línea en la parte superior: # Si no se ejecuta de forma interactiva, no hacer nada [-z "$ PS1"] && volver Así que si usted define su variable 'path' antes de eso, puede usar su 'erl' personalizado. Bash * does * read .bashrc en modo no interactivo. – aronisstav

1

creo que el alias no será respetada

erl necesita estar realmente en su camino

Además, creo que su .bashrc tampoco se ejecuta. Por lo tanto, es posible que deba vincular simbólicamente "erl" a/usr/bin o/usr/local/bin

+0

Gracias por intentar ayudar ... pero ... Agregué erlang bin dir a mi variable $ PATH; Establecí la variable $ ERLANG_ROOT_DIR; creó un enlace simbólico en ~/to erl - pero nada ha cambiado ... Por cierto, he instalado erlang en ~/bin/erlang dir ... – Zim

1

Parece que está utilizando a wrong format para el campo Host de start_link/3;

Debe ser un átomo que representa el host donde se debe iniciar el nombre del nodo (segundo parámetro, también un átomo), lo que da como resultado el nodo Nombre @ Host.

Así que en su caso sería

slave:start_link('n002', 'n002', "-rsh ssh"). 
+0

Gracias, pero slave: start_link ('n002', 'n002', "- rsh ssh "). se ejecuta con el mismo resultado - > slave: start_link ('n002', 'n002', "-rsh ssh"). bash: erl: comando no encontrado {error, timeout} – Zim

0

mi conjetura es la galleta Erlang.

¿Puedes hacer ping n002? en caso afirmativo, ¿los dos nodos tienen la misma cookie?

por ejemplo, puede probar: ERL -sNOMBRE abc -RSH ssh -setcookie secretcookie

erl> esclavo: iniciar (n002, nombre, "-setcookie secretcookie"). %% para que estos dos nodos compartan una cookie

0

sólo tiene que utilizar

>ssh [email protected] erl 

para comprobar si está bien ERL en n002.

+0

erl está bien en n002 pero todavía da '{error, timeout}' – akin

Cuestiones relacionadas