Oct 30, 2009

Please Tell Me About Packaging...

Call me ignorant, but there's a lot of things below the surface of Linux, which I know absolutely nothing about. I'm wondering why distributions, or at least the large ones, haven't standardize packaging. Can you tell me?

What I do know
Linux package formats are the different file formats used to package software for various Linux distributions.
A software package refers to computer software packaged in an archive format to be installed by a package management system or a self-sufficient installer.
Linux distributions are normally segmented into packages. Each package contains a specific application or service.
from Wikipedia

Whether it is Ubuntu, Fedora, Arch, OpenSuse, PCLinuxOS, Gentoo we need different packages for each distribution. And because different distributions needs different packages and formats, there's a lot of lost effort. Many people are duplicating the packaging effort, when we could be so much more efficient.
The current state of packaging is a setback for the distributions, the developers and the users.
You could of course argue that this situation is not a problem for the experienced Linux users — they might
choose to install directly from source code or at least make decisions about the best way of installing the software themselves. However, for a newcomer in the GNU/Linux world, this situation is pretty confusing.

What I don't understand
I agree that diversity is good, but the waisted effort in this format war just seems insane. If just some of the largest distributions would get together and standardize on one of the current formats, like .Deb or .RPM. But, really, it doesn't matter - just choose one and everyone just use it!
Are we stuck because developers can’t agree on which format is the superior one? Would it be possible to start over, in a joint effort to create a new format with all the capabilities?

I know Linux Standard Base have tried to solve these challenges, but at the moment LSB just looks like a stranded whale. If every distribution could utilize the same packages - that would be amazing!
I can of course understand that the transition from one format to another would require a huge amount of work, but I think it would be worth it in the end.

Feel free to enlighten me :-)

UPDATE: When the question ’should we put your advocacy weight behind one distro?' was asked at OggCamp 2009, the conversation also covered packaging!


  1. If everyone would think like you, we would now all be speaking German.

  2. @The Crap Blog Detective: Everyone speaking the same language would be a good thing you know. Why do you say it like its bad?

    I do agree with the author, I'm also curious why we are unable to use a standard package system.

  3. Adopting a single package format (Deb or RPM) will solve nothing on its own. You still wouldn't be able to install a Fedora Deb on Ubuntu, for instance. This is because the dependencies have different names.

    Let's say the package depends on FFmpeg with restricted formats. On Ubuntu, you need to install "libavcodec-extra-52" (among others) to get a restricted-formats-FFmpeg. On every non-Debian-based distribution, that package has a different name, so the "libavcodec-extra-52" dependency cannot be resolved and the package can't be installed.

    You'd need to also have all the distributions adopting the same naming scheme, or have a bunch of metapackages on each distribution with the same name (for instance, every distribution can have "meta-restricted-ffmpeg" as a package that pulls in a restricted-formats FFmpeg.

    Once you've got a standardized naming scheme, there's pretty much no reason to adopt a single packaging format anyway, as packages can be converted from one format to another. If the naming scheme was in place, you'd probably find Ubuntu's gDebi being modified to install RPMsm, and it would be as seamless as installing DEBs.

  4. The people involved in developing each of these packaging standards have all invested a lot of time, money and effort and I imagine it's just hard to accept giving up something like that, even it is for the greater good. Which one would you pick for example? It's a tough problem that no-one's quite worked out how to solve whilst keeping everyone happy. PackageKit (http://www.packagekit.org/) is a good attempt at trying to solve the problems without changing the underlying infrastructures.