1
2SPILL(8)                    System Manager's Manual                   SPILL(8)
3
4
5

NAME

7       spill - segregated package install logical linker
8

SYNOPSIS

10   Installation
11       spill  [  -f  ] [ -n ] [ -q ] [ -x ] [ -r ] [ -o ] [ -l <file> | --con‐
12       flict-file=<file>  ]  tool_install_path   [   link_install_path   ]   [
13       ignore_path...  ]
14
15
16   Removal
17       spill -d [ -q ] tool_install_path [ link_install_path ]
18
19       spill -D [ -q ] package_name [ link_install_path ]
20
21
22   Usage summary
23       spill -h
24
25
26   Display version
27       spill -V
28
29

DESCRIPTION

31       spill is a tool which creates symbolic links under a destination direc‐
32       tory which point to the corresponding locations under a  source  direc‐
33       tory.
34
35       The  original  use of spill is to support building programs from source
36       with separate installation prefixes, so that individual  programs  (and
37       versions  of the same program) can be kept apart, yet by creating links
38       to the installations under /usr/local, it is convenient to  access  the
39       programs  without PATH, LD_LIBRARY_PATH, MANPATH etc having to get out-
40       of-hand.
41
42       The tool can also be used to  remove  a  set  of  links  to  a  package
43       installed elsewhere.
44
45

ARGUMENTS

47       tool_install_path
48              This  is  the head of the directory tree at which the package is
49              installed.
50
51              If an absolute path is given, absolute symbolic  links  will  be
52              created.
53
54              If  a  relative  path  is given, relative symbolic links will be
55              created.  Note, the path  should  be  relative  to  the  current
56              directory, not to the destination (link_install_path) directory.
57
58              spill  assumes  that  the  final  two  directory  components  of
59              tool_install_path are the package name, and the package version,
60              in  that  order.   For example, suppose binary installations are
61              placed under /apps.  Version 1.1  of  a  package  called  foobar
62              would  be  installed  under /apps/foobar/1.1.  So there would be
63              directories like /apps/foobar/1.1/bin, /apps/foobar/1.1/man/man1
64              etc.  This approach allows spill to auto-detect when an existing
65              package is being upgraded by a newer version, and  not  complain
66              about links being replaced in such circumstances.
67
68
69       link_install_path
70              This is the head of the directory tree where the links should be
71              placed.  If omitted, it defaults to the current directory.
72
73
74       ignore_path...
75              This is a space separated list of paths to ignore in the linking
76              process.  Each path is relative to tool_install_path
77
78              A  frequent problem when using spill is the dir file in the info
79              subdirectory.  The make install process typically creates one of
80              these  files in every tool installation, and these conflict when
81              spill tries to create links.  (In the  world  the  designers  of
82              info  envisaged,  everything installs to a common directory tree
83              and there is a single info/dir file that gathers the topics  for
84              all of the tools.)
85
86              To  ignore the conflicting info/dir file, spill would be invoked
87              like this:
88
89                  spill /apps/foo/1.0 /usr/local info/dir
90
91              Note, if one of the  ignored  relative  paths  is  a  directory,
92              everything under that directory is ignored too.
93
94
95       -f,    --force
96              Normally,   spill   will   check   that   tool_install_path  and
97              link_install_path each have at least one of the following subdi‐
98              rectories  :  bin,  lib  or  sbin.  This provides a sanity check
99              against user errors in specifying the directories on the command
100              line.  The -f option allows this checking to be overridden.
101
102
103       -n,    --dry_run
104              This  option  does  a  'dry-run',  i.e. reports on any potential
105              install conflicts  then  stops  without  actually  creating  any
106              links.
107
108
109       -q,    --quiet
110              This  option means 'quiet'.  Only errors will be reported.  Nor‐
111              mally, successful link creations are reported too.
112
113
114       -r,    --retain
115              This option causes links to an older version of the  package  to
116              be  retained  if  they  are not replaced by an equivalent in the
117              newer version of the package.
118
119              The default is to remove all links to  the  currently  installed
120              version,  before  installing  the  new version.  This avoids the
121              (usually) unwanted references to older versions.
122
123
124       -x,    --expand
125              This option means 'expand'.  Suppose  a  single  package  called
126              wibble  has  already  been  linked under /usr/local using spill.
127              The directory /usr/local/man would probably be linked  to  some‐
128              thing  like  /apps/wibble/1.0/man.  Now, suppose spill is called
129              to install package foobar under /usr/local, and this package has
130              a  manpage  also.  spill wouldn't be able to link /usr/local/man
131              to /apps/foobar/1.1/man, because that would break access to wib‐
132              ble's  manpage.   In  this  case,  a  "NEEDEXPN"  error  will be
133              reported during the pre-installation check.  This means that the
134              symbolic  links  to  directories  need  to  be  "expanded", i.e.
135              replaced by directories containing links to the contents of  the
136              directory  that  they  used  to be linked to.  spill can perform
137              such expansions automatically if the  -x  switch  is  specified.
138              This  option  is not the default, though, because it will modify
139              the filesystem even if -n is specified.
140
141
142       -o,    --override
143              This option means 'override'.  If the destination tree  contains
144              links  that conflict with those spill wants to create to link in
145              the new package, normally spill will report  the  conflicts  and
146              give up.  If -o is specified, the existing links will be removed
147              and the links pointing to the new package will take their place.
148              This  is  useful if the file in the existing package and that in
149              the new package provide basically the same data, but the one  in
150              the new package is more up to date than the existing one.
151
152
153       -l conflict_filename
154       --conflict-list=filename
155              When  there  are  conflicts  between  the tool you are trying to
156              install and the existing installation, this  option  allows  the
157              list  of conflicting links to be written to a file.  This can be
158              expanded as the ignore-path argument on another spill run.
159
160
161       -d
162       --delete-tree
163              Delete an installation, given the path to the installed tree and
164              the path to the area where the symlinks are.
165
166              Note  that  -d  does not actually delete the installed software.
167              It only removes the symlinks that point to it.  However,  it  is
168              useful  in  the  case  where  you intend to remove the installed
169              software in a separate step, and avoids the symlink  area  being
170              left with stale symlinks.
171
172
173
174       -D
175       --delete-pkg
176              Delete  an  installation,  given the name of the package and the
177              path to the area where the symlinks are.   This  relies  on  the
178              information  stored  in the .spill subdirectory of the link area
179              to know what needs to be deleted.
180
181              Note that -D does not actually delete  the  installed  software.
182              It  only  removes the symlinks that point to it.  However, it is
183              useful in the case where you  intend  to  remove  the  installed
184              software  in  a separate step, and avoids the symlink area being
185              left with stale symlinks.
186
187
188
189

EXAMPLE

191       Suppose you want to build and install a package called foobar,  version
192       1.1.  The steps you might take would be
193
194       tar xzvf foobar-1.1.tar.gz
195       cd foobar-1.1
196       make
197       make install
198       spill /apps/foobar/1.1 /usr/local
199
200

OTHER POSSIBILITIES

202       To be written
203
204

SIMILAR PROGRAMS

206       Some  programs  which carry out a similar function to spill are : stow,
207       depot, graft, relink
208
209       (Apologies to other programs of this nature that I've missed out.)
210
211

AUTHOR

213       This version of spill was written by Richard Curnow <rc@rc0.org.uk>
214
215
216
217
218                                     2006                             SPILL(8)
Impressum