Получение двух оболочек erl для общения на OS X

Я хочу иметь возможность разговаривать двумя оболочками Эрланга. Я работаю на OS X.

Я попробовал пример tut17 здесь.

Я также попробовал:

$ erl -sname foo

а затем в новом терминале:

$ erl -sname bar

(bar@elife)1> net_adm:ping(foo@elife).
pang

Есть идеи?

3 ответа

Решение

Это вроде сломано на Mac. По умолчанию Mac не может разрешить свое собственное короткое имя. Имя вашего хоста действительно, вероятно, "elife.local".

Если вы запустите erl с -name FQDN, тогда эхо-запросы будут работать.

то есть: вы бы начали с

$ erl -name foo@elife.local

это, вероятно, можно исправить, сделав Mac способным разрешать собственное короткое имя

Вот пример вывода с моего Mac. Когда я делаю -sname, я получаю тот же результат, что и вы.

Первый узел:

$ 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> 

Другой узел:

$ 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

Более простое исправление может просто отредактировать ваш файл /etc/hosts и убедиться, что у вас есть что-то вроде этой строки:

127.0.0.1 localhost elife

Мой Mac отлично работает с короткими именами, и я верю, что это то, что он сделал.

Чтобы узлы взаимодействовали друг с другом, оба должны иметь один и тот же файл cookie. В том же окне он работает так же, как и файл cookie из файла $HOME/.erlang.cookie. Если этого файла нет, он создает новый файл и помещает в него несколько случайных файлов cookie. Будущие оболочки используют тот же файл cookie. Но всегда лучше указывать cookie в командной строке с помощью параметра setcookie.

erl -name node1@foo.local -setcookie mycookie

Другие вопросы по тегам