mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-29 09:06:15 +02:00
Manual: Remove old cruft
This commit is contained in:
parent
478e3e4649
commit
f8e8dd827e
9 changed files with 2 additions and 152 deletions
|
@ -1,34 +0,0 @@
|
||||||
<section xmlns="http://docbook.org/ns/docbook"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
||||||
version="5.0"
|
|
||||||
xml:id="sec-debug-build">
|
|
||||||
|
|
||||||
<title>Debugging Build Failures</title>
|
|
||||||
|
|
||||||
<para>At the beginning of each phase of the build (such as unpacking,
|
|
||||||
building or installing), the set of all shell variables is written to
|
|
||||||
the file <filename>env-vars</filename> at the top-level build
|
|
||||||
directory. This is useful for debugging: it allows you to recreate
|
|
||||||
the environment in which a build was performed. For instance, if a
|
|
||||||
build fails, then assuming you used the <option>-K</option> flag, you
|
|
||||||
can go to the output directory and <quote>switch</quote> to the
|
|
||||||
environment of the builder:
|
|
||||||
|
|
||||||
<screen>
|
|
||||||
$ nix-build -K ./foo.nix
|
|
||||||
... fails, keeping build directory `/tmp/nix-1234-0'
|
|
||||||
|
|
||||||
$ cd /tmp/nix-1234-0
|
|
||||||
|
|
||||||
$ source env-vars
|
|
||||||
|
|
||||||
<lineannotation>(edit some files...)</lineannotation>
|
|
||||||
|
|
||||||
$ make
|
|
||||||
|
|
||||||
<lineannotation>(execution continues with the same GCC, make, etc.)</lineannotation></screen>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
</section>
|
|
|
@ -81,6 +81,4 @@ Just pass the option <link linkend='opt-max-jobs'><option>-j
|
||||||
in parallel, or set. Typically this should be the number of
|
in parallel, or set. Typically this should be the number of
|
||||||
CPUs.</para>
|
CPUs.</para>
|
||||||
|
|
||||||
<xi:include href="debug-build.xml" />
|
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -79,16 +79,6 @@ alice$ ./install
|
||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>Nix can be uninstalled using <command>rpm -e nix</command> or
|
|
||||||
<command>dpkg -r nix</command> on RPM- and Dpkg-based systems,
|
|
||||||
respectively. After this you should manually remove the Nix store and
|
|
||||||
other auxiliary data, if desired:
|
|
||||||
|
|
||||||
<screen>
|
|
||||||
$ rm -rf /nix</screen>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>You can uninstall Nix simply by running:
|
<para>You can uninstall Nix simply by running:
|
||||||
|
|
||||||
<screen>
|
<screen>
|
||||||
|
|
|
@ -33,7 +33,4 @@
|
||||||
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>Nix is fairly portable, so it should work on most platforms that
|
|
||||||
support POSIX threads and have a C++11 compiler.</para>
|
|
||||||
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
|
@ -15,7 +15,7 @@ to subsequent chapters.</para>
|
||||||
<step><para>Install single-user Nix by running the following:
|
<step><para>Install single-user Nix by running the following:
|
||||||
|
|
||||||
<screen>
|
<screen>
|
||||||
$ curl https://nixos.org/nix/install | sh
|
$ bash <(curl https://nixos.org/nix/install)
|
||||||
</screen>
|
</screen>
|
||||||
|
|
||||||
This will install Nix in <filename>/nix</filename>. The install script
|
This will install Nix in <filename>/nix</filename>. The install script
|
||||||
|
|
|
@ -12,14 +12,11 @@
|
||||||
<firstname>Eelco</firstname>
|
<firstname>Eelco</firstname>
|
||||||
<surname>Dolstra</surname>
|
<surname>Dolstra</surname>
|
||||||
</personname>
|
</personname>
|
||||||
<affiliation>
|
|
||||||
<orgname>LogicBlox</orgname>
|
|
||||||
</affiliation>
|
|
||||||
<contrib>Author</contrib>
|
<contrib>Author</contrib>
|
||||||
</author>
|
</author>
|
||||||
|
|
||||||
<copyright>
|
<copyright>
|
||||||
<year>2004-2014</year>
|
<year>2004-2017</year>
|
||||||
<holder>Eelco Dolstra</holder>
|
<holder>Eelco Dolstra</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
|
||||||
|
@ -41,7 +38,6 @@
|
||||||
<xi:include href="expressions/writing-nix-expressions.xml" />
|
<xi:include href="expressions/writing-nix-expressions.xml" />
|
||||||
<xi:include href="advanced-topics/advanced-topics.xml" />
|
<xi:include href="advanced-topics/advanced-topics.xml" />
|
||||||
<xi:include href="command-ref/command-ref.xml" />
|
<xi:include href="command-ref/command-ref.xml" />
|
||||||
<xi:include href="troubleshooting/troubleshooting.xml" />
|
|
||||||
<xi:include href="glossary/glossary.xml" />
|
<xi:include href="glossary/glossary.xml" />
|
||||||
<xi:include href="hacking.xml" />
|
<xi:include href="hacking.xml" />
|
||||||
<xi:include href="release-notes/release-notes.xml" />
|
<xi:include href="release-notes/release-notes.xml" />
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
<section xmlns="http://docbook.org/ns/docbook"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
||||||
version="5.0"
|
|
||||||
xml:id="sec-collisions-nixenv">
|
|
||||||
|
|
||||||
<title>Collisions in <command>nix-env</command></title>
|
|
||||||
|
|
||||||
<para>Symptom: when installing or upgrading, you get an error message such as
|
|
||||||
|
|
||||||
<screen>
|
|
||||||
$ nix-env -i docbook-xml
|
|
||||||
...
|
|
||||||
adding /nix/store/s5hyxgm62gk2...-docbook-xml-4.2
|
|
||||||
collision between `/nix/store/s5hyxgm62gk2...-docbook-xml-4.2/xml/dtd/docbook/calstblx.dtd'
|
|
||||||
and `/nix/store/06h377hr4b33...-docbook-xml-4.3/xml/dtd/docbook/calstblx.dtd'
|
|
||||||
at /nix/store/...-builder.pl line 62.</screen>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>The cause is that two installed packages in the user environment
|
|
||||||
have overlapping filenames (e.g.,
|
|
||||||
<filename>xml/dtd/docbook/calstblx.dtd</filename>. This usually
|
|
||||||
happens when you accidentally try to install two versions of the same
|
|
||||||
package. For instance, in the example above, the Nix Packages
|
|
||||||
collection contains two versions of <literal>docbook-xml</literal>, so
|
|
||||||
<command>nix-env -i</command> will try to install both. The default
|
|
||||||
user environment builder has no way to way to resolve such conflicts,
|
|
||||||
so it just gives up.</para>
|
|
||||||
|
|
||||||
<para>Solution: remove one of the offending packages from the user
|
|
||||||
environment (if already installed) using <command>nix-env
|
|
||||||
-e</command>, or specify exactly which version should be installed
|
|
||||||
(e.g., <literal>nix-env -i docbook-xml-4.2</literal>).</para>
|
|
||||||
|
|
||||||
<!-- FIXME: describe priorities -->
|
|
||||||
|
|
||||||
</section>
|
|
|
@ -1,43 +0,0 @@
|
||||||
<section xmlns="http://docbook.org/ns/docbook"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
||||||
version="5.0"
|
|
||||||
xml:id="sec-links-nix-store">
|
|
||||||
|
|
||||||
<title><quote>Too many links</quote> Error in the Nix store</title>
|
|
||||||
|
|
||||||
|
|
||||||
<para>Symptom: when building something, you get an error message such as
|
|
||||||
|
|
||||||
<screen>
|
|
||||||
...
|
|
||||||
<literal>mkdir: cannot create directory `/nix/store/<replaceable>name</replaceable>': Too many links</literal></screen>
|
|
||||||
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>This is usually because you have more than 32,000 subdirectories
|
|
||||||
in <filename>/nix/store</filename>, as can be seen using <command>ls
|
|
||||||
-l</command>:
|
|
||||||
|
|
||||||
<screen>
|
|
||||||
$ ls -ld /nix/store
|
|
||||||
drwxrwxrwt 32000 nix nix 4620288 Sep 8 15:08 store</screen>
|
|
||||||
|
|
||||||
The <literal>ext2</literal> file system is limited to an inode link
|
|
||||||
count of 32,000 (each subdirectory increasing the count by one).
|
|
||||||
Furthermore, the <literal>st_nlink</literal> field of the
|
|
||||||
<function>stat</function> system call is a 16-bit value.</para>
|
|
||||||
|
|
||||||
<para>This only happens on very large Nix installations (such as build
|
|
||||||
machines).</para>
|
|
||||||
|
|
||||||
<para>Quick solution: run the garbage collector. You may want to use
|
|
||||||
the <option>--max-links</option> option.</para>
|
|
||||||
|
|
||||||
<para>Real solution: put the Nix store on a file system that supports
|
|
||||||
more than 32,000 subdirectories per directory, such as ext4. (This
|
|
||||||
doesn’t solve the <literal>st_nlink</literal> limit, but ext4 lies to
|
|
||||||
the kernel by reporting a link count of 1 if it exceeds the
|
|
||||||
limit.)</para>
|
|
||||||
|
|
||||||
</section>
|
|
|
@ -1,16 +0,0 @@
|
||||||
<appendix xmlns="http://docbook.org/ns/docbook"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
||||||
version="5.0"
|
|
||||||
xml:id="ch-troubleshooting">
|
|
||||||
|
|
||||||
<title>Troubleshooting</title>
|
|
||||||
|
|
||||||
<para>This section provides solutions for some common problems. See
|
|
||||||
the <link xlink:href="https://github.com/NixOS/nix/issues">Nix bug
|
|
||||||
tracker</link> for a list of currently known issues.</para>
|
|
||||||
|
|
||||||
<xi:include href="collisions-nixenv.xml" />
|
|
||||||
<xi:include href="links-nix-store.xml" />
|
|
||||||
|
|
||||||
</appendix>
|
|
Loading…
Reference in a new issue