Découverte du gestionnaire de paquets Guix

Introduction

J'ai découvert Guix via un article sur LinuxFr.org, GNU Guix version Un‐Point‐Zéro, qui présentait la sortie de la version 1.0 de Guix.

Guix est découpé en deux gros morceaux : le gestionnaire de paquets Guix et la distribution Guix System.

Même si la distribution semble intéressante, je me suis pour l'instant intéressé seulement au gestionnaire de paquets. Cela permet de profiter de ses avantages sans changer de distribution, ce qui est très agréable.

Ce qui m'a intéressé dans ce gestionnaire de paquets, c'est la façon dont il s'organise : il est transactionnel, ce qui permet à tout moment de revenir en arrière dans la version d'un logiciel, il produit des binaires reproductibles et il dispose de profils et d'environnements. Vous pourrez retrouver ceci plus en détail dans l'article cité au début de cet article, en cherchant sur internet ainsi que dans le manuel officiel (Manuel de référence de GNU Guix : fonctionnalités).

Un autre avantage, c'est que le gestionnaire de paquets peut être installé sur n'importe quelle distribution et donc permet d'être un peu un équivalent à Flatpak ou Snap, de ce point de vue-là.

Premiers pas

J'ai mis quelques mois entre la lecture de l'article et ma première utilisation concrète de l'outil, notamment parce que je n'avais pas trouvé comment faire apparaitre les raccourcis pour les applications graphiques.

Finalement, au détour d'internet, j'ai trouvé un message sur Reddit qui expliquait comment faire.

J'ai alors rajouté cette ligne dans le fichier ~/.profile :

export XDG_DATA_DIRS="$HOME/.guix-profile/share:/usr/local/share/:/usr/share/"

Cela m'a permis de disposer de raccourcis (fichiers .desktop) pour les applications graphiques.

Il faudra probablement que j'adapte cette ligne de code pour être plus souple, mais pour l'instant, je l'ai gardée telle qu'elle.

Mon utilisation de Guix

Pour commencer à prendre doucement l'outil en main, j'ai commencé par désinstaller certains de mes logiciels, intallés via le gestionnaire de paquets de ma distribution (apt, sur Ubuntu), pour les installer via Guix.

Avant de désinstaller un logiciel pour l'installer via Guix, je vérifie s'il existe dans les dépôts :

guix search nomdupaquet

S'il existe, je le désinstalle puis je l'installe via Guix :

guix install nomdupaquet

Je peux par la suite mettre à jour les paquets grâce à la commande suivante :

sudo guix pull && guix upgrade

Je peux voir la liste des paquets installés grâce à la commande suivante :

$ guix package -I

guile 3.0.2 out /gnu/store/18hp7flyb3yid3yp49i6qcdq0sbi5l1n-guile-3.0.2
neovim 0.4.3 out /gnu/store/4gv72703mmzwwm0cz6vf0269brlkq24c-neovim-0.4.3
screenfetch 3.9.1 out /gnu/store/0pvv4kqcn8qn8nmpw13ynf4v0khql71j-screenfetch-3.9.1
inkscape 1.0 out /gnu/store/0il6ic3n75bcw58db3dpywpwjn91p9kh-inkscape-1.0
gimp 2.10.18 out /gnu/store/imibsab6v45jfvrmmpjg5375zs87l9gg-gimp-2.10.18
meld 3.20.2 out /gnu/store/z20pl909a17wzj0ilzv5l62lgw1vi93k-meld-3.20.2
krita 4.2.9 out /gnu/store/ps1wdrxmrmr36l05wrhzcw0bi6ia7xvg-krita-4.2.9
exa 0.9.0 out /gnu/store/whgxpj7da8gxndrpica3blld3jwa241q-exa-0.9.0

J'ai réaligné un peu les valeurs car pour une raison que j'ignore ce n'est pas le cas par défaut.

Je peux voir l'évolution des versions grâce à la commande suivante :

$ guix package -l

Génération 1 17 mai 2020 15:02:22
+ guile 3.0.2 out /gnu/store/18hp7flyb3yid3yp49i6qcdq0sbi5l1n-guile-3.0.2
+ krita 4.2.7.1 out /gnu/store/l97mj4ak2b8kjnga6vg45m3adwnsfxps-krita-4.2.7.1
+ meld 3.20.2 out /gnu/store/rgnzxx27p7pmmpp0qhksgm8hxdv0mhw7-meld-3.20.2
+ gimp 2.10.18 out /gnu/store/0g8qm3nwyrq7yd4d753cw4zsg7fa59zq-gimp-2.10.18
+ inkscape 0.92.4 out /gnu/store/726jmwgk2nd9prifc49sbngjadzn98xs-inkscape-0.92.4

Génération 2 30 mai 2020 12:14:25
+ neovim 0.4.3 out /gnu/store/4gv72703mmzwwm0cz6vf0269brlkq24c-neovim-0.4.3

Génération 3 01 juin 2020 12:40:18
+ krita 4.2.9 out /gnu/store/zan7zmyxl3bx3a5cjp006rahf8dkq1vl-krita-4.2.9
+ meld 3.20.2 out /gnu/store/19ivamn8l64a2wz2d84xh07491f0s767-meld-3.20.2
+ gimp 2.10.18 out /gnu/store/xi74ni9xxy1vf9s58qavnqv57qzg58r1-gimp-2.10.18
+ inkscape 1.0 out /gnu/store/kyplsb2zq9gwmnpxh7gr8fl5b3x895ib-inkscape-1.0
- krita 4.2.7.1 out /gnu/store/l97mj4ak2b8kjnga6vg45m3adwnsfxps-krita-4.2.7.1
- meld 3.20.2 out /gnu/store/rgnzxx27p7pmmpp0qhksgm8hxdv0mhw7-meld-3.20.2
- gimp 2.10.18 out /gnu/store/0g8qm3nwyrq7yd4d753cw4zsg7fa59zq-gimp-2.10.18
- inkscape 0.92.4 out /gnu/store/726jmwgk2nd9prifc49sbngjadzn98xs-inkscape-0.92.4

Génération 4 01 juin 2020 21:09:26
+ screenfetch 3.9.1 out /gnu/store/0pvv4kqcn8qn8nmpw13ynf4v0khql71j-screenfetch-3.9.1

Génération 5 03 juin 2020 14:32:59 (actuelle)
+ exa 0.9.0 out /gnu/store/whgxpj7da8gxndrpica3blld3jwa241q-exa-0.9.0

Pour l'instant, j'ai encore une utilisation très basique de Guix, mais néanmoins je trouve son utilisation très agréable et sans blocage particulier.

Les défauts que je pourrais remonter :

  1. L'installation des paquets est un peu plus lente [qu'avec apt], mais cela ne me gêne pas et est probablement dû à la nature de l'outil ;

  2. Il y a encore assez peu de paquets, mais je n'ai aucun doute que le temps (ou plutôt le travail acharné des contribteurs !) va corriger ça ;

  3. Certains paquets ne sont pas à jour, mais cela va avec le point précédent.

L'outil est encore assez jeune, il faut probablement encore un peu de temps pour qu'une communauté plus grande se forme.

En bref, je vais continuer à utiliser Guix, et je le recommande à ceux qui voudraient essayer.

Communauté

Je ne vais pas m'étendre sur le sujet, il y a des communautés aux endroits habituels : le suivi des tickets Guix, IRC, Reddit, Matrix, des blogs, etc.