Best Cross-Distro Installation Tools for Linux?
swillden asks: "I need to package up some commercial Linux software for multiple distributions (Red Hat Enterprise 3 and 4, Fedora, Novell Desktop, SuSE Professional and Enterprise, Mandrake and Debian), and I'm wondering what tools others have found useful. The software is closed source and needs to be very easy to install. This has been an ongoing problem for commercial software on Linux for some time. Has there been any progress?"
"So far, the options I'm looking into are:
I don't like the current InstallShield installer for multiple reasons. First, it's written in Java which is fine except that it can only run if a JRE is present. Requiring users to install a JRE so they can run the installer to install a (non-Java) product is really annoying. Also, it doesn't really know how to do any proper dependency management, so the developers had to take the approach of installing everything that might be required, often duplicating tools that might already be on the system, and sometimes even creating conflicts. Obviously this approach doesn't integrate with the native package management at all.
The Loki installer has some of the same limitations as InstallShield, but it doesn't require Java and it's very scriptable, so I could probably write code to do the dependency checking and be smarter about what to install.
Autopackage looks very interesting, and I'm going to take all of the docs with me to read on a flight this afternoon. However, I'm concerned that it may be unstable, as it's just reached a 1.0 release.
Finally, I could always just write an installer from scratch, but that may be even more work than creating all the distro-specific packages."
- Create distribution-specific packages using each distribution's tools. Nice in lots of ways, but a lot of work for ~11 different distributions.
- Use a commercial cross-distro installer like InstallShield. This is what the previous developers chose.
- Use one of the open source cross-distro installers, like autopackage or Loki.
- Write a custom installer.
I don't like the current InstallShield installer for multiple reasons. First, it's written in Java which is fine except that it can only run if a JRE is present. Requiring users to install a JRE so they can run the installer to install a (non-Java) product is really annoying. Also, it doesn't really know how to do any proper dependency management, so the developers had to take the approach of installing everything that might be required, often duplicating tools that might already be on the system, and sometimes even creating conflicts. Obviously this approach doesn't integrate with the native package management at all.
The Loki installer has some of the same limitations as InstallShield, but it doesn't require Java and it's very scriptable, so I could probably write code to do the dependency checking and be smarter about what to install.
Autopackage looks very interesting, and I'm going to take all of the docs with me to read on a flight this afternoon. However, I'm concerned that it may be unstable, as it's just reached a 1.0 release.
Finally, I could always just write an installer from scratch, but that may be even more work than creating all the distro-specific packages."
This would be like... something on the order of Microsoft Foundation Classes being promulgated for the larger framework outside of the kernel. The deuce you say!
Seriously, no, nothing really and truly fits the bill and putting the source code to the various distro package repository working groups is probably best in addition to actually hosting the source for anyone who wants it.
Just remember to start from the basics that have the widest applicability between distros. The lack of compatibility is a reflection of the wrongness of the idea that all you need is a kernel and some standards and the rest falls into place. Linux is not Windows when it comes to this sort of thing and this is one of the places it really needs to be more like it. Fark, there was a time when there were umpteen installation systems for Win apps and that didn't work for one platform never mind a scattered one like Linux.
If my grammar and spelling are off, I am [distracted/tired/careless] (take your pick)