We have a Linux server application that is comprised of a number of open-source tools as well as programs we’ve written ourselves. Ideally we would like to be able to install this application on any common Linux distribution.
In the past, we’ve written perl scripts to automate installs of this application. Unfortunately, due to idiosyncrasies of different Linux distros, the logic inside these install scripts gets horribly complex, and can change as new versions of each supported distro are released. Maintaining the installer thus becomes one of the most time-intensive parts of the project!
I’m looking for assistance, be it a framework, documentation, code samples, that can make this process less painful. Here are the types of things our installer needs to do:
-
Create user/group accounts
-
Create directory trees with specific ownership and permissions
-
Install open-source applications, potentially compiling them from source during install
-
Insert pre-compiled binaries, scripts, config files, and docs into specific directories
-
Register init-type startup and shutdown scripts
-
Generate encryption keys
-
Verify connectivity to a central server
Instead of the installer approach, I think a better way than having a single script that does it at install time is to have a build system which generates .deb or .rpm files suitable for installation on each system you have to support.
A poor man’s way of going at that might be to use checkinstall, which creates packages from the files installed via ‘make install’. So you’d build your app on each system and have the package magically created in the distro’s native format.