[Pkg-samba-maint] Bug#1013259: samba-libs: Possible policy violation

Michael Tokarev mjt at tls.msk.ru
Mon Oct 31 15:33:01 GMT 2022


31.10.2022 18:15, Michael Stone wrote:
> The issue here is that packages built against samba-libs get a dependency on samba-libs >= version, and they really either need a dependency on 
> samba-libs == version or the samba-libs package needs to be versioned (e.g., samba-libs2, samba-libs3, etc.) and conflict with other versions, or 
> samba-libs needs to Breaks: every dependent package on every update, or somesuch. The current state of affairs results in every change to the 
> samba-libs libraries breaks other packages compiled against them (namely sssd) until those packages are recompiled, but there is nothing in the 
> dependencies to enforce that.

Michael, are you sure about that?

It is not that simple.

Yes, there were an incompatible change in libndr.so which resulted in changing
its soname, and this is bullseye->bookworm issue indeed.  I know about this
issue. But this does not mean sssd needs to be recompiled on every samba
upload (or even 4.16=>4.17 update), sssd should work just fine being compiled
with older samba libs while more recent samba-libs are installed.

Or so it looks like, to me, anyway.

There was another issue here, when modifying samba to build libldb out of
samba sources, there was a bug resulted with older sssd to become non-functional
(this was together with the soname of libndr change too, but unrelated): the
plugin directory has changed. But later on I found a way how to search both
old and new plugins directories, so that issue has been resolved, tho I still
have (iirc) Breaks for older sssd.

But over than this soname change and a bug in directory rename, there should
be no reason why sssd needs to be recompiled every time samba changes, and
why samba-libs dependency should be =version, not >=version.

Samba does have more or less stable public libraries (in /usr/lib/, or actually
/usr/lib/$triple/ but let's use the former for brevity). If another package
uses one of these (like libndr, lisamba-util, libsmbldap, etc), it will have
 >= $version dependency.  And there are quite some internal libraries,
in /usr/lib/samba/, which, once used, gets =$version dependency, because for
these, there's just no ABI whatsoever, and stuff can change significantly.

I yet to figure out how to solve the soname change issues like we have.
I can add Breaks against existing previous sssd releases for that, I guess,
but it wont be fair, since a recompile of old sssd would fix it but the
Breaks will prevent it from being used.

/mjt



More information about the Pkg-samba-maint mailing list