tpkg is a tool for packaging and deploying applications. It is designed to work alongside your operating system's packaging tool. The deployment features in tpkg are designed to scale to deployments across hundreds or thousands of systems.
The packaging features of tpkg work in a similar fashion as many OS packaging tools like rpm, dpkg, SysV, etc, but with some additional features. Many shops just use the OS packaging system for their local applications, so why would you want to use a separate tool?
- tpkg is cross platform, so although you may have two or three different operating systems in your environment you can use a common tool to package and deploy your applications on those systems.
- Separating the packaging of applications from the base OS system ensures that application packages and their dependencies don't interfere with the functioning of the base OS. For example, your OS comes with Perl 5.6.1, but your application needs 5.8.9. By using tpkg and installing your application and the newer version of Perl in a isolated location you avoid any conflicts with base OS utilities that use the OS copy of Perl.
- tpkg supports encrypting some or all of the files in the package, so your application package can contain secret files like SSL or SSH keys, database passwords, etc.
- tpkg supports dependencies both on other tpkg packages as well as native packages, and tpkg handles dependency resolution and automatic dependency installation of both tpkg and native dependencies.
- tpkg supports external hooks that can be used to tie into a system configuration management tool, allowing packages to request accounts, NFS mounts, kernel settings, etc.
- Local caching of packages allows for rapid rollbacks.
- An optional ReportingServer allows you to see what packages are installed on systems in a central location.
The deployment features of tpkg allow you to automate the installation, upgrade or removal of packages across a large number of systems. Tpkg handles SSH and sudo prompts that might be encountered in connecting to the target systems. The parallelism of deployment operations can be adjusted so that deployments can be done in a rolling fashion at the desired rate.