Question

J'ai suivi les instructions ici, à la lettre. J'ai ensuite exécuté les instructions pour créer une structure de projet d'application et j'ai obtenu l'erreur suivante.

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

Des idées que je fais de mal?

Était-ce utile?

La solution

Il semble que votre erlang ait été compilé sans OpenSSL (le module cryptographique). La crypto est requise pour de nombreuses applications Erlang (la plupart?). Vous devrez obtenir une version d'Erlang avec un module de cryptographie fonctionnel, et vous ne devriez pas avoir de problèmes comme celui-ci.

Autres conseils

Une clarification de votre argument est la réponse de Valid (ajoutant comme réponse car le commentaire est trop court).

Il se peut que Erlang ait été compilé correctement, mais les bibliothèques OpenSSL ne sont pas visibles par Erlang, de sorte que le serveur de crypto ne peut pas être démarré. J'ai compilé Erlang sur Solaris 10 et il ne s'est pas plaint de l'OpenSSL qui n'est pas installé. En fait, il a compilé la crypto et l'a installée dans: /usr/local/lib/erlang/lib/crypto-2.2/

Mais Rearn ne fonctionnait toujours pas. Il est facile de vérifier si le problème est effectivement avec le module cryptographique.

Open Erlang Shell and Type crypto:start(). Cela se passait sur mon système:

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

Si OpenSSL est installé dans un emplacement non standard, car c'est le cas lors de l'utilisation d'OpenCSW pour installer OpenSSL sur Solaris 10, il est facile de résoudre le problème en ajoutant le chemin de la bibliothèque à la variable d'environnement. Par exemple sur Solaris 10 à / etc / profil:

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

Ensuite, déconnectez-vous et connectez-vous ou rechargez l'environnement bash, par exemple comme celui-ci:

bash-3.2# . /etc/profile

Résultat:

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

Je recommanderais d'utiliser Erlang précompilé qui est disponible auprès d'Erlang Solutions: https://www.erlang-solutions.com/downloads/download-erlang-otp

Il y en a un pour Windows aussi.

Obtenir cette erreur lors de l'exécution de la commande MADE:

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

Les détails Erlang sont:

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> 

On dirait que la crypto ne fonctionne pas, car la commande donne "OK" ou "Erreur d'exception".

Besoin d'aide.

Merci pour la réponse Ivan. Mais il semble que j'ai compris le problème: les mises à jour Auto Ubuntu ont été désactivées et les dépendances n'ont pas été installées lors de la compilation d'ERLANG (par exemple LiBSSH-DEV). Une fois la mise à jour automatique activée, elle a été compilée et que la commande soit bien fonctionnée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top