Guix est un gestionnaire de paquets fonctionnel et un système de gestion de configuration pour GNU. Il permet une installation et une gestion de logiciels reproductibles grâce à des paquets immuables et des descriptions de configuration déclaratives.
Liberté pour l’utilisateur :
- de rajouter un logiciel dans le store
- de se composer un profil à partir des éléments du store
- de bâtir une version personnalisée d’un logiciel
Que permet Guix ?
- Créer vos propres environnements de manière très flexible sans l’aide des administrateurs du cluster (c’est à dire sans être root).
- Créer différents contextes de travail (profils).
- Avoir une “recette” pour votre logiciel, afin de partager, faire installer et faire utiliser votre propre bibliothèque.
Pour commencer (À chaque nouvelle session)
source /opt/ohpc/pub/guix-start.sh
Mise à jour du référentiel Guix
guix pull
Gestion des paquets
Lister les paquets installés
guix package -I
Rechercher des paquets
https://packages.guix.gnu.org/ permet des recherches car les recherches en ligne de commande sont très verbeuses.
Recherche en ligne de commande
guix search emacs -> faire une recherche d'emacs
Pour quitter l’affichage, tapez la touche ‘q’.
Installation / Désinstallation
guix remove Nom_Du_Paquet -> Supprime l'installation guix install Nom_Du_Paquet -> Fait une installation guix install emacs python@3 python-tensorly -> installe emacs python en version 3 ... which python3 -> pour voir où est python3 ~/.guix-profile/bin/python3
Le « Store » commun
Les commandes suivantes montrent que les programmes installés n’emcombrent pas votre répertoire mais sont situés dans /gnu/store commun à tous ! L’installation d’un utilisateur peut être très rapide si un autre à déjà fait l’installation. Seul des liens Unix sont créés ! De plus, cela permet de ne pas avoir plusieurs fois le programme installé.
ls -l ~/.guix-profile/bin/python3 lrwxrwxrwx 1 root root 69 Jan 1 1970 ~/.guix-profile/bin/python3 -> /gnu/store/8s8k2v6b5b7lyf5y5n534cjd9sipgas6-python-3.10.7/bin/python3 ->
Les profils
Installer des paquets dans un profil
Installons gcc version 8 et lapack dans le profil nommé gcc8lapack
guix install -p $GUIX_USER_PROFILE_DIR/gcc8lapack gcc-toolchain@8 lapack -> construit un profil avec les logiciels listés guix package -p $GUIX_USER_PROFILE_DIR/gcc8lapack -I -> liste les logiciels du profil
Ajout de vim dans le profil
guix install -p $GUIX_USER_PROFILE_DIR/gcc8lapack vim guix package -p $GUIX_USER_PROFILE_DIR/gcc8lapack -I -> Listage du contenu du profil
Gestion des profils
Lister les profils
guix package --list-profiles
Aller dans un profil
guix shell -p $GUIX_USER_PROFILE_DIR/"gcc8lapack"
gcc --version -> gcc (GCC) 8.5.0 s'affiche
exit
gcc --version -> la version du système s'affiche
Gestion des générations
guix package --list-generations -> Liste les "générations"/étapes successives de l'environnement guix. guix package --roll-back -> Revient à la génération précédente. guix package --switch-generation=42 -> permute en génération 42 guix gc --delete-generations -> supprime les générations archivées guix package -p $GUIX_USER_PROFILE_DIR/"gcc8lapack" --list-generations -> Liste les "générations" du profil gcc8lapack
Canaux
Editez le fichier ~/.config/guix/channels.scm pour ajouter des canaux. Exemple :
(append (list (channel (name 'guix-hpc) (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git") (branch "master"))) %default-channels)
HPC et Guix
Cet article est une introduction, une invitation à expérimenter guix. De nombreuses possibilités pour exploiter HPC/slurm existent mais restent à documenter. Cela nécessite du temps qui sera mobilisé au moment où l’on aura des utilisateurs demandeurs : Ils sont bienvenus !