GNU Guix est le gestionnaire de paquets transactionnel et une distribution perfectionnée du système GNU qui respecte la liberté de ses utilisateurs. Guix peut s’utiliser en tant que gestionnaire de paquets sur n’importe quel système utilisant le noyau Linux ou Hurd, et peut s’utiliser comme distribution à part entière sur les machines i686, x86-64, ARMv7, AArch64 et POWER9.
En plus des fonctionnalités habituelles des gestionnaires de paquets, Guix permet des mises à jour et des retours en arrière transactionnels, de gérer ses paquets sans privilèges, d’utiliser plusieurs profils par utilisateur, et d’empaqueter une collection de paquets via une archive TAR repositionnable ou une image Docker. Et tout ceci pour n’importe quel point dans le temps via guix time-machine
.
Lorsque Guix est utilisé comme distribution GNU/Linux à part entière, il permet aussi de gérer son système d’exploitation avec une approche déclarative et sans état. Guix est extrêmement personnalisable et bidouillable grâce à ses interfaces Guile (un dialecte du langage Scheme).
La publication fournit des images d’installation ISO 9660, une image pour machine virtuelle et un script d’installation pour installer le gestionnaire de paquets sur votre distribution GNU/Linux sans interférer avec celle‑ci. Les utilisateurs de Guix peuvent mettre à jour comme d’habitude en lançant guix pull.
La suite de la dépêche est une traduction de l’annonce officielle. Le « nous » utilisé dans la dépêche renvoie à l’équipe Guix, pas aux traducteurs.
Sommaire
- Amélioration de la gestion des environnements logiciels
- Une distribution plus robuste
- Plus de documentation
- Soutenir la reproductibilité sur le long-terme
- Lots applicatifs et images système
- Une meilleure expérience d’empaquetage
- Essayez-la !
Nous avons le plaisir de vous annoncer la sortie de GNU Guix version 1.4.0 !
La nouvelle version propose des images d’installation ISO-9660, une image de machine virtuelle et des archives qui vous permettent d’installer le gestionnaire de paquets sur votre distribution GNU/Linux, que ce soit à partir des sources ou des binaires. Pour obtenir ces fichiers, consultez la page des téléchargements. Si vous utilisez déjà Guix vous pouvez le mettre à jour en exécutant la commande guix pull
.
Il s’est écoulé 18 mois depuis la version précédente. Cela représente un long intervalle de temps et reflète le fait qu’en tant que rolling release, Guix permet aux utilisateurs et utilisatrices de recevoir en permanence les nouvelles fonctionnalités et les mises à jour en exécutant la commande guix pull
. Mais voyons les choses en face : cela montre également un domaine dans lequel nous pourrions et devrions collectivement améliorer nos processus. Au cours de cette période, Guix a reçu environ 29 000 commits de 453 personnes, comprenant de nouvelles fonctionnalités importantes dont nous allons parler. Le projet a également changé de mainteneurs, structuré la coopération en créant des équipes, et célébré son dixième anniversaire !
Illustration de Luis Felipe, publiée sous licence CC-BY-SA 4.0.
Cet article propose de mettre en lumière tout le travail qui a abouti à cette publication. Et oui, il s’agit sans doute des notes de version les plus longues de l’histoire de Guix, alors installez-vous confortablement, détendez-vous et profitez de la lecture.
Bonus ! Voici un chiptune (de Trevor Lentz, sous licence CC-BY-SA 3.0) que notre illustrateur Luis Felipe recommande d’écouter avant d’aller plus loin.
Amélioration de la gestion des environnements logiciels
L’un des points forts de Guix est la gestion des environnements logiciels. La commande guix environment
a été conçue à cet effet, mais elle souffrait d’une interface peu ergonomique. Elle est maintenant remplacée par guix shell
, bien que nous nous soyons engagés à garder guix environment
jusqu’au 1ᵉʳ mai 2023 au moins. guix shell
est un outil pratique pour le développement, mais il est également utile si vous souhaitez essayer un logiciel sans pour autant l’installer de manière définitive dans votre profil avec guix install
. Disons que vous voulez jouer à SuperTuxKart mais que vous préférez ne pas l’avoir dans votre profil parce que, bon, c’est un ordinateur portable professionnel. Voici comment vous pourriez le lancer, après que Guix l’a récupéré si nécessaire :
guix shell supertuxkart -- supertuxkart
Outre son interface plus simple, guix shell
améliore significativement les performances avec son cache. Il simplifie également le processus de développement en détectant automatiquement les fichiers guix.scm
et manifest.scm
présents dans un répertoire. Glissez-en un dans votre projet et les autres membres de l’équipe de développement peuvent commencer à travailler en exécutant simplement guix shell
, sans argument. Au fait, l’option --export-manifest
vous permet de démarrer en « convertissant » les arguments de la ligne de commande en un manifeste. En apprendre plus sur guix shell
dans le manuel.
Une autre innovation de guix shell
est l'émulation facultative du standard de la hiérarchie du système de fichiers (FHS). La FHS spécifie les emplacements des différentes catégories de fichiers : /bin
pour les binaires des commandes essentielles, /lib
pour les bibliothèques, etc. Le dépôt de Guix l’empêche de respecter la FHS, ce qui peut empêcher les utilisatrices et les utilisateurs d’exécuter des programmes qui supposent le respect de la FHS. Le nouveau drapeau --emulate-fhs
(ou -F
) de guix shell
combiné à l’option --container
permet de créer un environnement de conteneur qui respecte la FHS. Cette fonctionnalité est illustrée au mieux par cet exemple, où la commande ls
du paquet coreutils
apparaît directement sous /bin
, comme si nous étions sur un système FHS comme Debian :
$ guix shell -CF coreutils -- /bin/ls -1p /
bin/
dev/
etc/
gnu/
home/
lib/
lib64
proc/
sbin/
sys/
tmp/
usr/
Guix Home est une autre nouvelle fonctionnalité importante. En résumé, elle applique la philosophie déclarative du système Guix à votre environnement personnel en vous donnant la possibilité de déclarer tous ses différents aspects (les fichiers de configuration (« dot files »), les services et les paquets) et de les instancier dans votre répertoire $HOME
ou dans un conteneur.
Si vous maintenez déjà vos fichiers de configuration sous contrôle de version ou si vous voulez les garder sous contrôle pour ne pas avoir à passer des jours ou des semaines à les reconfigurer la prochaine fois que vous changez d'ordinateur portable, c'est l'outil qu'il vous faut. Consultez cette excellente introduction que David Wilson a donnée pendant la célébration des dix ans de Guix et apprenez-en plus sur Guix Home dans le manuel.
Les options de transformation de paquet vous donnent un contrôle précis sur la manière dont les paquets sont construits. La nouvelle option --tune
permet de régler les paquets pour une micro-architecture du CPU spécifique. Cela vous permet d’utiliser les nouvelles instructions « une instruction, plusieurs données » (SIMD), comme AVX-512 sur les CPU AMD/Intel récents, ce qui peut représenter une différence importante pour certaines tâches comme les calculs d’algèbre linéaire.
Depuis la version 1.3.0, le projet a commencé à maintenir une ferme de construction alternative sur https://bordeaux.guix.gnu.org
. Elle est indépendante de la ferme de construction sur ci.guix.gnu.org
(donnée et hébergée par le Max Delbrück Center for Molecular Medicine à Berlin en Allemagne), ce qui présente deux avantages : elle nous permet de tester les substituts fournis par les deux systèmes, et elle fournit une redondance en cas de panne de l’une de ces deux fermes. Guix est maintenant configuré par défaut pour récupérer ses substituts auprès de n’importe laquelle de ces deux fermes de construction. De plus, un bogue a été corrigé, ce qui assure que Guix puisse passer de l’une à l’autre en cas de problème avec la première.
Les personnes qui apprécient les déploiements déclaratifs de flottes entières de machines seront sûrement ravis de la nouvelle option --execute
de guix deploy
.
Une distribution plus robuste
La distribution elle-même a connu beaucoup de changements. Tout d’abord, l'installateur du système Guix a reçu un certain nombre de corrections de bogues et il inclut maintenant un nouveau mécanisme qui vous permet de rapporter automatiquement les informations de débogage utiles en cas de crash. Cela aidera l’équipe de développement à s’occuper des bogues qui arrivent avec les configurations inhabituelles.
Le temps de démarrage des programmes a été réduit grâce à un nouveau cache de l’éditeur des liens dynamiques par application, qui a considérablement réduit le nombre d’appels à stat
et open
causés par la recherche des bibliothèques partagées (nous sommes heureux que ce changement en ait inspiré d’autres).
Guix System utilise désormais la version 0.9 de GNU Shepherd qui corrige des défauts, améliore la journalisation et ajoute des fonctionnalités telles que l’activation des services à la manière de systemd ou celle d’inetd. La nouvelle sous-commande guix system edit
fournit également un nouveau moyen d’inspecter les services, complétant ainsi guix system search
et guix system extension-graph
.
Il y a 15 nouveaux services systèmes parmi lesquels choisir, dont Jami, Samba, fail2ban, et Gitile font partie.
Une nouvelle interface est disponible pour déclarer l’espace d’échange dans la configuration des systèmes d’exploitation. Cette interface est plus expressive et flexible que ce qui était disponible auparavant.
De même, l’interface permettant de déclarer la configuration réseau statique a été retravaillée. Sur GNU/Linux, elle vous permet de faire à peu près la même chose que la commande ip
, mais de manière déclarative et avec des vérifications statiques pour éviter de déployer des configurations manifestement incorrectes.
Plus de 5 300 paquets ont été ajoutés pour un total de près de 22 000 paquets, ce qui fait de Guix l’une des 10 distributions les plus grosses d’après Repology. Parmi les nouveaux paquets et les mises à jour les plus notables, GNOME 42 est maintenant disponible. KDE n’est pas encore là mais des dizaines de paquets KDE ont été ajoutés et nous en rapproche. Qt 6 est aussi disponible. La distribution propose aussi GCC 12.2.0, GNU libc 2.33, Xfce 4.16, Linux-libre 6.0.10, LibreOffice 7.4.3.2 et Emacs 28.2 (avec la prise en charge de la compilation à la volée !).
Entre autres nouvelles, motivés par le fait que Python 2 a officiellement atteint sa « fin de vie » en 2020, plus de 500 paquets Python 2 ont été supprimés (ceux dont le nom commence par python2-
). Cela comprend quelques « poids lourds » comme python2-numpy
ou python2-scipy
. Si vous en avez encore besoin, vous avez deux possibilités : utiliser guix time-machine
pour revenir à un commit plus ancien qui contient les paquets dont vous avez besoin, ou utiliser le canal Guix-Past pour construire certains de ces anciens paquets dans un environnement récent. Le calcul scientifique est un domaine où cela pourrait s’avérer utile.
En plus de cela, le site web propose un nouveau navigateur de paquets. Enfin ! Entre autres choses, ce navigateur de paquets propose des URL stables comme https://packages.guix.gnu.org/packages/PAQUET
.
Le fichier NEWS
liste des changements notables supplémentaires et des corrections de bogues qui pourraient vous intéresser.
Plus de documentation
Comme pour les versions précédentes, nous avons travaillé sur la documentation pour rendre Guix plus abordable. Nous avons rédigé et amélioré des sections de type « comment faire », telles que :
- « Écrire un manifeste »
- « Répliquer Guix »
- « Utiliser TeX et LaTeX »
- « Corriger les problèmes du système »
- « Architectures externes »
- « Utiliser Guix de manière interactive »
Le livre de recettes continue lui aussi de recevoir de nouvelles entrées, consultez-le !
Le manuel de référence de Guix est entièrement traduit en français et en allemand ; 70% est disponible en espagnol et il y a des traductions initiales en russe,
chinois, et d’autres langues. Guix lui-même est entièrement traduit en français, avec des traductions presque complètes en portugais brézilien, en allemand, en slovaque et en espagnol, et des traductions partielle dans presque vingt autres langues. Consultez le manuel pour apprendre à aider ou cette visite guidée par le traducteur en chef Julien Lepiller !
Soutenir la reproductibilité sur le long-terme
Une fonctionnalité importante de Guix est sa prise en charge des déploiements logiciels reproductibles. Il y a plusieurs aspects à cela, l’un d’entre eux étant la capacité à récupérer le code source à partir de l’archive de Software Heritage. Guix était déjà capable de récupérer le code source de paquets à partir de Software Heritage comme solution de repli, mais avec la version 1.4.0 le code source des canaux Guix est également automatiquement récupéré à partir de Software Heritage si leur URL originale n’est plus joignable.
De plus, Guix est maintenant capable de récupérer et de restaurer des archives de code source comme les fichiers .tar.gz
. Software Heritage archive le contenu des archives, mais pas les archives elles-mêmes. Cela créait une inadéquation entre Guix et Software Heritage, d’autant plus que la majorité des définitions de paquets utilisent des archives et s’attendent à pouvoir vérifier l’empreinte de l’archive elle-même. Pour combler cet écart, Timothy Sample a développé Disarchive, un outil qui peut (1) extraire les métadonnées des archives et (2) assembler les métadonnées extraites et les fichiers eux-mêmes pour reconstruire une archive, comme indiqué dans le diagramme ci-dessous.
Le projet Guix a configuré une tâche d’intégration continue pour construire une base de données Disarchive, disponible sur disarchive.gnu.org. La base de données inclut les métadonnées pour toutes les archives utilisées par les paquets. Lorsqu’une archive de code source disparait, Guix récupère maintenant de manière transparente les métadonnées de l’archive depuis la base Disarchive, puis il récupère le contenu des fichiers à partir de Software Heritage et reconstruit l’archive initiale. Au moment de la publication d’un « Rapport sur la préservation de Guix » publié en janvier 2022, presque 75 % des fichiers .tar.gz
utilisés par les paquets sont maintenant complètement archivés avec Disarchive et Software Heritage. Exécuter la commande guix lint -c archival PKG
vous donnera le statut d’archivage de PKG
. Vous pouvez en apprendre plus dans le rapport annuel de Guix-HPC.
C’est une avancée importante qui permet, pour la première fois, de disposer d’un outil capable de redéployer des environnements logiciels passés tout en maintenant la connexion entre le code source et les binaires.
Lots applicatifs et images système
La commande guix pack
qui crée des « lots applicatifs » (des images d’applications indépendantes) a été étendue : guix pack -f deb
crée un paquet .deb
indépendant qui peut être installé sur Debian et les distributions dérivées. Le nouveau drapeau --symlink
lui fait créer des liens symboliques dans l’image.
Au niveau du système, la nouvelle commande guix system image
remplace quelques sous-commandes existantes de guix system
par un nouveau point d’entrée unique pour construire des images de tous types : des images disques brutes, des images de machines virtuelles au format QCOW2, des images CD ou DVD ISO8660, des images Docker et même des images pour le sous-système Linux de Microsoft Windows (WSL2). Elle propose une interface de haut-niveau qui vous permet de déclarer le type d’image que vous voulez : le format de stockage, les partitions, et évidemment le système d’exploitation pour cette image. Pour faciliter son utilisation, des types d’image prédéfinis sont disponibles :
$ guix system image --list-image-types
Les types d’image disponibles sont :
- rock64-raw
- pinebook-pro-raw
- pine64-raw
- novena-raw
- hurd-qcow2
- hurd-raw
- raw-with-offset
- iso9660
- efi32-raw
- wsl2
- uncompressed-iso9660
- efi-raw
- docker
- qcow2
- tarball
Cela comprend par exemple un type d’image pour les machines Pine64 et pour le système d’exploitation GNU/Hurd. Par exemple, voici comment vous pourriez créer une image de machine virtuelle QCOW2 utilisable avec QEMU :
guix system image -t qcow2 my-operating-system.scm
… où my-operating-system.scm
contient une déclaration de système d’exploitation.
De même, voici comment vous pourriez créer, sur votre machine x86_64, une image pour votre Pine64, prête à être transférée à une carte SD ou un périphérique de stockage similaire à partir duquel la carte pourra démarrer :
guix system image -t pine64-raw my-operating-system.scm
Le type d’image pine64-raw
spécifie que les logiciels de l’image sont en fait compilés de manière croisée vers aarch64-linux-gnu
, c’est-à-dire GNU/Linux sur un CPU AArch64, avec la variante U-Boot appropriée comme chargeur d’amorçage. Il n’y a plus de limite !
Une meilleure expérience d’empaquetage
Un changement important que les empaqueteurs et empaqueteuses remarqueront immédiatement est la simplification des paquets, introduite peu après la 1.3.0. Le changement le plus visible est que les définitions des paquets sont désormais plus lisibles :
(package
;; …
(inputs (list pkg-config guile-3.0))) ;👍
… au lieu du vieux style baroque avec ses « étiquettes d’entrées » :
(package
;; …
(inputs `(("pkg-config" ,pkg-config) ;👎
("guile" ,guile-3.0))))
La nouvelle commande guix style
peut automatiquement effectuer la conversion de « l’ancien » style vers le « nouveau » style d’entrées des paquets. Elle peut aussi reformater des fichiers Scheme entiers en fonction des canons stylistiques du jour, ce qui est bien pratique pour débuter avec le langage.
Ce n'est que la partie visible de l’iceberg : la nouvelle macro modify-inputs
rend la manipulation des entrées des paquets plus facile et plus claire. On peut également utiliser des G-expressions par exemple dans les phases des paquets. Lisez notre annonce précédente pour plus d’informations. En plus de cela, le nouveau mécanisme de nettoyage des champs est utilisé pour valider certains champs. Par exemple, il vérifie maintenant le type du champ license
tandis que la syntaxe Texinfo de description
et synopsis
est validée, tout cela sans surcoût dans les cas usuels. Nous espérons que ces changements rendront plus faciles vos débuts avec l’empaquetage.
La commande guix build
a de nouveaux drapeaux, --list-systems
et --list-targets
, pour lister les types de systèmes (qui peuvent être passés à --system
) et les triplets cibles de compilation croisée (à utiliser avec --target
) pris en charge. Sous le capot, le nouveau module (guix platform)
vous permet de définir des « plateformes », c’est-à-dire la combinaison d’une architecture CPU et d’un système d’exploitation, de manière abstraite. Cela unifie diverses informations qui étaient précédemment éparpillées.
En plus de cela, les empaqueteurs et empaqueteuses peuvent maintenant marquer comme « réglables » des paquets qui bénéficieraient des optimisations pour la micro-architecture CPU, activées avec l’option --tune
.
L’empaquetage pour Python a vu d’importants changements. Déjà, le paquet python
respecte maintenant la variable d’environnement GUIX_PYTHONPATH
au lieu de PYTHONPATH
. Grâce à cela, Python ne récupérera pas sans le vouloir des paquets qui ne sont pas fournis par Guix. Ensuite, le nouveau système de construction pyproject-build-system
implémente PEP 517. Cela complémente le système de construction python-build-system
existant, et les deux pourraient finalement être fusionnés.
Le moment le plus agréable de l’empaquetage, c’est quand il arrive tout prêt comme un cadeau. La commande guix import
a gagné la prise en charge de plusieurs dépôts de paquets amonts : minetest
(pour les extensions du jeu Minetest), elm
(le langage de programmation Elm), egg
(pour CHICKEN Scheme) et hexpm
(pour les paquets Erlang et Elixir). Les importateurs existants ont aussi bénéficié de plusieurs améliorations. La commande guix refresh
pour automatiquement mettre à jour les définitions des paquets a un nouveau programme de mise à jour generic-git
.
Essayez-la !
Il y a plusieurs façons de commencer à utiliser Guix :
- Le script d’installation vous permet de rapidement installer Guix par dessus n’importe quelle distribution GNU/Linux.
- Vous pouvez utiliser l'image de machine virtuelle du système avec QEMU pour découvrir simplement le système Guix sans toucher à votre système.
- Vous pouvez installer le système Guix en tant que distribution distincte. L'installateur vous guidera dans les étapes de configuration initiale.
Pour voir toutes les options à votre disposition, consultez la page de téléchargement et n’hésitez pas à nous contacter.
Amusez-vous bien !
Aller plus loin
- Annonce officielle (49 clics)
- Manuel de référence en français (58 clics)
# Excellent. Go
Posté par dzecniv . Évalué à 4.
guix en tant que gestionnaire de paquets est excellent, il prend juste un peu d'espace disque (compter rapidement qlq gigas, et ne pas oublier de passer le ramasse miettes (guix gc) de temps en temps).
[^] # Re: Excellent. ~~Go~~Lisp ? :-P
Posté par jmiven . Évalué à 1. Dernière modification le 29 décembre 2022 à 17:25.
Est-ce que tu l'utilises pour le dev en Common Lisp ?
# distinguer Guix et Guix
Posté par orfenor . Évalué à 3.
Le dernier paragraphe n'est pas clair. Quand on nous dit :
Il s'agit d'installer le gestionnaire de paquets Guix, pas d'installer la distribution. Tandis que les deux autres cas décrivent l'installation de la distribution.
[^] # Re: distinguer Guix et Guix
Posté par roptat . Évalué à 5.
En anglais, la dénomination officielle du projet c'est « Guix » et « Guix System ». J'aurais éventuellement pu traduire le deuxième avec une majuscule. C'est vrai que c'est pas forcément très clair, mais la raison invoquée, c'est qu'en dehors d'une commande,
guix system reconfigure
, tout fonctionne de la même manière dans les deux cas.Avant, la distribution basée sur Guix s'appelait GuixSD (pour System Distribution) et évidemment on nous demandait si ça fonctionnait que sur un raspberry pi…
[^] # Re: distinguer Guix et Guix
Posté par orfenor . Évalué à 4.
Bah, ça n'est pas très important. La traduction est réussie, très fluide, hyper-lisible… Je voulais clarifier pour les naïfs enthousiastes qui se ruent sur le script shell et se demandent comment in peut installer un système comme ça — c'est du vécu ;-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.