environment it allows each level of support to function
independently. The application level has the ability to install and
use the underlying system, while also allowing overriding those
The result is that system administrators can safely upgrade systems
without being limited by an application requirements. An application
$ XE_ROOT=xenv xe run python
+A package is a single file that contains a directory structure to
+untar on top a xenv. It may place files anywhere in the xenv and
+is responsible for not corrupting the environment.
+The only restriction is that it may not add any hidden (.) files
+The package must be a tarball (.tar) or gzipped tar (.tar.gz). It
+must be named using the following pattern: ::
+The version must comply with the semver.org specification.
+The file hierarchy can be whatever the package creator likes. The
+only restrictions are the following.
+The usr directory is where an xenv installs its core utilities and
+executables. For example, we install a virtualenv in /usr for
+If you create a /local/bin, it will be added to the PATH when
+running something via xe.
+A xenv package does not aim to be a "real" package format and as
+such, it may wrap a more complex package such as an RPM. For this
+reason we provide a package hook in order to allow installing
+these sorts of packages.
+When a package is installed (untarred) in the xenv, an install
+script can be placed at /packages/install. This file must be
+executable. It may use any language that is available on the host
+After it is installed, the install script will be moved to: ::
+In the future xenv will also supporting a "uninstall" hook file as
+well that can be used to script removing packages that might not have
+been untarred. For example, if you wanted to make a package that
+installed some packages from pypi, it might be a single tarball with
+an install and uninstall script.
+Here is what an install script might look like: ::
+ xe run pip install pyramid
+ xe run pip install http://urlto.somerepo.com/my-pyramidapp-4.3.5.tar.gz
+And the uninstall might be: ::
+ xe run pip uninstall my-pyramidapp
+ xe run pip uninstall pyramid
+In this way the "package" is really just a tool to deploy the
+application via other means.