aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/manual/Makefile.am4
-rw-r--r--doc/manual/bugs.xml30
-rw-r--r--doc/manual/common-options.xml13
-rw-r--r--doc/manual/manual.xml3
-rw-r--r--doc/manual/nix-store.xml450
-rw-r--r--doc/manual/opt-verbose.xml73
-rw-r--r--doc/manual/troubleshooting.xml19
7 files changed, 342 insertions, 250 deletions
diff --git a/doc/manual/Makefile.am b/doc/manual/Makefile.am
index 8f4c84790..a0fa19406 100644
--- a/doc/manual/Makefile.am
+++ b/doc/manual/Makefile.am
@@ -7,8 +7,8 @@ XSLTPROC = $(ENV) $(xsltproc) $(xmlflags) --catalogs \
--param html.stylesheet \'style.css\'
SOURCES = manual.xml introduction.xml installation.xml overview.xml \
- common-options.xml nix-store.xml nix-instantiate.xml \
- troubleshooting.xml bugs.xml \
+ nix-store.xml nix-instantiate.xml \
+ troubleshooting.xml bugs.xml opt-verbose.xml \
style.css images
manual.is-valid: $(SOURCES) version.xml
diff --git a/doc/manual/bugs.xml b/doc/manual/bugs.xml
index fcb69c364..33bd96a02 100644
--- a/doc/manual/bugs.xml
+++ b/doc/manual/bugs.xml
@@ -5,24 +5,20 @@
<listitem>
<para>
- Nix should automatically remove Berkeley DB logfiles.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unify the concepts of successors and substitutes into a general notion
- of <emphasis>equivalent expressions</emphasis>. Expressions are
- equivalent if they have the same target paths with the same
- identifiers. However, even though they are functionally equivalent,
- they may differ stronly with respect to their <emphasis>performance
- characteristics</emphasis>. For example, realising a slice is more
- efficient that realising the derivation from which that slice was
+ Unify the concepts of successors and substitutes into a
+ general notion of <emphasis>equivalent expressions</emphasis>.
+ Expressions are equivalent if they have the same target paths
+ with the same identifiers. However, even though they are
+ functionally equivalent, they may differ stronly with respect
+ to their <emphasis>performance characteristics</emphasis>.
+ For example, realising a closure expression is more efficient
+ that realising the derivation expression from which it was
produced. On the other hand, distributing sources may be more
- efficient (storage- or bandwidth-wise) than distributing binaries. So
- we need to be able to attach weigths or priorities or performance
- annotations to expressions; Nix can then choose the most efficient
- expression dependent on the context.
+ efficient (storage- or bandwidth-wise) than distributing
+ binaries. So we need to be able to attach weigths or
+ priorities or performance annotations to expressions; Nix can
+ then choose the most efficient expression dependent on the
+ context.
</para>
</listitem>
diff --git a/doc/manual/common-options.xml b/doc/manual/common-options.xml
deleted file mode 100644
index d04042993..000000000
--- a/doc/manual/common-options.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<sect1>
- <title>Common options</title>
-
- <para>
- </para>
-
-</sect1>
-
-<!--
-local variables:
-sgml-parent-document: ("book.xml" "sect1")
-end:
--->
diff --git a/doc/manual/manual.xml b/doc/manual/manual.xml
index 9f88dd409..1df0d1fc9 100644
--- a/doc/manual/manual.xml
+++ b/doc/manual/manual.xml
@@ -6,7 +6,7 @@
<!ENTITY introduction SYSTEM "introduction.xml">
<!ENTITY installation SYSTEM "installation.xml">
<!ENTITY overview SYSTEM "overview.xml">
-<!ENTITY common-options SYSTEM "common-options.xml">
+<!ENTITY opt-verbose SYSTEM "opt-verbose.xml">
<!ENTITY nix-store SYSTEM "nix-store.xml">
<!ENTITY nix-instantiate SYSTEM "nix-instantiate.xml">
<!ENTITY troubleshooting SYSTEM "troubleshooting.xml">
@@ -36,7 +36,6 @@
<appendix>
<title>Command Reference</title>
- &common-options;
<sect1>
<title>nix-store</title>
&nix-store;
diff --git a/doc/manual/nix-store.xml b/doc/manual/nix-store.xml
index 686fe4c15..36abf7af3 100644
--- a/doc/manual/nix-store.xml
+++ b/doc/manual/nix-store.xml
@@ -7,10 +7,6 @@
<refsynopsisdiv>
<cmdsynopsis>
<command>nix-store</command>
- <group choice='opt'>
- <arg><option>--path</option></arg>
- <arg><option>-p</option></arg>
- </group>
<group choice='opt' rep='repeat'>
<arg><option>--verbose</option></arg>
<arg><option>-v</option></arg>
@@ -25,180 +21,148 @@
</cmdsynopsis>
</refsynopsisdiv>
- <refsect1>
+ <refsection>
<title>Description</title>
<para>
- The command <command>nix</command> provides access to the Nix store. This
- is the (set of) path(s) where Nix expressions and the file system objects
- built by them are stored.
+ The command <command>nix-store</command> performs primitive
+ operations on the Nix store. You generally do not need to run
+ this command manually.
</para>
<para>
- <command>nix</command> has many subcommands called
- <emphasis>operations</emphasis>. These are individually documented
- below. Exactly one operation must always be provided.
+ <command>nix-store</command> takes exactly one
+ <emphasis>operation</emphasis> flag which indicated the
+ subcommand to be performed. These are individually
+ documented below.
</para>
- </refsect1>
+ </refsection>
- <refsect1>
- <title>Common Options</title>
+ <refsection>
+ <title>Common options</title>
<para>
- In this section the options that are common to all Nix operations are
- listed. These options are allowed for every subcommand (although they
- may not always have an effect).
+ This section lists the options that are common to all Nix
+ operations. These options are allowed for every subcommand,
+ though they may not always have an effect.
</para>
<variablelist>
+ &opt-verbose;
+
<varlistentry>
- <term><option>--path</option></term>
+ <term><option>--keep-failed</option></term>
<listitem>
<para>
- Indicates that any identifier arguments to the operation are paths
- in the store rather than identifiers.
+ Specifies that in case of a build failure, the temporary directory
+ (usually in <filename>/tmp</filename>) in which the build takes
+ place should not be deleted. The path of the build directory is
+ printed as an informational message.
</para>
</listitem>
</varlistentry>
- <varlistentry>
- <term><option>--verbose</option></term>
- <listitem>
- <para>
- Increases the level of verbosity of diagnostic messages printed on
- standard error. For each Nix operation, the information printed on
- standard output is well-defined and specified below in the
- respective sections. Any diagnostic information is printed on
- standard error, never on standard output.
- </para>
+ </variablelist>
- <para>
- This option may be specified repeatedly. Currently, the following
- verbosity levels exist:
- </para>
+ </refsection>
- <variablelist>
- <varlistentry>
- <term>0</term>
- <listitem>
- <para>
- Print error messages only.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>1</term>
- <listitem>
- <para>
- Print informational messages.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>2</term>
- <listitem>
- <para>
- Print even more informational messages.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>3</term>
- <listitem>
- <para>
- Print messages that should only be useful for debugging.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>4</term>
- <listitem>
- <para>
- <quote>Vomit mode</quote>: print vast amounts of debug
- information.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
+ <refsection>
+ <title>Environment variables</title>
+
+ <para>
+ The following environment variables affect the behaviour of
+ <command>nix-store</command>.
+ </para>
+
+ <variablelist>
<varlistentry>
- <term><option>--keep-failed</option></term>
+ <term><envar>TMPDIR</envar>=<replaceable>path</replaceable></term>
<listitem>
<para>
- Specifies that in case of a build failure, the temporary directory
- (usually in <filename>/tmp</filename>) in which the build takes
- place should not be deleted. The path of the build directory is
- printed as an informational message.
+ Use the directory <replaceable>path</replaceable> to store
+ temporary files. In particular, this includes temporary
+ build directories; these can take up substantial amounts
+ of disk space. The default is <filename>/tmp</filename>.
</para>
</listitem>
</varlistentry>
</variablelist>
+
+ </refsection>
- </refsect1>
-
+
<!--######################################################################-->
- <refsect1>
- <title>Operation <option>--install</option></title>
+ <refsection>
+ <title>Operation <option>--realise</option></title>
- <refsect2>
+ <refsection>
<title>Synopsis</title>
<cmdsynopsis>
- <command>nix</command>
+ <command>nix-store</command>
<group>
- <arg><option>--install</option></arg>
- <arg><option>-i</option></arg>
+ <arg><option>--realise</option></arg>
+ <arg><option>-r</option></arg>
</group>
- <arg choice='plain' rep='repeat'><replaceable>ids</replaceable></arg>
+ <arg choice='plain' rep='repeat'><replaceable>paths</replaceable></arg>
</cmdsynopsis>
- </refsect2>
+ </refsection>
- <refsect2>
+ <refsection>
<title>Description</title>
<para>
- The operation <option>--install</option> realises the Nix expressions
- identified by <replaceable>ids</replaceable> in the file system. If
- these expressions are derivation expressions, they are first
- normalised. That is, their target paths are are built, unless a normal
- form is already known.
+ The operation <option>--install</option> realises in the file
+ system the store expressions stored in
+ <replaceable>paths</replaceable>. If these expressions are
+ derivation expressions, they are first
+ <emphasis>normalised</emphasis> into a closure expression.
+ This may happen in two ways. First, the corresponding closure
+ expression (the <emphasis>successor</emphasis>) may already
+ known (either because the build has already been performed, or
+ because a successor was explicitly registered through the
+ <option>--successor</option> operation). Otherwise, the build
+ action described by the derivation is performed, and a closure
+ expression is computed by scanning the result of the build for
+ references to other paths in the store.
</para>
<para>
- The identifiers of the normal forms of the given Nix expressions are
- printed on standard output.
+ The paths of the closure expression corresponding to each
+ expression in <replaceable>paths</replaceable> is printed on
+ standard output.
</para>
- </refsect2>
+ </refsection>
- </refsect1>
+ </refsection>
+
<!--######################################################################-->
- <refsect1>
+ <refsection>
<title>Operation <option>--delete</option></title>
- <refsect2>
+ <refsection>
<title>Synopsis</title>
<cmdsynopsis>
- <command>nix</command>
+ <command>nix-store</command>
<group>
<arg><option>--delete</option></arg>
<arg><option>-d</option></arg>
</group>
<arg choice='plain' rep='repeat'><replaceable>paths</replaceable></arg>
</cmdsynopsis>
- </refsect2>
+ </refsection>
- <refsect2>
+ <refsection>
<title>Description</title>
<para>
@@ -215,24 +179,24 @@
inconsistent system. Deletion of paths in the store is done by the
garbage collector (which uses <option>--delete</option> to delete
unreferenced paths).
-
</para>
</warning>
- </refsect2>
+ </refsection>
- </refsect1>
+ </refsection>
+
<!--######################################################################-->
- <refsect1>
+ <refsection>
<title>Operation <option>--query</option></title>
- <refsect2>
+ <refsection>
<title>Synopsis</title>
<cmdsynopsis>
- <command>nix</command>
+ <command>nix-store</command>
<group>
<arg><option>--query</option></arg>
<arg><option>-q</option></arg>
@@ -244,34 +208,28 @@
</group>
<group>
<arg><option>--requisites</option></arg>
- <arg><option>-r</option></arg>
- </group>
- <group>
- <arg><option>--expansion</option></arg>
- <arg><option>-e</option></arg>
- </group>
- <group>
- <arg><option>--graph</option></arg>
- <arg><option>-g</option></arg>
+ <arg><option>-R</option></arg>
</group>
+ <arg><option>--predecessors</option></arg>
+ <arg><option>--graph</option></arg>
</group>
<arg choice='plain' rep='repeat'><replaceable>args</replaceable></arg>
</cmdsynopsis>
- </refsect2>
+ </refsection>
- <refsect2>
+ <refsection>
<title>Description</title>
<para>
The operation <option>--query</option> displays various bits of
- information about Nix expressions or paths in the store. The queries
+ information about store expressions or store paths. The queries
are described in <xref linkend='nixref-queries' />. At most one query
- can be specified; the default query is <option>--list</option>.
+ can be specified. The default query is <option>--list</option>.
</para>
- </refsect2>
+ </refsection>
- <refsect2 id='nixref-queries'>
+ <refsection id='nixref-queries'>
<title>Queries</title>
<variablelist>
@@ -280,34 +238,15 @@
<term><option>--list</option></term>
<listitem>
<para>
- Prints out the target paths of the Nix expressions indicated by
- the identifiers <replaceable>args</replaceable>. In the case of
- a derivation expression, these are the paths that will be
- produced by the builder of the expression. In the case of a
- slice expression, these are the root paths (which are generally
- the paths that were produced by the builder of the derivation
- expression of which the slice is a normal form).
+ Prints out the <emphasis>output paths</emphasis> of the
+ store expressions indicated by the identifiers
+ <replaceable>args</replaceable>. In the case of a
+ derivation expression, these are the paths that will be
+ produced when the derivation is realised. In the case
+ of a closure expression, these are the paths that were
+ produced the derivation expression of which the closure
+ expression is a successor.
</para>
-
- <para>
- This query has one option:
- </para>
-
- <variablelist>
-
- <varlistentry>
- <term><option>--normalise</option></term>
- <listitem>
- <para>
- Causes the target paths of the <emphasis>normal
- forms</emphasis> of the expressions to be printed, rather
- than the target paths of the expressions themselves.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
</listitem>
</varlistentry>
@@ -315,40 +254,42 @@
<term><option>--requisites</option></term>
<listitem>
<para>
- Prints out the requisite paths of the Nix expressions indicated
- by the identifiers <replaceable>args</replaceable>. The
- requisite paths of a Nix expression are the paths that need to be
- present in the system to be able to realise the expression. That
- is, they form the <emphasis>closure</emphasis> of the expression
- in the file system (i.e., no path in the set of requisite paths
- points to anything outside the set of requisite paths).
+ Prints out the requisite paths of the store expressions
+ indicated by the identifiers
+ <replaceable>args</replaceable>. The requisite paths of
+ a Nix expression are the paths that need to be present
+ in the system to be able to realise the expression.
+ That is, they form the <emphasis>closure</emphasis> of
+ the expression in the file system (i.e., no path in the
+ set of requisite paths points to anything outside the
+ set of requisite paths).
</para>
<para>
- The notion of requisite paths is very useful when one wants to
- distribute Nix expressions. Since they form a closure, they are
- the only paths one needs to distribute to another system to be
- able to realise the expression on the other system.
+ The notion of requisite paths is very useful when one
+ wants to distribute store expressions. Since they form a
+ closure, they are the only paths one needs to distribute
+ to another system to be able to realise the expression
+ on the other system.
</para>
<para>
- This query is generally used to implement various kinds of
- distribution. A <emphasis>source distribution</emphasis> is
- obtained by distributing the requisite paths of a derivation
- expression. A <emphasis>binary distribution</emphasis> is
- obtained by distributing the requisite paths of a slice
- expression (i.e., the normal form of a derivation expression; you
- can directly specify the identifier of the slice expression, or
- use <option>--normalise</option> and specify the identifier of a
- derivation expression). A <emphasis>cache
- distribution</emphasis> is obtained by distributing the
- requisite paths of a derivation expression and specifying the
- option <option>--include-successors</option>. This will include
- not just the paths of a source and binary distribution, but also
- all expressions and paths of subterms of the source. This is
- useful if one wants to realise on the target system a Nix
- expression that is similar but not quite the same as the one
- being distributed, since any common subterms will be reused.
+ This query is generally used to implement various kinds
+ of deployment. A <emphasis>source deployment</emphasis>
+ is obtained by distributing the requisite paths of a
+ derivation expression. A <emphasis>binary
+ deployment</emphasis> is obtained by distributing the
+ requisite paths of a closure expression. A
+ <emphasis>cache deployment</emphasis> is obtained by
+ distributing the requisite paths of a derivation
+ expression and specifying the option
+ <option>--include-successors</option>. This will
+ include not just the paths of a source and binary
+ deployment, but also all expressions and paths of
+ subterms of the source. This is useful if one wants to
+ realise on the target system a Nix expression that is
+ similar but not quite the same as the one being
+ distributed, since any common subterms will be reused.
</para>
<para>
@@ -361,9 +302,10 @@
<term><option>--normalise</option></term>
<listitem>
<para>
- Causes the requisite paths of the <emphasis>normal
- forms</emphasis> of the expressions to be printed, rather
- than the requisite paths of the expressions themselves.
+ Causes the requisite paths of the
+ <emphasis>successor</emphasis> of the given store
+ expressions to be printed, rather than the
+ requisite paths of the expressions themselves.
</para>
</listitem>
</varlistentry>
@@ -372,9 +314,10 @@
<term><option>--exclude-exprs</option></term>
<listitem>
<para>
- Excludes the paths of Nix expressions. This causes the
- closure property to be lost, that is, the resulting set of
- paths is not enough to ensure realisibility.
+ Excludes the paths of store expressions. This
+ causes the closure property to be lost, that is,
+ the resulting set of paths is not enough to ensure
+ realisibility.
</para>
</listitem>
</varlistentry>
@@ -406,12 +349,16 @@
</varlistentry>
<varlistentry>
- <term><option>--expansion</option></term>
+ <term><option>--predecessors</option></term>
<listitem>
<para>
- For each identifier in <replaceable>args</replaceable>, prints
- all expansions of that identifier, that is, all paths whose
- current content matches the identifier.
+ For each store expression stored at paths
+ <replaceable>args</replaceable>, prints its
+ <emphasis>predecessors</emphasis>. A derivation
+ expression <varname>p</varname> is a predecessor of a
+ store expression <varname>q</varname> iff
+ <varname>q</varname> is a successor of
+ <varname>p</varname>.
</para>
</listitem>
</varlistentry>
@@ -420,18 +367,121 @@
<term><option>--graph</option></term>
<listitem>
<para>
- Prints a graph of the closure of the expressions identified by
- <replaceable>args</replaceable> in the format of the
- <command>dot</command> tool of AT&amp;T's GraphViz package.
+ Prints a graph of the closure of the store expressions
+ identified by <replaceable>args</replaceable> in the
+ format of the <command>dot</command> tool of AT&amp;T's
+ GraphViz package.
</para>
</listitem>
</varlistentry>
</variablelist>
- </refsect2>
+ </refsection>
+
+ </refsection>
+
+
+
+ <!--######################################################################-->
+
+ <refsection>
+ <title>Operation <option>--successor</option></title>
+
+ <refsection>
+ <title>Synopsis</title>
+ <cmdsynopsis>
+ <command>nix-store</command>
+ <group>
+ <arg><option>--successor</option></arg>
+ </group>
+ <arg choice='plain'
+ rep='repeat'><replaceable>srcpath</replaceable> <replaceable>sucpath</replaceable></arg>
+ </cmdsynopsis>
+ </refsection>
+
+ <refsection>
+ <title>Description</title>
+
+ <para>
+ The operation <option>--successor</option> registers that the
+ closure expression in <replaceable>sucpath</replaceable> is a
+ successor of the derivation expression in
+ <replaceable>srcpath</replaceable>. This is used to implement
+ binary deployment.
+ </para>
+
+ </refsection>
+
+ </refsection>
+
+
+
+ <!--######################################################################-->
+
+ <refsection>
+ <title>Operation <option>--substitute</option></title>
+
+ <refsection>
+ <title>Synopsis</title>
+ <cmdsynopsis>
+ <command>nix-store</command>
+ <group>
+ <arg><option>--substitute</option></arg>
+ </group>
+ <arg choice='plain'
+ rep='repeat'><replaceable>srcpath</replaceable> <replaceable>subpath</replaceable></arg>
+ </cmdsynopsis>
+ </refsection>
+
+ <refsection>
+ <title>Description</title>
+
+ <para>
+ The operation <option>--substitute</option> registers that the
+ store path <replaceable>srcpath</replaceable> can be built by
+ realising the derivation expression in
+ <replaceable>subpath</replaceable>. This is used to implement
+ binary deployment.
+ </para>
+
+ </refsection>
+
+ </refsection>
+
+
+
+ <!--######################################################################-->
+
+ <refsection>
+ <title>Operation <option>--verify</option></title>
+
+ <refsection>
+ <title>Synopsis</title>
+ <cmdsynopsis>
+ <command>nix-store</command>
+ <group>
+ <arg><option>--verify</option></arg>
+ </group>
+ </cmdsynopsis>
+ </refsection>
+
+ <refsection>
+ <title>Description</title>
+
+ <para>
+ The operation <option>--verify</option> verifies the internal
+ consistency of the Nix database, and the consistency between
+ the Nix database and the Nix store. Any inconsistencies
+ encountered are automatically repaired. Inconsistencies are
+ generally the result of the Nix store or database being
+ modified by non-Nix tools, or of bugs in Nix itself.
+ </para>
+
+ </refsection>
+
+ </refsection>
- </refsect1>
</refentry>
diff --git a/doc/manual/opt-verbose.xml b/doc/manual/opt-verbose.xml
new file mode 100644
index 000000000..5a1007a6a
--- /dev/null
+++ b/doc/manual/opt-verbose.xml
@@ -0,0 +1,73 @@
+<varlistentry>
+ <term><option>--verbose</option></term>
+ <listitem>
+ <para>
+ Increases the level of verbosity of diagnostic messages printed
+ on standard error. For each Nix operation, the information
+ printed on standard output is well-defined; any diagnostic
+ information is printed on standard error, never on standard
+ output.
+ </para>
+
+ <para>
+ This option may be specified repeatedly. Currently, the
+ following verbosity levels exist:
+ </para>
+
+ <variablelist>
+ <varlistentry>
+ <term>0</term>
+ <listitem>
+ <para>
+ <quote>Errors only</quote>: only print messages explaining
+ why the Nix invocation failed.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>1</term>
+ <listitem>
+ <para>
+ <quote>Informational</quote>: print
+ <emphasis>useful</emphasis> messages about what Nix is
+ doing.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>2</term>
+ <listitem>
+ <para>
+ <quote>Talkative</quote>: print more informational messages.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>3</term>
+ <listitem>
+ <para>
+ <quote>Chatty</quote>: print even more informational messages.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>4</term>
+ <listitem>
+ <para>
+ <quote>Debug</quote>: print debug information:
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>5</term>
+ <listitem>
+ <para>
+ <quote>Vomit</quote>: print vast amounts of debug
+ information.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </listitem>
+</varlistentry>
diff --git a/doc/manual/troubleshooting.xml b/doc/manual/troubleshooting.xml
index 1e35c6079..529943f91 100644
--- a/doc/manual/troubleshooting.xml
+++ b/doc/manual/troubleshooting.xml
@@ -1,22 +1,9 @@
<appendix>
<title>Troubleshooting</title>
- <sect1>
- <title>Database logfile removal</title>
-
- <para>
- Every time a Nix database transaction takes place, Nix writes a record of
- this transaction to a <emphasis>log</emphasis> in its database directory
- to ensure that the operation can be replayed in case of a application or
- system crash. However, without manual intervention, the log grows
- indefinitely. Hence, unused log files should be deleted periodically.
- This can be accomplished using the following command:
- </para>
-
- <screen>
- $ rm `db_archive -a -h <replaceable>prefix</replaceable>/var/nix/db`</screen>
-
- </sect1>
+ <para>
+ (Nothing.)
+ </para>
</appendix>