Précédent: Invoquer guix describe
, Monter: Gestion de paquets [Table des matières][Index]
guix archive
La commande guix archive
permet aux utilisateurs d’exporter
des fichiers du dépôt dans une simple archive puis ensuite de les
importer sur une machine qui fait tourner Guix. En particulier, elle
permet de transférer des fichiers du dépôt d’une machine vers le dépôt d’une
autre machine.
Remarque : Si vous chercher une manière de produire des archives dans un format adapté pour des outils autres que Guix, voir Invoquer
guix pack
.
Pour exporter des fichiers du dépôt comme une archive sur la sortie standard, lancez :
guix archive --export options spécifications...
spécifications peut être soit des noms de fichiers soit des
spécifications de paquets, comme pour guix package
(voir Invoquer guix package
). Par exemple, la commande suivante crée une
archive contenant la sortie gui
du paquet git
et la sortie
principale de emacs
:
guix archive --export git:gui /gnu/store/...-emacs-24.3 > great.nar
Si les paquets spécifiés ne sont pas déjà construits, guix archive
les construit automatiquement. Le processus de construction peut être
contrôlé avec les options de construction communes (voir Options de construction communes).
Pour transférer le paquet emacs
vers une machine connectée en SSH, on
pourrait lancer :
guix archive --export -r emacs | ssh la-machine guix archive --import
De même, on peut transférer un profil utilisateur complet d’une machine à une autre comme cela :
guix archive --export -r $(readlink -f ~/.guix-profile) | \ ssh the-machine guix archive --import
Toutefois, il faut noter que, dans les deux exemples, tous les emacs
et le profil, ainsi que toutes leurs dépendances sont transférés (en raison
de l’-r), indépendamment de ce qui est déjà disponible dans le
dépôt sur la machine cible. L’option --missing peut aider à
déterminer quels sont les éléments manquants dans le dépôt cible. La
commande guix copy
simplifie et optimise tout ce processus, c’est
donc probablement ce que vous devriez utiliser dans ce cas (voir Invoquer guix copy
).
Chaque élément du dépôt est écrit dans le format archive normalisée ou
nar (décrit ci-dessous), et la sortie de guix archive
--export
(et entrée de guix archive --import
) est un nar
bundle.
Le format nar est comparable dans l’esprit au format "tar", mais avec des différences qui le rendent plus approprié à nos objectifs. Premièrement, plutôt que d’enregistrer toutes les métadonnées Unix pour chaque fichier, le format nar ne mentionne que le type de fichier (régulier, répertoire ou lien symbolique) ; les autorisations Unix et le propriétaire/groupe sont rejetés. Deuxièmement, l’ordre dans lequel les entrées de répertoire sont stockées, suit toujours celui des noms de fichiers selon leur vérification de concordance des locales C. Cela rend la production d’archives entièrement déterministe.
Ce format de lot nar est surtout la concaténation de zéro, un ou plusieurs nar avec des métadonnées pour chaque élément du dépôt qu’il contient : son nom de fichier, ses références, la dérivation correspondante et une signature numérique.
Lors de l’export, le démon signe numériquement le contenu de l’archive et cette signature est ajoutée à la fin du fichier. Lors de l’import, le démon vérifie la signature et rejette l’import en cas de signature invalide ou si la clef de signature n’est pas autorisée.
Les principales options sont :
--export
Exporter les fichiers ou les paquets spécifiés du dépôt (voir plus bas). Écrire l’archive résultante sur la sortie standard.
Les dépendances ne sont pas incluses dans la sortie à moins que --recursive ne soit passé.
-r
--recursive
En combinaison avec --export, cette option demande à guix
archive
d’inclure les dépendances des éléments donnés dans l’archive.
Ainsi, l’archive résultante est autonome : elle contient la fermeture des
éléments de dépôt exportés.
--import
Lire une archive depuis l’entrée standard et importer les fichiers inclus dans le dépôt. Annuler si l’archive a une signature invalide ou si elle est signée par une clef publique qui ne se trouve pas dans le clefs autorisées (voir --authorize plus bas).
--missing
Liste une liste de noms de fichiers du dépôt sur l’entrée standard, un par ligne, et écrit sur l’entrée standard le sous-ensemble de ces fichiers qui manquent dans le dépôt.
--generate-key[=paramètres]
¶Génére une nouvelle paire de clefs pour le démon. C’ est un prérequis avant
que les archives ne puissent être exportées avec --export. Cette
opération est habituellement instantanée mais elle peut prendre du temps
parce qu’elle doit récupérer suffisamment d’entropie pour générer la paire
de clefs. Sur Guix System, guix-service-type
prend soin de générer
cette paire de clés au premier démarrage.
La paire de clés générée est typiquement stockée dans /etc/guix, dans
signing-key.pub (clé publique) et signing-key.sec (clé privée,
qui doit rester secrète). Lorsque paramètres est omis, une clé ECDSA
utilisant la courbe Ed25519 est générée, ou pour les version de libgcrypt
avant 1.6.0, une clé RSA de 4096 bits. Autrement, paramètres peut
spécifier les paramètres genkey
adaptés pour libgcrypt
(voir gcry_pk_genkey
dans The Libgcrypt Reference Manual).
--authorize
¶Autoriser les imports signés par la clef publique passée sur l’entrée standard. La clef publique doit être au « format avancé s-expression » — c.-à-d. le même format que le fichier signing-key.pub.
La liste des clés autorisées est gardée dans un fichier modifiable par des humains dans /etc/guix/acl. Le fichier contient des « s-expressions au format avancé » et est structuré comme une liste de contrôle d’accès dans l’infrastructure à clefs publiques simple (SPKI).
--extract=répertoire
-x répertoire
Lit une archive à un seul élément telle que servie par un serveur de substituts (voir Substituts) et l’extrait dans répertoire. C’est une opération de bas niveau requise seulement dans de rares cas d’usage ; voir plus loin.
Par exemple, la commande suivante extrait le substitut pour Emacs servi par
ci.guix.gnu.org
dans /tmp/emacs :
$ wget -O - \ https://ci.guix.gnu.org/nar/gzip/…-emacs-24.5 \ | gunzip | guix archive -x /tmp/emacs
Les archives à un seul élément sont différentes des archives à plusieurs
éléments produites par guix archive --export
; elles contiennent
un seul élément du dépôt et elles n’embarquent pas de signature.
Ainsi cette opération ne vérifie pas de signature et sa sortie
devrait être considérée comme non sûre.
Le but principal de cette opération est de faciliter l’inspection du contenu
des archives venant de serveurs auxquels on ne fait potentiellement pas
confiance. (voir Invoquer guix challenge
).
--list
-t
Lit une archive à un seul élément telle que servie par un serveur de substituts (voir Substituts) et affiche la liste des fichiers qu’elle contient, comme dans cet exemple :
$ wget -O - \ https://ci.guix.gnu.org/nar/lzip/…-emacs-26.3 \ | lzip -d | guix archive -t
Précédent: Invoquer guix describe
, Monter: Gestion de paquets [Table des matières][Index]