2011-01-20 7 views
8

私はhereの手紙に従っています。その後、アプリケーションプロジェクト構造を作成するための命令を実行し、次のエラーが発生しました。rebar:create-appのエラー終了:{crypto、start、[]}

$ ./rebar create-app appid=myapp 
Uncaught error in rebar_core: {'EXIT', 
           {undef, 
            [{crypto,start,[]}, 
            {rebar_core,run,1}, 
            {rebar,main,1}, 
            {escript,run,2}, 
            {escript,start,1}, 
            {init,start_it,1}, 
            {init,start_em,1}]}} 

私が間違っていることは何ですか?

答えて

11

ErlangがOpenSSL(暗号モジュール)なしでコンパイルされたようです。多くの(ほとんどの)Erlangアプリケーションでは暗号が必要です。動作する暗号モジュールを使ってErlangのバージョンを入手する必要があります。このような問題はないはずです。 https://www.erlang-solutions.com/downloads/download-erlang-otp

あまりにもWindows用の1あります:私はErlangのソリューションから提供されてプリコンパイルされたアーランを使用してお勧めします

+0

ああ。 Windowsがインストールされます。私はWindows上のErlangがおそらくLinux上よりも快適ではないことに気付き始めている。 OpenSSHでビルドされているかどうかを確認する方法はありますか?Cygwin 1.7+用に作られたあらかじめビルドされたバージョンを見つけてください(これは通常私がWindowsで作業する必要があります) 私は私の... \ erlang \ erl5.8.1.1 \ erts- 5.8.1.1 \ binディレクトリにあります。 –

+2

できれば助けたいが、WindowsでErlangを使ったことはない。 –

+1

彼はダウンしている間に男を打つ、なぜあなたはしないでください! ; ^] –

1

+0

この結果は404ページになります –

6

あなたの主張に対する明確化は有効です(コメントが短すぎるため、回答として追加してください)。

それはアーランが正しくコンパイルされたことかもしれないが、OpenSSLライブラリはアーランには見えないので、暗号化サーバが起動することはできません。私はSolaris 10でErlangをコンパイルしましたが、OpenSSLがインストールされていないと不平を言うことはありませんでした。実際には、暗号をコンパイルしてインストールしました。/usr/local/lib/erlang/lib/crypto-2.2/

しかし、Rebarはまだ動作していませんでした。問題が実際に暗号モジュールであるかどうかを確認するのは簡単です。

アールランシェルを開き、crypto:start()と入力します。これは私のシステムで起こっていた。

bash-3.2# erl 
Erlang R15B03 (erts-5.9.3.1) [source] [smp:2:2] [async-threads:0] [hipe] [kernel-poll:false] 

Eshell V5.9.3.1 (abort with ^G) 
1> crypto:start(). 
** exception error: undefined function crypto:start/0 
2> 
=ERROR REPORT==== 8-Feb-2013::15:28:43 === 
Unable to load crypto library. Failed with error: 
"load_failed, Failed to load NIF library: 'ld.so.1: beam.smp: fatal: relocation error: file /usr/local/lib/erlang/lib/crypto-2.2/priv/lib/crypto.so: symbol DES_ede3_cfb_encrypt: referenced symbol not found'" 
OpenSSL might not be installed on this system. 

=ERROR REPORT==== 8-Feb-2013::15:28:43 === 
The on_load function for module crypto returned {error, 
               {load_failed, 
                "Failed to load NIF library: 'ld.so.1: beam.smp: fatal: relocation error: file /usr/local/lib/erlang/lib/crypto-2.2/priv/lib/crypto.so: symbol DES_ede3_cfb_encrypt: referenced symbol not found'"}} 

のSolaris 10上でOpenSSLをインストールするOpenCSWを使用した場合、それがそうであるようにOpenSSLは、非標準の場所にインストールされている場合、追加することで問題を解決するのは簡単です環境変数へのライブラリパス。たとえば、Solaris 10で/ e​​tc/profileをへ:

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/csw/lib 
export LD_LIBRARY_PATH 

その後ログアウトしてイン・ログインまたはこのような、たとえば、bashの環境を再ロード:

bash-3.2# . /etc/profile 

結果:

bash-3.2# erl 
Erlang R15B03 (erts-5.9.3.1) [source] [smp:2:2] [async-threads:0] [hipe] [kernel-poll:false] 

Eshell V5.9.3.1 (abort with ^G) 
1> crypto:start(). 
ok 
1

コマンドを作る実行しているときにこのエラーを取得:

[email protected]:/var/www/html/ejabberd-master# make 
rm -rf deps/.got 
rm -rf deps/.built 
/usr/local/lib/erlang/bin/escript rebar get-deps && :> deps/.got 
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}]}, 
          {escript,run,2, 
           [{file,"escript.erl"},{line,757}]}, 
          {escript,start,1, 
           [{file,"escript.erl"},{line,277}]}, 
          {init,start_it,1,[]}, 
          {init,start_em,1,[]}]}} 
make: *** [deps/.got] Error 1 

アーランの詳細は以下のとおりです。コマンドが「OK」または「例外エラー」を与えるよう

[email protected]:/home/node# erl 
Erlang/OTP 18 [erts-7.0] [source] [64-bit] [smp:4:4] [async- threads:10] [hipe] [kernel-poll:false] 

Eshell V7.0 (abort with ^G) 
1> crypto:start() 
1> 

は、暗号化が機能していないように思えます。

ヘルプが必要です。

+2

あなたは "。"暗号の終わりに:start()、それはまだ実行されていません。 – Oscar

0

回答ありがとうIvan。しかし、私はこの問題を考え出したようだ: Ubuntuの自動更新がオフになったとのerlangをコンパイル中の依存関係は、(例えばlibssh-devの)がインストールされませんでした。自動更新がオンになったら、コンパイルしてコマンドを正常に実行しました。

関連する問題