1 This is stow.info, produced by makeinfo version 4.12 from stow.texi.
3 INFO-DIR-SECTION Administration
5 * Stow: (stow). GNU Stow.
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
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.
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.
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
63 * Other FSF Software::
65 * Perl and Perl 5 Modules::
68 File: stow.info, Node: Introduction, Next: Terminology, Prev: Top, Up: Top
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':
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
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.
121 File: stow.info, Node: Terminology, Next: Invoking Stow, Prev: Introduction, Up: Top
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
171 File: stow.info, Node: Invoking Stow, Next: Installing Packages, Prev: Terminology, Up: Top
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:
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
199 Set the target directory to DIR instead of the parent of the stow
203 This (repeatable) option lets you suppress acting on files that
204 match the given perl regular expression. For example, using the
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
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
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.
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.
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.
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.
271 Show Stow version number, and exit.
275 Show Stow command syntax, and exit.
277 The following ACTION FLAGS are supported:
281 Delete (unstow) the package name(s) that follow this option from
282 the "target directory". This option may be repeated any number of
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.
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:
305 Checks target directory for bogus symbolic links. That is, links
306 that point to non-existent files.
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.
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:
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
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
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::.
409 File: stow.info, Node: Deleting Packages, Next: Conflicts, Prev: Installing Packages, Up: Top
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
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.
448 File: stow.info, Node: Conflicts, Next: Deferred Operation, Prev: Deleting Packages, Up: Top
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
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.
474 File: stow.info, Node: Deferred Operation, Next: Mixing Operations, Prev: Conflicts, Up: Top
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
488 File: stow.info, Node: Mixing Operations, Next: Multiple Stow Directories, Prev: Deferred Operation, Up: Top
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
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.
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).
540 File: stow.info, Node: Target Maintenance, Next: Resource Files, Prev: Multiple Stow Directories, Up: Top
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)
556 File: stow.info, Node: Resource Files, Next: Compile-time vs Install-time, Prev: Target Maintenance, Up: Top
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
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
588 --ignore='perllocal\.pod'
589 --ignore='\.packlist'
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.
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
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
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''
649 2. Replace all lines matching `make[N]: Leaving directory `DIR'' with
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 ...) \
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
671 * Other FSF Software::
673 * Perl and Perl 5 Modules::
676 File: stow.info, Node: GNU Emacs, Next: Other FSF Software, Prev: Compile-time vs Install-time, Up: Compile-time vs Install-time
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:
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:
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:
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.
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
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"
728 File: stow.info, Node: Cygnus Software, Next: Perl and Perl 5 Modules, Prev: Other FSF Software, Up: Compile-time vs Install-time
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
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
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
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
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
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
820 find . -name Makefile -print | \
821 xargs perl -pi~ -e 's,^(INST.*/stow)/perl,$1/MODULE,;'
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:
840 find cpan.* \( -name .exists -o -name perllocal.pod \) -print | \
844 File: stow.info, Node: Bootstrapping, Next: Reporting Bugs, Prev: Compile-time vs Install-time, Up: Top
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:
857 but `stow' is not yet in your `PATH'. Nor can you do this:
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:
867 perl/bin/perl stow/bin/stow -vv *
870 File: stow.info, Node: Reporting Bugs, Next: Known Bugs, Prev: Bootstrapping, Up: Top
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
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
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::).
901 File: stow.info, Node: Known Bugs, Next: GNU General Public License, Prev: Reporting Bugs, Up: Top
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.
917 File: stow.info, Node: GNU General Public License, Next: Index, Prev: Known Bugs, Up: Top
919 GNU General Public License
920 **************************
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.
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
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
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
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
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
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
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.
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
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
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'
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
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
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.
1278 File: stow.info, Node: Index, Prev: GNU General Public License, Up: Top
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)
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