арматура: ошибка выхода при создании приложения: {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}]}}

Любые идеи, что я делаю неправильно?


person Andrew Matthews    schedule 20.01.2011    source источник


Ответы (5)


Похоже, ваш Erlang был скомпилирован без OpenSSL (модуль шифрования). crypto требуется для многих (большинства?) приложений Erlang. Вам понадобится версия Erlang с работающим криптомодулем, и тогда у вас не должно возникнуть подобных проблем.

person YOUR ARGUMENT IS VALID    schedule 20.01.2011
comment
Ах. Установка Windows. Я начинаю понимать, что Erlang в Windows, вероятно, менее приятен, чем в Linux. Есть ли способ узнать, был ли он построен с помощью OpenSSH? Или найдите готовую версию, сделанную для Cygwin 1.7+ (это то, что я обычно использую, чтобы избавиться от необходимости работать в Windows). Я не вижу ничего подобного в моем ...\erlang\erl5.8.1.1\erts-5.8. 1.1\bin директория. - person Andrew Matthews; 20.01.2011
comment
Я бы помог, если бы мог, но я никогда не использовал Erlang в Windows. - person YOUR ARGUMENT IS VALID; 20.01.2011
comment
Вы установили openSSL на свой Windows Box? Я сделал это некоторое время назад, используя скомпилированную установку Windows с erlang.org, и я помню, что это в основном связано с наличием правильной DLL openSSl в вашем PATH. Надеюсь это поможет. - person Bernard Notarianni; 15.08.2012

Пояснение к ответу YOUR ARGUMENT IS VALID (добавление в качестве ответа, потому что комментарий слишком короткий).

Возможно, Erlang был скомпилирован правильно, но библиотеки OpenSSL не видны Erlang, поэтому криптосервер не может быть запущен. Я скомпилировал Erlang на Solaris 10, и он не жаловался на то, что OpenSSL не установлен. На самом деле он скомпилировал криптографию и установил ее в: /usr/local/lib/erlang/lib/crypto-2.2/

Но Ребар по-прежнему не работал. Легко проверить, действительно ли проблема связана с модулем шифрования.

Откройте оболочку Erlang и введите 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'"}}

Если OpenSSL установлен в нестандартном месте, как в случае использования OpenCSW для установки OpenSSL в Solaris 10, проблему легко решить, добавив путь к библиотеке в переменную среды. Например, в Solaris 10 в /etc/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
person Greg    schedule 08.02.2013

Я бы рекомендовал использовать предварительно скомпилированный Erlang, который доступен в Erlang Solutions: https://www.erlang-solutions.com/downloads/download-erlang-otp

Для Windows тоже есть.

person Ivan Blinkov    schedule 01.11.2012
comment
это приводит к странице 404 - person akhileshnair; 10.06.2016

Получение этой ошибки при запуске команды 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

Детали эрланга:

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> 

Похоже, крипто не работает, так как команда выдает «ОК» или «ошибка исключения».

Нужна помощь.

person akhileshnair    schedule 21.04.2016
comment
Вы забыли . в конце crypto:start(), поэтому он еще не выполнен. - person Oscar; 10.06.2016

Спасибо за ответ Иван. Но, кажется, я разобрался с проблемой: автоматические обновления Ubuntu были отключены, а зависимости не были установлены при компиляции erlang (например, libssh-dev). Как только автоматическое обновление было включено, оно скомпилировалось, и команда make заработала нормально.

person akhileshnair    schedule 04.05.2016