Frage

Ich folgte den Anweisungen hier, zum Brief. Ich habe dann die Anweisung ausgeführt, um eine Anwendungsprojektstruktur zu erstellen, und habe den folgenden Fehler erhalten.

$ ./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}]}}

Irgendwelche Ideen, was ich falsch mache?

War es hilfreich?

Lösung

Es sieht so aus, als wäre Ihr Erlang ohne OpenSSL (das Crypto -Modul) zusammengestellt worden. Krypto ist für viele (meisten?) Erlang -Anwendungen erforderlich. Sie müssen eine Version von Erlang mit einem funktionierenden Krypto -Modul erhalten, und dann sollten Sie keine solchen Probleme haben.

Andere Tipps

Eine Klarstellung zu Ihrem Argument ist die Antwort von Gültigkeit (Hinzufügen als Antwort, da der Kommentar zu kurz ist).

Es kann sein, dass Erlang ordnungsgemäß zusammengestellt wurde, aber die OpenSSL -Bibliotheken sind für Erlang nicht sichtbar, sodass der Krypto -Server nicht gestartet werden kann. Ich habe Erlang auf Solaris 10 zusammengestellt und es beschwerte sich nicht, dass OpenSSL nicht installiert wurde. Tatsächlich hat es Crypto zusammengestellt und installiert in: /usr/local/lib/erlang/lib/crypto-2.2/

Aber Rebar funktionierte immer noch nicht. Es ist einfach zu überprüfen, ob das Problem tatsächlich mit dem Crypto -Modul liegt.

Offene Erlang Shell und Typ crypto:start(). Dies geschah in meinem System:

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'"}}

Wenn OpenSL an einem nicht standardmäßigen Ort installiert ist, da es bei der Verwendung von OpenCSW zur Installation von OpenSSL auf Solaris 10 der Fall ist, kann das Problem einfach behoben werden, indem der Bibliotheksweg zur Umgebungsvariablen hinzugefügt wird. Zum Beispiel auf Solaris 10 bis /etc /Profil:

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

Melden Sie sich dann die Bash-Umgebung an und laden Sie sie erneut ein oder laden Sie sie erneut. Zum Beispiel wie folgt:

bash-3.2# . /etc/profile

Ergebnis:

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

Ich würde empfehlen, vorkompilierte Erlang zu verwenden, das bei Erlang Solutions erhältlich ist: https://www.erlang-solutions.com/downloads/download-erlang-otp

Es gibt auch eine für Windows.

Erhalten Sie diesen Fehler beim Ausführen von Befehl machen:

root@hs:/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

Die Erlang -Details sind:

root@hs:/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> 

Scheint, als würde Krypto nicht funktionieren, da der Befehl "OK" oder "Ausnahmefehler" gibt.

Hilfe benötigt.

Danke für die Antwort Ivan. Aber es scheint, dass ich das Problem herausgefunden habe: Die Ubuntu-Auto-Updates wurden ausgeschaltet und die Abhängigkeiten wurden beim Zusammenstellen von Erlang (z. B. libsh-dev) nicht installiert. Sobald das automatische Update eingeschaltet wurde und den Befehl gut lief.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top