GNU Guix 1.3.0 est publié

Posté par  . Édité par tissevert, Benoît Sibaud et Ysabeau 🧶 🧦. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
Étiquettes :
31
16
mai
2021
Distribution

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

Illustration pour commémorer la nouvelle version

Nous sommes heureux d’annoncer la sortie de GNU Guix version 1.3.0 !

Cette nouvelle version fournit des images d’installation ISO 9660, une image pour machine virtuelle et des archives pour installer le gestionnaire de paquets sur votre distribution GNU/Linux, soit à partir des sources, soit à partir des binaires. Si vous utilisez déjà Guix, vous pouvez mettre à jour comme d’habitude en lançant guix pull.

Cela fait presque six mois depuis la dernière version, pendant lesquels 212 personnes ont contribué du code et des paquets, et de nombreuses autres personnes ont contribué à d’autres tâches importantes : la revue de code, l’administration système, les traductions, la mise à jour du site Web, le mentorat à travers Outreachy, et bien d’autres !

Il y a eu plus de 8 300 commits durant cette période et c’est toujours un défi de résumer toute cette activité dans les notes de version.

Expérience utilisateur

Une fonctionnalité clef de Guix est sa prise en charge d’un déploiement déclaratif : au lieu de lancer tout un tas de commandes guix install et guix remove, vous exécutez guix package --manifest=manifest.scm, où manifest.scm répertorie les logiciels que vous voulez voir installés sous la forme :

;; Dans « manifest.scm ».
(specifications->manifest
  (list "emacs" "guile" "gcc-toolchain"))

Cela installe exactement les paquets listés. Vous pouvez versionner ce fichier et le partager avec d’autres personnes, ce qui est pratique. Jusqu’à maintenant, il fallait écrire le manifeste à la main — rien d’insurmontable, mais tout de même une barrière pour quelqu’un voulant passer au modèle déclaratif.

La nouvelle commande guix package --export-manifest (et sa comparse l’option --export-channels) produit un manifeste basé sur le contenu d'un profil existant. Cela rend très facile la transition du modèle « impératif » classique, où vous lancez guix install au besoin, au modèle déclaratif plus formel. Ça faisait longtemps qu’on l’attendait !

Si vous préférez utiliser les toutes dernières versions de vos logiciels libres, vous allez adorer la nouvelle option de transformation de paquet --with-latest. Cette option utilise le même code que guix refresh, pour rechercher la version la plus récente d’un paquet à sa source, la récupèrer, l’authentifier et la construire. C’est pratique dans le cas où la nouvelle version n’a pas encore été empaquetée pour Guix. Par exemple, la commande ci-dessous, si vous l’exécutez aujourd’hui, va essayer d’installer QEMU 6.0.0 :

$ guix install qemu --with-latest=qemu 
Le paquet suivant sera mis à jour :
   qemu 5.2.0 → 6.0.0

Starting download of /tmp/guix-file.eHO6MU
From https://download.qemu.org//qemu-6.0.0.tar.bz2…
…0.tar.bz2 123.3MiB 28.2MiB/s 00:04 [##################] 100.0%

Starting download of /tmp/guix-file.9NRlvT
From https://download.qemu.org//qemu-6.0.0.tar.bz2.sig…
…tar.bz2.sig 310B 1.2MiB/s 00:00 [##################] 100.0%
gpgv: Signature faite le jeu. 29 avril 2021 15:28:25 EDT
gpgv:                avec la clef RSA CEACC9E15534EBABB82D3FA03353C9CEF108B584
gpgv: Bonne signature de « Michael Roth <michael.roth@amd.com> »
gpgv:                 alias « Michael Roth <mdroth@utexas.edu> »
gpgv:                 alias « Michael Roth <flukshun@gmail.com> »
La dérivation suivante sera construite :
/gnu/store/ypz433vzsbg3vjp5374fr9lhsm7jjxa4-qemu-6.0.0.drv

…

Un avertissement évident : il n’est pas garanti que cela marche. Si la nouvelle version a un système de construction différent, ou si elle a besoin de dépendances supplémentaires par rapport à la version du paquet actuellement disponible, le processus de construction échouera. Cela vous donne quand même de la flexibilité en plus qui peut parfois s’avérer pratique. Pour le développement, c’est aussi un moyen rapide de vérifier si la construction d’un paquet donné fonctionne avec la dernière version de l’une de ses dépendances.

Plusieurs changements ont été faits ici et là pour améliorer l’expérience utilisateur. Par exemple, un nouveau niveau de verbosité a été ajouté pour l’option --verbosity. Par défaut (--verbosity=1), moins de détails sont affichés à propos des téléchargements, ce qui correspond mieux aux attentes de la plupart des gens.

Une autre amélioration pratique, les suggestions quand une coquille est détectée:

$ guix package --export-manifests
guix package: error: export-manifests : option non reconnue
conseil : Vouliez-vous dire `export-manifest' ?
$ guix remve vim
guix : remve : commande introuvable
conseil : Vouliez-vous dire `remove' ?

Essayez « guix --help » pour plus d’informations.

Si vous avez configuré le déchargement de la construction par SSH, vous pouvez vous réjouir du processus simplifié où l’exécutable guile n’a plus besoin d’être dans le PATH avec le bon réglage de GUILE_LOAD_PATH sur les machines cibles. À la place, le déchargement fait passer toutes ses opérations à travers guix repl.

Le manuel de référence Guix est entièrement traduit en français, allemand et espagnol, avec un début de traduction en russe, chinois et d’autres langages. Guix en lui-même est entièrement traduit en français, allemand et slovaque, et partiellement traduit dans quasiment vingt autres langues. Les traductions sont maintenant gérées avec Weblate, et vous pouvez aider !

Outils de développement

Nous avons de bonnes nouvelles pour les gens qui font des paquets ! Premièrement, guix import a un nouvel importateur récursif pour Go, qui peut créer des définitions ou des modèles de paquets pour des ensembles entiers de paquets Go. La nouvelle commande guix import crate, pour les paquets Rust, honore désormais le « versionnement sémantique » quand elle est utilisée de récursivement.

La commande guix refresh possède désormais de nouveaux « gestionnaires de mise à jour » : sourceforge, pour le code hébergé sur SourceForge, et generic-html qui, comme son nom l’indique, est un programme de mise à jour générique qui fonctionne en analysant les sites web des paquets. Ceci améliore grandement la couverture de guix refresh.

Si vous écrivez des paquets ou développez, vous pourriez aussi aimer la nouvelle option de transformation --with-patch, qui permet de construire un ensemble de paquets en appliquant un patch à plusieurs d’entre eux.

S’appuyant sur l’API d’image pour le système Guix introduit dans la v1.2.0, les commandes guix system vm-image et guix system disk-image sont remplacées par une commande guix system image unifiée. Par exemple,

guix system vm-image --save-provenance config.scm

devient

guix system image -t qcow2 --save-provenance config.scm

tandis que

guix system disk-image -t iso9660 gnu/system/install.scm

devient

guix system image -t iso9660 gnu/system/install.scm

Cela amène des bénéfices en termes de performance ; alors qu’une machine virtuelle était impliquée dans la production du contenu de l’image, les aspects bas-niveau sont désormais gérés par l’outil dédié genimage. Un autre bénéfice est que le format qcow2 est désormais compressé, ce qui évite d’avoir à compresser les images à la main en les post-traitant avec xz ou un autre compresseur. Pour en savoir plus sur la commande guix system image, vous pouvez vous référer à sa documentation.

Dernier point, mais non des moindres, l’introduction du chemin de recherche GUIX_EXTENSIONS_PATH devrait permettre aux extensions de Guix, comme le Guix Workflow Language, d’avoir leurs modules Guile découverts automatiquement, ce qui simplifiera leurs déploiements.

Performance

Nous espérons que vous aurez remarqué que l’installation des substituts (le téléchargement de binaires pré-construits) est devenue plus rapide, comme nous l’expliquions il y a quelque temps. C’est en partie dû à l’utilisation opportuniste de la compression zstd, qui a un haut débit de décompression. Le démon et guix publish prennent en charge zstd en tant que méthode de compression supplémentaire, avec gzip et lzip.

Un autre changement qui peut aider à récupérer des substituts plus rapidement est la découverte de serveurs de substituts locaux. La nouvelle option --discover de guix-daemon lui dit de découvrir et d’utiliser les serveurs de substitut sur le réseau local (LAN) annoncés avec les protocoles mDNS et DNS-SD, par Avahi. De la même manière, guix publish a une nouvelle option --advertise pour s’annoncer sur le réseau local.

À partir du système Guix, vous pouvez lancer herd discover guix-daemon on pour activer temporairement la découverte, ou vous pouvez l’activer dans la configuration de votre système. L’utilisation opportuniste des serveurs de substituts voisins est parfaitement sûre, grâce à la reproductibilité des constructions.

Aussi, guix system init a été optimisé, ce qui contribue à accélérer l’installation du système Guix.

Sur certaines machines avec des ressources limitées, la construction des modules de Guix est une opération très lourde. Vous pouvez maintenant utiliser une nouvelle procédure, channel-with-substitutes-available du module (guix ci), pour récupérer le dernier commit de Guix qui a déjà été construit par la ferme de construction. Voyez la documentation pour un exemple.

Prise en charge de POWER9, des paquets, des services, et plus !

La prise en charge de POWER9 est maintenant disponible en tant que « démonstrateur technique », grâce au travail acharné des personnes qui ont aidé à porter Guix vers cette plateforme. Il n’y a pas encore beaucoup de substituts binaires POWER9 disponibles, à cause de la capacité limitée en POWER9 de notre ferme de construction, mais si vous n’avez pas peur de construire de nombreux paquets depuis les sources, nous serions ravis d’écouter vos retours d’expérience !

Nous avons ajouté 2 000 paquets, pour un total de plus de 17 000 paquets ; nous en avons mis à jour 3 100 autres. La distribution fournit GNU libc 2.31, GCC 10.3, Xfce 4.16.0, Linux-libre 5.11.15, LibreOffice 6.4.7.2 et Emacs 27.2, pour n’en citer que quelques-uns. Parmi les nombreux changements dans les paquets, l’un d’entre eux sort du lot, le nouvel amorçage d’OCaml : le paquet OCaml est maintenant complètement construit à partir des sources grâce à camlboot. Parmi les mises à jour des paquets se trouve Cuirass 1.0, le service qui propulse notre ferme de construction.

Nous avons aussi ajouté plusieurs services supplémentaires comme wireguard, syncthing, ipfs, un service simplifié et plus pratique pour Cuirass et plus encore ! Vous pouvez rechercher les services disponibles avec guix system search.

Le fichier NEWS liste des changements importants supplémentaires et des corrections de bogues qui pourraient vous intéresser.

Essayer, c’est l’adopter !

Le script d’installation a été amélioré pour permettre davantage d’automatisation. Par exemple, si le temps vous manque, vous pouvez le lancer avec :

# yes | ./install.sh

pour installer Guix à partir des binaires sur votre système sans être interrompu par des questions !

Vous serez peut-être aussi intéressé par l’image de démonstration en VM du système Guix qui prend maintenant en charge l’intégration du presse-papier avec l’hôte et le redimensionnement dynamique grâce au protocole SPICE. Nous espérons que cela améliorera votre expérience utilisateur.

Pour voir toutes les possibilités d’installation qui s’offrent à vous, consultez la page de téléchargement et n’hésitez pas à nous contacter.

Amusez‑vous bien !

Crédits

Luis Felipe (illustration)

Aller plus loin

  • # confusionnisme

    Posté par  . Évalué à 3.

    Cette sortie est une excellente nouvelle, Guix me semble très prometteur et ça fait plaisir de voir que le développement est actif ! Je l'ai déjà testé vite fait en tant que gestionnaire de paquets annexe sur ma distro, et je suis impatient d'avoir un peu de temps pour aller plus loin.

    J'aurais juste une remarque à faire : c'est dommage d'avoir donné le même nom à l'outil et à la distro. Du coup les deux sont beaucoup confondus. Je suis souvent tombé sur des forums qui parlaient de Guix System alors que je cherchais des infos sur Guix. Et même dans la doc officielle, ni dans cette dépêche même, les choses ne sont pas toujours claires si on ne prête pas une attention particulière à ce point-là.
    Bref, je pense que Guix System mériterait largement d'être renommé.

    • [^] # Re: confusionnisme

      Posté par  (site web personnel) . Évalué à 8.

      Bref, je pense que Guix System mériterait largement d'être renommé.

      Je suggère Goupix en ajoutant un p pour paquets (ou packages) et un O pour éviter toute homonymie avec un logiciel existant. Ainsi, je trouve que ça sonne bien tout en rappelant un peu Guix.

    • [^] # Re: confusionnisme

      Posté par  . Évalué à 1.

      En fait, avant, Guix System s’appelait GuixSD (pour Guix System Distribution). Et puis cela a été changé en Guix System. Je n’en connais pas la raison.

  • # guix vs nix et nixos

    Posté par  . Évalué à 2.

    Bonjour,

    Quelqu'un qui aurait utilisé Guix (distribution) et NixOs, peut nous donner des infos sur l'interet de l'un ou sur l'autre ?
    J'ai l'impression que Guix (gestionnaire de paquet) n'apporte finalement rien de particulier par rapport à Nix.

    • [^] # Re: guix vs nix et nixos

      Posté par  . Évalué à 4.

      On a un journal qui en parle : NixOS vs Guix System, premiers pas.

      https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

      • [^] # Re: guix vs nix et nixos

        Posté par  (site web personnel) . Évalué à 4.

        Pour préciser : ce journal présente juste les commandes de base, avec les deux systèmes, mais ne donne pas d'avis. Pour un usage "basique", les deux systèmes se ressemblent effectivement beaucoup mais dans le détail, ils ont chacun leur intérêt.

        Perso je connais très peu Guix; je reste sur NixOS car l'habitude, l'intégration de Haskell, et les paquets un peu plus nombreux.

        • [^] # Re: guix vs nix et nixos

          Posté par  . Évalué à 5.

          J'avoue être allé vite j'ai commencé à chercher par le tag nix ou guix, je ne sais plus et quand je suis tombé sur ce titre je me suis dis que ça correspondait sans suffisamment vérifier. Néanmoins avec ces 2 tags on trouve de quoi se faire une idée.

          Si la questions se pose aussi régulièrement malgré le temps c'est qu'il n'y a pas de différence fondamental. nix utilise un DSL et n'est pas aussi catégorique au sujet du non libre (et a plus de paquets) alors que guix apporte un aspect bootstrap de build (comment tout construire à partir du minimum).

          https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

    • [^] # Re: guix vs nix et nixos

      Posté par  . Évalué à 5.

      Quelqu'un qui aurait utilisé Guix (distribution) et NixOs, peut nous donner des infos sur l'interet de l'un ou sur l'autre ?

      L'intérêt de l'un ou l'autre ? c'est une gestion dans un paradigme fonctionnel et déclaratif. Par exemple, sur ce présent site, il y a cette référence et les commentaires qui vont avec. :-) Sinon, sur ce même site, aussi cela avec les commentaires. Parmi d'autres.

      J'ai l'impression que Guix (gestionnaire de paquet) n'apporte finalement rien de particulier par rapport à Nix.

      Troll ? :-)

      Guix et Nix sont fondés sur les mêmes principes (disons, gestion de paquets dans un paradigme fonctionnel et déclaratif). L'implémentation est différente. Vu de très loin, je dirais que la différence dans l'implémentation est pour Guix une continuité grâce à Scheme (lisp, code is data en quelque sorte), alors que du côté de Nix il y a le langage Nix pour décrire les "dérivations" qui tournent avec du C++ (je crois?).

      Guix peut être vu comme une bibliothèque (Scheme) avec laquelle on peut faire la gestion de paquets, décrire un OS dans un DSL Scheme, mais aussi construire dessus, par exemple un moteur expérimental de traitements de flot (/workflow/).

  • # Accès au système hôte

    Posté par  . Évalué à 2.

    J'aime beaucoup Guix mais j'ai rencontré des difficultés en installant lmms (logiciel de musique), qui devait utiliser jack pour utiliser un clavier maître USB et la carte son. Le lmms installé par guix n'avait pas accès au jack du système debian hôte, et un jack installé avec guix dans l'espoir qu'il communique mieux avec lmms ne communiquait pas avec ma carte audio ni mon clavier.

    Bref, j'ai sûrement raté quelque chose mais je n'ai pas compris comment faire communiquer des applis guix avec certaines couches basses de mon système.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.