2010-01-26 10 views

risposta

9

È un po 'rotto sul mac. Per impostazione predefinita, il mac non può risolvere il suo nome breve. Il nome del tuo host è molto probabilmente "elife.local".

Se si avvia erl con nome-FQDN, i ping funzioneranno.

vale a dire: si dovrebbe iniziare con

$ erl -name [email protected] 

questo probabilmente potrebbe essere risolto rendendo il mac in grado di risolvere un proprio nome breve

Ecco ad esempio l'uscita dal mio mac. Quando faccio -some ottengo lo stesso risultato di te.

Il primo 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> 

L'altro 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

Sei l'uomo, questo funziona alla grande. Grazie. – Eli

+0

Se qualcuno riceve questo errore, * 1: errore di sintassi prima: '.', Quindi assicurati di racchiudere il nome tra virgolette singole. net_adm: ping ('[email protected] '). – Coderdad

3

una correzione più semplice potrebbe essere solo modificando il file/etc/hosts e assicurarsi di avere qualcosa di simile a questa linea:

127.0.0.1 localhost elife

Il mio mac funziona bene con i nomi brevi, e I bel questo è ciò che ha fatto

+1

Questa è la risposta corretta. Erlang risolve i nomi in indirizzi IP come qualsiasi altra cosa. Come principio generale il tuo 'net_adm: ping' non funzionerà se un normale ping' ping' inviato allo stesso nome non riceve risposta. – Zed

+0

oltre a OSX ignora il file hosts. c'è un altro posto per impostarlo sul mac, non ricordo dove. modifica: almeno originariamente, non ho provato con Snow Leopard –

+0

, impostazione 127.0.0.1 da risolvere in quanto il tuo nome host interromperà molte app java (qualsiasi app che usa RMI). normalmente, vuoi che il tuo nome host indichi il tuo indirizzo IP "pubblico". –

0

Per comunicare tra loro i nodi, entrambi dovrebbero avere lo stesso cookie. Sulla stessa scatola funziona mentre finisce usando il cookie dal file $ HOME/.erlang.cookie. Se questo file non è presente, crea un nuovo file e inserisce dei cookie casuali. Le future shell usano lo stesso cookie. Ma è sempre meglio specificare il cookie sulla riga di comando tramite il parametro setcookie.

Erl -name [email protected] -setcookie mycookie

+1

Non è meglio impostare cookie tramite l'argomento della riga di comando, perché altri utenti sullo stesso sistema saranno in grado di conoscere il proprio cookie solo visualizzando il processo elenco, e dopo che l'utente malintenzionato sarà in grado di inviare messaggi ai nodi di erlang. Se si memorizzano i cookie nel file, non dimenticare di impostare le autorizzazioni appropriate per quel file. – taro