epmd 错误打开流套接字:协议不支持地址族

Posted

技术标签:

【中文标题】epmd 错误打开流套接字:协议不支持地址族【英文标题】:epmd error opening stream socket: Address family not supported by protocol 【发布时间】:2014-11-23 14:57:30 【问题描述】:

尝试启动rabbitmq服务器时,出现以下错误:

error_logger,2014,9,26,15,30,21,"Protocol: ~tp: register/listen error: ~tp~n",["inet_tcp",econnrefused]
error_logger,2014,9,26,15,30,21,crash_report,[[initial_call,net_kernel,init,['Argument__1'],pid,<0.21.0>,registered_name,[],error_info,exit,error,badarg,[gen_server,init_it,6,[file,"gen_server.erl",line,320],proc_lib,init_p_do_apply,3,[file,"proc_lib.erl",line,239]],ancestors,[net_sup,kernel_sup,<0.10.0>],messages,[],links,[#Port<0.93>,<0.18.0>],dictionary,[longnames,false],trap_exit,true,status,running,heap_size,987,stack_size,27,reductions,799],[]]
error_logger,2014,9,26,15,30,21,supervisor_report,[supervisor,local,net_sup,errorContext,start_error,reason,'EXIT',nodistribution,offender,[pid,undefined,name,net_kernel,mfargs,net_kernel,start_link,[[rabbitmqprelaunch791,shortnames]],restart_type,permanent,shutdown,2000,child_type,worker]]
error_logger,2014,9,26,15,30,21,supervisor_report,[supervisor,local,kernel_sup,errorContext,start_error,reason,shutdown,failed_to_start_child,net_kernel,'EXIT',nodistribution,offender,[pid,undefined,name,net_sup,mfargs,erl_distribution,start_link,[],restart_type,permanent,shutdown,infinity,child_type,supervisor]]
error_logger,2014,9,26,15,30,21,crash_report,[[initial_call,application_master,init,['Argument__1','Argument__2','Argument__3','Argument__4'],pid,<0.9.0>,registered_name,[],error_info,exit,shutdown,failed_to_start_child,net_sup,shutdown,failed_to_start_child,net_kernel,'EXIT',nodistribution,kernel,start,[normal,[]],[application_master,init,4,[file,"application_master.erl",line,133],proc_lib,init_p_do_apply,3,[file,"proc_lib.erl",line,239]],ancestors,[<0.8.0>],messages,['EXIT',<0.10.0>,normal],links,[<0.8.0>,<0.7.0>],dictionary,[],trap_exit,true,status,running,heap_size,376,stack_size,27,reductions,117],[]]
error_logger,2014,9,26,15,30,21,std_info,[application,kernel,exited,shutdown,failed_to_start_child,net_sup,shutdown,failed_to_start_child,net_kernel,'EXIT',nodistribution,kernel,start,[normal,[]],type,permanent]
"Kernel pid terminated",application_controller,"application_start_failure,kernel,shutdown,failed_to_start_child,net_sup,shutdown,failed_to_start_child,net_kernel,'EXIT',nodistribution,kernel,start,[normal,[]]"

我尝试了erl -sname foo 命令,它给出了类似的错误。

然后(这里建议:http://permalink.gmane.org/gmane.comp.networking.rabbitmq.general/23204)我试过了 epmd -debug 它给出了以下输出:

epmd: Mon Sep 29 11:56:16 2014: epmd running - daemon = 0
epmd: Mon Sep 29 11:56:16 2014: error opening stream socket: Address family not supported by protocol

尝试谷歌搜索 epmd 错误地址系列不受协议支持,但找不到任何内容。

【问题讨论】:

【参考方案1】:

可能是您使用的 IP6 地址在您的 Erlang 版本中可能不受 epmd 支持。 This mail 可能会对问题有所了解(或者如果可以的话,只强制 IP4)。

【讨论】:

当然,如果你决定编译新的 ErlangVM using kerl 是个不错的选择。 谢谢。我用谷歌搜索了 IPv4 和 erlang,发现 ubuntu erlang 包存在问题 - bugs.launchpad.net/ubuntu/+source/erlang/+bug/1374109。所以,我刚刚从erlang-solutions.com/downloads/download-erlang-otp 安装了最新的 erlang 版本,现在一切正常。

以上是关于epmd 错误打开流套接字:协议不支持地址族的主要内容,如果未能解决你的问题,请参考以下文章

套接字地址族和种类

Java TCP/IP SocketTCP Socket(含代码)

套接字地址结构

简单socket()编程

套接字编程

套接字地址结构