Astuces pour GNU Guix
par Julien Lepiller — lun. 15 janvier 2018
Utiliser un clone du dépôt
La liste des paquets disponibles pour guix est en réalité la liste des recettes. Ces
recettes se trouvent dans le dépôt git du projet. La commande guix pull
crée simplement
un clone et le compile, à chaque fois. Si vous souhaitez développer et proposer des patchs,
ou pour des raisons de simplicité (voir plus loin), il est possible d'utiliser un dépôt cloné.
git clone https://git.sv.gnu.org/git/guix.git cd guix ./bootstrap ./configure --prefix=/usr --localstatedir=/var \ --sysconfdir=/etc make
Maintenant que c'est construit, il faut indiquer à guix que l'on souhaite qu'il utilise ce dépôt :
ln -sfv ~/guix ~/.config/guix/latest
Une erreur de compilation
Parfois, l'interface de programmation interne de guix change. Les fichiers déjà compilés ne sont plus compatibles avec la nouvelle version. Cela pose un problème au compilateur scheme qui ne sait pas bien ce qu'il doit recompiler. Pour cela, utilisez la cible « clean-go » pour supprimer les fichiers compilés, et recommencez :
make clean-go && make
Un dépôt supplémentaire
Il est possible d'ajouter des paquets personnels dans un dépôt à part. Il suffit pour cela de créer un répertoire dans lequel seront installés les paquets:
mkdir guix-repo
Ensuite, il suffit de créer des fichiers dans ce répertoire en suivant le modèle des fichiers de gnu/packages/*.scm. Dans le nom du module, il faut indiquer le chemin par rapport à « guix-repo ». Par exemple, pour « guix-repo/non-free.scm », le nom de module associé est (non-free).
Ensuite, il suffit d'ajouter une variable d'environnement (par exemple dans votre .bashrc) :
export GUIX_PACKAGE_PATH=~/guix-repo
Si vous le souhaitez, j'ai un dépôt supplémentaire avec des logiciels que je suis en train d'intégrer à guix, ou des logiciels qui ne respectent pas les conditions d'entrées dans le dépôt principal de Guix.
git clone https://framagit.org/tyreunom/guix-more.git export GUIX_PACKAGE_PATH=~/guix-more
Plus de mémoire :(
Note : si vous lisez cet article maintenant, cette section n'est
plus valide pour les versions actuelles de Guix. Maintenant, il suffit de trouver un numéro de commit
construit par hydra ou berlin et de lancer guix pull --commit=...
. Pour trouver ce numéro,
il suffit de trouver le dernier commit de guix/modular construit par hydra ou berlin. La version de
Guix correspondant à ce commit sera téléchargé directement depuis les serveurs, sans avoir besoin
de la compiler, donc sans utiliser toute votre mémoire vive !
La commande guix pull
peut demander pas mal de mémoire vive, jusqu'à 2 Go. Cela est
dû à un bogue dans le compilateur scheme difficile à corriger. Le problème, c'est que sur de
plus petites machines, la compilation se met à swapper et ça prend une éternité à finir.
Si vous possédez une machine plus puissante de la même architecture, vous pouvez transférer un dépôt git précompilé sur la machine moins puissante. Sur la machine puissante :
cd ~/guix; make tar cf ../guix.tar * cd .. gzip guix.tar scp guix.tar.gz <machine moins puissante>
Ensuite sur la machine la moins puissante :
cd ~ mkdir guix cd guix tar xf ../guix.tar.gz ln -sfv ~/guix ~/.config/guix/latest
Invalider le cache de substituts
Il semble que le cache de substituts ne soit pas toujours très à jour et ne s'invalide parfois pas tout seul.
rm /var/guix/substitute/cache/<hash>