Distro non-wars... was Re: [plug] Red Hat
Craig Ringer
craig at postnewspapers.com.au
Tue Sep 23 11:59:49 WST 2003
> As you say, the situation looks a lot more challenging than I had thought.
> Basically, if one created (or in user-land, downladed) a binary it would
> be pretty much locked into a specific distro, or at the least, into a
> specific set of underlying libraries and APIs.
Not entirely - the libraries are all, by and large, mostly the same
between distros. It's that "mostly" that's the bugger - look at qt on
Red Hat for an example of something that gives developers headaches. On
the flip side, trying to write programs that work over several years
worth of linux releases can be quite hard, since there seems to always
be something breaking binary compatability - gcc-3 transition, g++3.2
transition, glibc upgrades, etc.
Another fun thing is that even between different RPM based distros, some
distros call the same library by a different name in the package
management database - so you get an RPM that requires "libblah1" and the
distro provides it, but called "blahlib1".
Just to make life even more fun, sometimes different distros have
different sonames for the same library - libblah.so.0 under Debian might
be libblah.so.1 under RH ... then debian updates to the next
binary-incompatable version of libblah and calls it, logically,
libblah.so.1 ... *arrggh*.
The latter issue should be helped by the efforts of the LSB, but the
constantly transitioning incompatable libs and compilers, plus the
varying patches the different distros make to things, are quite bad
enough. Especially when just dealing with the different way distros do
runlevels, firewalling, and other small stuff is quite tricky enough. To
top it all off, one distro will have only gtk-2.0.ancient (debian) while
another will have only gtk2-4.x (debian sid/gentoo), etc - versions
change fast, and trying to make an app work nicely on all of them is
going to be hard.
This is probably part of the reason why well packaged commercial apps
are so rare. You can't package once, run anywhere - so they resort to
other methods. Things like:
- shell script installers that may or may not tell you what they'll
do/are doing
- static binaries so they'll actually run on a variety of distros
- 'just untar it' packaging (not too bad in many ways)
Then again, it can be done right. Look at Sun - they've packaged the JRE
and JDK universally (well, not in Debs but I can't blame them). I'm sure
it's not perfect, but it's a darn sight better than many other things.
Acrobat reader isn't too bad either, though I'm REALLY tired of having
to edit /usr/local/Acrobat5/bin/acroread to add 'export LC_ALL=en_AU;
export LANG=en_AU" to stop it crashing due to a unicode locale. Is it
really that hard to just add a check in the top of the shell script as
distributed instead of asking the user to change their locale as Adobe do?
This doesn't just go for commerical apps, though. OpenOffice is a good
example of an app that's hard to package for Linux because of the huge
variation in distros, hence the 'untar in /usr/local' approach it takes.
That's not bad, but it would be nice to be able to make packages that
just worked for all distros. I'm sure it jumps through a fair few hoops
to get binaries that run on all of them, too.
Basically, IMHO all this stuff is holding Linux back. Much of it is just
silly, like varying names for packages (lots of which is just historical
baggage now) and different sonames. Other issues are trickier, like
vendors patching major libraries heavily (*cough*RH*cough*) and
different package management systems.
Hopefully this will improve over time, but the vendors will have to deal
with compromise - possibly breaking backward compatability of packages
to fix issues with sonames and package database names. It needs to
happen, but it won't be easy.
Craig Ringer
_______________________________________________
plug mailing list
plug at plug.linux.org.au
http://mail.plug.linux.org.au/cgi-bin/mailman/listinfo/plug
More information about the plug
mailing list