stow/.local/share/doc/stow/manual-split/Introduction.html

120 lines
5.2 KiB
HTML

<html lang="en">
<head>
<title>Introduction - Stow</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Stow">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="index.html#Top" title="Top">
<link rel="next" href="Terminology.html#Terminology" title="Terminology">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This manual describes GNU Stow version 2.2.2
(9 November 2015), a program for managing the installation of software
packages.
Software and documentation is copyrighted by the following:
(C) 1993, 1994, 1995, 1996 Bob Glickstein <bobg+stow@zanshin.com>
(C) 2000, 2001 Guillaume Morin <gmorin@gnu.org>
(C) 2007 Kahlil (Kal) Hodgson <kahlil@internode.on.net>
(C) 2011 Adam Spiers <stow@adamspiers.org>
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission
notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided
also that the section entitled ``GNU General Public License'' is
included with the modified manual, and provided that the entire
resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for
modified versions, except that this permission notice may be
stated in a translation approved by the Free Software Foundation.
-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<a name="Introduction"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Terminology.html#Terminology">Terminology</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="index.html#Top">Top</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<h2 class="chapter">1 Introduction</h2>
<p>Stow is a tool for managing the installation of multiple software
packages in the same run-time directory tree. One historical difficulty
of this task has been the need to administer, upgrade, install, and
remove files in independent packages without confusing them with other
files sharing the same file system space. For instance, it is common to
install Perl and Emacs in <samp><span class="file">/usr/local</span></samp>. When one does so, one
winds up with the following files<a rel="footnote" href="#fn-1" name="fnd-1"><sup>1</sup></a> in <samp><span class="file">/usr/local/man/man1</span></samp>:
<pre class="example"> a2p.1
ctags.1
emacs.1
etags.1
h2ph.1
perl.1
s2p.1
</pre>
<p class="noindent">Now suppose it's time to uninstall Perl. Which man pages
get removed? Obviously <samp><span class="file">perl.1</span></samp> is one of them, but it should not
be the administrator's responsibility to memorize the ownership of
individual files by separate packages.
<p>The approach used by Stow is to install each package into its own
tree, then use symbolic links to make it appear as though the files are
installed in the common tree. Administration can be performed in the
package's private tree in isolation from clutter from other packages.
Stow can then be used to update the symbolic links. The structure
of each private tree should reflect the desired structure in the common
tree; i.e. (in the typical case) there should be a <samp><span class="file">bin</span></samp> directory
containing executables, a <samp><span class="file">man/man1</span></samp> directory containing section 1
man pages, and so on.
<p>Stow was inspired by Carnegie Mellon's Depot program, but is
substantially simpler and safer. Whereas Depot required database files
to keep things in sync, Stow stores no extra state between runs, so
there's no danger (as there was in Depot) of mangling directories when
file hierarchies don't match the database. Also unlike Depot, Stow will
never delete any files, directories, or links that appear in a Stow
directory (e.g., <samp><span class="file">/usr/local/stow/emacs</span></samp>), so it's always possible
to rebuild the target tree (e.g., <samp><span class="file">/usr/local</span></samp>).
<p>For information about the latest version of Stow, you can refer to
<a href="http://www.gnu.org/software/stow/">http://www.gnu.org/software/stow/</a>.
<!-- =========================================================================== -->
<div class="footnote">
<hr>
<h4>Footnotes</h4><p class="footnote"><small>[<a name="fn-1" href="#fnd-1">1</a>]</small> As of Perl 4.036 and Emacs
19.22.</p>
<hr></div>
</body></html>