#ejabberd #ejabberd-module
#ejabberd #ejabberd-module
Вопрос:
Я пытаюсь установить ejabberd-contrib
модули. Используя это руководство,
Однако, когда я запускаю ejabberdctl modules_update_specs
, ничего не возвращается.
И когда я пытаюсь установить любой из отдельных модулей:
ejabberdctl module_install mod_pottymouth
Failed RPC connection to the node ejabberd@localhost: {'EXIT',
{undef,
[{bitarray,new,
[16777216,false],
[]},
{etbloom,
'-bloom/3-lc$^0/1-0-',
2,
[{file,
"/var/lib/ejabberd/.ejabberd-modules/sources/ejabberd-contrib/mod_pottymouth/deps/etbloom/src/etbloom.erl"},
{line,77}]},
{etbloom,bloom,3,
[{file,
"/var/lib/ejabberd/.ejabberd-modules/sources/ejabberd-contrib/mod_pottymouth/deps/etbloom/src/etbloom.erl"},
{line,77}]},
{etbloom,sbf,4,
[{file,
"/var/lib/ejabberd/.ejabberd-modules/sources/ejabberd-contrib/mod_pottymouth/deps/etbloom/src/etbloom.erl"},
{line,98}]},
{bloom_gen_server,
init,1,
[{file,
"/var/lib/ejabberd/.ejabberd-modules/sources/ejabberd-contrib/mod_pottymouth/src/bloom_gen_server.erl"},
{line,28}]},
{gen_server,init_it,
2,
[{file,
"gen_server.erl"},
{line,374}]},
{gen_server,init_it,
6,
[{file,
"gen_server.erl"},
{line,342}]},
{proc_lib,
init_p_do_apply,3,
[{file,
"proc_lib.erl"},
{line,249}]}]}}
Commands to start an ejabberd node:
start Start an ejabberd node in server mode
debug Attach an interactive Erlang shell to a running ejabberd node
iexdebug Attach an interactive Elixir shell to a running ejabberd node
live Start an ejabberd node in live (interactive) mode
iexlive Start an ejabberd node in live (interactive) mode, within an Elixir shell
foreground Start an ejabberd node in server mode (attached)
ejabberdctl status
The node ejabberd@localhost is started with status: started
Как я могу это исправить?
Комментарии:
1. Привет @Milkyway, вы смогли успешно установить этот модуль. Я выполнил точные шаги по этой ссылке . Но на
./rebar compile
это выдает мне эту ошибку/usr/bin/ld: cannot find -lerl_interface collect2: error: ld returned 1 exit status ERROR: cc c_src/bitarray_nif.o $LDFLAGS -shared -L/usr/lib/erlang/lib/erl_interface-4.0.1/lib -lerl_interface -lei -o priv/bitarray.so failed with error: 1 and output: /usr/bin/ld: cannot find -lerl_interface
Ответ №1:
Однако, когда я запускаю ejabberdctl modules_update_specs, ничего не возвращается.
Тогда он, вероятно, работал правильно, иначе он вернул бы некоторую ошибку, и echo вернул бы 1. Пример того, что он работал правильно и создал путь:
$ ejabberdctl modules_update_specs
$ echo $?
0
$ ls $HOME/.ejabberd-modules/
sources
И когда я пытаюсь установить любой из отдельных модулей:
Установка КАКОГО-ЛИБО модуля приводит к ошибке? Например, если вы попытаетесь установить mod_rest, сработает ли это? Обратите внимание, что это сообщает о предупреждении о документации, которая не важна:
$ ejabberdctl module_install mod_rest
/home/badlop/.ejabberd-modules/sources/ejabberd-contrib/mod_rest/src/mod_rest.erl:27: Warning: undefined callback function mod_doc/0 (behaviour 'gen_mod')
$ ls $HOME/.ejabberd-modules/
mod_rest sources
{‘EXIT’, {undef, [{bitarray,new,
Да, это известная проблема при установке mod_pottymouth
. Обходной путь для установки этого модуля описан в README.txt
файле этого модуля. Теперь я следовал этим инструкциям, и модуль скомпилирован и установлен правильно.