1
2SPILL(8) System Manager's Manual SPILL(8)
3
4
5
7 spill - segregated package install logical linker
8
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
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
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
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
202 To be written
203
204
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
213 This version of spill was written by Richard Curnow <rc@rc0.org.uk>
214
215
216
217
218 2006 SPILL(8)