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:

  1. 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
  2. allows to bundle related executables and resources together into a logical container: the package
  3. allows pre-wrapping of executables in a transparent way
  4. allows very accurate control on the executed version
  5. 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.