I've gotten ejabberd working on a Ubuntu 6.06 system on amd64. I've finally been able to get the server running and listening to the required ports. I'm also able to login to the web interface. I'm able to register accounts with ejabberdctl, but I'm not able to login or register from a client, like gaim.
When a client connects and tries to register, I see:
sh: line 0: exec: expat_erl: not found
I can't find any executables for expat_erl on my system.
I'm starting with:
erl -pa /usr/lib/erlang/lib/ejabberd-1.0.0/ebin -sname ejabberd -s ejabberd -ejabberd config \"/etc/ejabberd/ejabberd.cfg\" log_path \"/var/log/ejabberd/ejabberd.log\" -mnesia dir \"/var/lib/ejabberd\" -setcookie mycookie232eE
My config file is:
{acl, admin, {user, "admin", "imserver"}}.
{acl, local, {user_regexp, ""}}.
{access, configure, [{allow, admin}]}.
{access, register, [{allow, all}]}.
{welcome_message,
{"Welcome!",
"Welcome to Debian Jabber Service. "
"For information about Jabber visit http://jabber.org"}}.
{access, announce, [{allow, admin}]}.
{access, c2s, [{deny, blocked},
{allow, all}]}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, local, [{allow, all}]}.
{auth_method, internal}.
{hosts, ["imserver"]}.
{language, "en"}.
{listen,
[{5222, ejabberd_c2s, [{access, c2s},
starttls, {certfile, "/etc/ssl/certs/ejabberd.pem"},
{shaper, c2s_shaper}]},
{5223, ejabberd_c2s, [{access, c2s},
tls, {certfile, "/etc/ssl/certs/ejabberd.pem"},
{shaper, c2s_shaper}]},
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}]},
{5280, ejabberd_http, [http_poll, web_admin]}
]}.
{outgoing_s2s_port, 5269}.
{modules,
[
{mod_announce, [{access, announce}]},
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_shared_roster, []},
{mod_privacy, []},
{mod_configure, []},
{mod_configure2, []},
{mod_disco, [{extra_domains, ["users.jabber.org"]}]},
{mod_stats, []},
{mod_vcard, []},
{mod_offline, []},
{mod_echo, []},
{mod_private, []},
{mod_irc, []},
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
{mod_pubsub, []},
{mod_time, []},
{mod_last, []},
{mod_version, []}
]}.
override_global.
override_local.
override_acls.
Any advice would be greatly appreciated.
Can't find expat_erl.so
I'm not able to login or register from a client, like gaim.
When a client connects and tries to register, I see:
sh: line 0: exec: expat_erl: not found
I can't find any executables for expat_erl on my system.
I think the start command and config file are correct. However, ejabberd needs expat_erl.so to handle XMPP packets.
If I remove that file in my ejabberd installation, I get this message while ejabberd is started:
...
=ERROR REPORT==== 28-Jul-2007::10:40:12 ===
Error in process <0.234.0> on node 'eja3@atenea' with exit value:
{{case_clause,{error,{open_error,-10}}},[{ejabberd_app,init,0}]}
...
Also, when I try to establish any XMPP connection (create account, login...), I get the error message you mentioned:
=INFO REPORT==== 28-Jul-2007::10:41:28 ===
I(<0.247.0>:ejabberd_listener:90) : (#Port<0.397>) Accepted connection {{81,202,72,241},33282} -> {{10,10,10,1},5222}
sh: line 0: exec: expat_erl: not found
=ERROR REPORT==== 28-Jul-2007::10:41:28 ===
...
So, it seems your problem is that erlang can't find the file expat_erl.so. If it is compiled, but was not installed, you can try to copy it to the ebin/ directory where you have all the other *.beam files.
If you still have problems, maybe you still miss other files. In ejabberd 1.1.3 I have all those libraries: expat_erl.so iconv_erl.so stringprep_drv.so tls_drv.so ejabberd_zlib_drv.so
EJABBERD_SO_PATH
Hello,
as a default ejabberd looks for .so files in the current directory. If those file are somewhere else, you can define the environment variable EJABBERD_SO_PATH to point to the directory where your .so files are.