Upgrade 2.0.5 to 2.1.x, can't start

Hi,

I tried to update my current 2.0.5 ejabberd to 2.1.x.

I did a uninstall of version 2.0.5 with make uninstall, and a install with ./configure --enable-tls; make; make install.

After a ejabberdctl start the port 5222 is closed and the following out put is shown in the /var/log/ejabberd/ejabberd.log:

=INFO REPORT==== 2010-01-10 12:47:12 ===
I(<0.430.0>:ejabberd_rdbms:37) : ejabberd has not been compiled with relational database support. Skipping database startup.

=INFO REPORT==== 2010-01-10 12:47:13 ===
    application: ejabberd
    exited: {bad_return,{{ejabberd_app,start,[normal,[]]},
                         {{badarg,[{erlang,system_info,[otp_release]},
                                   {ejabberd_listener,init_tcp,6},
                                   {proc_lib,init_p,5}]},
                          {child,undefined,
                                 {5222,{0,0,0,0},tcp},
                                 {ejabberd_listener,
                                     start,
                                     [{5222,{0,0,0,0},tcp},
                                      ejabberd_c2s,
                                      [{certfile,
                                           "/etc/ejabberd/tls/server.pem"},
                                       starttls,
                                       {access,c2s},
                                       {shaper,c2s_shaper},
                                       {max_stanza_size,65536}]]},
                                 transient,
                                 brutal_kill,
                                 worker,
                                 [ejabberd_listener]}}}}
    type: temporary

My server don't have IPv6 support. I guess it could be the problem

Any other suggestions?

BR

Maybe you have very old Erlang version?

Quote:

My server don't have IPv6 support. I guess it could be the problem

If you mention lack of IPv6 because you saw this in the error: {ejabberd_listener,init_tcp,6}, don't worry: that 6 has nothing to do with IP version 6.

Maybe you are using a very old version of Erlang. ejabberd 2.1.1 (and also current SVN) requires Erlang/OTP R10B-9 or higher. The recommended version is R12B-5. Support for R13 is experimental.

If that is your case, you have at least three options:

  • If that old Erlang is the newest provided by your OS, you can try to get a more recent package from a more recent OS version. Problem: dependencies of that new package may not be available for you.
  • You can download, compile and install from source code Erlang/OTP. Problem: it will take one or two hours to compile, probably.
  • You can download and install ejabberd binary installer from ProcessOne, which includes a minimal Erlang inside, so you don't need to worry about Erlang dependency. Problem: it's a standalone package, so you would need to write the init.d script and logrotate.

Thank you for your reply, but

Thank you for your reply,

but I'm a little bit confused. You are talking about a Version R10B-9 or higher and I've got a version 5.5.2 installed (Debian etch package):

Erlang (BEAM) emulator version 5.5.2 [source] [async-threads:0] [kernel-poll:false]

Eshell V5.5.2  (abort with ^G)

Package Version:

Package: erlang
Priority: optional
Section: interpreters
Installed-Size: 68
Maintainer: Erlang Packagers <erlang-pkg-devel@lists.berlios.de>
Architecture: all
Version: 1:11.b.2-4

Doese anyone know if it is too old?

BR

Should work. Test this

Eshell V5.5.2 is included in Erlang R11B-2, as you can see. So this should be enough for running ejabberd 2.1.x.

I don't understand why you get that error message. Try this, and show what do you get:

This is what I get in R12B-5 and R13B-3 (the versions that I can try):

$ erl
Erlang (BEAM) emulator version 5.6.5 [source] [async-threads:0] [kernel-poll:false]

Eshell V5.6.5  (abort with ^G)
1> erlang:system_info(otp_release).
"R12B"
2> q().
ok
$

And:

$ erl
Erlang R13B03 (erts-5.7.4) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
1> erlang:system_info(otp_release).
"R13B03"
2> q().
ok
$

unless I don't have a

unless I don't have a something wrong im my syntax, something seems to be strange:

Eshell V5.5.2  (abort with ^G)
1> erlang:system_info(otp_release).
** exited: {badarg,[{erlang,system_info,[otp_release]},
                    {erl_eval,do_apply,5},
                    {shell,exprs,6},
                    {shell,eval_loop,3}]} **

=ERROR REPORT==== 15-Jan-2010::22:34:45 ===
Error in process <0.29.0> with exit value: {badarg,[{erlang,system_info,[otp_release]},{erl_eval,do_apply,5},{shell,exprs,6},{shell,eval_loop,3}]}

Is the bad arg "opt_release" in that case?

BR

It was bug in ejabberd; try patch.

Quote:

Is the bad arg "otp_release" in that case?

Right, it seems Erlang R10 and R11 didn't implement yet that argument. So it is a bug in ejabberd for expecting all versions to support it.

I've fixed in ejabberd SVN/Git, so the next ejabberd release (planned for the next weeks) will work correctly. Or you can apply the simple patch to your source code:
http://github.com/processone/ejabberd/commit/2de9eac1e305f4ad39d31d1be59...

Thank you for that

Thank you for that information. I'll try it in an free minute.

BR

Syndicate content