1. 程式人生 > >安裝rebar時提示"Uncaught error in rebar_core"

安裝rebar時提示"Uncaught error in rebar_core"

最近在學Erlang,看到第25章時要安裝一個叫做rebar的軟體,具體怎麼用還不知道,只不過中途出了點問題,花了一下午才解決問題,實在太蛋疼了,所以特整理出此博文,如果有人遇到同樣的問題可以有個參考。

先描述下問題:

按照教程安裝rebar,從 https://github.com/rebar/rebar/ 下載編譯好的版本(注:網上大多數都是說的http://github.com/rebar/rebar/wiki/rebar這個地址,但是這個地址找不到,應該是已經更新了),或者直接下載原始碼包到本地,然後自己編譯:

git clone git://github.com/rebar/rebar.git
cd rebar
./bootstrap
Recompile: src/getopt
...
Recompile: src/rebar_utils
==> rebar (compile)
Congratulations! You now have a self-contained script called "rebar" in
your current working directory. Place this script anywhere in your path
and you can use rebar to build OTP-compliant apps.
我的卻提示:
Recompile: src/getopt
...
Recompile: src/rebar_xref
Uncaught error in rebar_core: {'EXIT',
                               {undef,
                                [{crypto,start,[],[]},
                                 {rebar,run_aux,2,
                                  [{file,"src/rebar.erl"},{line,163}]},
                                 {rebar,main,1,
                                  [{file,"src/rebar.erl"},{line,58}]},
                                 {erl_eval,do_apply,6,
                                  [{file,"erl_eval.erl"},{line,657}]},
                                 {escript,eval_exprs,5,
                                  [{file,"escript.erl"},{line,865}]},
                                 {erl_eval,local_func,5,
                                  [{file,"erl_eval.erl"},{line,544}]},
                                 {escript,interpret,4,
                                  [{file,"escript.erl"},{line,781}]},
                                 {escript,start,1,
                                  [{file,"escript.erl"},{line,276}]}]}}
隨後就是各種查資料,最後弄明白了,其實不是rebar的問題,從報錯可以看出在編譯crypto模組時候出現了undef錯誤,也就是說crypto模組不存在,這個模組其實是安裝erlang的時候生成的,也就是說問題出在erlang 上;

其實這是因為erlang在安裝的時候沒有安裝openssl,erlang安裝的時候需要依賴幾個庫,其中就有openssl,可以參考這篇文章,但是我安裝openssl時候卻提示已安裝,之後我查到原始碼包安裝erlang時,config要帶一些引數,我發現我的openssl路徑和網上提到的都不一樣,所以我就在--withssl="path"裡把自己的openssl路徑填上重新安裝了一次erlang之後問題就解決了,

問題解決之前:

解決之後:

具體安裝過程:

首先從http://www.erlang.org/download.html下載最新版原始碼包otp_src_17.4.tar.gz
解壓tar zxf otp_src_17.4.tar.gz
cd otp_src_17.4
./configure --with-ssl=/usr/local/ssl --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll(這裡ssl的路徑填自己的安裝路徑,這些引數是可選的)
make
sudo make install

如果這樣還解決不了問題可以參考下面的帖子: