[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ejabberd in jessie-backports unmet dependencies



Hi,

you are not the first to run into this issue (several people reported
this either on list or in private to me before), so I'm now CC'ing the
debian-backports mailinglist and the APT Development Team.


Am 10.05.2017 um 18:00 schrieb JM:
> I am writing to let you know that the current ejabberd package in 
> jessie-backports (16.09-4~bpo8+1)  depends on erlang-base << 1:18.3 
> while the package in jessie-backports is erlang-base 
> (1:19.2.1+dfsg-2~bpo8+1). A simple 'apt-get -t jessie-backports 
> install ejabberd' fails due to unmet dependencies and requires the 
> user to faff about with pinning or installing core erlang
> dependencies from stable and others (erlang-p1-*) from backports.

This is quite right.
The erlang backport was made after the ejabberd backport, breaking the
ejabberd packages which where built with erlang from stable and did not
work with the newer Erlang unless every erlang library involved had been
rebuilt (at least 20 of my packages alone).

Since there was no experience with Erlang 19.2 on jessie while Erlang
17.3 had proven to be reliable, I decided to stick with 17.3.
Another reason was better comparability in regards to bugs, logs, etc.


Now to the problem:
using "apt-get -t jessie-backports" temporarily pins jessie-backports so
much higher than jessie (unless manually pinned different) that apt
tries to satisfy everything from jessie-backports, which fails due to
the dependency on packages from jessie.

AFAIK it is perfectly legitimate for backports to depend on packages
from stable although a newer version is available in backports,
otherwise the whole dependency chain would have to be rebuilt against
the newer compiler/library (in this case Erlang).


The workaround is quite simple, I put everything in the ejabberd package
that needs to be installed from jessie beforehand and apt basically
tells you so when you try to install ejabberd directly from
jessie-backports without having erlang/ejabberd already installed:

> The following packages have unmet dependencies:
>  ejabberd :
>    Depends: erlang-base (< 1:18.3) but 1:19.2.1+dfsg-1~bpo8+1 is to be
installed
>    Depends: erlang-edoc (< 1:18.3) but 1:19.2.1+dfsg-1~bpo8+1 is to be installed
>    Depends: erlang-odbc (< 1:18.3) but 1:19.2.1+dfsg-1~bpo8+1 is to be installed

So you install ejabberd from jessie-backports on a fresh+clean jessie
system as follows:

* apt-get install erlang-base erlang-edoc erlang-odbc
* apt-get -t jessie-backports install ejabberd


If you also want the complete set of ejabberd-contrib modules:

* apt-get install erlang-os-mon
* apt-get -t jessie-backports install ejabberd-contrib


If that is too complicated for people, there are 2 possible solutions
that I can think of:
1) the whole chain of backports must be updated and rebuilt against the
backported Erlang 19.2
2) apt must be improved to handle such situations successfully


For future ejabberd backports to jessie-backports-sloppy I'll have to
use 19.2 as 17.3 is no longer supported upstream, but I'd prefer not to
touch the ones in jessie-backports anymore unless (security) bugs
require it.
Forcing ejabberd users to upgrade Erlang from 17.3 to 19.2 would
certainly break most other/custom Erlang software they might be running.


Best wishes,
-- 
 .''`.   Philipp Huebner <debalance@debian.org>
: :'  :  pgp fp: 6719 25C5 B8CD E74A 5225  3DF9 E5CA 8C49 25E4 205F
`. `'`
  `-

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: