How do I choose a package format for Linux software distribution?
- by Ian C.
We have a Java-based application that, to date, we've been distributing as a tarball with instructions for deploying. It's mostly self-contained so deployment is fairly straight-forward:
Untar on the disk you'd like it to live on;
Make sure Java is in your path and a suitable distro and version;
Verify ownership and group on all the files
Start up the server processes with our start script
If the user wants to get in to start-on-boot stuff with SysV we have some written instructions and a template init file for it in our tarball.
We'd like to make this installation process a little more seamless; take care of the permissions and the init script deployment. We're also going to start bundling our own JRE with the application so that we're mostly free of external dependencies.
The question we're faced with now is: how do we pick a package format for distribution? Is RPM the standard? Can all package management tools deal with it now? Our clients primarily run RHEL and CentOS, but we do have some using SuSE and even Debian. If we can pick a distro-agnostic format we'd prefer that.
What about a self-extracting shell script? Something akin to how Java is distributed. If we're dependency-free would the self-extracting script be sufficient? What features or conveniences would we lose out on going with the script versus a proper package format meant for use by a package manager?