Re: What problem might happen when bumping soname without adding Conflicts:/Breaks:?
- Date: Thu, 29 Mar 2018 21:43:19 +0300
- From: Adrian Bunk <bunk@xxxxxxxxxx>
- Subject: Re: What problem might happen when bumping soname without adding Conflicts:/Breaks:?
On Wed, Mar 28, 2018 at 08:08:07PM -0700, Russ Allbery wrote:
> Boyuan Yang <073plan@xxxxxxxxx> writes:
> > * Upstream released new version and bumped SONAME to 2
> > * -dev package didn't change its name
> > * My mentor suggests that the new library package (libdframeworkdbus2) should
> > add the relationship "Conflicts: libdframeworkdbus1"
> You do not want to do that. It defeats one of the primary purposes for
> changing the package name: allowing both versions of the shared library to
> be co-installed.
The default in Debian is to allow coinstallation of the libraries,
but there are actually cases where it is better to add a Conflicts.
Without symbol versioning it is a problem if you end up with both
libraries in a binary, in this case e.g.:
deepin-menu -> libdframeworkdbus1
deepin-menu -> libdtkwidget2 -> libdframeworkdbus2
Even with symbol versions things can go badly in some cases,
like the OpenSSL situation in stretch being a complete mess and
in some cases using the wrong OpenSSL can result in your application
just segfaulting (e.g. the libcurl API passes an opaque OpenSSL struct).
OpenSSL is special due to two versions being supported in stretch,
otherwise a Conflicts between libssl1.0.2 and libssl1.1 might have
been a good solution.
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed