Ottenere due gusci Erl a parlare su OS X
Domanda
Voglio essere in grado di avere due gusci Erlang per parlare. Sono in esecuzione su OS X.
Ho provato l'esempio tut17 qui .
Ho anche provato:
$ erl -sname foo
e poi in un nuovo terminale:
$ erl -sname bar
(bar@elife)1> net_adm:ping(foo@elife).
pang
Tutte le idee?
Soluzione
È un po 'rotto sul mac. Per impostazione predefinita, il Mac non può risolvere il proprio nome breve. Il nome del tuo host è davvero probabilmente "elife.local".
Se si inizia a Erl con -name nome di dominio completo, quindi i ping funzionerà.
vale a dire: si dovrebbe iniziare con
$ erl -name foo@elife.local
questo probabilmente potrebbe essere fissato facendo il mac in grado di risolvere un proprio nome breve
Ecco ad esempio l'uscita dal mio mac. Quando faccio -sNAME ottengo lo stesso risultato di te.
Il primo nodo:
$ erl -name foo@mookie.local
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)
(foo@mookie.local)1>
L'altro nodo:
$ erl -name bar@mookie.local
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)
(bar@mookie.local)1> net_adm:ping('foo@mookie.local').
pong
Altri suggerimenti
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 shortnames, e credo che questo è quello che ha fatto.
Per i nodi comunicano tra loro, entrambi dovrebbero avere lo stesso cookie. Sulla stessa macchina funziona come finiscono con il cookie di file $ HOME / .erlang.cookie. Se questo file non è presente, creare un nuovo file e mettere un po 'biscotto casuale in esso. conchiglie uso futuro lo stesso cookie. Ma è sempre meglio specificare il cookie nella riga di comando tramite il parametro setcookie.
Erl -name node1@foo.local -setcookie mycookie