Riak(2.1.1)启动错误

时间:2015-07-30 12:41:21

标签: riak

我从源代码(riak 2.1.1)编译后尝试启动riak时出错。

soft67:bin Humberto $ ./riak start
!!!!
!!!!警告:ulimit -n是2560;建议的最小值为65536 !!!!
riak未能在15秒内启动,
看看' riak console'的输出了解更多信息。

如果您想等待更长时间,请将环境变量WAIT_FOR_ERLANG设置为等待的秒数。

我使用gcc 5.2作为默认编译器,OS X Yosemite 10.10和Basho的修补版Erlang(OTP_R16B02_basho8)

有什么问题?我在Ubunto 14.4中做了同样的工作并且运行正常

我对lib eleveldb.so:

有这个错误

2015-07-30 12:43:59.292 [警告]< 0.191.0>模块eleveldb的on_load函数返回{error,{load_failed,"无法加载NIF库:' dlopen(/Users/Humberto/riak-2.1.1/rel/riak/bin /../ lib /eleveldb-2.1.0-0-ga36dbd6/priv/eleveldb.so,2):找不到符号:__ ZTTNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE \ n参考文献:/Users/Humberto/riak-2.1.1/rel/riak/bin/../ lib / eleveldb-2.1.0-0-ga36dbd6 / priv / eleveldb.so \ n预期:平面命名空间\ n在/Users/Humberto/riak-2.1.1/rel/riak/bin/../lib/eleveldb -2.1.0-0-ga36dbd6 / PRIV / eleveldb.so'"}}

我用otool查看eleveldb.so的链接,这是输出:

soft67:bin Humberto $ otool -L /Users/Humberto/riak-2.1.1/rel/riak/bin/../lib/eleveldb-2.1.0-0-ga36dbd6/priv/eleveldb.so /Users/Humberto/riak-2.1.1/rel/riak/bin/../lib/eleveldb-2.1.0-0-ga36dbd6/priv/eleveldb.so:     /opt/local/lib/libgcc/libstdc++.6.dylib(兼容版本7.0.0,当前版本7.21.0)     /usr/lib/libSystem.B.dylib(兼容版本1.0.0,当前版本1213.0.0)     /opt/local/lib/libgcc/libgcc_s.1.dylib(兼容版本1.0.0,当前版本1.0.0)

提前致谢, 温贝托

编译器信息

Humbertos-MacBook-Pro-2:Humberto $ gcc -v 使用内置规格。 COLLECT_GCC = GCC COLLECT_LTO_WRAPPER = /选择/本地/ libexec目录/ GCC / x86_64的 - 苹果darwin14 / 5.2.0 / LTO-包装 目标:x86_64-apple-darwin14 配置为:/opt/local/var/macports/build/_opt_mports_dports_lang_gcc5/gcc5/work/gcc-5.2.0/configure --prefix = / opt / local --build = x86_64-apple-darwin14 --enable-languages = c,c ++,objc,obj-c ++,lto,fortran,java --libdir = / opt / local / lib / gcc5 --includedir = / opt / local / include / gcc5 --infodir = / opt / local / share / info --mandir = / opt / local / share / man --datarootdir = / opt / local / share / gcc-5 --with-local-prefix = / opt / local --with-system-zlib --disable- nls --program-suffix = -mp-5 --with-gxx-include-dir = / opt / local / include / gcc5 / c ++ / --with-gmp = / opt / local --with-mpfr = / opt / local --with-mpc = / opt / local --with-isl = / opt / local --enable-stage1-checking --disable-multilib --enable -lto --enable-libstdcxx-time --with- as = / opt / local / bin / as --with-ld = / opt / local / bin / ld --with-ar = / opt / local / bin / ar --with-bugurl = https://trac.macports.org/newticket - -with-pkgversion =' MacPorts gcc5 5.2.0_0' 线程模型:posix

gcc版本5.2.0(MacPorts gcc5 5.2.0_0)

Erlang信息

soft67:bin Humberto $ erl Erlang R16B02_basho8(erts-5.10.3)[source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:false]

Eshell V5.10.3(用^ G中止)

1>

控制台日志

2015-07-30 16:54:58.993 [info]< 0.7.0>应用程序启动程序在节点&riak@127.0.0.1' 2015-07-30 16:54:59.001 [info]< 0.7.0>应用程序sasl在node&#r; riak@127.0.0.1'上开始; 2015-07-30 16:54:59.001 [info]< 0.7.0>应用程序asn1在节点&r; riak@127.0.0.1'上开始; 2015-07-30 16:54:59.004 [info]< 0.7.0>应用程序加密开始于节点&#r; riak@127.0.0.1' 2015-07-30 16:54:59.004 [info]< 0.7.0>应用程序public_key在node&#r; riak@127.0.0.1'上启动; 2015-07-30 16:54:59.010 [info]< 0.7.0>应用程序ssl在节点&#r; riak@127.0.0.1'上开始; 2015-07-30 16:54:59.013 [info]< 0.7.0>应用程序riak_sysmon在node&#r; riak@127.0.0.1'上启动; 2015-07-30 16:54:59.021 [info]< 0.7.0>应用程序os_mon在node&#r; riak@127.0.0.1'上启动; 2015-07-30 16:54:59.028 [info]< 0.70.0> alarm_handler:{set,{system_memory_high_watermark,[]}} 2015-07-30 16:54:59.030 [info]< 0.7.0>应用程序runtime_tools在节点&#r; riak@127.0.0.1'上启动; 2015-07-30 16:54:59.062 [info]< 0.7.0>应用程序erlang_js在node&#r; riak@127.0.0.1'上开始; 2015-07-30 16:54:59.062 [info]< 0.7.0>应用程序xmerl从node&r; riak@127.0.0.1'开始; 2015-07-30 16:54:59.078 [info]< 0.7.0>应用程序inets在node&#r; riak@127.0.0.1' 2015-07-30 16:54:59.078 [info]< 0.7.0>应用程序mochiweb在node&r; riak@127.0.0.1'上开始; 2015-07-30 16:54:59.084 [info]< 0.7.0>应用程序webmachine在节点&#r; riak@127.0.0.1'上开始; 2015-07-30 16:54:59.084 [info]< 0.7.0>应用程序basho_stats在node&#r; riak@127.0.0.1' 2015-07-30 16:54:59.090 [info]< 0.7.0>应用程序bitcask从node&r; riak@127.0.0.1&#39开始; 2015-07-30 16:54:59.100 [info]< 0.7.0>应用程序集团开始于节点&#r; riak@127.0.0.1' 2015-07-30 16:54:59.100 [info]< 0.7.0>应用程序eleveldb在节点&r; riak@127.0.0.1'上开始; 2015-07-30 16:54:59.101 [info]< 0.7.0>应用程序pbkdf2在node&#r; riak@127.0.0.1'上启动; 2015-07-30 16:54:59.101 [info]< 0.7.0>应用程序poolboy在node&#r; riak@127.0.0.1' 2015-07-30 16:54:59.125 [info]< 0.158.0> @exometer_report:do_start_reporters:613用[]开始记者 2015-07-30 16:54:59.126 [info]< 0.7.0>应用程序exometer_core在node&#r; riak@127.0.0.1'上启动; 2015-07-30 16:54:59.185 [警告]< 0.178.0> @riak_core_ring_manager:reload_ring:359没有可用的铃声文件。 2015-07-30 16:54:59.222 [警告]< 0.191.0>模块eleveldb的on_load函数返回{error,{load_failed,"无法加载NIF库:' dlopen(/Users/Humberto/riak-2.1.1/rel/riak/bin /../ lib /eleveldb-2.1.0-0-ga36dbd6/priv/eleveldb.so,2):找不到符号:__ ZN7leveldb13gPerfCountersE \ n参考文献:/Users/Humberto/riak-2.1.1/rel/riak/bin/../ lib / eleveldb-2.1.0-0-ga36dbd6 / priv / eleveldb.so \ n预期:平面命名空间\ n在/Users/Humberto/riak-2.1.1/rel/riak/bin/../lib/eleveldb -2.1.0-0-ga36dbd6 / PRIV / eleveldb.so'"}} 2015-07-30 16:54:59.223 [错误]< 0.189.0>崩溃报告过程< 0.189.0>有0个邻居退出的原因:在gen_server中调用未定义的函数eleveldb:destroy(" ./ data / cluster_meta / trees",[]):init_it / 6行328 2015-07-30 16:54:59.223 [错误]< 0.164.0>主管riak_core_sup让孩子riak_core_metadata_hashtree以未定义出口处的riak_core_metadata_hashtree:start_link()启动,并在上下文start_error中调用未定义函数eleveldb:destroy(" ./ data / cluster_meta / trees",[]) 2015-07-30 16:54:59.223 [错误]< 0.162.0>崩溃报告过程< 0.162.0>退出0个邻居的原因是:{{shutdown,{failed_to_start_child,riak_core_metadata_hashtree,{undef,[{eleveldb,destroy,[" ./ data / cluster_meta / trees",[]],[]},{ hashtree,破坏,如图1所示,[{文件," SRC / hashtree.erl"},{线,275}]},{hashtree_tree,create_node,2,[{文件," SRC / hashtree_tree .erl"},{线,463}]},{hashtree_tree,新,2,[{文件," SRC / hashtree_tree.erl"},{线,193}]},{riak_core_metadata_hashtree在初始化,1,[{文件," SRC / riak_core_metadata_hashtree.erl"},{线,172}]},{gen_server,init_it,6,[{文件," gen_server.erl&# application.master中的34;},{line,304}]},{proc_lib,init_p_do_apply,...}]}}},...}:init / 4 line 133 2015-07-30 16:54:59.223 [info]< 0.7.0>应用程序riak_core退出原因:{{shutdown,{failed_to_start_child,riak_core_metadata_hashtree,{undef,[{eleveldb,destroy,[" ./ data / cluster_meta / trees",[]],[]},{hashtree ,破坏,如图1所示,[{文件," SRC / hashtree.erl"},{线,275}]},{hashtree_tree,create_node,2,[{文件," SRC / hashtree_tree。 ERL"},{线,463}]},{hashtree_tree,新,2,[{文件," SRC / hashtree_tree.erl"},{线,193}]},{riak_core_metadata_hashtree,初始化,如图1所示,[{文件," SRC / riak_core_metadata_hashtree.erl"},{线,172}]},{gen_server,init_it,6,[{文件," gen_server.erl&#34 ;},{线,304}]},{proc_lib,init_p_do_apply,...}]}}},...} 2015-07-30 16:54:59.225 [info]< 0.70.0> alarm_handler:{clear,system_memory_high_watermark}

3 个答案:

答案 0 :(得分:1)

我遇到了与Riak 1.4类似的问题,我发现原因是我的Erlang版本是由 llvm-gcc 构建的,但是Riak 1.4需要 gnu-gcc 。当Riak启动时,程序会因加载某些lib而失败。

强烈建议安装Erlang参考basho doc:

由于您的OSX是10.10,请使用以下配置从源代码编译Erlang:

./configure --disable-hipe --enable-smp-support --enable-threads \
--enable-kernel-poll  --enable-darwin-64bit

毕竟,重新编译Riak。

答案 1 :(得分:0)

在Ubuntu系统中,运行以下命令

export WAIT_FOR_ERLANG=60

答案 2 :(得分:0)

另一个 OSX 选项是使用 Riak 的预编译版本,例如 https://files.tiot.jp/riak/kv/2.9/2.9.8/osx/10.14/ 中的 Riak-2.9.8

如果 Riak 启动并在几秒钟后死亡,请查看 var/console.log,看看 Riak 是否在抱怨 crypto。如果是这样,请将同一站点提供的两个 dylib 文件复制到 /usr/local/opt/openssl/lib/,它应该很高兴。