una tuberias tuberia salidas salida que operador guardar filtros estandar dev comando archivo erlang rebar

erlang - tuberias - salidas estandar en linux



barras de refuerzo: salida de error en la aplicación de creación:{crypto, start,[]} (5)

Parece que tu Erlang fue compilado sin OpenSSL (el módulo de cifrado). crypto es necesario para muchas (¿la mayoría?) aplicaciones de Erlang. Necesitarás obtener una versión de Erlang con un módulo de cifrado en funcionamiento, y entonces no deberías tener ningún problema como este.

Seguí las instrucciones aquí , al pie de la letra. Luego ejecuté las instrucciones 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?



Una aclaración a SU ARGUMENTO ES LA RESPUESTA VÁLIDA (agregando como respuesta porque el comentario es demasiado corto).

Es posible que Erlang se haya compilado correctamente, pero las bibliotecas OpenSSL no son visibles para Erlang, por lo que no se puede iniciar el servidor de cifrado. Recopilé Erlang en Solaris 10 y no me quejé de que OpenSSL no se instalara. De hecho, compiló crypto y lo instaló en: /usr/local/lib/erlang/lib/crypto-2.2/

Pero Rebar todavía no estaba funcionando. Es fácil verificar si el problema es realmente con el módulo criptográfico.

Abra el shell 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 está instalado en una ubicación no estándar, como ocurre cuando se utiliza OpenCSW para instalar OpenSSL en Solaris 10, es fácil solucionar el problema añadiendo la ruta de la biblioteca a la variable de entorno. Por ejemplo en Solaris 10 a / etc / profile:

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

Luego cierre la sesión e inicie sesión o vuelva a cargar el entorno bash, por ejemplo, de esta manera:

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


Obteniendo este error al ejecutar make command:

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 crypto 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 desactivaron y las dependencias no se instalaron al compilar erlang (por ejemplo, libssh-dev). Una vez que se activó la actualización automática, se compiló y el comando ejecutar funcionó bien.