Wednesday, October 15, 2008

There Is No Linux

Or at least there is no "Linux Operating System". What can be definitively identified as "Linux" is the kernel, which is only one part of an operating system. An operating system has many other parts and from what I can tell there's not even an attempt at consensus between the various packagers of Linux distributions.

My biggest gripe: I can't ask our engineering department to produce "an install for Linux". There ain't no such thing. There's RPM which RedHat and related distributions use. Debian and its children use .deb files. And even that doesn't accurately summarize the issue. Each sub-variation has its own structure and constituent components so they each need their own version of the .rpm or .deb file.

But wait, that's not all. Linux packages are nearly always dependent on other Linux packages, so when you go to install an RPM for one package there's a really good chance it will fail with a message that your system is missing some dependency. So you download and try to install the dependency and, guess what, it has two more dependencies. So you spend an hour tracking down all the dependencies before you can install the application you wanted.

So there's a fix for this too -- package management frameworks that handle the dependency tracking and installation. Unfortunately there's not one fix here either. The RedHat side of the house uses a utility called "yum" to interface between the RPM installation framework on the local computer and an application repository. The Debian camp has a similar framework called "apt". Both accomplish the same goal (making it somewhat easier to install software on Linux computers) but at the cost making it significantly harder to package software for Linux computers.

To build Asterisk for "Linux" actually requires us to create 32 and 64-bit versions of the application (minimally) then package them for the current versions of RedHat (.rpm) and for Debian (.deb). We then have to create slightly different packages for older versions of those distributions and for derivatives and cousins. To support the most popular current distributions of "Linux" actually requires more than 20 separate packages be built and maintained.

If I had to point a finger at one factor that's kept Linux from succeeding as a "mainstream" operating system, I'd point to this kluge. Until you can build for "Linux 2.6" and hit 99% of systems running the 2.6 kernel, Linux won't have reached its true potential.

1 comments:

Martini Agonistes said...

What was it that John Lennon said? "I don't believe in Linux, I just believe in me?"