Не удается установить какой-либо модуль ejabberd contrib

#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 файле этого модуля. Теперь я следовал этим инструкциям, и модуль скомпилирован и установлен правильно.