spill 0.8

A tool that creates symbolic links to programs installed in other directories
spill is a program for creating set of symbolic links from one directory hierarchy which point to corresponding filenames in a separate directory hierarchy. spill's primary use is to allow packages built from source to be installed in separate directory trees, which are all linked together under a common directory tree (e.g. /usr/local) to reduce the length of the PATH environment variable. An example might be:

% tar xzvf foobar-0.1.tar.gz
% cd foobar-0.1
% ./configure --prefix=/app/foobar/0.1-1
% make
% sudo make install
% sudo spill /app/foobar/0.1-1 /usr/local

You might think this looks over-complicated and be wondering why you can't just do

% cd foobar-0.1
% ./configure --prefix=/usr/local
% make
% sudo make install

since this would avoid the need to create the links at all. Well, suppose you do this for tens or hundreds of packages you compile yourself. Try taking a look at the contents of one of the directories under /usr/local. How on earth do you tell which files were installed by which programs? This is a maintenance nightmare if you need to delete packages you don't need anymore. The extra effort at configure / compile / install time will pay dividends later, as I've found to my cost in the past.

If spill detects that it needs to replace a link in the target directory during installation, it will check whether the link currently points to the corresponding file in a different version of the same program/package.

If so, it will do the replacement automatically. If the existing link points to something in a different program/package spill will complain and won't carry out any of the installation. (You have to resolve the conflict by hand in this case then re-run spill.)

spill is similar in idea to several other programs such as stow, depot, relink etc. However spill is written in C, and compiles to a standalone binary, so has no dependence on perl or another interpreter being available. This may be useful when building up a system from almost nothing.

Also, spill makes very few assumptions about the destination directory. In particular, it doesn't assume it is solely responsible for managing the contents of that hierarchy. All it cares about is that it can create links to a new package without any conflicts occurring. (If a conflict is detected, it aborts the operation before the filesystem has been modified at all.)

last updated on:
December 22nd, 2009, 12:01 GMT
developed by:
Richard Curnow
license type:
GPL (GNU General Public License) 
ROOT \ Utilities


In a hurry? Add it to your Download Basket!

user rating 21



Rate it!

Add your review!