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