In my opinion the current software-packaging/software-install system for Linux systems is a crappy thing:
Every distribution packages the most interesting and important packages for itself: KDE stuff, GNOME, compiler, apache, and add on packages like firefox. Therefore, each work is repeated not only twice but dozens of times. For Suse, for Fedora Core, for Ark Linux, for Debian, for Ubuntu, and so on. And the packages are usually not compatible between the different distributions.
This is dumb – I must know it because I’m part of the game (I package ktorrent and rsibreak for Fedora Core).
The reasons behind this is well known: there was no standard at the beginning, and therefore everyone did it his/her own way. These ways were different sometimes, depending on the roots of the packager. The result is as already mentioned: duplicate work (ha, if only, multiplicate work is closer to the truth), incompatibility – and the worst result is that software for Linux is usually released as the source code only, without any chance for an average computer user to install it.
Of course there are different attempts around to solve this problem: klik, zero-install, autopackage, etc. They all are honest attempts, all with very interesting advantages, but also with shortcomings. In any way, they are all more or less uninteresting because none of them really spread wide enough to really solve the problem.
But there is one attempt which spread at least wide enough to be interesting and which could solve this problem: I mean the LSB and the FHS standards of the Free Standards Group. Both are made to create a reliable platform on which everyone can install software cross all (LSB compliant) Linux installations.
While the FHS defines where files should be installed (and other things), the LSB defines how a binary package should be created a build, how it should look like, and so on. Also, it says what you can expect on such a system.
Sounds perfect, doesn’t it? It is even easier for me because the basics use an already existing format, the rpm package, which is used by Fedora Core also.
However, I now had the first glance at that book which describes all these things. But it was disappointing in some ways:
First of all this book seems to be outdated because some examples refer to the LSB v. 2.0 instead of 3.1 and the quality of the important graphics in the book is horrible.. Second, some rules are a bit strange: for example, you are supposed to install binary applications to
/opt/, and the binaries have to be at
/opt/application/bin. Well, so far so good. But you are not allowed to create links of the binary and the libraries to standard, path directories (see section 4). So as far as I see it this must be done by the system administrator himself – without this the application can only be launched with a direct link to the
/opt/application-name/bin directory. Something I do not like at all…
On the other hand it is said that applications which are provided as source-rpm or tar packet should be installed to
/usr/local/ – the question for me is now if this means all packages generated from Open Source code, or just packages build by the admin of the system himself.
Also, at least at this first glimpse I did not get the idea how this could help with a problem of installing applications twice: for example, ktorrent is definitely not part of the main Fedora system – it is a nice add on, that’s all. But it is installed to
/usr/ – what happens now if someone starts to produce a LSB compliant package for ktorrent and this is installed in
/opt. Than it would be on the system two times. How can we avoid that?
Also the LSB references seem to be flexible about the installation directory, if you install your package to
/opt/application-name or to
/opt/company-name/application-name. That again would mean that there could be installed two versions on one system. Ok, if two people try to build LSB compatible packages, seems to be unlikely…
However, the first glimpse was in a way disappointing, especially the thing with the admin-created links. All other stuff is unusual for me, but could be realised, I hope. I would like to create LSB packages for some applications, and if I would get used to it, I would try to create even more and more. But, well, first let’s start with one single package. I guess I should join some e-mail-list to realize that…