Re: package managers [was: FatELF patches...]

From: Valdis . Kletnieks
Date: Wed Nov 04 2009 - 15:02:59 EST


On Wed, 04 Nov 2009 19:46:44 +0100, Mikulas Patocka said:

> When I did it (from Etch to Lenny), two programs that I have compiled
> manually ("vim" and "links") stopped working because Etch and Lenny have
> binary-incompatible libgpm.
>
> If some library cannot keep binary compatibility, it should be linked
> staticaly, dynamic version shouldn't even exists on the system --- so that
> no one can create incompatible binaries.

No, all they need to do is bump the .so version number.

I have a creeping-horror binary that was linked against an older audit shared
library. Fedora shipped a newer one. The fix? Upgraded the lib, then
snarfed the old version off backups (you *do* make backups, right?)

% ls -l /lib64/libaudit*
lrwxrwxrwx 1 root root 17 2009-09-26 16:47 /lib64/libaudit.so.0 -> libaudit.so.0.0.0
-rwxr-xr-x 1 root root 107304 2009-04-03 15:47 /lib64/libaudit.so.0.0.0
lrwxrwxrwx 1 root root 17 2009-09-30 11:09 /lib64/libaudit.so.1 -> libaudit.so.1.0.0
-rwxr-xr-x 1 root root 103208 2009-09-28 16:00 /lib64/libaudit.so.1.0.0

They happily co-exist. My creeping horror references libaudit.so.0, the rest
of the system references libaudit.so.1 and everybody is happy.

And some distros even pre-package the previous set of libraries for some packages:

% yum list 'compat*'
Loaded plugins: dellsysidplugin2, downloadonly, refresh-packagekit, refresh-updatesd
Installed Packages
compat-expat1.x86_64 1.95.8-6 @rawhide
compat-readline5.i686 5.2-17.fc12 @rawhide
compat-readline5.x86_64 5.2-17.fc12 @rawhide
Available Packages
compat-db.x86_64 4.6.21-5.fc10 rawhide
compat-db45.x86_64 4.5.20-5.fc10 rawhide
compat-db46.x86_64 4.6.21-5.fc10 rawhide
compat-erlang.x86_64 R10B-15.12.fc12 rawhide
compat-expat1.i686 1.95.8-6 rawhide
compat-flex.x86_64 2.5.4a-6.fc12 rawhide
compat-gcc-34.x86_64 3.4.6-18 rawhide
compat-gcc-34-c++.x86_64 3.4.6-18 rawhide
compat-gcc-34-g77.x86_64 3.4.6-18 rawhide
compat-guichan05.i686 0.5.0-10.fc12 rawhide
compat-guichan05.x86_64 0.5.0-10.fc12 rawhide
compat-guichan05-devel.i686 0.5.0-10.fc12 rawhide
compat-guichan05-devel.x86_64 0.5.0-10.fc12 rawhide
compat-libf2c-34.i686 3.4.6-18 rawhide
compat-libf2c-34.x86_64 3.4.6-18 rawhide
compat-libgda.i686 3.1.2-3.fc12 rawhide
compat-libgda.x86_64 3.1.2-3.fc12 rawhide
compat-libgda-devel.i686 3.1.2-3.fc12 rawhide
compat-libgda-devel.x86_64 3.1.2-3.fc12 rawhide
compat-libgda-sqlite.x86_64 3.1.2-3.fc12 rawhide
compat-libgda-sqlite-devel.i686 3.1.2-3.fc12 rawhide
compat-libgda-sqlite-devel.x86_64 3.1.2-3.fc12 rawhide
compat-libgdamm.i686 3.0.1-4.fc12 rawhide
compat-libgdamm.x86_64 3.0.1-4.fc12 rawhide
compat-libgdamm-devel.i686 3.0.1-4.fc12 rawhide
compat-libgdamm-devel.x86_64 3.0.1-4.fc12 rawhide
compat-libgfortran-41.i686 4.1.2-38 rawhide
compat-libgfortran-41.x86_64 4.1.2-38 rawhide
compat-libstdc++-296.i686 2.96-143 rawhide
compat-libstdc++-33.i686 3.2.3-68 rawhide
compat-libstdc++-33.x86_64 3.2.3-68 rawhide
compat-readline5-devel.i686 5.2-17.fc12 rawhide
compat-readline5-devel.x86_64 5.2-17.fc12 rawhide
compat-readline5-static.x86_64 5.2-17.fc12 rawhide

Attachment: pgp00000.pgp
Description: PGP signature