Software management with GNU Guix

by Ludovic Courtes
Announcement, Documentation | No Comments

In addition to module, PlaFRIM users can manage software environments using GNU Guix, a general-purpose package manager.

Why use Guix?

Guix can be used in addition to and in parallel with module. There are several reasons why it might be useful to you:

  • Guix provides more than 7,500 software packages including: utilities such as tmux, compiler toolchains (GCC, Clang), Python software (Scikit-Learn, NumPy, etc.), HPC libraries (Open MPI, MUMPS, PETSc, etc.).
  • Pre-built binaries are usually available for packages you install, which makes installation fast.
  • You get to choose when you upgrade or remove packages you've installed for yourself, and can roll back any time you want should an upgrade go wrong.
  • You can reproduce the exact same software environment, bit-for-bit, on PlaFRIM and on other machines (laptop, cluster, etc.)
  • Software environments can be "packed" as a Docker image for use on other systems.

Getting Started

Looking for packages

You can browse the on-line package list or use one of these commands:

guix package --list-available
guix package -s
keyword

Installing Software

By default Guix installs software in your home directory, under ~/.guix-profile. On PlaFRIM, installing software with Guix automatically updates your environment variables such that, on your next login, PATH, PYTHONPATH, and similar variables point to ~/.guix-profile.

To install the latest GNU compilation toolchain, run:

guix package --install gcc-toolchain

To install Python 3.x along with NumPy and SciPy (note: the command is called python3, not python), run:

guix package -i python python-numpy python-scipy

Setting search path environment variables:

eval `guix package --search-paths=prefix`

Updating the package set:

guix pull

Dealing with "Profile Generations"

To list your "profile generations" (i.e., the successive changes to your set of installed packages):

guix package -l

To roll back to a previous generation of your "profile":

guix package --roll-back

Using the Guix-HPC Packages

We maintain a package collection for software developed by Inria research teams such as STORM, HiePACS, and TaDaaM in the Guix-HPC repository. To use it, run:


$ git clone https://gitlab.inria.fr/guix-hpc/guix-hpc.git
$ export GUIX_PACKAGE_PATH=$PWD/guix-hpc/modules

Non-free software such as CUDA, as well as variants of free software packages with dependencies on non-free software (such as starpu-cuda) are available separately (requires a gitlab.inria.fr account):


$ git clone https://gitlab.inria.fr/guix-hpc/guix-hpc-non-free.git
$ export GUIX_PACKAGE_PATH=$PWD/guix-hpc-non-free/modules

Creating Portable Bundles

Once you have a software environment that works well on PlaFRIM, you may want to create a self-contained "bundle" that you can send and use on other machines that do not have Guix. With guix pack you can create "container images" for Docker or Singularity, or even standalone tarballs. See the following articles for more information:

Support

For more information, please see:

Please send any support request to plafrim-guix@inria.fr.

On the same thematic