Often, packages defined in Guix have a single output—i.e., the
source package leads to exactly one directory in the store. When running
guix install glibc, one installs the default output of the
GNU libc package; the default output is called
out, but its name
can be omitted as shown in this command. In this particular case, the
default output of
glibc contains all the C header files, shared
libraries, static libraries, Info documentation, and other supporting
Sometimes it is more appropriate to separate the various types of files
produced from a single source package into separate outputs. For
instance, the GLib C library (used by GTK+ and related packages)
installs more than 20 MiB of reference documentation as HTML pages.
To save space for users who do not need it, the documentation goes to a
separate output, called
doc. To install the main GLib output,
which contains everything but the documentation, one would run:
guix install glib
The command to install its documentation is:
guix install glib:doc
Some packages install programs with different “dependency footprints”.
For instance, the WordNet package installs both command-line tools and
graphical user interfaces (GUIs). The former depend solely on the C
library, whereas the latter depend on Tcl/Tk and the underlying X
libraries. In this case, we leave the command-line tools in the default
output, whereas the GUIs are in a separate output. This allows users
who do not need the GUIs to save space. The
guix size command
can help find out about such situations (see Invoking guix size).
guix graph can also be helpful (see Invoking guix graph).
There are several such multiple-output packages in the GNU distribution.
Other conventional output names include
lib for libraries and
possibly header files,
bin for stand-alone programs, and
debug for debugging information (see Installing Debugging Files). The outputs of a packages are listed in the third column of
the output of
guix package --list-available (see Invoking guix package).