Since the topic was mentioned - and I don't have anything else to do at
present, except type notes, I thought I'd mention dependency hell.  I
haven't posted anything to the list in probably close to a year.

Regardless of what package manager you happen to be using you can still
get caught in dependency hell because of lazy package maintainers that
don't name their packages properly or worse  - embed static version
numbers in the package metadata.

Personally, I'd rather see dpkg and rpm BOTH be tossed into the dustbin.

Binary package managers are dependent on cooked up pre-install or
post-install scripts and package metadata to work properly, and quite
often fall flat on their face if you do something unexpected.


Not to say that source distribs like Gentoo are any better.  I
definately don't want to spend 3-6 days compiling software just to
discover I left out a compiler flag and have to start over from scratch.



I think personally the greatest problem with UNIX in general is the fact
that most versions/derivatives follow the same standard that in naming
the dynamic libraries used by Sun - in effect:

name.so.version.subversion.

and then symlink it to some otherwise obscure name.

While this works well enough, it also causes 9/10ths of the dependency
problems that everyone has and necessitates the package metadata because
different distributors sometimes have very nasty habit of adding
additional numbers or names to the original libraries that they obtain
from an upstream provider.

Now the linker cache solves some of the dynamic resolution problems by
maintaining symbol data, and as a last resort you can always rename or
symlink to a different name.

I'd be much happier myself if they removed the version.subversion
portion of the name from the libraries - after all they symlink names to
remove version numbers anyway. They could also drop the POSIX tradition
of /usr/lib, /lib, and /usr/local/lib to place libraries in a common
directory with personalized versions installed in ~/lib.

Granted, again if your linker cache is properly working, the library
path is immaterial, because all you have to do is use ldconfig, but
there are so many idiots out there who like to hardcode paths into
software.

Most Linux distribs are finally getting it into their heads that you
have to leave the library names and version numbers the same as the
upstream provider intended in order to ensure compatibility.

The LSB (Linux Standard Base) is really a joke.  The community in
general can't agree on anything - much less a common directory and
package standard.

I think a percentage of developers out there realize some of this -
because there is a quiet but progressive groups working toward a
"componentized" Linux - where software is broken down into components
rather than distributions - and can be installed regardless of
distribution - RedHat or whatever.

There - done with my rambling for the moment.