This section describes how to install Guix on an arbitrary system from a self-contained tarball providing binaries for Guix and for all its dependencies. This is often quicker than installing from source, which is described in the next sections. The only requirement is to have GNU tar and Xz.
We provide a shell installer script, which automates the download, installation, and initial configuration of Guix. It should be run as the root user.
Installing goes along these lines:
https://alpha.gnu.org/gnu/guix/guix-binary-0.16.0.system.tar.xz’, where system is
x86_64machine already running the kernel Linux, and so on.
Make sure to download the associated .sig file and to verify the authenticity of the tarball against it, along these lines:
$ wget https://alpha.gnu.org/gnu/guix/guix-binary-0.16.0.system.tar.xz.sig $ gpg --verify guix-binary-0.16.0.system.tar.xz.sig
If that command fails because you do not have the required public key, then run this command to import it:
$ gpg --keyserver pool.sks-keyservers.net \ --recv-keys 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
and rerun the
gpg --verify command.
rootuser. Depending on your distribution, you may have to run
sudo -i. As
# cd /tmp # tar --warning=no-timestamp -xf \ guix-binary-0.16.0.system.tar.xz # mv var/guix /var/ && mv gnu /
This creates /gnu/store (see The Store) and /var/guix.
The latter contains a ready-to-use profile for
root (see next
Do not unpack the tarball on a working Guix system since that would overwrite its own essential files.
--warning=no-timestamp option makes sure GNU tar does
not emit warnings about “implausibly old time stamps” (such
warnings were triggered by GNU tar 1.26 and older; recent
versions are fine.)
They stem from the fact that all the
files in the archive have their modification time set to zero (which
means January 1st, 1970.) This is done on purpose to make sure the
archive content is independent of its creation time, thus making it
guix pullwill install updates (see Invoking guix pull):
# mkdir -p ~root/.config/guix # ln -sf /var/guix/profiles/per-user/root/current-guix \ ~root/.config/guix/current
Source etc/profile to augment
PATH and other relevant
# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \ source $GUIX_PROFILE/etc/profile
If your host distro uses the systemd init system, this can be achieved with these commands:
# cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \ /etc/systemd/system/ # systemctl start guix-daemon && systemctl enable guix-daemon
If your host distro uses the Upstart init system:
# initctl reload-configuration # cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \ /etc/init/ # start guix-daemon
Otherwise, you can still start the daemon manually with:
# ~root/.config/guix/current/bin/guix-daemon \ --build-users-group=guixbuild
guixcommand available to other users on the machine, for instance with:
# mkdir -p /usr/local/bin # cd /usr/local/bin # ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
It is also a good idea to make the Info version of this manual available there:
# mkdir -p /usr/local/share/info # cd /usr/local/share/info # for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ; do ln -s $i ; done
That way, assuming /usr/local/share/info is in the search path,
info guix will open this manual (see Other Info
Directories in GNU Texinfo, for more details on changing the
Info search path.)
hydra.gnu.orgor one of its mirrors (see Substitutes), authorize them:
# guix archive --authorize < \ ~root/.config/guix/current/share/guix/hydra.gnu.org.pub
Voilà, the installation is complete!
You can confirm that Guix is working by installing a sample package into the root profile:
# guix package -i hello
guix package must remain available in
or it would become subject to garbage collection—in which case you
would find yourself badly handicapped by the lack of the
command. In other words, do not remove
guix by running
guix package -r guix.
The binary installation tarball can be (re)produced and verified simply by running the following command in the Guix source tree:
... which, in turn, runs:
guix pack -s system --localstatedir \ --profile-name=current-guix guix
See Invoking guix pack, for more info on this handy tool.