问题
在osx 10.10上安装riak,一直跑不起来,提示错误(详见stackoverflow):
[error] Error loading "erlang_js_drv": "dlopen(/User/keroro/lib/erlang_js-1.2.2/priv/erlang_js_drv.so,
2): no suitable image found. Did find:\n\t/Users/keroro/lib/erlang_js-1.2.2/priv/erlang_js_drv.so: mach-o, but wrong architecture"
[error] CRASH REPORT Process erlang_js_sup with 0 neighbours exited with reason: bad return value: {error,{load_error,"Failed to load erlang_js_drv.so"}} in gen_server:init_it/6 line 332
[error] CRASH REPORT Process <0.115.0> with 0 neighbours exited with reason: bad return value: {error,{load_error,"Failed to load erlang_js_drv.so"}} in erlang_js:start(normal, []) in application_master:init/4 line 138
解决:用gnu-gcc编译erlang
造成这个问题的具体原因未知,只知道是因为编译erlang和riak的编译器不一致造成的。我之前是用llvm-gcc编译erlang,而gnu-gcc编译riak,所以才提示“wrong architecture”!我之后重新用gnu-gcc编译erlang,再用新编译好的erlang编译riak,就能够正常跑了。
其实参照Installing Erlang 和 Riak Installing on Mac OS X
就可以了,只不过我之前没找到这篇文档,被坑得比较久而已。
- 安装gnu的gcc
osx上默认的gcc一般都是llvm-gcc,可以执行`gcc --version`看一下,如果是“Apple LLVM version”的话就是llvm-gcc。
我偷懒,直接装xcode,xcode包里面含有gnu的gcc。当然你也可以不安装xcode,直接装gnu的gcc,不过我没尝试过。
-
借助
kerl
来安装的。
参照Installing Erlang,系统在10.6以及更新的,在~/.kerlrc里面添加下面选项:./configure --disable-hipe --enable-smp-support --enable-threads --enable-kernel-poll --enable-darwin-64bit
之后的步骤就是正常装erlang了。
kerl build R15B03 R15B03
kerl install R15B03 path-to-installation-toR15B03
花絮
就上面这句“wrong architecture”误导我,我还以为是因为我的系统太新了,riak跑不起来,所以一直是ssh到另外一台机子上跑riak,弄得我测试什么的都巨麻烦。
不过说真的,这种很容易碰见的问题,在网络上搜竟然没多少结果,可见riak确实不算太流行。
另外,还得感谢ntalbott的提醒
网友评论