Obtendo duas conchas ERL para falar no OS X
Pergunta
Eu quero poder ter duas conchas de Erlang para conversar. Estou executando no OS X.
Eu tentei o exemplo tut17 aqui.
Eu também tentei:
$ erl -sname foo
E então em um novo terminal:
$ erl -sname bar
(bar@elife)1> net_adm:ping(foo@elife).
pang
Alguma ideia?
Solução
Está meio quebrado no Mac. Por padrão, o Mac não pode resolver seu próprio nome curto. O nome do seu anfitrião é realmente provavelmente "eLife.local".
Se você iniciar o ERL com -name fqdn, os pings funcionarão.
ou seja: você começaria com isso
$ erl -name foo@elife.local
Provavelmente isso poderia ser corrigido, tornando o Mac capaz de resolver seu próprio nome curto
Aqui está o exemplo de saída do meu Mac. Quando eu faço -Sço, recebo o mesmo resultado que você.
O primeiro nó:
$ 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>
O outro nó:
$ 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
Outras dicas
Uma correção mais simples pode estar apenas editando seu arquivo /etc /hosts e verifique se você tem algo como esta linha:
127.0.0.1 localhost eLife
Meu Mac funciona bem com os shortnames, e acredito que foi isso que aconteceu.
Para os nós se comunicam, ambos devem ter o mesmo cookie. Na mesma caixa, ele funciona, pois acaba usando o cookie do arquivo $ home/.erlang.cookie. Se esse arquivo não estiver presente, ele criou um novo arquivo e coloque um cookie aleatório. As conchas futuras usam o mesmo cookie. Mas é sempre melhor especificar o cookie na linha de comando via parâmetro setcookie.
erl -name node1@foo.local -setcookie mycookie