2010-01-26 13 views

Respuesta

9

Está algo roto en el mac. Por defecto, el mac no puede resolver su propio nombre corto. El nombre de su anfitrión probablemente sea "elife.local".

Si inicia erl con -name FQDN, entonces los pings funcionarán.

es decir: que comenzaría con

$ erl -name [email protected] 

esto probablemente podría ser fijado al hacer el mac capaz de resolver su propio nombre corto

Aquí hay una salida de ejemplo mi mac. Cuando lo hago -nombre, obtengo el mismo resultado que tú.

El primer nodo:

$ erl -name [email protected] 
Erlang R13B03 (erts-5.7.4) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false] 

Eshell V5.7.4 (abort with ^G) 
([email protected])1> 

El otro nodo:

$ erl -name [email protected] 
Erlang R13B03 (erts-5.7.4) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false] 

Eshell V5.7.4 (abort with ^G) 
([email protected])1> net_adm:ping('[email protected]'). 
pong 
+0

Eres el hombre, esto funciona muy bien. Gracias. – Eli

+0

Si alguien obtiene este error, * 1: error de sintaxis antes de '.', Asegúrese de ajustar el nombre entre comillas simples. net_adm: ping ('[email protected] '). – Coderdad

3

Una solución más simple sólo podría estar editando el archivo/etc/hosts y asegúrese de que usted tiene algo así como esta línea:

127.0.0.1 localhost elife

Mi mac funciona bien con nombres cortos, y yo bello Creo que esto es lo que hizo.

+1

Esta es la respuesta correcta. Erlang resuelve nombres a direcciones IP como cualquier otra cosa. Como principio general, su 'net_adm: ping' no funcionará si no se responde a un icmp' ping' normal enviado al mismo nombre. – Zed

+0

aparte de OSX ignora el archivo de hosts. hay otro lugar para configurarlo en el mac, no recuerdo dónde. editar: al menos originalmente, no lo han probado bajo Snow Leopard –

+0

también, estableciendo 127.0.0.1 para resolver como su nombre de host romperá un montón de aplicaciones Java (cualquier aplicación que use RMI). normalmente, quiere que su nombre de host apunte a su dirección IP "pública". –

0

Para que los nodos se comuniquen entre sí, ambos deben tener la misma cookie. En el mismo cuadro funciona, ya que termina usando la cookie del archivo $ HOME/.erlang.cookie. Si este archivo no está presente, cree un nuevo archivo y coloque una cookie aleatoria en él. Las conchas futuras usan la misma cookie. Pero siempre es mejor especificar la cookie en la línea de comando a través del parámetro setcookie.

ERL -nombre [email protected] -setcookie MyCookie

+1

No es mejor configurar cookies a través del argumento de línea de comandos, porque otros usuarios en el mismo sistema podrán conocer su proceso de visualización de cookies lista, y después de eso el usuario malintencionado podrá enviar mensajes a sus nodos erlang. Si almacena cookies en el archivo, no olvide configurar los permisos adecuados en ese archivo. – taro