2006-08-21 19:05:11 +03:00
|
|
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
|
<chapter xmlns="http://docbook.org/ns/docbook"
|
|
|
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
|
|
|
xml:id="chap-installation">
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
2006-08-21 19:05:11 +03:00
|
|
|
|
<title>Installation</title>
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
|
|
|
|
|
2007-05-17 01:07:39 +03:00
|
|
|
|
<section><title>Supported platforms</title>
|
|
|
|
|
|
|
|
|
|
<para>Nix is currently supported on the following platforms:
|
|
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
|
|
|
|
|
|
<listitem><para>Linux (particularly on x86, x86_64, and
|
|
|
|
|
PowerPC).</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem><para>Mac OS X, both on Intel and
|
|
|
|
|
PowerPC.</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem><para>FreeBSD (only tested on Intel).</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem><para>Windows through <link
|
|
|
|
|
xlink:href="http://www.cygwin.com/">Cygwin</link>.</para>
|
|
|
|
|
|
|
|
|
|
<warning><para>On Cygwin, Nix <emphasis>must</emphasis> be installed
|
|
|
|
|
on an NTFS partition. It will not work correctly on a FAT
|
|
|
|
|
partition.</para></warning>
|
|
|
|
|
|
|
|
|
|
</listitem>
|
|
|
|
|
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>Nix is pretty portable, so it should work on most other Unix
|
|
|
|
|
platforms as well.</para>
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
2006-10-04 20:07:58 +03:00
|
|
|
|
<section><title>Obtaining Nix</title>
|
2006-08-21 19:05:11 +03:00
|
|
|
|
|
2006-09-29 13:31:56 +03:00
|
|
|
|
<para>The easiest way to obtain Nix is to download a <link
|
|
|
|
|
xlink:href="http://www.cs.uu.nl/groups/ST/Trace/Nix">source
|
|
|
|
|
distribution</link>. RPMs for Red Hat, SuSE, and Fedora Core are also
|
|
|
|
|
available.</para>
|
2004-10-14 14:54:41 +03:00
|
|
|
|
|
|
|
|
|
<para>Alternatively, the most recent sources of Nix can be obtained
|
2006-08-21 19:05:11 +03:00
|
|
|
|
from its <link
|
|
|
|
|
xlink:href="https://svn.cs.uu.nl:12443/repos/trace/nix/trunk">Subversion
|
|
|
|
|
repository</link>. For example, the following command will check out
|
|
|
|
|
the latest revision into a directory called
|
|
|
|
|
<filename>nix</filename>:</para>
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<screen>
|
2003-11-26 14:30:16 +02:00
|
|
|
|
$ svn checkout https://svn.cs.uu.nl:12443/repos/trace/nix/trunk nix</screen>
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
2006-08-21 19:05:11 +03:00
|
|
|
|
<para>Likewise, specific releases can be obtained from the <link
|
|
|
|
|
xlink:href="https://svn.cs.uu.nl:12443/repos/trace/nix/tags">tags
|
|
|
|
|
directory</link> of the repository. If you don't have Subversion, you
|
|
|
|
|
can also download an automatically generated <link
|
|
|
|
|
xlink:href="https://svn.cs.uu.nl:12443/dist/trace/">compressed
|
|
|
|
|
tar-file</link> of the head revision of the trunk.</para>
|
2003-11-26 14:30:16 +02:00
|
|
|
|
|
2006-08-21 19:05:11 +03:00
|
|
|
|
</section>
|
2003-11-26 14:30:16 +02:00
|
|
|
|
|
|
|
|
|
|
2006-10-04 20:07:58 +03:00
|
|
|
|
<section><title>Prerequisites</title>
|
2004-01-20 13:49:32 +02:00
|
|
|
|
|
2006-09-29 13:31:56 +03:00
|
|
|
|
<para><emphasis>The following prerequisites only apply when you build
|
|
|
|
|
from source</emphasis>. Binary releases (e.g., RPMs) have no
|
|
|
|
|
prerequisites.</para>
|
2003-11-26 14:30:16 +02:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<para>A fairly recent version of GCC/G++ is required. Version 2.95
|
|
|
|
|
and higher should work.</para>
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<para>To build this manual and the man-pages you need the
|
|
|
|
|
<command>xmllint</command> and <command>xsltproc</command> programs,
|
|
|
|
|
which are part of the <literal>libxml2</literal> and
|
|
|
|
|
<literal>libxslt</literal> packages, respectively. You also need the
|
2006-08-21 19:05:11 +03:00
|
|
|
|
<link
|
|
|
|
|
xlink:href="http://docbook.sourceforge.net/projects/xsl/">DocBook XSL
|
|
|
|
|
stylesheets</link> and optionally the <link
|
2006-09-29 13:31:56 +03:00
|
|
|
|
xlink:href="http://www.docbook.org/schemas/5x"> DocBook 5.0 RELAX NG
|
|
|
|
|
schemas</link>. Note that these are only required if you modify the
|
|
|
|
|
manual sources or when you are building from the Subversion
|
2004-10-14 14:54:41 +03:00
|
|
|
|
repository.</para>
|
|
|
|
|
|
|
|
|
|
<para>To build the parser, very <emphasis>recent</emphasis> versions
|
|
|
|
|
of Bison and Flex are required. (This is because Nix needs GLR
|
|
|
|
|
support in Bison and reentrancy support in Flex.) For Bison, you need
|
2007-04-16 19:08:44 +03:00
|
|
|
|
version 2.3 or higher (1.875 does <emphasis>not</emphasis> work),
|
|
|
|
|
which can be obtained from
|
|
|
|
|
the <link xlink:href="ftp://alpha.gnu.org/pub/gnu/bison">GNU FTP
|
|
|
|
|
server</link>. For Flex, you need version 2.5.33, which is available
|
|
|
|
|
on <link xlink:href="http://lex.sourceforge.net/">SourceForge</link>.
|
|
|
|
|
Slightly older versions may also work, but ancient versions like the
|
|
|
|
|
ubiquitous 2.5.4a won't. Note that these are only required if you
|
|
|
|
|
modify the parser or when you are building from the Subversion
|
|
|
|
|
repository.</para>
|
2004-10-14 14:54:41 +03:00
|
|
|
|
|
|
|
|
|
<para>Nix uses Sleepycat's Berkeley DB and CWI's ATerm library. These
|
|
|
|
|
are included in the Nix source distribution. If you build from the
|
|
|
|
|
Subversion repository, you must download them yourself and place them
|
|
|
|
|
in the <filename>externals/</filename> directory. See
|
|
|
|
|
<filename>externals/Makefile.am</filename> for the precise URLs of
|
2004-10-31 19:08:48 +02:00
|
|
|
|
these packages. Alternatively, if you already have them installed,
|
|
|
|
|
you can use <command>configure</command>'s <option>--with-bdb</option>
|
|
|
|
|
and <option>--with-aterm</option> options to point to their respective
|
|
|
|
|
locations. Note that Berkeley DB <emphasis>must</emphasis> be version
|
2007-04-16 19:08:44 +03:00
|
|
|
|
4.5; other versions may not have compatible database formats.</para>
|
2004-10-14 14:54:41 +03:00
|
|
|
|
|
2006-08-21 19:05:11 +03:00
|
|
|
|
</section>
|
2004-01-30 18:32:14 +02:00
|
|
|
|
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
2006-10-04 20:07:58 +03:00
|
|
|
|
<section><title>Building Nix from source</title>
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<para>After unpacking or checking out the Nix sources, issue the
|
|
|
|
|
following commands:
|
2003-08-13 12:13:52 +03:00
|
|
|
|
</para>
|
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<screen>
|
2003-08-13 18:17:57 +03:00
|
|
|
|
$ ./configure <replaceable>options...</replaceable>
|
|
|
|
|
$ make
|
|
|
|
|
$ make install</screen>
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<para>When building from the Subversion repository, these should be
|
|
|
|
|
preceded by the command:
|
2003-11-26 14:30:16 +02:00
|
|
|
|
</para>
|
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<screen>
|
2007-05-17 01:07:39 +03:00
|
|
|
|
$ ./boostrap</screen>
|
2003-11-26 14:30:16 +02:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<para>The installation path can be specified by passing the
|
|
|
|
|
<option>--prefix=<replaceable>prefix</replaceable></option> to
|
|
|
|
|
<command>configure</command>. The default installation directory is
|
|
|
|
|
<filename>/nix</filename>. You can change this to any location you
|
|
|
|
|
like. You must have write permission to the
|
2004-10-31 19:08:48 +02:00
|
|
|
|
<replaceable>prefix</replaceable> path.</para>
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
2006-09-29 13:31:56 +03:00
|
|
|
|
<warning><para>It is best <emphasis>not</emphasis> to change the
|
|
|
|
|
installation prefix from its default, since doing so makes it
|
|
|
|
|
impossible to use pre-built binaries from the standard Nixpkgs
|
|
|
|
|
channels.</para></warning>
|
2003-11-26 14:30:16 +02:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<para>If you want to rebuilt the documentation, pass the full path to
|
2006-09-29 13:31:56 +03:00
|
|
|
|
the DocBook RELAX NG schemas and to the DocBook XSL stylesheets using
|
|
|
|
|
the
|
|
|
|
|
<option>--with-docbook-rng=<replaceable>path</replaceable></option>
|
2004-10-14 14:54:41 +03:00
|
|
|
|
and
|
|
|
|
|
<option>--with-docbook-xsl=<replaceable>path</replaceable></option>
|
|
|
|
|
options.</para>
|
2003-08-13 12:13:52 +03:00
|
|
|
|
|
2006-08-21 19:05:11 +03:00
|
|
|
|
</section>
|
2003-11-26 16:25:39 +02:00
|
|
|
|
|
2004-01-20 13:49:32 +02:00
|
|
|
|
|
2006-10-04 20:07:58 +03:00
|
|
|
|
<section><title>Installing from RPMs</title>
|
2004-01-20 13:49:32 +02:00
|
|
|
|
|
2006-08-21 19:05:11 +03:00
|
|
|
|
<para>RPM packages of Nix can be downloaded from <uri
|
|
|
|
|
xlink:href="http://www.cs.uu.nl/groups/ST/Trace/Nix">http://www.cs.uu.nl/groups/ST/Trace/Nix</uri>.
|
|
|
|
|
These RPMs should work for most fairly recent releases of SuSE and Red
|
|
|
|
|
Hat Linux. They have been known to work work on SuSE Linux 8.1 and
|
|
|
|
|
9.0, and Red Hat 9.0. In fact, it should work on any RPM-based Linux
|
|
|
|
|
distribution based on <literal>glibc</literal> 2.3 or later.</para>
|
2004-01-20 13:49:32 +02:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<para>Once downloaded, the RPMs can be installed or upgraded using
|
|
|
|
|
<command>rpm -U</command>. For example,</para>
|
|
|
|
|
|
|
|
|
|
<screen>
|
2004-10-31 19:08:48 +02:00
|
|
|
|
$ rpm -U nix-0.5pre664-1.i386.rpm</screen>
|
2004-01-20 13:49:32 +02:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<para>The RPMs install into the directory <filename>/nix</filename>.
|
|
|
|
|
Nix can be uninstalled using <command>rpm -e nix</command>. After
|
|
|
|
|
this it will be necessary to manually remove the Nix store and other
|
|
|
|
|
auxiliary data:</para>
|
2004-01-20 13:49:32 +02:00
|
|
|
|
|
2004-10-14 14:54:41 +03:00
|
|
|
|
<screen>
|
2004-10-31 19:08:48 +02:00
|
|
|
|
$ rm -rf /nix/store
|
|
|
|
|
$ rm -rf /nix/var</screen>
|
2004-01-20 13:49:32 +02:00
|
|
|
|
|
2006-08-21 19:05:11 +03:00
|
|
|
|
</section>
|
2004-01-20 13:49:32 +02:00
|
|
|
|
|
|
|
|
|
|
2006-10-04 20:07:58 +03:00
|
|
|
|
<section><title>Upgrading Nix through Nix</title>
|
2006-09-29 14:03:16 +03:00
|
|
|
|
|
|
|
|
|
<para>You can install the latest stable version of Nix through Nix
|
|
|
|
|
itself by subscribing to the channel <link
|
2007-02-05 14:10:10 +02:00
|
|
|
|
xlink:href="http://nix.cs.uu.nl/dist/nix/channels-v3/nix-stable" />,
|
2006-09-29 14:03:16 +03:00
|
|
|
|
or the latest unstable version by subscribing to the channel<link
|
|
|
|
|
xlink:href="http://nix.cs.uu.nl/dist/nix/channels-v3/nix-unstable" />.
|
|
|
|
|
You can also do a <link linkend="sec-one-click">one-click
|
|
|
|
|
installation</link> by clicking on the package links at <link
|
|
|
|
|
xlink:href="http://nix.cs.uu.nl/dist/nix/" />.</para>
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
2007-05-17 01:07:39 +03:00
|
|
|
|
<section><title>Security</title>
|
|
|
|
|
|
|
|
|
|
<para>Nix has two basic security models. First, it can be used in
|
|
|
|
|
“single-user mode”, which is similar to what most other package
|
|
|
|
|
management tools do: there is a single user (typically <systemitem
|
|
|
|
|
class="username">root</systemitem>) who performs all package
|
|
|
|
|
management operations. All other users can then use the installed
|
|
|
|
|
packages, but they cannot perform package management operations
|
|
|
|
|
themselves.</para>
|
|
|
|
|
|
|
|
|
|
<para>Alternatively, you can configure Nix in “multi-user mode”. In
|
|
|
|
|
this model, all users can perform package management operations — for
|
|
|
|
|
instance, every user can install software without requiring root
|
|
|
|
|
privileges. Nix ensures that this is secure. For instance, it’s not
|
|
|
|
|
possible for one user to overwrite a package used by another user with
|
|
|
|
|
a Trojan horse.</para>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section><title>Single-user mode</title>
|
|
|
|
|
|
|
|
|
|
<para>In single-user mode, all Nix operations that access the database
|
|
|
|
|
in <filename><replaceable>prefix</replaceable>/var/nix/db</filename>
|
|
|
|
|
or modify the Nix store in
|
|
|
|
|
<filename><replaceable>prefix</replaceable>/store</filename> must be
|
|
|
|
|
performed under the user ID that owns those directories. This is
|
|
|
|
|
typically <systemitem class="username">root</systemitem>. (If you
|
|
|
|
|
install from RPM packages, that’s in fact the default ownership.)
|
|
|
|
|
However, on single-user machines, it is often convenient to
|
|
|
|
|
<command>chown</command> those directories to your normal user account
|
|
|
|
|
so that you don’t have to <command>su</command> to <systemitem
|
|
|
|
|
class="username">root</systemitem> all the time.</para>
|
2004-10-31 19:08:48 +02:00
|
|
|
|
|
2007-05-17 01:07:39 +03:00
|
|
|
|
</section>
|
2004-10-31 19:08:48 +02:00
|
|
|
|
|
|
|
|
|
|
2007-05-17 01:07:39 +03:00
|
|
|
|
<section><title>Multi-user mode</title>
|
2004-10-31 19:08:48 +02:00
|
|
|
|
|
2007-05-17 01:07:39 +03:00
|
|
|
|
<para></para>
|
2007-01-15 16:50:25 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
|
|
|
|
|
warning: the nix-builders group should contain *only* the Nix
|
|
|
|
|
builders, and nothing else. If the Nix account is compromised, you
|
|
|
|
|
can execute programs under the accounts in the nix-builders group, so
|
|
|
|
|
it obviously shouldn’t contain any “real” user accounts. So don’t use
|
|
|
|
|
an existing group like <literal>users</literal> — just create a new
|
|
|
|
|
one.
|
|
|
|
|
|
|
|
|
|
-->
|
|
|
|
|
|
2007-05-17 01:07:39 +03:00
|
|
|
|
<note><para>Multi-user mode has one important limitation: only
|
|
|
|
|
<systemitem class="username">root</systemitem> can run <command
|
|
|
|
|
linkend="sec-nix-pull">nix-pull</command> to register the availability
|
|
|
|
|
of pre-built binaries. However, those registrations
|
|
|
|
|
<emphasis>are</emphasis> used by all users to speed up
|
|
|
|
|
builds.</para></note>
|
2007-01-15 16:50:25 +02:00
|
|
|
|
|
2006-08-21 19:05:11 +03:00
|
|
|
|
</section>
|
2004-10-31 19:08:48 +02:00
|
|
|
|
|
2007-05-17 01:07:39 +03:00
|
|
|
|
|
|
|
|
|
</section> <!-- end of permissions section -->
|
2004-01-20 13:49:32 +02:00
|
|
|
|
|
2003-11-26 16:25:39 +02:00
|
|
|
|
|
2006-10-04 20:07:58 +03:00
|
|
|
|
<section><title>Using Nix</title>
|
2004-10-14 14:54:41 +03:00
|
|
|
|
|
|
|
|
|
<para>To use Nix, some environment variables should be set. In
|
|
|
|
|
particular, <envar>PATH</envar> should contain the directories
|
|
|
|
|
<filename><replaceable>prefix</replaceable>/bin</filename> and
|
|
|
|
|
<filename>~/.nix-profile/bin</filename>. The first directory contains
|
|
|
|
|
the Nix tools themselves, while <filename>~/.nix-profile</filename> is
|
|
|
|
|
a symbolic link to the current <emphasis>user environment</emphasis>
|
|
|
|
|
(an automatically generated package consisting of symlinks to
|
|
|
|
|
installed packages). The simplest way to set the required environment
|
|
|
|
|
variables is to include the file
|
|
|
|
|
<filename><replaceable>prefix</replaceable>/etc/profile.d/nix.sh</filename>
|
|
|
|
|
in your <filename>~/.bashrc</filename> (or similar), like this:</para>
|
|
|
|
|
|
|
|
|
|
<screen>
|
2004-11-01 14:02:44 +02:00
|
|
|
|
source <replaceable>prefix</replaceable>/etc/profile.d/nix.sh</screen>
|
2003-11-26 16:25:39 +02:00
|
|
|
|
|
2006-08-21 19:05:11 +03:00
|
|
|
|
</section>
|
2004-10-14 14:54:41 +03:00
|
|
|
|
|
2003-11-26 16:25:39 +02:00
|
|
|
|
|
2003-08-13 12:13:52 +03:00
|
|
|
|
</chapter>
|