Pregunta

Seguí las instrucciones aquí, a la carta. Luego ejecuté la instrucción para crear una estructura de proyecto de aplicación y obtuve el siguiente error.

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

¿Alguna idea de lo que estoy haciendo mal?

¿Fue útil?

Solución

Parece que su Erlang fue compilado sin OpenSSL (el módulo criptográfico). Se requiere cripto para muchas (¿la mayoría?) Aplicaciones Erlang. Deberá obtener una versión de Erlang con un módulo criptográfico que funcione, y luego no debería tener ningún problema como este.

Otros consejos

Una aclaración de su argumento es la respuesta válida (se agrega como respuesta porque el comentario es demasiado corto).

Puede ser que Erlang se compilara correctamente, pero las bibliotecas OpenSSL no son visibles para Erlang, por lo que el servidor de cifrado no se puede iniciar. Compilé Erlang en Solaris 10 y no se quejó de que OpenSSL no se instaló. De hecho, compiló cripto y lo instaló en: /usr/local/lib/erlang/lib/crypto-2.2/

Pero la barra de refuerzo todavía no estaba funcionando. Es fácil verificar si el problema está realmente con el módulo criptográfico.

Abra la carcasa de Erlang y escriba crypto:start(). Esto estaba sucediendo en mi sistema:

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 se instala en una ubicación no estándar, ya que es el caso cuando se usa OpenCSW para instalar OpenSSL en Solaris 10, es fácil solucionar el problema agregando la ruta de la biblioteca a la variable de entorno. Por ejemplo, en Solaris 10 a /etc /perfil:

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

Luego, inicie sesión e inicie sesión o vuelva a cargar el entorno BASH, por ejemplo, así:

bash-3.2# . /etc/profile

Resultado:

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

Recomiendo usar Erlang precompilado que está disponible en Erlang Solutions: https://www.erlang-solutions.com/downloads/download-erlang-otp

También hay uno para Windows.

Obtener este error al ejecutar el comando Make:

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

Los detalles de Erlang son:

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> 

Parece que la criptografía no funciona, ya que el comando da "OK" o "error de excepción".

Se necesita ayuda.

Gracias por la respuesta Ivan. Pero parece que descubrí el problema: las actualizaciones automáticas de Ubuntu se apagaron y las dependencias no se instalaron al compilar Erlang (por ejemplo, libssh-dev). Una vez que la actualización automática se encendió compilada y haga que el comando funcionara bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top