Grafted root commit from savannah git master:
[gnu-stow.git] / stow.info
blob7b6b9debebd5af78e753cdbb8d672ab4e0166a2e
1 This is stow.info, produced by makeinfo version 4.12 from stow.texi.
3 INFO-DIR-SECTION Administration
4 START-INFO-DIR-ENTRY
5 * Stow: (stow).           GNU Stow.
6 END-INFO-DIR-ENTRY
8    This file describes GNU Stow version 2.0.2, a program for managing
9 the installation of software packages.
11    Software and documentation Copyright (C) 1993, 1994, 1995, 1996 by
12 Bob Glickstein <bobg+stow@zanshin.com>.  Copyright (C) 2000, 2001
13 Guillaume Morin <gmorin@gnu.org>.  Copyright (C) 2007 Kahlil (Kal)
14 Hodgson <kahlil@internode.on.net>.
16    Permission is granted to make and distribute verbatim copies of this
17 manual provided the copyright notice and this permission notice are
18 preserved on all copies.
20    Permission is granted to copy and distribute modified versions of
21 this manual under the conditions for verbatim copying, provided also
22 that the section entitled "GNU General Public License" is included with
23 the modified manual, and provided that the entire resulting derived
24 work is distributed under the terms of a permission notice identical to
25 this one.
27    Permission is granted to copy and distribute translations of this
28 manual into another language, under the above conditions for modified
29 versions, except that this permission notice may be stated in a
30 translation approved by the Free Software Foundation.
32 \x1f
33 File: stow.info,  Node: Top,  Next: Introduction,  Prev: (dir),  Up: (dir)
35    This manual describes GNU Stow 2.0.2, a program for managing the
36 installation of software packages.
38 * Menu:
40 * Introduction::                  Description of Stow.
41 * Terminology::                   Terms used by this manual.
42 * Invoking Stow::                 Option summary.
43 * Installing Packages::           Using Stow to install.
44 * Deleting Packages::             Using Stow to uninstall.
45 * Conflicts::                     When Stow can't stow.
46 * Deferred Operation::            Using two passes to stow.
47 * Mixing Operations::             Multiple actions per invocation.
48 * Multiple Stow Directories::     Further segregating software.
49 * Target Maintenance::            Cleaning up mistakes.
50 * Resource Files::                Setting default command line options.
51 * Compile-time vs Install-time::  Faking out `make install'.
52 * Bootstrapping::                 When stow and perl are not yet stowed.
53 * Reporting Bugs::                How, what, where, and when to report.
54 * Known Bugs::                    Don't report any of these.
55 * GNU General Public License::    Copying terms.
56 * Index::                         Index of concepts.
58  --- The Detailed Node Listing ---
60 Compile-time and install-time
62 * GNU Emacs::
63 * Other FSF Software::
64 * Cygnus Software::
65 * Perl and Perl 5 Modules::
67 \x1f
68 File: stow.info,  Node: Introduction,  Next: Terminology,  Prev: Top,  Up: Top
70 1 Introduction
71 **************
73 Stow is a tool for managing the installation of multiple software
74 packages in the same run-time directory tree.  One historical difficulty
75 of this task has been the need to administer, upgrade, install, and
76 remove files in independent packages without confusing them with other
77 files sharing the same file system space.  For instance, it is common to
78 install Perl and Emacs in `/usr/local'.  When one does so, one winds up
79 with the following files(1) in `/usr/local/man/man1':
81      a2p.1
82      ctags.1
83      emacs.1
84      etags.1
85      h2ph.1
86      perl.1
87      s2p.1
89 Now suppose it's time to uninstall Perl.  Which man pages get removed?
90 Obviously `perl.1' is one of them, but it should not be the
91 administrator's responsibility to memorize the ownership of individual
92 files by separate packages.
94    The approach used by Stow is to install each package into its own
95 tree, then use symbolic links to make it appear as though the files are
96 installed in the common tree.  Administration can be performed in the
97 package's private tree in isolation from clutter from other packages.
98 Stow can then be used to update the symbolic links.  The structure of
99 each private tree should reflect the desired structure in the common
100 tree; i.e. (in the typical case) there should be a `bin' directory
101 containing executables, a `man/man1' directory containing section 1 man
102 pages, and so on.
104    Stow was inspired by Carnegie Mellon's Depot program, but is
105 substantially simpler and safer.  Whereas Depot required database files
106 to keep things in sync, Stow stores no extra state between runs, so
107 there's no danger (as there was in Depot) of mangling directories when
108 file hierarchies don't match the database.  Also unlike Depot, Stow will
109 never delete any files, directories, or links that appear in a Stow
110 directory (e.g., `/usr/local/stow/emacs'), so it's always possible to
111 rebuild the target tree (e.g., `/usr/local').
113    For information about the latest version of Stow, you can refer to
114 http://www.gnu.org/software/stow/.
116    ---------- Footnotes ----------
118    (1) As of Perl 4.036 and Emacs 19.22.
120 \x1f
121 File: stow.info,  Node: Terminology,  Next: Invoking Stow,  Prev: Introduction,  Up: Top
123 2 Terminology
124 *************
126    A "package" is a related collection of files and directories that
127 you wish to administer as a unit -- e.g., Perl or Emacs -- and that
128 needs to be installed in a particular directory structure -- e.g., with
129 `bin', `lib', and `man' subdirectories.
131    A "target directory" is the root of a tree in which one or more
132 packages wish to _appear_ to be installed.  A common, but by no means
133 the only such location is `/usr/local'.  The examples in this manual
134 will use `/usr/local' as the target directory.
136    A "stow directory" is the root of a tree containing separate
137 packages in private subtrees.  When Stow runs, it uses the current
138 directory as the default stow directory.  The examples in this manual
139 will use `/usr/local/stow' as the stow directory, so that individual
140 packages will be, for example, `/usr/local/stow/perl' and
141 `/usr/local/stow/emacs'.
143    An "installation image" is the layout of files and directories
144 required by a package, relative to the target directory.  Thus, the
145 installation image for Perl includes: a `bin' directory containing
146 `perl' and `a2p' (among others); an `info' directory containing Texinfo
147 documentation; a `lib/perl' directory containing Perl libraries; and a
148 `man/man1' directory containing man pages.
150    A "package directory" is the root of a tree containing the
151 installation image for a particular package.  Each package directory
152 must reside in a stow directory -- e.g., the package directory
153 `/usr/local/stow/perl' must reside in the stow directory
154 `/usr/local/stow'.  The "name" of a package is the name of its
155 directory within the stow directory -- e.g., `perl'.
157    Thus, the Perl executable might reside in
158 `/usr/local/stow/perl/bin/perl', where `/usr/local' is the target
159 directory, `/usr/local/stow' is the stow directory,
160 `/usr/local/stow/perl' is the package directory, and `bin/perl' within
161 is part of the installation image.
163    A "symlink" is a symbolic link.  A symlink can be "relative" or
164 "absolute".  An absolute symlink names a full path; that is, one
165 starting from `/'.  A relative symlink names a relative path; that is,
166 one not starting from `/'.  The target of a relative symlink is
167 computed starting from the symlink's own directory.  Stow only creates
168 relative symlinks.
170 \x1f
171 File: stow.info,  Node: Invoking Stow,  Next: Installing Packages,  Prev: Terminology,  Up: Top
173 3 Invoking Stow
174 ***************
176 The syntax of the `stow' command is:
178      stow [OPTIONS] [ACTION FLAG] PACKAGE ...
180 Each PACKAGE is the name of a package (e.g., `perl') in the stow
181 directory that we wish to install into (or delete from) the target
182 directory.  The default action is to install the given packages,
183 although alternate actions may be specified by preceding the package
184 name(s) with an ACTION FLAG.  Unless otherwise specified, the stow
185 directory is assumed to be the current directory and the target
186 directory is assumed to be the parent of the current directory, so it
187 is typical to execute `stow' from the directory `/usr/local/stow'.
189 The following options are supported:
191 `-d DIR'
192 `--dir=DIR'
193      Set the stow directory to DIR instead of the current directory.
194      This also has the effect of making the default target directory be
195      the parent of DIR.
197 `-t DIR'
198 `--target=DIR'
199      Set the target directory to DIR instead of the parent of the stow
200      directory.
202 `--ignore='<regex>''
203      This (repeatable) option lets you suppress acting on files that
204      match the given perl regular expression.  For example, using the
205      options
207           --ignore='~' --ignore='\.#.*'
209      will cause stow to ignore emacs and CVS backup files.
211      Note that the regular expression is anchored to the end of the
212      filename, because this is what you will want to do most of the
213      time.
215 `--defer='<regex>''
216      This (repeatable) option lets you defer stowing a file matching
217      the given regular expression, if that file is already stowed by
218      another package.  For example, the following options
220           --defer='man' --defer='info'
222      will cause stow to skip over pre-existing man and info pages.
224      Equivalently, you could use -defer='man|info' since the argument
225      is just a Perl regex.
227      Note that the regular expression is anchored to the beginning of
228      the path relative to the target directory, because this is what
229      you will want to do most of the time.
231 `--override='<regex>''
232      This (repeatable) option forces any file matching the regular
233      expression to be stowed, even if the file is already stowed to
234      another package. For example, the following options
236           --override='man' --override='info'
238      will permit stow to overwrite links that point to pre-existing man
239      and info pages that are owned by stow and would otherwise cause a
240      conflict.
242      The regular expression is anchored to the beginning of the path
243      relative to the target directory, because this is what you will
244      want to do most of the time.
246 `-n'
247 `--no'
248 `--simulate'
249      Do not perform any operations that modify the file system; in
250      combination with `-v' can be used to merely show what would happen.
252 `-v'
253 `--verbose[=N]'
254      Send verbose output to standard error describing what Stow is
255      doing.  Verbosity levels are 0, 1, 2, and 3; 0 is the default.
256      Using `-v' or `--verbose' increases the verbosity by one; using
257      `--verbose=N' sets it to N.
259 `-p'
260 `--compat'
261      Scan the whole target tree when unstowing.  By default, only
262      directories specified in the "installation image" are scanned
263      during an unstow operation.  Scanning the whole tree can be
264      prohibitive if your target tree is very large.  This option
265      restores the legacy behaviour; however, the `--badlinks' option
266      may be a better way of ensuring that your installation does not
267      have any dangling symlinks.
269 `-V'
270 `--version'
271      Show Stow version number, and exit.
273 `-h'
274 `--help'
275      Show Stow command syntax, and exit.
277    The following ACTION FLAGS are supported:
279 `-D'
280 `--delete'
281      Delete (unstow) the package name(s) that follow this option from
282      the "target directory". This option may be repeated any number of
283      times.
285 `-R'
286 `--restow'
287      Restow (first unstow, then stow again) the package names that
288      follow this option.  This is useful for pruning obsolete symlinks
289      from the target tree after updating the software in a package.
290      This option may be repeated any number of times.
292 `-S'
294 `--stow'
295      explictly stow the package name(s) that follow this option.  May
296      be omitted if you are not using the `-D' or `-R' options in the
297      same invocation.  See *Note Mixing Operations::, for details of
298      when you might like to use this feature. This option may be
299      repeated any number of times.
301    The following options are useful for cleaning up your target tree:
303 `-b'
304 `--badlinks'
305      Checks target directory for bogus symbolic links. That is, links
306      that point to non-existent files.
308 `-a'
309 `--aliens'
310      Checks for files in the target directory that are not symbolic
311      links. The target directory should be managed by stow alone,
312      except for directories that contain a `.stow' file.
314 `-l'
315 `--list'
316      Will display the target package for every symbolic link in the
317      stow target directory.  The following options are deprecated:
319    The following options are deprecated as of Stow Version 2:
320 `-c'
321 `--conflicts'
322      Print any conflicts that are encountered.  This option implies
323      `-n', and is used to search for all conflicts that might arise
324      from an actual Stow operation.
326      This option is deprecated as conflicts are now printed by default
327      and no operations will be performed if any conflicts are detected.
329    *note Resource Files:: for a way to set default values for any of
330 these options
332 \x1f
333 File: stow.info,  Node: Installing Packages,  Next: Deleting Packages,  Prev: Invoking Stow,  Up: Top
335 4 Installing Packages
336 *********************
338 The default action of Stow is to install a package.  This means creating
339 symlinks in the target tree that point into the package tree.  Stow
340 attempts to do this with as few symlinks as possible; in other words, if
341 Stow can create a single symlink that points to an entire subtree within
342 the package tree, it will choose to do that rather than create a
343 directory in the target tree and populate it with symlinks.
345    For example, suppose that no packages have yet been installed in
346 `/usr/local'; it's completely empty (except for the `stow'
347 subdirectory, of course).  Now suppose the Perl package is installed.
348 Recall that it includes the following directories in its installation
349 image:  `bin'; `info'; `lib/perl'; `man/man1'.  Rather than creating
350 the directory `/usr/local/bin' and populating it with symlinks to
351 `../stow/perl/bin/perl' and `../stow/perl/bin/a2p' (and so on), Stow
352 will create a single symlink, `/usr/local/bin', which points to
353 `stow/perl/bin'.  In this way, it still works to refer to
354 `/usr/local/bin/perl' and `/usr/local/bin/a2p', and fewer symlinks have
355 been created.  This is called "tree folding", since an entire subtree
356 is "folded" into a single symlink.
358    To complete this example, Stow will also create the symlink
359 `/usr/local/info' pointing to `stow/perl/info'; the symlink
360 `/usr/local/lib' pointing to `stow/perl/lib'; and the symlink
361 `/usr/local/man' pointing to `stow/perl/man'.
363    Now suppose that instead of installing the Perl package into an empty
364 target tree, the target tree is not empty to begin with.  Instead, it
365 contains several files and directories installed under a different
366 system-administration philosophy.  In particular, `/usr/local/bin'
367 already exists and is a directory, as are `/usr/local/lib' and
368 `/usr/local/man/man1'.  In this case, Stow will descend into
369 `/usr/local/bin' and create symlinks to `../stow/perl/bin/perl' and
370 `../stow/perl/bin/a2p' (etc.), and it will descend into
371 `/usr/local/lib' and create the tree-folding symlink `perl' pointing to
372 `../stow/perl/lib/perl', and so on.  As a rule, Stow only descends as
373 far as necessary into the target tree when it can create a tree-folding
374 symlink.
376    The time often comes when a tree-folding symlink has to be undone
377 because another package uses one or more of the folded subdirectories in
378 its installation image.  This operation is called "splitting open"  or
379 "unfolding" a folded tree.  It involves removing the original symlink
380 from the target tree, creating a true directory in its place, and then
381 populating the new directory with symlinks to the newly-installed
382 package _and_ to the old package that used the old symlink.  For
383 example, suppose that after installing Perl into an empty `/usr/local',
384 we wish to install Emacs.  Emacs's installation image includes a `bin'
385 directory containing the `emacs' and `etags' executables, among others.
386 Stow must make these files appear to be installed in `/usr/local/bin',
387 but presently `/usr/local/bin' is a symlink to `stow/perl/bin'.  Stow
388 therefore takes the following steps:  the symlink `/usr/local/bin' is
389 deleted; the directory `/usr/local/bin' is created; links are made from
390 `/usr/local/bin' to `../stow/emacs/bin/emacs' and
391 `../stow/emacs/bin/etags'; and links are made from `/usr/local/bin' to
392 `../stow/perl/bin/perl' and `../stow/perl/bin/a2p'.
394    When splitting open a folded tree, Stow makes sure that the symlink
395 it is about to remove points inside a valid package in the current stow
396 directory.  _Stow will never delete anything that it doesn't own_.
397 Stow "owns" everything living in the target tree that points into a
398 package in the stow directory.  Anything Stow owns, it can recompute if
399 lost: symlinks that point into a package in the stow directory, or
400 directories that only contain sysmlinks that stow "owns".   Note that
401 by this definition, Stow doesn't "own" anything _in_ the stow directory
402 or in any of the packages.
404    If Stow needs to create a directory or a symlink in the target tree
405 and it cannot because that name is already in use and is not owned by
406 Stow, then a "conflict" has arisen.  *Note Conflicts::.
408 \x1f
409 File: stow.info,  Node: Deleting Packages,  Next: Conflicts,  Prev: Installing Packages,  Up: Top
411 5 Deleting Packages
412 *******************
414 When the `-D' option is given, the action of Stow is to delete a
415 package from the target tree.  Note that Stow will not delete anything
416 it doesn't "own".  Deleting a package does _not_ mean removing it from
417 the stow directory or discarding the package tree.
419    To delete a package, Stow recursively scans the target tree,
420 skipping over any directory that is not included in the installation
421 image.(1) For example, if the target directory is `/usr/local' and the
422 installation image for the package being deleted has only a `bin'
423 directory and a `man' directory at the top level, then we only scan
424 `/usr/local/bin' and  `/usr/local/bin/man', and not `/usr/local/lib' or
425 `/usr/local/share', or for that matter `/usr/local/stow'.  Any symlink
426 it finds that points into the package being deleted is removed.  Any
427 directory that contained only symlinks to the package being deleted is
428 removed.  Any directory that, after removing symlinks and empty
429 subdirectories, contains only symlinks to a single other package, is
430 considered to be a previously "folded" tree that was "split open."  Stow
431 will re-fold the tree by removing the symlinks to the surviving package,
432 removing the directory, then linking the directory back to the surviving
433 package.
435    ---------- Footnotes ----------
437    (1) This approach was introduced in version 2 of GNU Stow.
438 Previously, the whole target tree was scanned and stow directories were
439 explicitly omitted.  This became problematic when dealing with very
440 large installations.  The only situation where this is useful is if you
441 accidentally delete a directory in the package tree, leaving you with a
442 whole bunch of dangling links.  Note that you can enable the old
443 approach with the `-p' option.  Alternatively, you can use the
444 `--badlinks' option get stow to search for dangling links in your
445 target tree and remove the offenders manually.
447 \x1f
448 File: stow.info,  Node: Conflicts,  Next: Deferred Operation,  Prev: Deleting Packages,  Up: Top
450 5.1 Conflicts
451 =============
453 If, during installation, a file or symlink exists in the target tree and
454 has the same name as something Stow needs to create, and if the
455 existing name is not a folded tree that can be split open, then a
456 "conflict" has arisen.  A conflict also occurs if a directory exists
457 where Stow needs to place a symlink to a non-directory.  On the other
458 hand, if the existing name is merely a symlink that already points
459 where Stow needs it to, then no conflict has occurred.  (Thus it is
460 harmless to install a package that has already been installed.)
462    A conflict causes Stow to exit immediately and print a warning
463 (unless `-c' is given), even if that means aborting an installation in
464 mid-package.
466    When running Stow with the `-n' or `-c' options, no actual
467 filesystem-modifying operations take place.  Thus if a folded tree would
468 have been split open, but instead was left in place because `-n' or
469 `-c' was used, then Stow will report a "false conflict", since the
470 directory that Stow was expecting to populate has remained an
471 un-populatable symlink.
473 \x1f
474 File: stow.info,  Node: Deferred Operation,  Next: Mixing Operations,  Prev: Conflicts,  Up: Top
476 6 Deferred Operation
477 ********************
479 For complex packages, scanning the stow and target trees in tandem, and
480 deciding whether to make directories or links, split-open or fold
481 directories, can actually take a long time (a number of seconds).
482 Moreover, an accurate analysis of potential conflicts, requires us to
483 take in to account all of these operations.
485    Accidentally stowing a package that will result in a conflict
487 \x1f
488 File: stow.info,  Node: Mixing Operations,  Next: Multiple Stow Directories,  Prev: Deferred Operation,  Up: Top
490 7 Mixing Operations
491 *******************
493 Since Version 2.0, multiple distinct actions can be specified in a
494 single invocation of GNU Stow.  For example, to update an installation
495 of Emacs from version 21.3 to 21.4a you can now do the following:
497      stow -D emacs-21.3 -S emacs-21.4a
499 which will replace emacs-21.3 with emacs-21.4a using a single
500 invocation.
502    This is much faster and cleaner than performing two separate
503 invocations of stow, because redundant folding/unfolding operations can
504 be factored out.  In addition, all the operations are calculated and
505 merged before being executed *note Deferred Operation::, so the amount
506 of of time in which GNU Emacs is unavailable is minimised.
508    You can mix and match any number of actions, for example,
510      stow -S pkg1 pkg2 -D pkg3 pkg4 -S pkg5 -R pkg6
512 will unstow pkg3, pkg4 and pkg6, then stow pkg1, pkg2, pkg5 and pkg6.
514 \x1f
515 File: stow.info,  Node: Multiple Stow Directories,  Next: Target Maintenance,  Prev: Mixing Operations,  Up: Top
517 8 Multiple Stow Directories
518 ***************************
520 If there are two or more system administrators who wish to maintain
521 software separately, or if there is any other reason to want two or more
522 stow directories, it can be done by creating a file named `.stow' in
523 each stow directory.  The presence of `/usr/local/foo/.stow' informs
524 Stow that, though `foo' is not the current stow directory, and though
525 it is a subdirectory of the target directory, nevertheless it is _a_
526 stow directory and as such Stow doesn't "own" anything in it (*note
527 Installing Packages::).  This will protect the contents of `foo' from a
528 `stow -D', for instance.
530    XXX is this still true? XXX
532    When multiple stow directories share a target tree, the effectiveness
533 of Stow is reduced.  If a tree-folding symlink is encountered and needs
534 to be split open during an installation, but the symlink points into
535 the wrong stow directory, Stow will report a conflict rather than split
536 open the tree (because it doesn't consider itself to own the symlink,
537 and thus cannot remove it).
539 \x1f
540 File: stow.info,  Node: Target Maintenance,  Next: Resource Files,  Prev: Multiple Stow Directories,  Up: Top
542 9 Target Maintenance
543 ********************
545 From time to time you will need to clean up your target tree.  Stow
546 includes three operational modes that performs checks that would
547 generally be too expensive to performed during normal stow execution.
549    I've added a -l option to chkstow which will give you a listing of
550 every package name that has already been stowed should be able to diff
551 this with your directory listing
553    bash cd build/scripts diff <(../bin/chkstow -l) <(ls -1)
555 \x1f
556 File: stow.info,  Node: Resource Files,  Next: Compile-time vs Install-time,  Prev: Target Maintenance,  Up: Top
558 10 Resource Files
559 *****************
561 Default command line options may be set in `.stowrc' (current
562 directory) or `~/.stowrc' (home directory). These are parsed in that
563 order, and effectively prepended to you command line.  This feature can
564 be used for some interesting effects.
566    For example, suppose your site uses more than one stow directory,
567 perhaps in order to share around responsibilities with a number of
568 systems administrators. One of the administrators might have the
569 following in there `~/.stowrc' file:
571      --dir=/usr/local/stow2
572      --target=/usr/local
573      --ignore='~'
574      --ignore='^CVS'
576    so that the `stow' command will default to operating on the
577 `/usr/local/stow2' directory, with `/usr/local' as the target, and
578 ignoring vi backup files and CVS directories.
580    If you had a stow directory `/usr/local/stow/perl-extras' that was
581 only used for Perl modules, then you might place the following in
582 `/usr/local/stow/perl-extras/.stowrc':
584      --dir=/usr/local/stow/perl-extras
585      --target=/usr/local
586      --override=bin
587      --override=man
588      --ignore='perllocal\.pod'
589      --ignore='\.packlist'
590      --ignore='\.bs'
592    so that the when your are in the `/usr/local/stow/perl-extras'
593 directory, `stow' will regard any subdirectories as stow packages, with
594 `/usr/local' as the target (rather than the immediate parent directoy
595 `/usr/local/stow'), overriding any pre-existing links to bin files or
596 man pages, and ignoring some cruft that gets installed by default.
598 \x1f
599 File: stow.info,  Node: Compile-time vs Install-time,  Next: Bootstrapping,  Prev: Resource Files,  Up: Top
601 11 Compile-time vs Install-time
602 *******************************
604 Software whose installation is managed with Stow needs to be installed
605 in one place (the package directory, e.g. `/usr/local/stow/perl') but
606 needs to appear to run in another place (the target tree, e.g.,
607 `/usr/local').  Why is this important?  What's wrong with Perl, for
608 instance, looking for its files in `/usr/local/stow/perl' instead of in
609 `/usr/local'?
611    The answer is that there may be another package, e.g.,
612 `/usr/local/stow/perl-extras', stowed under `/usr/local'.  If Perl is
613 configured to find its files in `/usr/local/stow/perl', it will never
614 find the extra files in the `perl-extras' package, even though they're
615 intended to be found by Perl.  On the other hand, if Perl looks for its
616 files in `/usr/local', then it will find the intermingled Perl and
617 `perl-extras' files.
619    This means that when you compile a package, you must tell it the
620 location of the run-time, or target tree; but when you install it, you
621 must place it in the stow tree.
623    Some software packages allow you to specify, at compile-time,
624 separate locations for installation and for run-time.  Perl is one such
625 package; *Note Perl and Perl 5 Modules::.  Others allow you to compile
626 the package, then give a different destination in the `make install'
627 step without causing the binaries or other files to get rebuilt.  Most
628 GNU software falls into this category; Emacs is a notable exception.
629 See *note GNU Emacs::, and *note Other FSF Software::.
631    Still other software packages cannot abide the idea of separate
632 installation and run-time locations at all.  If you try to `make
633 install prefix=/usr/local/stow/FOO', then first the whole package will
634 be recompiled to hardwire the `/usr/local/stow/FOO' path.  With these
635 packages, it is best to compile normally, then run `make -n install',
636 which should report all the steps needed to install the just-built
637 software.  Place this output into a file, edit the commands in the file
638 to remove recompilation steps and to reflect the Stow-based
639 installation location, and execute the edited file as a shell script in
640 place of `make install'.  Be sure to execute the script using the same
641 shell that `make install' would have used.
643    (If you use GNU Make and a shell [such as GNU bash] that understands
644 `pushd' and `popd', you can do the following:
646   1. Replace all lines matching `make[N]: Entering directory `DIR''
647      with `pushd DIR'.
649   2. Replace all lines matching `make[N]: Leaving directory `DIR'' with
650      `popd'.
652   3. Delete all lines matching `make[N]: Nothing to be done for RULE'.
654    Then find other lines in the output containing `cd' or `make'
655 commands and rewrite or delete them.  In particular, you should be able
656 to delete sections of the script that resemble this:
658      for i in DIR_1 DIR_2 ...; do \
659        (cd $i; make ARGS ...) \
660      done
662 Note, that's "should be able to," not "can."  Be sure to modulate these
663 guidelines with plenty of your own intelligence.
665    The details of stowing some specific packages are described in the
666 following sections.
668 * Menu:
670 * GNU Emacs::
671 * Other FSF Software::
672 * Cygnus Software::
673 * Perl and Perl 5 Modules::
675 \x1f
676 File: stow.info,  Node: GNU Emacs,  Next: Other FSF Software,  Prev: Compile-time vs Install-time,  Up: Compile-time vs Install-time
678 11.1 GNU Emacs
679 ==============
681 Although the Free Software Foundation has many enlightened practices
682 regarding Makefiles and software installation (see *note Other FSF
683 Software::), Emacs, its flagship program, doesn't quite follow the
684 rules.  In particular, most GNU software allows you to write:
686      make
687      make install prefix=/usr/local/stow/PACKAGE
689 If you try this with Emacs, then the new value for `prefix' in the
690 `make install' step will cause some files to get recompiled with the
691 new value of `prefix' wired into them.  In Emacs 19.23 and later,(1)
692 the way to work around this problem is:
694      make
695      make install-arch-dep install-arch-indep prefix=/usr/local/stow/emacs
697    In 19.22 and some prior versions of Emacs, the workaround was:
699      make
700      make do-install prefix=/usr/local/stow/emacs
702    ---------- Footnotes ----------
704    (1) As I write this, the current version of Emacs is 19.31.
706 \x1f
707 File: stow.info,  Node: Other FSF Software,  Next: Cygnus Software,  Prev: GNU Emacs,  Up: Compile-time vs Install-time
709 11.2 Other FSF Software
710 =======================
712 The Free Software Foundation, the organization behind the GNU project,
713 has been unifying the build procedure for its tools for some time.
714 Thanks to its tools `autoconf' and `automake', most packages now
715 respond well to these simple steps, with no other intervention
716 necessary:
718      ./configure OPTIONS
719      make
720      make install prefix=/usr/local/stow/PACKAGE
722    Hopefully, these tools can evolve to be aware of Stow-managed
723 packages, such that providing an option to `configure' can allow `make'
724 and `make install' steps to work correctly without needing to "fool"
725 the build process.
727 \x1f
728 File: stow.info,  Node: Cygnus Software,  Next: Perl and Perl 5 Modules,  Prev: Other FSF Software,  Up: Compile-time vs Install-time
730 11.3 Cygnus Software
731 ====================
733 Cygnus is a commercial supplier and supporter of GNU software.  It has
734 also written several of its own packages, released under the terms of
735 the GNU General Public License; and it has taken over the maintenance of
736 other packages.  Among the packages released by Cygnus are `gdb',
737 `gnats', and `dejagnu'.
739    Cygnus packages have the peculiarity that each one unpacks into a
740 directory tree with a generic top-level Makefile, which is set up to
741 compile _all_ of Cygnus' packages, any number of which may reside under
742 the top-level directory.  In other words, even if you're only building
743 `gnats', the top-level Makefile will look for, and try to build, `gdb'
744 and `dejagnu' subdirectories, among many others.
746    The result is that if you try `make -n install
747 prefix=/usr/local/stow/PACKAGE' at the top level of a Cygnus package,
748 you'll get a bewildering amount of output.  It will then be very
749 difficult to visually scan the output to see whether the install will
750 proceed correctly.  Unfortunately, it's not always clear how to invoke
751 an install from the subdirectory of interest.
753    In cases like this, the best approach is to run your `make install
754 prefix=...', but be ready to interrupt it if you detect that it is
755 recompiling files.  Usually it will work just fine; otherwise, install
756 manually.
758 \x1f
759 File: stow.info,  Node: Perl and Perl 5 Modules,  Prev: Cygnus Software,  Up: Compile-time vs Install-time
761 11.4 Perl and Perl 5 Modules
762 ============================
764 Perl 4.036 allows you to specify different locations for installation
765 and for run-time.  It is the only widely-used package in this author's
766 experience that allows this, though hopefully more packages will adopt
767 this model.
769    Unfortunately, the authors of Perl believed that only AFS sites need
770 this ability.  The configuration instructions for Perl 4 misleadingly
771 state that some occult means are used under AFS to transport files from
772 their installation tree to their run-time tree.  In fact, that confusion
773 arises from the fact that Depot, Stow's predecessor, originated at
774 Carnegie Mellon University, which was also the birthplace of AFS.  CMU's
775 need to separate install-time and run-time trees stemmed from its use of
776 Depot, not from AFS.
778    The result of this confusion is that Perl 5's configuration script
779 doesn't even offer the option of separating install-time and run-time
780 trees _unless_ you're running AFS.  Fortunately, after you've entered
781 all the configuration settings, Perl's setup script gives you the
782 opportunity to edit those settings in a file called `config.sh'.  When
783 prompted, you should edit this file and replace occurrences of
785      inst.../usr/local...
787 with
789      inst.../usr/local/stow/perl...
791 You can do this with the following Unix command:
793      sed 's,^\(inst.*/usr/local\),\1/stow/perl,' config.sh > config.sh.new
794      mv config.sh.new config.sh
796    Hopefully, the Perl authors will correct this deficiency in Perl 5's
797 configuration mechanism.
799    Perl 5 modules--i.e., extensions to Perl 5--generally conform to a
800 set of standards for building and installing them.  The standard says
801 that the package comes with a top-level `Makefile.PL', which is a Perl
802 script.  When it runs, it generates a `Makefile'.
804    If you followed the instructions above for editing `config.sh' when
805 Perl was built, then when you create a `Makefile' from a `Makefile.PL',
806 it will contain separate locations for run-time (`/usr/local') and
807 install-time (`/usr/local/stow/perl').  Thus you can do
809      perl Makefile.PL
810      make
811      make install
813 and the files will be installed into `/usr/local/stow/perl'.  However,
814 you might prefer each Perl module to be stowed separately.  In that
815 case, you must edit the resulting Makefile, replacing
816 `/usr/local/stow/perl' with `/usr/local/stow/MODULE'.  The best way to
817 do this is:
819      perl Makefile.PL
820      find . -name Makefile -print | \
821        xargs perl -pi~ -e 's,^(INST.*/stow)/perl,$1/MODULE,;'
822      make
823      make install
825 (The use of `find' and `xargs' ensures that all Makefiles in the
826 module's source tree, even those in subdirectories, get edited.)  A
827 good convention to follow is to name the stow directory for a Perl
828 MODULE `cpan.MODULE', where `cpan' stands for Comprehensive Perl
829 Archive Network, a collection of FTP sites that is the source of most
830 Perl 5 extensions.  This way, it's easy to tell at a glance which of
831 the subdirectories of `/usr/local/stow' are Perl 5 extensions.
833    When you stow separate Perl 5 modules separately, you are likely to
834 encounter conflicts (*note Conflicts::) with files named `.exists' and
835 `perllocal.pod'.  One way to work around this is to remove those files
836 before stowing the module.  If you use the `cpan.MODULE' naming
837 convention, you can simply do this:
839      cd /usr/local/stow
840      find cpan.* \( -name .exists -o -name perllocal.pod \) -print | \
841        xargs rm
843 \x1f
844 File: stow.info,  Node: Bootstrapping,  Next: Reporting Bugs,  Prev: Compile-time vs Install-time,  Up: Top
846 12 Bootstrapping
847 ****************
849 Suppose you have a stow directory all set up and ready to go:
850 `/usr/local/stow/perl' contains the Perl installation,
851 `/usr/local/stow/stow' contains Stow itself, and perhaps you have other
852 packages waiting to be stowed.  You'd like to be able to do this:
854      cd /usr/local/stow
855      stow -vv *
857 but `stow' is not yet in your `PATH'.  Nor can you do this:
859      cd /usr/local/stow
860      stow/bin/stow -vv *
862 because the `#!' line at the beginning of `stow' tries to locate Perl
863 (usually in `/usr/local/bin/perl'), and that won't be found.  The
864 solution you must use is:
866      cd /usr/local/stow
867      perl/bin/perl stow/bin/stow -vv *
869 \x1f
870 File: stow.info,  Node: Reporting Bugs,  Next: Known Bugs,  Prev: Bootstrapping,  Up: Top
872 13 Reporting Bugs
873 *****************
875 Please send bug reports to the current maintaner, Kal Hodgson, by
876 electronic mail.  The address to use is `<bug-stow@gnu.org>'.  Please
877 include:
879    * the version number of Stow (`stow --version');
881    * the version number of Perl (`perl -v');
883    * the system information, which can often be obtained with `uname
884      -a';
886    * a description of the bug;
888    * the precise command you gave;
890    * the output from the command (preferably verbose output, obtained by
891      adding `--verbose=3' to the Stow command line).
893    If you are really keen, consider developing a minimal test case and
894 creating a new test.  See the `t/' for lots of examples.
896    Before reporting a bug, please read the manual carefully, especially
897 *note Known Bugs::, to see whether you're encountering something that
898 doesn't need reporting.  (*note Conflicts::).
900 \x1f
901 File: stow.info,  Node: Known Bugs,  Next: GNU General Public License,  Prev: Reporting Bugs,  Up: Top
903 14 Known Bugs
904 *************
906    * When using multiple stow directories (*note Multiple Stow
907      Directories::), Stow fails to "split open" tree-folding symlinks
908      (*note Installing Packages::) that point into a stow directory
909      which is not the one in use by the current Stow command.  Before
910      failing, it should search the target of the link to see whether
911      any element of the path contains a `.stow' file.  If it finds one,
912      it can "learn" about the cooperating stow directory to
913      short-circuit the `.stow' search the next time it encounters a
914      tree-folding symlink.
916 \x1f
917 File: stow.info,  Node: GNU General Public License,  Next: Index,  Prev: Known Bugs,  Up: Top
919 GNU General Public License
920 **************************
922                          Version 2, June 1991
924      Copyright (C) 1989, 1991 Free Software Foundation, Inc.
925      675 Mass Ave, Cambridge, MA 02139, USA
927      Everyone is permitted to copy and distribute verbatim copies
928      of this license document, but changing it is not allowed.
930 Preamble
931 ========
933 The licenses for most software are designed to take away your freedom
934 to share and change it.  By contrast, the GNU General Public License is
935 intended to guarantee your freedom to share and change free
936 software--to make sure the software is free for all its users.  This
937 General Public License applies to most of the Free Software
938 Foundation's software and to any other program whose authors commit to
939 using it.  (Some other Free Software Foundation software is covered by
940 the GNU Library General Public License instead.)  You can apply it to
941 your programs, too.
943    When we speak of free software, we are referring to freedom, not
944 price.  Our General Public Licenses are designed to make sure that you
945 have the freedom to distribute copies of free software (and charge for
946 this service if you wish), that you receive source code or can get it
947 if you want it, that you can change the software or use pieces of it in
948 new free programs; and that you know you can do these things.
950    To protect your rights, we need to make restrictions that forbid
951 anyone to deny you these rights or to ask you to surrender the rights.
952 These restrictions translate to certain responsibilities for you if you
953 distribute copies of the software, or if you modify it.
955    For example, if you distribute copies of such a program, whether
956 gratis or for a fee, you must give the recipients all the rights that
957 you have.  You must make sure that they, too, receive or can get the
958 source code.  And you must show them these terms so they know their
959 rights.
961    We protect your rights with two steps: (1) copyright the software,
962 and (2) offer you this license which gives you legal permission to copy,
963 distribute and/or modify the software.
965    Also, for each author's protection and ours, we want to make certain
966 that everyone understands that there is no warranty for this free
967 software.  If the software is modified by someone else and passed on, we
968 want its recipients to know that what they have is not the original, so
969 that any problems introduced by others will not reflect on the original
970 authors' reputations.
972    Finally, any free program is threatened constantly by software
973 patents.  We wish to avoid the danger that redistributors of a free
974 program will individually obtain patent licenses, in effect making the
975 program proprietary.  To prevent this, we have made it clear that any
976 patent must be licensed for everyone's free use or not licensed at all.
978    The precise terms and conditions for copying, distribution and
979 modification follow.
981     TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
982   0. This License applies to any program or other work which contains a
983      notice placed by the copyright holder saying it may be distributed
984      under the terms of this General Public License.  The "Program",
985      below, refers to any such program or work, and a "work based on
986      the Program" means either the Program or any derivative work under
987      copyright law: that is to say, a work containing the Program or a
988      portion of it, either verbatim or with modifications and/or
989      translated into another language.  (Hereinafter, translation is
990      included without limitation in the term "modification".)  Each
991      licensee is addressed as "you".
993      Activities other than copying, distribution and modification are
994      not covered by this License; they are outside its scope.  The act
995      of running the Program is not restricted, and the output from the
996      Program is covered only if its contents constitute a work based on
997      the Program (independent of having been made by running the
998      Program).  Whether that is true depends on what the Program does.
1000   1. You may copy and distribute verbatim copies of the Program's
1001      source code as you receive it, in any medium, provided that you
1002      conspicuously and appropriately publish on each copy an appropriate
1003      copyright notice and disclaimer of warranty; keep intact all the
1004      notices that refer to this License and to the absence of any
1005      warranty; and give any other recipients of the Program a copy of
1006      this License along with the Program.
1008      You may charge a fee for the physical act of transferring a copy,
1009      and you may at your option offer warranty protection in exchange
1010      for a fee.
1012   2. You may modify your copy or copies of the Program or any portion
1013      of it, thus forming a work based on the Program, and copy and
1014      distribute such modifications or work under the terms of Section 1
1015      above, provided that you also meet all of these conditions:
1017        a. You must cause the modified files to carry prominent notices
1018           stating that you changed the files and the date of any change.
1020        b. You must cause any work that you distribute or publish, that
1021           in whole or in part contains or is derived from the Program
1022           or any part thereof, to be licensed as a whole at no charge
1023           to all third parties under the terms of this License.
1025        c. If the modified program normally reads commands interactively
1026           when run, you must cause it, when started running for such
1027           interactive use in the most ordinary way, to print or display
1028           an announcement including an appropriate copyright notice and
1029           a notice that there is no warranty (or else, saying that you
1030           provide a warranty) and that users may redistribute the
1031           program under these conditions, and telling the user how to
1032           view a copy of this License.  (Exception: if the Program
1033           itself is interactive but does not normally print such an
1034           announcement, your work based on the Program is not required
1035           to print an announcement.)
1037      These requirements apply to the modified work as a whole.  If
1038      identifiable sections of that work are not derived from the
1039      Program, and can be reasonably considered independent and separate
1040      works in themselves, then this License, and its terms, do not
1041      apply to those sections when you distribute them as separate
1042      works.  But when you distribute the same sections as part of a
1043      whole which is a work based on the Program, the distribution of
1044      the whole must be on the terms of this License, whose permissions
1045      for other licensees extend to the entire whole, and thus to each
1046      and every part regardless of who wrote it.
1048      Thus, it is not the intent of this section to claim rights or
1049      contest your rights to work written entirely by you; rather, the
1050      intent is to exercise the right to control the distribution of
1051      derivative or collective works based on the Program.
1053      In addition, mere aggregation of another work not based on the
1054      Program with the Program (or with a work based on the Program) on
1055      a volume of a storage or distribution medium does not bring the
1056      other work under the scope of this License.
1058   3. You may copy and distribute the Program (or a work based on it,
1059      under Section 2) in object code or executable form under the terms
1060      of Sections 1 and 2 above provided that you also do one of the
1061      following:
1063        a. Accompany it with the complete corresponding machine-readable
1064           source code, which must be distributed under the terms of
1065           Sections 1 and 2 above on a medium customarily used for
1066           software interchange; or,
1068        b. Accompany it with a written offer, valid for at least three
1069           years, to give any third party, for a charge no more than your
1070           cost of physically performing source distribution, a complete
1071           machine-readable copy of the corresponding source code, to be
1072           distributed under the terms of Sections 1 and 2 above on a
1073           medium customarily used for software interchange; or,
1075        c. Accompany it with the information you received as to the offer
1076           to distribute corresponding source code.  (This alternative is
1077           allowed only for noncommercial distribution and only if you
1078           received the program in object code or executable form with
1079           such an offer, in accord with Subsection b above.)
1081      The source code for a work means the preferred form of the work for
1082      making modifications to it.  For an executable work, complete
1083      source code means all the source code for all modules it contains,
1084      plus any associated interface definition files, plus the scripts
1085      used to control compilation and installation of the executable.
1086      However, as a special exception, the source code distributed need
1087      not include anything that is normally distributed (in either
1088      source or binary form) with the major components (compiler,
1089      kernel, and so on) of the operating system on which the executable
1090      runs, unless that component itself accompanies the executable.
1092      If distribution of executable or object code is made by offering
1093      access to copy from a designated place, then offering equivalent
1094      access to copy the source code from the same place counts as
1095      distribution of the source code, even though third parties are not
1096      compelled to copy the source along with the object code.
1098   4. You may not copy, modify, sublicense, or distribute the Program
1099      except as expressly provided under this License.  Any attempt
1100      otherwise to copy, modify, sublicense or distribute the Program is
1101      void, and will automatically terminate your rights under this
1102      License.  However, parties who have received copies, or rights,
1103      from you under this License will not have their licenses
1104      terminated so long as such parties remain in full compliance.
1106   5. You are not required to accept this License, since you have not
1107      signed it.  However, nothing else grants you permission to modify
1108      or distribute the Program or its derivative works.  These actions
1109      are prohibited by law if you do not accept this License.
1110      Therefore, by modifying or distributing the Program (or any work
1111      based on the Program), you indicate your acceptance of this
1112      License to do so, and all its terms and conditions for copying,
1113      distributing or modifying the Program or works based on it.
1115   6. Each time you redistribute the Program (or any work based on the
1116      Program), the recipient automatically receives a license from the
1117      original licensor to copy, distribute or modify the Program
1118      subject to these terms and conditions.  You may not impose any
1119      further restrictions on the recipients' exercise of the rights
1120      granted herein.  You are not responsible for enforcing compliance
1121      by third parties to this License.
1123   7. If, as a consequence of a court judgment or allegation of patent
1124      infringement or for any other reason (not limited to patent
1125      issues), conditions are imposed on you (whether by court order,
1126      agreement or otherwise) that contradict the conditions of this
1127      License, they do not excuse you from the conditions of this
1128      License.  If you cannot distribute so as to satisfy simultaneously
1129      your obligations under this License and any other pertinent
1130      obligations, then as a consequence you may not distribute the
1131      Program at all.  For example, if a patent license would not permit
1132      royalty-free redistribution of the Program by all those who
1133      receive copies directly or indirectly through you, then the only
1134      way you could satisfy both it and this License would be to refrain
1135      entirely from distribution of the Program.
1137      If any portion of this section is held invalid or unenforceable
1138      under any particular circumstance, the balance of the section is
1139      intended to apply and the section as a whole is intended to apply
1140      in other circumstances.
1142      It is not the purpose of this section to induce you to infringe any
1143      patents or other property right claims or to contest validity of
1144      any such claims; this section has the sole purpose of protecting
1145      the integrity of the free software distribution system, which is
1146      implemented by public license practices.  Many people have made
1147      generous contributions to the wide range of software distributed
1148      through that system in reliance on consistent application of that
1149      system; it is up to the author/donor to decide if he or she is
1150      willing to distribute software through any other system and a
1151      licensee cannot impose that choice.
1153      This section is intended to make thoroughly clear what is believed
1154      to be a consequence of the rest of this License.
1156   8. If the distribution and/or use of the Program is restricted in
1157      certain countries either by patents or by copyrighted interfaces,
1158      the original copyright holder who places the Program under this
1159      License may add an explicit geographical distribution limitation
1160      excluding those countries, so that distribution is permitted only
1161      in or among countries not thus excluded.  In such case, this
1162      License incorporates the limitation as if written in the body of
1163      this License.
1165   9. The Free Software Foundation may publish revised and/or new
1166      versions of the General Public License from time to time.  Such
1167      new versions will be similar in spirit to the present version, but
1168      may differ in detail to address new problems or concerns.
1170      Each version is given a distinguishing version number.  If the
1171      Program specifies a version number of this License which applies
1172      to it and "any later version", you have the option of following
1173      the terms and conditions either of that version or of any later
1174      version published by the Free Software Foundation.  If the Program
1175      does not specify a version number of this License, you may choose
1176      any version ever published by the Free Software Foundation.
1178  10. If you wish to incorporate parts of the Program into other free
1179      programs whose distribution conditions are different, write to the
1180      author to ask for permission.  For software which is copyrighted
1181      by the Free Software Foundation, write to the Free Software
1182      Foundation; we sometimes make exceptions for this.  Our decision
1183      will be guided by the two goals of preserving the free status of
1184      all derivatives of our free software and of promoting the sharing
1185      and reuse of software generally.
1187                                 NO WARRANTY
1188  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
1189      WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
1190      LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
1191      HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
1192      WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
1193      NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
1194      FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE
1195      QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
1196      PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
1197      SERVICING, REPAIR OR CORRECTION.
1199  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
1200      WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
1201      MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
1202      LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
1203      INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
1204      INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
1205      DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
1206      OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
1207      OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
1208      ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
1210                       END OF TERMS AND CONDITIONS
1211 How to Apply These Terms to Your New Programs
1212 =============================================
1214 If you develop a new program, and you want it to be of the greatest
1215 possible use to the public, the best way to achieve this is to make it
1216 free software which everyone can redistribute and change under these
1217 terms.
1219    To do so, attach the following notices to the program.  It is safest
1220 to attach them to the start of each source file to most effectively
1221 convey the exclusion of warranty; and each file should have at least
1222 the "copyright" line and a pointer to where the full notice is found.
1224      ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES.
1225      Copyright (C) 19YY  NAME OF AUTHOR
1227      This program is free software; you can redistribute it and/or
1228      modify it under the terms of the GNU General Public License
1229      as published by the Free Software Foundation; either version 2
1230      of the License, or (at your option) any later version.
1232      This program is distributed in the hope that it will be useful,
1233      but WITHOUT ANY WARRANTY; without even the implied warranty of
1234      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1235      GNU General Public License for more details.
1237      You should have received a copy of the GNU General Public License
1238      along with this program; if not, write to the Free Software
1239      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
1241    Also add information on how to contact you by electronic and paper
1242 mail.
1244    If the program is interactive, make it output a short notice like
1245 this when it starts in an interactive mode:
1247      Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
1248      Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
1249      type `show w'.  This is free software, and you are welcome
1250      to redistribute it under certain conditions; type `show c'
1251      for details.
1253    The hypothetical commands `show w' and `show c' should show the
1254 appropriate parts of the General Public License.  Of course, the
1255 commands you use may be called something other than `show w' and `show
1256 c'; they could even be mouse-clicks or menu items--whatever suits your
1257 program.
1259    You should also get your employer (if you work as a programmer) or
1260 your school, if any, to sign a "copyright disclaimer" for the program,
1261 if necessary.  Here is a sample; alter the names:
1263      Yoyodyne, Inc., hereby disclaims all copyright
1264      interest in the program `Gnomovision'
1265      (which makes passes at compilers) written
1266      by James Hacker.
1268      SIGNATURE OF TY COON, 1 April 1989
1269      Ty Coon, President of Vice
1271    This General Public License does not permit incorporating your
1272 program into proprietary programs.  If your program is a subroutine
1273 library, you may consider it more useful to permit linking proprietary
1274 applications with the library.  If this is what you want to do, use the
1275 GNU Library General Public License instead of this License.
1277 \x1f
1278 File: stow.info,  Node: Index,  Prev: GNU General Public License,  Up: Top
1280 Index
1281 *****
1283 \0\b[index\0\b]
1284 * Menu:
1286 * absolute symlink:                      Terminology.          (line 43)
1287 * conflict:                              Installing Packages.  (line 72)
1288 * deletion:                              Deleting Packages.    (line  6)
1289 * directory folding:                     Installing Packages.  (line 13)
1290 * false conflict:                        Conflicts.            (line 19)
1291 * folding trees:                         Installing Packages.  (line 13)
1292 * installation:                          Installing Packages.  (line  6)
1293 * installation image:                    Terminology.          (line 23)
1294 * ownership:                             Installing Packages.  (line 62)
1295 * package:                               Terminology.          (line  6)
1296 * package directory:                     Terminology.          (line 30)
1297 * package name:                          Terminology.          (line 30)
1298 * relative symlink:                      Terminology.          (line 43)
1299 * splitting open folded trees:           Installing Packages.  (line 44)
1300 * stow directory:                        Terminology.          (line 16)
1301 * symlink:                               Terminology.          (line 43)
1302 * target directory:                      Terminology.          (line 11)
1303 * tree folding:                          Installing Packages.  (line 13)
1304 * unfolding trees:                       Installing Packages.  (line 44)
1307 \x1f
1308 Tag Table:
1309 Node: Top\x7f1313
1310 Node: Introduction\x7f2684
1311 Ref: Introduction-Footnote-1\x7f4845
1312 Node: Terminology\x7f4887
1313 Node: Invoking Stow\x7f7250
1314 Node: Installing Packages\x7f12809
1315 Node: Deleting Packages\x7f17066
1316 Ref: Deleting Packages-Footnote-1\x7f18486
1317 Node: Conflicts\x7f19074
1318 Node: Deferred Operation\x7f20253
1319 Node: Mixing Operations\x7f20781
1320 Node: Multiple Stow Directories\x7f21780
1321 Node: Target Maintenance\x7f22954
1322 Node: Resource Files\x7f23550
1323 Node: Compile-time vs Install-time\x7f25160
1324 Node: GNU Emacs\x7f28447
1325 Ref: GNU Emacs-Footnote-1\x7f29436
1326 Node: Other FSF Software\x7f29500
1327 Node: Cygnus Software\x7f30261
1328 Node: Perl and Perl 5 Modules\x7f31740
1329 Node: Bootstrapping\x7f35295
1330 Node: Reporting Bugs\x7f36076
1331 Node: Known Bugs\x7f37044
1332 Node: GNU General Public License\x7f37747
1333 Node: Index\x7f56887
1334 \x1f
1335 End Tag Table