Suivant: , Précédent: , Monter: Gestion de paquets   [Table des matières][Index]


5.7 Invoquer guix pull

Les paquets sont installés ou mis à jour vers la dernière version disponible dans la distribution active sur votre machine locale. Pour mettre à jour cette distribution, en même temps que les outils Guix, vous devez lancer guix pull ; la commande télécharge le dernier code source de Guix ainsi que des descriptions de paquets, et le déploie. Le code source est téléchargé depuis un dépôt Git, par défaut le dépôt officiel de GNU Guix, bien que cela puisse être personnalisé. guix pull garantit que le code téléchargé est authentique en vérifiant que les commits sont signés par les développeur·euses de Guix.

Specifically, guix pull downloads code from the channels (voir Canaux) specified by one of the following, in this order:

  1. l’option --channels ;
  2. the user’s ~/.config/guix/channels.scm file, unless -q is passed;
  3. the system-wide /etc/guix/channels.scm file, unless -q is passed (on Guix System, this file can be declared in the operating system configuration, voir channels field of guix-configuration);
  4. les canaux intégrés par défaut spécifiés dans la variable %default-channels.

À la fin, guix package utilisera les paquets et les versions des paquets de la copie de Guix tout juste récupérée. Non seulement ça, mais toutes les commandes Guix et les modules Scheme seront aussi récupérés depuis la dernière version. Les nouvelles sous-commandes de guix ajoutés par la mise à jour sont aussi maintenant disponibles.

Chaque utilisateur peut mettre à jour sa copie de Guix avec guix pull et l’effet est limité à l’utilisateur qui a lancé guix pull. Par exemple, lorsque l’utilisateur root lance guix pull, cela n’a pas d’effet sur la version de Guix que voit alice et vice-versa.

Le résultat après avoir lancé guix pull est un profil disponible sous ~/.config/guix/current contenant la dernière version de Guix.

L’option --list-generations ou -l liste les anciennes générations produites par guix pull, avec des détails sur leur origine :

$ guix pull -l
Génération 1	10 juin 2018 00:18:18
  guix 65956ad
    URL du dépôt : https://git.savannah.gnu.org/git/guix.git
    branche : origin/master
    commit : 65956ad3526ba09e1f7a40722c96c6ef7c0936fe

Génération 2	11 juin 2018 11:02:49
  guix e0cc7f6
    URL du dépôt : https://git.savannah.gnu.org/git/guix.git
    branche : origin/master
    commit : e0cc7f669bec22c37481dd03a7941c7d11a64f1d

Génération 3	13 juin 2018 23:31:07	(actuelle)
  guix 844cc1c
    URL du dépôt : https://git.savannah.gnu.org/git/guix.git
    branche : origin/master
    commit : 844cc1c8f394f03b404c5bb3aee086922373490c

Voir guix describe, pour d’autres manières de décrire le statut actuel de Guix.

Ce profil ~/.config/guix/current fonctionne comme les profils créés par guix package (voir Invoquer guix package). C’est-à-dire que vous pouvez lister les générations, revenir en arrière à une génération précédente — c.-à-d. la version de Guix précédente — etc. :

$ guix pull --roll-back
passé de la génération 3 à 2
$ guix pull --delete-generations=1
supperssion de /var/guix/profiles/per-user/charlie/current-guix-1-link

Vous pouvez aussi utiliser guix package (voir Invoquer guix package) pour contrôler le profil en le nommant explicitement :

$ guix package -p ~/.config/guix/current --roll-back
passé de la génération 3 à 2
$ guix package -p ~/.config/guix/current --delete-generations=1
suppression de /var/guix/profiles/per-user/charlie/current-guix-1-link

La commande guix pull est typiquement invoquée sans arguments mais elle prend en charge les options suivantes :

--url=url
--commit=commit
--branch=branche

Télécharger le code pour le canal guix depuis l’url spécifié, au commit donné (un commit Git valide représenté par une chaîne hexadécimale ou le nom d’une étiquette) ou à la branche branch.

Ces options sont fournies pour votre confort, mais vous pouvez aussi spécifier votre configuration dans le fichier ~/.config/guix/channels.scm ou en utilisant l’option --channels (voir plus bas).

--channels=file
-C file

Lit la liste des canaux dans file plutôt que dans ~/.config/guix/channels.scm ou /etc/guix/channels.scm. file doit contenir un code Scheme qui s’évalue en une liste d’objets de canaux. Voir Canaux pour plus d’informations.

--no-channel-files
-q

Inhibit loading of the user and system channel files, ~/.config/guix/channels.scm and /etc/guix/channels.scm.

--news
-N

Affiche les nouvelles écrites par les auteurs des canaux pour leurs utilisateurs et utilisatrices depuis la génération précédente (voir Writing Channel News). Lorsque vous passez --details, affiche aussi les nouveaux paquets et les paquets mis à jour.

Vous pouvez consulter ces informations pour les générations précédentes avec guix pull -l.

--list-generations[=motif]
-l [motif]

Liste toutes les générations de ~/.config/guix/current ou, si motif est fournit, le sous-ensemble des générations qui correspondent à motif. La syntaxe de motif est la même qu’avec guix package --list-generations (voir Invoquer guix package).

Par défaut, cela affiche les informations sur les canaux utilisés à chaque révision et les nouvelles associées. Si vous passez l’option --details, cela affichera la liste des paquets ajoutés et mis à jour à chaque génération par rapport à la précédente.

--details

Demande à --list-generations ou --news d’afficher plus d’informations sur la différence entre les générations successives, voir plus haut.

--roll-back

Revenir à la génération précédente de ~/.config/guix/current c.-à-d. défaire la dernière transaction.

--switch-generation=motif
-S motif

Basculer vers une génération particulière définie par le motif.

Le motif peut être soit un numéro de génération soit un nombre précédé de « + » ou « - ». Ce dernier signifie : se déplacer en avant ou en arrière d’un nombre donné de générations. Par exemple, si vous voulez retourner à la dernière génération après --roll-back, utilisez --switch-generation=+1.

--delete-generations[=motif]
-d [motif]

Lorsque motif est omis, supprimer toutes les générations en dehors de l’actuelle.

Cette commande accepte les même motifs que --list-generations. Lorsque motif est spécifié, supprime les générations correspondantes. Lorsque motif spécifie une durée, les générations plus anciennes que la durée spécifiée correspondent. Par exemple --delete-generations=1m supprime les générations vieilles de plus d’un mois.

Si la génération actuelle correspond, elle n’est pas supprimée.

Remarquez que supprimer des générations empêche de revenir en arrière vers elles. Ainsi, cette commande doit être utilisée avec précaution.

Voir Invoquer guix describe, pour une manière d’afficher des informations sur la génération actuelle uniquement.

--profile=profil
-p profil

Utiliser le profil à la place de ~/.config/guix/current.

--dry-run
-n

Montrer quels commits des canaux seraient utilisés et ce qui serait construit ou substitué mais ne pas le faire vraiment.

--allow-downgrades

Permet d’extraire des révisions de canaux plus anciennes ou sans rapport avec celles qui sont actuellement utilisées.

Par défaut, guix pull protège contre les attaques dites de "downgrade", par lesquelles le dépôt Git d’un canal serait réinitialisé à une révision antérieure ou sans rapport avec lui-même, ce qui pourrait vous conduire à installer des versions plus anciennes de paquets logiciels, ou connues pour être vulnérables.

Remarque : Assurez-vous de comprendre les implications de sa sécurité avant d’utiliser --allow-downgrades.

--disable-authentication

Permet de "tirer" le code du canal sans l’authentifier.

Par défaut, guix pull authentifie le code téléchargé depuis les canaux en vérifiant que ses commits sont signés par les développeur·euses, et renvoie une erreur si ce n’est pas le cas. Cette option lui enjoint de ne pas effectuer une telle vérification.

Remarque : Assurez-vous de comprendre les implications de sa sécurité avant d’utiliser --disable-authentication.

--system=système
-s système

Tenter de construire pour le système — p. ex. i686-linux — plutôt que pour le type de système de l’hôte de construction.

--bootstrap

Utiliser le programme d’amorçage Guile pour construire la dernière version de Guix. Cette option n’est utile qu’aux personnes qui développent Guix.

Le mécanisme de canaux vous permet de dire à guix pull quels répertoires et branches récupérer, ainsi que les dépôts supplémentaires contenant des modules de paquets qui devraient être déployés. Voir Canaux pour plus d’information.

En plus, guix pull supporte toutes les options de construction communes (voir Options de construction communes).


Suivant: Invoquer guix time-machine, Précédent: Invoquer guix gc, Monter: Gestion de paquets   [Table des matières][Index]