Stefano on August 29th, 2008
Chestnut Package Manager is a utility to handle executables and resource files in a transparent, platform independent and relocatable way. Its concept is similar to Apple bundles and Java archives. It is implemented in Python.
The application consists of a Python library and three executables:
- a runner, cnrun, which runs executables identified by the package name, the version and the entry point
- a path resolver, cnpath, which returns the absolute path of a resource given the same identification as above
- a lister, cnls, which provides a list of the packages available, and detailed information about their contents
The application solves the following problems:
- it is possible to invoke programs or obtain resources without knowledge of their absolute or relative path, making them accessible even after relocation of the package into another directory
- allows to bundle related executables and resources together into a logical container: the package
- allows pre-wrapping of executables in a transparent way
- allows very accurate control on the executed version
- allows to use the same package to store multiple platform-dependent executables or resources. The package can then be shared on NFS and the proper executable will be used honoring the platform.
