If you need to deploy home brewed applications on a large amount of servers and frequently, you need some sort of application package management. Application packaging software creates a single file that contains the required applications files to be installed and possibly installation script and or metadata such as the application name, version, target architecture. etc.
System package management systems examples include: rpm included in RedHat/CentOS Linux distributions and dep for Ubuntu or Debian. These provide the ability to download and install packaged software from the distribution’s repository to the target server.
The benefits of application package managements are:
- Have the latest release of your application in a single, self contained file, bundled together with the instructions (scripts) how to install it.
- Can be easily transferred to any target server over the internet around the globe.
- Manage dependencies of the application to other packages.
- Automate the deployments of the applications.
If your organization produces software that needs to be installed on a regular basis on servers, then you may need to consider :
- Using the operating system’s built in package management (if any) – in Linux it can by yum/rpm, apt-get/dpkg.
However, if there is more than one target platform for the application (for example Linux and Windows, or need to support more than one Linux distribution) – you will need to build and maintain multiple packages, which increases the package development costs and tests.
- Write your own package management.
Requires proper design, development and testing.
- Use an open source application package management that is independent of the system’s package management.
The third option will save development time and will enable to have a packaging and installation solution that can work on multiple platforms. The down side is that the solution requires to adhere to the framework’s methodologies and rules, and requires each new server to have the framework installed before it will be possible to deploy packages.
I have searched the internet for independent package managers and found a couple package management tools that are open source:
Package management built using Ruby. Uses tar format for the packages.
GNU software package management. It is a beta stage and the project seems to be stalled since 2011.
Used by ArchLinux as the OS package management, however, it can be easily ported to other Linux distributions to build and manage your software deployments. It can be also ported to Windows by running it under Cygwin. Building new packages is simple.
pacman uses that .tar.gz or .tar.xz format for packages.
If you know about other independent package management systems, please let me know using the comments below.