On Tue, 2010-03-09 at 10:36 -0500, Evan wrote:

> In a normal scenario, for a library X, we would have the package libX.
> When a new version of the lib is released upstream, the new version
> gets packaged,
> and the version field of the package gets bumped appropriately.
> 
No, not true at all.

This is the scenario for *badly maintained* libraries, which do not
maintain their ABI and instead consider the "upstream version"
canonical.  Sadly glib, GTK+, etc. were examples of this in the past
which is why they have "2.0" in their names :-(

The *correct* way for a library, and which the vast majority follow, is
that each library has its ABI versioned, and this is reflected in the
library's SONAME

For example, the first version of a library would be:

        libexample.so.0

The second version would be

        libexample.so.1

The third version

        libexample.so.2

etc.

Minor versions are permitted in the library name, so if you add new
API/ABI without breaking any existing, you might name it:

        libexample.so.2.1

this still has a SONAME of

        libexample.so.2

(since it is compatible)


Packaging policy *always* includes the SONAME of the library in its
binary package name, e.g. libexample0 libexample1 libexample2

Thus libraries with different SONAMEs are always parallel installable.


For the minor version example, both would be libexample2 but different
versions of it.  dpkg provides the "shlibs" and "symbols" systems for
identifying the minimum required version of a library at build time, and
encoding this in the dependencies.

Thus a package built against libexample2 that actually required symbols
from 2.1 would have libexample2 (>= 2.1) in its dependency list, while a
package built against the earlier version (or that did not require
symbols from 2.1) would have just libexample2

Both can use the same library package


Scott
-- 
Scott James Remnant
sc...@ubuntu.com

Attachment: signature.asc
Description: This is a digitally signed message part

-- 
Ubuntu-devel-discuss mailing list
Ubuntu-devel-discuss@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss

Reply via email to