summaryrefslogtreecommitdiff
path: root/posts/2015-06-21-getting-started-with-guix.markdown
blob: 25dfb007a327a9a52b84bfeb0eb92c4ef3766f60 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
---
title: Getting started with GNU Guix
date: 2015/06/21
tags: free software, system administration, packaging, guix
---

[Previously I wrote](/posts/2015-04-17-gnu-guix.html) about how using
GNU Guix in an HPC environment enables easy software deployment for
multiple users with different needs when it comes to application and
library versions.  Although Guix comes with an excellent manual which
is also
[available online](https://www.gnu.org/software/guix/manual/guix.html),
some people may want to have just some simple installation
instructions in one place and some pointers to get started.  I'm
attempting to provide just that with this article.

While Guix can be built from source it is much more convenient to use
the self-contained tarball which provides pre-built binaries for Guix
and all its dependencies.  You need to have GNU tar and xz installed
to unpack the tarball.  Note that the tarball will only work on
GNU/Linux systems; it will not work on MacOS.


## Six simple steps

*First*, if you are using a 64 bit machine, download the compressed
[x86_64 archive from the FTP server](ftp://alpha.gnu.org/gnu/guix/guix-binary-0.8.2.x86_64-linux.tar.xz).
There also is a
[tarball for 32 bit machines](ftp://alpha.gnu.org/gnu/guix/guix-binary-0.8.2.i686-linux.tar.xz)
and
[one for the less common MIPS](ftp://alpha.gnu.org/gnu/guix/guix-binary-0.8.2.mips64el-linux.tar.xz).

*Second*, unpack the archive as root in the root directory:

    # cd /
    # tar xf guix-binary-0.8.2.SYSTEM.tar.xz

This creates a pre-populated store at `/gnu/store` (containing the
"guix" package and the complete dependency graph), the *local state
directory* `/var/guix`, and a Guix profile for the root user at
`/root/.guix-profile`, which contains the guix command line tools and
the daemon.

*Third*, create a build user pool, as root:

     # groupadd --system guix-builder
     # for i in `seq 1 10`;
       do
         useradd -g guix-builder -G guix-builder           \
                 -d /var/empty -s `which nologin`          \
                 -c "Guix build user $i" --system          \
                 guix-builder$i;
       done

These are the restricted user accounts which are used by the daemon to
build software in a controlled environment.  You may not need ten, but
it's a good default.

*Fourth*, run the daemon and tell it about the `guix-builder` group:

    # /root/.guix-profile/bin/guix-daemon --build-users-group=guix-builder

*Fifth*, make the `guix` command available to other users on the
 machine by linking it to a location everyone can access, such as
 `/usr/local/bin`.

    # mkdir -p /usr/local/bin
    # cd /usr/local/bin
    # ln -s /root/.guix-profile/bin/guix

Now any user---not just the almighty root---can install software by
invoking `guix package -i whatever`.  Yay!

*Finally*, if you do not want to build all software locally (which can
 take a very long time) and you think you can trust the GNU Guix build
 farm hydra.gnu.org, authorise it as a source for so-called binary
 substitutes using the included public key:

    # guix archive --authorize < /root/.guix-profile/share/guix/hydra.gnu.org.pub

Note that hydra.gnu.org isn't at all special.  Packages are built
there continuously from source.  Guix is flexible and can pull binary
substitutes from other locations as long as you authorise them.

# Where to go from here

Congratulations!  You now have a fully functional installation of the
Guix package manager.

To get the latest package recipes for Guix just run `guix pull`, which
will download and compile the most recent development version.

I recommend reading the excellent Guix reference manual, which is
[available on the web](https://www.gnu.org/software/guix/manual/guix.html)
and, of course, included as an Info document in your Guix
installation.  If you don't have Emacs---the best Info reader, which
also happens to be an excellent text editor---I encourage you to
install it from Guix; it is just a `guix package -i emacs` away!

If you have questions that are not covered by the manual feel free to
chat with members of the Guix community
[on IRC in the #guix channel on Freenode](https://webchat.freenode.net/?channels=#guix).
For matters relating to using Guix in a bioinformatics environment you
are welcome to subscribe and write to the
[mailing list bio-packaging@mailman.open-bio.org](http://lists.open-bio.org/mailman/listinfo/bio-packaging).