Re: Packaging certain libraries as "end-user software"
On Thu, Jul 09, 2015 at 05:26:32PM +0200, Ansgar Burchardt wrote:
> I'm wondering about the shared library packaging requirements in Policy
> for the special case of scientific libraries that are not intended to be
> used by applications, but are to be used by end-users directly,
What does "to be used by end users directly" mean? That they will use them to
compile programs? That's not special. Because they are used for compiling,
most shared libraries are Build-Depends of other packges, but that's not the
only reason they exist. All libraries are available for developer end users.
> and that do not have a stable ABI.
That is an issue. It means that upstream will either need to change the soname
a lot, which is probably not what they do, or that it shouldn't be a shared
library (but a static library instead).
> In particular does splitting out the shared library package provide
> anything useful here? It means additional work for no benefit I can see
> as parallel installation of multiple versions would require having
> multiple -dev packages as well to be useful...
The benefit of changing the soname and package name of a shared library is not
that multiple versions can be used for development, but rather that programs
compiled against an incompatible old version will still work when the new
version is installed. This is because the old version is not uninstalled from
the system (even if it may be removed from the archive after the dependency is
upgraded there; the old application still links to the old library, which will
remain installed on the user's machine at least until that application is
upgraded or removed).
This is true regardless of whether the application is provided by Debian or
not. (But if it isn't, it is technically easy to remove the old library and
break the application; the user must take care not to do that.)
> Does anyone see any problems with this plan?
Yes. The way we handle shared libraries for Debian packages works also for
programs that aren't in Debian. Your proposal makes it harder for users to
keep their programs running when the library is upgraded (they are forced to
Also, to repeat: if the ABI is very unstable, the library should probably not
be distributed as a shared library, but only as a static library. Then all
those problems don't exist (but you're also missing some benefits, which is why
most libraries should better be shared, with the static version only installed
for special cases).