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:

  1. [Ubuntu 11.04/64]
  2. vendor=Ubuntu
  3. version=11.04
  4. arch=x86_64
  5. package=http://www.example.org/dist/myprogram-x.y.z-ubuntu-x86_64.deb
  7. [Ubuntu 11.04/32]
  8. vendor=Ubuntu
  9. version=11.04
  10. arch=i386|i586|i686
  11. package=http://www.example.org/dist/myprogram-x.y.z-ubuntu-i386.deb
  13. [Generic deb/64]
  14. format=deb
  15. arch=x86_64
  16. package=http://www.example.org/dist/myprogram-x.y.z-x86_64.deb
  18. [Generic deb/32]
  19. format=deb
  20. arch=i386|i586|i686
  21. package=http://www.example.org/dist/myprogram-x.y.z-i386.deb
  23. [Fedora]
  24. # Can be found in regular repository
  25. vendor=Fedora
  26. package=myprogramm
  28. [Generic rpm/64]
  29. format=rpm
  30. arch=x86_64
  31. package=http://www.example.org/dist/myprogram-x.y.z-x86_64.rpm
  33. [Generic rpm/32]
  34. format=rpm
  35. arch=i386|i586|i686
  36. package=http://www.example.org/dist/myprogram-x.y.z-i386.rpm
  38. [Gentoo]
  39. format=ebuild
  40. package=http://www.example.org/dist/myprogram-x.y.z.ebuild
  42. [Windows/32]
  43. vendor=Microsoft
  44. os=Windows
  45. arch=i386
  46. package=http://www.example.org/dist/myprogram-x.y.z-i386.exe
  48. [Windows/64]
  49. vendor=Microsoft
  50. os=Windows
  51. arch=x86_64
  52. package=http://www.example.org/dist/myprogram-x.y.z-x86_64.exe
  54. [OS-X]
  55. vendor=Apple
  56. os=OS X
  57. package=http://www.example.org/dist/myprogram-x.y.z.dmg
  59. [Fallback]
  60. 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

Add new comment