diff options
-rw-r--r-- | README | 39 | ||||
-rw-r--r-- | doc/manual/installation.xml | 91 | ||||
-rw-r--r-- | doc/manual/introduction.xml | 8 | ||||
-rw-r--r-- | doc/manual/overview.xml | 60 |
4 files changed, 124 insertions, 74 deletions
@@ -1,36 +1,5 @@ -Overview -======== + *** Nix *** -Nix is a package manager, deployment system, and component glue -mechanism. - - -Prerequisites -============= - -* Berkeley DB 4.0.14 -* CWI ATerm 2.0 - - -Installation -============ - -* When building from the Subversion repository, first do: - - autoreconf -i - -* To build, do: - - ./configure - make - make install - - Note that this will install to /nix, which is the default prefix. - You can specify another prefix, but this is not recommended if you - want to use prebuilt packages from other sources. - - -Usage -===== - -TODO
\ No newline at end of file +For installation and usage instructions, please read the manual, which +can be found in docs/manual/manual.html, and additionally at the Nix +website at <http://www.cs.uu.nl/groups/ST/Trace/NixDeploymentSystem>. diff --git a/doc/manual/installation.xml b/doc/manual/installation.xml index a9a30b09d..ebc4f168a 100644 --- a/doc/manual/installation.xml +++ b/doc/manual/installation.xml @@ -6,8 +6,9 @@ <para> The easiest way to obtain Nix is to download a <ulink - url='http://www.cs.uu.nl/groups/ST/Trace/Nix'>source - distribution.</ulink> + url='http://www.cs.uu.nl/groups/ST/Trace/Nix'>source + distribution</ulink>. RPMs for SuSE and Red Hat are also + available. These distributions are generated automatically. </para> <para> @@ -35,8 +36,13 @@ $ svn checkout https://svn.cs.uu.nl:12443/repos/trace/nix/trunk nix</screen> <title>Prerequisites</title> <para> - A fairly recent version of GCC/G++ is required. Version 2.95 and higher - should work. + The following prerequisites only apply when you build from + source. Binary releases (e.g., RPMs) have no prerequisites. + </para> + + <para> + A fairly recent version of GCC/G++ is required. Version 2.95 + and higher should work. </para> <para> @@ -63,7 +69,7 @@ $ svn checkout https://svn.cs.uu.nl:12443/repos/trace/nix/trunk nix</screen> </sect1> <sect1> - <title>Building Nix</title> + <title>Building Nix from source</title> <para> After unpacking or checking out the Nix sources, issue the following @@ -113,19 +119,70 @@ $ autoreconf -i</screen> <sect1> + <title>Installing from RPMs</title> + + <para> + RPM packages of Nix can be downloaded from <ulink + url='http://www.cs.uu.nl/groups/ST/Trace/Nix' />. 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> + + <para> + Once downloaded, the RPMs can be installed or upgraded using + <command>rpm -U</command>. For example, + </para> + + <screen> +rpm -U nix-0.5pre664-1.i386.rpm</screen> + + <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> + + <screen> +rm -rf /nix/store +rm -rf /nix/var</screen> + + </sect1> + + <sect1> + <title>Permissions</title> + + <para> + All Nix operations must be performed under the user ID that owns + the Nix store and database + (<filename><replaceable>prefix</replaceable>/store</filename> + and + <filename><replaceable>prefix</replaceable>/var/nix/db</filename>, + respectively). When installed from the RPM packages, these + directories are owned by <systemitem + class='username'>root</systemitem>. + </para> + + </sect1> + + <sect1> <title>Using Nix</title> <para> - To use Nix, some environment variables should be set. In particular, - <envar>PATH</envar> should contain the directories + 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><replaceable>prefix</replaceable>/var/nix/links/current/bin</filename>. - The first directory contains the Nix tools themselves, while the second - contains 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> + <filename>~/.nix-userenv/bin</filename>. The first directory + contains the Nix tools themselves, while + <filename>~/.nix-userenv</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> @@ -135,9 +192,3 @@ $ autoreconf -i</screen> </sect1> </chapter> - -<!-- -local variables: -sgml-parent-document: ("book.xml" "chapter") -end: ---> diff --git a/doc/manual/introduction.xml b/doc/manual/introduction.xml index b41cad0a8..02a438336 100644 --- a/doc/manual/introduction.xml +++ b/doc/manual/introduction.xml @@ -91,11 +91,3 @@ </para> </chapter> - - - -<!-- -local variables: -sgml-parent-document: ("book.xml" "chapter") -end: ---> diff --git a/doc/manual/overview.xml b/doc/manual/overview.xml index 85f164587..9925be994 100644 --- a/doc/manual/overview.xml +++ b/doc/manual/overview.xml @@ -5,6 +5,10 @@ This chapter provides a guided tour of Nix. </para> + + + <!--######################################################################--> + <sect1> <title>Basic package management</title> @@ -63,7 +67,7 @@ pan-0.14.2</screen> </para> <screen> -$ nix-env -qf pkgs/system/i686-linux.nix +$ nix-env -qaf pkgs/system/i686-linux.nix gettext-0.12.1 sylpheed-0.9.7 aterm-2.0 @@ -86,7 +90,7 @@ pan-0.14.2 </para> <screen> -$ nix-env -qsf pkgs/system/i686-linux.nix +$ nix-env -qasf pkgs/system/i686-linux.nix -P gettext-0.12.1 IP sylpheed-0.9.7 -- aterm-2.0 @@ -111,7 +115,7 @@ IP sylpheed-0.9.7 </para> <screen> -$ nix-env -i pkgs/system/i686-linux.nix pan-0.14.2</screen> +$ nix-env -if pkgs/system/i686-linux.nix pan</screen> <para> Since installation may take a long time, depending on whether any @@ -234,11 +238,52 @@ lrwxrwxrwx 1 eelco ... svn -> /nix/store/3829...fb5d-subversion-0.32.1/bin/svn </para> <screen> -$ nix-env -u pan-0.14.2</screen> +$ nix-env -e pan</screen> + + <para> + This means that the package is removed from the user + environment. It is <emphasis>not</emphasis> yet removed from + the system. When a package is uninstalled from a user + environment, it may still be used by other packages, or may + still be present in other user environments. Deleting it under + such conditions would break those other packages or user + environments. To prevent this, packages are only + <quote>physically</quote> deleted by running the Nix garbage + collector, which searches for all packages in the Nix store that + are no longer <quote>reachable</quote> from outside the store. + Thus, uninstalling a package is always safe: it cannot break + other packages. + </para> + + <para> + Upgrading packages is easy. Given a Nix expression that + contains newer versions of installed packages (that is, packages + with the same package name, but a higher version number), + <command>nix-env -u</command> will replace the installed package + in the user environment with the newer package. For example, + + <screen> +$ nix-env -uf pkgs/system/i686-linux.nix pan</screen> + + looks for a newer version of Pan, and installs it if found. + Also useful is the ability to upgrade <emphasis>all</emphasis> + packages: + + <screen> +$ nix-env -uf pkgs/system/i686-linux.nix '*'</screen> + + The asterisk matches all installed packages<footnote><para>No, + we don't support arbitrary regular + expressions</para></footnote>. Note that <literal>*</literal> + must be quoted to prevent shell globbing. + </para> </sect1> + + <!--######################################################################--> + <sect1> <title>Writing Nix expressions</title> @@ -400,11 +445,4 @@ derivation { </sect1> - </chapter> - -<!-- -local variables: -sgml-parent-document: ("book.xml" "chapter") -end: ---> |