forked from lix-project/lix
* Manual updates.
* Updated the README. Now it just refers to the manual.
This commit is contained in:
parent
699989b216
commit
8baf50f108
39
README
39
README
|
@ -1,36 +1,5 @@
|
||||||
Overview
|
*** Nix ***
|
||||||
========
|
|
||||||
|
|
||||||
Nix is a package manager, deployment system, and component glue
|
For installation and usage instructions, please read the manual, which
|
||||||
mechanism.
|
can be found in docs/manual/manual.html, and additionally at the Nix
|
||||||
|
website at <http://www.cs.uu.nl/groups/ST/Trace/NixDeploymentSystem>.
|
||||||
|
|
||||||
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
|
|
||||||
|
|
|
@ -6,8 +6,9 @@
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The easiest way to obtain Nix is to download a <ulink
|
The easiest way to obtain Nix is to download a <ulink
|
||||||
url='http://www.cs.uu.nl/groups/ST/Trace/Nix'>source
|
url='http://www.cs.uu.nl/groups/ST/Trace/Nix'>source
|
||||||
distribution.</ulink>
|
distribution</ulink>. RPMs for SuSE and Red Hat are also
|
||||||
|
available. These distributions are generated automatically.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -35,8 +36,13 @@ $ svn checkout https://svn.cs.uu.nl:12443/repos/trace/nix/trunk nix</screen>
|
||||||
<title>Prerequisites</title>
|
<title>Prerequisites</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
A fairly recent version of GCC/G++ is required. Version 2.95 and higher
|
The following prerequisites only apply when you build from
|
||||||
should work.
|
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>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -63,7 +69,7 @@ $ svn checkout https://svn.cs.uu.nl:12443/repos/trace/nix/trunk nix</screen>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1>
|
<sect1>
|
||||||
<title>Building Nix</title>
|
<title>Building Nix from source</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
After unpacking or checking out the Nix sources, issue the following
|
After unpacking or checking out the Nix sources, issue the following
|
||||||
|
@ -112,19 +118,70 @@ $ autoreconf -i</screen>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
|
||||||
|
<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>
|
<sect1>
|
||||||
<title>Using Nix</title>
|
<title>Using Nix</title>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
To use Nix, some environment variables should be set. In particular,
|
To use Nix, some environment variables should be set. In
|
||||||
<envar>PATH</envar> should contain the directories
|
particular, <envar>PATH</envar> should contain the directories
|
||||||
<filename><replaceable>prefix</replaceable>/bin</filename> and
|
<filename><replaceable>prefix</replaceable>/bin</filename> and
|
||||||
<filename><replaceable>prefix</replaceable>/var/nix/links/current/bin</filename>.
|
<filename>~/.nix-userenv/bin</filename>. The first directory
|
||||||
The first directory contains the Nix tools themselves, while the second
|
contains the Nix tools themselves, while
|
||||||
contains to the current <emphasis>user environment</emphasis> (an
|
<filename>~/.nix-userenv</filename> is a symbolic link to the
|
||||||
automatically generated package consisting of symlinks to installed
|
current <emphasis>user environment</emphasis> (an automatically
|
||||||
packages). The simplest way to set the required environment variables is
|
generated package consisting of symlinks to installed packages).
|
||||||
to include the file
|
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><replaceable>prefix</replaceable>/etc/profile.d/nix.sh</filename>
|
||||||
in your <filename>~/.bashrc</filename> (or similar), like this:
|
in your <filename>~/.bashrc</filename> (or similar), like this:
|
||||||
</para>
|
</para>
|
||||||
|
@ -135,9 +192,3 @@ $ autoreconf -i</screen>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<!--
|
|
||||||
local variables:
|
|
||||||
sgml-parent-document: ("book.xml" "chapter")
|
|
||||||
end:
|
|
||||||
-->
|
|
||||||
|
|
|
@ -91,11 +91,3 @@
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
|
||||||
local variables:
|
|
||||||
sgml-parent-document: ("book.xml" "chapter")
|
|
||||||
end:
|
|
||||||
-->
|
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
This chapter provides a guided tour of Nix.
|
This chapter provides a guided tour of Nix.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--######################################################################-->
|
||||||
|
|
||||||
<sect1>
|
<sect1>
|
||||||
<title>Basic package management</title>
|
<title>Basic package management</title>
|
||||||
|
|
||||||
|
@ -63,7 +67,7 @@ pan-0.14.2</screen>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<screen>
|
<screen>
|
||||||
$ nix-env -qf pkgs/system/i686-linux.nix
|
$ nix-env -qaf pkgs/system/i686-linux.nix
|
||||||
gettext-0.12.1
|
gettext-0.12.1
|
||||||
sylpheed-0.9.7
|
sylpheed-0.9.7
|
||||||
aterm-2.0
|
aterm-2.0
|
||||||
|
@ -86,7 +90,7 @@ pan-0.14.2
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<screen>
|
<screen>
|
||||||
$ nix-env -qsf pkgs/system/i686-linux.nix
|
$ nix-env -qasf pkgs/system/i686-linux.nix
|
||||||
-P gettext-0.12.1
|
-P gettext-0.12.1
|
||||||
IP sylpheed-0.9.7
|
IP sylpheed-0.9.7
|
||||||
-- aterm-2.0
|
-- aterm-2.0
|
||||||
|
@ -111,7 +115,7 @@ IP sylpheed-0.9.7
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<screen>
|
<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>
|
<para>
|
||||||
Since installation may take a long time, depending on whether any
|
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>
|
</para>
|
||||||
|
|
||||||
<screen>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!--######################################################################-->
|
||||||
|
|
||||||
<sect1>
|
<sect1>
|
||||||
<title>Writing Nix expressions</title>
|
<title>Writing Nix expressions</title>
|
||||||
|
|
||||||
|
@ -400,11 +445,4 @@ derivation {
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<!--
|
|
||||||
local variables:
|
|
||||||
sgml-parent-document: ("book.xml" "chapter")
|
|
||||||
end:
|
|
||||||
-->
|
|
||||||
|
|
Loading…
Reference in a new issue