doc: Mention Linux containers; emphasize reproducible builds.
* doc/guix.texi (Introduction): Use "containers" instead of "chroots". (Invoking guix-daemon): Add @cindex entries. Mention the Linux container features. (Features): Add sentence on build reproducibility.
This commit is contained in:
parent
8db351e338
commit
e900c5031f
|
@ -95,7 +95,7 @@ always produces the same result when passed a given set of inputs. It
|
||||||
cannot alter the system's environment in
|
cannot alter the system's environment in
|
||||||
any way; for instance, it cannot create, modify, or delete files outside
|
any way; for instance, it cannot create, modify, or delete files outside
|
||||||
of its build and installation directories. This is achieved by running
|
of its build and installation directories. This is achieved by running
|
||||||
build processes in isolated environments (or @dfn{chroots}), where only their
|
build processes in isolated environments (or @dfn{containers}), where only their
|
||||||
explicit inputs are visible.
|
explicit inputs are visible.
|
||||||
|
|
||||||
@cindex store
|
@cindex store
|
||||||
|
@ -224,6 +224,7 @@ The @code{guix-daemon} program may then be run as @code{root} with:
|
||||||
# guix-daemon --build-users-group=guix-builder
|
# guix-daemon --build-users-group=guix-builder
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
@cindex chroot
|
||||||
@noindent
|
@noindent
|
||||||
This way, the daemon starts build processes in a chroot, under one of
|
This way, the daemon starts build processes in a chroot, under one of
|
||||||
the @code{guix-builder} users. On GNU/Linux, by default, the chroot
|
the @code{guix-builder} users. On GNU/Linux, by default, the chroot
|
||||||
|
@ -271,6 +272,10 @@ is normally run as @code{root} like this:
|
||||||
@noindent
|
@noindent
|
||||||
For details on how to set it up, @ref{Setting Up the Daemon}.
|
For details on how to set it up, @ref{Setting Up the Daemon}.
|
||||||
|
|
||||||
|
@cindex chroot
|
||||||
|
@cindex container, build environment
|
||||||
|
@cindex build environment
|
||||||
|
@cindex reproducible builds
|
||||||
By default, @command{guix-daemon} launches build processes under
|
By default, @command{guix-daemon} launches build processes under
|
||||||
different UIDs, taken from the build group specified with
|
different UIDs, taken from the build group specified with
|
||||||
@code{--build-users-group}. In addition, each build process is run in a
|
@code{--build-users-group}. In addition, each build process is run in a
|
||||||
|
@ -278,7 +283,10 @@ chroot environment that only contains the subset of the store that the
|
||||||
build process depends on, as specified by its derivation
|
build process depends on, as specified by its derivation
|
||||||
(@pxref{Programming Interface, derivation}), plus a set of specific
|
(@pxref{Programming Interface, derivation}), plus a set of specific
|
||||||
system directories. By default, the latter contains @file{/dev} and
|
system directories. By default, the latter contains @file{/dev} and
|
||||||
@file{/dev/pts}.
|
@file{/dev/pts}. Furthermore, on GNU/Linux, the build environment is a
|
||||||
|
@dfn{container}: in addition to having its own file system tree, it has
|
||||||
|
a separate mount name space, its own PID name space, network name space,
|
||||||
|
etc. This helps achieve reproducible builds (@pxref{Features}).
|
||||||
|
|
||||||
The following command-line options are supported:
|
The following command-line options are supported:
|
||||||
|
|
||||||
|
@ -447,13 +455,18 @@ profiles, and remove those that are provably no longer referenced
|
||||||
generations of their profile so that the packages they refer to can be
|
generations of their profile so that the packages they refer to can be
|
||||||
collected.
|
collected.
|
||||||
|
|
||||||
|
@cindex reproducibility
|
||||||
|
@cindex reproducible builds
|
||||||
Finally, Guix takes a @dfn{purely functional} approach to package
|
Finally, Guix takes a @dfn{purely functional} approach to package
|
||||||
management, as described in the introduction (@pxref{Introduction}).
|
management, as described in the introduction (@pxref{Introduction}).
|
||||||
Each @file{/nix/store} package directory name contains a hash of all the
|
Each @file{/nix/store} package directory name contains a hash of all the
|
||||||
inputs that were used to build that package---compiler, libraries, build
|
inputs that were used to build that package---compiler, libraries, build
|
||||||
scripts, etc. This direct correspondence allows users to make sure a
|
scripts, etc. This direct correspondence allows users to make sure a
|
||||||
given package installation matches the current state of their
|
given package installation matches the current state of their
|
||||||
distribution, and helps maximize @dfn{reproducibility}.
|
distribution. It also helps maximize @dfn{build reproducibility}:
|
||||||
|
thanks to the isolated build environments that are used, a given build
|
||||||
|
is likely to yield bit-identical files when performed on different
|
||||||
|
machines (@pxref{Invoking guix-daemon, container}).
|
||||||
|
|
||||||
@cindex substitute
|
@cindex substitute
|
||||||
This foundation allows Guix to support @dfn{transparent binary/source
|
This foundation allows Guix to support @dfn{transparent binary/source
|
||||||
|
|
Loading…
Reference in New Issue