2010-01-26 2 views

Répondre

9

C'est un peu cassé sur le mac. Par défaut, le mac ne peut pas résoudre son propre nom court. Le nom de votre hôte est vraiment "elife.local".

Si vous démarrez erl avec -name FQDN, alors les pings fonctionneront.

-à-dire: vous commencez avec

$ erl -name [email protected] 

cela pourrait probablement être résolu en rendant le Mac capable de résoudre son propre nom court

Voici un exemple de sortie de mon mac. Quand je fais -sname j'obtiens le même résultat que toi.

Le premier noeud:

$ 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'autre nœud:

$ 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

Vous êtes l'homme, cela fonctionne très bien. Merci. – Eli

+0

Si quelqu'un rencontre cette erreur, * 1: erreur de syntaxe avant: '.', Assurez-vous d'entourer le nom de guillemets simples. net_adm: ping ('[email protected] '). – Coderdad

3

Une solution plus simple est peut-être d'éditer votre fichier/etc/hosts et assurez-vous que vous avez quelque chose comme cette ligne:

127.0.0.1 localhost eLife

Mon mac fonctionne très bien avec shortnames, et je bel ieve c'est ce que j'ai fait.

+1

Ceci est la bonne réponse. Erlang résout les noms en adresses IP comme n'importe quoi d'autre. En règle générale, 'net_adm: ping' ne fonctionnera pas si un icmp' ping' ordinaire envoyé au même nom n'a pas de réponse. Outre OSX, – Zed

+0

ignore le fichier hosts. il y a un autre endroit pour le mettre sur le mac, je ne me souviens plus où. edit: au moins il a fait à l'origine, n'ont pas essayé sous Snow Leopard –

+0

également, définissant 127.0.0.1 à résoudre car votre nom d'hôte va casser beaucoup d'applications Java (toute application qui utilise RMI). Normalement, vous voulez que votre nom d'hôte pointe vers votre adresse IP publique. –

0

Pour les nœuds communiquent entre eux, les deux doivent avoir le même cookie. Dans la même boîte, cela fonctionne car il finit par utiliser le cookie du fichier $ HOME/.erlang.cookie. Si ce fichier n'est pas présent, il crée un nouveau fichier et y place un cookie aléatoire. Les futurs obus utilisent le même cookie. Mais il est toujours préférable de spécifier le cookie sur la ligne de commande via le paramètre setcookie.

ERL -nom [email protected] -setcookie MonCookie

+1

Il n'est pas mieux de placer cookie par l'argument de ligne de commande, parce que d'autres utilisateurs sur le même système pourront connaître votre cookie liste, et après cet utilisateur malveillant sera en mesure d'envoyer des messages à vos nœuds erlang. Si vous stockez des cookies dans le fichier, n'oubliez pas de définir les autorisations appropriées sur ce fichier. – taro