Library versioning vs RPM versioning

Michael Schwendt bugs.michael at gmx.net
Wed Oct 19 10:51:22 UTC 2005


On Wed, 19 Oct 2005 08:34:03 +0200 (CEST), Linus Walleij wrote:

> Need to get this clear, out of curiosity...
> 
> If say, foo-1.0-1.rpm provides a library as /usr/lib/libfoo.so.1 and then 
> we say foo-1.1-1.rpm is released providing /usr/lib/libfoo.so.2.
> 
> Then, if there is one package bar-1.0.rpm that needs 
> /usr/lib/libfoo.so.1 (and has Requires: foo = 1.0 in its spec) and 
> another baz-1.2.rpm that needs /usr/lib/libfoo.so.2 (and has Requires foo 
> = 1.1 in its spec), what happens from a user point of view?

The entire scenario is flawed.

First of all, the dependency on libfoo.so.1 and libfoo.so.2 ought
to be automatic through rpmbuild's SONAME requirements. No manual
"Requires: foo = ..." must be added in this case.

Secondly, what would the -devel packages for your two versions
of "foo" be called? Obviously, it cannot be just foo-devel.
 
> As I understand it, as long as no files collide you could have both 
> foo-1.0-1 and foo-1.1-1 installed and satisfy both dependencies. So 
> using command-line rpm that's all pretty easy.

Not for rpm -Fvh or -Uvh either.

> (And this is a strong argument for keeping old versions of packages in the 
> repository, then, atleast stuff providing libraries, since someone who 
> want to install both "bar" and "baz" will need two versions.)

If two different versions of a library are needed in the repository
maintainers' point of view, they ought to be given a distinct package
name and be made parallel installable, like foo1-1.0-1.i386.rpm and
foo-2.0-1.i386.rpm, for instance. This would also fix the build
requirements situation => foo1-devel and foo-devel to distinguish
between the two APIs.




More information about the fedora-extras-list mailing list