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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top