A generic meta packaging format for linux distributions?
I'm doing some end-user support for Linux desktops (family and friends). From a chat with my mother and observation of our trainee I've noticed that what's normal users making the most head pains are the different packaging formats. For example, when you want to download Google Chrome Linux users are confronted with four different options:
- 32-Bit-DEB
- 64-Bit-DEB
- 32-Bit-RPM
- 64-Bit-RPM
Sometimes there are even different .deb's or .rpm's for multiple systems (Debian/Ubuntu, Fedora/OpenSuSE/Mandriva, ...). And of course there are package managers that have a fundamentally different design philosophy (emerge or ABS).
Even if the requested package could be found in the distributions package repository the very first step for new linux users is: Google the vendors homepage and click "download". As I don't think there will ever be a "one and only" package manager for all distributions maybe we should start thinking about some kind of "meta-package-format" (MPF) that's a simple text file which contains parsable information about plattform specific packages. Some kind of computer readable download page. I think of it as an INI file with various sections and conditions that have to match. The first section that matches all conditions takes it.
A short example how this might look like:
[Ubuntu 11.04/64] vendor=Ubuntu version=11.04 arch=x86_64 package=http://www.example.org/dist/myprogram-x.y.z-ubuntu-x86_64.deb [Ubuntu 11.04/32] vendor=Ubuntu version=11.04 arch=i386|i586|i686 package=http://www.example.org/dist/myprogram-x.y.z-ubuntu-i386.deb [Generic deb/64] format=deb arch=x86_64 package=http://www.example.org/dist/myprogram-x.y.z-x86_64.deb [Generic deb/32] format=deb arch=i386|i586|i686 package=http://www.example.org/dist/myprogram-x.y.z-i386.deb [Fedora] # Can be found in regular repository vendor=Fedora package=myprogramm [Generic rpm/64] format=rpm arch=x86_64 package=http://www.example.org/dist/myprogram-x.y.z-x86_64.rpm [Generic rpm/32] format=rpm arch=i386|i586|i686 package=http://www.example.org/dist/myprogram-x.y.z-i386.rpm [Gentoo] format=ebuild package=http://www.example.org/dist/myprogram-x.y.z.ebuild [Windows/32] vendor=Microsoft os=Windows arch=i386 package=http://www.example.org/dist/myprogram-x.y.z-i386.exe [Windows/64] vendor=Microsoft os=Windows arch=x86_64 package=http://www.example.org/dist/myprogram-x.y.z-x86_64.exe [OS-X] vendor=Apple os=OS X package=http://www.example.org/dist/myprogram-x.y.z.dmg [Fallback] package=http://www.example.org/dist/myprogram-x.y.z.tar.gz
Now all that you have to do is to provide this MFP file for download. The MFP manager will evaluate the conditions, download the sufficient package format and give it to the system dependent package manager.
What do you think about this? Am I reinventing the wheel? Is it just a 15th standard? Or is this the idea that helps end users to get in touch with the various linux distributions out there?
Edit: Inserted examples for other OS