[plug] Easy Installation: Linux Desktop Market

Cameron Patrick cameron at patrick.wattle.id.au
Sat Oct 29 18:42:34 WST 2005


Daniel J. Axtens wrote:

> For example, say I'm packaging neuronstorm (neuronstorm.sf.net). It's
> got files that should go to /usr/bin, /usr/share/neuronstorm/,
> man1/neuronstorm.1, info somewhere, and /usr/share/doc/neuronstorm.
> That's (hopefully) the same everywhere, and, for distros that require
> things in different places, ther relevent control files could be set
> up differently.
> 
> So, if I'm installing on Debian, it would just pull out the
> debian/control, put the archive together, and send it off to dpkg.
> Mdk/FC/RH - pull out the spec file, put the archive together, send it
> to RPM, etc.

For packages that simple, you could probably get away with using alien
to convert from .deb to the package format of the week - assuming that
the libraries are binary compatible.  Mostly they will be, kinda.
However, some examples off the top of my head:

 - Debian Sarge shipped with a glibc 2.3.2 which includes some patches
   from glibc 2.3.4; as a result a sarge system will run binaries
   compiled on other distros' glibc <= 2.3.2 but binaries compiled on
   sarge are likely to require glibc >= 2.3.4.

 - Ubuntu Hoary was released a month or so before sarge and included
   an older glibc (2.3.2 without the patches) but newer GTK and GNOME
   library stack.  As a result, GTK apps compiled on hoary won't run
   on sarge, and vice versa.

 - The C++ ABI changed with gcc 3.2 and so compiled with gcc 3.2 will
   not run on machines with prior gcc versions.  It happened again
   with gcc 4.0.

 - There are approximately umpteen different ABIs for libpng.  Most
   distros will allow you to have several of them installed at once
   so that apps requiring different libpng versions can be
   simultaneously installed.  However, if a programme depends on two
   different libraries which have been compiled against different
   libpngs, all hell can break loose when you least expect it.

(Note that the above are worst-case rules, and some apps won't use the
incompatible parts of the libraries.)

Worse than this, glibc hasn't supported static linking for non-trivial
applications for quite a while, so saying "here's a nice statically
linked binary bundle" won't work either - besides the incredible waste
involved in duplicating libraries already present on the system.

I'm not sure what the solution to all this is (and I'm about to eat
dinner), but I can't see an obvious easy one.

Cameron.




More information about the plug mailing list