Skel

A tool for deploying hostile applications on Unix

About skel

Skel is a tool for deploying applications on Unix and Unix-like systems. Examples of the problems it addresses are:

A common approach to this kind of problem is to deploy one application per (possibly virtual) machine. However, quite apart from being extravagant, this doesn't help in the case where the application's requirements are incompatible with those of the OS – for instance if the application requires an incompatible C++ standard library. In that case you might need to resort to deploying multiple versions of the OS to suit the application, which is a maintenance nightmare, or altering the shared library versions and hoping nothing minds, which is also a nightmare.

A better approach is to do some kind of "wrapping" of the application, usually replacing it by script of some kind which can set environment variables such as PATH and LD_LIBRARY_PATH to tell the application where to find its variant libraries and other requirements.

Skel is essentially a tool which automates this kind of wrapping, and allows a fair amount of control over the wrapper, which can manipulate the environment in various ways (ensuring variables are/are not set, appending or prepending to them and so on) before running the real application.

Skel thinks in terms of somewhat unfortunately-named "packages", which are not OS packages (RPMs etc) but simply directories which contain applications or libraries, with a layout which you might get by setting the prefix for a typical GNU autoconf script: configure --prefix=/path/to/package ....

Skel also allows multiple applications or versions of applications to coexist on the same host, with different configurations. This is far less resource-hungry than the single-application-per-host approach, even when using low-level virtualisation tools such as VMware. The need for this has been partly, but not completely, eliminated by very lightweight virtualisation techniques such as the Zones feature in Solaris 10 and later versions.

For more detail see skel's manual. The manual was written using TiddlyWiki: you will need JavaScript to read it.

While skel is reasonably carefully written, it remains essentially a cheap solution to an intractable problem. It does solve the problem in very many cases however.

Getting skel

Copyright Skel and its manual are copyright © 2004 lastminute.com, 2006 Tim Bradshaw. They are covered by a BSD-style license, which you can find here.
Here is the current version.
Please mail me with any bugs or comments.

Thanks

Skel was originally written in the summer of 2004 while I worked at lastminute.com. I'm grateful to LMN for allowing me to make it freely available. I'm especially grateful to Chris Gathercole, who arranged for this to happen. Chris and the other members of the search team at LMN, particularly Richard, also provided useful input to skel. Alex Duncan in dev and Ross Stubbs in syseng were also helpful at various times.

[TFEB]