Вопрос

Я следовал инструкциям здесь, буквально. Затем я запустил инструкцию, чтобы создать структуру проекта приложения, и получил следующую ошибку.

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

Есть идеи, что я делаю не так?

Это было полезно?

Решение

Похоже, ваш Erlang был составлен без OpenSSL (Crypto Module). Crypto требуется для многих (большинство?) Erlang приложений. Вам нужно будет получить версию 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 до /и т. Д. /Профиль:

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

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

Есть и для Windows.

Получение этой ошибки при запуске команды:

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> 

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

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

Спасибо за ответ Иван. Но, похоже, я выяснил проблему: автоматические обновления Ubuntu были отключены, а зависимости не были установлены при составлении Erlang (например, Libssh-Dev). После того, как автоматическое обновление было включено в его сбору, и команда сделала команду, выполняющую нормально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top