guix-manual 1.2.0-pre3 - en to fr translation catalogue (11435 entries)

note: #-#-#-#-#  contributing.pot (guix manual checkout)  #-#-#-#-# type: chapter #-#-#-#-#  guix.pot (guix manual checkout)  #-#-#-#-# type: menuentry
en: Contributing
fr: Contribuer

note: type: Plain text
en: This project is a cooperative effort, and we need your help to make it grow! Please get in touch with us on @email{guix-devel@@gnu.org} and @code{#guix} on the Libera Chat IRC network.  We welcome ideas, bug reports, patches, and anything that may be helpful to the project.  We particularly welcome help on packaging (@pxref{Packaging Guidelines}).
fr: Ce projet est un effort coopératif et nous avons besoin de votre aide pour le faire grandir ! Contactez-nous sur @email{guix-devel@@gnu.org} et @code{#guix} sur le réseau IRC Libera Chat.  Nous accueillons les idées, les rapports de bogues, les correctifs et tout ce qui pourrait aider le projet.  Nous apprécions particulièrement toute aide sur la création de paquets (@pxref{Consignes d'empaquetage}).

note: type: cindex
en: code of conduct, of contributors
fr: code de conduite, des contributeur·rices

note: type: cindex
en: contributor covenant
fr: convention de contribution

note: type: Plain text
en: We want to provide a warm, friendly, and harassment-free environment, so that anyone can contribute to the best of their abilities.  To this end our project uses a ``Contributor Covenant'', which was adapted from @url{https://contributor-covenant.org/}.  You can find a local version in the @file{CODE-OF-CONDUCT} file in the source tree.
fr: Nous souhaitons fournir un environnement chaleureux, amical et sans harcèlement pour que tout le monde puisse contribuer au mieux de ses capacités.  Pour cela notre projet a une « Convention de contribution » adaptée de @url{http://contributor-covenant.org/}.  Vous pouvez trouver une version locale dans le fichier @file{CODE-OF-CONDUCT} dans l'arborescence des sources.

note: type: Plain text
en: Contributors are not required to use their legal name in patches and on-line communication; they can use any name or pseudonym of their choice.
fr: Les contributeur·rices n'ont pas besoin d'utiliser leur nom légal dans leurs correctifs et leurs communications en ligne ; elles et ils peuvent utiliser n'importe quel nom ou pseudonyme de leur choix.

note: type: section
en: Building from Git
fr: Construire depuis Git

note: type: menuentry
en: The latest and greatest.
fr: Toujours le plus récent.

note: type: section
en: Running Guix Before It Is Installed
fr: Lancer Guix avant qu'il ne soit installé

note: type: menuentry
en: Hacker tricks.
fr: Astuces pour les hackers.

note: type: section
en: The Perfect Setup
fr: La configuration parfaite

note: type: menuentry
en: The right tools.
fr: Les bons outils.

note: type: section
en: Packaging Guidelines
fr: Consignes d'empaquetage

note: type: menuentry
en: Growing the distribution.
fr: Faire grandir la distribution.

note: type: section
en: Coding Style
fr: Style de code

note: type: menuentry
en: Hygiene of the contributor.
fr: Hygiène des contributeur·rices.

note: type: section
en: Submitting Patches
fr: Envoyer des correctifs

note: type: menuentry
en: Share your work.
fr: Partager votre travail.

note: type: section
en: Tracking Bugs and Patches
fr: Suivi des bogues et des correctifs

note: type: menuentry
en: Keeping it all organized.
fr: Tout bien ranger.

note: type: section
en: Commit Access
fr: Accès en commit

note: type: menuentry
en: Pushing to the official repository.
fr: Pousser sur le dépôt officiel.

note: type: section
en: Updating the Guix Package
fr: Mettre à jour Guix

note: type: menuentry
en: Updating the Guix package definition.
fr: Mettre à jour les définitions de paquets de Guix.

note: type: section
en: Writing Documentation
fr: Écrire de la documentation

note: type: menuentry
en: Improving documentation in GNU Guix.
fr: Améliorer la documentation de GNU Guix.

note: type: section
en: Translating Guix
fr: Traduire Guix

note: type: menuentry
en: Make Guix speak your native language.
fr: Faites en sorte que Guix parle votre langue.

note: type: Plain text
en: If you want to hack Guix itself, it is recommended to use the latest version from the Git repository:
fr: Si vous souhaitez travailler sur Guix lui-même, il est recommandé d'utiliser la dernière version du dépôt Git :

note: type: cindex
en: authentication, of a Guix checkout
fr: authentification, d'un extrait de Guix

note: type: Plain text
en: How do you ensure that you obtained a genuine copy of the repository? To do that, run @command{guix git authenticate}, passing it the commit and OpenPGP fingerprint of the @dfn{channel introduction} (@pxref{Invoking guix git authenticate}):
fr: Comment vous assurer que vous avez obtenu une copie authentique du dépôt ? Pour cela, exécutez @command{guix git authenticate}, en lui transmettant le commit et l'empreinte OpenPGP de l'@dfn{canal introduction} (@pxref{Invoquer guix git authenticate}) :

note: type: Plain text
en: This command completes with exit code zero on success; it prints an error message and exits with a non-zero code otherwise.
fr: Cette commande se termine avec le code de sortie zéro en cas de succès ; elle affiche un message d'erreur et quitte avec un code non zéro dans le cas contraire.

note: type: Plain text
en: As you can see, there is a chicken-and-egg problem: you first need to have Guix installed.  Typically you would install Guix System (@pxref{System Installation}) or Guix on top of another distro (@pxref{Binary Installation}); in either case, you would verify the OpenPGP signature on the installation medium.  This ``bootstraps'' the trust chain.
fr: Comme vous pouvez le voir, il y a un problème de poule et d'œuf : il faut d'abord avoir installé Guix.  En général, vous installez Guix System (@pxref{Installation du système}) ou Guix sur une autre distribution (@pxref{Installation binaire}) ; dans les deux cas, vous vérifiez la signature OpenPGP sur le support d'installation.  Cela "amorce" la chaîne de confiance.

note: type: Plain text
en: The easiest way to set up a development environment for Guix is, of course, by using Guix! The following command starts a new shell where all the dependencies and appropriate environment variables are set up to hack on Guix:
fr: La manière la plus simple de configurer un environnement de développement pour Guix est, bien sûr, d'utiliser Guix ! La commande suivante démarre un nouveau shell où toutes les dépendances et les variables d'environnements appropriées sont configurés pour travailler sur Guix :

note: type: Plain text
en: @xref{Invoking guix shell}, for more information on that command.
fr: @xref{Invoking guix shell}, pour plus d'informations sur cette commande.

note: type: Plain text
en: If you are unable to use Guix when building Guix from a checkout, the following are the required packages in addition to those mentioned in the installation instructions (@pxref{Requirements}).
fr: Si vous ne pouvez pas utiliser Guix pour la construction de Guix depuis un extrait, les paquets suivants sont requis en plus de ceux mentionnés dans les instructions d'installation (@pxref{Requirements}).

note: type: item
en: @url{https://gnu.org/software/autoconf/, GNU Autoconf};
fr: @url{https://gnu.org/software/autoconf/, GNU Autoconf} ;

note: type: item
en: @url{https://gnu.org/software/automake/, GNU Automake};
fr: @url{https://gnu.org/software/automake/, GNU Automake} ;

note: type: item
en: @url{https://gnu.org/software/gettext/, GNU Gettext};
fr: @url{https://gnu.org/software/gettext/, GNU Gettext} ;

note: type: item
en: @url{https://gnu.org/software/texinfo/, GNU Texinfo};
fr: @url{https://gnu.org/software/texinfo/, GNU Texinfo} ;

note: type: item
en: @url{https://www.graphviz.org/, Graphviz};
fr: @url{https://www.graphviz.org/, Graphviz} ;

note: type: item
en: @url{https://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
fr: @url{https://www.gnu.org/software/help2man/, GNU Help2man (facultatif)}.

note: type: Plain text
en: On Guix, extra dependencies can be added by instead running @command{guix shell}:
fr: Avec Guix, vous pouvez ajouter des dépendances supplémentaires en lançant @command{guix shell} :

note: type: Plain text
en: From there you can generate the build system infrastructure using Autoconf and Automake:
fr: Vous pouvez maintenant générer l'infrastructure du système de construction avec Autoconf et Automake :

note: type: Plain text
en: If you get an error like this one:
fr: Si vous obtenez une erreur de ce type :

note: type: Plain text
en: it probably means that Autoconf couldn’t find @file{pkg.m4}, which is provided by pkg-config.  Make sure that @file{pkg.m4} is available.  The same holds for the @file{guile.m4} set of macros provided by Guile.  For instance, if you installed Automake in @file{/usr/local}, it wouldn’t look for @file{.m4} files in @file{/usr/share}.  In that case, you have to invoke the following command:
fr: cela signifie probablement qu'Autoconf n'a pas pu trouver @file{pkg.m4} qui est fournit par pkg-config.  Assurez-vous que @file{pkg.m4} est disponible.  C'est aussi vrai pour l'ensemble de macros de @file{guile.m4} fournies par Guile.  Par exemple, si vous avez installé Automake dans @file{/usr/local}, il ne cherchera pas les fichiers @file{.m4} dans @file{/usr/share}.  Dans ce case vous devez invoquer la commande suivante :

note: type: Plain text
en: @xref{Macro Search Path,,, automake, The GNU Automake Manual}, for more information.
fr: @xref{Macro Search Path,,, automake, The GNU Automake Manual}, pour plus d'information.

note: type: Plain text
en: Then, run:
fr: Ensuite lancez :

note: type: Plain text
en: ... where @file{/var} is the normal @code{localstatedir} value (@pxref{The Store}, for information about this).  Note that you will probably not run @command{make install} at the end (you don't have to)  but it's still important to pass the right @code{localstatedir}.
fr: … où @var{-var} est la valeur @code{localstatedir} habituelle (@pxref{The Store} pour plus d'informations à ce propos). Remarquez que vous n'allez probablement pas lancer @command{make install} à la fin (vous n'avez pas besoin de la faire) mais il est toujours important de passer le bon @code{localstatedir}.

note: type: Plain text
en: Finally, you can build Guix and, if you feel so inclined, run the tests (@pxref{Running the Test Suite}):
fr: Enfin, vous pouvez construire Guix et, si vous le souhaitez, lancer les tests (@pxref{Running the Test Suite}) :

note: type: Plain text
en: If anything fails, take a look at installation instructions (@pxref{Installation}) or send a message to the @email{guix-devel@@gnu.org, mailing list}.
fr: Si quelque chose échoue, jetez un œil aux instructions d'installation (@pxref{Installation}) ou envoyez un message à la liste @email{guix-devel@@gnu.org}.

note: type: Plain text
en: From there on, you can authenticate all the commits included in your checkout by running:
fr: À partir de maintenant, vous pouvez authentifier tous les commits de votre extrait en lançant :

note: type: Plain text
en: The first run takes a couple of minutes, but subsequent runs are faster.
fr: La première exécution prend quelques minutes, mais les exécutions suivantes seront plus rapides.

note: type: Plain text
en: Or, when your configuration for your local Git repository doesn't match the default one, you can provide the reference for the @code{keyring} branch through the variable @code{GUIX_GIT_KEYRING}.  The following example assumes that you have a Git remote called @samp{myremote} pointing to the official repository:
fr: Ou bien, si la configuration de votre dépôt Git local ne correspond pas à la configuration par défaut, vous pouvez fournir la référence pour la branche @code{keyring} dans la variable @code{GUIX_GIT_KEYRING}.  L'exemple suivant suppose que vous avez un dépôt distant nommé @samp{myremote} qui pointe vers le dépôt officiel :

note: type: quotation
en: Note
fr: Remarque

note: type: quotation
en: You are advised to run @command{make authenticate} after every @command{git pull} invocation.  This ensures you keep receiving valid changes to the repository.
fr: Nous vous conseillons d'exécuter @command{make authenticate} après chaque invocation de @command{git pull}.  Cela vous garantit de continuer à recevoir des modifications valables dans le dépôt.

note: type: Plain text
en: After updating the repository, @command{make} might fail with an error similar to the following example:
fr: Après la mise à jour du dépôt, @command{make} peut échouer avec une erreur semblable à celle de l'exemple suivant :

note: type: Plain text
en: This means that one of the record types that Guix defines (in this example, the @code{origin} record) has changed, and all of guix needs to be recompiled to take that change into account.  To do so, run @command{make clean-go} followed by @command{make}.
fr: Cela signifie qu'un des types d'enregistrement que Guix définie (dans cet exemple, l'enregistrement @code{origin}) a changé, et que l'entièreté de guix doit être recompilé pour prendre ce changement en compte. Pour ce faire, lancez @command{make clean-go} suivi de @command{make}.

note: type: Plain text
en: In order to keep a sane working environment, you will find it useful to test the changes made in your local source tree checkout without actually installing them.  So that you can distinguish between your ``end-user'' hat and your ``motley'' costume.
fr: Pour garder un environnement de travail sain, il est utile de tester les changement localement sans les installer pour de vrai.  Pour pouvoir distinguer votre rôle « d'utilisateur·rice final·e » de celui parfois haut en couleur de « développeur·euse ».

note: type: Plain text
en: To that end, all the command-line tools can be used even if you have not run @code{make install}.  To do that, you first need to have an environment with all the dependencies available (@pxref{Building from Git}), and then simply prefix each command with @command{./pre-inst-env} (the @file{pre-inst-env} script lives in the top build tree of Guix; it is generated by running @command{./bootstrap} followed by @command{./configure}).  As an example, here is how you would build the @code{hello} package as defined in your working tree (this assumes @command{guix-daemon} is already running on your system; it's OK if it's a different version):
fr: Pour cela, tous les outils en ligne de commande sont utilisables même sans avoir lancé @code{make install}.  Pour faire cela, vous devez d'abord avoir un environnement avec toutes les dépendances disponibles (@pxref{Building from Git}), et puis préfixer simplement chaque commande avec @command{./pre-inst-env} (le script @file{pre-inst-env} se trouve dans le répertoire de plus haut niveau de l'arborescence des sources de Guix ; il est généré en lançant @command{./bootstrap} suivit de @command{./configure}).  À titre d'exemple, voici comment construire le paquet @code{hello} tel que défini dans votre arborescence de travail (cela suppose que @command{guix-daemon} fonctionne déjà sur votre système ; c'est OK si c'est une version différente) :

note: type: Plain text
en: Similarly, an example for a Guile session using the Guix modules:
fr: De même, pour une session Guile qui utilise les modules Guix :

note: type: Plain text
en: @dots{} and for a REPL (@pxref{Using Guix Interactively}):
fr: @dots{} et pour une REPL (@pxref{Using Guix Interactively}) :

note: type: Plain text
en: If you are hacking on the daemon and its supporting code or if @command{guix-daemon} is not already running on your system, you can launch it straight from the build tree@footnote{The @option{-E} flag to @command{sudo} guarantees that @code{GUILE_LOAD_PATH} is correctly set such that @command{guix-daemon} and the tools it uses can find the Guile modules they need.}:
fr: Si vous travaillez sur le démon et son code supporté ou si @command{guix-daemon} n'est pas déjà lancé sur votre système, vous pouvez le lancer directement depuis l'arborescence de construction@footnote{Le drapeau @option{-E} de @command{sudo} garantit que @code{GUILE_LOAD_PATH} est correctement configuré de sorte que @command{guix-daemon} et les outils qu'il utilise puissent trouver les modules Guile dont ils ont besoin.} :

note: type: Plain text
en: The @command{pre-inst-env} script sets up all the environment variables necessary to support this, including @env{PATH} and @env{GUILE_LOAD_PATH}.
fr: Le script @command{pre-inst-env} paramètre toutes les variables d'environnement nécessaires, dont @env{PATH} et @env{GUILE_LOAD_PATH}.

note: type: Plain text
en: Note that @command{./pre-inst-env guix pull} does @emph{not} upgrade the local source tree; it simply updates the @file{~/.config/guix/current} symlink (@pxref{Invoking guix pull}).  Run @command{git pull} instead if you want to upgrade your local source tree.
fr: Remarquez que @command{./pre-inst-env guix pull} ne met @emph{pas} à jour l'arborescence des sources locale ; cela met seulement à jour le lien symbolique de @file{~/.config/guix/current} (@pxref{Invoking guix pull}).  Lancez @command{git pull} à la place si vous voulez mettre à jour votre arborescence des source locale.

note: type: Plain text
en: Sometimes, especially if you have recently updated your repository, running @command{./pre-inst-env} will print a message similar to the following example:
fr: Parfois, surtout si vous avez récemment mis à jour votre dépôt, lancer @command{./pre-inst-env} affichera des messages semblables à l'exemple suivant :

note: type: Plain text
en: This is only a note and you can safely ignore it.  You can get rid of the message by running @command{make -j4}.  Until you do, Guile will run slightly slower because it will interpret the code instead of using prepared Guile object (@file{.go}) files.
fr: Ce n'est qu'une remarque et vous pouvez l'ignorer sans problème. Vous pouvez vous débarrasser de ce message en lançant @command{make -j4}. Jusqu'à ce que vous fassiez cela, Guile sera un tout petit peu plus lent parce qu'il doit interpréter le code au lieu d'utiliser les fichiers objets Guile (@file{.go}) précompilés.

note: type: Plain text
en: You can run @command{make} automatically as you work using @command{watchexec} from the @code{watchexec} package.  For example, to build again each time you update a package file, run @samp{watchexec -w gnu/packages -- make -j4}.
fr: Vous pouvez lancer @command{make} automatiquement quand vous travaillez avec @command{watchexec} du paquet @code{watchexec}. Par exemple, pour construire de nouveau à chaque fois que vous modifiez un fichier de paquet lancez @samp{watchexec -w gnu/packages -- make -j4}.

note: type: Plain text
en: The Perfect Setup to hack on Guix is basically the perfect setup used for Guile hacking (@pxref{Using Guile in Emacs,,, guile, Guile Reference Manual}).  First, you need more than an editor, you need @url{https://www.gnu.org/software/emacs, Emacs}, empowered by the wonderful @url{https://nongnu.org/geiser/, Geiser}.  To set that up, run:
fr: La configuration parfaite pour travailler sur Guix est simplement la configuration parfaite pour travailler en Guile (@pxref{Using Guile in Emacs,,, guile, Guile Reference Manual}).  Tout d'abord, vous avez besoin de mieux qu'un éditeur de texte, vous avez besoin de @url{http://www.gnu.org/software/emacs, Emacs}, amélioré par le superbe @url{http://nongnu.org/geiser/, Geiser}.  Pour paramétrer cela, lancez :

note: type: Plain text
en: Geiser allows for interactive and incremental development from within Emacs: code compilation and evaluation from within buffers, access to on-line documentation (docstrings), context-sensitive completion, @kbd{M-.} to jump to an object definition, a REPL to try out your code, and more (@pxref{Introduction,,, geiser, Geiser User Manual}).  For convenient Guix development, make sure to augment Guile’s load path so that it finds source files from your checkout:
fr: Geiser permet le développement interactif et incrémental depuis Emacs : la compilation du code et son évaluation depuis les tampons, l'accès à la documentation en ligne (docstrings), la complétion sensible au contexte, @kbd{M-.} pour sauter à la définition d'un objet, un REPL pour tester votre code, et bien plus (@pxref{Introduction,,, geiser, Geiser User Manual}).  Pour travailler confortablement sur Guix, assurez-vous de modifier le chemin de chargement de Guile pour qu'il trouve les fichiers source de votre dépôt :

note: type: lisp
en: ;; @r{Assuming the Guix checkout is in ~/src/guix.}
    (with-eval-after-load 'geiser-guile
      (add-to-list 'geiser-guile-load-path "~/src/guix"))
fr: ;; @r{Si l'extrait est dans ~/src/guix.}
    (with-eval-after-load 'geiser-guile
      (add-to-list 'geiser-guile-load-path "~/src/guix"))

note: type: Plain text
en: To actually edit the code, Emacs already has a neat Scheme mode.  But in addition to that, you must not miss @url{https://www.emacswiki.org/emacs/ParEdit, Paredit}.  It provides facilities to directly operate on the syntax tree, such as raising an s-expression or wrapping it, swallowing or rejecting the following s-expression, etc.
fr: Pour effectivement éditer le code, Emacs a déjà un très bon mode Scheme.  Mais en plus de ça, vous ne devez pas rater @url{http://www.emacswiki.org/emacs/ParEdit, Paredit}.  Il fournit des fonctionnalités pour opérer directement sur l'arbre de syntaxe, comme relever une s-expression ou l'envelopper, absorber ou rejeter la s-expression suivante, etc.

note: type: cindex
en: code snippets
fr: extraits de code

note: type: cindex
en: templates
fr: modèles

note: type: cindex
en: reducing boilerplate
fr: réduire la quantité de code commun

note: type: Plain text
en: We also provide templates for common git commit messages and package definitions in the @file{etc/snippets} directory.  These templates can be used to expand short trigger strings to interactive text snippets. If you use @url{https://joaotavora.github.io/yasnippet/, YASnippet}, you may want to add the @file{etc/snippets/yas} snippets directory to the @var{yas-snippet-dirs} variable.  If you use @url{https://github.com/minad/tempel/, Tempel}, you may want to add the @file{etc/snippets/tempel/*} path to the @var{tempel-path} variable in Emacs.
fr: Nous fournissons aussi des modèles pour les messages de commit git courants et les définitions de paquets dans le répertoire @file{etc/snippets}.  Ces modèles s'utilisent pour étendre de courtes phrases d'amorce en des bouts de texte interactifs. Si vous utilisez @url{http://joaotavora.github.io/yasnippet/, YASnippet}, vous voudrez peut-être ajouter le répertoire des modèles, @file{etc/snippets/yas}, dans la variable d'environnement @var{yas-snippet-dirs}. Si vous utilisez @url{https://github.com/minad/tempel/, Tempel}, vous voudrez peut-être ajouter le chemin @file{etc/snippets/tempel/*} dans la variable @var{tempel-path} d'Emacs.

note: type: lisp
en: ;; @r{Assuming the Guix checkout is in ~/src/guix.}
    ;; @r{Yasnippet configuration}
    (with-eval-after-load 'yasnippet
      (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets/yas"))
    ;; @r{Tempel configuration}
    (with-eval-after-load 'tempel
       ;; Ensure tempel-path is a list -- it may also be a string.
       (unless (listp 'tempel-path)
         (setq tempel-path (list tempel-path)))
       (add-to-list 'tempel-path "~/src/guix/etc/snippets/tempel/*"))
fr: ;; @r{En supposant que le dépôt git de Guix est dans ~/src/guix.}
    ;; @r{Configuration Yasnippet}
    (with-eval-after-load 'yasnippet
      (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets/yas"))
    ;; @r{Configuration Tempel}
    (with-eval-after-load 'tempel
       ;; S'assure que tempel-path est une liste — elle peut aussi être une chaine.
       (unless (listp 'tempel-path)
         (setq tempel-path (list tempel-path)))
       (add-to-list 'tempel-path "~/src/guix/etc/snippets/tempel/*"))

note: type: Plain text
en: The commit message snippets depend on @url{https://magit.vc/, Magit} to display staged files.  When editing a commit message type @code{add} followed by @kbd{TAB} to insert a commit message template for adding a package; type @code{update} followed by @kbd{TAB} to insert a template for updating a package; type @code{https} followed by @kbd{TAB} to insert a template for changing the home page URI of a package to HTTPS.
fr: Les extraits de messages de commit dépendent de @url{https://magit.vc/, Magit} pour afficher les fichiers sélectionnés.  Lors de la modification d'un message de commit, tapez @code{add} suivi de @kbd{TAB} pour insérer un modèle de message de commit pour ajouter un paquet ; tapez @code{update} suivi de @kbd{TAB} pour insérer un modèle pour la mise à jour d'un paquet ; tapez @code{https} suivi de @kbd{TAB} pour insérer un modèle pour le changement à HTTPS de l'URI de la page d'accueil.

note: type: Plain text
en: The main snippet for @code{scheme-mode} is triggered by typing @code{package...} followed by @kbd{TAB}.  This snippet also inserts the trigger string @code{origin...}, which can be expanded further.  The @code{origin} snippet in turn may insert other trigger strings ending on @code{...}, which also can be expanded further.
fr: L'extrait principal pour @code{scheme-mode} est lancé en tapant @code{package…} suivi par @kbd{TAB}.  Cet extrait insère aussi la chaîne de déclenchement @code{origin…}, qui peut aussi être étendue.  L'extrait @code{origin} lui-même peut aussi insérer des chaînes de déclenchement qui finissent sur @code{…}, qui peuvent aussi être étendues.

note: type: cindex
en: insert or update copyright
fr: insérer ou mettre à jour la ligne de copyright

note: type: Plain text
en: We additionally provide insertion and automatic update of a copyright in @file{etc/copyright.el}.  You may want to set your full name, mail, and load a file.
fr: De plus, nous fournissons l'insertion et la mise à jour automatique d'une ligne de copyright dans @file{etc/copyright.el}.  Vous voudrez sans doute indiquer votre nom complet, adresse de courriel et charger le fichier.

note: type: lisp
en: (setq user-full-name "Alice Doe")
    (setq user-mail-address "alice@@mail.org")
    ;; @r{Assuming the Guix checkout is in ~/src/guix.}
    (load-file "~/src/guix/etc/copyright.el")
fr: (setq user-full-name "Alice Doe")
    (setq user-mail-address "alice@@mail.org")
    ;; @r{En supposant que le dépôt Guix est dans ~/src/guix.}
    (load-file "~/src/guix/etc/copyright.el")

note: type: Plain text
en: To insert a copyright at the current line invoke @code{M-x guix-copyright}.
fr: Pour insérer une ligne de copyright à la ligne actuelle invoquez @code{M-x guix-copyright}.

note: type: Plain text
en: To update a copyright you need to specify a @code{copyright-names-regexp}.
fr: Pour mettre à jour une ligne de copyright vous devez spécifier un @code{copyright-names-regexp}.

note: type: Plain text
en: You can check if your copyright is up to date by evaluating @code{M-x copyright-update}.  If you want to do it automatically after each buffer save then add @code{(add-hook 'after-save-hook 'copyright-update)} in Emacs.
fr: Vous pouvez vérifier si votre ligne de copyright est à jour en évaluant @code{M-x copyright-update}.  Si vous voulez le faire automatiquement après chaque sauvegarde de tampon ajoutez @code{(add-hook 'after-save-hook 'copyright-update)} dans Emacs.

note: type: cindex
en: packages, creating
fr: paquets, création

note: type: Plain text
en: The GNU distribution is nascent and may well lack some of your favorite packages.  This section describes how you can help make the distribution grow.
fr: La distribution GNU est jeune et vos paquets préférés peuvent manquer.  Cette section décrit comment vous pouvez aider à agrandir la distribution.

note: type: Plain text
en: Free software packages are usually distributed in the form of @dfn{source code tarballs}---typically @file{tar.gz} files that contain all the source files.  Adding a package to the distribution means essentially two things: adding a @dfn{recipe} that describes how to build the package, including a list of other packages required to build it, and adding @dfn{package metadata} along with that recipe, such as a description and licensing information.
fr: Les paquets de logiciels libres sont habituellement distribués sous forme @dfn{d'archives de sources} — typiquement des fichiers @file{.tar.gz} contenant tous les fichiers sources.  Ajouter un paquet à la distribution signifie en substance deux choses : ajouter une @dfn{recette} qui décrit comment construire le paquet, avec une liste d'autres paquets requis pour le construire, et ajouter des @dfn{métadonnées de paquet} avec la recette, comme une description et une licence.

note: type: Plain text
en: In Guix all this information is embodied in @dfn{package definitions}.  Package definitions provide a high-level view of the package.  They are written using the syntax of the Scheme programming language; in fact, for each package we define a variable bound to the package definition, and export that variable from a module (@pxref{Package Modules}).  However, in-depth Scheme knowledge is @emph{not} a prerequisite for creating packages.  For more information on package definitions, @pxref{Defining Packages}.
fr: Dans Guix, toutes ces informations sont incorporées dans les @dfn{définitions de paquets}.  Les définitions de paquets fournissent une vue de haut-niveau du paquet.  Elles sont écrites avec la syntaxe du langage de programmation Scheme ; en fait, pour chaque paquet nous définissons une variable liée à la définition et exportons cette variable à partir d'un module (@pxref{Package Modules}).  Cependant, il n'est @emph{pas} nécessaire d'avoir une connaissance approfondie du Scheme pour créer des paquets.  Pour plus d'informations sur les définitions des paquets, @pxref{Defining Packages}.

note: type: Plain text
en: Once a package definition is in place, stored in a file in the Guix source tree, it can be tested using the @command{guix build} command (@pxref{Invoking guix build}).  For example, assuming the new package is called @code{gnew}, you may run this command from the Guix build tree (@pxref{Running Guix Before It Is Installed}):
fr: Une fois une définition de paquet en place, stocké dans un fichier de l'arborescence des sources de Guix, il peut être testé avec la commande @command{guix build} (@pxref{Invoking guix build}).  Par exemple, en supposant que le nouveau paquet s'appelle @code{gnew}, vous pouvez lancer cette commande depuis l'arborescence de construction de Guix (@pxref{Running Guix Before It Is Installed}) :

note: type: Plain text
en: Using @code{--keep-failed} makes it easier to debug build failures since it provides access to the failed build tree.  Another useful command-line option when debugging is @code{--log-file}, to access the build log.
fr: Utiliser @code{--keep-failed} rend facile le débogage des échecs car il fournit l'accès à l'arborescence de construction qui a échouée.  Une autre sous-commande utile pour le débogage est @code{--log-file}, pour accéder au journal de construction.

note: type: Plain text
en: If the package is unknown to the @command{guix} command, it may be that the source file contains a syntax error, or lacks a @code{define-public} clause to export the package variable.  To figure it out, you may load the module from Guile to get more information about the actual error:
fr: Si le paquet n'est pas connu de la commande @command{guix}, il se peut que le fichier source ait une erreur de syntaxe, ou qu'il manque une clause @code{define-public} pour exporter la variable du paquet.  Pour comprendre cela, vous pouvez charger le module depuis Guile pour avoir plus d'informations sur la véritable erreur :

note: type: Plain text
en: Once your package builds correctly, please send us a patch (@pxref{Submitting Patches}).  Well, if you need help, we will be happy to help you too.  Once the patch is committed in the Guix repository, the new package automatically gets built on the supported platforms by @url{https://@value{SUBSTITUTE-SERVER-1}, our continuous integration system}.
fr: Une fois que votre paquet est correctement construit, envoyez-nous un correctif (@pxref{Contributing}).  Enfin, si vous avez besoin d'aide, nous serons ravis de vous aider aussi.  Une fois que le correctif soumis est commité dans le dépôt Guix, le nouveau paquet est automatiquement construit sur les plate-formes supportées par @url{https://@value{SUBSTITUTE-SERVER-1}, notre système d'intégration continue}.

note: type: cindex
en: substituter
fr: substitution

note: type: Plain text
en: Users can obtain the new package definition simply by running @command{guix pull} (@pxref{Invoking guix pull}).  When @code{@value{SUBSTITUTE-SERVER-1}} is done building the package, installing the package automatically downloads binaries from there (@pxref{Substitutes}).  The only place where human intervention is needed is to review and apply the patch.
fr: On peut obtenir la nouvelle définition du paquet simplement en lançant @command{guix pull} (@pxref{Invoking guix pull}). Lorsque @code{@value{SUBSTITUTE-SERVER-1}} a fini de construire le paquet, l'installation du paquet y télécharge automatiquement les binaires (@pxref{Substituts}). La seule intervention humaine requise est pendant la revue et l'application du correctif.

note: type: subsection
en: Software Freedom
fr: Liberté logiciel

note: type: menuentry
en: What may go into the distribution.
fr: Ce que la distribution peut contenir.

note: type: subsection
en: Package Naming
fr: Conventions de nommage

note: type: menuentry
en: What's in a name?
fr: Qu'est-ce qu'un bon nom ?

note: type: subsection
en: Version Numbers
fr: Numéros de version

note: type: menuentry
en: When the name is not enough.
fr: Lorsque le nom n'est pas suffisant.

note: type: subsection
en: Synopses and Descriptions
fr: Synopsis et descriptions

note: type: menuentry
en: Helping users find the right package.
fr: Aider les utilisateur·rices à trouver le bon paquet.

note: type: subsection
en: Snippets versus Phases
fr: Substituts ou Phases

note: type: menuentry
en: Whether to use a snippet, or a build phase.
fr: Qu'il s'agisse d'un substitut ou d'une phase de construction.

note: type: subsection
en: Emacs Packages
fr: Paquets Emacs

note: type: menuentry
en: Your Elisp fix.
fr: Votre dose d'Elisp.

note: type: subsection
en: Python Modules
fr: Modules Python

note: type: menuentry
en: A touch of British comedy.
fr: Un peu de comédie anglaise.

note: type: subsection
en: Perl Modules
fr: Modules Perl

note: type: menuentry
en: Little pearls.
fr: Petites perles.

note: type: subsection
en: Java Packages
fr: Paquets Java

note: type: menuentry
en: Coffee break.
fr: Pause café.

note: type: subsection
en: Rust Crates
fr: Paquets Rust

note: type: menuentry
en: Beware of oxidation.
fr: Attention à l'oxydation.

note: type: subsection
en: Elm Packages
fr: Paquets elm

note: type: menuentry
en: Trees of browser code
fr: Arborescence de code pour navigateur

note: type: subsection
en: Fonts
fr: Polices de caractères

note: type: menuentry
en: Fond of fonts.
fr: À fond les fontes.

note: type: cindex
en: free software
fr: logiciel libre

note: type: Plain text
en: The GNU operating system has been developed so that users can have freedom in their computing.  GNU is @dfn{free software}, meaning that users have the @url{https://www.gnu.org/philosophy/free-sw.html,four essential freedoms}: to run the program, to study and change the program in source code form, to redistribute exact copies, and to distribute modified versions.  Packages found in the GNU distribution provide only software that conveys these four freedoms.
fr: Le système d'exploitation GNU a été développé pour que les utilisatrices et utilisateurs puissent utiliser leur ordinateur en toute liberté.  GNU est un @dfn{logiciel libre}, ce qui signifie que chaque personne l'utilisant bénéficie des @url{https://www.gnu.org/philosophy/free-sw.fr.html,quatre libertés essentielles} : exécuter le programmer, étudier et modifier le programme sous sa forme source, redistribuer des copies exactes et distribuer les versions modifiées.  Les paquets qui se trouvent dans la distribution GNU ne fournissent que des logiciels qui respectent ces quatre libertés.

note: type: Plain text
en: In addition, the GNU distribution follow the @url{https://www.gnu.org/distros/free-system-distribution-guidelines.html,free software distribution guidelines}.  Among other things, these guidelines reject non-free firmware, recommendations of non-free software, and discuss ways to deal with trademarks and patents.
fr: En plus, la distribution GNU suit les @url{https://www.gnu.org/distros/free-system-distribution-guidelines.html,recommandations pour les distributions systèmes libres}.  Entre autres choses, ces recommandations rejettent les microgiciels non libres, les recommandations de logiciels non libres et discute des façon de gérer les marques et les brevets.

note: type: Plain text
en: Some otherwise free upstream package sources contain a small and optional subset that violates the above guidelines, for instance because this subset is itself non-free code.  When that happens, the offending items are removed with appropriate patches or code snippets in the @code{origin} form of the package (@pxref{Defining Packages}).  This way, @code{guix build --source} returns the ``freed'' source rather than the unmodified upstream source.
fr: Certaines sources amont autrement parfaitement libres contiennent une petite partie facultative qui viole les recommandations ci-dessus, par exemple car cette partie est du code non-libre.  Lorsque cela arrive, les éléments en question sont supprimés avec des correctifs ou des bouts de codes appropriés dans la forme @code{origin} du paquet (@pxref{Defining Packages}).  De cette manière, @code{guix build --source} renvoie la source « libérée » plutôt que la source amont sans modification.

note: type: cindex
en: package name
fr: nom du paquet

note: type: Plain text
en: A package actually has two names associated with it.  First, there is the name of the @emph{Scheme variable}, the one following @code{define-public}.  By this name, the package can be made known in the Scheme code, for instance as input to another package.  Second, there is the string in the @code{name} field of a package definition.  This name is used by package management commands such as @command{guix package} and @command{guix build}.
fr: Un paquet a en fait deux noms qui lui sont associés. Premièrement il y a le nom de la @emph{variable Scheme}, celui qui suit @code{define-public}.  Par ce nom, le paquet peut se faire connaître par le code Scheme, par exemple comme entrée d'un autre paquet.  Deuxièmement, il y a la chaîne dans le champ @code{name} d'une définition de paquet.  Ce nom est utilisé par les commandes de gestion des paquets comme @command{guix package} et @command{guix build}.

note: type: Plain text
en: Both are usually the same and correspond to the lowercase conversion of the project name chosen upstream, with underscores replaced with hyphens.  For instance, GNUnet is available as @code{gnunet}, and SDL_net as @code{sdl-net}.
fr: Les deux sont habituellement les mêmes et correspondent à la conversion en minuscule du nom du projet choisi en amont, où les underscores sont remplacés par des tirets.  Par exemple, GNUnet est disponible en tant que @code{gnunet} et SDL_net en tant que @code{sdl-net}.

note: type: Plain text
en: A noteworthy exception to this rule is when the project name is only a single character, or if an older maintained project with the same name already exists---regardless of whether it has already been packaged for Guix.  Use common sense to make such names unambiguous and meaningful.  For example, Guix's package for the shell called ``s'' upstream is @code{s-shell} and @emph{not} @code{s}.  Feel free to ask your fellow hackers for inspiration.
fr: Une exception notable à cette règle est lorsque le nom du projet consiste en un unique caractère, ou si un projet maintenu plus ancien avec le même nom existe déjà — indépendamment de s'il a été empaqueté dans Guix on nom. Utilisez votre bon sens pour éviter de rendre ces noms ambigües et de leur enlever leur sens. Par exemple, le paquet Guix pour le shell nommé « s » en amont est @code{s-shell} et @emph{pas} @code{s}. N'hésitez pas à demander si vous êtes en panne d'inspiration.

note: type: Plain text
en: We do not add @code{lib} prefixes for library packages, unless these are already part of the official project name.  But @pxref{Python Modules} and @ref{Perl Modules} for special rules concerning modules for the Python and Perl languages.
fr: Nous n'ajoutons pas de préfixe @code{lib} au bibliothèques de paquets, à moins qu'il ne fasse partie du nom officiel du projet.  Mais @pxref{Python Modules} et @ref{Perl Modules}  pour des règles spéciales concernant les modules pour les langages Python et Perl.

note: type: Plain text
en: Font package names are handled differently, @pxref{Fonts}.
fr: Les noms de paquets de polices sont gérés différemment, @pxref{Fonts}.

note: type: cindex
en: package version
fr: version du paquet

note: type: Plain text
en: We usually package only the latest version of a given free software project.  But sometimes, for instance for incompatible library versions, two (or more) versions of the same package are needed.  These require different Scheme variable names.  We use the name as defined in @ref{Package Naming} for the most recent version; previous versions use the same name, suffixed by @code{-} and the smallest prefix of the version number that may distinguish the two versions.
fr: Nous n'incluons en général que la dernière version d'un projet de logiciel libre donné.  Mais parfois, par exemple pour des versions incompatibles de bibliothèques, deux (ou plus) versions du même paquet sont requises.  Elles ont besoin d'un nom de variable Scheme différent.  Nous utilisons le nom défini dans @ref{Package Naming} pour la version la plus récente ; les versions précédentes utilisent le même nom, suffixé par @code{-} et le plus petit préfixe du numéro de version qui permet de distinguer deux versions.

note: type: Plain text
en: The name inside the package definition is the same for all versions of a package and does not contain any version number.
fr: Le nom dans la définition du paquet est le même pour toutes les versions d'un paquet et ne contient pas de numéro de version.

note: type: Plain text
en: For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows:
fr: Par exemple, les version 2.24.20 et 3.9.12 de GTK+ peuvent être inclus de cette manière :

note: type: Plain text
en: If we also wanted GTK+ 3.8.2, this would be packaged as
fr: Si nous voulons aussi GTK+ 3.8.2, cela serait inclus de cette manière

note: type: cindex
en: version number, for VCS snapshots
fr: numéro de version, pour les instantanés des systèmes de contrôle de version

note: type: Plain text
en: Occasionally, we package snapshots of upstream's version control system (VCS) instead of formal releases.  This should remain exceptional, because it is up to upstream developers to clarify what the stable release is.  Yet, it is sometimes necessary.  So, what should we put in the @code{version} field?
fr: Parfois, nous incluons des paquets provenant d'instantanés de systèmes de contrôle de version (VCS) au lieu de versions publiées formellement.  Cela devrait rester exceptionnel, car c'est le rôle des développeurs amont de spécifier quel est la version stable.  Cependant, c'est parfois nécessaire.  Donc, que faut-il mettre dans le champ @code{version} ?

note: type: Plain text
en: Clearly, we need to make the commit identifier of the VCS snapshot visible in the version string, but we also need to make sure that the version string is monotonically increasing so that @command{guix package --upgrade} can determine which version is newer.  Since commit identifiers, notably with Git, are not monotonically increasing, we add a revision number that we increase each time we upgrade to a newer snapshot.  The resulting version string looks like this:
fr: Clairement, nous devons rendre l'identifiant de commit de l'instantané du VCS visible dans la version, mais nous devons aussi nous assurer que la version augmente de manière monotone pour que @command{guix package --upgrade} puisse déterminer quelle version est la plus récente.  Comme les identifiants de commits, notamment avec Git, n'augmentent pas, nous ajoutons un numéro de révision qui nous augmentons à chaque fois que nous mettons à jour vers un nouvel instantané.  La chaîne qui en résulte ressemble à cela :

note: type: example
en: 2.0.11-3.cabba9e
      ^    ^    ^
      |    |    `-- upstream commit ID
      |    |
      |    `--- Guix package revision
      |
    latest upstream version
fr: 2.0.11-3.cabba9e
      ^    ^    ^
      |    |    `-- ID du commit en amont
      |    |
      |    `--- révision du paquet Guix
      |
    dernière version en amont

note: type: Plain text
en: It is a good idea to strip commit identifiers in the @code{version} field to, say, 7 digits.  It avoids an aesthetic annoyance (assuming aesthetics have a role to play here) as well as problems related to OS limits such as the maximum shebang length (127 bytes for the Linux kernel).  There are helper functions for doing this for packages using @code{git-fetch} or @code{hg-fetch} (see below).  It is best to use the full commit identifiers in @code{origin}s, though, to avoid ambiguities.  A typical package definition may look like this:
fr: C'est une bonne idée de tronquer les identifiants dans le champ @code{version} à disons 7 caractères.  Cela évite un problème esthétique (en supposant que l'esthétique ait un rôle à jouer ici) et des problèmes avec les limites de l'OS comme la longueur maximale d'un shebang (127 octets pour le noyau Linux). Il y a des fonctions auxiliaires pour faire cela avec les paquets qui utilisent @code{git-fetch} ou @code{hg-fetch} (voir plus bas). Il vaut mieux cependant utiliser l'identifiant de commit complet dans @code{origin}, pour éviter les ambiguïtés.  Une définition de paquet peut ressembler à ceci :

note: type: lisp
en: (define my-package
      (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
            (revision "1"))          ;Guix package revision
        (package
          (version (git-version "0.9" revision commit))
          (source (origin
                    (method git-fetch)
                    (uri (git-reference
                          (url "git://example.org/my-package.git")
                          (commit commit)))
                    (sha256 (base32 "1mbikn@dots{}"))
                    (file-name (git-file-name name version))))
          ;; @dots{}
          )))
fr: (define my-package
      (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
            (revision "1"))          ;révision du paquet Guix
        (package
          (version (git-version "0.9" revision commit))
          (source (origin
                    (method git-fetch)
                    (uri (git-reference
                          (url "git://example.org/my-package.git")
                          (commit commit)))
                    (sha256 (base32 "1mbikn@dots{}"))
                    (file-name (git-file-name name version))))
          ;; @dots{}
          )))

note: type: deffn
en: {Scheme Procedure} git-version @var{VERSION} @var{REVISION} @var{COMMIT}
fr: {Procédure Scheme} git-version @var{VERSION} @var{REVISION} @var{COMMIT}

note: type: deffn
en: Return the version string for packages using @code{git-fetch}.
fr: Renvoie la chaîne de version pour les paquets qui utilisent @code{git-fetch}.

note: type: deffn
en: {Scheme Procedure} hg-version @var{VERSION} @var{REVISION} @var{CHANGESET}
fr: {Procédure Scheme} hg-version @var{VERSION} @var{REVISION} @var{CHANGESET}

note: type: deffn
en: Return the version string for packages using @code{hg-fetch}.  It works in the same way as @code{git-version}.
fr: Renvoie la chaîne de version pour les paquets qui utilisent @code{hg-fetch}. Cela fonctionne de la même manière que @code{git-fetch}.

note: type: cindex
en: package description
fr: description du paquet

note: type: cindex
en: package synopsis
fr: résumé du paquet

note: type: Plain text
en: As we have seen before, each package in GNU@tie{}Guix includes a synopsis and a description (@pxref{Defining Packages}).  Synopses and descriptions are important: They are what @command{guix package --search} searches, and a crucial piece of information to help users determine whether a given package suits their needs.  Consequently, packagers should pay attention to what goes into them.
fr: Comme nous l'avons vu avant, chaque paquet dans GNU@tie{}Guix contient un résumé et une description (@pxref{Defining Packages}).  Les résumés et les descriptions sont importants : ce sont eux que recherche @command{guix package --search}, et c'est une source d'informations cruciale pour aider les utilisateur·rices à déterminer si un paquet donné correspond à leurs besoins.  En conséquence, il convient de prêter attention à leur contenu lorsqu'on travaille sur un paquet.

note: type: Plain text
en: Synopses must start with a capital letter and must not end with a period.  They must not start with ``a'' or ``the'', which usually does not bring anything; for instance, prefer ``File-frobbing tool'' over ``A tool that frobs files''.  The synopsis should say what the package is---e.g., ``Core GNU utilities (file, text, shell)''---or what it is used for---e.g., the synopsis for GNU@tie{}grep is ``Print lines matching a pattern''.
fr: Les résumés doivent commencer par une lettre capitale et ne doit pas finir par un point.  Ils ne doivent pas commencer par « a » ou « the » (« un » ou « le/la »), ce qui n'apporte généralement rien ; par exemple, préférez « File-frobbing tool » (« Outil de frobage de fichier ») à « A tool that frobs file » (« Un outil qui frobe les fichiers »).  Le résumé devrait dire ce que le paquet est — p.@: ex.@: « Utilitaire du cœur de GNU (fichier, text, shell) » — ou ce à quoi il sert — p.@: ex.@: le résumé de grep est « Affiche des lignes correspondant à un motif ».

note: type: Plain text
en: Keep in mind that the synopsis must be meaningful for a very wide audience.  For example, ``Manipulate alignments in the SAM format'' might make sense for a seasoned bioinformatics researcher, but might be fairly unhelpful or even misleading to a non-specialized audience.  It is a good idea to come up with a synopsis that gives an idea of the application domain of the package.  In this example, this might give something like ``Manipulate nucleotide sequence alignments'', which hopefully gives the user a better idea of whether this is what they are looking for.
fr: Gardez à l'esprit que le résumé doit avoir du sens pour un large public.  Par exemple « Manipulation d'alignements au format SAM » peut avoir du sens pour un bioinformaticien chevronné, mais n'aidera pas ou pourra perdre une audience de non-spécialistes.  C'est une bonne idée de créer un résumé qui donne une idée du domaine d'application du paquet.  Dans cet exemple, cela donnerait « Manipulation d'alignements de séquences de nucléotides », ce qui devrait donner une meilleure idée à la personne qui le lit pour savoir si c'est ce qu'elle recherche.

note: type: Plain text
en: Descriptions should take between five and ten lines.  Use full sentences, and avoid using acronyms without first introducing them.  Please avoid marketing phrases such as ``world-leading'', ``industrial-strength'', and ``next-generation'', and avoid superlatives like ``the most advanced''---they are not helpful to users looking for a package and may even sound suspicious.  Instead, try to be factual, mentioning use cases and features.
fr: Les descriptions devraient faire entre cinq et dix lignes.  Utilisez des phrases complètes, et évitez d'utiliser des acronymes sans les introduire d'abord.  Évitez les expressions commerciales comme « world-leading », « industrial-strength » et « next-generation » et évitez les superlatifs comme « the most advanced » — ils ne sont pas utiles aux personnes qui cherchent un paquet et semblent même un peu suspects.  À la place, essayez d'être factuels, en mentionnant les cas d'utilisation et les fonctionnalités.

note: type: cindex
en: Texinfo markup, in package descriptions
fr: Balisage texinfo, dans les descriptions de paquets

note: type: Plain text
en: Descriptions can include Texinfo markup, which is useful to introduce ornaments such as @code{@@code} or @code{@@dfn}, bullet lists, or hyperlinks (@pxref{Overview,,, texinfo, GNU Texinfo}).  However you should be careful when using some characters for example @samp{@@} and curly braces which are the basic special characters in Texinfo (@pxref{Special Characters,,, texinfo, GNU Texinfo}).  User interfaces such as @command{guix show} take care of rendering it appropriately.
fr: Les descriptions peuvent inclure du balisage Texinfo, ce qui est utile pour introduire des ornements comme @code{@@code} ou @code{@@dfn}, des listes à points ou des hyperliens (@pxref{Overview,,, texinfo, GNU Texinfo}).  Cependant soyez prudents lorsque vous utilisez certains symboles, par exemple @samp{@@} et les accolades qui sont les caractères spéciaux de base en Texinfo (@pxref{Special Characters,,, texinfo, GNU Texinfo}).  Les commandes et outils comme @command{guix show} prennent en charge le rendu.

note: type: Plain text
en: Synopses and descriptions are translated by volunteers @uref{https://translate.fedoraproject.org/projects/guix/packages, at Weblate} so that as many users as possible can read them in their native language.  User interfaces search them and display them in the language specified by the current locale.
fr: Les résumés et les descriptions sont traduits par des volontaires @uref{https://translate.fedoraproject.org/projects/guix/packages, sur Weblate} pour que le plus de personnes possible puissent les lire dans leur langue natale.  Les interfaces les recherchent et les affichent dans la langue spécifiée par le paramètre de régionalisation actuel.

note: type: Plain text
en: To allow @command{xgettext} to extract them as translatable strings, synopses and descriptions @emph{must be literal strings}.  This means that you cannot use @code{string-append} or @code{format} to construct these strings:
fr: Pour permettre à @command{xgettext} de les extraire comme des chaînes traduisibles, les résumés et les descriptions @emph{doivent être des chaînes litérales}.  Cela signifie que vous ne pouvez pas utiliser @code{string-append} ou @code{format} pour construire ces chaînes :

note: type: lisp
en: (package
      ;; @dots{}
      (synopsis "This is translatable")
      (description (string-append "This is " "*not*" " translatable.")))
fr: (package
      ;; @dots{}
      (synopsis "Ceci est traduisible")
      (description (string-append "Ceci n'est " "*pas*" " traduisible.")))

note: type: Plain text
en: Translation is a lot of work so, as a packager, please pay even more attention to your synopses and descriptions as every change may entail additional work for translators.  In order to help them, it is possible to make recommendations or instructions visible to them by inserting special comments like this (@pxref{xgettext Invocation,,, gettext, GNU Gettext}):
fr: La traduction demande beaucoup de travail, faites donc d'autant plus attention à vos résumés et descriptions lorsque vous développez un paquet car chaque changement peut demander du de travail de la part des traducteur·rices.  Pour les aider, il est possible de donner des recommandations ou des instructions qu'ils et elles pourront voir en insérant des commentaires spéciaux comme ceci (@pxref{xgettext Invocation,,, gettext, GNU Gettext}) :

note: type: cindex
en: snippets, when to use
fr: substituts, quand les utiliser

note: type: Plain text
en: The boundary between using an origin snippet versus a build phase to modify the sources of a package can be elusive.  Origin snippets are typically used to remove unwanted files such as bundled libraries, nonfree sources, or to apply simple substitutions.  The source derived from an origin should produce a source that can be used to build the package on any system that the upstream package supports (i.e., act as the corresponding source).  In particular, origin snippets must not embed store items in the sources; such patching should rather be done using build phases.  Refer to the @code{origin} record documentation for more information (@pxref{origin Reference}).
fr: La différence entre l'utilisation d'un bout de code (snippet) dans origin et une phase de construction pour modifier les sources d'un paquet peut être particulièrement subtile. Les bouts de code dans origin sont en général utilisés pour supprimer des fichiers indésirables, comme des bibliothèques incluses, des sources non libres ou pour appliquer de simples substitutions. La source dérivée d'un objet origin devrait produire une source qui peut être utilisée pour construire le paquet sur n'importe quel système pris en charge par le paquet en amont (c.-à-d.@:, être la source correspondante). En particulier, les bouts de code dans origin ne doivent pas inclure d'éléments du dépôt dans les sources ; de telles corrections devraient plutôt être faites avec une phase de construction. Référez-vous à la documentation sur l'enregistrement @code{origin} pour plus d'information (@pxref{origin Reference}).

note: type: cindex
en: emacs, packaging
fr: emacs, création de paquets

note: type: cindex
en: elisp, packaging
fr: elips, création de paquets

note: type: Plain text
en: Emacs packages should preferably use the Emacs build system (@pxref{emacs-build-system}), for uniformity and the benefits provided by its build phases, such as the auto-generation of the autoloads file and the byte compilation of the sources.  Because there is no standardized way to run a test suite for Emacs packages, tests are disabled by default.  When a test suite is available, it should be enabled by setting the @code{#:tests?} argument to @code{#true}.  By default, the command to run the test is @command{make check}, but any command can be specified via the @code{#:test-command} argument.  The @code{#:test-command} argument expects a list containing a command and its arguments, to be invoked during the @code{check} phase.
fr: Les paquets Emacs devraient plutôt utiliser le système de construction Emacs (@pxref{emacs-build-system}), pour l'uniformité et les bénéfices apportés par ses phases de construction, comme la génération automatique du fichier autoloads et la compilation des sources. Comme il n'y a pas de manière standardisée de lancer une suite de tests pour les paquets Emacs, les tests sont désactivés par défaut. Lorsqu'une suite de tests est disponible, elle devrait être activée en mettant l'argument @code{#:tests?} à @code{#true}. Par défaut, la commande pour lancer les tests est @command{make check}, mais on peut spécifier une autre commande via l'argument @code{#:test-command}. L'argument @code{#:test-command} attend une liste contenant une commande et ses arguments, à invoquer pendant la phase @code{check}.

note: type: Plain text
en: The Elisp dependencies of Emacs packages are typically provided as @code{propagated-inputs} when required at run time.  As for other packages, build or test dependencies should be specified as @code{native-inputs}.
fr: Les dépendances Elisp des paquets Emacs sont en général fournie dans @code{propagated-inputs} lorsqu'elles sont requises à l'exécution. Comme pour les autres paquets, les dépendances de test et de construction doivent être spécifiées dans @code{native-inputs}.

note: type: Plain text
en: Emacs packages sometimes depend on resources directories that should be installed along the Elisp files.  The @code{#:include} argument can be used for that purpose, by specifying a list of regexps to match.  The best practice when using the @code{#:include} argument is to extend rather than override its default value (accessible via the @code{%default-include} variable).  As an example, a yasnippet extension package typically include a @file{snippets} directory, which could be copied to the installation directory using:
fr: Les paquets Emacs dépendent parfois de répertoires de ressources qui devraient être installés avec les fichiers Elisp. L'argument @code{#:include} peut être utilisé pour cela, en spécifiant une liste d'expression régulières. La bonne pratique pour utiliser l'argument @code{#:include} est d'étendre plutôt que de remplacer sa valeur par défaut (accessible via la variable @code{%default-include}). Par exemple, un paquet d'extension yasnippet inclut en général un répertoire @file{snippets}, qui pourrait être copié vers le répertoire d'installation avec :

note: type: Plain text
en: When encountering problems, it is wise to check for the presence of the @code{Package-Requires} extension header in the package main source file, and whether any dependencies and their versions listed therein are satisfied.
fr: Lorsque vous rencontrez des problèmes, il est utile de vérifier la présence de l'en-tête d'extension @code{Package-Requires} dans le fichier source principal du paquet, et si les dépendances et leurs versions qui y sont listées sont satisfaites.

note: type: Plain text
en: We currently package Python 2 and Python 3, under the Scheme variable names @code{python-2} and @code{python} as explained in @ref{Version Numbers}.  To avoid confusion and naming clashes with other programming languages, it seems desirable that the name of a package for a Python module contains the word @code{python}.
fr: Nous incluons actuellement Python 2 et Python 3, sous les noms de variables Scheme @code{python-2} et @code{python} comme expliqué dans @ref{Version Numbers}.  Pour éviter la confusion et les problèmes de noms avec d'autres langages de programmation, il semble désirable que le nom d'un paquet pour un module Python contienne le mot @code{python}.

note: type: Plain text
en: Some modules are compatible with only one version of Python, others with both.  If the package Foo is compiled with Python 3, we name it @code{python-foo}.  If it is compiled with Python 2, we name it @code{python2-foo}.  Packages should be added when they are necessary; we don't add Python 2 variants of the package unless we are going to use them.
fr: Certains modules ne sont compatibles qu'avec une version de Python, d'autres avec les deux.  Si le paquet Toto ne compile qu'avec Python 3, on le nomme @code{python-toto}.  S'il est compilé avec Python 2, on le nome @code{python2-toto}.  Les paquets ne devraient être ajoutés que lorsqu'ils sont nécessaires ; nous n'ajoutons pas les variantes Python 2 du paquet à moins qu'on ne les utilise ensuite.

note: type: Plain text
en: If a project already contains the word @code{python}, we drop this; for instance, the module python-dateutil is packaged under the names @code{python-dateutil} and @code{python2-dateutil}.  If the project name starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as described above.
fr: Si un projet contient déjà le mot @code{python}, on l'enlève, par exemple le module python-dateutil est packagé sous les noms @code{python-dateutil} et @code{python2-dateutil}.  Si le nom du projet commence par @code{py} (p.@: ex.@: @code{pytz}), on le garde et on le préfixe comme décrit ci-dessus.

note: type: quotation
en: Currently there are two different build systems for Python packages in Guix: @var{python-build-system} and @var{pyproject-build-system}.  For the longest time, Python packages were built from an informally specified @file{setup.py} file.  That worked amazingly well, considering Python's success, but was difficult to build tooling around.  As a result, a host of alternative build systems emerged and the community eventually settled on a @url{https://peps.python.org/pep-0517/, formal standard} for specifying build requirements.  @var{pyproject-build-system} is Guix's implementation of this standard.  It is considered ``experimental'' in that it does not yet support all the various PEP-517 @emph{build backends}, but you are encouraged to try it for new Python packages and report any problems.  It will eventually be deprecated and merged into @var{python-build-system}.
fr: Il y a actuellement deux systèmes de construction différents pour les paquets Python dans Guix : @var{python-build-system} et @var{pyproject-build-system}. Pendant longtemps, les paquets Python étaient construits à partir d'un fichier @file{setup.py} à la spécification informelle. Cela fonctionnait très bien, étant donné le succès de Python, mais il était difficile de construire des outils par dessus. En conséquence, de nombreuses alternatives ont émergé et la communauté a finalement retenu un @url{https://peps.python.org/pep-0517, standard formel} pour spécifier les prérequis de construction. @var{pyproject-build-system} est l'implémentation de ce standard par Guix. Il est considéré comme « expérimental » dans le sens où il ne prend pas encore en charge les divers @emph{moteurs de construction} de PEP-517, mais nous vous encourageons à l'essayer pour les nouveaux paquets Python et à rapporter tout problème que vous rencontreriez. Il finira par être rendu obsolète et fusionné dans @var{python-build-system}.

note: type: subsubsection
en: Specifying Dependencies
fr: Spécifier les dépendances

note: type: cindex
en: inputs, for Python packages
fr: entrées, pour les paquets Python

note: type: Plain text
en: Dependency information for Python packages is usually available in the package source tree, with varying degrees of accuracy: in the @file{pyproject.toml} file, the @file{setup.py} file, in @file{requirements.txt}, or in @file{tox.ini} (the latter mostly for test dependencies).
fr: Les informations de dépendances pour les paquets Python se trouvent généralement dans l'arborescence des source du paquet, avec plus ou moins de précision : dans le fichier @file{pyproject.toml}, le fichier @file{setup.py}, dans @file{requirements.txt} ou dans @file{tox.ini} (ce dernier surtout pour les dépendances de test).

note: type: Plain text
en: Your mission, when writing a recipe for a Python package, is to map these dependencies to the appropriate type of ``input'' (@pxref{package Reference, inputs}).  Although the @code{pypi} importer normally does a good job (@pxref{Invoking guix import}), you may want to check the following check list to determine which dependency goes where.
fr: Votre mission, lorsque vous écrivez une recette pour un paquet Python, est de faire correspondre ces dépendances au bon type « d'entrée » (@pxref{package Reference, inputs}).  Bien que l'importeur @code{pypi} fasse du bon boulot (@pxref{Invoking guix import}), vous devriez vérifier la liste suivant pour déterminer où va telle dépendance.

note: type: itemize
en: We currently package Python with @code{setuptools} and @code{pip} installed per default.  This is about to change, and users are encouraged to use @code{python-toolchain} if they want a build environment for Python.
fr: Nous empaquetons Python avec @code{setuptools} et @code{pip} installé par défaut. Cela va changer, et nous vous encourageons à utiliser @code{python-toolchain} si vous voulez un environnement de construction pour Python.

note: type: itemize
en: @command{guix lint} will warn if @code{setuptools} or @code{pip} are added as native-inputs because they are generally not necessary.
fr: @command{guix lint} vous avertira si @code{setuptools} ou @code{pip} sont ajoutés en entrées natives car ils ne sont en général pas nécessaires.

note: type: itemize
en: Python dependencies required at run time go into @code{propagated-inputs}.  They are typically defined with the @code{install_requires} keyword in @file{setup.py}, or in the @file{requirements.txt} file.
fr: Les dépendances Python requises à l'exécutions vont dans @code{propagated-inputs}.  Elles sont typiquement définies dans le mot-clef @code{install_requires} dans @file{setup.py} ou dans le fichier @file{requirements.txt}.

note: type: itemize
en: Python packages required only at build time---e.g., those listed under @code{build-system.requires} in @file{pyproject.toml} or with the @code{setup_requires} keyword in @file{setup.py}---or dependencies only for testing---e.g., those in @code{tests_require} or @file{tox.ini}---go into @code{native-inputs}.  The rationale is that (1) they do not need to be propagated because they are not needed at run time, and (2) in a cross-compilation context, it's the ``native'' input that we'd want.
fr: Les paquets Python requis uniquement à la construction — p.@: ex.@: ceux listés dans @code{build-system.requires} dans @file{pyproject.toml} ou dans le mot-clef @code{setup_requires} de @file{setup.py} — ou les dépendances seulement pour les tests — p.@: ex.@: ceux dans @code{tests_require} — vont dans @code{native-inputs}.  La raison est qu'ils n'ont pas besoin d'être propagés car ils ne sont pas requis à l'exécution et dans le cas d'une compilation croisée, c'est l'entrée « native » qu'il nous faut.

note: type: itemize
en: Examples are the @code{pytest}, @code{mock}, and @code{nose} test frameworks.  Of course if any of these packages is also required at run-time, it needs to go to @code{propagated-inputs}.
fr: Les cadriciels de tests @code{pytest}, @code{mock} et @code{nose} sont des exemples.  Bien sûr si l'un de ces paquets est aussi requis à l'exécution, il doit aller dans @code{propagated-inputs}.

note: type: itemize
en: Anything that does not fall in the previous categories goes to @code{inputs}, for example programs or C libraries required for building Python packages containing C extensions.
fr: Tout ce qui ne tombe pas dans les catégories précédentes va dans @code{inputs}, par exemple des programmes pour des bibliothèques C requises pour construire des paquets Python avec des extensions C.

note: type: itemize
en: If a Python package has optional dependencies (@code{extras_require}), it is up to you to decide whether to add them or not, based on their usefulness/overhead ratio (@pxref{Submitting Patches, @command{guix size}}).
fr: Si un paquet Python a des dépendances facultatives (@code{extras_require}), c'est à vous de décider de les ajouter ou non, en fonction du ratio entre utilité et complexité (@pxref{Submitting Patches, @command{guix size}}).

note: type: Plain text
en: Perl programs standing for themselves are named as any other package, using the lowercase upstream name.  For Perl packages containing a single class, we use the lowercase class name, replace all occurrences of @code{::} by dashes and prepend the prefix @code{perl-}.  So the class @code{XML::Parser} becomes @code{perl-xml-parser}.  Modules containing several classes keep their lowercase upstream name and are also prepended by @code{perl-}.  Such modules tend to have the word @code{perl} somewhere in their name, which gets dropped in favor of the prefix.  For instance, @code{libwww-perl} becomes @code{perl-libwww}.
fr: Les programmes Perl utiles en soit sont nommés comme les autres paquets, avec le nom amont en minuscule.  Pour les paquets Perl contenant une seule classe, nous utilisons le nom de la classe en minuscule, en remplaçant les occurrences de @code{::} par des tirets et en préfixant le tout par @code{perl-}.  Donc la classe @code{XML::Parser} devient @code{perl-xml-parser}.  Les modules contenant plusieurs classes gardent leur nom amont en minuscule et sont aussi préfixés par @code{perl-}.  Ces modules tendent à avoir le mot @code{perl} quelque part dans leur nom, que nous supprimons en faveur du préfixe.  Par exemple, @code{libwww-perl} devient @code{perl-libwww}.

note: type: Plain text
en: Java programs standing for themselves are named as any other package, using the lowercase upstream name.
fr: Le programmes Java utiles en soit sont nommés comme les autres paquets, avec le nom amont en minuscule.

note: type: Plain text
en: To avoid confusion and naming clashes with other programming languages, it is desirable that the name of a package for a Java package is prefixed with @code{java-}.  If a project already contains the word @code{java}, we drop this; for instance, the package @code{ngsjava} is packaged under the name @code{java-ngs}.
fr: Pour éviter les confusions et les problèmes de nom avec d'autres langages de programmation, il est désirable que le nom d'un paquet Java soit préfixé par @code{java-}.  Si un projet contient déjà le mot @code{java}, nous le supprimons, par exemple le paquet @code{ngsjava} est empaqueté sous le nom @code{java-ngs}.

note: type: Plain text
en: For Java packages containing a single class or a small class hierarchy, we use the lowercase class name, replace all occurrences of @code{.} by dashes and prepend the prefix @code{java-}.  So the class @code{apache.commons.cli} becomes package @code{java-apache-commons-cli}.
fr: Pour les paquets java contenant une seul classe ou une petite hiérarchie de classes, nous utilisons le nom de la classe en minuscule, en remplaçant les occurrences de @code{.} par des tirets et en préfixant le tout par @code{java-}.  Donc la classe @code{apache.commons.cli} devient @code{java-apache-commons-cli}.

note: type: Plain text
en: Rust programs standing for themselves are named as any other package, using the lowercase upstream name.
fr: Le programmes Rust utiles en soit sont nommés comme les autres paquets, avec le nom amont en minuscule.

note: type: Plain text
en: To prevent namespace collisions we prefix all other Rust packages with the @code{rust-} prefix.  The name should be changed to lowercase as appropriate and dashes should remain in place.
fr: Pour éviter des collisions de noms nous préfixons les autres paquets avec le préfixe @code{rust-}.  Vous devrez changer le nom en minuscule et garder les tirets en place.

note: type: Plain text
en: In the rust ecosystem it is common for multiple incompatible versions of a package to be used at any given time, so all package definitions should have a versioned suffix.  The versioned suffix is the left-most non-zero digit (and any leading zeros, of course).  This follows the ``caret'' version scheme intended by Cargo.  Examples@: @code{rust-clap-2}, @code{rust-rand-0.6}.
fr: Dans l'écosystème rust il est courant d'avoir plusieurs versions incompatibles d'un paquet utilisées en même temps, donc toutes les définitions des paquets devraient avoir un suffixe de version. Le suffixe de version est le nombre le plus à gauche qui n'est pas un zéro (et tous les zéros précédents, évidemment). Cela suit les conventions de version « caret » de Cargo. Par exemple @code{rust-clap-2}, @code{rust-rand-0.6}.

note: type: Plain text
en: Because of the difficulty in reusing rust packages as pre-compiled inputs for other packages the Cargo build system (@pxref{Build Systems, @code{cargo-build-system}}) presents the @code{#:cargo-inputs} and @code{cargo-development-inputs} keywords as build system arguments.  It would be helpful to think of these as similar to @code{propagated-inputs} and @code{native-inputs}.  Rust @code{dependencies} and @code{build-dependencies} should go in @code{#:cargo-inputs}, and @code{dev-dependencies} should go in @code{#:cargo-development-inputs}.  If a Rust package links to other libraries then the standard placement in @code{inputs} and the like should be used.
fr: À cause de la difficulté à réutiliser des paquets rust en entrées précompilées pour d'autres paquets, le systèmes de construction Cargo (@pxref{Build Systems, @code{cargo-build-system}}) présente les mots-clefs @code{#:cargo-inputs} et @code{cargo-development-inputs} en argument du système de construction.  Vous pouvez y penser comme les équivalents de @code{propagated-inputs} et @code{native-inputs}.  Les @code{dependencies} et @code{build-dependencies} de Rust devraient aller dans @code{#:cargo-inputs} et @code{dev-dependencies} dans @code{#:cargo-development-inputs}.  Si un paquet Rust se lie à d'autres bibliothèques alors vous devriez utiliser l'emplacement @code{inputs} standard et compagnie.

note: type: Plain text
en: Care should be taken to ensure the correct version of dependencies are used; to this end we try to refrain from skipping the tests or using @code{#:skip-build?} when possible.  Of course this is not always possible, as the package may be developed for a different Operating System, depend on features from the Nightly Rust compiler, or the test suite may have atrophied since it was released.
fr: Vous devriez faire attention à vous assurer que la bonne version des dépendances est utilisée ; pour cela nous essayons d'éviter de passer les tests ou d'utiliser @code{#:skip-build?} lorsque c'est possible.  Bien sûr ce n'est pas toujours possible, comme le paquet peut être développé sur un autre système d'exploitation, dépendre d'une fonctionnalité du compilateur Rust Nightly ou la suite de test atrophiée depuis la sortie.

note: type: Plain text
en: Elm applications can be named like other software: their names need not mention Elm.
fr: Les applications Elm peuvent être nommée comme les autres logiciels : leur nom n'a pas besoin de mentionner Elm.

note: type: Plain text
en: Packages in the Elm sense (see @code{elm-build-system} under @ref{Build Systems}) are required use names of the format @var{author}@code{/}@var{project}, where both the @var{author} and the @var{project} may contain hyphens internally, and the @var{author} sometimes contains uppercase letters.
fr: Les paquets au sens de Elm (voir @code{elm-build-system} dans @ref{Build Systems}) doivent utiliser un nom au format @var{auteur}@code{/}@var{projet}, où à la fois l'@var{auteur} et le @var{projet} peuvent contenir des tirets, et @var{auteur} contient parfois des lettres majuscules.

note: type: Plain text
en: To form the Guix package name from the upstream name, we follow a convention similar to Python packages (@pxref{Python Modules}), adding an @code{elm-} prefix unless the name would already begin with @code{elm-}.
fr: Pour former le nom de paquet Guix à partir du nom en amont, nous suivons une convention similaire à celle des paquets Python (@pxref{Python Modules}), en ajoutant le préfixe @code{elm-} à moins que le nom ne commence déjà par @code{elm-}.

note: type: Plain text
en: In many cases we can reconstruct an Elm package's upstream name heuristically, but, since conversion to a Guix-style name involves a loss of information, this is not always possible.  Care should be taken to add the @code{'upstream-name} property when necessary so that @samp{guix import elm} will work correctly (@pxref{Invoking guix import}). The most notable scenarios when explicitly specifying the upstream name is necessary are:
fr: Dans la plupart des cas on peut reconstruire le nom d'un paquet Elm en amont avec une heuristique, mais, comme la conversion vers le nom Guix implique une perte d'information, cela n'est pas toujours possible. Vous devrez faire attention à ajouter la propriété @code{'upstream-name} si nécessaire pour que @samp{guix import elm} fonctionne correctement (@pxref{Invoking guix import}). Les scénarios les plus importants où il faut spécifier explicitement le nom en amont sont :

note: type: enumerate
en: When the @var{author} is @code{elm} and the @var{project} contains one or more hyphens, as with @code{elm/virtual-dom}; and
fr: Lorsque l'@var{auteur} est @code{elm} et que le @var{projet} contient une ou plusieurs tirets, comme @code{elm/virtual-dom} et

note: type: enumerate
en: When the @var{author} contains hyphens or uppercase letters, as with @code{Elm-Canvas/raster-shapes}---unless the @var{author} is @code{elm-explorations}, which is handled as a special case, so packages like @code{elm-explorations/markdown} do @emph{not} need to use the @code{'upstream-name} property.
fr: Lorsque l'@var{auteur} contient des tirets ou des lettres majuscule, comme @code{Elm-Canvas/raster-shapes} --- à moins que l'@var{auteur} ne soit @code{elm-explorations}, qui est géré à part, donc un paquet comme @code{elm-explorations/markdown} n'a @emph{pas} besoin d'utiliser la propriété @code{'upstream-name}.

note: type: Plain text
en: The module @code{(guix build-system elm)} provides the following utilities for working with names and related conventions:
fr: Le module @code{(guix build-system elm)} fournit les utilitaires suivants pour travailler avec les noms et les conventions associées :

note: type: deffn
en: {Scheme procedure} elm-package-origin @var{elm-name} @var{version} @
fr: {Procédure Scheme} elm-package-origin @var{elm-name} @var{version} @

note: type: deffn
en: @var{hash} Returns a Git origin using the repository naming and tagging regime required for a published Elm package with the upstream name @var{elm-name} at version @var{version} with sha256 checksum @var{hash}.
fr: @var{hash}
    Renvoie une origine Git en utilisant le nom et les tags du dépôts, requis pour publier un paquet Elm avec le nom amont @var{elm-name} à la version @var{version} avec la somme de contrôle sha256 @var{hash}.

note: type: deffn
en: For example:
fr: Par exemple :

note: type: deffn
en: {Scheme procedure} elm->package-name @var{elm-name}
fr: {Procédure Scheme} elm->package-name @var{elm-name}

note: type: deffn
en: Returns the Guix-style package name for an Elm package with upstream name @var{elm-name}.
fr: Renvoie le nom de paquet Guix pour un paquet Elm avec le nom amont @var{elm-name}.

note: type: deffn
en: Note that there is more than one possible @var{elm-name} for which @code{elm->package-name} will produce a given result.
fr: Remarquez qu'il y a plus d'un @var{elm-name} possible pour un résultat de @code{elm->package-name} donné.

note: type: deffn
en: {Scheme procedure} guix-package->elm-name @var{package}
fr: {Procédure Scheme} guix-package->elm-name @var{paquet}

note: type: deffn
en: Given an Elm @var{package}, returns the possibly-inferred upstream name, or @code{#f} the upstream name is not specified via the @code{'upstream-name} property and can not be inferred by @code{infer-elm-package-name}.
fr: Étant donné un @var{paquet} Elm, renvoie le nom amont éventuellement inféré, ou @code{#f} si le nom amont n'est pas spécifié via la propriété @code{'upstream-name} et qu'il ne peut pas être deviné par @code{infer-elm-package-name}.

note: type: deffn
en: {Scheme procedure} infer-elm-package-name @var{guix-name}
fr: {Procédure Scheme} inferior-elm-package-name @var{guix-name}

note: type: deffn
en: Given the @var{guix-name} of an Elm package, returns the inferred upstream name, or @code{#f} if the upstream name can't be inferred.  If the result is not @code{#f}, supplying it to @code{elm->package-name} would produce @var{guix-name}.
fr: Étant donné le @var{guix-name} d'un paquet Elm, renvoie le nom amont inféré, ou @code{#f} si le nom amont ne peut pas être inféré. Si le résultat n'est pas @code{#f}, l'envoyer à @code{elm->package-name} produirait @var{guix-name}.

note: type: cindex
en: fonts
fr: polices

note: type: Plain text
en: For fonts that are in general not installed by a user for typesetting purposes, or that are distributed as part of a larger software package, we rely on the general packaging rules for software; for instance, this applies to the fonts delivered as part of the X.Org system or fonts that are part of TeX Live.
fr: Pour les polices qui ne sont en général pas installées pour être utilisées pour du traitement de texte, ou qui sont distribuées en tant que partie d'un paquet logiciel plus gros, nous nous appuyons sur les règles générales pour les logiciels ; par exemple, cela s'applique aux polices livrées avec le système X.Org ou les polices qui font partie de TeX Live.

note: type: Plain text
en: To make it easier for a user to search for fonts, names for other packages containing only fonts are constructed as follows, independently of the upstream package name.
fr: Pour rendre plus facile la recherche par l'utilisatrice ou l'utilisateur, les noms des autres paquets contenant seulement des polices sont construits ainsi, indépendamment du nom du paquet en amont.

note: type: Plain text
en: The name of a package containing only one font family starts with @code{font-}; it is followed by the foundry name and a dash @code{-} if the foundry is known, and the font family name, in which spaces are replaced by dashes (and as usual, all upper case letters are transformed to lower case).  For example, the Gentium font family by SIL is packaged under the name @code{font-sil-gentium}.
fr: Le nom d'un paquet contenant une unique famille de polices commence par @code{font-} ; il est suivi du nom du fondeur et d'un tiret @code{-} si le fondeur est connu, et du nom de la police, dont les espaces sont remplacés par des tirets (et comme d'habitude, toutes les lettres majuscules sont transformées en minuscules).  Par exemple, la famille de polices Gentium de SIL est empaqueté sous le nom @code{font-sil-gentium}.

note: type: Plain text
en: For a package containing several font families, the name of the collection is used in the place of the font family name.  For instance, the Liberation fonts consist of three families, Liberation Sans, Liberation Serif and Liberation Mono.  These could be packaged separately under the names @code{font-liberation-sans} and so on; but as they are distributed together under a common name, we prefer to package them together as @code{font-liberation}.
fr: Pour un paquet contenant plusieurs familles de polices, le nom de la collection est utilisée à la place du nom de la famille.  Par exemple les polices Liberation consistent en trois familles, Liberation Sans, Liberation Serif et Liberation Mono.  Elles pourraient être empaquetées séparément sous les noms @code{font-liberation-sans} etc, mais comme elles sont distribuées ensemble sous un nom commun, nous préférons les empaqueter ensemble en tant que @code{font-liberation}.

note: type: Plain text
en: In the case where several formats of the same font family or font collection are packaged separately, a short form of the format, prepended by a dash, is added to the package name.  We use @code{-ttf} for TrueType fonts, @code{-otf} for OpenType fonts and @code{-type1} for PostScript Type 1 fonts.
fr: Dans le cas où plusieurs formats de la même famille ou collection sont empaquetés séparément, une forme courte du format, préfixé d'un tiret est ajouté au nom du paquet.  Nous utilisont @code{-ttf} pour les polices TrueType, @code{-otf} pour les polices OpenType et @code{-type1} pour les polices Type 1 de PostScript.

note: type: Plain text
en: In general our code follows the GNU Coding Standards (@pxref{Top,,, standards, GNU Coding Standards}).  However, they do not say much about Scheme, so here are some additional rules.
fr: En général notre code suit le Standard de Code GNU (@pxref{Top,,, standards, GNU Coding Standards}).  Cependant, il ne parle pas beaucoup de Scheme, donc voici quelques règles supplémentaires.

note: type: subsection
en: Programming Paradigm
fr: Paradigme de programmation

note: type: menuentry
en: How to compose your elements.
fr: Comment composer vos éléments.

note: type: menuentry
en: Where to store your code?
fr: Où stocker votre code ?

note: type: subsection
en: Data Types and Pattern Matching
fr: Types de données et reconnaissance de motif

note: type: menuentry
en: Implementing data structures.
fr: Implémenter des structures de données.

note: type: subsection
en: Formatting Code
fr: Formatage du code

note: type: menuentry
en: Writing conventions.
fr: Conventions d'écriture.

note: type: Plain text
en: Scheme code in Guix is written in a purely functional style.  One exception is code that involves input/output, and procedures that implement low-level concepts, such as the @code{memoize} procedure.
fr: Le code Scheme dans Guix est écrit dans un style purement fonctionnel.  Le code qui s'occupe des entrées-sorties est une exception ainsi que les procédures qui implémentent des concepts bas-niveau comme la procédure @code{memoize}.

note: type: Plain text
en: Guile modules that are meant to be used on the builder side must live in the @code{(guix build @dots{})} name space.  They must not refer to other Guix or GNU modules.  However, it is OK for a ``host-side'' module to use a build-side module.
fr: Les modules Guile qui sont sensés être utilisés du côté de la construction doivent se trouver dans l'espace de nom @code{(guix build @dots{})}.  Ils ne doivent pas se référer à d'autres modules Guix ou GNU@.  Cependant il est correct pour un module « côté hôte » de dépendre d'un module coté construction.

note: type: Plain text
en: Modules that deal with the broader GNU system should be in the @code{(gnu @dots{})} name space rather than @code{(guix @dots{})}.
fr: Les modules qui s'occupent du système GNU général devraient se trouver dans l'espace de nom @code{(gnu @dots{})} plutôt que @code{(guix @dots{})}.

note: type: Plain text
en: The tendency in classical Lisp is to use lists to represent everything, and then to browse them ``by hand'' using @code{car}, @code{cdr}, @code{cadr}, and co.  There are several problems with that style, notably the fact that it is hard to read, error-prone, and a hindrance to proper type error reports.
fr: La tendance en Lisp classique est d'utiliser des listes pour tout représenter et de naviguer dedans « à la main ( avec @code{car}, @code{cdr}, @code{cadr} et compagnie.  Il y a plusieurs problèmes avec ce style, notamment le fait qu'il soit dur à lire, source d'erreur et un obstacle aux rapports d'erreur bien typés.

note: type: cindex
en: pattern matching
fr: reconnaissance de motif

note: type: Plain text
en: Guix code should define appropriate data types (for instance, using @code{define-record-type*}) rather than abuse lists.  In addition, it should use pattern matching, via Guile’s @code{(ice-9 match)} module, especially when matching lists (@pxref{Pattern Matching,,, guile, GNU Guile Reference Manual}); pattern matching for records is better done using @code{match-record} from @code{(guix records)}, which, unlike @code{match}, verifies field names at macro-expansion time.
fr: Le code de Guix devrait définir des types de données appropriées (par exemple, avec @code{define-record-type*}) plutôt que d'abuser des listes.  En plus, il devrait utiliser la recherche de motifs, via le module Guile @code{(ice-9 match)}, surtout pour rechercher dans des listes (@pxref{Pattern Matching,,, guile, GNU Guile Reference Manual}) : la reconnaissance de motif pour les enregistrements se fait mieux avec @code{match-record} de @code{(guix records)}, qui contrairement à @code{match}, vérifie le nom des champs à l'expansion des macros.

note: type: cindex
en: formatting code
fr: formater le code

note: type: cindex
en: coding style
fr: style de code

note: type: Plain text
en: When writing Scheme code, we follow common wisdom among Scheme programmers.  In general, we follow the @url{https://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp Style Rules}.  This document happens to describe the conventions mostly used in Guile’s code too.  It is very thoughtful and well written, so please do read it.
fr: Lorsque nous écrivons du code Scheme, nous suivons la sagesse commune aux programmeurs Scheme.  En général, nous suivons les @url{https://mumble.net/~campbell/scheme/style.txt, règles de style de Riastradh}.  Ce document décrit aussi les conventions utilisées dans le code de Guile.  Il est bien pensé et bien écrit, alors n'hésitez pas à le lire.

note: type: Plain text
en: Some special forms introduced in Guix, such as the @code{substitute*} macro, have special indentation rules.  These are defined in the @file{.dir-locals.el} file, which Emacs automatically uses.  Also note that Emacs-Guix provides @code{guix-devel-mode} mode that indents and highlights Guix code properly (@pxref{Development,,, emacs-guix, The Emacs-Guix Reference Manual}).
fr: Certaines formes spéciales introduites dans Guix comme la macro @code{substitute*} ont des règles d'indentation spécifiques.  Elles sont définies dans le fichier @file{.dir-locals.el} qu'Emacs utilise automatiquement.  Remarquez aussi qu'Emacs-Guix fournit le mode @code{guix-devel-mode} qui indente et colore le code Guix correctement (@pxref{Development,,, emacs-guix, The Emacs-Guix Reference Manual}).

note: type: cindex
en: indentation, of code
fr: indentation, du code

note: type: cindex
en: formatting, of code
fr: formatage, du code

note: type: Plain text
en: If you do not use Emacs, please make sure to let your editor knows these rules.  To automatically indent a package definition, you can also run:
fr: Si vous n'utilisez pas Emacs, assurez-vous que votre éditeur connaisse ces règles.  Pour indenter automatiquement une définition de paquet, vous pouvez aussi lancer :

note: type: example
en: ./pre-inst-env guix style @var{package}
fr: ./pre-inst-env guix style @var{paquet}

note: type: Plain text
en: @xref{Invoking guix style}, for more information.
fr: @xref{Invoking guix style}, pour plus d'informations.

note: type: cindex
en: Vim, Scheme code editing
fr: Vim, édition de code Scheme

note: type: Plain text
en: If you are editing code with Vim, we recommend that you run @code{:set autoindent} so that your code is automatically indented as you type.  Additionally, @uref{https://www.vim.org/scripts/script.php?script_id=3998, @code{paredit.vim}} may help you deal with all these parentheses.
fr: Si vous éditez du code avec Vim, nous recommandons de lancer @code{:set autoindent} pour que votre code soit automatiquement indenté au moment où vous l'entrez.  En plus, @uref{https://www.vim.org/scripts/script.php?script_id=3998, @code{paredit.vim}} peut vous aider à gérer toutes ces parenthèses.

note: type: Plain text
en: We require all top-level procedures to carry a docstring.  This requirement can be relaxed for simple private procedures in the @code{(guix build @dots{})} name space, though.
fr: Nous demandons que toutes les procédure de premier niveau contiennent une chaîne de documentation.  Ce prérequis peut être relâché pour les procédures privées simples dans l'espace de nom @code{(guix build @dots{})} cependant.

note: type: Plain text
en: Procedures should not have more than four positional parameters.  Use keyword parameters for procedures that take more than four parameters.
fr: Les procédures ne devraient pas avoir plus de quatre paramètres positionnés. Utilisez des paramètres nommés pour les procédures qui prennent plus de quatre paramètres.

note: type: Plain text
en: Development is done using the Git distributed version control system.  Thus, access to the repository is not strictly necessary.  We welcome contributions in the form of patches as produced by @code{git format-patch} sent to the @email{guix-patches@@gnu.org} mailing list (@pxref{Submitting patches to a project,,, git, Git User Manual}).  Contributors are encouraged to take a moment to set some Git repository options (@pxref{Configuring Git}) first, which can improve the readability of patches.  Seasoned Guix developers may also want to look at the section on commit access (@pxref{Commit Access}).
fr: Le développement se fait avec le système de contrôle de version Git.  Ainsi, l'accès au dépôt n'est pas strictement nécessaire.  Nous accueillons les contributions sous forme de correctifs produits par @code{git format-patch} envoyés sur la liste de diffusion @email{guix-patches@@gnu.org} (@pxref{Submitting patches to a project,,, git, Git User Manual}). Si vous voulez contribuer, nous vous encourageons à prendre un moment pour changer quelques options du dépôt Git pour améliorer la lisibilité des correctifs avant de commencer (@pxref{Configuring Git}). Si vous avez bien expérimenté la contribution à Guix, vous pouvez aussi regarder la section sur les accès en commit (@pxref{Commit Access}).

note: type: Plain text
en: This mailing list is backed by a Debbugs instance, which allows us to keep track of submissions (@pxref{Tracking Bugs and Patches}).  Each message sent to that mailing list gets a new tracking number assigned; people can then follow up on the submission by sending email to @code{@var{ISSUE_NUMBER}@@debbugs.gnu.org}, where @var{ISSUE_NUMBER} is the tracking number (@pxref{Sending a Patch Series}).
fr: Cette liste de diffusion est gérée par une instance Debbugs, qui nous permet de suivre les soumissions.  Chaque message envoyé à cette liste se voit attribuer un nouveau numéro de suivi ; les gens peuvent ensuite répondre à cette soumission en envoyant un courriel à @code{@var{NUMÉRO_PROBLÈME}@@debbugs.gnu.org}, où @var{NUMÉRO_PROBLÈME} est le numéro de suivi (@pxref{Sending a Patch Series}).

note: type: Plain text
en: Please write commit logs in the ChangeLog format (@pxref{Change Logs,,, standards, GNU Coding Standards}); you can check the commit history for examples.
fr: Veuillez écrire les messages de commit dans le format ChangeLog (@pxref{Change Logs,,, standards, GNU Coding Standards}) ; vous pouvez regarder l'historique des commits pour trouver des exemples.

note: type: Plain text
en: Before submitting a patch that adds or modifies a package definition, please run through this check list:
fr: Avant de soumettre un correctif qui ajoute ou modifie la définition d'un paquet, veuillez vérifier cette check-list :

note: type: enumerate
en: If the authors of the packaged software provide a cryptographic signature for the release tarball, make an effort to verify the authenticity of the archive.  For a detached GPG signature file this would be done with the @code{gpg --verify} command.
fr: Si les auteurs ou autrices du paquet logiciel fournissent une signature cryptographique pour l'archive, faites un effort pour vérifier l'authenticité de l'archive.  Pour un fichier de signature GPG détaché, cela se fait avec la commande @code{gpg --verify}.

note: type: enumerate
en: Take some time to provide an adequate synopsis and description for the package.  @xref{Synopses and Descriptions}, for some guidelines.
fr: Prenez un peu de temps pour fournir un synopsis et une description adéquats pour le paquet.  @xref{Synopsis et descriptions} pour quelques lignes directrices.

note: type: enumerate
en: Run @code{guix lint @var{package}}, where @var{package} is the name of the new or modified package, and fix any errors it reports (@pxref{Invoking guix lint}).
fr: Lancez @code{guix lint @var{paquet}}, où @var{paquet} est le nom du nouveau paquet ou du paquet modifié, et corrigez les erreurs qu'il rapporte (@pxref{Invoquer guix lint}).

note: type: enumerate
en: Run @code{guix style @var{package}} to format the new package definition according to the project's conventions (@pxref{Invoking guix style}).
fr: Lancez @code{guix style @var{paquet}} pour formater la nouvelle définition du paquet en suivant les conventions du projet (@pxref{Invoking guix style}).

note: type: enumerate
en: Make sure the package builds on your platform, using @code{guix build @var{package}}.
fr: Assurez-vous que le paquet se construise sur votre plate-forme avec @code{guix build @var{paquet}}.

note: type: enumerate
en: We recommend you also try building the package on other supported platforms.  As you may not have access to actual hardware platforms, we recommend using the @code{qemu-binfmt-service-type} to emulate them.  In order to enable it, add the @code{virtualization} service module and the following service to the list of services in your @code{operating-system} configuration:
fr: Nous vous recommandons aussi d'essayer de construire le paquet sur les autres plate-formes prises en charge.  Comme vous n'avez pas forcément accès aux plate-formes matérielles, nous vous recommandons d'utiliser le @code{qemu-binfmt-service-type} pour les émuler.  Pour cela, ajoutez le module de service @code{virtualization} et le service suivant à la liste des services dans votre configuration de système d'exploitation :

note: type: enumerate
en: Then reconfigure your system.
fr: Puis reconfigurez votre système.

note: type: enumerate
en: You can then build packages for different platforms by specifying the @code{--system} option.  For example, to build the "hello" package for the armhf or aarch64 architectures, you would run the following commands, respectively:
fr: Vous pourrez ensuite construire les paquets pour différentes plate-formes en spécifiant l'option @code{--system}.  Par exemple pour construire le paquet « hello » pour les architectures armhf ou aarch64, vous devrez lancer les commandes suivantes, respectivement :

note: type: cindex
en: bundling
fr: construction groupée

note: type: enumerate
en: Make sure the package does not use bundled copies of software already available as separate packages.
fr: Assurez-vous que le paquet n'utilise pas de copie groupée d'un logiciel déjà disponible dans un paquet séparé.

note: type: enumerate
en: Sometimes, packages include copies of the source code of their dependencies as a convenience for users.  However, as a distribution, we want to make sure that such packages end up using the copy we already have in the distribution, if there is one.  This improves resource usage (the dependency is built and stored only once), and allows the distribution to make transverse changes such as applying security updates for a given software package in a single place and have them affect the whole system---something that bundled copies prevent.
fr: Parfois, les paquets incluent des copie du code source de leurs dépendances pour le confort des utilisateur·rices.  Cependant, en tant que distribution, nous voulons nous assurer que ces paquets utilisent bien les copient que nous avons déjà dans la distribution si elles existent.  Cela améliore l'utilisation des ressources (la dépendance n'est construite et stockée qu'une seule fois) et permet à la distribution de faire des changements transversaux comme appliquer des correctifs de sécurité pour un paquet donné depuis un unique emplacement et qu'ils affectent tout le système, ce qu'empêchent les copies groupées.

note: type: enumerate
en: Take a look at the profile reported by @command{guix size} (@pxref{Invoking guix size}).  This will allow you to notice references to other packages unwillingly retained.  It may also help determine whether to split the package (@pxref{Packages with Multiple Outputs}), and which optional dependencies should be used.  In particular, avoid adding @code{texlive} as a dependency: because of its extreme size, use the @code{texlive-tiny} package or @code{texlive-union} procedure instead.
fr: Regardez le profil rapporté par @command{guix size} (@pxref{Invoking guix size}).  Cela vous permettra de remarquer des références à d'autres paquets qui ont été retenus sans que vous vous y attendiez.  Il peut aussi aider à déterminer s'il faut découper le paquet (@pxref{Des paquets avec plusieurs résultats}) et quelles dépendances facultatives utiliser.  En particulier, évitez d'ajouter @code{texlive} en dépendance : à cause de sa taille extrême, utilisez @code{texlive-tiny} ou @code{texlive-union} à la place.

note: type: enumerate
en: For important changes, check that dependent packages (if applicable) are not affected by the change; @code{guix refresh --list-dependent @var{package}} will help you do that (@pxref{Invoking guix refresh}).
fr: Pour les changements important, vérifiez que les paquets qui en dépendent (s'ils existent) ne sont pas affectés par le changement ; @code{guix refresh --list-dependant @var{paquet}} vous aidera (@pxref{Invoquer guix refresh}).

note: type: cindex
en: branching strategy
fr: stratégie de branche

note: type: cindex
en: rebuild scheduling strategy
fr: stratégie de planification des reconstructions

note: type: enumerate
en: Depending on the number of dependent packages and thus the amount of rebuilding induced, commits go to different branches, along these lines:
fr: Suivant le nombre de paquets dépendants et donc le nombre de reconstruction induites, les commits vont vers des branches différentes, suivant ces principes :

note: type: item
en: 300 dependent packages or less
fr: 300 paquets dépendants ou moins

note: type: table
en: @code{master} branch (non-disruptive changes).
fr: branche @code{master} (changements non-disruptifs).

note: type: item
en: between 300 and 1,800 dependent packages
fr: entre 300 et 1 800 paquets dépendants

note: type: table
en: @code{staging} branch (non-disruptive changes).  This branch is intended to be merged in @code{master} every 6 weeks or so.  Topical changes (e.g., an update of the GNOME stack) can instead go to a specific branch (say, @code{gnome-updates}).  This branch is not expected to be buildable or usable until late in its development process.
fr: branche @code{staging} (changements non-disruptifs).  Cette branche devrait être fusionnées dans @code{master} toutes les 6 semaines.  Les changements par thèmes (par exemple une mise à jour de la pile GNOME) peuvent aller dans une branche spécifique (disons, @code{gnome-updates}). Il n'est pas forcément possible de construire ni utiliser cette branche jusque tard dans le processus de développement.

note: type: item
en: more than 1,800 dependent packages
fr: plus de 1 800 paquets dépendants

note: type: table
en: @code{core-updates} branch (may include major and potentially disruptive changes).  This branch is intended to be merged in @code{master} every 6 months or so.  This branch is not expected to be buildable or usable until late in its development process.
fr: la branche @code{core-updates} (peut inclure des changements majeurs et potentiellement disruptifs).  Cette branche devrait être fusionnée dans @code{master} tous les 6 mois environ. Il n'est pas forcément possible de construire ni utiliser cette branche jusque tard dans le processus de développement.

note: type: enumerate
en: All these branches are @uref{https://@value{SUBSTITUTE-SERVER-1}, tracked by our build farm} and merged into @code{master} once everything has been successfully built.  This allows us to fix issues before they hit users, and to reduce the window during which pre-built binaries are not available.
fr: Toutes ces branches sont @uref{https://@value{SUBSTITUTE-SERVER-1}, gérées par notre ferme de construction} et fusionnées dans @code{master} une fois que tout a été construit correctement.  Cela nous permet de corriger des problèmes avant qu'ils n'atteignent les utilisateur·rices et réduit la fenêtre pendant laquelle les binaires pré-construits ne sont pas disponibles.

note: type: enumerate
en: When we decide to start building the @code{staging} or @code{core-updates} branches, they will be forked and renamed with the suffix @code{-frozen}, at which time only bug fixes may be pushed to the frozen branches.  The @code{core-updates} and @code{staging} branches will remain open to accept patches for the next cycle.  Please ask on the mailing list or IRC if unsure where to place a patch.
fr: Lorsqu'on décide de commencer à construire la branche @code{staging} ou @code{core-updates}, on les fork et on les renomme avec le suffixe @code{-frozen}, et à partir de ce moment, seuls les corrections de bogues sont poussées sur les branches gelées. Les branches @code{core-updates} et @code{staging} restent ouvertes et acceptent des correctifs pour le prochain cycle. Demandez sur la liste de diffusion ou sur IRC si vous ne savez pas où envoyer un correctif.

note: type: cindex
en: determinism, of build processes
fr: déterminisme, du processus de construction

note: type: cindex
en: reproducible builds, checking
fr: construction reproductibles, vérification

note: type: enumerate
en: Check whether the package's build process is deterministic.  This typically means checking whether an independent build of the package yields the exact same result that you obtained, bit for bit.
fr: Vérifiez si le processus de construction du paquet est déterministe.  Cela signifie typiquement vérifier qu'une construction indépendante du paquet renvoie exactement le même résultat que vous avez obtenu, bit à bit.

note: type: enumerate
en: A simple way to do that is by building the same package several times in a row on your machine (@pxref{Invoking guix build}):
fr: Une manière simple de le faire est de reconstruire le paquet plusieurs fois à la suite sur votre machine (@pxref{Invoquer guix build}) :

note: type: example
en: guix build --rounds=2 my-package
fr: guix build --rounds=2 mon-paquet

note: type: enumerate
en: This is enough to catch a class of common non-determinism issues, such as timestamps or randomly-generated output in the build result.
fr: Cela est suffisant pour trouver une classe de non-déterminisme commune, comme l'horodatage ou des sorties générées aléatoirement dans le résultat de la construction.

note: type: enumerate
en: Another option is to use @command{guix challenge} (@pxref{Invoking guix challenge}).  You may run it once the package has been committed and built by @code{@value{SUBSTITUTE-SERVER-1}} to check whether it obtains the same result as you did.  Better yet: Find another machine that can build it and run @command{guix publish}.  Since the remote build machine is likely different from yours, this can catch non-determinism issues related to the hardware---e.g., use of different instruction set extensions---or to the operating system kernel---e.g., reliance on @code{uname} or @file{/proc} files.
fr: Une autre option consiste à utiliser @command{guix challenge} (@pxref{Invoquer guix challenge}).  Vous pouvez lancer la commande une fois que les paquets ont été committés et construits par @code{@value{SUBSTITUTE-SERVER-1}} pour vérifier s'il obtient le même résultat que vous.  Mieux encore : trouvez une autre machine qui peut le construire et lancez @command{guix publish}.  Puisque la machine distante est sûrement différente de la vôtre, cela peut trouver des problèmes de non-déterminisme liés au matériel — par exemple utiliser une extension du jeu d'instruction — ou du noyau du système d'exploitation — par exemple se reposer sur @code{uname} ou les fichiers de @file{/proc}.

note: type: enumerate
en: When writing documentation, please use gender-neutral wording when referring to people, such as @uref{https://en.wikipedia.org/wiki/Singular_they, singular ``they''@comma{} ``their''@comma{} ``them''}, and so forth.
fr: Lorsque vous écrivez de la documentation, utilisez une formulation au genre neutre lorsque vous vous référez à des personnes, comme le @uref{https://fr.wikipedia.org/wiki/They_singulier, ``they''@comma{} ``their''@comma{} ``them'' singulier} (en anglais).

note: type: enumerate
en: Verify that your patch contains only one set of related changes.  Bundling unrelated changes together makes reviewing harder and slower.
fr: Vérifiez que votre correctif contienne seulement un ensemble de changements liés.  Grouper des changements non liés ensemble rend la revue plus difficile et plus lente.

note: type: enumerate
en: Examples of unrelated changes include the addition of several packages, or a package update along with fixes to that package.
fr: Ajouter plusieurs paquet ou une mise à jour d'un paquet avec des corrections dans ce paquet sont des exemples de changements sans rapport.

note: type: enumerate
en: Please follow our code formatting rules, possibly running @command{guix style} script to do that automatically for you (@pxref{Formatting Code}).
fr: Suivez nos règles de formatage de code, éventuellement en lançant le script @command{guix style} pour le faire automatiquement (@pxref{Formatage du code}).

note: type: enumerate
en: When possible, use mirrors in the source URL (@pxref{Invoking guix download}).  Use reliable URLs, not generated ones.  For instance, GitHub archives are not necessarily identical from one generation to the next, so in this case it's often better to clone the repository.  Don't use the @command{name} field in the URL: it is not very useful and if the name changes, the URL will probably be wrong.
fr: Si possible, utilisez des miroirs dans l'URL des sources (@pxref{Invoking guix download}).  Utilisez des URL stable, pas des URL générées.  Par exemple, les archives GitHub ne sont pas nécessairement identiques d'une génération à la suivante, donc il vaut mieux dans ce cas cloner le dépôt.  N'utilisez pas le champ @command{name} dans l'URL : ce n'est pas très utile et si le nom change, l'URL sera probablement erronée.

note: type: enumerate
en: Check if Guix builds (@pxref{Building from Git}) and address the warnings, especially those about use of undefined symbols.
fr: Vérifiez si Guix compile (@pxref{Building from Git}) et corrigez les avertissements, surtout ceux à propos de symboles manquants.

note: type: enumerate
en: Make sure your changes do not break Guix and simulate a @code{guix pull} with:
fr: Assurez-vous que vos changements ne cassent pas Guix et simulez un @code{guix pull} avec :

note: type: Plain text
en: When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as a subject, if your patch is to be applied on a branch other than @code{master}, say @code{core-updates}, specify it in the subject like @samp{[PATCH core-updates] @dots{}}.
fr: Lorsque vous envoyez un correctif à la liste de diffusion, utilisez @samp{[PATCH] @dots{}} comme objet. Si votre correctif doit être appliqué à une autre branche que @code{master}, comme @code{core-updates}, spécifiez-le dans l'objet comme dans @samp{[PATCH core-updates] @dots{}}.

note: type: Plain text
en: You may use your email client or the @command{git send-email} command (@pxref{Sending a Patch Series}).  We prefer to get patches in plain text messages, either inline or as MIME attachments.  You are advised to pay attention if your email client changes anything like line breaks or indentation which could potentially break the patches.
fr: Vous pouvez utiliser votre client de messagerie ou la commande @command{git send-email} (@pxref{Sending a Patch Series}). Nous préférons recevoir les correctifs dans des messages en texte clair, soit en ligne, soit sous forme de pièces jointes MIME.  Il vous est conseillé de faire attention si votre client de messagerie modifie quoi que ce soit, comme des sauts de ligne ou des indentations, qui pourraient potentiellement casser les correctifs.

note: type: Plain text
en: Expect some delay when you submit your very first patch to @email{guix-patches@@gnu.org}. You have to wait until you get an acknowledgement with the assigned tracking number. Future acknowledgements should not be delayed.
fr: Attendez-vous à un délai entre le moment où vous envoyez votre tout premier correctif à @email{guix-patches@@gnu.org} et le moment où le message sera reçu. Vous devez attendre de recevoir un message de confirmation avec le numéro de suivi assigné à votre correctif. Les confirmations suivantes ne seront pas retardées.

note: type: Plain text
en: When a bug is resolved, please close the thread by sending an email to @email{@var{ISSUE_NUMBER}-done@@debbugs.gnu.org}.
fr: Lorsqu'un bogue est résolu, veuillez fermer le fil en envoyant un courriel à @email{@var{NUMÉRO_PROBLÈME}-done@@debbugs.gnu.org}.

note: type: subsection
en: Configuring Git
fr: Configurer Git

note: type: cindex
en: git configuration
fr: configuration git

note: type: Plain text
en: If you have not done so already, you may wish to set a name and email that will be associated with your commits (@pxref{telling git your name, , Telling Git your name, git, Git User Manual}).  If you wish to use a different name or email just for commits in this repository, you can use @command{git config --local}, or edit @file{.git/config} in the repository instead of @file{~/.gitconfig}.
fr: Si vous ne l'avez pas encore fait, vous devriez indiquer un nom et une adresse de courriel qui seront associés à vos commits (@pxref{telling git your name, , Telling Git your name, git, Git User Manual}). Si vous souhaitez utiliser un nom ou une adresse différent pour les commits de ce dépôt, vous pouvez utiliser @command{git config --local}, ou modifier @file{.git/config} dans le dépôt au lieu de @file{~/.gitconfig}.

note: type: Plain text
en: We provide some default settings in @file{etc/git/gitconfig} which modify how patches are generated, making them easier to read and apply.  These settings can be applied by manually copying them to @file{.git/config} in your checkout, or by telling Git to include the whole file:
fr: Nous fournissons quelques paramètres par défaut dans @file{etc/git/gitconfig} qui modifient la manière de générer des correctifs, pour les rendre plus lisibles et plus faciles à appliquer. Vous pouvez appliquer ces paramètres manuellement en les copiant dans @file{.git/config} dans votre dépôt, ou en disant à Git d'inclure le fichier complet :

note: type: Plain text
en: From then on, any changes to @file{etc/git/gitconfig} would automatically take effect.
fr: À partir de maintenant, tout changement de @file{etc/git/gitconfig} prendra automatiquement effet.

note: type: Plain text
en: Since the first patch in a series must be sent separately (@pxref{Sending a Patch Series}), it can also be helpful to tell @command{git format-patch} to handle the e-mail threading instead of @command{git send-email}:
fr: Comme le premier correctif d'une série doit être envoyé séparément (@pxref{Sending a Patch Series}), il peut être intéressant de dire à @command{git format-patch} de se charger de la création d'un fil de discussion à la place de @command{git send-email} :

note: type: subsection
en: Sending a Patch Series
fr: Envoyer une série de correctifs

note: type: cindex
en: patch series
fr: série de correctifs

note: type: anchor{#1}
en: Single Patches
fr: Correctifs isolés

note: type: Plain text
en: The @command{git send-email} command is the best way to send both single patches and patch series (@pxref{Multiple Patches}) to the Guix mailing list.  Sending patches as email attachments may make them difficult to review in some mail clients, and @command{git diff} does not store commit metadata.
fr: La commande @command{git send-email} est la meilleure manière d'envoyer aussi bien des correctifs isolés que des séries de correctifs (@pxref{Multiple Patches}) à la liste de diffusion de Guix. Envoyer des correctifs en pièce-jointe peut les rendre plus difficile à revoir dans certains clients de courriel et @command{git diff} ne stocke pas les métadonnées des commits.

note: type: quotation
en: The @command{git send-email} command is provided by the @code{send-email} output of the @code{git} package, i.e. @code{git:send-email}.
fr: La commande @command{git send-email} est fournie par la sortie @code{send-email} du paquet @code{git}, c.-à-d.@: @code{git:send-email}.

note: type: Plain text
en: The following command will create a patch email from the latest commit, open it in your @var{EDITOR} or @var{VISUAL} for editing, and send it to the Guix mailing list to be reviewed and merged:
fr: La commande suivante créera un courriel de correctif à partir du dernier commit, l'ouvrira dans @var{EDITOR} ou @var{VISUAL} pour que vous puissiez le modifier et l'enverra à la liste de diffusion de Guix pour qu'il soit revu et fusionné :

note: type: quotation
en: Tip
fr: Astuce

note: type: quotation
en: To add a prefix to the subject of your patch, you may use the @option{--subject-prefix} option.  The Guix project uses this to specify that the patch is intended for a branch or repository other than the @code{master} branch of @url{https://git.savannah.gnu.org/cgit/guix.git}.
fr: Pour ajouter un préfixe à l'objet de votre correctif, vous pouvez utiliser l'option @option{--subject-prefix}. Le projet Guix utilise cela pour spécifier si un correctif est prévu pour une autre branche ou un autre dépôt que la branche @code{master} de @url{https://git.savannah.gnu.org/cgit/guix.git}.

note: type: Plain text
en: The patch email contains a three-dash separator line after the commit message.  You may ``annotate'' the patch with explanatory text by adding it under this line.  If you do not wish to annotate the email, you may drop the @option{-a} flag (which is short for @option{--annotate}).
fr: Le courriel de correctif contient une ligne de séparation à trois tirets après le message de commit. Vous pouvez « annoter » le correctif avec un texte explicatif en l'ajoutant sous cette ligne. Si vous ne voulez pas annoter le courriel, vous pouvez enlever le drapeau @option{-a} (qui est le raccourci pour @option{--annotate}).

note: type: Plain text
en: The @option{--base=auto} flag automatically adds a note at the bottom of the patch of the commit it was based on, making it easier for maintainers to rebase and merge your patch.
fr: Le drapeau @option{--base=auto} ajoute automatiquement une note à la fin du correctif indiquant le commit sur lequel il est basé, ce qui facilite le rebasage et la fusion de votre correctif pour les mainteneurs.

note: type: Plain text
en: If you need to send a revised patch, don't resend it like this or send a ``fix'' patch to be applied on top of the last one; instead, use @command{git commit -a} or @url{https://git-rebase.io, @command{git rebase}} to modify the commit, and use the @email{@var{ISSUE_NUMBER}@@debbugs.gnu.org} address and the @option{-v} flag with @command{git send-email}.
fr: Si vous voulez envoyer un correctif modifié, ne le renvoyez pas de cette manière et n'envoyez pas un correctif de « correction » à appliquer sur l'ancien ; à la place, utilisez @command{git commit -a} ou @url{https://git-rebase.io, @command{git rebase}} pour modifier le commit, et utilisez l'adresse @email{@var{NUMÉRO_PROBLÈME}@@debbugs.gnu.org} et le drapeau @option{-v} avec @command{git send-email}.

note: type: example
en: $ git commit -a
    $ git send-email -1 -a --base=auto -v @var{REVISION} \
          --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
fr: $ git commit -a
    $ git send-email -1 -a --base=auto -v @var{RÉVISION} \
          --to=@var{NUMÉRO_PROBLÈME}@@debbugs.gnu.org

note: type: Plain text
en: You can find out @var{ISSUE_NUMBER} either by searching on the mumi interface at @url{issues.guix.gnu.org} for the name of your patch or reading the acknowledgement email sent automatically by Debbugs in reply to incoming bugs and patches, which contains the bug number.
fr: Vous pouvez trouver @var{NUMÉRO_PROBLÈME} soit en cherchant sur l'interface mumi sur @url{issues.guix.gnu.org} le nom de votre correctif ou en lisant l'accusé de réception envoyé automatiquement par Debbugs en réponse aux bogues et correctifs entrants, qui contient le numéro de suivi.

note: type: anchor{#1}
en: Notifying Teams
fr: Notifier les équipes

note: type: cindex
en: teams
fr: équipes

note: type: Plain text
en: The @file{etc/teams.scm} script may be used to notify all those who may be interested in your patch of its existence (@pxref{Teams}).  Use @command{etc/teams.scm list-teams} to display all the teams, decide which team(s) your patch relates to, and use @command{etc/teams.scm cc} to output various @command{git send-email} flags which will notify the appropriate team members, or use @command{etc/teams.scm cc-members} to detect the appropriate teams automatically.
fr: Le script @file{etc/teams.scm} peut être utilisé pour notifier toutes les personnes qui sont intéressées par votre correctif (@pxref{Teams}). Utilisez @command{etc/teams.scm list-teams} pour afficher toutes les équipes, pour décider quelles équipes votre correctif intéressera et utilisez @command{etc/teams.scm cc} pour afficher les drapeaux @command{git send-email} qui notifieront les membres des équipes appropriées ou utilisez @command{etc/teams.scm cc-members} pour automatiquement détecter les équipes appropriées.

note: type: anchor{#1}
en: Multiple Patches
fr: Plusieurs correctifs

note: type: cindex
en: cover letter
fr: résumé

note: type: Plain text
en: While @command{git send-email} alone will suffice for a single patch, an unfortunate flaw in Debbugs means you need to be more careful when sending multiple patches: if you send them all to the @email{guix-patches@@gnu.org} address, a new issue will be created for each patch!
fr: Alors que @command{git send-email} seul suffira pour un unique correctif, un problème malheureux de Debbugs fait que vous devrez faire plus attention pour envoyer plusieurs correctifs : si vous les envoyez tous à l'adresse @email{guix-patches@@gnu.org}, un nouveau ticket sera créé pour chaque correctif !

note: type: Plain text
en: When sending a series of patches, it's best to send a Git ``cover letter'' first, to give reviewers an overview of the patch series.  We can create a directory called @file{outgoing} containing both our patch series and a cover letter called @file{0000-cover-letter.patch} with @command{git format-patch}.
fr: Lorsque vous envoyez une série de correctifs, il vaut mieux envoyer d'abord un « résumé » Git pour donner un aperçu de votre série de correctifs aux relecteur·ices. Vous pouvez créer un répertoire nommé @file{sortant} contenant à la fois votre série de correctifs et un résumé appelé @file{0000-cover-letter.patch} avec @command{git format-patch}.

note: type: example
en: $ git format-patch -@var{NUMBER_COMMITS} -o outgoing \
          --cover-letter --base=auto
fr: $ git format-patch -@var{NOMBRE_COMMITS} -o sortant \
          --cover-letter --base=auto

note: type: Plain text
en: We can now send @emph{just} the cover letter to the @email{guix-patches@@gnu.org} address, which will create an issue that we can send the rest of the patches to.
fr: Vous pouvez maintenant envoyer @emph{seulement} le résumé à l'adresse @email{guix-patches@@gnu.org} ce qui créera un ticket auquel vous pourrez envoyer le reste des correctifs.

note: type: example
en: $ git send-email outgoing/0000-cover-letter.patch -a \
          --to=guix-patches@@debbugs.gnu.org \
          $(etc/teams.scm cc-members ...)
    $ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
fr: $ git send-email outgoing/0000-cover-letter.patch -a \
          --to=guix-patches@@debbugs.gnu.org \
          $(etc/teams.scm cc-members ...)
    $ rm sortant/0000-cover-letter.patch # on ne veut pas le renvoyer !

note: type: Plain text
en: Ensure you edit the email to add an appropriate subject line and blurb before sending it.  Note the automatically generated shortlog and diffstat below the blurb.
fr: Assurez-vous de modifier le courriel pour ajouter une ligne d'objet appropriée et un petit texte avant de l'envoyer. Remarquez le journal court et les statistiques de changements générés automatiquement sous votre texte.

note: type: Plain text
en: Once the Debbugs mailer has replied to your cover letter email, you can send the actual patches to the newly-created issue address.
fr: Une fois que le logiciel de Debbugs a répondu à votre courriel de résumé, vous pouvez envoyer les correctifs à l'adresse de suivi nouvellement créée.

note: type: example
en: $ git send-email outgoing/*.patch \
          --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org \
          $(etc/teams.scm cc-members ...)
    $ rm -rf outgoing # we don't need these anymore
fr: $ git send-email sortant/*.patch \
          --to=@var{NUMÉRO_PROBLÈME}@@debbugs.gnu.org \
          $(etc/teams.scm cc-members ...)
    $ rm -rf sortant # on n'en a plus besoin

note: type: Plain text
en: Thankfully, this @command{git format-patch} dance is not necessary to send an amended patch series, since an issue already exists for the patchset.
fr: Heureusement, cette danse avec @command{git format-patch} n'est pas nécessaire pour envoyer une série modifiée car un ticket existe déjà pour la suite de correctifs.

note: type: example
en: $ git send-email -@var{NUMBER_COMMITS} \
          -v@var{REVISION} --base=auto \
          --to @var{ISSUE_NUMBER}@@debbugs.gnu.org
fr: $ git send-email -@var{NOMBRE_COMMITS} \
          -v@var{RÉVISION} --base=auto \
          --to @var{NUMÉRO_PROBLÈME}@@debbugs.gnu.org

note: type: Plain text
en: If need be, you may use @option{--cover-letter -a} to send another cover letter, e.g. for explaining what's changed since the last revision, and these changes are necessary.
fr: Si besoin, vous pouvez utiliser @option{--cover-letter -a} pour envoyer un autre résumé, p.@: ex.@: pour expliquer ce qui a changé par rapport à l'ancienne révision et que ces changements sont nécessaires.

note: type: subsection
en: Teams
fr: Équipes

note: type: Plain text
en: There are several teams mentoring different parts of the Guix source code.  To list all those teams, you can run from a Guix checkout:
fr: Il y a plusieurs équipes qui prennent en charge différentes parties du code source de Guix. Pour lister toutes ces équipes, vous pouvez exécuter depuis un clone de Guix :

note: type: Plain text
en: You can run the following command to have the @code{Mentors} team put in CC of a patch series:
fr: Vous pouvez exécuter la commande suivante pour ajouter l'équipe @code{Mentors} en CC de votre série de correctifs :

note: type: example
en: $ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch
fr: $ git send-email --to @var{NUMÉRO_PROBLÈME}@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch

note: type: Plain text
en: The appropriate team or teams can also be inferred from the modified files.  For instance, if you want to send the two latest commits of the current Git repository to review, you can run:
fr: L'équipe ou les équipes appropriées peuvent aussi être inférées à partir des fichiers modifiés. Par exemple, si vous voulez envoyer les deux derniers commits du dépôt Git actuel à la revue, vous pouvez exécuter :

note: type: example
en: $ guix shell -D guix
    [env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch
fr: $ guix shell -D guix
    [env]$ git send-email --to @var{NUMÉRO_PROBLÈME}@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch

note: type: Plain text
en: This section describes how the Guix project tracks its bug reports and patch submissions.
fr: Cette section décrit comme le projet Guix suit les rapports de bogues et les soumissions de correctifs.

note: type: subsection
en: The Issue Tracker
fr: L'outil de gestion des défauts

note: type: menuentry
en: The official bug and patch tracker.
fr: L'outil de gestion des bogues et des correctifs officiel.

note: type: subsection
en: Debbugs User Interfaces
fr: Interfaces utilisateurs à Debbugs

note: type: menuentry
en: Ways to interact with Debbugs.
fr: Plusieurs manières d'interagir avec Debbugs.

note: type: subsection
en: Debbugs Usertags
fr: Étiquettes personnalisées de Debbugs

note: type: menuentry
en: Tag reports with custom labels.
fr: Étiqueter les rapports avec des étiquettes personnalisées.

note: type: cindex
en: bug reports, tracking
fr: rapports de bogue, suivi

note: type: cindex
en: patch submissions, tracking
fr: soumission de correctifs, suivi

note: type: cindex
en: issue tracking
fr: suivi de tickets

note: type: cindex
en: Debbugs, issue tracking system
fr: Debbugs, système de suivi de tickets

note: type: Plain text
en: Bug reports and patch submissions are currently tracked using the Debbugs instance at @uref{https://bugs.gnu.org}.  Bug reports are filed against the @code{guix} ``package'' (in Debbugs parlance), by sending email to @email{bug-guix@@gnu.org}, while patch submissions are filed against the @code{guix-patches} package by sending email to @email{guix-patches@@gnu.org} (@pxref{Submitting Patches}).
fr: Les rapports de bogue et les correctifs soumis sont actuellement suivis par l'instance Debbugs @uref{https://bugs.gnu.org}.  Les rapports de bogue sont rempli pour le « paquet » @code{guix} (dans le vocabulaire de Debbugs), en envoyant un courriel à @email{bug-guix@@gnu.org}, tandis que les correctifs sont soumis pour le paquet @code{guix-patches} en envoyant un courriel à @email{guix-patches@@gnu.org} (@pxref{Submitting Patches}).

note: type: Plain text
en: A web interface (actually @emph{two} web interfaces!) are available to browse issues:
fr: Une interface web (en fait @emph{deux} interfaces web !) sont disponibles pour naviguer dans les tickets :

note: type: itemize
en: @url{https://issues.guix.gnu.org} provides a pleasant interface@footnote{The web interface at @url{https://issues.guix.gnu.org} is powered by Mumi, a nice piece of software written in Guile, and you can help! See @url{https://git.elephly.net/gitweb.cgi?p=software/mumi.git}.} to browse bug reports and patches, and to participate in discussions;
fr: @url{https://issues.guix.gnu.org} fournit une interface agréable@footnote{L'interface web à @url{https://issues.guix.gnu.org} est alimentée par Mumi, un logiciel très cool écrit en Guile, votre aide est la bienvenue ! Voir @url{https://git.elephly.net/gitweb.cgi?p=software/mumi.git}.} pour consulter les rapports de bogues et les correctifs, et pour participer aux discussions ;

note: type: itemize
en: @url{https://bugs.gnu.org/guix} lists bug reports;
fr: @url{https://bugs.gnu.org/guix} liste les rapports de bogues ;

note: type: itemize
en: @url{https://bugs.gnu.org/guix-patches} lists patch submissions.
fr: @url{https://bugs.gnu.org/guix-patches} liste les tickets soumis.

note: type: Plain text
en: To view discussions related to issue number @var{n}, go to @indicateurl{https://issues.guix.gnu.org/@var{n}} or @indicateurl{https://bugs.gnu.org/@var{n}}.
fr: Pour consulter les discussions relatives au numéro d'édition @var{n}, rendez-vous sur @indicateurl{https://issues.guix.gnu.org/@var{n}} ou @indicateurl{https://bugs.gnu.org/@var{n}}.

note: type: Plain text
en: If you use Emacs, you may find it more convenient to interact with issues using @file{debbugs.el}, which you can install with:
fr: Si vous utilisez Emacs, vous pourriez trouver plus confortable d'interagir avec les tickets en utilisant @file{debbugs.el}, que vous pouvez installer avec :

note: type: Plain text
en: For example, to list all open issues on @code{guix-patches}, hit:
fr: Par exemple, pour lister tous les tickets ouverts sur @code{guix-patches}, tapez :

note: type: Plain text
en: @xref{Top,,, debbugs-ug, Debbugs User Guide}, for more information on this nifty tool!
fr: @xref{Top,,, debbugs-ug, Debbugs User Guide}, pour plus d'info sur cet outil pratique !

note: type: cindex
en: usertags, for debbugs
fr: étiquettes personnalisées, pour debbugs

note: type: cindex
en: Debbugs usertags
fr: Étiquettes personnalisées pour Debbugs

note: type: Plain text
en: Debbugs provides a feature called @dfn{usertags} that allows any user to tag any bug with an arbitrary label.  Bugs can be searched by usertag, so this is a handy way to organize bugs@footnote{The list of usertags is public information, and anyone can modify any user's list of usertags, so keep that in mind if you choose to use this feature.}.
fr: Debbugs fournit une fonctionnalité nommée @dfn{étiquettes personnalisées} (usertags) qui permettent à tous d’étiqueter un bogue avec une étiquette arbitraire. On peut rechercher les bogues par étiquette, ce qui les rend pratiques pour organiser les bogues@footnote{La liste des étiquettes personnalisées est publique, et n'importe qui peut modifier la liste des étiquettes de n'importe qui, donc pensez-y si vous utilisez cette fonctionnalité.}.

note: type: Plain text
en: For example, to view all the bug reports (or patches, in the case of @code{guix-patches}) tagged with the usertag @code{powerpc64le-linux} for the user @code{guix}, open a URL like the following in a web browser: @url{https://debbugs.gnu.org/cgi-bin/pkgreport.cgi?tag=powerpc64le-linux;users=guix}.
fr: Par exemple, pour voir tous les rapports de bogues (ou les correctifs, dans le cas de @code{guix-patches} avec l'étiquette personnalisée @code{powerpc64le-linux} pour l'utilisateur @code{guix}, ouvrez cette URL dans un navigateur web : @url{https://debbugs.gnu.org/cgi-bin/pkgreport.cgi?tag=powerpc64le-linux;users=guix}.

note: type: Plain text
en: For more information on how to use usertags, please refer to the documentation for Debbugs or the documentation for whatever tool you use to interact with Debbugs.
fr: Pour plus d'informations sur le fonctionnement des étiquettes personnalisées, référez-vous à la documentation de Debbugs ou à la documentation de n'importe quel outil que vous utilisez pour interagir avec Debbugs.

note: type: Plain text
en: In Guix, we are experimenting with usertags to keep track of architecture-specific issues.  To facilitate collaboration, all our usertags are associated with the single user @code{guix}.  The following usertags currently exist for that user:
fr: Dans Guix, nous expérimentons les étiquettes personnalisées pour suivre les problèmes spécifiques aux différentes architectures. Pour faciliter la collaboration, toutes les étiquettes personnalisées sont associées à un unique utilisateur @code{guix}. Les étiquettes suivantes existent pour cet utilisateur :

note: type: table
en: The purpose of this usertag is to make it easy to find the issues that matter most for the @code{powerpc64le-linux} system type.  Please assign this usertag to bugs or patches that affect @code{powerpc64le-linux} but not other system types.  In addition, you may use it to identify issues that for some reason are particularly important for the @code{powerpc64le-linux} system type, even if the issue affects other system types, too.
fr: Le but de cet étiquettes est de faciliter la découverte des problèmes qui sont les plus importants pour le type de système @code{powerpc64le-linux}. Assignez cette étiquette aux bogues et aux correctifs qui affectent @code{powerpc64le-linux} mais pas les autres types de systèmes. En plus, vous pouvez l'utiliser pour identifier les problèmes particulièrement importants pour le type de système @code{powerpc64le-linux}, même si le problème affecte d'autres types de systèmes aussi.

note: #-#-#-#-#  contributing.pot (guix manual checkout)  #-#-#-#-# type: item #-#-#-#-#  guix.pot (guix manual checkout)  #-#-#-#-# type: cindex
en: reproducibility
fr: reproductibilité

note: type: table
en: For issues related to reproducibility.  For example, it would be appropriate to assign this usertag to a bug report for a package that fails to build reproducibly.
fr: Pour les problèmes de reproductibilité. Par exemple, ce serait approprié d'assigner cette étiquette à un rapport de bogue pour un paquet qui ne se construit pas de manière reproductible.

note: type: Plain text
en: If you're a committer and you want to add a usertag, just start using it with the @code{guix} user.  If the usertag proves useful to you, consider updating this section of the manual so that others will know what your usertag means.
fr: Si vous avez les droits en commit et que vous souhaitez ajouter une étiquette personnalisée, utilisez-la simplement avec l'utilisateur @code{guix}. Si l'étiquette vous est utile, vous pourrez alors mettre à jour cette section du manuel pour que d'autres puissent savoir ce que votre étiquette signifie.

note: type: cindex
en: commit access, for developers
fr: accès en commit, pour les développeurs

note: type: Plain text
en: Everyone can contribute to Guix without having commit access (@pxref{Submitting Patches}).  However, for frequent contributors, having write access to the repository can be convenient.  As a rule of thumb, a contributor should have accumulated fifty (50) reviewed commits to be considered as a committer and have sustained their activity in the project for at least 6 months.  This ensures enough interactions with the contributor, which is essential for mentoring and assessing whether they are ready to become a committer.  Commit access should not be thought of as a ``badge of honor'' but rather as a responsibility a contributor is willing to take to help the project.
fr: Tout le monde peut contribuer à Guix même sans accès en commit (@pxref{Submitting Patches}). Cependant, pour les contributeurs et contributrices fréquent·e·s, l'accès en écriture au dépôt peut être pratique. Le principe général est qu'un contributeur ou une contributrice devrait avoir accumulé cinquante commits revus pour demander les accès en commit et il ou elle doit avoir eu une activité soutenue dans le projet pendant au moins 6 mois. Cela permet de s'assurer qu'il y a eu suffisament d'interactions avec le contributeur ou la contributrice, ce qui est nécessaire pour accompagner la personne et évaluer si elle est prête à recevoir les accès en commit. L'accès en commit n'est pas une médaille mais plutôt une responsabilité qu'un contributeur ou une contributrice accepte pour aider le projet.

note: type: Plain text
en: The following sections explain how to get commit access, how to be ready to push commits, and the policies and community expectations for commits pushed upstream.
fr: Les sections suivantes expliquent comment recevoir des accès en commit, comment se préparer à pousser des commits et la politique et les attentes de la communauté pour les commits poussés en amont.

note: type: subsection
en: Applying for Commit Access
fr: Candidater pour avoir accès en commit

note: type: Plain text
en: When you deem it necessary, consider applying for commit access by following these steps:
fr: Lorsque vous l'estimez nécessaire, pensez à candidater à l'accès en commit en suivant les étapes suivantes :

note: type: enumerate
en: Find three committers who would vouch for you.  You can view the list of committers at @url{https://savannah.gnu.org/project/memberlist.php?group=guix}.  Each of them should email a statement to @email{guix-maintainers@@gnu.org} (a private alias for the collective of maintainers), signed with their OpenPGP key.
fr: Trouvez trois personnes ayant les accès en commit et qui soutiendront votre candidature.  Vous pouvez trouver la liste de ces personnes sur @url{https://savannah.gnu.org/project/memberlist.php?group=guix}.  Chacune d'entre elles devra envoyer une déclaration à @email{guix-maintainers@@gnu.org} (un alias privé pour le collectif des mainteneur·ses), signé de leur clef OpenPGP.

note: type: enumerate
en: Committers are expected to have had some interactions with you as a contributor and to be able to judge whether you are sufficiently familiar with the project's practices.  It is @emph{not} a judgment on the value of your work, so a refusal should rather be interpreted as ``let's try again later''.
fr: Les commiteurs devront avoir eu des interactions avec vous en tant que contributeur et pouvoir juger si vous êtes suffisament familier avec les pratiques du projet.  Ce n'est @emph{pas} un jugement sur la valeur de votre travail, donc vous devriez plutôt interpréter un refus comme un « essayons un peu plus tard ».

note: type: enumerate
en: Send @email{guix-maintainers@@gnu.org} a message stating your intent, listing the three committers who support your application, signed with the OpenPGP key you will use to sign commits, and giving its fingerprint (see below).  See @uref{https://emailselfdefense.fsf.org/en/}, for an introduction to public-key cryptography with GnuPG.
fr: Envoyez un message à @email{guix-maintainers@@gnu.org} déclarant votre intention, listant les trois commiteur·ses qui supportent votre candidature, signez-le avec la clef OpenPGP que vous utiliserez pour signer vos commits et donnez son empreinte (voir plus bas).  Voir  @uref{https://emailselfdefense.fsf.org/fr/}, pour une introduction à la cryptopgraphie à clef publique avec GnuPG.

note: type: enumerate
en: Set up GnuPG such that it never uses the SHA1 hash algorithm for digital signatures, which is known to be unsafe since 2019, for instance by adding the following line to @file{~/.gnupg/gpg.conf} (@pxref{GPG Esoteric Options,,, gnupg, The GNU Privacy Guard Manual}):
fr: Configurer GnuPG de manière à ce qu'il n'utilise jamais l'algorithme de hachage SHA1 pour les signatures numériques, dont on sait qu'il est dangereux depuis 2019, par exemple en ajoutant la ligne suivante à @file{~/.gnupg/gpg.conf} (@pxref{GPG Esoteric Options, , , gnupg, The GNU Privacy Guard Manual}) :

note: type: enumerate
en: Maintainers ultimately decide whether to grant you commit access, usually following your referrals' recommendation.
fr: Les mainteneur·ses ont le dernier mot sur la décision de vous donner accès et suivent généralement l'avis de vos référents.

note: type: cindex
en: OpenPGP, signed commits
fr: OpenPGP, commits signés

note: type: enumerate
en: If and once you've been given access, please send a message to @email{guix-devel@@gnu.org} to say so, again signed with the OpenPGP key you will use to sign commits (do that before pushing your first commit).  That way, everyone can notice and ensure you control that OpenPGP key.
fr: Si vous obtenez l'accès, envoyez un message à @email{guix-devel@@gnu.org} pour le faire savoir, en signant de nouveau avec le clef OpenPGP que vous utiliserez pour signer les commits (faites-le avant votre premier commit).  De cette manière, tout le monde peut s'en rendre compte et s'assurer que c'est bien vous qui contrôlez cette clef OpenPGP.

note: type: quotation
en: Before you can push for the first time, maintainers must:
fr: Avant d'envoyer pour la première fois, les mainteneur·ses doivent :

note: type: enumerate
en: add your OpenPGP key to the @code{keyring} branch;
fr: ajoutez votre clé OpenPGP à la branche @code{keyring} ;

note: type: enumerate
en: add your OpenPGP fingerprint to the @file{.guix-authorizations} file of the branch(es) you will commit to.
fr: ajoutez votre empreinte OpenPGP au fichier @file{.guix-authorizations} de la (des) branche(s) sur laquelle (lesquelles) vous vous engagez.

note: type: enumerate
en: Make sure to read the rest of this section and... profit!
fr: Assurez-vous de lire le reste de cette section et… profitez !

note: type: quotation
en: Maintainers are happy to give commit access to people who have been contributing for some time and have a track record---don't be shy and don't underestimate your work!
fr: Les mainteneur·ses se réjouissent de donnéer l'accès en commit aux personnes qui ont contribué depuis un certain temps et ont un historique — ne soyez pas timide et ne sous-estimez pas votre travail !

note: type: quotation
en: However, note that the project is working towards a more automated patch review and merging system, which, as a consequence, may lead us to have fewer people with commit access to the main repository.  Stay tuned!
fr: Cependant, remarquez que le projet travail sur un système de revu de correctifs et de fusion plus automatisé, qui, en conséquence, pourra nous faire réduire le nombre de personne ayant accès en commit au dépôt principal.  Restez à l'écoute !

note: type: Plain text
en: All commits that are pushed to the central repository on Savannah must be signed with an OpenPGP key, and the public key should be uploaded to your user account on Savannah and to public key servers, such as @code{keys.openpgp.org}.  To configure Git to automatically sign commits, run:
fr: Tous les commits poussés sur le dépôt central sur Savannah doivent être signés avec une clef OpenPGP et la clef publique doit être chargée sur votre compte utilisateur dans Savannah et les serveurs de clef publique, comme @code{keys.opengpg.org}.  Pour configurer Git pour signer automatiquement vos commits, lancez :

note: type: example
en: # Substitute the fingerprint of your public PGP key.
    git config user.signingkey CABBA6EA1DC0FF33
fr: # Remplacez l'empreinte par celle de votre clé PGP publique
    git config user.signingkey CABBA6EA1DC0FF33

note: type: Plain text
en: To check that commits are signed with correct key, use:
fr: Pour vérifier que les commits sont signés avec une clé correcte, utilisez :

note: type: Plain text
en: You can prevent yourself from accidentally pushing unsigned or signed with the wrong key commits to Savannah by using the pre-push Git hook located at @file{etc/git/pre-push}:
fr: Vous pouvez éviter de pousser accidentellement des commits non signés ou signés avec une mauvaise clé vers Savannah et utilisant le crochet Git de pré-envoi situé dans @file{etc/git/pre-push} :

note: type: Plain text
en: It additionally calls @code{make check-channel-news} to be sure @file{news.scm} file is correct.
fr: II appelle aussi @code{make-check-channel-news} pour s'assurer que le fichier @file{news.scm} est correct.

note: type: subsection
en: Commit Policy
fr: Politique de commit

note: type: Plain text
en: If you get commit access, please make sure to follow the policy below (discussions of the policy can take place on @email{guix-devel@@gnu.org}).
fr: Si vous avez accès en commit, assurez-vous de respecter la politique ci-dessous (les discussions à propos de cette politique peuvent avoir lieu sur @email{guix-devel@@gnu.org}).

note: type: Plain text
en: Non-trivial patches should always be posted to @email{guix-patches@@gnu.org} (trivial patches include fixing typos, etc.).  This mailing list fills the patch-tracking database (@pxref{Tracking Bugs and Patches}).
fr: Les correctifs non triviaux doivent toujours être postés sur @email{guix-patches@@gnu.org} (les correctifs triviaux consistent en des correctifs de coquilles, etc).  Cette liste de diffusion rempli la base de données de correctifs (@pxref{Tracking Bugs and Patches}).

note: type: Plain text
en: For patches that just add a new package, and a simple one, it's OK to commit, if you're confident (which means you successfully built it in a chroot setup, and have done a reasonable copyright and license auditing).  Likewise for package upgrades, except upgrades that trigger a lot of rebuilds (for example, upgrading GnuTLS or GLib).  We have a mailing list for commit notifications (@email{guix-commits@@gnu.org}), so people can notice.  Before pushing your changes, make sure to run @code{git pull --rebase}.
fr: Pour les correctifs qui ne font qu'ajouter un nouveau paquet, et un paquet simple, commiter directement est accepté si vous êtes en confiance (ce qui signifie que vous avez réussi à le construire dans un environnement chroot et avez fait un audit suffisant des copyrights et de la licence).  Pareil pour les mises à jour de paquets, sauf pour les mises à jour qui occasionnent beaucoup de reconstruction (par exemple mettre à jour GnuTLS ou GLib).  Nous avons une liste de diffusion pour les notifications de commit (@email{guix-commits@@gnu.org}), pour que les gens puissent s'en rendre compte.  Avant de pousser vos changements, assurez-vous d'avoir lancé @code{git pull --rebase}.

note: type: Plain text
en: When pushing a commit on behalf of somebody else, please add a @code{Signed-off-by} line at the end of the commit log message---e.g., with @command{git am --signoff}.  This improves tracking of who did what.
fr: Lorsque vous poussez un commit pour le compte de quelqu'un d'autre, ajoutez une ligne @code{Signed-off-by} à la fin du message de commit — p.@: ex.@: avec @command{git am --signoff}.  Cela amélior le suivi que qui fait quoi.

note: type: Plain text
en: When adding channel news entries (@pxref{Channels, Writing Channel News}), make sure they are well-formed by running the following command right before pushing:
fr: Quand vous ajoutez de nouvelles entrées au canal (@pxref{Channels, Writing Channel News}), assurez-vous qu'elles sont bien formées en exécutant la commande suivante juste avant d'envoyer :

note: type: Plain text
en: For anything else, please post to @email{guix-patches@@gnu.org} and leave time for a review, without committing anything (@pxref{Submitting Patches}).  If you didn’t receive any reply after two weeks, and if you're confident, it's OK to commit.
fr: Pour tout autre chose, envoyez un correctif à @email{guix-patches@@gnu.org} et laissez un peu de temps pour la revue, sans rien commiter (@pxref{Submitting Patches}).  Si vous ne recevez pas de réponse dans les deux semaines et que vous avez confiance, vous pouvez commiter.

note: type: Plain text
en: That last part is subject to being adjusted, allowing individuals to commit directly on non-controversial changes on parts they’re familiar with.
fr: La dernière partie est sujète à ajustement, pour permettre à certains de commiter directement des changements non controversés sur des parties qui leurs sont familières.

note: type: subsection
en: Addressing Issues
fr: Régler les problèmes

note: type: Plain text
en: Peer review (@pxref{Submitting Patches}) and tools such as @command{guix lint} (@pxref{Invoking guix lint}) and the test suite (@pxref{Running the Test Suite}) should catch issues before they are pushed.  Yet, commits that ``break'' functionality might occasionally go through.  When that happens, there are two priorities: mitigating the impact, and understanding what happened to reduce the chance of similar incidents in the future.  The responsibility for both these things primarily lies with those involved, but like everything this is a group effort.
fr: La revue par les pairs (@pxref{Submitting Patches}) et les outils comme @command{guix lint} (@pxref{Invoking guix lint}) et la suite de tests (@pxref{Running the Test Suite}) devraient trouver les problèmes avant qu'ils ne soient poussés. Pourtant, il arrive parfois que des commits qui « cassent » une fonctionnalité passent à travers les mailles du filet. Lorsque cela arrive, il y a deux priorités : minimiser l'impact et comprendre ce qui s'est passé, pour réduire les chances qu'un incident similaire se produise à nouveau. Les personnes impliquées ont la plus grande part de responsabilité dans ces deux tâches, mais comme pour tout le reste, c'est aussi un travail commun.

note: type: Plain text
en: Some issues can directly affect all users---for instance because they make @command{guix pull} fail or break core functionality, because they break major packages (at build time or run time), or because they introduce known security vulnerabilities.
fr: Certains problèmes peuvent directement affecter les utilisateurs et utilisatrices — par exemple si @command{guix pull} échoue ou qu'une fonctionnalité importante est cassée parce que des paquets importants sont cassés (à la construction ou à l'exécution), ou parce qu'ils introduisent des problèmes de sécurités connus.

note: type: cindex
en: reverting commits
fr: inverser des comits

note: type: Plain text
en: The people involved in authoring, reviewing, and pushing such commit(s) should be at the forefront to mitigate their impact in a timely fashion: by pushing a followup commit to fix it (if possible), or by reverting it to leave time to come up with a proper fix, and by communicating with other developers about the problem.
fr: Les personnes impliquées, auteurs, relecteurs et ayant poussé ces commits devraient avant tout réduire leur impact rapidement en poussant un nouveau commit qui le corrige (si c'est possible) ou en inversant les commits pour laisser du temps avant de trouver un correctif satisfaisant, et en communiquant le problème aux autres développeurs.

note: type: Plain text
en: If these persons are unavailable to address the issue in time, other committers are entitled to revert the commit(s), explaining in the commit log and on the mailing list what the problem was, with the goal of leaving time to the original committer, reviewer(s), and author(s)  to propose a way forward.
fr: Si ces personnes ne peuvent pas s'occuper du problème à temps, les autres commiteurs peuvent inverser les commits, en expliquant le problème dans le message de commit et sur la liste de diffusion, dans le but de donner du temps au commiteur, aux relecteurs et aux auteurs de proposer une solution.

note: type: Plain text
en: Once the problem has been dealt with, it is the responsibility of those involved to make sure the situation is understood.  If you are working to understand what happened, focus on gathering information and avoid assigning any blame.  Do ask those involved to describe what happened, do not ask them to explain the situation---this would implicitly blame them, which is unhelpful.  Accountability comes from a consensus about the problem, learning from it and improving processes so that it's less likely to reoccur.
fr: Une fois que le problème a été réglé, il est de la responsabilité des personnes impliquées de s'assurer que la situation a été comprise. Si vous travaillez à comprendre ce qui est arrivé, efforcez-vous de récolter des informations plutôt que de désigner des coupables. Demandez aux gens impliqués de décrire ce qui est arrivé, ne leur demandez pas d'expliquer la situation -- ce qui les mettrait implicitement dans une position de responsabilité et n'est d'aucune aide. La responsabilité vient une fois atteint un consensus sur le problème, qui permet d'apprendre de ce qui s'est passé et d'améliorer les processus afin qu'il soit moins à risque de se reproduire.

note: type: subsection
en: Commit Revocation
fr: Révocation des droits en commit

note: type: Plain text
en: In order to reduce the possibility of mistakes, committers will have their Savannah account removed from the Guix Savannah project and their key removed from @file{.guix-authorizations} after 12 months of inactivity; they can ask to regain commit access by emailing the maintainers, without going through the vouching process.
fr: Pour réduire la probabilité de faire une erreur, celles et ceux qui peuvent commiter seront retiré·e·s du projet Guix sur Savannah et leur clé supprimée de @file{.guix-authorizations} après 12 mois d'inactivité ; ils et elles pourront retrouver leur accès en envoyant un courriel aux mainteneur·ses, sans avoir à passer par le processus de cooptation.

note: type: Plain text
en: Maintainers@footnote{See @uref{https://guix.gnu.org/en/about} for the current list of maintainers.  You can email them privately at @email{guix-maintainers@@gnu.org}.} may also revoke an individual's commit rights, as a last resort, if cooperation with the rest of the community has caused too much friction---even within the bounds of the project's code of conduct (@pxref{Contributing}).  They would only do so after public or private discussion with the individual and a clear notice.  Examples of behavior that hinders cooperation and could lead to such a decision include:
fr: Les mainteneur·ses@footnote{Voir @uref{https ://guix.gnu.org/fr/about} pour la liste à jour des mainteneur·ses. Vous pouvez leur envoyer un courriel en privé à l'adresse @email{guix-maintainers@@gnu.org}.} peuvent aussi révoquer les droits en commit de quelqu'un, en dernier recours, si la coopération avec le reste de la communauté a créé trop de friction -- même en restant dans le cadre du code de conduite (@pxref{Contributing}) du projet. Ils ne le feraient qu'après une discussion publique ou privée avec la personne concernée et un avertissement clair. Voici des exemples de comportements qui gênent la coopération et pourraient mener à une telle décision :

note: type: item
en: repeated violation of the commit policy stated above;
fr: enfreindre de manière répétée la politique de commit indiquée ci-dessus ;

note: type: item
en: repeated failure to take peer criticism into account;
fr: échouer de manière répétée à prendre en compte les critiques de la communauté ;

note: type: item
en: breaching trust through a series of grave incidents.
fr: briser la confiance suite à une série d'incidents graves.

note: type: Plain text
en: When maintainers resort to such a decision, they notify developers on @email{guix-devel@@gnu.org}; inquiries may be sent to @email{guix-maintainers@@gnu.org}.  Depending on the situation, the individual may still be welcome to contribute.
fr: Quand les mainteneurs recourent à une telle décision, ils en informent les développeurs sur @email{guix-devel@@gnu.org} ; des questions peuvent être envoyées à @email{guix-maintainers@@gnu.org}. Suivant la situation, les contributions de la personne peuvent rester bienvenues.

note: type: subsection
en: Helping Out
fr: Aider

note: type: Plain text
en: One last thing: the project keeps moving forward because committers not only push their own awesome changes, but also offer some of their time @emph{reviewing} and pushing other people's changes.  As a committer, you're welcome to use your expertise and commit rights to help other contributors, too!
fr: Une dernière chose : le projet continue à avancer non seulement parce que les commiteurs poussent leurs propres changements, mais aussi parce qu'ils offrent de leur temps pour @emph{revoir} et pousser les changements des autres personnes.  En tant que commiteur, vous pouvez utiliser votre expertise et vos droits en commit pour aider d'autres contributeaurs aussi !

note: type: cindex
en: update-guix-package, updating the guix package
fr: update-guix-package, mise à jour du paquet guix

note: type: Plain text
en: It is sometimes desirable to update the @code{guix} package itself (the package defined in @code{(gnu packages package-management)}), for example to make new daemon features available for use by the @code{guix-service-type} service type.  In order to simplify this task, the following command can be used:
fr: Il est quelquefois souhaitable de mettre à jour le paquet @code{guix} lui-même (le paquet défini dans @code{(gnu packages package-management)}), par exemple pour rendre de nouvelles caractéristiques disponibles à l'utilisation par le type de service @code{guix-service-type}. Afin de simplifier cette tâche, la commande suivante peut être utilisée :

note: type: Plain text
en: The @code{update-guix-package} make target will use the last known @emph{commit} corresponding to @code{HEAD} in your Guix checkout, compute the hash of the Guix sources corresponding to that commit and update the @code{commit}, @code{revision} and hash of the @code{guix} package definition.
fr: Le make target @code{update-guix-package} utilisera le dernier @emph{commit} connu correspondant à @code{HEAD} dans votre checkout Guix, calculera le hash des sources Guix correspondant à ce commit et mettra à jour la définition des paquets @code{commit}, @code{revision} et le hash du paquet @code{guix}.

note: type: Plain text
en: To validate that the updated @code{guix} package hashes are correct and that it can be built successfully, the following command can be run from the directory of your Guix checkout:
fr: Pour avoir la certitude que les hash du paquet @code{guix} mis à jour sont corrects et qu'il peut être construit avec succès, la commande suivante peut être lancée depuis le répertoire de votre checkout Guix :

note: type: Plain text
en: To guard against accidentally updating the @code{guix} package to a commit that others can't refer to, a check is made that the commit used has already been pushed to the Savannah-hosted Guix git repository.
fr: Pour éviter de mettre à jour accidentellement le paquet @code{guix} en un commit auquel les autres ne peuvent pas se référer, on vérifie que le commit utilisé a déjà été placé dans le dépôt git de Guix hébergé par Savannah.

note: type: Plain text
en: This check can be disabled, @emph{at your own peril}, by setting the @code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT} environment variable.  When this variable is set, the updated package source is also added to the store.  This is used as part of the release process of Guix.
fr: Cette vérification peut être désactivée, @emph{à vos risques et périls}, en passant la variable d'environnement @code{GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT}.  Lorsque cette variable est initialisée, les source du paquet mis à jour est aussi ajouté au dépôt.  Cela est utilisé dans le processus de publication de Guix.

note: type: Plain text
en: Guix is documented using the Texinfo system.  If you are not yet familiar with it, we accept contributions for documentation in most formats.  That includes plain text, Markdown, Org, etc.
fr: Guix est documenté avec le système Texinfo. Si vous n'êtes pas à l'aise avec, nous acceptons les contributions pour la documentation dans la plupart des formats. Cela comprends le texte brut, Markdown, Org, etc.

note: type: Plain text
en: Documentation contributions can be sent to @email{guix-patches@@gnu.org}.  Prepend @samp{[DOCUMENTATION]} to the subject.
fr: Vous pouvez envoyer des contributions pour la documentation à @email{guix-patches@@gnu.org}. Ajoutez @samp{[DOCUMENTATION]} au début de l'objet.

note: type: Plain text
en: When you need to make more than a simple addition to the documentation, we prefer that you send a proper patch as opposed to sending an email as described above.  @xref{Submitting Patches} for more information on how to send your patches.
fr: Lorsque vous avez besoin de faire plus qu'un simple ajout à la documentation, nous préférons que vous envoyiez un correctif plutôt que d'envoyer un courriel comme précisé plus haut. @xref{Submitting Patches} pour en apprendre plus sur l'envoie de vos correctifs.

note: type: Plain text
en: To modify the documentation, you need to edit @file{doc/guix.texi} and @file{doc/contributing.texi} (which contains this documentation section), or @file{doc/guix-cookbook.texi} for the cookbook.  If you compiled the Guix repository before, you will have many more @file{.texi} files that are translations of these documents.  Do not modify them, the translation is managed through @uref{https://translate.fedoraproject.org/projects/guix, Weblate}.  @xref{Translating Guix} for more information.
fr: Pour modifier la documentation, vous devrez modifier @file{doc/guix.texi} et @file{doc/contributing.texi} (qui contient cette section de la documentation) ou @file{doc/guix-cookbook.texi} pour le livre de recettes. Si vous avez déjà compilé le dépôt Guix, vous aurez bien plus de fichiers @file{.texi} qui sont les traductions de ces documents. Ne les modifiez pas, les traductions sont gérées par @uref{https://translate.fedoraproject.org/projects/guix, Weblate}. @xref{Translating Guix} pour plus de détails.

note: type: Plain text
en: To render documentation, you must first make sure that you ran @command{./configure} in your source tree (@pxref{Running Guix Before It Is Installed}).  After that you can run one of the following commands:
fr: Pour générer la documentation, vous devez d'abord vous assurer d'avoir lancé @command{./configure} dans votre arborescence des sources (@pxref{Running Guix Before It Is Installed}). Ensuite, vous pourrez lancer l'une des commandes suivantes :

note: type: item
en: @samp{make doc/guix.info} to compile the Info manual.
fr: @samp{make doc/guix.info} pour compiler le manuel Info.

note: type: itemize
en: You can check it with @command{info doc/guix.info}.
fr: Vous pouvez le consulter avec @command{info doc/guix.info}.

note: type: item
en: @samp{make doc/guix.html} to compile the HTML version.
fr: @samp{make doc/guix.html} pour compiler la version HTML.

note: type: itemize
en: You can point your browser to the relevant file in the @file{doc/guix.html} directory.
fr: Vous pouvez pointer votre navigateur vers le fichier qui vous intéresse dans le répertoire @file{doc/guix.html}.

note: type: item
en: @samp{make doc/guix-cookbook.info} for the cookbook Info manual.
fr: @samp{make doc/guix-cookbook.info} pour le manuel Info du livre de recettes.

note: type: item
en: @samp{make doc/guix-cookbook.html} for the cookbook HTML version.
fr: @samp{make doc/guix-cookbook.html} pour la version HTML du livre de recettes.

note: type: cindex
en: translation
fr: traduction

note: type: cindex
en: native language support
fr: prise en charge des langues

note: type: Plain text
en: Writing code and packages is not the only way to provide a meaningful contribution to Guix.  Translating to a language you speak is another example of a valuable contribution you can make.  This section is designed to describe the translation process.  It gives you advice on how you can get involved, what can be translated, what mistakes you should avoid and what we can do to help you!
fr: Écrire du code et des paquets n'est pas la seule manière possible de proposer une contribution intéressante à Guix. Traduire vers une langue que vous parlez est un autre exemple de contribution importante que vous pouvez faire. Cette section décrit le processus de traduction. Elle vous donner des conseils sur comment vous impliquer, ce qui peut être traduit, les erreurs à éviter et ce que vous pouvez faire pour nous aider !

note: type: Plain text
en: Guix is a big project that has multiple components that can be translated.  We coordinate the translation effort on a @uref{https://translate.fedoraproject.org/projects/guix/,Weblate instance} hosted by our friends at Fedora.  You will need an account to submit translations.
fr: Guix est un gros projet qui a plusieurs composants traduisibles. Nous coordonnons l'effort de traduction sur une @uref{https://translate.fedoraproject.org/projects/guix/,instance Weblate} hébergée par nos amis de Fedora. Vous aurez besoin d'un compte pour soumettre vos traductions.

note: type: Plain text
en: Some of the software packaged in Guix also contain translations.  We do not host a translation platform for them.  If you want to translate a package provided by Guix, you should contact their developers or find the information on their website.  As an example, you can find the homepage of the @code{hello} package by typing @code{guix show hello}.  On the ``homepage'' line, you will see @url{https://www.gnu.org/software/hello/} as the homepage.
fr: Certains logiciels empaquetés par Guix contiennent aussi des traductions. Nous n'hébergeons pas de plateforme de traduction pour eux. Si vous voulez traduire un paquet fournit par Guix, vous devrez contacter ses développeurs ou trouver plus d'information sur son site web. Par exemple, vous pouvez trouver la page d'accueil du paquet @code{hello} en lançant @code{guix show hello}. Sur la ligne indiquant « homepage », vous verrez que la page d'accueil est @url{https://www.gnu.org/software/hello/}.

note: type: Plain text
en: Many GNU and non-GNU packages can be translated on the @uref{https://translationproject.org,Translation Project}.  Some projects with multiple components have their own platform.  For instance, GNOME has its own platform, @uref{https://l10n.gnome.org/,Damned Lies}.
fr: De nombreux paquets GNU et non-GNU peuvent être traduits sur le @uref{https://translationproject.org,Projet de traduction}. Certains projets avec de multiples composants ont leur propre plateforme. Par exemple, GNOME a sa propre plateforme, @uref{https://l10n.gnome.org/,Damned Lies}.

note: type: Plain text
en: Guix has five components hosted on Weblate.
fr: Guix a cinq composants hébergés sur Weblate.

note: type: item
en: @code{guix} contains all the strings from the Guix software (the
fr: @code{guix} contient toutes les chaînes du logiciel Guix (le guide

note: type: itemize
en: guided system installer, the package manager, etc), excluding packages.
fr: d'installation du système, le gestionnaire de paquets, etc), en dehors des paquets.

note: type: item
en: @code{packages} contains the synopsis (single-sentence description
fr: @code{packages} contient le synopsis (une description courte en

note: type: itemize
en: of a package) and description (longer description) of packages in Guix.
fr: une ligne) et la description (longue) des paquets de Guix.

note: type: item
en: @code{website} contains the official Guix website, except for
fr: @code{website} contient le site web officiel de Guix, en dehors

note: type: itemize
en: blog posts and multimedia content.
fr: des billets de blog et du contenu multimédia.

note: type: item
en: @code{documentation-manual} corresponds to this manual.
fr: @code{documentation-manual} correspond à ce manuel.

note: type: item
en: @code{documentation-cookbook} is the component for the cookbook.
fr: @code{documentation-cookbook} est le composant du livre de recettes.

note: type: subsubheading
en: General Directions
fr: Instructions générales

note: type: Plain text
en: Once you get an account, you should be able to select a component from @uref{https://translate.fedoraproject.org/projects/guix/,the guix project}, and select a language.  If your language does not appear in the list, go to the bottom and click on the ``Start new translation'' button.  Select the language you want to translate to from the list, to start your new translation.
fr: Une fois que vous aurez un compte, vous pourrez choisir un composant dans @uref{https://translate.fedoraproject.org/projects/guix/,projet guix}, et choisir une langue. Si votre langue n'apparaît pas dans la liste, allez en bas et cliquez sur le bouton « commencer une nouvelle traduction ». Choisissez la langue en laquelle vous voulez traduire dans la liste pour commencer votre nouvelle traduction.

note: type: Plain text
en: Like lots of other free software packages, Guix uses @uref{https://www.gnu.org/software/gettext,GNU Gettext} for its translations, with which translatable strings are extracted from the source code to so-called PO files.
fr: Comme de nombreux autres logiciels libres, Guix utilise @uref{https://www.gnu.org/software/gettext,GNU Gettext} pour ses traductions. Grâce à lui, les chaînes traduisibles sont extraites du code source en des fichier dits PO.

note: type: Plain text
en: Even though PO files are text files, changes should not be made with a text editor but with PO editing software.  Weblate integrates PO editing functionality.  Alternatively, translators can use any of various free-software tools for filling in translations, of which @uref{https://poedit.net/,Poedit} is one example, and (after logging in)  @uref{https://docs.weblate.org/en/latest/user/files.html,upload} the changed file.  There is also a special @uref{https://www.emacswiki.org/emacs/PoMode,PO editing mode} for users of GNU Emacs.  Over time translators find out what software they are happy with and what features they need.
fr: Même si les fichiers PO sont des fichiers textes, vous devriez les modifier non pas avec un éditeur de texte mais avec un logiciel d'édition de PO. Weblate intègre une fonctionnalité d'édition de PO. Autrement, vous pouvez utiliser n'importe lequel des divers outils libres pour remplir les traductions, dont @uref{https://poedit.net/,Poedit} est un exemple, et (après vous être connecté) @uref{https://docs.weblate.org/en/latest/user/files.html,téléverser} le fichier modifié. Il y a aussi un @uref{https://www.emacswiki.org/emacs/PoMode,mode d'édition de PO} spécial pour GNU Emacs. Avec le temps vous trouverez les logiciels qui vous satisfont et les fonctionnalités dont vous avez besoin.

note: type: Plain text
en: On Weblate, you will find various links to the editor, that will show various subsets (or all) of the strings.  Have a look around and at the @uref{https://docs.weblate.org/en/latest/,documentation} to familiarize yourself with the platform.
fr: Sur Weblate, vous trouverez plusieurs liens vers l'éditeur, qui vous montreront divers sous-ensemble (ou la totalité) des chaînes. Explorez Weblate et consultez la @uref{https://docs.weblate.org/fr/latest/,documentation} pour vous familiariser avec la plateforme.

note: type: subsubheading
en: Translation Components
fr: Composants des traductions

note: type: Plain text
en: In this section, we provide more detailed guidance on the translation process, as well as details on what you should or should not do.  When in doubt, please contact us, we will be happy to help!
fr: Dans cette section, nous proposons un guide plus détaillé du processus de traduction, ainsi que des détails sur ce que vous devriez ou ne devriez pas faire. Si vous avez un doute, contactez-nous, nous serons ravis de vous aider !

note: type: table
en: Guix is written in the Guile programming language, and some strings contain special formatting that is interpreted by Guile.  These special formatting should be highlighted by Weblate.  They start with @code{~} followed by one or more characters.
fr: Guix est écrit dans le langage de programmation Guile, et certaines chaînes contiennent du formatage spécial interprété par Guile. Ce formatage spécial devrait être mis en évidence par Weblate. Il commence par @code{~} suivi d'un ou plusieurs caractères.

note: type: table
en: When printing the string, Guile replaces the special formatting symbols with actual values.  For instance, the string @samp{ambiguous package specification `~a'} would be substituted to contain said package specification instead of @code{~a}.  To properly translate this string, you must keep the formatting code in your translation, although you can place it where it makes sense in your language.  For instance, the French translation says @samp{spécification du paquet « ~a » ambiguë} because the adjective needs to be placed in the end of the sentence.
fr: Lors de l'affichage des chaînes, Guile remplace les symboles de formatage spéciaux avec les vrais valeurs. Par exemple, la chaîne @samp{ambiguous package specification `~a'} serait modifiée pour contenir la spécification du paquet en question au lieu de @code{~a}. Pour traduire cette chaîne correctement, vous devez garder le formatage dans vos traduction, même si vous pouvez le placer là où cela a le plus de sens dans votre langue. Par exemple, la traduction française dit @samp{spécification du paquet « ~a » ambiguë} parce que l'adjectif doit être placé à la fin de la phrase.

note: type: table
en: If there are multiple formatting symbols, make sure to respect the order.  Guile does not know in which order you intended the string to be read, so it will substitute the symbols in the same order as the English sentence.
fr: S'il y a plusieurs symboles de formatage, assurez-vous de respecter l'ordre. Guile ne sait pas dans quel ordre vous voulez qu'il lise la chaîne, donc il remplacera les symboles dans le même ordre que la phrase anglaise.

note: type: table
en: As an example, you cannot translate @samp{package '~a' has been superseded by '~a'} by @samp{'~a' superseeds package '~a'}, because the meaning would be reversed.  If @var{foo} is superseded by @var{bar}, the translation would read @samp{'foo' superseeds package 'bar'}.  To work around this problem, it is possible to use more advanced formatting to select a given piece of data, instead of following the default English order.  @xref{Formatted Output,,, guile, GNU Guile Reference Manual}, for more information on formatting in Guile.
fr: Par exemple, vous ne pouvez pas traduire @samp{package '~a' has been superseded by '~a'} par @samp{« ~a » remplace le paquet « ~a »}, parce que le sens serait renversé. Si @var{toto} est remplacé par @var{titi}, la traduction dirait @samp{« toto » remplace le paquet « titi »}. Pour éviter ce problème, il est possible d'utiliser un formatage plus avancé pour désigner une donnée particulière, au lieu de suivre l'ordre anglais par défaut. @xref{Formatted Output,,, guile, GNU Guile Reference Manual}, pour plus d'information sur le formatage en Guile.

note: #-#-#-#-#  contributing.pot (guix manual checkout)  #-#-#-#-# type: item #-#-#-#-#  guix.pot (guix manual checkout)  #-#-#-#-# type: cindex
en: packages
fr: paquets

note: type: table
en: Package descriptions occasionally contain Texinfo markup (@pxref{Synopses and Descriptions}).  Texinfo markup looks like @samp{@@code@{rm -rf@}}, @samp{@@emph@{important@}}, etc.  When translating, please leave markup as is.
fr: Les descriptions de paquets contiennent parfois du balisage Texinfo (@pxref{Synopses and Descriptions}). Le balisage Texinfo ressemble à @samp{@@code@{rm -rf@}}, @samp{@@emph@{important@}}, etc. Lors de la traduction, laissez le balisage tel quel.

note: type: table
en: The characters after ``@@'' form the name of the markup, and the text between ``@{'' and ``@}'' is its content.  In general, you should not translate the content of markup like @code{@@code}, as it contains literal code that do not change with language.  You can translate the content of formatting markup such as @code{@@emph}, @code{@@i}, @code{@@itemize}, @code{@@item}.  However, do not translate the name of the markup, or it will not be recognized.  Do not translate the word after @code{@@end}, it is the name of the markup that is closed at this position (e.g.@: @code{@@itemize ... @@end itemize}).
fr: Les caractères après « @@ » forment le nom de la balise, et le texte entre « @{ » et « @} » est son contenu. En général, vous ne devriez pas traduire le contenu des balises comme @code{@@code}, car elles contiennent littéralement du code qui ne change pas avec la langue. Vous pouvez traduire le contenu des balises de formatage comme @code{@@emph}, @code{@@i}, @code{@@itemize}, @code{@@item}. Cependant, ne traduisez pas le nom de la balise, ou elle ne sera plus reconnue. Ne traduisez pas le mot après @code{@@end}, c'est le nom de la balise fermée à cet endroit (p. ex.  @code{@@itemize ... @@end itemize}).

note: type: item
en: documentation-manual and documentation-cookbook
fr: documentation-manual et documentation-cookbook

note: type: table
en: The first step to ensure a successful translation of the manual is to find and translate the following strings @emph{first}:
fr: La première étape pour assurer la traduction du manuel est de trouver et traduire les chaîne suivantes @emph{en premier} :

note: type: item
en: @code{version.texi}: Translate this string as @code{version-xx.texi},
fr: @code{version.texi} : Traduisez cette chaîne en @code{version-xx.texi},

note: type: itemize
en: where @code{xx} is your language code (the one shown in the URL on weblate).
fr: où @code{xx} est le code de votre langue (celui affiché dans l'URL sur weblate).

note: type: item
en: @code{contributing.texi}: Translate this string as
fr: @code{contributing.texi} : Traduisez cette chaîne en

note: type: itemize
en: @code{contributing.xx.texi}, where @code{xx} is the same language code.
fr: @code{contributing.xx.texi}, où @code{xx} est le même code de langue.

note: type: item
en: @code{Top}: Do not translate this string, it is important for Texinfo.
fr: @code{Top} : Ne traduisez pas cette chaîne, c'est important pour Texinfo.

note: type: itemize
en: If you translate it, the document will be empty (missing a Top node).  Please look for it, and register @code{Top} as its translation.
fr: Si vous la traduisez, le document sera vide (il manquera le nœud Top). Cherchez-là et utilisez @code{Top} comme traduction.

note: type: table
en: Translating these strings first ensure we can include your translation in the guix repository without breaking the make process or the @command{guix pull} machinery.
fr: Traduire ces chaînes en premier s'assure que nous pouvez inclure vos traduction dans le dépôt guix sans casser le processus make ni la machinerie derrière @command{guix pull}.

note: type: table
en: The manual and the cookbook both use Texinfo.  As for @code{packages}, please keep Texinfo markup as is.  There are more possible markup types in the manual than in the package descriptions.  In general, do not translate the content of @code{@@code}, @code{@@file}, @code{@@var}, @code{@@value}, etc.  You should translate the content of formatting markup such as @code{@@emph}, @code{@@i}, etc.
fr: Le manuel et le livre de recettes utilisent tous les deux Texinfo. Comme pour @code{packages}, gardez le balisage Texinfo intact. Il y a plus de types de balises possibles dans le manuel que dans les descriptions de paquets. En général, ne traduisez pas le contenu de @code{@@code}, @code{@@file}, @code{@@var}, @code{@@value}, etc. Vous devriez traduire le contenu des balises de formatage comme @code{@@emph}, @code{@@i}, etc.

note: type: table
en: The manual contains sections that can be referred to by name by @code{@@ref}, @code{@@xref} and @code{@@pxref}.  We have a mechanism in place so you do not have to translate their content.  If you keep the English title, we will automatically replace it with your translation of that title.  This ensures that Texinfo will always be able to find the node. If you decide to change the translation of the title, the references will automatically be updated and you will not have to update them all yourself.
fr: Le manuel contient des sections auxquelles on peut se référer par leur nom avec @code{@@ref}, @code{@@xref} et @code{@@pxref}. Nous avons mis en place un mécanisme pour que vous n'ayez pas besoin de traduire leur contenu. Si vous gardez le titre anglais, nous le remplacerons automatiquement par votre traduction de ce titre. Cela s'assure que Texinfo sera toujours capable de trouver le nœud. Si vous décidez de changer la traduction du titre, les références seront automatiquement mises à jour et vous n'aurez pas à les mettre à jour vous-même.

note: type: table
en: When translating references from the cookbook to the manual, you need to replace the name of the manual and the name of the section.  For instance, to translate @code{@@pxref@{Defining Packages,,, guix, GNU Guix Reference Manual@}}, you would replace @code{Defining Packages} with the title of that section in the translated manual @emph{only} if that title is translated.  If the title is not translated in your language yet, do not translate it here, or the link will be broken.  Replace @code{guix} with @code{guix.xx} where @code{xx} is your language code.  @code{GNU Guix Reference Manual} is the text of the link.  You can translate it however you wish.
fr: Lorsque vous traduirez des références de livre de recettes vers le manuel, vous devrez remplacer le nom du manuel et le nom de la section. Par exemple, pour traduire @code{@@pxref@{Defining Packages,,, guix, GNU Guix Reference Manual@}}, vous devrez remplacer @code{Defining Packages} par le titre de cette section dans le manuel traduit @emph{seulement} si ce titre est traduit. Si le titre n'est pas encore traduit dans votre langue, ne le traduisez pas ici, ou le lien sera cassé. Remplacez @code{guix} par @code{guix.xx} où @code{xx} est le code de votre langue. @code{GNU Guix Reference Manual} est le texte du lien. Vous pouvez le traduire comme bon vous semble.

note: type: table
en: The website pages are written using SXML, an s-expression version of HTML, the basic language of the web.  We have a process to extract translatable strings from the source, and replace complex s-expressions with a more familiar XML markup, where each markup is numbered.  Translators can arbitrarily change the ordering, as in the following example.
fr: Les pages du site web sont écrite en SXML, une manière d'écrire du HTML, le langage de base du web, avec des s-expressions. Nous avons un processus pour extraire les chaînes traduisibles dans les sources, et pour remplacer les s-expressions complexes avec du balisage XML plus familier, où chaque balise est numérotée. Vous pouvez changer l'ordre comme bon vous semble, comme dans l'exemple suivant.

note: type: table
en: Note that you need to include the same markups.  You cannot skip any.
fr: Remarquez que vous devez inclure les même balises. Vous ne devez pas en oublier.

note: type: Plain text
en: In case you make a mistake, the component might fail to build properly with your language, or even make guix pull fail.  To prevent that, we have a process in place to check the content of the files before pushing to our repository.  We will not be able to update the translation for your language in Guix, so we will notify you (through weblate and/or by email) so you get a chance to fix the issue.
fr: Si vous faites une erreur, le composant peut échouer à construire correctement dans votre langue, voir casser guix pull. Pour éviter cela, nous avons mis en place un processus pour vérifier le contenu des fichiers avant de les pousser dans notre dépôt. Nous ne pourrons alors pas mettre à jour la traduction en votre langue dans Guix, donc nous vous notifierons (à travers weblate ou par courriel) pour que vous puissez corriger le problème.

note: type: subsubheading
en: Outside of Weblate
fr: En dehors de Weblate

note: type: Plain text
en: Currently, some parts of Guix cannot be translated on Weblate, help wanted!
fr: Actuellement, certaines parties de Guix ne peuvent pas être traduites sur Weblate, nous avons besoin d'aide !

note: type: item
en: @command{guix pull} news can be translated in @file{news.scm}, but is not
fr: Les nouvelles de @command{guix pull} peuvent être traduites dans @file{news.scm}, mais ne sont

note: type: itemize
en: available from Weblate.  If you want to provide a translation, you can prepare a patch as described above, or simply send us your translation with the name of the news entry you translated and your language. @xref{Writing Channel News}, for more information about channel news.
fr: pas disponibles sur Weblate. Si vous voulez fournir une traduction, vous pouvez préparer un correctif comme décrit plus haut, ou simplement nous envoyer votre traduction avec le nom de l'entrée que vous avez traduite et votre langue. @xref{Writing Channel News}, pour plus d'information sur les nouvelles de canaux.

note: type: item
en: Guix blog posts cannot currently be translated.
fr: Les billets de blog de Guix ne peuvent pas encore être traduits.

note: type: item
en: The installer script (for foreign distributions) is entirely in English.
fr: Le script d'installation (pour les distributions externes) est entièrement en anglais.

note: type: item
en: Some of the libraries Guix uses cannot be translated or are translated
fr: Certaines bibliothèques que Guix utilise ne peuvent pas être traduites ou leurs traductions

note: type: itemize
en: outside of the Guix project.  Guile itself is not internationalized.
fr: sont en dehors du projet Guix. Guile lui-même n'est pas internationalisé.

note: type: item
en: Other manuals linked from this manual or the cookbook might not be
fr: Les liens vers les autres manuels ici ou dans le livre de recettes ne sont pas

note: type: itemize
en: translated.
fr: forcément traduits.

note: type: subsubheading
en: Conditions for Inclusion
fr: Conditions d'inclusion

note: type: Plain text
en: There are no conditions for adding new translations of the @code{guix} and @code{guix-packages} components, other than they need at least one translated string.  New languages will be added to Guix as soon as possible.  The files may be removed if they fall out of sync and have no more translated strings.
fr: Il n'y a pas de condition particulière pour ajouter de nouvelles traductions aux composants @code{guix} et @code{guix-packages}, en dehors du fait qu'elles doivent avoir au moins une chaîne traduite. Les nouvelles langues seront ajoutées à Guix le plus tôt possible. Les fichiers peuvent être supprimés s'ils ne sont plus synchronisés et qu'ils n'ont plus aucune chaîne traduite.

note: type: Plain text
en: Given that the web site is dedicated to new users, we want its translation to be as complete as possible before we include it in the language menu.  For a new language to be included, it needs to reach at least 80% completion.  When a language is included, it may be removed in the future if it stays out of sync and falls below 60% completion.
fr: Étant donné que le site web est prévu pour les nouveaux utilisateurs, nous souhaitons que ses traductions soient les plus complètes possible avant de les inclure dans le menu des langues. Pour qu'une nouvelle langue soit ajoutée, elle doit atteindre au moins les 80% de complétion. Lorsqu'une langue est incluse, elle peut être supprimée dans le futur si elle reste désynchronisée et que sa complétion descend en dessous des 60%.

note: type: Plain text
en: The manual and cookbook are automatically added in the default compilation target.  Every time we synchronize translations, developers need to recompile all the translated manuals and cookbooks.  This is useless for what is essentially the English manual or cookbook.  Therefore, we will only include a new language when it reaches 10% completion in the component.  When a language is included, it may be removed in the future if it stays out of sync and falls below 5% completion.
fr: Le manuel et le livre de recettes sont automatiquement ajoutés à la cible de compilation par défaut. Chaque fois que nous synchronisons les traductions, les développeurs et développeuses doivent recompiler tous les manuels et les livres de recettes traduits. C'est inutile s'il s'agit en grande partie du manuel ou du livre de recettes en anglais. De ce fait, nous n’inclurons les nouvelles langues que si elles atteignent 10% de complétion dans le composant en question. Lorsqu'une langue est ajoutée, elle pourra être supprimée dans le futur si elle reste désynchronisée et que son taux de complétion descend en dessous des 5%.

note: type: subsubheading
en: Translation Infrastructure
fr: Infrastructure de traduction

note: type: Plain text
en: Weblate is backed by a git repository from which it discovers new strings to translate and pushes new and updated translations.  Normally, it would be enough to give it commit access to our repositories.  However, we decided to use a separate repository for two reasons.  First, we would have to give Weblate commit access and authorize its signing key, but we do not trust it in the same way we trust guix developers, especially since we do not manage the instance ourselves.  Second, if translators mess something up, it can break the generation of the website and/or guix pull for all our users, independently of their language.
fr: Weblate s'appuie sur un dépôt git à partir duquel il découvre les nouvelles chaînes à traduire et vers lequel il pousse les nouvelles traductions. Normalement, il suffirait de lui donner accès en commit à nos dépôts. Cependant, nous avons préféré utiliser un dépôt séparé pour deux raisons. Tout d'abord, nous aurions du donner à Weblate l'accès en commit et autoriser sa clé de signature, mais nous ne lui faisons pas autant confiance qu'aux développeurs de guix, d'autant plus que nous ne gérons pas l'instance nous-même. Ensuite, si les traducteurs et les traductrices font une erreur, cela peut casser la génération du site web ou guix pull pour tout le monde, quelle que soit la langue.

note: type: Plain text
en: For these reasons, we use a dedicated repository to host translations, and we synchronize it with our guix and artworks repositories after checking no issue was introduced in the translation.
fr: Pour ces raisons, nous utilisons un dépôt dédié pour héberger les traductions, et nous le synchronisons avec nos dépôts guix et artwork après avoir vérifié qu'aucun problème n'est introduit par les traductions.

note: type: Plain text
en: Developers can download the latest PO files from weblate in the Guix repository by running the @command{make download-po} command.  It will automatically download the latest files from weblate, reformat them to a canonical form, and check they do not contain issues.  The manual needs to be built again to check for additional issues that might crash Texinfo.
fr: vous pouvez télécharger les derniers fichiers PO de weblate dans le dépôt Guix en lançant la commande @command{make download-po}. Cela télécharge automatiquement les derniers fichiers de weblate, les reformate vers une forme canonique, et vérifie qu'ils ne contiennent pas de problème. Le manuel doit être reconstruit pour vérifier qu'il n'y a pas de problème supplémentaire qui ferait planter Texinfo.

note: type: Plain text
en: Before pushing new translation files, developers should add them to the make machinery so the translations are actually available.  The process differs for the various components.
fr: Avant de pousser de nouveaux fichiers de traduction, qui n'existaient pas avant, vous devez les ajouter à la machinerie make pour que les traductions soit effectivement disponibles. Le processus diffère en fonction des composants.

note: type: item
en: New po files for the @code{guix} and @code{packages} components must
fr: Les nouveau fichiers po pour les composants @code{guix} et @code{packages} doivent

note: type: itemize
en: be registered by adding the new language to @file{po/guix/LINGUAS} or @file{po/packages/LINGUAS}.
fr: être enregistrés en ajoutant la nouvelle langue dans @file{po/guix/LINGUAS} ou @file{po/packages/LINGUAS}.

note: type: item
en: New po files for the @code{documentation-manual} component must be
fr: Le nouveaux fichiers pour le composant @code{documentation-manuel} doivent

note: type: itemize
en: registered by adding the file name to @code{DOC_PO_FILES} in @file{po/doc/local.mk}, the generated @file{%D%/guix.xx.texi} manual to @code{info_TEXINFOS} in @file{doc/local.mk} and the generated @file{%D%/guix.xx.texi} and @file{%D%/contributing.xx.texi} to @code{TRANSLATED_INFO} also in @file{doc/local.mk}.
fr: être enregistrés en ajoutant le nom de fichier à @code{DOC_PO_FILES} dans @file{po/doc/local.mk}, le manuel généré @file{%D%/guix.xx.texi} à @code{info_TEXINFOS} dans @file{doc/local.mk} et les fichiers @file{%D%/guix.xx.texi} et @file{%D%/contributing.xx.texi} à @code{TRANSLATED_INFO} aussi dans @file{doc/local.mk}.

note: type: item
en: New po files for the @code{documentation-cookbook} component must be
fr: Les nouveaux fichiers po pour le composant @code{documentation-cookbook} doivent

note: type: itemize
en: registered by adding the file name to @code{DOC_COOKBOOK_PO_FILES} in @file{po/doc/local.mk}, the generated @file{%D%/guix-cookbook.xx.texi} manual to @code{info_TEXINFOS} in @file{doc/local.mk} and the generated @file{%D%/guix-cookbook.xx.texi} to @code{TRANSLATED_INFO} also in @file{doc/local.mk}.
fr: être enregistrés en ajoutant le nom de fichier à @code{DOC_COOKBOOK_PO_FILES} dans @file{po/doc/local.mk}, le manuel généré @file{%D%/guix-cookbook.xx.texi} à @code{info_TEXINFOS} dans @file{doc/local.mk} et le fichier généré @file{%D%/guix-cookbook.xx.texi} à @code{TRANSLATED_INFO} aussi dans @file{doc/local.mk}.

note: type: item
en: New po files for the @code{website} component must be added to the
fr: Les nouveau fichiers po pour le composant @code{website} doivent être ajoutés dans

note: type: itemize
en: @code{guix-artwork} repository, in @file{website/po/}.  @file{website/po/LINGUAS} and @file{website/po/ietf-tags.scm} must be updated accordingly (see @file{website/i18n-howto.txt} for more information on the process).
fr: le dépôt @code{guix-artwork}, dans @file{website/po/}. Vous devez mettre à jour @file{website/po/LINGUAS} et @file{website/po/ietf-tags.scm} en fonction (voir @file{website/i18n-howto.txt} pour plus d'information sur le processus).

note: type: Plain text
en: @documentencoding UTF-8
fr: @documentencoding UTF-8
    @documentlanguage fr
    @frenchspacing on

note: type: title
en: GNU Guix Reference Manual
fr: Manuel de référence de GNU Guix

note: type: include
en: version.texi
fr: version-fr.texi

note: type: copying
en: Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license is included in the section entitled ``GNU Free Documentation License''.
fr: Vous avez la permission de copier, distribuer ou modifier ce document sous les termes de la Licence GNU Free Documentation, version 1.3 ou toute version ultérieure publiée par la Free Software Foundation ; sans section invariante, texte de couverture et sans texte de quatrième de couverture.  Une copie de la licence est incluse dans la section intitulée « GNU Free Documentation License ».

note: type: dircategory
en: System administration
fr: Administration système

note: type: menuentry
en: Guix: (guix)
fr: Guix: (guix.fr)

note: type: menuentry
en: Manage installed software and system configuration.
fr: Gérer les logiciels installés et la configuration du système.

note: type: menuentry
en: guix package: (guix)Invoking guix package
fr: guix package : (guix.fr)Invoquer guix package

note: type: menuentry
en: Installing, removing, and upgrading packages.
fr: Installer, supprimer et mettre à jour des paquets.

note: type: menuentry
en: guix gc: (guix)Invoking guix gc
fr: guix gc : (guix.fr)Invoquer guix gc

note: type: menuentry
en: Reclaiming unused disk space.
fr: Récupérer de l'espace disque inutilisé.

note: type: menuentry
en: guix pull: (guix)Invoking guix pull
fr: guix pull : (guix.fr)Invoquer guix pull

note: type: menuentry
en: Update the list of available packages.
fr: Mettre à jour la liste des paquets disponibles.

note: type: menuentry
en: guix system: (guix)Invoking guix system
fr: guix system : (guix.fr)Invoquer guix system

note: type: menuentry
en: Manage the operating system configuration.
fr: Gérer la configuration du système d'exploitation.

note: type: menuentry
en: guix deploy: (guix)Invoking guix deploy
fr: guix deploy: (guix.fr)Invoquer guix deploy

note: type: menuentry
en: Manage operating system configurations for remote hosts.
fr: Gérer la configuration du système d'exploitation d'hôtes distants.

note: type: dircategory
en: Software development
fr: Développement logiciel

note: type: menuentry
en: guix shell: (guix)Invoking guix shell
fr: guix shell: (guix.fr)Invoquer guix shell

note: type: menuentry
en: Creating software environments.
fr: Créer des environnements logiciels.

note: type: menuentry
en: guix environment: (guix)Invoking guix environment
fr: guix environment : (guix.fr)Invoquer guix environment

note: type: menuentry
en: Building development environments with Guix.
fr: Construire des environnements de construction avec Guix.

note: type: menuentry
en: guix build: (guix)Invoking guix build
fr: guix build : (guix.fr)Invoquer guix build

note: type: menuentry
en: Building packages.
fr: Construire des paquets.

note: type: menuentry
en: guix pack: (guix)Invoking guix pack
fr: guix pack : (guix.fr) Invoquer guix pack

note: type: menuentry
en: Creating binary bundles.
fr: Créer des lots binaires.

note: type: subtitle
en: Using the GNU Guix Functional Package Manager
fr: Utiliser le gestionnaire de paquet fonctionnel GNU Guix

note: type: author
en: The GNU Guix Developers
fr: Les développeurs de GNU Guix

note: type: titlepage
en: Edition @value{EDITION} @* @value{UPDATED} @*
fr: Édition @value{EDITION} @* @value{UPDATED} @*

note: type: Plain text
en: This document describes GNU Guix version @value{VERSION}, a functional package management tool written for the GNU system.
fr: Cette documentation décrit GNU Guix version @value{VERSION}, un outil de gestion de paquets fonctionnel écrit pour le système GNU@.

note: You can replace the following paragraph with information on type: Plain text
en: This manual is also available in Simplified Chinese (@pxref{Top,,, guix.zh_CN, GNU Guix参考手册}), French (@pxref{Top,,, guix.fr, Manuel de référence de GNU Guix}), German (@pxref{Top,,, guix.de, Referenzhandbuch zu GNU Guix}), Spanish (@pxref{Top,,, guix.es, Manual de referencia de GNU Guix}), Brazilian Portuguese (@pxref{Top,,, guix.pt_BR, Manual de referência do GNU Guix}), and Russian (@pxref{Top,,, guix.ru, Руководство GNU Guix}).  If you would like to translate it in your native language, consider joining @uref{https://translate.fedoraproject.org/projects/guix/documentation-manual, Weblate} (@pxref{Translating Guix}).
fr: Ce manuel est aussi disponible en anglais (@pxref{Top,,, guix, GNU Guix Reference Manual}), en allemand (@pxref{Top,,, guix.de, Referenzhandbuch zu GNU Guix}), en chinois simplifié (@pxref{Top,,, guix.zh_CN, GNU Guix参考手册}), en espagnol (@pxref{Top,,, guix.es, Manual de referencia de GNU Guix}), en portugais brésilien (@pxref{Top,,, guix.pt_BR, Manual de referência do GNU Guix}), et en russe (@pxref{Top,,, guix.ru, Руководство GNU Guix}).  Si vous souhaitez nous aider à traduire ce manuel en français, vous pouvez nous rejoindre sur @uref{https://translate.fedoraproject.org/projects/guix/documentation-manual, Weblate} et sur la liste de diffusion @uref{https://listes.traduc.org/mailman/listinfo/traduc/, traduc@@traduc.org} (@pxref{Translating Guix}).

note: type: menuentry
en: What is Guix about?
fr: Qu'est-ce que Guix ?

note: type: menuentry
en: Installing Guix.
fr: Installer Guix.

note: type: chapter
en: System Installation
fr: Installation du système

note: type: menuentry
en: Installing the whole operating system.
fr: Installer le système d'exploitation complet.

note: type: chapter
en: System Troubleshooting Tips
fr: Corriger les problèmes du système

note: type: menuentry
en: When things don't go as planned.
fr: Quand ça ne fonctionne pas comme prévu.

note: type: chapter
en: Getting Started
fr: Pour démarrer

note: type: menuentry
en: Your first steps.
fr: Vos premiers pas.

note: type: chapter
en: Package Management
fr: Gestion de paquets

note: type: menuentry
en: Package installation, upgrade, etc.
fr: Installation des paquets, mises à jour, etc.

note: type: chapter
en: Channels
fr: Canaux

note: type: menuentry
en: Customizing the package collection.
fr: Personnaliser la collection des paquets.

note: type: chapter
en: Development
fr: Développement

note: type: menuentry
en: Guix-aided software development.
fr: Développement logiciel simplifié par Guix.

note: type: chapter
en: Programming Interface
fr: Interface de programmation

note: type: menuentry
en: Using Guix in Scheme.
fr: Utiliser Guix en Scheme.

note: type: chapter
en: Utilities
fr: Utilitaires

note: type: menuentry
en: Package management commands.
fr: Commandes de gestion de paquets.

note: type: chapter
en: Foreign Architectures
fr: Architectures externes

note: type: menuentry
en: Build for foreign architectures.
fr: Construire pour d'autres architectures.

note: type: chapter
en: System Configuration
fr: Configuration du système

note: type: menuentry
en: Configuring the operating system.
fr: Configurer le système d'exploitation.

note: type: chapter
en: Home Configuration
fr: Configuration du dossier personnel

note: type: menuentry
en: Configuring the home environment.
fr: Configurer l'environnement personnel.

note: type: menuentry
en: Browsing software user manuals.
fr: Visualiser les manuels des logiciels.

note: type: chapter
en: Platforms
fr: Plateformes

note: type: menuentry
en: Defining platforms.
fr: Définir des plateformes.

note: type: node
en: System Images
fr: Images systèmes

note: type: menuentry
en: Creating system images.
fr: Créer des images systèmes.

note: type: chapter
en: Installing Debugging Files
fr: Installer les fichiers de débogage

note: type: menuentry
en: Feeding the debugger.
fr: Nourrir le débogueur.

note: type: node
en: Using TeX and LaTeX
fr: Utiliser TeX et LaTeX

note: type: menuentry
en: Typesetting.
fr: Composition.

note: type: chapter
en: Security Updates
fr: Mises à jour de sécurité

note: type: menuentry
en: Deploying security fixes quickly.
fr: Déployer des correctifs de sécurité rapidement.

note: type: menuentry
en: GNU/Linux built from scratch.
fr: GNU/Linux depuis zéro.

note: type: node
en: Porting
fr: Porter

note: type: menuentry
en: Targeting another platform or kernel.
fr: Cibler une autre plateforme ou un autre noyau.

note: type: menuentry
en: Your help needed!
fr: Nous avons besoin de votre aide !

note: type: chapter
en: Acknowledgments
fr: Remerciements

note: type: menuentry
en: Thanks!
fr: Merci !

note: type: appendix
en: GNU Free Documentation License
fr: La licence GNU Free Documentation

note: type: menuentry
en: The license of this manual.
fr: La licence de ce manuel.

note: type: unnumbered
en: Concept Index
fr: Index des concepts

note: type: menuentry
en: Concepts.
fr: Les concepts.

note: type: unnumbered
en: Programming Index
fr: Index de programmation

note: type: menuentry
en: Data types, functions, and variables.
fr: Types de données, fonctions et variables.

note: type: menuentry
en: --- The Detailed Node Listing ---
fr: --- Liste détaillée des nœuds ---

note: type: section
en: Managing Software the Guix Way
fr: Gérer ses logiciels avec Guix

note: type: menuentry
en: What's special.
fr: Ce qui est spécial.

note: type: section
en: GNU Distribution
fr: Distribution GNU

note: type: menuentry
en: The packages and tools.
fr: Les paquets et les outils.

note: type: section
en: Binary Installation
fr: Installation binaire

note: type: menuentry
en: Getting Guix running in no time!
fr: Commencer à utiliser Guix en un rien de temps !

note: type: section
en: Requirements
fr: Prérequis

note: type: menuentry
en: Software needed to build and run Guix.
fr: Logiciels requis pour construire et lancer Guix.

note: type: section
en: Running the Test Suite
fr: Lancer la suite de tests

note: type: menuentry
en: Testing Guix.
fr: Tester Guix.

note: type: section
en: Setting Up the Daemon
fr: Paramétrer le démon

note: type: menuentry
en: Preparing the build daemon's environment.
fr: Préparer l'environnement du démon de construction.

note: type: node
en: Invoking guix-daemon
fr: Invoquer guix-daemon

note: type: menuentry
en: Running the build daemon.
fr: Lancer le démon de construction.

note: type: section
en: Application Setup
fr: Réglages applicatifs

note: type: menuentry
en: Application-specific setup.
fr: Réglages spécifiques pour les application.

note: type: section
en: Upgrading Guix
fr: Mettre à niveau Guix

note: type: menuentry
en: Upgrading Guix and its build daemon.
fr: Mettre à niveau Guix et son démon de construction.

note: type: subsection
en: Build Environment Setup
fr: Réglages de l'environnement de construction

note: type: menuentry
en: Preparing the isolated build environment.
fr: Préparer l'environnement de construction isolé.

note: type: node
en: Daemon Offload Setup
fr: Réglages du déchargement du démon

note: type: menuentry
en: Offloading builds to remote machines.
fr: Envoyer des constructions à des machines distantes.

note: type: subsection
en: SELinux Support
fr: Support de SELinux

note: type: menuentry
en: Using an SELinux policy for the daemon.
fr: Utiliser une politique SELinux pour le démon.

note: type: menuentry
en: What you can expect.
fr: Ce à quoi vous attendre.

note: type: section
en: Hardware Considerations
fr: Considérations matérielles

note: type: menuentry
en: Supported hardware.
fr: Matériel supporté.

note: type: section
en: USB Stick and DVD Installation
fr: Installation depuis une clef USB ou un DVD

note: type: menuentry
en: Preparing the installation medium.
fr: Préparer le média d'installation.

note: type: section
en: Preparing for Installation
fr: Préparer l'installation

note: type: menuentry
en: Networking, partitioning, etc.
fr: Réseau, partitionnement, etc.

note: type: section
en: Guided Graphical Installation
fr: Installation graphique guidée

note: type: menuentry
en: Easy graphical installation.
fr: Installation graphique facile.

note: type: section
en: Manual Installation
fr: Installation manuelle

note: type: menuentry
en: Manual installation for wizards.
fr: Installation manuelle pour les sorciers.

note: type: section
en: After System Installation
fr: Après l'installation du système

note: type: menuentry
en: When installation succeeded.
fr: Une fois que l'installation a réussi.

note: type: node
en: Installing Guix in a VM
fr: Installer Guix dans une VM

note: type: menuentry
en: Guix System playground.
fr: Jouer avec le système Guix.

note: type: section
en: Building the Installation Image
fr: Construire l'image d'installation

note: type: menuentry
en: How this comes to be.
fr: D'où vient tout cela.

note: type: section
en: Chrooting into an existing system
fr: Chrooter dans un système existant

note: type: menuentry
en: Fixing things from a chroot
fr: Corriger les problème depuis un chroot

note: type: node
en: Keyboard Layout and Networking and Partitioning
fr: Disposition du clavier réseau et partitionnement

note: type: menuentry
en: Initial setup.
fr: Paramètres initiaux.

note: type: subsection
en: Proceeding with the Installation
fr: Effectuer l'installation

note: type: menuentry
en: Installing.
fr: Installer.

note: type: section
en: Features
fr: Fonctionnalités

note: type: menuentry
en: How Guix will make your life brighter.
fr: Comment Guix va rendre votre vie plus heureuse.

note: type: node
en: Invoking guix package
fr: Invoquer guix package

note: type: menuentry
en: Package installation, removal, etc.
fr: Installation, suppression, etc.@: de paquets.

note: type: section
en: Substitutes
fr: Substituts

note: type: menuentry
en: Downloading pre-built binaries.
fr: Télécharger des binaire déjà construits.

note: type: section
en: Packages with Multiple Outputs
fr: Des paquets avec plusieurs résultats

note: type: menuentry
en: Single source package, multiple outputs.
fr: Un seul paquet source, plusieurs résultats.

note: type: node
en: Invoking guix gc
fr: Invoquer guix gc

note: type: menuentry
en: Running the garbage collector.
fr: Lancer le ramasse-miettes.

note: type: node
en: Invoking guix pull
fr: Invoquer guix pull

note: type: menuentry
en: Fetching the latest Guix and distribution.
fr: Récupérer la dernière version de Guix et de la distribution.

note: type: node
en: Invoking guix time-machine
fr: Invoquer guix time-machine

note: type: menuentry
en: Running an older revision of Guix.
fr: Lancer une ancienne révision de Guix.

note: type: section
en: Inferiors
fr: Inférieurs

note: type: menuentry
en: Interacting with another revision of Guix.
fr: Interagir avec une autre révision de Guix.

note: type: node
en: Invoking guix describe
fr: Invoquer guix describe

note: type: menuentry
en: Display information about your Guix revision.
fr: Affiche des informations sur la révision Guix actuelle.

note: type: node
en: Invoking guix archive
fr: Invoquer guix archive

note: type: menuentry
en: Exporting and importing store files.
fr: Exporter et importer des fichiers du dépôt.

note: type: subsection
en: Official Substitute Servers
fr: Serveur de substituts officiel

note: type: menuentry
en: One particular source of substitutes.
fr: Une source particulière de substituts.

note: type: subsection
en: Substitute Server Authorization
fr: Autoriser un serveur de substituts

note: type: menuentry
en: How to enable or disable substitutes.
fr: Comment activer ou désactiver les substituts.

note: type: subsection
en: Getting Substitutes from Other Servers
fr: Récupérer des substituts d'autres serveurs

note: type: menuentry
en: Substitute diversity.
fr: Diversité des substituts.

note: type: subsection
en: Substitute Authentication
fr: Authentification des substituts

note: type: menuentry
en: How Guix verifies substitutes.
fr: Comment Guix vérifie les substituts.

note: type: subsection
en: Proxy Settings
fr: Paramètres de serveur mandataire

note: type: menuentry
en: How to get substitutes via proxy.
fr: Comment récupérer des substituts à travers un serveur mandataire.

note: type: subsection
en: Substitution Failure
fr: Échec de substitution

note: type: menuentry
en: What happens when substitution fails.
fr: Qu'arrive-t-il quand la substitution échoue.

note: type: subsection
en: On Trusting Binaries
fr: De la confiance en des binaires

note: type: menuentry
en: How can you trust that binary blob?
fr: Comment pouvez-vous avoir confiance en un paquet binaire ?

note: type: section
en: Specifying Additional Channels
fr: Spécifier des canaux supplémentaires

note: type: menuentry
en: Extending the package collection.
fr: Personnaliser la collection des paquets.

note: type: section
en: Using a Custom Guix Channel
fr: Utiliser un canal Guix personnalisé

note: type: menuentry
en: Using a customized Guix.
fr: Utiliser un canal Guix personnalisé.

note: type: section
en: Replicating Guix
fr: Répliquer Guix

note: type: menuentry
en: Running the @emph{exact same} Guix.
fr: Exécution de @emph{exactement le même} Guix.

note: type: section
en: Channel Authentication
fr: Authentification des canaux

note: type: menuentry
en: How Guix verifies what it fetches.
fr: Comment Guix vérifie ce qu'il va chercher.

note: type: section
en: Channels with Substitutes
fr: Canaux avec des substituts

note: type: menuentry
en: Using channels with available substitutes.
fr: Utiliser des canaux dont les substituts sont disponibles.

note: type: section
en: Creating a Channel
fr: Écrire de nouveaux de canaux

note: type: menuentry
en: How to write your custom channel.
fr: Comment écrire votre canal personnalisé.

note: type: section
en: Package Modules in a Sub-directory
fr: Modules de paquets dans un sous-répertoire

note: type: menuentry
en: Specifying the channel's package modules location.
fr: Préciser l'emplacement des modules de paquets du canal.

note: type: section
en: Declaring Channel Dependencies
fr: Déclarer des dépendances de canaux

note: type: menuentry
en: How to depend on other channels.
fr: Comment dépendre d'autres canaux.

note: type: section
en: Specifying Channel Authorizations
fr: Spécifier les autorisations des canaux

note: type: menuentry
en: Defining channel authors authorizations.
fr: Définir les autorisations des auteurs des canaux.

note: type: section
en: Primary URL
fr: URL primaire

note: type: menuentry
en: Distinguishing mirror to original.
fr: Miroir distinctif de l'original.

note: type: section
en: Writing Channel News
fr: Écrire des nouveautés de canaux

note: type: menuentry
en: Communicating information to channel's users.
fr: Communiquer des informations aux utilisateurs du canal.

note: type: node
en: Invoking guix shell
fr: Invoquer guix shell

note: type: menuentry
en: Spawning one-off software environments.
fr: Créer des environnements logiciels à usage unique.

note: type: node
en: Invoking guix environment
fr: Invoquer guix environment

note: type: menuentry
en: Setting up development environments.
fr: Mettre en place des environnements de développement.

note: type: node
en: Invoking guix pack
fr: Invoquer guix pack

note: type: menuentry
en: Creating software bundles.
fr: Créer des lots de logiciels.

note: type: section
en: The GCC toolchain
fr: La chaîne d'outils GCC

note: type: menuentry
en: Working with languages supported by GCC.
fr: Travailler avec les langages pris en charge par GCC.

note: type: node
en: Invoking guix git authenticate
fr: Invoquer guix git authenticate

note: type: menuentry
en: Authenticating Git repositories.
fr: Authentification des dépôts Git.

note: type: section
en: Package Modules
fr: Modules de paquets

note: type: menuentry
en: Packages from the programmer's viewpoint.
fr: Les paquets du point de vu du programmeur.

note: type: section
en: Defining Packages
fr: Définition des paquets

note: type: menuentry
en: Defining new packages.
fr: Définir de nouveaux paquets.

note: type: section
en: Defining Package Variants
fr: Définition de variantes de paquets

note: type: menuentry
en: Customizing packages.
fr: Créer des paquets personnalisés.

note: type: section
en: Writing Manifests
fr: Écrire un manifeste

note: type: menuentry
en: The bill of materials of your environment.
fr: La nomenclature de votre environnement.

note: type: section
en: Build Systems
fr: Systèmes de construction

note: type: menuentry
en: Specifying how packages are built.
fr: Spécifier comment construire les paquets.

note: type: subsection
en: Build Phases
fr: Phases de construction

note: type: menuentry
en: Phases of the build process of a package.
fr: Phases du processus de construction d'un paquet.

note: type: section
en: Build Utilities
fr: Utilitaires de construction

note: type: menuentry
en: Helpers for your package definitions and more.
fr: Des aides pour les définitions de vos paquets et plus encore.

note: type: section
en: Search Paths
fr: Chemins de recherche

note: type: menuentry
en: Declaring search path environment variables.
fr: Déclarer les variables d'environnements pour les chemins de recherche.

note: type: section
en: The Store
fr: Le dépôt

note: type: menuentry
en: Manipulating the package store.
fr: Manipuler le dépôt de paquets.

note: type: section
en: Derivations
fr: Dérivations

note: type: menuentry
en: Low-level interface to package derivations.
fr: Interface de bas-niveau avec les dérivations de paquets.

note: type: section
en: The Store Monad
fr: La monade du dépôt

note: type: menuentry
en: Purely functional interface to the store.
fr: Interface purement fonctionnelle avec le dépôt.

note: type: menuentry
en: Manipulating build expressions.
fr: Manipuler les expressions de construction.

note: type: node
en: Invoking guix repl
fr: Invoquer guix repl

note: type: menuentry
en: Programming Guix in Guile.
fr: Programmer Guix dans Guile.

note: type: section
en: Using Guix Interactively
fr: Utiliser Guix de manière interactive

note: type: menuentry
en: Fine-grain interaction at the REPL.
fr: Interaction fine à travers la REPL.

note: type: node
en: package Reference
fr: référence de package

note: type: menuentry
en: The package data type.
fr: Le type de donnée des paquets.

note: type: node
en: origin Reference
fr: référence de origin

note: type: menuentry
en: The origin data type.
fr: Le type de données d'origine.

note: type: node
en: Invoking guix build
fr: Invoquer guix build

note: type: menuentry
en: Building packages from the command line.
fr: Construire des paquets depuis la ligne de commande.

note: type: node
en: Invoking guix edit
fr: Invoquer guix edit

note: type: menuentry
en: Editing package definitions.
fr: Modifier les définitions de paquets.

note: type: node
en: Invoking guix download
fr: Invoquer guix download

note: type: menuentry
en: Downloading a file and printing its hash.
fr: Télécharger un fichier et afficher son hash.

note: type: node
en: Invoking guix hash
fr: Invoquer guix hash

note: type: menuentry
en: Computing the cryptographic hash of a file.
fr: Calculer le hash cryptographique d'un fichier.

note: type: node
en: Invoking guix import
fr: Invoquer guix import

note: type: menuentry
en: Importing package definitions.
fr: Importer des définitions de paquets.

note: type: node
en: Invoking guix refresh
fr: Invoquer guix refresh

note: type: menuentry
en: Updating package definitions.
fr: Mettre à jour les définitions de paquets.

note: type: node
en: Invoking guix style
fr: Invoquer guix style

note: type: menuentry
en: Styling package definitions.
fr: Modifier le style des définitions de paquets.

note: type: node
en: Invoking guix lint
fr: Invoquer guix lint

note: type: menuentry
en: Finding errors in package definitions.
fr: Trouver des erreurs dans les définitions de paquets.

note: type: node
en: Invoking guix size
fr: Invoquer guix size

note: type: menuentry
en: Profiling disk usage.
fr: Profiler l'utilisation du disque.

note: type: node
en: Invoking guix graph
fr: Invoquer guix graph

note: type: menuentry
en: Visualizing the graph of packages.
fr: Visualiser le graphe des paquets.

note: type: node
en: Invoking guix publish
fr: Invoquer guix publish

note: type: menuentry
en: Sharing substitutes.
fr: Partager des substituts.

note: type: node
en: Invoking guix challenge
fr: Invoquer guix challenge

note: type: menuentry
en: Challenging substitute servers.
fr: Défier les serveurs de substituts.

note: type: node
en: Invoking guix copy
fr: Invoquer guix copy

note: type: menuentry
en: Copying to and from a remote store.
fr: Copier vers et depuis un dépôt distant.

note: type: node
en: Invoking guix container
fr: Invoquer guix container

note: type: menuentry
en: Process isolation.
fr: Isolation de processus.

note: type: node
en: Invoking guix weather
fr: Invoquer guix weather

note: type: menuentry
en: Assessing substitute availability.
fr: Mesurer la disponibilité des substituts.

note: type: node
en: Invoking guix processes
fr: Invoquer guix processes

note: type: menuentry
en: Listing client processes.
fr: Lister les processus clients.

note: type: section
en: Invoking @command{guix build}
fr: Invoquer @command{guix build}

note: type: subsection
en: Common Build Options
fr: Options de construction communes

note: type: menuentry
en: Build options for most commands.
fr: Options de construction pour la plupart des commandes.

note: type: subsection
en: Package Transformation Options
fr: Options de transformation de paquets

note: type: menuentry
en: Creating variants of packages.
fr: Créer des variantes de paquets.

note: type: subsection
en: Additional Build Options
fr: Options de construction supplémentaires

note: type: menuentry
en: Options specific to 'guix build'.
fr: Options spécifiques à « guix build ».

note: type: subsection
en: Debugging Build Failures
fr: Débogage des échecs de construction

note: type: menuentry
en: Real life packaging experience.
fr: L'empaquetage dans la vraie vie.

note: type: section
en: Cross-Compilation
fr: Compilation croisée

note: type: menuentry
en: Cross-compiling for another architecture.
fr: Compilation croisée pour une autre architecture.

note: type: section
en: Native Builds
fr: Constructions natives

note: type: menuentry
en: Targeting another architecture through native builds.
fr: Cibler une autre architecture à travers des constructions natives.

note: type: section
en: Using the Configuration System
fr: Utiliser le système de configuration

note: type: menuentry
en: Customizing your GNU system.
fr: Personnaliser votre système GNU@.

note: type: node
en: operating-system Reference
fr: référence de operating-system

note: type: menuentry
en: Detail of operating-system declarations.
fr: Détail sur la déclaration de système d'exploitation.

note: type: section
en: File Systems
fr: Systèmes de fichiers

note: type: menuentry
en: Configuring file system mounts.
fr: Configurer les montages de systèmes de fichiers.

note: type: section
en: Mapped Devices
fr: Périphériques mappés

note: type: menuentry
en: Block device extra processing.
fr: Gestion des périphériques de bloc.

note: type: section
en: Swap Space
fr: Espace d'échange

note: type: menuentry
en: Backing RAM with disk space.
fr: Complémenter la RAM avec de l'espace disque.

note: type: section
en: User Accounts
fr: Comptes utilisateurs

note: type: menuentry
en: Specifying user accounts.
fr: Spécifier des comptes utilisateurs.

note: type: section
en: Keyboard Layout
fr: Disposition du clavier

note: type: menuentry
en: How the system interprets key strokes.
fr: La manière dont le système interprète les touches du clavier.

note: type: section
en: Locales
fr: Régionalisation

note: type: menuentry
en: Language and cultural convention settings.
fr: Paramétrer la langue et les conventions culturelles.

note: type: menuentry
en: Specifying system services.
fr: Spécifier les services du système.

note: type: section
en: Setuid Programs
fr: Programmes setuid

note: type: menuentry
en: Programs running with elevated privileges.
fr: Programmes tournant avec des privilèges élevés.

note: type: section
en: X.509 Certificates
fr: Certificats X.509

note: type: menuentry
en: Authenticating HTTPS servers.
fr: Authentifier les serveurs HTTPS@.

note: type: menuentry
en: Configuring libc's name service switch.
fr: Configurer le « name service switch » de la libc.

note: type: section
en: Initial RAM Disk
fr: Disque de RAM initial

note: type: menuentry
en: Linux-Libre bootstrapping.
fr: Démarrage de Linux-Libre.

note: type: section
en: Bootloader Configuration
fr: Configuration du chargeur d'amorçage

note: type: menuentry
en: Configuring the boot loader.
fr: Configurer le chargeur d'amorçage.

note: type: node
en: Invoking guix system
fr: Invoquer guix system

note: type: menuentry
en: Instantiating a system configuration.
fr: Instantier une configuration du système.

note: type: node
en: Invoking guix deploy
fr: Invoquer guix deploy

note: type: menuentry
en: Deploying a system configuration to a remote host.
fr: Deployer une configuration du système sur un hôte distant.

note: type: node
en: Running Guix in a VM
fr: Lancer Guix dans une VM

note: type: menuentry
en: How to run Guix System in a virtual machine.
fr: Comment lancer Guix dans une machine virtuelle.

note: type: section
en: Defining Services
fr: Définir des services

note: type: menuentry
en: Adding new service definitions.
fr: Ajouter de nouvelles définitions de services.

note: type: menuentry
en: Home Environment Configuration
fr: Configuration de l'environnement personnel

note: type: node
en: Invoking guix home
fr: Invoquer guix home

note: type: menuentry
en: Instantiating a home environment configuration.
fr: Instancier une configuration de l'environnement personnel.

note: type: subsection
en: Base Services
fr: Services de base

note: type: menuentry
en: Essential system services.
fr: Services systèmes essentiels.

note: type: subsection
en: Scheduled Job Execution
fr: Exécution de tâches planifiées

note: type: menuentry
en: The mcron service.
fr: Le service mcron.

note: type: subsection
en: Log Rotation
fr: Rotation des journaux

note: type: menuentry
en: The rottlog service.
fr: Le service rottlog.

note: type: subsection
en: Networking Setup
fr: Configuration du réseau

note: type: menuentry
en: Setting up network interfaces.
fr: Paramétrage des interfaces réseau.

note: type: subsection
en: Networking Services
fr: Services réseau

note: type: menuentry
en: Firewall, SSH daemon, etc.
fr: Pare-feu, démon SSH, etc.

note: type: subsection
en: Unattended Upgrades
fr: Mises à jour non surveillées (Unattended Upgrades)

note: type: menuentry
en: Automated system upgrades.
fr: Mise à jour du système automatisé.

note: type: subsection
en: X Window
fr: Système de fenêtrage X

note: type: menuentry
en: Graphical display.
fr: Affichage graphique.

note: type: subsection
en: Printing Services
fr: Services d'impression

note: type: menuentry
en: Local and remote printer support.
fr: Support pour les imprimantes locales et distantes.

note: type: subsection
en: Desktop Services
fr: Services de bureaux

note: type: menuentry
en: D-Bus and desktop services.
fr: D-Bus et les services de bureaux.

note: type: subsection
en: Sound Services
fr: Services de son

note: type: menuentry
en: ALSA and Pulseaudio services.
fr: Services ALSA et Pulseaudio.

note: type: subsection
en: Database Services
fr: Services de bases de données

note: type: menuentry
en: SQL databases, key-value stores, etc.
fr: Bases SQL, clefs-valeurs, etc.

note: type: subsection
en: Mail Services
fr: Services de courriels

note: type: menuentry
en: IMAP, POP3, SMTP, and all that.
fr: IMAP, POP3, SMTP, et tout ça.

note: type: subsection
en: Messaging Services
fr: Services de messagerie

note: type: menuentry
en: Messaging services.
fr: Services de messagerie.

note: type: subsection
en: Telephony Services
fr: Services de téléphonie

note: type: menuentry
en: Telephony services.
fr: Services de téléphonie.

note: type: subsection
en: Monitoring Services
fr: Services de surveillance

note: type: menuentry
en: Monitoring services.
fr: Services de surveillance.

note: type: subsection
en: Kerberos Services
fr: Services Kerberos

note: type: menuentry
en: Kerberos services.
fr: Services Kerberos.

note: type: subsection
en: LDAP Services
fr: Services LDAP

note: type: menuentry
en: LDAP services.
fr: Services LDAP.

note: type: subsection
en: Web Services
fr: Services web

note: type: menuentry
en: Web servers.
fr: Services web.

note: type: subsection
en: Certificate Services
fr: Services de certificats

note: type: menuentry
en: TLS certificates via Let's Encrypt.
fr: Certificats TLS via Let's Encrypt.

note: type: subsection
en: DNS Services
fr: Services DNS

note: type: menuentry
en: DNS daemons.
fr: Démons DNS@.

note: type: subsection
en: VPN Services
fr: Services VPN

note: type: menuentry
en: VPN daemons.
fr: Démons VPN.

note: type: node
en: Network File System
fr: Système de fichiers en réseau

note: type: menuentry
en: NFS related services.
fr: Services liés à NFS@.

note: type: subsection
en: Samba Services
fr: Services Samba

note: type: menuentry
en: Samba services.
fr: Services Samba.

note: type: subsection
en: Continuous Integration
fr: Intégration continue

note: type: menuentry
en: Cuirass and Laminar services.
fr: Les services Cuirass et Laminar.

note: type: subsection
en: Power Management Services
fr: Services de gestion de l'énergie

note: type: menuentry
en: Extending battery life.
fr: Augmenter la durée de vie de la batterie.

note: type: subsection
en: Audio Services
fr: Services audio

note: type: menuentry
en: The MPD.
fr: MPD@.

note: type: subsection
en: Virtualization Services
fr: Services de virtualisation

note: type: menuentry
en: Virtualization services.
fr: Services de virtualisation.

note: type: subsection
en: Version Control Services
fr: Services de contrôle de version

note: type: menuentry
en: Providing remote access to Git repositories.
fr: Fournit des accès distants à des dépôts Git.

note: type: subsection
en: Game Services
fr: Services de jeu

note: type: menuentry
en: Game servers.
fr: Serveurs de jeu.

note: type: subsection
en: PAM Mount Service
fr: Service PAM de montage

note: type: menuentry
en: Service to mount volumes when logging in.
fr: Service pour monter des volumes quand vous vous connectez.

note: type: subsection
en: Guix Services
fr: Services Guix

note: type: menuentry
en: Services relating specifically to Guix.
fr: Services liés spécifiquement à Guix.

note: type: subsection
en: Linux Services
fr: Services Linux

note: type: menuentry
en: Services tied to the Linux kernel.
fr: Services liés au noyau Linux.

note: type: subsection
en: Hurd Services
fr: Services Hurd

note: type: menuentry
en: Services specific for a Hurd System.
fr: Services spécifiques pour un système Hurd.

note: type: subsection
en: Miscellaneous Services
fr: Services divers

note: type: menuentry
en: Other services.
fr: D'autres services.

note: type: subsection
en: Service Composition
fr: Composition de services

note: type: menuentry
en: The model for composing services.
fr: Le modèle de composition des services.

note: type: subsection
en: Service Types and Services
fr: Types service et services

note: type: menuentry
en: Types and services.
fr: Types et services.

note: type: subsection
en: Service Reference
fr: Référence de service

note: type: menuentry
en: API reference.
fr: Référence de l'API@.

note: type: subsection
en: Shepherd Services
fr: Services Shepherd

note: type: menuentry
en: A particular type of service.
fr: Un type de service particulier.

note: type: subsection
en: Complex Configurations
fr: Configurations complexes

note: type: menuentry
en: Defining bindings for complex configurations.
fr: Définir des liaisons pour les configurations complexes.

note: type: node
en: platform Reference
fr: référence de platform

note: type: menuentry
en: Detail of platform declarations.
fr: Détail sur la déclaration de plateforme.

note: type: section
en: Supported Platforms
fr: Plateformes prises en charge

note: type: menuentry
en: Description of the supported platforms.
fr: Description des plateformes prises en charge.

note: type: node
en: image Reference
fr: référence de image

note: type: menuentry
en: Detail of image declarations.
fr: Détail sur la déclaration d'image.

note: type: section
en: Instantiate an Image
fr: Instancier une image

note: type: menuentry
en: How to instantiate an image record.
fr: Comment instancier un enregistrement d'image.

note: type: section
en: image-type Reference
fr: référence de image-type

note: type: menuentry
en: Detail of image types declaration.
fr: Détail sur la déclaration des types d'image.

note: type: section
en: Image Modules
fr: Modules des images

note: type: menuentry
en: Definition of image modules.
fr: Définitions de modules d'images.

note: type: section
en: Separate Debug Info
fr: Informations de débogage séparées

note: type: menuentry
en: Installing 'debug' outputs.
fr: Installer les fichiers de débogage.

note: type: section
en: Rebuilding Debug Info
fr: Reconstruire les informations de débogage

note: type: menuentry
en: Building missing debug info.
fr: Construire les informations manquantes de débogage.

note: type: node
en: Reduced Binary Seed Bootstrap
fr: Binary Seed Bootstrap réduit

note: type: menuentry
en: A Bootstrap worthy of GNU.
fr: Un Bootstrap digne de GNU.

note: type: section
en: Preparing to Use the Bootstrap Binaries
fr: Se préparer à utiliser les binaires de bootstrap

note: type: menuentry
en: Building that what matters most.
fr: Construire ce qui compte le plus.

note: type: cindex
en: purpose
fr: but

note: type: Plain text
en: GNU Guix@footnote{``Guix'' is pronounced like ``geeks'', or ``ɡiːks'' using the international phonetic alphabet (IPA).} is a package management tool for and distribution of the GNU system.  Guix makes it easy for unprivileged users to install, upgrade, or remove software packages, to roll back to a previous package set, to build packages from source, and generally assists with the creation and maintenance of software environments.
fr: GNU Guix@footnote{« Guix » se prononce comme « geeks » (en prononçant le « s »), ou « ɡiːks » dans l'alphabet phonétique international (API).} est un outil de gestion de paquets et une distribution pour le système GNU@.  Guix facilite pour les utilisateur·rice·s non privilégié·e·s l'installation, la mise à jour et la suppression de paquets, la restauration à un ensemble de paquets précédent, la construction de paquets depuis les sources et plus généralement aide à la création et à la maintenance d'environnements logiciels.

note: type: cindex
en: Guix System
fr: Système Guix

note: type: cindex
en: GuixSD, now Guix System
fr: GuixSD, maintenant le système Guix

note: type: cindex
en: Guix System Distribution, now Guix System
fr: Distribution Système Guix, maintenant le système Guix

note: type: Plain text
en: You can install GNU@tie{}Guix on top of an existing GNU/Linux system where it complements the available tools without interference (@pxref{Installation}), or you can use it as a standalone operating system distribution, @dfn{Guix@tie{}System}@footnote{We used to refer to Guix System as ``Guix System Distribution'' or ``GuixSD''.  We now consider it makes more sense to group everything under the ``Guix'' banner since, after all, Guix System is readily available through the @command{guix system} command, even if you're using a different distro underneath!}.  @xref{GNU Distribution}.
fr: Vous pouvez installer GNU@tie{}Guix sur un système GNU/Linux existant pour compléter les outils disponibles sans interférence (@pxref{Installation}) ou vous pouvez l'utiliser comme distribution système indépendante, @dfn{Guix System}@footnote{Nous appelions par le passé le système Guix « la distribution système Guix » ou « GuixSD ».  Nous considérons maintenant qu'il est plus pertinent de tout regrouper sous la bannière de « Guix » comme, après tout, Guix System est directement disponible sous la commande @command{guix system}, meme si vous utilisez une autre distro en dessous !}.  @xref{GNU Distribution}.

note: type: cindex
en: user interfaces
fr: interfaces utilisateur·rice

note: type: Plain text
en: Guix provides a command-line package management interface (@pxref{Package Management}), tools to help with software development (@pxref{Development}), command-line utilities for more advanced usage (@pxref{Utilities}), as well as Scheme programming interfaces (@pxref{Programming Interface}).
fr: Guix fournit une interface de gestion des paquets par la ligne de commande (@pxref{Package Management}), des outils pour aider au développement logiciel (@pxref{Development}), des utilitaires en ligne de commande pour des utilisations plus avancées (@pxref{Utilities}) ainsi que des interfaces de programmation Scheme (@pxref{Programming Interface}).

note: type: cindex
en: build daemon
fr: démon de construction

note: type: Plain text
en: Its @dfn{build daemon} is responsible for building packages on behalf of users (@pxref{Setting Up the Daemon}) and for downloading pre-built binaries from authorized sources (@pxref{Substitutes}).
fr: Son @dfn{démon de construction} est responsable de la construction des paquets pour les utilisateur·rice·s (@pxref{Paramétrer le démon}) et du téléchargement des binaires pré-construits depuis les sources autorisées (@pxref{Substituts}).

note: type: cindex
en: extensibility of the distribution
fr: extensibilité de la distribution

note: type: cindex
en: customization, of packages
fr: personnalisation, des paquets

note: type: Plain text
en: Guix includes package definitions for many GNU and non-GNU packages, all of which @uref{https://www.gnu.org/philosophy/free-sw.html, respect the user's computing freedom}.  It is @emph{extensible}: users can write their own package definitions (@pxref{Defining Packages}) and make them available as independent package modules (@pxref{Package Modules}).  It is also @emph{customizable}: users can @emph{derive} specialized package definitions from existing ones, including from the command line (@pxref{Package Transformation Options}).
fr: Guix contient de nombreuses définitions de paquet GNU et non-GNU qui respectent tous les @uref{https://www.gnu.org/philosophy/free-sw.fr.html, libertés de l'utilisateur ou utilisatrice}.  Il est @emph{extensible}  : chacun·e peut écrire ses propres définitions de paquets (@pxref{Defining Packages}) et les rendre disponibles dans des modules de paquets indépendants (@pxref{Package Modules}).  Il est aussi @emph{personnalisable} : on peut @emph{dériver} des définitions de paquets spécialisées à partir de définitions existantes, même depuis la ligne de commande (@pxref{Package Transformation Options}).

note: type: cindex
en: functional package management
fr: gestion de paquet fonctionnelle

note: type: Plain text
en: Under the hood, Guix implements the @dfn{functional package management} discipline pioneered by Nix (@pxref{Acknowledgments}).  In Guix, the package build and installation process is seen as a @emph{function}, in the mathematical sense.  That function takes inputs, such as build scripts, a compiler, and libraries, and returns an installed package.  As a pure function, its result depends solely on its inputs---for instance, it cannot refer to software or scripts that were not explicitly passed as inputs.  A build function always produces the same result when passed a given set of inputs.  It cannot alter the environment of the running system in any way; for instance, it cannot create, modify, or delete files outside of its build and installation directories.  This is achieved by running build processes in isolated environments (or @dfn{containers}), where only their explicit inputs are visible.
fr: Sous le capot, Guix implémente la discipline de @dfn{gestion de paquet fonctionnel} inventé par Nix (@pxref{Remerciements}).  Dans Guix le processus de construction et d'installation des paquets est vu comme une @emph{fonction} dans le sens mathématique du terme.  Cette fonction a des entrées (comme des scripts de construction, un compilateur et des bibliothèques) et renvoie un paquet installé.  En tant que fonction pure, son résultat ne dépend que de ses entrées.  Par exemple, il ne peut pas faire référence à des logiciels ou des scripts qui n'ont pas été explicitement passés en entrée.  Une fonction de construction produit toujours le même résultat quand on lui donne le même ensemble d'entrée.  Elle ne peut pas modifier l'environnement du système en cours d'exécution d'aucune manière ; par exemple elle ne peut pas créer, modifier ou supprimer des fichiers en dehors de ses répertoires de construction et d'installation.  Ce résultat s'obtient en lançant les processus de construction dans des environnements isolés (ou des @dfn{conteneurs}) où seules les entrées explicites sont visibles.

note: type: cindex
en: store
fr: dépôt

note: type: Plain text
en: The result of package build functions is @dfn{cached} in the file system, in a special directory called @dfn{the store} (@pxref{The Store}).  Each package is installed in a directory of its own in the store---by default under @file{/gnu/store}.  The directory name contains a hash of all the inputs used to build that package; thus, changing an input yields a different directory name.
fr: Le résultat des fonctions de construction de paquets est mis en @dfn{cache} dans le système de fichier, dans répertoire spécial appelé le @dfn{dépôt} (@pxref{The Store}).  Chaque paquet est installé dans son répertoire propre dans le dépôt — par défaut dans @file{/gnu/store}.  Le nom du répertoire contient un hash de toutes les entrées utilisées pour construire le paquet ; ainsi, changer une entrée donnera un nom de répertoire différent.

note: type: Plain text
en: This approach is the foundation for the salient features of Guix: support for transactional package upgrade and rollback, per-user installation, and garbage collection of packages (@pxref{Features}).
fr: Cette approche est le fondement des fonctionnalités les plus importante de Guix : le support des mises à jour des paquets et des retours en arrière transactionnels, l'installation différenciée par utilisateur·rice et le ramassage de miettes pour les paquets (@pxref{Fonctionnalités}).

note: type: Plain text
en: Guix comes with a distribution of the GNU system consisting entirely of free software@footnote{The term ``free'' here refers to the @url{https://www.gnu.org/philosophy/free-sw.html,freedom provided to users of that software}.}.  The distribution can be installed on its own (@pxref{System Installation}), but it is also possible to install Guix as a package manager on top of an installed GNU/Linux system (@pxref{Installation}).  When we need to distinguish between the two, we refer to the standalone distribution as Guix@tie{}System.
fr: Guix fournit aussi une distribution du système GNU contenant uniquement des logiciels libres@footnote{Le terme « libre » se réfère ici bien sûr à @url{http://www.gnu.org/philosophy/free-sw.fr.html,la liberté offerte à la personne qui utilise ces logiciels}.}.  On peut installer la distribution elle-même (@pxref{System Installation}), mais on peut aussi installer Guix comme gestionnaire de paquets par dessus un système GNU/Linux déjà installé (@pxref{Installation}).  Pour distinguer ces deux cas, on appelle la distribution autonome le « système Guix » ou Guix@tie{}System.

note: type: Plain text
en: The distribution provides core GNU packages such as GNU libc, GCC, and Binutils, as well as many GNU and non-GNU applications.  The complete list of available packages can be browsed @url{https://www.gnu.org/software/guix/packages,on-line} or by running @command{guix package} (@pxref{Invoking guix package}):
fr: La distribution fournit les paquets cœur de GNU comme la GNU libc, GCC et Binutils, ainsi que de nombreuses applications GNU et non-GNU.  La liste complète des paquets disponibles se trouve @url{http://www.gnu.org/software/guix/packages,en ligne} ou en lançant @command{guix package} (@pxref{Invoking guix package}) :

note: type: Plain text
en: Our goal is to provide a practical 100% free software distribution of Linux-based and other variants of GNU, with a focus on the promotion and tight integration of GNU components, and an emphasis on programs and tools that help users exert that freedom.
fr: Notre but est de fournir une distribution logicielle entièrement libre de GNU/Linux et d'autres variantes de GNU, en se concentrant sur la promotion et l'intégration étroite des composants GNU en insistant sur les programmes et les outils qui aident l'utilisateur·rice à exercer ses libertés.

note: type: Plain text
en: Packages are currently available on the following platforms:
fr: Les paquets sont actuellement disponibles pour les plateformes suivantes :

note: type: table
en: Intel/AMD @code{x86_64} architecture, Linux-Libre kernel.
fr: Intel/AMD @code{x86_64} avec le noyau Linux-libre.

note: type: table
en: Intel 32-bit architecture (IA32), Linux-Libre kernel.
fr: Architecture Intel 32 bits (IA32) avec le noyau Linux-libre.

note: type: table
en: ARMv7-A architecture with hard float, Thumb-2 and NEON, using the EABI hard-float application binary interface (ABI), and Linux-Libre kernel.
fr: L'architecture ARMv7-A avec gestion des flottants matérielle, Thumb-2 et NEON, avec l'interface binaire applicative (ABI) EABI hard-float et le noyau Linux-libre.

note: type: table
en: little-endian 64-bit ARMv8-A processors, Linux-Libre kernel.
fr: les processeurs 64 bits ARMv8-A en little-endian, avec le noyau Linux-libre.

note: type: table
en: @uref{https://hurd.gnu.org, GNU/Hurd} on the Intel 32-bit architecture (IA32).
fr: @uref{https://hurd.gnu.org, GNU/Hurd} sur l'architecture Intel 32-bit (IA32).

note: type: table
en: This configuration is experimental and under development.  The easiest way for you to give it a try is by setting up an instance of @code{hurd-vm-service-type} on your GNU/Linux machine (@pxref{transparent-emulation-qemu, @code{hurd-vm-service-type}}).  @xref{Contributing}, on how to help!
fr: Cette configuration en cours de développement est expérimentale. La manière la plus facile pour vous de l'essayer est de créer une instance @code{hurd-vm-service-type} sur votre machine GNU/Linux (@pxref{transparent-emulation-qemu, @code{hurd-vm-service-type}}).  @xref{Contributing}, sur la façon d'aider !

note: type: item
en: mips64el-linux (unsupported)
fr: mips64el-linux (non pris en charge)

note: type: table
en: little-endian 64-bit MIPS processors, specifically the Loongson series, n32 ABI, and Linux-Libre kernel.  This configuration is no longer fully supported; in particular, there is no ongoing work to ensure that this architecture still works.  Should someone decide they wish to revive this architecture then the code is still available.
fr: les processeurs MIPS 64 bits little-endian, en particulier la série Loongson, l'ABI n32 et le noyau Linux-Libre.  Cette configuration n'est plus entièrement prise en charge ; en particulier, il n'y a pas de travaux en cours pour s'assurer que cette architecture fonctionne encore. Si quelqu'un décide de faire revivre cette architecture, le code est toujours disponible.

note: type: item
en: powerpc-linux (unsupported)
fr: powerpc-linux (non pris en charge)

note: type: table
en: big-endian 32-bit PowerPC processors, specifically the PowerPC G4 with AltiVec support, and Linux-Libre kernel.  This configuration is not fully supported and there is no ongoing work to ensure this architecture works.
fr: les processeurs PowerPC 32 bits big-endian, en particulier  PowerPC G4 avec la prise en charge d'AltVec et le noyau Linux-Libre.  Cette configuration n'est pas entièrement prise en charge et il n'y a pas de travaux en cours pour s'assurer que cette architecture fonctionne.

note: type: table
en: little-endian 64-bit Power ISA processors, Linux-Libre kernel.  This includes POWER9 systems such as the @uref{https://www.fsf.org/news/talos-ii-mainboard-and-talos-ii-lite-mainboard-now-fsf-certified-to-respect-your-freedom, RYF Talos II mainboard}. This platform is available as a "technology preview": although it is supported, substitutes are not yet available from the build farm (@pxref{Substitutes}), and some packages may fail to build (@pxref{Tracking Bugs and Patches}).  That said, the Guix community is actively working on improving this support, and now is a great time to try it and get involved!
fr: Les processeurs little-endian et le noyau linux-Libre. Cela couvre les systèmes POWER9 comme @uref{https://www.fsf.org/news/talos-ii-mainboard-and-talos-ii-lite-mainboard-now-fsf-certified-to-respect-your-freedom, la carte mère Talos II certifiée RYF}. Cette plateforme est disponible en tant que « démonstrateur technique » : bien qu'elle soit prise en charge, les substituts ne sont pas encore disponibles dans notre ferme de construction (@pxref{Substitutes}) et certains paquets peuvent ne pas construire (@pxref{Tracking Bugs and Patches}). Cela dit, la communauté Guix travaille activement à améliorer cette prise en charge et c'est donc maintenant le bon moment pour l'essayer et participer !

note: type: table
en: little-endian 64-bit RISC-V processors, specifically RV64GC, and Linux-Libre kernel. This platform is available as a "technology preview": although it is supported, substitutes are not yet available from the build farm (@pxref{Substitutes}), and some packages may fail to build (@pxref{Tracking Bugs and Patches}).  That said, the Guix community is actively working on improving this support, and now is a great time to try it and get involved!
fr: Les processeurs RISC-V petit-boutistes, en particulier RV64GC, et le noyau linux-Libre. Cette plateforme est disponible en tant que « démonstrateur technique » : bien qu'elle soit prise en charge, les substituts ne sont pas encore disponibles dans notre ferme de construction (@pxref{Substitutes}) et certains paquets peuvent ne pas construire (@pxref{Tracking Bugs and Patches}). Cela dit, la communauté Guix travaille activement à améliorer cette prise en charge et c'est donc maintenant le bon moment pour l'essayer et participer !

note: type: Plain text
en: With Guix@tie{}System, you @emph{declare} all aspects of the operating system configuration and Guix takes care of instantiating the configuration in a transactional, reproducible, and stateless fashion (@pxref{System Configuration}).  Guix System uses the Linux-libre kernel, the Shepherd initialization system (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual}), the well-known GNU utilities and tool chain, as well as the graphical environment or system services of your choice.
fr: Avec Guix@tie{}System, vous @emph{déclarez} tous les aspects de la configuration du système d'exploitation et guix s'occupe d'instancier la configuration de manière transactionnelle, reproductible et sans état (@pxref{System Configuration}).  Guix System utilise le noyau Linux-libre, le système d'initialisation Shepherd (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual}), les outils GNU et la chaîne d'outils familière ainsi que l'environnement graphique et les services systèmes de votre choix.

note: type: Plain text
en: Guix System is available on all the above platforms except @code{mips64el-linux}, @code{powerpc-linux}, @code{powerpc64le-linux} and @code{riscv64-linux}.
fr: Guix System est disponible sur toutes les plateformes ci-dessus à part @code{mips64el-linux}, @code{powerpc-linux}, @code{powerpc64le-linux} et @code{riscv64-linux}.

note: type: Plain text
en: For information on porting to other architectures or kernels, @pxref{Porting}.
fr: Pour des informations sur comment porter vers d'autres architectures et d'autres noyau, @pxref{Porting}.

note: type: Plain text
en: Building this distribution is a cooperative effort, and you are invited to join! @xref{Contributing}, for information about how you can help.
fr: La construction de cette distribution est un effort collaboratif et nous vous invitons à nous rejoindre ! @xref{Contributing}, pour des informations sur la manière de nous aider.

note: type: cindex
en: installing Guix
fr: installer Guix

note: type: quotation
en: We recommend the use of this @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, shell installer script} to install Guix on top of a running GNU/Linux system, thereafter called a @dfn{foreign distro}.@footnote{This section is concerned with the installation of the package manager, which can be done on top of a running GNU/Linux system.  If, instead, you want to install the complete GNU operating system, @pxref{System Installation}.} The script automates the download, installation, and initial configuration of Guix.  It should be run as the root user.
fr: Nous vous recommandons d'utiliser ce @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, script shell d'installation} pour installer Guix sur un système GNU/Linux fonctionnel, que nous appelons une @dfn{distro externe}@footnote{Cette section s'occupe de l'installation du gestionnaire de paquet, ce qui peut se faire sur un système GNU/Linux existant.  Si vous voulez plutôt installer le système d'exploitation GNU complet, @pxref{System Installation}.}.  Le script automatise le téléchargement, l'installation et la configuration initiale de Guix.  Vous devez l'exécuter en tant que root.

note: type: cindex
en: foreign distro
fr: distro externe

note: type: cindex
en: directories related to foreign distro
fr: répertoires liés aux distro externes

note: type: Plain text
en: When installed on a foreign distro, GNU@tie{}Guix complements the available tools without interference.  Its data lives exclusively in two directories, usually @file{/gnu/store} and @file{/var/guix}; other files on your system, such as @file{/etc}, are left untouched.
fr: Lorsqu'il est installé sur une distro externe, GNU@tie{}Guix complète les outils disponibles sans interférence.  Ses données se trouvent exclusivement dans deux répertoires, typiquement @file{/gnu/store} et @file{/var/guix} ; les autres fichiers de votre système comme @file{/etc} sont laissés intacts.

note: type: Plain text
en: Once installed, Guix can be updated by running @command{guix pull} (@pxref{Invoking guix pull}).
fr: Une fois installé, Guix peut être mis à jour en lançant @command{guix pull} (@pxref{Invoking guix pull}).

note: type: Plain text
en: If you prefer to perform the installation steps manually or want to tweak them, you may find the following subsections useful.  They describe the software requirements of Guix, as well as how to install it manually and get ready to use it.
fr: Si vous préférez effectuer les étapes d'installation manuellement ou si vous voulez les personnaliser, vous trouverez les sections suivantes utile.  Elles décrivent les prérequis logiciels pour Guix, ainsi que la manière de l'installer manuellement et de se préparer à l'utiliser.

note: type: cindex
en: installing Guix from binaries
fr: installer Guix depuis les binaires

note: type: cindex
en: installer script
fr: script d'installation

note: type: Plain text
en: This section describes how to install Guix on an arbitrary system from a self-contained tarball providing binaries for Guix and for all its dependencies.  This is often quicker than installing from source, which is described in the next sections.  The only requirement is to have GNU@tie{}tar and Xz.
fr: Cette section décrit comment installer Guix sur un système quelconque depuis un archive autonome qui fournit les binaires pour Guix et toutes ses dépendances.  C'est souvent plus rapide que d'installer depuis les sources, ce qui est décrit dans les sections suivantes.  Le seul prérequis est d'avoir GNU@tie{}tar et Xz.

note: type: quotation
en: We recommend the use of this @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, shell installer script}.  The script automates the download, installation, and initial configuration steps described below.  It should be run as the root user.  As root, you can thus run this:
fr: Nous recommandons l'utilisation de ce @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, script d'installation du shell}.  Ce script automatise les étapes de téléchargement, d'installation et de configuration initiale décrites ci-dessous.  Il doit être exécuté sous l'utilisateur root.  Vous pouvez donc l'exécuter en tant que root :

note: type: quotation
en: If you're running Debian or a derivative such as Ubuntu, you can instead install the package (it might be a version older than @value{VERSION} but you can update it afterwards by running @samp{guix pull}):
fr: Si vous utilisez Debian ou une dérivée comme Ubuntu, vous pouvez plutôt installer le paquet (il se peut qu'il soit plus vieux que @value{VERSION} mais vous pourrez le mettre à jour en lançant @samp{guix pull}) :

note: type: quotation
en: Likewise on openSUSE:
fr: De même sur openSUSE :

note: type: quotation
en: When you're done, @pxref{Application Setup} for extra configuration you might need, and @ref{Getting Started} for your first steps!
fr: Lorsque vous aurez terminé, @pxref{Application Setup} pour la configuration supplémentaire dont vous pourriez avoir besoin, et @ref{Getting Started} pour vos premiers pas !

note: type: Plain text
en: Installing goes along these lines:
fr: L'installation se déroule comme ceci :

note: type: cindex
en: downloading Guix binary
fr: téléchargement du Guix binaire

note: type: enumerate
en: Download the binary tarball from @indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz}, where @code{x86_64-linux} can be replaced with @code{i686-linux} for an @code{i686} (32-bits) machine already running the kernel Linux, and so on (@pxref{GNU Distribution}).
fr: Télécharger le tarball binaire à partir de @indicateurl{@value{BASE-URL}/guix-binary-@value{VERSION}.x86_64-linux.tar.xz}, où @code{x86_64-linux} peut être remplacé par @code{i686-linux} pour une @code{i686} (32-bits) machine fonctionnant déjà avec le noyau Linux, et autres (@pxref{GNU Distribution}).

note: type: enumerate
en: Make sure to download the associated @file{.sig} file and to verify the authenticity of the tarball against it, along these lines:
fr: Assurez-vous de télécharger le fichier @file{.sig} associé et de vérifier l'authenticité de l'archive avec, comme ceci :

note: type: Plain text
en: If that command fails because you do not have the required public key, then run this command to import it:
fr: Si cette commande échoue parce que vous n'avez pas la clef publique requise, lancez cette commande pour l'importer :

note: type: Plain text
en: and rerun the @code{gpg --verify} command.
fr: et relancez la commande @code{gpg --verify}.

note: type: Plain text
en: Take note that a warning like ``This key is not certified with a trusted signature!'' is normal.
fr: Remarquez qu'un avertissement du type « Cette clef n'est pas certifiée par une signature de confiance ! » est normal.

note: type: enumerate
en: Now, you need to become the @code{root} user.  Depending on your distribution, you may have to run @code{su -} or @code{sudo -i}.  As @code{root}, run:
fr: Maintenant, vous devez devenir @code{root}.  En fonction de votre distribution, vous devrez lancer @code{su -} ou @code{sudo -i}.  En tant que @code{root}, lancez :

note: type: example
en: # cd /tmp
    # tar --warning=no-timestamp -xf \
         /path/to/guix-binary-@value{VERSION}.x86_64-linux.tar.xz
    # mv var/guix /var/ && mv gnu /
fr: # cd /tmp
    # tar --warning=no-timestamp -xf \
         /chemin/vers/guix-binary-@value{VERSION}.x86_64-linux.tar.xz
    # mv var/guix /var/ && mv gnu /

note: type: enumerate
en: This creates @file{/gnu/store} (@pxref{The Store}) and @file{/var/guix}.  The latter contains a ready-to-use profile for @code{root} (see next step).
fr: Cela crée @file{/gnu/store} (@pxref{The Store}) and @file{/var/guix}.  Ce dernier contient un profil prêt à être utilisé pour @code{root} (voir les étapes suivantes).

note: type: enumerate
en: Do @emph{not} unpack the tarball on a working Guix system since that would overwrite its own essential files.
fr: Ne décompressez @emph{pas} l'archive sur un système Guix lancé car cela écraserait ses propres fichiers essentiels.

note: type: enumerate
en: The @option{--warning=no-timestamp} option makes sure GNU@tie{}tar does not emit warnings about ``implausibly old time stamps'' (such warnings were triggered by GNU@tie{}tar 1.26 and older; recent versions are fine).  They stem from the fact that all the files in the archive have their modification time set to 1 (which means January 1st, 1970).  This is done on purpose to make sure the archive content is independent of its creation time, thus making it reproducible.
fr: L'option @option{--warning=no-timestamp} permet de s'assurer que GNU@tie{}tar n'émet pas d'avertissements concernant des « horodatages manifestement anciens » (de tels avertissements ont été déclenchés par GNU@tie{}tar 1.26 et plus anciens ; les versions récentes conviennent).  Ils proviennent du fait que tous les fichiers de l'archive ont leur heure de modification fixée à un (ce qui signifie le 1er janvier 1970).  Ceci est fait exprès pour s'assurer que le contenu de l'archive est indépendant de son temps de création, la rendant ainsi reproductible.

note: type: enumerate
en: Make the profile available under @file{~root/.config/guix/current}, which is where @command{guix pull} will install updates (@pxref{Invoking guix pull}):
fr: Rendez le profil disponible sous @file{~root/.config/guix/current}, qui est l'emplacement où @command{guix pull} installera les mises à jour (@pxref{Invoking guix pull}) :

note: type: enumerate
en: Source @file{etc/profile} to augment @env{PATH} and other relevant environment variables:
fr: Agrémentez @file{etc/profile} pour augmenter @code{PATH} et les autres variables d'environnement nécessaires :

note: type: enumerate
en: Create the group and user accounts for build users as explained below (@pxref{Build Environment Setup}).
fr: Créez le groupe et les comptes utilisés pour la construction comme expliqué plus loin (@pxref{Build Environment Setup}).

note: type: enumerate
en: Run the daemon, and set it to automatically start on boot.
fr: Lancez le démon et paramétrez-le pour démarrer automatiquement au démarrage.

note: type: enumerate
en: If your host distro uses the systemd init system, this can be achieved with these commands:
fr: Si votre distribution hôte utilise le système d'initialisation systemd, cela peut se faire avec ces commandes :

note: type: enumerate
en: You may also want to arrange for @command{guix gc} to run periodically:
fr: Vous pourriez aussi vouloir faire en sorte que @command{guix gc} soit lancé périodiquement :

note: type: enumerate
en: You may want to edit @file{guix-gc.service} to adjust the command line options to fit your needs (@pxref{Invoking guix gc}).
fr: Vous voudrez peut-être éditer @file{guix-gc.service} pour ajuster la ligne de commande à vos besoins (@pxref{Invoquer guix gc}).

note: type: itemize
en: If your host distro uses the Upstart init system:
fr: Si votre distribution hôte utilise le système d'initialisation Upstart :

note: type: enumerate
en: Otherwise, you can still start the daemon manually with:
fr: Sinon, vous pouvez toujours démarrer le démon manuellement avec :

note: type: enumerate
en: Make the @command{guix} command available to other users on the machine, for instance with:
fr: Rendez la commande @command{guix} disponible pour les autres personnes sur la machine, par exemple avec :

note: type: enumerate
en: It is also a good idea to make the Info version of this manual available there:
fr: C'est aussi une bonne idée de rendre la version Info de ce manuel disponible ici :

note: type: enumerate
en: That way, assuming @file{/usr/local/share/info} is in the search path, running @command{info guix} will open this manual (@pxref{Other Info Directories,,, texinfo, GNU Texinfo}, for more details on changing the Info search path).
fr: Ainsi, en supposant que @file{/usr/local/share/info} se trouve dans le chemin de recherche, l'exécution de @command{info guix} ouvrira ce manuel (@pxref{Other Info Directories, , texinfo, GNU Texinfo}, pour plus de détails sur la modification du chemin de recherche Info).

note: type: cindex
en: substitutes, authorization thereof
fr: substituts, autorisations

note: type: enumerate
en: To use substitutes from @code{@value{SUBSTITUTE-SERVER-1}}, @code{@value{SUBSTITUTE-SERVER-2}} or a mirror (@pxref{Substitutes}), authorize them:
fr: Pour utiliser les substituts de @code{@value{SUBSTITUTE-SERVER-1}}, @code{@value{SUBSTITUTE-SERVER-2}} ou l'un de leurs miroirs (@pxref{Substituts}), autorisez-les :

note: type: quotation
en: If you do not enable substitutes, Guix will end up building @emph{everything} from source on your machine, making each installation and upgrade very expensive.  @xref{On Trusting Binaries}, for a discussion of reasons why one might want do disable substitutes.
fr: Si vous n'activez pas les substituts, Guix va @emph{tout} compiler depuis les sources sur votre machine, rendant très coûteuse chaque installation et chaque mise à jour. @xref{On Trusting Binaries}, pour une discussion des raisons pour lesquelles on pourrait vouloir désactiver les substituts.

note: type: enumerate
en: Each user may need to perform a few additional steps to make their Guix environment ready for use, @pxref{Application Setup}.
fr: On peut avoir besoin d'effectuer des étapes supplémentaires pour que son environnement Guix soit prêt à être utilisé, @pxref{Application Setup}.

note: type: Plain text
en: Voilà, the installation is complete!
fr: Voilà, l'installation est terminée !

note: type: Plain text
en: You can confirm that Guix is working by installing a sample package into the root profile:
fr: Vous pouvez confirmer que Guix fonctionne en installant un paquet d'exemple dans le profil de root :

note: type: Plain text
en: The binary installation tarball can be (re)produced and verified simply by running the following command in the Guix source tree:
fr: L'archive d'installation binaire peut être (re)produite et vérifiée simplement en lançant la commande suivante dans l'arborescence des sources de Guix :

note: type: Plain text
en: ...@: which, in turn, runs:
fr: …@: ce qui à son tour lance :

note: type: Plain text
en: @xref{Invoking guix pack}, for more info on this handy tool.
fr: @xref{Invoking guix pack}, pour plus d'info sur cet outil pratique.

note: type: Plain text
en: This section lists requirements when building Guix from source.  The build procedure for Guix is the same as for other GNU software, and is not covered here.  Please see the files @file{README} and @file{INSTALL} in the Guix source tree for additional details.
fr: Cette section dresse la liste des prérequis pour la construction de Guix depuis les sources.  La procédure de construction pour Guix est la même que pour les autres logiciels GNU, et n'est pas expliquée ici.  Regardez les fichiers @file{README} et @file{INSTALL} dans l'arborescence des sources de Guix pour plus de détails.

note: type: cindex
en: official website
fr: site officiel

note: type: Plain text
en: GNU Guix is available for download from its website at @url{https://www.gnu.org/software/guix/}.
fr: GNU Guix est disponible au téléchargement depuis son site web sur @url{http://www.gnu.org/software/guix/}.

note: type: Plain text
en: GNU Guix depends on the following packages:
fr: GNU Guix dépend des paquets suivants :

note: type: item
en: @url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x,
fr: @url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x ;

note: type: itemize
en: version 3.0.3 or later;
fr: version 3.0.3 ou supérieure ;

note: type: itemize
en: 0.1.0 or later;
fr: 0.1.0 ou supérieure ;

note: type: itemize
en: @uref{https://gitlab.com/gnutls/guile/, Guile-GnuTLS} (@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile})@footnote{The Guile bindings to @uref{https://gnutls.org/, GnuTLS} were distributed as part of GnuTLS until version 3.7.8 included.};
fr: @uref{https://gitlab.com/gnutls/guile/, Guile-GnuTLS} (@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile})@footnote{Les liaisons Guile de @uref{https://gnutls.org/, GnuTLS} faisaient partie de GnuTLS jusqu'à la version 3.7.8 incluse.};

note: type: itemize
en: @uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, version 0.1.0 or later;
fr: @uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, version 0.1.0 ou supérieure ;

note: type: itemize
en: version 0.1.0 or later;
fr: version 0.1.0 ou supérieure ;

note: type: item
en: @uref{https://notabug.org/guile-lzlib/guile-lzlib, Guile-lzlib};
fr: @uref{https://notabug.org/guile-lzlib/guile-lzlib, Guile-lzlib} ;

note: type: item
en: @uref{https://www.nongnu.org/guile-avahi/, Guile-Avahi};
fr: @uref{https://www.nongnu.org/guile-avahi/, Guile-Avahi} ;

note: type: itemize
en: @uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, version 0.5.0 or later;
fr: @uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, version 0.5.0 ou supérieure ;

note: type: itemize
en: 4.3.0 or later;
fr: 4.3.0 ou plus récent ;

note: type: Plain text
en: The following dependencies are optional:
fr: Les dépendances suivantes sont facultatives :

note: type: itemize
en: Support for build offloading (@pxref{Daemon Offload Setup}) and @command{guix copy} (@pxref{Invoking guix copy}) depends on @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, version 0.13.0 or later.
fr: Traitement du déchargement des builds (@pxref{Daemon Offload Setup}) et @command{guix copy} (@pxref{Invoquer guix copy}) dépend de @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, version 0.13.0 ou ultérieure.

note: type: itemize
en: @uref{https://notabug.org/guile-zstd/guile-zstd, Guile-zstd}, for zstd compression and decompression in @command{guix publish} and for substitutes (@pxref{Invoking guix publish}).
fr: @uref{https://notabug.org/guile-zstd/guile-zstd, Guile-zstd}, pour la compression et la décompression zstd dans @command{guix publish} et pour les substituts (@pxref{Invoking guix publish}).

note: type: itemize
en: @uref{https://ngyro.com/software/guile-semver.html, Guile-Semver} for the @code{crate} importer (@pxref{Invoking guix import}).
fr: @uref{https://ngyro.com/software/guile-semver.html, Guile-Semver} pour l'importateur @code{crate} (@pxref{Invoking guix import}).

note: type: itemize
en: @uref{https://www.nongnu.org/guile-lib/doc/ref/htmlprag/, Guile-Lib} for the @code{go} importer (@pxref{Invoking guix import}) and for some of the ``updaters'' (@pxref{Invoking guix refresh}).
fr: @uref{https://www.nongnu.org/guile-lib/doc/ref/htmlprag/, Guile-Lib} pour l'importateur @code{go} (@pxref{Invoking guix import}) et pour certains programmes de mise à jour .(@pxref{Invoking guix refresh}).

note: type: itemize
en: When @url{http://www.bzip.org, libbz2} is available, @command{guix-daemon} can use it to compress build logs.
fr: Lorsque @url{http://www.bzip.org, libbz2} est disponible, @command{guix-daemon} peut l'utiliser pour compresser les journaux de construction.

note: type: Plain text
en: Unless @option{--disable-daemon} was passed to @command{configure}, the following packages are also needed:
fr: Sauf si @option{--disable-daemon} a été passé à @command{configure}, les paquets suivants sont également nécessaires :

note: type: item
en: @url{https://gnupg.org/, GNU libgcrypt};
fr: @url{https://gnupg.org/, GNU libgcrypt} ;

note: type: item
en: @url{https://sqlite.org, SQLite 3};
fr: @url{https://sqlite.org, SQLite 3} ;

note: type: item
en: @url{https://gcc.gnu.org, GCC's g++}, with support for the
fr: @url{https://gcc.gnu.org, GCC's g++}, avec le support pour le

note: type: itemize
en: C++11 standard.
fr: Standard C++11.

note: type: cindex
en: state directory
fr: répertoire d'état

note: type: Plain text
en: When configuring Guix on a system that already has a Guix installation, be sure to specify the same state directory as the existing installation using the @option{--localstatedir} option of the @command{configure} script (@pxref{Directory Variables, @code{localstatedir},, standards, GNU Coding Standards}).  Usually, this @var{localstatedir} option is set to the value @file{/var}.  The @command{configure} script protects against unintended misconfiguration of @var{localstatedir} so you do not inadvertently corrupt your store (@pxref{The Store}).
fr: Lorsque vous configurez Guix sur un système qui a déjà une installation de Guix, assurez-vous de spécifier le même répertoire d'état que l'installation existante avec l'option @code{--localstatedir} du script @command{configure} (@pxref{Directory Variables, @code{localstatedir},, standards, GNU Coding Standards}).  Habituellement cette option @var{localstatedir} est initialisée à @file{/var}.  Le script @command{configure} vous protège des configurations involontaires de @var{localstatedir} pour éviter que vous ne corrompiez votre dépôt (@pxref{The Store}).

note: type: cindex
en: test suite
fr: suite de tests

note: type: Plain text
en: After a successful @command{configure} and @code{make} run, it is a good idea to run the test suite.  It can help catch issues with the setup or environment, or bugs in Guix itself---and really, reporting test failures is a good way to help improve the software.  To run the test suite, type:
fr: Après avoir lancé @command{configure} et @code{make} correctement, c'est une bonne idée de lancer la suite de tests.  Elle peut aider à trouver des erreurs avec la configuration ou l'environnement, ou des bogues dans Guix lui-même — et vraiment, rapporter des échecs de tests est une bonne manière d'aider à améliorer le logiciel.  Pour lancer la suite de tests, tapez :

note: type: Plain text
en: Test cases can run in parallel: you can use the @code{-j} option of GNU@tie{}make to speed things up.  The first run may take a few minutes on a recent machine; subsequent runs will be faster because the store that is created for test purposes will already have various things in cache.
fr: Les cas de tests peuvent être lancés en parallèle : vous pouvez utiliser l'option @code{-j} de GNU@tie{}make pour accélérer les choses.  Le premier lancement peut prendre plusieurs minutes sur une machine récente ; les lancements suivants seront plus rapides car le dépôt créé pour les tests aura déjà plusieurs choses en cache.

note: type: Plain text
en: It is also possible to run a subset of the tests by defining the @code{TESTS} makefile variable as in this example:
fr: Il est aussi possible de lancer un sous-ensemble des tests en définissant la variable makefile @code{TESTS} comme dans cet exemple :

note: type: Plain text
en: By default, tests results are displayed at a file level.  In order to see the details of every individual test cases, it is possible to define the @code{SCM_LOG_DRIVER_FLAGS} makefile variable as in this example:
fr: Par défaut, les résultats des tests sont affichés au niveau du fichier.  Pour voir les détails de chaque cas de test individuel, il est possible de définir la variable makefile @code{SCM_LOG_DRIVER_FLAGS} comme dans cet exemple :

note: type: Plain text
en: The underlying SRFI 64 custom Automake test driver used for the 'check' test suite (located at @file{build-aux/test-driver.scm}) also allows selecting which test cases to run at a finer level, via its @option{--select} and @option{--exclude} options.  Here's an example, to run all the test cases from the @file{tests/packages.scm} test file whose names start with ``transaction-upgrade-entry'':
fr: Le pilote de tests Automake personnalisé avec SRFI 64 utilisé pour la suite de tests « check » (située dans @file{build-aux/test-driver.scm}) permet aussi de choisir les cas de test à lancer à plus fine granularité, via ses options @option{--select} et @option{--exclude}. Voici un exemple, pour lancer tous les cas de tests du fichier de tests @file{tests/packages.scm} dont les noms commencent par « transaction-upgrade-entry » :

note: type: Plain text
en: Those wishing to inspect the results of failed tests directly from the command line can add the @option{--errors-only=yes} option to the @code{SCM_LOG_DRIVER_FLAGS} makefile variable and set the @code{VERBOSE} Automake makefile variable, as in:
fr: Pour celles et ceux qui veulent inspecter les résultats des tests échoués directement depuis la ligne de commande, il est possible d'ajouter l'option @option{--errors-only=yes} à la variable @code{SCM_LOG_DRIVER_FLAGS} du Makefile et d'initialiser la variable Automake du Makefile @code{VERBOSE}, de cette manière :

note: type: Plain text
en: The @option{--show-duration=yes} option can be used to print the duration of the individual test cases, when used in combination with @option{--brief=no}:
fr: L'option @option{--show-duration=yes} peut être utilisée pour afficher la durée des cas de test individuels, en combinaison avec @option{--brief=no} :

note: type: Plain text
en: @xref{Parallel Test Harness,,,automake,GNU Automake} for more information about the Automake Parallel Test Harness.
fr: @xref{Parallel Test Harness,,,automake,GNU Automake} pour plus d'information sur le banc de tests parallèle d'Automake.

note: type: Plain text
en: Upon failure, please email @email{bug-guix@@gnu.org} and attach the @file{test-suite.log} file.  Please specify the Guix version being used as well as version numbers of the dependencies (@pxref{Requirements}) in your message.
fr: Après un échec, envoyez un courriel à @email{bug-guix@@gnu.org} et attachez le fichier @file{test-suite.log}.  Précisez la version de Guix utilisée ainsi que les numéros de version de ses dépendances (@pxref{Requirements}) dans votre message.

note: type: Plain text
en: Guix also comes with a whole-system test suite that tests complete Guix System instances.  It can only run on systems where Guix is already installed, using:
fr: Guix possède aussi une suite de tests de systèmes complets qui test des instances complètes du système Guix.  Elle ne peut être lancée qui sur un système où Guix est déjà installé, avec :

note: type: Plain text
en: or, again, by defining @code{TESTS} to select a subset of tests to run:
fr: ou, de nouveau, en définissant @code{TESTS} pour choisir un sous-ensemble des tests à lancer :

note: type: Plain text
en: These system tests are defined in the @code{(gnu tests @dots{})} modules.  They work by running the operating systems under test with lightweight instrumentation in a virtual machine (VM).  They can be computationally intensive or rather cheap, depending on whether substitutes are available for their dependencies (@pxref{Substitutes}).  Some of them require a lot of storage space to hold VM images.
fr: Ces tests systèmes sont définis dans les modules @code{(gnu tests @dots{})}. Ils fonctionnent en lançant les systèmes d'exploitation sous test avec une instrumentation légère dans une machine virtuelle (VM).  Ils peuvent être intenses en terme de calculs ou plutôt rapides en fonction de la disponibilité des substituts de leurs dépendances (@pxref{Substituts}).  Certains requièrent beaucoup d'espace disque pour contenir les images des VM@.

note: type: Plain text
en: Again in case of test failures, please send @email{bug-guix@@gnu.org} all the details.
fr: De nouveau, en cas d'échec, envoyez tous les détails à @email{bug-guix@@gnu.org}.

note: type: cindex
en: daemon
fr: démon

note: type: Plain text
en: Operations such as building a package or running the garbage collector are all performed by a specialized process, the @dfn{build daemon}, on behalf of clients.  Only the daemon may access the store and its associated database.  Thus, any operation that manipulates the store goes through the daemon.  For instance, command-line tools such as @command{guix package} and @command{guix build} communicate with the daemon (@i{via} remote procedure calls) to instruct it what to do.
fr: Les opérations comme la construction d'un paquet ou le lancement du ramasse-miettes sont toutes effectuées par un processus spécialisé, le @dfn{démon de construction}, pour le compte des clients.  Seul le démon peut accéder au dépôt et à sa base de données associée.  Ainsi, toute opération manipulant le dépôt passe par le démon.  Par exemple, les outils en ligne de commande comme @command{guix package} et @command{guix build} communiquent avec le démon (@i{via} des appels de procédures distantes) pour lui dire quoi faire.

note: type: Plain text
en: The following sections explain how to prepare the build daemon's environment.  See also @ref{Substitutes}, for information on how to allow the daemon to download pre-built binaries.
fr: Les sections suivantes expliquent comment préparer l'environnement du démon de construction.  Voir aussi @ref{Substituts} pour apprendre comment permettre le téléchargement de binaires pré-construits.

note: type: cindex
en: build environment
fr: environnement de construction

note: type: Plain text
en: In a standard multi-user setup, Guix and its daemon---the @command{guix-daemon} program---are installed by the system administrator; @file{/gnu/store} is owned by @code{root} and @command{guix-daemon} runs as @code{root}.  Unprivileged users may use Guix tools to build packages or otherwise access the store, and the daemon will do it on their behalf, ensuring that the store is kept in a consistent state, and allowing built packages to be shared among users.
fr: Dans une installation standard multi-utilisateur·rice·s, Guix et son démon — le programme @command{guix-daemon} — sont installés par la personne qui administre le système ; @file{/gnu/store} appartient à @code{root} et @command{guix-daemon} est lancé en @code{root}.  Les utilisateur·rice·s non-privilégié·e·s peuvent utiliser les outils Guix pour construire des paquets ou accéder au dépôt et le démon le fera pour leur compte en s'assurant que le dépôt garde un état cohérent et permet le partage des paquets déjà construits entre les utilisateur·rice·s.

note: type: cindex
en: build users
fr: comptes de construction

note: type: Plain text
en: When @command{guix-daemon} runs as @code{root}, you may not want package build processes themselves to run as @code{root} too, for obvious security reasons.  To avoid that, a special pool of @dfn{build users} should be created for use by build processes started by the daemon.  These build users need not have a shell and a home directory: they will just be used when the daemon drops @code{root} privileges in build processes.  Having several such users allows the daemon to launch distinct build processes under separate UIDs, which guarantees that they do not interfere with each other---an essential feature since builds are regarded as pure functions (@pxref{Introduction}).
fr: Alors que @command{guix-daemon} tourne en @code{root}, vous n'avez pas forcément envie que les processus de construction de paquets tournent aussi en @code{root}, pour des raisons de sécurité évidentes.  Pour éviter cela, vous devriez créer une réserve spéciale de @dfn{comptes de construction} que les processus de construction démarrés par le démon utiliseront.  Ces comptes de construction n'ont pas besoin d'un shell ou d'un répertoire personnel ; ils seront seulement utilisés quand le démon délaissera ses privilèges @code{root} dans les processus de construction.  En ayant plusieurs de ces comptes, vous permettez au démon de lancer des processus de construction distincts sous des UID différent, ce qui garanti qu'aucune interférence n'ait lieu entre les uns et les autres — une fonctionnalité essentielle puisque les constructions sont supposées être des fonctions pures (@pxref{Introduction}).

note: type: Plain text
en: On a GNU/Linux system, a build user pool may be created like this (using Bash syntax and the @code{shadow} commands):
fr: Sur un système GNU/Linux, on peut créer une réserve de comptes de construction comme ceci (avec la syntaxe Bash et les commandes @code{shadow}) :

note: type: example
en: # groupadd --system guixbuild
    # for i in $(seq -w 1 10);
      do
        useradd -g guixbuild -G guixbuild           \
                -d /var/empty -s $(which nologin)   \
                -c "Guix build user $i" --system    \
                guixbuilder$i;
      done
fr: # groupadd --system guixbuild
    # for i in $(seq -w 1 10);
      do
        useradd -g guixbuild -G guixbuild           \
                -d /var/empty -s $(which nologin)    \
                -c "Compte de construction Guix $i" --system    \
                guixbuilder$i;
      done

note: type: Plain text
en: The number of build users determines how many build jobs may run in parallel, as specified by the @option{--max-jobs} option (@pxref{Invoking guix-daemon, @option{--max-jobs}}).  To use @command{guix system vm} and related commands, you may need to add the build users to the @code{kvm} group so they can access @file{/dev/kvm}, using @code{-G guixbuild,kvm} instead of @code{-G guixbuild} (@pxref{Invoking guix system}).
fr: Le nombre de comptes de construction détermine le nombre de tâches de constructions qui peuvent tourner en parallèle, tel que spécifié par l'option  @option{--max-jobs} (@pxref{Invoking guix-daemon, @option{--max-jobs}}).  Pour utiliser @command{guix system vm} et les commandes liées, vous devrez ajouter les comptes de construction au groupe @code{kvm} pour qu'ils puissent accéder à @file{/dev/kvm} avec @code{-G guixbuild,kvm} plutôt que @code{-G guixbuild} (@pxref{Invoking guix system}).

note: type: Plain text
en: The @code{guix-daemon} program may then be run as @code{root} with the following command@footnote{If your machine uses the systemd init system, copying the @file{@var{prefix}/lib/systemd/system/guix-daemon.service} file to @file{/etc/systemd/system} will ensure that @command{guix-daemon} is automatically started.  Similarly, if your machine uses the Upstart init system, copy the @file{@var{prefix}/lib/upstart/system/guix-daemon.conf} file to @file{/etc/init}.}:
fr: Le programme @code{guix-daemon} peut ensuite être lancé en @code{root} avec la commande suivante@footnote{Si votre machine utilise le système d'initialisation systemd, copiez le fichier @file{@var{prefix}/lib/systemd/system/guix-daemon.service} dans @file{/etc/systemd/system} pour vous assurer que @command{guix-daemon} est démarré automatiquement.  De même, si votre machine utilise le système d'initialisation Upstart, copiez le fichier @file{@var{prefix}/lib/upstart/system/guix-daemon.conf} dans @file{/etc/init}.} :

note: type: Plain text
en: This way, the daemon starts build processes in a chroot, under one of the @code{guixbuilder} users.  On GNU/Linux, by default, the chroot environment contains nothing but:
fr: De cette façon, le démon démarre les processus de construction dans un chroot, sous un des comptes @code{guixbuilder}.  Sur GNU/Linux par défaut, l'environnement chroot ne contient rien d'autre que :

note: type: itemize
en: a minimal @code{/dev} directory, created mostly independently from the host @code{/dev}@footnote{``Mostly'', because while the set of files that appear in the chroot's @code{/dev} is fixed, most of these files can only be created if the host has them.};
fr: un répertoire @code{/dev} minimal, créé presque indépendamment du @code{/dev} de l'hôte@footnote{« presque », parce que même si l'ensemble des fichiers qui apparaissent dans le @code{/dev} du chroot sont déterminés à l'avance, la plupart de ces fichiers ne peut pas être créée si l'hôte ne les a pas.} ;

note: type: itemize
en: the @code{/proc} directory; it only shows the processes of the container since a separate PID name space is used;
fr: le répertoire @code{/proc} ; il ne montre que les processus du conteneur car on utilise une espace de nom séparé pour les PID ;

note: type: itemize
en: @file{/etc/passwd} with an entry for the current user and an entry for user @file{nobody};
fr: @file{/etc/passwd} avec une entrée pour le compte actuel et une entrée pour le compte @file{nobody} ;

note: type: itemize
en: @file{/etc/group} with an entry for the user's group;
fr: @file{/etc/group} avec une entrée pour le groupe de ce compte ;

note: type: itemize
en: @file{/etc/hosts} with an entry that maps @code{localhost} to @code{127.0.0.1};
fr: @file{/etc/hosts} avec une entrée qui fait correspondre @code{localhost} à @code{127.0.0.1} ;

note: type: itemize
en: a writable @file{/tmp} directory.
fr: un répertoire @file{/tmp} inscriptible.

note: type: Plain text
en: The chroot does not contain a @file{/home} directory, and the @env{HOME} environment variable is set to the non-existent @file{/homeless-shelter}.  This helps to highlight inappropriate uses of @env{HOME} in the build scripts of packages.
fr: Le chroot ne contient pas de dossier @file{/home}, et la variable d'environnement @env{HOME} est initialisée au répertoire @file{/homeless-shelter} inexistant. Cela permet de mettre en valeur les utilisations inappropriées de @env{HOME} dans les scripts de construction des paquets.

note: type: Plain text
en: You can influence the directory where the daemon stores build trees @i{via} the @env{TMPDIR} environment variable.  However, the build tree within the chroot is always called @file{/tmp/guix-build-@var{name}.drv-0}, where @var{name} is the derivation name---e.g., @code{coreutils-8.24}.  This way, the value of @env{TMPDIR} does not leak inside build environments, which avoids discrepancies in cases where build processes capture the name of their build tree.
fr: Vous pouvez influencer le répertoire où le démon stocke les arbres de construction @i{via} la variable d'environnement @code{TMPDIR}.  Cependant, l'arbre de construction dans le chroot sera toujours appelé @file{/tmp/guix-build-@var{nom}.drv-0}, où @var{nom} est le nom de la dérivation — p.ex., @: @code{coreutils-8.24}.  De cette façon, la valeur de @code{TMPDIR} ne fuite pas à l'intérieur des environnements de construction, ce qui évite des différences lorsque le processus de construction retient le nom de leur répertoire de construction.

note: type: Plain text
en: The daemon also honors the @env{http_proxy} and @env{https_proxy} environment variables for HTTP and HTTPS downloads it performs, be it for fixed-output derivations (@pxref{Derivations}) or for substitutes (@pxref{Substitutes}).
fr: Le démon prend aussi en compte la variable d'environnement @code{https_proxy} pour ses téléchargements HTTP et HTTPS, que ce soit pour les dérivations à sortie fixes (@pxref{Derivations}) ou pour les substituts (@pxref{Substituts}).

note: type: Plain text
en: If you are installing Guix as an unprivileged user, it is still possible to run @command{guix-daemon} provided you pass @option{--disable-chroot}.  However, build processes will not be isolated from one another, and not from the rest of the system.  Thus, build processes may interfere with each other, and may access programs, libraries, and other files available on the system---making it much harder to view them as @emph{pure} functions.
fr: Si vous installez Guix en tant qu'utilisateur·rice non privilégié·ée, il est toujours possible d'exécuter @command{guix-daemon} à condition de passer @option{--disable-chroot}.  Cependant, les processus de compilation ne seront pas isolés les uns des autres, ni du reste du système.  Ainsi, les processus de compilation peuvent interférer les uns avec les autres, et peuvent accéder à des programmes, des bibliothèques et d'autres fichiers disponibles sur le système - ce qui rend beaucoup plus difficile de les considérer comme des fonctions @emph{pures}.

note: type: subsection
en: Using the Offload Facility
fr: Utiliser le dispositif de déchargement

note: type: cindex
en: offloading
fr: déchargement

note: type: cindex
en: build hook
fr: crochet de construction

note: type: Plain text
en: When desired, the build daemon can @dfn{offload} derivation builds to other machines running Guix, using the @code{offload} @dfn{build hook}@footnote{This feature is available only when @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH} is present.}.  When that feature is enabled, a list of user-specified build machines is read from @file{/etc/guix/machines.scm}; every time a build is requested, for instance via @code{guix build}, the daemon attempts to offload it to one of the machines that satisfy the constraints of the derivation, in particular its system types---e.g., @code{x86_64-linux}.  A single machine can have multiple system types, either because its architecture natively supports it, via emulation (@pxref{transparent-emulation-qemu, Transparent Emulation with QEMU}), or both.  Missing prerequisites for the build are copied over SSH to the target machine, which then proceeds with the build; upon success the output(s) of the build are copied back to the initial machine.  The offload facility comes with a basic scheduler that attempts to select the best machine.  The best machine is chosen among the available machines based on criteria such as:
fr: Si vous le souhaitez, le démon de construction peut @dfn{décharger} des constructions de dérivation sur d'autres machines Guix avec le @dfn{crochet de construction} @code{offload}@footnote{Cette fonctionnalité n'est disponible que si @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH} est présent.}.  Lorsque cette fonctionnalité est activée, Guix lit une liste de machines de constructions spécifiée par l'utilisateur·rice dans @file{/etc/guix/machines.scm} ; à chaque fois qu'une construction est demandée, par exemple par @code{guix build}, le démon essaie de la décharger sur une des machines qui satisfont les contraintes de la dérivation, en particulier le type de système, p.@: ex.@: @file{x86_64-linux}. Une même machine peut avoir plusieurs types de systèmes, soit parce que son architecture le supporte nativement, soit par émulation (@pxref{transparent-emulation-qemu, Émulation transparente avec QEMU}), soit les deux.  Les prérequis manquants pour la construction sont copiés par SSH sur la machine de construction qui procède ensuite à la construction ; si elle réussit, les sorties de la construction sont copiés vers la machine de départ. Le dispsitif de déchargement est dotée d'un scheduler de base qui tente de sélectionner la meilleure machine.  La meilleure machine est choisie parmi les machines disponibles sur la base de critères tels que :

note: type: enumerate
en: The availability of a build slot.  A build machine can have as many build slots (connections) as the value of the @code{parallel-builds} field of its @code{build-machine} object.
fr: La disponibilité d'un créneau de construction. Une machine de construction peut avoir autant de slots de construction (connexions) que la valeur du champ @code{parallel-builds} de son objet @code{build-machine}.

note: type: enumerate
en: Its relative speed, as defined via the @code{speed} field of its @code{build-machine} object.
fr: Sa vitesse relative, telle que définie dans le champ @code{speed} de son objet @code{build-machine}.

note: type: enumerate
en: Its load.  The normalized machine load must be lower than a threshold value, configurable via the @code{overload-threshold} field of its @code{build-machine} object.
fr: Sa charge.  La charge normalisée de la machine doit être inférieure à une valeur seuil, configurable via le champ @code{overload-threshold} de son objet @code{build-machine}.

note: type: enumerate
en: Disk space availability.  More than a 100 MiB must be available.
fr: Disponibilité de l'espace disque.  Plus de 100 Mio doivent être disponibles.

note: type: Plain text
en: The @file{/etc/guix/machines.scm} file typically looks like this:
fr: Le fichier @file{/etc/guix/machines.scm} ressemble typiquement à cela :

note: type: lisp
en: (list (build-machine
            (name "eightysix.example.org")
            (systems (list "x86_64-linux" "i686-linux"))
            (host-key "ssh-ed25519 AAAAC3Nza@dots{}")
            (user "bob")
            (speed 2.))     ;incredibly fast!
fr: (list (build-machine
            (name "eightysix.example.org")
            (system "x86_64-linux")
            (host-key "ssh-ed25519 AAAAC3Nza@dots{}")
            (user "bob")
            (speed 2.))     ;incroyablement rapide !

note: type: lisp
en:         ;; Remember 'guix offload' is spawned by
            ;; 'guix-daemon' as root.
            (private-key "/root/.ssh/identity-for-guix")))
fr:         ;; Rappelez-vous que « guix offload » est démarré par
            ;; « guix-daemon » en root.
            (private-key "/root/.ssh/identité-pour-guix")))

note: type: Plain text
en: In the example above we specify a list of two build machines, one for the @code{x86_64} and @code{i686} architectures and one for the @code{aarch64} architecture.
fr: Dans l'exemple ci-dessus nous spécifions une liste de deux machines de construction, une pour l'architecture @code{x86_64} et @code{i686}et une pour l'architecture @code{aarch64}.

note: type: Plain text
en: In fact, this file is---not surprisingly!---a Scheme file that is evaluated when the @code{offload} hook is started.  Its return value must be a list of @code{build-machine} objects.  While this example shows a fixed list of build machines, one could imagine, say, using DNS-SD to return a list of potential build machines discovered in the local network (@pxref{Introduction, Guile-Avahi,, guile-avahi, Using Avahi in Guile Scheme Programs}).  The @code{build-machine} data type is detailed below.
fr: En fait, ce fichier est — et ça ne devrait pas vous surprendre ! — un fichier Scheme qui est évalué au démarrage du crochet @code{offload}.  Sa valeur de retour doit être une liste d'objets @code{build-machine}.  Même si cet exemple montre une liste fixée de machines de construction, on pourrait imaginer par exemple utiliser DNS-SD pour renvoyer une liste de machines de constructions potentielles découvertes sur le réseau local (@pxref{Introduction, Guile-Avahi,, guile-avahi, Using Avahi in Guile Scheme Programs}).  Le type de données @code{build-machine} est détaillé plus bas.

note: type: deftp
en: {Data Type} build-machine
fr: {Type de données} build-machine

note: type: deftp
en: This data type represents build machines to which the daemon may offload builds.  The important fields are:
fr: Ce type de données représente les machines de construction sur lesquelles le démon peut décharger des constructions.  Les champs importants sont :

note: type: table
en: The host name of the remote machine.
fr: Le nom d'hôte de la machine distante.

note: type: item
en: systems
fr: systèmes

note: type: table
en: The system types the remote machine supports---e.g., @code{(list "x86_64-linux" "i686-linux")}.
fr: Le type de système de la machine distante, p. ex., @code{(list "x86_64-linux" "i686-linux")}.

note: type: table
en: The user account to use when connecting to the remote machine over SSH.  Note that the SSH key pair must @emph{not} be passphrase-protected, to allow non-interactive logins.
fr: Le compte à utiliser lors de la connexion à la machine distante par SSH@.  Remarquez que la paire de clef SSH ne doit @emph{pas} être protégée par mot de passe pour permettre des connexions non-interactives.

note: type: table
en: This must be the machine's SSH @dfn{public host key} in OpenSSH format.  This is used to authenticate the machine when we connect to it.  It is a long string that looks like this:
fr: Cela doit être la @dfn{clef d'hôte SSH publique} de la machine au format OpenSSH@.  Elle est utilisée pour authentifier la machine lors de la connexion.  C'est une longue chaîne qui ressemble à cela :

note: type: table
en: If the machine is running the OpenSSH daemon, @command{sshd}, the host key can be found in a file such as @file{/etc/ssh/ssh_host_ed25519_key.pub}.
fr: Si la machine utilise le démon OpenSSH, @command{sshd}, la clef d'hôte se trouve dans un fichier comme @file{/etc/ssh/ssh_host_ed25519_key.pub}.

note: type: table
en: If the machine is running the SSH daemon of GNU@tie{}lsh, @command{lshd}, the host key is in @file{/etc/lsh/host-key.pub} or a similar file.  It can be converted to the OpenSSH format using @command{lsh-export-key} (@pxref{Converting keys,,, lsh, LSH Manual}):
fr: Si la machine utilise le démon SSH de GNU@tie{}lsh, la clef d'hôte est dans @file{/etc/lsh/host-key.pub} ou un fichier similaire.  Elle peut être convertie au format OpenSSH avec @command{lsh-export-key}  (@pxref{Converting keys,,, lsh, LSH Manual}) :

note: type: deftp
en: A number of optional fields may be specified:
fr: Il y a un certain nombre de champs facultatifs que vous pouvez remplir :

note: type: item
en: @code{port} (default: @code{22})
fr: @code{port} (par défaut : @code{22})

note: type: table
en: Port number of SSH server on the machine.
fr: Numéro de port du serveur SSH sur la machine.

note: type: item
en: @code{private-key} (default: @file{~root/.ssh/id_rsa})
fr: @code{private-key} (par défaut : @file{~root/.ssh/id_rsa})

note: type: table
en: The SSH private key file to use when connecting to the machine, in OpenSSH format.  This key must not be protected with a passphrase.
fr: Le fichier de clef privée SSH à utiliser lors de la connexion à la machine, au format OpenSSH@.  Cette clef ne doit pas être protégée par phrase de passe.

note: type: table
en: Note that the default value is the private key @emph{of the root account}.  Make sure it exists if you use the default.
fr: Remarquez que la valeur par défaut est la clef privée @emph{du compte root}.  Assurez-vous qu'elle existe si vous utilisez la valeur par défaut.

note: type: item
en: @code{compression} (default: @code{"zlib@@openssh.com,zlib"})
fr: @code{compression} (par défaut : @code{"zlib@@openssh.com,zlib"})

note: type: itemx
en: @code{compression-level} (default: @code{3})
fr: @code{compression-level} (par défaut : @code{3})

note: type: table
en: The SSH-level compression methods and compression level requested.
fr: Les méthodes de compression au niveau SSH et le niveau de compression demandé.

note: type: table
en: Note that offloading relies on SSH compression to reduce bandwidth usage when transferring files to and from build machines.
fr: Remarquez que le déchargement utilise la compression SSH pour réduire la bande passante utilisée lors du transfert vers et depuis les machines de construction.

note: type: item
en: @code{daemon-socket} (default: @code{"/var/guix/daemon-socket/socket"})
fr: @code{daemon-socket} (par défaut : @code{"/var/guix/daemon-socket/socket"})

note: type: table
en: File name of the Unix-domain socket @command{guix-daemon} is listening to on that machine.
fr: Le nom de fichier du socket Unix-domain sur lequel @command{guix-daemon} écoute sur cette machine.

note: type: item
en: @code{overload-threshold} (default: @code{0.8})
fr: @code{overload-threshold} (par défaut : @code{0.8})

note: type: table
en: The load threshold above which a potential offload machine is disregarded by the offload scheduler.  The value roughly translates to the total processor usage of the build machine, ranging from 0.0 (0%) to 1.0 (100%).  It can also be disabled by setting @code{overload-threshold} to @code{#f}.
fr: Le seuil de charge au-dessus duquel une machine de déchargement potentielle est ignorée par le programme de déchargement.  Cette valeur se traduit approximativement par l'utilisation totale du processeur de la machine de construction, allant de 0,0 (0%) à 1,0 (100%).  Elle peut également être désactivée en réglant @code{overload-threshold} sur @code{#f}.

note: type: item
en: @code{parallel-builds} (default: @code{1})
fr: @code{parallel-builds} (par défaut : @code{1})

note: type: table
en: The number of builds that may run in parallel on the machine.
fr: Le nombre de constructions qui peuvent tourner simultanément sur la machine.

note: type: item
en: @code{speed} (default: @code{1.0})
fr: @code{speed} (par défaut : @code{1.0})

note: type: table
en: A ``relative speed factor''.  The offload scheduler will tend to prefer machines with a higher speed factor.
fr: Un « facteur de vitesse relatif ».  L'ordonnanceur des constructions tendra à préférer les machines avec un plus grand facteur de vitesse.

note: type: item
en: @code{features} (default: @code{'()})
fr: @code{features} (par défaut : @code{'()})

note: type: table
en: A list of strings denoting specific features supported by the machine.  An example is @code{"kvm"} for machines that have the KVM Linux modules and corresponding hardware support.  Derivations can request features by name, and they will be scheduled on matching build machines.
fr: Une liste de chaînes qui contient les fonctionnalités spécifiques supportées par la machine.  Un exemple est @code{"kvm"} pour les machines qui ont le module Linux KVM et le support matériel correspondant.  Les dérivations peuvent demander des fonctionnalités par leur nom et seront orchestrées sur les machines de construction correspondantes.

note: type: Plain text
en: The @command{guix} command must be in the search path on the build machines.  You can check whether this is the case by running:
fr: La commande @code{guix} doit être dans le chemin de recherche des machines de construction.  Vous pouvez vérifier si c'est le cas en lançant :

note: type: Plain text
en: There is one last thing to do once @file{machines.scm} is in place.  As explained above, when offloading, files are transferred back and forth between the machine stores.  For this to work, you first need to generate a key pair on each machine to allow the daemon to export signed archives of files from the store (@pxref{Invoking guix archive}):
fr: Il reste une dernière chose à faire maintenant que @file{machines.scm} est en place.  Comme expliqué ci-dessus, lors du déchargement les fichiers sont transférés entre les dépôts des machines.  Pour que cela fonctionne, vous devez d'abord générer une paire de clef sur chaque machine pour permettre au démon d'exporter des archives signées des fichiers de son dépôt (@pxref{Invoking guix archive}) :

note: type: Plain text
en: Each build machine must authorize the key of the master machine so that it accepts store items it receives from the master:
fr: Chaque machine de construction doit autoriser la clef de la machine maîtresse pour qu'ils acceptent les éléments de dépôt de celle-ci :

note: type: Plain text
en: Likewise, the master machine must authorize the key of each build machine.
fr: De même, la machine maîtresse doit autoriser les clefs de chaque machine de construction.

note: type: Plain text
en: All the fuss with keys is here to express pairwise mutual trust relations between the master and the build machines.  Concretely, when the master receives files from a build machine (and @i{vice versa}), its build daemon can make sure they are genuine, have not been tampered with, and that they are signed by an authorized key.
fr: Toute cette histoire de clefs permet d'exprimer la confiance mutuelle deux-à-deux entre le maître et les machines de construction.  Concrètement, lorsque le maître reçoit des fichiers d'une machine de construction (et vice-versa), son démon de construction s'assure qu'ils sont authentiques, n'ont pas été modifiés par un tiers et qu'il sont signés par un clef autorisée.

note: type: cindex
en: offload test
fr: test du déchargement

note: type: Plain text
en: To test whether your setup is operational, run this command on the master node:
fr: Pour tester que votre paramétrage fonctionne, lancez cette commande sur le nœud maître :

note: type: Plain text
en: This will attempt to connect to each of the build machines specified in @file{/etc/guix/machines.scm}, make sure Guix is available on each machine, attempt to export to the machine and import from it, and report any error in the process.
fr: Cela essaiera de se connecter à toutes les machines de construction spécifiées dans @file{/etc/guix/machines.scm}, s'assurera que Guix est disponible sur toutes les machines et tentera d'exporter vers la machine et d'importer depuis elle, et rapportera toute erreur survenu pendant le processus.

note: type: Plain text
en: If you want to test a different machine file, just specify it on the command line:
fr: Si vous souhaitez tester un fichier de machines différent, spécifiez-le sur la ligne de commande :

note: type: Plain text
en: Last, you can test the subset of the machines whose name matches a regular expression like this:
fr: Enfin, vous pouvez tester un sous-ensemble de machines dont le nom correspond à une expression rationnelle comme ceci :

note: type: cindex
en: offload status
fr: statut du déchargement

note: type: Plain text
en: To display the current load of all build hosts, run this command on the main node:
fr: Pour afficher la charge actuelle de tous les hôtes de construction, lancez cette commande sur le nœud principal :

note: type: cindex
en: SELinux, daemon policy
fr: SELinux, politique du démon

note: type: cindex
en: mandatory access control, SELinux
fr: contrôle d'accès obligatoire, SELinux

note: type: cindex
en: security, guix-daemon
fr: sécurité, guix-daemon

note: type: Plain text
en: Guix includes an SELinux policy file at @file{etc/guix-daemon.cil} that can be installed on a system where SELinux is enabled, in order to label Guix files and to specify the expected behavior of the daemon.  Since Guix System does not provide an SELinux base policy, the daemon policy cannot be used on Guix System.
fr: Guix inclus un fichier de politique SELinux dans @file{etc/guix-daemon.cil} qui peut être installé sur un système où SELinux est activé pour que les fichiers Guix soient étiquetés et pour spécifier le comportement attendu du démon.  Comme Guix System ne fournit pas de politique SELinux de base, la politique du démon ne peut pas être utilisée sur le système Guix.

note: type: subsubsection
en: Installing the SELinux policy
fr: Installer la politique SELinux

note: type: cindex
en: SELinux, policy installation
fr: SELinux, installation de la politique

note: type: Plain text
en: To install the policy run this command as root:
fr: Pour installer la politique, lancez cette commande en root :

note: type: Plain text
en: Then relabel the file system with @code{restorecon} or by a different mechanism provided by your system.
fr: Puis ré-étiquetez le système de fichier avec @code{restorecon} ou par un mécanisme différent fournit par votre système.

note: type: Plain text
en: Once the policy is installed, the file system has been relabeled, and the daemon has been restarted, it should be running in the @code{guix_daemon_t} context.  You can confirm this with the following command:
fr: Une fois la politique installée, le système de fichier ré-étiqueté et le démon redémarré, il devrait être lancé dans le contexte @code{guix_daemon_t}.  Vous pouvez le confirmer avec la commande suivante :

note: type: Plain text
en: Monitor the SELinux log files as you run a command like @code{guix build hello} to convince yourself that SELinux permits all necessary operations.
fr: Surveillez les fichiers journaux de SELinux pendant que vous lancez une commande comme @code{guix build hello} pour vous convaincre que SELniux permet toutes les opérations nécessaires.

note: type: cindex
en: SELinux, limitations
fr: SELinux, limites

note: type: Plain text
en: This policy is not perfect.  Here is a list of limitations or quirks that should be considered when deploying the provided SELinux policy for the Guix daemon.
fr: La politique n'est pas parfaite.  Voici une liste de limitations et de bizarreries qui vous devriez prendre en compte avant de déployer la politique SELinux fournie pour le démon Guix.

note: type: enumerate
en: @code{guix_daemon_socket_t} isn’t actually used.  None of the socket operations involve contexts that have anything to do with @code{guix_daemon_socket_t}.  It doesn’t hurt to have this unused label, but it would be preferable to define socket rules for only this label.
fr: @code{guix_daemon_socket_t} n'est pas vraiment utilisé.  Aucune des opérations sur les sockets n'impliquent de contextes qui ont quoi que ce soit à voir avec @code{guix_daemon_socket_t}.  Ça ne fait pas de mal d'avoir une étiquette inutilisée, mais il serait préférable de définir des règles sur les sockets uniquement pour cette étiquette.

note: type: enumerate
en: @code{guix gc} cannot access arbitrary links to profiles.  By design, the file label of the destination of a symlink is independent of the file label of the link itself.  Although all profiles under $localstatedir are labelled, the links to these profiles inherit the label of the directory they are in.  For links in the user’s home directory this will be @code{user_home_t}.  But for links from the root user’s home directory, or @file{/tmp}, or the HTTP server’s working directory, etc, this won’t work.  @code{guix gc} would be prevented from reading and following these links.
fr: @code{guix gc} ne peut pas accéder à n'importe quel lien vers les profils.  Par conception, l'étiquette de fichier de la destination d'un lien symbolique est indépendant de l'étiquette du lien lui-même.  Bien que tous les profils sous $localstatedir aient une étiquette, les liens vers ces profils héritent de l'étiquette du répertoire dans lequel ils se trouvent.  Pour les liens dans le répertoire personnel cela sera @code{user_home_t}.  Mais pour les liens du répertoire personnel de root, ou @file{/tmp}, ou du répertoire de travail du serveur HTTP, etc, cela ne fonctionnera pas.  SELinux empêcherait @code{guix gc} de lire et de suivre ces liens.

note: type: enumerate
en: The daemon’s feature to listen for TCP connections might no longer work.  This might require extra rules, because SELinux treats network sockets differently from files.
fr: La fonctionnalité du démon d'écouter des connexions TCP pourrait ne plus fonctionner.  Cela demande des règles supplémentaires car SELinux traite les sockets réseau différemment des fichiers.

note: type: enumerate
en: Currently all files with a name matching the regular expression @code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} are assigned the label @code{guix_daemon_exec_t}; this means that @emph{any} file with that name in any profile would be permitted to run in the @code{guix_daemon_t} domain.  This is not ideal.  An attacker could build a package that provides this executable and convince a user to install and run it, which lifts it into the @code{guix_daemon_t} domain.  At that point SELinux could not prevent it from accessing files that are allowed for processes in that domain.
fr: Actuellement tous les fichiers qui correspondent à l'expression rationnelle @code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} reçoivent l'étiquette @code{guix_daemon_exec_t} ; cela signifie que @emph{tout} fichier avec ce nom dans n'importe quel profil serait autorisé à se lancer dans le domaine @code{guix_daemon_t}.  Ce n'est pas idéal.  Un attaquant pourrait construire un paquet qui fournit cet exécutable et convaincre un·e utilisateur·rice de l'installer et de le lancer, ce qui l'élève dans le domaine @code{guix_daemon_t}.  À ce moment SELinux ne pourrait pas l'empêcher d'accéder à des fichiers autorisés pour les processus de ce domaine.

note: type: enumerate
en: You will need to relabel the store directory after all upgrades to @file{guix-daemon}, such as after running @code{guix pull}.  Assuming the store is in @file{/gnu}, you can do this with @code{restorecon -vR /gnu}, or by other means provided by your operating system.
fr: Vous devrez renommer le répertoire du dépôt après chaque mise à jour de @file{guix-daemon}, par exemple après avoir lancé @code{guix pull}.  En supposant que le dépôt est dans @file{/gnu}, vous pouvez le faire avec @code{restorecon -vR /gnu}, ou par d'autres moyens fournis par votre système d'exploitation.

note: type: enumerate
en: We could generate a much more restrictive policy at installation time, so that only the @emph{exact} file name of the currently installed @code{guix-daemon} executable would be labelled with @code{guix_daemon_exec_t}, instead of using a broad regular expression.  The downside is that root would have to install or upgrade the policy at installation time whenever the Guix package that provides the effectively running @code{guix-daemon} executable is upgraded.
fr: Nous pourrions générer une politique bien plus restrictive à l'installation, pour que seuls les noms de fichiers @emph{exacts} de l'exécutable @code{guix-daemon} actuellement installé soit étiqueté avec @code{guix_daemon_exec_t}, plutôt que d'utiliser une expression rationnelle plus large.  L'inconvénient c'est que root devrait installer ou mettre à jour la politique à l'installation à chaque fois que le paquet Guix qui fournit l'exécutable @code{guix-daemon} effectivement exécuté est mis à jour.

note: type: section
en: Invoking @command{guix-daemon}
fr: Invoquer @command{guix-daemon}

note: type: Plain text
en: The @command{guix-daemon} program implements all the functionality to access the store.  This includes launching build processes, running the garbage collector, querying the availability of a build result, etc.  It is normally run as @code{root} like this:
fr: Le programme @command{guix-daemon} implémente toutes les fonctionnalités d'accès au dépôt.  Cela inclus le lancement des processus de construction, le lancement du ramasse-miettes, la demande de disponibilité des résultats de construction, etc.  Il tourne normalement en @code{root} comme ceci :

note: type: cindex
en: socket activation, for @command{guix-daemon}
fr: activation par socket, pour @command{guix-daemon}

note: type: Plain text
en: This daemon can also be started following the systemd ``socket activation'' protocol (@pxref{Service De- and Constructors, @code{make-systemd-constructor},, shepherd, The GNU Shepherd Manual}).
fr: Ce démon peut aussi être démarré avec le protocole d'« activation par socket » de systemd (@pxref{Service De- and Constructors, @code{make-systemd-constructor},, shepherd, le manuel de GNU Shepherd}).

note: type: Plain text
en: For details on how to set it up, @pxref{Setting Up the Daemon}.
fr: Pour des détails sur son paramétrage, @pxref{Paramétrer le démon}.

note: type: cindex
en: container, build environment
fr: conteneur, environnement de construction

note: type: cindex
en: reproducible builds
fr: constructions reproductibles

note: type: Plain text
en: By default, @command{guix-daemon} launches build processes under different UIDs, taken from the build group specified with @option{--build-users-group}.  In addition, each build process is run in a chroot environment that only contains the subset of the store that the build process depends on, as specified by its derivation (@pxref{Programming Interface, derivation}), plus a set of specific system directories.  By default, the latter contains @file{/dev} and @file{/dev/pts}.  Furthermore, on GNU/Linux, the build environment is a @dfn{container}: in addition to having its own file system tree, it has a separate mount name space, its own PID name space, network name space, etc.  This helps achieve reproducible builds (@pxref{Features}).
fr: Par défaut, @command{guix-daemon} lance les processus de construction sous différents UIDs récupérés depuis le groupe de construction spécifié avec @code{--build-users-group}.  En plus, chaque processus de construction est lancé dans un environnement chroot qui ne contient que le sous-ensemble du dépôt dont le processus de construction dépend, tel que spécifié par sa dérivation (@pxref{Interface de programmation, dérivation}), plus un ensemble de répertoires systèmes spécifiques.  Par défaut ce dernier contient @file{/dev} et @file{/dev/pts}.  De plus, sous GNU/Linux, l'environnement de construction est un @dfn{conteneur} : en plus d'avoir sa propre arborescence du système de fichier, il a un espace de nom de montage séparé, son propre espace de nom PID, son espace de nom de réseau, etc.  Cela aide à obtenir des constructions reproductibles (@pxref{Fonctionnalités}).

note: type: Plain text
en: When the daemon performs a build on behalf of the user, it creates a build directory under @file{/tmp} or under the directory specified by its @env{TMPDIR} environment variable.  This directory is shared with the container for the duration of the build, though within the container, the build tree is always called @file{/tmp/guix-build-@var{name}.drv-0}.
fr: Lorsque le démon effectue une construction pour le compte de l'utilisateur·rice, il crée un répertoire de construction sous @file{/tmp} ou sous le répertoire spécifié par sa variable d'environnement @env{TMPDIR}.  Ce répertoire est partagé avec le conteneur pendant toute la durée de la construction, bien que dans le conteneur, l'arbre de compilation soit toujours appelé @file{/tmp/guix-build-@var{name}.drv-0}.

note: type: Plain text
en: The build directory is automatically deleted upon completion, unless the build failed and the client specified @option{--keep-failed} (@pxref{Common Build Options, @option{--keep-failed}}).
fr: Le répertoire de construction est automatiquement supprimé à la fin, à moins que la construction n'ait échoué et que le client ait spécifié @option{--keep-failed} (@pxref{Common Build Options, @option{--keep-failed}}).

note: type: Plain text
en: The daemon listens for connections and spawns one sub-process for each session started by a client (one of the @command{guix} sub-commands).  The @command{guix processes} command allows you to get an overview of the activity on your system by viewing each of the active sessions and clients.  @xref{Invoking guix processes}, for more information.
fr: Le démon écoute les connexions et démarre un sous-processus pour chaque session démarrée par un client (l'une des sous-commandes de @command{guix}).  La commande @command{guix processes} vous permet d'obtenir un aperçu de l'activité sur votre système en affichant chaque session et client actifs.  @xref{Invoking guix processes} pour plus d'informations.

note: type: Plain text
en: The following command-line options are supported:
fr: Les options en ligne de commande suivantes sont disponibles :

note: type: item
en: --build-users-group=@var{group}
fr: --build-users-group=@var{groupe}

note: type: table
en: Take users from @var{group} to run build processes (@pxref{Setting Up the Daemon, build users}).
fr: Utiliser les comptes du @var{groupe} pour lancer les processus de construction (@pxref{Paramétrer le démon, comptes de construction}).

note: type: cindex
en: substitutes
fr: substituts

note: type: table
en: Do not use substitutes for build products.  That is, always build things locally instead of allowing downloads of pre-built binaries (@pxref{Substitutes}).
fr: Ne pas utiliser de substitut pour les résultats de la construction.  C'est-à-dire, toujours construire localement plutôt que de permettre le téléchargement de binaires pré-construits (@pxref{Substituts}).

note: type: table
en: When the daemon runs with @option{--no-substitutes}, clients can still explicitly enable substitution @i{via} the @code{set-build-options} remote procedure call (@pxref{The Store}).
fr: Lorsque le démon est lancé avec @code{--no-substitutes}, les clients peuvent toujours activer explicitement la substitution @i{via} l'appel de procédure distante @code{set-build-options} (@pxref{The Store}).

note: type: table
en: Consider @var{urls} the default whitespace-separated list of substitute source URLs.  When this option is omitted, @indicateurl{@value{SUBSTITUTE-URLS}} is used.
fr: Considérer @var{urls} comme la liste séparée par des espaces des URL des sources de substituts par défaut.  Lorsque cette option est omise, @indicateurl{@value{SUBSTITUTE-URLS}} est utilisé.

note: type: table
en: This means that substitutes may be downloaded from @var{urls}, as long as they are signed by a trusted signature (@pxref{Substitutes}).
fr: Cela signifie que les substituts sont téléchargés depuis les @var{urls}, tant qu'ils sont signés par une signature de confiance (@pxref{Substituts}).

note: type: table
en: @xref{Getting Substitutes from Other Servers}, for more information on how to configure the daemon to get substitutes from other servers.
fr: @xref{Getting Substitutes from Other Servers}, pour plus d'information sur la configuration du démon pour récupérer des substituts d'autres serveurs.

note: type: table
en: Do not use offload builds to other machines (@pxref{Daemon Offload Setup}).  That is, always build things locally instead of offloading builds to remote machines.
fr: N'essaye pas de décharger les constructions vers d'autres machines (@pxref{Daemon Offload Setup}).  C'est-à-dire que tout sera construit localement au lieu de décharger les constructions à une machine distante.

note: type: table
en: Cache build failures.  By default, only successful builds are cached.
fr: Mettre les échecs de construction en cache.  Par défaut, seules les constructions réussies sont mises en cache.

note: type: table
en: When this option is used, @command{guix gc --list-failures} can be used to query the set of store items marked as failed; @command{guix gc --clear-failures} removes store items from the set of cached failures.  @xref{Invoking guix gc}.
fr: Lorsque cette option est utilisée, @command{guix gc --list-failures} peut être utilisé pour demander l'ensemble des éléments du dépôt marqués comme échoués ; @command{guix gc --clear-failures} vide la liste des éléments aillant échoué.  @xref{Invoking guix gc}.

note: type: table
en: Use @var{n} CPU cores to build each derivation; @code{0} means as many as available.
fr: Utiliser @var{n} cœurs CPU pour construire chaque dérivation ; @code{0} signifie autant que possible.

note: type: table
en: The default value is @code{0}, but it may be overridden by clients, such as the @option{--cores} option of @command{guix build} (@pxref{Invoking guix build}).
fr: La valeur par défaut est @code{0}, mais elle peut être annulée par les clients, comme avec l'option @code{--cores} de @command{guix build} (@pxref{Invoking guix build}).

note: type: table
en: The effect is to define the @env{NIX_BUILD_CORES} environment variable in the build process, which can then use it to exploit internal parallelism---for instance, by running @code{make -j$NIX_BUILD_CORES}.
fr: L'effet est de définir la variable d'environnement @env{NIX_BUILD_CORES} dans le processus de construction, qui peut ensuite l'utiliser pour exploiter le parallélisme en interne — par exemple en lançant @code{make -j$NIX_BUILD_CORES}.

note: type: table
en: Allow at most @var{n} build jobs in parallel.  The default value is @code{1}.  Setting it to @code{0} means that no builds will be performed locally; instead, the daemon will offload builds (@pxref{Daemon Offload Setup}), or simply fail.
fr: Permettre au plus @var{n} travaux de construction en parallèle.  La valeur par défaut est @code{1}.  La mettre à @code{0} signifie qu'aucune construction ne sera effectuée localement ; à la place, le démon déchargera les constructions (@pxref{Daemon Offload Setup}) ou échouera.

note: type: item
en: --max-silent-time=@var{seconds}
fr: --max-silent-time=@var{secondes}

note: type: table
en: When the build or substitution process remains silent for more than @var{seconds}, terminate it and report a build failure.
fr: Lorsque le processus de construction ou de substitution restent silencieux pendant plus de @var{secondes}, le terminer et rapporter une erreur de construction.

note: type: table
en: The default value is @code{0}, which disables the timeout.
fr: La valeur par défaut est @code{0}, ce qui désactive le délai.

note: type: table
en: The value specified here can be overridden by clients (@pxref{Common Build Options, @option{--max-silent-time}}).
fr: La valeur spécifiée ici peut être annulée par les clients (@pxref{Common Build Options, @code{--max-silent-time}}).

note: type: item
en: --timeout=@var{seconds}
fr: --timeout=@var{secondes}

note: type: table
en: Likewise, when the build or substitution process lasts for more than @var{seconds}, terminate it and report a build failure.
fr: De même, lorsque le processus de construction ou de substitution dure plus de @var{secondes}, le terminer et rapporter une erreur de construction.

note: type: table
en: The value specified here can be overridden by clients (@pxref{Common Build Options, @option{--timeout}}).
fr: La valeur spécifiée ici peut être annulée par les clients (@pxref{Common Build Options, @code{--timeout}}).

note: type: table
en: Build each derivation @var{n} times in a row, and raise an error if consecutive build results are not bit-for-bit identical.  Note that this setting can be overridden by clients such as @command{guix build} (@pxref{Invoking guix build}).
fr: Construire chaque dérivations @var{N} fois à la suite, et lever une erreur si les résultats de construction consécutifs ne sont pas identiques bit-à-bit.  Remarquez que ce paramètre peut être modifié par les clients comme @command{guix build} (@pxref{Invoking guix build}).

note: type: table
en: When used in conjunction with @option{--keep-failed}, the differing output is kept in the store, under @file{/gnu/store/@dots{}-check}.  This makes it easy to look for differences between the two results.
fr: Lorsqu'utilisé avec @option{--keep-failed}, la sortie différente est gardée dans le dépôt sous @file{/gnu/store/@dots{}-check}.  Cela rend plus facile l'étude des différences entre les deux résultats.

note: type: table
en: Produce debugging output.
fr: Produire une sortie de débogage.

note: type: table
en: This is useful to debug daemon start-up issues, but then it may be overridden by clients, for example the @option{--verbosity} option of @command{guix build} (@pxref{Invoking guix build}).
fr: Cela est utile pour déboguer des problèmes de démarrage du démon, mais ensuite elle peut être annulée par les clients, par exemple par l'option @code{--verbosity} de @command{guix build} (@pxref{Invoking guix build}).

note: type: item
en: --chroot-directory=@var{dir}
fr: --chroot-directory=@var{rép}

note: type: table
en: Add @var{dir} to the build chroot.
fr: Ajouter @var{rép} au chroot de construction.

note: type: table
en: Doing this may change the result of build processes---for instance if they use optional dependencies found in @var{dir} when it is available, and not otherwise.  For that reason, it is not recommended to do so.  Instead, make sure that each derivation declares all the inputs that it needs.
fr: Cela peut changer le résultat d'un processus de construction — par exemple s'il utilise une dépendance facultative trouvée dans @var{rép} lorsqu'elle est disponible ou pas sinon.  Pour cette raison, il n'est pas recommandé d'utiliser cette option.  À la place, assurez-vous que chaque dérivation déclare toutes les entrées dont elle a besoin.

note: type: table
en: Disable chroot builds.
fr: Désactive les constructions dans un chroot.

note: type: table
en: Using this option is not recommended since, again, it would allow build processes to gain access to undeclared dependencies.  It is necessary, though, when @command{guix-daemon} is running under an unprivileged user account.
fr: Utiliser cette option n'est pas recommandé car, de nouveau, elle permet aux processus de construction d'accéder à des dépendances non déclarées.  Elle est nécessaire cependant lorsque @command{guix-daemon} tourne sans privilèges.

note: type: table
en: Compress build logs according to @var{type}, one of @code{gzip}, @code{bzip2}, or @code{none}.
fr: Compresser les journaux de construction suivant le @var{type}, parmi @code{gzip}, @code{bzip2} ou @code{none}.

note: type: table
en: Unless @option{--lose-logs} is used, all the build logs are kept in the @var{localstatedir}.  To save space, the daemon automatically compresses them with gzip by default.
fr: À moins que @option{--lose-logs} ne soit utilisé, tous les journaux de construction sont gardés dans @var{localstatedir}.  Pour gagner de la place, le démon les compresse automatiquement avec gzip par défaut.

note: type: table
en: Whether to discover substitute servers on the local network using mDNS and DNS-SD.
fr: Indique s'il faut découvrir les serveurs de substitut sur le réseau local avec mDNS et DNS-SD.

note: type: table
en: This feature is still experimental.  However, here are a few considerations.
fr: Cette fonction est encore expérimentale.  Cependant, voici quelques réflexions sur le sujet.

note: type: enumerate
en: It might be faster/less expensive than fetching from remote servers;
fr: Cela peut être plus rapide ou moins cher que la récupération depuis des serveurs distants ;

note: type: enumerate
en: There are no security risks, only genuine substitutes will be used (@pxref{Substitute Authentication});
fr: Il n'y a pas de risque de sécurité, seuls des substituts authentiques seront utilisés (@pxref{Substitute Authentication}) ;

note: type: enumerate
en: An attacker advertising @command{guix publish} on your LAN cannot serve you malicious binaries, but they can learn what software you’re installing;
fr: Un·e attaquant·e qui publierait @command{guix publish} sur votre LAN ne peut pas vous proposer de binaire malveillants, mais il ou elle pourrait apprendre quels logiciels vous installez ;

note: type: enumerate
en: Servers may serve substitute over HTTP, unencrypted, so anyone on the LAN can see what software you’re installing.
fr: Les serveurs peuvent servir des substituts en HTTP, sans chiffrement, donc n'importe qui sur votre LAN peut voir quels logiciels vous installez.

note: type: table
en: It is also possible to enable or disable substitute server discovery at run-time by running:
fr: Il est aussi possible d'activer ou de désactiver la découverte de serveurs de substituts à l'exécution en lançant :

note: type: cindex
en: deduplication
fr: déduplication

note: type: table
en: Disable automatic file ``deduplication'' in the store.
fr: Désactiver la « déduplication » automatique des fichiers dans le dépôt.

note: type: table
en: By default, files added to the store are automatically ``deduplicated'': if a newly added file is identical to another one found in the store, the daemon makes the new file a hard link to the other file.  This can noticeably reduce disk usage, at the expense of slightly increased input/output load at the end of a build process.  This option disables this optimization.
fr: Par défaut, les fichiers ajoutés au dépôt sont automatiquement « dédupliqués » : si un nouveau fichier est identique à un autre fichier trouvé dans le dépôt, le démon en fait un lien en dur vers l'autre fichier.  Cela réduit considérablement l'utilisation de l'espace disque au prix d'une charge en entrée/sortie plus grande à la fin d'un processus de construction.  Cette option désactive cette optimisation.

note: type: table
en: Tell whether the garbage collector (GC) must keep outputs of live derivations.
fr: Dire si le ramasse-miettes (GC) doit garder les sorties des dérivations utilisées.

note: type: cindex
en: GC roots
fr: Racines du GC

note: type: cindex
en: garbage collector roots
fr: racines du ramasse-miettes

note: type: table
en: When set to @code{yes}, the GC will keep the outputs of any live derivation available in the store---the @file{.drv} files.  The default is @code{no}, meaning that derivation outputs are kept only if they are reachable from a GC root.  @xref{Invoking guix gc}, for more on GC roots.
fr: Lorsqu'il est réglé sur @code{yes}, le GC conservera les sorties de toute dérivation active disponibles dans le dépôt---les fichiers @file{.drv}.  La valeur par défaut est @code{no}, ce qui signifie que les sorties des dérivations ne sont conservées que si elles sont accessibles à partir d'une racine GC.  @xref{Invoquer guix gc}, pour en savoir plus sur les racines GC.

note: type: table
en: Tell whether the garbage collector (GC) must keep derivations corresponding to live outputs.
fr: Dire si le ramasse-miettes (GC) doit garder les dérivations correspondant à des sorties utilisées.

note: type: table
en: When set to @code{yes}, as is the case by default, the GC keeps derivations---i.e., @file{.drv} files---as long as at least one of their outputs is live.  This allows users to keep track of the origins of items in their store.  Setting it to @code{no} saves a bit of disk space.
fr: Lorsqu'il est réglé à « yes », comme c'est le cas par défaut, le GC garde les dérivations — c.-à-d.@: les fichiers @file{.drv} — tant qu'au moins une de leurs sorties est utilisée.  Cela permet de garder une trace de l'origine des éléments du dépôt.  Le mettre à @code{no} préserve un peu d'espace disque.

note: type: table
en: In this way, setting @option{--gc-keep-derivations} to @code{yes} causes liveness to flow from outputs to derivations, and setting @option{--gc-keep-outputs} to @code{yes} causes liveness to flow from derivations to outputs.  When both are set to @code{yes}, the effect is to keep all the build prerequisites (the sources, compiler, libraries, and other build-time tools) of live objects in the store, regardless of whether these prerequisites are reachable from a GC root.  This is convenient for developers since it saves rebuilds or downloads.
fr: De cette manière, le réglage de l'option @option{--gc-keep-derivations} sur @code{yes} étend le résultat des sorties aux dérivations, et le réglage de l'option @option{--gc-keep-outputs} sur @code{yes} étend le résultat des dérivations aux sorties.  Lorsque les deux sont réglés sur @code{yes}, l'effet est de conserver tous les prérequis de construction (les sources, le compilateur, les bibliothèques et autres outils de construction) des objets actifs dans le dépôt, que ces prérequis soient accessibles ou non depuis une racine GC.  Cela est pratique pour les développeurs car cela permet d'éviter les reconstructions ou les téléchargements.

note: type: table
en: On Linux-based systems, impersonate Linux 2.6.  This means that the kernel's @command{uname} system call will report 2.6 as the release number.
fr: Sur les systèmes basés sur Linux, imiter Linux 2.6.  Cela signifie que l'appel système @command{uname} du noyau indiquera 2.6 comme numéro de version.

note: type: table
en: This might be helpful to build programs that (usually wrongfully) depend on the kernel version number.
fr: Cela peut être utile pour construire des programmes qui dépendent (généralement sans fondement) du numéro de version du noyau.

note: type: table
en: Do not keep build logs.  By default they are kept under @file{@var{localstatedir}/guix/log}.
fr: Ne pas garder les journaux de construction.  Par défaut ils sont gardés dans @file{@var{localstatedir}/guix/log}.

note: type: item
en: --system=@var{system}
fr: --system=@var{système}

note: type: table
en: Assume @var{system} as the current system type.  By default it is the architecture/kernel pair found at configure time, such as @code{x86_64-linux}.
fr: Supposer que @var{système} est le type de système actuel.  Par défaut c'est la paire architecture-noyau trouvée à la configuration, comme @code{x86_64-linux}.

note: type: item
en: --listen=@var{endpoint}
fr: --listen=@var{extrémité}

note: type: table
en: Listen for connections on @var{endpoint}.  @var{endpoint} is interpreted as the file name of a Unix-domain socket if it starts with @code{/} (slash sign).  Otherwise, @var{endpoint} is interpreted as a host name or host name and port to listen to.  Here are a few examples:
fr: Écouter les connexions sur @var{extrémité}.  @var{extrémité} est interprété comme un nom de fichier d'un socket Unix-domain s'il commence par @code{/} (barre oblique).  Sinon, @var{extrémité} est interprété comme un nom de domaine ou d'hôte et un port sur lequel écouter.  Voici quelques exemples :

note: type: table
en: Listen for connections on the @file{/gnu/var/daemon} Unix-domain socket, creating it if needed.
fr: Écouter les connexions sur le socket Unix-domain @file{/gnu/var/daemon} en le créant si besoin.

note: type: cindex
en: daemon, remote access
fr: démon, accès distant

note: type: cindex
en: remote access to the daemon
fr: accès distant au démon

note: type: cindex
en: daemon, cluster setup
fr: démon, paramètres de grappes

note: type: cindex
en: clusters, daemon setup
fr: grappes, paramètres du démon

note: type: table
en: Listen for TCP connections on the network interface corresponding to @code{localhost}, on port 44146.
fr: Écouter les connexions TCP sur l'interface réseau correspondant à @code{localhost} sur le port 44146.

note: type: table
en: Listen for TCP connections on the network interface corresponding to @code{128.0.0.42}, on port 1234.
fr: Écouter les connexions TCP sur l'interface réseau correspondant à @code{128.0.0.42} sur le port 1234.

note: type: table
en: This option can be repeated multiple times, in which case @command{guix-daemon} accepts connections on all the specified endpoints.  Users can tell client commands what endpoint to connect to by setting the @env{GUIX_DAEMON_SOCKET} environment variable (@pxref{The Store, @env{GUIX_DAEMON_SOCKET}}).
fr: Cette option peut être répétée plusieurs fois, auquel cas @command{guix-daemon} accepte des connexions sur tous les paramètres spécifiés.  On peut indiquer aux commandes clientes à quoi se connecter en paramétrant la variable d'environnement @env{GUIX_DAEMON_SOCKET} (@pxref{The Store, @code{GUIX_DAEMON_SOCKET}}).

note: type: quotation
en: The daemon protocol is @emph{unauthenticated and unencrypted}.  Using @option{--listen=@var{host}} is suitable on local networks, such as clusters, where only trusted nodes may connect to the build daemon.  In other cases where remote access to the daemon is needed, we recommend using Unix-domain sockets along with SSH.
fr: Le protocole du démon est @emph{non authentifié et non chiffré}.  Utiliser @option{--listen=@var{host}} est adapté sur des réseaux locaux, comme pour des grappes de serveurs, où seuls des nœuds de confiance peuvent se connecter au démon de construction.  Dans les autres cas où l'accès à distance au démon est requis, nous conseillons d'utiliser un socket Unix-domain avec SSH.

note: type: table
en: When @option{--listen} is omitted, @command{guix-daemon} listens for connections on the Unix-domain socket located at @file{@var{localstatedir}/guix/daemon-socket/socket}.
fr: Lorsque @option{--listen} est omis, @command{guix-daemon} écoute les connexions sur le socket Unix-domain situé à @file{@var{localstatedir}/guix/daemon-socket/socket}.

note: type: Plain text
en: When using Guix on top of GNU/Linux distribution other than Guix System---a so-called @dfn{foreign distro}---a few additional steps are needed to get everything in place.  Here are some of them.
fr: Lorsque vous utilisez Guix par dessus une distribution GNU/Linux qui n'est pas Guix System — ce qu'on appelle une @dfn{distro externe} — quelques étapes supplémentaires sont requises pour que tout soit en place.  En voici certaines.

note: type: cindex
en: locales, when not on Guix System
fr: régionalisation, en dehors de Guix System

note: type: Plain text
en: Packages installed @i{via} Guix will not use the locale data of the host system.  Instead, you must first install one of the locale packages available with Guix and then define the @env{GUIX_LOCPATH} environment variable:
fr: Les paquets installés @i{via} Guix n'utiliseront pas les données de régionalisation du système hôte.  À la place, vous devrez d'abord installer l'un des paquets linguistiques disponibles dans Guix puis définir la variable d'environnement @env{GUIX_LOCPATH} :

note: type: Plain text
en: Note that the @code{glibc-locales} package contains data for all the locales supported by the GNU@tie{}libc and weighs in at around 930@tie{}MiB@footnote{The size of the @code{glibc-locales} package is reduced down to about 213@tie{}MiB with store deduplication and further down to about 67@tie{}MiB when using a zstd-compressed Btrfs file system.}.  If you only need a few locales, you can define your custom locales package via the @code{make-glibc-utf8-locales} procedure from the @code{(gnu packages base)} module.  The following example defines a package containing the various Canadian UTF-8 locales known to the GNU@tie{}libc, that weighs around 14@tie{}MiB:
fr: Remarquez que le paquet @code{glibc-locales} contient les données de tous les paramètres linguistiques pris en charge par la GNU@tie{}libc et pèse environ 930@tie{}Mio@footnote{La taille du paquet @code{glibc-locales} est réduite à environ 213@tie{}Mio avec la déduplication du dépôt et encore à 67@tie{}Mio si vous utilisez le système de fichiers Btrfs compressé avec zstd}. Si vous n'avez besoin que de quelques paramètres, vous pouvez définir un paquet personnalisé avec la procédure @code{make-glibc-utf8-locales} du module @code{(gnu packages base)}. L'exemple suivant défini un paquet contenant plusieurs paramètres linguistiques canadiens connus de GNU@tie{}libc, qui pèse environ 14@tie{}Mio :

note: type: Plain text
en: The @env{GUIX_LOCPATH} variable plays a role similar to @env{LOCPATH} (@pxref{Locale Names, @env{LOCPATH},, libc, The GNU C Library Reference Manual}).  There are two important differences though:
fr: La variable @env{GUIX_LOCPATH} joue un rôle similaire à @env{LOCPATH} (@pxref{Locale Names, @code{LOCPATH},, libc, The GNU C Library Reference Manual}).  Il y a deux différences importantes cependant :

note: type: enumerate
en: @env{GUIX_LOCPATH} is honored only by the libc in Guix, and not by the libc provided by foreign distros.  Thus, using @env{GUIX_LOCPATH} allows you to make sure the programs of the foreign distro will not end up loading incompatible locale data.
fr: @env{GUIX_LOCPATH} n'est pris en compte que par la libc dans Guix et pas par la libc fournie par les distros externes.  Ainsi, utiliser @env{GUIX_LOCPATH} vous permet de vous assurer que les programmes de la distro externe ne chargeront pas de données linguistiques incompatibles.

note: type: enumerate
en: libc suffixes each entry of @env{GUIX_LOCPATH} with @code{/X.Y}, where @code{X.Y} is the libc version---e.g., @code{2.22}.  This means that, should your Guix profile contain a mixture of programs linked against different libc version, each libc version will only try to load locale data in the right format.
fr: la libc ajoute un suffixe @code{/X.Y} à chaque entrée de @env{GUIX_LOCPATH}, où @code{X.Y} est la version de la libc — p.@: ex.@: @code{2.22}.  Cela signifie que, si votre profile Guix contient un mélange de programmes liés avec des versions différentes de la libc, chaque version de la libc essaiera de charger les environnements linguistiques dans le bon format.

note: type: Plain text
en: This is important because the locale data format used by different libc versions may be incompatible.
fr: Cela est important car le format des données linguistiques utilisés par différentes version de la libc peuvent être incompatibles.

note: type: Plain text
en: When using Guix on a foreign distro, we @emph{strongly recommend} that the system run the GNU C library's @dfn{name service cache daemon}, @command{nscd}, which should be listening on the @file{/var/run/nscd/socket} socket.  Failing to do that, applications installed with Guix may fail to look up host names or user accounts, or may even crash.  The next paragraphs explain why.
fr: Lorsque vous utilisez Guix sur une distro externe, nous @emph{recommandons fortement} que ce système fasse tourner le @dfn{démon de cache de service de noms} de la bibliothèque C de GNU, @command{nscd}, qui devrait écouter sur le socket @file{/var/run/nscd/socket}.  Sans cela, les applications installées avec Guix peuvent échouer à résoudre des noms d'hôtes ou de comptes, ou même planter.  Les paragraphes suivants expliquent pourquoi.

note: type: Plain text
en: The GNU C library implements a @dfn{name service switch} (NSS), which is an extensible mechanism for ``name lookups'' in general: host name resolution, user accounts, and more (@pxref{Name Service Switch,,, libc, The GNU C Library Reference Manual}).
fr: La bibliothèque C de GNU implémente un @dfn{name service switch} (NSS), qui est un mécanisme d'extension pour les « résolutions de noms » en général : résolution de nom d'hôte, de compte utilisateur·rice et plus (@pxref{Name Service Switch,,, libc, The GNU C Library Reference Manual}).

note: type: Plain text
en: Being extensible, the NSS supports @dfn{plugins}, which provide new name lookup implementations: for example, the @code{nss-mdns} plugin allow resolution of @code{.local} host names, the @code{nis} plugin allows user account lookup using the Network information service (NIS), and so on.  These extra ``lookup services'' are configured system-wide in @file{/etc/nsswitch.conf}, and all the programs running on the system honor those settings (@pxref{NSS Configuration File,,, libc, The GNU C Reference Manual}).
fr: Comme il est extensible, NSS supporte des @dfn{greffons} qui fournissent une nouvelle implémentation de résolution de nom : par exemple le greffon @code{nss-mdns} permet la résolution de noms d'hôtes en @code{.local}, le greffon @code{nis} permet la résolution de comptes avec le Network Information Service (NIS), etc.  Ces « services de recherches » supplémentaires sont configurés au niveau du système dans @file{/etc/nsswitch.conf}, et tous les programmes qui tournent sur ce système prennent en compte ces paramètres (@pxref{NSS Configuration File,,, libc, The GNU C Reference Manual}).

note: type: Plain text
en: When they perform a name lookup---for instance by calling the @code{getaddrinfo} function in C---applications first try to connect to the nscd; on success, nscd performs name lookups on their behalf.  If the nscd is not running, then they perform the name lookup by themselves, by loading the name lookup services into their own address space and running it.  These name lookup services---the @file{libnss_*.so} files---are @code{dlopen}'d, but they may come from the host system's C library, rather than from the C library the application is linked against (the C library coming from Guix).
fr: Lorsqu'ils essayent d'effectuer une résolution de nom — par exemple en appelant la fonction @code{getaddrinfo} en C — les applications essayent d'abord de se connecter au nscd ; en cas de réussite, nscd effectue la résolution de nom pour eux.  Si le nscd ne tourne pas, alors ils effectuent la résolution eux-mêmes, en changeant les service de résolution dans leur propre espace d'adressage et en le lançant.  Ce services de résolution de noms — les fichiers @file{libnns_*.so} — sont @code{dlopen}és mais ils peuvent provenir de la bibliothèque C du système, plutôt que de la bibliothèque C à laquelle l'application est liée (la bibliothèque C de Guix).

note: type: Plain text
en: And this is where the problem is: if your application is linked against Guix's C library (say, glibc 2.24) and tries to load NSS plugins from another C library (say, @code{libnss_mdns.so} for glibc 2.22), it will likely crash or have its name lookups fail unexpectedly.
fr: Et c'est là que se trouve le problème : si votre application est liée à la bibliothèque C de Guix (disons, glibc-2.24) et essaye de charger les greffons NSS d'une autre bibliothèque C (disons, @code{libnss_mdns.so} pour glibc-2.22), il est très probable qu'elle plante ou que sa résolution de nom échoue de manière inattendue.

note: type: Plain text
en: Running @command{nscd} on the system, among other advantages, eliminates this binary incompatibility problem because those @code{libnss_*.so} files are loaded in the @command{nscd} process, not in applications themselves.
fr: Lancer @command{nscd} sur le système, entre autres avantages, élimine ce problème d'incompatibilité binaire car ces fichiers @code{libnss_*.so} sont chargés par le processus @command{nscd}, pas par l'application elle-même.

note: type: subsection
en: X11 Fonts
fr: Polices X11

note: type: Plain text
en: The majority of graphical applications use Fontconfig to locate and load fonts and perform X11-client-side rendering.  The @code{fontconfig} package in Guix looks for fonts in @file{$HOME/.guix-profile} by default.  Thus, to allow graphical applications installed with Guix to display fonts, you have to install fonts with Guix as well.  Essential font packages include @code{font-ghostscript}, @code{font-dejavu}, and @code{font-gnu-freefont}.
fr: La majorité des applications graphiques utilisent fontconfig pour trouver et charger les polices et effectuer le rendu côté client X11.  Le paquet @code{fontconfig} dans Guix cherche les polices dans @file{$HOME/.guix-profile} par défaut.  Ainsi, pour permettre aux applications graphiques installées avec Guix d'afficher des polices, vous devez aussi installer des polices avec Guix.  Les paquets de polices essentiels sont @code{font-ghostscript}, @code{font-dejavu} et @code{font-gnu-freefont}.

note: type: cindex
en: font cache
fr: cache de polices

note: type: Plain text
en: Once you have installed or removed fonts, or when you notice an application that does not find fonts, you may need to install Fontconfig and to force an update of its font cache by running:
fr: Lorsque vous installez ou supprimez des polices, ou lorsque vous remarquez qu'une application ne trouve pas les polices, vous pouvez avoir besoin d'installer Fontconfig et de forcer un rafraîchissement de son cache de police avec :

note: type: Plain text
en: To display text written in Chinese languages, Japanese, or Korean in graphical applications, consider installing @code{font-adobe-source-han-sans} or @code{font-wqy-zenhei}.  The former has multiple outputs, one per language family (@pxref{Packages with Multiple Outputs}).  For instance, the following command installs fonts for Chinese languages:
fr: Pour afficher des textes écrits en chinois, en japonais ou en coréen dans les applications graphiques, installez @code{font-adobe-source-han-sans} ou @code{font-wqy-zenhei}.  Le premier a plusieurs sorties, une par famille de langue (@pxref{Packages with Multiple Outputs}).  Par exemple, la commande suivante installe les polices pour le chinois :

note: type: Plain text
en: Older programs such as @command{xterm} do not use Fontconfig and instead rely on server-side font rendering.  Such programs require to specify a full name of a font using XLFD (X Logical Font Description), like this:
fr: Les vieux programmes comme @command{xterm} n'utilisent pas fontconfig et s'appuient sur le rendu du côté du serveur.  Ces programmes ont besoin de spécifier le nom complet de la police en utilisant XLFD (X Logical Font Description), comme ceci :

note: type: Plain text
en: To be able to use such full names for the TrueType fonts installed in your Guix profile, you need to extend the font path of the X server:
fr: Pour pouvoir utiliser ces noms complets avec les polices TrueType installées dans votre profil Guix, vous devez étendre le chemin des polices du serveur X :

note: type: Plain text
en: After that, you can run @code{xlsfonts} (from @code{xlsfonts} package)  to make sure your TrueType fonts are listed there.
fr: Ensuite, vous pouvez lancer @code{xlsfonts} (du paquet @code{xlsfonts}) pour vous assurer que vos polices TrueType y sont listées.

note: type: Plain text
en: The @code{nss-certs} package provides X.509 certificates, which allow programs to authenticate Web servers accessed over HTTPS.
fr: Le paquet @code{nss-certs} fournit les certificats X.509 qui permettent aux programmes d'authentifier les serveurs web par HTTPS@.

note: type: Plain text
en: When using Guix on a foreign distro, you can install this package and define the relevant environment variables so that packages know where to look for certificates.  @xref{X.509 Certificates}, for detailed information.
fr: Lorsque vous utilisez Guix sur une distribution externe, vous pouvez installer ce paquet et définir les variables d'environnement adéquates pour que les paquets sachent où trouver les certificats.  @xref{X.509 Certificates}, pour des informations détaillées.

note: type: Plain text
en: When you install Emacs packages with Guix, the Elisp files are placed under the @file{share/emacs/site-lisp/} directory of the profile in which they are installed.  The Elisp libraries are made available to Emacs through the @env{EMACSLOADPATH} environment variable, which is set when installing Emacs itself.
fr: Quand vous installez des paquets Emacs avec Guix, les fichiers Elips sont placés dans le répertoire @file{share/emacs/site-lisp/} du profil dans lequel ils sont installés.  Les bibliothèques Elisp sont rendues disponibles dans Emacs avec la variable d'environnement @env{EMACSLOADPATH}, qui est initialisée à l'installation d'Emacs lui-même.

note: type: Plain text
en: Additionally, autoload definitions are automatically evaluated at the initialization of Emacs, by the Guix-specific @code{guix-emacs-autoload-packages} procedure.  If, for some reason, you want to avoid auto-loading the Emacs packages installed with Guix, you can do so by running Emacs with the @option{--no-site-file} option (@pxref{Init File,,, emacs, The GNU Emacs Manual}).
fr: En plus, des définitions autoload sont automatiquement évaluées au démarrage d'Emacs, par la procédure @code{guix-emacs-autoload-packages} de Guix. Si, pour quelque raison que ce soit, vous souhaitez éviter de charger automatiquement les paquets Emacs installés avec Guix, vous pouvez le faire en lançant Emacs avec l'option @option{--no-site-file} (@pxref{Init File,,, emacs, The GNU Emacs Manual}).

note: type: quotation
en: Emacs can now compile packages natively.  Under the default configuration, this means that Emacs packages will now be just-in-time (JIT) compiled as you use them, and the results stored in a subdirectory of your @code{user-emacs-directory}.
fr: Emacs peut maintenant compiler des paquets nativement. Dans la configuration par défaut, cela signifie que les paquets Emacs seront maintenant compilés à la volée (JIT) quand vous les utilisez, et les résultats seront stockés dans un sous-répertoire de votre @code{user-emacs-directory}.

note: type: quotation
en: Furthermore, the build system for Emacs packages transparently supports native compilation, but note, that @code{emacs-minimal}---the default Emacs for building packages---has been configured without native compilation.  To natively compile your emacs packages ahead of time, use a transformation like @option{--with-input=emacs-minimal=emacs}.
fr: De plus, le système de construction des paquets Emacs prend en charge la compilation native de manière transparente, mais remarquez que @code{emacs-minimal} — l'Emacs par défaut pour construire les paquets — n'a pas été configuré avec la compilation native. Pour compiler nativement vos paquets emacs en avance, utilisez une transformation comme @option{--with-input=emacs-minimal=emacs}.

note: type: cindex
en: Upgrading Guix, on a foreign distro
fr: Mise à niveau de Guix, sur une distro externe

note: type: Plain text
en: To upgrade Guix, run:
fr: Pour mettre Guix à niveau, lancez :

note: type: Plain text
en: @xref{Invoking guix pull}, for more information.
fr: @xref{Invoking guix pull}, pour plus d'informations.

note: type: cindex
en: upgrading Guix for the root user, on a foreign distro
fr: mise à niveau de Guix pour l'utilisateur root, sur une distro externe

note: type: cindex
en: upgrading the Guix daemon, on a foreign distro
fr: mise à niveau du démon Guix, sur une distro externe

note: type: cindex
en: @command{guix pull} for the root user, on a foreign distro
fr: @command{guix pull} pour l'utilisateur·rice root, sur une distribution externe

note: type: Plain text
en: On a foreign distro, you can upgrade the build daemon by running:
fr: Sur une distribution externe, vous pouvez mettre à jour le démon de construction en lançant :

note: type: Plain text
en: followed by (assuming your distro uses the systemd service management tool):
fr: suivi de (dans le cas où votre distribution utilise l'outil de gestion de services Systemd) :

note: type: Plain text
en: On Guix System, upgrading the daemon is achieved by reconfiguring the system (@pxref{Invoking guix system, @code{guix system reconfigure}}).
fr: Sur Guix System, la mise à jour du démon est effectuée par la reconfiguration du système (@pxref{Invoking guix system, @code{guix system reconfigure}}).

note: type: cindex
en: installing Guix System
fr: installer Guix System

note: type: Plain text
en: This section explains how to install Guix System on a machine.  Guix, as a package manager, can also be installed on top of a running GNU/Linux system, @pxref{Installation}.
fr: Cette section explique comment installer Guix System sur une machine.  Guix, en tant que gestionnaire de paquets, peut aussi être installé sur un système GNU/Linux déjà installé, @pxref{Installation}.

note: type: quotation
en: You are reading this documentation with an Info reader.  For details on how to use it, hit the @key{RET} key (``return'' or ``enter'') on the link that follows: @pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}.  Hit @kbd{l} afterwards to come back here.
fr: Vous lisez cette documentation avec un lecteur Info.  Pour des détails sur son utilisation, appuyez sur la touche @key{ENTRÉE} (« Entrée » ou « à la ligne ») sur le lien suivant : @pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}.  Appuyez ensuite sur @kbd{l} pour revenir ici.

note: type: quotation
en: Alternatively, run @command{info info} in another tty to keep the manual available.
fr: Vous pouvez aussi exécuter @command{info info} dans un autre tty pour garder le manuel disponible.

note: type: Plain text
en: We consider Guix System to be ready for a wide range of ``desktop'' and server use cases.  The reliability guarantees it provides---transactional upgrades and rollbacks, reproducibility---make it a solid foundation.
fr: Nous considérons Guix System comme prêt pour une grande variété de cas d'utilisation pour le « bureau » et le serveur.  Les garanties de fiabilité qu'il fournit — les mises à jour transactionnelles, les retours en arrières et la reproductibilité — en font une solide fondation.

note: type: Plain text
en: Nevertheless, before you proceed with the installation, be aware of the following noteworthy limitations applicable to version @value{VERSION}:
fr: Néanmoins, avant de procéder à l'installation, soyez conscient de ces limitations les plus importantes qui s'appliquent à la version @value{VERSION} :

note: type: itemize
en: More and more system services are provided (@pxref{Services}), but some may be missing.
fr: De plus en plus de services systèmes sont fournis (@pxref{Services}) mais certains manquent toujours cruellement.

note: type: itemize
en: GNOME, Xfce, LXDE, and Enlightenment are available (@pxref{Desktop Services}), as well as a number of X11 window managers.  However, KDE is currently missing.
fr: GNOME, Xfce, LXDE et Enlightenment sont disponibles (@pxref{Desktop Services}), ainsi qu'un certain nombre de gestionnaires de fenêtres X11.  Cependant, il manque actuellement KDE.

note: type: Plain text
en: More than a disclaimer, this is an invitation to report issues (and success stories!), and to join us in improving it.  @xref{Contributing}, for more info.
fr: Plus qu'un avertissement, c'est une invitation à rapporter les problèmes (et vos succès !) et à nous rejoindre pour améliorer la distribution.  @xref{Contributing}, pour plus d'info.

note: type: cindex
en: hardware support on Guix System
fr: prise en charge du matériel sur Guix System

note: type: Plain text
en: GNU@tie{}Guix focuses on respecting the user's computing freedom.  It builds around the kernel Linux-libre, which means that only hardware for which free software drivers and firmware exist is supported.  Nowadays, a wide range of off-the-shelf hardware is supported on GNU/Linux-libre---from keyboards to graphics cards to scanners and Ethernet controllers.  Unfortunately, there are still areas where hardware vendors deny users control over their own computing, and such hardware is not supported on Guix System.
fr: GNU@tie{}Guix se concentre sur le respect des libertés de ses utilisateurs et utilisatrices.  Il est construit autour du noyau Linux-libre, ce qui signifie que seuls les matériels pour lesquels des pilotes logiciels et des microgiciels libres sont disponibles sont pris en charge.  De nos jours, une grande gamme de matériel qu'on peut acheter est prise en charge par GNU/Linux-libre — des claviers aux cartes graphiques en passant par les scanners et les contrôleurs Ethernet.  Malheureusement, il reste des produits dont les fabricants refusent de laisser le contrôle aux utilisateur·rice·s sur leur propre utilisation de l'ordinateur, et ces matériels ne sont pas pris en charge par Guix System.

note: type: cindex
en: WiFi, hardware support
fr: WiFi, support matériel

note: type: Plain text
en: One of the main areas where free drivers or firmware are lacking is WiFi devices.  WiFi devices known to work include those using Atheros chips (AR9271 and AR7010), which corresponds to the @code{ath9k} Linux-libre driver, and those using Broadcom/AirForce chips (BCM43xx with Wireless-Core Revision 5), which corresponds to the @code{b43-open} Linux-libre driver.  Free firmware exists for both and is available out-of-the-box on Guix System, as part of @code{%base-firmware} (@pxref{operating-system Reference, @code{firmware}}).
fr: L'un des types de matériels où les pilotes ou les microgiciels sont le moins disponibles sont les appareils WiFi.  Les appareils WiFi connus pour fonctionner sont ceux qui utilisent des puces Atheros (AR9271 et AR7010) qui correspondent au pilote @code{ath9k} de Linux-libre, et ceux qui utilisent des puces Broadcom/AirForce (BCM43xx avec la révision Wireless-Core 5), qui correspondent au pilote @code{b43-open} de Linux-libre.  Des microgiciels libres existent pour les deux et sont disponibles directement sur Guix System, dans @var{%base-firmware} (@pxref{operating-system Reference, @code{firmware}}).

note: type: Plain text
en: The installer warns you early on if it detects devices that are known @emph{not} to work due to the lack of free firmware or free drivers.
fr: L'installateur vous averti rapidement s'il détecte des périphériques connus pour ne @emph{pas} marcher à cause du manque de micrologiciel ou de pilote libre.

note: type: Plain text
en: The @uref{https://www.fsf.org/, Free Software Foundation} runs @uref{https://www.fsf.org/ryf, @dfn{Respects Your Freedom}} (RYF), a certification program for hardware products that respect your freedom and your privacy and ensure that you have control over your device.  We encourage you to check the list of RYF-certified devices.
fr: La @uref{https://www.fsf.org/, Free Software Foundation} a un programme de certification nommé @uref{https://www.fsf.org/ryf, @dfn{Respects Your Freedom}} (RYF), pour les produits matériels qui respectent votre liberté et votre vie privée en s'assurant que vous avez le contrôle sur l'appareil.  Nous vous encourageons à vérifier la liste des appareils certifiés par RYF.

note: type: Plain text
en: Another useful resource is the @uref{https://www.h-node.org/, H-Node} web site.  It contains a catalog of hardware devices with information about their support in GNU/Linux.
fr: Une autre ressource utile est le site web @uref{https://www.h-node.org/, H-Node}.  Il contient un catalogue d'appareils avec des informations sur leur support dans GNU/Linux.

note: type: Plain text
en: An ISO-9660 installation image that can be written to a USB stick or burnt to a DVD can be downloaded from @indicateurl{@value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso}, where you can replace @code{x86_64-linux} with one of:
fr: Une image d'installation ISO-9660 qui peut être écrite sur une clé USB ou être gravée sur un DVD est téléchargeable à partir de @indicateurl{@value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso}, où vous pouvez remplacer @code{x86_64-linux} par l'un des éléments suivants :

note: type: table
en: for a GNU/Linux system on Intel/AMD-compatible 64-bit CPUs;
fr: pour un système GNU/Linux sur un CPU compatible Intel/AMD 64-bits ;

note: type: table
en: for a 32-bit GNU/Linux system on Intel-compatible CPUs.
fr: pour un système GNU/Linux sur un CPU compatible Intel 32-bits.

note: type: Plain text
en: Make sure to download the associated @file{.sig} file and to verify the authenticity of the image against it, along these lines:
fr: Assurez-vous de télécharger les fichiers @file{.sig} associés et de vérifier l'authenticité de l'image avec, de cette manière :

note: type: Plain text
en: This image contains the tools necessary for an installation.  It is meant to be copied @emph{as is} to a large-enough USB stick or DVD.
fr: Cette image contient les outils nécessaires à l'installation.  Elle est faite pour être copiée @emph{telle quelle} sur une clef USB assez grosse ou un DVD.

note: type: unnumberedsubsec
en: Copying to a USB Stick
fr: Copie sur une clef USB

note: type: Plain text
en: Insert a USB stick of 1@tie{}GiB or more into your machine, and determine its device name.  Assuming that the USB stick is known as @file{/dev/sdX}, copy the image with:
fr: Insérez la clef USB de 1@tie{}Gio ou plus dans votre machine et déterminez son nom d'appareil.  En supposant que la clef usb est connue sous le nom de @file{/dev/sdX}, copiez l'image avec :

note: type: Plain text
en: Access to @file{/dev/sdX} usually requires root privileges.
fr: Accéder à @file{/dev/sdX} requiert généralement les privilèges d'administration.

note: type: unnumberedsubsec
en: Burning on a DVD
fr: Graver sur un DVD

note: type: Plain text
en: Insert a blank DVD into your machine, and determine its device name.  Assuming that the DVD drive is known as @file{/dev/srX}, copy the image with:
fr: Insérez un DVD vierge dans votre machine et déterminez son nom d'appareil.  En supposant que le DVD soit connu sont le nom de @file{/dev/srX}, copiez l'image avec :

note: type: Plain text
en: Access to @file{/dev/srX} usually requires root privileges.
fr: Accéder à @file{/dev/srX} requiert généralement les privilèges root.

note: type: unnumberedsubsec
en: Booting
fr: Démarrage

note: type: Plain text
en: Once this is done, you should be able to reboot the system and boot from the USB stick or DVD@.  The latter usually requires you to get in the BIOS or UEFI boot menu, where you can choose to boot from the USB stick.  In order to boot from Libreboot, switch to the command mode by pressing the @kbd{c} key and type @command{search_grub usb}.
fr: Une fois que c'est fait, vous devriez pouvoir redémarrer le système et démarrer depuis la clé USB ou le DVD@.  Pour cela, vous devrez généralement entrer dans le menu de démarrage BIOS ou UEFI, où vous pourrez choisir de démarrer sur la clé USB.  Pour démarrer depuis Libreboot, passez en mode de commande en appuyant sur la touche @kbd{c} et en tapant @command{search grub usb}.

note: type: Plain text
en: @xref{Installing Guix in a VM}, if, instead, you would like to install Guix System in a virtual machine (VM).
fr: @xref{Installing Guix in a VM}, si, à la place, vous souhaitez installer Guix System dans une machine virtuelle (VM).

note: type: Plain text
en: Once you have booted, you can use the guided graphical installer, which makes it easy to get started (@pxref{Guided Graphical Installation}).  Alternatively, if you are already familiar with GNU/Linux and if you want more control than what the graphical installer provides, you can choose the ``manual'' installation process (@pxref{Manual Installation}).
fr: Une fois que vous avez démarré, vous pouvez utiliser l'installateur graphique, qui rend facile la prise en main (@pxref{Guided Graphical Installation}).  Sinon, si vous êtes déjà familier avec GNU/Linux et que vous voulez plus de contrôle que ce que l'installateur graphique propose, vous pouvez choisir le processus d'installation « manuel » (@pxref{Manual Installation}).

note: type: Plain text
en: The graphical installer is available on TTY1.  You can obtain root shells on TTYs 3 to 6 by hitting @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4}, etc.  TTY2 shows this documentation and you can reach it with @kbd{ctrl-alt-f2}.  Documentation is browsable using the Info reader commands (@pxref{Top,,, info-stnd, Stand-alone GNU Info}).  The installation system runs the GPM mouse daemon, which allows you to select text with the left mouse button and to paste it with the middle button.
fr: L'installateur graphique est disponible sur le TTY1.  Vous pouvez obtenir des shells root sur les TTY 3 à 6 en tapant @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4} etc.  Le TTY2 affiche cette documentation que vous pouvez atteindre avec @kbd{ctrl-alt-f2}. On peut naviguer dans la documentation avec les commandes du lecteur Info (@pxref{Top,,, info-stnd, Stand-alone GNU Info}).  Le démon de souris GPM tourne sur le système d'installation, ce qui vous permet de sélectionner du texte avec le bouton gauche de la souris et de le coller en appuyant sur la molette.

note: type: quotation
en: Installation requires access to the Internet so that any missing dependencies of your system configuration can be downloaded.  See the ``Networking'' section below.
fr: L'installation nécessite un accès au réseau pour que les dépendances manquantes de votre configuration système puissent être téléchargées.  Voyez la section « réseau » plus bas.

note: type: Plain text
en: The graphical installer is a text-based user interface.  It will guide you, with dialog boxes, through the steps needed to install GNU@tie{}Guix System.
fr: L'installateur graphique est une interface utilisateur en mode texte.  Il vous guidera, avec des boîtes de dialogue, le long des étapes requises pour installer GNU@tie{}Guix System.

note: type: Plain text
en: The first dialog boxes allow you to set up the system as you use it during the installation: you can choose the language, keyboard layout, and set up networking, which will be used during the installation.  The image below shows the networking dialog.
fr: La première boîte de dialogue vous permet de paramétrer le système comme vous le souhaitez pendant l'installation : vous pouvez choisir la langue, la disposition du clavier et paramétrer le réseau, qui sera utilisé pendant l'installation.  L'image ci-dessous montre le dialogue pour le réseau.

note: type: Plain text
en: @image{images/installer-network,5in,, networking setup with the graphical installer}
fr: @image{images/installer-network,5in,, paramétrage du réseau avec l'installateur graphique}

note: type: Plain text
en: Later steps allow you to partition your hard disk, as shown in the image below, to choose whether or not to use encrypted file systems, to enter the host name and root password, and to create an additional account, among other things.
fr: Les étapes suivantes vous permettent de partitionner votre disque dur, comme le montre l'image ci-dessous, de choisir si vous voulez ou non utiliser des systèmes de fichiers chiffrés, de saisir le nom d'hôte et le mot de passe root et de créer un compte supplémentaire, entre autres choses.

note: type: Plain text
en: @image{images/installer-partitions,5in,, partitioning with the graphical installer}
fr: @image{images/installer-partitions,5in,, partitionnement du disque avec l'installateur graphique}

note: type: Plain text
en: Note that, at any time, the installer allows you to exit the current installation step and resume at a previous step, as show in the image below.
fr: Remarquez que, à tout moment, l'installateur vous permet de sortir de l'étape d'installation actuelle et de recommencer une étape précédente, comme le montre l'image ci-dessous.

note: type: Plain text
en: @image{images/installer-resume,5in,, resuming the installation process}
fr: @image{images/installer-resume,5in,, reprise du processus d'installation}

note: type: Plain text
en: Once you're done, the installer produces an operating system configuration and displays it (@pxref{Using the Configuration System}).  At that point you can hit ``OK'' and installation will proceed.  On success, you can reboot into the new system and enjoy.  @xref{After System Installation}, for what's next!
fr: Une fois que vous avez fini, l'installateur produit une configuration de système d'exploitation et vous la montre (@pxref{Using the Configuration System}).  À ce moment, vous pouvez appuyer sur « OK » et l'installation continuera.  Lorsqu'elle aura réussi, vous pourrez redémarrer sur le nouveau système et vous amuser.  @xref{After System Installation}, pour la suite des festivités !

note: type: Plain text
en: This section describes how you would ``manually'' install GNU@tie{}Guix System on your machine.  This option requires familiarity with GNU/Linux, with the shell, and with common administration tools.  If you think this is not for you, consider using the guided graphical installer (@pxref{Guided Graphical Installation}).
fr: Cette section décrit comme vous pourriez installe « manuellement » GNU@tie{}Guix System sur votre machine.  Cette option nécessite que vous soyez familier avec GNU/Linux, le shell et avec les outils d'administration usuels.  Si vous pensez que ce n'est pas pour vous, pensez à utiliser l'installateur graphique (@pxref{Guided Graphical Installation}).

note: type: Plain text
en: The installation system provides root shells on TTYs 3 to 6; press @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4}, and so on to reach them.  It includes many common tools needed to install the system, but is also a full-blown Guix System.  This means that you can install additional packages, should you need it, using @command{guix package} (@pxref{Invoking guix package}).
fr: Le système d'installation fournit des shells root sur les TTY 3 à 6 ; appuyez sur @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4} etc pour y accéder. Il inclus plusieurs outils usuels pour requis pour cette tâche.  Mais c'est aussi un système Guix complet. Cela signifie que vous pouvez installer des paquets supplémentaires si vous en avez besoin, avec @command{guix package} (@pxref{Invoking guix package}).

note: type: subsection
en: Keyboard Layout, Networking, and Partitioning
fr: Disposition du clavier réseau et partitionnement

note: type: Plain text
en: Before you can install the system, you may want to adjust the keyboard layout, set up networking, and partition your target hard disk.  This section will guide you through this.
fr: Avant que vous ne puissiez installer le système, vous voudrez sans doute ajuster la disposition du clavier, paramétrer le réseau et partitionner le disque dur cible.  Cette section vous guidera à travers tout cela.

note: type: cindex
en: keyboard layout
fr: disposition du clavier

note: type: Plain text
en: The installation image uses the US qwerty keyboard layout.  If you want to change it, you can use the @command{loadkeys} command.  For example, the following command selects the Dvorak keyboard layout:
fr: L'image d'installation utilise la disposition clavier qwerty (US).  Si vous voulez la changer, vous pouvez utiliser la commande @command{loadkeys}.  Par exemple, la commande suivante sélectionne la disposition Dvorak :

note: type: Plain text
en: See the files under @file{/run/current-system/profile/share/keymaps} for a list of available keyboard layouts.  Run @command{man loadkeys} for more information.
fr: Consultez les fichiers dans @file{/run/current-system/profile/share/keymaps} pour trouver une liste des dispositions disponibles.  Lancez @command{man loadkey} pour plus d'informations.

note: type: subsubsection
en: Networking
fr: Réseau

note: type: Plain text
en: Run the following command to see what your network interfaces are called:
fr: Lancez la commande suivante pour voir comment vos interfaces réseau sont appelées :

note: type: table
en: @dots{} or, using the GNU/Linux-specific @command{ip} command:
fr: @dots{} ou, avec la commande spécifique à GNU/Linux @command{ip} :

note: type: Plain text
en: Wired interfaces have a name starting with @samp{e}; for example, the interface corresponding to the first on-board Ethernet controller is called @samp{eno1}.  Wireless interfaces have a name starting with @samp{w}, like @samp{w1p2s0}.
fr: Les interfaces filaires ont un nom qui commence par @samp{e} ; par exemple, l'interface qui correspond au premier contrôleur Ethernet sur la carte mère est appelé @samp{eno1}.  Les interfaces sans-fil ont un nom qui commence par @samp{w}, comme @samp{w1p2s0}.

note: type: item
en: Wired connection
fr: Connexion filaire

note: type: table
en: To configure a wired network run the following command, substituting @var{interface} with the name of the wired interface you want to use.
fr: Pour configure une connexion filaire, lancez la commande suivante, en remplaçant @var{interface} par le nom de l'interface filaire que vous voulez utiliser.

note: type: item
en: Wireless connection
fr: Connexion sans-fil

note: type: cindex
en: wireless
fr: sans-fil

note: type: table
en: To configure wireless networking, you can create a configuration file for the @command{wpa_supplicant} configuration tool (its location is not important) using one of the available text editors such as @command{nano}:
fr: Pour configurer le réseau sans-fil, vous pouvez créer un fichier de configuration pour l'outil de configuration @command{wpa_supplicant} (son emplacement importe peu) avec l'un des éditeurs de texte disponibles comme @command{nano} :

note: type: table
en: As an example, the following stanza can go to this file and will work for many wireless networks, provided you give the actual SSID and passphrase for the network you are connecting to:
fr: Par exemple, la déclaration qui suit peut aller dans ce fichier et fonctionnera pour plusieurs réseaux sans-fil, si vous donnez le vrai SSID et la phrase de passe pour le réseau auquel vous vous connectez :

note: type: example
en: network=@{
      ssid="@var{my-ssid}"
      key_mgmt=WPA-PSK
      psk="the network's secret passphrase"
    @}
fr: network=@{
      ssid="@var{mon-ssid}"
      key_mgmt=WPA-PSK
      psk="la phrase de passe secrète du réseau"
    @}

note: type: table
en: Start the wireless service and run it in the background with the following command (substitute @var{interface} with the name of the network interface you want to use):
fr: Démarrez le service sans-fil et lancez-le en tâche de fond avec la commande suivante (en remplaçant @var{interface} par le nom de l'interface réseau que vous voulez utiliser) :

note: type: table
en: Run @command{man wpa_supplicant} for more information.
fr: Lancez @command{man wpa_supplicant} pour plus d'informations.

note: type: Plain text
en: At this point, you need to acquire an IP address.  On a network where IP addresses are automatically assigned @i{via} DHCP, you can run:
fr: À partir de ce moment, vous avez besoin d'une adresse IP.  Sur les réseaux où les IP sont automatiquement attribuée par DHCP, vous pouvez lancer :

note: type: Plain text
en: Try to ping a server to see if networking is up and running:
fr: Essayez de pinger un serveur pour voir si le réseau fonctionne :

note: type: Plain text
en: Setting up network access is almost always a requirement because the image does not contain all the software and tools that may be needed.
fr: Mettre en place un accès réseau est presque toujours une nécessité parce que l'image ne contient pas tous les logiciels et les outils dont vous pourriez avoir besoin.

note: type: cindex
en: proxy, during system installation
fr: mandataire, pendant l'installation du système

note: type: Plain text
en: If you need HTTP and HTTPS access to go through a proxy, run the following command:
fr: Si vous avez besoin d'un accès HTTP et HTTPS pour passer à travers un proxy, lancez la commande suivante :

note: type: Plain text
en: where @var{URL} is the proxy URL, for example @code{http://example.org:8118}.
fr: où @var{URL} est l'URL du proxy, par exemple @code{http://example.org:8118}.

note: type: cindex
en: installing over SSH
fr: installer par SSH

note: type: Plain text
en: If you want to, you can continue the installation remotely by starting an SSH server:
fr: Si vous le souhaitez, vous pouvez continuer l'installation à distance en démarrant un serveur SSH :

note: type: Plain text
en: Make sure to either set a password with @command{passwd}, or configure OpenSSH public key authentication before logging in.
fr: Assurez-vous soit de définir un mot de passe avec @command{passwd}, soit de configurer l'authentification par clef OpenSSH avant de vous connecter.

note: type: subsubsection
en: Disk Partitioning
fr: Partitionnement

note: type: Plain text
en: Unless this has already been done, the next step is to partition, and then format the target partition(s).
fr: À moins que vous ne l'ayez déjà fait, l'étape suivante consiste à partitionner le disque puis à formater les partitions cibles.

note: type: Plain text
en: The installation image includes several partitioning tools, including Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), @command{fdisk}, and @command{cfdisk}.  Run it and set up your disk with the partition layout you want:
fr: L'image d'installation inclus plusieurs outils de partitionnement, dont Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), @command{fdisk}, et @command{cfdisk}.  Lancez-en un et paramétrez votre disque avec le partitionnement qui vous convient :

note: type: Plain text
en: If your disk uses the GUID Partition Table (GPT) format and you plan to install BIOS-based GRUB (which is the default), make sure a BIOS Boot Partition is available (@pxref{BIOS installation,,, grub, GNU GRUB manual}).
fr: Si votre disque utilise le format des tables de partitions GUID (GPT) et que vous souhaitez installer un GRUB pour système BIOS (c'est le cas par défaut), assurez-vous de créer qu'une partition de démarrage BIOS soit bien disponible (@pxref{BIOS installation,,, grub, GNU GRUB manual}).

note: type: cindex
en: ESP, EFI system partition
fr: ESP, partition système EFI

note: type: Plain text
en: If you instead wish to use EFI-based GRUB, a FAT32 @dfn{EFI System Partition} (ESP) is required.  This partition can be mounted at @file{/boot/efi} for instance and must have the @code{esp} flag set.  E.g., for @command{parted}:
fr: Si vous souhaitez à la place utilise GRUB pour système EFI, vous devrez avoir une @dfn{partition système EFI} (ESP) en FAT32.  Cette partition peut être montée dans @file{/boot/efi} par exemple et doit avoir le drapeau @code{esp}.  P.@: ex.@: pour @command{parted} :

note: type: quotation
en: Unsure whether to use EFI- or BIOS-based GRUB? If the directory @file{/sys/firmware/efi} exists in the installation image, then you should probably perform an EFI installation, using @code{grub-efi-bootloader}.  Otherwise you should use the BIOS-based GRUB, known as @code{grub-bootloader}.  @xref{Bootloader Configuration}, for more info on bootloaders.
fr: Vous n'êtes pas sûr de savoir si vous devez utiliser un GRUB EFI ou BIOS ?  Si le répertoire @file{/sys/firmware/efi} existe sur l'image d'installation, vous devriez probablement effectuer une installation EFI, avec @code{grub-efi-bootloader}.  Sinon, vous devriez utiliser le GRUB en BIOS, @code{grub-bootloader}.  @xref{Bootloader Configuration} pour plus d'information sur le chargeur d'amorçage.

note: type: Plain text
en: Once you are done partitioning the target hard disk drive, you have to create a file system on the relevant partition(s)@footnote{Currently Guix System only supports ext4, btrfs, JFS, F2FS, and XFS file systems.  In particular, code that reads file system UUIDs and labels only works for these file system types.}.  For the ESP, if you have one and assuming it is @file{/dev/sda1}, run:
fr: Une fois que vous avez fini le partitionnement du disque dur cible, vous devez créer un système de fichier sur les partitions@footnote{Actuellement Guix System ne prend en charge que les systèmes de fichiers ext4, btrfs, JFS, F2FS et XFS.  En particulier, le code qui lit les UUID des systèmes de fichiers et les étiquettes ne fonctionne que pour ces types de systèmes de fichiers.}.  Pour l'ESP, si vous en avez une et en supposant que ce soit @file{/dev/sda1}, lancez :

note: type: Plain text
en: For the root file system, ext4 is the most widely used format.  Other file systems, such as Btrfs, support compression, which is reported to nicely complement file deduplication that the daemon performs independently of the file system (@pxref{Invoking guix-daemon, deduplication}).
fr: Concernant le système de fichier root, ext4 est le format le plus largement utilisé. D'autres systèmes de fichiers, comme Btrfs, supportent la compression, laquelle est reportée pour compléter agréablement la dédupplication que le démon réalise indépendamment du système de fichier (@pxref{Invoking guix-daemon, deduplication}).

note: type: Plain text
en: Preferably, assign file systems a label so that you can easily and reliably refer to them in @code{file-system} declarations (@pxref{File Systems}).  This is typically done using the @code{-L} option of @command{mkfs.ext4} and related commands.  So, assuming the target root partition lives at @file{/dev/sda2}, a file system with the label @code{my-root} can be created with:
fr: Préférez assigner une étiquette au système de fichier pour que vous puissiez vous y référer de manière fiable dans la déclaration @code{file-system} (@pxref{File Systems}).  On le fait habituellement avec l'option @code{-L} de @command{mkfs.ext4} et des commandes liées.  Donc, en supposant que la partition racine soit sur @file{/dev/sda2}, on peut créer un système de fichier avec pour étiquette @code{my-root} avec :

note: type: cindex
en: encrypted disk
fr: chiffrement du disque

note: type: Plain text
en: If you are instead planning to encrypt the root partition, you can use the Cryptsetup/LUKS utilities to do that (see @inlinefmtifelse{html, @uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}}, @code{man cryptsetup}} for more information).
fr: Si vous voulez plutôt chiffrer la partition root, vous pouvez utiliser les utilitaires Cryptsetup et LUKS pour cela (voir @inlinefmtifelse{html, @uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}}, @code{man cryptsetup}} pour plus d'informations).

note: type: quotation
en: Warning
fr: Attention

note: type: quotation
en: Note that GRUB can unlock LUKS2 devices since version 2.06, but only supports the PBKDF2 key derivation function, which is not the default for @command{cryptsetup luksFormat}.  You can check which key derivation function is being used by a device by running @command{cryptsetup luksDump @var{device}}, and looking for the PBKDF field of your keyslots.
fr: Remarquez que GRUB peut déverrouiller des périphériques LUKS2 depuis la version 2.06, mais il prend en charge uniquement la fonction de dérivation de clé PBKDF2, qui n'est pas celle par défaut de @command{cryptsetup luksFormat}. Vous pouvez vérifier quelle fonction de dérivation de clé est utilisée par un périphérique avec @command{cryptsetup luksDump @var{périphérique}}, et en regardant le champ PBKDF de vos emplacements de clés.

note: type: Plain text
en: Assuming you want to store the root partition on @file{/dev/sda2}, the command sequence to format it as a LUKS2 partition would be along these lines:
fr: En supposant que vous voulez stocker la partition racine sur @file{/dev/sda2}, voici la séquence de commandes pour la formater en partition LUKS2 :

note: type: example
en: cryptsetup luksFormat --type luks2 --pbkdf pbkdf2 /dev/sda2
    cryptsetup open /dev/sda2 my-partition
    mkfs.ext4 -L my-root /dev/mapper/my-partition
fr: cryptsetup luksFormat --type luks2 --pbkdf pbkdf2 /dev/sda2
    cryptsetup open /dev/sda2 ma-partition
    mkfs.ext4 -L my-root /dev/mapper/ma-partition

note: type: Plain text
en: Once that is done, mount the target file system under @file{/mnt} with a command like (again, assuming @code{my-root} is the label of the root file system):
fr: Une fois cela effectué, montez le système de fichier cible dans @file{/mnt} avec une commande comme (de nouveau, en supposant que @code{my-root} est l'étiquette du système de fichiers racine) :

note: type: Plain text
en: Also mount any other file systems you would like to use on the target system relative to this path.  If you have opted for @file{/boot/efi} as an EFI mount point for example, mount it at @file{/mnt/boot/efi} now so it is found by @code{guix system init} afterwards.
fr: Montez aussi tous les systèmes de fichiers que vous voudriez utiliser sur le système cible relativement à ce chemin.  Si vous avez choisi d'avoir un @file{/boot/efi} comme point de montage EFI par exemple, montez-la sur @file{/mnt/boot/efi} maintenant pour qu'elle puisse être trouvée par @code{guix system init} ensuite.

note: type: Plain text
en: Finally, if you plan to use one or more swap partitions (@pxref{Swap Space}), make sure to initialize them with @command{mkswap}.  Assuming you have one swap partition on @file{/dev/sda3}, you would run:
fr: Enfin, si vous souhaitez utiliser une ou plusieurs partitions de swap  (@pxref{Swap Space}), assurez-vous de les initialiser avec @command{mkswap}.  En supposant que vous avez une partition de swap sur @file{/dev/sda3}, vous pouvez lancer :

note: type: Plain text
en: Alternatively, you may use a swap file.  For example, assuming that in the new system you want to use the file @file{/swapfile} as a swap file, you would run@footnote{This example will work for many types of file systems (e.g., ext4).  However, for copy-on-write file systems (e.g., btrfs), the required steps may be different.  For details, see the manual pages for @command{mkswap} and @command{swapon}.}:
fr: Autrement, vous pouvez utiliser un fichier de swap.  Par exemple, en supposant que dans le nouveau système vous voulez utiliser le fichier @file{/swapfile} comme fichier de swap, vous lanceriez@footnote{Cet exemple fonctionnera sur plusieurs types de systèmes de fichiers (p.@: ex.@: ext4).  Cependant, pour les systèmes de fichiers qui utilisent la copie sur écriture (COW) comme btrfs, les étapes requises peuvent varier.  Pour plus de détails, regardez les pages de manuel de @command{mkswap} et @command{swapon}.} :

note: type: example
en: # This is 10 GiB of swap space.  Adjust "count" to change the size.
    dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=10240
    # For security, make the file readable and writable only by root.
    chmod 600 /mnt/swapfile
    mkswap /mnt/swapfile
    swapon /mnt/swapfile
fr: # Cela représente 10 Gio d'espace d'échange. Ajustez « count » pour changer la taille.
    dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=10240
    # Par sécurité, laissez le fichier en lecture et en écriture uniquement pour root.
    chmod 600 /mnt/swapfile
    mkswap /mnt/swapfile
    swapon /mnt/swapfile

note: type: Plain text
en: Note that if you have encrypted the root partition and created a swap file in its file system as described above, then the encryption also protects the swap file, just like any other file in that file system.
fr: Remarquez que si vous avez chiffré la partition racine et créé un fichier d'échange dans son système de fichier comme décrit ci-dessus, alors le chiffrement protégera aussi le fichier d'échange, comme n'importe quel fichier de ce système de fichiers.

note: type: Plain text
en: With the target partitions ready and the target root mounted on @file{/mnt}, we're ready to go.  First, run:
fr: Lorsque la partition cible est prête et que les autres partitions sont montées, on est prêt à commencer l'installation.  Commencez par :

note: type: Plain text
en: This makes @file{/gnu/store} copy-on-write, such that packages added to it during the installation phase are written to the target disk on @file{/mnt} rather than kept in memory.  This is necessary because the first phase of the @command{guix system init} command (see below) entails downloads or builds to @file{/gnu/store} which, initially, is an in-memory file system.
fr: Cela rend @file{/gnu/store} capable de faire de la copie sur écriture, de sorte que les paquets ajoutés pendant l'installation sont écrits sur le disque cible sur @file{/mnt} plutôt que gardés en mémoire.  Cela est nécessaire parce que la première phase de la commande @command{guix system init} (voir plus bas) implique de télécharger ou de construire des éléments de @file{/gnu/store} qui est initialement un système de fichiers en mémoire.

note: type: Plain text
en: Next, you have to edit a file and provide the declaration of the operating system to be installed.  To that end, the installation system comes with three text editors.  We recommend GNU nano (@pxref{Top,,, nano, GNU nano Manual}), which supports syntax highlighting and parentheses matching; other editors include mg (an Emacs clone), and nvi (a clone of the original BSD @command{vi} editor).  We strongly recommend storing that file on the target root file system, say, as @file{/mnt/etc/config.scm}.  Failing to do that, you will have lost your configuration file once you have rebooted into the newly-installed system.
fr: Ensuite, vous devrez modifier un fichier et fournir la déclaration du système à installer.  Pour cela, le système d'installation propose trois éditeurs de texte.  Nous recommandons GNU nano (@pxref{Top,,, nano, GNU nano Manual}), qui supporte la coloration syntaxique la correspondance de parenthèses ; les autres éditeurs sont mg (un clone d'Emacs) et nvi (un clone de l'éditeur @command{vi} original de BSD).  Nous recommandons vivement de stocker ce fichier sur le système de fichier racine cible, disons en tant que @file{/mnt/etc/config.scm}.  Sinon, vous perdrez votre fichier de configuration une fois que vous aurez redémarré sur votre nouveau système.

note: type: Plain text
en: @xref{Using the Configuration System}, for an overview of the configuration file.  The example configurations discussed in that section are available under @file{/etc/configuration} in the installation image.  Thus, to get started with a system configuration providing a graphical display server (a ``desktop'' system), you can run something along these lines:
fr: @xref{Using the Configuration System}, pour un aperçu de comment créer votre fichier de configuration.  Les exemples de configuration dont on parle dans cette section sont disponibles dans @file{/etc/configuration} sur l'image d'installation.  Ainsi, pour commencer avec une configuration du système qui fournit un serveur d'affichage graphique (un système de « bureau »), vous pouvez lancer ce qui suit :

note: type: Plain text
en: You should pay attention to what your configuration file contains, and in particular:
fr: Vous devriez faire attention à ce que contient votre fichier de configuration, en particulier :

note: type: itemize
en: Make sure the @code{bootloader-configuration} form refers to the targets you want to install GRUB on.  It should mention @code{grub-bootloader} if you are installing GRUB in the legacy way, or @code{grub-efi-bootloader} for newer UEFI systems.  For legacy systems, the @code{targets} field contain the names of the devices, like @code{(list "/dev/sda")}; for UEFI systems it names the paths to mounted EFI partitions, like @code{(list "/boot/efi")}; do make sure the paths are currently mounted and a @code{file-system} entry is specified in your configuration.
fr: Assurez-vous que la forme @code{bootloader-configuration} se réfère aux cibles où vous voulez installer GRUB.  Elle devrait aussi mentionner @code{grub-bootloader} si vous installer GRUB en mode BIOS (ou « legacy ») ou @code{grub-efi-bootloader} pour les système UEFI plus récents.  Pour les anciens systèmes, le champs @code{targets} contient le nom des périphériques comme @code{(list "/dev/sda")} ; pour les systèmes UEFI il contient les chemins vers les partitions EFI montées, comme @code{(list "/boot/efi")} ; assurez-vous bien que ces chemins sont montés et qu'il y a une entrée @code{file-system} dans votre configuration.

note: type: itemize
en: Be sure that your file system labels match the value of their respective @code{device} fields in your @code{file-system} configuration, assuming your @code{file-system} configuration uses the @code{file-system-label} procedure in its @code{device} field.
fr: Assurez-vous que les étiquettes de vos systèmes de fichiers correspondent aux valeurs de leur champs @code{device} dans votre configuration @code{file-system}, en supposant que la configuration @code{file-system} utilise la procédure @code{file-system-label} dans son champ @code{device}.

note: type: itemize
en: If there are encrypted or RAID partitions, make sure to add a @code{mapped-devices} field to describe them (@pxref{Mapped Devices}).
fr: Si vous avez des partitions RAID ou chiffrées, assurez-vous d'ajouter un champ @code{mapped-device} pour les décrire (@pxref{Mapped Devices}).

note: type: Plain text
en: Once you are done preparing the configuration file, the new system must be initialized (remember that the target root file system is mounted under @file{/mnt}):
fr: Une fois que vous avez fini les préparatifs sur le fichier de configuration, le nouveau système peut être initialisé (rappelez-vous que le système de fichiers racine cible est dans @file{/mnt}) :

note: type: Plain text
en: This copies all the necessary files and installs GRUB on @file{/dev/sdX}, unless you pass the @option{--no-bootloader} option.  For more information, @pxref{Invoking guix system}.  This command may trigger downloads or builds of missing packages, which can take some time.
fr: Cela copie tous les fichiers nécessaires et installe GRUB sur @file{/dev/sdX} à moins que vous ne passiez l'option @option{--no-bootloader}.  Pour plus d'informations, @pxref{Invoking guix system}.  Cette commande peut engendrer des téléchargements ou des constructions pour les paquets manquants, ce qui peut prendre du temps.

note: type: Plain text
en: Once that command has completed---and hopefully succeeded!---you can run @command{reboot} and boot into the new system.  The @code{root} password in the new system is initially empty; other users' passwords need to be initialized by running the @command{passwd} command as @code{root}, unless your configuration specifies otherwise (@pxref{user-account-password, user account passwords}).  @xref{After System Installation}, for what's next!
fr: Une fois que cette commande a terminé — et on l'espère réussi ! — vous pouvez lancer @command{reboot} et démarrer sur votre nouveau système.  Le mot de passe @code{root} est d'abord vide ; les mots de passe des autres comptes doivent être initialisés avec la commande @command{passwd} en tant que @code{root}, à mois que votre configuration ne spécifie autre chose (@pxref{user-account-password, mot de passe des comptes}).  @xref{After System Installation}, pour la suite !

note: type: Plain text
en: Success, you've now booted into Guix System! From then on, you can update the system whenever you want by running, say:
fr: Bravo ! Vous avez maintenant redémarré sur votre système Guix ! À partir de maintenant, vous pouvez mettre à jour le système quand vous voudrez, avec :

note: type: Plain text
en: This builds a new system generation with the latest packages and services (@pxref{Invoking guix system}).  We recommend doing that regularly so that your system includes the latest security updates (@pxref{Security Updates}).
fr: Cela crée une nouvelle génération du système avec les derniers paquets et services (@pxref{Invoking guix system}).  Nous vous recommandons de le faire régulièrement pour que votre système inclue les dernières misse à jour de sécurité (@pxref{Security Updates}).

note: type: cindex
en: sudo vs. @command{guix pull}
fr: sudo vs.@: @command{guix pull}

note: type: quotation
en: Note that @command{sudo guix} runs your user's @command{guix} command and @emph{not} root's, because @command{sudo} leaves @env{PATH} unchanged.  To explicitly run root's @command{guix}, type @command{sudo -i guix @dots{}}.
fr: Remarquez que @command{sudo guix} exécute la commande @command{guix} de votre compte et @emph{non} celle de root, parce que @command{sudo} ne change pas @env{PATH}.  Pour utiliser explicitement le @command{guix} de root, tapez @command{sudo -i guix @dots{}}.

note: type: quotation
en: The difference matters here, because @command{guix pull} updates the @command{guix} command and package definitions only for the user it is run as.  This means that if you choose to use @command{guix system reconfigure} in root's login shell, you'll need to @command{guix pull} separately.
fr: La différence est importante ici, car @command{guix pull} met à jour la commande @command{guix} et les définitions de paquets uniquement pour l'utilisateur sous lequel elle est exécutée.  Cela signifie que si vous choisissez d'utiliser la commande @command{guix system reconfigure} dans le shell de connexion de root, vous devrez utiliser séparément la commande @command{guix pull}.

note: type: Plain text
en: Now, @pxref{Getting Started}, and join us on @code{#guix} on the Libera Chat IRC network or on @email{guix-devel@@gnu.org} to share your experience!
fr: Maintenant, @pxref{Getting Started}, et rejoignez-nous sur @code{#guix} sur le réseau IRC Libera Chat ou sur @email{guix-devel@@gnu.org} pour partager votre expérience !

note: type: section
en: Installing Guix in a Virtual Machine
fr: Installer Guix sur une machine virtuelle

note: type: cindex
en: virtual machine, Guix System installation
fr: machine virtuelle, installation de Guix System

note: type: cindex
en: virtual private server (VPS)
fr: serveur privé virtuel (VPS)

note: type: cindex
en: VPS (virtual private server)
fr: VPS (serveur privé virtuel)

note: type: Plain text
en: If you'd like to install Guix System in a virtual machine (VM) or on a virtual private server (VPS) rather than on your beloved machine, this section is for you.
fr: Si vous souhaitez installer Guix System sur une machine virtuelle (VM) ou un serveur privé virtuel (VPS) plutôt que sur votre machine chérie, cette section est faite pour vous.

note: type: Plain text
en: To boot a @uref{https://qemu.org/,QEMU} VM for installing Guix System in a disk image, follow these steps:
fr: Pour démarrer une VM @uref{https://qemu.org/,QEMU} pour installer Guix System sur une image disque, suivez ces étapes :

note: type: enumerate
en: First, retrieve and decompress the Guix system installation image as described previously (@pxref{USB Stick and DVD Installation}).
fr: Tout d'abord récupérez et décompressez l'image d'installation du système Guix comme décrit précédemment (@pxref{USB Stick and DVD Installation}).

note: type: enumerate
en: Create a disk image that will hold the installed system.  To make a qcow2-formatted disk image, use the @command{qemu-img} command:
fr: Créez une image disque qui contiendra le système installé.  Pour créer une image qcow2, utilise la commande @command{qemu-img} :

note: type: enumerate
en: The resulting file will be much smaller than 50 GB (typically less than 1 MB), but it will grow as the virtualized storage device is filled up.
fr: Le fichier qui en résulte sera bien plus petit que les 50 Go (habituellement moins de 1 Mo) mais il grossira au fur et à mesure que le stockage virtuel grossira.

note: type: enumerate
en: Boot the USB installation image in an VM:
fr: Démarrez l'image d'installation USB dans une VM :

note: type: example
en: qemu-system-x86_64 -m 1024 -smp 1 -enable-kvm \
      -nic user,model=virtio-net-pci -boot menu=on,order=d \
      -drive file=guix-system.img \
      -drive media=cdrom,file=guix-system-install-@value{VERSION}.@var{system}.iso
fr: qemu-system-x86_64 -m 1024 -smp 1 -enable-kvm \
      -nic user,model=virtio-net-pci -boot menu=on,order=d \
      -drive file=guix-system.img \
      -drive media=cdrom,file=guix-system-install-@value{VERSION}.@var{système}.iso

note: type: enumerate
en: @code{-enable-kvm} is optional, but significantly improves performance, @pxref{Running Guix in a VM}.
fr: @code{-enable-kvm} est facultatif, mais améliore nettement les performances, @pxref{Running Guix in a VM}.

note: type: enumerate
en: You're now root in the VM, proceed with the installation process.  @xref{Preparing for Installation}, and follow the instructions.
fr: Vous êtes maintenant root dans la VM, continuez en suivant la procédure d'installation.  @xref{Preparing for Installation}, et suivez les instructions.

note: type: Plain text
en: Once installation is complete, you can boot the system that's on your @file{guix-system.img} image.  @xref{Running Guix in a VM}, for how to do that.
fr: Une fois l'installation terminée, vous pouvez démarrer le système dans votre image @file{guix-system.img}.  @xref{Running Guix in a VM}, pour une manière de faire.

note: type: cindex
en: installation image
fr: image d'installation

note: type: Plain text
en: The installation image described above was built using the @command{guix system} command, specifically:
fr: L'image d'installation décrite plus haut a été construite avec la commande @command{guix system}, plus précisément :

note: type: Plain text
en: Have a look at @file{gnu/system/install.scm} in the source tree, and see also @ref{Invoking guix system} for more information about the installation image.
fr: Regardez le fichier @file{gnu/system/install.scm} dans l'arborescence des sources et regardez aussi @ref{Invoking guix system} pour plus d'informations sur l'image d'installation.

note: type: section
en: Building the Installation Image for ARM Boards
fr: Construire l'image d'installation pour les cartes ARM

note: type: Plain text
en: Many ARM boards require a specific variant of the @uref{https://www.denx.de/wiki/U-Boot/, U-Boot} bootloader.
fr: De nombreuses cartes ARM requièrent une variante spécifique du chargeur d'amorçage @uref{https://www.denx.de/wiki/U-Boot/, U-Boot}.

note: type: Plain text
en: If you build a disk image and the bootloader is not available otherwise (on another boot drive etc), it's advisable to build an image that includes the bootloader, specifically:
fr: Si vous construisez une image disque et que le chargeur d'amorçage n'est pas disponible autrement (sur un autre périphérique d'amorçage etc), il est recommandé de construire une image qui inclus le chargeur d'amorçage, plus précisément :

note: type: Plain text
en: @code{A20-OLinuXino-Lime2} is the name of the board.  If you specify an invalid board, a list of possible boards will be printed.
fr: @code{A20-OLinuXino-Lime2} est le nom de la carte.  Si vous spécifiez une carte invalide, une liste de cartes possibles sera affichée.

note: type: cindex
en: troubleshooting, guix system
fr: correction des problèmes, guix system

note: type: cindex
en: guix system troubleshooting
fr: correction des problèmes du système guix

note: type: Plain text
en: Guix System allows rebooting into a previous generation should the last one be malfunctioning, which makes it quite robust against being broken irreversibly.  This feature depends on GRUB being correctly functioning though, which means that if for whatever reasons your GRUB installation becomes corrupted during a system reconfiguration, you may not be able to easily boot into a previous generation.  A technique that can be used in this case is to @i{chroot} into your broken system and reconfigure it from there.  Such technique is explained below.
fr: Le système Guix permet de redémarrer sur une génération précédente si la dernière ne fonctionne pas, ce qui le rend assez robuste contre les défaillances irréversibles. Cette fonctionnalité dépend du bon fonctionnement de GRUB cependant, ce qui signifie que si pour quelque raison que ce soit, votre installation de GRUB est corrompue pendant une reconfiguration du système, vous pourriez ne pas pouvoir facilement démarrer une génération précédente. Une technique qui peut être utilisée dans ce cas est de @i{chrooter} dans votre système endommagé et de le reconfigurer à partir de là. Cette technique est expliquée plus bas.

note: type: cindex
en: chroot, guix system
fr: chroot, système guix

note: type: cindex
en: chrooting, guix system
fr: chrooter, système guix

note: type: cindex
en: repairing GRUB, via chroot
fr: réparer GRUB, par un chroot

note: type: Plain text
en: This section details how to @i{chroot} to an already installed Guix System with the aim of reconfiguring it, for example to fix a broken GRUB installation.  The process is similar to how it would be done on other GNU/Linux systems, but there are some Guix System particularities such as the daemon and profiles that make it worthy of explaining here.
fr: Cette section explique comment @i{chrooter} sur un système Guix déjà installé dans le but de le reconfigurer, par exemple pour corriger une installation défaillante de GRUB. Le processus est semblable à la manière de faire pour les autres systèmes GNU/Linux, mais il y a quelques particularités du système Guix comme le démon et les profils qui le rend utile à décrire ici.

note: type: enumerate
en: Obtain a bootable image of Guix System.  It is recommended the latest development snapshot so the kernel and the tools used are at least as as new as those of your installed system; it can be retrieved from the @url{https://ci.guix.gnu.org/search/latest/ISO-9660?query=spec:images+status:success+system:x86_64-linux+image.iso, https://ci.guix.gnu.org} URL.  Follow the @pxref{USB Stick and DVD Installation} section for copying it to a bootable media.
fr: Récupérez une image amorçable du système Guix. Nous vous recommandons d'utiliser le dernier instantané de développement pour que le noyau et les outils utilisés soient au moins aussi récents que le système installé ; vous pouvez le récupérer à partir de l'URL @url{https://ci.guix.gnu.org/search/latest/ISO-9660?query=spec:images+status:success+system:x86_64-linux+image.iso, https://ci.guix.gnu.org}. Suive la section @pxref{USB Stick and DVD Installation} pour apprendre à le copier sur un média amorçable.

note: type: enumerate
en: Boot the image, and proceed with the graphical text-based installer until your network is configured.  Alternatively, you could configure the network manually by following the @ref{manual-installation-networking} section.  If you get the error @samp{RTNETLINK answers: Operation not possible due to RF-kill}, try @samp{rfkill list} followed by @samp{rfkill unblock 0}, where @samp{0} is your device identifier (ID).
fr: Démarrez l'image et suivez l'installateur graphique jusqu'à avoir configuré le réseau. Autrement, vous pouvez configurer le réseau manuellement en suivant la section @ref{manual-installation-networking}. Si vous avez une erreur du type @samp{RTNETLINK answers: Operation not possible due to RF-kill}, essayez @samp{rfkill list} suivi de @samp{rfkill unblock 0}, où @samp{0} est l'identifiant de votre périphérique (ID).

note: type: enumerate
en: Switch to a virtual console (tty) if you haven't already by pressing simultaneously the @kbd{Control + Alt + F4} keys.  Mount your file system at @file{/mnt}.  Assuming your root partition is @file{/dev/sda2}, you would do:
fr: Passez sur une console virtuelle (tty) si vous ne l'avez pas déjà fait en appuyant simultanément sur @kbd{Control + Alt + F4}. Montez votre système de fichier sur @file{/mnt}. En supposant que votre partition racine est @file{/dev/sda2}, vous feriez :

note: type: enumerate
en: Mount special block devices and Linux-specific directories:
fr: Montez les périphériques blocs spéciaux et les répertoires spécifiques à Linux :

note: type: enumerate
en: If your system is EFI-based, you must also mount the ESP partition.  Assuming it is @file{/dev/sda1}, you can do so with:
fr: Si votre système est basé sur EFI, vous devez aussi monter la partition ESP. En supposant qu'elle est sur @file{/dev/sda1}, vous pouvez le faire avec :

note: type: enumerate
en: Enter your system via chroot:
fr: Entrez dans votre système avec chroot :

note: type: enumerate
en: Source the system profile as well as your @var{user} profile to setup the environment, where @var{user} is the user name used for the Guix System you are attempting to repair:
fr: Sourcez le profil système ainsi que votre profil @var{utilisateur} pour mettre en place l'environnement, où @var{utilisateur} est le nom d'utilisateur utilisé par le système Guix que vous essayez de réparer :

note: type: example
en: source /var/guix/profiles/system/profile/etc/profile
    source /home/@var{user}/.guix-profile/etc/profile
fr: source /var/guix/profiles/system/profile/etc/profile
    source /home/@var{utilisateur}/.guix-profile/etc/profile

note: type: enumerate
en: To ensure you are working with the Guix revision you normally would as your normal user, also source your current Guix profile:
fr: Pour vous assurer que vous travaillez avec la révision de Guix que vous utiliseriez en tant qu'utilisateur normal, sourcez aussi votre profil actuel de Guix :

note: type: example
en: source /home/@var{user}/.config/guix/current/etc/profile
fr: source /home/@var{utilisateur}/.config/guix/current/etc/profile

note: type: enumerate
en: Start a minimal @command{guix-daemon} in the background:
fr: Démarrez un @command{guix-daemon} minimal en tâche de fond :

note: type: enumerate
en: Edit your Guix System configuration if needed, then reconfigure with:
fr: Modifiez votre configuration système comme vous le souhaitez, puis reconfigurez avec :

note: type: example
en: guix system reconfigure your-config.scm
fr: guix system reconfigure votre-config.scm

note: type: enumerate
en: Finally, you should be good to reboot the system to test your fix.
fr: Enfin, vous devriez pouvoir redémarrer le système pour tester votre correction.

note: type: Plain text
en: Presumably, you've reached this section because either you have installed Guix on top of another distribution (@pxref{Installation}), or you've installed the standalone Guix System (@pxref{System Installation}).  It's time for you to get started using Guix and this section aims to help you do that and give you a feel of what it's like.
fr: Vous êtes certainement arrivé·e à cette section parce que vous avez installé Guix sur une autre distribution (@pxref{Installation}), ou bien vous avez installé Guix System (@pxref{Installation du système}).  Il est temps pour vous de commencer à utiliser Guix et cette section est là pour vous aider à le faire et vous donner une idée de ce que c'est.

note: type: Plain text
en: Guix is about installing software, so probably the first thing you'll want to do is to actually look for software.  Let's say you're looking for a text editor, you can run:
fr: Guix est, entre autres, un programme d'installation de logiciels, donc la première chose que vous voudrez probablement faire est de chercher un logiciel.  Disons que vous cherchez un éditeur de texte, vous pouvez lancer :

note: type: Plain text
en: This command shows you a number of matching @dfn{packages}, each time showing the package's name, version, a description, and additional info.  Once you've found out the one you want to use, let's say Emacs (ah ha!), you can go ahead and install it (run this command as a regular user, @emph{no need for root privileges}!):
fr: Cette commande vous montre un certain nombre de @dfn{paquets} correspondants, en indiquant à chaque fois le nom du paquet, sa version, une description et des informations supplémentaires.  Une fois que vous avez trouvé celui que vous voulez utiliser, disons Emacs (ah ha !), vous pouvez l'installer (lancez cette commande en tant qu' utilisateur·rice, @emph{pas besoin des privilèges d'administration} !) :

note: type: cindex
en: profile
fr: profil

note: type: Plain text
en: You've installed your first package, congrats! The package is now visible in your default @dfn{profile}, @file{$HOME/.guix-profile}---a profile is a directory containing installed packages.  In the process, you've probably noticed that Guix downloaded pre-built binaries; or, if you explicitly chose to @emph{not} use pre-built binaries, then probably Guix is still building software (@pxref{Substitutes}, for more info).
fr: Vous avez installé votre premier paquet, félicitations ! Le paquet est maintenant visible dans votre @dfn{profil} par défaut, @file{$HOME/.guix-profile} --- un profil est un répertoire contenant les paquets installés. Vous avez probablement remarqué que Guix a téléchargé des binaires pré-compilés ; ou bien, si vous vous êtes dit : @emph{non}, pas de binaires pré-compilés, alors Guix est probablement encore en train de construire un logiciel (@pxref{Substitutes}, pour plus d'informations).

note: type: Plain text
en: Unless you're using Guix System, the @command{guix install} command must have printed this hint:
fr: À moins que vous utilisiez Guix System, la commande @command{guix install} doit avoir affiché cet indice :

note: type: example
en: hint: Consider setting the necessary environment variables by running:
fr: conseil : pensez à définir les variables d'environnement nécessaires en exécutant :

note: type: example
en: Alternately, see `guix package --search-paths -p "$HOME/.guix-profile"'.
fr: Vous pouvez également consulter `guix package --search-paths -p "$HOME/.guix-profile"'.

note: type: Plain text
en: Indeed, you must now tell your shell where @command{emacs} and other programs installed with Guix are to be found.  Pasting the two lines above will do just that: it will add @code{$HOME/.guix-profile/bin}---which is where the installed package is---to the @code{PATH} environment variable.  You can paste these two lines in your shell so they take effect right away, but more importantly you should add them to @file{~/.bash_profile} (or equivalent file if you do not use Bash) so that environment variables are set next time you spawn a shell.  You only need to do this once and other search paths environment variables will be taken care of similarly---e.g., if you eventually install @code{python} and Python libraries, @env{GUIX_PYTHONPATH} will be defined.
fr: En effet, vous devez maintenant indiquer à votre @i{shell} où se trouvent @command{emacs} et les autres programmes installés avec Guix.  En collant les deux lignes ci-dessus, c'est exactement ce que vous ferez : vous ajouterez @code{$HOME/.guix-profile/bin} --- qui est l'endroit où se trouve le paquet installé --- à la variable d'environnement @code{PATH}.  Vous pouvez coller ces deux lignes dans votre shell pour qu'elles prennent effet immédiatement, mais surtout vous devez les ajouter à @file{~/.bash_profile} (ou un fichier équivalent si vous n'utilisez pas Bash) afin que les variables d'environnement soient définies la prochaine fois que vous lancerez un shell.  Vous n'avez besoin de le faire qu'une seule fois et les autres variables d'environnement des chemins de recherche seront traitées de la même manière --- par exemple, si vous installez les bibliothèques @code{python} et Python, @env{GUIX_PYTHONPATH} sera définie.

note: type: Plain text
en: You can go on installing packages at your will.  To list installed packages, run:
fr: Vous pouvez continuer à installer des paquets à votre guise.  Pour lister les paquets installés, lancez :

note: type: Plain text
en: To remove a package, you would unsurprisingly run @command{guix remove}.  A distinguishing feature is the ability to @dfn{roll back} any operation you made---installation, removal, upgrade---by simply typing:
fr: Pour supprimer un paquet, sans surprise, lancez @command{guix remove}.  Une caractéristique distinctive est la possibilité de faire @dfn{revenir en arrière} toute opération que vous avez effectuée --- installation, suppression, mise à niveau --- en tapant simplement :

note: type: Plain text
en: This is because each operation is in fact a @dfn{transaction} that creates a new @dfn{generation}.  These generations and the difference between them can be displayed by running:
fr: C'est parce que chaque opération est en fait une @dfn{transaction} qui crée une nouvelle @dfn{génération}.  Les générations et leurs différences entre elles peuvent être affichées en lançant :

note: type: Plain text
en: Now you know the basics of package management!
fr: Vous connaissez maintenant les bases de la gestion des paquets !

note: type: quotation
en: Going further
fr: Pour aller plus loin

note: type: quotation
en: @xref{Package Management}, for more about package management.  You may like @dfn{declarative} package management with @command{guix package --manifest}, managing separate @dfn{profiles} with @option{--profile}, deleting old generations, collecting garbage, and other nifty features that will come in handy as you become more familiar with Guix.  If you are a developer, @pxref{Development} for additional tools.  And if you're curious, @pxref{Features}, to peek under the hood.
fr: @xref{Package Management}, pour en savoir plus sur la gestion des paquets.  Vous pouvez aimer la gestion  @dfn{declarative} des paquets avec @command{guix package --manifest}, la gestion de @dfn{profils} séparés avec @option{--profil}, la suppression des anciennes générations, le ramasse-miettes et d'autres fonctionnalités astucieuses qui vous seront utiles à mesure que vous vous familiariserez avec Guix.  Si vous développez du code, @pxref{Development} pour des outils supplémentaires.  Et si vous êtes curieux·euse, @pxref{Features}, pour jeter un coup d'œil sous le capot.

note: type: Plain text
en: Once you've installed a set of packages, you will want to periodically @emph{upgrade} them to the latest and greatest version.  To do that, you will first pull the latest revision of Guix and its package collection:
fr: Une fois que vous avez installé un ensemble de paquets, vous voudrez périodiquement faire une @emph{mise à jour} à la dernière version flambant neuve.  Pour cela, vous devez d'abord récupérer la dernière révision de Guix et de sa collection de paquets :

note: type: Plain text
en: The end result is a new @command{guix} command, under @file{~/.config/guix/current/bin}.  Unless you're on Guix System, the first time you run @command{guix pull}, be sure to follow the hint that the command prints and, similar to what we saw above, paste these two lines in your terminal and @file{.bash_profile}:
fr: Le résultat final est une nouvelle commande @command{guix}, sous @file{~/.config/guix/current/bin}. A moins que vous ne soyez sous Guix System, la première fois que vous lancez @command{guix pull}, assurez-vous de suivre le conseil que la commande affiche et, comme nous l'avons vu ci-dessus, collez ces deux lignes dans votre terminal et dans @file{.bash_profile} :

note: type: Plain text
en: You must also instruct your shell to point to this new @command{guix}:
fr: Vous devez aussi informer votre shell de pointer sur ce nouveau @command{guix} :

note: type: Plain text
en: At this point, you're running a brand new Guix.  You can thus go ahead and actually upgrade all the packages you previously installed:
fr: A ce stade, vous pilotez un Guix tout neuf.  Vous pouvez donc aller de l'avant et mettre effectivement à jour tous les paquets que vous avez installés précédemment :

note: type: Plain text
en: As you run this command, you will see that binaries are downloaded (or perhaps some packages are built), and eventually you end up with the upgraded packages.  Should one of these upgraded packages not be to your liking, remember you can always roll back!
fr: En exécutant cette commande, vous verrez que des binaires sont téléchargés (ou peut-être que certains paquets sont construits), et vous finirez par obtenir les paquets mis à jour.  Si l'un de ces paquets n'est pas à votre goût, n'oubliez pas que vous pouvez toujours revenir en arrière !

note: type: Plain text
en: You can display the exact revision of Guix you're currently using by running:
fr: Vous pouvez afficher la révision exacte de Guix actuellement en cours d'exécution en lançant :

note: type: Plain text
en: The information it displays is @emph{all it takes to reproduce the exact same Guix}, be it at a different point in time or on a different machine.
fr: L'information affichée est @emph{tout ce qu'il faut pour reproduire exactement le même Guix}, que ce soit à un moment différent ou sur une machine différente.

note: type: quotation
en: @xref{Invoking guix pull}, for more information.  @xref{Channels}, on how to specify additional @dfn{channels} to pull packages from, how to replicate Guix, and more.  You may also find @command{time-machine} handy (@pxref{Invoking guix time-machine}).
fr: @xref{Invoquer guix pull}, pour plus d'informations.  @xref{Channels}, sur la façon de spécifier des @dfn{canaux} supplémentaires pour extraire des paquets, sur la façon de répliquer Guix, et plus encore.  Vous pouvez également trouver @command{time-machine} pratique (@pxref{Invoquer guix time-machine}).

note: type: Plain text
en: If you installed Guix System, one of the first things you'll want to do is to upgrade your system.  Once you've run @command{guix pull} to get the latest Guix, you can upgrade the system like this:
fr: Si vous avez installé Guix System, une des premières choses que vous voudrez faire est de le mettre à jour. Une fois que vous avez lancé @command{guix pull} pour obtenir le dernier Guix, vous pouvez mettre à jour le système comme ceci :

note: type: Plain text
en: Upon completion, the system runs the latest versions of its software packages.  When you eventually reboot, you'll notice a sub-menu in the bootloader that reads ``Old system generations'': it's what allows you to boot @emph{an older generation of your system}, should the latest generation be ``broken'' or otherwise unsatisfying.  Just like for packages, you can always @emph{roll back} to a previous generation @emph{of the whole system}:
fr: Ceci terminé, le système exécute les dernières versions de ses logiciels.  Lorsque vous redémarrez, vous remarquerez un sous-menu dans le chargeur d'amorçage qui indique « Old system generations » : c'est ce qui vous permet de démarrer @emph{une ancienne génération de votre système}, si la dernière génération est « cassée » ou insatisfaisante.  Tout comme pour les paquets, vous pouvez toujours @emph{revenir} à une génération précédente @emph{de l'ensemble du système} :

note: type: Plain text
en: There are many things you'll probably want to tweak on your system: adding new user accounts, adding new system services, fiddling with the configuration of those services, etc.  The system configuration is @emph{entirely} described in the @file{/etc/config.scm} file.  @xref{Using the Configuration System}, to learn how to change it.
fr: Il y a beaucoup de choses que vous voudrez probablement modifier sur votre système : ajouter de nouveaux comptes utilisateur·rice·s, ajouter de nouveaux services système, modifier la configuration de ces services, etc.  La configuration du système est @emph{entièrement} décrite dans le fichier @file{/etc/config.scm}.  @xref{Utiliser le système de configuration}, pour apprendre à le modifier.

note: type: Plain text
en: Now you know enough to get started!
fr: Maintenant, vous en savez assez pour commencer !

note: type: quotation
en: Resources
fr: Ressources

note: type: quotation
en: The rest of this manual provides a reference for all things Guix.  Here are some additional resources you may find useful:
fr: Le reste de ce manuel constitue une référence pour tout ce qui concerne Guix.  Voici quelques ressources supplémentaires que vous pourriez trouver utiles :

note: type: itemize
en: @xref{Top,,, guix-cookbook, The GNU Guix Cookbook}, for a list of ``how-to'' style of recipes for a variety of applications.
fr: @xref{Top, , , guix-cookbook, The GNU Guix Cookbook}, pour une liste de recettes de style "how-to" pour une variété d'applications.

note: type: itemize
en: The @uref{https://guix.gnu.org/guix-refcard.pdf, GNU Guix Reference Card} lists in two pages most of the commands and options you'll ever need.
fr: La @uref{https://guix.gnu.org/guix-refcard.pdf, GNU Guix Reference Card} énumère en deux pages la plupart des commandes et options dont vous aurez besoin.

note: type: itemize
en: The web site contains @uref{https://guix.gnu.org/en/videos/, instructional videos} covering topics such as everyday use of Guix, how to get help, and how to become a contributor.
fr: Le site web contient @uref{https://guix.gnu.org/en/videos/, des vidéos instructives} couvrant des sujets tels que l'utilisation quotidienne de Guix, comment obtenir de l'aide et comment devenir un·e contributeur·rice.

note: type: itemize
en: @xref{Documentation}, to learn how to access documentation on your computer.
fr: @xref{Documentation}, pour savoir comment accéder à la documentation sur votre ordinateur.

note: type: quotation
en: We hope you will enjoy Guix as much as the community enjoys building it!
fr: Nous espérons que vous apprécierez Guix autant que la communauté a de plaisir à le construire !

note: type: Plain text
en: The purpose of GNU Guix is to allow users to easily install, upgrade, and remove software packages, without having to know about their build procedures or dependencies.  Guix also goes beyond this obvious set of features.
fr: Le but de GNU Guix est de permettre à ses utilisatrices et utilisateurs d'installer, mettre à jour et supprimer facilement des paquets logiciels sans devoir connaître leur procédure de construction ou leurs dépendances.  Guix va aussi plus loin que ces fonctionnalités évidentes.

note: type: Plain text
en: This chapter describes the main features of Guix, as well as the package management tools it provides.  Along with the command-line interface described below (@pxref{Invoking guix package, @code{guix package}}), you may also use the Emacs-Guix interface (@pxref{Top,,, emacs-guix, The Emacs-Guix Reference Manual}), after installing @code{emacs-guix} package (run @kbd{M-x guix-help} command to start with it):
fr: Ce chapitre décrit les principales fonctionnalités de Guix, ainsi que des outils de gestion des paquets qu'il fournit.  En plus de l'interface en ligne de commande décrite en dessous de (@pxref{Invoquer guix package, @code{guix package}}), vous pouvez aussi utiliser l'interface Emacs-Guix (@pxref{Top,,, emacs-guix, Le manuel de référence de emacs-guix}), après avoir installé le paquet @code{emacs-guix} (lancez la commande @kbd{M-x guix-help} pour le démarrer) :

note: type: Plain text
en: Here we assume you've already made your first steps with Guix (@pxref{Getting Started}) and would like to get an overview about what's going on under the hood.
fr: Ici, nous supposons que vous avez déjà fait vos premiers pas avec Guix @pxref{Getting Started}) et que vous voulez avoir un aperçu de ce qui se passe sous le capot.

note: type: Plain text
en: When using Guix, each package ends up in the @dfn{package store}, in its own directory---something that resembles @file{/gnu/store/xxx-package-1.2}, where @code{xxx} is a base32 string.
fr: Lorsque vous utilisez Guix, chaque paquet arrive dans @dfn{dépôt des paquets}, dans son propre répertoire — quelque chose comme @file{/gnu/store/xxx-paquet-1.2}, où @code{xxx} est une chaîne en base32.

note: type: Plain text
en: Instead of referring to these directories, users have their own @dfn{profile}, which points to the packages that they actually want to use.  These profiles are stored within each user's home directory, at @code{$HOME/.guix-profile}.
fr: Plutôt que de se rapporter à ces répertoires, les utilisateur·rice·s ont leur propre @dfn{profil} qui pointe vers les paquets qu'ils ou elles veulent vraiment utiliser.  Ces profils sont stockés dans le répertoire personnel de chacun·e dans @code{$HOME/.guix-profile}.

note: type: Plain text
en: For example, @code{alice} installs GCC 4.7.2.  As a result, @file{/home/alice/.guix-profile/bin/gcc} points to @file{/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}.  Now, on the same machine, @code{bob} had already installed GCC 4.8.0.  The profile of @code{bob} simply continues to point to @file{/gnu/store/@dots{}-gcc-4.8.0/bin/gcc}---i.e., both versions of GCC coexist on the same system without any interference.
fr: Par exemple, @code{alice} installe GCC 4.7.2.  Il en résulte que @file{/home/alice/.guix-profile/bin/gcc} pointe vers @file{/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}. Maintenant, sur la même machine, @code{bob} a déjà installé GCC 4.8.0.  Le profil de @code{bob} continue simplement de pointer vers @file{/gnu/store/@dots{}-gcc-4.8.0/bin/gcc} — c.-à-d.@: les deux versions de GCC coexistent surs le même système sans aucune interférence.

note: type: Plain text
en: The @command{guix package} command is the central tool to manage packages (@pxref{Invoking guix package}).  It operates on the per-user profiles, and can be used @emph{with normal user privileges}.
fr: La commande @command{guix package} est l'outil central pour gérer les paquets (@pxref{Invoking guix package}).  Il opère sur les profils de chaque utilisateur·rice et peut être utilisé avec les @emph{privilèges normaux}.

note: type: Plain text
en: The command provides the obvious install, remove, and upgrade operations.  Each invocation is actually a @emph{transaction}: either the specified operation succeeds, or nothing happens.  Thus, if the @command{guix package} process is terminated during the transaction, or if a power outage occurs during the transaction, then the user's profile remains in its previous state, and remains usable.
fr: La commande fournit les opérations évidentes d'installation, de suppression et de mise à jour.  Chaque invocation est en fait une @emph{transaction} : soit l'opération demandée réussit, soit rien ne se passe.  Ainsi, si le processus @command{guix package} est terminé pendant la transaction ou si une panne de courant arrive pendant la transaction, le profil reste dans son état précédent et reste utilisable.

note: type: Plain text
en: In addition, any package transaction may be @emph{rolled back}.  So, if, for example, an upgrade installs a new version of a package that turns out to have a serious bug, users may roll back to the previous instance of their profile, which was known to work well.  Similarly, the global system configuration on Guix is subject to transactional upgrades and roll-back (@pxref{Using the Configuration System}).
fr: En plus, il est possible @emph{d'annuler} toute transaction sur les paquets.  Donc si par exemple un mise à jour installe une nouvelle version d'un paquet qui révèle un bogue sérieux, vous pouvez revenir en arrière à l'instance précédente de votre profil que vous saviez bien fonctionner.  De même, la configuration globale du système dans Guix est sujette aux mises à jour transactionnelles et aux annulations (@pxref{Using the Configuration System}).

note: type: Plain text
en: All packages in the package store may be @emph{garbage-collected}.  Guix can determine which packages are still referenced by user profiles, and remove those that are provably no longer referenced (@pxref{Invoking guix gc}).  Users may also explicitly remove old generations of their profile so that the packages they refer to can be collected.
fr: Tout paquet du dépôt des paquets peut être @emph{glané}.  Guix peut déterminer quels paquets sont toujours référencés par les profils des utilisateur·rice·s et supprimer ceux qui ne sont de tout évidence plus référencés (@pxref{Invoking guix gc}).  Les utilisateur·rice·s peuvent toujours explicitement supprimer les anciennes générations de leur profil pour que les paquets auxquels elles faisaient référence puissent être glanés.

note: type: Plain text
en: Guix takes a @dfn{purely functional} approach to package management, as described in the introduction (@pxref{Introduction}).  Each @file{/gnu/store} package directory name contains a hash of all the inputs that were used to build that package---compiler, libraries, build scripts, etc.  This direct correspondence allows users to make sure a given package installation matches the current state of their distribution.  It also helps maximize @dfn{build reproducibility}: thanks to the isolated build environments that are used, a given build is likely to yield bit-identical files when performed on different machines (@pxref{Invoking guix-daemon, container}).
fr: Guix prend une approche @dfn{purement fonctionnelle} de la gestion de paquets, telle que décrite dans l'introduction (@pxref{Introduction}).  Chaque nom de répertoire de paquet dans @file{/gnu/store} contient un hash de toutes les entrées qui ont été utilisées pendant la construction de ce paquet — le compilateur, les bibliothèques, les scripts de construction, etc.  Cette correspondance directe permet aux utilisateur·rice·s de s'assurer que l'installation d'un paquet donné correspond à l'état actuel de leur distribution.  Elle aide aussi à maximiser la @dfn{reproductibilité} : grâce aux environnements de construction utilisés, une construction donnée a de forte chances de donner des fichiers identiques bit-à-bit lorsqu'elle est effectuée sur des machines différentes (@pxref{Invoking guix-daemon, container}).

note: type: Plain text
en: This foundation allows Guix to support @dfn{transparent binary/source deployment}.  When a pre-built binary for a @file{/gnu/store} item is available from an external source---a @dfn{substitute}, Guix just downloads it and unpacks it; otherwise, it builds the package from source, locally (@pxref{Substitutes}).  Because build results are usually bit-for-bit reproducible, users do not have to trust servers that provide substitutes: they can force a local build and @emph{challenge} providers (@pxref{Invoking guix challenge}).
fr: Ce fondement permet à Guix de supporter le @dfn{déploiement transparent de binaire ou source}.  Lorsqu'une binaire pré-construit pour une entrée de @file{/gnu/store} est disponible depuis une source externe (un @dfn{substitut}), Guix le télécharge simplement et le décompresse ; sinon, il construit le paquet depuis les sources localement (@pxref{Substituts}).  Comme les résultats des constructions sont généralement reproductibles au bit près, si vous n'avez pas besoin de faire confiance aux serveurs qui fournissent les substituts : vous pouvez forcer une construction locale et @emph{défier} les fournisseurs (@pxref{Invoking guix challenge}).

note: type: Plain text
en: Control over the build environment is a feature that is also useful for developers.  The @command{guix shell} command allows developers of a package to quickly set up the right development environment for their package, without having to manually install the dependencies of the package into their profile (@pxref{Invoking guix shell}).
fr: Le contrôle de l'environnement de construction est aussi une fonctionnalité utile pour les développeurs.  La commande @command{guix shell} permet aux développeurs d'un paquet de mettre en place rapidement le bon environnement de développement pour leur paquet, sans avoir à installer manuellement les dépendances du paquet dans leur profil (@pxref{Invoking guix shell}).

note: type: cindex
en: replication, of software environments
fr: réplication, des environnements logiciels

note: type: cindex
en: provenance tracking, of software artifacts
fr: suivi de la provenance, des artefacts logiciels

note: type: Plain text
en: All of Guix and its package definitions is version-controlled, and @command{guix pull} allows you to ``travel in time'' on the history of Guix itself (@pxref{Invoking guix pull}).  This makes it possible to replicate a Guix instance on a different machine or at a later point in time, which in turn allows you to @emph{replicate complete software environments}, while retaining precise @dfn{provenance tracking} of the software.
fr: La totalité de Guix et des définitions de paquets sont placés sous contrôle de version, et @command{guix pull} vous permet de « voyager dans le temps » de l'historique de Guix lui-même (@pxref{Invoking guix pull}).  Cela est rend possible la réplication d'une instance Guix sur une machine différente ou plus tard, ce qui vous permet de @emph{répliquer des environnements logiciels complets}, tout en garantissant un @dfn{suivi de provenance} précis des logiciels.

note: type: section
en: Invoking @command{guix package}
fr: Invoquer @command{guix package}

note: type: cindex
en: installing packages
fr: installer des paquets

note: type: cindex
en: removing packages
fr: supprimer des paquets

note: type: cindex
en: package installation
fr: installation de paquets

note: type: cindex
en: package removal
fr: suppression de paquets

note: type: Plain text
en: The @command{guix package} command is the tool that allows users to install, upgrade, and remove packages, as well as rolling back to previous configurations.  These operations work on a user @dfn{profile}---a directory of installed packages.  Each user has a default profile in @file{$HOME/.guix-profile}.  The command operates only on the user's own profile, and works with normal user privileges (@pxref{Features}).  Its syntax is:
fr: La commande @command{guix package} est l'outil qui permet d'installer, mettre à jour et supprimer les paquets ainsi que de revenir à une configuration précédente.  Ces opérations fonctionnent sur un @dfn{profil} utilisateur---un répertoire avec les paquets installés.  Chaque utilisateur a un profile par défaut dans @file{$HOME/.guix-profile}.  La commande n'opère que dans le profil de l'utilisateur·rice et fonctionne avec les privilèges normaux (@pxref{Fonctionnalités}).  Sa syntaxe est :

note: type: Plain text
en: Primarily, @var{options} specifies the operations to be performed during the transaction.  Upon completion, a new profile is created, but previous @dfn{generations} of the profile remain available, should the user want to roll back.
fr: @var{options} spécifie d'abord les opérations à effectuer pendant la transaction.  À la fin, une nouvelle génération du profil est créée mais les @dfn{générations} précédentes du profil restent disponibles si l'utilisateur·rice souhaite y revenir.

note: type: Plain text
en: For example, to remove @code{lua} and install @code{guile} and @code{guile-cairo} in a single transaction:
fr: Par exemple, pour supprimer @code{lua} et installer @code{guile} et @code{guile-cairo} en une seule transaction :

note: type: cindex
en: aliases, for @command{guix package}
fr: alias, de @command{guix package}

note: type: Plain text
en: For your convenience, we also provide the following aliases:
fr: Parce que c'est pratique, nous fournissons aussi les alias suivants :

note: type: itemize
en: @command{guix search} is an alias for @command{guix package -s},
fr: @command{guix search} est un alias de @command{guix package -s},

note: type: itemize
en: @command{guix install} is an alias for @command{guix package -i},
fr: @command{guix install} est un alias de @command{guix package -i},

note: type: itemize
en: @command{guix remove} is an alias for @command{guix package -r},
fr: @command{guix remove} est un alias de @command{guix package -r},

note: type: itemize
en: @command{guix upgrade} is an alias for @command{guix package -u},
fr: @command{guix upgrade} est un alias de @command{guix package -u},

note: type: itemize
en: and @command{guix show} is an alias for @command{guix package --show=}.
fr: et @command{guix search} est un alias de @command{guix package -s}.

note: type: Plain text
en: These aliases are less expressive than @command{guix package} and provide fewer options, so in some cases you'll probably want to use @command{guix package} directly.
fr: Ces alias sont moins expressifs que @command{guix package} et fournissent moins d'options, donc dans certains cas vous devrez probablement utiliser @command{guix package} directement.

note: type: Plain text
en: @command{guix package} also supports a @dfn{declarative approach} whereby the user specifies the exact set of packages to be available and passes it @i{via} the @option{--manifest} option (@pxref{profile-manifest, @option{--manifest}}).
fr: @command{guix package} supporte aussi une @dfn{approche déclarative} où on spécifie l'ensemble exact des paquets qui doivent être disponibles que l'on passe @i{via} l'option @option{--manifest} (@pxref{profile-manifest, @option{--manifest}}).

note: type: Plain text
en: For each user, a symlink to the user's default profile is automatically created in @file{$HOME/.guix-profile}.  This symlink always points to the current generation of the user's default profile.  Thus, users can add @file{$HOME/.guix-profile/bin} to their @env{PATH} environment variable, and so on.
fr: Pour chaque utilisateur·rice, un lien symbolique vers son profil par défaut est automatiquement créé dans @file{$HOME/.guix-profile}.  Ce lien symbolique pointe toujours vers la génération actuelle du profil par défaut du compte.  Ainsi, on peut ajouter @file{$HOME/.guix-profile/bin} à sa variable d'environnement @env{PATH} etc.

note: type: cindex
en: search paths
fr: chemins de recherche

note: type: Plain text
en: If you are not using Guix System, consider adding the following lines to your @file{~/.bash_profile} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}) so that newly-spawned shells get all the right environment variable definitions:
fr: Si vous n'utilisez pas la distribution système Guix, vous devriez ajouter les lignes suivantes à votre @file{~/.bash_profile} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}) pour que les shells créés ensuite aient tous les bonnes définitions des variables d'environnement :

note: type: Plain text
en: In a multi-user setup, user profiles are stored in a place registered as a @dfn{garbage-collector root}, which @file{$HOME/.guix-profile} points to (@pxref{Invoking guix gc}).  That directory is normally @code{@var{localstatedir}/guix/profiles/per-user/@var{user}}, where @var{localstatedir} is the value passed to @code{configure} as @option{--localstatedir}, and @var{user} is the user name.  The @file{per-user} directory is created when @command{guix-daemon} is started, and the @var{user} sub-directory is created by @command{guix package}.
fr: Dans un environnement multi-utilisateur·rice, les profils des utilisateur·rice·s sont stockés dans un emplacement enregistré comme @dfn{garbage-collector root}, vers lequel @file{$HOME/.guix-profile} pointe (@pxref{Invoquer guix gc}).  Ce répertoire est normalement @code{@var{localstatedir}/guix/profiles/per-user/@var{user}}, où @var{localstatedir} est la valeur passée à @code{configure} comme @option{--localstatedir}, et @var{user} est le nom d'utilisateur·rice.  Le répertoire @file{per-user} est créé au démarrage de @command{guix-daemon}, et le sous-répertoire @var{user} est créé par @command{guix package}.

note: type: Plain text
en: The @var{options} can be among the following:
fr: Les @var{options} peuvent être les suivante :

note: type: item
en: --install=@var{package} @dots{}
fr: --install=@var{paquet} @dots{}

note: type: itemx
en: -i @var{package} @dots{}
fr: -i @var{paquet} @dots{}

note: type: table
en: Install the specified @var{package}s.
fr: Installer les @var{paquet}s spécifiés.

note: type: table
en: Each @var{package} may specify a simple package name, such as @code{guile}, optionally followed by an at-sign and version number, such as @code{guile@@3.0.7} or simply @code{guile@@3.0}.  In the latter case, the newest version prefixed by @code{3.0} is selected.
fr: Chaque @var{paquet} peut spécifier un simple nom de paquet, tel que @code{guile}, éventuellement suivi d'un arobase et d'un numéro de version, tel que @code{guile@@3.0.7} ou simplement @code{guile@@3.0}. (dans ce dernier cas, la version la plus récente préfixée par @code{3.0} est sélectionnée).

note: type: table
en: If no version number is specified, the newest available version will be selected.  In addition, such a @var{package} specification may contain a colon, followed by the name of one of the outputs of the package, as in @code{gcc:doc} or @code{binutils@@2.22:lib} (@pxref{Packages with Multiple Outputs}).
fr: Si aucun numéro de version n'est spécifié, la version la plus récente disponible est choisie.  En plus, une telle spécification de @var{paquet} peut contenir un deux-points, suivi du nom d'une des sorties du paquet, comme dans @code{gcc:doc} ou @code{binutils@@2.22:lib} (@pxref{Packages with Multiple Outputs}).

note: type: table
en: Packages with a corresponding name (and optionally version) are searched for among the GNU distribution modules (@pxref{Package Modules}).
fr: Des paquets avec un nom correspondant (et éventuellement une version) sont recherchés dans les modules de la distribution GNU (@pxref{Package Modules}).

note: type: table
en: Alternatively, a @var{package} can directly specify a store file name such as @file{/gnu/store/...-guile-3.0.7}, as produced by, e.g., @code{guix build}.
fr: Autrement, un @var{paquet} peut directement spécifier un fichier du dépôt comme @file{/gnu/store/...-guile-3.0.7}, produit par exemple par @code{guix build}.

note: type: cindex
en: propagated inputs
fr: entrées propagées

note: type: table
en: Sometimes packages have @dfn{propagated inputs}: these are dependencies that automatically get installed along with the required package (@pxref{package-propagated-inputs, @code{propagated-inputs} in @code{package} objects}, for information about propagated inputs in package definitions).
fr: Parfois les paquets ont des @dfn{entrées propagées} : ce sont des dépendances qui sont installées automatiquement avec le paquet demandé (@pxref{package-propagated-inputs, @code{propagated-inputs} in @code{package} objects} pour plus d'informations sur les entrées propagées dans les définitions des paquets).

note: type: table
en: An example is the GNU MPC library: its C header files refer to those of the GNU MPFR library, which in turn refer to those of the GMP library.  Thus, when installing MPC, the MPFR and GMP libraries also get installed in the profile; removing MPC also removes MPFR and GMP---unless they had also been explicitly installed by the user.
fr: Un exemple est la bibliothèque MPC de GNU : ses fichiers d'en-tête C se réfèrent à ceux de la bibliothèque MPFR de GNU, qui se réfèrent en retour à ceux de la bibliothèque GMP.  Ainsi, lorsqu'on installe MPC, les bibliothèques MPFR et GMP sont aussi installées dans le profil ; supprimer MPC supprimera aussi MPFR et GMP — à moins qu'ils n'aient été aussi installés explicitement par l'utilisateur·rice.

note: type: table
en: Besides, packages sometimes rely on the definition of environment variables for their search paths (see explanation of @option{--search-paths} below).  Any missing or possibly incorrect environment variable definitions are reported here.
fr: En outre, les paquets s'appuient parfois sur la définition de variables d'environnement pour leurs chemins de recherche (voir l'explication de l'@option{--chemins de recherche} ci-dessous).  Toute définition de variable d'environnement manquante ou éventuellement incorrecte est reportée ici.

note: type: table
en: Install the package @var{exp} evaluates to.
fr: Installer le paquet évalué par @var{exp}.

note: type: table
en: @var{exp} must be a Scheme expression that evaluates to a @code{<package>} object.  This option is notably useful to disambiguate between same-named variants of a package, with expressions such as @code{(@@ (gnu packages base) guile-final)}.
fr: @var{exp} doit être une expression Scheme qui s'évalue en un objet @code{<package>}.  Cette option est notamment utile pour distinguer les variantes d'un paquet avec le même nom, avec des expressions comme @code{(@@ (gnu packages base) guile-final)}.

note: type: table
en: Note that this option installs the first output of the specified package, which may be insufficient when needing a specific output of a multiple-output package.
fr: Remarquez que cette option installe la première sortie du paquet, ce qui peut être insuffisant lorsque vous avez besoin d'une sortie spécifique d'un paquet à plusieurs sorties.

note: type: item
en: --install-from-file=@var{file}
fr: --install-from-file=@var{fichier}

note: type: itemx
en: -f @var{file}
fr: -f @var{fichier}

note: type: table
en: Install the package that the code within @var{file} evaluates to.
fr: Installer le paquet évalué par le code dans le @var{fichier}.

note: type: table
en: As an example, @var{file} might contain a definition like this (@pxref{Defining Packages}):
fr: Par exemple, @var{fichier} peut contenir une définition comme celle-ci (@pxref{Defining Packages}) :

note: type: table
en: Developers may find it useful to include such a @file{guix.scm} file in the root of their project source tree that can be used to test development snapshots and create reproducible development environments (@pxref{Invoking guix shell}).
fr: Lorsqu'on développe, on peut trouver utile d'inclure un tel fichier @file{guix.scm} à la racine de l'arborescence des sources de son projet qui pourrait être utilisé pour tester des versions de développement et créer des environnements de développement reproductibles (@pxref{Invoking guix shell}).

note: type: table
en: The @var{file} may also contain a JSON representation of one or more package definitions.  Running @code{guix package -f} on @file{hello.json} with the following contents would result in installing the package @code{greeter} after building @code{myhello}:
fr: Le @var{fichier} peut aussi contenir une représentation JSON d'une ou de plusieurs définitions de paquets.  L'exécution de @code{guix package -f} sur @file{hello.json} avec le contenu suivant entraînerait l'installation du paquet @code{greeter} après la construction de @code{myhello} :

note: type: item
en: --remove=@var{package} @dots{}
fr: --remove=@var{paquet} @dots{}

note: type: itemx
en: -r @var{package} @dots{}
fr: -r @var{paquet} @dots{}

note: type: table
en: Remove the specified @var{package}s.
fr: Supprimer les @var{paquet}s spécifiés.

note: type: table
en: As for @option{--install}, each @var{package} may specify a version number and/or output name in addition to the package name.  For instance, @samp{-r glibc:debug} would remove the @code{debug} output of @code{glibc}.
fr: Comme pour @option{--install}, chaque @var{paquet} peut spécifier un numéro de version ou un nom de sortie en plus du nom du paquet.  Par exemple, @samp{-r glibc:debug} supprimerait la sortie @code{debug} de @code{glibc}.

note: type: cindex
en: upgrading packages
fr: mettre à jour des paquets

note: type: table
en: Upgrade all the installed packages.  If one or more @var{regexp}s are specified, upgrade only installed packages whose name matches a @var{regexp}.  Also see the @option{--do-not-upgrade} option below.
fr: Mettre à jour tous les paquets installés.  Si un ou plusieurs @var{regexp} sont spécifiés, la mise à jour n'installera que les paquets dont le nom correspond à @var{regexp}.  Voir aussi l'option @option{--do-not-upgrade} ci-dessous.

note: type: table
en: Note that this upgrades package to the latest version of packages found in the distribution currently installed.  To update your distribution, you should regularly run @command{guix pull} (@pxref{Invoking guix pull}).
fr: Remarquez que cela met à jour vers la dernière version des paquets trouvée dans la distribution actuellement installée.  Pour mettre à jour votre distribution, vous devriez lancer régulièrement @command{guix pull} (@pxref{Invoking guix pull}).

note: type: cindex
en: package transformations, upgrades
fr: transformations de paquets, mises à jour

note: type: table
en: When upgrading, package transformations that were originally applied when creating the profile are automatically re-applied (@pxref{Package Transformation Options}).  For example, assume you first installed Emacs from the tip of its development branch with:
fr: Quand une mise à jour est en cours d'exécution, les transformations de paquets initialement appliquées lors de la création du profil sont automatiquement réappliquées (@pxref{Package Transformation Options}).  Par exemple, supposons que vous ayez d'abord installé Emacs depuis l'extrémité de sa branche de développement avec :

note: type: table
en: Next time you run @command{guix upgrade}, Guix will again pull the tip of the Emacs development branch and build @code{emacs-next} from that checkout.
fr: La prochaine fois que vous lancerez @command{guix upgrade}, Guix va à nouveau extraire l'extrémité de la branche de développement Emacs et construira @code{emacs-next} à partir de ce checkout.

note: type: table
en: Note that transformation options such as @option{--with-branch} and @option{--with-source} depend on external state; it is up to you to ensure that they work as expected.  You can also discard a transformations that apply to a package by running:
fr: Notez que les options de transformation comme @option{--with-branch} et @option{--with-source} dépendent de l'état exterieur ; c'est à vous de vous assurer qu'elles fonctionnent comme souhaité.  Vous pouvez également écarter une transformation qui s'applique à un paquet en lançant :

note: type: example
en: guix install @var{package}
fr: $ guix install @var{paquet}

note: type: table
en: When used together with the @option{--upgrade} option, do @emph{not} upgrade any packages whose name matches a @var{regexp}.  For example, to upgrade all packages in the current profile except those containing the substring ``emacs'':
fr: Lors d'une utilisation conjointe avec l'option @option{--upgrade}, ne @emph{pas} mettre à jour les paquets dont le nom correspond à @var{regexp}.  Par exemple, pour mettre à jour tous les paquets du profil actuel à l'exception de ceux qui contiennent la chaîne « emacs » :

note: type: item
en: --manifest=@var{file}
fr: --manifest=@var{fichier}

note: type: itemx
en: -m @var{file}
fr: -m @var{fichier}

note: type: cindex
en: profile declaration
fr: déclaration de profil

note: type: cindex
en: profile manifest
fr: manifest de profil

note: type: table
en: Create a new generation of the profile from the manifest object returned by the Scheme code in @var{file}.  This option can be repeated several times, in which case the manifests are concatenated.
fr: Créer une nouvelle génération du profil depuis l'objet manifeste renvoyé par le code Scheme dans @var{fichier}.  Cette option peut être répétée plusieurs fois, auquel cas les manifestes sont concaténés.

note: type: table
en: This allows you to @emph{declare} the profile's contents rather than constructing it through a sequence of @option{--install} and similar commands.  The advantage is that @var{file} can be put under version control, copied to different machines to reproduce the same profile, and so on.
fr: Cela vous permet de @emph{déclarer} le contenu du profil plutôt que de le construire avec une série de @option{--install} et de commandes similaires.  L'avantage étant que le @var{fichier} peut être placé sous contrôle de version, copié vers d'autres machines pour reproduire le même profil, etc.

note: type: table
en: @var{file} must return a @dfn{manifest} object, which is roughly a list of packages:
fr: @var{fichier} doit renvoyer un objet @dfn{manifest} qui est en gros une liste de paquets :

note: type: lisp
en: (packages->manifest
     (list emacs
           guile-2.0
           ;; Use a specific package output.
           (list guile-2.0 "debug")))
fr: (packages->manifest
     (list emacs
           guile-2.0
           ;; Utiliser une sortie spécifique d'un paquet.
           (list guile-2.0 "debug")))

note: type: table
en: @xref{Writing Manifests}, for information on how to write a manifest.  @xref{export-manifest, @option{--export-manifest}}, to learn how to obtain a manifest file from an existing profile.
fr: @xref{Writing Manifests}, pour des informations sur la manière d'écrire un manifeste.  @xref{export-manifest, @option{--export-manifest}}, pour apprendre à obtenir un fichier manifeste depuis un profil existant.

note: type: cindex
en: rolling back
fr: revenir en arrière

note: type: cindex
en: undoing transactions
fr: défaire des transactions

note: type: cindex
en: transactions, undoing
fr: transactions, défaire

note: type: table
en: Roll back to the previous @dfn{generation} of the profile---i.e., undo the last transaction.
fr: Revenir à la @dfn{génération} précédente du profil c.-à-d.@: défaire la dernière transaction.

note: type: table
en: When combined with options such as @option{--install}, roll back occurs before any other actions.
fr: Lorsqu'elle est combinée avec des options comme @option{--install}, Le retour en arrière se produit avant toute autre action.

note: type: table
en: When rolling back from the first generation that actually contains installed packages, the profile is made to point to the @dfn{zeroth generation}, which contains no files apart from its own metadata.
fr: Lorsque vous revenez de la première génération qui contient des fichiers, le profil pointera vers la @dfn{zéroième génération} qui ne contient aucun fichier en dehors de ses propres métadonnées.

note: type: table
en: After having rolled back, installing, removing, or upgrading packages overwrites previous future generations.  Thus, the history of the generations in a profile is always linear.
fr: Après être revenu en arrière, l'installation, la suppression et la mise à jour de paquets réécrit les futures générations précédentes.  Ainsi, l'historique des générations dans un profil est toujours linéaire.

note: type: item
en: --switch-generation=@var{pattern}
fr: --switch-generation=@var{motif}

note: type: itemx
en: -S @var{pattern}
fr: -S @var{motif}

note: type: cindex
en: generations
fr: générations

note: type: table
en: Switch to a particular generation defined by @var{pattern}.
fr: Basculer vers une génération particulière définie par le @var{motif}.

note: type: table
en: @var{pattern} may be either a generation number or a number prefixed with ``+'' or ``-''.  The latter means: move forward/backward by a specified number of generations.  For example, if you want to return to the latest generation after @option{--roll-back}, use @option{--switch-generation=+1}.
fr: Le @var{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 @option{--roll-back}, utilisez @option{--switch-generation=+1}.

note: type: table
en: The difference between @option{--roll-back} and @option{--switch-generation=-1} is that @option{--switch-generation} will not make a zeroth generation, so if a specified generation does not exist, the current generation will not be changed.
fr: La différence entre @option{--roll-back} et @option{--switch-generation=-1} est que @option{--switch-generation} ne vous amènera pas à la génération initiale, donc si la génération demandée n'existe pas la génération actuelle ne changera pas.

note: type: item
en: --search-paths[=@var{kind}]
fr: --search-paths[=@var{genre}]

note: type: table
en: Report environment variable definitions, in Bash syntax, that may be needed in order to use the set of installed packages.  These environment variables are used to specify @dfn{search paths} for files used by some of the installed packages.
fr: Rapporter les définitions des variables d'environnement dans la syntaxe Bash qui peuvent être requises pour utiliser l'ensemble des paquets installés.  Ces variables d'environnement sont utilisées pour spécifier les @dfn{chemins de recherche} de fichiers utilisés par les paquets installés.

note: type: table
en: For example, GCC needs the @env{CPATH} and @env{LIBRARY_PATH} environment variables to be defined so it can look for headers and libraries in the user's profile (@pxref{Environment Variables,,, gcc, Using the GNU Compiler Collection (GCC)}).  If GCC and, say, the C library are installed in the profile, then @option{--search-paths} will suggest setting these variables to @file{@var{profile}/include} and @file{@var{profile}/lib}, respectively (@pxref{Search Paths}, for info on search path specifications associated with packages.)
fr: Par exemple, GCC a besoin des variables d'environnement @env{CPATH} et @env{LIBRARY_PATH} pour trouver les en-têtes et les bibliothèques dans le profil de l'utilisateur·rice (@pxref{Environment Variables,,, gcc, Using the GNU Compiler Collection (GCC)}).  Si GCC et, disons, la bibliothèque C sont installés dans le profil, alors @option{--search-paths} suggérera d'initialiser ces variables à @file{@var{profil}/include} et @file{@var{profil}/lib}, respectivement (@pxref{Search Paths}, pour des infos sur les spécifications de chemins de recherche associées aux paquets).

note: type: table
en: The typical use case is to define these environment variables in the shell:
fr: Le cas d'utilisation typique est de définir ces variables d'environnement dans le shell :

note: type: table
en: @var{kind} may be one of @code{exact}, @code{prefix}, or @code{suffix}, meaning that the returned environment variable definitions will either be exact settings, or prefixes or suffixes of the current value of these variables.  When omitted, @var{kind} defaults to @code{exact}.
fr: @var{genre} peut être l'une des valeurs @code{exact}, @code{prefix} ou @code{suffix}, ce qui signifie que les définitions des variables d'environnement renvoyées seront soit les paramètres exacts, soit placés avant ou après la valeur actuelle de ces paramètres.  Lorsqu'il est omis, @var{genre} a pour valeur par défaut @code{exact}.

note: type: table
en: This option can also be used to compute the @emph{combined} search paths of several profiles.  Consider this example:
fr: Cette option peut aussi être utilisé pour calculer les chemins de recherche @emph{combinés} de plusieurs profils.  Regardez cet exemple :

note: type: example
en: $ guix package -p foo -i guile
    $ guix package -p bar -i guile-json
    $ guix package -p foo -p bar --search-paths
fr: $ guix package -p toto -i guile
    $ guix package -p titi -i guile-json
    $ guix package -p toto -p titi --search-paths

note: type: table
en: The last command above reports about the @env{GUILE_LOAD_PATH} variable, even though, taken individually, neither @file{foo} nor @file{bar} would lead to that recommendation.
fr: La dernière commande ci-dessus montre la variable @env{GUILE_LOAD_PATH} bien que, pris individuellement, ni @file{toto} ni @file{titi} n'auraient donné cette recommandation.

note: type: cindex
en: profile, choosing
fr: profil, choix du

note: type: item
en: --profile=@var{profile}
fr: --profile=@var{profil}

note: type: itemx
en: -p @var{profile}
fr: -p @var{profil}

note: type: table
en: Use @var{profile} instead of the user's default profile.
fr: Utiliser le @var{profil} à la place du profil par défaut du compte.

note: type: table
en: @var{profile} must be the name of a file that will be created upon completion.  Concretely, @var{profile} will be a mere symbolic link (``symlink'') pointing to the actual profile where packages are installed:
fr: @var{profil} doit être le nom d'un fichier qui sera créé une fois terminé.  Concrètement, @var{profil} sera un simple lien symbolique (« symlink ») pointant vers le profil réel où les paquets sont installés :

note: type: table
en: All it takes to get rid of the profile is to remove this symlink and its siblings that point to specific generations:
fr: Tout ce qu'il faut pour se débarrasser du profil est de supprimer ce lien symbolique et ses frères et sœurs qui pointent vers des générations spécifiques :

note: type: table
en: List all the user's profiles:
fr: Liste tous les profils utilisateur·rice :

note: type: table
en: When running as root, list all the profiles of all the users.
fr: En cours d'exécution sous root, liste tous les profils de tou·te·s les utilisateur·rice·s.

note: type: cindex
en: collisions, in a profile
fr: collisions, dans un profil

note: type: cindex
en: colliding packages in profiles
fr: faire des collisions de paquets dans des profils

note: type: cindex
en: profile collisions
fr: profil, collisions

note: type: table
en: Allow colliding packages in the new profile.  Use at your own risk!
fr: Permettre des collisions de paquets dans le nouveau profil.  À utiliser à vos risques et périls !

note: type: table
en: By default, @command{guix package} reports as an error @dfn{collisions} in the profile.  Collisions happen when two or more different versions or variants of a given package end up in the profile.
fr: Par défaut, @command{guix package} rapporte les @dfn{collisions} dans le profil comme des erreurs.  Les collisions ont lieu quand deux version ou variantes d'un paquet donné se retrouvent dans le profil.

note: type: table
en: Use the bootstrap Guile to build the profile.  This option is only useful to distribution developers.
fr: Utiliser le programme d'amorçage Guile pour compiler le profil.  Cette option n'est utile qu'aux personnes qui développent la distribution.

note: type: Plain text
en: In addition to these actions, @command{guix package} supports the following options to query the current state of a profile, or the availability of packages:
fr: En plus de ces actions, @command{guix package} supporte les options suivantes pour demander l'état actuel d'un profil ou la disponibilité des paquets :

note: type: cindex
en: searching for packages
fr: chercher des paquets

note: type: table
en: List the available packages whose name, synopsis, or description matches @var{regexp} (in a case-insensitive fashion), sorted by relevance.  Print all the metadata of matching packages in @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual}).
fr: Lister les paquets disponibles dont le nom, le synopsis ou la description correspondent à la @var{regexp} (en étant insensible à la casse), triés par pertinence.  Afficher toutes les métadonnées des paquets correspondants au format @code{recutils} (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual}).

note: type: table
en: This allows specific fields to be extracted using the @command{recsel} command, for instance:
fr: Cela permet à des champs spécifiques d'être extraits avec la commande @command{recsel}, par exemple :

note: type: table
en: Similarly, to show the name of all the packages available under the terms of the GNU@tie{}LGPL version 3:
fr: De manière similaire, pour montrer le nom de tous les paquets disponibles sous license GNU@tie{}LGPL version 3 :

note: type: table
en: It is also possible to refine search results using several @code{-s} flags to @command{guix package}, or several arguments to @command{guix search}.  For example, the following command returns a list of board games (this time using the @command{guix search} alias):
fr: Il est aussi possible de raffiner les résultats de la recherche en donnant plusieurs options @code{-s} à @command{guix package}, ou plusieurs arguments à @command{guix search}.  Par exemple, la commande suivante renvoie la liste des jeux de plateau (cette fois-ci avec l'alias @command{guix search}) :

note: type: table
en: If we were to omit @code{-s game}, we would also get software packages that deal with printed circuit boards; removing the angle brackets around @code{board} would further add packages that have to do with keyboards.
fr: Si on avait oublié @code{-s game}, on aurait aussi eu les paquets logiciels qui s'occupent de circuits imprimés (en anglais : circuit board) ; supprimer les chevrons autour de @code{board} aurait aussi ajouté les paquets qui parlent de clavier (en anglais : key@emph{board}).

note: type: table
en: And now for a more elaborate example.  The following command searches for cryptographic libraries, filters out Haskell, Perl, Python, and Ruby libraries, and prints the name and synopsis of the matching packages:
fr: Et maintenant un exemple plus élaboré.  La commande suivante recherche les bibliothèques cryptographiques, retire les bibliothèques Haskell, Perl, Python et Ruby et affiche le nom et le synopsis des paquets correspondants :

note: type: table
en: @xref{Selection Expressions,,, recutils, GNU recutils manual}, for more information on @dfn{selection expressions} for @code{recsel -e}.
fr: @xref{Selection Expressions,,, recutils, GNU recutils manual} pour plus d'information sur les @dfn{expressions de sélection} pour @code{recsel -e}.

note: type: item
en: --show=@var{package}
fr: --show=@var{paquet}

note: type: table
en: Show details about @var{package}, taken from the list of available packages, in @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual}).
fr: Afficher les détails du @var{paquet} dans la liste des paquets disponibles, au format @code{recutils} (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual}).

note: type: table
en: You may also specify the full name of a package to only get details about a specific version of it (this time using the @command{guix show} alias):
fr: Vous pouvez aussi spécifier le nom complet d'un paquet pour n'avoir que les détails concernant une version spécifique (cette fois-ci avec l'alias @command{guix show}) :

note: type: table
en: List the currently installed packages in the specified profile, with the most recently installed packages shown last.  When @var{regexp} is specified, list only installed packages whose name matches @var{regexp}.
fr: Liste les paquets actuellement installés dans le profil spécifié, avec les paquets les plus récemment installés en dernier.  Lorsque @var{regexp} est spécifié, liste uniquement les paquets installés dont le nom correspond à @var{regexp}.

note: type: table
en: For each installed package, print the following items, separated by tabs: the package name, its version string, the part of the package that is installed (for instance, @code{out} for the default output, @code{include} for its headers, etc.), and the path of this package in the store.
fr: Pour chaque paquet installé, affiche les éléments suivants, séparés par des tabulations : le nom du paquet, sa version, la partie du paquet qui est installé (par exemple, @code{out} pour la sortie par défaut, @code{include} pour ses en-têtes, etc) et le chemin du paquet dans le dépôt.

note: type: table
en: List packages currently available in the distribution for this system (@pxref{GNU Distribution}).  When @var{regexp} is specified, list only available packages whose name matches @var{regexp}.
fr: Lister les paquets actuellement disponibles dans la distribution pour ce système (@pxref{GNU Distribution}).  Lorsque @var{regexp} est spécifié, lister uniquement les paquets dont le nom correspond à @var{regexp}.

note: type: table
en: For each package, print the following items separated by tabs: its name, its version string, the parts of the package (@pxref{Packages with Multiple Outputs}), and the source location of its definition.
fr: Pour chaque paquet, affiche les éléments suivants séparés par des tabulations : son nom, sa version, les parties du paquet (@pxref{Packages with Multiple Outputs}), et l'emplacement de sa définition.

note: type: item
en: --list-generations[=@var{pattern}]
fr: --list-generations[=@var{motif}]

note: type: itemx
en: -l [@var{pattern}]
fr: -l [@var{motif}]

note: type: table
en: Return a list of generations along with their creation dates; for each generation, show the installed packages, with the most recently installed packages shown last.  Note that the zeroth generation is never shown.
fr: Renvoyer la liste des générations avec leur date de création ; pour chaque génération, montre les paquets installés avec les paquets installés les plus récemment en dernier.  Remarquez que la zéroième génération n'est jamais montrée.

note: type: table
en: For each installed package, print the following items, separated by tabs: the name of a package, its version string, the part of the package that is installed (@pxref{Packages with Multiple Outputs}), and the location of this package in the store.
fr: Pour chaque paquet installé, afficher les éléments suivants, séparés par des tabulations : le nom du paquet, sa version, la partie du paquet qui a été installée (@pxref{Packages with Multiple Outputs}), et l'emplacement du paquet dans le dépôt.

note: type: table
en: When @var{pattern} is used, the command returns only matching generations.  Valid patterns include:
fr: Lorsque @var{motif} est utilisé, la commande ne renvoie que les générations correspondantes.  Les motifs valides sont :

note: type: item
en: @emph{Integers and comma-separated integers}.  Both patterns denote
fr: @emph{Des entiers et des entiers séparés par des virgules}.  Les deux motifs correspondent

note: type: itemize
en: generation numbers.  For instance, @option{--list-generations=1} returns the first one.
fr: numéros de génération.  Par exemple, @option{--list-generations=1} renvoie la première.

note: type: itemize
en: And @option{--list-generations=1,8,2} outputs three generations in the specified order.  Neither spaces nor trailing commas are allowed.
fr: Et @option{--list-generations=1,8,2} renvoie les trois générations dans l'ordre spécifié.  Aucun espace ni virgule surnuméraire ne sont permis.

note: type: item
en: @emph{Ranges}.  @option{--list-generations=2..9} prints the
fr: @emph{Ranges}.  @option{--list-generations=2..9} affiche les

note: type: itemize
en: specified generations and everything in between.  Note that the start of a range must be smaller than its end.
fr: générations demandées et tout ce qui se trouve entre elles.  Remarquez que le début d'un intervalle doit être plus petit que sa fin.

note: type: itemize
en: It is also possible to omit the endpoint.  For example, @option{--list-generations=2..}, returns all generations starting from the second one.
fr: Il est aussi possible d'omettre le numéro final.  Par exemple, @option{--list-generations=2..} renvoie toutes les générations à partir de la deuxième.

note: type: item
en: @emph{Durations}.  You can also get the last @emph{N}@tie{}days, weeks,
fr: @emph{Des durées}.  Vous pouvez aussi récupérer les derniers @emph{N}@tie{}jours, semaines,

note: type: itemize
en: or months by passing an integer along with the first letter of the duration.  For example, @option{--list-generations=20d} lists generations that are up to 20 days old.
fr: ou mois en passant un entier avec la première lettre de la durée (en anglais : d, w ou m).  Par exemple @option{--list-generations=20d} liste les générations qui sont âgées d'au plus 20 jours.

note: type: item
en: --delete-generations[=@var{pattern}]
fr: --delete-generations[=@var{motif}]

note: type: itemx
en: -d [@var{pattern}]
fr: -d [@var{motif}]

note: type: table
en: When @var{pattern} is omitted, delete all generations except the current one.
fr: Lorsque @var{motif} est omis, supprimer toutes les générations en dehors de l'actuelle.

note: type: table
en: This command accepts the same patterns as @option{--list-generations}.  When @var{pattern} is specified, delete the matching generations.  When @var{pattern} specifies a duration, generations @emph{older} than the specified duration match.  For instance, @option{--delete-generations=1m} deletes generations that are more than one month old.
fr: Cette commande accepte les même motifs que @option{--list-generations}.  Lorsque @var{motif} est spécifié, supprime les générations correspondantes.  Lorsque @var{motif} spécifie une durée, les générations @emph{plus anciennes} que la durée spécifiée correspondent.  Par exemple @option{--delete-generations=1m} supprime les générations vieilles de plus d'un mois.

note: type: table
en: If the current generation matches, it is @emph{not} deleted.  Also, the zeroth generation is never deleted.
fr: Si la génération actuelle correspond, elle n'est @emph{pas} supprimée.  La zéroième génération n'est elle non plus jamais supprimée.

note: type: table
en: Note that deleting generations prevents rolling back to them.  Consequently, this command must be used with care.
fr: 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.

note: type: cindex
en: manifest, exporting
fr: manifeste, export

note: type: table
en: Write to standard output a manifest suitable for @option{--manifest} corresponding to the chosen profile(s).
fr: Écrire un manifeste vers la sortie standard utilisable avec @option{--manifest} et qui correspond à un ou plusieurs profils choisis.

note: type: table
en: This option is meant to help you migrate from the ``imperative'' operating mode---running @command{guix install}, @command{guix upgrade}, etc.---to the declarative mode that @option{--manifest} offers.
fr: Cette option est conçue pour vous aider à migre du mode de fonctionnement « impératif » --- lancer @command{guix install}, @command{guix upgrade}, etc --- au mode déclaratif offert par @option{--manifest}.

note: type: table
en: Be aware that the resulting manifest @emph{approximates} what your profile actually contains; for instance, depending on how your profile was created, it can refer to packages or package versions that are not exactly what you specified.
fr: Soyez conscient que le manifeste qui est résulte est une @emph{approximation} de ce que votre profil contient vraiment ; par exemple, en fonction de la manière dont votre profil a été créé, il peut se référer à des paquets ou des versions de paquets qui ne sont pas exactement ce que vous avez spécifié.

note: type: table
en: Keep in mind that a manifest is purely symbolic: it only contains package names and possibly versions, and their meaning varies over time.  If you wish to ``pin'' channels to the revisions that were used to build the profile(s), see @option{--export-channels} below.
fr: Gardez en tête qu'un manifeste est purement symbolique : il ne contient que des noms de paquets et éventuellement des versions, et leur signification varie avec le temps. Si vous voulez « épingler » des canaux aux révisions qui ont été utilisées pour construire les profils, voir @option{--export-channels} plus bas.

note: type: cindex
en: pinning, channel revisions of a profile
fr: épinglage, des révisions des canaux d'un profil

note: type: table
en: Write to standard output the list of channels used by the chosen profile(s), in a format suitable for @command{guix pull --channels} or @command{guix time-machine --channels} (@pxref{Channels}).
fr: Écrit sur la sortie standard la liste des canaux utilisés par les profils choisi, dans un format convenable pour @command{guix pull --channels} ou @command{guix time-machine --channels} (@pxref{Channels}).

note: type: table
en: Together with @option{--export-manifest}, this option provides information allowing you to replicate the current profile (@pxref{Replicating Guix}).
fr: Avec @option{--export-manifest}, cette option fournit les informations qui vous permettent de répliquer le profil actuel (@pxref{Replicating Guix}).

note: type: table
en: However, note that the output of this command @emph{approximates} what was actually used to build this profile.  In particular, a single profile might have been built from several different revisions of the same channel.  In that case, @option{--export-manifest} chooses the last one and writes the list of other revisions in a comment.  If you really need to pick packages from different channel revisions, you can use inferiors in your manifest to do so (@pxref{Inferiors}).
fr: Cependant, remarquez que la sortie de cette commande est une @emph{approximation} de ce qui a vraiment été utilisé pour construire le profil. En particulier, a profil unique peut avoir été construit à partir de plusieurs révisions du même canal. Dans ce cas, @option{--export-manifest} choisi la dernière et écrit la liste des autres révisions dans un commentaire. Si vous avez vraiment besoin de choisir des paquets à partir d'autres révisions des canaux, vous pouvez utiliser des inférieurs dans votre manifeste pour cela (@pxref{Inferiors}).

note: type: table
en: Together with @option{--export-manifest}, this is a good starting point if you are willing to migrate from the ``imperative'' model to the fully declarative model consisting of a manifest file along with a channels file pinning the exact channel revision(s) you want.
fr: Avec @option{--export-manifest}, c'est un bon point de départ si vous voulez migrer du modèle « impératif » au modèle complètement déclaratif qui consiste en un fichier manifeste et un fichier de canaux qui épingle les révisions exactes des canaux que vous voulez.

note: type: Plain text
en: Finally, since @command{guix package} may actually start build processes, it supports all the common build options (@pxref{Common Build Options}).  It also supports package transformation options, such as @option{--with-source}, and preserves them across upgrades (@pxref{Package Transformation Options}).
fr: Enfin, comme @command{guix package} peut démarrer des processus de construction, il supporte les options de construction communes (@pxref{Common Build Options}).   Il prend aussi en charge les options de transformation de paquets comme @option{--with-source}, et les préserve à travers les mises à jour (@pxref{Package Transformation Options}).

note: type: cindex
en: pre-built binaries
fr: binaires pré-construits

note: type: Plain text
en: Guix supports transparent source/binary deployment, which means that it can either build things locally, or download pre-built items from a server, or both.  We call these pre-built items @dfn{substitutes}---they are substitutes for local build results.  In many cases, downloading a substitute is much faster than building things locally.
fr: Guix gère le déploiement depuis des binaires ou des sources de manière transparente ce qui signifie qu'il peut aussi bien construire localement que télécharger des éléments pré-construits depuis un serveur ou les deux.  Nous appelons ces éléments pré-construits des @dfn{substituts} — ils se substituent aux résultats des constructions locales.  Dans la plupart des cas, télécharger un substitut est bien plus rapide que de construire les choses localement.

note: type: Plain text
en: Substitutes can be anything resulting from a derivation build (@pxref{Derivations}).  Of course, in the common case, they are pre-built package binaries, but source tarballs, for instance, which also result from derivation builds, can be available as substitutes.
fr: Les substituts peuvent être tout ce qui résulte d'une construction de dérivation (@pxref{Derivations}).  Bien sûr dans le cas général, il s'agit de paquets binaires pré-construits, mais les archives des sources par exemple résultent aussi de la construction d'une dérivation qui peut aussi être disponible en tant que substitut.

note: type: cindex
en: build farm
fr: ferme de construction

note: type: Plain text
en: @code{@value{SUBSTITUTE-SERVER-1}} and @code{@value{SUBSTITUTE-SERVER-2}} are both front-ends to official build farms that build packages from Guix continuously for some architectures, and make them available as substitutes.  These are the default source of substitutes; which can be overridden by passing the @option{--substitute-urls} option either to @command{guix-daemon} (@pxref{daemon-substitute-urls,, @code{guix-daemon --substitute-urls}})  or to client tools such as @command{guix package} (@pxref{client-substitute-urls,, client @option{--substitute-urls} option}).
fr: @code{@value{SUBSTITUTE-SERVER-1}} et @code{@value{SUBSTITUTE-SERVER-2}} sont tous deux des interfaces aux fermes de construction officielles qui construisent des paquets pour Guix continuellement pour certaines architectures et les rend disponibles en tant que substituts.  Ce sont les sources par défaut des substituts qui peuvent être modifiées en passant l'option @option{--substitute-urls} soit à @command{guix-daemon} (@pxref{daemon-substitute-urls,, @code{guix-daemon --substitute-urls}}) soit aux outils clients comme  @command{guix package} (@pxref{client-substitute-urls,, client @option{--substitute-urls} option}).

note: type: Plain text
en: Substitute URLs can be either HTTP or HTTPS.  HTTPS is recommended because communications are encrypted; conversely, using HTTP makes all communications visible to an eavesdropper, who could use the information gathered to determine, for instance, whether your system has unpatched security vulnerabilities.
fr: Les URL des substituts peuvent être soit en HTTP soit en HTTPS.  Le HTTPS est recommandé parce que les communications sont chiffrées ; à l'inverse HTTP rend les communications visibles pour un espion qui peut utiliser les informations accumulées sur vous pour déterminer par exemple si votre système a des vulnérabilités de sécurités non corrigées.

note: type: Plain text
en: Substitutes from the official build farms are enabled by default when using Guix System (@pxref{GNU Distribution}).  However, they are disabled by default when using Guix on a foreign distribution, unless you have explicitly enabled them via one of the recommended installation steps (@pxref{Installation}).  The following paragraphs describe how to enable or disable substitutes for the official build farm; the same procedure can also be used to enable substitutes for any other substitute server.
fr: Les substituts des fermes de construction officielles sont activés par défaut dans la distribution système Guix (@pxref{GNU Distribution}).  Cependant, ils sont désactivés par défaut lorsque vous utilisez Guix sur une distribution externe, à moins que vous ne les ayez explicitement activés via l'une des étapes d'installation recommandées (@pxref{Installation}).  Les paragraphes suivants décrivent comment activer ou désactiver les substituts pour la ferme de construction officielle ; la même procédure peut être utilisée pour activer les substituts de n'importe quel autre serveur de substituts.

note: type: cindex
en: security
fr: sécurité

note: type: cindex
en: access control list (ACL), for substitutes
fr: liste de contrôle d'accès (ACL), pour les substituts

note: type: cindex
en: ACL (access control list), for substitutes
fr: ACL (liste de contrôle d'accès), pour les substituts

note: type: Plain text
en: To allow Guix to download substitutes from @code{@value{SUBSTITUTE-SERVER-1}}, @code{@value{SUBSTITUTE-SERVER-2}} or a mirror, you must add the relevant public key to the access control list (ACL) of archive imports, using the @command{guix archive} command (@pxref{Invoking guix archive}).  Doing so implies that you trust the substitute server to not be compromised and to serve genuine substitutes.
fr: Pour permettre à Guix de télécharger les substituts depuis @code{@value{SUBSTITUTE-SERVER-1}}, @code{@value{SUBSTITUTE-SERVER-2}} ou un miroir, vous devez ajouter la clé publique correspondante à la liste de contrôle d'accès (ACL) des imports d'archives, avec la commande @command{guix archive} (@pxref{Invoking guix archive}).  Cela implique que vous faîtes confiance au serveur de substituts pour ne pas être compromis et vous servir des substituts authentiques.

note: type: quotation
en: If you are using Guix System, you can skip this section: Guix System authorizes substitutes from @code{@value{SUBSTITUTE-SERVER-1}} and @code{@value{SUBSTITUTE-SERVER-2}} by default.
fr: Si vous utilisez le système Guix, vous pouvez sauter cette section : le système Guix autorise les substituts de @code{@value{SUBSTITUTE-SERVER-1}} et @code{@value{SUBSTITUTE-SERVER-2}} par défaut.

note: type: Plain text
en: The public keys for each of the project maintained substitute servers are installed along with Guix, in @code{@var{prefix}/share/guix/}, where @var{prefix} is the installation prefix of Guix.  If you installed Guix from source, make sure you checked the GPG signature of @file{guix-@value{VERSION}.tar.gz}, which contains this public key file.  Then, you can run something like this:
fr: Les clés publiques de chaque serveur de substituts maintenu par le projet sont installées avec Guix, dans @code{@var{préfixe}/share/guix/}, où @var{préfixe} est le préfixe d'installation de Guix.  Si vous avez installé Guix depuis les sources, assurez-vous d'avoir vérifié la signature GPG de @file{guix-@value{VERSION}.tar.gz} qui contient ce fichier de clef publique.  Ensuite vous pouvez lancer quelque chose comme ceci :

note: type: Plain text
en: Once this is in place, the output of a command like @code{guix build} should change from something like:
fr: Une fois que cela est en place, la sortie d'une commande comme @code{guix build} devrait changer de quelque chose comme :

note: type: example
en: $ guix build emacs --dry-run
    The following derivations would be built:
       /gnu/store/yr7bnx8xwcayd6j95r2clmkdl1qh688w-emacs-24.3.drv
       /gnu/store/x8qsh1hlhgjx6cwsjyvybnfv2i37z23w-dbus-1.6.4.tar.gz.drv
       /gnu/store/1ixwp12fl950d15h2cj11c73733jay0z-alsa-lib-1.0.27.1.tar.bz2.drv
       /gnu/store/nlma1pw0p603fpfiqy7kn4zm105r5dmw-util-linux-2.21.drv
    @dots{}
fr: $ guix build emacs --dry-run
    Les dérivations suivantes seraient construites :
       /gnu/store/yr7bnx8xwcayd6j95r2clmkdl1qh688w-emacs-24.3.drv
       /gnu/store/x8qsh1hlhgjx6cwsjyvybnfv2i37z23w-dbus-1.6.4.tar.gz.drv
       /gnu/store/1ixwp12fl950d15h2cj11c73733jay0z-alsa-lib-1.0.27.1.tar.bz2.drv
       /gnu/store/nlma1pw0p603fpfiqy7kn4zm105r5dmw-util-linux-2.21.drv
    @dots{}

note: type: Plain text
en: to something like:
fr: à quelque chose comme :

note: type: example
en: $ guix build emacs --dry-run
    112.3 MB would be downloaded:
       /gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3
       /gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d
       /gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16
       /gnu/store/7zdhgp0n1518lvfn8mb96sxqfmvqrl7v-libxrender-0.9.7
    @dots{}
fr: $ guix build emacs --dry-run
    112.3 Mo seraient téléchargés :
       /gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3
       /gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d
       /gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16
       /gnu/store/7zdhgp0n1518lvfn8mb96sxqfmvqrl7v-libxrender-0.9.7
    @dots{}

note: type: Plain text
en: The text changed from ``The following derivations would be built'' to ``112.3 MB would be downloaded''.  This indicates that substitutes from the configured substitute servers are usable and will be downloaded, when possible, for future builds.
fr: Le texte a changé de « Les dérivations suivantes seront construites » à « 112,3 Mio seront téléchargés ».  Cela indique que les substituts des serveurs configurés sont utilisables et seront téléchargés, si possible, pour les futures constructions.

note: type: cindex
en: substitutes, how to disable
fr: substituts, comment les désactiver

note: type: Plain text
en: The substitute mechanism can be disabled globally by running @code{guix-daemon} with @option{--no-substitutes} (@pxref{Invoking guix-daemon}).  It can also be disabled temporarily by passing the @option{--no-substitutes} option to @command{guix package}, @command{guix build}, and other command-line tools.
fr: Le mécanisme de substitution peut être désactivé globalement en lançant @code{guix-daemon} avec @option{--no-substitutes} (@pxref{Invoking guix-daemon}).  Il peut aussi être désactivé temporairement en passant l'option @option{--no-substitutes} à @command{guix package}, @command{guix build} et aux autres outils en ligne de commande.

note: type: cindex
en: substitute servers, adding more
fr: serveurs de substituts, en ajouter

note: type: Plain text
en: Guix can look up and fetch substitutes from several servers.  This is useful when you are using packages from additional channels for which the official server does not have substitutes but another server provides them.  Another situation where this is useful is when you would prefer to download from your organization's substitute server, resorting to the official server only as a fallback or dismissing it altogether.
fr: Guix peut chercher et récupérer des substituts à partir de plusieurs serveurs.  C'est utile si vous utilisez des paquets de canaux supplémentaires pour lesquels le serveur officiel n'a pas de substituts mais que d'autres serveurs les fournissent.  Une autre situation où cela est utile est si vous souhaitez télécharger depuis les serveurs de substituts de votre organisation, en utilisant le serveur officiel en dernier recours, ou en ne l'utilisant pas du tout.

note: type: Plain text
en: You can give Guix a list of substitute server URLs and it will check them in the specified order.  You also need to explicitly authorize the public keys of substitute servers to instruct Guix to accept the substitutes they sign.
fr: Vous pouvez donner à Guix une liste d'URL de serveurs de substituts et il les vérifiera dans l'ordre indiqué.  Vous devez aussi explicitement autoriser les clés publiques des serveurs de substituts pour dire à Guix d'accepter les substituts qu'ils signent.

note: type: Plain text
en: On Guix System, this is achieved by modifying the configuration of the @code{guix} service.  Since the @code{guix} service is part of the default lists of services, @code{%base-services} and @code{%desktop-services}, you can use @code{modify-services} to change its configuration and add the URLs and substitute keys that you want (@pxref{Service Reference, @code{modify-services}}).
fr: Sur le système Guix, cela se fait en modifiant la configuration du service @code{guix}.  Comme le service @code{guix} fait partie des services par défaut, @code{%base-services} et @code{%desktop-services}, vous pouvez utiliser @code{modify-services} pour changer sa configuration et ajouter les URL et les clés des serveurs de substituts que vous voulez (@pxref{Service Reference, @code{modify-services}}).

note: type: Plain text
en: As an example, suppose you want to fetch substitutes from @code{guix.example.org} and to authorize the signing key of that server, in addition to the default @code{@value{SUBSTITUTE-SERVER-1}} and @code{@value{SUBSTITUTE-SERVER-2}}.  The resulting operating system configuration will look something like:
fr: Par exemple, supposons que vous vouliez récupérer les substituts de @code{guix.example.org} et autoriser la clé de signature de ce serveur, en plus des serveurs @code{@value{SUBSTITUTE-SERVER-1}}  et @code{@value{SUBSTITUTE-SERVER-2}} par défaut.  La configuration du système d'exploitation qui en résulte ressemblera à :

note: type: lisp
en: (operating-system
      ;; @dots{}
      (services
        ;; Assume we're starting from '%desktop-services'.  Replace it
        ;; with the list of services you're actually using.
        (modify-services %desktop-services
          (guix-service-type config =>
                            (guix-configuration
                              (inherit config)
                              (substitute-urls
                                (append (list "https://guix.example.org")
                                        %default-substitute-urls))
                              (authorized-keys
                                (append (list (local-file "./key.pub"))
                                        %default-authorized-guix-keys)))))))
fr: (operating-system
      ;; @dots{}
      (services
        ;; Supposons qu'on commence à partir de '%desktop-services'.  Remplaçons-le
        ;; par la liste des services qu'on utilise vraiment.
        (modify-services %desktop-services
          (guix-service-type config =>
                            (guix-configuration
                              (inherit config)
                              (substitute-urls
                                (append (list "https://guix.example.org")
                                        %default-substitute-urls))
                              (authorized-keys
                                (append (list (local-file "./key.pub"))
                                        %default-authorized-guix-keys)))))))

note: type: Plain text
en: This assumes that the file @file{key.pub} contains the signing key of @code{guix.example.org}.  With this change in place in your operating system configuration file (say @file{/etc/config.scm}), you can reconfigure and restart the @code{guix-daemon} service or reboot so the changes take effect:
fr: Cela suppose que le fichier @file{key.pub} contient la clé de signature de @code{guix.example.org}.  Avec ce changement dans le fichier de configuration de votre système d'exploitation (disons @file{/etc/config.scm}), vous pouvez reconfigurer et redémarrer le service @code{guix-daemon} ou redémarrer pour que les changements prennent effet :

note: type: Plain text
en: If you're running Guix on a ``foreign distro'', you would instead take the following steps to get substitutes from additional servers:
fr: Si vous utilisez Guix sur une « distro externe », vous suivrez plutôt les étapes suivantes pour avoir des substituts de serveurs supplémentaires :

note: type: enumerate
en: Edit the service configuration file for @code{guix-daemon}; when using systemd, this is normally @file{/etc/systemd/system/guix-daemon.service}.  Add the @option{--substitute-urls} option on the @command{guix-daemon} command line and list the URLs of interest (@pxref{daemon-substitute-urls, @code{guix-daemon --substitute-urls}}):
fr: Modifier le fichier de configuration du service @code{guix-daemon} ; pour systemd, c'est normalement @file{/etc/systemd/system/guix-daemon.service}.  Ajouter l'option @option{--substitute-urls} à la ligne de command @command{guix-daemon} et listez les URL qui vous intéressent (@pxref{daemon-substitute-urls, @code{guix-daemon --substitute-urls}}) :

note: type: enumerate
en: Restart the daemon.  For systemd, it goes like this:
fr: Redémarrez le démon.  Pour systemd, cela ressemble à :

note: type: enumerate
en: Authorize the key of the new server (@pxref{Invoking guix archive}):
fr: Autorisez la clé du nouveau serveur (@pxref{Invoking guix archive}) :

note: type: enumerate
en: Again this assumes @file{key.pub} contains the public key that @code{guix.example.org} uses to sign substitutes.
fr: De nouveau, cela suppose que @file{key.pub} contient la clé publique que @code{guix.example.org} utilise pour signer les substituts.

note: type: Plain text
en: Now you're all set! Substitutes will be preferably taken from @code{https://guix.example.org}, using @code{@value{SUBSTITUTE-SERVER-1}} then @code{@value{SUBSTITUTE-SERVER-2}} as fallback options.  Of course you can list as many substitute servers as you like, with the caveat that substitute lookup can be slowed down if too many servers need to be contacted.
fr: Maintenant vous êtes paré !  Les substituts seront téléchargés de préférence à partir de @code{https://guix.example.org}, avec @code{@value{SUBSTITUTE-SERVER-1}} puis @code{@value{SUBSTITUTE-SERVER-2}} en réserve.  Évidemment vous pouvez lister autant de serveurs de substituts que vous voulez, avec l'inconvénient que la recherche de substituts sera ralentie si vous devez contacter trop de serveurs.

note: type: Plain text
en: Note that there are also situations where one may want to add the URL of a substitute server @emph{without} authorizing its key.  @xref{Substitute Authentication}, to understand this fine point.
fr: Remarquez qu'il à des situations où vous pourriez vouloir ajouter l'URL d'un serveur de substitut @emph{sans} autoriser sa clé.  @xref{Substitute Authentication}, pour comprendre ce point délicat.

note: type: cindex
en: digital signatures
fr: signatures numériques

note: type: Plain text
en: Guix detects and raises an error when attempting to use a substitute that has been tampered with.  Likewise, it ignores substitutes that are not signed, or that are not signed by one of the keys listed in the ACL.
fr: Guix détecte et lève une erreur lorsqu'il essaye d'utiliser un substitut qui a été modifié.  De même, il ignore les substituts qui ne sont pas signés ou qui ne sont pas signés par l'une des clefs listées dans l'ACL.

note: type: Plain text
en: There is one exception though: if an unauthorized server provides substitutes that are @emph{bit-for-bit identical} to those provided by an authorized server, then the unauthorized server becomes eligible for downloads.  For example, assume we have chosen two substitute servers with this option:
fr: Il y a une exception cependant : si un serveur non autorisé fournit des substituts qui sont @emph{identiques bit-à-bit} à ceux fournis par un serveur autorisé, alors le serveur non autorisé devient disponible pour les téléchargements.  Par exemple en supposant qu'on a choisi deux serveurs de substituts avec cette option :

note: type: Plain text
en: If the ACL contains only the key for @samp{b.example.org}, and if @samp{a.example.org} happens to serve the @emph{exact same} substitutes, then Guix will download substitutes from @samp{a.example.org} because it comes first in the list and can be considered a mirror of @samp{b.example.org}.  In practice, independent build machines usually produce the same binaries, thanks to bit-reproducible builds (see below).
fr: Si l'ACL contient uniquement la clef de @samp{b.example.org}, et si @samp{a.example.org} sert @emph{exactement les mêmes} substituts, alors Guix téléchargera les substituts de @samp{a.example.org} parce qu'il vient en premier dans la liste et peut être considéré comme un miroir de @samp{b.example.org}.  En pratique, les machines de construction indépendantes produisent généralement les mêmes binaires, grâce à des constructions reproductibles au bit près (voir ci-dessous).

note: type: Plain text
en: When using HTTPS, the server's X.509 certificate is @emph{not} validated (in other words, the server is not authenticated), contrary to what HTTPS clients such as Web browsers usually do.  This is because Guix authenticates substitute information itself, as explained above, which is what we care about (whereas X.509 certificates are about authenticating bindings between domain names and public keys).
fr: Lorsque vous utilisez HTTPS, le certificat X.509 du serveur n'est @emph{pas} validé (en d'autre termes, le serveur n'est pas authentifié), contrairement à ce que des clients HTTPS comme des navigateurs web font habituellement.  Cela est dû au fait que Guix authentifie les informations sur les substituts eux-mêmes, comme expliqué plus haut, ce dont on se soucie réellement (alors que les certificats X.509 authentifient la relation entre nom de domaine et clef publique).

note: type: Plain text
en: Substitutes are downloaded over HTTP or HTTPS@.  The @env{http_proxy} and @env{https_proxy} environment variables can be set in the environment of @command{guix-daemon} and are honored for downloads of substitutes.  Note that the value of those environment variables in the environment where @command{guix build}, @command{guix package}, and other client commands are run has @emph{absolutely no effect}.
fr: Les substituts sont téléchargés par HTTP ou HTTPS@.  Les variables d'environnement @env{http_proxy} et @env{https_proxy} peuvent être initialisées dans l'environnement de @command{guix-daemon} et sont prises en compte pour le téléchargement des substituts.  Remarquez que la valeur de ces variables d'environnement dans l'environnement où sont exécutés @command{guix build}, @command{guix package}, et d'autres commandes client n'a @emph{absolument aucun effet}.

note: type: Plain text
en: Even when a substitute for a derivation is available, sometimes the substitution attempt will fail.  This can happen for a variety of reasons: the substitute server might be offline, the substitute may recently have been deleted, the connection might have been interrupted, etc.
fr: Même lorsqu'un substitut pour une dérivation est disponible, la substitution échoue parfois.  Cela peut arriver pour plusieurs raisons : le serveur de substitut peut être hors ligne, le substitut a récemment été supprimé du serveur, la connexion peut avoir été interrompue, etc.

note: type: Plain text
en: When substitutes are enabled and a substitute for a derivation is available, but the substitution attempt fails, Guix will attempt to build the derivation locally depending on whether or not @option{--fallback} was given (@pxref{fallback-option,, common build option @option{--fallback}}).  Specifically, if @option{--fallback} was omitted, then no local build will be performed, and the derivation is considered to have failed.  However, if @option{--fallback} was given, then Guix will attempt to build the derivation locally, and the success or failure of the derivation depends on the success or failure of the local build.  Note that when substitutes are disabled or no substitute is available for the derivation in question, a local build will @emph{always} be performed, regardless of whether or not @option{--fallback} was given.
fr: Lorsque les substituts sont activés et qu'un substitut pour une dérivation est disponible, mais que la tentative de substitution échoue, Guix essaiera de construire la dérivation localement si @option{--fallback} a été passé en argument (@pxref{fallback-option,, common build option @code{--fallback}}).  Plus spécifiquement, si cet option n'a pas été passée en argument, alors aucune construction locale n'est effectuée et la dérivation est considérée comme étant en échec. Cependant, si @option{--fallback} est passé en argument, alors Guix essaiera de construire la dérivation localement et l'échec ou le succès de la dérivation dépend de l'échec ou du succès de la construction locale.  Remarquez que lorsque les substituts sont désactivés ou qu'aucun substitut n'est disponible pour la dérivation en question, une construction locale sera @emph{toujours} effectuée, indépendamment du fait que l'argument @option{--fallback} ait été ou non passé.

note: type: Plain text
en: To get an idea of how many substitutes are available right now, you can try running the @command{guix weather} command (@pxref{Invoking guix weather}).  This command provides statistics on the substitutes provided by a server.
fr: Pour se donner une idée du nombre de substituts disponibles maintenant, vous pouvez essayer de lancer la commande @command{guix weather} (@pxref{Invoking guix weather}).  Cette command fournit des statistiques sur les substituts fournis par un serveur.

note: type: cindex
en: trust, of pre-built binaries
fr: confiance, en des binaires pré-construits

note: type: Plain text
en: Today, each individual's control over their own computing is at the mercy of institutions, corporations, and groups with enough power and determination to subvert the computing infrastructure and exploit its weaknesses.  While using substitutes can be convenient, we encourage users to also build on their own, or even run their own build farm, such that the project run substitute servers are less of an interesting target.  One way to help is by publishing the software you build using @command{guix publish} so that others have one more choice of server to download substitutes from (@pxref{Invoking guix publish}).
fr: De nos jours, le contrôle individuel sur son utilisation propre de l'informatique est à la merci d'institutions, de sociétés et de groupes avec assez de pouvoir et de détermination pour contourner les infrastructures informatiques et exploiter leurs faiblesses.  Bien qu'utiliser les substituts soit pratique, nous encourageons chacun·e à construire aussi par soi-même, voire à faire tourner sa propre ferme de construction, pour que les serveurs de substituts du projet deviennent une cible moins intéressante.  Une façon d'aider est de publier les logiciels que vous construisez avec @command{guix publish} pour que les autres aient plus de choix de serveurs où télécharger les substituts (@pxref{Invoking guix publish}).

note: type: Plain text
en: Guix has the foundations to maximize build reproducibility (@pxref{Features}).  In most cases, independent builds of a given package or derivation should yield bit-identical results.  Thus, through a diverse set of independent package builds, we can strengthen the integrity of our systems.  The @command{guix challenge} command aims to help users assess substitute servers, and to assist developers in finding out about non-deterministic package builds (@pxref{Invoking guix challenge}).  Similarly, the @option{--check} option of @command{guix build} allows users to check whether previously-installed substitutes are genuine by rebuilding them locally (@pxref{build-check, @command{guix build --check}}).
fr: Guix possède les fondations pour maximiser la reproductibilité logicielle (@pxref{Features}).  Dans la plupart des cas, des constructions indépendantes d'un paquet donnée ou d'une dérivation devrait donner des résultats identiques au bit près.  Ainsi, à travers un ensemble de constructions de paquets indépendantes il est possible de renforcer l'intégrité du système.  La commande @command{guix challenge} a pour but d'aider les utilisateur·rices à tester les serveurs de substituts et à aider les développeur·euses à trouver les constructions de paquets non-déterministes (@pxref{Invoking guix challenge}).  De même, l'option @option{--check} de @command{guix build} permet à chaque personne de vérifier si les substituts précédemment installés sont authentiques en les reconstruisant localement (@pxref{build-check, @command{guix build --check}}).

note: type: Plain text
en: In the future, we want Guix to have support to publish and retrieve binaries to/from other users, in a peer-to-peer fashion.  If you would like to discuss this project, join us on @email{guix-devel@@gnu.org}.
fr: À l'avenir, nous aimerions que Guix puisse publier et recevoir des binaires d'autres personnes, de manière pair-à-pair.  Si vous voulez discuter de ce projet, rejoignez-nous sur @email{guix-devel@@gnu.org}.

note: type: cindex
en: multiple-output packages
fr: paquets avec plusieurs résultats

note: type: cindex
en: package outputs
fr: sorties de paquets

note: type: cindex
en: outputs
fr: sorties

note: type: Plain text
en: Often, packages defined in Guix have a single @dfn{output}---i.e., the source package leads to exactly one directory in the store.  When running @command{guix install glibc}, one installs the default output of the GNU libc package; the default output is called @code{out}, but its name can be omitted as shown in this command.  In this particular case, the default output of @code{glibc} contains all the C header files, shared libraries, static libraries, Info documentation, and other supporting files.
fr: Souvent, les paquets définis dans Guix ont une seule @dfn{sortie} — c.-à-d.@: que le paquet source conduit à exactement un répertoire dans le dépôt.  Lorsque vous lancez @command{guix install glibc}, vous installez la sortie par défaut du paquet GNU libc ; la sortie par défaut est appelée @code{out} mais son nom peut être omis comme le montre cette commande.  Dans ce cas particulier, la sortie par défaut de @code{glibc} contient tous les fichiers d'en-tête C, les bibliothèques partagées, les bibliothèques statiques, la documentation Info et les autres fichiers de support.

note: type: Plain text
en: Sometimes it is more appropriate to separate the various types of files produced from a single source package into separate outputs.  For instance, the GLib C library (used by GTK+ and related packages)  installs more than 20 MiB of reference documentation as HTML pages.  To save space for users who do not need it, the documentation goes to a separate output, called @code{doc}.  To install the main GLib output, which contains everything but the documentation, one would run:
fr: Parfois il est plus approprié de séparer les divers types de fichiers produits par un même paquet source en plusieurs sorties.  Par exemple, la bibliothèque C GLib (utilisée par GTK+ et des paquets associés) installe plus de 20 Mo de documentation de référence dans des pages HTML.  Pour préserver l'espace disque des utilisateurs qui n'en ont pas besoin, la documentation va dans une sortie séparée nommée @code{doc}.  Pour installer la sortie principale de GLib, qui contient tout sauf la documentation, on devrait lancer :

note: type: Plain text
en: The command to install its documentation is:
fr: La commande pour installer la documentation est :

note: type: Plain text
en: Some packages install programs with different ``dependency footprints''.  For instance, the WordNet package installs both command-line tools and graphical user interfaces (GUIs).  The former depend solely on the C library, whereas the latter depend on Tcl/Tk and the underlying X libraries.  In this case, we leave the command-line tools in the default output, whereas the GUIs are in a separate output.  This allows users who do not need the GUIs to save space.  The @command{guix size} command can help find out about such situations (@pxref{Invoking guix size}).  @command{guix graph} can also be helpful (@pxref{Invoking guix graph}).
fr: Certains paquets installent des programmes avec des « empreintes dépendances » différentes.  Par exemple le paquet WordNet installe à la fois les outils en ligne de commande et les interfaces graphiques (GUI).  La première ne dépend que de la bibliothèque C, alors que cette dernière dépend de Tcl/Tk et des bibliothèques X sous-jacentes.  Dans ce cas, nous laissons les outils en ligne de commande dans la sortie par défaut et l'interface graphique dans une sortie séparée.  Cela permet aux utilisateurs qui n'ont pas besoin d'interface graphique de gagner de la place.  La commande @command{guix size} peut aider à trouver ces situations (@pxref{Invoking guix size}). @command{guix graph} peut aussi être utile (@pxref{Invoking guix graph}).

note: type: Plain text
en: There are several such multiple-output packages in the GNU distribution.  Other conventional output names include @code{lib} for libraries and possibly header files, @code{bin} for stand-alone programs, and @code{debug} for debugging information (@pxref{Installing Debugging Files}).  The outputs of a packages are listed in the third column of the output of @command{guix package --list-available} (@pxref{Invoking guix package}).
fr: Il y a plusieurs paquets à sorties multiples dans la distribution GNU.  D'autres noms de sorties conventionnels sont @code{lib} pour les bibliothèques et éventuellement les fichiers d'en-tête, @code{bin} pour les programmes indépendants et @code{debug} pour les informations de débogage (@pxref{Installing Debugging Files}).   Les sorties d'un paquet sont listés dans la troisième colonne de la sortie de @command{guix package --list-available} (@pxref{Invoking guix package}).

note: type: section
en: Invoking @command{guix gc}
fr: Invoquer @command{guix gc}

note: type: cindex
en: garbage collector
fr: ramasse-miettes

note: type: cindex
en: disk space
fr: espace disque

note: type: Plain text
en: Packages that are installed, but not used, may be @dfn{garbage-collected}.  The @command{guix gc} command allows users to explicitly run the garbage collector to reclaim space from the @file{/gnu/store} directory.  It is the @emph{only} way to remove files from @file{/gnu/store}---removing files or directories manually may break it beyond repair!
fr: Les paquets qui sont installés mais pas utilisés peuvent être @dfn{glanés}.  La commande @command{guix gc} permet aux utilisateurs de lancer explicitement le ramasse-miettes pour récupérer de l'espace dans le répertoire @file{/gnu/store}.  C'est la @emph{seule} manière de supprimer des fichiers de @file{/gnu/store} — supprimer des fichiers ou des répertoires à la main peut le casser de manière impossible à réparer !

note: type: Plain text
en: The garbage collector has a set of known @dfn{roots}: any file under @file{/gnu/store} reachable from a root is considered @dfn{live} and cannot be deleted; any other file is considered @dfn{dead} and may be deleted.  The set of garbage collector roots (``GC roots'' for short)  includes default user profiles; by default, the symlinks under @file{/var/guix/gcroots} represent these GC roots.  New GC roots can be added with @command{guix build --root}, for example (@pxref{Invoking guix build}).  The @command{guix gc --list-roots} command lists them.
fr: Le ramasse-miettes a un ensemble de @dfn{racines} connues : tout fichier dans @file{/gnu/store} atteignable depuis une racine est considéré comme @dfn{utilisé} et ne peut pas être supprimé ; tous les autres fichiers sont considérés comme @dfn{inutilisés} et peuvent être supprimés.  L'ensemble des racines du ramasse-miettes (ou « racines du GC » pour faire court) inclue les profils par défaut des utilisateurs ; par défaut les liens symboliques sous @file{/var/guix/gcroots} représentent ces racines du GC.  De nouvelles racines du GC peuvent être ajoutées avec la @command{guix build -- root} par exemple (@pxref{Invoking guix build}).  La commande @command{guix gc --list-roots} permet de les lister.

note: type: Plain text
en: Prior to running @code{guix gc --collect-garbage} to make space, it is often useful to remove old generations from user profiles; that way, old package builds referenced by those generations can be reclaimed.  This is achieved by running @code{guix package --delete-generations} (@pxref{Invoking guix package}).
fr: Avant de lancer @code{guix gc --collect-garbage} pour faire de la place, c'est souvent utile de supprimer les anciennes génération des profils utilisateurs ; de cette façon les anciennes constructions de paquets référencées par ces générations peuvent être glanées.  Cela se fait en lançant @code{guix package --delete-generations} (@pxref{Invoking guix package}).

note: type: Plain text
en: Our recommendation is to run a garbage collection periodically, or when you are short on disk space.  For instance, to guarantee that at least 5@tie{}GB are available on your disk, simply run:
fr: Nous recommandons de lancer le ramasse-miettes régulièrement ou lorsque vous avez besoin d'espace disque.  Par exemple pour garantir qu'au moins 5@tie{}Go d'espace reste libre sur votre disque, lancez simplement :

note: type: Plain text
en: It is perfectly safe to run as a non-interactive periodic job (@pxref{Scheduled Job Execution}, for how to set up such a job).  Running @command{guix gc} with no arguments will collect as much garbage as it can, but that is often inconvenient: you may find yourself having to rebuild or re-download software that is ``dead'' from the GC viewpoint but that is necessary to build other pieces of software---e.g., the compiler tool chain.
fr: Il est parfaitement possible de le lancer comme une tâche périodique non-interactive (@pxref{Scheduled Job Execution} pour apprendre comment paramétrer une telle tâche).  Lancer @command{guix gc} sans argument ramassera autant de miettes que possible mais ça n'est pas le plus pratique : vous pourriez vous retrouver à reconstruire ou re-télécharger des logiciels « inutilisés » du point de vu du GC mais qui sont nécessaires pour construire d'autres logiciels — p.@: ex.@: la chaîne de compilation.

note: type: Plain text
en: The @command{guix gc} command has three modes of operation: it can be used to garbage-collect any dead files (the default), to delete specific files (the @option{--delete} option), to print garbage-collector information, or for more advanced queries.  The garbage collection options are as follows:
fr: La commande @command{guix gc} a trois modes d'opération : elle peut être utilisée pour glaner des fichiers inutilisés (par défaut), pour supprimer des fichiers spécifiques (l'option @option{--delete}), pour afficher des informations sur le ramasse-miettes ou pour des requêtes plus avancées.  Les options du ramasse-miettes sont :

note: type: table
en: Collect garbage---i.e., unreachable @file{/gnu/store} files and sub-directories.  This is the default operation when no option is specified.
fr: Ramasse les miettes — c.-à-d.@: les fichiers inaccessibles de @file{/gnu/store} et ses sous-répertoires.  C'est l'opération par défaut lorsqu'aucune option n'est spécifiée.

note: type: table
en: When @var{min} is given, stop once @var{min} bytes have been collected.  @var{min} may be a number of bytes, or it may include a unit as a suffix, such as @code{MiB} for mebibytes and @code{GB} for gigabytes (@pxref{Block size, size specifications,, coreutils, GNU Coreutils}).
fr: Lorsque @var{min} est donné, s'arrêter une fois que @var{min} octets ont été collectés.  @var{min} peut être un nombre d'octets ou inclure un suffixe d'unité, comme @code{MiB} pour mébioctet et @code{GB} pour gigaoctet (@pxref{Block size, size specifications,, coreutils, GNU Coreutils}).

note: type: table
en: When @var{min} is omitted, collect all the garbage.
fr: Lorsque @var{min} est omis, tout glaner.

note: type: item
en: --free-space=@var{free}
fr: --free-space=@var{libre}

note: type: itemx
en: -F @var{free}
fr: -F @var{libre}

note: type: table
en: Collect garbage until @var{free} space is available under @file{/gnu/store}, if possible; @var{free} denotes storage space, such as @code{500MiB}, as described above.
fr: Glaner jusqu'à ce que @var{libre} espace soit disponible dans @file{/gnu/store} si possible ; @var{libre} est une quantité de stockage comme @code{500MiB} comme décrit ci-dessus.

note: type: table
en: When @var{free} or more is already available in @file{/gnu/store}, do nothing and exit immediately.
fr: Lorsque @var{libre} ou plus est disponible dans @file{/gnu/store} ne rien faire et s'arrêter immédiatement.

note: type: item
en: --delete-generations[=@var{duration}]
fr: --delete-generations[=@var{durée}]

note: type: itemx
en: -d [@var{duration}]
fr: -d [@var{durée}]

note: type: table
en: Before starting the garbage collection process, delete all the generations older than @var{duration}, for all the user profiles and home environment generations; when run as root, this applies to all the profiles @emph{of all the users}.
fr: Avant de commencer le glanage, supprimer toutes les générations plus vielles que @var{durée}, pour tous les profils utilisateurs et générations de l'environnement personnel ; lorsque cela est lancé en root, cela s'applique à tous les profils @emph{de tous les utilisateurs}.

note: type: table
en: For example, this command deletes all the generations of all your profiles that are older than 2 months (except generations that are current), and then proceeds to free space until at least 10 GiB are available:
fr: Par exemple, cette commande supprime toutes les générations de tous vos profils plus vieilles que 2 mois (sauf s'il s'agit de la génération actuelle) puis libère de l'espace jusqu'à atteindre au moins 10 Go d'espace libre :

note: type: table
en: Attempt to delete all the store files and directories specified as arguments.  This fails if some of the files are not in the store, or if they are still live.
fr: Essayer de supprimer tous les fichiers et les répertoires du dépôt spécifiés en argument.  Cela échoue si certains des fichiers ne sont pas dans le dépôt ou s'ils sont toujours utilisés.

note: type: table
en: List store items corresponding to cached build failures.
fr: Lister les éléments du dépôt qui correspondent à des échecs de construction.

note: type: table
en: This prints nothing unless the daemon was started with @option{--cache-failures} (@pxref{Invoking guix-daemon, @option{--cache-failures}}).
fr: Cela n'affiche rien à moins que le démon n'ait été démarré avec @option{--cache-failures} (@pxref{Invoking guix-daemon, @option{--cache-failures}}).

note: type: table
en: List the GC roots owned by the user; when run as root, list @emph{all} the GC roots.
fr: Lister les racines du GC appartenant à l'utilisateur ; lorsque la commande est lancée en root, lister @emph{toutes} les racines du GC.

note: type: table
en: List store items in use by currently running processes.  These store items are effectively considered GC roots: they cannot be deleted.
fr: Liste des éléments de stockage utilisés par les processus en cours d'exécution.  Ces éléments de stockage sont effectivement considérés comme des racines GC : ils ne peuvent pas être supprimés.

note: type: table
en: Remove the specified store items from the failed-build cache.
fr: Supprimer les éléments du dépôt spécifiés du cache des constructions échouées.

note: type: table
en: Again, this option only makes sense when the daemon is started with @option{--cache-failures}.  Otherwise, it does nothing.
fr: De nouveau, cette option ne fait de sens que lorsque le démon est démarré avec @option{--cache-failures}.  Autrement elle ne fait rien.

note: type: table
en: Show the list of dead files and directories still present in the store---i.e., files and directories no longer reachable from any root.
fr: Montrer la liste des fichiers et des répertoires inutilisés encore présents dans le dépôt — c.-à-d.@: les fichiers et les répertoires qui ne sont plus atteignables par aucune racine.

note: type: table
en: Show the list of live store files and directories.
fr: Montrer la liste des fichiers et des répertoires du dépôt utilisés.

note: type: Plain text
en: In addition, the references among existing store files can be queried:
fr: En plus, les références entre les fichiers existants du dépôt peuvent être demandés :

note: type: cindex
en: package dependencies
fr: dépendances des paquets

note: type: table
en: List the references (respectively, the referrers) of store files given as arguments.
fr: Lister les références (respectivement les référents) des fichiers du dépôt en argument.

note: type: table
en: List the requisites of the store files passed as arguments.  Requisites include the store files themselves, their references, and the references of these, recursively.  In other words, the returned list is the @dfn{transitive closure} of the store files.
fr: Lister les prérequis des fichiers du dépôt passés en argument.  Les prérequis sont le fichier du dépôt lui-même, leur références et les références de ces références, récursivement.  En d'autre termes, la liste retournée est la @dfn{closure transitive} des fichiers du dépôt.

note: type: table
en: @xref{Invoking guix size}, for a tool to profile the size of the closure of an element.  @xref{Invoking guix graph}, for a tool to visualize the graph of references.
fr: @xref{Invoking guix size} pour un outil pour surveiller la taille de la closure d'un élément.  @xref{Invoking guix graph} pour un outil pour visualiser le graphe des références.

note: type: item
en: derivation
fr: dérivation

note: type: table
en: Return the derivation(s) leading to the given store items (@pxref{Derivations}).
fr: Renvoie les dérivations menant aux éléments du dépôt donnés (@pxref{Derivations}).

note: type: table
en: For example, this command:
fr: Par exemple cette commande :

note: type: example
en: guix gc --derivers $(guix package -I ^emacs$ | cut -f4)
fr: guix gc --derivers $(uix package -I ^emacs$ | cut -f4)

note: type: table
en: returns the @file{.drv} file(s) leading to the @code{emacs} package installed in your profile.
fr: renvoie les fichiers @file{.drv} menant au paquet @code{emacs} installé dans votre profil.

note: type: table
en: Note that there may be zero matching @file{.drv} files, for instance because these files have been garbage-collected.  There can also be more than one matching @file{.drv} due to fixed-output derivations.
fr: Remarquez qu'il peut n'y avoir aucun fichier @file{.drv} par exemple quand ces fichiers ont été glanés.  Il peut aussi y avoir plus d'un fichier @file{.drv} correspondant à cause de dérivations à sortie fixées.

note: type: Plain text
en: Lastly, the following options allow you to check the integrity of the store and to control disk usage.
fr: Enfin, les options suivantes vous permettent de vérifier l'intégrité du dépôt et de contrôler l'utilisation du disque.

note: type: cindex
en: integrity, of the store
fr: intégrité, du dépôt

note: type: cindex
en: integrity checking
fr: vérification d'intégrité

note: type: table
en: Verify the integrity of the store.
fr: Vérifier l'intégrité du dépôt.

note: type: table
en: By default, make sure that all the store items marked as valid in the database of the daemon actually exist in @file{/gnu/store}.
fr: Par défaut, s'assurer que tous les éléments du dépôt marqués comme valides dans la base de données du démon existent bien dans @file{/gnu/store}.

note: type: table
en: When provided, @var{options} must be a comma-separated list containing one or more of @code{contents} and @code{repair}.
fr: Lorsqu'elle est fournie, l'@var{option} doit être une liste séparée par des virgule de l'un ou plus parmi @code{contents} et @code{repair}.

note: type: table
en: When passing @option{--verify=contents}, the daemon computes the content hash of each store item and compares it against its hash in the database.  Hash mismatches are reported as data corruptions.  Because it traverses @emph{all the files in the store}, this command can take a long time, especially on systems with a slow disk drive.
fr: Lorsque vous passez @option{--verify=contents}, le démon calcul le hash du contenu de chaque élément du dépôt et le compare au hash de sa base de données.  Les différences de hash sont rapportées comme des corruptions de données.  Comme elle traverse @emph{tous les fichiers du dépôt}, cette commande peut prendre très longtemps pour terminer, surtout sur un système avec un disque lent.

note: type: cindex
en: repairing the store
fr: réparer le dépôt

note: type: cindex
en: corruption, recovering from
fr: corruption, récupérer de

note: type: table
en: Using @option{--verify=repair} or @option{--verify=contents,repair} causes the daemon to try to repair corrupt store items by fetching substitutes for them (@pxref{Substitutes}).  Because repairing is not atomic, and thus potentially dangerous, it is available only to the system administrator.  A lightweight alternative, when you know exactly which items in the store are corrupt, is @command{guix build --repair} (@pxref{Invoking guix build}).
fr: Utiliser @option{--verify=repair} ou @option{--verify=contents,repair} fait que le démon essaie de réparer les objets du dépôt corrompus en récupérant leurs substituts (@pxref{Substituts}).  Comme la réparation n'est pas atomique et donc potentiellement dangereuse, elle n'est disponible que pour l'administrateur système.  Une alternative plus légère lorsque vous connaissez exactement quelle entrée est corrompue consiste à lancer @command{guix build --repair} (@pxref{Invoking guix build}).

note: type: table
en: Optimize the store by hard-linking identical files---this is @dfn{deduplication}.
fr: Optimiser le dépôt en liant en dur les fichiers identiques — c'est la @dfn{déduplication}.

note: type: table
en: The daemon performs deduplication after each successful build or archive import, unless it was started with @option{--disable-deduplication} (@pxref{Invoking guix-daemon, @option{--disable-deduplication}}).  Thus, this option is primarily useful when the daemon was running with @option{--disable-deduplication}.
fr: Le démon effectue une déduplication après chaque import d'archive ou construction réussie, à moins qu'il n'ait été lancé avec @option{--disable-deduplication} (@pxref{Invoking guix-daemon, @option{--disable-deduplication}}).  Ainsi, cette option est surtout utile lorsque le démon tourne avec @option{--disable-deduplication}.

note: type: cindex
en: vacuum the store database
fr: Nettoyer la base de données du dépôt

note: type: table
en: Guix uses an sqlite database to keep track of the items in (@pxref{The Store}).  Over time it is possible that the database may grow to a large size and become fragmented.  As a result, one may wish to clear the freed space and join the partially used pages in the database left behind from removed packages or after running the garbage collector.  Running @command{sudo guix gc --vacuum-database} will lock the database and @code{VACUUM} the store, defragmenting the database and purging freed pages, unlocking the database when it finishes.
fr: Guix utilise une base de données sqlite pour garder la trace des éléments du dépôt (@pxref{The Store}). Avec le temps il est possible que la base de données grossisse et soit fragmentée. En conséquence, vous pourriez vouloir effacer l'espace libéré et recoller les pages partiellement utilisées dans la base de données laissées par la suppression des paquets ou après le lancement du ramasse-miettes. Lancer @command{sudo guix gc --vacuum-database} verrouillera la base de données et lancera un @code{VACUUM} du dépôt, pour défragmenter la base de données et libérer les pages vides, et déverrouillera la base une fois l'opération terminée.

note: type: section
en: Invoking @command{guix pull}
fr: Invoquer @command{guix pull}

note: type: cindex
en: upgrading Guix
fr: mettre à niveau Guix

note: type: cindex
en: updating Guix
fr: mettre à jour Guix

note: type: cindex
en: security, @command{guix pull}
fr: sécurité, @command{guix pull}

note: type: cindex
en: authenticity, of code obtained with @command{guix pull}
fr: authenticité de code obtenue avec @command{guix pull}

note: type: Plain text
en: Packages are installed or upgraded to the latest version available in the distribution currently available on your local machine.  To update that distribution, along with the Guix tools, you must run @command{guix pull}: the command downloads the latest Guix source code and package descriptions, and deploys it.  Source code is downloaded from a @uref{https://git-scm.com/book/en/, Git} repository, by default the official GNU@tie{}Guix repository, though this can be customized.  @command{guix pull} ensures that the code it downloads is @emph{authentic} by verifying that commits are signed by Guix developers.
fr: 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 @command{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 @uref{https://git-scm.com/book/en/, Git}, par défaut le dépôt officiel de GNU@tie{}Guix, bien que cela puisse être personnalisé. @command{guix pull} garantit que le code téléchargé est @emph{authentique} en vérifiant que les commits sont signés par les développeur·euses de Guix.

note: type: Plain text
en: Specifically, @command{guix pull} downloads code from the @dfn{channels} (@pxref{Channels}) specified by one of the followings, in this order:
fr: Spécifiquement, @command{guix pull} télécharge le code depuis les @dfn{canaux} (voir @pxref{Channels}) spécifiés par un des points suivants, dans cet ordre :

note: type: enumerate
en: the @option{--channels} option;
fr: l'option @option{--channels} ;

note: type: enumerate
en: the user's @file{~/.config/guix/channels.scm} file;
fr: le fichier utilisateur·rice @file{~/.config/guix/channels.scm} ;

note: type: enumerate
en: the system-wide @file{/etc/guix/channels.scm} file;
fr: le fichier de l'ensemble du système @file{/etc/guix/channels.scm} ;

note: type: enumerate
en: the built-in default channels specified in the @code{%default-channels} variable.
fr: les canaux intégrés par défaut spécifiés dans la variable @code{%default-channels}.

note: type: Plain text
en: On completion, @command{guix package} will use packages and package versions from this just-retrieved copy of Guix.  Not only that, but all the Guix commands and Scheme modules will also be taken from that latest version.  New @command{guix} sub-commands added by the update also become available.
fr: À la fin, @command{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 @command{guix} ajoutés par la mise à jour sont aussi maintenant disponibles.

note: type: Plain text
en: Any user can update their Guix copy using @command{guix pull}, and the effect is limited to the user who ran @command{guix pull}.  For instance, when user @code{root} runs @command{guix pull}, this has no effect on the version of Guix that user @code{alice} sees, and vice versa.
fr: Chaque utilisateur peut mettre à jour sa copie de Guix avec @command{guix pull} et l'effet est limité à l'utilisateur qui a lancé @command{guix pull}.  Par exemple, lorsque l'utilisateur @code{root} lance @command{guix pull}, cela n'a pas d'effet sur la version de Guix que voit @code{alice} et vice-versa.

note: type: Plain text
en: The result of running @command{guix pull} is a @dfn{profile} available under @file{~/.config/guix/current} containing the latest Guix.  Thus, make sure to add it to the beginning of your search path so that you use the latest version, and similarly for the Info manual (@pxref{Documentation}):
fr: Le résultat après avoir lancé @command{guix pull} est un @dfn{profil} disponible sous @file{~/.config/guix/current} contenant la dernière version de Guix.  Ainsi, assurez-vous de l'ajouter au début de votre chemin de recherche pour que vous utilisiez la dernière version.  Le même conseil s'applique au manuel Info (@pxref{Documentation}) :

note: type: Plain text
en: The @option{--list-generations} or @option{-l} option lists past generations produced by @command{guix pull}, along with details about their provenance:
fr: L'option @option{--list-generations} ou @option{-l} liste les anciennes générations produites par @command{guix pull}, avec des détails sur leur origine :

note: type: example
en: $ guix pull -l
    Generation 1	Jun 10 2018 00:18:18
      guix 65956ad
        repository URL: https://git.savannah.gnu.org/git/guix.git
        branch: origin/master
        commit: 65956ad3526ba09e1f7a40722c96c6ef7c0936fe
fr: $ 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

note: type: example
en: Generation 2	Jun 11 2018 11:02:49
      guix e0cc7f6
        repository URL: https://git.savannah.gnu.org/git/guix.git
        branch: origin/master
        commit: e0cc7f669bec22c37481dd03a7941c7d11a64f1d
fr: 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

note: type: example
en: Generation 3	Jun 13 2018 23:31:07	(current)
      guix 844cc1c
        repository URL: https://git.savannah.gnu.org/git/guix.git
        branch: origin/master
        commit: 844cc1c8f394f03b404c5bb3aee086922373490c
fr: 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

note: type: Plain text
en: @xref{Invoking guix describe, @command{guix describe}}, for other ways to describe the current status of Guix.
fr: @xref{Invoking guix describe, @command{guix describe}}, pour d'autres manières de décrire le statut actuel de Guix.

note: type: Plain text
en: This @code{~/.config/guix/current} profile works exactly like the profiles created by @command{guix package} (@pxref{Invoking guix package}).  That is, you can list generations, roll back to the previous generation---i.e., the previous Guix---and so on:
fr: Ce profil @code{~/.config/guix/current} fonctionne comme les profils créés par @command{guix package} (@pxref{Invoking 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.@: :

note: type: example
en: $ guix pull --roll-back
    switched from generation 3 to 2
    $ guix pull --delete-generations=1
    deleting /var/guix/profiles/per-user/charlie/current-guix-1-link
fr: $ 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

note: type: Plain text
en: You can also use @command{guix package} (@pxref{Invoking guix package})  to manage the profile by naming it explicitly:
fr: Vous pouvez aussi utiliser @command{guix package} (@pxref{Invoquer guix package}) pour contrôler le profil en le nommant explicitement :

note: type: example
en: $ guix package -p ~/.config/guix/current --roll-back
    switched from generation 3 to 2
    $ guix package -p ~/.config/guix/current --delete-generations=1
    deleting /var/guix/profiles/per-user/charlie/current-guix-1-link
fr: $ 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

note: type: Plain text
en: The @command{guix pull} command is usually invoked with no arguments, but it supports the following options:
fr: La commande @command{guix pull} est typiquement invoquée sans arguments mais elle prend en charge les options suivantes :

note: type: itemx
en: --branch=@var{branch}
fr: --branch=@var{branche}

note: type: table
en: Download code for the @code{guix} channel from the specified @var{url}, at the given @var{commit} (a valid Git commit ID represented as a hexadecimal string or the name of a tag), or @var{branch}.
fr: Télécharger le code pour le canal @code{guix} depuis l'@var{url} spécifié, au @var{commit} donné (un commit Git valide représenté par une chaîne hexadécimale ou le nom d'une étiquette) ou à la branche @var{branch}.

note: type: cindex
en: @file{channels.scm}, configuration file
fr: @file{channels.scm}, fichier de configuration

note: type: cindex
en: configuration file for channels
fr: fichier de configuration pour les canaux

note: type: table
en: These options are provided for convenience, but you can also specify your configuration in the @file{~/.config/guix/channels.scm} file or using the @option{--channels} option (see below).
fr: Ces options sont fournies pour votre confort, mais vous pouvez aussi spécifier votre configuration dans le fichier @file{~/.config/guix/channels.scm} ou en utilisant l'option @option{--channels} (voir plus bas).

note: type: table
en: Read the list of channels from @var{file} instead of @file{~/.config/guix/channels.scm} or @file{/etc/guix/channels.scm}.  @var{file} must contain Scheme code that evaluates to a list of channel objects.  @xref{Channels}, for more information.
fr: Lit la liste des canaux dans @var{file} plutôt que dans @file{~/.config/guix/channels.scm} ou @file{/etc/guix/channels.scm}.  @var{file} doit contenir un code Scheme qui s'évalue en une liste d'objets de canaux.  @xref{Channels} pour plus d'informations.

note: type: cindex
en: channel news
fr: nouveautés des canaux

note: type: table
en: Display news written by channel authors for their users for changes made since the previous generation (@pxref{Channels, Writing Channel News}).  When @option{--details} is passed, additionally display new and upgraded packages.
fr: Affiche les nouvelles écrites par les auteurs des canaux pour leurs utilisateurs et utilisatrices depuis la génération précédente (@pxref{Channels, Writing Channel News}). Lorsque vous passez @option{--details}, affiche aussi les nouveaux paquets et les paquets mis à jour.

note: type: table
en: You can view that information for previous generations with @command{guix pull -l}.
fr: Vous pouvez consulter ces informations pour les générations précédentes avec @command{guix pull -l}.

note: type: table
en: List all the generations of @file{~/.config/guix/current} or, if @var{pattern} is provided, the subset of generations that match @var{pattern}.  The syntax of @var{pattern} is the same as with @code{guix package --list-generations} (@pxref{Invoking guix package}).
fr: Liste toutes les générations de @file{~/.config/guix/current} ou, si @var{motif} est fournit, le sous-ensemble des générations qui correspondent à @var{motif}.  La syntaxe de @var{motif} est la même qu'avec @code{guix package --list-generations} (@pxref{Invoking guix package}).

note: type: table
en: By default, this prints information about the channels used in each revision as well as the corresponding news entries.  If you pass @option{--details}, it will also print the list of packages added and upgraded in each generation compared to the previous one.
fr: 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 @option{--details}, cela affichera la liste des paquets ajoutés et mis à jour à chaque génération par rapport à la précédente.

note: type: table
en: Instruct @option{--list-generations} or @option{--news} to display more information about the differences between subsequent generations---see above.
fr: Demande à @option{--list-generations} ou @option{--news} d'afficher plus d'informations sur la différence entre les générations successives, voir plus haut.

note: type: table
en: Roll back to the previous @dfn{generation} of @file{~/.config/guix/current}---i.e., undo the last transaction.
fr: Revenir à la @dfn{génération} précédente de @file{~/.config/guix/current} c.-à-d.@: défaire la dernière transaction.

note: type: table
en: If the current generation matches, it is @emph{not} deleted.
fr: Si la génération actuelle correspond, elle n'est @emph{pas} supprimée.

note: type: table
en: @xref{Invoking guix describe}, for a way to display information about the current generation only.
fr: @xref{Invoking guix describe}, pour une manière d'afficher des informations sur la génération actuelle uniquement.

note: type: table
en: Use @var{profile} instead of @file{~/.config/guix/current}.
fr: Utiliser le @var{profil} à la place de @file{~/.config/guix/current}.

note: type: table
en: Show which channel commit(s) would be used and what would be built or substituted but do not actually do it.
fr: Montrer quels commits des canaux seraient utilisés et ce qui serait construit ou substitué mais ne pas le faire vraiment.

note: type: table
en: Allow pulling older or unrelated revisions of channels than those currently in use.
fr: Permet d'extraire des révisions de canaux plus anciennes ou sans rapport avec celles qui sont actuellement utilisées.

note: type: cindex
en: downgrade attacks, protection against
fr: protection contre les attaques dites de "downgrade"

note: type: table
en: By default, @command{guix pull} protects against so-called ``downgrade attacks'' whereby the Git repository of a channel would be reset to an earlier or unrelated revision of itself, potentially leading you to install older, known-vulnerable versions of software packages.
fr: Par défaut, @command{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.

note: type: quotation
en: Make sure you understand its security implications before using @option{--allow-downgrades}.
fr: Assurez-vous de comprendre les implications de sa sécurité avant d'utiliser @option{--allow-downgrades}.

note: type: table
en: Allow pulling channel code without authenticating it.
fr: Permet de "tirer" le code du canal sans l'authentifier.

note: type: cindex
en: authentication, of channel code
fr: authentification d'un extrait de Guix

note: type: table
en: By default, @command{guix pull} authenticates code downloaded from channels by verifying that its commits are signed by authorized developers, and raises an error if this is not the case.  This option instructs it to not perform any such verification.
fr: Par défaut, @command{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.

note: type: quotation
en: Make sure you understand its security implications before using @option{--disable-authentication}.
fr: Assurez-vous de comprendre les implications de sa sécurité avant d'utiliser @option{--disable-authentication}.

note: type: itemx
en: -s @var{system}
fr: -s @var{système}

note: type: table
en: Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of the system type of the build host.
fr: Tenter de construire pour le @var{système} — p.@: ex.@: @code{i686-linux} — plutôt que pour le type de système de l'hôte de construction.

note: type: table
en: Use the bootstrap Guile to build the latest Guix.  This option is only useful to Guix developers.
fr: 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.

note: type: Plain text
en: The @dfn{channel} mechanism allows you to instruct @command{guix pull} which repository and branch to pull from, as well as @emph{additional} repositories containing package modules that should be deployed.  @xref{Channels}, for more information.
fr: Le mécanisme de @dfn{canaux} vous permet de dire à @command{guix pull} quels répertoires et branches récupérer, ainsi que les dépôts @emph{supplémentaires} contenant des modules de paquets qui devraient être déployés.  @xref{Channels} pour plus d'information.

note: type: Plain text
en: In addition, @command{guix pull} supports all the common build options (@pxref{Common Build Options}).
fr: En plus, @command{guix pull} supporte toutes les options de construction communes (@pxref{Common Build Options}).

note: type: section
en: Invoking @command{guix time-machine}
fr: Invoquer @command{guix time-machine}

note: type: cindex
en: pinning, channels
fr: épinglage, canaux

note: type: cindex
en: replicating Guix
fr: répliquer Guix

note: type: cindex
en: reproducibility, of Guix
fr: reproductibilité, de Guix

note: type: Plain text
en: The @command{guix time-machine} command provides access to other revisions of Guix, for example to install older versions of packages, or to reproduce a computation in an identical environment.  The revision of Guix to be used is defined by a commit or by a channel description file created by @command{guix describe} (@pxref{Invoking guix describe}).
fr: La commande @command{guix time-machine} donne accès à d'autres révisions de Guix, par exemple pour installer d'anciennes versions de paquets, ou pour reproduire un calcul dans un environnement identique. La révision de Guix à utiliser est définie par un commit ou par un fichier de description de canal créé par @command{guix describe} (@pxref{Invoquer guix describe}).

note: type: Plain text
en: Let's assume that you want to travel to those days of November 2020 when version 1.2.0 of Guix was released and, once you're there, run the @command{guile} of that time:
fr: Supposons que vous vouliez voyager en ces jours de novembre 2020 où la version 1.2.0 de Guix a été publiée et que, une fois que vous y êtes, vous lanciez le @command{guile} de cette époque :

note: type: Plain text
en: The command above fetches Guix@tie{}1.2.0 and runs its @command{guix environment} command to spawn an environment in a container running @command{guile} (@command{guix environment} has since been subsumed by @command{guix shell}; @pxref{Invoking guix shell}).  It's like driving a DeLorean@footnote{If you don't know what a DeLorean is, consider traveling back to the 1980's.}! The first @command{guix time-machine} invocation can be expensive: it may have to download or even build a large number of packages; the result is cached though and subsequent commands targeting the same commit are almost instantaneous.
fr: La commande ci-dessus récupère Guix@tie{}1.2.0 et lance sa commande @command{guix environment} pour démarrer un environnement dans un conteneur qui lance @command{guile} (@command{guix environment} a depuis été remplacé par @command{guix shell} ; @pxref{Invoking guix shell}). C'est comme conduire une DeLorean@footnote{Si vous ne savez pas ce qu'est une DeLorean, envisagez un voyage vers les années 1980.} ! La première invocation de @command{guix time-machine} peut être coûteuse. Elle doit télécharger voire construire un grand nombre de paquets. Heureusement le résultat est mis en cache et les commandes suivantes qui ciblent le même commit sont presque instantanées.

note: type: quotation
en: The history of Guix is immutable and @command{guix time-machine} provides the exact same software as they are in a specific Guix revision.  Naturally, no security fixes are provided for old versions of Guix or its channels.  A careless use of @command{guix time-machine} opens the door to security vulnerabilities.  @xref{Invoking guix pull, @option{--allow-downgrades}}.
fr: L'histoire de Guix est immuable et @command{guix time-machine} fournit exactement les mêmes logiciels que ceux de la révision de Guix spécifique. Naturellement, aucun correctif de sécurité n'est fournit pour les anciennes versions de Guix ou ses canaux. Utiliser @command{guix time-machine} sans précaution ouvre la porte à des vulnérabilités de sécurité. @xref{Invoking guix pull, @option{--allow-downgrades}}.

note: type: Plain text
en: The general syntax is:
fr: La syntaxe générale est :

note: type: example
en: guix time-machine @var{options}@dots{} -- @var{command} @var {arg}@dots{}
fr: guix time-machine @var{options}@dots{} -- @var{commande} @var {arg}@dots{}

note: type: Plain text
en: where @var{command} and @var{arg}@dots{} are passed unmodified to the @command{guix} command of the specified revision.  The @var{options} that define this revision are the same as for @command{guix pull} (@pxref{Invoking guix pull}):
fr: où @var{command} et @var{arg}@dots{} sont passés sans modification à la commande @command{guix} de la révision spécifiée.  Les @var{options} qui définissent cette révision sont les mêmes que pour la commande @command{guix pull} (@pxref{Invoquer guix pull}) :

note: type: table
en: Use the @code{guix} channel from the specified @var{url}, at the given @var{commit} (a valid Git commit ID represented as a hexadecimal string or the name of a tag), or @var{branch}.
fr: Utiliser le canal @code{guix} depuis l'@var{url} spécifiée, au @var{commit} donné (un commit Git valide représenté par une chaîne hexadécimale ou le nom d'une étiquette) ou à la branche @var{branch}.

note: type: table
en: Read the list of channels from @var{file}.  @var{file} must contain Scheme code that evaluates to a list of channel objects.  @xref{Channels} for more information.
fr: Lit la liste des canaux dans @var{file}.  @var{file} doit contenir un code Scheme qui s'évalue en une liste d'objets de canaux.  @xref{Channels} pour plus d'informations.

note: type: Plain text
en: As for @command{guix pull}, the absence of any options means that the latest commit on the master branch will be used.  The command
fr: Quant à @command{guix pull}, l'absence d'options signifie que le dernier commit sur la branche master sera utilisé.  La commande

note: type: Plain text
en: will thus build the package @code{hello} as defined in the master branch, which is in general a newer revision of Guix than you have installed.  Time travel works in both directions!
fr: va donc construire le paquet @code{hello} tel que défini dans la branche master, qui est en général une révision de Guix plus récente que celle que vous avez installée.  Le voyage dans le temps fonctionne dans les deux sens !

note: type: Plain text
en: Note that @command{guix time-machine} can trigger builds of channels and their dependencies, and these are controlled by the standard build options (@pxref{Common Build Options}).
fr: Remarquez que @command{guix time-machine} peut lancer des constructions de canaux et de leurs dépendances, et qu'elles peuvent être contrôlées avec les options de construction communes (@pxref{Common Build Options}).

note: type: quotation
en: The functionality described here is a ``technology preview'' as of version @value{VERSION}.  As such, the interface is subject to change.
fr: La fonctionnalité décrite ici est un « démonstrateur technique » à la version @value{VERSION}.  Ainsi, l'interface est sujette à changements.

note: type: cindex
en: inferiors
fr: inférieurs

note: type: cindex
en: composition of Guix revisions
fr: composition de révisions de Guix

note: type: Plain text
en: Sometimes you might need to mix packages from the revision of Guix you're currently running with packages available in a different revision of Guix.  Guix @dfn{inferiors} allow you to achieve that by composing different Guix revisions in arbitrary ways.
fr: Parfois vous pourriez avoir à mélanger des paquets de votre révision de Guix avec des paquets disponibles dans une révision différente de Guix.  Les @dfn{inférieurs} de Guix vous permettent d'accomplir cette tâche en composant différentes versions de Guix de manière arbitraire.

note: type: cindex
en: inferior packages
fr: paquets inférieurs

note: type: Plain text
en: Technically, an ``inferior'' is essentially a separate Guix process connected to your main Guix process through a REPL (@pxref{Invoking guix repl}).  The @code{(guix inferior)} module allows you to create inferiors and to communicate with them.  It also provides a high-level interface to browse and manipulate the packages that an inferior provides---@dfn{inferior packages}.
fr: Techniquement, un « inférieur » est surtout un processus Guix séparé connecté à votre processus Guix principal à travers un REPL (@pxref{Invoking guix repl}).  Le module @code{(guix inferior)} vous permet de créer des inférieurs et de communiquer avec eux.  Il fournit aussi une interface de haut-niveau pour naviguer dans les paquets d'un inférieur — @dfn{des paquets inférieurs} — et les manipuler.

note: type: Plain text
en: When combined with channels (@pxref{Channels}), inferiors provide a simple way to interact with a separate revision of Guix.  For example, let's assume you want to install in your profile the current @code{guile} package, along with the @code{guile-json} as it existed in an older revision of Guix---perhaps because the newer @code{guile-json} has an incompatible API and you want to run your code against the old API@.  To do that, you could write a manifest for use by @code{guix package --manifest} (@pxref{Writing Manifests}); in that manifest, you would create an inferior for that old Guix revision you care about, and you would look up the @code{guile-json} package in the inferior:
fr: Lorsqu'on les combine avec des canaux (@pxref{Channels}), les inférieurs fournissent une manière simple d'interagir avec un révision de Guix séparée.  Par exemple, disons que vous souhaitiez installer dans votre profil le paquet guile actuel, avec le @code{guile-json} d'une ancienne révision de Guix — peut-être parce que la nouvelle version de @code{guile-json} a une API incompatible et que vous voulez lancer du code avec l'ancienne API.  Pour cela, vous pourriez écrire un manifeste à utiliser avec @code{guix package --manifest} (@pxref{Writing Manifests}) ; dans ce manifeste, vous créeriez un inférieur pour l'ancienne révision de Guix qui vous intéresse et vous chercheriez le paquet @code{guile-json} dans l'inférieur :

note: type: lisp
en: (use-modules (guix inferior) (guix channels)
                 (srfi srfi-1))   ;for 'first'
fr: (use-modules (guix inferior) (guix channels)
                 (srfi srfi-1))   ;pour « first »

note: type: lisp
en: (define channels
      ;; This is the old revision from which we want to
      ;; extract guile-json.
      (list (channel
             (name 'guix)
             (url "https://git.savannah.gnu.org/git/guix.git")
             (commit
              "65956ad3526ba09e1f7a40722c96c6ef7c0936fe"))))
fr: (define channels
      ;; L'ancienne révision depuis laquelle on veut
      ;; extraire guile-json.
      (list (channel
             (name 'guix)
             (url "https://git.savannah.gnu.org/git/guix.git")
             (commit
              "65956ad3526ba09e1f7a40722c96c6ef7c0936fe"))))

note: type: lisp
en: (define inferior
      ;; An inferior representing the above revision.
      (inferior-for-channels channels))
fr: (define inferior
      ;; Un inférieur représentant la révision ci-dessus.
      (inferior-for-channels channels))

note: type: lisp
en: ;; Now create a manifest with the current "guile" package
    ;; and the old "guile-json" package.
    (packages->manifest
     (list (first (lookup-inferior-packages inferior "guile-json"))
           (specification->package "guile")))
fr: ;; Maintenant on crée un manifeste avec le paquet « guile » actuel
    ;; et l'ancien paquet « guile-json ».
    (packages->manifest
     (list (first (lookup-inferior-packages inferior "guile-json"))
           (specification->package "guile")))

note: type: Plain text
en: On its first run, @command{guix package --manifest} might have to build the channel you specified before it can create the inferior; subsequent runs will be much faster because the Guix revision will be cached.
fr: Durant la première exécution, @command{guix package --manifest} pourrait avoir besoin de construire le canal que vous avez spécifié avant de créer l'inférieur ; les exécutions suivantes seront bien plus rapides parce que la révision de Guix sera déjà en cache.

note: type: Plain text
en: The @code{(guix inferior)} module provides the following procedures to open an inferior:
fr: Le module @code{(guix inferior)} fournit les procédures suivantes pour ouvrir un inférieur :

note: type: deffn
en: {Scheme Procedure} inferior-for-channels @var{channels} @
fr: {Procédure Scheme} inferior-for-channels @var{channels} @

note: type: deffn
en: [#:cache-directory] [#:ttl] Return an inferior for @var{channels}, a list of channels.  Use the cache at @var{cache-directory}, where entries can be reclaimed after @var{ttl} seconds.  This procedure opens a new connection to the build daemon.
fr: [#:cache-directory] [#:ttl]
    Renvoie un inférieur pour @var{channels}, une liste de canaux.  Elle utilise le cache dans @var{cache-directory}, où les entrées peuvent être glanées après @var{ttl} secondes.  Cette procédure ouvre une nouvelle connexion au démon de construction.

note: type: deffn
en: As a side effect, this procedure may build or substitute binaries for @var{channels}, which can take time.
fr: Elle a pour effet de bord de construire ou de substituer des binaires pour @var{channels}, ce qui peut prendre du temps.

note: type: deffn
en: {Scheme Procedure} open-inferior @var{directory} @
fr: {Procédure Scheme} open-inferior @var{directory} @

note: type: deffn
en: [#:command "bin/guix"] Open the inferior Guix in @var{directory}, running @code{@var{directory}/@var{command} repl} or equivalent.  Return @code{#f} if the inferior could not be launched.
fr: [#:command "bin/guix"]
    Ouvre le Guix inférieur dans @var{directory} et lance @code{@var{directory}/@var{command} repl} ou équivalent.  Renvoie @code{#f} si l'inférieur n'a pas pu être lancé.

note: type: Plain text
en: The procedures listed below allow you to obtain and manipulate inferior packages.
fr: Les procédures listées plus bas vous permettent d'obtenir et de manipuler des paquets inférieurs.

note: type: deffn
en: {Scheme Procedure} inferior-packages @var{inferior}
fr: {Procédure Scheme} inferior-packages @var{inferior}

note: type: deffn
en: Return the list of packages known to @var{inferior}.
fr: Renvoie la liste des paquets connus de l'inférieur @var{inferior}.

note: type: deffn
en: {Scheme Procedure} lookup-inferior-packages @var{inferior} @var{name} @
fr: {Procédure Scheme} lookup-inferior-packages @var{inferior} @var{name} @

note: type: deffn
en: [@var{version}] Return the sorted list of inferior packages matching @var{name} in @var{inferior}, with highest version numbers first.  If @var{version} is true, return only packages with a version number prefixed by @var{version}.
fr: [@var{version}]
    Renvoie la liste triée des paquets inférieurs qui correspondent à @var{name} dans @var{inferior}, avec le plus haut numéro de version en premier.  Si @var{version} est vrai, renvoie seulement les paquets avec un numéro de version préfixé par @var{version}.

note: type: deffn
en: {Scheme Procedure} inferior-package? @var{obj}
fr: {Procédure Scheme} inferior-package? @var{obj}

note: type: deffn
en: Return true if @var{obj} is an inferior package.
fr: Renvoie vrai si @var{obj} est un paquet inférieur.

note: type: deffn
en: {Scheme Procedure} inferior-package-name @var{package}
fr: {Procédure Scheme} inferior-package-name @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-version @var{package}
fr: {Procédure Scheme} inferior-package-version @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-synopsis @var{package}
fr: {Procédure Scheme} inferior-package-synopsis @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-description @var{package}
fr: {Procédure Scheme} inferior-package-description @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-home-page @var{package}
fr: {Procédure Scheme} inferior-package-home-page @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-location @var{package}
fr: {Procédure Scheme} inferior-package-location @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-inputs @var{package}
fr: {Procédure Scheme} inferior-package-inputs @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-native-inputs @var{package}
fr: {Procédure Scheme} inferior-package-native-inputs @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-propagated-inputs @var{package}
fr: {Procédure Scheme} inferior-package-propagated-inputs @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-transitive-propagated-inputs @var{package}
fr: {Procédure Scheme} inferior-package-transitive-propagated-inputs @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-native-search-paths @var{package}
fr: {Procédure Scheme} inferior-package-native-search-paths @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-transitive-native-search-paths @var{package}
fr: {Procédure Scheme} inferior-package-transitive-native-search-paths @var{package}

note: type: deffnx
en: {Scheme Procedure} inferior-package-search-paths @var{package}
fr: {Procédure Scheme} inferior-package-search-paths @var{package}

note: type: deffn
en: These procedures are the counterpart of package record accessors (@pxref{package Reference}).  Most of them work by querying the inferior @var{package} comes from, so the inferior must still be live when you call these procedures.
fr: Ces procédures sont la contrepartie des accesseurs des enregistrements de paquets (@pxref{package Reference}).  La plupart fonctionne en effectuant des requêtes à l'inférieur dont provient @var{package}, donc l'inférieur doit toujours être disponible lorsque vous appelez ces procédures.

note: type: Plain text
en: Inferior packages can be used transparently like any other package or file-like object in G-expressions (@pxref{G-Expressions}).  They are also transparently handled by the @code{packages->manifest} procedure, which is commonly used in manifests (@pxref{Invoking guix package, the @option{--manifest} option of @command{guix package}}).  Thus you can insert an inferior package pretty much anywhere you would insert a regular package: in manifests, in the @code{packages} field of your @code{operating-system} declaration, and so on.
fr: Les paquets inférieurs peuvent être utilisés de manière transparente comme tout autre paquet ou objet simili-fichier dans des G-expressions (@pxref{G-Expressions}).  Ils sont aussi gérés de manière transparente par la procédure @code{packages->manifest}, qui est typiquement utilisée dans des manifestes (@pxref{Invoking guix package, l'option @option{--manifest} de @command{guix package}}).  Ainsi, vous pouvez insérer un paquet inférieur à peu près n'importe où vous utiliseriez un paquet normal : dans des manifestes, dans le champ @code{packages} de votre déclaration @code{operating-system}, etc.

note: type: section
en: Invoking @command{guix describe}
fr: Invoquer @command{guix describe}

note: type: Plain text
en: Often you may want to answer questions like: ``Which revision of Guix am I using?'' or ``Which channels am I using?'' This is useful information in many situations: if you want to @emph{replicate} an environment on a different machine or user account, if you want to report a bug or to determine what change in the channels you are using caused it, or if you want to record your system state for reproducibility purposes.  The @command{guix describe} command answers these questions.
fr: Souvent vous voudrez répondre à des questions comme « quelle révision de Guix j'utilise ? » ou « quels canaux est-ce que j'utilise ? ».  C'est une information utile dans de nombreuses situations : si vous voulez @emph{répliquer} un environnement sur une machine différente ou un compte utilisateur, si vous voulez rapporter un bogue ou pour déterminer quel changement dans les canaux que vous utilisez l'a causé ou si vous voulez enregistrer l'état de votre système pour le reproduire.  La commande @command{guix describe} répond à ces questions.

note: type: Plain text
en: When run from a @command{guix pull}ed @command{guix}, @command{guix describe} displays the channel(s) that it was built from, including their repository URL and commit IDs (@pxref{Channels}):
fr: Lorsqu'elle est lancée depuis un @command{guix} mis à jour avec @command{guix pull}, @command{guix describe} affiche les canaux qui ont été construits, avec l'URL de leur dépôt et l'ID de leur commit (@pxref{Channels}) :

note: type: example
en: $ guix describe
    Generation 10	Sep 03 2018 17:32:44	(current)
      guix e0fa68c
        repository URL: https://git.savannah.gnu.org/git/guix.git
        branch: master
        commit: e0fa68c7718fffd33d81af415279d6ddb518f727
fr: $ guix describe
    Generation 10	03 sep. 2018 17:32:44	(actuelle)
      guix e0fa68c
        URL du dépôt : https://git.savannah.gnu.org/git/guix.git
        branche : master
        commit : e0fa68c7718fffd33d81af415279d6ddb518f727

note: type: Plain text
en: If you're familiar with the Git version control system, this is similar in spirit to @command{git describe}; the output is also similar to that of @command{guix pull --list-generations}, but limited to the current generation (@pxref{Invoking guix pull, the @option{--list-generations} option}).  Because the Git commit ID shown above unambiguously refers to a snapshot of Guix, this information is all it takes to describe the revision of Guix you're using, and also to replicate it.
fr: Si vous connaissez bien le système de contrôle de version Git, cela ressemble en essence à @command{git describe} ; la sortie est aussi similaire à celle de @command{guix pull --list-generations}, mais limitée à la génération actuelle (@pxref{Invoking guix pull, l'option @option{--list-generations}}).  Comme l'ID de commit de Git ci-dessus se réfère sans aucune ambiguïté à un instantané de Guix, cette information est tout ce dont vous avez besoin pour décrire la révision de Guix que vous utilisez et pour la répliquer.

note: type: Plain text
en: To make it easier to replicate Guix, @command{guix describe} can also be asked to return a list of channels instead of the human-readable description above:
fr: Pour rendre plus facile la réplication de Guix, @command{guix describe} peut aussi renvoyer une liste de canaux plutôt que la description lisible par un humain au-dessus :

note: type: example
en: $ guix describe -f channels
    (list (channel
            (name 'guix)
            (url "https://git.savannah.gnu.org/git/guix.git")
            (commit
              "e0fa68c7718fffd33d81af415279d6ddb518f727")
            (introduction
              (make-channel-introduction
                "9edb3f66fd807b096b48283debdcddccfea34bad"
                (openpgp-fingerprint
                  "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA")))))
fr: $ guix describe -f channels
    (list (channel
            (name 'guix)
            (url "https://git.savannah.gnu.org/git/guix.git")
            (commit
              "e0fa68c7718fffd33d81af415279d6ddb518f727")))
            (introduction
              (make-channel-introduction
                "9edb3f66fd807b096b48283debdcddccfea34bad"
                (openpgp-fingerprint
                  "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA")))))

note: type: Plain text
en: You can save this to a file and feed it to @command{guix pull -C} on some other machine or at a later point in time, which will instantiate @emph{this exact Guix revision} (@pxref{Invoking guix pull, the @option{-C} option}).  From there on, since you're able to deploy the same revision of Guix, you can just as well @emph{replicate a complete software environment}.  We humbly think that this is @emph{awesome}, and we hope you'll like it too!
fr: Vous pouvez sauvegarder ceci dans un fichier et le donner à @command{guix pull -C} sur une autre machine ou plus tard, ce qui instantiera @emph{exactement la même révision de Guix} (@pxref{Invoking guix pull, l'option @option{-C}}).  À partir de là, comme vous pouvez déployer la même révision de Guix, vous pouvez aussi bien @emph{répliquer un environnement logiciel complet}.  Nous pensons humblement que c'est @emph{génial}, et nous espérons que vous aimerez ça aussi !

note: type: Plain text
en: The details of the options supported by @command{guix describe} are as follows:
fr: Voici les détails des options supportées par @command{guix describe} :

note: type: table
en: Produce output in the specified @var{format}, one of:
fr: Produire la sortie dans le @var{format} donné, parmi :

note: type: table
en: produce human-readable output;
fr: produire une sortie lisible par un humain ;

note: type: cindex
en: channels
fr: canaux

note: type: table
en: produce a list of channel specifications that can be passed to @command{guix pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking guix pull});
fr: produire une liste de spécifications de canaux qui peut être passée à @command{guix pull -C} ou installée dans @file{~/.config/guix/channels.scm} (@pxref{Invoking guix pull}) ;

note: type: table
en: like @code{channels}, but omit the @code{introduction} field; use it to produce a channel specification suitable for Guix version 1.1.0 or earlier---the @code{introduction} field has to do with channel authentication (@pxref{Channels, Channel Authentication}) and is not supported by these older versions;
fr: comme @code{canaux}, mais oubliez le champ @code{introduction} ; utilisez-le pour produire une spécification de canal adaptée à la version 1.1.0 ou antérieure de Guix--le champ @code{introduction} concerne l'authentification des canaux (@pxref{Channels, Channel Authentication}) et n'est pas pris en charge par ces versions antérieures ;

note: type: table
en: produce a list of channel specifications in JSON format;
fr: produire une liste de spécifications de canaux dans le format JSON ;

note: type: table
en: produce a list of channel specifications in Recutils format.
fr: produire une liste de spécifications de canaux dans le format Recutils.

note: type: table
en: Display available formats for @option{--format} option.
fr: Affiche les formats disponibles pour l'option @option{--format}.

note: type: table
en: Display information about @var{profile}.
fr: Afficher les informations sur le @var{profil}.

note: type: section
en: Invoking @command{guix archive}
fr: Invoquer @command{guix archive}

note: type: cindex
en: exporting files from the store
fr: exporter des fichiers du dépôt

note: type: cindex
en: importing files to the store
fr: importer des fichiers dans le dépôt

note: type: Plain text
en: The @command{guix archive} command allows users to @dfn{export} files from the store into a single archive, and to later @dfn{import} them on a machine that runs Guix.  In particular, it allows store files to be transferred from one machine to the store on another machine.
fr: La commande @command{guix archive} permet aux utilisateurs d'@dfn{exporter} des fichiers du dépôt dans une simple archive puis ensuite de les @dfn{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.

note: type: quotation
en: If you're looking for a way to produce archives in a format suitable for tools other than Guix, @pxref{Invoking guix pack}.
fr: Si vous chercher une manière de produire des archives dans un format adapté pour des outils autres que Guix, @pxref{Invoking guix pack}.

note: type: cindex
en: exporting store items
fr: exporter des éléments du dépôt

note: type: Plain text
en: To export store files as an archive to standard output, run:
fr: Pour exporter des fichiers du dépôt comme une archive sur la sortie standard, lancez :

note: type: example
en: guix archive --export @var{options} @var{specifications}...
fr: guix archive --export @var{options} @var{spécifications}...

note: type: Plain text
en: @var{specifications} may be either store file names or package specifications, as for @command{guix package} (@pxref{Invoking guix package}).  For instance, the following command creates an archive containing the @code{gui} output of the @code{git} package and the main output of @code{emacs}:
fr: @var{spécifications} peut être soit des noms de fichiers soit des spécifications de paquets, comme pour @command{guix package} (@pxref{Invoking guix package}).  Par exemple, la commande suivante crée une archive contenant la sortie @code{gui} du paquet @code{git} et la sortie principale de @code{emacs} :

note: type: Plain text
en: If the specified packages are not built yet, @command{guix archive} automatically builds them.  The build process may be controlled with the common build options (@pxref{Common Build Options}).
fr: Si les paquets spécifiés ne sont pas déjà construits, @command{guix archive} les construit automatiquement.  Le processus de construction peut être contrôlé avec les options de construction communes (@pxref{Common Build Options}).

note: type: Plain text
en: To transfer the @code{emacs} package to a machine connected over SSH, one would run:
fr: Pour transférer le paquet @code{emacs} vers une machine connectée en SSH, on pourrait lancer :

note: type: example
en: guix archive --export -r emacs | ssh the-machine guix archive --import
fr: guix archive --export -r emacs | ssh la-machine guix archive --import

note: type: Plain text
en: Similarly, a complete user profile may be transferred from one machine to another like this:
fr: De même, on peut transférer un profil utilisateur complet d'une machine à une autre comme cela :

note: type: Plain text
en: However, note that, in both examples, all of @code{emacs} and the profile as well as all of their dependencies are transferred (due to @option{-r}), regardless of what is already available in the store on the target machine.  The @option{--missing} option can help figure out which items are missing from the target store.  The @command{guix copy} command simplifies and optimizes this whole process, so this is probably what you should use in this case (@pxref{Invoking guix copy}).
fr: Toutefois, il faut noter que, dans les deux exemples, tous les @code{emacs} et le profil, ainsi que toutes leurs dépendances sont transférés (en raison de l'@option{-r}), indépendamment de ce qui est déjà disponible dans le dépôt sur la machine cible.  L'option @option{--missing} peut aider à déterminer quels sont les éléments manquants dans le dépôt cible.  La commande @command{guix copy} simplifie et optimise tout ce processus, c'est donc probablement ce que vous devriez utiliser dans ce cas (@pxref{Invoquer guix copy}).

note: type: cindex
en: nar, archive format
fr: nar, format d'archive

note: type: cindex
en: normalized archive (nar)
fr: archive normalisée (nar)

note: type: cindex
en: nar bundle, archive format
fr: nar bundle, format d'archive

note: type: Plain text
en: Each store item is written in the @dfn{normalized archive} or @dfn{nar} format (described below), and the output of @command{guix archive --export} (and input of @command{guix archive --import}) is a @dfn{nar bundle}.
fr: Chaque élément du dépôt est écrit dans le format @dfn{archive normalisée} ou @dfn{nar} (décrit ci-dessous), et la sortie de @command{guix archive --export} (et entrée de @command{guix archive --import}) est un @dfn{nar bundle}.

note: type: Plain text
en: The nar format is comparable in spirit to `tar', but with differences that make it more appropriate for our purposes.  First, rather than recording all Unix metadata for each file, the nar format only mentions the file type (regular, directory, or symbolic link); Unix permissions and owner/group are dismissed.  Second, the order in which directory entries are stored always follows the order of file names according to the C locale collation order.  This makes archive production fully deterministic.
fr: 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.

note: type: Plain text
en: That nar bundle format is essentially the concatenation of zero or more nars along with metadata for each store item it contains: its file name, references, corresponding derivation, and a digital signature.
fr: 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.

note: type: Plain text
en: When exporting, the daemon digitally signs the contents of the archive, and that digital signature is appended.  When importing, the daemon verifies the signature and rejects the import in case of an invalid signature or if the signing key is not authorized.
fr: 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.

note: type: Plain text
en: The main options are:
fr: Les principales options sont :

note: type: table
en: Export the specified store files or packages (see below).  Write the resulting archive to the standard output.
fr: 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.

note: type: table
en: Dependencies are @emph{not} included in the output, unless @option{--recursive} is passed.
fr: Les dépendances ne sont @emph{pas} incluses dans la sortie à moins que @option{--recursive} ne soit passé.

note: type: table
en: When combined with @option{--export}, this instructs @command{guix archive} to include dependencies of the given items in the archive.  Thus, the resulting archive is self-contained: it contains the closure of the exported store items.
fr: En combinaison avec @option{--export}, cette option demande à @command{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.

note: type: table
en: Read an archive from the standard input, and import the files listed therein into the store.  Abort if the archive has an invalid digital signature, or if it is signed by a public key not among the authorized keys (see @option{--authorize} below).
fr: 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 @option{--authorize} plus bas).

note: type: table
en: Read a list of store file names from the standard input, one per line, and write on the standard output the subset of these files missing from the store.
fr: 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.

note: type: item
en: --generate-key[=@var{parameters}]
fr: --generate-key[=@var{paramètres}]

note: type: cindex
en: signing, archives
fr: signature, archives

note: type: table
en: Generate a new key pair for the daemon.  This is a prerequisite before archives can be exported with @option{--export}.  This operation is usually instantaneous but it can take time if the system's entropy pool needs to be refilled.  On Guix System, @code{guix-service-type} takes care of generating this key pair the first boot.
fr: 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 @option{--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, @code{guix-service-type}prend soin de générer cette paire de clés au premier démarrage.

note: type: table
en: The generated key pair is typically stored under @file{/etc/guix}, in @file{signing-key.pub} (public key) and @file{signing-key.sec} (private key, which must be kept secret).  When @var{parameters} is omitted, an ECDSA key using the Ed25519 curve is generated, or, for Libgcrypt versions before 1.6.0, it is a 4096-bit RSA key.  Alternatively, @var{parameters} can specify @code{genkey} parameters suitable for Libgcrypt (@pxref{General public-key related Functions, @code{gcry_pk_genkey},, gcrypt, The Libgcrypt Reference Manual}).
fr: La paire de clés générée est typiquement stockée dans @file{/etc/guix}, dans @file{signing-key.pub} (clé publique) et @file{signing-key.sec} (clé privée, qui doit rester secrète).  Lorsque @var{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, @var{paramètres} peut spécifier les paramètres @code{genkey} adaptés pour libgcrypt (@pxref{General public-key related Functions, @code{gcry_pk_genkey},, gcrypt, The Libgcrypt Reference Manual}).

note: type: cindex
en: authorizing, archives
fr: autorisation, archives

note: type: table
en: Authorize imports signed by the public key passed on standard input.  The public key must be in ``s-expression advanced format''---i.e., the same format as the @file{signing-key.pub} file.
fr: 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 @file{signing-key.pub}.

note: type: table
en: The list of authorized keys is kept in the human-editable file @file{/etc/guix/acl}.  The file contains @url{https://people.csail.mit.edu/rivest/Sexp.txt, ``advanced-format s-expressions''} and is structured as an access-control list in the @url{https://theworld.com/~cme/spki.txt, Simple Public-Key Infrastructure (SPKI)}.
fr: La liste des clés autorisées est gardée dans un fichier modifiable par des humains dans @file{/etc/guix/acl}.  Le fichier contient des @url{https://people.csail.mit.edu/rivest/Sexp.txt, « s-expressions au format avancé »} et est structuré comme une liste de contrôle d'accès dans l'@url{https://theworld.com/~cme/spki.txt, infrastructure à clefs publiques simple (SPKI)}.

note: type: item
en: --extract=@var{directory}
fr: --extract=@var{répertoire}

note: type: itemx
en: -x @var{directory}
fr: -x @var{répertoire}

note: type: table
en: Read a single-item archive as served by substitute servers (@pxref{Substitutes}) and extract it to @var{directory}.  This is a low-level operation needed in only very narrow use cases; see below.
fr: Lit une archive à un seul élément telle que servie par un serveur de substituts (@pxref{Substituts}) et l'extrait dans @var{répertoire}.  C'est une opération de bas niveau requise seulement dans de rares cas d'usage ; voir plus loin.

note: type: table
en: For example, the following command extracts the substitute for Emacs served by @code{@value{SUBSTITUTE-SERVER-1}} to @file{/tmp/emacs}:
fr: Par exemple, la commande suivante extrait le substitut pour Emacs servi par @code{@value{SUBSTITUTE-SERVER-1}} dans @file{/tmp/emacs} :

note: type: table
en: Single-item archives are different from multiple-item archives produced by @command{guix archive --export}; they contain a single store item, and they do @emph{not} embed a signature.  Thus this operation does @emph{no} signature verification and its output should be considered unsafe.
fr: Les archives à un seul élément sont différentes des archives à plusieurs éléments produites par @command{guix archive --export} ; elles contiennent un seul élément du dépôt et elles n'embarquent @emph{pas} de signature.  Ainsi cette opération ne vérifie @emph{pas} de signature et sa sortie devrait être considérée comme non sûre.

note: type: table
en: The primary purpose of this operation is to facilitate inspection of archive contents coming from possibly untrusted substitute servers (@pxref{Invoking guix challenge}).
fr: 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. (@pxref{Invoquer guix challenge}).

note: type: table
en: Read a single-item archive as served by substitute servers (@pxref{Substitutes}) and print the list of files it contains, as in this example:
fr: Lit une archive à un seul élément telle que servie par un serveur de substituts (@pxref{Substitutes}) et affiche la liste des fichiers qu'elle contient, comme dans cet exemple :

note: type: cindex
en: @command{guix pull}, configuration file
fr: @command{guix pull}, fichier de configuration

note: type: cindex
en: configuration of @command{guix pull}
fr: configuration de @command{guix pull}

note: type: Plain text
en: Guix and its package collection are updated by running @command{guix pull} (@pxref{Invoking guix pull}).  By default @command{guix pull} downloads and deploys Guix itself from the official GNU@tie{}Guix repository.  This can be customized by defining @dfn{channels} in the @file{~/.config/guix/channels.scm} file.  A channel specifies a URL and branch of a Git repository to be deployed, and @command{guix pull} can be instructed to pull from one or more channels.  In other words, channels can be used to @emph{customize} and to @emph{extend} Guix, as we will see below.  Guix is able to take into account security concerns and deal with authenticated updates.
fr: Guix et sa collection de paquets sont mis à jour en lançant @command{guix pull} (@pxref{Invoking guix pull}).  Par défaut @command{guix pull} télécharge et déploie Guix lui-même depuis le dépôt officiel de GNU@tie{}Guix.  Cela peut être personnalisé en définissant des @dfn{canaux} dans le fichier @file{~/.config/guix/channels.scm}.  Un canal spécifie l'URL et la branche d'un répertoire Git à déployer et on peut demander à @command{guix pull} de récupérer un ou plusieurs canaux.  En d'autres termes, les canaux peuvent être utilisés pour @emph{personnaliser} et pour @emph{étendre} Guix, comme on le verra plus bas. Guix est en mesure de prendre en compte les préoccupations de sécurité et de traiter les mises à jour authentifiées.

note: type: cindex
en: extending the package collection (channels)
fr: étendre la collection de paquets (canaux)

note: type: cindex
en: variant packages (channels)
fr: des variantes de paquets (canaux)

note: type: Plain text
en: You can specify @emph{additional channels} to pull from.  To use a channel, write @code{~/.config/guix/channels.scm} to instruct @command{guix pull} to pull from it @emph{in addition} to the default Guix channel(s):
fr: Vous pouvez spécifier des @emph{canaux supplémentaires} à utiliser. Pour utiliser un canal, écrivez dans @code{~/.config/guix/channels.scm} pour dire à @command{guix pull} de récupérer votre canal personnel @emph{en plus} des canaux par défaut de Guix :

note: type: lisp
en: ;; Add variant packages to those Guix provides.
    (cons (channel
            (name 'variant-packages)
            (url "https://example.org/variant-packages.git"))
          %default-channels)
fr: ;; Ajouter des variantes de paquets à ceux fournis par Guix.
    (cons (channel
            (name 'my-personal-packages)
            (url "https://example.org/personal-packages.git"))
          %default-channels)

note: type: Plain text
en: Note that the snippet above is (as always!)@: Scheme code; we use @code{cons} to add a channel the list of channels that the variable @code{%default-channels} is bound to (@pxref{Pairs, @code{cons} and lists,, guile, GNU Guile Reference Manual}).  With this file in place, @command{guix pull} builds not only Guix but also the package modules from your own repository.  The result in @file{~/.config/guix/current} is the union of Guix with your own package modules:
fr: Remarquez que le bout de code au-dessus est (comme toujours !)@: du code Scheme ; nous utilisons @code{cons} pour ajouter un canal à la liste des canaux que la variable @code{%default-channels} représente (@pxref{Pairs, @code{cons} and lists,, guile, GNU Guile Reference Manual}).  Avec ce fichier en place, @command{guix pull} construit non seulement Guix mais aussi les modules de paquets de votre propre dépôt.  Le résultat dans @file{~/.config/guix/current} est l'union de Guix et de vos propres modules de paquets :

note: type: example
en: $ guix describe
    Generation 19	Aug 27 2018 16:20:48
      guix d894ab8
        repository URL: https://git.savannah.gnu.org/git/guix.git
        branch: master
        commit: d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300
      variant-packages dd3df5e
        repository URL: https://example.org/variant-packages.git
        branch: master
        commit: dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb
fr: $ guix describe
    Génération 19	Aug 27 2018 16:20:48
      guix d894ab8
        URL du dépôt : https://git.savannah.gnu.org/git/guix.git
        branche : master
        commit : d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300
      variant-packages dd3df5e
        URL du dépôt : https://example.org/personal-packages.git
        branche : master
        commit : dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb

note: type: Plain text
en: The output of @command{guix describe} above shows that we're now running Generation@tie{}19 and that it includes both Guix and packages from the @code{variant-personal-packages} channel (@pxref{Invoking guix describe}).
fr: La sortie de @command{guix describe} ci-dessus montre que nous sommes maintenant à la génération@tie{}19 et qu'il contient à la fois Guix et les paquets du canal @code{variant-personal-packages} (@pxref{Invoking guix describe}).

note: type: Plain text
en: The channel called @code{guix} specifies where Guix itself---its command-line tools as well as its package collection---should be downloaded.  For instance, suppose you want to update from another copy of the Guix repository at @code{example.org}, and specifically the @code{super-hacks} branch, you can write in @code{~/.config/guix/channels.scm} this specification:
fr: Le canal nommé @code{guix} spécifie où Guix lui-même — ses outils en ligne de commande ainsi que sa collection de paquets — seront téléchargés.  Par exemple, supposons que vous voulez effectuer les mises à jour depuis votre propre copie du dépôt Guix sur @code{example.org}, et plus particulièrement depuis la branche @code{super-hacks}.  Vous pouvez écrire cette spécification dans @code{~/.config/guix/channels.scm} :

note: type: lisp
en: ;; Tell 'guix pull' to use another repo.
    (list (channel
            (name 'guix)
            (url "https://example.org/another-guix.git")
            (branch "super-hacks")))
fr: ;; Dit à « guix pull » d'utiliser un autre dépôt.
    (list (channel
            (name 'guix)
            (url "https://example.org/my-guix.git")
            (branch "super-hacks")))

note: type: Plain text
en: From there on, @command{guix pull} will fetch code from the @code{super-hacks} branch of the repository at @code{example.org}.  The authentication concern is addressed below (@pxref{Channel Authentication}).
fr: Maintenant, @command{guix pull} récupérera le code depuis la branche @code{super-hacks} du dépôt sur @code{example.org}. La question de l'authentification est traitée ci-dessous (@pxref{Channel Authentication}).

note: type: Plain text
en: The @command{guix describe} command shows precisely which commits were used to build the instance of Guix we're using (@pxref{Invoking guix describe}).  We can replicate this instance on another machine or at a different point in time by providing a channel specification ``pinned'' to these commits that looks like this:
fr: La commande @command{guix describe} ci-dessus montre précisément quels commits ont été utilisés pour construire l'instance de Guix utilisée (@pxref{Invoking guix describe}). Nous pouvons répliquer cette instance sur une autre machine ou plus tard, en fournissant une spécification de canal « épinglée » à ces commits et qui ressemble à ceci :

note: type: lisp
en: ;; Deploy specific commits of my channels of interest.
    (list (channel
           (name 'guix)
           (url "https://git.savannah.gnu.org/git/guix.git")
           (commit "6298c3ffd9654d3231a6f25390b056483e8f407c"))
          (channel
           (name 'variant-packages)
           (url "https://example.org/variant-packages.git")
           (commit "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb")))
fr: ;; Déployer des commits précis de mes canaux préférés.
    (list (channel
           (name 'guix)
           (url "https://git.savannah.gnu.org/git/guix.git")
           (commit "6298c3ffd9654d3231a6f25390b056483e8f407c"))
          (channel
           (name 'variant-packages)
           (url "https://example.org/variant-packages.git")
           (commit "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb")))

note: type: Plain text
en: To obtain this pinned channel specification, the easiest way is to run @command{guix describe} and to save its output in the @code{channels} format in a file, like so:
fr: Pour obtenir cette spécification de canaux épinglée, le plus simple est de lancer @command{guix describe} et de sauvegarder sa sortie au format @code{channels} dans un fichier, comme ceci :

note: type: Plain text
en: The resulting @file{channels.scm} file can be passed to the @option{-C} option of @command{guix pull} (@pxref{Invoking guix pull}) or @command{guix time-machine} (@pxref{Invoking guix time-machine}), as in this example:
fr: Le fichier @file{channels.scm} qui en résulte peut être passé à l'option @option{-C} de @command{guix pull} (@pxref{Invoking guix pull}) ou @command{guix time-machine} (@pxref{Invoking guix time-machine}), comme dans cet exemple :

note: type: Plain text
en: Given the @file{channels.scm} file, the command above will always fetch the @emph{exact same Guix instance}, then use that instance to run the exact same Python (@pxref{Invoking guix shell}).  On any machine, at any time, it ends up running the exact same binaries, bit for bit.
fr: Étant donné le fichier @file{channels.scm}, la commande ci-dessus récupérera toujours @emph{exactement la même instance de Guix}, puis utilisera cette instance pour lancer exactement le même Python (@pxref{Invoking guix shell}). Sur n'importe quelle machine, à n'importe quel moment, elle lance exactement le même binaire, bit à bit.

note: type: cindex
en: lock files
fr: fichiers de verrouillage

note: type: Plain text
en: Pinned channels address a problem similar to ``lock files'' as implemented by some deployment tools---they let you pin and reproduce a set of packages.  In the case of Guix though, you are effectively pinning the entire package set as defined at the given channel commits; in fact, you are pinning all of Guix, including its core modules and command-line tools.  You're also getting strong guarantees that you are, indeed, obtaining the exact same software.
fr: Les canaux épinglés répondent à un problème similaire à celui des « fichiers de verrouillage » implémentés par certains outils de déploiement --- ils vous permettent d'épingler et de reproduire un ensemble de paquets. Dans le cas de Guix cependant, vous épinglez en fait l'entièreté de l'ensemble de paquets défini par les commits donnés des canaux ; en fait, vous épinglez l'ensemble de Guix, avec des modules cœurs et ses outils en ligne de commande. Vous gagnez aussi la garantie forte que vous obtenez, effectivement, exactement le même environnement logiciel.

note: type: Plain text
en: This gives you super powers, allowing you to track the provenance of binary artifacts with very fine grain, and to reproduce software environments at will---some sort of ``meta reproducibility'' capabilities, if you will.  @xref{Inferiors}, for another way to take advantage of these super powers.
fr: Cela vous donne des super-pouvoirs, ce qui vous permet de suivre la provenance des artefacts binaires avec un grain très fin et de reproduire les environnements logiciels à volonté — une sorte de capacité de « méta-reproductibilité », si vous voulez.  @xref{Inferiors}, pour une autre manière d'utiliser ces super-pouvoirs.

note: type: Plain text
en: The @command{guix pull} and @command{guix time-machine} commands @dfn{authenticate} the code retrieved from channels: they make sure each commit that is fetched is signed by an authorized developer.  The goal is to protect from unauthorized modifications to the channel that would lead users to run malicious code.
fr: Les commandes @command{guix pull} et @command{guix time-machine} @dfn{authenticate} téléchargent et contrôlent le code récupéré sur les canaux : elles s'assurent que chaque commit récupéré est signé par un·e développeur·euse autorisé·e.  L'objectif est de protéger contre les modifications non autorisées du canal qui conduiraient les utilisateur·rice·s à exécuter du code malveillant.

note: type: Plain text
en: As a user, you must provide a @dfn{channel introduction} in your channels file so that Guix knows how to authenticate its first commit.  A channel specification, including its introduction, looks something along these lines:
fr: En tant qu'utilisateur, vous devez fournir une @dfn{introduction de canal} dans votre fichier de canaux afin que Guix sache comment authentifier son premier commit.  Une spécification de canal, y compris son introduction, ressemble à quelque chose de ce genre :

note: type: Plain text
en: The specification above shows the name and URL of the channel.  The call to @code{make-channel-introduction} above specifies that authentication of this channel starts at commit @code{6f0d8cc@dots{}}, which is signed by the OpenPGP key with fingerprint @code{CABB A931@dots{}}.
fr: La spécification ci-dessus indique le nom et l'URL du canal.  L'appel à @code{make-channel-introduction} ci-dessus spécifie que l'authentification de ce canal commence au commit @code{6f0d8cc@dots{}}, qui est signé par la clé OpenPGP avec l'empreinte digitale @code{CABB A931@dots{}}.

note: type: Plain text
en: For the main channel, called @code{guix}, you automatically get that information from your Guix installation.  For other channels, include the channel introduction provided by the channel authors in your @file{channels.scm} file.  Make sure you retrieve the channel introduction from a trusted source since that is the root of your trust.
fr: Pour le canal principal, appelé @code{guix}, vous obtenez automatiquement cette information à partir de votre installation de Guix.  Pour les autres canaux, incluez l'introduction du canal fournie par les auteurs du canal dans votre fichier @file{channels.scm}.  Assurez-vous de récupérer l'introduction du canal à partir d'une source fiable, car c'est la base de votre confiance.

note: type: Plain text
en: If you're curious about the authentication mechanics, read on!
fr: Si vous êtes curieux·euse à propos des mécanismes d'authentification, lisez !

note: type: Plain text
en: When running @command{guix pull}, Guix will first compile the definitions of every available package.  This is an expensive operation for which substitutes (@pxref{Substitutes}) may be available.  The following snippet in @file{channels.scm} will ensure that @command{guix pull} uses the latest commit with available substitutes for the package definitions: this is done by querying the continuous integration server at @url{https://ci.guix.gnu.org}.
fr: Lorsque vous lancez @command{guix pull}, Guix compilera d'abord les définitions de tous les paquets disponibles. C'est une opération coûteuse pour laquelle des substituts (@pxref{Substitutes}) peuvent être disponibles. L'extrait de code suivant dans @file{channels.scm} s'assure que @command{guix pull} utilise le dernier commit pour lequel des substituts sont disponibles pour les définitions des paquets : pour cela, on demande au serveur d’intégration continue @url{https://ci.guix.gnu.org}.

note: type: Plain text
en: Note that this does not mean that all the packages that you will install after running @command{guix pull} will have available substitutes.  It only ensures that @command{guix pull} will not try to compile package definitions.  This is particularly useful when using machines with limited resources.
fr: Remarquez que cela ne signifie pas que tous les paquets que vous installerez après avoir lancé @command{guix pull} auront des substituts. Cela s'assure uniquement que @command{guix pull} n'essaiera pas de compiler les définitions des paquets. C'est particulièrement pratique si vous utilisez une machine avec des ressources limitées.

note: type: cindex
en: personal packages (channels)
fr: paquets personnels (canaux)

note: type: cindex
en: channels, for personal packages
fr: canaux, pour des paquets personnels

note: type: Plain text
en: Let's say you have a bunch of custom package variants or personal packages that you think would make little sense to contribute to the Guix project, but would like to have these packages transparently available to you at the command line.  You would first write modules containing those package definitions (@pxref{Package Modules}), maintain them in a Git repository, and then you and anyone else can use it as an additional channel to get packages from.  Neat, no?
fr: Disons que vous avez un ensemble de paquets personnels ou de variantes personnalisées dont vous pensez qu'il ne vaudrait pas le coup de contribuer au projet Guix, mais que vous voudriez pouvoir utiliser de manière transparente sur la ligne de commande : vous écririez d'abord des modules contenant ces définitions de paquets (@pxref{Package Modules}), en les maintenant dans un dépôt Git, puis vous ou n'importe qui d'autre pourrait l'utiliser comme un canal supplémentaire où trouver ces paquets.  Sympa, non ?

note: type: quotation
en: Before you, dear user, shout---``woow this is @emph{soooo coool}!''---and publish your personal channel to the world, we would like to share a few words of caution:
fr: Avant que vous, cher utilisateur, ne vous exclamiez « Oh mais c'est @emph{super génial} ! » et que vous ne publiez vos canaux personnels publiquement, nous voudrions vous donner quelques avertissements :

note: type: itemize
en: Before publishing a channel, please consider contributing your package definitions to Guix proper (@pxref{Contributing}).  Guix as a project is open to free software of all sorts, and packages in Guix proper are readily available to all Guix users and benefit from the project's quality assurance process.
fr: Avant de publier un canal, envisagez de contribuer vos définitions de paquets dans Guix (@pxref{Contributing}).  Guix en tant que projet est ouvert à tous les logiciels libres de toutes sortes, et les paquets dans Guix sont déjà disponibles à tous les utilisateurs de Guix et bénéficient des processus d'assurance qualité du projet.

note: type: itemize
en: When you maintain package definitions outside Guix, we, Guix developers, consider that @emph{the compatibility burden is on you}.  Remember that package modules and package definitions are just Scheme code that uses various programming interfaces (APIs).  We want to remain free to change these APIs to keep improving Guix, possibly in ways that break your channel.  We never change APIs gratuitously, but we will @emph{not} commit to freezing APIs either.
fr: Lorsque vous maintenez des définitions de paquets en dehors de Guix, nous, les développeur·euses de Guix, considérons que @emph{la charge de la compatibilité vous incombe}.  Rappelez-vous que les modules de paquets et les définitions de paquets ne sont que du code Scheme qui utilise diverses interfaces de programmation (API).  Nous souhaitons rester libres de changer ces API pour continuer à améliorer Guix, éventuellement d'une manière qui casse votre canal.  Nous ne changeons jamais l'API gratuitement, mais nous ne nous engageons @emph{pas} à geler les API non plus.

note: type: itemize
en: Corollary: if you're using an external channel and that channel breaks, please @emph{report the issue to the channel authors}, not to the Guix project.
fr: Corollaire : si vous utilisez un canal externe et que le canal est cassé, merci de @emph{rapporter le problème à l'auteur du canal}, pas au projet Guix.

note: type: quotation
en: You've been warned! Having said this, we believe external channels are a practical way to exert your freedom to augment Guix' package collection and to share your improvements, which are basic tenets of @uref{https://www.gnu.org/philosophy/free-sw.html, free software}.  Please email us at @email{guix-devel@@gnu.org} if you'd like to discuss this.
fr: Vous avez été prévenus !  Maintenant, nous pensons que des canaux externes sont une manière pratique d'exercer votre liberté pour augmenter la collection de paquets de Guix et de partager vos améliorations, qui sont les principes de bases du @uref{https://www.gnu.org/philosophy/free-sw.html, logiciel libre}.  Contactez-nous par courriel sur @email{guix-devel@@gnu.org} si vous souhaitez discuter à ce propos.

note: type: Plain text
en: To create a channel, create a Git repository containing your own package modules and make it available.  The repository can contain anything, but a useful channel will contain Guile modules that export packages.  Once you start using a channel, Guix will behave as if the root directory of that channel's Git repository has been added to the Guile load path (@pxref{Load Paths,,, guile, GNU Guile Reference Manual}).  For example, if your channel contains a file at @file{my-packages/my-tools.scm} that defines a Guile module, then the module will be available under the name @code{(my-packages my-tools)}, and you will be able to use it like any other module (@pxref{Modules,,, guile, GNU Guile Reference Manual}).
fr: Pour créer un canal, créez un dépôt Git contenant vos propres modules de paquets et rendez-le disponible.  Le dépôt peut contenir tout ce que vous voulez, mais un canal utile contiendra des modules Guile qui exportent des paquets.  Une fois que vous avez démarré un canal, Guix se comportera comme si le répertoire de la racine du dépôt Git de ce canal était ajouté au chemin de chargement de Guile (@pxref{Load Paths,,, guile, GNU Guile Reference Manual}).  Par exemple, si votre canal contient un fichier @file{mes-paquets/mes-outils.scm} qui définit un module Guile, le module sera disponible sous le nom de @code{(mes-paquets mes-outils)} et vous pourrez l'utiliser comme les autres modules (@pxref{Modules,,, guile, GNU Guile Reference Manual}).

note: type: Plain text
en: As a channel author, consider bundling authentication material with your channel so that users can authenticate it.  @xref{Channel Authentication}, and @ref{Specifying Channel Authorizations}, for info on how to do it.
fr: En tant qu'auteur.e d'un canal, envisagez de regrouper le nécessaire d'authentification avec votre canal afin que les utilisatrice·eur·s puissent l'authentifier.  @xref{Channel Authentication}, et @ref{Specifying Channel Authorizations}, pour savoir comment les utiliser.

note: type: cindex
en: subdirectory, channels
fr: sous-répertoire, canaux

note: type: Plain text
en: As a channel author, you may want to keep your channel modules in a sub-directory.  If your modules are in the sub-directory @file{guix}, you must add a meta-data file @file{.guix-channel} that contains:
fr: En tant qu'auteur.e d'un canal, vous voudriez garder vos modules de canal dans un sous-répertoire. Si vos modules sont dans le sous-répertoire @file{guix}, vous devez ajouter un fichier de métadonnées @file{.guix-channel} qui contient :

note: type: cindex
en: dependencies, channels
fr: dépendances, canaux

note: type: cindex
en: meta-data, channels
fr: métadonnées, canaux

note: type: Plain text
en: Channel authors may decide to augment a package collection provided by other channels.  They can declare their channel to be dependent on other channels in a meta-data file @file{.guix-channel}, which is to be placed in the root of the channel repository.
fr: Les auteurs de canaux peuvent décider d'augmenter une collection de paquets fournie par d'autres canaux.  Ils peuvent déclarer leur canal comme dépendant d'autres canaux dans le fichier de métadonnées @file{.guix-channel} qui doit être placé à la racine de dépôt du canal.

note: type: Plain text
en: The meta-data file should contain a simple S-expression like this:
fr: Le fichier de métadonnées devrait contenir une S-expression simple comme cela :

note: type: lisp
en:    ;; The 'introduction' bit below is optional: you would
       ;; provide it for dependencies that can be authenticated.
       (introduction
        (channel-introduction
          (version 0)
          (commit "a8883b58dc82e167c96506cf05095f37c2c2c6cd")
          (signer "CABB A931 C0FF EEC6 900D  0CFB 090B 1199 3D9A EBB5"))))
      (channel
       (name some-other-collection)
       (url "https://example.org/second-collection.git")
       (branch "testing"))))
fr:    ;; La partie « introduction » ci-dessous est facultative : vous la
       ;; fournissez pour les dépendances qui peuvent être authentifiées.
       (introduction
        (channel-introduction
          (version 0)
          (commit "a8883b58dc82e167c96506cf05095f37c2c2c6cd")
          (signer "CABB A931 C0FF EEC6 900D  0CFB 090B 1199 3D9A EBB5"))))
      (channel
       (name some-other-collection)
       (url "https://example.org/second-collection.git")
       (branch "testing"))))

note: type: Plain text
en: In the above example this channel is declared to depend on two other channels, which will both be fetched automatically.  The modules provided by the channel will be compiled in an environment where the modules of all these declared channels are available.
fr: Dans l'exemple ci-dessus, ce canal est déclaré comme dépendant de deux autres canaux, qui seront récupérés automatiquement.  Les modules fournis par le canal seront compilés dans un environnement où les modules de tous les canaux déclarés sont disponibles.

note: type: Plain text
en: For the sake of reliability and maintainability, you should avoid dependencies on channels that you don't control, and you should aim to keep the number of dependencies to a minimum.
fr: Pour des raisons de fiabilité et de maintenabilité, vous devriez éviter d'avoir des dépendances sur des canaux que vous ne maîtrisez pas et vous devriez ajouter le minimum de dépendances possible.

note: type: cindex
en: channel authorizations
fr: les autorisations des canaux

note: type: Plain text
en: As we saw above, Guix ensures the source code it pulls from channels comes from authorized developers.  As a channel author, you need to specify the list of authorized developers in the @file{.guix-authorizations} file in the channel's Git repository.  The authentication rule is simple: each commit must be signed by a key listed in the @file{.guix-authorizations} file of its parent commit(s)@footnote{Git commits form a @dfn{directed acyclic graph} (DAG).  Each commit can have zero or more parents; ``regular'' commits have one parent and merge commits have two parent commits.  Read @uref{https://eagain.net/articles/git-for-computer-scientists/, @i{Git for Computer Scientists}} for a great overview.} The @file{.guix-authorizations} file looks like this:
fr: Comme nous l'avons vu plus haut, Guix garantit le code source qu'il récupère depuis les canaux venant de développeur·euses autorisé·es. En tant qu'auteur·e, vous devez spécifiez la liste des développeur·euses autorisé·es dans le fichier @file{.guix-authorizations} dans le dépôt Git des canaux. Le rôle de l'authentification est simple : chaque commit doit être signé par une clé listée dans le fichier @file{.guix-authorizations} de son (ses) commit(s) parent(s)@footnote{Les commits de Git forment un @dfn{graphe acyclique orienté} (DAG en anglais).  Chaque commit peut avoir zéro ou plusieurs parents ; les commits « usuels » ont un seul parent et les commits de fusion ont deux parents. Lisez @uref{https://eagain.net/articles/git-for-computer-scientists/, @i{Git for Computer Scientists}} pour une bonne vue d'ensemble.} Le fichier @file{.guix-authorizations} ressemble à ceci :

note: type: lisp
en: ;; Example '.guix-authorizations' file.
fr: ;; Fichier d'exemple '.guix-authorizations'.

note: type: lisp
en: (authorizations
     (version 0)               ;current file format version
fr: (authorizations
     (version 0)               ;version actuelle du format de fichier

note: type: Plain text
en: Each fingerprint is followed by optional key/value pairs, as in the example above.  Currently these key/value pairs are ignored.
fr: Chaque empreinte digitale est suivie de paires de clés/valeurs facultatives, comme dans l'exemple ci-dessus.  Actuellement, ces paires clé/valeur sont ignorées.

note: type: Plain text
en: This authentication rule creates a chicken-and-egg issue: how do we authenticate the first commit? Related to that: how do we deal with channels whose repository history contains unsigned commits and lack @file{.guix-authorizations}? And how do we fork existing channels?
fr: Ce rôle d'authentification crée un problème de poule et d’œuf : comment authentifions-nous le premier commit ? Par rapport à cela : comment traiter les canaux dont l'historique du dépôt contient des commits non signés et qui n'ont pas de@file{.guix-authorisations} ? Et comment bifurquer des canaux existants ?

note: type: cindex
en: channel introduction
fr: introduction des canaux

note: type: Plain text
en: Channel introductions answer these questions by describing the first commit of a channel that should be authenticated.  The first time a channel is fetched with @command{guix pull} or @command{guix time-machine}, the command looks up the introductory commit and verifies that it is signed by the specified OpenPGP key.  From then on, it authenticates commits according to the rule above.  Authentication fails if the target commit is neither a descendant nor an ancestor of the introductory commit.
fr: L'introduction des canaux répondent à ces questions en décrivant le premier commit d'un canal qui doit être authentifiée.  La première fois qu'un canal est récupéré avec @command{guix pull} ou @command{guix time-machine}, la commande recherche le commit d'introduction et vérifie qu'il est signé par la clé OpenPGP spécifiée.  Elle authentifie ensuite les commits selon la règle ci-dessus. L'authentification échoue si le commit cible n'est ni un descendant ni un ancêtre du commit d'introduction.

note: type: Plain text
en: Additionally, your channel must provide all the OpenPGP keys that were ever mentioned in @file{.guix-authorizations}, stored as @file{.key} files, which can be either binary or ``ASCII-armored''.  By default, those @file{.key} files are searched for in the branch named @code{keyring} but you can specify a different branch name in @code{.guix-channel} like so:
fr: De plus, votre canal doit fournir toutes les clés OpenPGP qui ont été mentionnées dans les fichiers @file{.guix-authorizations}, stockés dans les fichiers @file{.key}, qui peuvent être soit binaires soit "blindés ASCII".  Par défaut, ces fichiers @file{.key} sont recherchés dans la branche nommée @code{keyring}, mais vous pouvez spécifier un nom de branche différent dans @code{.guix-channel} de cette façon :

note: type: Plain text
en: To summarize, as the author of a channel, there are three things you have to do to allow users to authenticate your code:
fr: En résumé, en tant qu'auteur.e d'une chaîne, il y a trois choses que vous devez faire pour permettre aux utilisateur·rice·s d'authentifier votre code :

note: type: enumerate
en: Export the OpenPGP keys of past and present committers with @command{gpg --export} and store them in @file{.key} files, by default in a branch named @code{keyring} (we recommend making it an @dfn{orphan branch}).
fr: Exporter les clés OpenPGP des committers passés et présents avec @command{gpg -export} et les stocker dans des fichiers @file{.key}, par défaut dans une branche nommée @code{keyring} (nous recommandons d'en faire une @dfn{branche orpheline}).

note: type: enumerate
en: Introduce an initial @file{.guix-authorizations} in the channel's repository.  Do that in a signed commit (@pxref{Commit Access}, for information on how to sign Git commits.)
fr: Introduisez un fichier @file{.guix-authorisations} initial dans le dépôt du canal.  Faites cela dans un commit signé (@pxref{Commit Access}, pour savoir comment signer les commit Git).

note: type: enumerate
en: Advertise the channel introduction, for instance on your channel's web page.  The channel introduction, as we saw above, is the commit/key pair---i.e., the commit that introduced @file{.guix-authorizations}, and the fingerprint of the OpenPGP used to sign it.
fr: Annoncez l'introduction du canal, par exemple sur la page web de votre canal.  L'introduction du canal, comme nous l'avons vu ci-dessus, est la paire de clés commit---c'est-à-dire le commit qui a introduit @file{.guix-authorizations}, et l'empreinte digitale de l'OpenPGP utilisé pour le signer.

note: type: Plain text
en: Before pushing to your public Git repository, you can run @command{guix git-authenticate} to verify that you did sign all the commits you are about to push with an authorized key:
fr: Avant de pousser vers votre dépôt Git public, vous pouvez lancer @command{guix git-authenticate} pour vérifier que vous avez bien signé tous les commits que vous allez pousser avec une clé autorisée :

note: type: Plain text
en: where @var{commit} and @var{signer} are your channel introduction.  @xref{Invoking guix git authenticate}, for details.
fr: où @var{commit} et @var{signer} sont votre présentation de canal.  @xref{Invoquer guix git authenticate}, pour plus de détails.

note: type: Plain text
en: Publishing a signed channel requires discipline: any mistake, such as an unsigned commit or a commit signed by an unauthorized key, will prevent users from pulling from your channel---well, that's the whole point of authentication! Pay attention to merges in particular: merge commits are considered authentic if and only if they are signed by a key present in the @file{.guix-authorizations} file of @emph{both} branches.
fr: Publier un canal signé demande de la discipline : toute faute, comme un commit non signé ou un commit signée par une clé non autorisée, vont empêcher les utilisateur·rice·s de récupérer depuis votre canal---bref, c'est tout l'intérêt de l'authentification ! Faites particulièrement attention aux merges : les merge commits sont considérés comme authentiques si et seulement s'ils sont signés par une clé présente dans le fichier @file{.guix-authorizations} des branches @emph{both}.

note: type: cindex
en: primary URL, channels
fr: principale URL, canaux

note: type: Plain text
en: Channel authors can indicate the primary URL of their channel's Git repository in the @file{.guix-channel} file, like so:
fr: Les auteur.e.s de canaux peuvent indiquer l'URL principale de leur dépôt Git de canal dans le fichier @file{.guix-channel} comme ceci :

note: type: Plain text
en: This allows @command{guix pull} to determine whether it is pulling code from a mirror of the channel; when that is the case, it warns the user that the mirror might be stale and displays the primary URL@.  That way, users cannot be tricked into fetching code from a stale mirror that does not receive security updates.
fr: Cela permet à @command{guix pull} de déterminer si elle récupère du code d'un miroir du canal ; lorsque c'est le cas, elle avertit l'utilisateur·rice que le miroir pourrait être périmé et affiche l'URL primaire.  De cette façon, les utilisateur·rice·s ne peuvent pas être amené·e·s à extraire du code d'un miroir périmé qui ne reçoit pas les mises à jour de sécurité.

note: type: Plain text
en: This feature only makes sense for authenticated repositories, such as the official @code{guix} channel, for which @command{guix pull} ensures the code it fetches is authentic.
fr: Cette fonctionnalité n'a de sens que pour les dépôts authentifiés, tels que le canal officiel @code{guix}, pour lequel @command{guix pull} garantit l'authenticité du code qu'il récupère.

note: type: cindex
en: news, for channels
fr: nouveautés, canaux

note: type: Plain text
en: Channel authors may occasionally want to communicate to their users information about important changes in the channel.  You'd send them all an email, but that's not convenient.
fr: Les auteur.e.s de canaux peuvent occasionnellement vouloir communiquer à leurs utilisateur·rice·s des informations au sujet de changements importants dans le canal. Vous pourriez leur envoyer un courriel, mais ce n'est pas pratique.

note: type: Plain text
en: Instead, channels can provide a @dfn{news file}; when the channel users run @command{guix pull}, that news file is automatically read and @command{guix pull --news} can display the announcements that correspond to the new commits that have been pulled, if any.
fr: Au lieu de cela, les canaux peuvent fournir un @dfn{fichier de nouvelles} ; lorsque les utilisateur·rice·s du canal exécutent @command{guix pull}, ce fichier de nouvelles est automatiquement lu et @command{guix pull --news} peut afficher les annonces qui correspondent aux nouveaux commits qui ont été récupérés, le cas échéant.

note: type: Plain text
en: To do that, channel authors must first declare the name of the news file in their @file{.guix-channel} file:
fr: Pour cela, les auteur·e·s de canaux doivent en premier lieu déclarer le nom du fichier de nouvelles dans leur fichier @file{.guix-channel} :

note: type: Plain text
en: The news file itself, @file{etc/news.txt} in this example, must look something like this:
fr: Le fichier de nouvelles lui-même, @file{etc/news.txt} dans cet exemple, doit ressembler à quelque chose comme ceci :

note: type: Plain text
en: While the news file is using the Scheme syntax, avoid naming it with a @file{.scm} extension or else it will get picked up when building the channel and yield an error since it is not a valid module.  Alternatively, you can move the channel module to a subdirectory and store the news file in another directory.
fr: Tandis que le fichier de nouvelles utilise la syntaxe Scheme, évitez de le nommer avec une extension @file{.scm}, sinon il sera récupéré lors de la construction du canal et produira une erreur puisqu'il ne s'agit pas d'un module valide.  Vous pouvez également déplacer le module du canal dans un sous-répertoire et stocker le fichier de nouvelles dans un autre répertoire.

note: type: Plain text
en: The file consists of a list of @dfn{news entries}.  Each entry is associated with a commit or tag: it describes changes made in this commit, possibly in preceding commits as well.  Users see entries only the first time they obtain the commit the entry refers to.
fr: Le fichier consiste en une liste de @dfn{news entries}. Chaque entrée est associée à un commit ou un tag : elle décrit les changements faits dans ce commit, éventuellement dans les commits précédents comme il faut. Les utilisateur·rice·s ne voient les entrées que la première fois qu'il·elle·s obtiennent le commit auquel l'entrée se réfère.

note: type: Plain text
en: The @code{title} field should be a one-line summary while @code{body} can be arbitrarily long, and both can contain Texinfo markup (@pxref{Overview,,, texinfo, GNU Texinfo}).  Both the title and body are a list of language tag/message tuples, which allows @command{guix pull} to display news in the language that corresponds to the user's locale.
fr: Le @code{titre} doit être un résumé d'une ligne tandis que @code{body} peut être arbitrairement long, et les deux peuvent contenir des balises Texinfo (@pxref{Overview,,, texinfo, GNU Texinfo}).  Le titre et le corps sont tous deux une liste de tuples de balises/messages de langue, ce qui permet à @command{guix pull} d'afficher les nouvelles dans la langue qui correspond à la locale de l'utilisateur.

note: type: Plain text
en: If you want to translate news using a gettext-based workflow, you can extract translatable strings with @command{xgettext} (@pxref{xgettext Invocation,,, gettext, GNU Gettext Utilities}).  For example, assuming you write news entries in English first, the command below creates a PO file containing the strings to translate:
fr: Si vous souhaitez traduire des actualités en utilisant un déroulement basé sur gettext, vous pouvez extraire des chaînes traduisibles avec @command{xgettext} (@pxref{xgettext Invocation,,, gettext, GNU Gettext Utilities}).  Par exemple, en supposant que vous écriviez d'abord les entrées de nouvelles en anglais, la commande ci-dessous crée un fichier PO contenant les chaînes à traduire :

note: type: Plain text
en: To sum up, yes, you could use your channel as a blog.  But beware, this is @emph{not quite} what your users might expect.
fr: Pour résumer, oui, vous pourriez utiliser votre chaîne comme un blog.  Mais attention, ce n'est @emph{pas tout à fait} ce à quoi vos utilisateur·rice·s pourraient s'attendre.

note: type: cindex
en: software development
fr: développement logiciel

note: type: Plain text
en: If you are a software developer, Guix provides tools that you should find helpful---independently of the language you're developing in.  This is what this chapter is about.
fr: Si vous êtes développeur de logiciels, Guix fournit des outils que vous devriez trouver utiles — indépendamment du langage dans lequel vous développez.  C'est ce dont parle ce chapitre.

note: type: Plain text
en: The @command{guix shell} command provides a convenient way to set up one-off software environments, be it for development purposes or to run a command without installing it in your profile.  The @command{guix pack} command allows you to create @dfn{application bundles} that can be easily distributed to users who do not run Guix.
fr: La commande @command{guix shell} permet de créer des environnements logiciels à usage unique, que ce soit pour le développement ou pour lancer une commande sans l'installer dans votre profil.  La commande @command{guix pack} vous permet de créer des @dfn{lots applicatifs} qui peuvent facilement être distribués à des utilisateurs qui n'utilisent pas Guix.

note: type: section
en: Invoking @command{guix shell}
fr: Invoquer @command{guix shell}

note: type: cindex
en: reproducible build environments
fr: environnements de construction reproductibles

note: type: cindex
en: development environments
fr: environnement de développement

note: type: cindex
en: environment, package build environment
fr: environnement de construction de paquets

note: type: Plain text
en: The purpose of @command{guix shell} is to make it easy to create one-off software environments, without changing one's profile.  It is typically used to create development environments; it is also a convenient way to run applications without ``polluting'' your profile.
fr: Le but de @command{guix shell} est de faciliter la création d'environnements logiciels à usage unique, sans changer votre profil. Vous l'utiliserez typiquement pour créer des environnement de développement ; c'est aussi une commande pratique pour lancer des applications sans « polluer » votre profil.

note: type: quotation
en: The @command{guix shell} command was recently introduced to supersede @command{guix environment} (@pxref{Invoking guix environment}).  If you are familiar with @command{guix environment}, you will notice that it is similar but also---we hope!---more convenient.
fr: La commande @command{guix shell} a été introduite récemment pour remplacer @command{guix environment} (@pxref{Invoking guix environment}). Si vous connaissez déjà @command{guix environment}, vous remarquerez qu'elle est similaire mais aussi (on l'espère) plus pratique.

note: type: example
en: guix shell [@var{options}] [@var{package}@dots{}]
fr: guix shell [@var{options}] [@var{paquet}@dots{}]

note: type: Plain text
en: The following example creates an environment containing Python and NumPy, building or downloading any missing package, and runs the @command{python3} command in that environment:
fr: L'exemple suivant crée un environnement contenant Python et NumPy, en construisant ou en téléchargeant les paquets manquants et lance la commande @command{python3} dans cet environnement :

note: type: Plain text
en: Development environments can be created as in the example below, which spawns an interactive shell containing all the dependencies and environment variables needed to work on Inkscape:
fr: Vous pouvez créer des environnements de développement comme dans l'exemple ci-dessous, qui ouvre un shell interactif contenant toutes les dépendance et les variables d'environnement requises pour travailler sur Inkscape :

note: type: Plain text
en: Exiting the shell places the user back in the original environment before @command{guix shell} was invoked.  The next garbage collection (@pxref{Invoking guix gc}) may clean up packages that were installed in the environment and that are no longer used outside of it.
fr: Sortir du shell vous replacera dans l'environnement de départ, avant d'avoir invoqué la commande @command{guix shell}. Au prochain lancement du ramasse-miettes (@pxref{Invoking guix gc}), les paquets installés dans l'environnement et qui ne sont plus utilisés en dehors seront possiblement supprimés.

note: type: Plain text
en: As an added convenience, @command{guix shell} will try to do what you mean when it is invoked interactively without any other arguments as in:
fr: En plus, @command{guix shell} essayera de faire ce que vous espérez quand il est invoqué de manière interactive et sans arguments, comme ceci :

note: type: Plain text
en: If it finds a @file{manifest.scm} in the current working directory or any of its parents, it uses this manifest as though it was given via @code{--manifest}.  Likewise, if it finds a @file{guix.scm} in the same directories, it uses it to build a development profile as though both @code{--development} and @code{--file} were present.  In either case, the file will only be loaded if the directory it resides in is listed in @file{~/.config/guix/shell-authorized-directories}.  This provides an easy way to define, share, and enter development environments.
fr: S'il trouve un @file{manifest.scm} dans le répertoire de travail actuel ou dans l'un de ses parents, il utiliser ce manifeste comme s'il avait été passé avec @code{--manifest}. De la même manière, s'il trouve un @file{guix.scm} dans ces mêmes répertoire, il l'utilisera pour construire un profil de développement comme si @code{--development} et @code{--file} étaient présents. Dans tous les cas, le fichier ne sera chargé que s'il réside dans un répertoire listé dans @file{~/.config/guix/shell-authorized-directories}. Cela permet de facilement définir, partager et entrer dans des environnements de développement.

note: type: Plain text
en: By default, the shell session or command runs in an @emph{augmented} environment, where the new packages are added to search path environment variables such as @code{PATH}.  You can, instead, choose to create an @emph{isolated} environment containing nothing but the packages you asked for.  Passing the @option{--pure} option clears environment variable definitions found in the parent environment@footnote{Be sure to use the @option{--check} option the first time you use @command{guix shell} interactively to make sure the shell does not undo the effect of @option{--pure}.}; passing @option{--container} goes one step further by spawning a @dfn{container} isolated from the rest of the system:
fr: Par défaut, la session shell ou la commande est lancée dans un environnement @emph{augmenté}, où les nouveaux paquets sont ajoutés aux variables d'environnement de recherche comme @code{PATH}. Vous pouvez à la place créer un environnement @emph{isolé} ne contenant rien d'autre que les paquets que vous avez demandé. Passez l'option @option{--pure} pour nettoyer les définitions des variables d'environnement qui se trouvent dans l'environnement parent@footnote{Assurez-vous d'utiliser l'option @option{--check} la première fois que vous utilisez @command{guix shell} de manière interactive pour vous assurer que le shell ne défait pas les effets de @option{--pure}.} ; en passant @option{--container} vous pouvez aller plus loin en démarrant un @dfn{conteneur} isolé du reste du système :

note: type: Plain text
en: The command above spawns an interactive shell in a container where nothing but @code{emacs}, @code{gcc-toolchain}, and their dependencies is available.  The container lacks network access and shares no files other than the current working directory with the surrounding environment.  This is useful to prevent access to system-wide resources such as @file{/usr/bin} on foreign distros.
fr: La commande ci-dessus démarre un shell interactif dans un conteneur avec rien d'autre que @code{emacs}, @code{gcc-toolchain} et leurs dépendances. Le conteneur n'a pas d'accès au réseau et ne partage pas les fichiers autres que ceux du répertoire de travail avec son environnement. C'est utile pour éviter d'accéder à des ressources systèmes comme @file{/usr/bin} sur les distributions externes.

note: type: Plain text
en: This @option{--container} option can also prove useful if you wish to run a security-sensitive application, such as a web browser, in an isolated environment.  For example, the command below launches Ungoogled-Chromium in an isolated environment, this time sharing network access with the host and preserving its @code{DISPLAY} environment variable, but without even sharing the current directory:
fr: Cette option @option{--container} peut aussi être utile si vous voulez lancer une application sensible en terme de sécurité, comme un navigateur web, dans un environnement isolé. Par exemple, la commande suivante lance Ungoogled-Chromium dans un environnement isolé, cette fois en partageant l'accès réseau de l'hôte et en préservant sa variable d'environnement @code{DISPLAY}, mais sans partager même le répertoire actuel :

note: type: Plain text
en: @command{guix shell} defines the @env{GUIX_ENVIRONMENT} variable in the shell it spawns; its value is the file name of the profile of this environment.  This allows users to, say, define a specific prompt for development environments in their @file{.bashrc} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}):
fr: @command{guix shell} définie la variable @env{GUIX_ENVIRONMENT} dans le shell qu'il crée ; sa valeur est le nom de fichier du profil de cet environnement.  Cela permet aux utilisatrice·eur·s, disons, de définir un prompt spécifique pour les environnement de développement dans leur @file{.bashrc} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}) :

note: type: Plain text
en: ...@: or to browse the profile:
fr: …@: ou de naviguer dans le profil :

note: type: Plain text
en: The available options are summarized below.
fr: Les options disponibles sont résumées ci-dessous.

note: type: table
en: Set up the environment and check whether the shell would clobber environment variables.  It's a good idea to use this option the first time you run @command{guix shell} for an interactive session to make sure your setup is correct.
fr: Met en place l'environnement et vérifie si le shell peut écraser les variables d'environnement. C'est une bonne idée d'utiliser cette option la première fois que vous lancez @command{guix shell} pour une session interactive pour vous assurer que votre configuration est correcte.

note: type: table
en: For example, if the shell modifies the @env{PATH} environment variable, report it since you would get a different environment than what you asked for.
fr: Par exemple, si le shell modifie la variable d'environnement @env{PATH}, cela sera rapporté car vous auriez un environnement différent de celui que vous avez demandé.

note: type: table
en: Such problems usually indicate that the shell startup files are unexpectedly modifying those environment variables.  For example, if you are using Bash, make sure that environment variables are set or modified in @file{~/.bash_profile} and @emph{not} in @file{~/.bashrc}---the former is sourced only by log-in shells.  @xref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}, for details on Bash start-up files.
fr: Ces problèmes indiquent en général que les fichiers de démarrage du shell modifient ces variables d'environnement de manière inattendue. Par exemple, si vous utilisez Bash, assurez-vous que les variables d'environnement sont définie ou modifiées dans @file{~/.bash_profile} @emph{et non} dans @file{~/.bashrc} --- ce premier est sourcé seulement par les shells de connexion. @xref{Bash Startup Files,,, bash, le manuel de référence de Bash} pour plus de détails sur les fichiers de démarrage de Bash.

note: type: table
en: Cause @command{guix shell} to include in the environment the dependencies of the following package rather than the package itself.  This can be combined with other packages.  For instance, the command below starts an interactive shell containing the build-time dependencies of GNU@tie{}Guile, plus Autoconf, Automake, and Libtool:
fr: Fait en sorte que @command{guix shell} ajoute à l'environnement les dépendances du paquet suivant au lieu du paquet lui-même. Vous pouvez combiner cette option avec d'autres paquets. Par exemple, la commande suivante démarre un shell interactif contenant les dépendances à la construction de GNU@tie{}Guile, plus Autoconf, Automake et Libtool :

note: type: table
en: Create an environment for the package or list of packages that @var{expr} evaluates to.
fr: Crée un environnement pour le paquet ou la liste de paquets en lesquels s'évalue @var{expr}.

note: type: table
en: For example, running:
fr: Par exemple, lancer :

note: type: table
en: starts a shell with the environment for this specific variant of the PETSc package.
fr: démarre un shell avec l'environnement pour cette variante spécifique du paquet PETSc.

note: type: table
en: Running:
fr: Lancer :

note: type: table
en: starts a shell with all the base system packages available.
fr: démarre un shell où tous les paquets de base du système sont disponibles.

note: type: table
en: The above commands only use the default output of the given packages.  To select other outputs, two element tuples can be specified:
fr: Les commande au-dessus n'utilisent que les sorties par défaut des paquets donnés.  Pour choisir d'autres sorties, on peut spécifier des pairs :

note: type: table
en: @xref{package-development-manifest, @code{package->development-manifest}}, for information on how to write a manifest for the development environment of a package.
fr: @xref{package-development-manifest, @code{package->development-manifest}}, pour apprendre à écrire un fichier manifeste ou l'environnement de développement d'un paquet.

note: type: item
en: --file=@var{file}
fr: --file=@var{fichier}

note: type: table
en: Create an environment containing the package or list of packages that the code within @var{file} evaluates to.
fr: Crée un environnement contenant le paquet ou la liste de paquets en lesquels @var{fichier} s'évalue.

note: type: table
en: With the file above, you can enter a development environment for GDB by running:
fr: Avec le fichier ci-dessus, vous pouvez entrer un environnement de développement pour GDB en lançant :

note: type: table
en: Create an environment for the packages contained in the manifest object returned by the Scheme code in @var{file}.  This option can be repeated several times, in which case the manifests are concatenated.
fr: Crée un environnement pour les paquets contenus dans l'objet manifeste renvoyé par le code Scheme dans @var{fichier}.  Vous pouvez répéter cette option plusieurs fois, auquel cas les manifestes sont concaténés.

note: type: table
en: This is similar to the same-named option in @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) and uses the same manifest files.
fr: C'est similaire à l'option de même nom de @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) et utilise les même fichiers manifestes.

note: type: table
en: @xref{Writing Manifests}, for information on how to write a manifest.  See @option{--export-manifest} below on how to obtain a first manifest.
fr: @xref{Writing Manifests}, pour des informations sur l'écriture d'un manifeste. Voir @option{--export-manifest} ci-dessous pour apprendre à obtenir un premier manifeste.

note: type: table
en: Write to standard output a manifest suitable for @option{--manifest} corresponding to given command-line options.
fr: Écrire un manifeste vers la sortie standard utilisable avec @option{--manifest} et qui correspond aux options de la ligne de commande données.

note: type: table
en: This is a way to ``convert'' command-line arguments into a manifest.  For example, imagine you are tired of typing long lines and would like to get a manifest equivalent to this command line:
fr: C'est une manière de « convertir » les arguments de la ligne de commande en un manifeste. Par exemple, imaginez que vous en ayez marre de taper de longues lignes et souhaitez avoir un manifeste équivalent à cette ligne de commande :

note: type: table
en: Just add @option{--export-manifest} to the command line above:
fr: Ajoutez l'option @option{--export-manifest} à la ligne de commande ci-dessus :

note: type: table
en: ... and you get a manifest along these lines:
fr: ... et vous obtiendrez un manifeste comme ceci :

note: type: table
en: You can store it into a file, say @file{manifest.scm}, and from there pass it to @command{guix shell} or indeed pretty much any @command{guix} command:
fr: Vous pouvez l'enregistrer dans un fichier, disons @file{manifest.scm}, et ensuite le passer à @command{guix shell} ou n'importe quelle commande @command{guix} :

note: type: table
en: Voilà, you've converted a long command line into a manifest! That conversion process honors package transformation options (@pxref{Package Transformation Options}) so it should be lossless.
fr: Voilà, vous avez convertit une longue ligne de commande en un manifeste ! Ce processus de conversion prend en compte les options de transformation des paquets (@pxref{Package Transformation Options}) et ne devrait donc pas perdre d'information.

note: type: table
en: Create an environment containing the packages installed in @var{profile}.  Use @command{guix package} (@pxref{Invoking guix package}) to create and manage profiles.
fr: Crée un environnement contenant les paquets installés dans @var{profile}. Utilisez @command{guix package} (@pxref{Invoking guix package}) pour créer et gérer les profils.

note: type: table
en: Unset existing environment variables when building the new environment, except those specified with @option{--preserve} (see below).  This has the effect of creating an environment in which search paths only contain package inputs.
fr: Réinitialisation des variables d'environnement existantes lors de la construction du nouvel environnement, sauf celles spécifiées avec l'option @option{--preserve}. (voir ci-dessous).  Cela a pour effet de créer un environnement dans lequel les chemins de recherche ne contiennent que des entrées de paquets.

note: type: table
en: When used alongside @option{--pure}, preserve the environment variables matching @var{regexp}---in other words, put them on a ``white list'' of environment variables that must be preserved.  This option can be repeated several times.
fr: Lorsque vous utilisez @option{--pure}, préserver les variables d'environnement qui correspondent à @var{regexp} — en d'autres termes, cela les met en « liste blanche » de variables d'environnement qui doivent être préservées.  Cette option peut être répétée plusieurs fois.

note: type: table
en: This example runs @command{mpirun} in a context where the only environment variables defined are @env{PATH}, environment variables whose name starts with @samp{SLURM}, as well as the usual ``precious'' variables (@env{HOME}, @env{USER}, etc.).
fr: Cet exemple exécute @command{mpirun} dans un contexte où les seules variables d'environnement définies sont @env{PATH}, les variables d'environnement dont le nom commence par @samp{SLURM}, ainsi que les variables « importantes » habituelles (@env{HOME}, @env{USER}, etc.).

note: type: table
en: Display the environment variable definitions that make up the environment.
fr: Affiche les définitions des variables d'environnement qui composent l'environnement.

note: type: table
en: Attempt to build for @var{system}---e.g., @code{i686-linux}.
fr: Essaye de construire pour @var{système} — p.@: ex.@: @code{i686-linux}.

note: type: item
en: container
fr: conteneur

note: type: table
en: Run @var{command} within an isolated container.  The current working directory outside the container is mapped inside the container.  Additionally, unless overridden with @option{--user}, a dummy home directory is created that matches the current user's home directory, and @file{/etc/passwd} is configured accordingly.
fr: Lance @var{commande} dans un conteneur isolé.  Le répertoire de travail actuel en dehors du conteneur est monté dans le conteneur.  En plus, à moins de le changer avec @option{--user}, un répertoire personnel fictif est créé pour correspondre à celui de l'utilisateur·rice actuel·le et @file{/etc/passwd} est configuré en conséquence.

note: type: table
en: The spawned process runs as the current user outside the container.  Inside the container, it has the same UID and GID as the current user, unless @option{--user} is passed (see below).
fr: Le processus de création s'exécute en tant qu'utilisateur·rice actuel·le à l'extérieur du conteneur.  À l'intérieur du conteneur, il possède les mêmes UID et GID que l'utilisateur·rice actuel·le, sauf si l'option @option{--user} est passée (voir ci-dessous).

note: type: table
en: For containers, share the network namespace with the host system.  Containers created without this flag only have access to the loopback device.
fr: Pour les conteneurs, partage l'espace de nom du réseau avec le système hôte.  Les conteneurs créés sans cette option n'ont accès qu'à l'interface de boucle locale.

note: type: table
en: For containers, link the environment profile to @file{~/.guix-profile} within the container and set @code{GUIX_ENVIRONMENT} to that.  This is equivalent to making @file{~/.guix-profile} a symlink to the actual profile within the container.  Linking will fail and abort the environment if the directory already exists, which will certainly be the case if @command{guix shell} was invoked in the user's home directory.
fr: Pour les conteneurs, liez le profil d'environnement à @file{~/.guix-profile} à l'intérieur du conteneur et définissez @code{GUIX_ENVIRONNEMENT} à cet endroit.  Cela équivaut à faire de @file{~/.guix-profile} un lien symbolique vers le profil réel à l'intérieur du conteneur.  La liaison échouera et interrompra l'environnement si le répertoire existe déjà, ce qui sera certainement le cas si @command{guix shell} a été invoqué dans le répertoire personnel de l'utilisateur·rice.

note: type: table
en: Certain packages are configured to look in @file{~/.guix-profile} for configuration files and data;@footnote{For example, the @code{fontconfig} package inspects @file{~/.guix-profile/share/fonts} for additional fonts.} @option{--link-profile} allows these programs to behave as expected within the environment.
fr: Certains paquets sont configurés pour chercher des fichiers de configuration et des données dans @file{~/.guix-profile} ; @footnote{Par exemple, le paquet @code{fontconfig} inspecte @file{~/.guix-profile/share/fonts} pour trouver des polices supplémentaires.} ; @option{--link-profile} permet à ces programmes de se comporter comme attendu dans l'environnement.

note: type: item
en: --user=@var{user}
fr: --user=@var{utilisateur}

note: type: itemx
en: -u @var{user}
fr: -u @var{utilisateur}

note: type: table
en: For containers, use the username @var{user} in place of the current user.  The generated @file{/etc/passwd} entry within the container will contain the name @var{user}, the home directory will be @file{/home/@var{user}}, and no user GECOS data will be copied.  Furthermore, the UID and GID inside the container are 1000.  @var{user} need not exist on the system.
fr: Pour les conteneurs, utilise le nom d'utilisateur @var{utilisateur} à la place de l'utilisateur actuel.  L'entrée générée dans @file{/etc/passwd} dans le conteneur contiendra le nom @var{utilisateur} ; le répertoire personnel sera @file{/home/@var{utilisateur}} ; et aucune donnée GECOS ne sera copiée.  En plus, l'UID et le GID dans le conteneur seront 1000.  @var{user} n'a pas besoin d'exister sur le système.

note: type: table
en: Additionally, any shared or exposed path (see @option{--share} and @option{--expose} respectively) whose target is within the current user's home directory will be remapped relative to @file{/home/USER}; this includes the automatic mapping of the current working directory.
fr: En plus, tous les chemins partagés ou exposés (voir @option{--share} et @option{--expose} respectivement) dont la cible est dans le répertoire personnel de l'utilisateur·rice seront remontés relativement à @file{/home/USER} ; cela comprend le montage automatique du répertoire de travail actuel.

note: type: example
en: # will expose paths as /home/foo/wd, /home/foo/test, and /home/foo/target
    cd $HOME/wd
    guix shell --container --user=foo \
         --expose=$HOME/test \
         --expose=/tmp/target=$HOME/target
fr: # exposera les chemins comme /home/toto/wd, /home/toto/test et /home/toto/target
    cd $HOME/wd
    guix shell --container --user=toto \
         --expose=$HOME/test \
         --expose=/tmp/target=$HOME/target

note: type: table
en: While this will limit the leaking of user identity through home paths and each of the user fields, this is only one useful component of a broader privacy/anonymity solution---not one in and of itself.
fr: Bien que cela limite la fuite de l'identité de l'utilisateur à travers le chemin du répertoire personnel et des champs de l'utilisateur, ce n'est qu'un composant utile pour une solution d'anonymisation ou de préservation de la vie privée — pas une solution en elle-même.

note: type: table
en: For containers, the default behavior is to share the current working directory with the isolated container and immediately change to that directory within the container.  If this is undesirable, @option{--no-cwd} will cause the current working directory to @emph{not} be automatically shared and will change to the user's home directory within the container instead.  See also @option{--user}.
fr: Pour les conteneurs, le comportement par défaut est de partager le répertoire de travail actuel avec le conteneur isolé et de passer immédiatement à ce répertoire à l'intérieur du conteneur.  Si cela n'est pas souhaitable, @option{--no-cwd} fera en sorte que le répertoire de travail courant soit automatiquement partagé @emph{not} et passera au répertoire personnel de l'utilisateur·rice dans le conteneur à la place.  Voir aussi @option{--user}.

note: type: item
en: --expose=@var{source}[=@var{target}]
fr: --expose=@var{source}[=@var{cible}]

note: type: itemx
en: --share=@var{source}[=@var{target}]
fr: --share=@var{source}[=@var{cible}]

note: type: table
en: For containers, @option{--expose} (resp. @option{--share}) exposes the file system @var{source} from the host system as the read-only (resp. writable) file system @var{target} within the container.  If @var{target} is not specified, @var{source} is used as the target mount point in the container.
fr: Pour les conteneurs, @option{--expose} (resp. @option{--share}) expose le système de fichiers @var{source} du système hôte comme un système de fichiers @var{target} en lecture seule (resp. en lecture-écriture) dans le conteneur.  Si @var{target} n'est pas spécifiée, @var{source} est utilisé comme point de montage dans le conteneur.

note: type: table
en: The example below spawns a Guile REPL in a container in which the user's home directory is accessible read-only via the @file{/exchange} directory:
fr: L'exemple ci-dessous crée un REPL Guile dans un conteneur dans lequel le répertoire personnel de l'utilisateur est accessible en lecture-seule via le répertoire @file{/exchange} :

note: type: cindex
en: symbolic links, guix shell
fr: liens symboliques, guix shell

note: type: table
en: For containers, create the symbolic links specified by @var{spec}, as documented in @ref{pack-symlink-option}.
fr: Pour les conteneurs, crée le lien symbolique spécifié par la @var{spec}, documenté dans @ref{pack-symlink-option}.

note: type: cindex
en: file system hierarchy standard (FHS)
fr: standard de la hiérarchie des systèmes de fichiers (FHS)

note: type: cindex
en: FHS (file system hierarchy standard)
fr: FHS (standard de la hiérarchie des systèmes de fichiers)

note: type: table
en: When used with @option{--container}, emulate a @uref{https://refspecs.linuxfoundation.org/fhs.shtml, Filesystem Hierarchy Standard (FHS)} configuration within the container, providing @file{/bin}, @file{/lib}, and other directories and files specified by the FHS.
fr: Lorsqu'elle est utilisée avec @option{--container}, cette option émule une configuration qui respecte le @uref{https://refspecs.linuxfoundation.org/fhs.shtml, standard de la hiérarchie des systèmes de fichiers (FHS)} dans le conteneur, en fournissant @file{/bin}, @file{/lib} et d'autres répertoires et fichiers spécifiés par le FHS.

note: type: table
en: As Guix deviates from the FHS specification, this option sets up the container to more closely mimic that of other GNU/Linux distributions.  This is useful for reproducing other development environments, testing, and using programs which expect the FHS specification to be followed.  With this option, the container will include a version of glibc that will read @file{/etc/ld.so.cache} within the container for the shared library cache (contrary to glibc in regular Guix usage) and set up the expected FHS directories: @file{/bin}, @file{/etc}, @file{/lib}, and @file{/usr} from the container's profile.
fr: Comme Guix ne respecte pas les spécifications du FHS, cette option configure le conteneur pour mieux reproduire le comportement des autres distributions GNU/Linux. C'est utile pour reproduire d'autres environnements de développement, tester et utiliser des programmes qui s'attendent à ce que les spécifications du FHS soient suivies. Avec cette option, le conteneur inclura une version de glibc qui lira @file{/etc/ld.so.cache} dans le conteneur pour trouver le cache des bibliothèques partagées (au contraire de glibc dans l'utilisation normale de Guix) et configurera les répertoires attendu du FHS : @file{/bin}, @file{/etc}, @file{/lib}, @file{/usr} à partir du profil du conteneur.

note: type: cindex
en: caching, of profiles
fr: cache, des profils

note: type: cindex
en: caching, in @command{guix shell}
fr: cache, dans @command{guix shell}

note: type: table
en: In most cases, @command{guix shell} caches the environment so that subsequent uses are instantaneous.  Least-recently used cache entries are periodically removed.  The cache is also invalidated, when using @option{--file} or @option{--manifest}, anytime the corresponding file is modified.
fr: La plupart du temps, @command{guix shell} met en cache l'environnement pour que les utilisations suivantes soient instantanées. Les entrées du cache utilisées le moins récemment sont régulièrement supprimées. Le cache est aussi invalidé lorsque vous utilisez @option{--file} ou @option{--manifest} à chaque fois que le fichier correspondant est modifié.

note: type: table
en: The @option{--rebuild-cache} forces the cached environment to be refreshed.  This is useful when using @option{--file} or @option{--manifest} and the @command{guix.scm} or @command{manifest.scm} file has external dependencies, or if its behavior depends, say, on environment variables.
fr: L'option @option{--rebuild-cache} force l'environnement en cache à être rafraîchi. C'est utile si vous utilisez les options @option{--file} ou @option{--manifest} et que les fichiers @command{guix.scm} ou @command{manifest.scm} ont des dépendances externes, ou si leur comportement dépend, disons, de variables d'environnements.

note: type: item
en: --root=@var{file}
fr: --root=@var{fichier}

note: type: itemx
en: -r @var{file}
fr: -r @var{fichier}

note: type: cindex
en: persistent environment
fr: environnement persistent

note: type: cindex
en: garbage collector root, for environments
fr: racine du ramasse-miettes, pour les environnements

note: type: table
en: Make @var{file} a symlink to the profile for this environment, and register it as a garbage collector root.
fr: Fait de @var{fichier} un lien symbolique vers le profil de cet environnement, et l'enregistre comme une racine du ramasse-miettes.

note: type: table
en: This is useful if you want to protect your environment from garbage collection, to make it ``persistent''.
fr: C'est utile si vous souhaitez protéger votre environnement du ramasse-miettes, pour le rendre « persistent ».

note: type: table
en: When this option is omitted, @command{guix shell} caches profiles so that subsequent uses of the same environment are instantaneous---this is comparable to using @option{--root} except that @command{guix shell} takes care of periodically removing the least-recently used garbage collector roots.
fr: Lorsque vous n'utilisez pas cette option, @command{guix shell} met en cache les profils pour les utilisations suivantes du même environnement soient immédiates --- vous pouvez comparer cela à l'utilisation de @option{--root} sauf que @command{guix shell} prend soin de régulièrement supprimer les racines du ramasse-miettes utilisées le moins récemment.

note: type: table
en: In some cases, @command{guix shell} does not cache profiles---e.g., if transformation options such as @option{--with-latest} are used.  In those cases, the environment is protected from garbage collection only for the duration of the @command{guix shell} session.  This means that next time you recreate the same environment, you could have to rebuild or re-download packages.
fr: Dans certains cas, @command{guix shell} ne met pas les profils en cache -- p.@: ex.@: si des options de transformations comme @option{--with-latest} sont utilisées. Dans ce cas, l'environnement n'est protégé du ramasse-miettes que le temps de la session @command{guix shell}.  Cela signifie que la prochaine fois que vous créerez le même environnement, vous pourriez avoir à reconstruire ou télécharger des paquets.

note: type: table
en: @xref{Invoking guix gc}, for more on GC roots.
fr: @xref{Invoking guix gc}, pour en apprendre plus sur les racines du ramasse-miettes.

note: type: Plain text
en: @command{guix shell} also supports all of the common build options that @command{guix build} supports (@pxref{Common Build Options}) as well as package transformation options (@pxref{Package Transformation Options}).
fr: En plus, @command{guix shell} prend en charge toutes les options de construction communes prises en charge par @command{guix build} (@pxref{Common Build Options}) et toutes les options de transformation de paquets (@pxref{Package Transformation Options}).

note: type: section
en: Invoking @command{guix environment}
fr: Invoquer @command{guix environment}

note: type: Plain text
en: The purpose of @command{guix environment} is to assist in creating development environments.
fr: Le but de @command{guix environment} est de vous aider à créer des environnements de développement.

note: type: quotation
en: Deprecation warning
fr: Avertissement d’obsolescence

note: type: quotation
en: The @command{guix environment} command is deprecated in favor of @command{guix shell}, which performs similar functions but is more convenient to use.  @xref{Invoking guix shell}.
fr: La commande @command{guix environment} est obsolète et remplacée par @command{guix shell}, qui effectue les même tâches mais est plus pratique à utiliser. @xref{Invoking guix shell}.

note: type: quotation
en: Being deprecated, @command{guix environment} is slated for eventual removal, but the Guix project is committed to keeping it until May 1st, 2023.  Please get in touch with us at @email{guix-devel@@gnu.org} if you would like to discuss it.
fr: Étant obsolète, @command{guix environment} sera supprimée à un moment, mais le projet Guix s'engage à la garder jusqu'au premier mai 2023. Contactez-nous sur @email{guix-devel@@gnu.org} si vous voulez en parler.

note: type: example
en: guix environment @var{options} @var{package}@dots{}
fr: guix environment @var{options} @var{paquet}@dots{}

note: type: Plain text
en: The following example spawns a new shell set up for the development of GNU@tie{}Guile:
fr: L'exemple suivant crée un nouveau shell préparé pour le développement de GNU@tie{}Guile :

note: type: Plain text
en: If the needed dependencies are not built yet, @command{guix environment} automatically builds them.  The environment of the new shell is an augmented version of the environment that @command{guix environment} was run in.  It contains the necessary search paths for building the given package added to the existing environment variables.  To create a ``pure'' environment, in which the original environment variables have been unset, use the @option{--pure} option@footnote{Users sometimes wrongfully augment environment variables such as @env{PATH} in their @file{~/.bashrc} file.  As a consequence, when @command{guix environment} launches it, Bash may read @file{~/.bashrc}, thereby introducing ``impurities'' in these environment variables.  It is an error to define such environment variables in @file{.bashrc}; instead, they should be defined in @file{.bash_profile}, which is sourced only by log-in shells.  @xref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}, for details on Bash start-up files.}.
fr: Si les dépendances requises ne sont pas déjà construites, @command{guix environment} les construit automatiquement.  L'environnement du nouveau shell est une version améliorée de l'environnement dans lequel @command{guix environment} a été lancé.  Il contient les chemins de recherche nécessaires à la construction du paquet donné en plus des variables d'environnement existantes.  Pour créer un environnement « pur », dans lequel les variables d'environnement de départ ont été nettoyées, utilisez l'option @option{--pure}@footnote{Les utilisatrice·eur·s ajoutent parfois à tort des valeurs supplémentaires dans les variables comme @env{PATH} dans leur @file{~/.bashrc}.  En conséquence, lorsque @command{guix environment} le lance, Bash peut lire @file{~/.bashrc}, ce qui produit des « impuretés » dans ces variables d'environnement.  C'est une erreur de définir ces variables d'environnement dans @file{.bashrc} ; à la place, elles devraient être définie dans @file{.bash_profile}, qui est sourcé uniquement par les shells de connexion.  @xref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}, pour des détails sur les fichiers de démarrage de Bash.}.

note: type: Plain text
en: Exiting from a Guix environment is the same as exiting from the shell, and will place the user back in the old environment before @command{guix environment} was invoked.  The next garbage collection (@pxref{Invoking guix gc}) will clean up packages that were installed from within the environment and are no longer used outside of it.
fr: Sortir d'un environnement Guix est comme sortir du shell, et cela vous replacera dans l'ancien environnement avant d'avoir invoqué la commande @command{guix environment}. Au prochain lancement du ramasse-miettes (@pxref{Invoking guix gc}), les paquets installés pour l'environnement seront supprimés et ne seront plus disponibles en dehors de celui-ci.

note: type: Plain text
en: @command{guix environment} defines the @env{GUIX_ENVIRONMENT} variable in the shell it spawns; its value is the file name of the profile of this environment.  This allows users to, say, define a specific prompt for development environments in their @file{.bashrc} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}):
fr: @command{guix environment} définie la variable @env{GUIX_ENVIRONMENT} dans le shell qu'il crée ; sa valeur est le nom de fichier du profil de cet environnement.  Cela permet aux utilisatrice·eur·s, disons, de définir un prompt spécifique pour les environnement de développement dans leur @file{.bashrc} (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}) :

note: type: Plain text
en: Additionally, more than one package may be specified, in which case the union of the inputs for the given packages are used.  For example, the command below spawns a shell where all of the dependencies of both Guile and Emacs are available:
fr: De surcroît, plus d'un paquet peut être spécifié, auquel cas l'union des entrées des paquets données est utilisée.  Par exemple, la commande ci-dessous crée un shell où toutes les dépendances de Guile et Emacs sont disponibles :

note: type: Plain text
en: Sometimes an interactive shell session is not desired.  An arbitrary command may be invoked by placing the @code{--} token to separate the command from the rest of the arguments:
fr: Parfois, une session shell interactive est inutile.  On peut invoquer une commande arbitraire en plaçant le jeton @code{--} pour séparer la commande du reste des arguments :

note: type: Plain text
en: In other situations, it is more convenient to specify the list of packages needed in the environment.  For example, the following command runs @command{python} from an environment containing Python@tie{}3 and NumPy:
fr: Dans d'autres situations, il est plus pratique de spécifier la liste des paquets requis dans l'environnement.  Par exemple, la commande suivante lance @command{python} dans un environnement contenant Python@tie{}3 et NumPy :

note: type: Plain text
en: Furthermore, one might want the dependencies of a package and also some additional packages that are not build-time or runtime dependencies, but are useful when developing nonetheless.  Because of this, the @option{--ad-hoc} flag is positional.  Packages appearing before @option{--ad-hoc} are interpreted as packages whose dependencies will be added to the environment.  Packages appearing after are interpreted as packages that will be added to the environment directly.  For example, the following command creates a Guix development environment that additionally includes Git and strace:
fr: En plus, on peut vouloir les dépendance d'un paquet et aussi des paquets supplémentaires qui ne sont pas des dépendances à l'exécution ou à la construction, mais qui sont utiles au développement tout de même.  À cause de cela, le tag @option{--ad-hoc} est positionnel.  Les paquets qui apparaissent avant @option{--ad-hoc} sont interprétés comme les paquets dont les dépendances seront ajoutées à l'environnement.  Les paquets qui apparaissent après @option{--ad-hoc} sont interprétés comme les paquets à ajouter à l'environnement directement.  Par exemple, la commande suivante crée un environnement de développement pour Guix avec les paquets Git et strace en plus :

note: type: Plain text
en: Sometimes it is desirable to isolate the environment as much as possible, for maximal purity and reproducibility.  In particular, when using Guix on a host distro that is not Guix System, it is desirable to prevent access to @file{/usr/bin} and other system-wide resources from the development environment.  For example, the following command spawns a Guile REPL in a ``container'' where only the store and the current working directory are mounted:
fr: Parfois il est souhaitable d'isoler l'environnement le plus possible, pour une pureté et une reproductibilité maximale.  En particulier, lorsque vous utilisez Guix sur une distribution hôte qui n'est pas le système Guix, il est souhaitable d'éviter l'accès à @file{/usr/bin} et d'autres ressources du système depuis les environnements de développement.  Par exemple, la commande suivante crée un REPL Guile dans un « conteneur » où seuls le dépôt et le répertoire de travail actuel sont montés :

note: type: quotation
en: The @option{--container} option requires Linux-libre 3.19 or newer.
fr: L'option @option{--container} requiert Linux-libre 3.19 ou supérieur.

note: type: cindex
en: certificates
fr: certificats

note: type: Plain text
en: Another typical use case for containers is to run security-sensitive applications such as a web browser.  To run Eolie, we must expose and share some files and directories; we include @code{nss-certs} and expose @file{/etc/ssl/certs/} for HTTPS authentication; finally we preserve the @env{DISPLAY} environment variable since containerized graphical applications won't display without it.
fr: Un autre cas d'usage typique pour les conteneurs est de lancer des applications sensibles à la sécurité, comme un navigateur web.  Pour faire fonctionner Eolie, nous devons exposer et partager certains fichiers et répertoires ; nous incluons @code{nss-certs} et exposons @file{/etc/ssl/certs/} pour l'authentification HTTPS ; enfin, nous préservons la variable d'environnement @env{DISPLAY} puisque les applications graphiques conteneurisées ne s'afficheront pas sans elle.

note: type: table
en: Set up the environment and check whether the shell would clobber environment variables.  @xref{Invoking guix shell, @option{--check}}, for more info.
fr: Configure l'environnement et vérifie si le shell écraserait les variables d'environnement. @xref{Invoking guix shell, @option{--check}}, pour plus d'informations.

note: type: table
en: When this option is omitted, the environment is protected from garbage collection only for the duration of the @command{guix environment} session.  This means that next time you recreate the same environment, you could have to rebuild or re-download packages.  @xref{Invoking guix gc}, for more on GC roots.
fr: Lorsque cette option est omise, l'environnement n'est protégé du ramasse-miettes que le temps de la session @command{guix environment}.  Cela signifie que la prochaine fois que vous créerez le même environnement, vous pourriez avoir à reconstruire ou télécharger des paquets.  @xref{Invoking guix gc}, pour plus d'informations sur les racines du GC.

note: type: item
en: --load=@var{file}
fr: --load=@var{fichier}

note: type: itemx
en: -l @var{file}
fr: -l @var{fichier}

note: type: table
en: Create an environment for the package or list of packages that the code within @var{file} evaluates to.
fr: Crée un environnement pour le paquet ou la liste de paquets en lesquels @var{fichier} s'évalue.

note: type: table
en: @xref{shell-export-manifest, @command{guix shell --export-manifest}}, for information on how to ``convert'' command-line options into a manifest.
fr: @xref{shell-export-manifest, @command{guix shell --export-manifest}}, pour des informations sur la « conversion » des options de la ligne de commande en un manifeste.

note: type: table
en: Include all specified packages in the resulting environment, as if an @i{ad hoc} package were defined with them as inputs.  This option is useful for quickly creating an environment without having to write a package expression to contain the desired inputs.
fr: Inclut tous les paquets spécifiés dans l'environnement qui en résulte, comme si un paquet @i{ad hoc} était spécifié, avec ces paquets comme entrées.  Cette option est utile pour créer un environnement rapidement sans avoir à écrire une expression de paquet contenant les entrées désirées.

note: type: table
en: For instance, the command:
fr: Par exemple la commande :

note: type: table
en: runs @command{guile} in an environment where Guile and Guile-SDL are available.
fr: lance @command{guile} dans un environnement où Guile et Guile-SDDL sont disponibles.

note: type: table
en: Note that this example implicitly asks for the default output of @code{guile} and @code{guile-sdl}, but it is possible to ask for a specific output---e.g., @code{glib:bin} asks for the @code{bin} output of @code{glib} (@pxref{Packages with Multiple Outputs}).
fr: Remarquez que cet exemple demande implicitement la sortie par défaut de @code{guile} et @code{guile-sdl}, mais il est possible de demander une sortie spécifique — p.@: ex.@: @code{glib:bin} demande la sortie @code{bin} de @code{glib} (@pxref{Packages with Multiple Outputs}).

note: type: table
en: This option may be composed with the default behavior of @command{guix environment}.  Packages appearing before @option{--ad-hoc} are interpreted as packages whose dependencies will be added to the environment, the default behavior.  Packages appearing after are interpreted as packages that will be added to the environment directly.
fr: Cette option peut être composée avec le comportement par défaut de @command{guix environment}.  Les paquets qui apparaissent avant @option{--ad-hoc} sont interprétés comme les paquets dont les dépendances seront ajoutées à l'environnement, le comportement par défaut.  Les paquets qui apparaissent après @option{--ad-hoc} sont interprétés comme les paquets à ajouter à l'environnement directement.

note: type: table
en: For containers, link the environment profile to @file{~/.guix-profile} within the container and set @code{GUIX_ENVIRONMENT} to that.  This is equivalent to making @file{~/.guix-profile} a symlink to the actual profile within the container.  Linking will fail and abort the environment if the directory already exists, which will certainly be the case if @command{guix environment} was invoked in the user's home directory.
fr: Pour les conteneurs, liez le profil d'environnement à @file{~/.guix-profile} à l'intérieur du conteneur et définissez @code{GUIX_ENVIRONNEMENT} à cet endroit.  Cela équivaut à faire de @file{~/.guix-profile} un lien symbolique vers le profil réel à l'intérieur du conteneur.  La liaison échouera et interrompra l'environnement si le répertoire existe déjà, ce qui sera certainement le cas si @command{guix environment} a été invoqué dans le répertoire personnel de l'utilisateur·rice.

note: type: example
en: # will expose paths as /home/foo/wd, /home/foo/test, and /home/foo/target
    cd $HOME/wd
    guix environment --container --user=foo \
         --expose=$HOME/test \
         --expose=/tmp/target=$HOME/target
fr: # exposera les chemins comme /home/toto/wd, /home/toto/test et /home/toto/target
    cd $HOME/wd
    guix environment --container --user=toto \
         --expose=$HOME/test \
         --expose=/tmp/target=$HOME/target

note: type: table
en: For containers, emulate a Filesystem Hierarchy Standard (FHS)  configuration within the container, see @uref{https://refspecs.linuxfoundation.org/fhs.shtml, the official specification}.  As Guix deviates from the FHS specification, this option sets up the container to more closely mimic that of other GNU/Linux distributions.  This is useful for reproducing other development environments, testing, and using programs which expect the FHS specification to be followed.  With this option, the container will include a version of @code{glibc} which will read @code{/etc/ld.so.cache} within the container for the shared library cache (contrary to @code{glibc} in regular Guix usage) and set up the expected FHS directories: @code{/bin}, @code{/etc}, @code{/lib}, and @code{/usr} from the container's profile.
fr: Lorsqu'elle est utilisée avec @option{--container}, cette option émule une configuration qui respecte le @uref{https://refspecs.linuxfoundation.org/fhs.shtml, standard de la hiérarchie des systèmes de fichiers (FHS)} dans le conteneur, en fournissant @file{/bin}, @file{/lib} et d'autres répertoires et fichiers spécifiés par le FHS. Comme Guix ne respecte pas les spécifications du FHS, cette option configure le conteneur pour mieux reproduire le comportement des autres distributions GNU/Linux. C'est utile pour reproduire d'autres environnements de développement, tester et utiliser des programmes qui s'attendent à ce que les spécifications du FHS soient suivies. Avec cette option, le conteneur inclura une version de glibc qui lira @file{/etc/ld.so.cache} dans le conteneur pour trouver le cache des bibliothèques partagées (au contraire de glibc dans l'utilisation normale de Guix) et configurera les répertoires attendu du FHS : @file{/bin}, @file{/etc}, @file{/lib}, @file{/usr} à partir du profil du conteneur.

note: type: Plain text
en: @command{guix environment} also supports all of the common build options that @command{guix build} supports (@pxref{Common Build Options}) as well as package transformation options (@pxref{Package Transformation Options}).
fr: En plus, @command{guix environment} prend en charge toutes les options de construction communes prises en charge par @command{guix build} (@pxref{Common Build Options}) et toutes les options de transformation de paquets (@pxref{Package Transformation Options}).

note: type: section
en: Invoking @command{guix pack}
fr: Invoquer @command{guix pack}

note: type: Plain text
en: Occasionally you want to pass software to people who are not (yet!)  lucky enough to be using Guix.  You'd tell them to run @command{guix package -i @var{something}}, but that's not possible in this case.  This is where @command{guix pack} comes in.
fr: Parfois vous voulez passer un logiciel à des gens qui n'ont pas (encore !) la chance d'utiliser Guix.  Vous leur diriez bien de lancer @command{guix package -i @var{quelque chose}} mais ce n'est pas possible dans ce cas.  C'est là que @command{guix pack} entre en jeu.

note: type: quotation
en: If you are looking for ways to exchange binaries among machines that already run Guix, @pxref{Invoking guix copy}, @ref{Invoking guix publish}, and @ref{Invoking guix archive}.
fr: Si vous cherchez comment échanger des binaires entre des machines où Guix est déjà installé, @pxref{Invoking guix copy}, @ref{Invoking guix publish}, et @ref{Invoking guix archive}.

note: type: cindex
en: bundle
fr: lot

note: type: cindex
en: application bundle
fr: lot d'applications

note: type: cindex
en: software bundle
fr: lot de logiciels

note: type: Plain text
en: The @command{guix pack} command creates a shrink-wrapped @dfn{pack} or @dfn{software bundle}: it creates a tarball or some other archive containing the binaries of the software you're interested in, and all its dependencies.  The resulting archive can be used on any machine that does not have Guix, and people can run the exact same binaries as those you have with Guix.  The pack itself is created in a bit-reproducible fashion, so anyone can verify that it really contains the build results that you pretend to be shipping.
fr: La commande @command{guix pack} crée un @dfn{pack} ou @dfn{lot de logiciels} : elle crée une archive tar ou un autre type d'archive contenant les binaires pour le logiciel qui vous intéresse ainsi que ses dépendances.  L'archive qui en résulte peut être utilisée sur toutes les machines qui n'ont pas Guix et les gens peuvent lancer exactement les mêmes binaires que ceux que vous avez avec Guix.  Le pack lui-même est créé d'une manière reproductible au bit près, pour que n'importe qui puisse vérifier qu'il contient bien les résultats que vous prétendez proposer.

note: type: Plain text
en: For example, to create a bundle containing Guile, Emacs, Geiser, and all their dependencies, you can run:
fr: Par exemple, pour créer un lot contenant Guile, Emacs, Geiser et toutes leurs dépendances, vous pouvez lancer :

note: type: Plain text
en: The result here is a tarball containing a @file{/gnu/store} directory with all the relevant packages.  The resulting tarball contains a @dfn{profile} with the three packages of interest; the profile is the same as would be created by @command{guix package -i}.  It is this mechanism that is used to create Guix's own standalone binary tarball (@pxref{Binary Installation}).
fr: Le résultat ici est une archive tar contenant un répertoire @file{/gnu/store} avec tous les paquets nécessaires.  L'archive qui en résulte contient un @dfn{profil} avec les trois paquets qui vous intéressent ; le profil est le même qui celui qui aurait été créé avec @command{guix package -i}.  C'est ce mécanisme qui est utilisé pour créer les archives tar binaires indépendantes de Guix (@pxref{Binary Installation}).

note: type: Plain text
en: Users of this pack would have to run @file{/gnu/store/@dots{}-profile/bin/guile} to run Guile, which you may find inconvenient.  To work around it, you can create, say, a @file{/opt/gnu/bin} symlink to the profile:
fr: Les utilisateurs de ce pack devraient lancer @file{/gnu/store/@dots{}-profile/bin/guile} pour lancer Guile, ce qui n'est pas très pratique.  Pour éviter cela, vous pouvez créer, disons, un lien symbolique @file{/opt/gnu/bin} vers le profil :

note: type: Plain text
en: That way, users can happily type @file{/opt/gnu/bin/guile} and enjoy.
fr: De cette façon, les utilisateurs peuvent joyeusement taper @file{/opt/gnu/bin/guile} et profiter.

note: type: cindex
en: relocatable binaries, with @command{guix pack}
fr: binaires repositionnables, avec @command{guix pack}

note: type: Plain text
en: What if the recipient of your pack does not have root privileges on their machine, and thus cannot unpack it in the root file system? In that case, you will want to use the @option{--relocatable} option (see below).  This option produces @dfn{relocatable binaries}, meaning they they can be placed anywhere in the file system hierarchy: in the example above, users can unpack your tarball in their home directory and directly run @file{./opt/gnu/bin/guile}.
fr: Et si le destinataire de votre pack n'a pas les privilèges root sur sa machine, et ne peut donc pas le décompresser dans le système de fichiers root ?  Dans ce cas, vous pourriez utiliser l'option @code{--relocatable} (voir plus bas).  Cette option produit des @dfn{binaires repositionnables}, ce qui signifie qu'ils peuvent être placés n'importe où dans l'arborescence du système de fichiers : dans l'exemple au-dessus, les utilisateur·rice·s peuvent décompresser votre archive dans leur répertoire personnel et lancer directement @file{./opt/gnu/bin/guile}.

note: type: cindex
en: Docker, build an image with guix pack
fr: Docker, construire une image avec guix pack

note: type: Plain text
en: Alternatively, you can produce a pack in the Docker image format using the following command:
fr: Autrement, vous pouvez produire un pack au format d'image Docker avec la commande suivante :

note: type: Plain text
en: The result is a tarball that can be passed to the @command{docker load} command, followed by @code{docker run}:
fr: Le résultat est une archive tar qui peut être passée à la commande @command{docker load}, puis à @code{docker run} :

note: type: Plain text
en: where @var{file} is the image returned by @var{guix pack}, and @code{guile-guile-readline} is its ``image tag''.  See the @uref{https://docs.docker.com/engine/reference/commandline/load/, Docker documentation} for more information.
fr: où @var{fichier} est l'image renvoyée par @var{guix pack} et @code{guile-guile-readline} est son « tag d'image ».  Voir la @uref{https://docs.docker.com/engine/reference/commandline/load/, documentation de Docker} pour plus d'informations.

note: type: cindex
en: Singularity, build an image with guix pack
fr: Singularity, construire une image avec guix pack

note: type: cindex
en: SquashFS, build an image with guix pack
fr: SquashFS, construire une image avec guix pack

note: type: Plain text
en: Yet another option is to produce a SquashFS image with the following command:
fr: Autrement, vous pouvez produire une image SquashFS avec la commande suivante :

note: type: Plain text
en: The result is a SquashFS file system image that can either be mounted or directly be used as a file system container image with the @uref{https://www.sylabs.io/docs/, Singularity container execution environment}, using commands like @command{singularity shell} or @command{singularity exec}.
fr: Le résultat est une image de système de fichiers SquashFS qui peut soit être montée directement soit être utilisée comme image de conteneur de système de fichiers avec l'@uref{https://singularity.lbl.gov, Singularity container execution environment}, avec des commandes comme @command{singularity shell} ou @command{singularity exec}.

note: type: Plain text
en: Several command-line options allow you to customize your pack:
fr: Diverses options en ligne de commande vous permettent de personnaliser votre pack :

note: type: table
en: Produce a pack in the given @var{format}.
fr: Produire un pack dans le @var{format} donné.

note: type: table
en: The available formats are:
fr: Les formats disponibles sont :

note: type: table
en: This is the default format.  It produces a tarball containing all the specified binaries and symlinks.
fr: C'est le format par défaut.  Il produit une archive tar contenant tous les binaires et les liens symboliques spécifiés.

note: type: table
en: This produces a tarball that follows the @uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md, Docker Image Specification}.  The ``repository name'' as it appears in the output of the @command{docker images} command is computed from package names passed on the command line or in the manifest file.
fr: Cela produit une archive tar qui suit la @uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md, spécification des images Docker}.  Le « nom de dépôt » qui apparaît dans la sortie de la commande @command{docker images} est calculé à partir des noms des paquets passés sur la ligne de commande ou dans le fichier manifeste.

note: type: table
en: This produces a SquashFS image containing all the specified binaries and symlinks, as well as empty mount points for virtual file systems like procfs.
fr: Cela produit une image SquashFS contenant tous les binaires et liens symboliques spécifiés, ainsi que des points de montages vides pour les systèmes de fichiers virtuels comme procfs.

note: type: quotation
en: Singularity @emph{requires} you to provide @file{/bin/sh} in the image.  For that reason, @command{guix pack -f squashfs} always implies @code{-S /bin=bin}.  Thus, your @command{guix pack} invocation must always start with something like:
fr: Singularity @emph{requiert} que vous fournissiez @file{/bin/sh} dans l'image.  Pour cette raison, @command{guix pack -f squashfs} implique toujours @code{-S /bin=bin}.  Ainsi, votre invocation @command{guix pack} doit toujours commencer par quelque chose comme :

note: type: quotation
en: If you forget the @code{bash} (or similar) package, @command{singularity run} and @command{singularity exec} will fail with an unhelpful ``no such file or directory'' message.
fr: Si vous oubliez le paquet @code{bash} (ou similaire), @command{singularity run} et @command{singularity exec} vont échouer avec un message « no such file or directory » peu utile.

note: type: table
en: This produces a Debian archive (a package with the @samp{.deb} file extension) containing all the specified binaries and symbolic links, that can be installed on top of any dpkg-based GNU(/Linux) distribution.  Advanced options can be revealed via the @option{--help-deb-format} option.  They allow embedding control files for more fine-grained control, such as activating specific triggers or providing a maintainer configure script to run arbitrary setup code upon installation.
fr: Cela produit une archive Debian (un paquet avec l'extension @samp{.deb}) contenant tous les binaires et les liens symboliques spécifiés, qui peut être installée sur n'importe quelle distribution GNU(/Linux) basée sur dpkg. Vous trouverez des options avancées avec l'option @option{--help-deb-format}. Elles permettent d'insérer des fichiers control pour un contrôle plus fin, comme pour activer des trigger ou fournir un script de configuration pour mainteneur pour lancer du code de configuration arbitraire à l'installation.

note: type: quotation
en: Because archives produced with @command{guix pack} contain a collection of store items and because each @command{dpkg} package must not have conflicting files, in practice that means you likely won't be able to install more than one such archive on a given system.
fr: Comme les archives produites par @command{guix pack} contiennent une collection d'objets du dépôt et comme chaque paquet @command{dpkg} ne doit pas avoir de conflits de fichiers, en pratique cela signifie que vous ne pourrez sans doute pas installer plus d'une archive de ce genre sur un système donné.

note: type: quotation
en: @command{dpkg} will assume ownership of any files contained in the pack that it does @emph{not} know about.  It is unwise to install Guix-produced @samp{.deb} files on a system where @file{/gnu/store} is shared by other software, such as a Guix installation or other, non-deb packs.
fr: @command{dpkg} prendra possession de tout fichier contenu dans le pack qu'il ne connaît @emph{pas}. Il est peu avisé d'installer des fichiers @samp{.deb} produits par Guix sur un système où @file{/gnu/store} est partagé avec un autre logiciel, comme une installation de Guix ou d'autres packs non deb.

note: type: cindex
en: relocatable binaries
fr: binaires repositionnables

note: type: table
en: Produce @dfn{relocatable binaries}---i.e., binaries that can be placed anywhere in the file system hierarchy and run from there.
fr: Produire des @dfn{binaires repositionnables} — c.-à-d.@: des binaires que vous pouvez placer n'importe où dans l'arborescence du système de fichiers et les lancer à partir de là.

note: type: table
en: When this option is passed once, the resulting binaries require support for @dfn{user namespaces} in the kernel Linux; when passed @emph{twice}@footnote{Here's a trick to memorize it: @code{-RR}, which adds PRoot support, can be thought of as the abbreviation of ``Really Relocatable''.  Neat, isn't it?}, relocatable binaries fall to back to other techniques if user namespaces are unavailable, and essentially work anywhere---see below for the implications.
fr: Lorsque vous passez cette option une fois, les binaires qui en résultent demandent le support des @dfn{espaces de nom utilisateurs} dans le noyau Linux ; lorsque vous la passez @emph{deux fois}@footnote{Il y a une astuce pour s'en souvenir : on peut envisager @code{-RR}, qui ajoute le support PRoot, comme étant l'abréviation de « Réellement Repositionnable ».  Pas mal, hein ?}, les binaires repositionnables utilisent PRoot si les espaces de noms ne sont pas utilisables, et ça fonctionne à peu près partout — voir plus bas pour comprendre les implications.

note: type: table
en: For example, if you create a pack containing Bash with:
fr: Par exemple, si vous créez un pack contenant Bash avec :

note: type: table
en: ...@: you can copy that pack to a machine that lacks Guix, and from your home directory as a normal user, run:
fr: …@: vous pouvez copier ce pack sur une machine qui n'a pas Guix et depuis votre répertoire personnel en tant qu'utilisateur non-privilégié, lancer :

note: type: table
en: In that shell, if you type @code{ls /gnu/store}, you'll notice that @file{/gnu/store} shows up and contains all the dependencies of @code{bash}, even though the machine actually lacks @file{/gnu/store} altogether! That is probably the simplest way to deploy Guix-built software on a non-Guix machine.
fr: Dans ce shell, si vous tapez @code{ls /gnu/store}, vous remarquerez que @file{/gnu/store} apparaît et contient toutes les dépendances de @code{bash}, même si la machine n'a pas du tout de @file{/gnu/store} ! C'est sans doute la manière la plus simple de déployer du logiciel construit avec Guix sur une machine sans Guix.

note: type: quotation
en: By default, relocatable binaries rely on the @dfn{user namespace} feature of the kernel Linux, which allows unprivileged users to mount or change root.  Old versions of Linux did not support it, and some GNU/Linux distributions turn it off.
fr: Par défaut ,les binaires repositionnables s'appuient sur les @dfn{espaces de noms utilisateurs} du noyau Linux, qui permet à des utilisateurs non-privilégiés d'effectuer des montages et de changer de racine.  Les anciennes versions de Linux ne le supportait pas et certaines distributions GNU/Linux le désactive.

note: type: quotation
en: To produce relocatable binaries that work even in the absence of user namespaces, pass @option{--relocatable} or @option{-R} @emph{twice}.  In that case, binaries will try user namespace support and fall back to another @dfn{execution engine} if user namespaces are not supported.  The following execution engines are supported:
fr: Pour produire des binaires repositionnables qui fonctionnent même sans espace de nom utilisatrice·eur, passez @option{--relocatable} ou @option{-R} @emph{deux fois}.  Dans ce cas, les binaires testeront la prise en charge des espaces de noms utilisatrice·eur·s et utiliseront PRoot s'ils ne sont pas pris en charge. Les moteurs d'exécution suivants sont pris en charge :

note: type: table
en: Try user namespaces and fall back to PRoot if user namespaces are not supported (see below).
fr: Essayez les espaces de noms utilisateur·rice·s et revenez à PRoot si les espaces de noms utilisateur·rice·s ne sont pas pris en charge (voir ci-dessous).

note: type: table
en: Try user namespaces and fall back to Fakechroot if user namespaces are not supported (see below).
fr: Essayez les espaces de noms utilisateur·rice·s et revenez à Fakechroot si les espaces de noms utilisateur·rice·s ne sont pas pris en charge (voir ci-dessous).

note: type: item
en: userns
fr: users

note: type: table
en: Run the program through user namespaces and abort if they are not supported.
fr: Lance le programme à travers les espaces de nom utilisateur·rice et échoue s'ils ne sont pas supportés.

note: type: table
en: Run through PRoot.  The @uref{https://proot-me.github.io/, PRoot} program provides the necessary support for file system virtualization.  It achieves that by using the @code{ptrace} system call on the running program.  This approach has the advantage to work without requiring special kernel support, but it incurs run-time overhead every time a system call is made.
fr: Passez à travers PRoot. Le programme @uref{https://proot-me.github.io/, PRoot} fournit la prise en charge nécessaire pour la virtualisation du système de fichier.  Il y parvient en utilisant l'appel système @code{ptrace} sur le programme courant.  Cette approche a l'avantage de fonctionner sans demander de support spécial de la part du noyau, mais occasionne un coût supplémentaire en temps pour chaque appel système effectué.

note: type: table
en: Run through Fakechroot.  @uref{https://github.com/dex4er/fakechroot/, Fakechroot} virtualizes file system accesses by intercepting calls to C library functions such as @code{open}, @code{stat}, @code{exec}, and so on.  Unlike PRoot, it incurs very little overhead.  However, it does not always work: for example, some file system accesses made from within the C library are not intercepted, and file system accesses made @i{via} direct syscalls are not intercepted either, leading to erratic behavior.
fr: Passez à travers Fakechroot.  @uref{https://github.com/dex4er/fakechroot/, Fakechroot} virtualise les accès au système de fichier en interceptant les appels vers les fonctions de la bibliothèque C telles que @code{open}, @code{stat}, @code{exec}, et ainsi de suite. Contrairement à PRoot, il n'engendre que très peu de coûts généraux. Cependant, il ne fonctionne pas encore tout-à-fait : par exemple, certains accès au système de fichier effectués à partir de la bibliothèque C ne sont pas interceptés, et les accès au système de fichier effectués @i{via} les appels système directs ne sont pas non plus interceptés, conduisant à un comportement erratique.

note: type: quotation
en: When running a wrapped program, you can explicitly request one of the execution engines listed above by setting the @env{GUIX_EXECUTION_ENGINE} environment variable accordingly.
fr: Lors de l'exécution d'un programme complet, vous pouvez demander explicitement l'un des moteurs d'exécution énumérés ci-dessus en définissant en conséquence la variable d'environnement @env{GUIX_EXECUTION_ENGINE}.

note: type: cindex
en: entry point, for Docker images
fr: point d'entrée, pour les images Docker

note: type: item
en: --entry-point=@var{command}
fr: --entry-point=@var{commande}

note: type: table
en: Use @var{command} as the @dfn{entry point} of the resulting pack, if the pack format supports it---currently @code{docker} and @code{squashfs} (Singularity)  support it.  @var{command} must be relative to the profile contained in the pack.
fr: Utiliser @var{commande} comme @dfn{point d'entrée} du paquet résultant, si le format du paquet le supporte--actuellement @code{docker} et @code{squashfs} (Singularity) la supportent.  @var{command} doit être relatif au profil contenu dans le pack.

note: type: table
en: The entry point specifies the command that tools like @code{docker run} or @code{singularity run} automatically start by default.  For example, you can do:
fr: Le point d'entrée spécifie la commande que des outils comme @code{docker run} or @code{singularity run} lancent automatiquement par défaut. Par exemple, vous pouvez faire :

note: type: table
en: The resulting pack can easily be loaded and @code{docker run} with no extra arguments will spawn @code{bin/guile}:
fr: Le pack résultant peut être facilement chargé et @code{docker run} sans arguments supplémentaires engendrera @code{bin/guile} :

note: type: table
en: Consider the package @var{expr} evaluates to.
fr: Considérer le paquet évalué par @var{expr}.

note: type: table
en: This has the same purpose as the same-named option in @command{guix build} (@pxref{Additional Build Options, @option{--expression} in @command{guix build}}).
fr: Cela a le but identique que l'option de même nom de @command{guix build} (@pxref{Additional Build Options, @code{--expression} dans @command{guix build}}).

note: type: table
en: Use the packages contained in the manifest object returned by the Scheme code in @var{file}.  This option can be repeated several times, in which case the manifests are concatenated.
fr: Utiliser les paquets contenus dans l'objet manifeste renvoyé par le code Scheme dans @var{fichier}.  Vous pouvez répéter cette option plusieurs fois, auquel cas les manifestes sont concaténés.

note: type: table
en: This has a similar purpose as the same-named option in @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) and uses the same manifest files.  It allows you to define a collection of packages once and use it both for creating profiles and for creating archives for use on machines that do not have Guix installed.  Note that you can specify @emph{either} a manifest file @emph{or} a list of packages, but not both.
fr: Elle a un but similaire à l'option de même nom dans @command{guix package} (@pxref{profile-manifest, @option{--manifest}}) et utilise les mêmes fichiers manifeste.  Ils vous permettent de définir une collection de paquets une fois et de l'utiliser aussi bien pour créer des profils que pour créer des archives pour des machines qui n'ont pas Guix d'installé.  Remarquez que vous pouvez spécifier @emph{soit} un fichier manifeste, @emph{soit} une liste de paquet, mais pas les deux.

note: type: table
en: @xref{Writing Manifests}, for information on how to write a manifest.  @xref{shell-export-manifest, @command{guix shell --export-manifest}}, for information on how to ``convert'' command-line options into a manifest.
fr: @xref{Writing Manifests} pour des informations sur l'écriture d'un manifeste. @xref{shell-export-manifest, @command{guix shell --export-manifest}}, pour des informations sur la « conversion » des options de la ligne de commande en un manifeste.

note: type: cindex
en: cross-compilation
fr: compilation croisée

note: type: table
en: Cross-build for @var{triplet}, which must be a valid GNU triplet, such as @code{"aarch64-linux-gnu"} (@pxref{Specifying target triplets, GNU configuration triplets,, autoconf, Autoconf}).
fr: Effectuer une compilation croisée pour @var{triplet} qui doit être un triplet GNU valide, comme @code{""aarch64-linux-gnu""} (@pxref{Specifying target triplets, GNU configuration triplets,, autoconf, Autoconf}).

note: type: item
en: --compression=@var{tool}
fr: --compression=@var{outil}

note: type: itemx
en: -C @var{tool}
fr: -C @var{outil}

note: type: table
en: Compress the resulting tarball using @var{tool}---one of @code{gzip}, @code{zstd}, @code{bzip2}, @code{xz}, @code{lzip}, or @code{none} for no compression.
fr: Compresser l'archive résultante avec @var{outil} — l'un des outils parmi @code{gzip}, @code{zstd}, @code{bzip2}, @code{xz}, @code{lzip}, ou @code{none} pour aucune compression.

note: type: table
en: Add the symlinks specified by @var{spec} to the pack.  This option can appear several times.
fr: Ajouter les liens symboliques spécifiés par @var{spec} dans le pack.  Cette option peut apparaître plusieurs fois.

note: type: table
en: @var{spec} has the form @code{@var{source}=@var{target}}, where @var{source} is the symlink that will be created and @var{target} is the symlink target.
fr: @var{spec} a la forme @code{@var{source}=@var{cible}}, où @var{source} est le lien symbolique qui sera créé et @var{cible} est la cible du lien.

note: type: table
en: For instance, @code{-S /opt/gnu/bin=bin} creates a @file{/opt/gnu/bin} symlink pointing to the @file{bin} sub-directory of the profile.
fr: Par exemple, @code{-S /opt/gnu/bin=bin} crée un lien symbolique @file{/opt/gnu/bin} qui pointe vers le sous-répertoire @file{bin} du profil.

note: type: table
en: Save provenance information for the packages passed on the command line.  Provenance information includes the URL and commit of the channels in use (@pxref{Channels}).
fr: Sauvegarder les informations de provenance des paquets passés sur la ligne de commande.  Les informations de provenance contiennent l'URL et le commit des canaux utilisés (@pxref{Channels}).

note: type: table
en: Provenance information is saved in the @file{/gnu/store/@dots{}-profile/manifest} file in the pack, along with the usual package metadata---the name and version of each package, their propagated inputs, and so on.  It is useful information to the recipient of the pack, who then knows how the pack was (supposedly) obtained.
fr: Les informations de provenance sont sauvegardées dans le fichier @file{/gnu/store/@dots{}-profile/manifest} du pack, avec les métadonnées de paquets habituelles — le nom et la version de chaque paquet, leurs entrées propagées, etc.  Ce sont des informations utiles pour le destinataire du pack, qui sait alors comment le pack a (normalement) été obtenu.

note: type: table
en: This option is not enabled by default because, like timestamps, provenance information contributes nothing to the build process.  In other words, there is an infinity of channel URLs and commit IDs that can lead to the same pack.  Recording such ``silent'' metadata in the output thus potentially breaks the source-to-binary bitwise reproducibility property.
fr: Cette option n'est pas activée par défaut car, comme l'horodatage, les informations de provenance ne contribuent en rien au processus de construction.  En d'autres termes, il y a une infinité d'URL et d'ID de commit qui permettent d'obtenir le même pack.  Enregistrer de telles métadonnées « silencieuses » dans la sortie casse donc éventuellement la propriété de reproductibilité au bit près.

note: type: cindex
en: garbage collector root, for packs
fr: racines du ramasse-miettes, pour les packs

note: type: table
en: Make @var{file} a symlink to the resulting pack, and register it as a garbage collector root.
fr: Fait de @var{fichier} un lien symbolique vers le résultat, et l'enregistre en tant que racine du ramasse-miettes.

note: type: itemx
en: --profile-name=@var{name}
fr: --profile-name=@var{nom}

note: type: table
en: Include the ``local state directory'', @file{/var/guix}, in the resulting pack, and notably the @file{/var/guix/profiles/per-user/root/@var{name}} profile---by default @var{name} is @code{guix-profile}, which corresponds to @file{~root/.guix-profile}.
fr: Inclus le « répertoire d'état local », @file{/var/guix}, dans le lot qui en résulte, et notamment le profil @file{/var/guix/profiles/per-user/root/@var{nom}} — par défaut @var{nom} est @code{guix-profile}, ce qui correspond à @file{~root/.guix-profile}.

note: type: table
en: @file{/var/guix} contains the store database (@pxref{The Store}) as well as garbage-collector roots (@pxref{Invoking guix gc}).  Providing it in the pack means that the store is ``complete'' and manageable by Guix; not providing it pack means that the store is ``dead'': items cannot be added to it or removed from it after extraction of the pack.
fr: @file{/var/guix} contient la base de données du dépôt (@pxref{The Store}) ainsi que les racines du ramasse-miettes (@pxref{Invoking guix gc}).  Le fournir dans le pack signifie que le dépôt et « complet » et gérable par Guix ; ne pas le fournir dans le pack signifie que le dépôt est « mort » : aucun élément ne peut être ajouté ni enlevé après l'extraction du pack.

note: type: table
en: One use case for this is the Guix self-contained binary tarball (@pxref{Binary Installation}).
fr: Un cas d'utilisation est l'archive binaire indépendante de Guix (@pxref{Binary Installation}).

note: type: table
en: Print the name of the derivation that builds the pack.
fr: Affiche le nom de la dérivation que le pack construit.

note: type: table
en: Use the bootstrap binaries to build the pack.  This option is only useful to Guix developers.
fr: Utiliser les programmes d'amorçage pour construire le pack.  Cette option n'est utile que pour les personnes qui développent Guix.

note: type: Plain text
en: In addition, @command{guix pack} supports all the common build options (@pxref{Common Build Options}) and all the package transformation options (@pxref{Package Transformation Options}).
fr: En plus, @command{guix pack} supporte toutes les options de construction communes (@pxref{Common Build Options}) et toutes les options de transformation de paquets (@pxref{Package Transformation Options}).

note: type: cindex
en: toolchain, for C development
fr: chaîne d'outils, pour le développement en C

note: type: cindex
en: toolchain, for Fortran development
fr: chaîne d'outils, pour le développement en Fortran

note: type: Plain text
en: If you need a complete toolchain for compiling and linking C or C++ source code, use the @code{gcc-toolchain} package.  This package provides a complete GCC toolchain for C/C++ development, including GCC itself, the GNU C Library (headers and binaries, plus debugging symbols in the @code{debug} output), Binutils, and a linker wrapper.
fr: Guix offre des paquets de compilateurs individuels comme @code{gcc} mais si vous avez besoin d'une chaîne de compilation complète pour compiler et lier du code source, utilisez le paquet @code{gcc-toolchain}.  Ce paquet fournit une chaîne d'outils complète GCC pour le développement C/C++, dont GCC lui-même, la bibliothèque C de GNU (les en-têtes et les binaires, plus les symboles de débogage dans la sortie @code{debug}), Binutils et un wrapper pour l'éditeur de liens.

note: type: Plain text
en: The wrapper's purpose is to inspect the @code{-L} and @code{-l} switches passed to the linker, add corresponding @code{-rpath} arguments, and invoke the actual linker with this new set of arguments.  You can instruct the wrapper to refuse to link against libraries not in the store by setting the @env{GUIX_LD_WRAPPER_ALLOW_IMPURITIES} environment variable to @code{no}.
fr: Le rôle de l'enveloppe est d'inspecter les paramètres @code{-L} et @code{-l} passés à l'éditeur de liens, d'ajouter des arguments @code{-rpath} correspondants et d'invoquer l'actuel éditeur de liens avec ce nouvel ensemble d'arguments.  Vous pouvez dire au wrapper de refuser de lier les programmes à des bibliothèques en dehors du dépôt en paramétrant la variable d'environnement @env{GUIX_LD_WRAPPER_ALLOW_IMPURITIES} sur @code{no}.

note: type: Plain text
en: The package @code{gfortran-toolchain} provides a complete GCC toolchain for Fortran development.  For other languages, please use @samp{guix search gcc toolchain} (@pxref{guix-search,, Invoking guix package}).
fr: Le paquet @code{gfortran-toolchain} fournit une chaîne d'outils GCC complète pour le développement en Fortran. Pour d'autres langages, veuillez utiliser @samp{guix search gcc toolchain} (@pxref{guix-search,, Invoquer guix package}).

note: type: section
en: Invoking @command{guix git authenticate}
fr: Invoquer @command{guix git authenticate}

note: type: Plain text
en: The @command{guix git authenticate} command authenticates a Git checkout following the same rule as for channels (@pxref{channel-authentication, channel authentication}).  That is, starting from a given commit, it ensures that all subsequent commits are signed by an OpenPGP key whose fingerprint appears in the @file{.guix-authorizations} file of its parent commit(s).
fr: La commande @command{guix git authenticate} authentifie un checkout Git en suivant la même règle que pour les canaux (@pxref{channel-authentication, channel authentication}).  C'est-à-dire qu'à partir d'un commit donné, il s'assure que tous les commit suivants sont signés par une clé OpenPGP dont l'empreinte digitale apparaît dans le fichier @file{.guix-authorizations} de son ou ses commit(s) parent(s).

note: type: Plain text
en: You will find this command useful if you maintain a channel.  But in fact, this authentication mechanism is useful in a broader context, so you might want to use it for Git repositories that have nothing to do with Guix.
fr: Vous allez trouver cette commande utile si vous maintenez un canal. Mais en fait, ce mécanisme d'authentification est utile dans un contexte plus large, Vous pourriez donc vouloir l'utiliser pour des dépôts Git qui n'ont rien à voir avec Guix.

note: type: Plain text
en: By default, this command authenticates the Git checkout in the current directory; it outputs nothing and exits with exit code zero on success and non-zero on failure.  @var{commit} above denotes the first commit where authentication takes place, and @var{signer} is the OpenPGP fingerprint of public key used to sign @var{commit}.  Together, they form a ``channel introduction'' (@pxref{channel-authentication, channel introduction}).  The options below allow you to fine-tune the process.
fr: Par défaut, cette commande authentifie le chekout Git dans le répertoire courant ; il ne produit rien et sort avec le code de sortie zéro en cas de succès et non zéro en cas d'échec. @var{commit} ci-dessus désigne le premier commit où l'authentification a lieu, et @var{signer} est l'empreinte OpenPGP de la clé publique utilisée pour signer @var{commit}.  Ensemble, ils forment une «introduction de canal» (@pxref{channel-authentication, introduction de canal}).  Les options ci-dessous vous permettent d'affiner le processus.

note: type: item
en: --repository=@var{directory}
fr: --repository=@var{répertoire}

note: type: itemx
en: -r @var{directory}
fr: -r @var{répertoire}

note: type: table
en: Open the Git repository in @var{directory} instead of the current directory.
fr: Ouvre le dépôt Git dans @var{directory} au lieu du répertoire courant.

note: type: item
en: --keyring=@var{reference}
fr: --keyring=@var{référence}

note: type: itemx
en: -k @var{reference}
fr: -k @var{féférence}

note: type: table
en: Load OpenPGP keyring from @var{reference}, the reference of a branch such as @code{origin/keyring} or @code{my-keyring}.  The branch must contain OpenPGP public keys in @file{.key} files, either in binary form or ``ASCII-armored''.  By default the keyring is loaded from the branch named @code{keyring}.
fr: Chargez le porte-clés OpenPGP à partir de @var{référence}, la référence d'une branche telle que @code{origin/keyring} ou @code{my-keyring}.  La branche doit contenir des clés publiques OpenPGP dans des fichiers @file{.key}, soit sous forme binaire, soit "blindée ASCII".  Par défaut, le porte-clés est chargé à partir de la branche nommée @code{keyring}.

note: type: table
en: Display commit signing statistics upon completion.
fr: Affiche les statistiques sur les signatures de commits à l'issue de la procédure.

note: type: table
en: Previously-authenticated commits are cached in a file under @file{~/.cache/guix/authentication}.  This option forces the cache to be stored in file @var{key} in that directory.
fr: Les commits préalablement authentifiés sont mis en cache dans un fichier sous @file{~/.cache/guix/authentication}.  Cette option force le cache à être stocké dans le fichier @var{key} de ce répertoire.

note: type: item
en: --historical-authorizations=@var{file}
fr: --historical-authorizations=@var{fichier}

note: type: table
en: By default, any commit whose parent commit(s) lack the @file{.guix-authorizations} file is considered inauthentic.  In contrast, this option considers the authorizations in @var{file} for any commit that lacks @file{.guix-authorizations}.  The format of @var{file} is the same as that of @file{.guix-authorizations} (@pxref{channel-authorizations, @file{.guix-authorizations} format}).
fr: Par défaut, tout commit dont le(s) commit(s) parent(s) ne contient(nt) pas le fichier @file{.guix-authorizations} est considéré comme non authentique.  En revanche, cette option considère les autorisations dans @var{file} pour tout commit dont le fichier @file{.guix-authorizations} est manquant.  Le format de @var{file} est le même que celui de @file{.guix-authorizations} (au format @pxref{channel-authorizations, @file{.guix-autorizations}}).

note: type: Plain text
en: GNU Guix provides several Scheme programming interfaces (APIs) to define, build, and query packages.  The first interface allows users to write high-level package definitions.  These definitions refer to familiar packaging concepts, such as the name and version of a package, its build system, and its dependencies.  These definitions can then be turned into concrete build actions.
fr: GNU Guix fournit diverses interface de programmation Scheme (API) qui pour définir, construire et faire des requêtes sur des paquets.  La première interface permet aux utilisateurs d'écrire des définitions de paquets de haut-niveau.  Ces définitions se réfèrent à des concepts de création de paquets familiers, comme le nom et la version du paquet, son système de construction et ses dépendances.  Ces définitions peuvent ensuite être transformées en actions concrètes lors de la construction.

note: type: Plain text
en: Build actions are performed by the Guix daemon, on behalf of users.  In a standard setup, the daemon has write access to the store---the @file{/gnu/store} directory---whereas users do not.  The recommended setup also has the daemon perform builds in chroots, under specific build users, to minimize interference with the rest of the system.
fr: Les actions de construction sont effectuées par le démon Guix, pour le compte des utilisateur·rice·s.  Dans un environnement standard, le démon possède les droits en écriture sur le dépôt — le répertoire @file{/gnu/store} — mais pas les utilisateur·rice·s.  La configuration recommandée permet aussi au démon d'effectuer la construction dans des chroots, à l'adresse des utilisateur·rice·s de construction spécifiques, pour minimiser les interférences avec le reste du système.

note: type: Plain text
en: Lower-level APIs are available to interact with the daemon and the store.  To instruct the daemon to perform a build action, users actually provide it with a @dfn{derivation}.  A derivation is a low-level representation of the build actions to be taken, and the environment in which they should occur---derivations are to package definitions what assembly is to C programs.  The term ``derivation'' comes from the fact that build results @emph{derive} from them.
fr: Il y a des API de plus bas niveau pour interagir avec le démon et le dépôt.  Pour demander au démon d'effectuer une action de construction, les utilisateurs lui donnent en fait une @dfn{dérivation}.  Une dérivation est une représentation à bas-niveau des actions de construction à entreprendre et l'environnement dans lequel elles devraient avoir lieu — les dérivations sont aux définitions de paquets ce que l'assembleur est aux programmes C.  Le terme de « dérivation » vient du fait que les résultats de la construction en @emph{dérivent}.

note: type: Plain text
en: This chapter describes all these APIs in turn, starting from high-level package definitions.
fr: Ce chapitre décrit toutes ces API tour à tour, à partir des définitions de paquets à haut-niveau.

note: type: menuentry
en: Programming Guix in Guile
fr: Programmer Guix dans Guile

note: type: Plain text
en: From a programming viewpoint, the package definitions of the GNU distribution are provided by Guile modules in the @code{(gnu packages @dots{})} name space@footnote{Note that packages under the @code{(gnu packages @dots{})} module name space are not necessarily ``GNU packages''.  This module naming scheme follows the usual Guile module naming convention: @code{gnu} means that these modules are distributed as part of the GNU system, and @code{packages} identifies modules that define packages.} (@pxref{Modules, Guile modules,, guile, GNU Guile Reference Manual}).  For instance, the @code{(gnu packages emacs)} module exports a variable named @code{emacs}, which is bound to a @code{<package>} object (@pxref{Defining Packages}).
fr: D'un point de vue programmatique, les définitions de paquets de la distribution GNU sont fournies par des modules Guile dans l'espace de noms @code{(gnu packages @dots{})}@footnote{Remarquez que les paquets sous l'espace de nom @code{(gnu packages @dots{})} ne sont pas nécessairement des « paquets GNU ».  Le nom de ce module suit la convention de nommage usuelle de Guile : @code{gnu} signifie que ces modules sont distribués dans le système GNU, et @code{packages} identifie les modules qui définissent les paquets.} (@pxref{Modules, Guile modules,, guile, GNU Guile Reference Manual}).  Par exemple, le module @code{(gnu packages emacs)} exporte une variable nommée @code{emacs}, qui est liée à un objet @code{<package>} (@pxref{Defining Packages}).

note: type: Plain text
en: The @code{(gnu packages @dots{})} module name space is automatically scanned for packages by the command-line tools.  For instance, when running @code{guix install emacs}, all the @code{(gnu packages @dots{})} modules are scanned until one that exports a package object whose name is @code{emacs} is found.  This package search facility is implemented in the @code{(gnu packages)} module.
fr: L'espace de nom @code{(gnu packages @dots{})} est automatiquement scanné par les outils en ligne de commande.  Par exemple, lorsque vous lancez @code{guix install emacs}, tous les modules @code{(gnu packages @dots{})} sont scannés jusqu'à en trouver un qui exporte un objet de paquet dont le nom est @code{emacs}.  Cette capacité à chercher des paquets est implémentée dans le module @code{(gnu packages)}.

note: type: cindex
en: package module search path
fr: chemin de recherche des modules de paquets

note: type: Plain text
en: Users can store package definitions in modules with different names---e.g., @code{(my-packages emacs)}@footnote{Note that the file name and module name must match.  For instance, the @code{(my-packages emacs)} module must be stored in a @file{my-packages/emacs.scm} file relative to the load path specified with @option{--load-path} or @env{GUIX_PACKAGE_PATH}.  @xref{Modules and the File System,,, guile, GNU Guile Reference Manual}, for details.}.  There are two ways to make these package definitions visible to the user interfaces:
fr: Les utilisateur·rice·s peuvent stocker les définitions de paquets dans des modules ayant des noms différents---par exemple, @code{(my-packages emacs)}@footnote{Remarquez que le nom du fichier et le nom du module doivent correspondre.  Par exemple, le module @code{(my-packages emacs)} doit être stocké dans un fichier @file{my-packages/emacs.scm} relatif au chemin de chargement spécifié avec @option{--load-path} ou @env{GUIX_PACKAGE_PATH}.  @xref{Modules and the File System,,, guile, GNU Guile Reference Manual}, pour plus de détails.}.  Il y a deux façons de rendre ces définitions de paquets visibles pour les interfaces utilisateur·rice :

note: type: enumerate
en: By adding the directory containing your package modules to the search path with the @code{-L} flag of @command{guix package} and other commands (@pxref{Common Build Options}), or by setting the @env{GUIX_PACKAGE_PATH} environment variable described below.
fr: En ajoutant le répertoire contenant vos modules de paquets au chemin de recherche avec le tag @code{-L} de @command{guix package} et des autres commandes (@pxref{Common Build Options}) ou en indiquant la variable d'environnement @env{GUIX_PACKAGE_PATH} décrite plus bas.

note: type: enumerate
en: By defining a @dfn{channel} and configuring @command{guix pull} so that it pulls from it.  A channel is essentially a Git repository containing package modules.  @xref{Channels}, for more information on how to define and use channels.
fr: En définissant un @dfn{canal} et en configurant @command{guix pull} pour qu'il l'utilise.  Un canal est en substance un dépôt Git contenant des modules de paquets.  @xref{Channels}, pour plus d'informations sur comment définir et utiliser des canaux.

note: type: Plain text
en: @env{GUIX_PACKAGE_PATH} works similarly to other search path variables:
fr: @env{GUIX_PACKAGE_PATH} fonctionne comme les autres variables de chemins de recherche :

note: type: defvr
en: {Environment Variable} GUIX_PACKAGE_PATH
fr: {Variable d'environnement} GUIX_PACKAGE_PATH

note: type: defvr
en: This is a colon-separated list of directories to search for additional package modules.  Directories listed in this variable take precedence over the own modules of the distribution.
fr: C'est une liste séparée par des deux-points de répertoires dans lesquels trouver des modules de paquets supplémentaires.  Les répertoires listés dans cette variable sont prioritaires par rapport aux paquets de la distribution.

note: type: Plain text
en: The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}: each package is built based solely on other packages in the distribution.  The root of this dependency graph is a small set of @dfn{bootstrap binaries}, provided by the @code{(gnu packages bootstrap)} module.  For more information on bootstrapping, @pxref{Bootstrapping}.
fr: La distribution est entièrement @dfn{bootstrappée} et @dfn{auto-contenue} : chaque paquet est construit uniquement à partir d'autres paquets de la distribution.  La racine de ce graphe de dépendance est un petit ensemble de @dfn{binaires de bootstrap} fournis par le module @code{(gnu packages bootstrap)}.  Pour plus d'informations sur le bootstrap, @pxref{Bootstrapping}.

note: type: Plain text
en: The high-level interface to package definitions is implemented in the @code{(guix packages)} and @code{(guix build-system)} modules.  As an example, the package definition, or @dfn{recipe}, for the GNU Hello package looks like this:
fr: L'interface de haut-niveau pour les définitions de paquets est implémentée dans les modules @code{(guix packages)} et @code{(guix build-system)}.  Par exemple, la définition du paquet, ou la @dfn{recette}, du paquet GNU Hello ressemble à cela :

note: type: Plain text
en: Without being a Scheme expert, the reader may have guessed the meaning of the various fields here.  This expression binds the variable @code{hello} to a @code{<package>} object, which is essentially a record (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}).  This package object can be inspected using procedures found in the @code{(guix packages)} module; for instance, @code{(package-name hello)} returns---surprise!---@code{"hello"}.
fr: Sans être expert·e en Scheme, on peut comprendre la signification des différents champs présents.  Cette expression lie la variable @code{hello} à un objet @code{<package>}, qui est en substance un enregistrement (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}).  On peut inspecter cet objet de paquet avec les procédures qui se trouvent dans le module @code{(guix packages)} ; par exemple, @code{(package-name hello)} renvoie — ô surprise ! — @code{"hello"}.

note: type: Plain text
en: With luck, you may be able to import part or all of the definition of the package you are interested in from another repository, using the @code{guix import} command (@pxref{Invoking guix import}).
fr: Avec un peu de chance, vous pourrez importer tout ou partie de la définition du paquet qui vous intéresse depuis un autre répertoire avec la commande @code{guix import} (@pxref{Invoking guix import}).

note: type: Plain text
en: In the example above, @code{hello} is defined in a module of its own, @code{(gnu packages hello)}.  Technically, this is not strictly necessary, but it is convenient to do so: all the packages defined in modules under @code{(gnu packages @dots{})} are automatically known to the command-line tools (@pxref{Package Modules}).
fr: Dans l'exemple précédent, @code{hello} est défini dans un module à part, @code{(gnu packages hello)}.  Techniquement, cela n'est pas strictement nécessaire, mais c'est pratique : tous les paquets définis dans des modules sous @code{(gnu packages @dots{})} sont automatiquement connus des outils en ligne de commande (@pxref{Package Modules}).

note: type: Plain text
en: There are a few points worth noting in the above package definition:
fr: Il y a quelques points à remarquer dans la définition de paquet précédente :

note: type: itemize
en: The @code{source} field of the package is an @code{<origin>} object (@pxref{origin Reference}, for the complete reference).  Here, the @code{url-fetch} method from @code{(guix download)} is used, meaning that the source is a file to be downloaded over FTP or HTTP.
fr: Le champ @code{source} du paquet est un objet @code{<origin>} (@pxref{origin Reference}, pour la référence complète).  Ici, on utilise la méthode @code{url-fetch} de @code{(guix download)}, ce qui signifie que la source est un fichier à télécharger par FTP ou HTTP.

note: type: itemize
en: The @code{mirror://gnu} prefix instructs @code{url-fetch} to use one of the GNU mirrors defined in @code{(guix download)}.
fr: Le préfixe @code{mirror://gnu} demande à @code{url-fetch} d'utiliser l'un des miroirs GNU définis dans @code{(guix download)}.

note: type: itemize
en: The @code{sha256} field specifies the expected SHA256 hash of the file being downloaded.  It is mandatory, and allows Guix to check the integrity of the file.  The @code{(base32 @dots{})} form introduces the base32 representation of the hash.  You can obtain this information with @code{guix download} (@pxref{Invoking guix download}) and @code{guix hash} (@pxref{Invoking guix hash}).
fr: Le champ @code{sha256} spécifie le hash SHA256 attendu pour le fichier téléchargé.  Il est requis et permet à Guix de vérifier l'intégrité du fichier.  La forme @code{(base32 @dots{})} introduit a représentation en base32 du hash.  Vous pouvez obtenir cette information avec @code{guix download} (@pxref{Invoking guix download}) et @code{guix hash} (@pxref{Invoking guix hash}).

note: type: cindex
en: patches
fr: correctifs

note: type: itemize
en: When needed, the @code{origin} form can also have a @code{patches} field listing patches to be applied, and a @code{snippet} field giving a Scheme expression to modify the source code.
fr: Lorsque cela est requis, la forme @code{origin} peut aussi avec un champ @code{patches} qui liste les correctifs à appliquer et un champ @code{snippet} qui donne une expression Scheme pour modifier le code source.

note: type: cindex
en: GNU Build System
fr: Système de construction GNU

note: type: itemize
en: The @code{build-system} field specifies the procedure to build the package (@pxref{Build Systems}).  Here, @code{gnu-build-system} represents the familiar GNU Build System, where packages may be configured, built, and installed with the usual @code{./configure && make && make check && make install} command sequence.
fr: Le champ @code{build-system} spécifie la procédure pour construire le paquet (@pxref{Build Systems}).  Ici, @code{gnu-build-system} représente le système de construction GNU familier, où les paquets peuvent être configurés, construits et installés avec la séquence @code{./configure && make && make check && make install} habituelle.

note: type: itemize
en: When you start packaging non-trivial software, you may need tools to manipulate those build phases, manipulate files, and so on.  @xref{Build Utilities}, for more on this.
fr: Lorsque vous commencez à empaqueter des logiciels non triviaux, vous pouvez avoir besoin d'outils pour manipuler ces phases de construction, manipuler des fichiers, etc.  @xref{Build Utilities}, pour en savoir plus.

note: type: itemize
en: The @code{arguments} field specifies options for the build system (@pxref{Build Systems}).  Here it is interpreted by @code{gnu-build-system} as a request run @file{configure} with the @option{--enable-silent-rules} flag.
fr: Le champ @code{arguments} spécifie des options pour le système de construction (@pxref{Build Systems}).  Ici il est interprété par @code{gnu-build-system} comme une demande de lancer @file{configure} avec le tag @option{--enable-silent-rules}.

note: type: cindex
en: backquote (quasiquote)
fr: accent grave (quasiquote)

note: type: cindex
en: comma (unquote)
fr: virgule (unquote)

note: type: itemize
en: What about these quote (@code{'}) characters? They are Scheme syntax to introduce a literal list; @code{'} is synonymous with @code{quote}.  Sometimes you'll also see @code{`} (a backquote, synonymous with @code{quasiquote}) and @code{,} (a comma, synonymous with @code{unquote}).  @xref{Expression Syntax, quoting,, guile, GNU Guile Reference Manual}, for details.  Here the value of the @code{arguments} field is a list of arguments passed to the build system down the road, as with @code{apply} (@pxref{Fly Evaluation, @code{apply},, guile, GNU Guile Reference Manual}).
fr: Que sont ces apostrophes (@code{'}) ?  C'est de la syntaxe Scheme pour introduire une liste ; @code{'} est synonyme de la fonction @code{quote}.   Parfois vous verrez aussi @code{`} (un accent grave synonyme de @code{quasiquote}) et @code{,} (une virgule, synonyme de @code{unquote}).  @xref{Expression Syntax, quoting,, guile, GNU Guile Reference Manual}, pour des détails.  Ice la valeur du champ @code{arguments} est une liste d'arguments passés au système de construction plus tard, comme avec @code{apply}  (@pxref{Fly Evaluation, @code{apply},, guile, GNU Guile Reference Manual}).

note: type: itemize
en: The hash-colon (@code{#:}) sequence defines a Scheme @dfn{keyword} (@pxref{Keywords,,, guile, GNU Guile Reference Manual}), and @code{#:configure-flags} is a keyword used to pass a keyword argument to the build system (@pxref{Coding With Keywords,,, guile, GNU Guile Reference Manual}).
fr: La séquence dièse-deux-points (@code{#:}) définie un @dfn{mot-clef} Scheme (@pxref{Keywords,,, guile, GNU Guile Reference Manual}), et @code{#:configure-flags} est un mot-clef utilisé pour passer un argument au système de construction (@pxref{Coding With Keywords,,, guile, GNU Guile Reference Manual}).

note: type: itemize
en: The @code{inputs} field specifies inputs to the build process---i.e., build-time or run-time dependencies of the package.  Here, we add an input, a reference to the @code{gawk} variable; @code{gawk} is itself bound to a @code{<package>} object.
fr: Le champ @code{inputs} spécifie les entrées du processus de construction — c.-à-d.@: les dépendances à la construction ou à l'exécution du paquet.  Ici, nous ajoutons en entrée une référence à la variable @code{gawk} ; @code{gawk} est lui-même lié à un objet @code{<package>}.

note: type: itemize
en: Note that GCC, Coreutils, Bash, and other essential tools do not need to be specified as inputs here.  Instead, @code{gnu-build-system} takes care of ensuring that they are present (@pxref{Build Systems}).
fr: Remarquez que GCC, Coreutils, Bash et les autres outils essentiels n'ont pas besoin d'être spécifiés en tant qu'entrées ici.  À la place, le @code{gnu-build-system} est en mesure de s'assurer qu'ils sont présents (@pxref{Build Systems}).

note: type: itemize
en: However, any other dependencies need to be specified in the @code{inputs} field.  Any dependency not specified here will simply be unavailable to the build process, possibly leading to a build failure.
fr: Cependant, toutes les autres dépendances doivent être spécifiées dans le champ @code{inputs}.  Toute dépendance qui ne serait pas spécifiée ici sera simplement indisponible pour le processus de construction, ce qui peut mener à un échec de la construction.

note: type: Plain text
en: @xref{package Reference}, for a full description of possible fields.
fr: @xref{package Reference}, pour une description complète des champs possibles.

note: type: cindex
en: Scheme programming language, getting started
fr: Langage de programmation Scheme, débuter

note: type: quotation
en: Intimidated by the Scheme language or curious about it? The Cookbook has a short section to get started that recaps some of the things shown above and explains the fundamentals.  @xref{A Scheme Crash Course,,, guix-cookbook, GNU Guix Cookbook}, for more information.
fr: Vous vous sentez intimidé·e par le langage Scheme ou vous êtes curieux·se de le découvrir ? Le livre de recettes a une petite section pour démarrer qui résume une partie de ce qui a été montré au-dessus et explique les bases. @xref{Cours accéléré du langage Scheme,,, guix-cookbook.fr, le livre de recettes de GNU Guix}, pour plus d'information.

note: type: Plain text
en: Once a package definition is in place, the package may actually be built using the @code{guix build} command-line tool (@pxref{Invoking guix build}), troubleshooting any build failures you encounter (@pxref{Debugging Build Failures}).  You can easily jump back to the package definition using the @command{guix edit} command (@pxref{Invoking guix edit}).  @xref{Packaging Guidelines}, for more information on how to test package definitions, and @ref{Invoking guix lint}, for information on how to check a definition for style conformance.
fr: Lorsqu'une définition de paquet est en place, le paquet peut enfin être construit avec l'outil en ligne de commande @code{guix build}  (@pxref{Invoking guix build}), pour résoudre les échecs de construction que vous pourriez rencontrer (@pxref{Debugging Build Failures}).  Vous pouvez aisément revenir à la définition du paquet avec la commande @command{guix edit} (@pxref{Invoking guix edit}).  @xref{Packaging Guidelines}, pour plus d'informations sur la manière de tester des définitions de paquets et @ref{Invoking guix lint}, pour des informations sur la manière de vérifier que la définition respecte les conventions de style.

note: type: Plain text
en: Lastly, @pxref{Channels}, for information on how to extend the distribution by adding your own package definitions in a ``channel''.
fr: Enfin, @pxref{Channels} pour des informations sur la manière d'étendre la distribution en ajoutant vos propres définitions de paquets dans un « canal ».

note: type: Plain text
en: Finally, updating the package definition to a new upstream version can be partly automated by the @command{guix refresh} command (@pxref{Invoking guix refresh}).
fr: Finalement, la mise à jour de la définition du paquet à une nouvelle version amont peut en partie s'automatiser avec la commande @command{guix refresh} (@pxref{Invoking guix refresh}).

note: type: Plain text
en: Behind the scenes, a derivation corresponding to the @code{<package>} object is first computed by the @code{package-derivation} procedure.  That derivation is stored in a @file{.drv} file under @file{/gnu/store}.  The build actions it prescribes may then be realized by using the @code{build-derivations} procedure (@pxref{The Store}).
fr: Sous le capot, une dérivation qui correspond à un objet @code{<package>} est d'abord calculé par la procédure @code{package-derivation}.  Cette dérivation est stockée dans un fichier @file{.drv} dans @file{/gnu/store}.  Les actions de construction qu'il prescrit peuvent ensuite être réalisées par la procédure @code{build-derivation} (@pxref{The Store}).

note: type: deffn
en: {Scheme Procedure} package-derivation @var{store} @var{package} [@var{system}]
fr: {Procédure Scheme} package-derivation @var{store} @var{package} [@var{system}]

note: type: deffn
en: Return the @code{<derivation>} object of @var{package} for @var{system} (@pxref{Derivations}).
fr: Renvoie l'objet @code{<derivation>} du @var{paquet} pour le @var{système} (@pxref{Derivations}).

note: type: deffn
en: @var{package} must be a valid @code{<package>} object, and @var{system} must be a string denoting the target system type---e.g., @code{"x86_64-linux"} for an x86_64 Linux-based GNU system.  @var{store} must be a connection to the daemon, which operates on the store (@pxref{The Store}).
fr: @var{paquet} doit être un objet @code{<package>} valide et @var{système} une chaîne indiquant le type de système cible — p.@: ex.@: @code{"x86_64-linux"} pour un système GNU x86_64 basé sur Linux.  @var{dépôt} doit être une connexion au démon, qui opère sur les dépôt (@pxref{The Store}).

note: type: Plain text
en: Similarly, it is possible to compute a derivation that cross-builds a package for some other system:
fr: De manière identique, il est possible de calculer une dérivation qui effectue une compilation croisée d'un paquet pour un autre système :

note: type: deffn
en: {Scheme Procedure} package-cross-derivation @var{store} @
fr: {Procédure Scheme} package-cross-derivation @var{store} @

note: type: deffn
en: @var{package} @var{target} [@var{system}] Return the @code{<derivation>} object of @var{package} cross-built from @var{system} to @var{target}.
fr: @var{paquet} @var{cible} [@var{système}] renvoie l'objet @code{<derivation>} du @var{paquet} construit depuis @var{système} pour @var{cible}.

note: type: deffn
en: @var{target} must be a valid GNU triplet denoting the target hardware and operating system, such as @code{"aarch64-linux-gnu"} (@pxref{Specifying Target Triplets,,, autoconf, Autoconf}).
fr: @var{cible} doit être un triplet GNU valide indiquant le matériel cible et le système d'exploitation, comme @code{"aarch64-linux-gnu"} (@pxref{Specifying Target Triplets,,, autoconf, Autoconf}).

note: type: Plain text
en: Once you have package definitions, you can easily define @emph{variants} of those packages.  @xref{Defining Package Variants}, for more on that.
fr: Une fois qu'on a une définition de paquet, on peut facilement définir des @emph{variantes} du paquet.  @xref{Defining Package Variants}, pour plus d'informations.

note: type: subsection
en: @code{package} Reference
fr: Référence de @code{package}

note: type: Plain text
en: This section summarizes all the options available in @code{package} declarations (@pxref{Defining Packages}).
fr: Cette section résume toutes les options disponibles dans les déclarations @code{package} (@pxref{Defining Packages}).

note: type: deftp
en: {Data Type} package
fr: {Type de données} package

note: type: deftp
en: This is the data type representing a package recipe.
fr: C'est le type de donnée représentant une recette de paquets.

note: type: table
en: The name of the package, as a string.
fr: Le nom du paquet, comme une chaîne de caractères.

note: type: table
en: The version of the package, as a string.  @xref{Version Numbers}, for guidelines.
fr: La version du paquet, comme une chaine de caractères.  @xref{Version Numbers}, pour un guide.

note: type: table
en: An object telling how the source code for the package should be acquired.  Most of the time, this is an @code{origin} object, which denotes a file fetched from the Internet (@pxref{origin Reference}).  It can also be any other ``file-like'' object such as a @code{local-file}, which denotes a file from the local file system (@pxref{G-Expressions, @code{local-file}}).
fr: Un objet qui indique comment le code source du paquet devrait être récupéré.  La plupart du temps, c'est un objet @code{origin} qui indique un fichier récupéré depuis internet (@pxref{origin Reference}).  Il peut aussi s'agir de tout autre objet « simili-fichier » comme un @code{local-file} qui indique un fichier du système de fichier local (@pxref{G-Expressions, @code{local-file}}).

note: type: table
en: The build system that should be used to build the package (@pxref{Build Systems}).
fr: Le système de construction qui devrait être utilisé pour construire le paquet (@pxref{Build Systems}).

note: type: item
en: @code{arguments} (default: @code{'()})
fr: @code{arguments} (par défaut : @code{'()})

note: type: table
en: The arguments that should be passed to the build system (@pxref{Build Systems}).  This is a list, typically containing sequential keyword-value pairs, as in this example:
fr: Les arguments à passer au système de construction (@pxref{Build Systems}). C'est une liste qui contient typiquement une séquence de paires de clefs-valeurs, comme dans cet exemple :

note: type: lisp
en: (package
      (name "example")
      ;; several fields omitted
      (arguments
        (list #:tests? #f                     ;skip tests
              #:make-flags #~'("VERBOSE=1")   ;pass flags to 'make'
              #:configure-flags #~'("--enable-frobbing"))))
fr: (package
      (name "exemple")
      ;; plusieurs champs omis
      (arguments
        (list #:tests? #f                     ;passer les tests
              #:make-flags #~'("VERBOSE=1")   ;passer les arguments à « make »
              #:configure-flags #~'("--enable-frobbing"))))

note: type: table
en: The exact set of supported keywords depends on the build system (@pxref{Build Systems}), but you will find that almost all of them honor @code{#:configure-flags}, @code{#:make-flags}, @code{#:tests?}, and @code{#:phases}.  The @code{#:phases} keyword in particular lets you modify the set of build phases for your package (@pxref{Build Phases}).
fr: L'ensemble exact des mots-clés pris en charge dépend du système de construction (@pxref{Build Systems}), mais vous trouverez qu'ils prennent presque tous en compte @code{#:configure-flags}, @code{#:make-flags}, @code{#:tests?} et @code{#:phases}. Le mot-clé @code{#:phases} en particulier vous permet de modifier l'ensemble des phases de construction pour votre paquet (@pxref{Build Phases}).

note: type: item
en: @code{inputs} (default: @code{'()})
fr: @code{inputs} (par défaut : @code{'()})

note: type: itemx
en: @code{native-inputs} (default: @code{'()})
fr: @code{native-inputs} (par défaut : @code{'()})

note: type: itemx
en: @code{propagated-inputs} (default: @code{'()})
fr: @code{propagated-inputs} (par défaut : @code{'()})

note: type: cindex
en: inputs, of packages
fr: entrées, des paquets

note: type: table
en: These fields list dependencies of the package.  Each element of these lists is either a package, origin, or other ``file-like object'' (@pxref{G-Expressions}); to specify the output of that file-like object that should be used, pass a two-element list where the second element is the output (@pxref{Packages with Multiple Outputs}, for more on package outputs).  For example, the list below specifies three inputs:
fr: Ces champs listent les dépendances du paquet.  Chacune de ces listes est soit un paquet, une origine ou un autre « objet simili-fichier » (@pxref{G-Expressions}) ; pour spécifier la sortie de cet objet simili-fichier à utiliser, passez une liste à deux éléments où le second élément est la sortie (@pxref{Packages with Multiple Outputs}, pour plus d'informations sur les sorties des paquets).  Par exemple, la liste suivante spécifie trois entrées :

note: type: lisp
en: (list libffi libunistring
          `(,glib "bin"))      ;the "bin" output of GLib
fr: (list libffi libunistring
          `(,glib "bin"))      ;la sortie « bin » de GLib

note: type: table
en: In the example above, the @code{"out"} output of @code{libffi} and @code{libunistring} is used.
fr: Dans l'exemple au-dessus, on utilise la sortie @code{"out"} de @code{libffi} et de @code{libunistring}.

note: type: quotation
en: Compatibility Note
fr: Notes de compatibilité

note: type: quotation
en: Until version 1.3.0, input lists were a list of tuples, where each tuple has a label for the input (a string) as its first element, a package, origin, or derivation as its second element, and optionally the name of the output thereof that should be used, which defaults to @code{"out"}.  For example, the list below is equivalent to the one above, but using the @dfn{old input style}:
fr: Jusqu'à la version 1.3.0, les listes d'entrées étaient des listes de tuples, où chaque tuple a une étiquette pour une entrée (une chaîne de caractères) comme premier élément, un paquet, une origine ou une dérivation comme deuxième élément et éventuellement le nom d'une sortie à utiliser qui est @code{"out"} par défaut.  Par exemple, la liste ci-dessous est équivalente à celle au-dessus, mais utilise @dfn{l'ancien style d'entrées} :

note: type: lisp
en: ;; Old input style (deprecated).
    `(("libffi" ,libffi)
      ("libunistring" ,libunistring)
      ("glib:bin" ,glib "bin"))  ;the "bin" output of GLib
fr: ;; Ancien style d'entrées (obsolète)
    `(("libffi" ,libffi)
      ("libunistring" ,libunistring)
      ("glib:bin" ,glib "bin"))  ;la sortie "bin" de Glib

note: type: quotation
en: This style is now deprecated; it is still supported but support will be removed in a future version.  It should not be used for new package definitions.  @xref{Invoking guix style}, on how to migrate to the new style.
fr: Ce style est maintenant obsolète ; il est toujours pris en charge mais la prise en charge sera supprimée dans une future version. Vous ne devriez pas l'utiliser pour de nouvelles définitions de paquets. @xref{Invoking guix style}, pour apprendre à migrer vers le nouveau style.

note: type: cindex
en: cross compilation, package dependencies
fr: compilation croisée, dépendances des paquets

note: type: table
en: The distinction between @code{native-inputs} and @code{inputs} is necessary when considering cross-compilation.  When cross-compiling, dependencies listed in @code{inputs} are built for the @emph{target} architecture; conversely, dependencies listed in @code{native-inputs} are built for the architecture of the @emph{build} machine.
fr: La distinction entre @code{native-inputs} et @code{inputs} est nécessaire lorsqu'on considère la compilation croisée.  Lors d'une compilation croisée, les dépendances listées dans @code{inputs} sont construites pour l'architecture @emph{cible} ; inversement, les dépendances listées dans @code{native-inputs} sont construites pour l'architecture de la machine de @emph{construction}.

note: type: table
en: @code{native-inputs} is typically used to list tools needed at build time, but not at run time, such as Autoconf, Automake, pkg-config, Gettext, or Bison.  @command{guix lint} can report likely mistakes in this area (@pxref{Invoking guix lint}).
fr: @code{native-inputs} est typiquement utilisé pour lister les outils requis à la construction mais pas à l'exécution, comme Autoconf, Automake, pkg-config, Gettext ou Bison.  @command{guix lint} peut rapporter des erreurs de ce type (@pxref{Invoking guix lint}).

note: type: table
en: Lastly, @code{propagated-inputs} is similar to @code{inputs}, but the specified packages will be automatically installed to profiles (@pxref{Features, the role of profiles in Guix}) alongside the package they belong to (@pxref{package-cmd-propagated-inputs, @command{guix package}}, for information on how @command{guix package} deals with propagated inputs).
fr: Enfin, @code{propagated-inputs} est similaire à @code{inputs}, mais les paquets spécifiés seront automatiquement installés sur les profils (@pxref{Features, le rôle des profils dans Guix}) à côté du paquet auquel ils appartiennent (@pxref{package-cmd-propagated-inputs, @command{guix package}}, pour savoir comment @command{guix package} traite les entrées propagées).

note: type: table
en: For example this is necessary when packaging a C/C++ library that needs headers of another library to compile, or when a pkg-config file refers to another one @i{via} its @code{Requires} field.
fr: Par exemple, cela est nécessaire lors de l'empaquetage d'une bibliothèque C/C++ qui a besoin des en-têtes d'une autre bibliothèque pour se compiler, ou lorsqu'un fichier pkg-config fait référence à un autre @i{via} son champ @code{Requires}.

note: type: table
en: Another example where @code{propagated-inputs} is useful is for languages that lack a facility to record the run-time search path akin to the @code{RUNPATH} of ELF files; this includes Guile, Python, Perl, and more.  When packaging libraries written in those languages, ensure they can find library code they depend on at run time by listing run-time dependencies in @code{propagated-inputs} rather than @code{inputs}.
fr: Un autre exemple où le @code{propagated-inputs} est utile, c'est pour les langues qui ne disposent pas de la possibilité d'enregistrer le chemin de recherche à l'exécution comme le @code{RUNPATH} des fichiers ELF ; cela inclut Guile, Python, Perl, et plus encore.  Lors de l'empaquetage de bibliothèques écrites dans ces langages, assurez-vous qu'elles peuvent trouver le code de bibliothèque dont elles dépendent au moment de l'exécution en listant les dépendances d'exécution dans @code{propagated-inputs} plutôt que @code{inputs}.

note: type: item
en: @code{outputs} (default: @code{'("out")})
fr: @code{outputs} (par défaut : @code{'("out")})

note: type: table
en: The list of output names of the package.  @xref{Packages with Multiple Outputs}, for typical uses of additional outputs.
fr: La liste des noms de sorties du paquet.  @xref{Packages with Multiple Outputs}, pour des exemples typiques d'utilisation de sorties supplémentaires.

note: type: item
en: @code{native-search-paths} (default: @code{'()})
fr: @code{native-search-paths} (par défaut : @code{'()})

note: type: item
en: @code{search-paths} (default: @code{'()})
fr: @code{search-paths} (par défaut : @code{'()})

note: type: table
en: A list of @code{search-path-specification} objects describing search-path environment variables honored by the package.  @xref{Search Paths}, for more on search path specifications.
fr: Une liste d'objets @code{search-path-specification} décrivant les variables d'environnement de recherche de chemins que ce paquet prend en compte. @xref{Search Paths}, pour plus de détails sur les spécifications de chemins de recherche.

note: type: table
en: As for inputs, the distinction between @code{native-search-paths} and @code{search-paths} only matters when cross-compiling.  In a cross-compilation context, @code{native-search-paths} applies exclusively to native inputs whereas @code{search-paths} applies only to host inputs.
fr: Comme pour les entrées, la distinction entre @code{native-search-paths} et @code{search-paths} n'est importante que pour la compilation croisée. Lors d'une compilation croisée, @code{native-search-paths} ne s'applique qu'aux entrées natives alors que @code{search-paths} ne s'applique qu'aux entrées hôtes.

note: type: table
en: Packages such as cross-compilers care about target inputs---for instance, our (modified) GCC cross-compiler has @env{CROSS_C_INCLUDE_PATH} in @code{search-paths}, which allows it to pick @file{.h} files for the target system and @emph{not} those of native inputs.  For the majority of packages though, only @code{native-search-paths} makes sense.
fr: Les paquets comme les compilateurs croisées font attention aux entrées de la cible --- par exemple notre compilateur GCC croisé (modifié) a @env{CROSS_C_INCLUDE_PATH} dans @code{search-paths}, ce qui lui permet de trouver les fichiers @file{.h} du système cible et @emph{pas} ceux des entrées natives. Pour la plupart des paquets cependant, seul @code{native-search-paths} a du sens.

note: type: item
en: @code{replacement} (default: @code{#f})
fr: @code{replacement} (par défaut : @code{#f})

note: type: table
en: This must be either @code{#f} or a package object that will be used as a @dfn{replacement} for this package.  @xref{Security Updates, grafts}, for details.
fr: Ce champ doit être soit @code{#f} soit un objet de paquet qui sera utilisé comme @dfn{remplaçant} de ce paquet.  @xref{Security Updates, grafts}, pour plus de détails.

note: type: table
en: A one-line description of the package.
fr: Une description sur une ligne du paquet.

note: type: table
en: A more elaborate description of the package, as a string in Texinfo syntax.
fr: Une description plus détaillée du paquet, en tant que chaine au format Texinfo.

note: type: cindex
en: license, of packages
fr: licence, des paquets

note: type: table
en: The license of the package; a value from @code{(guix licenses)}, or a list of such values.
fr: La licence du paquet ; une valeur tirée de @code{(guix licenses)} ou une liste de ces valeurs.

note: type: table
en: The URL to the home-page of the package, as a string.
fr: L'URL de la page d'accueil du paquet, en tant que chaîne de caractères.

note: type: item
en: @code{supported-systems} (default: @code{%supported-systems})
fr: @code{supported-systems} (par défaut : @code{%supported-systems})

note: type: table
en: The list of systems supported by the package, as strings of the form @code{architecture-kernel}, for example @code{"x86_64-linux"}.
fr: La liste des systèmes supportés par le paquet, comme des chaînes de caractères de la forme @code{architecture-noyau}, par exemple @code{"x86_64-linux"}.

note: type: item
en: @code{location} (default: source location of the @code{package} form)
fr: @code{location} (par défaut : emplacement de la source de la forme @code{package})

note: type: table
en: The source location of the package.  It is useful to override this when inheriting from another package, in which case this field is not automatically corrected.
fr: L'emplacement de la source du paquet.  C'est utile de le remplacer lorsqu'on hérite d'un autre paquet, auquel cas ce champ n'est pas automatiquement corrigé.

note: type: deffn
en: {Scheme Syntax} this-package
fr: {Syntaxe Scheme} this-package

note: type: deffn
en: When used in the @emph{lexical scope} of a package field definition, this identifier resolves to the package being defined.
fr: Lorsque vous l'utilisez dans la @emph{portée lexicale} du champ d'une définition de paquet, cet identifiant est résolu comme étant le paquet définit.

note: type: deffn
en: The example below shows how to add a package as a native input of itself when cross-compiling:
fr: L'exemple ci-dessous montre l'ajout d'un paquet comme entrée native de lui-même pour la compilation croisée :

note: type: lisp
en:   ;; When cross-compiled, Guile, for example, depends on
      ;; a native version of itself.  Add it here.
      (native-inputs (if (%current-target-system)
                         (list this-package)
                         '())))
fr:   ;; Lors de la compilation croisée, Guile par exemple dépend
      ;; d'une version native de lui-même. On l'ajoute ici.
      (native-inputs (if (%current-target-system)
                         (list this-package)
                         '())))

note: type: deffn
en: It is an error to refer to @code{this-package} outside a package definition.
fr: C'est une erreur que de se référer à @code{this-package} en dehors de la définition d'un paquet.

note: type: Plain text
en: The following helper procedures are provided to help deal with package inputs.
fr: Les procédures auxiliaires suivantes vous aideront à utiliser les entrées des paquets.

note: type: deffn
en: {Scheme Procedure} lookup-package-input @var{package} @var{name}
fr: {Procédure Scheme} lookup-package-input @var{package} @var{name}

note: type: deffnx
en: {Scheme Procedure} lookup-package-native-input @var{package} @var{name}
fr: {Procédure Scheme} lookup-package-native-input @var{package} @var{name}

note: type: deffnx
en: {Scheme Procedure} lookup-package-propagated-input @var{package} @var{name}
fr: {Procédure Scheme} lookup-package-propagated-input @var{package} @var{name}

note: type: deffnx
en: {Scheme Procedure} lookup-package-direct-input @var{package} @var{name}
fr: {Procédure Scheme} lookup-package-direct-input @var{package} @var{name}

note: type: deffn
en: Look up @var{name} among @var{package}'s inputs (or native, propagated, or direct inputs).  Return it if found, @code{#f} otherwise.
fr: Cherche @var{name} dans les entrées de @var{package} (ou les entrées natives, propagées ou directes). Renvoie l'entrée si elle la trouve, et @code{#f} sinon.

note: type: deffn
en: @var{name} is the name of a package depended on.  Here's how you might use it:
fr: @var{name} est le nom d'un paquet de dépendance. Voici comment vous pouvez l'utiliser :

note: type: deffn
en: In this example we obtain the @code{gmp} package that is among the direct inputs of @code{coreutils}.
fr: Dans cet exemple, on obtient le paquet @code{gmp} qui fait partie des entrées directes de @code{coreutils}.

note: type: cindex
en: development inputs, of a package
fr: entrées de développement, d'un paquet

note: type: cindex
en: implicit inputs, of a package
fr: entrées implicites, d'un paquet

note: type: Plain text
en: Sometimes you will want to obtain the list of inputs needed to @emph{develop} a package---all the inputs that are visible when the package is compiled.  This is what the @code{package-development-inputs} procedure returns.
fr: Parfois vous voudrez obtenir la liste des entrées requises pour @emph{développer} un paquet — toutes les entrées visibles quand le paquet est compilé. C'est ce que la procédure @code{package-development-inputs} renvoie.

note: type: deffn
en: {Scheme Procedure} package-development-inputs @var{package} @
fr: {Procédure Scheme} package-development-inputs @var{package} @

note: type: deffn
en: [@var{system}] [#:target #f] Return the list of inputs required by @var{package} for development purposes on @var{system}.  When @var{target} is true, return the inputs needed to cross-compile @var{package} from @var{system} to @var{target}, where @var{target} is a triplet such as @code{"aarch64-linux-gnu"}.
fr: [@var{system}] [#:target #f]
    Renvoie la liste des entrées requises par @var{package} pour le développement sur @var{system}. Lorsque @var{target} est vrai, les entrées renvoyées sont celles requises pour la compilation croisée de @var{package} de @var{system} vers @var{target}, où @var{target} est un triplet comme @code{"aarch64-linux-gnu"}.

note: type: deffn
en: Note that the result includes both explicit inputs and implicit inputs---inputs automatically added by the build system (@pxref{Build Systems}).  Let us take the @code{hello} package to illustrate that:
fr: Remarquez que le résultat inclus à la fois les entrées explicites et implicites — les entrées ajoutées automatiquement par le système de construction (@pxref{Build Systems}). Prenons le paquet @code{hello} pour illustrer :

note: type: deffn
en: In this example, @code{package-direct-inputs} returns the empty list, because @code{hello} has zero explicit dependencies.  Conversely, @code{package-development-inputs} includes inputs implicitly added by @code{gnu-build-system} that are required to build @code{hello}: tar, gzip, GCC, libc, Bash, and more.  To visualize it, @command{guix graph hello} would show you explicit inputs, whereas @command{guix graph -t bag hello} would include implicit inputs (@pxref{Invoking guix graph}).
fr: Dans cet exemple, @code{package-direct-inputs} renvoie la liste vide, parce que @code{hello} n'a pas de dépendance explicite. À l'inverse, @code{package-development-inputs} inclut les entrées implicites ajoutées par @code{gnu-build-system} qui sont requises pour construire @code{hello} : tar, gzip, GCC, libc, Bash et d'autres. Pour les visualiser, @command{guix graph hello} montrerait les entrées explicites, alors que @command{guix graph -t bag hello} inclurait les entrées implicites (@pxref{Invoking guix graph}).

note: type: Plain text
en: Because packages are regular Scheme objects that capture a complete dependency graph and associated build procedures, it is often useful to write procedures that take a package and return a modified version thereof according to some parameters.  Below are a few examples.
fr: Comme les paquets sont des objets Scheme réguliers qui capturent un graphe de dépendance complet et les procédures de construction associées, il est souvent utile d'écrire des procédures qui prennent un paquet et renvoient une version modifiée de celui-ci en fonction de certains paramètres.  En voici quelques exemples.

note: type: cindex
en: tool chain, choosing a package's tool chain
fr: chaîne d'outils, choisir la chaîne d'outils d'un paquet

note: type: deffn
en: {Scheme Procedure} package-with-c-toolchain @var{package} @var{toolchain}
fr: {Procédure Scheme} package-with-c-toolchain @var{package} @var{toolchain}

note: type: deffn
en: Return a variant of @var{package} that uses @var{toolchain} instead of the default GNU C/C++ toolchain.  @var{toolchain} must be a list of inputs (label/package tuples) providing equivalent functionality, such as the @code{gcc-toolchain} package.
fr: Renvoie une variante de @var{package} qui utilise @var{toolchain} au lieu de la chaîne d'outils GNU C/C++ par défaut.  @var{toolchain} doit être une liste d'entrées (tuples label/package) fournissant une fonctionnalité équivalente, comme le paquet @code{gcc-toolchain}.

note: type: deffn
en: The example below returns a variant of the @code{hello} package built with GCC@tie{}10.x and the rest of the GNU tool chain (Binutils and the GNU C Library) instead of the default tool chain:
fr: L'exemple ci-dessous renvoie une variante du paquet @code{hello} construit avec GCC@tie{}10.x et le reste de la chaîne d'outils GNU (Binutils et la bibliothèque C GNU) au lieu de la chaîne d'outils par défaut :

note: type: deffn
en: The build tool chain is part of the @dfn{implicit inputs} of packages---it's usually not listed as part of the various ``inputs'' fields and is instead pulled in by the build system.  Consequently, this procedure works by changing the build system of @var{package} so that it pulls in @var{toolchain} instead of the defaults.  @ref{Build Systems}, for more on build systems.
fr: La chaîne d'outils de construction fait partie des @dfn{entrées implicites} des paquets--- elle n'est généralement pas listée comme faisant partie des différents champs "entrées" et est à la place récupérée par le système de construction.  Par conséquent, cette procédure fonctionne en modifiant le système de compilation de @var{paquet} de sorte qu'il utilise @var{toolchain} au lieu des valeurs par défaut.  @ref{Build Systems}, pour en savoir plus sur les systèmes de construction.

note: type: subsection
en: @code{origin} Reference
fr: Référence de @code{origin}

note: type: Plain text
en: This section documents @dfn{origins}.  An @code{origin} declaration specifies data that must be ``produced''---downloaded, usually---and whose content hash is known in advance.  Origins are primarily used to represent the source code of packages (@pxref{Defining Packages}).  For that reason, the @code{origin} form allows you to declare patches to apply to the original source code as well as code snippets to modify it.
fr: Cette section documente @dfn{origins}.  Une déclaration @code{origin} spécifie les données qui doivent être "produites" -- téléchargées, généralement -- et dont le contenu est connu à l'avance.  Les origines sont principalement utilisées pour représenter le code source des paquets (@pxref{Defining Packages}).  Pour cette raison, le formulaire @code{origin} permet de déclarer des correctifs à appliquer au code source original ainsi que des bribes de code pour le modifier.

note: type: deftp
en: {Data Type} origin
fr: {Type de données} origin

note: type: deftp
en: This is the data type representing a source code origin.
fr: C'est le type de donnée qui représente l'origine d'un code source.

note: type: table
en: An object containing the URI of the source.  The object type depends on the @code{method} (see below).  For example, when using the @var{url-fetch} method of @code{(guix download)}, the valid @code{uri} values are: a URL represented as a string, or a list thereof.
fr: Un objet contenant l'URI de la source.  Le type d'objet dépend de la @code{method} (voir plus bas).  Par exemple, avec la méthode @var{url-fetch} de @code{(guix download)}, les valeurs valide d'@code{uri} sont : une URL représentée par une chaîne de caractères, ou une liste de chaînes de caractères.

note: type: cindex
en: fixed-output derivations, for download
fr: dérivations à sortie fixe, pour télécharger

note: type: table
en: A monadic procedure that handles the given URI@.  The procedure must accept at least three arguments: the value of the @code{uri} field and the hash algorithm and hash value specified by the @code{hash} field.  It must return a store item or a derivation in the store monad (@pxref{The Store Monad}); most methods return a fixed-output derivation (@pxref{Derivations}).
fr: Une procédure monadique qui gère l'URI donné.  La procédure doit accepter au moins trois arguments : la valeur du champ @code{uri} et l'algorithme de hachage et la valeur de hachage spécifiée par le champ @code{hash}.  Elle doit renvoyer un élément du dépôt ou une dérivation dans la monade du dépôt (@pxref{The Store Monad}) ; la plupart des méthodes renvoient une dérivation à sortie fixe (@pxref{Derivations}).

note: type: table
en: Commonly used methods include @code{url-fetch}, which fetches data from a URL, and @code{git-fetch}, which fetches data from a Git repository (see below).
fr: Les méthodes couramment utilisées comprennent @code{url-fetch}, qui récupère les données à partir d'une URL, et @code{git-fetch}, qui récupère les données à partir d'un dépôt Git (voir ci-dessous).

note: type: table
en: A bytevector containing the SHA-256 hash of the source.  This is equivalent to providing a @code{content-hash} SHA256 object in the @code{hash} field described below.
fr: Un bytevector contenant le hachage SHA-256 de la source.  Cela équivaut à fournir un @code{content-hash} Objet SHA256 dans le champ @code{hash} décrit ci-dessous.

note: type: table
en: The @code{content-hash} object of the source---see below for how to use @code{content-hash}.
fr: L'objet @code{content-hash} de la source--voir ci-dessous pour savoir comment utiliser @code{content-hash}.

note: type: table
en: You can obtain this information using @code{guix download} (@pxref{Invoking guix download}) or @code{guix hash} (@pxref{Invoking guix hash}).
fr: Vous pouvez obtenir cette information avec @code{guix download} (@pxref{Invoking guix download}) ou @code{guix hash} (@pxref{Invoking guix hash}).

note: type: item
en: @code{file-name} (default: @code{#f})
fr: @code{file-name} (par défaut : @code{#f})

note: type: table
en: The file name under which the source code should be saved.  When this is @code{#f}, a sensible default value will be used in most cases.  In case the source is fetched from a URL, the file name from the URL will be used.  For version control checkouts, it is recommended to provide the file name explicitly because the default is not very descriptive.
fr: Le nom de fichier à utiliser pour sauvegarder le fichier.  Lorsqu'elle est à @code{#f}, une valeur par défaut raisonnable est utilisée dans la plupart des cas.  Dans le cas où la source est récupérée depuis une URL, le nom de fichier est celui de l'URL.  Pour les sources récupérées depuis un outil de contrôle de version, il est recommandé de fournir un nom de fichier explicitement parce que le nom par défaut n'est pas très descriptif.

note: type: item
en: @code{patches} (default: @code{'()})
fr: @code{patches} (par défaut : @code{'()})

note: type: table
en: A list of file names, origins, or file-like objects (@pxref{G-Expressions, file-like objects}) pointing to patches to be applied to the source.
fr: Une liste de noms de fichiers, d'origines ou d'objets simili-fichiers (@pxref{G-Expressions, file-like objects}) qui pointent vers des correctifs à appliquer sur la source.

note: type: table
en: This list of patches must be unconditional.  In particular, it cannot depend on the value of @code{%current-system} or @code{%current-target-system}.
fr: Cette liste de correctifs doit être inconditionnelle.  En particulier, elle ne peut pas dépendre des valeurs de @code{%current-system} ou @code{%current-target-system}.

note: type: item
en: @code{snippet} (default: @code{#f})
fr: @code{snippet} (par défaut : @code{#f})

note: type: table
en: A G-expression (@pxref{G-Expressions}) or S-expression that will be run in the source directory.  This is a convenient way to modify the source, sometimes more convenient than a patch.
fr: Une G-expression (@pxref{G-Expressions}) ou une S-expression qui sera lancée dans le répertoire des sources.  C'est une manière pratique de modifier la source, parfois plus qu'un correctif.

note: type: item
en: @code{patch-flags} (default: @code{'("-p1")})
fr: @code{patch-flags} (par défaut : @code{'("-p1")})

note: type: table
en: A list of command-line flags that should be passed to the @code{patch} command.
fr: Une liste de drapeaux à passer à la commande @code{patch}.

note: type: item
en: @code{patch-inputs} (default: @code{#f})
fr: @code{patch-inputs} (par défaut : @code{#f})

note: type: table
en: Input packages or derivations to the patching process.  When this is @code{#f}, the usual set of inputs necessary for patching are provided, such as GNU@tie{}Patch.
fr: Paquets d'entrées ou dérivations pour le processus de correction.  Lorsqu'elle est à @code{#f}, l'ensemble d'entrées habituellement nécessaire pour appliquer des correctifs est fournit, comme GNU@tie{}Patch.

note: type: item
en: @code{modules} (default: @code{'()})
fr: @code{modules} (par défaut : @code{'()})

note: type: table
en: A list of Guile modules that should be loaded during the patching process and while running the code in the @code{snippet} field.
fr: Une liste de modules Guile qui devraient être chargés pendant le processus de correction et pendant que le lancement du code du champ @code{snippet}.

note: type: item
en: @code{patch-guile} (default: @code{#f})
fr: @code{patch-guile} (par défaut : @code{#f})

note: type: table
en: The Guile package that should be used in the patching process.  When this is @code{#f}, a sensible default is used.
fr: Le paquet Guile à utiliser dans le processus de correction.  Lorsqu'elle est à @code{#f}, une valeur par défaut raisonnable est utilisée.

note: type: deftp
en: Construct a content hash object for the given @var{algorithm}, and with @var{value} as its hash value.  When @var{algorithm} is omitted, assume it is @code{sha256}.
fr: Construire un objet de hash de contenu pour l'@var{algorithme} donné, et avec @var{valeur} comme valeur de hachage.  Lorsque @var{algorithme} est omis, on suppose qu'il s'agit de @code{sha256}.

note: type: deftp
en: @var{value} can be a literal string, in which case it is base32-decoded, or it can be a bytevector.
fr: @var{value} peut être une chaîne littérale, auquel cas elle est décodée en base32, ou il peut s'agir d'un bytevecteur.

note: type: deftp
en: The following forms are all equivalent:
fr: Les options suivantes sont équivalentes :

note: type: deftp
en: Technically, @code{content-hash} is currently implemented as a macro.  It performs sanity checks at macro-expansion time, when possible, such as ensuring that @var{value} has the right size for @var{algorithm}.
fr: Techniquement, le @code{content-hash} est actuellement mis en œuvre sous forme de macro.  Il effectue des contrôles de bon sens au moment de l'expansion de la macro, lorsque cela est possible, en s'assurant par exemple que @var{valeur} a la bonne taille pour @var{algorithme}.

note: type: Plain text
en: As we have seen above, how exactly the data an origin refers to is retrieved is determined by its @code{method} field.  The @code{(guix download)} module provides the most common method, @code{url-fetch}, described below.
fr: Comme nous l'avons vu plus haut, la manière dont les données auxquelles une origine se réfère exactement sont récupérées est déterminée par son champ @code{method}.  Le module @code{(guix download)} fournit la méthode la plus courante, @code{url-fetch}, décrite ci-dessous.

note: type: deffn
en: {Scheme Procedure} url-fetch @var{url} @var{hash-algo} @var{hash} @
fr: {Procédure Scheme} url-fetch @var{url} @var{hash-algo} @var{hash} @

note: type: deffn
en: [name] [#:executable? #f] Return a fixed-output derivation that fetches data from @var{url} (a string, or a list of strings denoting alternate URLs), which is expected to have hash @var{hash} of type @var{hash-algo} (a symbol).  By default, the file name is the base name of URL; optionally, @var{name} can specify a different file name.  When @var{executable?} is true, make the downloaded file executable.
fr: [name] [#:executable ? #f] Renvoie une dérivation à sortie fixe qui récupère les données de @var{url} (une chaîne de caractères, ou une liste de chaînes de caractères désignant des URLs alternatives), qui est censée avoir un hash @var{hash} de type @var{hash-algo} (un symbole).  Par défaut, le nom du fichier est le nom de base de l'URL ; en option, @var{nom} peut spécifier un nom de fichier différent.  Lorsque @var{executable?} est vrai, rendez le fichier téléchargé exécutable.

note: type: deffn
en: When one of the URL starts with @code{mirror://}, then its host part is interpreted as the name of a mirror scheme, taken from @file{%mirror-file}.
fr: Lorsque l'une des URL commence par @code{mirror://}, sa partie hôte est alors interprétée comme le nom d'un schéma de miroir, tiré de @file{%mirror-file}.

note: type: deffn
en: Alternatively, when URL starts with @code{file://}, return the corresponding file name in the store.
fr: Alternativement, lorsque l'URL commence par @code{file://}, renvoie le nom du fichier correspondant dans le dépôt.

note: type: Plain text
en: Likewise, the @code{(guix git-download)} module defines the @code{git-fetch} origin method, which fetches data from a Git version control repository, and the @code{git-reference} data type to describe the repository and revision to fetch.
fr: De même, le module @code{(guix git-download)} définit la méthode d'origine @code{git-download}, qui récupère les données d'un dépôt de contrôle de version Git, et le type de données @code{git-reference} pour décrire le dépôt et la révision à récupérer.

note: type: deffn
en: {Scheme Procedure} git-fetch @var{ref} @var{hash-algo} @var{hash}
fr: {Procédure Scheme} git-fetch @var{ref} @var{hash-algo} @var{hash}

note: type: deffn
en: Return a fixed-output derivation that fetches @var{ref}, a @code{<git-reference>} object.  The output is expected to have recursive hash @var{hash} of type @var{hash-algo} (a symbol).  Use @var{name} as the file name, or a generic name if @code{#f}.
fr: Renvoie une dérivation à sortie fixe qui va chercher @var{ref}, un objet @code{<git-reference>}.  La sortie est censée avoir un hash récursif @var{hash} de type @var{hash-algo} (un symbole).  Utilisez @var{name} comme nom de fichier, ou un nom générique si @code{#f}.

note: type: deftp
en: {Data Type} git-reference
fr: {Type de données} git-reference

note: type: deftp
en: This data type represents a Git reference for @code{git-fetch} to retrieve.
fr: Ce type de données représente une référence Git pour le @code{git-fetch} à récupérer.

note: type: table
en: The URL of the Git repository to clone.
fr: L'URL du dépôt Git à cloner.

note: type: table
en: This string denotes either the commit to fetch (a hexadecimal string), or the tag to fetch.  You can also use a ``short'' commit ID or a @command{git describe} style identifier such as @code{v1.0.1-10-g58d7909c97}.
fr: Cette chaîne indique soit le commit à récupérer (une chaîne hexadécimale), soit le tag à récupérer. Vous pouvez aussi utiliser une chaîne de commit « courte » ou un identifiant dans le style de @command{git describe} comme @code{v1.0.1-10-g58d7909c97}.

note: type: item
en: @code{recursive?} (default: @code{#f})
fr: @code{recursive?} (par défaut : @code{#f})

note: type: table
en: This Boolean indicates whether to recursively fetch Git sub-modules.
fr: Ce booléen indique s'il faut aller chercher récursivement les sous-modules de Git.

note: type: deftp
en: The example below denotes the @code{v2.10} tag of the GNU@tie{}Hello repository:
fr: L'exemple ci-dessous indique la balise @code{v2.10} du dépôt GNU@tie{}Hello :

note: type: deftp
en: This is equivalent to the reference below, which explicitly names the commit:
fr: C'est équivalent à la référence ci-dessous, qui nomme explicitement le commit :

note: type: Plain text
en: For Mercurial repositories, the module @code{(guix hg-download)} defines the @code{hg-fetch} origin method and @code{hg-reference} data type for support of the Mercurial version control system.
fr: Pour les dépôts Mercurial, le module @code{(guix hg-download)} définit la méthode d'origine @code{hg-download} et le type de données @code{hg-reference} pour la prise en charge du système de contrôle de version Mercurial.

note: type: deffn
en: {Scheme Procedure} hg-fetch @var{ref} @var{hash-algo} @var{hash} @
fr: {Procédure Scheme} hg-fetch @var{ref} @var{hash-algo} @var{hash} @

note: type: deffn
en: [name] Return a fixed-output derivation that fetches @var{ref}, a @code{<hg-reference>} object.  The output is expected to have recursive hash @var{hash} of type @var{hash-algo} (a symbol).  Use @var{name} as the file name, or a generic name if @code{#false}.
fr: [name]
    Renvoie une dérivation à sortie fixe qui va chercher @var{ref}, un objet @code{<hg-reference>}.  La sortie est censée avoir un hash récursif @var{hash} de type @var{hash-algo} (un symbole).  Utilisez @var{name} comme nom de fichier, ou un nom générique si @code{#false}.

note: type: cindex
en: customizing packages
fr: personnalisation des paquets

note: type: cindex
en: variants, of packages
fr: variantes, des paquets

note: type: Plain text
en: One of the nice things with Guix is that, given a package definition, you can easily @emph{derive} variants of that package---for a different upstream version, with different dependencies, different compilation options, and so on.  Some of these custom packages can be defined straight from the command line (@pxref{Package Transformation Options}).  This section describes how to define package variants in code.  This can be useful in ``manifests'' (@pxref{Writing Manifests})  and in your own package collection (@pxref{Creating a Channel}), among others!
fr: L'une des choses intéressantes avec Guix est qu'à partir d'une définition, on peut facilement @emph{dériver} des variantes du paquet --- pour une version en amont différente, avec des dépendances différentes, des options de compilation différentes, etc.  Certains de ces paquets personnalisés peuvent être définis directement par la ligne de commande (@pxref{Package Transformation Options}).  Cette section décrit comment définir des variantes de paquets avec du code.  Cela est utile dans les « manifestes »  (@pxref{Writing Manifests}) et dans votre propre collection de paquets (@pxref{Creating a Channel}), entre autres choses !

note: type: cindex
en: inherit, for package definitions
fr: héritage, pour les définitions des paquets

note: type: Plain text
en: As discussed earlier, packages are first-class objects in the Scheme language.  The @code{(guix packages)} module provides the @code{package} construct to define new package objects (@pxref{package Reference}).  The easiest way to define a package variant is using the @code{inherit} keyword together with @code{package}.  This allows you to inherit from a package definition while overriding the fields you want.
fr: Comme nous en avons parlé plus tôt, les paquets sont des objets de première classe dans le langage Scheme.  Le module @code{(guix packages)} fournit la construction @code{package} pour définir de nouveaux objets de paquets (@pxref{package Reference}).  La manière la plus simple de définir la variante d'un paquet est d'utiliser le mot-clé @code{inherit} avec @code{package}.  Cela vous permet d'hériter la définition d'un paquet tout en redéfinissant les champs que vous voulez.

note: type: Plain text
en: For example, given the @code{hello} variable, which contains a definition for the current version of GNU@tie{}Hello, here's how you would define a variant for version 2.2 (released in 2006, it's vintage!):
fr: Par exemple, étant donné la variable @code{hello}, qui contient la définition d'une version récente de GNU@tie{}Hello, voici comment définir une variante pour la version 2.2 (publiée en 2006, c'est vintage !) :

note: type: lisp
en: (use-modules (gnu packages base))    ;for 'hello'
fr: (use-modules (gnu packages base))    ;pour 'hello'

note: type: Plain text
en: The example above corresponds to what the @option{--with-source} package transformation option does.  Essentially @code{hello-2.2} preserves all the fields of @code{hello}, except @code{version} and @code{source}, which it overrides.  Note that the original @code{hello} variable is still there, in the @code{(gnu packages base)} module, unchanged.  When you define a custom package like this, you are really @emph{adding} a new package definition; the original one remains available.
fr: L'exemple ci-dessus correspond à ce que l'option de transformation des paquets @option{--with-source} fait.  En substance, @code{hello-2.2} préserve tous les champs de @code{hello}, sauf @code{version} et @code{source}, qu'il remplace.  Remarquez que la variable @code{hello} originale est toujours là, dans le module @code{(gnu packages base)}, et n'est pas modifiée.  Lorsque vous définissez un paquet personnalisé comme ceci, vous @emph{ajoutez} en fait une nouvelle définition de paquet ; la version originale est toujours disponible.

note: type: Plain text
en: You can just as well define variants with a different set of dependencies than the original package.  For example, the default @code{gdb} package depends on @code{guile}, but since that is an optional dependency, you can define a variant that removes that dependency like so:
fr: Vous pouvez aussi bien définir des variantes avec un ensemble de dépendances différent du paquet d'origine.  Par exemple, le paquet @code{gdb} par défaut dépend de @code{guile}, mais comme c'est une dépendance facultative, vous pouvez définir une variante qu supprime cette dépendance de cette manière :

note: type: lisp
en: (use-modules (gnu packages gdb))   ;for 'gdb'
fr: (use-modules (gnu packages gdb))   ; pour « gdb »

note: type: Plain text
en: The @code{modify-inputs} form above removes the @code{"guile"} package from the @code{inputs} field of @code{gdb}.  The @code{modify-inputs} macro is a helper that can prove useful anytime you want to remove, add, or replace package inputs.
fr: La forme @code{modify-inputs} ci-dessus supprime le paquet @code{"guile"} du champ @code{inputs} de @code{gdb}. La macro @code{modify-inputs} est une macro auxiliaire qui peut être utile si vous voulez supprimer, ajouter et remplacer des paquets en entrée.

note: type: deffn
en: {Scheme Syntax} modify-inputs @var{inputs} @var{clauses}
fr: {Syntaxe Scheme} modify-inputs @var{inputs} @var{clauses}

note: type: deffn
en: Modify the given package inputs, as returned by @code{package-inputs} & co., according to the given clauses.  Each clause must have one of the following forms:
fr: Modifie les entrées de paquet spécifiées, telles que renvoyées par @code{package-inputs} & co., suivant les clauses données.  Chaque clause doit avoir l'une des formes suivantes :

note: type: item
en: (delete @var{name}@dots{})
fr: (delete @var{nom}@dots{})

note: type: table
en: Delete from the inputs packages with the given @var{name}s (strings).
fr: Supprime des entrées les paquets avec les @var{nom}s donnés (chaines de caractères).

note: type: item
en: (prepend @var{package}@dots{})
fr: (prepend @var{paquet}@dots{})

note: type: table
en: Add @var{package}s to the front of the input list.
fr: Ajoute les @var{paquets} au début de la liste des entrées.

note: type: item
en: (append @var{package}@dots{})
fr: (append @var{paquet}@dots{})

note: type: table
en: Add @var{package}s to the end of the input list.
fr: Ajoute les @var{paquet}s à la fin de la liste des entrées.

note: type: deffn
en: The example below removes the GMP and ACL inputs of Coreutils and adds libcap to the front of the input list:
fr: L'exemple suivant supprime les entrées GMP et ACL de Coreutils et ajoute libcap au début de la liste des entrées :

note: type: deffn
en: The example below replaces the @code{guile} package from the inputs of @code{guile-redis} with @code{guile-2.2}:
fr: L'exemple suivant remplace le paquet @code{guile} des entrées de @code{guile-redis} avec @code{guile-2.2} :

note: type: deffn
en: The last type of clause is @code{append}, to add inputs at the back of the list.
fr: Le dernier type de clause est @code{append}, pour ajouter des entrées à la fin de la liste.

note: type: Plain text
en: In some cases, you may find it useful to write functions (``procedures'', in Scheme parlance) that return a package based on some parameters.  For example, consider the @code{luasocket} library for the Lua programming language.  We want to create @code{luasocket} packages for major versions of Lua.  One way to do that is to define a procedure that takes a Lua package and returns a @code{luasocket} package that depends on it:
fr: Dans certains cas, vous pouvez trouver cela utile d'écrire des fonctions (« procédures », pour Scheme) qui renvoie un paquet en fonction de certains paramètres.  Par exemple, considérez la bibliothèque @code{luasocket} pour le langage de programmation lua.  Nous voulons créer des paquets @code{luasocket} pour les versions majeures de Lua.  Une manière de faire est de définir une procédure qui prend un paquet Lua et renvoie un paquet @code{luasocket} qui en dépend :

note: type: lisp
en: (define (make-lua-socket name lua)
      ;; Return a luasocket package built with LUA.
      (package
        (name name)
        (version "3.0")
        ;; several fields omitted
        (inputs (list lua))
        (synopsis "Socket library for Lua")))
fr: (define (make-lua-socket name lua)
      ;; Renvoie un paquet luasocket construit avec LUA.
      (package
        (name name)
        (version "3.0")
        ;; plusieurs champs ont été omis
        (inputs (list lua))
        (synopsis "Socket library for Lua")))

note: type: Plain text
en: Here we have defined packages @code{lua5.1-socket} and @code{lua5.2-socket} by calling @code{make-lua-socket} with different arguments.  @xref{Procedures,,, guile, GNU Guile Reference Manual}, for more info on procedures.  Having top-level public definitions for these two packages means that they can be referred to from the command line (@pxref{Package Modules}).
fr: ici nous avons défini les paquets @code{lua5.1-socket} et @code{lua5.2-socket} en appelant @code{make-lua-socket} avec différents arguments.  @xref{Procedures,,, guile, GNU Guile Reference Manual}, pour plus d'informations sur les procédures.  Avoir des définitions publiques au premier niveau pour ces deux paquets signifie qu'ils sont disponibles depuis la ligne de commande (@pxref{Package Modules}).

note: type: cindex
en: package transformations
fr: transformations de paquets

note: type: Plain text
en: These are pretty simple package variants.  As a convenience, the @code{(guix transformations)} module provides a high-level interface that directly maps to the more sophisticated package transformation options (@pxref{Package Transformation Options}):
fr: Ce sont des variantes simples de paquets.  Par simplicité, le module @code{(guix transformations)} fournit une interface de haut niveau qui correspond directement aux options de transformations de paquets plus sophistiquées (@pxref{Package Transformation Options}) :

note: type: deffn
en: {Scheme Procedure} options->transformation @var{opts}
fr: {Procédure Scheme} options->transformation @var{opts}

note: type: deffn
en: Return a procedure that, when passed an object to build (package, derivation, etc.), applies the transformations specified by @var{opts} and returns the resulting objects.  @var{opts} must be a list of symbol/string pairs such as:
fr: Renvoie une procédure qui, lorsqu'on lui passe un objet à construire (un paquet, une dérivation, etc), applique les transformations spécifiées par @var{opts} et renvoie les objets qui en résultent.  @var{opts} doit être une liste de pairs de symboles et de chaine comme dans :

note: type: deffn
en: Each symbol names a transformation and the corresponding string is an argument to that transformation.
fr: Chaque nom de symbole nomme une transformation et la chaine correspondante est un argument pour cette transformation.

note: type: Plain text
en: For instance, a manifest equivalent to this command:
fr: Par exemple, un manifeste équivalent à cette commande :

note: type: Plain text
en: ... would look like this:
fr: ... ressemblerait à ceci :

note: type: lisp
en: (define transform
      ;; The package transformation procedure.
      (options->transformation
       '((with-branch . "guile-gcrypt=master")
         (with-debug-info . "zlib"))))
fr: (define transform
      ;; La procédure de transformation des paquets.
      (options->transformation
       '((with-branch . "guile-gcrypt=master")
         (with-debug-info . "zlib"))))

note: type: cindex
en: input rewriting
fr: réécriture d'entrées

note: type: cindex
en: dependency graph rewriting
fr: réécriture de l'arbre des dépendances

note: type: Plain text
en: The @code{options->transformation} procedure is convenient, but it's perhaps also not as flexible as you may like.  How is it implemented? The astute reader probably noticed that most package transformation options go beyond the superficial changes shown in the first examples of this section: they involve @dfn{input rewriting}, whereby the dependency graph of a package is rewritten by replacing specific inputs by others.
fr: La procédure @code{options->transformation} est pratique, mais elle n'est peut-être pas aussi flexible que vous pourriez le souhaiter.  Comment est-elle implémentée ?  Le lecteur attentif aura sans doute remarqué que la plupart des options de transformation des paquets va plus loin que les changements superficiels montrés dans les premiers exemples de cette sections : ils font de la @dfn{réécriture d'entrées}, où le graphe de dépendance d'un paquet est réécrit en remplaçant des entrées spécifiques par d'autres.

note: type: Plain text
en: Dependency graph rewriting, for the purposes of swapping packages in the graph, is what the @code{package-input-rewriting} procedure in @code{(guix packages)} implements.
fr: La procédure @code{package-input-rewriting} de @code{(guix packages)} implémente la réécriture du graphe de dépendance, pour remplacer des paquets dans le graphe.

note: type: deffn
en: {Scheme Procedure} package-input-rewriting @var{replacements} @
fr: {Procédure Scheme} package-input-rewriting @var{replacements} @

note: type: deffn
en: [@var{rewrite-name}] [#:deep? #t] Return a procedure that, when passed a package, replaces its direct and indirect dependencies, including implicit inputs when @var{deep?} is true, according to @var{replacements}.  @var{replacements} is a list of package pairs; the first element of each pair is the package to replace, and the second one is the replacement.
fr: [@var{nom-réécrit}] [#:deep ? #t] Renvoie une procédure qui, lorsqu'elle est passée à un paquet, remplace ses dépendances directes et indirectes, y compris les entrées implicites lorsque @var{deep?} est vrai, selon @var{replacements}.  @var{replacements} est une liste de paires de paquets ; le premier élément de chaque paire est le paquet à remplacer, et le second est le remplacement.

note: type: deffn
en: Optionally, @var{rewrite-name} is a one-argument procedure that takes the name of a package and returns its new name after rewrite.
fr: De manière facultative, @var{nom-réécrit} est une procédure à un argument qui prend le nom d'un paquet et renvoie son nouveau nom après l'avoir réécrit.

note: type: table
en: Consider this example:
fr: Regardez cet exemple :

note: type: lisp
en: (define libressl-instead-of-openssl
      ;; This is a procedure to replace OPENSSL by LIBRESSL,
      ;; recursively.
      (package-input-rewriting `((,openssl . ,libressl))))
fr: (define libressl-instead-of-openssl
      ;; Cette procédure remplace OPENSSL par LIBRESSL,
      ;; récursivement.
      (package-input-rewriting `((,openssl . ,libressl))))

note: type: Plain text
en: Here we first define a rewriting procedure that replaces @var{openssl} with @var{libressl}.  Then we use it to define a @dfn{variant} of the @var{git} package that uses @var{libressl} instead of @var{openssl}.  This is exactly what the @option{--with-input} command-line option does (@pxref{Package Transformation Options, @option{--with-input}}).
fr: Ici nous définissons d'abord une procédure de réécriture qui remplace @var{openssl} par @var{libressl}.  Ensuite nous l'utilisons pour définir une @dfn{variante} du paquet @var{git} qui utilise @var{libressl} plutôt que @var{openssl}.  cela est exactement ce que l'option en ligne de commande @option{--with-input} fait (@pxref{Package Transformation Options, @option{--with-input}}).

note: type: Plain text
en: The following variant of @code{package-input-rewriting} can match packages to be replaced by name rather than by identity.
fr: La variante suivante de @code{package-input-rewriting} peut repérer les paquets à remplacer par nom à la place de leur identité.

note: type: deffn
en: {Scheme Procedure} package-input-rewriting/spec @var{replacements} [#:deep? #t]
fr: {Procédure Scheme} package-input-rewriting/spec @var{remplacements}[#:deep? #t]

note: type: deffn
en: Return a procedure that, given a package, applies the given @var{replacements} to all the package graph, including implicit inputs unless @var{deep?} is false.  @var{replacements} is a list of spec/procedures pair; each spec is a package specification such as @code{"gcc"} or @code{"guile@@2"}, and each procedure takes a matching package and returns a replacement for that package.
fr: Renvoie une procédure qui, étant donné un paquet, applique les @var{remplacements} donnés à tout le graphe du paquet, y compris les entrées implicites, à moins que @var{deep?} ne soit faux.  @var{replacements} est une liste de paires spécifications/procédures ; chaque spécification est une spécification de paquet telle que @code{"gcc"} ou @code{"guile@@2"}, et chaque procédure prend un paquet correspondant et renvoie un remplacement pour ce paquet.

note: type: Plain text
en: The example above could be rewritten this way:
fr: L'exemple ci-dessus pourrait être réécrit de cette manière :

note: type: lisp
en: (define libressl-instead-of-openssl
      ;; Replace all the packages called "openssl" with LibreSSL.
      (package-input-rewriting/spec `(("openssl" . ,(const libressl)))))
fr: (define libressl-instead-of-openssl
      ;; Remplace tous les paquets nommés « openssl » par LibreSSL.
      (package-input-rewriting/spec `(("openssl" . ,(const libressl)))))

note: type: Plain text
en: The key difference here is that, this time, packages are matched by spec and not by identity.  In other words, any package in the graph that is called @code{openssl} will be replaced.
fr: Le différence clef est que, cette fois-ci, les paquets correspondent à la spécification et non à l'identité.  En d'autres termes, tout paquet dans le graphe qui est appelé @code{openssl} sera remplacé.

note: type: Plain text
en: A more generic procedure to rewrite a package dependency graph is @code{package-mapping}: it supports arbitrary changes to nodes in the graph.
fr: Une procédure plus générique pour réécrire un graphe de dépendance d'un paquet est @code{package-mapping} : elle supporte n'importe quel changement dans les nœuds du graphe.

note: type: deffn
en: {Scheme Procedure} package-mapping @var{proc} [@var{cut?}] [#:deep? #f]
fr: {Procédure Scheme} package-mapping @var{proc} [@var{cut?}] [#:deep? #f]

note: type: deffn
en: Return a procedure that, given a package, applies @var{proc} to all the packages depended on and returns the resulting package.  The procedure stops recursion when @var{cut?} returns true for a given package.  When @var{deep?} is true, @var{proc} is applied to implicit inputs as well.
fr: Renvoie une procédure qui, pour un paquet donné, applique @var{proc} à tous les paquets dont il dépend et renvoie le paquet résultant.  La procédure arrête la récursion lorsque @var{cut?} renvoie true pour un paquet donné.  Lorsque @var{deep?} est vrai, @var{proc} est également appliqué aux entrées implicites.

note: type: cindex
en: bill of materials (manifests)
fr: nomenclature (manifestes)

note: type: Plain text
en: @command{guix} commands let you specify package lists on the command line.  This is convenient, but as the command line becomes longer and less trivial, it quickly becomes more convenient to have that package list in what we call a @dfn{manifest}.  A manifest is some sort of a ``bill of materials'' that defines a package set.  You would typically come up with a code snippet that builds the manifest, store it in a file, say @file{manifest.scm}, and then pass that file to the @option{-m} (or @option{--manifest}) option that many @command{guix} commands support.  For example, here's what a manifest for a simple package set might look like:
fr: Les commandes @command{guix} vous permettent de spécifier des listes de paquets sur la ligne de commande. C'est pratique, mais en même temps que la ligne de commande devient plus longue et moins triviales, il devient plus pratique d'avoir la liste des paquets dans ce que nous appelons un @dfn{manifeste}. Un manifeste est une sorte de « nomenclature » qui définie un ensemble de paquets. Habituellement, vous trouverez un bout de code qui construit le manifeste, vous l'enregistrerez dans un fichier, disons @file{manifest.scm} puis passerez ce fichier à l'option @option{−m} (ou @option{--manifest}) que de nombreuses commandes @command{guix} prennent en charge. Par exemple, voici ce à quoi un manifeste pour un ensemble de paquets simple peut ressembler :

note: type: lisp
en: ;; Manifest for three packages.
    (specifications->manifest '("gcc-toolchain" "make" "git"))
fr: ;; Manifeste pour trois paquets.
    (specifications->manifest '("gcc-toolchain" "make" "git"))

note: type: Plain text
en: Once you have that manifest, you can pass it, for example, to @command{guix package} to install just those three packages to your profile (@pxref{profile-manifest, @option{-m} option of @command{guix package}}):
fr: Une fois que vous avez le manifeste, vous pouvez le passer, par exemple, à @command{guix package} pour installer uniquement ces trois paquets dans votre profil (@pxref{profile-manifest, l'option @option{-m} de @command{guix package}}) :

note: type: Plain text
en: ... or you can pass it to @command{guix shell} (@pxref{shell-manifest, @command{-m} option of @command{guix shell}}) to spawn an ephemeral environment:
fr: ... ou vous pouvez le passer à @command{guix shell} (@pxref{shell-manifest, l'option @command{-m} de @command{guix shell}}) pour créer un environnement temporaire :

note: type: Plain text
en: ... or you can pass it to @command{guix pack} in pretty much the same way (@pxref{pack-manifest, @option{-m} option of @command{guix pack}}).  You can store the manifest under version control, share it with others so they can easily get set up, etc.
fr: ... ou vous pouvez le passer à @command{guix pack} de la même manière (@pxref{pack-manifest, l'option @option{-m} de @command{guix pack}}). Vous pouvez garder un manifeste sous contrôle de version, le partager avec d'autres personnes pour qu'elles puissent facilement l'installer, etc.

note: type: Plain text
en: But how do you write your first manifest? To get started, maybe you'll want to write a manifest that mirrors what you already have in a profile.  Rather than start from a blank page, @command{guix package} can generate a manifest for you (@pxref{export-manifest, @command{guix package --export-manifest}}):
fr: Mais comment écrire votre premier manifeste ? Pour commencer, vous voudrez peut-être écrire un manifeste qui reflète ce que vous avez déjà dans un profil. Plutôt que de commencer par une feuille blanche, @command{guix package} peut générer un manifeste pour vous (@pxref{export-manifest, @command{guix package --export-manifest}}) :

note: type: example
en: # Write to 'manifest.scm' a manifest corresponding to the
    # default profile, ~/.guix-profile.
    guix package --export-manifest > manifest.scm
fr: # Écrit dans « manifest.scm » un manifeste correspondant au profil
    # par défaut, ~/.guix-profile.
    guix package --export-manifest > manifest.scm

note: type: Plain text
en: Or maybe you'll want to ``translate'' command-line arguments into a manifest.  In that case, @command{guix shell} can help (@pxref{shell-export-manifest, @command{guix shell --export-manifest}}):
fr: Ou vous voudrez peut-être « traduire » des arguments de la ligne de commande en un manifeste. Dans ce cas, @command{guix shell} peut aider (@pxref{shell-export-manifest, @command{guix shell --export-manifest}}) :

note: type: example
en: # Write a manifest for the packages specified on the command line.
    guix shell --export-manifest gcc-toolchain make git > manifest.scm
fr: # Écrit un manifeste pour les paquets spécifiés sur la ligne de commande.
    guix shell --export-manifest gcc-toolchain make git > manifest.scm

note: type: Plain text
en: In both cases, the @option{--export-manifest} option tries hard to generate a faithful manifest; in particular, it takes package transformation options into account (@pxref{Package Transformation Options}).
fr: Dans les deux cas, l'option @option{--export-manifest} essaye de générer un manifeste fidèle ; en particulier, il prend en compte les options de transformation des paquets (@pxref{Package Transformation Options}).

note: type: quotation
en: Manifests are @emph{symbolic}: they refer to packages of the channels @emph{currently in use} (@pxref{Channels}).  In the example above, @code{gcc-toolchain} might refer to version 11 today, but it might refer to version 13 two years from now.
fr: Les manifestes sont @emph{symboliques} : ils font référence aux paquets des canaux @emph{actuellement utilisés} (@pxref{Channels}). Dans l'exemple ci-dessus, @code{gcc-toolchain} peut se référer à la version 11 aujourd'hui, mais pourra se référer à la version 13 dans deux ans.

note: type: quotation
en: If you want to ``pin'' your software environment to specific package versions and variants, you need an additional piece of information: the list of channel revisions in use, as returned by @command{guix describe}.  @xref{Replicating Guix}, for more information.
fr: Si vous voulez « épingler » votre environnement logiciel à une version et une variante spécifique d'un paquet, vous devez donner des informations supplémentaires : la liste des révisions des canaux utilisés, renvoyée par @command{guix describe}. @xref{Replicating Guix}, pour plus de détails.

note: type: Plain text
en: Once you've obtained your first manifest, perhaps you'll want to customize it.  Since your manifest is code, you now have access to all the Guix programming interfaces!
fr: Une fois que vous avez votre premier manifeste, vous voudrez peut-être le personnaliser. Comme votre manifeste est du code, vous avez maintenant accès à toutes les interfaces de programmation de Guix !

note: type: Plain text
en: Let's assume you want a manifest to deploy a custom variant of GDB, the GNU Debugger, that does not depend on Guile, together with another package.  Building on the example seen in the previous section (@pxref{Defining Package Variants}), you can write a manifest along these lines:
fr: Supposons que vous souhaitiez avoir un manifeste pour déployer une variante personnalisée de GDB, le débogueur de GNU, qui ne dépend pas de Guile, avec un autre paquet. En complétant l'exemple vu dans la section précédente (@pxref{Defining Package Variants}), vous pouvez écrire un manifeste de ce type :

note: type: lisp
en: (use-modules (guix packages)
                 (gnu packages gdb)               ;for 'gdb'
                 (gnu packages version-control))  ;for 'git'
fr: (use-modules (guix packages)
                 (gnu packages gdb)               ;pour « gdb »
                 (gnu packages version-control))  ;pour « git »

note: type: lisp
en: ;; Define a variant of GDB without a dependency on Guile.
    (define gdb-sans-guile
      (package
        (inherit gdb)
        (inputs (modify-inputs (package-inputs gdb)
                  (delete "guile")))))
fr: ;; Définie une variante de GDB qui ne dépend pas de Guile.
    (define gdb-sans-guile
      (package
        (inherit gdb)
        (inputs (modify-inputs (package-inputs gdb)
                  (delete "guile")))))

note: type: lisp
en: ;; Return a manifest containing that one package plus Git.
    (packages->manifest (list gdb-sans-guile git))
fr: ;; Renvoie un manifeste contenant ce paquet plus Git.
    (packages->manifest (list gdb-sans-guile git))

note: type: Plain text
en: Note that in this example, the manifest directly refers to the @code{gdb} and @code{git} variables, which are bound to a @code{package} object (@pxref{package Reference}), instead of calling @code{specifications->manifest} to look up packages by name as we did before.  The @code{use-modules} form at the top lets us access the core package interface (@pxref{Defining Packages}) and the modules that define @code{gdb} and @code{git} (@pxref{Package Modules}).  Seamlessly, we're weaving all this together---the possibilities are endless, unleash your creativity!
fr: Remarquez que dans cet exemple, le manifeste se réfère directement aux variables @code{gdb} et @code{git}, qui sont liées à un objet @code{package} (@pxref{package Reference}), au lieu d'appeler @code{specifications->manifest} pour rechercher les paquets par leur nom comme nous l'avons fait précédemment. La forme @code{use-modules} au début nous permet d'accéder à l'interface centrale des paquets (@pxref{Defining Packages}) et aux modules qui définissent @code{gdb} et @code{git} (@pxref{Package Modules}). Nous combinons tout cela harmonieusement --- les possibilités sont infinies, débridez votre créativité !

note: type: Plain text
en: The data type for manifests as well as supporting procedures are defined in the @code{(guix profiles)} module, which is automatically available to code passed to @option{-m}.  The reference follows.
fr: Le type de données pour les manifestes et les procédures auxiliaires sont définis dans le module @code{(guix profiles)}, qui est automatiquement disponible pour le code passé à @option{-m}. Voici la documentation de référence.

note: type: deftp
en: {Data Type} manifest
fr: {Type de données} manifest

note: type: deftp
en: Data type representing a manifest.
fr: Type de données représentant un manifeste.

note: type: deftp
en: It currently has one field:
fr: Il a actuellement un seul champ :

note: type: table
en: This must be a list of @code{manifest-entry} records---see below.
fr: Ce doit être une liste d'enregistrements @code{manifest-entry} --- voir plus bas.

note: type: deftp
en: {Data Type} manifest-entry
fr: {Type de données} manifest-entry

note: type: deftp
en: Data type representing a manifest entry.  A manifest entry contains essential metadata: a name and version string, the object (usually a package) for that entry, the desired output (@pxref{Packages with Multiple Outputs}), and a number of optional pieces of information detailed below.
fr: Type de donnée représentant une entrée d'un manifeste. Une entrée de manifeste contient les métadonnées nécessaires : un nom et une chaîne de version, l'objet (généralement un paquet) pour cette entrée, la sortie souhaitée (@pxref{Packages with Multiple Outputs}) et un certain nombre d'autres informations facultatives décrites plus bas.

note: type: deftp
en: Most of the time, you won't build a manifest entry directly; instead, you will pass a package to @code{package->manifest-entry}, described below.  In some unusual cases though, you might want to create manifest entries for things that are @emph{not} packages, as in this example:
fr: La plupart du temps, vous n'aurez pas à construire une entrée de manifeste directement ; au lieu de cela, vous passerez un paquet à @code{package->manifest-entry}, décrit plus bas. Dans certains cas rares cependant, vous pourriez être amené à créer des entrées de manifeste pour des objets qui ne sont pas des paquets, comme dans cet exemple :

note: type: lisp
en: ;; Manually build a single manifest entry for a non-package object.
    (let ((hello (program-file "hello" #~(display "Hi!"))))
      (manifest-entry
        (name "foo")
        (version "42")
        (item
         (computed-file "hello-directory"
                         #~(let ((bin (string-append #$output "/bin")))
                             (mkdir #$output) (mkdir bin)
                              (symlink #$hello
                                       (string-append bin "/hello")))))))
fr: ;; Construit manuellement une entrée de manifeste pour un objet qui n'est pas un paquet.
    (let ((hello (program-file "hello" #~(display "Hi!"))))
      (manifest-entry
        (name "toto")
        (version "42")
        (item
         (computed-file "hello-directory"
                         #~(let ((bin (string-append #$output "/bin")))
                             (mkdir #$output) (mkdir bin)
                              (symlink #$hello
                                       (string-append bin "/hello")))))))

note: type: deftp
en: The available fields are the following:
fr: Les champs disponibles sont les suivants :

note: type: table
en: Name and version string for this entry.
fr: Nom et chaine de version pour cette entrée.

note: type: table
en: A package or other file-like object (@pxref{G-Expressions, file-like objects}).
fr: Un paquet ou n'importe quel objet simili-fichier (@pxref{G-Expressions, objets de type fichier}).

note: type: item
en: @code{output} (default: @code{"out"})
fr: @code{output} (par défaut : @code{"out"})

note: type: table
en: Output of @code{item} to use, in case @code{item} has multiple outputs (@pxref{Packages with Multiple Outputs}).
fr: Sortie de @code{item} à utiliser, dans le cas où @code{item} a plusieurs sorties (@pxref{Packages with Multiple Outputs}).

note: type: item
en: @code{dependencies} (default: @code{'()})
fr: @code{dependencies} (par défaut : @code{'()})

note: type: table
en: List of manifest entries this entry depends on.  When building a profile, dependencies are added to the profile.
fr: Liste des entrées de manifeste desquelles dépend cette entrée. Lorsqu'un profil est construit, les dépendances sont ajoutées au profil.

note: type: table
en: Typically, the propagated inputs of a package (@pxref{package Reference, @code{propagated-inputs}}) end up having a corresponding manifest entry in among the dependencies of the package's own manifest entry.
fr: Généralement, les entrées propagées d'un paquet (@pxref{package Reference, @code{propagated-inputs}}) ont une entrée de manifeste correspondante parmi les dépendances de l'entrée du paquet.

note: type: table
en: The list of search path specifications honored by this entry (@pxref{Search Paths}).
fr: La liste des spécifications de chemins de recherche que cette entrée prend en compte (@pxref{Search Paths}).

note: type: item
en: @code{properties} (default: @code{'()})
fr: @code{properties} (par défaut : @code{'()})

note: type: table
en: List of symbol/value pairs.  When building a profile, those properties get serialized.
fr: Une liste de pairs de symboles et de valeurs. Lorsqu'un profil est construit, ces propriétés sont sérialisées.

note: type: table
en: This can be used to piggyback additional metadata---e.g., the transformations applied to a package (@pxref{Package Transformation Options}).
fr: Cela peut être utilisé pour intégrer des métadonnées supplémentaires --- p.@: ex.@: les transformations appliquées à un paquet (@pxref{Package Transformation Options}).

note: type: item
en: @code{parent} (default: @code{(delay #f)})
fr: @code{parent} (par défaut : @code{(delay #f)})

note: type: table
en: A promise pointing to the ``parent'' manifest entry.
fr: Une promesse pointant vers l'entrée de manifeste « parente ».

note: type: table
en: This is used as a hint to provide context when reporting an error related to a manifest entry coming from a @code{dependencies} field.
fr: cela est utilisé comme une indication pour fournir du contexte si une erreur liée à une entrée de manifeste provenant du champ @code{dependencies} doit être rapportée.

note: type: deffn
en: {Scheme Procedure} concatenate-manifests @var{lst}
fr: {Procédure Scheme} concatenate-manifests @var{lst}

note: type: deffn
en: Concatenate the manifests listed in @var{lst} and return the resulting manifest.
fr: Concatène les manifestes listés dans @var{lst} et renvoie le manifeste qui en résulte.

note: type: deffn
en: {Scheme Procedure} package->manifest-entry @var{package} @
fr: {Procédure Scheme} package->manifest-entry @var{paquet} @

note: type: deffn
en: [@var{output}] [#:properties] Return a manifest entry for the @var{output} of package @var{package}, where @var{output} defaults to @code{"out"}, and with the given @var{properties}.  By default @var{properties} is the empty list or, if one or more package transformations were applied to @var{package}, it is an association list representing those transformations, suitable as an argument to @code{options->transformation} (@pxref{Defining Package Variants, @code{options->transformation}}).
fr: [@var{sortie}] [#:properties]
    Renvoie une entrée de manifeste pour la @var{sortie} du paquet @var{paquet}, où @var{sortie} vaut @code{"out"} par défaut, et avec les propriétés @var{properties} données. Par défaut @var{properties} est la liste vide ou, si des transformations de paquets sont appliquées à @var{paquet}, une liste d'association représentant ces transformations, utilisable en tant qu'argument à @code{options->transformation} (@pxref{Defining Package Variants, @code{options->transformation}}).

note: type: deffn
en: The code snippet below builds a manifest with an entry for the default output and the @code{send-email} output of the @code{git} package:
fr: Le bout de code ci-dessous construit un manifeste avec une entrée pour la sortie par défaut et la sortie @code{send-email} du paquet @code{git} :

note: type: deffn
en: {Scheme Procedure} packages->manifest @var{packages}
fr: {Procédure Scheme} packages->manifest @var{paquets}

note: type: deffn
en: Return a list of manifest entries, one for each item listed in @var{packages}.  Elements of @var{packages} can be either package objects or package/string tuples denoting a specific output of a package.
fr: Renvoie une liste d'entrées de manifestes, un paquet élément listé dans @var{paquets}. Les éléments de @var{paquets} peuvent être soit des objets paquets soit des tuples paquet / chaine dénotant une sortie particulière d'un paquet.

note: type: deffn
en: Using this procedure, the manifest above may be rewritten more concisely:
fr: Avec cette procédure, le manifeste ci-dessus peut être réécrit de manière plus concise :

note: type: deffn
en: {Scheme Procedure} package->development-manifest @var{package} @
fr: {Procédure Scheme} package->development-manifest @var{paquet} @

note: type: deffn
en: [@var{system}] [#:target] Return a manifest for the @dfn{development inputs} of @var{package} for @var{system}, optionally when cross-compiling to @var{target}.  Development inputs include both explicit and implicit inputs of @var{package}.
fr: [@var{système}] [#:target]
    Renvoie un manifeste pour les @dfn{entrées de développement} de @var{paquet} pour @var{système}, éventuellement pour la compilation croisée vers la cible @var{target}. Les entrées de développement comprennent à la fois les entrées explicites et les entrées implicites de @var{paquet}.

note: type: deffn
en: Like the @option{-D} option of @command{guix shell} (@pxref{shell-development-option, @command{guix shell -D}}), the resulting manifest describes the environment in which one can develop @var{package}.  For example, suppose you're willing to set up a development environment for Inkscape, with the addition of Git for version control; you can describe that ``bill of materials'' with the following manifest:
fr: Comme l'option @option{-D} de @command{guix shell} (@pxref{shell-development-option, @command{guix shell -D}}), le manifeste qui en résulte décrit l'environnement dans lequel on peut développer le @var{paquet}. Par exemple, si vous voulez configurer un environnement de développement pour Inkscape, avec Git pour le contrôle de version, vous pouvez décrire cette « nomenclature » avec le manifeste suivant :

note: type: lisp
en: (use-modules (gnu packages inkscape)          ;for 'inkscape'
                 (gnu packages version-control))  ;for 'git'
fr: (use-modules (gnu packages inkscape)          ;pour « inkscape »
                 (gnu packages version-control))  ;pour « git »

note: type: deffn
en: In this example, the development manifest that @code{package->development-manifest} returns includes the compiler (GCC), the many supporting libraries (Boost, GLib, GTK, etc.), and a couple of additional development tools---these are the dependencies @command{guix show inkscape} lists.
fr: Dans cet exemple, le manifeste de développement qui renvoie @code{package->development-manifest} inclus le compilateur (GCC), les nombreuses bibliothèques qui portent le projet (Boost, GLib, GTK, etc) et quelques outils de développement supplémentaires --- ce sont les dépendances listées par @command{guix show inkscape}.

note: type: Plain text
en: Last, the @code{(gnu packages)} module provides higher-level facilities to build manifests.  In particular, it lets you look up packages by name---see below.
fr: Enfin, le module @code{(gnu packages)} fournit des fonctions pour construire des manifestes. En particulier, il vous permet de rechercher des paquets par leur nom --- voir ci-dessous.

note: type: deffn
en: {Scheme Procedure} specifications->manifest @var{specs}
fr: {Procédure Scheme} specifications->manifest @var{specs}

note: type: deffn
en: Given @var{specs}, a list of specifications such as @code{"emacs@@25.2"} or @code{"guile:debug"}, return a manifest.  Specs have the format that command-line tools such as @command{guix install} and @command{guix package} understand (@pxref{Invoking guix package}).
fr: Étant données les @var{specs}, une liste de spécifications comme @code{"emacs@@25.2"} ou @code{"guile:debug"}, renvoie un manifeste. Les spécifications ont le même format que celui attendu par les outils en ligne de commande comme @command{guix install} et @command{guix package} (@pxref{Invoking guix package}).

note: type: deffn
en: As an example, it lets you rewrite the Git manifest that we saw earlier like this:
fr: Par exemple, elle vous permet de réécrire le manifeste avec Git que nous avons vu plus haut comme ceci :

note: type: deffn
en: Notice that we do not need to worry about @code{use-modules}, importing the right set of modules, and referring to the right variables.  Instead, we directly refer to packages in the same way as on the command line, which can often be more convenient.
fr: Remarque que nous n'avons pas à nous soucier de @code{use-modules}, d'importer le bon ensemble de modules et de se référer aux bonnes variables. À la place, nous nous référons directement aux paquets de la même manière que sur la ligne de commande, ce qui peut souvent être plus pratique.

note: type: cindex
en: build system
fr: système de construction

note: type: Plain text
en: Each package definition specifies a @dfn{build system} and arguments for that build system (@pxref{Defining Packages}).  This @code{build-system} field represents the build procedure of the package, as well as implicit dependencies of that build procedure.
fr: Chaque définition de paquet définie un @dfn{système de construction} et des arguments pour ce système de construction (@pxref{Defining Packages}).  Ce champ @code{build-system} représente la procédure de construction du paquet, ainsi que des dépendances implicites pour cette procédure de construction.

note: type: Plain text
en: Build systems are @code{<build-system>} objects.  The interface to create and manipulate them is provided by the @code{(guix build-system)} module, and actual build systems are exported by specific modules.
fr: Les systèmes de construction sont des objets @code{<build-system>}. L'interface pour les créer et les manipuler est fournie par le module @code{(guix build-system)} et les systèmes de construction eux-mêmes sont exportés par des modules spécifiques.

note: type: cindex
en: bag (low-level package representation)
fr: sac (représentation à bas-niveau des paquets)

note: type: Plain text
en: Under the hood, build systems first compile package objects to @dfn{bags}.  A @dfn{bag} is like a package, but with less ornamentation---in other words, a bag is a lower-level representation of a package, which includes all the inputs of that package, including some that were implicitly added by the build system.  This intermediate representation is then compiled to a derivation (@pxref{Derivations}).  The @code{package-with-c-toolchain} is an example of a way to change the implicit inputs that a package's build system pulls in (@pxref{package Reference, @code{package-with-c-toolchain}}).
fr: Sous le capot, les systèmes de construction compilent d'abord des objets paquets en @dfn{sacs}.  Un @dfn{sac} est comme un paquet, mais avec moins de décoration — en d'autres mots, un sac est une représentation à bas-niveau d'un paquet, qui inclus toutes les entrées de ce paquet, dont certaines ont été implicitement ajoutées par le système de construction.  Cette représentation intermédiaire est ensuite compilée en une dérivation (@pxref{Derivations}). Le @code{package-with-c-toolchain} est un exemple d'une manière de modifier les entrées implicites que le système de construction d'un paquet récupère (@pxref{package Reference, @code{package-with-c-toolchain}}).

note: type: Plain text
en: Build systems accept an optional list of @dfn{arguments}.  In package definitions, these are passed @i{via} the @code{arguments} field (@pxref{Defining Packages}).  They are typically keyword arguments (@pxref{Optional Arguments, keyword arguments in Guile,, guile, GNU Guile Reference Manual}).  The value of these arguments is usually evaluated in the @dfn{build stratum}---i.e., by a Guile process launched by the daemon (@pxref{Derivations}).
fr: Les systèmes de construction acceptent une liste d'@dfn{arguments} facultatifs.  Dans les définitions de paquets, ils sont passés @i{via} le champ @code{arguments} (@pxref{Defining Packages}).  Ce sont typiquement des arguments par mot-clef (@pxref{Optional Arguments, keyword arguments in Guile,, guile, GNU Guile Reference Manual}).  La valeur de ces arguments est habituellement évaluée dans la @dfn{strate de construction} — c.-à-d.@: par un processus Guile lancé par le démon (@pxref{Derivations}).

note: type: Plain text
en: The main build system is @code{gnu-build-system}, which implements the standard build procedure for GNU and many other packages.  It is provided by the @code{(guix build-system gnu)} module.
fr: Le système de construction principal est le @code{gnu-build-system} qui implémente les procédures de construction standard pour les paquets GNU et de nombreux autres.  Il est fournit par le module @code{(guix build-system gnu)}.

note: type: defvr
en: {Scheme Variable} gnu-build-system
fr: {Variable Scheme} gnu-build-system

note: type: defvr
en: @code{gnu-build-system} represents the GNU Build System, and variants thereof (@pxref{Configuration, configuration and makefile conventions,, standards, GNU Coding Standards}).
fr: @code{gnu-build-system} représente le système de construction GNU et ses variantes (@pxref{Configuration, configuration and makefile conventions,, standards, GNU Coding Standards}).

note: type: cindex
en: build phases
fr: phases de construction

note: type: defvr
en: In a nutshell, packages using it are configured, built, and installed with the usual @code{./configure && make && make check && make install} command sequence.  In practice, a few additional steps are often needed.  All these steps are split up in separate @dfn{phases}.  @xref{Build Phases}, for more info on build phases and ways to customize them.
fr: En résumé, les paquets qui l'utilisent sont configurés, construits et installés avec la séquence @code{./configure && make && make check && make install} habituelle.  En pratique, des étapes supplémentaires sont souvent requises.  Toutes ces étapes sont séparées dans des @dfn{phases} différentes, @xref{Build Phases} pour plus d'informations sur les phases de construction et comment les personnaliser.

note: type: defvr
en: In addition, this build system ensures that the ``standard'' environment for GNU packages is available.  This includes tools such as GCC, libc, Coreutils, Bash, Make, Diffutils, grep, and sed (see the @code{(guix build-system gnu)} module for a complete list).  We call these the @dfn{implicit inputs} of a package, because package definitions do not have to mention them.
fr: En plus, ce système de construction s'assure que l'environnement « standard » pour les paquets GNU est disponible.  Cela inclus des outils comme GCC, libc, Coreutils, Bash, Make, Diffutils, grep et sed (voir le module @code{(guix build-system gnu)} pour une liste complète).  Nous les appelons les @dfn{entrées implicites} d'un paquet parce que la définition du paquet ne les mentionne pas.

note: type: defvr
en: This build system supports a number of keyword arguments, which can be passed @i{via} the @code{arguments} field of a package.  Here are some of the main parameters:
fr: Ce système de construction prend en charge un certain nombre de mot-clés, qui peuvent être passés via le champ @code{arguments} d'un paquet. Voici certains des paramètres principaux :

note: type: table
en: This argument specifies build-side code that evaluates to an alist of build phases.  @xref{Build Phases}, for more information.
fr: Cet argument spécifie le code du côté de la construction qui s'évalue en une liste d'association des phases de construction. @xref{Build Phases}, pour plus d'informations.

note: type: table
en: This is a list of flags (strings) passed to the @command{configure} script.  @xref{Defining Packages}, for an example.
fr: C'est une liste de drapeaux (chaînes) passés au script @command{configure}. @xref{Defining Packages}, pour un exemple.

note: type: table
en: This list of strings contains flags passed as arguments to @command{make} invocations in the @code{build}, @code{check}, and @code{install} phases.
fr: Cette liste de chaînes contient les drapeaux passés en argument aux invocation de @command{make} dans les phases @code{build}, @code{check} et @code{install}.

note: type: table
en: This Boolean, @code{#f} by default, indicates whether to run builds in a build directory separate from the source tree.
fr: Ce booléen, @code{#f} par défaut, indique s'il faut lancer les constructions dans un répertoire séparé de l'arborescence des sources.

note: type: table
en: When it is true, the @code{configure} phase creates a separate build directory, changes to that directory, and runs the @code{configure} script from there.  This is useful for packages that require it, such as @code{glibc}.
fr: Lorsque la valeur est vraie, la phase @code{configure} crée un répertoire de construction séparé, se déplace dedans et lance le script @code{configure} à partir de celui-ci. C'est utile pour les paquets qui en ont besoin, comme @code{glibc}.

note: type: table
en: This Boolean, @code{#t} by default, indicates whether the @code{check} phase should run the package's test suite.
fr: Ce booléen, @code{#t} par défaut, indique si la phase @code{check} doit lancer la suite de tests du paquet.

note: type: table
en: This string, @code{"check"} by default, gives the name of the makefile target used by the @code{check} phase.
fr: Cette chaîne, @code{"check"} par défaut, donne le nom de la cible du makefile à utiliser dans la phase @code{check}.

note: type: table
en: These Boolean values specify whether to build, respectively run the test suite, in parallel, with the @code{-j} flag of @command{make}.  When they are true, @code{make} is passed @code{-j@var{n}}, where @var{n} is the number specified as the @option{--cores} option of @command{guix-daemon} or that of the @command{guix} client command (@pxref{Common Build Options, @option{--cores}}).
fr: Ces booléens spécifient s'il faut construire, respectivement lancer la suite de tests, en parallèle, avec le drapeau @code{-j} de @command{make}. Lorsque la valeur est vraie, @code{make} reçoit @code{-j@var{n}}, où @var{n} est le nombre spécifié dans l'option @option{--cores} de @command{guix-daemon} ou celle de la commande du client @command{guix} (@pxref{Common Build Options, @option{--cores}}).

note: type: table
en: This Boolean, @code{#t} by default, determines whether to ``validate'' the @code{RUNPATH} of ELF binaries (@code{.so} shared libraries as well as executables) previously installed by the @code{install} phase.  @xref{phase-validate-runpath, the @code{validate-runpath} phase}, for details.
fr: Ce booléen, @code{#t} par défaut, détermine s'il faut « valider » le @code{RUNPATH} des binaires ELF (les bibliothèques partagées @code{.so} et les exécutables) installés précédemment par la phase @code{install}. @xref{phase-validate-runpath, la phase @code{validate-runpath}}, pour plus de détails.

note: type: table
en: This Boolean, @code{#t} by default, tells whether the package outputs should be substitutable---i.e., whether users should be able to obtain substitutes for them instead of building locally (@pxref{Substitutes}).
fr: Ce booléen, @code{#t} par défaut, indique si les sorties du paquet peuvent être substituées — c.-à-d.@: si les utilisateur·rices peuvent obtenir des substituts au lieu de les construire localement (@pxref{Substitutes}).

note: type: table
en: When true, these arguments must be a list of dependencies that must not appear among the references of the build results.  If, upon build completion, some of these references are retained, the build process fails.
fr: Lorsque la valeur est vraie, ces arguments doivent être une liste de dépendance qui ne doivent pas apparaître dans les dépendances des résultats de la construction. Si, à la fin de la construction, certaines de ces références sont retenues, le processus échoue.

note: type: table
en: This is useful to ensure that a package does not erroneously keep a reference to some of it build-time inputs, in cases where doing so would, for example, unnecessarily increase its size (@pxref{Invoking guix size}).
fr: C'est utile pour s'assurer qu'un paquet ne garde pas une référence par erreur à ses entrées de construction, sis cela augmente par exemple la taille de sa clôture (@pxref{Invoking guix size}).

note: type: defvr
en: Most other build systems support these keyword arguments.
fr: La plupart des autres systèmes de construction prennent en charge ces mot-clés.

note: type: Plain text
en: Other @code{<build-system>} objects are defined to support other conventions and tools used by free software packages.  They inherit most of @code{gnu-build-system}, and differ mainly in the set of inputs implicitly added to the build process, and in the list of phases executed.  Some of these build systems are listed below.
fr: D'autres objets @code{<build-system>} sont définis pour supporter d'autres conventions et outils utilisés par les paquets de logiciels libres.  Ils héritent de la plupart de @code{gnu-build-system} et diffèrent surtout dans l'ensemble des entrées implicites ajoutées au processus de construction et dans la liste des phases exécutées.  Certains de ces systèmes de construction sont listés ci-dessous.

note: type: defvr
en: {Scheme Variable} ant-build-system
fr: {Variable Scheme} ant-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system ant)}.  It implements the build procedure for Java packages that can be built with @url{https://ant.apache.org/, Ant build tool}.
fr: Cette variable est exportée par @code{(guix build-system ant)}.  Elle implémente la procédure de construction pour les paquets Java qui peuvent être construits avec @url{https://ant.apache.org/, l'outil de construction Ant}.

note: type: defvr
en: It adds both @code{ant} and the @dfn{Java Development Kit} (JDK) as provided by the @code{icedtea} package to the set of inputs.  Different packages can be specified with the @code{#:ant} and @code{#:jdk} parameters, respectively.
fr: Elle ajoute à la fois @code{ant} et the @dfn{kit de développement Java} (JDK) fournit par le paquet @code{icedtea} à l'ensemble des entrées.  Des paquets différents peuvent être spécifiés avec les paramètres @code{#:ant} et @code{#:jdk} respectivement.

note: type: defvr
en: When the original package does not provide a suitable Ant build file, the parameter @code{#:jar-name} can be used to generate a minimal Ant build file @file{build.xml} with tasks to build the specified jar archive.  In this case the parameter @code{#:source-dir} can be used to specify the source sub-directory, defaulting to ``src''.
fr: Lorsque le paquet d'origine ne fournit pas de fichier de construction Ant acceptable, le paramètre @code{#:jar-name} peut être utilisé pour générer un fichier de construction Ant @file{build.xml} minimal, avec des tâches pour construire l'archive jar spécifiée.  Dans ce cas, le paramètre @code{#:source-dir} peut être utilisé pour spécifier le sous-répertoire des sources, par défaut « src ».

note: type: defvr
en: The @code{#:main-class} parameter can be used with the minimal ant buildfile to specify the main class of the resulting jar.  This makes the jar file executable.  The @code{#:test-include} parameter can be used to specify the list of junit tests to run.  It defaults to @code{(list "**/*Test.java")}.  The @code{#:test-exclude} can be used to disable some tests.  It defaults to @code{(list "**/Abstract*.java")}, because abstract classes cannot be run as tests.
fr: Le paramètre @code{#:main-class} peut être utilisé avec le fichier de construction minimal pour spécifier la classe principale du jar.  Cela rend le fichier jar exécutable.  Le paramètre @code{#:test-include} peut être utilisé pour spécifier la liste des tests junits à lancer.  Il vaut par défaut @code{(list "**/*Test.java")}.  Le paramètre @code{#:test-exclude} peut être utilisé pour désactiver certains tests.  Sa valeur par défaut est  @code{(list "**/Abstract*.java")}, parce que les classes abstraites ne peuvent pas être utilisées comme des tests.

note: type: defvr
en: The parameter @code{#:build-target} can be used to specify the Ant task that should be run during the @code{build} phase.  By default the ``jar'' task will be run.
fr: Le paramètre @code{#:build-target} peut être utilisé pour spécifier la tâche Ant qui devrait être lancée pendant la phase @code{build}.  Par défaut la tâche « jar » sera lancée.

note: type: defvr
en: {Scheme Variable} android-ndk-build-system
fr: {Variable Scheme} android-ndk-build-system

note: type: cindex
en: Android distribution
fr: Distribution android

note: type: cindex
en: Android NDK build system
fr: Système de construction Android NDK

note: type: defvr
en: This variable is exported by @code{(guix build-system android-ndk)}.  It implements a build procedure for Android NDK (native development kit)  packages using a Guix-specific build process.
fr: Cette variable est exportée par @code{(guix build-system android-ndk)}.  Elle implémente une procédure de construction pour les paquets du NDK Android (@i{native development kit}) avec des processus de construction spécifiques à Guix.

note: type: defvr
en: The build system assumes that packages install their public interface (header) files to the subdirectory @file{include} of the @code{out} output and their libraries to the subdirectory @file{lib} the @code{out} output.
fr: Le système de compilation suppose que les paquets installent leurs fichiers d'interface publique (en-tête) dans le sous-répertoire @file{include} de la sortie @code{out} et leurs bibliothèques dans le sous-répertoire @file{lib} de la sortie @code{out}.

note: type: defvr
en: It's also assumed that the union of all the dependencies of a package has no conflicting files.
fr: Il est aussi supposé que l'union de toutes les dépendances d'un paquet n'a pas de fichiers en conflit.

note: type: defvr
en: For the time being, cross-compilation is not supported - so right now the libraries and header files are assumed to be host tools.
fr: Pour l'instant, la compilation croisée n'est pas supportées — donc pour l'instant les bibliothèques et les fichiers d'en-têtes sont supposés être des outils de l'hôte.

note: type: defvr
en: {Scheme Variable} asdf-build-system/source
fr: {Variable Scheme} asdf-build-system/source

note: type: defvrx
en: {Scheme Variable} asdf-build-system/sbcl
fr: {Variable Scheme} asdf-build-system/sbcl

note: type: defvrx
en: {Scheme Variable} asdf-build-system/ecl
fr: {Variable Scheme} asdf-build-system/ecl

note: type: defvr
en: These variables, exported by @code{(guix build-system asdf)}, implement build procedures for Common Lisp packages using @url{https://common-lisp.net/project/asdf/, ``ASDF''}.  ASDF is a system definition facility for Common Lisp programs and libraries.
fr: Ces variables, exportées par @code{(guix build-system asdf)}, implémentent les procédures de constructions pour les paquets en Common Lisp qui utilisent @url{https://common-lisp.net/project/asdf/, « ASDF »}.  ASDF est un dispositif de définition de systèmes pour les programmes et les bibliothèques en Common Lisp.

note: type: defvr
en: The @code{asdf-build-system/source} system installs the packages in source form, and can be loaded using any common lisp implementation, via ASDF@.  The others, such as @code{asdf-build-system/sbcl}, install binary systems in the format which a particular implementation understands.  These build systems can also be used to produce executable programs, or lisp images which contain a set of packages pre-loaded.
fr: Le système @code{asdf-build-system/source} installe les paquets au format source qui peuvent être chargés avec n'importe quelle implémentation de common lisp, via ASDF@.  Les autres, comme @code{asdf-build-system/sbcl}, installent des binaires au format qu'un implémentation particulière comprend.  Ces systèmes de constructions peuvent aussi être utilisés pour produire des programmes exécutables ou des images lisp qui contiennent un ensemble de paquets pré-chargés.

note: type: defvr
en: The build system uses naming conventions.  For binary packages, the package name should be prefixed with the lisp implementation, such as @code{sbcl-} for @code{asdf-build-system/sbcl}.
fr: Le système de construction utilise des conventions de nommage.  Pour les paquets binaires, le nom du paquet devrait être préfixé par l'implémentation lisp, comme @code{sbcl-} pour @code{asdf-build-system/sbcl}.

note: type: defvr
en: Additionally, the corresponding source package should be labeled using the same convention as python packages (see @ref{Python Modules}), using the @code{cl-} prefix.
fr: En plus, le paquet source correspondant devrait étiquetté avec la même convention que les paquets python (voir @ref{Python Modules}), avec le préfixe @code{cl-}.

note: type: defvr
en: In order to create executable programs and images, the build-side procedures @code{build-program} and @code{build-image} can be used.  They should be called in a build phase after the @code{create-asdf-configuration} phase, so that the system which was just built can be used within the resulting image.  @code{build-program} requires a list of Common Lisp expressions to be passed as the @code{#:entry-program} argument.
fr: Pour créer des programmes exécutables et des images, les procédures côté construction @code{build-program} et @code{build-image} peuvent être utilisées.  Elles devraient être appelées dans une phase de construction après la phase @code{create-asdf-configuration} pour que le système qui vient d'être construit puisse être utilisé dans l'image créée.  @code{build-program} requiert une liste d'expressions Common Lisp dans l'argument @code{#:entry-program}.

note: type: defvr
en: By default, all the @file{.asd} files present in the sources are read to find system definitions.  The @code{#:asd-files} parameter can be used to specify the list of @file{.asd} files to read.  Furthermore, if the package defines a system for its tests in a separate file, it will be loaded before the tests are run if it is specified by the @code{#:test-asd-file} parameter.  If it is not set, the files @code{<system>-tests.asd}, @code{<system>-test.asd}, @code{tests.asd}, and @code{test.asd} will be tried if they exist.
fr: Par défaut, tous les fichiers @file{.asd} présents dans les sources sont lus pour trouver les définitions du système. Le paramètre @code{#:asd-file} peut être utilisé pour préciser la liste des fichiers @file{.asd} à lire.  En outre, si le paquet définit un système pour ses tests dans un fichier séparé, il sera chargé avant l'exécution des tests s'il est spécifié par le paramètre @code{#:test-asd-file}.  S'il n'est pas défini, les fichiers @code{<system>-tests.asd}, @code{<system>-test.asd}, @code{tests.asd} et @code{test.asd} seront essayés s'ils existent.

note: type: defvr
en: If for some reason the package must be named in a different way than the naming conventions suggest, or if several systems must be compiled, the @code{#:asd-systems} parameter can be used to specify the list of system names.
fr: Si pour quelque raison que ce soit le paquet doit être nommé d'une manière différente de ce que la convention de nommage suggère, ou si plusieurs systèmes doivent être compilés, le paramètre @code{#:asd-systems} peut être utilisé pour spécifier la liste des noms de systèmes.

note: type: defvr
en: {Scheme Variable} cargo-build-system
fr: {Variable Scheme} cargo-build-system

note: type: cindex
en: Rust programming language
fr: Langage de programmation Rust

note: type: cindex
en: Cargo (Rust build system)
fr: Cargo (système de construction Rust)

note: type: defvr
en: This variable is exported by @code{(guix build-system cargo)}.  It supports builds of packages using Cargo, the build tool of the @uref{https://www.rust-lang.org, Rust programming language}.
fr: Cette variable est exportée par @code{(guix build-system cargo)}.  Elle supporte les construction de paquets avec Cargo, le système de construction du @uref{https://www.rust-lang.org, langage de programmation Rust}.

note: type: defvr
en: It adds @code{rustc} and @code{cargo} to the set of inputs.  A different Rust package can be specified with the @code{#:rust} parameter.
fr: Cela ajoute @code{rustc} et @code{cargo} à l'ensemble des entrées.  Un autre paquet Rust peut être spécifié avec le paramètre @code{#:rust}.

note: type: defvr
en: Regular cargo dependencies should be added to the package definition similarly to other packages; those needed only at build time to native-inputs, others to inputs.  If you need to add source-only crates then you should add them to via the @code{#:cargo-inputs} parameter as a list of name and spec pairs, where the spec can be a package or a source definition.  Note that the spec must evaluate to a path to a gzipped tarball which includes a @code{Cargo.toml} file at its root, or it will be ignored.  Similarly, cargo dev-dependencies should be added to the package definition via the @code{#:cargo-development-inputs} parameter.
fr: Les dépendances régulières de cargo doivent être ajoutées à la définition du paquet comme avec les autres paquets ; celles qui ne sont requises qu'à la construction dans « native-inputs », les autres dans « inputs ». Si vous devez ajouter des crates sources alors vous devez les ajouter via le paramètre @code{#:cargo-inputs} sous la forme d'une liste de paires de noms et de spécifications, où la spécification peut être un paquet ou une définition de source.  Notez que la spécification doit évaluer un chemin vers une arhive gzippée qui inclut un fichier @code{Cargo.toml} à sa racine, sinon elle sera ignorée.  De même, les dépendances de développement de cargo doivent être ajoutées à la définition du paquet via le paramètre @code{#:cargo-development-inputs}.

note: type: defvr
en: In its @code{configure} phase, this build system will make any source inputs specified in the @code{#:cargo-inputs} and @code{#:cargo-development-inputs} parameters available to cargo.  It will also remove an included @code{Cargo.lock} file to be recreated by @code{cargo} during the @code{build} phase.  The @code{package} phase will run @code{cargo package} to create a source crate for future use.  The @code{install} phase installs the binaries defined by the crate.  Unless @code{install-source? #f} is defined it will also install a source crate repository of itself and unpacked sources, to ease in future hacking on rust packages.
fr: Dans sa phase @code{configure}, ce système de construction mettra à disposition de cargo toutes les entrées sources spécifiées dans les paramètres @code{#:cargo-inputs} et @code{#:cargo-development-inputs}.  Il supprimera également un fichier @code{Cargo.lock} inclus, qui sera recréé par @code{cargo} pendant la phase @code{build}. La phase @code{package} lancera @code{cargo package} pour créer un crate source réutilisable plus tard. La phase @code{install} installe les binaires définis par le crate. À moins de définir @code{install-source? #f} elle installera aussi un crate source et les sources décompressées pour faciliter le travail avec les paquets rust.

note: type: defvr
en: {Scheme Variable} chicken-build-system
fr: {Variable Scheme} chicken-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system chicken)}.  It builds @uref{https://call-cc.org/, CHICKEN Scheme} modules, also called ``eggs'' or ``extensions''.  CHICKEN generates C source code, which then gets compiled by a C compiler, in this case GCC.
fr: Cette variable est exportée par @code{(guix build-system chicken)}. Elle construit des modules @uref{https://call-cc.org/, CHICKEN Scheme}, aussi appelés « eggs » ou « extensions ». CHICKEN génère du code source C, qui est ensuite compilé par un compilateur C, dans ce cas GCC.

note: type: defvr
en: This build system adds @code{chicken} to the package inputs, as well as the packages of @code{gnu-build-system}.
fr: Ce système de construction ajoute @code{chicken} aux entrées du paquet, en plus des paquets de @code{gnu-build-system}.

note: type: defvr
en: The build system can't (yet) deduce the egg's name automatically, so just like with @code{go-build-system} and its @code{#:import-path}, you should define @code{#:egg-name} in the package's @code{arguments} field.
fr: Le système de construction ne peut pas (encore) déterminer le nom de l'egg automatiquement, donc comme avec le @code{go-build-system} et son @code{#:import-path}, vous devriez définir @code{#:egg-name} dans le champ @code{arguments} du paquet.

note: type: defvr
en: For example, if you are packaging the @code{srfi-1} egg:
fr: Par exemple, si vous créez un paquet pour l'egg @code{srfi-1} :

note: type: defvr
en: Egg dependencies must be defined in @code{propagated-inputs}, not @code{inputs} because CHICKEN doesn't embed absolute references in compiled eggs.  Test dependencies should go to @code{native-inputs}, as usual.
fr: Les dépendances des egg doivent être définies dans @code{propagated-inputs}, pas @code{inputs} parce que CHICKEN n'inclut pas de références absolues dans les eggs compilés. Les dépendances des tests doivent aller dans @code{native-inputs}, comme d'habitude.

note: type: defvr
en: {Scheme Variable} copy-build-system
fr: {Variable Scheme} copy-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system copy)}.  It supports builds of simple packages that don't require much compiling, mostly just moving files around.
fr: Cette variable est exportée par @code{(guix build-system copy)}.  Il prend en charge la construction de paquets simples qui ne nécessitent pas beaucoup de compilation, la plupart du temps juste le déplacement de fichiers.

note: type: defvr
en: It adds much of the @code{gnu-build-system} packages to the set of inputs.  Because of this, the @code{copy-build-system} does not require all the boilerplate code often needed for the @code{trivial-build-system}.
fr: Cela ajoute une grande partie des paquets @code{gnu-build-system} à l'ensemble des entrées.  De ce fait, le @code{copy-build-system} n'a pas besoin de tout le code passe-partout souvent nécessaire pour le @code{trivial-build-system}.

note: type: defvr
en: To further simplify the file installation process, an @code{#:install-plan} argument is exposed to let the packager specify which files go where.  The install plan is a list of @code{(@var{source} @var{target} [@var{filters}])}.  @var{filters} are optional.
fr: Pour simplifier davantage le processus d'installation des fichiers, un argument @code{#:install-plan} est exposé pour permettre au packager de spécifier quels fichiers vont où.  Le plan d'installation est une liste de @code{(@var{source} @var{cible} [@var{filtres}])}.  Les @var{filtres} sont facultatifs.

note: type: item
en: When @var{source} matches a file or directory without trailing slash, install it to @var{target}.
fr: Lorsque @var{source} correspond à un fichier ou à un répertoire sans barre oblique, installez-le sur @var{cible}.

note: type: item
en: If @var{target} has a trailing slash, install @var{source} basename beneath @var{target}.
fr: Si @var{target} a une barre oblique, installez le nom de base @var{source} sous @var{target}.

note: type: item
en: Otherwise install @var{source} as @var{target}.
fr: Sinon, installez @var{source} comme @var{cible}.

note: type: item
en: When @var{source} is a directory with a trailing slash, or when @var{filters} are used,
fr: Lorsque @var{source} est un répertoire avec une barre oblique, ou lorsque des @var{filtres} sont utilisés,

note: type: itemize
en: the trailing slash of @var{target} is implied with the same meaning as above.
fr: la barre oblique de @var{target} est implicite avec la même signification que ci-dessus.

note: type: item
en: Without @var{filters}, install the full @var{source} @emph{content} to @var{target}.
fr: Sans @var{filtres}, installez le @var{source} complet @emph{contenu} à @var{cible}.

note: type: item
en: With @var{filters} among @code{#:include}, @code{#:include-regexp}, @code{#:exclude},
fr: Avec @var{filtres} parmi @code{#:include}, @code{#:include-regexp}, @code{#:exclude},

note: type: itemize
en: @code{#:exclude-regexp}, only select files are installed depending on the filters.  Each filters is specified by a list of strings.
fr: @code{#:exclude-regexp}, seuls les fichiers sélectionnés sont installés en fonction des filtres.  Chaque filtre est spécifié par une liste de chaînes de caractères.

note: type: item
en: With @code{#:include}, install all the files which the path suffix matches
fr: Avec @code{#:include}, installez tous les fichiers dont le suffixe de chemin correspond

note: type: itemize
en: at least one of the elements in the given list.
fr: au moins un des éléments dans la liste donnée.

note: type: item
en: With @code{#:include-regexp}, install all the files which the
fr: Avec @code{#:include-regexp}, installez tous les fichiers que le

note: type: itemize
en: subpaths match at least one of the regular expressions in the given list.
fr: les sous-chemins correspondent à au moins une des expressions régulières de la liste donnée.

note: type: item
en: The @code{#:exclude} and @code{#:exclude-regexp} filters
fr: Les filtres @code{#:exclude} et @code{#:exclude-regexp}

note: type: itemize
en: are the complement of their inclusion counterpart.  Without @code{#:include} flags, install all files but those matching the exclusion filters.  If both inclusions and exclusions are specified, the exclusions are done on top of the inclusions.
fr: sont le complément de leur homologue pour l'inclusion.  Sans les drapeaux @code{#:include}, installez tous les fichiers sauf ceux qui correspondent aux filtres d'exclusion.  Si les inclusions et les exclusions sont toutes deux spécifiées, les exclusions sont faites en complément des inclusions.

note: type: itemize
en: In all cases, the paths relative to @var{source} are preserved within @var{target}.
fr: Dans tous les cas, les chemins relatifs à @var{source} sont préservés dans @var{cible}.

note: type: defvr
en: Examples:
fr: Exemples :

note: type: item
en: @code{("foo/bar" "share/my-app/")}: Install @file{bar} to @file{share/my-app/bar}.
fr: @code{("toto/titi" "share/mon-app/")} : Installer @file{titi} sur @file{share/mon-app/titi}.

note: type: item
en: @code{("foo/bar" "share/my-app/baz")}: Install @file{bar} to @file{share/my-app/baz}.
fr: @code{("toto/titi" "share/mon-app/tata")} : Installer @file{titi} sur @file{share/mon-app/tata}.

note: type: item
en: @code{("foo/" "share/my-app")}: Install the content of @file{foo} inside @file{share/my-app},
fr: @code{("toto/" "share/mon-app")} : Installez le contenu de @file{toto} dans @file{share/mon-app},

note: type: itemize
en: e.g., install @file{foo/sub/file} to @file{share/my-app/sub/file}.
fr: par exemple, installe @file{toto/sub/file} dans @file{share/mon-app/sub/file}.

note: type: item
en: @code{("foo/" "share/my-app" #:include ("sub/file"))}: Install only @file{foo/sub/file} to
fr: @code{("toto/" "share/mon-app" #:include ("sub/file"))} : Installe seulement @file{toto/sub/file} vers

note: type: itemize
en: @file{share/my-app/sub/file}.
fr: @file{share/mon-app/sub/file}.

note: type: item
en: @code{("foo/sub" "share/my-app" #:include ("file"))}: Install @file{foo/sub/file} to
fr: @code{("toto/sub" "share/mon-app" #:include ("file"))} : Installe @file{toto/sub/file} vers

note: type: itemize
en: @file{share/my-app/file}.
fr: @file{share/mon-app/file}.

note: type: cindex
en: Clojure (programming language)
fr: Clojure (langage de programmation)

note: type: cindex
en: simple Clojure build system
fr: système de construction Clojure simple

note: type: defvr
en: {Scheme Variable} clojure-build-system
fr: {Variable Scheme} clojure-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system clojure)}.  It implements a simple build procedure for @uref{https://clojure.org/, Clojure} packages using plain old @code{compile} in Clojure.  Cross-compilation is not supported yet.
fr: Cette variable est exportée par @code{(guix build-system clojure)}.  Elle implémente une procédure de construction des paquets simple qui utilise le bon vieux @code{compile} de Clojure.  La compilation croisée n'est pas encore supportée.

note: type: defvr
en: It adds @code{clojure}, @code{icedtea} and @code{zip} to the set of inputs.  Different packages can be specified with the @code{#:clojure}, @code{#:jdk} and @code{#:zip} parameters, respectively.
fr: Elle ajoute @code{clojure}, @code{icedtea} et @code{zip} à l'ensemble des entrées.  Des paquets différents peuvent être spécifiés avec les paramètres @code{#:clojure}, @code{#:jdk} et @code{#:zip}.

note: type: defvr
en: A list of source directories, test directories and jar names can be specified with the @code{#:source-dirs}, @code{#:test-dirs} and @code{#:jar-names} parameters, respectively.  Compile directory and main class can be specified with the @code{#:compile-dir} and @code{#:main-class} parameters, respectively.  Other parameters are documented below.
fr: Une liste de répertoires sources, de répertoires de tests et de noms de jar peuvent être spécifiés avec les paramètres @code{#:source-dirs}, @code{#:test-dirs} et @code{#:jar-names}.  Le répertoire de construction est la classe principale peuvent être spécifiés avec les paramètres @code{#:compile-dir} et @code{#:main-class}.  Les autres paramètres sont documentés plus bas.

note: type: defvr
en: This build system is an extension of @code{ant-build-system}, but with the following phases changed:
fr: Ce système de construction est une extension de @code{ant-build-system}, mais avec les phases suivantes modifiées :

note: type: table
en: This phase calls @code{compile} in Clojure to compile source files and runs @command{jar} to create jars from both source files and compiled files according to the include list and exclude list specified in @code{#:aot-include} and @code{#:aot-exclude}, respectively.  The exclude list has priority over the include list.  These lists consist of symbols representing Clojure libraries or the special keyword @code{#:all} representing all Clojure libraries found under the source directories.  The parameter @code{#:omit-source?} decides if source should be included into the jars.
fr: Cette phase appelle @code{compile} en Clojure pour compiler les fichiers sources et lance @command{jar} pour créer les fichiers jar à partir des fichiers sources et des fichiers compilés en suivant la liste d'inclusion et d'exclusion spécifiées dans @code{#:aot-include} et @code{#:aot-exclude}.  La liste d'exclusion a la priorité sur la liste d'inclusion.  Ces listes consistent en des symboles représentant des bibliothèque Clojure ou le mot clef spécial @code{#:all}, représentant toutes les bibliothèques Clojure trouvées dans les répertoires des sources.  Le paramètre @code{#:omit-source?} décide si les sources devraient être incluses dans les fichiers jar.

note: type: table
en: This phase runs tests according to the include list and exclude list specified in @code{#:test-include} and @code{#:test-exclude}, respectively.  Their meanings are analogous to that of @code{#:aot-include} and @code{#:aot-exclude}, except that the special keyword @code{#:all} now stands for all Clojure libraries found under the test directories.  The parameter @code{#:tests?} decides if tests should be run.
fr: Cette phase lance les tests en suivant les liste d'inclusion et d'exclusion spécifiées dans @code{#:test-include} et @code{#:test-exclude}.  Leur signification est analogue à celle de @code{#:aot-include} et @code{#:aot-exclude}, sauf que le mot-clef spécial @code{#:all} signifie maintenant toutes les bibliothèques Clojure trouvées dans les répertoires de tests.  Le paramètre @code{#:tests?} décide si les tests devraient être lancés.

note: type: table
en: This phase installs all jars built previously.
fr: Cette phase installe tous les fichiers jar précédemment construits.

note: type: defvr
en: Apart from the above, this build system also contains an additional phase:
fr: En dehors de cela, le système de construction contient aussi la phase suivante :

note: type: table
en: This phase installs all top-level files with base name matching @code{%doc-regex}.  A different regex can be specified with the @code{#:doc-regex} parameter.  All files (recursively) inside the documentation directories specified in @code{#:doc-dirs} are installed as well.
fr: Cette phase installe tous les fichiers dans le répertoire de plus haut niveau dont le nom correspond à @code{%doc-regex}.  On peut spécifier une regex différente avec le paramètre @code{#:doc-regex}.  Tous les fichiers (récursivement) dans les répertoires de documentations spécifiés dans @code{#:doc-dirs} sont aussi installés.

note: type: defvr
en: {Scheme Variable} cmake-build-system
fr: {Variable Scheme} cmake-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system cmake)}.  It implements the build procedure for packages using the @url{https://www.cmake.org, CMake build tool}.
fr: Cette variable est exportée par @code{(guix build-system cmake)}.  Elle implémente la procédure de construction des paquets qui utilisent l'@url{https://www.cmake.org, outil de construction CMake}.

note: type: defvr
en: It automatically adds the @code{cmake} package to the set of inputs.  Which package is used can be specified with the @code{#:cmake} parameter.
fr: Elle ajoute automatiquement le paquet @code{cmake} à l'ensemble des entrées.  Le paquet utilisé peut être spécifié par le paramètre @code{#:cmake}.

note: type: defvr
en: The @code{#:configure-flags} parameter is taken as a list of flags passed to the @command{cmake} command.  The @code{#:build-type} parameter specifies in abstract terms the flags passed to the compiler; it defaults to @code{"RelWithDebInfo"} (short for ``release mode with debugging information''), which roughly means that code is compiled with @code{-O2 -g}, as is the case for Autoconf-based packages by default.
fr: Le paramètre @code{#:configure-flags} est pris comme une liste de drapeaux à passer à la commande @command{cmake}.  Le paramètre @code{#:build-type} spécifie en termes abstrait les drapeaux passés au compilateur ; sa valeur par défaut est @code{"RelWithDebInfo"} (ce qui veut dire « mode public avec les informations de débogage » en plus court), ce qui signifie en gros que le code sera compilé avec @code{-O2 -g} comme pour les paquets autoconf par défaut.

note: type: defvr
en: {Scheme Variable} dune-build-system
fr: {Variable Scheme} dune-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system dune)}.  It supports builds of packages using @uref{https://dune.build/, Dune}, a build tool for the OCaml programming language.  It is implemented as an extension of the @code{ocaml-build-system} which is described below.  As such, the @code{#:ocaml} and @code{#:findlib} parameters can be passed to this build system.
fr: Cette variable est exportée par @code{(guix build-system dune)}.  Elle prend en charge la construction des paquets qui utilisent @uref{https://dune.build/, Dune}, un outil de construction pour le langage de programmation OCaml.  Elle est implémentée comme une extension de @code{ocaml-build-system} décrit plus bas.  En tant que tel, les paramètres @code{#:ocaml} et @code{#:findlib} peuvent être passés à ce système de construction.

note: type: defvr
en: It automatically adds the @code{dune} package to the set of inputs.  Which package is used can be specified with the @code{#:dune} parameter.
fr: Elle ajoute automatiquement le paquet @code{dune} à l'ensemble des entrées.  Le paquet utilisé peut être spécifié par le paramètre @code{#:dune}.

note: type: defvr
en: There is no @code{configure} phase because dune packages typically don't need to be configured.  The @code{#:build-flags} parameter is taken as a list of flags passed to the @code{dune} command during the build.
fr: Il n'y a pas de phase @code{configure} parce que les paquets dune n'ont habituellement pas besoin d'être configurés.  Le paramètre @code{#:build-flags} est interprété comme une liste de drapeaux pour la commande @code{dune} pendant la construction.

note: type: defvr
en: The @code{#:jbuild?} parameter can be passed to use the @code{jbuild} command instead of the more recent @code{dune} command while building a package.  Its default value is @code{#f}.
fr: Le paramètre @code{#:jbuild?} peut être passé pour utiliser la commande @code{jbuild} à la place de la commande @code{dune} plus récente pour la construction d'un paquet.  Sa valeur par défaut est @code{#f}.

note: type: defvr
en: The @code{#:package} parameter can be passed to specify a package name, which is useful when a package contains multiple packages and you want to build only one of them.  This is equivalent to passing the @code{-p} argument to @code{dune}.
fr: Le paramètre @code{#:package} peut être passé pour spécifié un nom de paquet, ce qui est utile lorsqu'un paquet contient plusieurs paquets et que vous voulez n'en construire qu'un.  C'est équivalent à passer l'argument @code{-p} à @code{dune}.

note: type: defvr
en: {Scheme variable} elm-build-system
fr: {Variable Scheme} elm-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system elm)}.  It implements a build procedure for @url{https://elm-lang.org, Elm} packages similar to @samp{elm install}.
fr: Cette variable est exportée par @code{(guix build-system elm)}.  Elle implémente une procédure de construction pour les paquets @url{https://elm-lang.org, Elm} qui ressemble à @samp{elm install}.

note: type: defvr
en: The build system adds an Elm compiler package to the set of inputs.  The default compiler package (currently @code{elm-sans-reactor}) can be overridden using the @code{#:elm} argument.  Additionally, Elm packages needed by the build system itself are added as implicit inputs if they are not already present: to suppress this behavior, use the @code{#:implicit-elm-package-inputs?} argument, which is primarily useful for bootstrapping.
fr: Le système de construction ajoute un paquet qui contient le compilateur Elm à l'ensemble des entrées. Le paquet de compilateur par défaut (actuellement @code{elm-sans-reactor}) peut être remplacé avec l'argument @code{#:elm}. En plus, les paquets Elm requis par le système de construction lui-même sont ajoutés en tant qu'entrées implicites s'ils ne sont pas déjà présents : pour supprimer ce comportement, utilisez l'argument @code{#:implicit-elm-package-inputs?} qui est surtout utile pour l'armorçage.

note: type: defvr
en: The @code{"dependencies"} and @code{"test-dependencies"} in an Elm package's @file{elm.json} file correspond to @code{propagated-inputs} and @code{inputs}, respectively.
fr: Les @code{"dependencies"} et @code{"test-dependencies"} du fichier @file{elm.json} d'un paquet Elm correspondent à @code{propagated-inputs} et @code{inputs}, respectivement.

note: type: defvr
en: Elm requires a particular structure for package names: @pxref{Elm Packages} for more details, including utilities provided by @code{(guix build-system elm)}.
fr: Elm a besoin d'une structure particulière pour les noms des paquets : @pxref{Elm Packages} pour plus de détails, en particulier sur les outils fournis par @code{(guix build-system elm)}.

note: type: defvr
en: There are currently a few noteworthy limitations to @code{elm-build-system}:
fr: Il y a actuellement quelques limites notables à @code{elm-build-system} :

note: type: itemize
en: The build system is focused on @dfn{packages} in the Elm sense of the word: Elm @dfn{projects} which declare @code{@{ "type": "package" @}} in their @file{elm.json} files.  Using @code{elm-build-system} to build Elm @dfn{applications} (which declare @code{@{ "type": "application" @}}) is possible, but requires ad-hoc modifications to the build phases.  For examples, see the definitions of the @code{elm-todomvc} example application and the @code{elm} package itself (because the front-end for the @samp{elm reactor} command is an Elm application).
fr: Le système de construction se concentre sur les @dfn{paquets} au sens d'Elm : les @dfn{projets} Elm qui déclarent @code{@{ "type": "package"@}} dans leur fichier @file{elm.json}. Utiliser @code{elm-build-system} pour construire des @dfn{applications} Elm (qui déclarent @code{@{ "type": "application" @}} est possible, mais nécessite des modifications ad-hoc des phases de construction. Par exemple, voir les définitions de l'application d'exemple @code{elm-todomvc} et du paquet @code{elm} lui-même (parce que l'interface de la commande @samp{elm reactor} est une application Elm).

note: type: itemize
en: Elm supports multiple versions of a package coexisting simultaneously under @env{ELM_HOME}, but this does not yet work well with @code{elm-build-system}.  This limitation primarily affects Elm applications, because they specify exact versions for their dependencies, whereas Elm packages specify supported version ranges.  As a workaround, the example applications mentioned above use the @code{patch-application-dependencies} procedure provided by @code{(guix build elm-build-system)} to rewrite their @file{elm.json} files to refer to the package versions actually present in the build environment.  Alternatively, Guix package transformations (@pxref{Defining Package Variants}) could be used to rewrite an application's entire dependency graph.
fr: Elm permet la coexistence simultané de plusieurs versions d'un paquet dans @env{ELM_HOME}, mais cela ne fonctionne pas encore bien avec @code{elm-build-system}. Cette limite affecte principalement les applications Elm, parce qu'elles spécifient les versions exactes de leurs dépendances, alors que les paquets Elm spécifient des intervalles de versions prises en charge. Pour contourner le problème, les applications d'exemple mentionnées plus haut utilisent la procédure @code{patch-application-dependencies} fournie par @code{(guix build elm-build-system)} pour réécrire leur fichier @file{elm.json} pour qu'ils se réfèrent aux versions effectivement présentes dans l'environnement de construction. Autrement, les transformations des paquets Guix (@pxref{Defining Package Variants}) peuvent aussi réécrire tout le graphe de dépendance d'une application.

note: type: itemize
en: We are not yet able to run tests for Elm projects because neither @url{https://github.com/mpizenberg/elm-test-rs, @command{elm-test-rs}} nor the Node.js-based @url{https://github.com/rtfeldman/node-test-runner, @command{elm-test}} runner has been packaged for Guix yet.
fr: Nous ne pouvons pas encore lancer les tests des projets Elm parce que ni @url{https://github.com/mpizenberg/elm-test-rs, @command{elm-test-rs}} ni l'exécuteur @url{https://github.com/rtfeldman/node-test-runner, @command{elm-test}} basé sur Node.js ne sont empaquetés dans Guix.

note: type: defvr
en: {Scheme Variable} go-build-system
fr: {Variable Scheme} go-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system go)}.  It implements a build procedure for Go packages using the standard @url{https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies, Go build mechanisms}.
fr: Cette variable est exportée par @code{(guix build-system go)}.  Elle implémente la procédure pour les paquets Go utilisant les @url{https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies, mécanismes de construction Go} standard.

note: type: defvr
en: The user is expected to provide a value for the key @code{#:import-path} and, in some cases, @code{#:unpack-path}.  The @url{https://golang.org/doc/code.html#ImportPaths, import path} corresponds to the file system path expected by the package's build scripts and any referring packages, and provides a unique way to refer to a Go package.  It is typically based on a combination of the package source code's remote URI and file system hierarchy structure.  In some cases, you will need to unpack the package's source code to a different directory structure than the one indicated by the import path, and @code{#:unpack-path} should be used in such cases.
fr: L'utilisateur doit fournir une valeur à la clef @code{#:import-path} et, dans certains cas, @code{#:unpack-path}.  Le @url{https://golang.org/doc/code.html#ImportPaths, chemin d'import} correspond au chemin dans le système de fichiers attendu par le script de construction du paquet et les paquets qui s'y réfèrent et fournit une manière unique de se référer à un paquet Go.  Il est typiquement basé sur une combinaison de l'URI du code source du paquet et d'une structure hiérarchique du système de fichier.  Dans certains cas, vous devrez extraire le code source du paquet dans une structure de répertoires différente que celle indiquée par le chemin d'import et @code{#:unpack-path} devrait être utilisé dans ces cas-là.

note: type: defvr
en: Packages that provide Go libraries should install their source code into the built output.  The key @code{#:install-source?}, which defaults to @code{#t}, controls whether or not the source code is installed.  It can be set to @code{#f} for packages that only provide executable files.
fr: Les paquets qui fournissent des bibliothèques Go devraient installer leur code source dans la sortie du paquet.  La clef @code{#:install-source?}, qui vaut @code{#t} par défaut, contrôle l'installation du code source.  Elle peut être mise à @code{#f} pour les paquets qui ne fournissent que des fichiers exécutables.

note: type: defvr
en: Packages can be cross-built, and if a specific architecture or operating system is desired then the keywords @code{#:goarch} and @code{#:goos} can be used to force the package to be built for that architecture and operating system.  The combinations known to Go can be found @url{"https://golang.org/doc/install/source#environment", in their documentation}.
fr: Vous pouvez effectuer une compilation croisée des paquets et si vous voulez une architecture ou un système d'exploitation spécifique alors vous pouvez utiliser les mot-clés @code{#:goarch} et @code{#:goos} pour forcer le paquet à être construit pour l'architecture et le système d'exploitation donnés. Vous trouverez les combinaisons connues pour Go  @url{"https://golang.org/doc/install/source#environment", dans leur documentation}.

note: type: defvr
en: {Scheme Variable} glib-or-gtk-build-system
fr: {Variable Scheme} glib-or-gtk-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system glib-or-gtk)}.  It is intended for use with packages making use of GLib or GTK+.
fr: Cette variable est exportée par @code{(guix build-system glib-or-gtk)}.  Elle est conçue pour être utilisée par des paquets qui utilisent GLib ou GTK+.

note: type: defvr
en: This build system adds the following two phases to the ones defined by @code{gnu-build-system}:
fr: Ce système de construction ajoute les deux phases suivantes à celles définies par @code{gnu-build-system} :

note: type: table
en: The phase @code{glib-or-gtk-wrap} ensures that programs in @file{bin/} are able to find GLib ``schemas'' and @uref{https://developer.gnome.org/gtk3/stable/gtk-running.html, GTK+ modules}.  This is achieved by wrapping the programs in launch scripts that appropriately set the @env{XDG_DATA_DIRS} and @env{GTK_PATH} environment variables.
fr: La phase @code{glib-or-gtk-wrap} garantit que les programmes dans @file{bin/} sont capables de trouver les « schémas » GLib et @uref{https://developer.gnome.org/gtk3/stable/gtk-running.html, GTK+ modules}.  Cela est réalisé en enveloppant les programmes dans des scripts de lancement qui définissent de manière appropriée les variables d'environnement @env{XDG_DATA_DIRS} et @env{GTK_PATH}.

note: type: table
en: It is possible to exclude specific package outputs from that wrapping process by listing their names in the @code{#:glib-or-gtk-wrap-excluded-outputs} parameter.  This is useful when an output is known not to contain any GLib or GTK+ binaries, and where wrapping would gratuitously add a dependency of that output on GLib and GTK+.
fr: Il est possible d'exclure des sorties spécifiques de ce processus d'enveloppage en listant leur nom dans le paramètre @code{#:glib-or-gtk-wrap-excluded-outputs}.  C'est utile lorsqu'une sortie est connue pour ne pas contenir de binaires GLib ou GTK+, et où l'enveloppe ajouterait une dépendance inutile vers GLib et GTK+.

note: type: table
en: The phase @code{glib-or-gtk-compile-schemas} makes sure that all @uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html, GSettings schemas} of GLib are compiled.  Compilation is performed by the @command{glib-compile-schemas} program.  It is provided by the package @code{glib:bin} which is automatically imported by the build system.  The @code{glib} package providing @command{glib-compile-schemas} can be specified with the @code{#:glib} parameter.
fr: La phase  @code{glib-or-gtk-compile-schemas} s'assure que tous les @uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html, schémas GSettings} de GLib sont compilés.  La compilation est effectuée par le programme @command{glib-compile-schemas}.  Il est fournit par le paquet @code{glib:bin} qui est automatiquement importé par le système de construction.  Le paquet @code{glib} qui fournit @command{glib-compile-schemas} peut être spécifié avec le paramètre @code{#:glib}.

note: type: defvr
en: Both phases are executed after the @code{install} phase.
fr: Ces deux phases sont exécutées après la phase @code{install}.

note: type: defvr
en: {Scheme Variable} guile-build-system
fr: {Variable Scheme} guile-build-system

note: type: defvr
en: This build system is for Guile packages that consist exclusively of Scheme code and that are so lean that they don't even have a makefile, let alone a @file{configure} script.  It compiles Scheme code using @command{guild compile} (@pxref{Compilation,,, guile, GNU Guile Reference Manual}) and installs the @file{.scm} and @file{.go} files in the right place.  It also installs documentation.
fr: Ce système de construction sert aux paquets Guile qui consistent exclusivement en code Scheme et qui sont si simple qu'ils n'ont même pas un makefile, sans parler d'un script @file{configure}.  Il compile le code Scheme en utilisant @command{guild compile} (@pxref{Compilation,,, guile, GNU Guile Reference Manual}) et installe les fichiers @file{.scm} et @file{.go} aux bons emplacements.  Il installe aussi la documentation.

note: type: defvr
en: This build system supports cross-compilation by using the @option{--target} option of @samp{guild compile}.
fr: Ce système de construction supporte la compilation croisée en utilisant l'option @option{--target} de @command{guild compile}.

note: type: defvr
en: Packages built with @code{guile-build-system} must provide a Guile package in their @code{native-inputs} field.
fr: Les paquets construits avec @code{guile-build-system} doivent fournir un paquet Guile dans leur champ @code{native-inputs}.

note: type: defvr
en: {Scheme Variable} julia-build-system
fr: {Variable Scheme} julia-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system julia)}.  It implements the build procedure used by @uref{https://julialang.org/, julia} packages, which essentially is similar to running @samp{julia -e 'using Pkg; Pkg.add(package)'} in an environment where @env{JULIA_LOAD_PATH} contains the paths to all Julia package inputs.  Tests are run by calling @code{/test/runtests.jl}.
fr: Cette variable est exportée par @code{(guix build-system julia)}.  Elle implémente la procédure de compilation utilisée par les paquets @uref{https://julialang.org/, julia}, qui est globalement similaire à l'exécution de @samp{julia -e 'using Pkg ; Pkg.add(package)'} dans un environnement où @env{JULIA_LOAD_PATH} contient les chemins de toutes les entrées des paquets Julia. Les tests sont effectués en appelant @code{/test/runtests.jl}.

note: type: defvr
en: The Julia package name and uuid is read from the file @file{Project.toml}.  These values can be overridden by passing the argument @code{#:julia-package-name} (which must be correctly capitalized) or @code{#:julia-package-uuid}.
fr: Le nom et l'uuid du paquet Julia est lu dans le fichier @file{Project.toml}. Ces valeurs peuvent être remplacées en passant l'argument @code{#:julia-package-name} (le nom doit être correctement capitalisé) ou @code{#:julia-package-uuid}.

note: type: defvr
en: Julia packages usually manage their binary dependencies via @code{JLLWrappers.jl}, a Julia package that creates a module (named after the wrapped library followed by @code{_jll.jl}.
fr: Les paquets Julia gèrent généralement leurs dépendances binaires via @code{JLLWrappers.jl}, un paquet Julia qui crée un module (nommé d'après la bibliothèque enveloppée suivie de @code{_jll.jl}.

note: type: defvr
en: To add the binary path @code{_jll.jl} packages, you need to patch the files under @file{src/wrappers/}, replacing the call to the macro @code{JLLWrappers.@@generate_wrapper_header}, adding as a second argument containing the store path the binary.
fr: Pour ajouter le chemin vers les binaires @code{_jll.jl}, vous devez corriger les fichiers dans @file{src/wrappers/}, en remplaçant l'appel à la macro @code{JLLWrappers.@@generate_wrapper_header}, en ajoutant un second argument contenant le chemin du binaire dans le dépôt.

note: type: defvr
en: As an example, in the MbedTLS Julia package, we add a build phase (@pxref{Build Phases}) to insert the absolute file name of the wrapped MbedTLS package:
fr: Par exemple, dans le paquets Julia MbedTLS, on ajoute un phase de construction (@pxref{Build Phases}) pour insérer le nom de fichier absolu du paquet enveloppé MbedTLS :

note: type: lisp
en: (add-after 'unpack 'override-binary-path
      (lambda* (#:key inputs #:allow-other-keys)
        (for-each (lambda (wrapper)
                    (substitute* wrapper
                      (("generate_wrapper_header.*")
                       (string-append
                        "generate_wrapper_header(\"MbedTLS\", \""
                        (assoc-ref inputs "mbedtls-apache") "\")\n"))))
                  ;; There's a Julia file for each platform, override them all.
                  (find-files "src/wrappers/" "\\.jl$"))))
fr: (add-after 'unpack 'override-binary-path
      (lambda* (#:key inputs #:allow-other-keys)
        (for-each (lambda (wrapper)
                    (substitute* wrapper
                      (("generate_wrapper_header.*")
                       (string-append
                        "generate_wrapper_header(\"MbedTLS\", \""
                        (assoc-ref inputs "mbedtls-apache") "\")\n"))))
                  ;; Il y a un fichier Julia pour chaque plateforme, on les remplace tous.
                  (find-files "src/wrappers/" "\\.jl$"))))

note: type: defvr
en: Some older packages that aren't using @file{Project.toml} yet, will require this file to be created, too.  It is internally done if the arguments @code{#:julia-package-name} and @code{#:julia-package-uuid} are provided.
fr: Certains paquets plus anciens qui n'utilisent pas encore @file{Project.toml} nécessiteront aussi la création de ce fichier. Cela s'effectue en interne si les arguments @code{#:julia-package-name} et @code{#:julia-package-uuid} sont fournis.

note: type: defvr
en: {Scheme Variable} maven-build-system
fr: {Variable Scheme} maven-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system maven)}.  It implements a build procedure for @uref{https://maven.apache.org, Maven} packages.  Maven is a dependency and lifecycle management tool for Java.  A user of Maven specifies dependencies and plugins in a @file{pom.xml} file that Maven reads.  When Maven does not have one of the dependencies or plugins in its repository, it will download them and use them to build the package.
fr: Cette variable est exportée par @code{(guix build-system maven)}.  Elle implémente une procédure de construction pour les paquets @uref{https://maven.apache.org, Maven}.  Maven est un outil de gestion des dépendances et du cycle de vie pour Java.  Un·e utilisateur·rice de Maven spécifie les dépendances et les plugins dans un fichier @file{pom.xml} que Maven lit.  Lorsque Maven n'a pas l'une des dépendances ou l'un des plugins dans son dépôt, il les télécharge et les utilise pour construire le paquet.

note: type: defvr
en: The maven build system ensures that maven will not try to download any dependency by running in offline mode.  Maven will fail if a dependency is missing.  Before running Maven, the @file{pom.xml} (and subprojects) are modified to specify the version of dependencies and plugins that match the versions available in the guix build environment.  Dependencies and plugins must be installed in the fake maven repository at @file{lib/m2}, and are symlinked into a proper repository before maven is run.  Maven is instructed to use that repository for the build and installs built artifacts there.  Changed files are copied to the @file{lib/m2} directory of the package output.
fr: Le système de construction de maven garantit que maven n'essaiera pas de télécharger une dépendance en s'exécutant en mode hors ligne.  Maven échouera si une dépendance est manquante.  Avant de lancer Maven, le fichier @file{pom.xml} (et sous-projets) sont modifiés pour spécifier la version des dépendances et des plugins qui correspondent aux versions disponibles dans l'environnement de construction de guix.  Les dépendances et plugins doivent être installés dans le faux dépôt maven à @file{lib/m2}, et sont liés par un lien symbolique à un dépôt approprié avant que maven ne soit lancé.  Maven a pour instruction d'utiliser ce dépôt pour la construction et y installe les artefacts construits.  Les fichiers modifiés sont copiés dans le répertoire @file{lib/m2} de la sortie du paquet.

note: type: defvr
en: You can specify a @file{pom.xml} file with the @code{#:pom-file} argument, or let the build system use the default @file{pom.xml} file in the sources.
fr: Vous pouvez spécifier un fichier @file{pom.xml} avec l'argument @code{#:pom-file}, ou bien laisser le système de construction utiliser le fichier par défaut @file{pom.xml} dans les sources.

note: type: defvr
en: In case you need to specify a dependency's version manually, you can use the @code{#:local-packages} argument.  It takes an association list where the key is the groupId of the package and its value is an association list where the key is the artifactId of the package and its value is the version you want to override in the @file{pom.xml}.
fr: Dans le cas où vous avez besoin de spécifier manuellement une version de dépendances, vous pouvez utiliser l'argument @code{#:local-packages}. Il prend une liste d'association dont la clé est le groupId du paquet et sa valeur est une liste d'association où la clé est l'artefactId du paquet et sa valeur est la version que vous souhaitez remplacer dans le fichier @file{pom.xml}.

note: type: defvr
en: Some packages use dependencies or plugins that are not useful at runtime nor at build time in Guix.  You can alter the @file{pom.xml} file to remove them using the @code{#:exclude} argument.  Its value is an association list where the key is the groupId of the plugin or dependency you want to remove, and the value is a list of artifactId you want to remove.
fr: Certains paquets utilisent des dépendances ou des plugins qui ne sont pas utiles au moment de l'exécution ou de la compilation dans Guix.  Vous pouvez modifier le fichier @file{pom.xml} pour les supprimer en utilisant l'argument @code{#:exclude}.  Sa valeur est une liste d'association où la clé est le groupId du plugin ou de la dépendance que vous voulez supprimer, et la valeur est une liste d'artifactId que vous voulez supprimer.

note: type: defvr
en: You can override the default @code{jdk} and @code{maven} packages with the corresponding argument, @code{#:jdk} and @code{#:maven}.
fr: Vous pouvez remplacer les paquets @code{jdk} et @code{maven} par défaut avec l'argument correspondant, @code{#:jdk} et @code{#:maven}.

note: type: defvr
en: The @code{#:maven-plugins} argument is a list of maven plugins used during the build, with the same format as the @code{inputs} fields of the package declaration.  Its default value is @code{(default-maven-plugins)} which is also exported.
fr: L'argument @code{#:maven-plugins} est une liste de plugins maven utilisés pendant la construction, avec le même format que le champ @code{inputs} de la déclaration du paquet. Sa valeur par défaut est @code{(default-maven-plugins)} qui est également exportée.

note: type: defvr
en: {Scheme Variable} minetest-mod-build-system
fr: {Variable Scheme} minetest-mod-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system minetest)}.  It implements a build procedure for @uref{https://www.minetest.net, Minetest} mods, which consists of copying Lua code, images and other resources to the location Minetest searches for mods.  The build system also minimises PNG images and verifies that Minetest can load the mod without errors.
fr: Cette variable est exportée par @code{(guix build-system minetest)}.  Elle implémente une procédure de construction pour les mods de @uref{https://runwww.minetest.net, Minetest} qui consiste à copier du code Lua, des images et d'autres ressources aux emplacements où Minetest recherche des mods. Le système de construction minimise aussi les images PNG et vérifie que Minetest peut charger le mod sans erreur.

note: type: defvr
en: {Scheme Variable} minify-build-system
fr: {Variable Scheme} minify-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system minify)}.  It implements a minification procedure for simple JavaScript packages.
fr: Cette variable est exportée par @code{(guix build-system minify)}.  Elle implémente une procédure de minification pour des paquets JavaScript simples.

note: type: defvr
en: It adds @code{uglify-js} to the set of inputs and uses it to compress all JavaScript files in the @file{src} directory.  A different minifier package can be specified with the @code{#:uglify-js} parameter, but it is expected that the package writes the minified code to the standard output.
fr: Elle ajoute @code{uglify-js} à l'ensemble des entrées et l'utilise pour compresser tous les fichiers JavaScript du répertoire @file{src}.  Un minifieur différent peut être spécifié avec le paramètre @code{#:uglify-js} mais il est attendu que ce paquet écrive le code minifié sur la sortie standard.

note: type: defvr
en: When the input JavaScript files are not all located in the @file{src} directory, the parameter @code{#:javascript-files} can be used to specify a list of file names to feed to the minifier.
fr: Lorsque les fichiers JavaScript d'entrée ne sont pas situés dans le répertoire @file{src}, le paramètre @code{#:javascript-files} peut être utilisé pour spécifier une liste de noms de fichiers à donner au minifieur.

note: type: defvr
en: {Scheme Variable} ocaml-build-system
fr: {Variable Scheme} ocaml-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system ocaml)}.  It implements a build procedure for @uref{https://ocaml.org, OCaml} packages, which consists of choosing the correct set of commands to run for each package.  OCaml packages can expect many different commands to be run.  This build system will try some of them.
fr: Cette variable est exportée par @code{(guix build-system ocaml)}.  Elle implémente une procédure de construction pour les paquets @uref{https://ocaml.org, OCaml} qui consiste à choisir le bon ensemble de commande à lancer pour chaque paquet.  Les paquets OCaml peuvent demander des commandes diverses pour être construit.  Ce système de construction en essaye certaines.

note: type: defvr
en: When the package has a @file{setup.ml} file present at the top-level, it will run @code{ocaml setup.ml -configure}, @code{ocaml setup.ml -build} and @code{ocaml setup.ml -install}.  The build system will assume that this file was generated by @uref{http://oasis.forge.ocamlcore.org/, OASIS} and will take care of setting the prefix and enabling tests if they are not disabled.  You can pass configure and build flags with the @code{#:configure-flags} and @code{#:build-flags}.  The @code{#:test-flags} key can be passed to change the set of flags used to enable tests.  The @code{#:use-make?} key can be used to bypass this system in the build and install phases.
fr: Lorsqu'un fichier @file{setup.ml} est présent dans le répertoire de plus haut niveau, elle lancera @code{ocaml setup.ml -configure}, @code{ocaml setup.ml -build} et @code{ocaml setup.ml -install}.  Le système de construction supposera que ces fichiers ont été générés par @uref{http://oasis.forge.ocamlcore.org/, OASIS} et prendra soin d'initialiser le préfixe et d'activer les tests s'ils ne sont pas désactivés.  Vous pouvez passer des drapeaux de configuration et de construction avec @code{#:configure-flags} et @code{#:build-flags}.  La clef @code{#:test-flags} peut être passée pour changer l'ensemble des drapeaux utilisés pour activer les tests.  La clef @code{#:use-make?} peut être utilisée pour outrepasser ce système dans les phases de construction et d'installation.

note: type: defvr
en: When the package has a @file{configure} file, it is assumed that it is a hand-made configure script that requires a different argument format than in the @code{gnu-build-system}.  You can add more flags with the @code{#:configure-flags} key.
fr: Lorsque le paquet a un fichier @file{configure}, il est supposé qu'il s'agit d'un script configure écrit à la main qui demande un format différent de celui de @code{gnu-build-system}.  Vous pouvez ajouter plus de drapeaux avec la clef @code{#:configure-flags}.

note: type: defvr
en: When the package has a @file{Makefile} file (or @code{#:use-make?} is @code{#t}), it will be used and more flags can be passed to the build and install phases with the @code{#:make-flags} key.
fr: Lorsque le paquet a un fichier @file{Makefile} (ou @code{#:use-make?} vaut @code{#t}), il sera utilisé et plus de drapeaux peuvent être passés à la construction et l'installation avec la clef @code{#:make-flags}.

note: type: defvr
en: Finally, some packages do not have these files and use a somewhat standard location for its build system.  In that case, the build system will run @code{ocaml pkg/pkg.ml} or @code{ocaml pkg/build.ml} and take care of providing the path to the required findlib module.  Additional flags can be passed via the @code{#:build-flags} key.  Install is taken care of by @command{opam-installer}.  In this case, the @code{opam} package must be added to the @code{native-inputs} field of the package definition.
fr: Enfin, certains paquets n'ont pas ces fichiers mais utilisent un emplacement plus ou moins standard pour leur système de construction.  Dans ce cas, le système de construction lancera @code{ocaml pkg/pkg.ml} ou @code{pkg/build.ml} et prendra soin de fournir le chemin du module findlib requis.  Des drapeaux supplémentaires peuvent être passés via la clef @code{#:bulid-flags}.  L'installation se fait avec @command{opam-installer}.  Dans ce cas, le paquet @code{opam} doit être ajouté au champ @code{native-inputs} de la définition du paquet.

note: type: defvr
en: Note that most OCaml packages assume they will be installed in the same directory as OCaml, which is not what we want in guix.  In particular, they will install @file{.so} files in their module's directory, which is usually fine because it is in the OCaml compiler directory.  In guix though, these libraries cannot be found and we use @env{CAML_LD_LIBRARY_PATH}.  This variable points to @file{lib/ocaml/site-lib/stubslibs} and this is where @file{.so} libraries should be installed.
fr: Remarquez que la plupart des paquets OCaml supposent qu'ils seront installés dans le même répertoire qu'OCaml, ce qui n'est pas ce que nous voulons faire dans Guix.  En particulier, ils installeront leurs fichiers @file{.so} dans leur propre répertoire de module, ce qui est normalement correct puisqu'il s'agit du répertoire du compilateur OCaml.  Dans Guix en revanche, ces bibliothèques ne peuvent pas y être trouvées et on utilise @env{CAML_LD_LIBRARY_PATH} à la place.  Cette variable pointe vers @file{lib/ocaml/site-lib/stubslibs} et c'est là où les bibliothèques @file{.so} devraient être installées.

note: type: defvr
en: {Scheme Variable} python-build-system
fr: {Variable Scheme} python-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system python)}.  It implements the more or less standard build procedure used by Python packages, which consists in running @code{python setup.py build} and then @code{python setup.py install --prefix=/gnu/store/@dots{}}.
fr: Cette variable est exportée par @code{(guix build-system python)}.  Elle implémente la procédure de construction plus ou moins standard utilisée pour les paquets Python, qui consiste à lancer @code{python setup.py build} puis @code{python setup.py install --prefix=/gnu/store/@dots{}}.

note: type: defvr
en: For packages that install stand-alone Python programs under @code{bin/}, it takes care of wrapping these programs so that their @env{GUIX_PYTHONPATH} environment variable points to all the Python libraries they depend on.
fr: Pour les paquets qui installent des programmes autonomes Python dans @code{bin/}, elle prend soin d'envelopper ces binaires pour que leur variable d'environnement @env{GUIX_PYTHONPATH} pointe vers toutes les bibliothèques Python dont ils dépendent.

note: type: defvr
en: Which Python package is used to perform the build can be specified with the @code{#:python} parameter.  This is a useful way to force a package to be built for a specific version of the Python interpreter, which might be necessary if the package is only compatible with a single interpreter version.
fr: Le paquet Python utilisé pour effectuer la construction peut être spécifié avec le paramètre @code{#:python}.  C'est une manière utile de forcer un paquet à être construit avec une version particulière de l'interpréteur python, ce qui peut être nécessaire si le paquet n'est compatible qu'avec une version de l'interpréteur.

note: type: defvr
en: By default guix calls @code{setup.py} under control of @code{setuptools}, much like @command{pip} does.  Some packages are not compatible with setuptools (and pip), thus you can disable this by setting the @code{#:use-setuptools?} parameter to @code{#f}.
fr: Par défaut, guix appelle @code{setup.py} sous le contrôle de @code{setuptools}, tout comme @command{pip} le fait.  Certains paquets ne sont pas compatibles avec setuptools (et pip), vous pouvez donc le désactiver en réglant le paramètre @code{#:use-setuptools?} sur @code{#f}.

note: type: defvr
en: If a @code{"python"} output is available, the package is installed into it instead of the default @code{"out"} output. This is useful for packages that include a Python package as only a part of the software, and thus want to combine the phases of @code{python-build-system} with another build system.  Python bindings are a common usecase.
fr: Si la sortie @code{"python"} est disponible, le paquet y est installé au lieu de la sortie @code{"out"} par défaut. C'est utile pour les paquets qui incluent un paquet Python seulement comme partie du logiciel, et donc qu'il faut combiner les phases de @code{python-build-system} avec celles d'un autre système de construction. Les liaisons Python sont un cas courant.

note: type: defvr
en: {Scheme Variable} pyproject-build-system
fr: {Variable Scheme} pyproject-build-system

note: type: defvr
en: This is a variable exported by @code{guix build-system pyproject}.  It is based on @var{python-build-system}, and adds support for @file{pyproject.toml} and @url{https://peps.python.org/pep-0517/, PEP 517}.  It also supports a variety of build backends and test frameworks.
fr: C'est une variable exportée par @code{guix build-system pyproject}. Elle est basée sur @var{python-build-system} et ajoute la prise en charge de @file{pyproject.toml} et @url{https://peps.python.org/pep-0517/, PEP 517}. Elle prend aussi en charge plusieurs moteurs de construction et cadriciels de test.

note: type: defvr
en: The API is slightly different from @var{python-build-system}:
fr: L'API est un peu différente de celle de @var{python-build-system} :

note: type: itemize
en: @code{#:use-setuptools?} and @code{#:test-target} is removed.
fr: @code{#:use-setuptools?} et @code{#:test-target} sont supprimés.

note: type: itemize
en: @code{#:build-backend} is added.  It defaults to @code{#false} and will try to guess the appropriate backend based on @file{pyproject.toml}.
fr: @code{#:build-backend} est ajouté. Sa valeur par défaut est @code{#false} et le système essaiera de deviner le moteur approprié en fonction de @file{pyproject.toml}.

note: type: itemize
en: @code{#:test-backend} is added.  It defaults to @code{#false} and will guess an appropriate test backend based on what is available in package inputs.
fr: @code{#:test-backend} est ajouté. Sa valeur par défaut est @code{#false} et le système essaiera de deviner un moteur de test approprié en fonction de ce qui est disponible dans les entrées du paquet.

note: type: itemize
en: @code{#:test-flags} is added.  The default is @code{'()}.  These flags are passed as arguments to the test command.  Note that flags for verbose output is always enabled on supported backends.
fr: @code{#:test-flags} est ajouté. La valeur par défaut est @code{'()}. Ces drapeaux sont passés en argument à la commande de test. Remarquez que les drapeaux pour la sortie verbeuse sont toujours activés pour les moteurs pris en charge.

note: type: defvr
en: It is considered ``experimental'' in that the implementation details are not set in stone yet, however users are encouraged to try it for new Python projects (even those using @file{setup.py}).  The API is subject to change, but any breaking changes in the Guix channel will be dealt with.
fr: Il est considéré comme « expérimental » dans le sens où les détails d'implémentation ne sont pas encore figés, mais nous vous encourageons à l'essayer pour les nouveaux projets Python (même ceux qui utilisent @file{setup.py}). L'API pourrait changer mais les changements provoquant des problèmes dans le canal Guix seront gérés.

note: type: defvr
en: Eventually this build system will be deprecated and merged back into @var{python-build-system}, probably some time in 2024.
fr: Ce système de construction finira par être obsolète et fusionné dans @var{python-build-system}, sans doute au courant de l'année 2024.

note: type: defvr
en: {Scheme Variable} perl-build-system
fr: {Variable Scheme} perl-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system perl)}.  It implements the standard build procedure for Perl packages, which either consists in running @code{perl Build.PL --prefix=/gnu/store/@dots{}}, followed by @code{Build} and @code{Build install}; or in running @code{perl Makefile.PL PREFIX=/gnu/store/@dots{}}, followed by @code{make} and @code{make install}, depending on which of @code{Build.PL} or @code{Makefile.PL} is present in the package distribution.  Preference is given to the former if both @code{Build.PL} and @code{Makefile.PL} exist in the package distribution.  This preference can be reversed by specifying @code{#t} for the @code{#:make-maker?} parameter.
fr: Cette variable est exportée par @code{(guix build-system perl)}.  Elle implémente la procédure de construction standard des paquets Perl, qui consiste soit à lancer @code{perl Build.PL --prefix=/gnu/store/@dots{}}, suivi de @code{Build} et @code{Build install} ; ou à lancer @code{perl Makefile.PL PREFIX=/gnu/store/@dots{}}, suivi de @code{make} et @code{make install}, en fonction de la présence de @code{Build.PL} ou @code{Makefile.PL} dans la distribution du paquet.  Le premier a la préférence si @code{Build.PL} et @code{Makefile.PL} existent tous deux dans la distribution du paquet.  Cette préférence peut être inversée en spécifiant @code{#t} pour le paramètre @code{#:make-maker?}.

note: type: defvr
en: The initial @code{perl Makefile.PL} or @code{perl Build.PL} invocation passes flags specified by the @code{#:make-maker-flags} or @code{#:module-build-flags} parameter, respectively.
fr: L'invocation initiale de @code{perl Makefile.PL} ou @code{perl Build.PL} passe les drapeaux spécifiés par le paramètre @code{#:make-maker-flags} ou @code{#:module-build-flags}, respectivement.

note: type: defvr
en: Which Perl package is used can be specified with @code{#:perl}.
fr: Le paquet Perl utilisé peut être spécifié avec @code{#:perl}.

note: type: defvr
en: {Scheme Variable} renpy-build-system
fr: {Variable Scheme} renpy-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system renpy)}.  It implements the more or less standard build procedure used by Ren'py games, which consists of loading @code{#:game} once, thereby creating bytecode for it.
fr: Cette variable est exportée par @code{(guix build-system renpy)}.  Elle implémente la procédure de construction plus ou moins standard utilisée pour les jeux Ren'py, qui consiste à charger @code{#:game} une fois, et donc à créer le bytecode pour le jeu.

note: type: defvr
en: It further creates a wrapper script in @code{bin/} and a desktop entry in @code{share/applications}, both of which can be used to launch the game.
fr: Elle crée aussi un script enveloppe dans @code{bin/} et une entrée de bureau dans @code{share/applications}, tous deux pouvant être utilisés pour lancer le jeu.

note: type: defvr
en: Which Ren'py package is used can be specified with @code{#:renpy}.  Games can also be installed in outputs other than ``out'' by using @code{#:output}.
fr: Le paquet Ren'py utilisé peut être spécifié avec @code{#:renpy}.  Les jeux peuvent aussi être installé dans des sorties différentes de « out » avec @code{#:output}.

note: type: defvr
en: {Scheme Variable} qt-build-system
fr: {Variable Scheme} qt-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system qt)}.  It is intended for use with applications using Qt or KDE.
fr: Cette variable est exportée par @code{(guix build-system qt)}.  Elle est destinée à être employée avec des applications utilisant Qt ou KDE.

note: type: defvr
en: This build system adds the following two phases to the ones defined by @code{cmake-build-system}:
fr: Ce système de construction ajoute les deux phases suivantes à celles définies par @code{gnu-build-system} :

note: type: table
en: The phase @code{check-setup} prepares the environment for running the checks as commonly used by Qt test programs.  For now this only sets some environment variables: @code{QT_QPA_PLATFORM=offscreen}, @code{DBUS_FATAL_WARNINGS=0} and @code{CTEST_OUTPUT_ON_FAILURE=1}.
fr: La phase @code{check-setup} prépare l'environnement pour l'exécution des contrôles tels qu'ils sont couramment utilisés par les programmes de test Qt.  Pour l'instant, elle ne définit que quelques variables d'environnement : @code{QT_QPA_PLATFORM=offscreen}, @code{DBUS_FATAL_WARNINGS=0} et @code{CTEST_OUTPUT_ON_FAILURE=1}.

note: type: table
en: This phase is added before the @code{check} phase.  It's a separate phase to ease adjusting if necessary.
fr: Cette phase est ajoutée avant la phase @code{check}.  C'est une phase distincte pour faciliter l'ajustement si nécessaire.

note: type: table
en: The phase @code{qt-wrap} searches for Qt5 plugin paths, QML paths and some XDG in the inputs and output.  In case some path is found, all programs in the output's @file{bin/}, @file{sbin/}, @file{libexec/} and @file{lib/libexec/} directories are wrapped in scripts defining the necessary environment variables.
fr: La phase @code{qt-wrap} recherche les chemins des plugins Qt5, les chemins QML et certains XDG dans les entrées et sorties.  Si un chemin est trouvé, tous les programmes des répertoires @file{bin/}, @file{sbin/}, @file{libexec/} et @file{lib/libexec/} de la sortie sont enveloppés dans des scripts définissant les variables d'environnement nécessaires.

note: type: table
en: It is possible to exclude specific package outputs from that wrapping process by listing their names in the @code{#:qt-wrap-excluded-outputs} parameter.  This is useful when an output is known not to contain any Qt binaries, and where wrapping would gratuitously add a dependency of that output on Qt, KDE, or such.
fr: Il est possible d'exclure des sorties de paquets spécifiques de ce processus d'emballage en listant leurs noms dans le paramètre @code{#:qt-wrap-excluded-outputs}.  Ceci est utile lorsqu'une sortie est connue pour ne pas contenir de binaires Qt, et où le wrapping ajouterait gratuitement une dépendance de cette sortie à Qt, KDE, ou autre.

note: type: table
en: This phase is added after the @code{install} phase.
fr: Cette phase est exécutée après la phase @code{install}.

note: type: defvr
en: {Scheme Variable} r-build-system
fr: {Variable Scheme} r-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system r)}.  It implements the build procedure used by @uref{https://r-project.org, R} packages, which essentially is little more than running @samp{R CMD INSTALL --library=/gnu/store/@dots{}} in an environment where @env{R_LIBS_SITE} contains the paths to all R package inputs.  Tests are run after installation using the R function @code{tools::testInstalledPackage}.
fr: Cette variable est exportée par @code{(guix build-system r)}.  Elle implémente la procédure de compilation utilisée par les paquets @uref{https://r-project.org, R}, qui consiste en substance à exécuter @samp{R CMD INSTALL --library=/gnu/store/@dots{}} dans un environnement où @env{R_LIBS_SITE} contient les chemins de toutes les entrées des paquets R.  Les tests sont exécutés après l'installation en utilisant la fonction R @code{tools::testInstalledPackage}.

note: type: defvr
en: {Scheme Variable} rakudo-build-system
fr: {Variable Scheme} rakudo-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system rakudo)}.  It implements the build procedure used by @uref{https://rakudo.org/, Rakudo} for @uref{https://perl6.org/, Perl6} packages.  It installs the package to @code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} and installs the binaries, library files and the resources, as well as wrap the files under the @code{bin/} directory.  Tests can be skipped by passing @code{#f} to the @code{tests?} parameter.
fr: Cette variable est exportée par @code{(guix build-system rakudo)}.  Elle implémente la procédure de construction utilisée par @uref{https://rakudo.org/, Rakudo} pour les paquets @uref{https://perl6.org/, Perl6}.  Elle installe le paquet dans @code{/gnu/store/@dots{}/NOM-VERSION/share/perl6} et installe les binaires, les fichiers de bibliothèques et les ressources, et enveloppe les fichiers dans le répertoire @code{bin/}.  Les tests peuvent être passés en indiquant @code{#f} au paramètre @code{tests?}.

note: type: defvr
en: Which rakudo package is used can be specified with @code{rakudo}.  Which perl6-tap-harness package used for the tests can be specified with @code{#:prove6} or removed by passing @code{#f} to the @code{with-prove6?} parameter.  Which perl6-zef package used for tests and installing can be specified with @code{#:zef} or removed by passing @code{#f} to the @code{with-zef?} parameter.
fr: Le paquet rakudo utilisé peut être spécifié avec @code{rakudo}.  Le paquet perl6-tap-harness utilisé pour les tests peut être spécifié avec @code{#:prove6} ou supprimé en passant @code{#f} au paramètre @code{with-prove6?}.  Le paquet perl6-zef utilisé pour les tests et l'installation peut être spécifié avec @code{#:ef} ou supprimé en passant @code{#f} au paramètre @code{with-zef?}.

note: type: defvr
en: {Scheme Variable} rebar-build-system
fr: {Variable Scheme} rebar-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system rebar)}.  It implements a build procedure around @uref{https://rebar3.org,rebar3}, a build system for programs written in the Erlang language.
fr: Cette variable est exportée par @code{(guix build-system rebar)}.  Elle implémente une procédure de construction pour @url{https://rebar3.org,rebar3}, un système de construction pour les programmes écrits en Erlang.

note: type: defvr
en: It adds both @code{rebar3} and the @code{erlang} to the set of inputs.  Different packages can be specified with the @code{#:rebar} and @code{#:erlang} parameters, respectively.
fr: Elle ajoute à la fois @code{rebar3} et @code{erlang} à l'ensemble des entrées.  Des paquets différents peuvent être spécifiés avec les paramètres @code{#:rebar} et @code{#:erlang}, respectivement.

note: type: defvr
en: This build system is based on @code{gnu-build-system}, but with the following phases changed:
fr: Ce système de construction est basé sur @var{gnu-build-system}, mais avec les phases suivantes modifiées :

note: type: table
en: This phase, after unpacking the source like the @code{gnu-build-system} does, checks for a file @code{contents.tar.gz} at the top-level of the source.  If this file exists, it will be unpacked, too.  This eases handling of package hosted at @uref{https://hex.pm/}, the Erlang and Elixir package repository.
fr: Cette phase, après avoir déballé les sources comme le fait le @code{gnu-build-system}, vérifie qu'un fichier @code{contents.tar.gz} existe au plus haut niveau des sources. Si ce fichier existe, il sera aussi déballé. Cela facilite la gestion des paquets hébergés sur @uref{https://hex.pm/}, le dépôt des paquets Erlang et Elixir.

note: type: table
en: There are no @code{bootstrap} and @code{configure} phase because erlang packages typically don’t need to be configured.
fr: Il n'y a ni phase @code{bootstrap} ni @code{configure} parce que les paquets erlang n'ont pas besoin d'être configurés.

note: type: table
en: This phase runs @code{rebar3 compile} with the flags listed in @code{#:rebar-flags}.
fr: Cette phase lance @code{rebar3 compile} avec les drapeaux listés dans @code{#:rebar-flags}.

note: type: table
en: Unless @code{#:tests? #f} is passed, this phase runs @code{rebar3 eunit}, or some other target specified with @code{#:test-target}, with the flags listed in @code{#:rebar-flags},
fr: À moins que @code{#:tests? #f} ne soit passé, cette phase lance @code{rebar3 eunit}, ou une cible spécifiée avec @code{#:test-target}, avec les drapeaux listés dans @code{#:rebar-flags},

note: type: table
en: This installs the files created in the @i{default} profile, or some other profile specified with @code{#:install-profile}.
fr: Cela installe les fichiers créés dans le profil @i{default}, ou un autre profil spécifié avec @code{#:install-profile}.

note: type: defvr
en: {Scheme Variable} texlive-build-system
fr: {Variable Scheme} texlive-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system texlive)}.  It is used to build TeX packages in batch mode with a specified engine.  The build system sets the @env{TEXINPUTS} variable to find all TeX source files in the inputs.
fr: Cette variable est exportée par @code{(guix build-system texlive)}.  Elle est utilisée pour construire des paquets TeX en mode batch avec le moteur spécifié.  Le système de construction initialise la variable @env{TEXINPUTS} pour trouver tous les fichiers source TeX dans ses entrées.

note: type: defvr
en: By default it runs @code{luatex} on all files ending on @code{ins}.  A different engine and format can be specified with the @code{#:tex-format} argument.  Different build targets can be specified with the @code{#:build-targets} argument, which expects a list of file names.  The build system adds only @code{texlive-bin} and @code{texlive-latex-base} (both from @code{(gnu packages tex}) to the inputs.  Both can be overridden with the arguments @code{#:texlive-bin} and @code{#:texlive-latex-base}, respectively.
fr: Par défaut, elle lance @code{luatex} sur tous les fichiers qui se terminent par @code{ins}.  Un moteur et un format différent peuvent être spécifiés avec l'argument @code{#:tex-format}.  Plusieurs cibles de constructions peuvent être indiquées avec l'argument @code{#:build-targets} qui attend une liste de noms de fichiers.  Le système de construction ajoute uniquement @code{texlive-bin} et @code{texlive-latex-base} (de @code{(gnu packages tex)} à la liste des entrées.  Les deux peuvent être remplacés avec les arguments @code{#:texlive-bin} et @code{#:texlive-latex-base}, respectivement.

note: type: defvr
en: The @code{#:tex-directory} parameter tells the build system where to install the built files under the texmf tree.
fr: Le paramètre @code{#:tex-directory} dit au système de construction où installer les fichiers construit dans l'arbre texmf.

note: type: defvr
en: {Scheme Variable} ruby-build-system
fr: {Variable Scheme} ruby-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system ruby)}.  It implements the RubyGems build procedure used by Ruby packages, which involves running @code{gem build} followed by @code{gem install}.
fr: Cette variable est exportée par @code{(guix build-system ruby)}.  Elle implémenter la procédure de construction RubyGems utilisée par les paquets Ruby qui consiste à lancer @code{gem build} suivi de @code{gem install}.

note: type: defvr
en: The @code{source} field of a package that uses this build system typically references a gem archive, since this is the format that Ruby developers use when releasing their software.  The build system unpacks the gem archive, potentially patches the source, runs the test suite, repackages the gem, and installs it.  Additionally, directories and tarballs may be referenced to allow building unreleased gems from Git or a traditional source release tarball.
fr: Le champ @code{source} d'un paquet qui utilise ce système de construction référence le plus souvent une archive gem, puisque c'est le format utilisé par les personnes qui développent en Ruby quand elles publient leur logiciel.  Le système de construction décompresse l'archive gem, éventuellement en corrigeant les sources, lance la suite de tests, recompresse la gemme et l'installe.  En plus, des répertoires et des archives peuvent être référencés pour permettre de construire des gemmes qui n'ont pas été publiées depuis Git ou une archive de sources traditionnelle.

note: type: defvr
en: Which Ruby package is used can be specified with the @code{#:ruby} parameter.  A list of additional flags to be passed to the @command{gem} command can be specified with the @code{#:gem-flags} parameter.
fr: Le paquet Ruby utilisé peut être spécifié avec le paramètre @code{#:ruby}.  Une liste de drapeaux supplémentaires à passer à la commande @command{gem} peut être spécifiée avec le paramètre @code{#:gem-flags}.

note: type: defvr
en: {Scheme Variable} waf-build-system
fr: {Variable Scheme} waf-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system waf)}.  It implements a build procedure around the @code{waf} script.  The common phases---@code{configure}, @code{build}, and @code{install}---are implemented by passing their names as arguments to the @code{waf} script.
fr: Cette variable est exportée par @code{(guix build-system waf)}.  Elle implémente une procédure de construction autour du script @code{waf}.  Les phases usuelles — @code{configure}, @code{build} et @code{install} — sont implémentée en passant leur nom en argument au script @code{waf}.

note: type: defvr
en: The @code{waf} script is executed by the Python interpreter.  Which Python package is used to run the script can be specified with the @code{#:python} parameter.
fr: Le script @code{waf} est exécuté par l'interpréteur Python.  Le paquet Python utilisé pour lancer le script peut être spécifié avec le paramètre @code{#:python}.

note: type: defvr
en: {Scheme Variable} scons-build-system
fr: {Variable Scheme} scons-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system scons)}.  It implements the build procedure used by the SCons software construction tool.  This build system runs @code{scons} to build the package, @code{scons test} to run tests, and then @code{scons install} to install the package.
fr: Cette variable est exportée par @code{(guix build-system scons)}.  Elle implémente la procédure de construction utilisée par l'outil de construction SCons.  Ce système de construction lance @code{scons} pour construire le paquet, @code{scons test} pour lancer les tests puis @code{scons install} pour installer le paquet.

note: type: defvr
en: Additional flags to be passed to @code{scons} can be specified with the @code{#:scons-flags} parameter.  The default build and install targets can be overridden with @code{#:build-targets} and @code{#:install-targets} respectively.  The version of Python used to run SCons can be specified by selecting the appropriate SCons package with the @code{#:scons} parameter.
fr: Des drapeaux supplémentaires à passer à @code{scons} peuvent être spécifiés avec le paramètre @code{#:scons-flags}.  Les cibles de construction et d'installation par défaut peuvent être remplacées respectivement par les paramètres @code{#:build-targets} et @code{#:install-targets}.  La version de Python utilisée pour exécuter SCons peut être spécifiée en sélectionnant le paquet SCons approprié avec le paramètre @code{#:scons}.

note: type: defvr
en: {Scheme Variable} haskell-build-system
fr: {Variable Scheme} haskell-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system haskell)}.  It implements the Cabal build procedure used by Haskell packages, which involves running @code{runhaskell Setup.hs configure --prefix=/gnu/store/@dots{}} and @code{runhaskell Setup.hs build}.  Instead of installing the package by running @code{runhaskell Setup.hs install}, to avoid trying to register libraries in the read-only compiler store directory, the build system uses @code{runhaskell Setup.hs copy}, followed by @code{runhaskell Setup.hs register}.  In addition, the build system generates the package documentation by running @code{runhaskell Setup.hs haddock}, unless @code{#:haddock? #f} is passed.  Optional Haddock parameters can be passed with the help of the @code{#:haddock-flags} parameter.  If the file @code{Setup.hs} is not found, the build system looks for @code{Setup.lhs} instead.
fr: Cette variable est exportée par @code{(guix build-system haskell)}.  Elle implémente la procédure de construction Cabal utilisée par les paquets Haskell, qui consiste à lancer @code{runhaskell Setup.hs configure --prefix=/gnu/store/@dots{}} et @code{runhaskell Setup.hs build}.  Plutôt que d'installer le paquets en lançant @code{runhaskell Setup.hs install}, pour éviter d'essayer d'enregistrer les bibliothèques dans le répertoire du dépôt en lecture-seule du compilateur, le système de construction utilise @code{runhaskell Setup.hs copy}, suivi de @code{runhaskell Setup.hs register}.  En plus, le système de construction génère la documentation du paquet en lançant @code{runhaskell Setup.hs haddock}, à moins que @code{#:haddock? #f} ne soit passé.  Des paramètres facultatifs pour Haddock peuvent être passés à l'aide du paramètre @code{#:haddock-flags}.  Si le fichier @code{Setup.hs} n'est pas trouvé, le système de construction cherchera @code{Setup.lhs} à la place.

note: type: defvr
en: Which Haskell compiler is used can be specified with the @code{#:haskell} parameter which defaults to @code{ghc}.
fr: Le compilateur Haskell utilisé peut être spécifié avec le paramètre @code{#:haskell} qui a pour valeur par défaut @code{ghc}.

note: type: defvr
en: {Scheme Variable} dub-build-system
fr: {Variable Scheme} dub-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system dub)}.  It implements the Dub build procedure used by D packages, which involves running @code{dub build} and @code{dub run}.  Installation is done by copying the files manually.
fr: Cette variable est exportée par @code{(guix build-system dub)}.  Elle implémente la procédure de construction Dub utilisée par les paquets D qui consiste à lancer @code{dub build} et @code{dub run}.  L'installation est effectuée en copiant les fichiers manuellement.

note: type: defvr
en: Which D compiler is used can be specified with the @code{#:ldc} parameter which defaults to @code{ldc}.
fr: Le compilateur D utilisé peut être spécifié avec le paramètre @code{#:ldc} qui vaut par défaut @code{ldc}.

note: type: defvr
en: {Scheme Variable} emacs-build-system
fr: {Variable Scheme} emacs-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system emacs)}.  It implements an installation procedure similar to the packaging system of Emacs itself (@pxref{Packages,,, emacs, The GNU Emacs Manual}).
fr: Cette variable est exportée par @code{(guix build-system emacs)}.  Elle implémente une procédure d'installation similaire au système de gestion de paquet d'Emacs lui-même (@pxref{Packages,,, emacs, The GNU Emacs Manual}).

note: type: defvr
en: It first creates the @code{@code{package}-autoloads.el} file, then it byte compiles all Emacs Lisp files.  Differently from the Emacs packaging system, the Info documentation files are moved to the standard documentation directory and the @file{dir} file is deleted.  The Elisp package files are installed directly under @file{share/emacs/site-lisp}.
fr: Cela crée d'abord le fichier @code{@code{package}-autoloads.el}, puis compile tous les fichiers Emacs Lisp en bytecode.  Contrairement au système de gestion de paquets d'Emacs, les fichiers de documentation info sont déplacés dans le répertoire standard et le fichier @file{dir} est supprimé.  Les fichiers du paquet Elisp sont directement installés sous @file{share/emacs/site-lisp}.

note: type: defvr
en: {Scheme Variable} font-build-system
fr: {Variable Scheme} font-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system font)}.  It implements an installation procedure for font packages where upstream provides pre-compiled TrueType, OpenType, etc.@: font files that merely need to be copied into place.  It copies font files to standard locations in the output directory.
fr: Cette variable est exportée par @code{(guix build-system font)}.  Elle implémente une procédure d'installation pour les paquets de polices où des fichiers de polices TrueType, OpenType, etc.@: sont fournis en amont et n'ont qu'à être copiés à leur emplacement final.  Elle copie les fichiers de polices à l'emplacement standard dans le répertoire de sortie.

note: type: defvr
en: {Scheme Variable} meson-build-system
fr: {Variable Scheme} meson-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system meson)}.  It implements the build procedure for packages that use @url{https://mesonbuild.com, Meson} as their build system.
fr: Cette variable est exportée par @code{(guix build-system meson)}.  Elle implémente la procédure de construction des paquets qui utilisent @url{https://mesonbuild.com, Meson} comme système de construction.

note: type: defvr
en: It adds both Meson and @uref{https://ninja-build.org/, Ninja} to the set of inputs, and they can be changed with the parameters @code{#:meson} and @code{#:ninja} if needed.
fr: Elle ajoute à la fois Meson et @uref{https://ninja-build.org/, Ninja} à l'ensemble des entrées, et ils peuvent être modifiés avec les paramètres @code{#:meson} et @code{#:ninja} si requis.

note: type: defvr
en: This build system is an extension of @code{gnu-build-system}, but with the following phases changed to some specific for Meson:
fr: Ce système de construction est une extension de @code{gnu-build-system}, mais avec les phases suivantes modifiées pour Meson :

note: type: table
en: The phase runs @code{meson} with the flags specified in @code{#:configure-flags}.  The flag @option{--buildtype} is always set to @code{debugoptimized} unless something else is specified in @code{#:build-type}.
fr: La phase lance @code{meson} avec les drapeaux spécifiés dans @code{#:configure-flags}.  Le drapeau @option{--buildtype} est toujours défini à @code{debugoptimized} à moins qu'autre chose ne soit spécifié dans @code{#:build-type}.

note: type: table
en: The phase runs @code{ninja} to build the package in parallel by default, but this can be changed with @code{#:parallel-build?}.
fr: La phase lance @code{ninja} pour construire le paquet en parallèle par défaut, mais cela peut être changé avec @code{#:parallel-build?}.

note: type: table
en: The phase runs @samp{meson test} with a base set of options that cannot be overridden.  This base set of options can be extended via the @code{#:test-options} argument, for example to select or skip a specific test suite.
fr: La phase lance @samp{meson test} avec un ensemble d'options de base qui ne peuvent pas être modifiées. Cette base d'options peut être étendue avec l'argument @code{#:test-options}, par exemple pour choisir ou passer une suite de test spécifique.

note: type: table
en: The phase runs @code{ninja install} and can not be changed.
fr: La phase lance @code{ninja install} et ne peut pas être changée.

note: type: defvr
en: Apart from that, the build system also adds the following phases:
fr: En dehors de cela, le système de construction ajoute aussi la phase suivante :

note: type: table
en: This phase ensures that all binaries can find the libraries they need.  It searches for required libraries in subdirectories of the package being built, and adds those to @code{RUNPATH} where needed.  It also removes references to libraries left over from the build phase by @code{meson}, such as test dependencies, that aren't actually required for the program to run.
fr: Cette phase s'assure que tous les binaire peuvent trouver les bibliothèques dont ils ont besoin.  Elle cherche les bibliothèques requises dans les sous-répertoires du paquet en construction et les ajoute au @code{RUNPATH} là où c'est nécessaire.  Elle supprime aussi les références aux bibliothèques laissées là par la phase de construction par @code{meson} comme les dépendances des tests, qui ne sont pas vraiment requises pour le programme.

note: type: table
en: This phase is the phase provided by @code{glib-or-gtk-build-system}, and it is not enabled by default.  It can be enabled with @code{#:glib-or-gtk?}.
fr: Cette phase est la phase fournie par @code{glib-or-gtk-build-system} et n'est pas activée par défaut.  Elle peut l'être avec @code{#:glib-or-gtk?}.

note: type: defvr
en: {Scheme Variable} linux-module-build-system
fr: {Variable Scheme} linux-module-build-system

note: type: defvr
en: @code{linux-module-build-system} allows building Linux kernel modules.
fr: @code{linux-module-build-system} permet de construire des modules du noyau Linux.

note: type: defvr
en: This build system is an extension of @code{gnu-build-system}, but with the following phases changed:
fr: Ce système de construction est une extension de @var{gnu-build-system}, mais avec les phases suivantes modifiées :

note: type: table
en: This phase configures the environment so that the Linux kernel's Makefile can be used to build the external kernel module.
fr: Cette phase configure l'environnement pour que le Makefile du noyau Linux puisse être utilisé pour construire le module du noyau externe.

note: type: table
en: This phase uses the Linux kernel's Makefile in order to build the external kernel module.
fr: Cette phase utilise le Makefile du noyau Linux pour construire le module du noyau externe.

note: type: table
en: This phase uses the Linux kernel's Makefile in order to install the external kernel module.
fr: Cette phase utilise le Makefile du noyau Linux pour installer le module du noyau externe.

note: type: defvr
en: It is possible and useful to specify the Linux kernel to use for building the module (in the @code{arguments} form of a package using the @code{linux-module-build-system}, use the key @code{#:linux} to specify it).
fr: Il est possible et utile de spécifier le noyau Linux à utiliser pour construire le module (sous la forme @code{arguments} d'un paquet utilisant le @code{linux-module-build-system}, utilisez la clé @code{#:linux} pour le spécifier).

note: type: defvr
en: {Scheme Variable} node-build-system
fr: {Variable Scheme} node-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system node)}.  It implements the build procedure used by @uref{https://nodejs.org, Node.js}, which implements an approximation of the @code{npm install} command, followed by an @code{npm test} command.
fr: Cette variable est exportée par @code{(guix build-system node)}.  Elle implémente la procédure de compilation utilisée par @uref{https://nodejs.org, Node.js}, qui implémente une approximation de la commande @code{npm install}, suivie d'une commande @code{npm test}.

note: type: defvr
en: Which Node.js package is used to interpret the @code{npm} commands can be specified with the @code{#:node} parameter which defaults to @code{node}.
fr: Le paquet Node.js utilisé pour interpréter les commandes @code{npm} peut être spécifié avec le paramètre @code{#:node} dont la valeur par défaut est @code{node}.

note: type: Plain text
en: Lastly, for packages that do not need anything as sophisticated, a ``trivial'' build system is provided.  It is trivial in the sense that it provides basically no support: it does not pull any implicit inputs, and does not have a notion of build phases.
fr: Enfin, pour les paquets qui n'ont pas besoin de choses sophistiquées, un système de construction « trivial » est disponible.  Il est trivial dans le sens où il ne fournit en gros aucun support : il n'apporte pas de dépendance implicite, et n'a pas de notion de phase de construction.

note: type: defvr
en: {Scheme Variable} trivial-build-system
fr: {Variable Scheme} trivial-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system trivial)}.
fr: Cette variable est exportée par @code{(guix build-system trivial)}.

note: type: defvr
en: This build system requires a @code{#:builder} argument.  This argument must be a Scheme expression that builds the package output(s)---as with @code{build-expression->derivation} (@pxref{Derivations, @code{build-expression->derivation}}).
fr: Ce système de construction requiert un argument @code{#:builder}.  Cet argument doit être une expression Scheme qui construit la sortie du paquet — comme avec @code{build-expression->derivation} (@pxref{Derivations, @code{build-expression->derivation}}).

note: type: defvr
en: {Scheme Variable} channel-build-system
fr: {Variable Scheme} channel-build-system

note: type: defvr
en: This variable is exported by @code{(guix build-system channel)}.
fr: Cette variable est exportée par @code{(guix build-system channel)}.

note: type: defvr
en: This build system is meant primarily for internal use.  A package using this build system must have a channel specification as its @code{source} field (@pxref{Channels}); alternatively, its source can be a directory name, in which case an additional @code{#:commit} argument must be supplied to specify the commit being built (a hexadecimal string).
fr: Ce système de construction est surtout conçu pour usage interne. Pour utiliser ce système de construction, un paquet doit avoir une spécification de canal dans son champ @code{source} (@pxref{Channels}); autrement, sa source doit être un nom de répertoire, auquel cas un argument @code{#:commit} supplémentaire doit être fournit pour spécifier le commit à construire (une chaine hexadécimale).

note: type: defvr
en: The resulting package is a Guix instance of the given channel, similar to how @command{guix time-machine} would build it.
fr: Le paquet qui en résulte est une instance de Guix d'un canal donné, comme @command{guix-time-machine} le construirait.

note: type: cindex
en: build phases, for packages
fr: phases de construction, pour les paquets

note: type: Plain text
en: Almost all package build systems implement a notion @dfn{build phases}: a sequence of actions that the build system executes, when you build the package, leading to the installed byproducts in the store.  A notable exception is the ``bare-bones'' @code{trivial-build-system} (@pxref{Build Systems}).
fr: Presque tous les systèmes de construction de paquets mettent en œuvre une notion de @dfn{phase de construction} : une séquence d'actions que le système de construction exécute, lorsque vous construisez le paquet, conduisant aux sous-produits installés dans le dépôt.  Une exception notable est le @code{trivial-build-system} (@pxref{Build Systems}) minimaliste.

note: type: Plain text
en: As discussed in the previous section, those build systems provide a standard list of phases.  For @code{gnu-build-system}, the main build phases are the following:
fr: Comme nous l'avons dit dans la section précédente, ces systèmes de construction fournissent une liste de phases standards. Pour @code{gnu-build-system}, les phases de construction principales sont les suivantes :

note: type: table
en: Define search path environment variables for all the input packages, including @env{PATH} (@pxref{Search Paths}).
fr: Défini les variables d'environnement de chemins de recherche pour tous les paquets d'entrée, dont @env{PATH} (@pxref{Search Paths}).

note: type: table
en: Unpack the source tarball, and change the current directory to the extracted source tree.  If the source is actually a directory, copy it to the build tree, and enter that directory.
fr: Décompresse l'archive des sources et se déplace dans l'arborescence des sources fraîchement extraites.  Si la source est en fait un répertoire, le copie dans l'arborescence de construction et entre dans ce répertoire.

note: type: table
en: Patch shebangs encountered in source files so they refer to the right store file names.  For instance, this changes @code{#!/bin/sh} to @code{#!/gnu/store/@dots{}-bash-4.3/bin/sh}.
fr: Corrige les shebangs (@code{#!}) rencontrés dans les fichiers pour qu'ils se réfèrent aux bons noms de fichiers.  Par exemple, elle change @code{#!/bin/sh} en @code{#!/gnu/store/@dots{}-bash-4.3/bin/sh}.

note: type: table
en: Run the @file{configure} script with a number of default options, such as @option{--prefix=/gnu/store/@dots{}}, as well as the options specified by the @code{#:configure-flags} argument.
fr: Lance le script @code{configure} avec un certain nombre d'options par défaut, comme @option{--prefix=/gnu/store/@dots{}}, ainsi que les options spécifiées par l'argument @code{#:configure-flags}.

note: type: table
en: Run @code{make} with the list of flags specified with @code{#:make-flags}.  If the @code{#:parallel-build?} argument is true (the default), build with @code{make -j}.
fr: Lance @code{make} avec la liste des drapeaux spécifiés avec @code{#:make-flags}.  Si l'argument @code{#:parallel-build?} est vrai (par défaut), construit avec @code{make -j}.

note: type: table
en: Run @code{make check}, or some other target specified with @code{#:test-target}, unless @code{#:tests? #f} is passed.  If the @code{#:parallel-tests?} argument is true (the default), run @code{make check -j}.
fr: Lance @code{make check}, ou une autre cible spécifiée par @code{#:test-target}, à moins que @code{#:tests? #f} ne soit passé.  Si l'argument @code{#:parallel-tests?} est vrai (par défaut), lance @code{make check -j}.

note: type: table
en: Run @code{make install} with the flags listed in @code{#:make-flags}.
fr: Lance @code{make install} avec les drapeaux listés dans @code{#:make-flags}.

note: type: table
en: Patch shebangs on the installed executable files.
fr: Corrige les shebangs des fichiers exécutables installés.

note: type: table
en: Strip debugging symbols from ELF files (unless @code{#:strip-binaries?} is false), copying them to the @code{debug} output when available (@pxref{Installing Debugging Files}).
fr: Nettoie les symboles de débogage dans les fichiers ELF (à moins que @code{#:strip-binaries?} ne soit faux), les copie dans la sortie @code{debug} lorsqu'elle est disponible (@pxref{Installing Debugging Files}).

note: type: table
en: Validate the @code{RUNPATH} of ELF binaries, unless @code{#:validate-runpath?} is false (@pxref{Build Systems}).
fr: Valide le @code{RUNPATH} des binaires ELF, à moins que @code{#:validate-runpath?} ne soit faux (@pxref{Build Systems}).

note: type: table
en: This validation step consists in making sure that all the shared libraries needed by an ELF binary, which are listed as @code{DT_NEEDED} entries in its @code{PT_DYNAMIC} segment, appear in the @code{DT_RUNPATH} entry of that binary.  In other words, it ensures that running or using those binaries will not result in a ``file not found'' error at run time.  @xref{Options, @option{-rpath},, ld, The GNU Linker}, for more information on @code{RUNPATH}.
fr: Cette étape de validation s'assure que toutes les bibliothèques partagées par les binaires ELF, qui sont listées dans des entrées @code{DT_NEEDED} de leur segment @code{PT_DYNAMIC} apparaissent dans l'entrée @code{DT_RUNPATH} de ce même binaire. En d'autres termes, elle s'assure que lancer ou utiliser ces binaires ne renvoie pas l'erreur « fichier introuvable » à l'exécution. @xref{Options, @option{-rpath},, ld, The GNU Linker}, pour plus d'informations sur le @code{RUNPATH}.

note: type: Plain text
en: Other build systems have similar phases, with some variations.  For example, @code{cmake-build-system} has same-named phases but its @code{configure} phases runs @code{cmake} instead of @code{./configure}.  Others, such as @code{python-build-system}, have a wholly different list of standard phases.  All this code runs on the @dfn{build side}: it is evaluated when you actually build the package, in a dedicated build process spawned by the build daemon (@pxref{Invoking guix-daemon}).
fr: Les autres systèmes de construction ont des phases similaires, avec quelques variations. Par exemple, @code{cmake-build-system} a des phases de même nom, mais sa phase @code{configure} exécute @code{cmake} au lieu de @code{./configure}.  D'autres, tels que @code{python-build-system}, ont une liste de phases standard totalement différente.  Tout ce code s'exécute @dfn{côté construction} : il est évalué lorsque vous construisez réellement le paquet, dans un processus de construction dédié engendré par le démon de construction (@pxref{Invoquer guix-daemon}).

note: type: Plain text
en: Build phases are represented as association lists or ``alists'' (@pxref{Association Lists,,, guile, GNU Guile Reference Manual}) where each key is a symbol for the name of the phase and the associated value is a procedure that accepts an arbitrary number of arguments.  By convention, those procedures receive information about the build in the form of @dfn{keyword parameters}, which they can use or ignore.
fr: Les phases de construction sont représentées sous forme de listes d'associations ou « alists » (@pxref{Association Lists,Listes d'association,, guile, Manuel de référence de GNU Guile}) où chaque clé est un symbole pour le nom de la phase et la valeur associée est une procédure qui accepte un nombre arbitraire d'arguments.  Par convention, ces procédures reçoivent des informations sur la construction sous la forme de @dfn{paramètres nommés}, qu'elles peuvent utiliser ou ignorer.

note: type: Plain text
en: For example, here is how @code{(guix build gnu-build-system)} defines @code{%standard-phases}, the variable holding its alist of build phases@footnote{We present a simplified view of those build phases, but do take a look at @code{(guix build gnu-build-system)} to see all the details!}:
fr: Par exemple, voici comment @code{(guix build gnu-build-system)} définit @code{%standard-phases}, la variable contenant sa liste de phases de construction@footnote{Nous présentons une vue simplifiée de ces phases de construction, mais jetez un oeil à @code{(guix build gnu-build-system)} pour voir tous les détails !} :

note: type: lisp
en: ;; The build phases of 'gnu-build-system'.
fr: ;; Les phases de construction de « gnu-build-system ».

note: type: lisp
en: (define* (unpack #:key source #:allow-other-keys)
      ;; Extract the source tarball.
      (invoke "tar" "xvf" source))
fr: (define* (unpack #:key source #:allow-other-keys)
      ;; Extrait l'archive des sources.
      (invoke "tar" "xvf" source))

note: type: lisp
en: (define* (configure #:key outputs #:allow-other-keys)
      ;; Run the 'configure' script.  Install to output "out".
      (let ((out (assoc-ref outputs "out")))
        (invoke "./configure"
                (string-append "--prefix=" out))))
fr: (define* (configure #:key outputs #:allow-other-keys)
      ;; Exécute le script « configure ». Installe la sortie « out ».
      (let ((out (assoc-ref outputs "out")))
        (invoke "./configure"
                (string-append "--prefix=" out))))

note: type: lisp
en: (define* (check #:key (test-target "check") (tests? #true)
                    #:allow-other-keys)
      ;; Run the test suite.
      (if tests?
          (invoke "make" test-target)
          (display "test suite not run\n")))
fr: (define* (check #:key (test-target "check") (tests? #true)
                    #:allow-other-keys)
      ;; Lance la suite de tests.
      (if tests?
          (invoke "make" test-target)
          (display "test suite not run\n")))

note: type: lisp
en: (define* (install #:allow-other-keys)
      ;; Install files to the prefix 'configure' specified.
      (invoke "make" "install"))
fr: (define* (install #:allow-other-keys)
      ;; Installe les fichiers sous le préfixe spécifié à « configure ».
      (invoke "make" "install"))

note: type: lisp
en: (define %standard-phases
      ;; The list of standard phases (quite a few are omitted
      ;; for brevity).  Each element is a symbol/procedure pair.
      (list (cons 'unpack unpack)
            (cons 'configure configure)
            (cons 'build build)
            (cons 'check check)
            (cons 'install install)))
fr: (define %standard-phases
      ;; La liste des phases standard (un certain nombre d'entre elles sont omises
      ;; par souci de concision).  Chaque élément est une paire symbole/procédure.
      (list (cons 'unpack unpack)
            (cons 'configure configure)
            (cons 'build build)
            (cons 'check check)
            (cons 'install install)))

note: type: Plain text
en: This shows how @code{%standard-phases} is defined as a list of symbol/procedure pairs (@pxref{Pairs,,, guile, GNU Guile Reference Manual}).  The first pair associates the @code{unpack} procedure with the @code{unpack} symbol---a name; the second pair defines the @code{configure} phase similarly, and so on.  When building a package that uses @code{gnu-build-system} with its default list of phases, those phases are executed sequentially.  You can see the name of each phase started and completed in the build log of packages that you build.
fr: Cela montre comment @code{%standard-phases} est défini comme une liste de paires symbole/procédure (@pxref{Pairs, , , guile, GNU Guile Reference Manual}).  La première paire associe le symbole @code{unpack} --- un nom --- à la procédure @code{unpack} ; la deuxième paire définit la phase @code{configure} de manière similaire, et ainsi de suite.  Lors de la construction d'un paquet qui utilise @code{gnu-build-system} avec sa liste de phases par défaut, ces phases sont exécutées de manière séquentielle.  Vous pouvez voir le nom de chaque phase commencée et terminée dans le journal de construction des paquets que vous construisez.

note: type: Plain text
en: Let's now look at the procedures themselves.  Each one is defined with @code{define*}: @code{#:key} lists keyword parameters the procedure accepts, possibly with a default value, and @code{#:allow-other-keys} specifies that other keyword parameters are ignored (@pxref{Optional Arguments,,, guile, GNU Guile Reference Manual}).
fr: Examinons maintenant les procédures elles-mêmes.  Chacune est définie par @code{define*} : @code{#:key} énumère les paramètres nommés que la procédure accepte, éventuellement avec une valeur par défaut, et @code{#:allow-other-keys} précise que les autres paramètres nommés sont ignorés (@pxref{Optional Arguments,,, guile, GNU Guile Reference Manual}).

note: type: Plain text
en: The @code{unpack} procedure honors the @code{source} parameter, which the build system uses to pass the file name of the source tarball (or version control checkout), and it ignores other parameters.  The @code{configure} phase only cares about the @code{outputs} parameter, an alist mapping package output names to their store file name (@pxref{Packages with Multiple Outputs}).  It extracts the file name of for @code{out}, the default output, and passes it to @command{./configure} as the installation prefix, meaning that @command{make install} will eventually copy all the files in that directory (@pxref{Configuration, configuration and makefile conventions,, standards, GNU Coding Standards}).  @code{build} and @code{install} ignore all their arguments.  @code{check} honors the @code{test-target} argument, which specifies the name of the Makefile target to run tests; it prints a message and skips tests when @code{tests?} is false.
fr: La procédure @code{unpack} prend en compte le paramètre @code{source}, que le système de compilation utilise pour passer le nom de fichier de l'archive source (ou le répertoire cloné d'un système de contrôle de version), et elle ignore les autres paramètres.  La phase @code{configure} ne s'intéresse qu'au paramètre @code{outputs}, une liste d'association des noms des sorties du paquet avec le nom de leur fichier du dépôt (@pxref{Packages with Multiple Outputs}).  Elle extrait le nom de fichier de @code{out}, la sortie par défaut, et le transmet à @command{./configure} comme préfixe d'installation, ce qui signifie que @command{make install} copiera tous les fichiers vers ce répertoire (@pxref{Configuration, configuration and makefile conventions,, standards, GNU Coding Standards}).  @code{build} et @code{install} ignorent tous leurs arguments.  @code{check} prend en compte l'argument @code{test-target}, qui spécifie le nom de la cible du Makefile pour exécuter les tests ; il imprime un message et saute les tests lorsque @code{tests?} est faux.

note: type: cindex
en: build phases, customizing
fr: phases de construction, personnalisation

note: type: Plain text
en: The list of phases used for a particular package can be changed with the @code{#:phases} parameter of the build system.  Changing the set of build phases boils down to building a new alist of phases based on the @code{%standard-phases} alist described above.  This can be done with standard alist procedures such as @code{alist-delete} (@pxref{SRFI-1 Association Lists,,, guile, GNU Guile Reference Manual}); however, it is more convenient to do so with @code{modify-phases} (@pxref{Build Utilities, @code{modify-phases}}).
fr: La liste des phases utilisées pour un paquet particulier peut être modifiée avec le paramètre @code{#:phases} du système de construction.  La modification de l'ensemble des phases de construction se résume à la création d'une nouvelle liste de phases basée sur la liste @code{%standard-phases} décrite ci-dessus.  On peut faire cela à l'aide des procédures standards qui manipulent des listes d'associations telles que @code{alist-delete} (@pxref{SRFI-1 Association Lists,,, guile, GNU Guile Reference Manual}) ; cependant, il est plus pratique de le faire avec @code{modify-phases} (@pxref{Build Utilities, @code{modify-phases}}).

note: type: Plain text
en: Here is an example of a package definition that removes the @code{configure} phase of @code{%standard-phases} and inserts a new phase before the @code{build} phase, called @code{set-prefix-in-makefile}:
fr: Voici un exemple de définition de paquet qui supprime la phase @code{configure} de @code{%standard-phases} et insère une nouvelle phase avant la phase @code{build}, appelée @code{set-prefix-in-makefile} :

note: type: lisp
en: (define-public example
      (package
        (name "example")
        ;; other fields omitted
        (build-system gnu-build-system)
        (arguments
         '(#:phases (modify-phases %standard-phases
                      (delete 'configure)
                      (add-before 'build 'set-prefix-in-makefile
                        (lambda* (#:key outputs #:allow-other-keys)
                          ;; Modify the makefile so that its
                          ;; 'PREFIX' variable points to "out".
                          (let ((out (assoc-ref outputs "out")))
                            (substitute* "Makefile"
                              (("PREFIX =.*")
                               (string-append "PREFIX = "
                                              out "\n")))))))))))
fr: (define-public exemple
      (package
        (name "exemple")
        ;; les autres champs sont omis
        (build-system gnu-build-system)
        (arguments
         '(#:phases (modify-phases %standard-phases
                      (delete 'configure)
                      (add-before 'build 'set-prefix-in-makefile
                        (lambda* (#:key outputs #:allow-other-keys)
                          ;; Modifie le Makefile pour que sa variable
                          ;; 'PREFIX' pointe vers « out ».
                          (let ((out (assoc-ref outputs "out")))
                            (substitute* "Makefile"
                              (("PREFIX =.*")
                               (string-append "PREFIX = "
                                              out "\n")))))))))))

note: type: Plain text
en: The new phase that is inserted is written as an anonymous procedure, introduced with @code{lambda*}; it honors the @code{outputs} parameter we have seen before.  @xref{Build Utilities}, for more about the helpers used by this phase, and for more examples of @code{modify-phases}.
fr: La nouvelle phase insérée est écrite comme une procédure anonyme, introduite avec @code{lambda*} ; elle prend en compte le paramètre @code{outputs} que nous avons vu auparavant.  @xref{Build Utilities}, pour en savoir plus sur les procédures auxiliaires utilisées par cette phase, et pour d'autres exemples de @code{modify-phases}.

note: type: cindex
en: code staging
fr: code échelonné

note: type: cindex
en: staging, of code
fr: échelonnage, du code

note: type: Plain text
en: Keep in mind that build phases are code evaluated at the time the package is actually built.  This explains why the whole @code{modify-phases} expression above is quoted (it comes after the @code{'} or apostrophe): it is @dfn{staged} for later execution.  @xref{G-Expressions}, for an explanation of code staging and the @dfn{code strata} involved.
fr: Gardez à l'esprit que le code des phases de construction est évalué à la construction effective des paquets.  Cela explique pourquoi toute l'expression @code{modify-phases} ci-dessus est citée (elle vient après @code{'} ou apostrophe) : elle est @dfn{mise de côté} pour une exécution ultérieure.  @xref{G-Expressions}, pour une explication de la mise en place du code et des @dfn{strates de code} concernées.

note: type: Plain text
en: As soon as you start writing non-trivial package definitions (@pxref{Defining Packages}) or other build actions (@pxref{G-Expressions}), you will likely start looking for helpers for ``shell-like'' actions---creating directories, copying and deleting files recursively, manipulating build phases, and so on.  The @code{(guix build utils)} module provides such utility procedures.
fr: Dès que vous commencerez à écrire des définitions de paquets non triviales (@pxref{Defining Packages}) ou d'autres actions de compilation (@pxref{G-Expressions}), vous commencerez probablement à chercher des fonctions auxiliaires pour les actions « de type shell » --- créer des répertoires, copier et supprimer des fichiers de manière récursive, manipuler les phases de compilation, etc.  Le module @code{(guix build utils)} fournit de telles procédures utilitaires.

note: type: Plain text
en: Most build systems load @code{(guix build utils)} (@pxref{Build Systems}).  Thus, when writing custom build phases for your package definitions, you can usually assume those procedures are in scope.
fr: La plupart des systèmes de construction chargent @code{(guix build utils)} (@pxref{Build Systems}).  Ainsi, lorsque vous écrivez des phases de construction personnalisées pour vos définitions de paquets, vous pouvez généralement supposer que ces procédures sont disponibles.

note: type: Plain text
en: When writing G-expressions, you can import @code{(guix build utils)} on the ``build side'' using @code{with-imported-modules} and then put it in scope with the @code{use-modules} form (@pxref{Using Guile Modules,,, guile, GNU Guile Reference Manual}):
fr: Lorsque vous écrivez des G-expressions, vous pouvez importer @code{(guix build utils)} « côté construction » en utilisant @code{with-imported-modules} et ensuite le rendre disponible avec la forme @code{use-modules} (@pxref{Using Guile Modules,,, guile, GNU Guile Reference Manual}) :

note: type: lisp
en: (with-imported-modules '((guix build utils))  ;import it
      (computed-file "empty-tree"
                     #~(begin
                         ;; Put it in scope.
                         (use-modules (guix build utils))
fr: (with-imported-modules '((guix build utils))  ;on l'importe
      (computed-file "empty-tree"
                     #~(begin
                         ;; On le rend disponible.
                         (use-modules (guix build utils))

note: type: lisp
en:                      ;; Happily use its 'mkdir-p' procedure.
                         (mkdir-p (string-append #$output "/a/b/c")))))
fr:                      ;; On utilise sa procédure « mkdir-p » sans souci.
                         (mkdir-p (string-append #$output "/a/b/c")))))

note: type: Plain text
en: The remainder of this section is the reference for most of the utility procedures provided by @code{(guix build utils)}.
fr: Le reste de cette section est la référence pour la plupart des procédures auxiliaires fournies par @code{(guix build utils)}.

note: type: subsection
en: Dealing with Store File Names
fr: Traitement des noms de fichiers du dépôt

note: type: Plain text
en: This section documents procedures that deal with store file names.
fr: Cette section documente les procédures de traitement des noms de fichier du dépôt.

note: type: deffn
en: {Scheme Procedure} %store-directory
fr: {Procédure Scheme} %store-directory

note: type: deffn
en: Return the directory name of the store.
fr: Renvoie le nom de répertoire du dépôt.

note: type: deffn
en: {Scheme Procedure} store-file-name? @var{file}
fr: {Procédure Scheme} store-file-name? @var{fichier}

note: type: deffn
en: Return true if @var{file} is in the store.
fr: Renvoie vrai si @var{fichier} est dans le dépôt.

note: type: deffn
en: {Scheme Procedure} strip-store-file-name @var{file}
fr: {Procédure Scheme} strip-store-file-name @var{fichier}

note: type: deffn
en: Strip the @file{/gnu/store} and hash from @var{file}, a store file name.  The result is typically a @code{"@var{package}-@var{version}"} string.
fr: Enlevez le @file{/gnu/store} et le hash de @var{fichier}, un nom de fichier du dépôt.  Le résultat est généralement une chaîne @code{"@var{paquet}-@var{version}"}.

note: type: deffn
en: {Scheme Procedure} package-name->name+version @var{name}
fr: {Procédure Scheme} package-name->name+version @var{nom}

note: type: deffn
en: Given @var{name}, a package name like @code{"foo-0.9.1b"}, return two values: @code{"foo"} and @code{"0.9.1b"}.  When the version part is unavailable, @var{name} and @code{#f} are returned.  The first hyphen followed by a digit is considered to introduce the version part.
fr: Si l'on passe @var{nom}, un nom de paquet comme @code{"toto-0.9.1b"}, on obtient deux valeurs : @code{"toto"} et @code{"0.9.1b"}.  Lorsque la partie version est indisponible, @var{nom} et @code{#f} sont renvoyés.  Le premier trait d'union suivi d'un chiffre est considéré comme introduisant la partie version.

note: type: subsection
en: File Types
fr: Types de fichier

note: type: Plain text
en: The procedures below deal with files and file types.
fr: Les procédures ci-dessous portent sur les fichiers et les types de fichiers.

note: type: deffn
en: {Scheme Procedure} directory-exists? @var{dir}
fr: {Procédure Scheme} directory-exists? @var{dir}

note: type: deffn
en: Return @code{#t} if @var{dir} exists and is a directory.
fr: Renvoie @code{#t} si @var{dir} existe et est un répertoire.

note: type: deffn
en: {Scheme Procedure} executable-file? @var{file}
fr: {Procédure Scheme} executable-file? @var{fichier}

note: type: deffn
en: Return @code{#t} if @var{file} exists and is executable.
fr: Renvoie @code{#t} si @var{fichier} existe et est exécutable.

note: type: deffn
en: {Scheme Procedure} symbolic-link? @var{file}
fr: {Procédure Scheme} symbolic-link? @var{fichier}

note: type: deffn
en: Return @code{#t} if @var{file} is a symbolic link (aka. a ``symlink'').
fr: Renvoie @code{#t} si @var{fichier} est un lien symbolique (un « symlink »).

note: type: deffn
en: {Scheme Procedure} elf-file? @var{file}
fr: {Procédure Scheme} elf-file? @var{fichier}

note: type: deffnx
en: {Scheme Procedure} ar-file? @var{file}
fr: {Procédure Scheme} ar-file? @var{fichier}

note: type: deffnx
en: {Scheme Procedure} gzip-file? @var{file}
fr: {Procédure Scheme} gzip-file? @var{fichier}

note: type: deffn
en: Return @code{#t} if @var{file} is, respectively, an ELF file, an @code{ar} archive (such as a @file{.a} static library), or a gzip file.
fr: Renvoie @code{#t} si @var{fichier} est, respectivement, un fichier ELF, une archive @code{ar} (telle qu'une bibliothèque statique @file{.a}), ou un fichier gzip.

note: type: deffn
en: {Scheme Procedure} reset-gzip-timestamp @var{file} [#:keep-mtime? #t]
fr: {Procédure Scheme} reset-gzip-timestamp @var{fichier} [#:keep-mtime? #t]

note: type: deffn
en: If @var{file} is a gzip file, reset its embedded timestamp (as with @command{gzip --no-name}) and return true.  Otherwise return @code{#f}.  When @var{keep-mtime?} is true, preserve @var{file}'s modification time.
fr: Si @var{fichier} est un fichier gzip, réinitialise son horodatage intégré (comme avec @command{gzip --no-name}) et renvoie vrai.  Sinon, renvoie @code{#f}.  Lorsque @var{keep-mtime?} est vrai, conserve la date de modification de @var{fichier}.

note: type: subsection
en: File Manipulation
fr: Manipulation de fichiers

note: type: Plain text
en: The following procedures and macros help create, modify, and delete files.  They provide functionality comparable to common shell utilities such as @command{mkdir -p}, @command{cp -r}, @command{rm -r}, and @command{sed}.  They complement Guile's extensive, but low-level, file system interface (@pxref{POSIX,,, guile, GNU Guile Reference Manual}).
fr: Les procédures et macros suivantes permettent de créer, modifier et supprimer des fichiers.  Elles offrent des fonctionnalités comparables à celles des utilitaires shell courants tels que @command{mkdir -p}, @command{cp -r}, @command{rm -r} et @command{sed}.  Elles complètent l'interface de système de fichiers étendue, mais de bas niveau, de Guile (@pxref{POSIX, , , guile, GNU Guile Reference Manual}).

note: type: deffn
en: {Scheme Syntax} with-directory-excursion @var{directory} @var{body}@dots{}
fr: {Syntaxe Scheme} with-directory-excursion @var{répertoire} @var{corps}@dots{}

note: type: deffn
en: Run @var{body} with @var{directory} as the process's current directory.
fr: Exécute @var{corps} avec @var{répertoire} comme répertoire actuel du processus.

note: type: deffn
en: Essentially, this macro changes the current directory to @var{directory} before evaluating @var{body}, using @code{chdir} (@pxref{Processes,,, guile, GNU Guile Reference Manual}).  It changes back to the initial directory when the dynamic extent of @var{body} is left, be it @i{via} normal procedure return or @i{via} a non-local exit such as an exception.
fr: En gros, cette macro change le répertoire actuel en @var{répertoire} avant d'évaluer @var{corps}, en utilisant @code{chdir}. (@pxref{Processus,,, guile, Manuel de référence de GNU Guile}).  Elle revient au répertoire initial à la sortie de la portée dynamique de @var{corps}, qu'il s'agisse d'un retour de procédure normal ou d'une sortie non locale telle qu'une exception.

note: type: deffn
en: {Scheme Procedure} mkdir-p @var{dir}
fr: {Procédure Scheme} mkdir-p @var{dir}

note: type: deffn
en: Create directory @var{dir} and all its ancestors.
fr: Crée le répertoire @var{dir} et tous ses ancètres.

note: type: deffn
en: {Scheme Procedure} install-file @var{file} @var{directory}
fr: {Procédure Scheme} install-file @var{fichier} @var{répertoire}

note: type: deffn
en: Create @var{directory} if it does not exist and copy @var{file} in there under the same name.
fr: Crée @var{répertoire} s'il n'existe pas et y copie @var{fichier} sous le même nom.

note: type: deffn
en: {Scheme Procedure} make-file-writable @var{file}
fr: {Procédure Scheme} make-file-writable @var{fichier}

note: type: deffn
en: Make @var{file} writable for its owner.
fr: Rend @var{fichier} inscriptible pour son propriétaire.

note: type: deffn
en: {Scheme Procedure} copy-recursively @var{source} @var{destination} @
fr: {Procédure Scheme} copy-recursively @var{source} @var{destination} @

note: type: deffn
en: [#:log (current-output-port)] [#:follow-symlinks? #f] @ [#:copy-file copy-file] [#:keep-mtime? #f] [#:keep-permissions? #t] Copy @var{source} directory to @var{destination}.  Follow symlinks if @var{follow-symlinks?} is true; otherwise, just preserve them.  Call @var{copy-file} to copy regular files.  When @var{keep-mtime?} is true, keep the modification time of the files in @var{source} on those of @var{destination}.  When @var{keep-permissions?} is true, preserve file permissions.  Write verbose output to the @var{log} port.
fr: [#:log (current-output-port)] [#:follow-symlinks ? #f] @
    [#:copy-file copy-file] [#:keep-mtime? #f] [#:keep-permissions? #t]
    Copie le répertoire @var{source} dans @var{destination}.  Suit les liens symboliques si @var{follow-symlinks?} est vrai ; sinon, les conserve. Appelle @var{copy-file} pour copier les fichiers normaux. Lorsque @var{keep-mtime?} est vrai, conserve les heures de modification des fichiers de @var{source} pour ceux de @var{destination}. Si @var{keep-permissions?} est vrai, préserve les permissions des fichiers. Affiche une sortie verbeuse sur le port @var{log}.

note: type: deffn
en: {Scheme Procedure} delete-file-recursively @var{dir} @
fr: {Procédure Scheme} delete-file-recursively @var{dir} @

note: type: deffn
en: [#:follow-mounts? #f] Delete @var{dir} recursively, like @command{rm -rf}, without following symlinks.  Don't follow mount points either, unless @var{follow-mounts?} is true.  Report but ignore errors.
fr: [#:follow-mounts? #f] 
    Efface récursivement @var{dir}, comme @command{rm -rf}, sans suivre les liens symboliques. Ne suit pas non plus les points de montage, à moins que @var{follow-mounts?} ne soit vrai. Rapporte mais ignore les erreurs.

note: type: deffn
en: {Scheme Syntax} substitute* @var{file} @
fr: {Syntaxe Scheme} substitute* @var{fichier} @

note: type: deffn
en: ((@var{regexp} @var{match-var}@dots{}) @var{body}@dots{}) @dots{} Substitute @var{regexp} in @var{file} by the string returned by @var{body}.  @var{body} is evaluated with each @var{match-var} bound to the corresponding positional regexp sub-expression.  For example:
fr: ((@var{regexp} @var{match-var}@dots{}) @var{body}@dots{}) @dots{} 
    Remplace @var{regexp} dans @var{fichier} par la chaîne renvoyée par @var{body}.  @var{body} est évalué avec chaque @var{match-var} lié à la sous-expression de regexp positionnelle correspondante.  Par exemple :

note: type: lisp
en: (substitute* file
      (("hello")
       "good morning\n")
      (("foo([a-z]+)bar(.*)$" all letters end)
       (string-append "baz" letters end)))
fr: (substitute* file
      (("hello")
       "good morning\n")
      (("toto([a-z]+)titi(.*)$" all letters end)
       (string-append "tata" letters end)))

note: type: deffn
en: Here, anytime a line of @var{file} contains @code{hello}, it is replaced by @code{good morning}.  Anytime a line of @var{file} matches the second regexp, @code{all} is bound to the complete match, @code{letters} is bound to the first sub-expression, and @code{end} is bound to the last one.
fr: Ici, chaque fois qu'une ligne de @var{fichier} contient @code{hello}, elle est remplacée par @code{good morning}.  Chaque fois qu'une ligne de @var{fichier} correspond à la deuxième regexp, @code{all} est lié à la correspondance complète, @code{letters} est lié à la première sous-expression, et @code{end} est lié à la dernière.

note: type: deffn
en: When one of the @var{match-var} is @code{_}, no variable is bound to the corresponding match substring.
fr: Lorsque l'une des @var{match-var} est @code{_}, aucune variable n'est liée à la sous-chaîne de correspondance associée.

note: type: deffn
en: Alternatively, @var{file} may be a list of file names, in which case they are all subject to the substitutions.
fr: Autrement, @var{fichier} peut être une liste de noms de fichier, auquel cas ils sont tous sujets aux substitutions.

note: type: deffn
en: Be careful about using @code{$} to match the end of a line; by itself it won't match the terminating newline of a line.
fr: Faites attention à l'utilisation du @code{$} pour faire correspondre la fin d'une ligne ; à lui seul, il ne correspondra pas à la fin d'une nouvelle ligne.

note: type: subsection
en: File Search
fr: Recherche de fichiers

note: type: cindex
en: file, searching
fr: fichier, chercher

note: type: Plain text
en: This section documents procedures to search and filter files.
fr: Cette section documente les procédures pour chercher et filtrer des fichiers.

note: type: deffn
en: {Scheme Procedure} file-name-predicate @var{regexp}
fr: {Procédure Scheme} file-name-predicate @var{regexp}

note: type: deffn
en: Return a predicate that returns true when passed a file name whose base name matches @var{regexp}.
fr: Renvoie un prédicat qui devient vrai lorsqu'on lui passe un nom de fichier dont le nom de base correspond à @var{regexp}.

note: type: deffn
en: {Scheme Procedure} find-files @var{dir} [@var{pred}] @
fr: {Procédure Scheme} find-files @var{dir} [@var{pred}] @

note: type: deffn
en: [#:stat lstat] [#:directories? #f] [#:fail-on-error? #f] Return the lexicographically sorted list of files under @var{dir} for which @var{pred} returns true.  @var{pred} is passed two arguments: the absolute file name, and its stat buffer; the default predicate always returns true.  @var{pred} can also be a regular expression, in which case it is equivalent to @code{(file-name-predicate @var{pred})}.  @var{stat} is used to obtain file information; using @code{lstat} means that symlinks are not followed.  If @var{directories?} is true, then directories will also be included.  If @var{fail-on-error?} is true, raise an exception upon error.
fr: [#:stat lstat] [#:directories ? #f] [#:fail-on-error ? #f] 
    Renvoie la liste des fichiers triés lexicographiquement sous @var{dir} pour lesquels @var{pred} renvoie « vrai ».  Deux arguments sont passés à @var{pred} : le nom absolu du fichier et son tampon stat ; le prédicat par défaut renvoie toujours « vrai ».  @var{pred} peut également être une expression régulière, auquel cas elle est équivalente à @code{(file-name-predicate @var{pred})}.  @var{stat} est utilisé pour obtenir des informations sur les fichiers ; l'utilisation de @code{lstat} signifie que les liens symboliques ne sont pas suivis.  Si @var{directories?} est vrai, alors les répertoires seront également inclus.  Si @var{fail-on-error?} est vrai, il lance une exception en cas d'erreur.

note: type: Plain text
en: Here are a few examples where we assume that the current directory is the root of the Guix source tree:
fr: Voici quelques exemples où nous supposons que le répertoire actuel est la racine de l'arborescence des sources de Guix :

note: type: lisp
en: ;; List all the regular files in the current directory.
    (find-files ".")
    @result{} ("./.dir-locals.el" "./.gitignore" @dots{})
fr: ;; Liste tous les fichiers normaux dans le répertoire actuel.
    (find-files ".")
    @result{} ("./.dir-locals.el" "./.gitignore" @dots{})

note: type: lisp
en: ;; List all the .scm files under gnu/services.
    (find-files "gnu/services" "\\.scm$")
    @result{} ("gnu/services/admin.scm" "gnu/services/audio.scm" @dots{})
fr: ;; Liste tous les fichiers .scm sous gnu/services.
    (find-files "gnu/services" "\\.scm$")
    @result{} ("gnu/services/admin.scm" "gnu/services/audio.scm" @dots{})

note: type: lisp
en: ;; List ar files in the current directory.
    (find-files "." (lambda (file stat) (ar-file? file)))
    @result{} ("./libformat.a" "./libstore.a" @dots{})
fr: ;; Liste les fichiers ar dans le répertoire actuel.
    (find-files "." (lambda (file stat) (ar-file? file)))
    @result{} ("./libformat.a" "./libstore.a" @dots{})

note: type: deffn
en: {Scheme Procedure} which @var{program}
fr: {Procédure Scheme} which @var{programme}

note: type: deffn
en: Return the complete file name for @var{program} as found in @code{$PATH}, or @code{#f} if @var{program} could not be found.
fr: Renvoie le nom complet du fichier pour @var{programme} tel qu'il se trouve dans @code{$PATH}, ou @code{#f} si @var{programme} n'a pas pu être trouvé.

note: type: deffn
en: {Scheme Procedure} search-input-file @var{inputs} @var{name}
fr: {Procédure Scheme} search-input-file @var{entrées} @var{nom}

note: type: deffnx
en: {Scheme Procedure} search-input-directory @var{inputs} @var{name}
fr: {Procédure Scheme} search-input-directory @var{entrées} @var{nom}

note: type: deffn
en: Return the complete file name for @var{name} as found in @var{inputs}; @code{search-input-file} searches for a regular file and @code{search-input-directory} searches for a directory.  If @var{name} could not be found, an exception is raised.
fr: Renvoie le nom de fichier complet de @var{nom} trouvé dans @var{entrées} ; @code{search-input-file} recherche les fichiers normaux et @code{search-input-directory} recherche les dossiers. Si @var{nom} n'est pas trouvé, une exception est levée.

note: type: deffn
en: Here, @var{inputs} must be an association list like @code{inputs} and @code{native-inputs} as available to build phases (@pxref{Build Phases}).
fr: Ici, @var{entrées} doit être une liste d'association comme les variables @code{inputs} et @code{native-inputs} disponibles dans les phases de construction (@pxref{Build Phases}).

note: type: Plain text
en: Here is a (simplified) example of how @code{search-input-file} is used in a build phase of the @code{wireguard-tools} package:
fr: Voici un exemple (simplifié) d'utilisation de @code{search-input-file} dans une phase de construction du paquet @code{wireguard-tools} :

note: type: subsection
en: Program Invocation
fr: Invocation de programme

note: type: cindex
en: program invocation, from Scheme
fr: invocation de programme, depuis Scheme

note: type: cindex
en: invoking programs, from Scheme
fr: invocation de programmes, depuis Scheme

note: type: Plain text
en: You'll find handy procedures to spawn processes in this module, essentially convenient wrappers around Guile's @code{system*} (@pxref{Processes, @code{system*},, guile, GNU Guile Reference Manual}).
fr: Vous trouverez des procédures pratiques pour invoquer des processus dans ce module, en particulier des enveloppes pratiques autour de @code{system*} de Guile (@pxref{Processes, @code{system*},, guile, le manuel de référence de Guile}).

note: type: deffn
en: {Scheme Procedure} invoke @var{program} @var{args}@dots{}
fr: {Procédure Scheme} invoke @var{programme} @var{args}@dots{}

note: type: deffn
en: Invoke @var{program} with the given @var{args}.  Raise an @code{&invoke-error} exception if the exit code is non-zero; otherwise return @code{#t}.
fr: Invoque le @var{programme} avec les @var{args} donnés. Lève une exception @code{&invoke-error} si le code de retour n'est pas zéro ; sinon renvoie @code{#t}.

note: type: deffn
en: The advantage compared to @code{system*} is that you do not need to check the return value.  This reduces boilerplate in shell-script-like snippets for instance in package build phases.
fr: L'avantage par rapport à @code{system*} c'est que vous n'avez pas besoin de vérifier la valeur de sortie. Cela réduit le code dans les petits scripts comme par exemple dans les phases de construction des paquets.

note: type: deffn
en: {Scheme Procedure} invoke-error? @var{c}
fr: {Procédure Scheme} invoke-error? @var{c}

note: type: deffn
en: Return true if @var{c} is an @code{&invoke-error} condition.
fr: Renvoie vrai si @var{c} est une condition @code{&invoke-error}.

note: type: deffn
en: {Scheme Procedure} invoke-error-program @var{c}
fr: {Procédure Scheme} invoke-error-program @var{c}

note: type: deffnx
en: {Scheme Procedure} invoke-error-arguments @var{c}
fr: {Procédure Scheme} invoke-error-arguments @var{c}

note: type: deffnx
en: {Scheme Procedure} invoke-error-exit-status @var{c}
fr: {Procédure Scheme} invoke-error-exit-status @var{c}

note: type: deffnx
en: {Scheme Procedure} invoke-error-term-signal @var{c}
fr: {Procédure Scheme} invoke-error-term-signal @var{c}

note: type: deffnx
en: {Scheme Procedure} invoke-error-stop-signal @var{c}
fr: {Procédure Scheme} invoke-error-stop-signal @var{c}

note: type: deffn
en: Access specific fields of @var{c}, an @code{&invoke-error} condition.
fr: Accède aux champs de @var{c}, une condition @code{&invoke-error}.

note: type: deffn
en: {Scheme Procedure} report-invoke-error @var{c} [@var{port}]
fr: {Procédure Scheme} report-invoke-error @var{c} [@var{port}]

note: type: deffn
en: Report to @var{port} (by default the current error port) about @var{c}, an @code{&invoke-error} condition, in a human-friendly way.
fr: Rapporte @var{c}, une condition @code{&invoke-error}, sur @var{port} (par défaut le port d'erreur actuel), dans un format humainement lisible.

note: type: deffn
en: Typical usage would look like this:
fr: L'utilisation habituelle ressemblerait à ceci :

note: type: lisp
en: (use-modules (srfi srfi-34) ;for 'guard'
                 (guix build utils))
fr: (use-modules (srfi srfi-34) ;pour « guard »
                 (guix build utils))

note: type: lisp
en: (guard (c ((invoke-error? c)
               (report-invoke-error c)))
      (invoke "date" "--imaginary-option"))
fr: (guard (c ((invoke-error? c)
               (report-invoke-error c)))
      (invoke "date" "--option-imaginaire"))

note: type: lisp
en: @print{} command "date" "--imaginary-option" failed with status 1
fr: @print{} command "date" "--option-imaginaire" failed with status 1

note: type: deffn
en: {Scheme Procedure} invoke/quiet @var{program} @var{args}@dots{}
fr: {Procédure Scheme} invoke/quiet @var{programme} @var{args}@dots{}

note: type: deffn
en: Invoke @var{program} with @var{args} and capture @var{program}'s standard output and standard error.  If @var{program} succeeds, print nothing and return the unspecified value; otherwise, raise a @code{&message} error condition that includes the status code and the output of @var{program}.
fr: Invoque @var{programme} avec @var{args} et capture la sortie standard et l'erreur standard de @var{programme}. Si @var{programme} termine sans erreur, n'affiche rien et renvoie la valeur non spécifiée ; sinon, lève une condition d'erreur @code{&message} qui inclut le code de statut et la sortie de @var{programme}.

note: type: deffn
en: Here's an example:
fr: Voici un exemple :

note: type: lisp
en: (use-modules (srfi srfi-34) ;for 'guard'
                 (srfi srfi-35) ;for 'message-condition?'
                 (guix build utils))
fr: (use-modules (srfi srfi-34) ;pour « guard »
                 (srfi srfi-35) ;pour « message-condition? »
                 (guix build utils))

note: type: lisp
en: (guard (c ((message-condition? c)
               (display (condition-message c))))
      (invoke/quiet "date")  ;all is fine
      (invoke/quiet "date" "--imaginary-option"))
fr: (guard (c ((message-condition? c)
               (display (condition-message c))))
      (invoke/quiet "date")  ; tout va bien
      (invoke/quiet "date" "--imaginary-option"))

note: type: lisp
en:     date: unrecognized option '--imaginary-option'
        Try 'date --help' for more information.
fr:     date : option non reconnue '--imaginary-option'
      Saisissez « date --help » pour plus d'informations.

note: type: Plain text
en: The @code{(guix build utils)} also contains tools to manipulate build phases as used by build systems (@pxref{Build Systems}).  Build phases are represented as association lists or ``alists'' (@pxref{Association Lists,,, guile, GNU Guile Reference Manual}) where each key is a symbol naming the phase and the associated value is a procedure (@pxref{Build Phases}).
fr: Le @code{(guix build utils)} contient également des outils permettant de manipuler les phases de construction telles qu'elles sont utilisées par les systèmes de construction (@pxref{Build Systems}).  Les phases de construction sont représentées sous forme de listes d'associations ou « alists » (@pxref{Association Lists,,, guile, Manuel de référence de GNU Guile}) où chaque clé est un symbole désignant la phase et où la valeur associée est une procédure (@pxref{Build Phases}).

note: type: Plain text
en: Guile core and the @code{(srfi srfi-1)} module both provide tools to manipulate alists.  The @code{(guix build utils)} module complements those with tools written with build phases in mind.
fr: Le noyau Guile et le module @code{(srfi srfi-1)} fournissent tous deux des outils pour manipuler les alignements.  Le module @code{(guix build utils)} complète ces outils avec des outils écrits en tenant compte des phases de construction.

note: type: cindex
en: build phases, modifying
fr: phases de construction, modifier

note: type: deffn
en: {Scheme Syntax} modify-phases @var{phases} @var{clause}@dots{}
fr: {Syntaxe Scheme} modify-phases @var{phases} @var{clause}@dots{}

note: type: deffn
en: Modify @var{phases} sequentially as per each @var{clause}, which may have one of the following forms:
fr: Modifie @var{phases} séquentiellement selon chaque @var{clause}, qui peut avoir l'une des formes suivantes :

note: type: deffn
en: Where every @var{phase-name} above is an expression evaluating to a symbol, and @var{new-phase} an expression evaluating to a procedure.
fr: Où chaque @var{phase-name} ci-dessus est une expression s'évaluant en un symbole, et @var{new-phase} une expression évaluant à une procédure.

note: type: Plain text
en: The example below is taken from the definition of the @code{grep} package.  It adds a phase to run after the @code{install} phase, called @code{fix-egrep-and-fgrep}.  That phase is a procedure (@code{lambda*} is for anonymous procedures) that takes a @code{#:outputs} keyword argument and ignores extra keyword arguments (@pxref{Optional Arguments,,, guile, GNU Guile Reference Manual}, for more on @code{lambda*} and optional and keyword arguments.)  The phase uses @code{substitute*} to modify the installed @file{egrep} and @file{fgrep} scripts so that they refer to @code{grep} by its absolute file name:
fr: L'exemple ci-dessous est tiré de la définition du paquet @code{grep}.  Il ajoute une phase à exécuter après la phase @code{install}, appelée @code{fix-egrep-and-fgrep}.  Cette phase est une procédure (@code{lambda*} pour les procédures anonymes) qui prend un paramètre nommé @code{#:outputs} et ignore les paramètres nommés supplémentaires (@pxref{Optional Arguments,,, guile, GNU Guile Reference Manual}, pour en savoir plus sur @code{lambda*} et les arguments optionnels et nommés).  La phase utilise @code{substitute*} pour modifier les scripts @file{egrep} et @file{fgrep} installés afin qu'ils se réfèrent à @code{grep} par son nom de fichier absolu :

note: type: lisp
en: (modify-phases %standard-phases
      (add-after 'install 'fix-egrep-and-fgrep
        ;; Patch 'egrep' and 'fgrep' to execute 'grep' via its
        ;; absolute file name instead of searching for it in $PATH.
        (lambda* (#:key outputs #:allow-other-keys)
          (let* ((out (assoc-ref outputs "out"))
                 (bin (string-append out "/bin")))
            (substitute* (list (string-append bin "/egrep")
                               (string-append bin "/fgrep"))
              (("^exec grep")
               (string-append "exec " bin "/grep")))))))
fr: (modify-phases %standard-phases
      (add-after 'install 'fix-egrep-and-fgrep
        ;; Corrige « egrep » et « fgrep » pour exécuter « grep » via son
        ;; nom de fichier absolu au lieu de le chercher dans $PATH.
        (lambda* (#:key outputs #:allow-other-keys)
          (let* ((out (assoc-ref outputs "out"))
                 (bin (string-append out "/bin")))
            (substitute* (list (string-append bin "/egrep")
                               (string-append bin "/fgrep"))
              (("^exec grep")
               (string-append "exec " bin "/grep")))))))

note: type: Plain text
en: In the example below, phases are modified in two ways: the standard @code{configure} phase is deleted, presumably because the package does not have a @file{configure} script or anything similar, and the default @code{install} phase is replaced by one that manually copies the executable files to be installed:
fr: Dans l'exemple ci-dessous, les phases sont modifiées de deux façons : la phase standard @code{configure} est supprimée, vraisemblablement parce que le paquet n'a pas de script @file{configure} ou quelque chose de similaire, et la phase par défaut @code{install} est remplacée par une phase qui copie manuellement les fichiers exécutables à installer :

note: type: lisp
en: (modify-phases %standard-phases
      (delete 'configure)      ;no 'configure' script
      (replace 'install
        (lambda* (#:key outputs #:allow-other-keys)
          ;; The package's Makefile doesn't provide an "install"
          ;; rule so do it by ourselves.
          (let ((bin (string-append (assoc-ref outputs "out")
                                    "/bin")))
            (install-file "footswitch" bin)
            (install-file "scythe" bin)))))
fr: (modify-phases %standard-phases
      (delete 'configure)      ;pas de script « configure »
      (replace 'install
        (lambda* (#:key outputs #:allow-other-keys)
          ;; Le Makefile du paquet ne fournit pas de règle « install »
          ;; alors on le fait nous-mêmes.
          (let ((bin (string-append (assoc-ref outputs "out")
                                    "/bin")))
            (install-file "footswitch" bin)
            (install-file "scythe" bin)))))

note: type: subsection
en: Wrappers
fr: Enveloppes

note: type: cindex
en: program wrappers
fr: enveloppes de programmes

note: type: cindex
en: wrapping programs
fr: envelopper des programmes

note: type: Plain text
en: It is not unusual for a command to require certain environment variables to be set for proper functioning, typically search paths (@pxref{Search Paths}).  Failing to do that, the command might fail to find files or other commands it relies on, or it might pick the ``wrong'' ones---depending on the environment in which it runs.  Examples include:
fr: Il est courant qu'une commande ait besoin que certaines variables d'environnement soient initialisées pour fonctionner correctement, souvent des chemins de recherche (@pxref{Search Paths}). Sans cela, la commande peut échouer à trouver les fichiers et les autres commandes dont elle a besoin, ou elle pourrait trouver la « mauvaise » dépendance --- en dépendant de l'environnement sur lequel elle tourne. Voici quelques exemples :

note: type: itemize
en: a shell script that assumes all the commands it uses are in @env{PATH};
fr: un script shell qui suppose que toutes les commandes qu'il utilise sont dans @env{PATH} ;

note: type: itemize
en: a Guile program that assumes all its modules are in @env{GUILE_LOAD_PATH} and @env{GUILE_LOAD_COMPILED_PATH};
fr: un programme Guile qui suppose que tous ses modules sont dans @env{GUILE_LOAD_PATH} et @env{GUILE_LOAD_COMPILED_PATH} ;

note: type: itemize
en: a Qt application that expects to find certain plugins in @env{QT_PLUGIN_PATH}.
fr: une application Qt qui s'attend à trouver certains greffons dans @env{QT_PLUGIN_PATH}.

note: type: Plain text
en: For a package writer, the goal is to make sure commands always work the same rather than depend on some external settings.  One way to achieve that is to @dfn{wrap} commands in a thin script that sets those environment variables, thereby ensuring that those run-time dependencies are always found.  The wrapper would be used to set @env{PATH}, @env{GUILE_LOAD_PATH}, or @env{QT_PLUGIN_PATH} in the examples above.
fr: Pour l'auteur ou l'autrice d'un paquet, le but est de s'assurer que les commandes fonctionnent toujours pareil plutôt que de dépendre de paramètres externes. Une manière d'y arriver est d'@dfn{envelopper} les commandes dans un petit script qui défini ces variables d'environnement, ce qui assure que ces dépendances à l'exécution seront trouvées. L'enveloppe serait utilisée pour initialiser @env{PATH}, @env{GUILE_LOAD_PATH} ou @env{QT_PLUGIN_PATH} dans les exemple ci-dessus.

note: type: Plain text
en: To ease that task, the @code{(guix build utils)} module provides a couple of helpers to wrap commands.
fr: Pour faciliter cette tâche, le module @code{(guix build utils)} fournit quelques fonctions auxiliaires pour envelopper des commandes.

note: type: deffn
en: {Scheme Procedure} wrap-program @var{program} @
fr: {Procédure Scheme} wrap-program @var{programme} @

note: type: deffn
en: [#:sh @var{sh}] [#:rest @var{variables}] Make a wrapper for @var{program}.  @var{variables} should look like this:
fr: [#:sh @var{sh}] [#:rest @var{variables}]
    Crée une enveloppe pour @var{programme}.  @var{variables} doit ressembler à ceci :

note: type: lisp
en: '(@var{variable} @var{delimiter} @var{position} @var{list-of-directories})
fr: '(@var{variable} @var{délimiteur} @var{position} @var{liste-de-répertoires})

note: type: deffn
en: where @var{delimiter} is optional.  @code{:} will be used if @var{delimiter} is not given.
fr: où @var{délimiteur} est facultatif. @code{:} sera utilisé si @var{délimiteur} n'est pas fourni.

note: type: deffn
en: For example, this call:
fr: Par exemple, cet appel :

note: type: lisp
en: (wrap-program "foo"
                  '("PATH" ":" = ("/gnu/.../bar/bin"))
                  '("CERT_PATH" suffix ("/gnu/.../baz/certs"
                                        "/qux/certs")))
fr: (wrap-program "toto"
                  '("PATH" ":" = ("/gnu/.../titi/bin"))
                  '("CERT_PATH" suffix ("/gnu/.../tata/certs"
                                        "/qux/certs")))

note: type: deffn
en: will copy @file{foo} to @file{.foo-real} and create the file @file{foo} with the following contents:
fr: copiera @file{toto} dans @file{.toto-real} et créera le fichier @file{toto} avec le contenu suivant :

note: type: example
en: #!location/of/bin/bash
    export PATH="/gnu/.../bar/bin"
    export CERT_PATH="$CERT_PATH$@{CERT_PATH:+:@}/gnu/.../baz/certs:/qux/certs"
    exec -a $0 location/of/.foo-real "$@@"
fr: #!emplacement/de/bin/bash
    export PATH="/gnu/.../titi/bin"
    export CERT_PATH="$CERT_PATH$@{CERT_PATH:+:@}/gnu/.../tata/certs:/qux/certs"
    exec -a $0 emplacement/de/.foo-real "$@@"

note: type: deffn
en: If @var{program} has previously been wrapped by @code{wrap-program}, the wrapper is extended with definitions for @var{variables}.  If it is not, @var{sh} will be used as the interpreter.
fr: Si @var{programme} a déjà été enveloppé par @code{wrap-program}, l'enveloppe est agrandie avec les définitions de @var{variables}. Sinon, @var{sh} sera utilisé comme interpréteur.

note: type: deffn
en: {Scheme Procedure} wrap-script @var{program} @
fr: {Procédure Scheme} wrap-script @var{programme} @

note: type: deffn
en: [#:guile @var{guile}] [#:rest @var{variables}] Wrap the script @var{program} such that @var{variables} are set first.  The format of @var{variables} is the same as in the @code{wrap-program} procedure.  This procedure differs from @code{wrap-program} in that it does not create a separate shell script.  Instead, @var{program} is modified directly by prepending a Guile script, which is interpreted as a comment in the script's language.
fr: [#:guile @var{guile}] [#:rest @var{variables}]
    Enveloppe le script @var{programme} pour que @var{variables} soient définie avant. Le format de @var{variables} est le même que pour la procédure @code{wrap-program}. Cette procédure est différente de @code{wrap-program} car elle ne crée pas de script shell séparé. Au lieu de cela, @var{program} est modifié directement en ajoutant un script Guile au début, qui est interprété comme un commentaire par le langage de script.

note: type: deffn
en: Special encoding comments as supported by Python are recreated on the second line.
fr: Les commentaires à l'encodage spécifique pris en charge par Python sont recréés sur la seconde ligne.

note: type: deffn
en: Note that this procedure can only be used once per file as Guile scripts are not supported.
fr: Remarquez que cette procédure ne peut être utilisée qu'une seule fois par fichier car les scripts Guile ne sont pas pris en charge.

note: type: cindex
en: search path
fr: chemin de recherche

note: type: Plain text
en: Many programs and libraries look for input data in a @dfn{search path}, a list of directories: shells like Bash look for executables in the command search path, a C compiler looks for @file{.h} files in its header search path, the Python interpreter looks for @file{.py} files in its search path, the spell checker has a search path for dictionaries, and so on.
fr: De nombreux programmes et bibliothèques cherchent leurs données d'entrée dans un @dfn{chemin de recherch}, une liste de répertoire : les shells comme Bash cherchent des exécutables dans le chemin de recherche des commandes, un compilateur C cherche des fichiers @file{.h} dans son chemin de recherche d'en-têtes, l'interpréteur Python cheche des fichiers @file{.py} dans son chemin de recherche, le correcteur orthographique a un chemin de recherche pour les dictionnaires, et cætera.

note: type: Plain text
en: Search paths can usually be defined or overridden @i{via} environment variables (@pxref{Environment Variables,,, libc, The GNU C Library Reference Manual}).  For example, the search paths mentioned above can be changed by defining the @env{PATH}, @env{C_INCLUDE_PATH}, @env{PYTHONPATH} (or @env{GUIX_PYTHONPATH}), and @env{DICPATH} environment variables---you know, all these something-PATH variables that you need to get right or things ``won't be found''.
fr: Les chemins de recherche peuvent habituellement être définis ou remplacés par des variables d'environnement (@pxref{Environment Variables,,, libc, le manuel de référence de la bibliothèque C de GNU}). Par exemple, les chemins de recherches mentionnés ci-dessus peuvent être modifiés en définissant les variables d'environnement @env{PATH}, @env{C_INCLUDE_PATH}, @env{PYTHONPATH} (ou @env{GUIX_PYTHONPATH}) et @env{DICPATH} --- vous savez, toutes ces variables comme PATH que vous devez paramétrer correctement sous peine de voir les choses « non trouvée ».

note: type: Plain text
en: You may have noticed from the command line that Guix ``knows'' which search path environment variables should be defined, and how.  When you install packages in your default profile, the file @file{~/.guix-profile/etc/profile} is created, which you can ``source'' from the shell to set those variables.  Likewise, if you ask @command{guix shell} to create an environment containing Python and NumPy, a Python library, and if you pass it the @option{--search-paths} option, it will tell you about @env{PATH} and @env{GUIX_PYTHONPATH} (@pxref{Invoking guix shell}):
fr: Vous aurez peut-être remarqué en utilisant la ligne de commande, Guix « sait » quelles variables d'environnement de chemin de recherche doivent être définies et comment. Quand vous installez des paquets dans votre profil par défaut, le fichier @file{~/.guix-profile/etc/profile} est créé, et vous pouvez le « sourcer » à partir du shell pour initialiser ces variables. De même, si vous demandez à @command{guix shell} de créer un environnement contenant Python et NumPy, une bibliothèque Python, et que vous passez l'option @option{--search-paths}, il vous parlera de @env{PATH} et @env{GUIX_PYTHONPATH} (@pxref{Invoking guix shell}) :

note: type: Plain text
en: When you omit @option{--search-paths}, it defines these environment variables right away, such that Python can readily find NumPy:
fr: Si vous omettez @option{--search-paths}, il défini ces variables d'environnement directement, si bien que Python peut immédiatement trouver NumPy :

note: type: Plain text
en: For this to work, the definition of the @code{python} package @emph{declares} the search path it cares about and its associated environment variable, @env{GUIX_PYTHONPATH}.  It looks like this:
fr: Pour que cela fonctionne, la définition du paquet @code{python} @emph{déclare} le chemin de recherche qui l'intéresse et sa variable d'environnement associée, @env{GUIX_PYTHONPATH}. Cela ressemble à ceci :

note: type: lisp
en: (package
      (name "python")
      (version "3.9.9")
      ;; some fields omitted...
      (native-search-paths
       (list (search-path-specification
              (variable "GUIX_PYTHONPATH")
              (files (list "lib/python/3.9/site-packages"))))))
fr: (package
      (name "python")
      (version "3.9.9")
      ;; quelques champs omis...
      (native-search-paths
       (list (search-path-specification
              (variable "GUIX_PYTHONPATH")
              (files (list "lib/python/3.9/site-packages"))))))

note: type: Plain text
en: What this @code{native-search-paths} field says is that, when the @code{python} package is used, the @env{GUIX_PYTHONPATH} environment variable must be defined to include all the @file{lib/python/3.9/site-packages} sub-directories encountered in its environment.  (The @code{native-} bit means that, if we are in a cross-compilation environment, only native inputs may be added to the search path; @pxref{package Reference, @code{search-paths}}.)  In the NumPy example above, the profile where @code{python} appears contains exactly one such sub-directory, and @env{GUIX_PYTHONPATH} is set to that.  When there are several @file{lib/python/3.9/site-packages}---this is the case in package build environments---they are all added to @env{GUIX_PYTHONPATH}, separated by colons (@code{:}).
fr: Ce qui ce champ @code{native-search-paths} signifie que lorsque le paquet @code{python} est utilisé, la variable d'environnement @env{GUIX_PYTHONPATH} doit être définie et inclure tous les sous-répertoires @file{lib/python/3.9/site-packages} rencontrés dans son environnement. (@code{native-} signifie que, dans un environnement de compilation croisée, seules les entrées natives seront ajoutées au chemin de recherche ; @pxref{package Reference, @code{search-paths}}.) Dans l'exemple NumPy ci-dessus, le profil où @code{python} apparait contient exactement un de ces sous-répertoires, et @env{GUIX_PYTHONPATH} est initialisé à cette valeur. Lorsqu'il y a plusieurs @file{lib/python/3.9/site-packages} --- c'est le cas dans l'environnement de construction des paquets --- ils sont ajoutés à @env{GUIX_PYTHONPATH}, séparés par des deux-points (@code{:}).

note: type: quotation
en: Notice that @env{GUIX_PYTHONPATH} is specified as part of the definition of the @code{python} package, and @emph{not} as part of that of @code{python-numpy}.  This is because this environment variable ``belongs'' to Python, not NumPy: Python actually reads the value of that variable and honors it.
fr: Remarquez que @env{GUIX_PYTHONPATH} est spécifié dans la définition du paquet @code{python}, et @emph{pas} dans celle de @code{python-numpy}. C'est parce que cette variable d'environnement « appartient » à Python, pas à NumPy : Python lit effectivement la valeur de cette variable et la prend en compte.

note: type: quotation
en: Corollary: if you create a profile that does not contain @code{python}, @code{GUIX_PYTHONPATH} will @emph{not} be defined, even if it contains packages that provide @file{.py} files:
fr: Corollaire : si vous créez un profil qui ne contient pas @code{python}, @code{GUIX_PYTHONPATH} ne sera @emph{pas} défini, même s'il contient des paquets qui fournissent des fichiers @file{.py} :

note: type: quotation
en: This makes a lot of sense if we look at this profile in isolation: no software in this profile would read @env{GUIX_PYTHONPATH}.
fr: Cela a plus de sens si on considère ce profil individuellement : aucun logiciel de ce profil ne lirait @env{GUIX_PYTHONPATH}.

note: type: Plain text
en: Of course, there are many variations on that theme: some packages honor more than one search path, some use separators other than colon, some accumulate several directories in their search path, and so on.  A more complex example is the search path of libxml2: the value of the @env{XML_CATALOG_FILES} environment variable is space-separated, it must contain a list of @file{catalog.xml} files (not directories), which are to be found in @file{xml} sub-directories---nothing less.  The search path specification looks like this:
fr: Bien sûr, il y a de nombreuses variations sur ce thème : certains paquets prennent en compte plus d'un chemin de recherche, certains utiliser d'autres séparateurs que le deux-points, certains accumulent plusieurs répertoires dans leur chemin de recherche, etc. Un exemple plus complexe est le chemin de recherche de libxml2 : la valeur de la variable d'environnement @env{XML_CATALOG_FILES} utilise des espaces pour séparer ses composants, elle doit contenir une liste de fichiers @file{catalog.xml} (pas des répertoires), qui doivent se trouver dans des sous-répertoires @file{xml} --- rien de moins. La spécification du chemin de recherche ressemble à ceci :

note: type: lisp
en: (package
      (name "libxml2")
      ;; some fields omitted
      (native-search-paths
       (list (search-path-specification
              (variable "XML_CATALOG_FILES")
              (separator " ")
              (files '("xml"))
              (file-pattern "^catalog\\.xml$")
              (file-type 'regular)))))
fr: (package
      (name "libxml2")
      ;; certains champs sont omis
      (native-search-paths
       (list (search-path-specification
              (variable "XML_CATALOG_FILES")
              (separator " ")
              (files '("xml"))
              (file-pattern "^catalog\\.xml$")
              (file-type 'regular)))))

note: type: Plain text
en: Worry not, search path specifications are usually not this tricky.
fr: Ne vous inquiétez pas, les spécifications de chemins de recherche ne sont généralement pas aussi complexes.

note: type: Plain text
en: The @code{(guix search-paths)} module defines the data type of search path specifications and a number of helper procedures.  Below is the reference of search path specifications.
fr: Le module @code{(guix search-paths)} défini le type de donnée des spécifications de chemins de recherche et un certain nombre de procédures auxiliaires. Vous trouverez ci-dessous la référence des spécifications de chemins de recherche.

note: type: deftp
en: {Data Type} search-path-specification
fr: {Type de données} search-path-specification

note: type: deftp
en: The data type for search path specifications.
fr: Le type de données représentant les spécifications de chemins de recherche.

note: type: table
en: The name of the environment variable for this search path (a string).
fr: le nom de la variable d'environnement pour ce chemin de recherche (une chaine).

note: type: table
en: The list of sub-directories (strings) that should be added to the search path.
fr: La liste des sous-répertoires (des chaines) qui devraient être ajoutés au chemin de recherche.

note: type: item
en: @code{separator} (default: @code{":"})
fr: @code{separator} (par défaut : @code{":"})

note: type: table
en: The string used to separate search path components.
fr: La chaine utilisée pour séparer les composants du chemin de recherche.

note: type: table
en: As a special case, a @code{separator} value of @code{#f} specifies a ``single-component search path''---in other words, a search path that cannot contain more than one element.  This is useful in some cases, such as the @code{SSL_CERT_DIR} variable (honored by OpenSSL, cURL, and a few other packages) or the @code{ASPELL_DICT_DIR} variable (honored by the GNU Aspell spell checker), both of which must point to a single directory.
fr: Un cas spécial, quand @code{separator} vaut @code{#f}, signifie qu'il n'y a « qu'un composant au chemin de recherche » --- en d'autres termes, le chemin de recherche ne peut contenir plus d'un élément. C'est utile dans certains cas, comme la variable @code{SSL_CERT_DIR} (prise en compte par OpenSSL, cURL, et quelques autres paquets) ou la variable @code{ASPELL_DICT_DIR} (prise en compte par le correcteur orthographique GNU Aspell), toutes deux devant pointer vers un unique répertoire.

note: type: item
en: @code{file-type} (default: @code{'directory})
fr: @code{file-type} (par défaut : @code{'directory})

note: type: table
en: The type of file being matched---@code{'directory} or @code{'regular}, though it can be any symbol returned by @code{stat:type} (@pxref{File System, @code{stat},, guile, GNU Guile Reference Manual}).
fr: Le type de fichier qui doit être trouvé --- @code{'directory} ou @code{'regular}, même si cela peut aussi être n'importe quel symbole renvoyé par @code{stat:type} (@pxref{File System, @code{stat},, guile, le manuel de référence de Guile}).

note: type: table
en: In the libxml2 example above, we would match regular files; in the Python example, we would match directories.
fr: Dans l'exemple libxml2 plus haut, on cherche des fichiers normaux ; dans l'exemple Python, on cherche des répertoires.

note: type: item
en: @code{file-pattern} (default: @code{#f})
fr: @code{file-pattern} (par défaut : @code{#f})

note: type: table
en: This must be either @code{#f} or a regular expression specifying files to be matched @emph{within} the sub-directories specified by the @code{files} field.
fr: Cela doit être soit @code{#f}, soit une expression régulière qui spécifie les fichiers à trouver @emph{à l'intérieur} des sous-répertoires spécifiés par le champ @code{files}.

note: type: table
en: Again, the libxml2 example shows a situation where this is needed.
fr: De nouveau, l'exemple libxml2 montre une situation où cela est nécessaire.

note: type: Plain text
en: Some search paths are not tied by a single package but to many packages.  To reduce duplications, some of them are pre-defined in @code{(guix search-paths)}.
fr: Certains chemins de recherche ne sont pas liés à une seul paquet, mais à plusieurs. Pour réduire la duplication, certains sont prédéfinis dans @code{(guix search-paths)}.

note: type: defvr
en: {Scheme Variable} $SSL_CERT_DIR
fr: {Variable Scheme} $SSL_CERT_DIR

note: type: defvrx
en: {Scheme Variable} $SSL_CERT_FILE
fr: {Variable Scheme} $SSL_CERT_FILE

note: type: defvr
en: These two search paths indicate where X.509 certificates can be found (@pxref{X.509 Certificates}).
fr: Ces deux chemins de recherche indiquent où trouver les certificats X.509 (@pxref{X.509 Certificates}).

note: type: Plain text
en: These pre-defined search paths can be used as in the following example:
fr: Ces chemins de recherche prédéfinis peuvent être utilisés comme dans l'exemple suivant :

note: type: lisp
en: (package
      (name "curl")
      ;; some fields omitted ...
      (native-search-paths (list $SSL_CERT_DIR $SSL_CERT_FILE)))
fr: (package
      (name "curl")
      ;; certains champs sont omis ...
      (native-search-paths (list $SSL_CERT_DIR $SSL_CERT_FILE)))

note: type: Plain text
en: How do you turn search path specifications on one hand and a bunch of directories on the other hand in a set of environment variable definitions? That's the job of @code{evaluate-search-paths}.
fr: Comment transformer des spécifications de chemins de recherche d'un côté en et un tas de répertoire de l'autre en un ensemble de définitions de variables d'environnement ? C'est le travail de @code{evaluate-search-paths}.

note: type: deffn
en: {Scheme Procedure} evaluate-search-paths @var{search-paths} @
fr: {Procédure Scheme} evaluate-search-paths @var{search-paths} @

note: type: deffn
en: @var{directories} [@var{getenv}] Evaluate @var{search-paths}, a list of search-path specifications, for @var{directories}, a list of directory names, and return a list of specification/value pairs.  Use @var{getenv} to determine the current settings and report only settings not already effective.
fr: @var{directories} [@var{getenv}]
    Évalue @var{search-paths}, une liste de spécifications de chemins de recherche, par rapport à @var{directories}, une liste de noms de répertoires, et renvoie une liste de paires de spécification / valeur. Utilise @var{getenv} pour déterminer les paramètres actuel et rapporter seulement les paramètres qui ne sont pas déjà en place.

note: type: Plain text
en: The @code{(guix profiles)} provides a higher-level helper procedure, @code{load-profile}, that sets the environment variables of a profile.
fr: Le module @code{(guix profiles)} fournit une procédure auxiliaire de haut-niveau, @code{load-profile}, qui met en place les variables d'environnement d'un profil.

note: type: cindex
en: store items
fr: éléments du dépôt

note: type: cindex
en: store paths
fr: chemins dans le dépôt

note: type: Plain text
en: Conceptually, the @dfn{store} is the place where derivations that have been built successfully are stored---by default, @file{/gnu/store}.  Sub-directories in the store are referred to as @dfn{store items} or sometimes @dfn{store paths}.  The store has an associated database that contains information such as the store paths referred to by each store path, and the list of @emph{valid} store items---results of successful builds.  This database resides in @file{@var{localstatedir}/guix/db}, where @var{localstatedir} is the state directory specified @i{via} @option{--localstatedir} at configure time, usually @file{/var}.
fr: Conceptuellement, le @dfn{dépôt} est l'endroit où les dérivations qui ont bien été construites sont stockées — par défaut, @file{/gnu/store}.  Les sous-répertoires dans le dépôt s'appellent des @dfn{éléments du dépôt} ou parfois des @dfn{chemins du dépôt}.  Le dépôt a une base de données associée qui contient des informations comme les chemins du dépôt auxquels se réfèrent chaque chemin du dépôt et la liste des éléments du dépôt @emph{valides} — les résultats d'une construction réussie.  Cette base de données se trouve dans @file{@var{localstatedir}/guix/db} où @var{localstatedir} est le répertoire d'états spécifié @i{via} @option {--localstatedir} à la configuration, typiquement @file{/var}.

note: type: Plain text
en: The store is @emph{always} accessed by the daemon on behalf of its clients (@pxref{Invoking guix-daemon}).  To manipulate the store, clients connect to the daemon over a Unix-domain socket, send requests to it, and read the result---these are remote procedure calls, or RPCs.
fr: C'est @emph{toujours} le démon qui accède au dépôt pour le compte de ses clients (@pxref{Invoking guix-daemon}).  Pour manipuler le dépôt, les clients se connectent au démon par un socket Unix-domain, envoient une requête dessus et lisent le résultat — ce sont des appels de procédures distantes, ou RPC.

note: type: quotation
en: Users must @emph{never} modify files under @file{/gnu/store} directly.  This would lead to inconsistencies and break the immutability assumptions of Guix's functional model (@pxref{Introduction}).
fr: Les utilisateurs ne doivent @emph{jamais} modifier les fichiers dans @file{/gnu/store} directement.  Cela entraînerait des incohérences et casserait l'hypothèse d'immutabilité du modèle fonctionnel de Guix (@pxref{Introduction}).

note: type: quotation
en: @xref{Invoking guix gc, @command{guix gc --verify}}, for information on how to check the integrity of the store and attempt recovery from accidental modifications.
fr: @xref{Invoking guix gc, @command{guix gc --verify}}, pour des informations sur la manière de vérifier l'intégrité du dépôt et d'essayer de réparer des modifications accidentelles.

note: type: Plain text
en: The @code{(guix store)} module provides procedures to connect to the daemon, and to perform RPCs.  These are described below.  By default, @code{open-connection}, and thus all the @command{guix} commands, connect to the local daemon or to the URI specified by the @env{GUIX_DAEMON_SOCKET} environment variable.
fr: Le module @code{(guix store)} fournit des procédures pour se connecter au démon et pour effectuer des RPCs.  Elles sont décrites plus bas.  Par défaut, @code{open-connection}, et donc toutes les commandes @command{guix} se connectent au démon local ou à l'URI spécifiée par la variable d'environnement @env{GUIX_DAEMON_SOCKET}.

note: type: defvr
en: {Environment Variable} GUIX_DAEMON_SOCKET
fr: {Variable d'environnement} GUIX_DAEMON_SOCKET

note: type: defvr
en: When set, the value of this variable should be a file name or a URI designating the daemon endpoint.  When it is a file name, it denotes a Unix-domain socket to connect to.  In addition to file names, the supported URI schemes are:
fr: Lorsqu'elle est initialisée, la valeur de cette variable devrait être un nom de fichier ou une URI qui désigne l'extrémité du démon.  Lorsque c'est un nom de fichier, il dénote un socket Unix-domain où se connecter.  En plus des noms de fichiers, les schémas d'URI supportés sont :

note: type: table
en: These are for Unix-domain sockets.  @code{file:///var/guix/daemon-socket/socket} is equivalent to @file{/var/guix/daemon-socket/socket}.
fr: Pour les sockets Unix-domain.  @code{file:///var/guix/daemon-socket/socket} est équivalent à @file{/var/guix/daemon-socket/socket}.

note: type: table
en: These URIs denote connections over TCP/IP, without encryption nor authentication of the remote host.  The URI must specify the host name and optionally a port number (by default port 44146 is used):
fr: Ces URI dénotent des connexions par TCP/IP, sans chiffrement ni authentification de l'hôte distant.  L'URI doit spécifier le nom d'hôte et éventuellement un numéro de port (par défaut 44146) :

note: type: table
en: This setup is suitable on local networks, such as clusters, where only trusted nodes may connect to the build daemon at @code{master.guix.example.org}.
fr: Ce paramétrage est adapté aux réseaux locaux, comme dans le cas de grappes de serveurs, où seuls des noms de confiance peuvent se connecter au démon de construction sur @code{master.guix.example.org}.

note: type: table
en: The @option{--listen} option of @command{guix-daemon} can be used to instruct it to listen for TCP connections (@pxref{Invoking guix-daemon, @option{--listen}}).
fr: L'option @code{--listen} de @command{guix-daemon} peut être utilisé pour lui dire d'écouter les connexions TCP (@pxref{Invoquer guix-daemon, @option{--listen}}).

note: type: cindex
en: SSH access to build daemons
fr: Accès SSH au démon de construction

note: type: table
en: These URIs allow you to connect to a remote daemon over SSH@.  This feature requires Guile-SSH (@pxref{Requirements}) and a working @command{guile} binary in @env{PATH} on the destination machine.  It supports public key and GSSAPI authentication.  A typical URL might look like this:
fr: Ces URI vous permettent de vous connecter à un démon distant via SSH@.  Cette fonctionnalité nécessite Guile-SSH (@pxref{Requirements}) et un binaire @command{guile} fonctionnel dans @env{PATH} sur la machine de destination.  Elle prend en charge l'authentification par clé publique et GSSAPI.  Une URL typique pourrait ressembler à ceci :

note: type: table
en: As for @command{guix copy}, the usual OpenSSH client configuration files are honored (@pxref{Invoking guix copy}).
fr: Comme pour @command{guix copy}, les fichiers de configuration du client OpenSSH sont pris en compte (@pxref{Invoking guix copy}).

note: type: defvr
en: Additional URI schemes may be supported in the future.
fr: Des schémas d'URI supplémentaires pourraient être supportés dans le futur.

note: type: quotation
en: The ability to connect to remote build daemons is considered experimental as of @value{VERSION}.  Please get in touch with us to share any problems or suggestions you may have (@pxref{Contributing}).
fr: La capacité de se connecter à un démon de construction distant est considéré comme expérimental à la version @value{VERSION}.  Contactez-nous pour partager vos problèmes ou des suggestions que vous pourriez avoir (@pxref{Contributing}).

note: type: deffn
en: {Scheme Procedure} open-connection [@var{uri}] [#:reserve-space? #t]
fr: {Procédure Scheme} open-connection [@var{uri}] [#:reserve-space? #t]

note: type: deffn
en: Connect to the daemon over the Unix-domain socket at @var{uri} (a string).  When @var{reserve-space?} is true, instruct it to reserve a little bit of extra space on the file system so that the garbage collector can still operate should the disk become full.  Return a server object.
fr: Se connecte au démon à travers le socket Unix-domain à @var{uri} (une chaîne de caractères).  Lorsque @var{reserve-space?} est vrai, cela demande de réserver un peu de place supplémentaire sur le système de fichiers pour que le ramasse-miette puisse opérer au cas où le disque serait plein.  Renvoie un objet serveur.

note: type: deffn
en: @var{file} defaults to @code{%default-socket-path}, which is the normal location given the options that were passed to @command{configure}.
fr: @var{file} prend par défaut la valeur @code{%default-socket-path}, qui est l'emplacement normal compte tenu des options qui ont été passées à @command{configure}.

note: type: deffn
en: {Scheme Procedure} close-connection @var{server}
fr: {Procédure Scheme} close-connection @var{server}

note: type: deffn
en: Close the connection to @var{server}.
fr: Ferme la connexion au @var{serveur}.

note: type: defvr
en: {Scheme Variable} current-build-output-port
fr: {Variable Scheme} current-build-output-port

note: type: defvr
en: This variable is bound to a SRFI-39 parameter, which refers to the port where build and error logs sent by the daemon should be written.
fr: Cette variable est liée à un paramètre SRFI-39, qui se réfère au port où les journaux de construction et d'erreur envoyés par le démon devraient être écrits.

note: type: Plain text
en: Procedures that make RPCs all take a server object as their first argument.
fr: Les procédures qui font des RPC prennent toutes un objet serveur comme premier argument.

note: type: deffn
en: {Scheme Procedure} valid-path? @var{server} @var{path}
fr: {Procédure Scheme} valid-path? @var{server} @var{path}

note: type: cindex
en: invalid store items
fr: éléments du dépôt invalides

note: type: deffn
en: Return @code{#t} when @var{path} designates a valid store item and @code{#f} otherwise (an invalid item may exist on disk but still be invalid, for instance because it is the result of an aborted or failed build).
fr: Renvoie @code{#t} lorsque @var{path} désigne un élément valide du dépôt et @code{#f} sinon (un élément invalide peut exister sur le disque mais être toujours invalide, par exemple parce qu'il est le résultat d'une construction avortée ou échouée).

note: type: deffn
en: A @code{&store-protocol-error} condition is raised if @var{path} is not prefixed by the store directory (@file{/gnu/store}).
fr: Une condition @code{&store-protocol-error} est levée si @var{path} n'est pas préfixée par le répertoire du dépôt (@file{/gnu/store}).

note: type: deffn
en: {Scheme Procedure} add-text-to-store @var{server} @var{name} @var{text} [@var{references}]
fr: {Procédure Scheme} add-text-to-store @var{server} @var{name} @var{text} [@var{references}]

note: type: deffn
en: Add @var{text} under file @var{name} in the store, and return its store path.  @var{references} is the list of store paths referred to by the resulting store path.
fr: Ajoute @var{text} dans le fichier @var{name} dans le dépôt et renvoie son chemin.  @var{references} est la liste des chemins du dépôt référencés par le chemin du dépôt qui en résulte.

note: type: deffn
en: {Scheme Procedure} build-derivations @var{store} @var{derivations} @
fr: {Procédure Scheme} build-derivations @var{store} @var{derivations}

note: type: deffn
en: [@var{mode}] Build @var{derivations}, a list of @code{<derivation>} objects, @file{.drv} file names, or derivation/output pairs, using the specified @var{mode}---@code{(build-mode normal)} by default.
fr: [@var{mode}] Construit @var{derivations}, une liste d'objets @code{<derivation>}, de noms de fichiers @file{.drv}, ou de paires dérivation/sortie, en utilisant le @var{mode}---@code{(build-mode normal)} spécifié par défaut.

note: type: Plain text
en: Note that the @code{(guix monads)} module provides a monad as well as monadic versions of the above procedures, with the goal of making it more convenient to work with code that accesses the store (@pxref{The Store Monad}).
fr: Remarque que le module @code{(guix monads)} fournit une monade ainsi que des version monadiques des procédures précédentes, avec le but de rendre plus facile de travailler avec le code qui accède au dépôt (@pxref{The Store Monad}).

note: type: i{#1}
en: This section is currently incomplete.
fr: Cette section est actuellement incomplète.

note: type: cindex
en: derivations
fr: dérivations

note: type: Plain text
en: Low-level build actions and the environment in which they are performed are represented by @dfn{derivations}.  A derivation contains the following pieces of information:
fr: Les actions de construction à bas-niveau et l'environnement dans lequel elles sont effectuées sont représentés par des @dfn{dérivations}.  Une dérivation contient cet ensemble d'informations :

note: type: itemize
en: The outputs of the derivation---derivations produce at least one file or directory in the store, but may produce more.
fr: Les sorties de la dérivation — les dérivations produisent au moins un fichier ou répertoire dans le dépôt, mais peuvent en produire plus.

note: type: cindex
en: build-time dependencies
fr: dépendances à la construction

note: type: cindex
en: dependencies, build-time
fr: construction, dépendances

note: type: itemize
en: The inputs of the derivations---i.e., its build-time dependencies---which may be other derivations or plain files in the store (patches, build scripts, etc.).
fr: Les entrées des dérivations - c'est-à-dire leurs dépendances de temps de construction - qui peuvent être d'autres dérivations ou des fichiers simples dans le dépôt (patchs, scripts de construction, etc.).

note: type: itemize
en: The system type targeted by the derivation---e.g., @code{x86_64-linux}.
fr: Le type de système ciblé par la dérivation — p.ex.@: @code{x86_64-linux}.

note: type: itemize
en: The file name of a build script in the store, along with the arguments to be passed.
fr: Le nom de fichier d'un script de construction dans le dépôt avec les arguments à lui passer.

note: type: itemize
en: A list of environment variables to be defined.
fr: Une liste de variables d'environnement à définir.

note: type: cindex
en: derivation path
fr: chemin de dérivation

note: type: Plain text
en: Derivations allow clients of the daemon to communicate build actions to the store.  They exist in two forms: as an in-memory representation, both on the client- and daemon-side, and as files in the store whose name end in @file{.drv}---these files are referred to as @dfn{derivation paths}.  Derivations paths can be passed to the @code{build-derivations} procedure to perform the build actions they prescribe (@pxref{The Store}).
fr: Les dérivations permettent aux client du démon de communiquer des actions de construction dans le dépôt.  Elles existent sous deux formes : en tant que représentation en mémoire, à la fois côté client et démon, et en tant que fichiers dans le dépôt dont le nom finit par @code{.drv} — on dit que ce sont des @dfn{chemins de dérivations}.  Les chemins de dérivations peuvent être passés à la procédure @code{build-derivations} pour effectuer les actions de construction qu'ils prescrivent (@pxref{The Store}).

note: type: cindex
en: fixed-output derivations
fr: dérivations à sortie fixe

note: type: Plain text
en: Operations such as file downloads and version-control checkouts for which the expected content hash is known in advance are modeled as @dfn{fixed-output derivations}.  Unlike regular derivations, the outputs of a fixed-output derivation are independent of its inputs---e.g., a source code download produces the same result regardless of the download method and tools being used.
fr: Des opérations comme le téléchargement de fichiers et la récupération de sources gérés par un logiciel de contrôle de version pour lesquels le hash du contenu est connu à l'avance sont modélisés par des @dfn{dérivations à sortie fixe}.  Contrairement aux dérivation habituelles, les sorties d'une dérivation à sortie fixe sont indépendantes de ses entrées — p.ex.@: un code source téléchargé produit le même résultat quelque soit la méthode de téléchargement utilisée.

note: type: cindex
en: run-time dependencies
fr: dépendances à l'exécution

note: type: cindex
en: dependencies, run-time
fr: exécution, dépendances

note: type: Plain text
en: The outputs of derivations---i.e., the build results---have a set of @dfn{references}, as reported by the @code{references} RPC or the @command{guix gc --references} command (@pxref{Invoking guix gc}).  References are the set of run-time dependencies of the build results.  References are a subset of the inputs of the derivation; this subset is automatically computed by the build daemon by scanning all the files in the outputs.
fr: Les sorties des dérivations — c.-à-d.@: les résultats de la construction — ont un ensemble de @dfn{références}, comme le rapporte le RPC @code{references} ou la commande @command{guix gc --references} (@pxref{Invoking guix gc}).  Les références sont l'ensemble des dépendances à l'exécution des résultats de la construction.  Les références sont un sous-ensemble des entrées de la dérivation ; ce sous-ensemble est automatiquement calculé par le démon de construction en scannant tous les fichiers dans les sorties.

note: type: Plain text
en: The @code{(guix derivations)} module provides a representation of derivations as Scheme objects, along with procedures to create and otherwise manipulate derivations.  The lowest-level primitive to create a derivation is the @code{derivation} procedure:
fr: Le module @code{(guix derivations)} fournit une représentation des dérivations comme des objets Scheme, avec des procédures pour créer et manipuler des dérivations.  La primitive de plus bas-niveau pour créer une dérivation est la procédure @code{derivation} :

note: type: deffn
en: {Scheme Procedure} derivation @var{store} @var{name} @var{builder} @
fr: {Procédure Scheme} derivation @var{store} @var{name} @var{builder} @

note: type: deffn
en: @var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:inputs '()] [#:env-vars '()] @ [#:system (%current-system)] [#:references-graphs #f] @ [#:allowed-references #f] [#:disallowed-references #f] @ [#:leaked-env-vars #f] [#:local-build? #f] @ [#:substitutable? #t] [#:properties '()] Build a derivation with the given arguments, and return the resulting @code{<derivation>} object.
fr: @var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @
    [#:recursive? #f] [#:inputs '()] [#:env-vars '()] @
    [#:system (%current-system)] [#:references-graphs #f] @
    [#:allowed-references #f] [#:disallowed-references #f] @
    [#:leaked-env-vars #f] [#:local-build? #f] @
    [#:substitutable? #t] [#:properties '()]
    Construit une dérivation avec les arguments donnés et renvoie l'objet @code{<derivation>} obtenu.

note: type: deffn
en: When @var{hash} and @var{hash-algo} are given, a @dfn{fixed-output derivation} is created---i.e., one whose result is known in advance, such as a file download.  If, in addition, @var{recursive?} is true, then that fixed output may be an executable file or a directory and @var{hash} must be the hash of an archive containing this output.
fr: Lorsque @var{hash} et @var{hash-algo} sont donnés, une @dfn{dérivation à sortie fixe} est créée — c.-à-d.@: une dérivation dont le résultat est connu à l'avance, comme dans le cas du téléchargement d'un fichier.  Si, en plus, @var{recursive?} est vrai, alors la sortie fixe peut être un fichier exécutable ou un répertoire et @var{hash} doit être le hash d'une archive contenant la sortie.

note: type: deffn
en: When @var{references-graphs} is true, it must be a list of file name/store path pairs.  In that case, the reference graph of each store path is exported in the build environment in the corresponding file, in a simple text format.
fr: Lorsque @var{references-graphs} est vrai, il doit s'agir d'une liste de paires de noms de fichiers et de chemins du dépôt.  Dans ce cas, le graphe des références de chaque chemin du dépôt est exporté dans l'environnement de construction dans le fichier correspondant, dans un simple format texte.

note: type: deffn
en: When @var{allowed-references} is true, it must be a list of store items or outputs that the derivation's output may refer to.  Likewise, @var{disallowed-references}, if true, must be a list of things the outputs may @emph{not} refer to.
fr: Lorsque @var{allowed-references} est vrai, il doit s'agir d'une liste d'éléments du dépôt ou de sorties auxquelles la sortie de la dérivations peut faire référence.  De même, @var{disallowed-references}, si vrai, doit être une liste de choses que la sortie ne doit @emph{pas} référencer.

note: type: deffn
en: When @var{leaked-env-vars} is true, it must be a list of strings denoting environment variables that are allowed to ``leak'' from the daemon's environment to the build environment.  This is only applicable to fixed-output derivations---i.e., when @var{hash} is true.  The main use is to allow variables such as @code{http_proxy} to be passed to derivations that download files.
fr: Lorsque @var{leaked-env-vars} est vrai, il doit s'agir d'une liste de chaînes de caractères qui désignent les variables d'environnements qui peuvent « fuiter » de l'environnement du démon dans l'environnement de construction.  Ce n'est possible que pour les dérivations à sortie fixe — c.-à-d.@: lorsque @var{hash} est vrai.  L'utilisation principale est de permettre à des variables comme @code{http_proxy} d'être passées aux dérivations qui téléchargent des fichiers.

note: type: deffn
en: When @var{local-build?} is true, declare that the derivation is not a good candidate for offloading and should rather be built locally (@pxref{Daemon Offload Setup}).  This is the case for small derivations where the costs of data transfers would outweigh the benefits.
fr: Lorsque @var{local-build?} est vrai, déclare que la dérivation n'est pas un bon candidat pour le déchargement et devrait plutôt être construit localement (@pxref{Daemon Offload Setup}).  C'est le cas des petites dérivations où le coût du transfert de données est plus important que les bénéfices.

note: type: deffn
en: When @var{substitutable?} is false, declare that substitutes of the derivation's output should not be used (@pxref{Substitutes}).  This is useful, for instance, when building packages that capture details of the host CPU instruction set.
fr: Lorsque que @var{substitutable?} est faux, déclare que les substituts de la sortie de la dérivation ne devraient pas être utilisés (@pxref{Substituts}). Cela est utile par exemple pour construire des paquets qui utilisent des détails du jeu d'instruction du CPU hôte.

note: type: deffn
en: @var{properties} must be an association list describing ``properties'' of the derivation.  It is kept as-is, uninterpreted, in the derivation.
fr: @var{properties} doit être une liste d'association décrivant les « propriétés » de la dérivation.  Elle est gardée telle-quelle, sans être interprétée, dans la dérivation.

note: type: Plain text
en: Here's an example with a shell script as its builder, assuming @var{store} is an open connection to the daemon, and @var{bash} points to a Bash executable in the store:
fr: Voici un exemple avec un script shell comme constructeur, en supposant que @var{store} est une connexion ouverte au démon et @var{bash} pointe vers un exécutable Bash dans le dépôt :

note: type: lisp
en: (let ((builder   ; add the Bash script to the store
            (add-text-to-store store "my-builder.sh"
                               "echo hello world > $out\n" '())))
      (derivation store "foo"
                  bash `("-e" ,builder)
                  #:inputs `((,bash) (,builder))
                  #:env-vars '(("HOME" . "/homeless"))))
    @result{} #<derivation /gnu/store/@dots{}-foo.drv => /gnu/store/@dots{}-foo>
fr: (let ((builder   ; ajoute le script Bash au dépôt
            (add-text-to-store store "my-builder.sh"
                               "echo hello world > $out\n" '())))
      (derivation store "toto"
                  bash `("-e" ,builder)
                  #:inputs `((,bash) (,builder))
                  #:env-vars '(("HOME" . "/homeless"))))
    @result{} #<derivation /gnu/store/@dots{}-toto.drv => /gnu/store/@dots{}-toto>

note: type: Plain text
en: As can be guessed, this primitive is cumbersome to use directly.  A better approach is to write build scripts in Scheme, of course! The best course of action for that is to write the build code as a ``G-expression'', and to pass it to @code{gexp->derivation}.  For more information, @pxref{G-Expressions}.
fr: Comme on pourrait s'en douter, cette primitive est difficile à utiliser directement.  Une meilleure approche est d'écrire les scripts de construction en Scheme, bien sur !  Le mieux à faire pour cela est d'écrire le code de construction comme une « G-expression » et de la passer à @code{gexp->derivation}.  Pour plus d'informations, @pxref{G-Expressions}.

note: type: Plain text
en: Once upon a time, @code{gexp->derivation} did not exist and constructing derivations with build code written in Scheme was achieved with @code{build-expression->derivation}, documented below.  This procedure is now deprecated in favor of the much nicer @code{gexp->derivation}.
fr: Il fut un temps où @code{gexp->derivation} n'existait pas et où construire une dérivation donc le code de construction était écrit en Scheme se faisait avec @code{build-expression->derivation}, documenté plus bas.  Cette procédure est maintenant obsolète, remplacée par @code{gexp->derivation} qui est meilleure.

note: type: deffn
en: {Scheme Procedure} build-expression->derivation @var{store} @
fr: {Procédure Scheme} build-expression->derivation @var{store} @

note: type: deffn
en: @var{name} @var{exp} @ [#:system (%current-system)] [#:inputs '()] @ [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ [#:references-graphs #f] [#:allowed-references #f] @ [#:disallowed-references #f] @ [#:local-build? #f] [#:substitutable? #t] [#:guile-for-build #f] Return a derivation that executes Scheme expression @var{exp} as a builder for derivation @var{name}.  @var{inputs} must be a list of @code{(name drv-path sub-drv)} tuples; when @var{sub-drv} is omitted, @code{"out"} is assumed.  @var{modules} is a list of names of Guile modules from the current search path to be copied in the store, compiled, and made available in the load path during the execution of @var{exp}---e.g., @code{((guix build utils) (guix build gnu-build-system))}.
fr: @var{name} @var{exp} @
    [#:system (%current-system)] [#:inputs '()] @
    [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @
    [#:recursive? #f] [#:env-vars '()] [#:modules '()] @
    [#:references-graphs #f] [#:allowed-references #f] @
    [#:disallowed-references #f] @
    [#:local-build? #f] [#:substitutable? #t] [#:guile-for-build #f]
    Renvoie une dérivation qui exécute l'expression Scheme @var{exp} comme un constructeur pour la dérivation @var{name}.  @var{inputs} doit être une liste de tuples @code{(name drv-path sub-drv)} ; lorsque @var{sub-drv} est omis, @code{"out"} est utilisé.  @var{modules} est une liste de noms de modules Guile du chemin de recherche actuel qui seront copiés dans le dépôt, compilés et rendus disponibles dans le chemin de chargement pendant l'exécution de @var{exp} — p.@: ex.@: @code{((guix build utils) (guix build gnu-build-system))}.

note: type: deffn
en: @var{exp} is evaluated in an environment where @code{%outputs} is bound to a list of output/path pairs, and where @code{%build-inputs} is bound to a list of string/output-path pairs made from @var{inputs}.  Optionally, @var{env-vars} is a list of string pairs specifying the name and value of environment variables visible to the builder.  The builder terminates by passing the result of @var{exp} to @code{exit}; thus, when @var{exp} returns @code{#f}, the build is considered to have failed.
fr: @var{exp} est évaluée dans une environnement où @code{%outputs} est lié à une liste de paires de sortie/chemin, et où @code{%build-inputs} est lié à une liste de paires de chaînes de caractères et de chemin de sortie construite à partir de @var{inputs}.  Éventuellement, @var{env-vars} est une liste de paires de chaînes de caractères spécifiant le nom et la valeur de variables d'environnement visibles pour le constructeur.  Le constructeur termine en passant le résultat de @var{exp} à @code{exit} ; ainsi, lorsque @var{exp} renvoie @code{#f}, la construction est considérée en échec.

note: type: deffn
en: @var{exp} is built using @var{guile-for-build} (a derivation).  When @var{guile-for-build} is omitted or is @code{#f}, the value of the @code{%guile-for-build} fluid is used instead.
fr: @var{exp} est construite avec @var{guile-for-build} (une dérivation).  Lorsque @var{guile-for-build} est omis où est @code{#f}, la valeur du fluide @code{%guile-for-build} est utilisée à la place.

note: type: deffn
en: See the @code{derivation} procedure for the meaning of @var{references-graphs}, @var{allowed-references}, @var{disallowed-references}, @var{local-build?}, and @var{substitutable?}.
fr: Voir la procédure @code{derivation} pour la signification de @var{references-graph}, @var{allowed-references}, @var{disallowed-references}, @var{local-build?} et @var{substitutable?}.

note: type: Plain text
en: Here's an example of a single-output derivation that creates a directory containing one file:
fr: Voici un exemple de dérivation à sortie unique qui crée un répertoire avec un fichier :

note: type: cindex
en: monad
fr: monade

note: type: Plain text
en: The procedures that operate on the store described in the previous sections all take an open connection to the build daemon as their first argument.  Although the underlying model is functional, they either have side effects or depend on the current state of the store.
fr: Les procédures qui travaillent sur le dépôt décrites dans les sections précédentes prennent toutes une connexion ouverte au démon de construction comme premier argument.  Bien que le modèle sous-jacent soit fonctionnel, elles ont soit des effets de bord, soit dépendent de l'état actuel du dépôt.

note: type: Plain text
en: The former is inconvenient: the connection to the build daemon has to be carried around in all those functions, making it impossible to compose functions that do not take that parameter with functions that do.  The latter can be problematic: since store operations have side effects and/or depend on external state, they have to be properly sequenced.
fr: Le premier point est embêtant : on doit se balader avec la connexion au démon dans toutes ces fonctions, ce qui rend impossible le fait de composer des fonctions qui ne prennent pas ce paramètre avec des fonctions qui le prennent.  Le deuxième point est problématique : comme les opérations sur le dépôt ont des effets de bord ou dépendent d'états externes, elles doivent être enchaînés correctement.

note: type: cindex
en: monadic values
fr: valeurs monadiques

note: type: cindex
en: monadic functions
fr: fonctions monadiques

note: type: Plain text
en: This is where the @code{(guix monads)} module comes in.  This module provides a framework for working with @dfn{monads}, and a particularly useful monad for our uses, the @dfn{store monad}.  Monads are a construct that allows two things: associating ``context'' with values (in our case, the context is the store), and building sequences of computations (here computations include accesses to the store).  Values in a monad---values that carry this additional context---are called @dfn{monadic values}; procedures that return such values are called @dfn{monadic procedures}.
fr: C'est là que le module @code{(guix monads)} arrive à la rescousse.  Ce module fournit un cadre pour travailler avec des @dfn{monads}, en particulier une monade très utile pour notre usage, la @dfn{monade du dépôt}.  Les monades sont des constructions qui permettent deux choses : associer un « contexte » avec une valeur (dans notre cas, le contexte est le dépôt) et construire une séquence de calculs (ici les calculs comprennent des accès au dépôt).  Les valeurs dans une monade — les valeurs qui contiennent ce contexte supplémentaire — sont appelées des @dfn{valeurs monadiques} ; les procédures qui renvoient ce genre de valeur sont appelées des @dfn{procédures monadiques}.

note: type: Plain text
en: Consider this ``normal'' procedure:
fr: Considérez cette procédure « normale » :

note: type: lisp
en: (define (sh-symlink store)
      ;; Return a derivation that symlinks the 'bash' executable.
      (let* ((drv (package-derivation store bash))
             (out (derivation->output-path drv))
             (sh  (string-append out "/bin/bash")))
        (build-expression->derivation store "sh"
                                      `(symlink ,sh %output))))
fr: (define (sh-symlink store)
      ;; Renvoie une dérivation qui crée un lien symbolique vers l'exécutable « bash ».
      (let* ((drv (package-derivation store bash))
             (out (derivation->output-path drv))
             (sh  (string-append out "/bin/bash")))
        (build-expression->derivation store "sh"
                                      `(symlink ,sh %output))))

note: type: Plain text
en: Using @code{(guix monads)} and @code{(guix gexp)}, it may be rewritten as a monadic function:
fr: En utilisant @code{(guix monads)} et @code{(guix gexp)}, on peut la réécrire en une fonction monadique :

note: type: lisp
en: (define (sh-symlink)
      ;; Same, but return a monadic value.
      (mlet %store-monad ((drv (package->derivation bash)))
        (gexp->derivation "sh"
                          #~(symlink (string-append #$drv "/bin/bash")
                                     #$output))))
fr: (define (sh-symlink)
      ;; Pareil, mais renvoie une valeur monadique.
      (mlet %store-monad ((drv (package->derivation bash)))
        (gexp->derivation "sh"
                          #~(symlink (string-append #$drv "/bin/bash")
                                     #$output))))

note: type: Plain text
en: There are several things to note in the second version: the @code{store} parameter is now implicit and is ``threaded'' in the calls to the @code{package->derivation} and @code{gexp->derivation} monadic procedures, and the monadic value returned by @code{package->derivation} is @dfn{bound} using @code{mlet} instead of plain @code{let}.
fr: Il y a plusieurs choses à remarquer avec cette deuxième version : le paramètre @code{store} est maintenant implicitement « enfilé » dans les appels aux procédures monadiques @code{package->derivation} et @code{gexp->derivation}, et la valeur monadique renvoyée par @code{package->derivation} est @dfn{liée} avec @code{mlet} plutôt qu'avec un simple @code{let}.

note: type: Plain text
en: As it turns out, the call to @code{package->derivation} can even be omitted since it will take place implicitly, as we will see later (@pxref{G-Expressions}):
fr: Il se trouve que l'appel à @code{package->derivation} peut même être omis puisqu'il aura lieu implicitement, comme nous le verrons plus tard (@pxref{G-Expressions}) :

note: type: Plain text
en: Calling the monadic @code{sh-symlink} has no effect.  As someone once said, ``you exit a monad like you exit a building on fire: by running''.  So, to exit the monad and get the desired effect, one must use @code{run-with-store}:
fr: L'appel à la procédure monadique @code{sh-symlink} n'a aucun effet.  Comme on pourrait le dire, « on sort d'une monade comme de la monarchie : en l'exécutant »@footnote{NdT : il y a là un jeu de mot en anglais qui se base sur un double sens de « run », qui peut se traduire par « exécuter » dans ce contexte.}. Donc, pour sortir de la monade et obtenir l'effet escompté, on doit utiliser @code{run-with-store} :

note: type: Plain text
en: Note that the @code{(guix monad-repl)} module extends the Guile REPL with new ``commands'' to make it easier to deal with monadic procedures: @code{run-in-store}, and @code{enter-store-monad} (@pxref{Using Guix Interactively}).  The former is used to ``run'' a single monadic value through the store:
fr: Remarquez que le module @code{(guix monad-repl)} étend la console Guile avec de nouvelles « commandes » pour rendre plus facile la manipulation de procédures monadiques : @code{run-in-store} et @code{enter-store-monad} (@pxref{Using Guix Interactively}).  La première est utilisée pour « lancer » une seule valeur monadique à travers le dépôt :

note: type: Plain text
en: The latter enters a recursive REPL, where all the return values are automatically run through the store:
fr: La deuxième entre dans une console récursive, où toutes les valeurs de retour sont automatiquement lancées à travers le dépôt :

note: type: example
en: scheme@@(guile-user)> ,enter-store-monad
    store-monad@@(guile-user) [1]> (package->derivation hello)
    $2 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}>
    store-monad@@(guile-user) [1]> (text-file "foo" "Hello!")
    $3 = "/gnu/store/@dots{}-foo"
    store-monad@@(guile-user) [1]> ,q
    scheme@@(guile-user)>
fr: scheme@@(guile-user)> ,enter-store-monad
    store-monad@@(guile-user) [1]> (package->derivation hello)
    $2 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}>
    store-monad@@(guile-user) [1]> (text-file "toto" "Hello!")
    $3 = "/gnu/store/@dots{}-toto"
    store-monad@@(guile-user) [1]> ,q
    scheme@@(guile-user)>

note: type: Plain text
en: Note that non-monadic values cannot be returned in the @code{store-monad} REPL.
fr: Remarquez qu'on ne peut pas renvoyer de valeur non monadique dans la console @code{store-monad}.

note: type: Plain text
en: Other meta-commands are available at the REPL, such as @code{,build} to build a file-like object (@pxref{Using Guix Interactively}).
fr: D'autres méta-commandes sont disponibles sur la REPL, comme @code{,build} pour construire un objet simili-fichier (@pxref{Using Guix Interactively}).

note: type: Plain text
en: The main syntactic forms to deal with monads in general are provided by the @code{(guix monads)} module and are described below.
fr: Les formes syntaxiques principales pour utiliser des monades en général sont disponibles dans le module @code{(guix monads)} et sont décrites ci-dessous.

note: type: deffn
en: {Scheme Syntax} with-monad @var{monad} @var{body} ...
fr: {Syntaxe Scheme} with-monad @var{monad} @var{body} ...

note: type: deffn
en: Evaluate any @code{>>=} or @code{return} forms in @var{body} as being in @var{monad}.
fr: Évalue n'importe quelle forme @code{>>=} ou @code{return} dans @var{body} comme une @var{monad}.

note: type: deffn
en: {Scheme Syntax} return @var{val}
fr: {Syntaxe Scheme} return @var{val}

note: type: deffn
en: Return a monadic value that encapsulates @var{val}.
fr: Renvoie une valeur monadique qui encapsule @var{val}.

note: type: deffn
en: {Scheme Syntax} >>= @var{mval} @var{mproc} ...
fr: {Syntaxe Scheme} >>= @var{mval} @var{mproc} ...

note: type: deffn
en: @dfn{Bind} monadic value @var{mval}, passing its ``contents'' to monadic procedures @var{mproc}@dots{}@footnote{This operation is commonly referred to as ``bind'', but that name denotes an unrelated procedure in Guile.  Thus we use this somewhat cryptic symbol inherited from the Haskell language.}.  There can be one @var{mproc} or several of them, as in this example:
fr: @dfn{Lie} une valeur monadique @var{mval}, en passant son « contenu » aux procédures monadiques @var{mproc}@dots{}@footnote{Cette opération est souvent appelée « bind », mais ce nom dénote une procédure qui n'a rien à voir en Guile.  Ainsi, nous empruntons ce symbole quelque peu cryptique au langage Haskell}.  Il peut y avoir une ou plusieurs @code{mproc}, comme dans cet exemple :

note: type: deffn
en: {Scheme Syntax} mlet @var{monad} ((@var{var} @var{mval}) ...) @
fr: {Syntaxe Scheme} mlet @var{monad} ((@var{var} @var{mval}) ...) @

note: type: deffnx
en: {Scheme Syntax} mlet* @var{monad} ((@var{var} @var{mval}) ...) @
fr: {Syntaxe Scheme} mlet* @var{monad} ((@var{var} @var{mval}) ...) @

note: type: deffn
en: @var{body} ...  Bind the variables @var{var} to the monadic values @var{mval} in @var{body}, which is a sequence of expressions.  As with the bind operator, this can be thought of as ``unpacking'' the raw, non-monadic value ``contained'' in @var{mval} and making @var{var} refer to that raw, non-monadic value within the scope of the @var{body}.  The form (@var{var} -> @var{val}) binds @var{var} to the ``normal'' value @var{val}, as per @code{let}.  The binding operations occur in sequence from left to right.  The last expression of @var{body} must be a monadic expression, and its result will become the result of the @code{mlet} or @code{mlet*} when run in the @var{monad}.
fr: @var{body} ...
    Lie les variables @var{var} aux valeurs monadiques @var{mval} dans @var{body}, une séquence d'expressions.  Comme avec l'opérateur de liaison, on peut réfléchir comme si on « ouvrait » la valeur non-monadique « contenue » dans @var{mval} et comme si on faisait en sorte que @var{var} se réfère à cette valeur pure, non-monadique, dans la portée de @var{body}.  La forme (@var{var} -> @var{val}) lie @var{var} à la valeur « normale » @var{val}, comme @code{let}.  L'opération de liaison a lieu en séquence de la gauche vers la droite.  La dernière expression de @var{body} doit être une expression monadique et son résultat deviendra le résultat de @code{mlet} ou @code{mlet*} lorsque lancé dans la @var{monad}.

note: type: deffn
en: @code{mlet*} is to @code{mlet} what @code{let*} is to @code{let} (@pxref{Local Bindings,,, guile, GNU Guile Reference Manual}).
fr: @code{mlet*} est à @code{mlet} ce que @code{let*} est à @code{let} (@pxref{Local Bindings,,, guile, GNU Guile Reference Manual}).

note: type: deffn
en: {Scheme System} mbegin @var{monad} @var{mexp} ...
fr: {Système Scheme} mbegin @var{monad} @var{mexp} ...

note: type: deffn
en: Bind @var{mexp} and the following monadic expressions in sequence, returning the result of the last expression.  Every expression in the sequence must be a monadic expression.
fr: Lie @var{mexp} et les expressions monadiques suivantes en séquence, et renvoie le résultat de la dernière expression.  Chaque expression dans la séquence doit être une expression monadique.

note: type: deffn
en: This is akin to @code{mlet}, except that the return values of the monadic expressions are ignored.  In that sense, it is analogous to @code{begin}, but applied to monadic expressions.
fr: Cette procédure est similaire à @code{mlet}, sauf que les valeurs de retour des expressions monadiques sont ignorées.  Dans ce sens, elle est analogue à @code{begin}, mais appliqué à des expressions monadiques.

note: type: deffn
en: {Scheme System} mwhen @var{condition} @var{mexp0} @var{mexp*} ...
fr: {Système Scheme} mwhen @var{condition} @var{mexp0} @var{mexp*} ...

note: type: deffn
en: When @var{condition} is true, evaluate the sequence of monadic expressions @var{mexp0}..@var{mexp*} as in an @code{mbegin}.  When @var{condition} is false, return @code{*unspecified*} in the current monad.  Every expression in the sequence must be a monadic expression.
fr: Lorsque la @var{condition} est vraie, évalue la séquence des expressions monadiques @var{mexp0}..@var{mexp*} comme dans un @code{mbegin}.  Lorsque la @var{condition} est fausse, renvoie @code{*unspecified*} dans la monade actuelle.  Chaque expression dans la séquence doit être une expression monadique.

note: type: deffn
en: {Scheme System} munless @var{condition} @var{mexp0} @var{mexp*} ...
fr: {Système Scheme} munless @var{condition} @var{mexp0} @var{mexp*} ...

note: type: deffn
en: When @var{condition} is false, evaluate the sequence of monadic expressions @var{mexp0}..@var{mexp*} as in an @code{mbegin}.  When @var{condition} is true, return @code{*unspecified*} in the current monad.  Every expression in the sequence must be a monadic expression.
fr: Lorsque la @var{condition} est fausse, évalue la séquence des expressions monadiques @var{mexp0}..@var{mexp*} comme dans un @code{mbegin}.  Lorsque la @var{condition} est vraie, renvoie @code{*unspecified*} dans la monade actuelle.  Chaque expression dans la séquence doit être une expression monadique.

note: type: cindex
en: state monad
fr: monade d'état

note: type: Plain text
en: The @code{(guix monads)} module provides the @dfn{state monad}, which allows an additional value---the state---to be @emph{threaded} through monadic procedure calls.
fr: Le module @code{(guix monads)} fournit la @dfn{monade d'état} qui permet à une valeur supplémentaire — l'état — d'être enfilée à travers les appels de procédures.

note: type: defvr
en: {Scheme Variable} %state-monad
fr: {Variable Scheme} %state-monad

note: type: defvr
en: The state monad.  Procedures in the state monad can access and change the state that is threaded.
fr: La monade d'état.  les procédure dans la monade d'état peuvent accéder et modifier l'état qui est enfilé.

note: type: defvr
en: Consider the example below.  The @code{square} procedure returns a value in the state monad.  It returns the square of its argument, but also increments the current state value:
fr: Considérez l'exemple ci-dessous.  La procédure @code{square} renvoie une valeur dans la monade d'état.  Elle renvoie le carré de son argument, mais incrémente aussi la valeur actuelle de l'état :

note: type: defvr
en: When ``run'' through @code{%state-monad}, we obtain that additional state value, which is the number of @code{square} calls.
fr: Lorsque c'est « lancé » à travers @code{%state-monad}, nous obtenons cette valeur d'état supplémentaire, qui est le nombre d'appels au @code{square}.

note: type: deffn
en: {Monadic Procedure} current-state
fr: {Procédure monadique} current-state

note: type: deffn
en: Return the current state as a monadic value.
fr: Renvoie l'état actuel dans une valeur monadique.

note: type: deffn
en: {Monadic Procedure} set-current-state @var{value}
fr: {Procédure monadique} set-current-state @var{value}

note: type: deffn
en: Set the current state to @var{value} and return the previous state as a monadic value.
fr: Initialise l'état actuel à @var{value} et renvoie l'état précédent dans une valeur monadique.

note: type: deffn
en: {Monadic Procedure} state-push @var{value}
fr: {Procédure monadique} state-push @var{value}

note: type: deffn
en: Push @var{value} to the current state, which is assumed to be a list, and return the previous state as a monadic value.
fr: Pousse @var{value} sur l'état actuel, qui est supposé être une liste, et renvoie l'état précédent dans une valeur monadique.

note: type: deffn
en: {Monadic Procedure} state-pop
fr: {Procédure monadique} state-pop

note: type: deffn
en: Pop a value from the current state and return it as a monadic value.  The state is assumed to be a list.
fr: Récupère (pop) une valeur dans l'état actuel et la renvoie comme une valeur monadique.  L'état est supposé être une liste.

note: type: deffn
en: {Scheme Procedure} run-with-state @var{mval} [@var{state}]
fr: {Procédure Scheme} run-with-state @var{mval} [@var{state}]

note: type: deffn
en: Run monadic value @var{mval} starting with @var{state} as the initial state.  Return two values: the resulting value, and the resulting state.
fr: Lance la valeur monadique @var{mval} avec @var{state} comme valeur initiale.  Renvoie deux valeurs : la valeur du résultat et l'état du résultat.

note: type: Plain text
en: The main interface to the store monad, provided by the @code{(guix store)} module, is as follows.
fr: L'interface principale avec la monade du dépôt, fournit par le module @code{(guix store)}, est la suivante.

note: type: defvr
en: {Scheme Variable} %store-monad
fr: {Variable Scheme} %store-monad

note: type: defvr
en: The store monad---an alias for @code{%state-monad}.
fr: La monade du dépôt — un alias pour @code{%state-monad}.

note: type: defvr
en: Values in the store monad encapsulate accesses to the store.  When its effect is needed, a value of the store monad must be ``evaluated'' by passing it to the @code{run-with-store} procedure (see below).
fr: Les valeurs dans la monade du dépôt encapsulent les accès vers le dépôt.  Lorsque son effet est nécessaire, une valeur de la monade du dépôt doit être « évaluée » en la passant à la procédure @code{run-with-store} (voir ci-dessous).

note: type: deffn
en: {Scheme Procedure} run-with-store @var{store} @var{mval} [#:guile-for-build] [#:system (%current-system)]
fr: {Procédure Scheme} run-with-store @var{store} @var{mval} [#:guile-for-build] [#:system (%current-system)]

note: type: deffn
en: Run @var{mval}, a monadic value in the store monad, in @var{store}, an open store connection.
fr: Lance @var{mval}, une valeur monadique dans la monade du dépôt, dans @var{store}, une connexion ouvert au dépôt.

note: type: deffn
en: {Monadic Procedure} text-file @var{name} @var{text} [@var{references}]
fr: {Procédure monadique} text-file @var{name} @var{text} [@var{references}]

note: type: deffn
en: Return as a monadic value the absolute file name in the store of the file containing @var{text}, a string.  @var{references} is a list of store items that the resulting text file refers to; it defaults to the empty list.
fr: Renvoie une valeur monadique correspondant au nom de fichier dans le dépôt du fichier contenant @var{text}, une chaîne de caractères.  @var{references} est une liste d'éléments du dépôt auxquels le fichier texte en résultat se réfère ; c'est la liste vide par défaut.

note: type: deffn
en: {Monadic Procedure} binary-file @var{name} @var{data} [@var{references}]
fr: {Procédure monadique} binary-file @var{name} @var{data} [@var{references}]

note: type: deffn
en: Return as a monadic value the absolute file name in the store of the file containing @var{data}, a bytevector.  @var{references} is a list of store items that the resulting binary file refers to; it defaults to the empty list.
fr: Renvoie une valeur monadique correspondant au nom de fichier absolu dans le dépôt du fichier contenant @var{data}, un vecteur d'octets.  @var{references} est une liste d'éléments du dépôt auxquels le fichier binaire en résultat se réfère ; c'est la liste vide par défaut.

note: type: deffn
en: {Monadic Procedure} interned-file @var{file} [@var{name}] @
fr: {Procédure monadique} interned-file @var{file} [@var{name}] @

note: type: deffn
en: [#:recursive? #t] [#:select? (const #t)] Return the name of @var{file} once interned in the store.  Use @var{name} as its store name, or the basename of @var{file} if @var{name} is omitted.
fr: [#:recursive? #t] [#:select? (const #t)]
    Renvoie le nom de @var{file} une fois ajouté au dépôt.  Utilise @var{name} comme nom dans le dépôt ou le nom de fichier de @var{file} si @var{name} est omis.

note: type: deffn
en: When @var{recursive?} is true, the contents of @var{file} are added recursively; if @var{file} designates a flat file and @var{recursive?} is true, its contents are added, and its permission bits are kept.
fr: Lorsque @var{recursive?} est vraie, le contenu de @var{file} est ajouté récursivement ; si @var{file} désigne un fichier simple et que @var{recursive?} est vrai, son contenu est ajouté et ses bits de permissions sont préservés.

note: type: deffn
en: When @var{recursive?} is true, call @code{(@var{select?} @var{file} @var{stat})} for each directory entry, where @var{file} is the entry's absolute file name and @var{stat} is the result of @code{lstat}; exclude entries for which @var{select?} does not return true.
fr: Lorsque @var{recursive?} est vraie, appelle @code{(@var{select?} @var{file} @var{stat})} pour chaque répertoire où @var{file} est le nom de fichier absolu de l'entrée et @var{stat} est le résultat de @code{lstat} ; à l'exception des entrées pour lesquelles @var{select?} ne renvoie pas vrai.

note: type: deffn
en: The example below adds a file to the store, under two different names:
fr: L'exemple ci-dessous ajoute un fichier au dépôt, sous deux noms différents :

note: type: Plain text
en: The @code{(guix packages)} module exports the following package-related monadic procedures:
fr: Le module @code{(guix packages)} exporte les procédures monadiques liées aux paquets suivantes :

note: type: deffn
en: {Monadic Procedure} package-file @var{package} [@var{file}] @
fr: {Procédure monadique} package-file @var{package} [@var{file}] @

note: type: deffn
en: [#:system (%current-system)] [#:target #f] @ [#:output "out"] Return as a monadic value in the absolute file name of @var{file} within the @var{output} directory of @var{package}.  When @var{file} is omitted, return the name of the @var{output} directory of @var{package}.  When @var{target} is true, use it as a cross-compilation target triplet.
fr: [#:system (%current-system)] [#:target #f] @
    [#:output "out"]
    Renvoie une valeur monadique qui contient le nom de fichier absolu de @var{file} dans le répertoire @var{output} de @var{package}.  Lorsque @var{file} est omis, renvoie le nom du répertoire @var{output} de @var{package}.  Lorsque @var{target} est vrai, l'utilise comme un triplet de cible pour la compilation croisée.

note: type: deffn
en: Note that this procedure does @emph{not} build @var{package}.  Thus, the result might or might not designate an existing file.  We recommend not using this procedure unless you know what you are doing.
fr: Notez que cette procédure ne permet @emph{pas} de construire @var{package}.  Ainsi, le résultat peut ou non désigner un fichier existant.  Nous vous recommandons de ne pas utiliser cette procédure si vous ne savez pas ce que vous faites.

note: type: deffn
en: {Monadic Procedure} package->derivation @var{package} [@var{system}]
fr: {Procédure monadique} package->derivation @var{package} [@var{system}]

note: type: deffnx
en: {Monadic Procedure} package->cross-derivation @var{package} @
fr: {Procédure monadique} package->cross-derivation @var{package} @

note: type: deffn
en: @var{target} [@var{system}] Monadic version of @code{package-derivation} and @code{package-cross-derivation} (@pxref{Defining Packages}).
fr: @var{target} [@var{system}]
    Version monadique de @code{package-derivation} et @code{package-cross-derivation} (@pxref{Defining Packages}).

note: type: cindex
en: build code quoting
fr: quoting du code de construction

note: type: Plain text
en: So we have ``derivations'', which represent a sequence of build actions to be performed to produce an item in the store (@pxref{Derivations}).  These build actions are performed when asking the daemon to actually build the derivations; they are run by the daemon in a container (@pxref{Invoking guix-daemon}).
fr: On a donc des « dérivations » qui représentent une séquence d'actions de construction à effectuer pour produire un élément du dépôt (@pxref{Derivations}).  Ces actions de construction sont effectuées lorsqu'on demande au démon de construire effectivement les dérivations ; elles sont lancées par le démon dans un conteneur (@pxref{Invoking guix-daemon}).

note: type: cindex
en: strata of code
fr: strate de code

note: type: Plain text
en: It should come as no surprise that we like to write these build actions in Scheme.  When we do that, we end up with two @dfn{strata} of Scheme code@footnote{The term @dfn{stratum} in this context was coined by Manuel Serrano et al.@: in the context of their work on Hop.  Oleg Kiselyov, who has written insightful @url{http://okmij.org/ftp/meta-programming/#meta-scheme, essays and code on this topic}, refers to this kind of code generation as @dfn{staging}.}: the ``host code''---code that defines packages, talks to the daemon, etc.---and the ``build code''---code that actually performs build actions, such as making directories, invoking @command{make}, and so on (@pxref{Build Phases}).
fr: Ça ne devrait pas vous surprendre, mais nous aimons écrire ces actions de construction en Scheme.  Lorsqu'on fait ça, on fini avec deux @dfn{strates} de code Scheme@footnote{Le terme de @dfn{strate} dans ce contexte a été inventé par Manuel Serrano et ses collègues dans le contexte de leurs travaux sur Hop.  Oleg Kiselyov, qui a écrit des @url{http://okmij.org/ftp/meta-programming/#meta-scheme, essais perspicaces ainsi que du code sur le sujet}, utilise le terme de « mise en scène » pour ce genre de génération de code.} : le « code hôte » — le code qui définit les paquets, parle au démon, etc.@: — et le « code côté construction » — le code qui effectue effectivement les actions de construction, comme créer des répertoires, invoquer @code{make}, etc. (@pxref{Build Phases}).

note: type: Plain text
en: To describe a derivation and its build actions, one typically needs to embed build code inside host code.  It boils down to manipulating build code as data, and the homoiconicity of Scheme---code has a direct representation as data---comes in handy for that.  But we need more than the normal @code{quasiquote} mechanism in Scheme to construct build expressions.
fr: Pour décrire une dérivation et ses actions de construction, on a typiquement besoin d'intégrer le code de construction dans le code hôte.  Ça revient à manipuler le code de construction comme de la donnée, et l'homoiconicité de Scheme — le code a une représentation directe en tant que donnée — est très utile pour cela.  Mais on a besoin de plus que le mécanisme de @code{quasiquote} en Scheme pour construire des expressions de construction.

note: type: Plain text
en: The @code{(guix gexp)} module implements @dfn{G-expressions}, a form of S-expressions adapted to build expressions.  G-expressions, or @dfn{gexps}, consist essentially of three syntactic forms: @code{gexp}, @code{ungexp}, and @code{ungexp-splicing} (or simply: @code{#~}, @code{#$}, and @code{#$@@}), which are comparable to @code{quasiquote}, @code{unquote}, and @code{unquote-splicing}, respectively (@pxref{Expression Syntax, @code{quasiquote},, guile, GNU Guile Reference Manual}).  However, there are major differences:
fr: Le module @code{(guix gexp)} implémente les @dfn{G-expressions}, une forme de S-expression adaptée aux expressions de construction.  Les G-expression, ou @dfn{gexps}, consistent en gros en trois formes syntaxiques : @code{gexp}, @code{ungexp} et @code{ungexp-splicing} (ou plus simplement : @code{#~}, @code{#$} et @code{#$@@}), qui sont comparable à @code{quasiquote}, @code{unquote} et @code{unquote-splicing} respectivement (@pxref{Expression Syntax, @code{quasiquote},, guile, GNU Guile Reference Manual}).  Cependant il y a des différences majeures :

note: type: itemize
en: Gexps are meant to be written to a file and run or manipulated by other processes.
fr: Les Gexps sont conçues pour être écrites dans un fichier et être lancées ou manipulées par d'autres processus.

note: type: itemize
en: When a high-level object such as a package or derivation is unquoted inside a gexp, the result is as if its output file name had been introduced.
fr: Lorsqu'un objet de haut-niveau comme un paquet ou une dérivation est unquotée dans une gexp, le résultat est comme si le nom de fichier de son résultat avait été introduit.

note: type: itemize
en: Gexps carry information about the packages or derivations they refer to, and these dependencies are automatically added as inputs to the build processes that use them.
fr: Les gexps transportent des informations sur les paquets ou les dérivations auxquels elles se réfèrent, et ces dépendances sont automatiquement ajoutées comme des entrées du processus de construction qui les utilise.

note: type: cindex
en: lowering, of high-level objects in gexps
fr: abaissement, des objets haut-niveau dans les gexps

note: type: Plain text
en: This mechanism is not limited to package and derivation objects: @dfn{compilers} able to ``lower'' other high-level objects to derivations or files in the store can be defined, such that these objects can also be inserted into gexps.  For example, a useful type of high-level objects that can be inserted in a gexp is ``file-like objects'', which make it easy to add files to the store and to refer to them in derivations and such (see @code{local-file} and @code{plain-file} below).
fr: Ce mécanisme n'est pas limité aux paquets et aux objets de dérivation : Des @dfn{compilateurs} capables d' « abaisser » d'autres objets de haut niveau vers des dérivations ou des fichiers dans le dépôt peuvent être définis, de sorte que ces objets peuvent également être insérés dans des gexps.  Par exemple, un type utile d'objets de haut niveau pouvant être insérés dans un gexp est celui des « objets de type fichier », qui permettent d'ajouter facilement des fichiers au dépôt et d'y faire référence dans des dérivations et autres (voir @code{local-file} et @code{plain-file} ci-dessous).

note: type: Plain text
en: To illustrate the idea, here is an example of a gexp:
fr: Pour illustrer cette idée, voici un exemple de gexp :

note: type: Plain text
en: This gexp can be passed to @code{gexp->derivation}; we obtain a derivation that builds a directory containing exactly one symlink to @file{/gnu/store/@dots{}-coreutils-8.22/bin/ls}:
fr: Cette gexp peut être passée à @code{gexp->derivation} ; on obtient une dérivation qui construit un répertoire contenant exactement un lien symbolique à @file{/gnu/store/@dots{}-coreutils-8.22/bin/ls} :

note: type: Plain text
en: As one would expect, the @code{"/gnu/store/@dots{}-coreutils-8.22"} string is substituted to the reference to the @var{coreutils} package in the actual build code, and @var{coreutils} is automatically made an input to the derivation.  Likewise, @code{#$output} (equivalent to @code{(ungexp output)}) is replaced by a string containing the directory name of the output of the derivation.
fr: Comme on pourrait s'y attendre, la chaîne @code{"/gnu/store/@dots{}-coreutils-8.22"} est substituée à la place de la référence au paquet @var{coreutils} dans le code de construction final, et @var{coreutils} est automatiquement devenu une entrée de la dérivation.  De même, @code{#$output} (équivalent à @code{(ungexp output)}) est remplacé par une chaîne de caractères contenant le nom du répertoire de la sortie de la dérivation.

note: type: cindex
en: cross compilation
fr: compilation croisée

note: type: Plain text
en: In a cross-compilation context, it is useful to distinguish between references to the @emph{native} build of a package---that can run on the host---versus references to cross builds of a package.  To that end, the @code{#+} plays the same role as @code{#$}, but is a reference to a native package build:
fr: Dans le contexte d'une compilation croisée, il est utile de distinguer entre des références à la construction @emph{native} d'un paquet — qui peut être lancé par l'hôte — et des références à la construction croisée d'un paquet.  Pour cela, @code{#+} joue le même rôle que @code{#$}, mais référence une construction native d'un paquet :

note: type: Plain text
en: In the example above, the native build of @var{coreutils} is used, so that @command{ln} can actually run on the host; but then the cross-compiled build of @var{emacs} is referenced.
fr: Dans l'exemple ci-dessus, la construction native de @var{coreutils} est utilisée, pour que @command{ln} puisse effectivement être lancé sur l'hôte ; mais ensuite la construction croisée d'@var{emacs} est utilisée.

note: type: cindex
en: imported modules, for gexps
fr: modules importés, pour les gexps

note: type: Plain text
en: Another gexp feature is @dfn{imported modules}: sometimes you want to be able to use certain Guile modules from the ``host environment'' in the gexp, so those modules should be imported in the ``build environment''.  The @code{with-imported-modules} form allows you to express that:
fr: Une autre fonctionnalité, ce sont les @dfn{modules importés} : parfois vous voudriez pouvoir utiliser certains modules Guile de « l'environnement hôte » dans la gexp, donc ces modules devraient être importés dans « l'environnement de construction ».  La forme @code{with-imported-modules} vous permet d'exprimer ça :

note: type: Plain text
en: In this example, the @code{(guix build utils)} module is automatically pulled into the isolated build environment of our gexp, such that @code{(use-modules (guix build utils))} works as expected.
fr: Dans cet exemple, le module @code{(guix build utils)} est automatiquement récupéré dans l'environnement de construction isolé de notre gexp, pour que @code{(use-modules (guix build utils))} fonctionne comme on s'y attendrait.

note: type: cindex
en: module closure
fr: closure de module

note: type: Plain text
en: Usually you want the @emph{closure} of the module to be imported---i.e., the module itself and all the modules it depends on---rather than just the module; failing to do that, attempts to use the module will fail because of missing dependent modules.  The @code{source-module-closure} procedure computes the closure of a module by looking at its source file headers, which comes in handy in this case:
fr: Typiquement, vous voudriez que la @emph{closure} complète du module soit importé — c.-à-d.@: le module lui-même et tous les modules dont il dépend — plutôt que seulement le module ; sinon, une tentative de chargement du module échouera à cause des modules dépendants manquants.  La procédure @code{source-module-closure} calcule la closure d'un module en cherchant dans ses en-têtes sources, ce qui est pratique dans ce cas :

note: type: lisp
en: (use-modules (guix modules))   ;for 'source-module-closure'
fr: (use-modules (guix modules))   ;pour 'source-module-closure'

note: type: cindex
en: extensions, for gexps
fr: extensions, des gexps

note: type: Plain text
en: In the same vein, sometimes you want to import not just pure-Scheme modules, but also ``extensions'' such as Guile bindings to C libraries or other ``full-blown'' packages.  Say you need the @code{guile-json} package available on the build side, here's how you would do it:
fr: Dans la même idée, parfois vous pouvez souhaiter importer non seulement des modules en Scheme pur, mais aussi des « extensions » comme des liaisons Guile de bibliothèques C ou d'autres paquet « complets ».  Disons que vous voulez utiliser le paquet @code{guile-json} du côté de la construction, voici comme procéder :

note: type: lisp
en: (use-modules (gnu packages guile))  ;for 'guile-json'
fr: (use-modules (gnu packages guile))  ;pour 'guile-json'

note: type: Plain text
en: The syntactic form to construct gexps is summarized below.
fr: La forme syntaxique pour construire des gexps est résumée ci-dessous.

note: type: deffn
en: {Scheme Syntax} #~@var{exp}
fr: {Syntaxe Scheme} #~@var{exp}

note: type: deffnx
en: {Scheme Syntax} (gexp @var{exp})
fr: {Syntaxe Scheme} (gexp @var{exp})

note: type: deffn
en: Return a G-expression containing @var{exp}.  @var{exp} may contain one or more of the following forms:
fr: Renvoie une G-expression contenant @var{exp}.  @var{exp} peut contenir une ou plusieurs de ces formes :

note: type: table
en: Introduce a reference to @var{obj}.  @var{obj} may have one of the supported types, for example a package or a derivation, in which case the @code{ungexp} form is replaced by its output file name---e.g., @code{"/gnu/store/@dots{}-coreutils-8.22}.
fr: Introduit une référence à @var{obj}.  @var{obj} peut être d'un des types supportés, par exemple un paquet ou une dérivation, auquel cas la forme @code{ungexp} est remplacée par le nom de fichier de sa sortie — p.@: ex.@: @code{"/gnu/store/@dots{}-coreutils-8.22}.

note: type: table
en: If @var{obj} is a list, it is traversed and references to supported objects are substituted similarly.
fr: Si @var{boj} est une liste, elle est traversée et les références aux objets supportés sont substitués de manière similaire.

note: type: table
en: If @var{obj} is another gexp, its contents are inserted and its dependencies are added to those of the containing gexp.
fr: Si @var{obj} est une autre gexp, son contenu est inséré et ses dépendances sont ajoutées à celle de la gexp qui l'entoure.

note: type: table
en: If @var{obj} is another kind of object, it is inserted as is.
fr: Si @var{obj} est un autre type d'objet, il est inséré tel quel.

note: type: table
en: This is like the form above, but referring explicitly to the @var{output} of @var{obj}---this is useful when @var{obj} produces multiple outputs (@pxref{Packages with Multiple Outputs}).
fr: Cette forme est similaire à la précédente, mais se réfère explicitement à la sortie @var{output} de l'objet @var{obj} — c'est utile lorsque @var{obj} produit plusieurs sorties (@pxref{Packages with Multiple Outputs}).

note: type: table
en: Same as @code{ungexp}, but produces a reference to the @emph{native} build of @var{obj} when used in a cross compilation context.
fr: Comme @code{ungexp}, mais produit une référence à la construction @emph{native} de @var{obj} lorsqu'elle est utilisée dans une compilation croisée.

note: type: table
en: Insert a reference to derivation output @var{output}, or to the main output when @var{output} is omitted.
fr: Insère une référence à la sortie @var{output} de la dérivation, ou à la sortie principale lorsque @var{output} est omis.

note: type: table
en: This only makes sense for gexps passed to @code{gexp->derivation}.
fr: Cela ne fait du sens que pour les gexps passées à @code{gexp->derivation}.

note: type: table
en: Like the above, but splices the contents of @var{lst} inside the containing list.
fr: Comme au dessus, mais recolle (@i{splice}) le contenu de @var{lst} dans la liste qui la contient.

note: type: table
en: Like the above, but refers to native builds of the objects listed in @var{lst}.
fr: Comme au dessus, mais se réfère à la construction native des objets listés dans @var{lst}.

note: type: deffn
en: G-expressions created by @code{gexp} or @code{#~} are run-time objects of the @code{gexp?} type (see below).
fr: Les G-expressions créées par @code{gexp} ou @code{#~} sont des objets d'exécution du type @code{gexp?} (voir ci-dessous).

note: type: deffn
en: {Scheme Syntax} with-imported-modules @var{modules} @var{body}@dots{}
fr: {Syntaxe Scheme} with-imported-modules @var{modules} @var{body}@dots{}

note: type: deffn
en: Mark the gexps defined in @var{body}@dots{} as requiring @var{modules} in their execution environment.
fr: Marque les gexps définies dans @var{body}@dots{} comme requérant @var{modules} dans leur environnement d'exécution.

note: type: deffn
en: Each item in @var{modules} can be the name of a module, such as @code{(guix build utils)}, or it can be a module name, followed by an arrow, followed by a file-like object:
fr: Chaque élément dans @var{module} peut être le nom d'un module, comme @code{(guix build utils)} ou le nom d'un module suivi d'une flèche, suivie d'un objet simili-fichier :

note: type: deffn
en: In the example above, the first two modules are taken from the search path, and the last one is created from the given file-like object.
fr: Dans l'exemple au dessus, les deux premiers modules sont récupérés dans le chemin de recherche, et le dernier est créé à partir d'un objet simili-fichier.

note: type: deffn
en: This form has @emph{lexical} scope: it has an effect on the gexps directly defined in @var{body}@dots{}, but not on those defined, say, in procedures called from @var{body}@dots{}.
fr: Cette forme a une portée @emph{lexicale} : elle a un effet sur les gexp directement définies dans @var{body}@dots{}, mais pas sur celles définies dans des procédures appelées par @var{body}@dots{}.

note: type: deffn
en: {Scheme Syntax} with-extensions @var{extensions} @var{body}@dots{}
fr: {Syntaxe Scheme} with-extensions @var{extensions} @var{body}@dots{}

note: type: deffn
en: Mark the gexps defined in @var{body}@dots{} as requiring @var{extensions} in their build and execution environment.  @var{extensions} is typically a list of package objects such as those defined in the @code{(gnu packages guile)} module.
fr: Marque les gexps définies dans @var{body}@dots{} comme requérant @var{extensions} dans leur environnement de construction et d'exécution.  @var{extensions} est typiquement une liste d'objets paquets comme définis dans le module @code{(gnu packages guile)}.

note: type: deffn
en: Concretely, the packages listed in @var{extensions} are added to the load path while compiling imported modules in @var{body}@dots{}; they are also added to the load path of the gexp returned by @var{body}@dots{}.
fr: Concrètement, les paquets listés dans @var{extensions} sont ajoutés au chemin de chargement lors de la compilation des modules importés dans @var{body}@dots{} ; ils sont aussi ajoutés au chemin de chargement de la gexp renvoyée par @var{body}@dots{}.

note: type: deffn
en: {Scheme Procedure} gexp? @var{obj}
fr: {Procédure Scheme} gexp? @var{obj}

note: type: deffn
en: Return @code{#t} if @var{obj} is a G-expression.
fr: Renvoie @code{#t} si @var{obj} est une G-expression.

note: type: Plain text
en: G-expressions are meant to be written to disk, either as code building some derivation, or as plain files in the store.  The monadic procedures below allow you to do that (@pxref{The Store Monad}, for more information about monads).
fr: Les G-expressions sont conçues pour être écrites sur le disque, soit en tant que code pour construire une dérivation, soit en tant que fichier normal dans le dépôt.  Les procédures monadiques suivantes vous permettent de faire cela (@pxref{The Store Monad}, pour plus d'information sur les monads).

note: type: deffn
en: {Monadic Procedure} gexp->derivation @var{name} @var{exp} @
fr: {Procédure monadique} gexp->derivation @var{name} @var{exp} @

note: type: deffn
en: [#:system (%current-system)] [#:target #f] [#:graft? #t] @ [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ [#:module-path @code{%load-path}] @ [#:effective-version "2.2"] @ [#:references-graphs #f] [#:allowed-references #f] @ [#:disallowed-references #f] @ [#:leaked-env-vars #f] @ [#:script-name (string-append @var{name} "-builder")] @ [#:deprecation-warnings #f] @ [#:local-build? #f] [#:substitutable? #t] @ [#:properties '()] [#:guile-for-build #f] Return a derivation @var{name} that runs @var{exp} (a gexp) with @var{guile-for-build} (a derivation) on @var{system}; @var{exp} is stored in a file called @var{script-name}.  When @var{target} is true, it is used as the cross-compilation target triplet for packages referred to by @var{exp}.
fr: [#:system (%current-system)] [#:target #f] [#:graft ? #t] @
    [#:hash #f] [#:hash-algo #f] @
    [#:recursive ? #f] [#:env-vars '()] [#:modules '()] @
    [#:module-path @code{%load-path}] @
    [#:effective-version "2. 2"] @
    [#:references-graphs #f] [#:allowed-references #f] @
    [#:disallowed-references #f] @
    [#:leaked-env-vars #f] @
    [#:script-name (string-append @var{name} "-builder")] @
    [#:deprecation-warnings #f] @
    [#:local-build ? #f] [#:substituable ? #t] @
    [#:properties '()] [#:guile-for-build #f]
    Renvoie une dérivation @var{name} qui exécute @var{exp} (un gexp) avec @var{guile-for-build} (une dérivation) sur @var{system} ; @var{exp} est stocké dans un fichier appelé @var{script-name}.  Lorsque @var{target} est vrai, il est utilisé comme le triplet cible de compilation croisée pour les paquets auxquels @var{exp} fait référence.

note: type: deffn
en: @var{modules} is deprecated in favor of @code{with-imported-modules}.  Its meaning is to make @var{modules} available in the evaluation context of @var{exp}; @var{modules} is a list of names of Guile modules searched in @var{module-path} to be copied in the store, compiled, and made available in the load path during the execution of @var{exp}---e.g., @code{((guix build utils) (guix build gnu-build-system))}.
fr: @var{modules} est devenu obsolète en faveur de @code{with-imported-modules}.  Sa signification est de rendre @var{modules} disponibles dans le contexte d'évaluation de @var{exp} ; @var{modules} est une liste de noms de modules Guile qui sont cherchés dans @var{module-path} pour les copier dans le dépôt, les compiler et les rendre disponibles dans le chemin de chargement pendant l'exécution de @var{exp} — p.@: ex.@: @code{((guix build utils) (guix build gnu-build-system))}.

note: type: deffn
en: @var{effective-version} determines the string to use when adding extensions of @var{exp} (see @code{with-extensions}) to the search path---e.g., @code{"2.2"}.
fr: @var{effective-version} détermine la chaîne à utiliser lors d'ajout d'extensions de @var{exp} (voir @code{with-extensions}) au chemin de recherche — p.@: ex.@: @code{"2.2"}.

note: type: deffn
en: @var{graft?} determines whether packages referred to by @var{exp} should be grafted when applicable.
fr: @var{graft?} détermine si les paquets référencés par @var{exp} devraient être greffés si possible.

note: type: deffn
en: When @var{references-graphs} is true, it must be a list of tuples of one of the following forms:
fr: Lorsque @var{references-graphs} est vrai, il doit s'agir d'une liste de tuples de la forme suivante :

note: type: deffn
en: The right-hand-side of each element of @var{references-graphs} is automatically made an input of the build process of @var{exp}.  In the build environment, each @var{file-name} contains the reference graph of the corresponding item, in a simple text format.
fr: La partie droite des éléments de @var{references-graphs} est automatiquement transformée en une entrée du processus de construction @var{exp}.  Dans l'environnement de construction, chaque @var{file-name} contient le graphe des références de l'élément correspondant, dans un format texte simple.

note: type: deffn
en: @var{allowed-references} must be either @code{#f} or a list of output names and packages.  In the latter case, the list denotes store items that the result is allowed to refer to.  Any reference to another store item will lead to a build error.  Similarly for @var{disallowed-references}, which can list items that must not be referenced by the outputs.
fr: @var{allowed-references} doit soit être @code{#f}, soit une liste de noms de sorties ou de paquets.  Dans ce dernier cas, la liste dénote les éléments du dépôt auxquels le résultat a le droit de faire référence.  Toute référence à un autre élément du dépôt conduira à une erreur à la construction.  Comme pour @var{disallowed-references}, qui peut lister des éléments qui ne doivent pas être référencés par les sorties.

note: type: deffn
en: @var{deprecation-warnings} determines whether to show deprecation warnings while compiling modules.  It can be @code{#f}, @code{#t}, or @code{'detailed}.
fr: @var{deprecation-warnings} détermine s'il faut afficher les avertissement d'obsolescence à la compilation de modules.  Il peut valoir @code{#f}, @code{t} ou @code{'detailed}.

note: type: deffn
en: The other arguments are as for @code{derivation} (@pxref{Derivations}).
fr: Les autres arguments sont les mêmes que pour @code{derivation} (@pxref{Derivations}).

note: type: cindex
en: file-like objects
fr: objets simili-fichiers

note: type: Plain text
en: The @code{local-file}, @code{plain-file}, @code{computed-file}, @code{program-file}, and @code{scheme-file} procedures below return @dfn{file-like objects}.  That is, when unquoted in a G-expression, these objects lead to a file in the store.  Consider this G-expression:
fr: Les procédures @code{local-file}, @code{plain-file}, @code{computed-file}, @code{program-file} et @code{scheme-file} ci-dessous renvoient des @dfn{objets simili-fichiers}.  C'est-à-dire, lorsqu'ils sont unquotés dans une G-expression, ces objets donnent un fichier dans le dépôt.  Considérez cette G-expression :

note: type: Plain text
en: The effect here is to ``intern'' @file{/tmp/my-nscd.conf} by copying it to the store.  Once expanded, for instance @i{via} @code{gexp->derivation}, the G-expression refers to that copy under @file{/gnu/store}; thus, modifying or removing the file in @file{/tmp} does not have any effect on what the G-expression does.  @code{plain-file} can be used similarly; it differs in that the file content is directly passed as a string.
fr: Ici, l'effet est « d'internaliser » @file{/tmp/my-nscd.conf} en le copiant dans le dépôt.  Une fois étendu, par exemple via @code{gexp->derivation}, la G-expression se réfère à cette copie dans @file{/gnu/store} ; ainsi, modifier ou supprimer le fichier dans @file{/tmp} n'a aucun effet sur ce que fait la G-expression.  @code{plain-file} peut être utilisé de la même manière ; elle est seulement différente par le fait que le contenu du fichier est passé directement par une chaîne de caractères.

note: type: deffn
en: {Scheme Procedure} local-file @var{file} [@var{name}] @
fr: {Procédure Scheme} local-file @var{file} [@var{name}] @

note: type: deffn
en: [#:recursive? #f] [#:select? (const #t)] Return an object representing local file @var{file} to add to the store; this object can be used in a gexp.  If @var{file} is a literal string denoting a relative file name, it is looked up relative to the source file where it appears; if @var{file} is not a literal string, it is looked up relative to the current working directory at run time.  @var{file} will be added to the store under @var{name}--by default the base name of @var{file}.
fr: [#:recursive ? #f] [#:select ? (const #t)]
    Renvoie un objet représentant le fichier local @var{file} à ajouter au magasin ; cet objet peut être utilisé dans un gexp.  Si @var{file} est une chaîne littérale désignant un nom de fichier relatif, il est recherché par rapport au fichier source où il apparaît ; si @var{file} n'est pas une chaîne littérale, il est recherché par rapport au répertoire de travail courant au moment de l'exécution.  @var{file} sera ajouté au dépôt sous @var{name}--par défaut le nom de base de @var{file}.

note: type: deffn
en: This is the declarative counterpart of the @code{interned-file} monadic procedure (@pxref{The Store Monad, @code{interned-file}}).
fr: C'est la version déclarative de la procédure monadique @code{interned-file} (@pxref{The Store Monad, @code{interned-file}}).

note: type: deffn
en: {Scheme Procedure} plain-file @var{name} @var{content}
fr: {Procédure Scheme} plain-file @var{name} @var{content}

note: type: deffn
en: Return an object representing a text file called @var{name} with the given @var{content} (a string or a bytevector) to be added to the store.
fr: Renvoie un objet représentant un fichier texte nommé @var{name} avec pour contenu @var{content} (une chaîne de caractères ou un vecteur d'octets) à ajouter un dépôt.

note: type: deffn
en: This is the declarative counterpart of @code{text-file}.
fr: C'est la version déclarative de @code{text-file}.

note: type: deffn
en: {Scheme Procedure} computed-file @var{name} @var{gexp} @
fr: {Procédure Scheme} computed-file @var{name} @var{gexp} @

note: type: deffn
en: [#:local-build? #t] [#:options '()] Return an object representing the store item @var{name}, a file or directory computed by @var{gexp}.  When @var{local-build?} is true (the default), the derivation is built locally.  @var{options} is a list of additional arguments to pass to @code{gexp->derivation}.
fr: [#:local-build ? #t] [#:options '()]
    Renvoie un objet représentant l'élément du dépôt @var{name}, un fichier ou un répertoire calculé par @var{gexp}.  Lorsque @var{local-build?} est vrai (par défaut), la dérivation est construite localement.  @var{options} est une liste d'arguments supplémentaires à passer à @code{gexp->derivation}.

note: type: deffn
en: This is the declarative counterpart of @code{gexp->derivation}.
fr: C'est la version déclarative de @code{gexp->derivation}.

note: type: deffn
en: {Monadic Procedure} gexp->script @var{name} @var{exp} @
fr: {Procédure monadique} gexp->script @var{name} @var{exp} @

note: type: deffn
en: [#:guile (default-guile)] [#:module-path %load-path] @ [#:system (%current-system)] [#:target #f] Return an executable script @var{name} that runs @var{exp} using @var{guile}, with @var{exp}'s imported modules in its search path.  Look up @var{exp}'s modules in @var{module-path}.
fr: [#:guile (default-guile)] [#:module-path %load-path] @
    [#:system (%current-system)] [#:target #f]
    Renvoie un script exécutable @var{name} qui exécute @var{exp} en utilisant @var{guile}, avec les modules importés de @var{exp} dans son chemin de recherche.  Recherchez les modules de @var{exp} dans @var{module-path}.

note: type: deffn
en: The example below builds a script that simply invokes the @command{ls} command:
fr: L'exemple ci-dessous construit un script qui invoque simplement la commande @command{ls} :

note: type: deffn
en: When ``running'' it through the store (@pxref{The Store Monad, @code{run-with-store}}), we obtain a derivation that produces an executable file @file{/gnu/store/@dots{}-list-files} along these lines:
fr: Lorsqu'elle est « lancée » à travers le dépôt (@pxref{The Store Monad, @code{run-with-store}}), on obtient une dérivation qui produit une fichier exécutable @file{/gnu/store/@dots{}-list-files} qui ressemble à :

note: type: deffn
en: {Scheme Procedure} program-file @var{name} @var{exp} @
fr: {Procédure Scheme} program-file @var{name} @var{exp} @

note: type: deffn
en: [#:guile #f] [#:module-path %load-path] Return an object representing the executable store item @var{name} that runs @var{gexp}.  @var{guile} is the Guile package used to execute that script.  Imported modules of @var{gexp} are looked up in @var{module-path}.
fr: [#:guile #f] [#:module-path %load-path]
    Renvoie un objet représentant un élément du dépôt @var{name} qui lance @var{gexp}.  @var{guile} est le paquet Guile à utiliser pour exécuter le script.  Les modules importés par @var{gexp} sont recherchés dans @var{module-path}.

note: type: deffn
en: This is the declarative counterpart of @code{gexp->script}.
fr: C'est la version déclarative de @code{gexp->script}.

note: type: deffn
en: {Monadic Procedure} gexp->file @var{name} @var{exp} @
fr: {Procédure monadique} gexp->file @var{name} @var{exp} @

note: type: deffn
en: [#:set-load-path? #t] [#:module-path %load-path] @ [#:splice? #f] @ [#:guile (default-guile)] Return a derivation that builds a file @var{name} containing @var{exp}.  When @var{splice?} is true, @var{exp} is considered to be a list of expressions that will be spliced in the resulting file.
fr: [#:set-load-path? #t] [#:module-path %load-path] @
    [#:splice? #f] @
    [#:guile (default-guile)]
    Renvoie une dérivation qui construit un fichier @var{name} contenant @var{exp}.  Lorsque @var{splice?} est vrai, @var{exp} est considéré comme une liste d'expressions qui seront splicée dans le fichier qui en résulte.

note: type: deffn
en: When @var{set-load-path?} is true, emit code in the resulting file to set @code{%load-path} and @code{%load-compiled-path} to honor @var{exp}'s imported modules.  Look up @var{exp}'s modules in @var{module-path}.
fr: Lorsque @var{set-load-path?} est vrai, émet du code dans le fichier de résultat pour initialiser @code{%load-path} et @code{%load-compiled-path} pour prendre en compte les modules importés de @var{exp}.  Les modules de @var{exp} sont trouvés dans @var{module-path}.

note: type: deffn
en: The resulting file holds references to all the dependencies of @var{exp} or a subset thereof.
fr: Le fichier qui en résulte retient les références à toutes les dépendances de @var{exp} ou un sous-ensemble.

note: type: deffn
en: {Scheme Procedure} scheme-file @var{name} @var{exp} @
fr: {Procédure Scheme} scheme-file @var{name} @var{gexp} @

note: type: deffn
en: [#:splice? #f] [#:set-load-path? #t] Return an object representing the Scheme file @var{name} that contains @var{exp}.
fr: [#:splice? #f] [#:set-load-path? #t]
    Renvoie un objet représentant le fichier Scheme @var{name} qui contient @var{exp}.

note: type: deffn
en: This is the declarative counterpart of @code{gexp->file}.
fr: C'est la version déclarative de @code{gexp->file}.

note: type: deffn
en: {Monadic Procedure} text-file* @var{name} @var{text} @dots{}
fr: {Procédure monadique} text-file* @var{name} @var{text} @dots{}

note: type: deffn
en: Return as a monadic value a derivation that builds a text file containing all of @var{text}.  @var{text} may list, in addition to strings, objects of any type that can be used in a gexp: packages, derivations, local file objects, etc.  The resulting store file holds references to all these.
fr: Renvoie une valeur monadique qui construit un ficher texte contenant @var{text}.  @var{text} peut lister, en plus de chaînes de caractères, des objet de n'importe quel type qui peut être utilisé dans une gexp : des paquets, des dérivations, des fichiers objet locaux, etc.  Le fichier du dépôt qui en résulte en retient toutes les références.

note: type: deffn
en: This variant should be preferred over @code{text-file} anytime the file to create will reference items from the store.  This is typically the case when building a configuration file that embeds store file names, like this:
fr: Cette variante devrait être préférée à @code{text-file} lorsque vous souhaitez créer des fichiers qui référencent le dépôt.  Cela est le cas typiquement lorsque vous construisez un fichier de configuration qui contient des noms de fichiers du dépôt, comme ceci :

note: type: lisp
en: (define (profile.sh)
      ;; Return the name of a shell script in the store that
      ;; initializes the 'PATH' environment variable.
      (text-file* "profile.sh"
                  "export PATH=" coreutils "/bin:"
                  grep "/bin:" sed "/bin\n"))
fr: (define (profile.sh)
      ;; Renvoie le nom d'un script shell dans le dépôt qui initialise
      ;; la variable d'environnement « PATH ».
      (text-file* "profile.sh"
                  "export PATH=" coreutils "/bin:"
                  grep "/bin:" sed "/bin\n"))

note: type: deffn
en: In this example, the resulting @file{/gnu/store/@dots{}-profile.sh} file will reference @var{coreutils}, @var{grep}, and @var{sed}, thereby preventing them from being garbage-collected during its lifetime.
fr: Dans cet exemple, le fichier @file{/gnu/store/@dots{}-profile.sh} qui en résulte référence @var{coreutils}, @var{grep} et @var{sed}, ce qui les empêche d'être glanés tant que le script est accessible.

note: type: deffn
en: {Scheme Procedure} mixed-text-file @var{name} @var{text} @dots{}
fr: {Procédure Scheme} mixed-text-file @var{name} @var{text} @dots{}

note: type: deffn
en: Return an object representing store file @var{name} containing @var{text}.  @var{text} is a sequence of strings and file-like objects, as in:
fr: Renvoie un objet représentant le fichier du dépôt @var{name} contenant @var{text}.  @var{text} est une séquence de chaînes de caractères et de fichiers simili-objets, comme dans :

note: type: deffn
en: This is the declarative counterpart of @code{text-file*}.
fr: C'est la version déclarative de @code{text-file*}.

note: type: deffn
en: {Scheme Procedure} file-union @var{name} @var{files}
fr: {Procédure Scheme} file-union @var{name} @var{files}

note: type: deffn
en: Return a @code{<computed-file>} that builds a directory containing all of @var{files}.  Each item in @var{files} must be a two-element list where the first element is the file name to use in the new directory, and the second element is a gexp denoting the target file.  Here's an example:
fr: Renvoie un @code{<computed-file>} qui construit un répertoire qui contient tous les fichiers de @var{files}.  Chaque élément de @var{files} doit être une paire où le premier élément est le nom de fichier à utiliser dans le nouveau répertoire et le second élément est une gexp dénotant le fichier cible.  Voici un exemple :

note: type: deffn
en: This yields an @code{etc} directory containing these two files.
fr: Cela crée un répertoire @code{etc} contenant ces deux fichiers.

note: type: deffn
en: {Scheme Procedure} directory-union @var{name} @var{things}
fr: {Procédure Scheme} directory-union @var{name} @var{things}

note: type: deffn
en: Return a directory that is the union of @var{things}, where @var{things} is a list of file-like objects denoting directories.  For example:
fr: Renvoie un répertoire qui est l'union de @var{things}, où @var{things} est une liste d'objets simili-fichiers qui dénotent des répertoires. Par exemple :

note: type: deffn
en: yields a directory that is the union of the @code{guile} and @code{emacs} packages.
fr: crée un répertoire qui est l'union des paquets @code{guile} et @code{emacs}.

note: type: deffn
en: {Scheme Procedure} file-append @var{obj} @var{suffix} @dots{}
fr: {Procédure Scheme} file-append @var{obj} @var{suffix} @dots{}

note: type: deffn
en: Return a file-like object that expands to the concatenation of @var{obj} and @var{suffix}, where @var{obj} is a lowerable object and each @var{suffix} is a string.
fr: Renvoie un objet simili-fichier qui correspond à la concaténation de @var{obj} et @var{suffix} où @var{obj} est un objet abaissable et chaque @var{suffix} est une chaîne de caractères.

note: type: deffn
en: As an example, consider this gexp:
fr: Par exemple, considérez cette gexp :

note: type: deffn
en: The same effect could be achieved with:
fr: On peut obtenir le même effet avec :

note: type: deffn
en: There is one difference though: in the @code{file-append} case, the resulting script contains the absolute file name as a string, whereas in the second case, the resulting script contains a @code{(string-append @dots{})} expression to construct the file name @emph{at run time}.
fr: Il y a une différence cependant : dans le cas @code{file-append}, le script qui en résulte contient le nom de fichier absolu comme une chaîne de caractère alors que dans le deuxième cas, le script contient une expression @code{(string-append @dots{})} pour construire le nom de fichier @emph{à l'exécution}.

note: type: deffn
en: {Scheme Syntax} let-system @var{system} @var{body}@dots{}
fr: {Syntaxe Scheme} let-system @var{system} @var{body}@dots{}

note: type: deffnx
en: {Scheme Syntax} let-system (@var{system} @var{target}) @var{body}@dots{}
fr: {Syntaxe Scheme} let-system (@var{system} @var{target}) @var{body}@dots{}

note: type: deffn
en: Bind @var{system} to the currently targeted system---e.g., @code{"x86_64-linux"}---within @var{body}.
fr: Lier @var{system} au système actuellement visé---par exemple, @code{"x86_64-linux"}---dans @var{body}.

note: type: deffn
en: In the second case, additionally bind @var{target} to the current cross-compilation target---a GNU triplet such as @code{"arm-linux-gnueabihf"}---or @code{#f} if we are not cross-compiling.
fr: Dans le second cas, lier également @var{target} à la cible de compilation croisée actuelle--un triplet GNU tel que @code{"arm-linux-gnueabihf"}---ou @code{#f} si nous ne faisons pas de compilation croisée.

note: type: deffn
en: @code{let-system} is useful in the occasional case where the object spliced into the gexp depends on the target system, as in this example:
fr: @code{let-system} est utile occasionellement dans le cas où l'objet raccordé au gexp dépend de la cible sur le système cible, comme dans cet exemple :

note: type: deffn
en: {Scheme Syntax} with-parameters ((@var{parameter} @var{value}) @dots{}) @var{exp}
fr: {Syntaxe Scheme} with-parameters ((@var{parameter} @var{value}) @dots{}) @var{exp}

note: type: deffn
en: This macro is similar to the @code{parameterize} form for dynamically-bound @dfn{parameters} (@pxref{Parameters,,, guile, GNU Guile Reference Manual}).  The key difference is that it takes effect when the file-like object returned by @var{exp} is lowered to a derivation or store item.
fr: Cette macro est similaire à la forme @code{parameterize} pour les @dfn{paramètres} liés dynamiquement (@pxref{Parameters,,, guile, GNU Guile Reference Manual}).  La principale différence est qu'il prend effet lorsque l'objet de type fichier renvoyé par @var{exp} est abaissé à un élément de dérivation ou de stockage.

note: type: deffn
en: A typical use of @code{with-parameters} is to force the system in effect for a given object:
fr: Une utilisation typique de @code{with-parameters} consiste à forcer le système en vigueur pour un objet donné :

note: type: deffn
en: The example above returns an object that corresponds to the i686 build of Coreutils, regardless of the current value of @code{%current-system}.
fr: L'exemple ci-dessus renvoie un objet qui correspond à la version i686 de Coreutils, quelle que soit la valeur actuelle de @code{%current-système}.

note: type: Plain text
en: Of course, in addition to gexps embedded in ``host'' code, there are also modules containing build tools.  To make it clear that they are meant to be used in the build stratum, these modules are kept in the @code{(guix build @dots{})} name space.
fr: Bien sûr, en plus de gexps inclues dans le code « hôte », certains modules contiennent des outils de construction.  Pour savoir facilement qu'ils sont à utiliser dans la strate de construction, ces modules sont gardés dans l'espace de nom @code{(guix build @dots{})}.

note: type: Plain text
en: Internally, high-level objects are @dfn{lowered}, using their compiler, to either derivations or store items.  For instance, lowering a package yields a derivation, and lowering a @code{plain-file} yields a store item.  This is achieved using the @code{lower-object} monadic procedure.
fr: En interne, les objets de haut-niveau sont @dfn{abaissés}, avec leur compilateur, soit en des dérivations, soit en des objets du dépôt.  Par exemple, abaisser un paquet crée une dérivation, et abaisser un @code{plain-file} crée un élément du dépôt.  Cela est effectué par la procédure monadique @code{lower-object}.

note: type: deffn
en: {Monadic Procedure} lower-object @var{obj} [@var{system}] @
fr: {Procédure monadique} lower-object @var{obj} [@var{system}] @

note: type: deffn
en: [#:target #f] Return as a value in @code{%store-monad} the derivation or store item corresponding to @var{obj} for @var{system}, cross-compiling for @var{target} if @var{target} is true.  @var{obj} must be an object that has an associated gexp compiler, such as a @code{<package>}.
fr: [#:target #f]
    Renvoie comme valeur dans @code{%store-monad} la dérivation ou l'élément de dépôt correspondant à @var{obj} pour @var{system}, en effectuant une compilation croisée pour @var{target} si @var{target} est vrai.  @var{obj} doit être un objet auquel est associé un compilateur gexp, tel qu'un @code{<package>}.

note: type: deffn
en: {Procedure} gexp->approximate-sexp @var{gexp}
fr: {Procédure} gexp->approximate-sexp @var{gexp}

note: type: deffn
en: Sometimes, it may be useful to convert a G-exp into a S-exp.  For example, some linters (@pxref{Invoking guix lint}) peek into the build phases of a package to detect potential problems.  This conversion can be achieved with this procedure.  However, some information can be lost in the process.  More specifically, lowerable objects will be silently replaced with some arbitrary object -- currently the list @code{(*approximate*)}, but this may change.
fr: Il peut parfois être utile de convertir une G-expression en S-expression. Par exemple, certains outils d'analyse statique de style (dits « linters », @pxref{Invoking guix lint}) vérifient les phases de compilation des paquets pour détecter des problèmes potentiels. Cette conversion peut être réalisée avec cette procédure. Toutefois, certaines informations peuvent être perdues au cours de l'opération. Plus spécifiquement, les objets abaissables seront remplacés silencieusement par un objet arbitraire -- pour l'instant la liste @code{(*approximate*)}, mais cela pourrait changer.

note: type: section
en: Invoking @command{guix repl}
fr: Invoquer @command{guix repl}

note: type: cindex
en: REPL, read-eval-print loop, script
fr: REPL, boucle de lecture-évaluation-impression, script

note: type: Plain text
en: The @command{guix repl} command makes it easier to program Guix in Guile by launching a Guile @dfn{read-eval-print loop} (REPL) for interactive programming (@pxref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}), or by running Guile scripts (@pxref{Running Guile Scripts,,, guile, GNU Guile Reference Manual}).  Compared to just launching the @command{guile} command, @command{guix repl} guarantees that all the Guix modules and all its dependencies are available in the search path.
fr: La commande @command{guix repl} facilite la programmation de Guix dans Guile en lançant une boucle Guile @dfn{read-eval-print}. (REPL) pour la programmation interactive (@pxref{Using Guile Interactively, , , guile, GNU Guile Reference Manual}), ou en exécutant des scripts Guile (@pxref{Running Guile Scripts, , guile, GNU Guile Reference Manual}).  Par rapport au simple lancement de la commande @command{guile}, @command{guix repl} garantit que tous les modules Guix et toutes ses dépendances sont disponibles dans le chemin de recherche.

note: type: example
en: guix repl @var{options} [@var{file} @var{args}]
fr: guix repl @var{option} @var{fichier} @var{args}]

note: type: Plain text
en: When a @var{file} argument is provided, @var{file} is executed as a Guile scripts:
fr: Lorsqu'un argument @var{file} est fourni, @var{file} est exécuté comme un script Guile :

note: type: example
en: guix repl my-script.scm
fr: guix repl mon-script.scm

note: type: Plain text
en: To pass arguments to the script, use @code{--} to prevent them from being interpreted as arguments to @command{guix repl} itself:
fr: Pour passer des arguments au script, utilisez @code{--} pour éviter qu'ils ne soient interprétés comme des arguments pour @command{guix repl} lui-même :

note: type: example
en: guix repl -- my-script.scm --input=foo.txt
fr: guix repl -- mon-script.scm --input=toto.txt

note: type: Plain text
en: To make a script executable directly from the shell, using the guix executable that is on the user's search path, add the following two lines at the top of the script:
fr: Pour rendre exécutable un script directement depuis le shell, en utilisant l'exécutable guix qui se trouve dans le chemin de recherche utilisateur·rice, ajoutez les deux lignes suivantes en haut du script :

note: type: Plain text
en: Without a file name argument, a Guile REPL is started, allowing for interactive use (@pxref{Using Guix Interactively}):
fr: En l'absence d'un argument de nom de fichier, une REPL guile est lancé, ce qui permet de l'utiliser de manière interactive (@pxref{Using Guix Interactively}) :

note: type: Plain text
en: In addition, @command{guix repl} implements a simple machine-readable REPL protocol for use by @code{(guix inferior)}, a facility to interact with @dfn{inferiors}, separate processes running a potentially different revision of Guix.
fr: En plus, @command{guix repl} implémente un protocole REPL simple lisible par une machine à utiliser avec @code{(guix inferior)}, un dispositif pour interagir avec des @dfn{inférieurs}, des processus séparés qui font tourner une version potentiellement différente de Guix.

note: type: Plain text
en: The available options are as follows:
fr: Les options disponibles sont les suivantes :

note: type: table
en: Start a REPL of the given @var{TYPE}, which can be one of the following:
fr: Démarrer un REPL du @var{type} donné, qui peut être l'un de ces types :

note: type: table
en: This is default, and it spawns a standard full-featured Guile REPL.
fr: C'est la valeur par défaut. Elle démarre un REPL Guile standard fonctionnel.

note: type: table
en: Spawn a REPL that uses the machine-readable protocol.  This is the protocol that the @code{(guix inferior)} module speaks.
fr: Démarre un REPL qui utilise le protocole lisible par machine.  C'est le protocole que parle le module @code{(guix inferior)}.

note: type: table
en: By default, @command{guix repl} reads from standard input and writes to standard output.  When this option is passed, it will instead listen for connections on @var{endpoint}.  Here are examples of valid options:
fr: Par défaut, @command{guix repl} lit depuis l'entrée standard et écrit sur la sortie standard.  Lorsque cette option est passée, il écoutera plutôt les connexions sur @var{endpoint}.  Voici un exemple d'options valides :

note: type: table
en: Accept connections on localhost on port 37146.
fr: Accepte les connexions sur localhost, sur le port 31.

note: type: table
en: Accept connections on the Unix-domain socket @file{/tmp/socket}.
fr: Accepte les connexions sur le socket Unix-domain @file{/tmp/socket}.

note: type: item
en: --load-path=@var{directory}
fr: --load-path=@var{répertoire}

note: type: itemx
en: -L @var{directory}
fr: -L @var{répertoire}

note: type: table
en: Add @var{directory} to the front of the package module search path (@pxref{Package Modules}).
fr: Ajoute @var{répertoire} au début du chemin de recherche de module de paquets (@pxref{Package Modules}).

note: type: table
en: This allows users to define their own packages and make them visible to the script or REPL.
fr: Cela permet à des utilisateurs de définir leur propres paquets et les rendre disponibles au script ou au REPL.

note: type: table
en: Inhibit loading of the @file{~/.guile} file.  By default, that configuration file is loaded when spawning a @code{guile} REPL.
fr: Inhiber le chargement du fichier @file{~/.guile}.  Par défaut, ce fichier de configuration est chargé lors de la création d'un fichier @code{guile}. REPL.

note: type: cindex
en: interactive use
fr: utilisation interactive

note: type: Plain text
en: The @command{guix repl} command gives you access to a warm and friendly @dfn{read-eval-print loop} (REPL) (@pxref{Invoking guix repl}).  If you're getting into Guix programming---defining your own packages, writing manifests, defining services for Guix System or Guix Home, etc.---you will surely find it convenient to toy with ideas at the REPL.
fr: La commande @command{guix repl} vous donne accès à une @dfn{boucle-lecture-évalutation-affichage} (BLÉA ou REPL en anglais) chaleureuse et amicale (@pxref{Invoking guix repl}). Si vous commencez la programmation avec Guix --- pour définir vos propres paquets, écrire des manifestes, définir des services pour le système Guix ou Guix Home, etc --- vous la trouverez sans doute pratique pour jouer avec vos idées sur la REPL.

note: type: Plain text
en: If you use Emacs, the most convenient way to do that is with Geiser (@pxref{The Perfect Setup}), but you do not have to use Emacs to enjoy the REPL@.  When using @command{guix repl} or @command{guile} in the terminal, we recommend using Readline for completion and Colorized to get colorful output.  To do that, you can run:
fr: Si vous utilisez Emacs, le moyen le plus pratique pour cela est d'utiliser Geiser (@pxref{The Perfect Setup}), mais vous n'avez pas besoin d'utiliser Emacs pour profiter de la REPL@. Lorsque vous utilisez @command{guix repl} ou @command{guile} dans un terminal, nous vous recommandons d'utiliser Readline pour la complétion et Colorized pour avoir une sortie colorée. Pour cela, vous pouvez lancer :

note: type: Plain text
en: ... and then create a @file{.guile} file in your home directory containing this:
fr: … puis créer un fichier @file{.guile} dans votre répertoire personnel, contenant ceci :

note: type: Plain text
en: The REPL lets you evaluate Scheme code; you type a Scheme expression at the prompt, and the REPL prints what it evaluates to:
fr: La REPL vous permet d'évaluer du code SCheme ; vous tapez une expression Scheme sur l'invite, et la REPL affiche ce en quoi elle s'évalue :

note: type: Plain text
en: It becomes interesting when you start fiddling with Guix at the REPL.  The first thing you'll want to do is to ``import'' the @code{(guix)} module, which gives access to the main part of the programming interface, and perhaps a bunch of useful Guix modules.  You could type @code{(use-modules (guix))}, which is valid Scheme code to import a module (@pxref{Using Guile Modules,,, guile, GNU Guile Reference Manual}), but the REPL provides the @code{use} @dfn{command} as a shorthand notation (@pxref{REPL Commands,,, guile, GNU Guile Reference Manual}):
fr: Ça devient plus intéressant quand vous commencez à jouer avec Guix sur la REPL. La première chose à faire est « d'importer » le module @code{(guix)}, qui vous donne accès à la partie principale de l'interface de programmation, et peut-être à un ensemble de modules Guix utiles. Vous pouvez taper @code{(use-modules (guix))}, ce qui est du code Scheme valide pour importer un module (@pxref{Using Guile Modules,,, guile, manuel de référence de GNU Guile}), mais la REPL fournit la @dfn{commande} @code{use} comme raccourci (@pxref{REPL Commands,,, guile, manuel de référence de GNU Guile}) :

note: type: Plain text
en: Notice that REPL commands are introduced by a leading comma.  A REPL command like @code{use} is not valid Scheme code; it's interpreted specially by the REPL.
fr: Remarquez que les commandes de la REPL sont introduites par une virgule. Une commande REPL comme @code{use} n'est pas du code Scheme valide, elle est interprétée de manière spéciale par la REPL.

note: type: Plain text
en: Guix extends the Guile REPL with additional commands for convenience.  Among those, the @code{build} command comes in handy: it ensures that the given file-like object is built, building it if needed, and returns its output file name(s).  In the example below, we build the @code{coreutils} and @code{grep} packages, as well as a ``computed file'' (@pxref{G-Expressions, @code{computed-file}}), and we use the @code{scandir} procedure to list the files in Grep's @code{/bin} directory:
fr: Guix étend la REPL Guile avec des commandes supplémentaires pour votre confort. Parmi celles-ci, la commande @code{build} est pratique : elle s'assure que l'objet simili-fichier donné est construit, en le construisant si nécessaire, et renvoie le nom de fichier de sa sortie. Dans l'exemple ci-dessous, nous construisons les paquets @code{coreutils} et @code{grep}, ainsi qu'un « fichiers calculé » (@pxref{G-Expressions, @code{computed-file}}), et nous utilisons la procédure @code{scandir} pour lister les fichiers du répertoire @code{/bin} de Grep :

note: type: example
en: scheme@@(guix-user)> ,build coreutils
    $1 = "/gnu/store/@dots{}-coreutils-8.32-debug"
    $2 = "/gnu/store/@dots{}-coreutils-8.32"
    scheme@@(guix-user)> ,build grep
    $3 = "/gnu/store/@dots{}-grep-3.6"
    scheme@@(guix-user)> ,build (computed-file "x" #~(mkdir #$output))
    building /gnu/store/@dots{}-x.drv...
    $4 = "/gnu/store/@dots{}-x"
    scheme@@(guix-user)> ,use(ice-9 ftw)
    scheme@@(guix-user)> (scandir (string-append $3 "/bin"))
    $5 = ("." ".." "egrep" "fgrep" "grep")
fr: scheme@@(guix-user)> ,build coreutils
    $1 = "/gnu/store/@dots{}-coreutils-8.32-debug"
    $2 = "/gnu/store/@dots{}-coreutils-8.32"
    scheme@@(guix-user)> ,build grep
    $3 = "/gnu/store/@dots{}-grep-3.6"
    scheme@@(guix-user)> ,build (computed-file "x" #~(mkdir #$output))
    construction de /gnu/store/@dots{}-x.drv...
    $4 = "/gnu/store/@dots{}-x"
    scheme@@(guix-user)> ,use(ice-9 ftw)
    scheme@@(guix-user)> (scandir (string-append $3 "/bin"))
    $5 = ("." ".." "egrep" "fgrep" "grep")

note: type: Plain text
en: At a lower-level, a useful command is @code{lower}: it takes a file-like object and ``lowers'' it into a derivation (@pxref{Derivations}) or a store file:
fr: À plus bas niveau, une commande utile est @code{lower} : elle prend un objet simili-fichier et l'« abaisse » en une dérivation (@pxref{Derivations}) ou un fichier du dépôt :

note: type: Plain text
en: The full list of REPL commands can be seen by typing @code{,help guix} and is given below for reference.
fr: La liste complète des commandes de la REPL se trouvent en tapant @code{,help guix} et est donnée ci-dessous pour référence.

note: type: deffn
en: {REPL command} build @var{object}
fr: {commande REPL} build @var{objet}

note: type: deffn
en: Lower @var{object} and build it if it's not already built, returning its output file name(s).
fr: Abaisse @var{objet} et le construit s'il n'est pas déjà construit, et renvoie le nom de fichier de ses sorties.

note: type: deffn
en: {REPL command} lower @var{object}
fr: {commande REPL} lower @var{objet}

note: type: deffn
en: Lower @var{object} into a derivation or store file name and return it.
fr: Abaisse @var{objet} en une dérivation ou un nom de fichier du dépôt et le renvoie.

note: type: deffn
en: {REPL command} verbosity @var{level}
fr: {commande REPL} verbosity @var{niveau}

note: type: deffn
en: Change build verbosity to @var{level}.
fr: Change la verbosité des construction à @var{niveau}.

note: type: deffn
en: This is similar to the @option{--verbosity} command-line option (@pxref{Common Build Options}): level 0 means total silence, level 1 shows build events only, and higher levels print build logs.
fr: C'est similaire à l'option en ligne de commande @option{--verbosity} (@pxref{Common Build Options}) : le niveau 0 signifie le silence total, le niveau 1 montre les événements de construction et les niveaux plus élevés affichent les journaux de construction.

note: type: deffn
en: {REPL command} run-in-store @var{exp}
fr: {commande REPL} run-in-store @var{exp}

note: type: deffn
en: Run @var{exp}, a monadic expresssion, through the store monad.  @xref{The Store Monad}, for more information.
fr: Lance @var{exp}, une expression monadique dans la monade du dépôt. @xref{The Store Monad}, pour plus d'information.

note: type: deffn
en: {REPL command} enter-store-monad
fr: {command REPL} enter-store-monad

note: type: deffn
en: Enter a new REPL to evaluate monadic expressions (@pxref{The Store Monad}).  You can quit this ``inner'' REPL by typing @code{,q}.
fr: Entre dans une nouvelle REPL pour évaluer des expressions monadiques (@pxref{The Store Monad}). Vous pouvez quitter la REPL « interne » en tapant @code{,q}.

note: type: Plain text
en: This section describes Guix command-line utilities.  Some of them are primarily targeted at developers and users who write new package definitions, while others are more generally useful.  They complement the Scheme programming interface of Guix in a convenient way.
fr: Cette section décrit les utilitaires en ligne de commande de Guix.  certains sont surtout faits pour les personnes qui écrivent de nouvelles définitions de paquets tandis que d'autres sont plus utiles pour une utilisation générale.  Ils complètent l'interface de programmation Scheme de Guix d'une manière pratique.

note: type: cindex
en: package building
fr: construction de paquets

note: type: Plain text
en: The @command{guix build} command builds packages or derivations and their dependencies, and prints the resulting store paths.  Note that it does not modify the user's profile---this is the job of the @command{guix package} command (@pxref{Invoking guix package}).  Thus, it is mainly useful for distribution developers.
fr: La commande @command{guix build} construit des paquets ou des dérivations et leurs dépendances et affiche les chemins du dépôt qui en résulte.  Remarquez qu'elle ne modifie pas le profil de l'utilisateur — c'est le travail de la commande @command{guix package} (@pxref{Invoking guix package}).  Ainsi, elle est surtout utile pour les personnes qui développent la distribution.

note: type: Plain text
en: As an example, the following command builds the latest versions of Emacs and of Guile, displays their build logs, and finally displays the resulting directories:
fr: Par exemple, la commande suivante construit la dernière version d'Emacs et de Guile, affiche leur journaux de construction et enfin affiche les répertoires des résultats :

note: type: Plain text
en: Similarly, the following command builds all the available packages:
fr: De même, la commande suivante construit tous les paquets disponibles :

note: type: Plain text
en: @var{package-or-derivation} may be either the name of a package found in the software distribution such as @code{coreutils} or @code{coreutils@@8.20}, or a derivation such as @file{/gnu/store/@dots{}-coreutils-8.19.drv}.  In the former case, a package with the corresponding name (and optionally version) is searched for among the GNU distribution modules (@pxref{Package Modules}).
fr: @var{package-or-derivation} peut être soit le nom d'un paquet trouvé dans la distribution logicielle comme @code{coreutils}, soit @code{coreutils@@8.20}, soit une dérivation comme @file{/gnu/store/@dots{}-coreutils-8.19.drv}.  Dans le premier cas, la commande cherchera un paquet avec le nom correspondant (et éventuellement la version) dans les modules de la distribution GNU (@pxref{Package Modules}).

note: type: Plain text
en: Alternatively, the @option{--expression} option may be used to specify a Scheme expression that evaluates to a package; this is useful when disambiguating among several same-named packages or package variants is needed.
fr: Autrement, l'option @option{--expression} peut être utilisée pour spécifier une expression Scheme qui s'évalue en un paquet ; c'est utile lorsqu'il est nécessaire de faire la distinction entre plusieurs paquets ou variantes de paquets portant le même nom.

note: type: Plain text
en: There may be zero or more @var{options}.  The available options are described in the subsections below.
fr: Il peut y avoir aucune, une ou plusieurs @var{options}.  Les options disponibles sont décrites dans les sous-sections ci-dessous.

note: type: Plain text
en: A number of options that control the build process are common to @command{guix build} and other commands that can spawn builds, such as @command{guix package} or @command{guix archive}.  These are the following:
fr: Un certain nombre d'options qui contrôlent le processus de construction sont communes avec @command{guix build} et les autres commandes qui peuvent générer des constructions, comme @command{guix package} ou @command{guix archive}.  Voici ces options :

note: type: table
en: This allows users to define their own packages and make them visible to the command-line tools.
fr: Cela permet à des utilisateurs de définir leur propres paquets et les rendre disponibles aux outils en ligne de commande.

note: type: table
en: Keep the build tree of failed builds.  Thus, if a build fails, its build tree is kept under @file{/tmp}, in a directory whose name is shown at the end of the build log.  This is useful when debugging build issues.  @xref{Debugging Build Failures}, for tips and tricks on how to debug build issues.
fr: Garde l'arborescence de construction des constructions en échec.  Ainsi, si une construction échoue, son arborescence de construction est préservée dans @file{/tmp}, dans un répertoire dont le nom est affiché à la fin du journal de construction.  Cela est utile pour déboguer des échecs de construction.  @xref{Debugging Build Failures}, pour des astuces sur la manière de déboguer des problèmes de construction.

note: type: table
en: This option implies @option{--no-offload}, and it has no effect when connecting to a remote daemon with a @code{guix://} URI (@pxref{The Store, the @env{GUIX_DAEMON_SOCKET} variable}).
fr: Cette option implique @option{--no-offload}, et elle n'a pas d'effet quand elle est connectée à un démon distant avec une @code{guix://} URI (@pxref{The Store, the @env{GUIX_DAEMON_SOCKET} variable}).

note: type: table
en: Keep going when some of the derivations fail to build; return only once all the builds have either completed or failed.
fr: Continue lorsque certaines dérivations échouent ; ne s'arrête que lorsque toutes les constructions ont soit réussies, soit échouées.

note: type: table
en: The default behavior is to stop as soon as one of the specified derivations has failed.
fr: Le comportement par défaut est de s'arrêter dès qu'une des dérivations spécifiées échoue.

note: type: table
en: Do not build the derivations.
fr: Ne pas construire les dérivations.

note: type: anchor{#1}
en: fallback-option
fr: option de repli

note: type: table
en: When substituting a pre-built binary fails, fall back to building packages locally (@pxref{Substitution Failure}).
fr: Lorsque la substitution d'un binaire pré-compilé échoue, construit les paquets localement à la place (@pxref{Substitution Failure}).

note: type: table
en: Consider @var{urls} the whitespace-separated list of substitute source URLs, overriding the default list of URLs of @command{guix-daemon} (@pxref{daemon-substitute-urls,, @command{guix-daemon} URLs}).
fr: Considère @var{urls} comme une liste d'URL de sources de substituts séparés par des espaces, et remplace la liste par défaut d'URL de @command{guix-daemon} (@pxref{daemon-substitute-urls,, @command{guix-daemon} URLs}).

note: type: table
en: This means that substitutes may be downloaded from @var{urls}, provided they are signed by a key authorized by the system administrator (@pxref{Substitutes}).
fr: Cela signifie que les substituts peuvent être téléchargés depuis @var{urls}, tant qu'ils sont signés par une clef autorisée par l'administrateur système (@pxref{Substituts}).

note: type: table
en: When @var{urls} is the empty string, substitutes are effectively disabled.
fr: Lorsque @var{urls} est la chaîne vide, cela a pour effet de désactiver la substitution.

note: type: table
en: Do not ``graft'' packages.  In practice, this means that package updates available as grafts are not applied.  @xref{Security Updates}, for more information on grafts.
fr: Ne par « greffer » les paquets.  En pratique, cela signifie que les mises à jour des paquets disponibles comme des greffes ne sont pas appliquées.  @xref{Security Updates}, pour plus d'information sur les greffes.

note: type: table
en: Build each derivation @var{n} times in a row, and raise an error if consecutive build results are not bit-for-bit identical.
fr: Construit chaque dérivation @var{n} fois d'affilé, et renvoie une erreur si les constructions consécutives ne sont pas identiques bit-à-bit.

note: type: table
en: This is a useful way to detect non-deterministic builds processes.  Non-deterministic build processes are a problem because they make it practically impossible for users to @emph{verify} whether third-party binaries are genuine.  @xref{Invoking guix challenge}, for more.
fr: Cela est une manière utile pour détecter des processus de construction non déterministes.  Les processus de construction non déterministes sont problématiques car ils rendent pratiquement impossible la @emph{vérification} par les utilisateurs de l'authenticité de binaires tiers.  @xref{Invoking guix challenge}, pour plus d'informations.

note: type: table
en: By default, the daemon's setting is honored (@pxref{Invoking guix-daemon, @option{--max-silent-time}}).
fr: Par défaut, le paramètre du démon est pris en compte (@pxref{Invoquer guix-daemon, @option{--max-silent-time}}).

note: type: table
en: By default, the daemon's setting is honored (@pxref{Invoking guix-daemon, @option{--timeout}}).
fr: Par défaut, le paramètre du démon est pris en compte (@pxref{Invoquer guix-daemon, @option{--timeout}}).

note: type: cindex
en: verbosity, of the command-line tools
fr: verbosité, des outils en ligne de commande

note: type: cindex
en: build logs, verbosity
fr: journaux de construction, verbosité

note: type: item
en: -v @var{level}
fr: -v [@var{niveau}]

note: type: itemx
en: --verbosity=@var{level}
fr: --verbosity=@var{niveau}

note: type: table
en: Use the given verbosity @var{level}, an integer.  Choosing 0 means that no output is produced, 1 is for quiet output; 2 is similar to 1 but it additionally displays download URLs; 3 shows all the build log output on standard error.
fr: Utiliser le @var{niveau} de verbosité, en tant qu'entier.  0 signifie qu'aucune sortie n'est produite, 1 signifie une sortie silencieuse ; 2 est similaire à 1 mais affiche aussi les URL des téléchargements ; 3 montre tous les journaux de construction sur la sortie d'erreur standard.

note: type: table
en: Allow the use of up to @var{n} CPU cores for the build.  The special value @code{0} means to use as many CPU cores as available.
fr: Permet d'utiliser jusqu'à @var{n} cœurs du CPU pour la construction.  La valeur spéciale @code{0} signifie autant de cœurs que possible.

note: type: table
en: Allow at most @var{n} build jobs in parallel.  @xref{Invoking guix-daemon, @option{--max-jobs}}, for details about this option and the equivalent @command{guix-daemon} option.
fr: Permettre au maximum à @var{n} de construire des jobs en parallèle.  @xref{Invoquer guix-daemon, @option{--max-jobs}}, pour plus de détails sur cette option et l'option équivalente @command{guix-daemon}.

note: type: item
en: --debug=@var{level}
fr: --debug=@var{niveau}

note: type: table
en: Produce debugging output coming from the build daemon.  @var{level} must be an integer between 0 and 5; higher means more verbose output.  Setting a level of 4 or more may be helpful when debugging setup issues with the build daemon.
fr: Produire une sortie de débogage qui provient du démon de construction.  @var{niveau} doit être un entier entre 0 et 5 ; plus grand est ce nombre, plus verbeuse sera la sortie.  Indiquer un niveau de 4 ou plus peut être utile pour déboguer des problèmes d'installation avec le démon de construction.

note: type: Plain text
en: Behind the scenes, @command{guix build} is essentially an interface to the @code{package-derivation} procedure of the @code{(guix packages)} module, and to the @code{build-derivations} procedure of the @code{(guix derivations)} module.
fr: Sous le capot, @command{guix build} est surtout une interface à la procédure @code{package-derivation} du module @code{(guix packages)}, et à la procédure @code{build-derivations} du module @code{(guix derivations)}.

note: type: Plain text
en: In addition to options explicitly passed on the command line, @command{guix build} and other @command{guix} commands that support building honor the @env{GUIX_BUILD_OPTIONS} environment variable.
fr: En plus des options passées explicitement par la ligne de commande, @command{guix build} et les autres commandes @command{guix} qui peuvent effectuer des constructions prennent en compte la variable d'environnement @env{GUIX_BUILD_OPTIONS}.

note: type: defvr
en: {Environment Variable} GUIX_BUILD_OPTIONS
fr: {Variable d'environnement} GUIX_BUILD_OPTIONS

note: type: defvr
en: Users can define this variable to a list of command line options that will automatically be used by @command{guix build} and other @command{guix} commands that can perform builds, as in the example below:
fr: Les utilisateurs peuvent définir cette variable à une liste d'options de la ligne de commande qui seront automatiquement utilisées par @command{guix build} et les autres commandes @command{guix} qui peuvent effectuer des constructions, comme dans l'exemple suivant :

note: type: example
en: $ export GUIX_BUILD_OPTIONS="--no-substitutes -c 2 -L /foo/bar"
fr: $ export GUIX_BUILD_OPTIONS="--no-substitutes -c 2 -L /toto/titi"

note: type: defvr
en: These options are parsed independently, and the result is appended to the parsed command-line options.
fr: Ces options sont analysées indépendamment, et le résultat est ajouté aux options de la ligne de commande analysées.

note: type: cindex
en: package variants
fr: variantes de paquets

note: type: Plain text
en: Another set of command-line options supported by @command{guix build} and also @command{guix package} are @dfn{package transformation options}.  These are options that make it possible to define @dfn{package variants}---for instance, packages built from different source code.  This is a convenient way to create customized packages on the fly without having to type in the definitions of package variants (@pxref{Defining Packages}).
fr: Un autre ensemble d'options de la ligne de commande supportés par @command{guix build} et aussi @command{guix package} sont les @dfn{options de transformation de paquets}.  Ce sont des options qui rendent possible la définition de @dfn{variantes de paquets} — par exemple, des paquets construit à partir de sources différentes.  C'est une manière simple de créer des paquets personnalisés à la volée sans avoir à taper les définitions de variantes de paquets (@pxref{Defining Packages}).

note: type: Plain text
en: Package transformation options are preserved across upgrades: @command{guix upgrade} attempts to apply transformation options initially used when creating the profile to the upgraded packages.
fr: Les options de transformation des paquets sont préservées dans les mises à jour : @command{guix upgrade} tente d'appliquer aux paquets mis à jour les options de transformation initialement utilisées lors de la création du profil.

note: type: Plain text
en: The available options are listed below.  Most commands support them and also support a @option{--help-transform} option that lists all the available options and a synopsis (these options are not shown in the @option{--help} output for brevity).
fr: Les options disponibles sont énumérées ci-dessous.  La plupart des commandes les prennent en charge, ainsi qu'une option @option{--help-transform} qui liste toutes les options disponibles et un synopsis (ces options ne sont pas affichées dans la sortie @option{--help} par souci de concision).

note: type: cindex
en: performance, tuning code
fr: performance, réglage du code

note: type: cindex
en: optimization, of package code
fr: optimisation, du code des paquets

note: type: cindex
en: tuning, of package code
fr: réglage, du code des paquets

note: type: cindex
en: SIMD support
fr: prise en charge de SIMD

note: type: cindex
en: tunable packages
fr: paquets réglables

note: type: cindex
en: package multi-versioning
fr: multi-versionnement des paquets

note: type: table
en: Use versions of the packages marked as ``tunable'' optimized for @var{cpu}.  When @var{cpu} is @code{native}, or when it is omitted, tune for the CPU on which the @command{guix} command is running.
fr: Utilise les versions des paquets marqués comme « réglables » optimisées pour @var{cpu}. Lorsque @var{cpu} est @code{native}, ou s'il est omis, règle pour le CPU sur lequel la commande @command{guix} est lancée.

note: type: table
en: Valid @var{cpu} names are those recognized by the underlying compiler, by default the GNU Compiler Collection.  On x86_64 processors, this includes CPU names such as @code{nehalem}, @code{haswell}, and @code{skylake} (@pxref{x86 Options, @code{-march},, gcc, Using the GNU Compiler Collection (GCC)}).
fr: Les noms de @var{cpu} valides sont ceux reconnus par le compilateur sous-jacent, par défaut la collection de compilateurs de GNU (GCC). Sur les processurs x86_64, cela comprend les noms des CPU comme @code{nehalem}, @code{haswell} et @code{skylake} (@pxref{x86 Options, @code{-march},, gcc, Using the GNU Compiler Collection (GCC)}).

note: type: table
en: As new generations of CPUs come out, they augment the standard instruction set architecture (ISA) with additional instructions, in particular instructions for single-instruction/multiple-data (SIMD)  parallel processing.  For example, while Core2 and Skylake CPUs both implement the x86_64 ISA, only the latter supports AVX2 SIMD instructions.
fr: Au fur et à mesure de la sortie de nouvelles générations de CPU, de nouvelles instructions sont ajoutées à l'ensemble d'instruction standard de l'architecture (ISA), en particulier des instructions pour le calcul parallèle instruction-unique/données-multiples (SIMD). Par exemple, alors que les CPU Core2 et Skylake implémentent tous deux l'ISA x86_64, seul ce dernier prend en charge les instructions SIMD AVX2.

note: type: table
en: The primary gain one can expect from @option{--tune} is for programs that can make use of those SIMD capabilities @emph{and} that do not already have a mechanism to select the right optimized code at run time.  Packages that have the @code{tunable?} property set are considered @dfn{tunable packages} by the @option{--tune} option; a package definition with the property set looks like this:
fr: Le principal bénéfice attendu de @option{--tune} est que les programmes peuvent utiliser ces fonctionnalités SIMD @emph{et} qu'ils n'ont pas déjà un mécanisme pour choisir le bon code optimisé à l'exécution. Les paquets qui possèdent la propriété @code{tunable?} sont considérés comme des @dfn{paquets réglables} par l'option @option{--tune} ; une définition de paquet avec la bonne propriété ressemble à ceci :

note: type: lisp
en:   ;; This package may benefit from SIMD extensions so
      ;; mark it as "tunable".
      (properties '((tunable? . #t))))
fr:   ;; Ce paquet peut bénéficier des extensions SIMD donc
      ;; on le marque « réglable ».
      (properties '((tunable? . #t))))

note: type: table
en: Other packages are not considered tunable.  This allows Guix to use generic binaries in the cases where tuning for a specific CPU is unlikely to provide any gain.
fr: Les autres paquets ne sont pas considérés comme réglables. Cela permet à Guix d'utiliser des binaires génériques dans le cas où le réglage pour un CPU particulier ne donnera probablement aucun avantage.

note: type: table
en: Tuned packages are built with @code{-march=@var{CPU}}; under the hood, the @option{-march} option is passed to the actual wrapper by a compiler wrapper.  Since the build machine may not be able to run code for the target CPU micro-architecture, the test suite is not run when building a tuned package.
fr: Les paquets réglés sont construits avec @code{-march=@var{CPU}} ; sous le capot, l'option @option{-march} est passée à l'enveloppe par une enveloppe du compilateur. Comme la machine de construction peut ne pas être capable de lancer du code pour la micro-architecture CPU cible, la suite de tests n'est pas lancée lors de la construction d'un paquet réglé.

note: type: table
en: To reduce rebuilds to the minimum, tuned packages are @emph{grafted} onto packages that depend on them (@pxref{Security Updates, grafts}).  Thus, using @option{--no-grafts} cancels the effect of @option{--tune}.
fr: Pour réduire les reconstructions au minimum, les paquets réglés sont @emph{greffés} sur les paquets qui en dépendent (@pxref{Security Updates, grafts}). Ainsi, utiliser @option{--no-grafts} annule l'effet de @option{--tune}.

note: type: table
en: We call this technique @dfn{package multi-versioning}: several variants of tunable packages may be built, one for each CPU variant.  It is the coarse-grain counterpart of @dfn{function multi-versioning} as implemented by the GNU tool chain (@pxref{Function Multiversioning,,, gcc, Using the GNU Compiler Collection (GCC)}).
fr: Nous appelons cette technique le @dfn{multi-versionement des paquets} : on peut construire plusieurs variantes d'un paquet réglable, une pour chaque variante de CPU. C'est la contrepartie à gros grain du @dfn{multi-versionement fonctionnel} implémenté par la chaine d'outils de GNU (@pxref{Function Multiversioning,,, gcc, Using the GNU Compiler Collection (GCC)}).

note: type: itemx
en: --with-source=@var{package}=@var{source}
fr: --with-source=@var{paquet}=@var{source}

note: type: itemx
en: --with-source=@var{package}@@@var{version}=@var{source}
fr: --with-source=@var{paquet}@@@var{version}=@var{source}

note: type: table
en: Use @var{source} as the source of @var{package}, and @var{version} as its version number.  @var{source} must be a file name or a URL, as for @command{guix download} (@pxref{Invoking guix download}).
fr: Utilise @var{source} comme la source de @var{paquet}, et @var{version} comme son numéro de version.  @var{source} doit être un nom de fichier ou une URL, comme pour @command{guix download} (@pxref{Invoking guix download}).

note: type: table
en: When @var{package} is omitted, it is taken to be the package name specified on the command line that matches the base of @var{source}---e.g., if @var{source} is @code{/src/guile-2.0.10.tar.gz}, the corresponding package is @code{guile}.
fr: Lorsque @var{paquet} est omis, la commande utilisera le nom de paquet spécifié par la base de @var{source} — p.@: ex.@: si @var{source} est @code{/src/guix-2.0.10.tar.gz}, le paquet correspondant est @code{guile}.

note: type: table
en: Likewise, when @var{version} is omitted, the version string is inferred from @var{source}; in the previous example, it is @code{2.0.10}.
fr: De même, lorsque @var{version} est omis, la chaîne de version est inférée à partir de @var{source} ; dans l'exemple précédent, il s'agit de @code{2.0.10}.

note: type: table
en: This option allows users to try out versions of packages other than the one provided by the distribution.  The example below downloads @file{ed-1.7.tar.gz} from a GNU mirror and uses that as the source for the @code{ed} package:
fr: Cette option permet aux utilisateurs d'essayer des version des paquets différentes de celles fournies par la distribution.  L'exemple ci-dessous télécharge @file{ed-1.7.tar.g} depuis un miroir GNU et l'utilise comme source pour le paquet @code{ed} :

note: type: table
en: As a developer, @option{--with-source} makes it easy to test release candidates, and even to test their impact on packages that depend on them:
fr: En tant que développeur·euse, @option{--with-source} permet de tester facilement des version bêta, et même de vérifier leur impact sur les paquets qui en dépendent :

note: type: table
en: @dots{} or to build from a checkout in a pristine environment:
fr: @dots{} ou pour construire un dépôt de gestion de version dans un environnement vierge :

note: type: item
en: --with-input=@var{package}=@var{replacement}
fr: --with-input=@var{paquet}=@var{remplaçant}

note: type: table
en: Replace dependency on @var{package} by a dependency on @var{replacement}.  @var{package} must be a package name, and @var{replacement} must be a package specification such as @code{guile} or @code{guile@@1.8}.
fr: Remplace la dépendance sur @var{paquet} par une dépendance à @var{remplaçant}.  @var{paquet} doit être un nom de paquet et @var{remplaçant} doit être une spécification de paquet comme @code{guile} ou @code{guile@@1.8}.

note: type: table
en: For instance, the following command builds Guix, but replaces its dependency on the current stable version of Guile with a dependency on the legacy version of Guile, @code{guile@@2.0}:
fr: Par exemple, la commande suivante construit Guix, mais remplace sa dépendance à la version stable actuelle de Guile par une dépendance à une ancienne version de Guile, @code{guile@@2.0} :

note: type: table
en: This is a recursive, deep replacement.  So in this example, both @code{guix} and its dependency @code{guile-json} (which also depends on @code{guile}) get rebuilt against @code{guile@@2.0}.
fr: C'est un remplacement récursif profond.  Donc dans cet exemple, à la fois @code{guix} et ses dépendances @code{guile-json} (qui dépend aussi de @code{guile}) sont reconstruits avec @code{guile@@2.0}.

note: type: table
en: This is implemented using the @code{package-input-rewriting} Scheme procedure (@pxref{Defining Packages, @code{package-input-rewriting}}).
fr: Cette option est implémentée avec la procédure Scheme @code{package-input-rewriting} (@pxref{Defining Packages, @code{package-input-rewriting}}).

note: type: item
en: --with-graft=@var{package}=@var{replacement}
fr: --with-graft=@var{paquet}=@var{remplaçant}

note: type: table
en: This is similar to @option{--with-input} but with an important difference: instead of rebuilding the whole dependency chain, @var{replacement} is built and then @dfn{grafted} onto the binaries that were initially referring to @var{package}.  @xref{Security Updates}, for more information on grafts.
fr: Cette option est similaire à @option{--with-input} mais avec une différence importante : plutôt que de reconstruire la chaîne de dépendance complète, @var{remplaçant} est construit puis @dfn{greffé} sur les binaires qui référençaient initialement @var{paquet}.  @xref{Security Updates}, pour plus d'information sur les greffes.

note: type: table
en: For example, the command below grafts version 3.5.4 of GnuTLS onto Wget and all its dependencies, replacing references to the version of GnuTLS they currently refer to:
fr: Par exemple, la commande ci-dessous greffe la version 3.5.4 de GnuTLS sur Wget et toutes ses dépendances, en remplaçant les références à la version actuelle de GnuTLS à laquelle ils se réfèrent actuellement :

note: type: table
en: This has the advantage of being much faster than rebuilding everything.  But there is a caveat: it works if and only if @var{package} and @var{replacement} are strictly compatible---for example, if they provide a library, the application binary interface (ABI) of those libraries must be compatible.  If @var{replacement} is somehow incompatible with @var{package}, then the resulting package may be unusable.  Use with care!
fr: Cela a l'avantage d'être bien plus rapide que de tout reconstruire.  Mais il y a un piège : cela ne fonctionne que si @var{paquet} et @var{remplaçant} sont strictement compatibles — par exemple, s'ils fournissent une bibliothèque, l'interface binaire applicative (ABI) de ces bibliothèques doivent être compatibles.  Si @var{remplaçant} est incompatible avec @var{paquet}, alors le paquet qui en résulte peut devenir inutilisable.  À utiliser avec précaution !

note: type: cindex
en: debugging info, rebuilding
fr: informations de débogage, reconstruire

note: type: item
en: --with-debug-info=@var{package}
fr: --with-debug-info=@var{paquet}

note: type: table
en: Build @var{package} in a way that preserves its debugging info and graft it onto packages that depend on it.  This is useful if @var{package} does not already provide debugging info as a @code{debug} output (@pxref{Installing Debugging Files}).
fr: Construire @var{paquet} de manière à préserver ses informations de débogage et les greffer sur les paquets qui en dépendent.  Cela est utile si @var{paquet} ne fournit pas déjà les informations de débogage sous forme de sortie @code{debug} (@pxref{Installing Debugging Files}).

note: type: table
en: For example, suppose you're experiencing a crash in Inkscape and would like to see what's up in GLib, a library deep down in Inkscape's dependency graph.  GLib lacks a @code{debug} output, so debugging is tough.  Fortunately, you rebuild GLib with debugging info and tack it on Inkscape:
fr: Par exemple, supposons que vous subissiez un plantage de Inkscape et que vous vouliez voir ce qui se passe dans GLib, une bibliothèque au fond du graphe de dépendance d'Inkscape.  GLib n'a pas de sortie @code{debug}, donc le débogage est difficile.  Heureusement, vous reconstruisez la GLib avec les informations de débogage et vous l'installez dans Inkscape :

note: type: table
en: Only GLib needs to be recompiled so this takes a reasonable amount of time.  @xref{Installing Debugging Files}, for more info.
fr: Seule GLib doit être recompilée, ce qui prend un temps raisonnable.  @xref{Installing Debugging Files}, pour plus d'informations.

note: type: quotation
en: Under the hood, this option works by passing the @samp{#:strip-binaries? #f} to the build system of the package of interest (@pxref{Build Systems}).  Most build systems support that option but some do not.  In that case, an error is raised.
fr: Sous le capot, cette option fonctionne en passant par le @samp{#:strip-binaries ? #f} au système de construction du paquet qui nous intéresse (@pxref{Build Systems}).  La plupart des systèmes de compilation supportent cette option, mais certains ne le font pas.  Dans ce cas, une erreur se produit.

note: type: quotation
en: Likewise, if a C/C++ package is built without @code{-g} (which is rarely the case), debugging info will remain unavailable even when @code{#:strip-binaries?} is false.
fr: De même, si un paquet C/C++ est construit sans @code{-g} (ce qui est rarement le cas), les informations de débogage resteront indisponibles même si @code{#:strip-binaries?} est faux.

note: type: cindex
en: tool chain, changing the build tool chain of a package
fr: chaîne d'outils, changer la chaîne d'outils d'un paquet

note: type: table
en: This option changes the compilation of @var{package} and everything that depends on it so that they get built with @var{toolchain} instead of the default GNU tool chain for C/C++.
fr: Cette option modifie la compilation de @var{package} et de tout ce qui en dépend afin qu'ils soient construits avec @var{toolchain} au lieu de la chaîne d'outils GNU par défaut pour C/C++.

note: type: table
en: The command above builds a variant of the @code{fftw} and @code{fftwf} packages using version 10 of @code{gcc-toolchain} instead of the default tool chain, and then builds a variant of the GNU@tie{}Octave command-line interface using them.  GNU@tie{}Octave itself is also built with @code{gcc-toolchain@@10}.
fr: La commande ci-dessus construit une variante des paquets @code{fftw} et @code{fftwf} en utilisant la version 10 de @code{gcc-toolchain} au lieu de la chaîne d'outils par défaut, puis construit une variante de l'interface en ligne de commande GNU@tie{}Octave en les utilisant.  GNU@tie{}Octave lui-même est également construit avec @code{gcc-toolchain@@10}.

note: type: table
en: This other example builds the Hardware Locality (@code{hwloc}) library and its dependents up to @code{intel-mpi-benchmarks} with the Clang C compiler:
fr: Cet autre exemple construit la bibliothèque Hardware Locality (@code{hwloc}) et ses dépendances jusqu'à @code{intel-mpi-benchmarks} avec le compilateur Clang C :

note: type: quotation
en: There can be application binary interface (ABI) incompatibilities among tool chains.  This is particularly true of the C++ standard library and run-time support libraries such as that of OpenMP@.  By rebuilding all dependents with the same tool chain, @option{--with-c-toolchain} minimizes the risks of incompatibility but cannot entirely eliminate them.  Choose @var{package} wisely.
fr: Il peut y avoir des incompatibilités d'interface binaire d'application (ABI) entre les chaînes d'outils.  Cela est particulièrement vrai pour la bibliothèque standard C++ et les bibliothèques de support d'exécution telles que celle d'OpenMP@.  En reconstruisant toutes les dépendances avec la même chaîne d'outils, @option{--with-c-toolchain} minimise les risques d'incompatibilité mais ne peut pas les éliminer entièrement.  Choisissez @var{package} judicieusement.

note: type: item
en: --with-git-url=@var{package}=@var{url}
fr: --with-git-url=@var{paquet}=@var{url}

note: type: cindex
en: Git, using the latest commit
fr: Git, utiliser le dernier commit

note: type: cindex
en: latest commit, building
fr: dernier commit, construction

note: type: table
en: Build @var{package} from the latest commit of the @code{master} branch of the Git repository at @var{url}.  Git sub-modules of the repository are fetched, recursively.
fr: Construire @var{paquet} depuis le dernier commit de la branche @code{master} du dépôt sur @var{url}.  Les sous-modules Git du dépôt sont récupérés, récursivement.

note: type: table
en: For example, the following command builds the NumPy Python library against the latest commit of the master branch of Python itself:
fr: Par exemple, la commande suivante construit la bibliothèque Python NumPy avec le dernier commit de la branche master de Python lui-même :

note: type: table
en: This option can also be combined with @option{--with-branch} or @option{--with-commit} (see below).
fr: Cette option peut aussi être combinée avec @option{--with-branch} ou @option{--with-commit} (voir plus bas).

note: type: cindex
en: continuous integration
fr: intégration continue

note: type: table
en: Obviously, since it uses the latest commit of the given branch, the result of such a command varies over time.  Nevertheless it is a convenient way to rebuild entire software stacks against the latest commit of one or more packages.  This is particularly useful in the context of continuous integration (CI).
fr: Évidemment, comme cela utilise le dernier commit d'une branche donnée, le résultat d'une telle commande varie avec le temps.  Néanmoins c'est une manière pratique pour reconstruire des piles logicielles entières avec le dernier commit d'un ou plusieurs paquets.  C'est particulièrement pratique dans le contexte d'une intégration continue.

note: type: table
en: Checkouts are kept in a cache under @file{~/.cache/guix/checkouts} to speed up consecutive accesses to the same repository.  You may want to clean it up once in a while to save disk space.
fr: Les clones sont gardés dans un cache dans @file{~/.cache/guix/checkouts} pour accélérer les accès consécutifs au même dépôt.  Vous pourriez vouloir le nettoyer de temps en temps pour récupérer de l'espace disque.

note: type: item
en: --with-branch=@var{package}=@var{branch}
fr: --with-branch=@var{paquet}=@var{branche}

note: type: table
en: Build @var{package} from the latest commit of @var{branch}.  If the @code{source} field of @var{package} is an origin with the @code{git-fetch} method (@pxref{origin Reference}) or a @code{git-checkout} object, the repository URL is taken from that @code{source}.  Otherwise you have to use @option{--with-git-url} to specify the URL of the Git repository.
fr: Construire @var{paquet} à partir du dernier commit de la @var{branche}.  Si le champ @code{source} de @var{paquet} est une origine avec la méthode @code{git-fetch} (@pxref{origin Reference}) ou un objet @code{git-checkout}, l'URL du dépôt est récupérée à partir de cette @code{source}.  Sinon, vous devez utiliser @option{--with-git-url} pour spécifier l'URL du dépôt Git.

note: type: table
en: For instance, the following command builds @code{guile-sqlite3} from the latest commit of its @code{master} branch, and then builds @code{guix} (which depends on it) and @code{cuirass} (which depends on @code{guix}) against this specific @code{guile-sqlite3} build:
fr: Par exemple, la commande suivante construit @code{guile-sqlite3} à partir du dernier commit de sa branche @code{master}, puis construit @code{guix} (qui en dépend) et @code{cuirass} (qui dépend de @code{guix}) avec cette construction spécifique de @code{guile-sqlite3} :

note: type: item
en: --with-commit=@var{package}=@var{commit}
fr: --with-commit=@var{paquet}=@var{commit}

note: type: table
en: This is similar to @option{--with-branch}, except that it builds from @var{commit} rather than the tip of a branch.  @var{commit} must be a valid Git commit SHA1 identifier, a tag, or a @command{git describe} style identifier such as @code{1.0-3-gabc123}.
fr: Cela est similaire à @option{--with-branch}, sauf qu'elle construite à partir de @var{commit} au lieu du sommet d'une branche.  @var{commit} doit être un identifiant SHA1 de commit Git valide, un tag ou un identifiant dans le style de @command{git describe} comme @code{1.0-3-gabc123}.

note: type: item
en: --with-patch=@var{package}=@var{file}
fr: --with-patch=@var{paquet}=@var{fichier}

note: type: table
en: Add @var{file} to the list of patches applied to @var{package}, where @var{package} is a spec such as @code{python@@3.8} or @code{glibc}.  @var{file} must contain a patch; it is applied with the flags specified in the @code{origin} of @var{package} (@pxref{origin Reference}), which by default includes @code{-p1} (@pxref{patch Directories,,, diffutils, Comparing and Merging Files}).
fr: Ajoute @var{fichier} à la liste des correctifs appliqués à @var{paquet}, où @var{paquet} est une spécification comme @code{python@@3.8} ou @code{glibc}. @var{fichier} doit contenir un correctif ; il est appliqué avec les drapeaux spécifiés dans l'@code{origin} de @var{paquet} (@pxref{origin Reference}), qui par défaut inclus @code{-p1} @pxref{patch Directories,,, diffutils, Comparing and Merging Files}).

note: type: table
en: As an example, the command below rebuilds Coreutils with the GNU C Library (glibc) patched with the given patch:
fr: Par exemple, la commande ci-dessous reconstruit Coreutils avec la bibliothèque C de GNU (glibc) corrigée avec le correctif donné :

note: type: table
en: In this example, glibc itself as well as everything that leads to Coreutils in the dependency graph is rebuilt.
fr: Dans cet exemple, glibc lui-meme ainsi que tout ce qui mène à Coreutils dans le graphe des dépendances est reconstruit.

note: type: cindex
en: upstream, latest version
fr: amont, dernière version

note: type: item
en: --with-latest=@var{package}
fr: --with-latest=@var{paquet}

note: type: table
en: So you like living on the bleeding edge? This option is for you! It replaces occurrences of @var{package} in the dependency graph with its latest upstream version, as reported by @command{guix refresh} (@pxref{Invoking guix refresh}).
fr: Alors vous aimez les toutes dernières technologies ? Cette option est faite pour vous ! Elle remplace les occurence de @var{paquet} dans le graphe des dépendances avec sa toute dernière version en amont, telle que rapportée par @command{guix refresh} (@pxref{Invoking guix refresh}).

note: type: table
en: It does so by determining the latest upstream release of @var{package} (if possible), downloading it, and authenticating it @emph{if} it comes with an OpenPGP signature.
fr: Elle fait cela en déterminant la dernière version publiée en amont (si possible), en la téléchargeant et en l'authentifiant @emph{si} elle propose une signature OpenPGP.

note: type: table
en: As an example, the command below builds Guix against the latest version of Guile-JSON:
fr: Par exemple, la commande ci-dessous construit Guix avec la dernière version de Guile-JSON :

note: type: table
en: There are limitations.  First, in cases where the tool cannot or does not know how to authenticate source code, you are at risk of running malicious code; a warning is emitted in this case.  Second, this option simply changes the source used in the existing package definitions, which is not always sufficient: there might be additional dependencies that need to be added, patches to apply, and more generally the quality assurance work that Guix developers normally do will be missing.
fr: Il y a des limites. Déjà, dans les cas où l'outil ne peut pas ou ne sait pas comment authentifier le code source, vous risquez de charger du code malveillant ; un avertissement est émis dans ce cas. Ensuite, cette option change simplement la source utilisée dans les définitions existantes des paquets, ce qui n'est pas toujours suffisant : il peut y avoir des dépendances supplémentaires qui doivent être ajoutées, des correctifs à appliquer, et plus généralement tout le travail d'assurance qualité que les développeurs de Guix font habituellement sera absent.

note: type: table
en: You've been warned! In all the other cases, it's a snappy way to stay on top.  We encourage you to submit patches updating the actual package definitions once you have successfully tested an upgrade (@pxref{Contributing}).
fr: On vous aura prévenu ! Dans tous les autres cas, c'est une méthode pour rester à la hauteur qui a du punch ! Nous vous encourageons à soumettre des correctifs pour les définitions des paquets quand vous aurez testé une mise à jour (@pxref{Contributing}).

note: type: cindex
en: test suite, skipping
fr: suite de tests, passer outre

note: type: item
en: --without-tests=@var{package}
fr: --without-tests=@var{paquet}

note: type: table
en: Build @var{package} without running its tests.  This can be useful in situations where you want to skip the lengthy test suite of a intermediate package, or if a package's test suite fails in a non-deterministic fashion.  It should be used with care because running the test suite is a good way to ensure a package is working as intended.
fr: Construire @var{paquet} sans lancer la suite de tests. Cela peut être utile dans les situations où vous voulez éviter la longue série de tests d'un paquet intermédiaire, ou si une suite de tests de paquet échoue dans un mode non déterministe. Il doit être utilisé avec précaution car l'exécution de la suite de tests est un bon moyen de s'assurer qu'un paquet fonctionne comme prévu.

note: type: table
en: Turning off tests leads to a different store item.  Consequently, when using this option, anything that depends on @var{package} must be rebuilt, as in this example:
fr: L'arrêt des tests conduit à un autre élément du dépôt.  Par conséquent, lorsque vous utilisez cette option, tout ce qui dépend de @var{paquet} doit être reconstruit, comme dans cet exemple :

note: type: table
en: The command above installs @code{python-notebook} on top of @code{python} built without running its test suite.  To do so, it also rebuilds everything that depends on @code{python}, including @code{python-notebook} itself.
fr: La commande ci-dessus installe @code{python-notebook} par dessus @code{python}, construit sans exécuter sa suite de tests.  Pour ce faire, elle reconstruit également tout ce qui dépend de @code{python}, y compris @code{python-notebook} lui-même.

note: type: table
en: Internally, @option{--without-tests} relies on changing the @code{#:tests?} option of a package's @code{check} phase (@pxref{Build Systems}).  Note that some packages use a customized @code{check} phase that does not respect a @code{#:tests? #f} setting.  Therefore, @option{--without-tests} has no effect on these packages.
fr: En interne, @option{--without-tests} repose sur le changement de l'option @code{#:tests?} de la phase @code{check} d'un paquet (@pxref{Build Systems}).  Notez que certains paquets utilisent une phase @code{check} personnalisée qui ne respecte pas le paramètre @code{#:tests? #f}.  Par conséquent, @option{--without-tests} n'a aucun effet sur ces paquets.

note: type: Plain text
en: Wondering how to achieve the same effect using Scheme code, for example in your manifest, or how to write your own package transformation? @xref{Defining Package Variants}, for an overview of the programming interfaces available.
fr: Vous vous demandez comme faire la même chose dans du code Scheme, par exemple dans votre manifeste, ou comme écrire votre propre transformation de paquets ? @xref{Defining Package Variants}, pour un aperçu des interfaces de programmation disponibles.

note: type: Plain text
en: The command-line options presented below are specific to @command{guix build}.
fr: Les options de la ligne de commande ci-dessous sont spécifiques à @command{guix build}.

note: type: table
en: Build quietly, without displaying the build log; this is equivalent to @option{--verbosity=0}.  Upon completion, the build log is kept in @file{/var} (or similar) and can always be retrieved using the @option{--log-file} option.
fr: Construire silencieusement, sans afficher les journaux de construction ; c'est équivalent à @option{--verbosity=0}.  À la fin, le journal de construction est gardé dans @file{/var} (ou similaire) et on peut toujours l'y trouver avec l'option @option{--log-file}.

note: type: table
en: Build the package, derivation, or other file-like object that the code within @var{file} evaluates to (@pxref{G-Expressions, file-like objects}).
fr: Construit le paquet, la dérivation ou l'objet simili-fichier en lequel le code dans @var{file} s'évalue (@pxref{G-Expressions, file-like objects}).

note: type: table
en: As an example, @var{file} might contain a package definition like this (@pxref{Defining Packages}):
fr: Par exemple, @var{file} peut contenir une définition de paquet comme ceci (@pxref{Defining Packages}) :

note: type: table
en: The @var{file} may also contain a JSON representation of one or more package definitions.  Running @code{guix build -f} on @file{hello.json} with the following contents would result in building the packages @code{myhello} and @code{greeter}:
fr: @var{file} peut également contenir une représentation JSON d'une ou plusieurs définitions de paquets.  L'exécution de @code{guix build -f} sur @file{hello.json} avec le contenu suivant entraînerait la construction des paquets @code{myhello} et @code{greeter} :

note: type: table
en: Build all packages listed in the given @var{manifest} (@pxref{profile-manifest, @option{--manifest}}).
fr: Construire tous les paquets listés dans un @var{manifest} donné (@pxref{profile-manifest, @option{--manifest}}).

note: type: table
en: Build the package or derivation @var{expr} evaluates to.
fr: Construit le paquet ou la dérivation en lequel @var{expr} s'évalue.

note: type: table
en: For example, @var{expr} may be @code{(@@ (gnu packages guile)  guile-1.8)}, which unambiguously designates this specific variant of version 1.8 of Guile.
fr: Par exemple, @var{expr} peut être @code{(@@ (gnu packages guile)  guile-1.8)}, qui désigne sans ambiguïté cette variante spécifique de la version 1.8 de Guile.

note: type: table
en: Alternatively, @var{expr} may be a G-expression, in which case it is used as a build program passed to @code{gexp->derivation} (@pxref{G-Expressions}).
fr: Autrement, @var{exp} peut être une G-expression, auquel cas elle est utilisée comme un programme de construction passé à @code{gexp->derivation} (@pxref{G-Expressions}).

note: type: table
en: Lastly, @var{expr} may refer to a zero-argument monadic procedure (@pxref{The Store Monad}).  The procedure must return a derivation as a monadic value, which is then passed through @code{run-with-store}.
fr: Enfin, @var{expr} peut se référer à une procédure monadique à au moins un argument (@pxref{The Store Monad}).  La procédure doit renvoyer une dérivation comme une valeur monadique, qui est ensuite lancée à travers @code{run-with-store}.

note: type: table
en: Build the source derivations of the packages, rather than the packages themselves.
fr: Construit les dérivation source des paquets, plutôt que des paquets eux-mêmes.

note: type: table
en: For instance, @code{guix build -S gcc} returns something like @file{/gnu/store/@dots{}-gcc-4.7.2.tar.bz2}, which is the GCC source tarball.
fr: Par exemple, @code{guix build -S gcc} renvoie quelque chose comme @file{/gnu/store/@dots{}-gcc-4.7.2.tar.bz2}, qui est l'archive des sources de GCC.

note: type: table
en: The returned source tarball is the result of applying any patches and code snippets specified in the package @code{origin} (@pxref{Defining Packages}).
fr: L'archive des sources renvoyée est le résultat de l'application des correctifs et des extraits de code éventuels spécifiés dans le champ @code{origin} du paquet (@pxref{Defining Packages}).

note: type: cindex
en: source, verification
fr: source, vérification

note: type: table
en: As with other derivations, the result of building a source derivation can be verified using the @option{--check} option (@pxref{build-check}).  This is useful to validate that a (potentially already built or substituted, thus cached) package source matches against its declared hash.
fr: Comme avec les autres dérivations, le résultat de la construction des sources peut être vérifié avec l'option @option{--check} (@pxref{build-check}). C'est utile pour valider que les source (éventuellement déjà construites ou substituées, donc en cache) correspondent au hash déclaré.

note: type: table
en: Note that @command{guix build -S} compiles the sources only of the specified packages.  They do not include the sources of statically linked dependencies and by themselves are insufficient for reproducing the packages.
fr: Notez que @command{guix build -S} compile seulement les sources des paquets spécifiés. Les sources de dépendances statiquement liées ne sont pas incluses et sont en elles-mêmes insuffisantes pour reproduire les paquets.

note: type: table
en: Fetch and return the source of @var{package-or-derivation} and all their dependencies, recursively.  This is a handy way to obtain a local copy of all the source code needed to build @var{packages}, allowing you to eventually build them even without network access.  It is an extension of the @option{--source} option and can accept one of the following optional argument values:
fr: Récupère et renvoie la source de @var{package-or-derivation} et toute ses dépendances, récursivement.  C'est pratique pour obtenir une copie locale de tous les codes sources requis pour construire @var{packages}, ce qui vous permet de les construire plus tard même sans accès au réseau.  C'est une extension de l'option @option{--source} et elle peut accepter l'un des arguments facultatifs suivants :

note: type: table
en: This value causes the @option{--sources} option to behave in the same way as the @option{--source} option.
fr: Cette valeur fait que l'option @option{--sources} se comporte comme l'option @option{--source}.

note: type: table
en: Build the source derivations of all packages, including any source that might be listed as @code{inputs}.  This is the default value.
fr: Construit les dérivations des sources de tous les paquets, dont les sources qui pourraient être listées dans @code{inputs}.  C'est la valeur par défaut.

note: type: table
en: Build the source derivations of all packages, as well of all transitive inputs to the packages.  This can be used e.g.@: to prefetch package source for later offline building.
fr: Construire les dérivations des sources de tous les paquets, ainsi que toutes celles des entrées transitives des paquets.  On peut par exemple utiliser cette option pour précharger les sources des paquets pour les construire plus tard hors ligne.

note: type: table
en: Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of the system type of the build host.  The @command{guix build} command allows you to repeat this option several times, in which case it builds for all the specified systems; other commands ignore extraneous @option{-s} options.
fr: Essayer de construire pour @var{system} — p.@: ex.@: @code{i686-linux} — au lieu du type de système de l'hôte.  La commande @command{guix build} vous permet de répéter cette option plusieurs fois, auquel cas elle construit pour tous les systèmes spécifiés ; les autres commandes ignorent les options @option{-s} supplémentaires.

note: type: quotation
en: The @option{--system} flag is for @emph{native} compilation and must not be confused with cross-compilation.  See @option{--target} below for information on cross-compilation.
fr: Le drapeau @option{--system} est utilisé pour une compilation @emph{native} et ne doit pas être confondu avec une compilation croisée.  Voir @option{--target} ci-dessous pour des informations sur la compilation croisée.

note: type: table
en: An example use of this is on Linux-based systems, which can emulate different personalities.  For instance, passing @option{--system=i686-linux} on an @code{x86_64-linux} system or @option{--system=armhf-linux} on an @code{aarch64-linux} system allows you to build packages in a complete 32-bit environment.
fr: Un exemple d'utilisation de ceci sur les systèmes Linux, qui peut émuler différentes personnalités. Par exemple, passer @option{--system=i686-linux} sur un système @code{x86_64-linux} ou @option{--system=armhf-linux} sur un système @code{aarch64-linux} vous permet de construire des paquets dans un environnement 32-bit complet.

note: type: quotation
en: Building for an @code{armhf-linux} system is unconditionally enabled on @code{aarch64-linux} machines, although certain aarch64 chipsets do not allow for this functionality, notably the ThunderX.
fr: La possibilité de construire pour un système @code{armhf-linux} est activé sans condition sur les machines @code{aarch64-linux}, bien que certaines puces aarch64 n'en soient pas capables, comme les ThunderX.

note: type: table
en: Similarly, when transparent emulation with QEMU and @code{binfmt_misc} is enabled (@pxref{Virtualization Services, @code{qemu-binfmt-service-type}}), you can build for any system for which a QEMU @code{binfmt_misc} handler is installed.
fr: De même, lorsque l'émulation transparente avec QEMU et @code{binfnmt_misc} est activée (@pxref{Virtualization Services, @code{qemu-binfmt-service-type}}), vous pouvez construire pour n'importe quel système pour lequel un gestionnaire QEMU @code{binfmt_misc} est installé.

note: type: table
en: Builds for a system other than that of the machine you are using can also be offloaded to a remote machine of the right architecture.  @xref{Daemon Offload Setup}, for more information on offloading.
fr: Les constructions pour un autre système que celui de la machine que vous utilisez peuvent aussi être déchargées à une machine distante de la bonne architecture.  @xref{Daemon Offload Setup}, pour plus d'information sur le déchargement.

note: type: table
en: Cross-build for @var{triplet}, which must be a valid GNU triplet, such as @code{"aarch64-linux-gnu"} (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf}).
fr: Effectuer une compilation croisée pour @var{triplet} qui doit être un triplet GNU valide, comme @code{"aarch64-linux-gnu"} (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf}).

note: type: table
en: List all the supported systems, that can be passed as an argument to @option{--system}.
fr: Liste tous les systèmes pris en charge, qui peuvent être passés en argument à @option{--system}.

note: type: table
en: List all the supported targets, that can be passed as an argument to @option{--target}.
fr: Liste toutes les cibles prises en charge, qui peuvent être passées en argument à @option{--target}.

note: type: anchor{#1}
en: build-check
fr: vérification de la construction

note: type: cindex
en: determinism, checking
fr: déterminisme, vérification

note: type: cindex
en: reproducibility, checking
fr: reproductibilité, vérification

note: type: table
en: Rebuild @var{package-or-derivation}, which are already available in the store, and raise an error if the build results are not bit-for-bit identical.
fr: Reconstruit les @var{package-or-derivation}, qui sont déjà disponibles dans le dépôt et lève une erreur si les résultats des constructions ne sont pas identiques bit-à-bit.

note: type: table
en: This mechanism allows you to check whether previously installed substitutes are genuine (@pxref{Substitutes}), or whether the build result of a package is deterministic.  @xref{Invoking guix challenge}, for more background information and tools.
fr: Ce mécanisme vous permet de vérifier si les substituts précédemment installés sont authentiques (@pxref{Substituts}) ou si le résultat de la construction d'un paquet est déterministe. @xref{Invoking guix challenge} pour plus d'informations et pour les outils.

note: type: cindex
en: repairing store items
fr: réparer les éléments du dépôt

note: type: table
en: Attempt to repair the specified store items, if they are corrupt, by re-downloading or rebuilding them.
fr: Essaye de réparer les éléments du dépôt spécifiés, s'ils sont corrompus, en les téléchargeant ou en les construisant à nouveau.

note: type: table
en: This operation is not atomic and thus restricted to @code{root}.
fr: Cette opération n'est pas atomique et donc restreinte à l'utilisateur @code{root}.

note: type: table
en: Return the derivation paths, not the output paths, of the given packages.
fr: Renvoie les chemins de dérivation, et non les chemins de sortie, des paquets donnés.

note: type: cindex
en: GC roots, adding
fr: Racines du GC, ajout

note: type: cindex
en: garbage collector roots, adding
fr: ajout de racines au ramasse-miettes

note: type: table
en: Make @var{file} a symlink to the result, and register it as a garbage collector root.
fr: Fait de @var{fichier} un lien symbolique vers le résultat, et l'enregistre en tant que racine du ramasse-miettes.

note: type: table
en: Consequently, the results of this @command{guix build} invocation are protected from garbage collection until @var{file} is removed.  When that option is omitted, build results are eligible for garbage collection as soon as the build completes.  @xref{Invoking guix gc}, for more on GC roots.
fr: En conséquence, les résultats de cette invocation de @command{guix build} sont protégés du ramasse-miettes jusqu'à ce que @var{fichier} soit supprimé.  Lorsque cette option est omise, les constructions sont susceptibles d'être glanées.

note: type: cindex
en: build logs, access
fr: journaux de construction, accès

note: type: table
en: Return the build log file names or URLs for the given @var{package-or-derivation}, or raise an error if build logs are missing.
fr: Renvoie les noms des journaux de construction ou les URL des @var{package-or-derivation} donnés ou lève une erreur si les journaux de construction sont absents.

note: type: table
en: This works regardless of how packages or derivations are specified.  For instance, the following invocations are equivalent:
fr: Cela fonctionne indépendamment de la manière dont les paquets ou les dérivations sont spécifiées.  Par exemple, les invocations suivantes sont équivalentes :

note: type: table
en: If a log is unavailable locally, and unless @option{--no-substitutes} is passed, the command looks for a corresponding log on one of the substitute servers (as specified with @option{--substitute-urls}).
fr: Si un journal n'est pas disponible localement, à moins que @option{--no-substitutes} ne soit passé, la commande cherche un journal correspondant sur l'un des serveurs de substituts (tels que spécifiés avec @option{--substitute-urls}).

note: type: table
en: So for instance, imagine you want to see the build log of GDB on @code{aarch64}, but you are actually on an @code{x86_64} machine:
fr: Donc par exemple, imaginons que vous souhaitiez voir le journal de construction de GDB sur @code{aarch64}, mais que vous n'avez qu'une machine @code{x86_64} :

note: type: table
en: You can freely access a huge library of build logs!
fr: Vous pouvez accéder librement à une vaste bibliothèque de journaux de construction !

note: type: cindex
en: build failures, debugging
fr: échecs de construction, débogage

note: type: Plain text
en: When defining a new package (@pxref{Defining Packages}), you will probably find yourself spending some time debugging and tweaking the build until it succeeds.  To do that, you need to operate the build commands yourself in an environment as close as possible to the one the build daemon uses.
fr: Lors de la définition d'un nouveau paquet (@pxref{Defining Packages}), vous passerez probablement du temps à déboguer et modifier la construction jusqu'à ce que ça marche.  Pour cela, vous devez effectuer les commandes de construction vous-même dans un environnement le plus proche possible de celui qu'utilise le démon de construction.

note: type: Plain text
en: To that end, the first thing to do is to use the @option{--keep-failed} or @option{-K} option of @command{guix build}, which will keep the failed build tree in @file{/tmp} or whatever directory you specified as @env{TMPDIR} (@pxref{Common Build Options, @option{--keep-failed}}).
fr: Pour cela, la première chose à faire est d'utiliser l'option @option{--keep-failed} ou @option{-K} de @command{guix build}, qui gardera la construction échouée de l'arborescence dans @file{/tmp} ou le répertoire spécifié par @env{TMPDIR} (@pxref{Common Build Options, @option{--keep-failed}}).

note: type: Plain text
en: From there on, you can @command{cd} to the failed build tree and source the @file{environment-variables} file, which contains all the environment variable definitions that were in place when the build failed.  So let's say you're debugging a build failure in package @code{foo}; a typical session would look like this:
fr: À partir de là, vous pouvez vous déplacer dans l'arborescence de construction et sourcer le fichier @file{environment-variables}, qui contient toutes les variables d'environnement qui étaient définies lorsque la construction a échoué.  Disons que vous déboguez un échec de construction dans le paquet @code{toto} ; une session typique ressemblerait à cela :

note: type: example
en: $ guix build foo -K
    @dots{} @i{build fails}
    $ cd /tmp/guix-build-foo.drv-0
    $ source ./environment-variables
    $ cd foo-1.2
fr: $ guix build toto -K
    @dots{} @i{build fails}
    $ cd /tmp/guix-build-toto.drv-0
    $ source ./environment-variables
    $ cd toto-1.2

note: type: Plain text
en: Now, you can invoke commands as if you were the daemon (almost) and troubleshoot your build process.
fr: Maintenant, vous pouvez invoquer les commandes comme si vous étiez le démon (presque) et corriger le processus de construction.

note: type: Plain text
en: Sometimes it happens that, for example, a package's tests pass when you run them manually but they fail when the daemon runs them.  This can happen because the daemon runs builds in containers where, unlike in our environment above, network access is missing, @file{/bin/sh} does not exist, etc. (@pxref{Build Environment Setup}).
fr: Parfois il arrive que, par exemple, les tests d'un paquet réussissent lorsque vous les lancez manuellement mais échouent quand ils sont lancés par le démon.  Cela peut arriver parce que le démon tourne dans un conteneur où, contrairement à notre environnement au-dessus, l'accès réseau est indisponible, @file{/bin/sh} n'existe pas, etc.@: (@pxref{Build Environment Setup}).

note: type: Plain text
en: In such cases, you may need to run inspect the build process from within a container similar to the one the build daemon creates:
fr: Dans ce cas, vous pourriez avoir besoin de lancer le processus de construction dans un conteneur similaire à celui que le démon crée :

note: type: example
en: $ guix build -K foo
    @dots{}
    $ cd /tmp/guix-build-foo.drv-0
    $ guix shell --no-grafts -C -D foo strace gdb
    [env]# source ./environment-variables
    [env]# cd foo-1.2
fr: $ guix build -K toto
    @dots{}
    $ cd /tmp/guix-build-toto.drv-0
    $ guix shell --no-grafts -C -D toto strace gdb
    [env]# source ./environment-variables
    [env]# cd toto-1.2

note: type: Plain text
en: Here, @command{guix shell -C} creates a container and spawns a new shell in it (@pxref{Invoking guix shell}).  The @command{strace gdb} part adds the @command{strace} and @command{gdb} commands to the container, which you may find handy while debugging.  The @option{--no-grafts} option makes sure we get the exact same environment, with ungrafted packages (@pxref{Security Updates}, for more info on grafts).
fr: Ici, @command{guix shell -C} crée un conteneur et démarre un nouveau shell à l'intérieur (@pxref{Invoquer guix shell}).  La partie @command{strace gdb} ajoute les commandes @command{strace} et @command{gdb} dans le conteneur, ce qui pourrait s'avérer utile pour le débogage.  L'option @option{--no-grafts} s'assure qu'on obtienne le même environnement, avec des paquets non greffés (@pxref{Security Updates}, pour plus d'informations sur les greffes).

note: type: Plain text
en: To get closer to a container like that used by the build daemon, we can remove @file{/bin/sh}:
fr: Pour obtenir un conteneur plus proche de ce qui serait utilisé par le démon de construction, on peut enlever @file{/bin/sh} :

note: type: Plain text
en: (Don't worry, this is harmless: this is all happening in the throw-away container created by @command{guix shell}.)
fr: (Ne vous inquiétez pas, c'est sans danger : tout cela se passe dans un conteneur jetable créé par @command{guix shell}.)

note: type: Plain text
en: The @command{strace} command is probably not in the search path, but we can run:
fr: La commande @command{strace} n'est probablement pas dans le chemin de recherche, mais on peut lancer :

note: type: Plain text
en: In this way, not only you will have reproduced the environment variables the daemon uses, you will also be running the build process in a container similar to the one the daemon uses.
fr: De cette manière, non seulement vous aurez reproduit les variables d'environnement utilisées par le démon, mais vous lancerez aussi le processus de construction dans un conteneur similaire à celui utilisé par le démon.

note: type: section
en: Invoking @command{guix edit}
fr: Invoquer @command{guix edit}

note: type: cindex
en: package definition, editing
fr: définition de paquets, modification

note: type: Plain text
en: So many packages, so many source files! The @command{guix edit} command facilitates the life of users and packagers by pointing their editor at the source file containing the definition of the specified packages.  For instance:
fr: Tant de paquets, tant de fichiers source ! La commande @command{guix edit} facilite la vie des utilisateurs et des empaqueteurs en plaçant leur éditeur sur le fichier source qui contient la définition des paquets spécifiés.  Par exemple :

note: type: Plain text
en: launches the program specified in the @env{VISUAL} or in the @env{EDITOR} environment variable to view the recipe of GCC@tie{}4.9.3 and that of Vim.
fr: lance le programme spécifié dans la variable d'environnement @env{VISUAL} ou dans la variable d'environnement @code{EDITOR} pour visionner la recette de GCC@tie{}4.9.3 et celle de Vim.

note: type: Plain text
en: If you are using a Guix Git checkout (@pxref{Building from Git}), or have created your own packages on @env{GUIX_PACKAGE_PATH} (@pxref{Package Modules}), you will be able to edit the package recipes.  In other cases, you will be able to examine the read-only recipes for packages currently in the store.
fr: Si vous utilisez une copie du dépôt Git de Guix (@pxref{Building from Git}), ou que vous avez créé vos propres paquets dans @env{GUIX_PACKAGE_PATH} (@pxref{Package Modules}), vous pourrez modifier les recettes des paquets.  Sinon, vous pourrez examiner les recettes en lecture-seule des paquets actuellement dans le dépôt.

note: type: Plain text
en: Instead of @env{GUIX_PACKAGE_PATH}, the command-line option @option{--load-path=@var{directory}} (or in short @option{-L @var{directory}}) allows you to add @var{directory} to the front of the package module search path and so make your own packages visible.
fr: Au lieu de @env{GUIX_PACKAGE_PATH}, l'option de la ligne de commande @option{--load-path=@var{directory}} (ou en bref @option{-L @var{directory}}) vous permet d'ajouter @var{directory} au début du chemin de recherche du module de paquet et donc de rendre vos propres paquets visibles.

note: type: section
en: Invoking @command{guix download}
fr: Invoquer @command{guix download}

note: type: cindex
en: downloading package sources
fr: télécharger les sources des paquets

note: type: Plain text
en: When writing a package definition, developers typically need to download a source tarball, compute its SHA256 hash, and write that hash in the package definition (@pxref{Defining Packages}).  The @command{guix download} tool helps with this task: it downloads a file from the given URI, adds it to the store, and prints both its file name in the store and its SHA256 hash.
fr: Lorsqu'on écrit une définition de paquet, on a généralement besoin de télécharger une archive des sources, calculer son hash SHA256 et écrire ce hash dans la définition du paquet (@pxref{Defining Packages}).  L'outil @command{guix download} aide à cette tâche : il télécharge un fichier à l'URL donné, l'ajoute au dépôt et affiche à la fois son nom dans le dépôt et son hash SHA56.

note: type: Plain text
en: The fact that the downloaded file is added to the store saves bandwidth: when the developer eventually tries to build the newly defined package with @command{guix build}, the source tarball will not have to be downloaded again because it is already in the store.  It is also a convenient way to temporarily stash files, which may be deleted eventually (@pxref{Invoking guix gc}).
fr: Le fait que le fichier téléchargé soit ajouté au dépôt économise la bande passante : quand on construit ensuite le paquet nouvellement défini avec @command{guix build}, l'archive des sources n'a pas besoin d'être à nouveau téléchargée puisqu'elle se trouve déjà dans le dépôt.  C'est aussi une manière pratique de garder des fichiers temporairement, qui pourront ensuite être supprimés (@pxref{Invoking guix gc}).

note: type: Plain text
en: The @command{guix download} command supports the same URIs as used in package definitions.  In particular, it supports @code{mirror://} URIs.  @code{https} URIs (HTTP over TLS) are supported @emph{provided} the Guile bindings for GnuTLS are available in the user's environment; when they are not available, an error is raised.  @xref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}, for more information.
fr: La commande @command{guix download} supporte les mêmes URI que celles utilisées dans les définitions de paquets.  En particulier, elle supporte les URI @code {mirror://}.  Les URI @code{http} (HTTP sur TLS) sont supportées @emph{si} les liaisons Guile de GnuTLS sont disponibles dans l'environnement de l'utilisateur ; si elle ne sont pas disponibles, une erreur est renvoyée.  @xref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}, pour plus d'informations.

note: type: Plain text
en: @command{guix download} verifies HTTPS server certificates by loading the certificates of X.509 authorities from the directory pointed to by the @env{SSL_CERT_DIR} environment variable (@pxref{X.509 Certificates}), unless @option{--no-check-certificate} is used.
fr: @command{guix download} vérifie les certificats du serveur HTTPS en chargeant les autorités de certification X.509 depuis le répertoire vers lequel pointe la variable d'environnement @env{SSL_CERT_DIR} (@pxref{X.509 Certificates}), à moins que @option{--no-check-certificate} ne soit utilisé.

note: type: Plain text
en: The following options are available:
fr: Les options suivantes sont disponibles :

note: type: item
en: --hash=@var{algorithm}
fr: --hash=@var{algorithme}

note: type: itemx
en: -H @var{algorithm}
fr: -H @var{algorithme}

note: type: table
en: Compute a hash using the specified @var{algorithm}.  @xref{Invoking guix hash}, for more information.
fr: Calcule un hash en utilisant l'@var{algorithme} spécifié. @xref{Invoquer guix hash}, pour plus d' informations.

note: type: table
en: Write the hash in the format specified by @var{fmt}.  For more information on the valid values for @var{fmt}, @pxref{Invoking guix hash}.
fr: Écrit le hash dans le format spécifié par @var{fmt}.  Pour plus d'informations sur les valeurs valides pour @var{fmt}, @pxref{Invoking guix hash}.

note: type: table
en: Do not validate the X.509 certificates of HTTPS servers.
fr: Ne pas valider les certificats HTTPS des serveurs.

note: type: table
en: When using this option, you have @emph{absolutely no guarantee} that you are communicating with the authentic server responsible for the given URL, which makes you vulnerable to ``man-in-the-middle'' attacks.
fr: Lorsque vous utilisez cette option, vous n'avez @emph{absolument aucune garanti} que vous communiquez avec le serveur authentique responsable de l'URL donnée, ce qui vous rend vulnérable à des attaques de « l'homme du milieu ».

note: type: item
en: --output=@var{file}
fr: --output=@var{fichier}

note: type: itemx
en: -o @var{file}
fr: -o @var{fichier}

note: type: table
en: Save the downloaded file to @var{file} instead of adding it to the store.
fr: Enregistre le fichier téléchargé dans @var{fichier} plutôt que de l'ajouter au dépôt.

note: type: section
en: Invoking @command{guix hash}
fr: Invoquer @command{guix hash}

note: type: Plain text
en: The @command{guix hash} command computes the hash of a file.  It is primarily a convenience tool for anyone contributing to the distribution: it computes the cryptographic hash of one or more files, which can be used in the definition of a package (@pxref{Defining Packages}).
fr: La commande @command{guix hash} calcule le hash d'un fichier.  C'est surtout un outil pour simplifier la vie des contributeur·rice·s  à la distribution : elle calcule le hash cryptographique d'un ou plusieurs fichiers, qui peut être utilisé dans la définition d' un paquet (@pxref{Defining Packages}).

note: type: example
en: guix hash @var{option} @var{file} ...
fr: guix hash @var{option} @var{fichier} …

note: type: Plain text
en: When @var{file} is @code{-} (a hyphen), @command{guix hash} computes the hash of data read from standard input.  @command{guix hash} has the following options:
fr: Lorsque @var{fichier} est @code{-} (un tiret), @command{guix hash} calcul le hash des données lues depuis l'entrée standard.  @command{guix hash} a les options suivantes :

note: type: table
en: Compute a hash using the specified @var{algorithm}, @code{sha256} by default.
fr: Calcule un hash en utilisant l' @var{algorithme} spécifié, @code{sha256} par défaut.

note: type: table
en: @var{algorithm} must be the name of a cryptographic hash algorithm supported by Libgcrypt @i{via} Guile-Gcrypt---e.g., @code{sha512} or @code{sha3-256} (@pxref{Hash Functions,,, guile-gcrypt, Guile-Gcrypt Reference Manual}).
fr: @var{algorithm} doit être le nom de l' algorithme d'un hash cryptographique supporté par Libgcrypt @i{via} Guile-Gcrypt---par exemple, @code{sha512} ou @code{sha3-256} (@pxref{Hash Functions,,, guile-gcrypt, Guile-Gcrypt Reference Manual}).

note: type: table
en: Write the hash in the format specified by @var{fmt}.
fr: Écrit le hash dans le format spécifié par @var{fmt}.

note: type: table
en: Supported formats: @code{base64}, @code{nix-base32}, @code{base32}, @code{base16} (@code{hex} and @code{hexadecimal} can be used as well).
fr: Formats supportés : @code{base64}, @code{nix-base32}, @code{base32}, @code{base16} (@code{hex} et @code{hexadecimal} peuvent être utilisés).

note: type: table
en: If the @option{--format} option is not specified, @command{guix hash} will output the hash in @code{nix-base32}.  This representation is used in the definitions of packages.
fr: Si l'option @option {--format} n'est pas spécifiée, @command{guix hash} affichera le hash en @code{nix-base32}.  Cette représentation est utilisée dans les définitions des paquets.

note: type: table
en: The @option{--recursive} option is deprecated in favor of @option{--serializer=nar} (see below); @option{-r} remains accepted as a convenient shorthand.
fr: L'option @option{--recursive} est obsolète et remplacée par @option{--serializer=nar} (voir plus bas) ; @option{-r} reste accepté car c'est un raccourci pratique.

note: type: table
en: Compute the hash on @var{file} using @var{type} serialization.
fr: Calcule le hash sur @var{fichier} avec la sérialisation @var{type}.

note: type: table
en: @var{type} may be one of the following:
fr: @var{type} peut être l'une des valeurs suivantes :

note: type: table
en: This is the default: it computes the hash of a file's contents.
fr: C'est la valeur par défaut : elle calcule le hash du contenu d'un fichier.

note: type: table
en: Compute the hash of a ``normalized archive'' (or ``nar'') containing @var{file}, including its children if it is a directory.  Some of the metadata of @var{file} is part of the archive; for instance, when @var{file} is a regular file, the hash is different depending on whether @var{file} is executable or not.  Metadata such as time stamps have no impact on the hash (@pxref{Invoking guix archive}, for more info on the nar format).
fr: Calcul le hash d'une « archive normalisée » (ou « nar ») contenant @var{fichier}, dont ses enfants si c'est un répertoire.  Certaines métadonnées de @var{fichier} fait partie de l'archive ; par exemple lorsque @var{fichier} est un fichier normal, le hash est différent que le @var{fichier} soit exécutable ou non.  Les métadonnées comme un horodatage n'ont aucun impact sur le hash (@pxref{Invoking guix archive} pour plus de détails sur le format nar).

note: type: table
en: Compute the hash of the file or directory as a Git ``tree'', following the same method as the Git version control system.
fr: Calcule le hash d'un fichier ou d'un répertoire comme une arborescence Git, suivant la même méthode que le système de contrôle de version Git.

note: type: table
en: When combined with @option{--recursive}, exclude version control system directories (@file{.bzr}, @file{.git}, @file{.hg}, etc.).
fr: Conjointement avec @option{--recursive}, exclut les répertoires de système de contrôle de version (@file{.bzr}, @file{.git}, @file{.hg}, etc.).

note: type: table
en: As an example, here is how you would compute the hash of a Git checkout, which is useful when using the @code{git-fetch} method (@pxref{origin Reference}):
fr: Par exemple, voici comment calculer le hash d'un dépôt Git, ce qui est utile avec la méthode @code{git-fetch} (@pxref{origin Reference}) :

note: type: example
en: $ git clone http://example.org/foo.git
    $ cd foo
    $ guix hash -x --serializer=nar .
fr: $ git clone http://example.org/toto.git
    $ cd toto
    $ guix hash -x --serializer=nar .

note: type: cindex
en: Invoking @command{guix import}
fr: Invoquer @command{guix import}

note: type: cindex
en: importing packages
fr: importer des paquets

note: type: cindex
en: package import
fr: paquets importés

note: type: cindex
en: package conversion
fr: conversion de paquets

note: type: Plain text
en: The @command{guix import} command is useful for people who would like to add a package to the distribution with as little work as possible---a legitimate demand.  The command knows of a few repositories from which it can ``import'' package metadata.  The result is a package definition, or a template thereof, in the format we know (@pxref{Defining Packages}).
fr: La commande @command{guix import} est utile pour les gens qui voudraient ajouter un paquet à la distribution avec aussi peu de travail que possible — une demande légitime.  La commande connaît quelques dépôts logiciels d'où elle peut « importer » des métadonnées de paquets.  Le résultat est une définition de paquet, ou un modèle de définition, dans le format reconnu par Guix (@pxref{Defining Packages}).

note: type: Plain text
en: @var{importer} specifies the source from which to import package metadata, and @var{options} specifies a package identifier and other options specific to @var{importer}.
fr: @var{importer} spécifie la source depuis laquelle importer des métadonnées de paquets, et @var{options} spécifie un identifiant de paquet et d'autres options spécifiques à @var{importer}.

note: type: Plain text
en: Some of the importers rely on the ability to run the @command{gpgv} command.  For these, GnuPG must be installed and in @code{$PATH}; run @code{guix install gnupg} if needed.
fr: Certains des importeurs s'appuient sur la capacité d'exécuter la commande @command{gpgv}.  Pour ceux-ci, GnuPG doit être installé dans @code{$PATH} ; exécuter @code{guix install gnupg} si nécessaire.

note: type: Plain text
en: Currently, the available ``importers'' are:
fr: Actuellement, les « importeurs » disponibles sont :

note: type: table
en: Import metadata for the given GNU package.  This provides a template for the latest version of that GNU package, including the hash of its source tarball, and its canonical synopsis and description.
fr: Importe des métadonnées d'un paquet GNU donné.  Cela fournit un modèle pour la dernière version de ce paquet GNU, avec le hash de son archive, le synopsis et la description canonique.

note: type: table
en: Additional information such as the package dependencies and its license needs to be figured out manually.
fr: Les informations supplémentaires comme les dépendances du paquet et sa licence doivent être renseignées manuellement.

note: type: table
en: For example, the following command returns a package definition for GNU@tie{}Hello:
fr: Par exemple, la commande suivante renvoie une définition de paquets pour GNU@tie{}Hello :

note: type: table
en: Specific command-line options are:
fr: Les options spécifiques sont :

note: type: item
en: --key-download=@var{policy}
fr: --key-download=@var{politique}

note: type: table
en: As for @command{guix refresh}, specify the policy to handle missing OpenPGP keys when verifying the package signature.  @xref{Invoking guix refresh, @option{--key-download}}.
fr: Comme pour @command{guix refresh}, spécifie la politique de gestion des clefs OpenPGP manquantes lors de la vérification de la signature d'un paquet.  @xref{Invoquer guix refresh, @code{--key-download}}.

note: type: table
en: Import metadata from the @uref{https://pypi.python.org/, Python Package Index}.  Information is taken from the JSON-formatted description available at @code{pypi.python.org} and usually includes all the relevant information, including package dependencies.  For maximum efficiency, it is recommended to install the @command{unzip} utility, so that the importer can unzip Python wheels and gather data from them.
fr: Importe des métadonnées depuis @uref{https://pypi.python.org/, l'index des paquets Python}.  Les informations sont récupérées à partir de la description en JSON disponible sur @code{pypi.python.org} et inclus généralement toutes les informations utiles, dont les dépendances des paquets.  Pour une efficacité maximale, il est recommandé d'installer l'utilitaire @command{unzip}, pour que l'importateur puisse dézipper les wheels Python et récupérer les informations contenues à l'intérieur.

note: type: table
en: The command below imports metadata for the latest version of the @code{itsdangerous} Python package:
fr: La commande ci-dessous importe les métadonnées de la dernière version du paquet Python @code{itsdangerous} :

note: type: table
en: You can also ask for a specific version:
fr: Vous pouvez aussi demander une version spécifique :

note: type: table
en: Traverse the dependency graph of the given upstream package recursively and generate package expressions for all those packages that are not yet in Guix.
fr: Traverse le graphe des dépendances du paquet amont donné et génère les expressions de paquets de tous ceux qui ne sont pas déjà dans Guix.

note: type: table
en: Import metadata from @uref{https://rubygems.org/, RubyGems}.  Information is taken from the JSON-formatted description available at @code{rubygems.org} and includes most relevant information, including runtime dependencies.  There are some caveats, however.  The metadata doesn't distinguish between synopses and descriptions, so the same string is used for both fields.  Additionally, the details of non-Ruby dependencies required to build native extensions is unavailable and left as an exercise to the packager.
fr: Importe des métadonnées de @uref{https://rubygems.org/, RubyGems}.  Les informations sont récupérées au format JSON disponible sur @code{rubygems.org} et inclut les informations les plus utiles, comme les dépendances à l'exécution.  Il y a des cependant quelques restrictions.  Les métadonnées ne distinguent pas synopsis et description, donc la même chaîne est utilisée pour les deux champs.  En plus, les détails des dépendances non Ruby requises pour construire des extensions natives sont indisponibles et laissé en exercice à l'empaqueteur.

note: type: table
en: The command below imports metadata for the @code{rails} Ruby package:
fr: La commande ci-dessous importe les métadonnées pour le paquet Ruby @code{rails} :

note: type: table
en: Import metadata from @uref{https://content.minetest.net, ContentDB}.  Information is taken from the JSON-formatted metadata provided through @uref{https://content.minetest.net/help/api/, ContentDB's API} and includes most relevant information, including dependencies.  There are some caveats, however.  The license information is often incomplete.  The commit hash is sometimes missing.  The descriptions are in the Markdown format, but Guix uses Texinfo instead.  Texture packs and subgames are unsupported.
fr: Importe des métadonnées de @uref{https://content.minetest.net, ContentDB}.  Les informations sont récupérées au format JSON disponible à travers  @uref{https://content.minetest.net/help/api/, l'API de ContentDB} et inclus les informations les plus utiles, dont les dépendances.  Il y a cependant quelques limitations. L'information de licence est souvent incomplète. Le hash de commit est parfois oublié. Les descriptions sont au format Markdown mais Guix utilise plutôt Texinfo. Les packs de textures et les jeux ne sont pas pris en charge.

note: type: table
en: The command below imports metadata for the Mesecons mod by Jeija:
fr: La commande ci-dessous importe les métadonnées pour le mod Mesecons de Jeija :

note: type: table
en: The author name can also be left out:
fr: Vous pouvez aussi ne pas indiquer le nom de l'auteur :

note: type: table
en: Import metadata from @uref{https://www.metacpan.org/, MetaCPAN}.  Information is taken from the JSON-formatted metadata provided through @uref{https://fastapi.metacpan.org/, MetaCPAN's API} and includes most relevant information, such as module dependencies.  License information should be checked closely.  If Perl is available in the store, then the @code{corelist} utility will be used to filter core modules out of the list of dependencies.
fr: Importe des métadonnées de @uref{https://www.metacpan.org/, MetaCPAN}.  Les informations sont récupérées au format JSON disponible à travers  @uref{https://fastapi.metacpan.org/, l'API de MetaCPAN} et inclus les informations les plus utiles, comme les dépendances des modules.  L'information sur les licences doit être vérifiée avec attention.  Si Perl est disponible dans le dépôt, alors l'utilitaire @code{corelist} sera utiliser pour exclure les modules du cœur de la distribution Perl de la liste des dépendances.

note: type: table
en: The command command below imports metadata for the Acme::Boolean Perl module:
fr: La commande ci-dessous importe des métadonnées pour le module Acme::Boolean Perl :

note: type: table
en: Import metadata from @uref{https://cran.r-project.org/, CRAN}, the central repository for the @uref{https://r-project.org, GNU@tie{}R statistical and graphical environment}.
fr: Importe des métadonnées de @uref{https://cran.r-project.org/, CRAN}, le dépôt central de @uref{https://r-project.org, l'environnement statistique et graphique GNU@tie{}R}.

note: type: table
en: Information is extracted from the @file{DESCRIPTION} file of the package.
fr: L' information est extraite du fichier @file{DESCRIPTION} du paquet.

note: type: table
en: The command command below imports metadata for the Cairo R package:
fr: La commande ci-dessous importe les métadonnées du paquet Cairo R :

note: type: table
en: When @option{--recursive} is added, the importer will traverse the dependency graph of the given upstream package recursively and generate package expressions for all those packages that are not yet in Guix.
fr: Lorsque l'option @option{--recursive} est utilisée, l'importateur traversera le graphe des dépendances du paquet en amont récursivement et générera des expressions de paquets pour tous ceux qui ne sont pas déjà dans Guix.

note: type: table
en: When @option{--style=specification} is added, the importer will generate package definitions whose inputs are package specifications instead of references to package variables.  This is useful when generated package definitions are to be appended to existing user modules, as the list of used package modules need not be changed.  The default is @option{--style=variable}.
fr: Lorsque vous ajoutez @option{--style=specification}, l'importateur générera des définitions de paquets dont les entrées sont les spécifications des paquets au lieu de références au variables des paquets. C'est utile lorsque des définitions de paquets doivent être ajoutées à des modules utilisateurs, comme la liste des modules de paquets n'a pas besoin d'être changée. La valeur par défaut est @option{--style=variable}.

note: type: table
en: When @option{--archive=bioconductor} is added, metadata is imported from @uref{https://www.bioconductor.org/, Bioconductor}, a repository of R packages for the analysis and comprehension of high-throughput genomic data in bioinformatics.
fr: Lorsque @option{--archive=bioconductor} est ajoutée, les métadonnées sont importées depuis @uref{https://www.bioconductor.org/, Bioconductor}, un répertoire de paquets R pour l'analyse et la compréhension de données génomiques volumineuses en bioinformatique.

note: type: table
en: Information is extracted from the @file{DESCRIPTION} file contained in the package archive.
fr: Les informations sont extraites du fichier @file{DESCRIPTION} du paquet contenu dans l'archive du paquet.

note: type: table
en: The command below imports metadata for the GenomicRanges R package:
fr: La commande ci-dessous importe les métadonnées pour le paquet R GenomicRanges :

note: type: table
en: Finally, you can also import R packages that have not yet been published on CRAN or Bioconductor as long as they are in a git repository.  Use @option{--archive=git} followed by the URL of the git repository:
fr: Enfin, vous pouvez aussi importer des paquets R qui n'ont pas encore été publiés sur CRAN ou Bioconductor tant qu'ils ne sont pas dans le dépôt Git. Utilisez @option{--archive=git} suivi par l'URL du dépôt Git :

note: type: table
en: Import TeX package information from the TeX Live package database for TeX packages that are part of the @uref{https://www.tug.org/texlive/, TeX Live distribution}.
fr: Importe les informations de paquets TeX à partir de la base de données TeX Live pour les paquets TeX qui font partie de la @uref{https://www.tug.org/texlive/, distribution TeX Live}.

note: type: table
en: Information about the package is obtained from the TeX Live package database, a plain text file that is included in the @code{texlive-bin} package.  The source code is downloaded from possibly multiple locations in the SVN repository of the Tex Live project.
fr: Les informations sur les paquets sont obtenues à partir de la base de données des paquets de TeX Live, un fichier texte brut inclus dans le paquets @code{texlive-bin}. Le code source est téléchargé depuis plusieurs emplacements dans le dépôt SVN du projet TeX Live.

note: type: table
en: The command command below imports metadata for the @code{fontspec} TeX package:
fr: La commande ci-dessous importe les métadonnées du paquet TeX @code{fontspec} :

note: type: table
en: Import package metadata from a local JSON file.  Consider the following example package definition in JSON format:
fr: Importe des métadonnées d'un fichier JSON local.  Considérez l'exemple suivant d'une définition de paquet au format JSON :

note: type: table
en: The field names are the same as for the @code{<package>} record (@xref{Defining Packages}).  References to other packages are provided as JSON lists of quoted package specification strings such as @code{guile} or @code{guile@@2.0}.
fr: Les noms des champs sont les mêmes que pour les enregistrements de @code{<package>} (@xref{Defining Packages}).  Les référence à d'autres paquets sont fournies comme des listes JSON de chaînes de spécifications de paquets comme @code{guile} ou @code{guile@@2.0}.

note: type: table
en: The importer also supports a more explicit source definition using the common fields for @code{<origin>} records:
fr: L'importateur supporte aussi une définition plus explicite des sources avec les champs habituels pour les enregistrements @code{<origin>} :

note: type: table
en: The command below reads metadata from the JSON file @code{hello.json} and outputs a package expression:
fr: La commande ci-dessous lit les métadonnées du fichier JSON @code{hello.json} et renvoie une expression de paquet :

note: type: table
en: Import metadata from the Haskell community's central package archive @uref{https://hackage.haskell.org/, Hackage}.  Information is taken from Cabal files and includes all the relevant information, including package dependencies.
fr: Importe les métadonnées de l'archive de paquets centrale de la communauté Haskell, @uref{https://hackage.haskell.org/, Hackage}.  Les informations sont récupérées depuis les fichiers Cabal et incluent toutes les informations utiles, dont les dépendances des paquets.

note: type: table
en: Read a Cabal file from standard input.
fr: Lit un fichier Cabal depuis l'entrée standard.

note: type: table
en: Do not include dependencies required only by the test suites.
fr: N'inclut pas les dépendances requises uniquement par les suites de tests.

note: type: table
en: @var{alist} is a Scheme alist defining the environment in which the Cabal conditionals are evaluated.  The accepted keys are: @code{os}, @code{arch}, @code{impl} and a string representing the name of a flag.  The value associated with a flag has to be either the symbol @code{true} or @code{false}.  The value associated with other keys has to conform to the Cabal file format definition.  The default value associated with the keys @code{os}, @code{arch} and @code{impl} is @samp{linux}, @samp{x86_64} and @samp{ghc}, respectively.
fr: @var{alist} est une alist Scheme qui définie l'environnement dans lequel les conditions de Cabal sont évaluées.  Les clefs acceptées sont : @code{os}, @code{arch}, @code{impl} et une représentation sous forme de chaîne de caractères du nom d'un drapeau.  La valeur associée à un drapeau doit être le symbole @code{true} ou @code{false}.  La valeur associée aux autres clefs doivent se conformer avec la définition du format de fichiers Cabal.  La valeur par défaut associée avec les clefs @code{os}, @code{arch} et @code{impl} sont respectivement @samp{linux}, @samp{x86_64} et @samp{ghc}.

note: type: table
en: The command below imports metadata for the latest version of the HTTP Haskell package without including test dependencies and specifying the value of the flag @samp{network-uri} as @code{false}:
fr: La commande ci-dessous importe les métadonnées pour la dernière version du paquet HTTP Haskell sans inclure les dépendances de test et en spécifiant la valeur du drapeau @samp{network-uri} comme @code{false} :

note: type: table
en: A specific package version may optionally be specified by following the package name by an at-sign and a version number as in the following example:
fr: Une version spécifique du paquet peut éventuellement être spécifiée en faisant suivre le nom du paquet par un arobase et un numéro de version comme dans l'exemple suivant :

note: type: table
en: The @code{stackage} importer is a wrapper around the @code{hackage} one.  It takes a package name, looks up the package version included in a long-term support (LTS) @uref{https://www.stackage.org, Stackage} release and uses the @code{hackage} importer to retrieve its metadata.  Note that it is up to you to select an LTS release compatible with the GHC compiler used by Guix.
fr: L'importateur @code{stackage} est une enveloppe autour de l'importateur @code{hackage}.  Il prend un nom de paquet, recherche la version incluse dans une version au support étendu (LTS) de @uref{https://www.stackage.org, Stackage} et utilise l'importateur @code{hackage} pour récupérer les métadonnées.  Remarquez que c'est à vous de choisir une version LTS compatible avec le compilateur GHC utilisé par Guix.

note: type: table
en: @var{version} is the desired LTS release version.  If omitted the latest release is used.
fr: @var{version} est la version LTS désirée.  Si elle est omise, la dernière version est utilisée.

note: type: table
en: The command below imports metadata for the HTTP Haskell package included in the LTS Stackage release version 7.18:
fr: La commande ci-dessous importe les métadonnées pour le paquet HTTP Haskell inclus dans la version 7.18 de LTS Stackage :

note: type: table
en: Import metadata from an Emacs Lisp Package Archive (ELPA) package repository (@pxref{Packages,,, emacs, The GNU Emacs Manual}).
fr: Importe les métadonnées du dépôt de paquets ELPA (Emacs Lisp Package Archive) (@pxref{Packages,,, emacs, The GNU Emacs Manual}).

note: type: table
en: @var{repo} identifies the archive repository from which to retrieve the information.  Currently the supported repositories and their identifiers are:
fr: @var{repo} identifie le dépôt d'archive depuis lequel récupérer les informations.  Actuellement les dépôts supportés et leurs identifiants sont :

note: type: itemize
en: @uref{https://elpa.gnu.org/packages, GNU}, selected by the @code{gnu} identifier.  This is the default.
fr: @uref{https://elpa.gnu.org/packages, GNU}, qu'on peut choisir avec l'identifiant @code{gnu}.  C'est la valeur par défaut.

note: type: itemize
en: Packages from @code{elpa.gnu.org} are signed with one of the keys contained in the GnuPG keyring at @file{share/emacs/25.1/etc/package-keyring.gpg} (or similar) in the @code{emacs} package (@pxref{Package Installation, ELPA package signatures,, emacs, The GNU Emacs Manual}).
fr: Les paquets de @code{elpa.gnu.org} avec l'une des clefs contenues dans le porte-clef GnuPG @file{share/emacs/25.1/etc/package-keyring.gpg} (ou similaire) dans le paquet @code{emacs} (@pxref{Package Installation, ELPA package signatures,, emacs, The GNU Emacs Manual}).

note: type: itemize
en: @uref{https://elpa.nongnu.org/nongnu/, NonGNU}, selected by the @code{nongnu} identifier.
fr: @uref{https://elpa.nongnu.org/nongnu/, NonGNU}, qu'on peut choisir avec l'identifiant @code{nongnu}.

note: type: itemize
en: @uref{https://stable.melpa.org/packages, MELPA-Stable}, selected by the @code{melpa-stable} identifier.
fr: @uref{https://stable.melpa.org/packages, MELPA-Stable}, qu'on peut sélectionner avec l'identifiant @code{melpa-stable}.

note: type: itemize
en: @uref{https://melpa.org/packages, MELPA}, selected by the @code{melpa} identifier.
fr: @uref{https://melpa.org/packages, MELPA}, qu'on peut sélectionner avec l'identifiant @code{melpa}.

note: type: table
en: Import metadata from the crates.io Rust package repository @uref{https://crates.io, crates.io}, as in this example:
fr: Importer les métadonnées du dépôt de paquets Rust crates.io @uref{https://crates.io, crates.io}, comme dans cet exemple :

note: type: table
en: The crate importer also allows you to specify a version string:
fr: L'importeur crate vous permet aussi de spécifier une version de chaînes de caractères :

note: type: Plain text
en: Additional options include:
fr: Les options supplémentaires comprennent :

note: type: table
en: Import metadata from the Elm package repository @uref{https://package.elm-lang.org, package.elm-lang.org}, as in this example:
fr: Importer les métadonnées du dépôt de paquets Elm @uref{https://package.elm-lang.org, package.elm-lang.org}, comme dans cet exemple :

note: type: table
en: The Elm importer also allows you to specify a version string:
fr: L'importeur Elm vous permet aussi de spécifier une version de chaînes de caractères :

note: type: table
en: Import metadata from the @uref{https://opam.ocaml.org/, OPAM} package repository used by the OCaml community.
fr: Importe les métadonnées du répertoire de paquets @uref{https://opam.ocaml.org/, OPAM} utilisé par la communauté OCaml.

note: type: table
en: By default, packages are searched in the official OPAM repository.  This option, which can be used more than once, lets you add other repositories which will be searched for packages.  It accepts as valid arguments:
fr: Par défaut on recherche les paquets dans le dépôt OPAM officiel. Cette option, qui peut être utilisée plusieurs fois en même temps, vous permet d'ajouter d'autres dépôts dans lesquelles on recherchera les paquets. Les arguments valide sont :

note: type: item
en: the name of a known repository - can be one of @code{opam},
fr: le nom d'un dépôt connu — cela peut être @code{opam},

note: type: itemize
en: @code{coq} (equivalent to @code{coq-released}), @code{coq-core-dev}, @code{coq-extra-dev} or @code{grew}.
fr: @code{coq} (équivalent à @code{coq-released}), @code{coq-core-dev}, @code{coq-extra-dev} ou @code{grew}.

note: type: item
en: the URL of a repository as expected by the
fr: l'URL d'un dépôt, telle qu'attendue par

note: type: itemize
en: @code{opam repository add} command (for instance, the URL equivalent of the above @code{opam} name would be @uref{https://opam.ocaml.org}).
fr: la commande @code{opam repository add} (par exemple, l'URL équivalent au nom @code{opam} plus haut serait @uref{https://opam.ocaml.org}).

note: type: item
en: the path to a local copy of a repository (a directory containing a
fr: le chemin vers une copie locale d'un dépôt (un répertoire contenant un

note: type: itemize
en: @file{packages/} sub-directory).
fr: sous-répertoire @file{packages/}).

note: type: table
en: Repositories are assumed to be passed to this option by order of preference.  The additional repositories will not replace the default @code{opam} repository, which is always kept as a fallback.
fr: Les dépôts sont passés à cette commande par ordre de préférence. Les dépôts supplémentaires ne remplaceront pas le dépôt @code{opam} par défaut, qui est toujours gardé en dernier recours.

note: type: table
en: Also, please note that versions are not compared across repositories.  The first repository (from left to right) that has at least one version of a given package will prevail over any others, and the version imported will be the latest one found @emph{in this repository only}.
fr: Ainsi, remarquez que les versions ne sont pas comparées entre dépôts. Le premier dépôt (de gauche à droite) qui a au moins une version d'un paquet donné prendra le pas sur les autres, et la version importée sera la plus récente trouvée @emph{dans ce dépôt uniquement}.

note: type: table
en: Import metadata for a Go module using @uref{https://proxy.golang.org, proxy.golang.org}.
fr: Importe les métadonnées d'un module Go avec @uref{https://proxy.golang.org, proxy.golang.org}.

note: type: table
en: It is possible to use a package specification with a @code{@@VERSION} suffix to import a specific version.
fr: Il est possible d'utiliser la spécification d'un paquet avec le suffixe @code{@@VERSION} pour importer une version spécifique.

note: type: table
en: When using this option, the importer preserves the exact versions of the Go modules dependencies instead of using their latest available versions.  This can be useful when attempting to import packages that recursively depend on former versions of themselves to build.  When using this mode, the symbol of the package is made by appending the version to its name, so that multiple versions of the same package can coexist.
fr: Lorsque vous utilisez cette option, l'importateur préserve les versions exactes des modules Go de dépendance au lieu d'utiliser leur dernière version disponible. C'est utile si vous essayez d'importer un paquet qui dépend récursivement de versions antérieures de lui-même pour la construction. Lorsque vous utilisez ce mode, le symbole du paquet sera créé en ajoutant la version à son nom, pour que plusieurs version du même paquet puissent coexister.

note: type: table
en: Import metadata for @uref{https://wiki.call-cc.org/eggs, CHICKEN eggs}.  The information is taken from @file{PACKAGE.egg} files found in the @uref{git://code.call-cc.org/eggs-5-all, eggs-5-all} Git repository.  However, it does not provide all the information that we need, there is no ``description'' field, and the licenses used are not always precise (BSD is often used instead of BSD-N).
fr: Importe les métadonnées pour des @uref{https://wiki.call-cc.org/eggs, « eggs » CHICKEN}. L'information est récupérée dans les fichiers @file{PACKAGE.egg} trouvés dans le dépôt git @uref{git://code.call-cc.org/eggs-5-all, eggs-5-all}. Toutefois, il ne fournit pas toutes les informations dont vous avez besoin, il n'y a pas de champ ``description'' et les licences utilisées ne sont pas toujours précises (BSD est souvent employée à la place de BSD-N).

note: type: table
en: Import metadata from the hex.pm Erlang and Elixir package repository @uref{https://hex.pm, hex.pm}, as in this example:
fr: Importer les métadonnées du dépôt de paquets Erlang et Elixir hex.pm @uref{https://hex.pm, hex.pm}, comme dans cet exemple :

note: type: table
en: The importer tries to determine the build system used by the package.
fr: L'importateur essaye de déterminer le système de construction utilisé par le paquet.

note: type: table
en: The hexpm importer also allows you to specify a version string:
fr: L'importeur hexpm vous permet aussi de spécifier une version de chaînes de caractères :

note: type: Plain text
en: The structure of the @command{guix import} code is modular.  It would be useful to have more importers for other package formats, and your help is welcome here (@pxref{Contributing}).
fr: La structure du code de @command{guix import} est modulaire.  Il serait utile d'avoir plus d'importateurs pour d'autres formats de paquets et votre aide est la bienvenue sur ce sujet (@pxref{Contributing}).

note: type: section
en: Invoking @command{guix refresh}
fr: Invoquer @command{guix refresh}

note: type: Plain text
en: The primary audience of the @command{guix refresh} command is packagers.  As a user, you may be interested in the @option{--with-latest} option, which can bring you package update superpowers built upon @command{guix refresh} (@pxref{Package Transformation Options, @option{--with-latest}}).  By default, @command{guix refresh} reports any packages provided by the distribution that are outdated compared to the latest upstream version, like this:
fr: La commande @command{guix refresh} s'adresse avant tout aux personnes qui écrivent des paquets. En tant qu'utilisateur·rice, vous pourriez être intéressé·e par l'option @option{--with-latest} qui peut vous conférer les superpouvoirs de mettre à jour les paquets, et qui est construite à partir de @command{guix refresh}  (@pxref{Package Transformation Options, @option{--with-latest}}). Par défaut, @command{guix refresh} rapporte les paquets fournis par la distribution qui sont en retard par rapport aux dernières versions disponibles en amont, comme ceci :

note: type: example
en: $ guix refresh
    gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 0.18.2.1
    gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0
fr: $ guix refresh
    gnu/packages/gettext.scm :29 :13 : gettext serait mis à jour de 0.18.1.1 à 0.18.2.1
    gnu/packages/glib.scm :77:12 : glib serait mis à jour de 2.34.3 à 2.37.0

note: type: Plain text
en: Alternatively, one can specify packages to consider, in which case a warning is emitted for packages that lack an updater:
fr: On peut aussi spécifier des paquets à prendre en compte, auquel cas un avertissement est émis pour les paquets qui ne sont pas mis à jour :

note: type: example
en: $ guix refresh coreutils guile guile-ssh
    gnu/packages/ssh.scm:205:2: warning: no updater for guile-ssh
    gnu/packages/guile.scm:136:12: guile would be upgraded from 2.0.12 to 2.0.13
fr: $ guix refresh coreutils guile guile-ssh
    gnu/packages/ssh.scm:205:2 : avertissement : aucun gestionnaire de mise à jour pour guile-ssh
    gnu/packages/guile.scm:136:12 : guile serait mis à jour de 2.0.12 à 2.0.13

note: type: Plain text
en: @command{guix refresh} browses the upstream repository of each package and determines the highest version number of the releases therein.  The command knows how to update specific types of packages: GNU packages, ELPA packages, etc.---see the documentation for @option{--type} below.  There are many packages, though, for which it lacks a method to determine whether a new upstream release is available.  However, the mechanism is extensible, so feel free to get in touch with us to add a new method!
fr: @command{guix refresh} navigue le dépôt amont de chaque paquet et détermine le numéro de version le plus élevé parmi les versions publiées.  La commande sait comment mettre à jour certains types de paquets : les paquets GNU, les paquets ELPA, etc. — voir la documentation pour @option{--type} ci-dessous.  Il y a beaucoup de paquet cependant pour lesquels il manque une méthode pour déterminer si une nouvelle version est disponible en amont.  Cependant, le mécanisme est extensible, alors n'hésitez pas à nous contacter pour ajouter une nouvelle méthode !

note: type: table
en: Consider the packages specified, and all the packages upon which they depend.
fr: Considère les paquets spécifiés et tous les paquets dont ils dépendent.

note: type: Plain text
en: Sometimes the upstream name differs from the package name used in Guix, and @command{guix refresh} needs a little help.  Most updaters honor the @code{upstream-name} property in package definitions, which can be used to that effect:
fr: Parfois les noms en amont diffèrent du nom de paquet utilisé par Guix et @command{guix refresh} a besoin d'un peu d'aide.  La plupart des gestionnaires de mise à jour prennent en compte la propriété @code{upstream-name} dans les définitions de paquets, ce qui peut être utilisé à cette fin :

note: type: Plain text
en: When passed @option{--update}, it modifies distribution source files to update the version numbers and source tarball hashes of those package recipes (@pxref{Defining Packages}).  This is achieved by downloading each package's latest source tarball and its associated OpenPGP signature, authenticating the downloaded tarball against its signature using @command{gpgv}, and finally computing its hash---note that GnuPG must be installed and in @code{$PATH}; run @code{guix install gnupg} if needed.
fr: Quand l'option @option{--update} est utilisée, elle modifie les fichiers sources de la distribution pour mettre à jour les numéros de version et les hash de l'archive source de ces recettes de paquets (@pxref{Defining Packages}).  Pour ce faire, il télécharge la dernière archive source de chaque paquet et sa signature OpenPGP associée, authentifiant l'archive téléchargée par rapport à sa signature en utilisant @command{gpgv}, et enfin calcule son hash---notez que GnuPG doit être installé et dans @code{$PATH} ; lancez @code{guix install gnupg} si nécessaire.

note: type: Plain text
en: When the public key used to sign the tarball is missing from the user's keyring, an attempt is made to automatically retrieve it from a public key server; when this is successful, the key is added to the user's keyring; otherwise, @command{guix refresh} reports an error.
fr: Quand la clé publique utilisée pour signer l'archive est manquante depuis le trousseau de clés utilisateur·rice, une tentative est faite de la récupérer automatiquement depuis un serveur de clé publique ; en cas de succès, la clé est ajoutée au trousseau de l'utilisateur·rice ; sinon, @command{guix refresh} renvoie une erreur.

note: type: Plain text
en: The following options are supported:
fr: Les options suivantes sont supportées :

note: type: table
en: This is useful to precisely refer to a package, as in this example:
fr: C'est utile pour précisément se référer à un paquet, comme dans cet exemple :

note: type: table
en: This command lists the dependents of the ``final'' libc (essentially all the packages).
fr: Cette commande liste les dépendances de la libc « finale » (presque tous les paquets).

note: type: table
en: Update distribution source files (package recipes) in place.  This is usually run from a checkout of the Guix source tree (@pxref{Running Guix Before It Is Installed}):
fr: Met à jour les fichiers source de la distribution (les recettes de paquets) en place.  Cette option est généralement utilisée depuis une copie du dépôt git de Guix (@pxref{Running Guix Before It Is Installed}) :

note: type: table
en: @xref{Defining Packages}, for more information on package definitions.
fr: @xref{Defining Packages}, pour plus d'information sur les définitions des paquets.

note: type: table
en: Select all the packages in @var{subset}, one of @code{core} or @code{non-core}.
fr: Choisi tous les paquets dans @var{subset}, entre @code{core} et @code{non-core}.

note: type: table
en: The @code{core} subset refers to all the packages at the core of the distribution---i.e., packages that are used to build ``everything else''.  This includes GCC, libc, Binutils, Bash, etc.  Usually, changing one of these packages in the distribution entails a rebuild of all the others.  Thus, such updates are an inconvenience to users in terms of build time or bandwidth used to achieve the upgrade.
fr: Le sous-ensemble @code{core} se réfère à tous les paquets du cœur de la distribution — c.-à-d.@: les paquets qui sont utilisés pour construire « tout le reste ».  Cela comprend GCC, libc, Binutils, Bash, etc.  Habituellement, changer l'un de ces paquets dans la distribution implique de reconstruire tous les autres.  Ainsi, ces mises à jour sont une nuisance pour les utilisateurs, en terme de temps de compilation et de bande passante utilisés pour effectuer la mise à jour.

note: type: table
en: The @code{non-core} subset refers to the remaining packages.  It is typically useful in cases where an update of the core packages would be inconvenient.
fr: Le sous-ensemble @code{non-core} se réfère au reste des paquets.  C'est habituellement utile dans les cas où une mise à jour des paquets du cœur serait dérangeante.

note: type: table
en: Select all the packages from the manifest in @var{file}.  This is useful to check if any packages of the user manifest can be updated.
fr: Choisi tous les paquets du manifeste dans @var{file}.  C'est utile pour vérifier qu'aucun des paquets du manifeste utilisateur ne peut être mis à jour.

note: type: table
en: Select only packages handled by @var{updater} (may be a comma-separated list of updaters).  Currently, @var{updater} may be one of:
fr: Chois uniquement les paquets pris en charge par @var{updater} (éventuellement une liste de gestionnaires de mise à jour séparés par des virgules). Actuellement, @var{updater} peut être l'une des valeurs suivantes :

note: type: table
en: the updater for GNU packages;
fr: le gestionnaire de mise à jour pour les paquets GNU ;

note: type: table
en: the updater for packages hosted at @uref{https://savannah.gnu.org, Savannah};
fr: le gestionnaire de mise à jour pour les paquets hébergés sur @uref{https://savannah.gnu.org, Savannah} ;

note: type: table
en: the updater for packages hosted at @uref{https://sourceforge.net, SourceForge};
fr: le gestionnaire de mise à jour pour les paquets hébergés sur @uref{https://sourceforge.net, SourceForge} ;

note: type: table
en: the updater for GNOME packages;
fr: le gestionnaire de mise à jour pour les paquets GNOME ;

note: type: table
en: the updater for KDE packages;
fr: le gestionnaire de mise à jour pour les paquets KDE ;

note: type: table
en: the updater for X.org packages;
fr: le gestionnaire de mise à jour pour les paquets X.org ;

note: type: table
en: the updater for packages hosted on kernel.org;
fr: le gestionnaire de mise à jour pour les paquets hébergés sur kernel.org ;

note: type: table
en: the updater for @uref{https://wiki.call-cc.org/eggs/, Egg} packages;
fr: le gestionnaire de mise à jour pour les paquets @uref{https://wiki.call-cc.org/eggs/, Egg} ;

note: type: table
en: the updater for @uref{https://elpa.gnu.org/, ELPA} packages;
fr: le gestionnaire de mise à jour pour les paquets @uref{https://elpa.gnu.org/, ELPA} ;

note: type: table
en: the updater for @uref{https://cran.r-project.org/, CRAN} packages;
fr: le gestionnaire de mise à jour pour les paquets @uref{https://cran.r-project.org/, CRAN} ;

note: type: table
en: the updater for @uref{https://www.bioconductor.org/, Bioconductor} R packages;
fr: le gestionnaire de mise à jour pour les paquets @uref{https://www.bioconductor.org/, Bioconductor} ;

note: type: table
en: the updater for @uref{https://www.cpan.org/, CPAN} packages;
fr: le gestionnaire de mise à jour pour les paquets @uref{https://www.cpan.org/, CPAN} ;

note: type: table
en: the updater for @uref{https://pypi.python.org, PyPI} packages.
fr: le gestionnaire de mise à jour pour les paquets @uref{https://pypi.python.org, PyPI}.

note: type: table
en: the updater for @uref{https://rubygems.org, RubyGems} packages.
fr: le gestionnaire de mise à jour pour les paquets @uref{https://rubygems.org, RubyGems}.

note: type: table
en: the updater for @uref{https://github.com, GitHub} packages.
fr: le gestionnaire de mise à jour pour les paquets @uref{https://github.com, GitHub}.

note: type: table
en: the updater for @uref{https://hackage.haskell.org, Hackage} packages.
fr: le gestionnaire de mise à jour pour les paquets @uref{https://hackage.haskell.org, Hackage}.

note: type: table
en: the updater for @uref{https://www.stackage.org, Stackage} packages.
fr: le gestionnaire de mise à jour pour les paquets @uref{https://www.stackage.org, Stackage}.

note: type: table
en: the updater for @uref{https://crates.io, Crates} packages.
fr: le gestionnaire de mise à jour pour les paquets @uref{https://crates.io, Crates}.

note: type: table
en: the updater for @uref{https://launchpad.net, Launchpad} packages.
fr: le gestionnaire de mise à jour pour les paquets @uref{https://launchpad.net, Launchpad}.

note: type: table
en: a generic updater that crawls the HTML page where the source tarball of the package is hosted, when applicable.
fr: un gestionnaire de mise à jour qui visite la page HTML où l'archive des sources est hébergée, lorsque c'est possible.

note: type: table
en: a generic updater for packages hosted on Git repositories.  It tries to be smart about parsing Git tag names, but if it is not able to parse the tag name and compare tags correctly, users can define the following properties for a package.
fr: un gestionnarie de mise à jour générique pour les paquets hébergés sur des dépôts Git. Il essaye d'analyser les noms de tag Git de manière astucieuse, mais s'il ne parvient pas à analyser le nom d'un tag et à comparer les tags correctement, il est possible de définir les propriétés suivantes pour un paquet.

note: type: item
en: @code{release-tag-prefix}: a regular expression for matching a prefix of
fr: @code{release-tag-prefix} : une expression régulière pour repérer le préfixe dans

note: type: itemize
en: the tag name.
fr: le nom d'un tag.

note: type: item
en: @code{release-tag-suffix}: a regular expression for matching a suffix of
fr: @code{release-tag-suffix} : une expression régulière pour repérer le suffixe dans

note: type: item
en: @code{release-tag-version-delimiter}: a string used as the delimiter in
fr: @code{release-tag-version-delimiter} : une chaîne de caractères utilisée comme délimitation dans

note: type: itemize
en: the tag name for separating the numbers of the version.
fr: le nom d'un tag pour séparer les numéros de version.

note: type: item
en: @code{accept-pre-releases}: by default, the updater will ignore
fr: @code{accept-pre-releases} : par défaut, le gestionnaire de mise à jour ignorera

note: type: itemize
en: pre-releases; to make it also look for pre-releases, set the this property to @code{#t}.
fr: les pré-versions ; pour lui faire chercher aussi les pré-versions, assignez à cette propriété la valeur @code{#t}.

note: type: lisp
en: (package
      (name "foo")
      ;; ...
      (properties
        '((release-tag-prefix . "^release0-")
          (release-tag-suffix . "[a-z]?$")
          (release-tag-version-delimiter . ":"))))
fr: (package
      (name "toto")
      ;; ...
      (properties
        '((release-tag-prefix . "^release0-")
          (release-tag-suffix . "[a-z]?$")
          (release-tag-version-delimiter . ":"))))

note: type: table
en: For instance, the following command only checks for updates of Emacs packages hosted at @code{elpa.gnu.org} and for updates of CRAN packages:
fr: Par exemple, la commande suivante ne vérifie que les mises à jour des paquets Emacs hébergés sur @code{elpa.gnu.org} et les paquets CRAN :

note: type: example
en: $ guix refresh --type=elpa,cran
    gnu/packages/statistics.scm:819:13: r-testthat would be upgraded from 0.10.0 to 0.11.0
    gnu/packages/emacs.scm:856:13: emacs-auctex would be upgraded from 11.88.6 to 11.88.9
fr: $ guix refresh --type=elpa,cran
    gnu/packages/statistics.scm:819:13 : r-testthat serait mis à jour de 0.10.0 à 0.11.0
    gnu/packages/emacs.scm:856:13 : emacs-auctex serait mis à jour de 11.88.6 à 11.88.9

note: type: table
en: List available updaters and exit (see @option{--type} above).
fr: Liste les gestionnaires de mises à jour disponibles et quitte (voir @option{--type} ci-dessus).

note: type: table
en: For each updater, display the fraction of packages it covers; at the end, display the fraction of packages covered by all these updaters.
fr: Pour chaque gestionnaire, affiche le pourcentage de paquets qu'il couvre ; à la fin, affiche le pourcentage de paquets couverts par tous les gestionnaires.

note: type: Plain text
en: In addition, @command{guix refresh} can be passed one or more package names, as in this example:
fr: En plus, on peut passer à @command{guix refresh} un ou plusieurs noms de paquets, comme dans cet exemple :

note: type: Plain text
en: The command above specifically updates the @code{emacs} and @code{idutils} packages.  The @option{--select} option would have no effect in this case.  You might also want to update definitions that correspond to the packages installed in your profile:
fr: La commande ci-dessus met à jour spécifiquement les paquets @code{emacs} et @code{idutils}.  L'option @option{--select} n'aurait aucun effet dans ce cas. Vous voudrez aussi sans doute mettre à jour les définitions qui correspondent aux paquets installés dans votre profil :

note: type: Plain text
en: When considering whether to upgrade a package, it is sometimes convenient to know which packages would be affected by the upgrade and should be checked for compatibility.  For this the following option may be used when passing @command{guix refresh} one or more package names:
fr: Pour déterminer s'il faut mettre à jour un paquet, il est parfois pratique de savoir quels paquets seraient affectés par la mise à jour pour pouvoir vérifier la compatibilité.  Pour cela l'option suivante peut être utilisée avec un ou plusieurs noms de paquets passés à @command{guix refresh} :

note: type: table
en: List top-level dependent packages that would need to be rebuilt as a result of upgrading one or more packages.
fr: Liste les paquets de plus haut-niveau qui devraient être reconstruits après la mise à jour d'un ou plusieurs paquets.

note: type: table
en: @xref{Invoking guix graph, the @code{reverse-package} type of @command{guix graph}}, for information on how to visualize the list of dependents of a package.
fr: @xref{Invoking guix graph, le type @code{reverse-package} de @command{guix graph}}, pour des informations sur la manière de visualiser la liste des paquets dépendant d'un autre.

note: type: Plain text
en: Be aware that the @option{--list-dependent} option only @emph{approximates} the rebuilds that would be required as a result of an upgrade.  More rebuilds might be required under some circumstances.
fr: Sachez que l'option @option{--list-dependent} n'a qu'une approche @emph{approximative} sur les reconstructions qui seraient nécessaires à la suite d'une mise à jour.  D'autres reconstructions peuvent être nécessaires dans certaines circonstances.

note: type: example
en: $ guix refresh --list-dependent flex
    Building the following 120 packages would ensure 213 dependent packages are rebuilt:
    hop@@2.4.0 emacs-geiser@@0.13 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 @dots{}
fr: $ guix refresh --list-dependent flex
    Construire les 120 paquets suivants s'assure que les 213 paquets dépendants sont reconstruits :
    hop@@2.4.0 emacs-geiser@@0.13 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 @dots{}

note: type: Plain text
en: The command above lists a set of packages that could be built to check for compatibility with an upgraded @code{flex} package.
fr: La commande ci-dessus liste un ensemble de paquets qui peuvent être construits pour vérifier la compatibilité d'une mise à jour de @code{flex}.

note: type: table
en: List all the packages which one or more packages depend upon.
fr: Lister tous les paquets dont un paquet ou plus dépendent.

note: type: Plain text
en: The command above lists a set of packages which, when changed, would cause @code{flex} to be rebuilt.
fr: La commande ci-dessus liste un ensemble de paquets qui, lorsqu'ils sont modifiés, causent la reconstruction de @code{flex}.

note: type: Plain text
en: The following options can be used to customize GnuPG operation:
fr: Les options suivante peuvent être utilisées pour personnaliser les opérations avec GnuPG :

note: type: item
en: --gpg=@var{command}
fr: --gpg=@var{commande}

note: type: table
en: Use @var{command} as the GnuPG 2.x command.  @var{command} is searched for in @code{$PATH}.
fr: Utilise @var{commande} comme la commande de GnuPG 2.x.  @var{commande} est recherchée dans @code{PATH}.

note: type: item
en: --keyring=@var{file}
fr: --keyring=@var{fichier}

note: type: table
en: Use @var{file} as the keyring for upstream keys.  @var{file} must be in the @dfn{keybox format}.  Keybox files usually have a name ending in @file{.kbx} and the GNU@tie{}Privacy Guard (GPG) can manipulate these files (@pxref{kbxutil, @command{kbxutil},, gnupg, Using the GNU Privacy Guard}, for information on a tool to manipulate keybox files).
fr: Utilise @var{fichier} comme porte-clefs pour les clefs amont.  @var{fichier} doit être dans le @dfn{format keybox}.  Les fichiers Keybox ont d'habitude un nom qui fini par @file{.kbx} et GNU@tie{}Privacy Guard (GPG) peut manipuler ces fichiers (@pxref{kbxutil, @command{kbxutil},, gnupg, Using the Privacy Guard}, pour plus d'informations sur un outil pour manipuler des fichiers keybox).

note: type: table
en: When this option is omitted, @command{guix refresh} uses @file{~/.config/guix/upstream/trustedkeys.kbx} as the keyring for upstream signing keys.  OpenPGP signatures are checked against keys from this keyring; missing keys are downloaded to this keyring as well (see @option{--key-download} below).
fr: Lorsque cette option est omise, @command{guix refresh} utilise @file{~/.config/guix/upstream/trustedkeys.kbx} comme trousseau pour les clés de signature en amont.  Les signatures OpenPGP sont vérifiées avec ces clés ; les clés manquantes sont aussi téléchargées dans ce trousseau (voir @option{--key-download} plus bas).

note: type: table
en: You can export keys from your default GPG keyring into a keybox file using commands like this one:
fr: Vous pouvez exporter les clefs de votre porte-clefs GPG par défaut dans un fichier keybox avec une commande telle que :

note: type: table
en: Likewise, you can fetch keys to a specific keybox file like this:
fr: De même, vous pouvez récupérer des clefs dans un fichier keybox spécifique comme ceci :

note: type: table
en: @xref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU Privacy Guard}, for more information on GPG's @option{--keyring} option.
fr: @xref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU Privacy Guard} pour plus d'informations sur l'option @option{--keyring} de GPG.

note: type: table
en: Handle missing OpenPGP keys according to @var{policy}, which may be one of:
fr: Gère les clefs OpenPGP manquantes d'après la @var{politique}, qui peut être l'une des suivantes :

note: type: table
en: Always download missing OpenPGP keys from the key server, and add them to the user's GnuPG keyring.
fr: Toujours télécharger les clefs manquantes depuis un serveur de clefs et les ajouter au porte-clefs de l'utilisateur.

note: type: table
en: Never try to download missing OpenPGP keys.  Instead just bail out.
fr: Ne jamais essayer de télécharger les clefs OpenPGP manquante.  Quitter à la place.

note: type: table
en: When a package signed with an unknown OpenPGP key is encountered, ask the user whether to download it or not.  This is the default behavior.
fr: Lorsqu'on rencontre un paquet signé par une clef OpenPGP inconnue, demander à l'utilisateur s'il souhaite la télécharger ou non.  C'est le comportement par défaut.

note: type: table
en: Use @var{host} as the OpenPGP key server when importing a public key.
fr: Utiliser @var{host} comme serveur de clefs OpenPGP lors de l'importe d'une clef publique.

note: type: Plain text
en: The @code{github} updater uses the @uref{https://developer.github.com/v3/, GitHub API} to query for new releases.  When used repeatedly e.g.@: when refreshing all packages, GitHub will eventually refuse to answer any further API requests.  By default 60 API requests per hour are allowed, and a full refresh on all GitHub packages in Guix requires more than this.  Authentication with GitHub through the use of an API token alleviates these limits.  To use an API token, set the environment variable @env{GUIX_GITHUB_TOKEN} to a token procured from @uref{https://github.com/settings/tokens} or otherwise.
fr: Le gestionnaire de mises à jour @code{github} utilise @uref{https://developer.github.com/v3/, GitHub API} pour faire des requêtes sur les nouvelles versions.  Lorsqu'elle est utilisé de manière répétée, par exemple lorsque vous vérifiez tous les paquets, GitHub finira par refuser de répondre à d'autres requêtes de l'API.  Par défaut 60 requêtes à l'heure sont autorisées, et une vérification complète de tous les paquets GitHub dans Guix demande bien plus que cela.  L'authentification avec GitHub à travers l'utilisation d'un jeton d'API lève ces limites.  Pour utiliser un jeton de l'API, initialisez la variable d'environnement @env{GUIX_GITHUB_TOKEN} avec un jeton que vous vous serez procuré sur @uref{https://github.com/settings/tokens} ou autrement.

note: type: section
en: Invoking @command{guix style}
fr: Invoquer @command{guix style}

note: type: cindex
en: styling rules
fr: règles de style

note: type: cindex
en: lint, code style
fr: analyse de style, style du code

note: type: cindex
en: format, code style
fr: formatage, du style du code

note: type: cindex
en: format conventions
fr: Conventions de formatage

note: type: Plain text
en: The @command{guix style} command helps users and packagers alike style their package definitions and configuration files according to the latest fashionable trends.  It can either reformat whole files, with the @option{--whole-file} option, or apply specific @dfn{styling rules} to individual package definitions.  The command currently provides the following styling rules:
fr: La commande @command{guix style} aide aussi bien les utilisateur·ices que les auteur·ices de paquets à présenter leurs définitions de paquets et leurs fichiers de configuration suivant la toute dernière mode. Elle peut aussi bien reformater des fichiers entiers, avec l'option @option{--whole-file}, qu'appliquer des @dfn{règles de style} spécifiques à des définitions de paquets individuelles. La commande fournit actuellement les règles stylistiques suivantes :

note: type: itemize
en: formatting package definitions according to the project's conventions (@pxref{Formatting Code});
fr: formater les définitions de paquets suivant les conventions du projet (@pxref{Formatting Code}) ;

note: type: itemize
en: rewriting package inputs to the ``new style'', as explained below.
fr: réécrire les entrées d'un paquet dans le « nouveau style » expliqué plus bas.

note: type: Plain text
en: The way package inputs are written is going through a transition (@pxref{package Reference}, for more on package inputs).  Until version 1.3.0, package inputs were written using the ``old style'', where each input was given an explicit label, most of the time the package name:
fr: La manière dont les entrées des paquets sont écrites est en phase de transition  (@pxref{package Reference}, pour plus d'information sur les entrées des paquets). Jusqu'à la version 1.3.0, les entrées des paquets étaient écrites avec l'« ancien style », où chaque entrée était associée à une étiquette explicite, la plupart du temps le nom du paquet :

note: type: lisp
en: (package
      ;; @dots{}
      ;; The "old style" (deprecated).
      (inputs `(("libunistring" ,libunistring)
                ("libffi" ,libffi))))
fr: (package
      ;; @dots{}
      ;; L'« ancien style » (obsolète).
      (inputs `(("libunistring" ,libunistring)
                ("libffi" ,libffi))))

note: type: Plain text
en: Today, the old style is deprecated and the preferred style looks like this:
fr: Aujourd'hui, l'ancien style est obsolète et le style de préférence ressemble à ceci :

note: type: lisp
en: (package
      ;; @dots{}
      ;; The "new style".
      (inputs (list libunistring libffi)))
fr: (package
      ;; @dots{}
      ;; Le « nouveau style ».
      (inputs (list libunistring libffi)))

note: type: Plain text
en: Likewise, uses of @code{alist-delete} and friends to manipulate inputs is now deprecated in favor of @code{modify-inputs} (@pxref{Defining Package Variants}, for more info on @code{modify-inputs}).
fr: De la même manière, l'utilisation de @code{alist-delete} et compagnie pour manipuler les entrées est maintenant obsolète en faveur de @code{modify-inputs} (@pxref{Defining Package Variants}, pour plus d'information sur @code{modify-inputs}).

note: type: Plain text
en: In the vast majority of cases, this is a purely mechanical change on the surface syntax that does not even incur a package rebuild.  Running @command{guix style -S inputs} can do that for you, whether you're working on packages in Guix proper or in an external channel.
fr: Dans la grande majorité des cas, c'est un changement purement mécanique de la syntaxe qui ne provoque même pas de reconstruction du paquet. Lancer @command{guix style -S inputs} peut le faire pour vous, que vous travailliez sur des paquets dans Guix ou dans un canal externe.

note: type: example
en: guix style [@var{options}] @var{package}@dots{}
fr: guix style [@var{options}] @var{paquet}@dots{}

note: type: Plain text
en: This causes @command{guix style} to analyze and rewrite the definition of @var{package}@dots{} or, when @var{package} is omitted, of @emph{all} the packages.  The @option{--styling} or @option{-S} option allows you to select the style rule, the default rule being @code{format}---see below.
fr: Cela fait analyser et réécrire la définition des @var{paquet}@dots{} à @command{guix style} ou, si @var{paquet} est omis, de @emph{tous} les paquets. Les options @option{--styling} ou @option{-S} vous permettent de choisir la règle de style, la règle par défaut est @code{format} --- voir plus bas.

note: type: Plain text
en: To reformat entire source files, the syntax is:
fr: Pour reformater des fichiers sources complets, la syntaxe est :

note: type: example
en: guix style --whole-file @var{file}@dots{}
fr: guix style --whole-file @var{fichier}@dots{}

note: type: Plain text
en: The available options are listed below.
fr: Les options disponibles sont listées ci-dessous.

note: type: table
en: Show source file locations that would be edited but do not modify them.
fr: Montre les emplacement dans les fichiers sources qui seraient modifiés mais sans les modifier.

note: type: table
en: Reformat the given files in their entirety.  In that case, subsequent arguments are interpreted as file names (rather than package names), and the @option{--styling} option has no effect.
fr: Reformate entièrement les fichiers donnés. Dans ce cas, les arguments suivants sont interprétés comme des noms de fichiers (plutôt que des noms de paquets), et l'option @option{--styling} n'a aucun effet.

note: type: table
en: As an example, here is how you might reformat your operating system configuration (you need write permissions for the file):
fr: Par exemple, voici comme vous pouvez reformater votre configuration de système d'exploitation (vous devez avoir les permissions en écriture sur le fichier) :

note: type: item
en: --styling=@var{rule}
fr: --styling=@var{règle}

note: type: itemx
en: -S @var{rule}
fr: -S @var{règle}

note: type: table
en: Apply @var{rule}, one of the following styling rules:
fr: Applique la @var{règle}, l'une des règles de style suivantes :

note: type: table
en: Format the given package definition(s)---this is the default styling rule.  For example, a packager running Guix on a checkout (@pxref{Running Guix Before It Is Installed}) might want to reformat the definition of the Coreutils package like so:
fr: Formate les définitions de paquets données --- c'est la règle de style par défaut. Par exemple, la personne qui crée un paquet et qui utilise le Guix du checkout (@pxref{Running Guix Before It Is Installed}) peut vouloir reformater la définition du paquet Coreutils de cette manière :

note: type: table
en: Rewrite package inputs to the ``new style'', as described above.  This is how you would rewrite inputs of package @code{whatnot} in your own channel:
fr: Réécrit les entrées du paquet en le « nouveau style », décrit plus haut. Vous pouvez réécrire les entrées d'un paquet @code{toto} dans votre propre canal de cette manière :

note: type: example
en: guix style -L ~/my/channel -S inputs whatnot
fr: guix style -L ~/mon/canal -S inputs toto

note: type: table
en: Rewriting is done in a conservative way: preserving comments and bailing out if it cannot make sense of the code that appears in an inputs field.  The @option{--input-simplification} option described below provides fine-grain control over when inputs should be simplified.
fr: La réécriture s'effectue de manière prudente : les commentaires sont préservés et le processus s'arrête s'il n'arrive pas à comprendre le code du champ inputs. L'option @option{--input-simplification} décrite plus bas fournit un contrôle plus fin sur les entrées qui devraient être simplifiées.

note: type: table
en: List and describe the available styling rules and exit.
fr: Liste et décrit les règles de style puis quitte.

note: type: table
en: Style the package @var{expr} evaluates to.
fr: Reformate le paquet évalué par @var{expr}.

note: type: table
en: styles the @code{gcc-5} package definition.
fr: modifie le style de la définition du paquet @code{gcc-5}.

note: type: item
en: --input-simplification=@var{policy}
fr: --input-simplification=@var{politique}

note: type: table
en: When using the @code{inputs} styling rule, with @samp{-S inputs}, this option specifies the package input simplification policy for cases where an input label does not match the corresponding package name.  @var{policy} may be one of the following:
fr: Lorsque vous utilisez la règle de style @code{inputs}, avec @samp{-S inputs}, cette option spécifie la politique de simplification des entrées du paquet dans le cas où les étiquettes des entrées ne correspondent pas au nom du paquet. La @var{politique} peut être l'une des suivantes :

note: type: table
en: Simplify inputs only when the change is ``silent'', meaning that the package does not need to be rebuilt (its derivation is unchanged).
fr: Simplifie les entrées seulement si le changement est « silencieux », ce qui signifie que le paquet n'a pas besoin d'être reconstruit (sa dérivation reste inchangée).

note: type: table
en: Simplify inputs only when that is ``safe'' to do: the package might need to be rebuilt, but the change is known to have no observable effect.
fr: Simplifie les entrées seulement si c'est « sûr » : le paquet peut avoir besoin d'être reconstruit, mais on est sûr que le changement n'aura aucun effet observable.

note: type: table
en: Simplify inputs even when input labels do not match package names, and even if that might have an observable effect.
fr: Simplifie les entrées même si les étiquettes des entrées ne correspondent pas au nom du paquet, et même si le changement peut avoir un effet observable.

note: type: table
en: The default is @code{silent}, meaning that input simplifications do not trigger any package rebuild.
fr: La valeur par défaut est @code{silent}, ce qui signifie que les simplifications des entrées n'entraine aucune reconstruction de paquet.

note: type: section
en: Invoking @command{guix lint}
fr: Invoquer @command{guix lint}

note: type: cindex
en: package, checking for errors
fr: paquets, chercher des erreurs

note: type: Plain text
en: The @command{guix lint} command is meant to help package developers avoid common errors and use a consistent style.  It runs a number of checks on a given set of packages in order to find common mistakes in their definitions.  Available @dfn{checkers} include (see @option{--list-checkers} for a complete list):
fr: La commande @command{guix lint} est conçue pour aider les développeur·euses à éviter des erreurs communes et à utiliser un style cohérent lors de l'écriture de recettes de paquets.  Elle lance des vérifications sur un ensemble de paquets donnés pour trouver des erreurs communes dans leur définition.  Les @dfn{vérifieurs} disponibles comprennent (voir @option{--list-checkers} pour une liste complète) :

note: type: table
en: Validate certain typographical and stylistic rules about package descriptions and synopses.
fr: Vérifie certaines règles typographiques et stylistiques dans les descriptions et les synopsis.

note: type: table
en: Identify inputs that should most likely be native inputs.
fr: Identifie les entrées qui devraient sans doute plutôt être des entrées natives.

note: type: table
en: Probe @code{home-page} and @code{source} URLs and report those that are invalid.  Suggest a @code{mirror://} URL when applicable.  If the @code{source} URL redirects to a GitHub URL, recommend usage of the GitHub URL@.  Check that the source file name is meaningful, e.g.@: is not just a version number or ``git-checkout'', without a declared @code{file-name} (@pxref{origin Reference}).
fr: Sonde les URL @code{home-page} et @code{source} et rapporte celles qui sont invalides.  Suggère une URL en @code{mirror://} lorsque c'est possible.  Si l'URL de @code{source} redirige vers une URL GitHub, recommande d'utiliser l'URL GitHub.  Vérifie que le nom du fichier source a un sens, p.@: ex.@: qu'il ne s'agisse pas juste d'un numéro de version ou « git-checkout », sans avoir déclaré un @code{file-name} (@pxref{origin Reference}).

note: type: table
en: Parse the @code{source} URL to determine if a tarball from GitHub is autogenerated or if it is a release tarball.  Unfortunately GitHub's autogenerated tarballs are sometimes regenerated.
fr: Analyse l'URL @code{source} pour déterminer si une archive de GitHub est autogénérée ou s'il s'agit d'une archive de publication.  Malheureusement les archives autogénérées de GitHub sont parfois régénérées.

note: type: table
en: Check that the derivation of the given packages can be successfully computed for all the supported systems (@pxref{Derivations}).
fr: Vérifiez que la dérivation des paquets donnés peut être calculée avec succès pour tous les systèmes pris en charge (@pxref{Dérivations}).

note: type: table
en: Check whether installing the given packages in a profile would lead to collisions.  Collisions occur when several packages with the same name but a different version or a different store file name are propagated.  @xref{package Reference, @code{propagated-inputs}}, for more information on propagated inputs.
fr: Vérifiez si l'installation des paquets donnés dans un profil risque d'entraîner des collisions.  Des collisions se produisent lorsque plusieurs paquets portant le même nom mais avec une version différente ou un nom de fichier de stockage différent sont propagés.  @xref{package Reference, @code{propagated-inputs}}, pour plus d'informations sur les entrées propagées.

note: type: item
en: archival
fr: archivage

note: type: cindex
en: Software Heritage, source code archive
fr: Software Heritage, archive de code source

note: type: cindex
en: archival of source code, Software Heritage
fr: archivage de code source, Software Heritage

note: type: table
en: Checks whether the package's source code is archived at @uref{https://www.softwareheritage.org, Software Heritage}.
fr: Vérifie si le code source du paquet est archivé à @uref{https://www.softwareheritage.org, Software Heritage}.

note: type: table
en: When the source code that is not archived comes from a version-control system (VCS)---e.g., it's obtained with @code{git-fetch}, send Software Heritage a ``save'' request so that it eventually archives it.  This ensures that the source will remain available in the long term, and that Guix can fall back to Software Heritage should the source code disappear from its original host.  The status of recent ``save'' requests can be @uref{https://archive.softwareheritage.org/save/#requests, viewed on-line}.
fr: Lorsque le code source non archivé provient d'un système de contrôle de version (VCS)---par exemple, il est obtenu avec @code{git-fetch}, envoyez au Software Heritage une requête « save » afin qu'il l'archive éventuellement.  Cela garantit que le code source restera disponible à long terme et que Guix peut se retourner vers le Software Heritage si le code source disparaît de son hôte d'origine.  L'état des demandes récentes de « sauvegarde » peut être @uref{https://archive.softwareheritage.org/save/#requests, consulté en ligne}.

note: type: table
en: When source code is a tarball obtained with @code{url-fetch}, simply print a message when it is not archived.  As of this writing, Software Heritage does not allow requests to save arbitrary tarballs; we are working on ways to ensure that non-VCS source code is also archived.
fr: Quand le code source est une archive obtenue avec @code{url-fetch}, cela affiche simplement un message quand il n'est pas archivé. Au moment où nous écrivons ces lignes, le Software Heritage n'autorise pas les demandes de sauvegarde d'archives arbitraires ; nous travaillons sur les moyens de garantir que le code source non-VCS soit également archivé.

note: type: table
en: Software Heritage @uref{https://archive.softwareheritage.org/api/#rate-limiting, limits the request rate per IP address}.  When the limit is reached, @command{guix lint} prints a message and the @code{archival} checker stops doing anything until that limit has been reset.
fr: Software Heritage @uref{https://archive.softwareheritage.org/api/#rate-limiting, limits the request rate per IP address}.  Quand la limite est atteinte, @command{guix lint} affiche un message et le vérificateur @code{archival} arrête de faire quoi que ce soit jusqu'à ce que cette limite soit réinitialisée.

note: type: cindex
en: security vulnerabilities
fr: vulnérabilités

note: type: table
en: Report known vulnerabilities found in the Common Vulnerabilities and Exposures (CVE) databases of the current and past year @uref{https://nvd.nist.gov/vuln/data-feeds, published by the US NIST}.
fr: Rapporte les vulnérabilités connues trouvées dans les bases de données CVE (Common Vulnerabilities and Exposures) de l'année en cours et de l'année précédente @uref{https://nvd.nist.gov/download.cfm#CVE_FEED, published by the US NIST}.

note: type: table
en: To view information about a particular vulnerability, visit pages such as:
fr: Pour voir les informations sur une vulnérabilité en particulier, visitez les pages :

note: type: indicateurl{#1}
en: https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-YYYY-ABCD
fr: https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-ANNÉE-ABCD

note: type: indicateurl{#1}
en: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-YYYY-ABCD
fr: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-ANNÉE-ABCD

note: type: table
en: where @code{CVE-YYYY-ABCD} is the CVE identifier---e.g., @code{CVE-2015-7554}.
fr: où @code{CVE-ANNÉE-ABCD} est l'identifiant CVE — p.@: ex.@: @code{CVE-2015-7554}.

note: type: table
en: Package developers can specify in package recipes the @uref{https://nvd.nist.gov/products/cpe,Common Platform Enumeration (CPE)} name and version of the package when they differ from the name or version that Guix uses, as in this example:
fr: On peut spécifier dans les recettes des paquets le nom @uref{https://nvd.nist.gov/products/cpe,Common Platform Enumeration (CPE)} et la version du paquet s'ils diffèrent du nom et de la version que Guix utilise, comme dans cet exemple :

note: type: lisp
en: (package
      (name "grub")
      ;; @dots{}
      ;; CPE calls this package "grub2".
      (properties '((cpe-name . "grub2")
                    (cpe-version . "2.3"))))
fr: (package
      (name "grub")
      ;; @dots{}
      ;; CPE nomme ce paquet "grub2".
      (properties '((cpe-name . "grub2")
                    (cpe-version . "2.3"))))

note: type: table
en: Some entries in the CVE database do not specify which version of a package they apply to, and would thus ``stick around'' forever.  Package developers who found CVE alerts and verified they can be ignored can declare them as in this example:
fr: Certaines entrées dans la base de données CVE ne spécifient pas la version du paquet auquel elles s'appliquent et lui restera donc attachée pour toujours.  Les développeur·euses qui trouvent des alertes CVE et ont vérifié qu'elles peuvent être ignorées peuvent les déclarer comme dans cet exemple :

note: type: lisp
en: (package
      (name "t1lib")
      ;; @dots{}
      ;; These CVEs no longer apply and can be safely ignored.
      (properties `((lint-hidden-cve . ("CVE-2011-0433"
                                        "CVE-2011-1553"
                                        "CVE-2011-1554"
                                        "CVE-2011-5244")))))
fr: (package
      (name "t1lib")
      ;; @dots{}
      ;; Ces CVE ne s'appliquent plus et peuvent être ignorée sans problème.
      (properties `((lint-hidden-cve . ("CVE-2011-0433"
                                        "CVE-2011-1553"
                                        "CVE-2011-1554"
                                        "CVE-2011-5244")))))

note: type: table
en: Warn about obvious source code formatting issues: trailing white space, use of tabulations, etc.
fr: Avertit de problèmes de formatage du code source évidents : des espaces en fin de ligne, des tabulations, etc.

note: type: table
en: Report old-style input labels that do not match the name of the corresponding package.  This aims to help migrate from the ``old input style''.  @xref{package Reference}, for more information on package inputs and input styles.  @xref{Invoking guix style}, on how to migrate to the new style.
fr: Rapport les étiquettes de l'ancien style qui ne correspondent pas au nom du paquet. Cela a pour but d'aider à migrer de « l'ancien style ». @xref{package Reference}, pour plus d'information sur les entrées des paquets et les styles d'entrées. @xref{Invoking guix style}, pour la manière de migrer vers le nouveau style.

note: type: Plain text
en: If no package is given on the command line, then all packages are checked.  The @var{options} may be zero or more of the following:
fr: Si aucun paquet n'est donné par la ligne de commande, tous les paquets seront vérifiés.  Les @var{options} peuvent contenir aucune ou plus des options suivantes :

note: type: table
en: List and describe all the available checkers that will be run on packages and exit.
fr: Liste et décrit tous les vérificateurs disponibles qui seront lancés sur les paquets puis quitte.

note: type: table
en: Only enable the checkers specified in a comma-separated list using the names returned by @option{--list-checkers}.
fr: N'active que les vérificateurs spécifiés dans une liste de noms séparés par des virgules parmi la liste renvoyée par @option{--list-checkers}.

note: type: table
en: Only disable the checkers specified in a comma-separated list using the names returned by @option{--list-checkers}.
fr: Ne désactive que les vérifications spécifiés dans une liste de noms séparés par des virgules, en utilisant les noms de @option{--list-checkers}.

note: type: table
en: This is useful to unambiguously designate packages, as in this example:
fr: C'est utile pour désigner des paquets sans ambiguïté, comme dans cet exemple :

note: type: table
en: Only enable the checkers that do not depend on Internet access.
fr: N'active que les vérificateurs qui ne dépendent pas d'un accès réseau.

note: type: section
en: Invoking @command{guix size}
fr: Invoquer @command{guix size}

note: type: code{#1}
en: size
fr: taille

note: type: cindex
en: package size
fr: paquet, taille

note: type: Plain text
en: The @command{guix size} command helps package developers profile the disk usage of packages.  It is easy to overlook the impact of an additional dependency added to a package, or the impact of using a single output for a package that could easily be split (@pxref{Packages with Multiple Outputs}).  Such are the typical issues that @command{guix size} can highlight.
fr: La commande @command{guix size} aide à dresser un profil de l'utilisation de l'espace disque par les paquets.  Il est facile de négliger l'impact d'une dépendance supplémentaire ajoutée à un paquet, ou l'impact de l'utilisation d'une sortie unique pour un paquet qui pourrait être facilement séparé (@pxref{Packages with Multiple Outputs}).  Ce sont ces problèmes que @command{guix size} peut typiquement mettre en valeur.

note: type: Plain text
en: The command can be passed one or more package specifications such as @code{gcc@@4.8} or @code{guile:debug}, or a file name in the store.  Consider this example:
fr: On peut passer un ou plusieurs spécifications de paquets à la commande, comme @code{gcc@@4.8} ou @code{guile:debug}, ou un nom de fichier dans le dépôt.  Regardez cet exemple :

note: type: Plain text
en: The store items listed here constitute the @dfn{transitive closure} of Coreutils---i.e., Coreutils and all its dependencies, recursively---as would be returned by:
fr: Les éléments du dépôt listés ici constituent la @dfn{clôture transitive} de Coreutils — c.-à-d.@: Coreutils et toutes ses dépendances, récursivement — comme ce qui serait renvoyé par :

note: type: Plain text
en: Here the output shows three columns next to store items.  The first column, labeled ``total'', shows the size in mebibytes (MiB) of the closure of the store item---that is, its own size plus the size of all its dependencies.  The next column, labeled ``self'', shows the size of the item itself.  The last column shows the ratio of the size of the item itself to the space occupied by all the items listed here.
fr: Ici, la sortie possède trois colonnes à côté de chaque élément du dépôt.  La première colonne, nommée « total », montre la taille en mébioctet (Mio) de la clôture de l'élément du dépôt — c'est-à-dire sa propre taille plus la taille de ses dépendances. La colonne suivante, nommée « lui-même », montre la taille de l'élément lui-même.  La dernière colonne montre le ration de la taille de l'élément lui-même par rapport à celle de tous les éléments montrés.

note: type: Plain text
en: In this example, we see that the closure of Coreutils weighs in at 79@tie{}MiB, most of which is taken by libc and GCC's run-time support libraries.  (That libc and GCC's libraries represent a large fraction of the closure is not a problem @i{per se} because they are always available on the system anyway.)
fr: Dans cet exemple, on voit que la clôture de Coreutils pèse 79@tie{}Mio, dont la plupart est dû à la libc et aux bibliothèques à l'exécution de GCC (ce n'est pas un problème en soit que la libc et les bibliothèques de GCC représentent une grande part de la clôture parce qu'elles sont toujours disponibles sur le système de toute façon).

note: type: Plain text
en: Since the command also accepts store file names, assessing the size of a build result is straightforward:
fr: Comme la commande accepte également les noms de fichiers de dépôt, il est facile d'évaluer la taille d'un résultat de construction :

note: type: Plain text
en: When the package(s) passed to @command{guix size} are available in the store@footnote{More precisely, @command{guix size} looks for the @emph{ungrafted} variant of the given package(s), as returned by @code{guix build @var{package} --no-grafts}.  @xref{Security Updates}, for information on grafts.}, @command{guix size} queries the daemon to determine its dependencies, and measures its size in the store, similar to @command{du -ms --apparent-size} (@pxref{du invocation,,, coreutils, GNU Coreutils}).
fr: Lorsque les paquets passés à @command{guix size} sont disponibles dans le dépôt@footnote{Plus précisément, @command{guix size} cherche les variantes @emph{non greffées} des paquets donnés, tels qu'ils sont renvoyés par @code{guix build @var{paquet} --no-graft}.  @xref{Security Updates} pour des informations sur les greffes}, @command{guix size} demande au démon de déterminer ses dépendances, et mesure sa taille dans le dépôt, comme avec @command{du -ms --apparent-size} (@pxref{du invocation,,, coreutils, GNU Coreutils}).

note: type: Plain text
en: When the given packages are @emph{not} in the store, @command{guix size} reports information based on the available substitutes (@pxref{Substitutes}).  This makes it possible it to profile disk usage of store items that are not even on disk, only available remotely.
fr: Lorsque les paquets donnés ne sont @emph{pas} dans le dépôt, @command{guix size} rapporte les informations en se basant sur les substituts disponibles (@pxref{Substituts}). Cela permet de profiler l'utilisation du disque des éléments du dépôt même s'ils ne sont pas sur le disque, mais disponibles à distance.

note: type: Plain text
en: You can also specify several package names:
fr: Vous pouvez aussi spécifier plusieurs noms de paquets :

note: type: Plain text
en: In this example we see that the combination of the four packages takes 102.3@tie{}MiB in total, which is much less than the sum of each closure since they have a lot of dependencies in common.
fr: Dans cet exemple on voit que la combinaison des quatre paquets prend 102.3@tie{}Mio en tout, ce qui est bien moins que la somme des clôtures puisqu'ils ont beaucoup de dépendances en commun.

note: type: Plain text
en: When looking at the profile returned by @command{guix size}, you may find yourself wondering why a given package shows up in the profile at all.  To understand it, you can use @command{guix graph --path -t references} to display the shortest path between the two packages (@pxref{Invoking guix graph}).
fr: En regardant le profil renvoyé par @command{guix size}, vous pouvez vous demander pourquoi un paquet donné apparaît dans le profil.  Pour le comprendre, vous pouvez utiliser @command{guix graph --path -t references} pour afficher le chemin le plus court entre les deux paquets (@pxref{Invoquer guix graph}).

note: type: Plain text
en: The available options are:
fr: Les options disponibles sont :

note: type: table
en: Use substitute information from @var{urls}.  @xref{client-substitute-urls, the same option for @code{guix build}}.
fr: Utilise les informations de substituts de @var{urls}.  @xref{client-substitute-urls, the same option for @code{guix build}}.

note: type: item
en: --sort=@var{key}
fr: --sort=@var{clef}

note: type: table
en: Sort lines according to @var{key}, one of the following options:
fr: Trie les lignes en fonction de la @var{clef}, l'une des options suivantes :

note: type: item
en: self
fr: lui-même

note: type: table
en: the size of each item (the default);
fr: la taille de chaque élément (par défaut) ;

note: type: table
en: the total size of the item's closure.
fr: la taille totale de la clôture de l'élément.

note: type: item
en: --map-file=@var{file}
fr: --map-file=@var{fichier}

note: type: table
en: Write a graphical map of disk usage in PNG format to @var{file}.
fr: Écrit un schéma de l'utilisation du disque au format PNG dans @var{fichier}.

note: type: table
en: For the example above, the map looks like this:
fr: Pour l'exemple au-dessus, le schéma ressemble à ceci :

note: type: table
en: @image{images/coreutils-size-map,5in,, map of Coreutils disk usage produced by @command{guix size}}
fr: @image{images/coreutils-size-map,5in,, schéma de l'utilisation du disque de Coreutils produit par @command{guix size}}

note: type: table
en: This option requires that @uref{https://wingolog.org/software/guile-charting/, Guile-Charting} be installed and visible in Guile's module search path.  When that is not the case, @command{guix size} fails as it tries to load it.
fr: Cette option requiert l'installation de @uref{https://wingolog.org/software/guile-charting/, Guile-Charting} et qu'il soit visible dans le chemin de recherche des modules Guile.  Lorsque ce n'est pas le cas, @command{guix size} plante en essayant de le charger.

note: type: table
en: Consider packages for @var{system}---e.g., @code{x86_64-linux}.
fr: Considère les paquets pour @var{système} — p.@: ex.@: @code{x86_64-linux}.

note: type: section
en: Invoking @command{guix graph}
fr: Invoque @command{guix graph}

note: type: Plain text
en: Packages and their dependencies form a @dfn{graph}, specifically a directed acyclic graph (DAG).  It can quickly become difficult to have a mental model of the package DAG, so the @command{guix graph} command provides a visual representation of the DAG@.  By default, @command{guix graph} emits a DAG representation in the input format of @uref{https://www.graphviz.org/, Graphviz}, so its output can be passed directly to the @command{dot} command of Graphviz.  It can also emit an HTML page with embedded JavaScript code to display a ``chord diagram'' in a Web browser, using the @uref{https://d3js.org/, d3.js} library, or emit Cypher queries to construct a graph in a graph database supporting the @uref{https://www.opencypher.org/, openCypher} query language.  With @option{--path}, it simply displays the shortest path between two packages.  The general syntax is:
fr: Les paquets et leurs dépendances forment un @dfn{graphe}, plus précisément un graphe orienté acyclique (DAG).  Il peut vite devenir difficile d'avoir une représentation mentale du DAG d'un paquet, donc la commande @command{guix graph} fournit une représentation visuelle du DAG@.  Par défaut, @command{guix graph} émet un représentation du DAG dans le format d'entrée de @uref{https://www.graphviz.org/, Graphviz}, pour que sa sortie puisse être passée directement à la commande @command{dot} de Graphviz.  Elle peut aussi émettre une page HTML avec du code Javascript pour afficher un « diagramme d'accords » dans un navigateur Web, grâce à la bibliothèque @uref{https://d3js.org/, d3.js}, ou émettre des requêtes Cypher pour construire un graphe dans une base de donnée de graphes supportant le langage de requêtes @uref{https://www.opencypher.org/, openCypher}. Avec l'option @option{--path}, elle affiche simplement le chemin le plus court entre deux paquets. La syntaxe générale est :

note: type: example
en: guix graph @var{options} @var{package}@dots{}
fr: guix graph @var{options} @var{paquet}@dots{}

note: type: Plain text
en: For example, the following command generates a PDF file representing the package DAG for the GNU@tie{}Core Utilities, showing its build-time dependencies:
fr: Par exemple, la commande suivante génère un fichier PDF représentant le DAG du paquet pour GNU@tie{}Core Utilities, qui montre ses dépendances à la compilation :

note: type: Plain text
en: The output looks like this:
fr: La sortie ressemble à ceci :

note: type: Plain text
en: @image{images/coreutils-graph,2in,,Dependency graph of the GNU Coreutils}
fr: @image{images/coreutils-graph,2in,,Graphe de dépendance de GNU Coreutils}

note: type: Plain text
en: Nice little graph, no?
fr: Joli petit graphe, non ?

note: type: Plain text
en: You may find it more pleasant to navigate the graph interactively with @command{xdot} (from the @code{xdot} package):
fr: Vous pouvez trouver plus amusant de naviguer dans le graphe interactivement avec @command{xdot} (du paquet @code{xdot}) :

note: type: Plain text
en: But there is more than one graph! The one above is concise: it is the graph of package objects, omitting implicit inputs such as GCC, libc, grep, etc.  It is often useful to have such a concise graph, but sometimes one may want to see more details.  @command{guix graph} supports several types of graphs, allowing you to choose the level of detail:
fr: Mais il y a plus qu'un seul graphe !  Celui au-dessus est concis : c'est le graphe des objets paquets, en omettant les entrées implicites comme GCC, libc, grep, etc.  Il est souvent utile d'avoir ces graphes concis, mais parfois on veut voir plus de détails.  @command{guix graph} supporte plusieurs types de graphes, qui vous permettent de choisir le niveau de détails :

note: type: table
en: This is the default type used in the example above.  It shows the DAG of package objects, excluding implicit dependencies.  It is concise, but filters out many details.
fr: C'est le type par défaut utilisé dans l'exemple plus haut.  Il montre le DAG des objets paquets, sans les dépendances implicites.  C'est concis, mais omet pas mal de détails.

note: type: table
en: This shows the @emph{reverse} DAG of packages.  For example:
fr: Cela montre le DAG @emph{inversé} des paquets.  Par exemple :

note: type: table
en: ...@: yields the graph of packages that @emph{explicitly} depend on OCaml (if you are also interested in cases where OCaml is an implicit dependency, see @code{reverse-bag} below).
fr: ...@: crée le graphe des paquets qui dépendent @emph{explicitement} d'OCaml (si vous êtes aussi intéressé·e dans le cas où OCaml représente une dépendance implicite, voir @code{reverse-bag} ci-dessous).

note: type: table
en: Note that for core packages this can yield huge graphs.  If all you want is to know the number of packages that depend on a given package, use @command{guix refresh --list-dependent} (@pxref{Invoking guix refresh, @option{--list-dependent}}).
fr: Remarquez que pour les paquets du cœur de la distribution, cela crée des graphes énormes.  Si vous voulez seulement voir le nombre de paquets qui dépendent d'un paquet donnés, utilisez @command{guix refresh --list-dependent} (@pxref{Invoking guix refresh, @option{--list-dependent}}).

note: type: table
en: This is the package DAG, @emph{including} implicit inputs.
fr: C'est le DAG du paquet, @emph{avec} les entrées implicites.

note: type: table
en: For instance, the following command:
fr: Par exemple, la commande suivante :

note: type: table
en: ...@: yields this bigger graph:
fr: …@: montre ce graphe plus gros :

note: type: table
en: @image{images/coreutils-bag-graph,,5in,Detailed dependency graph of the GNU Coreutils}
fr: @image{images/coreutils-bag-graph,,5in,Graphe des dépendances détaillé de GNU Coreutils}

note: type: table
en: At the bottom of the graph, we see all the implicit inputs of @var{gnu-build-system} (@pxref{Build Systems, @code{gnu-build-system}}).
fr: En bas du graphe, on voit toutes les entrées implicites de @var{gnu-build-system} (@pxref{Build Systems, @code{gnu-build-system}}).

note: type: table
en: Now, note that the dependencies of these implicit inputs---that is, the @dfn{bootstrap dependencies} (@pxref{Bootstrapping})---are not shown here, for conciseness.
fr: Maintenant, remarquez que les dépendances de ces entrées implicites — c'est-à-dire les @dfn{dépendances de bootstrap} (@pxref{Bootstrapping}) — ne sont pas affichées, pour rester concis.

note: type: table
en: Similar to @code{bag-emerged}, but this time including all the bootstrap dependencies.
fr: Comme @code{bag-emerged} mais cette fois inclus toutes les dépendances de bootstrap.

note: type: table
en: Similar to @code{bag}, but also showing origins and their dependencies.
fr: Comme @code{bag}, mais montre aussi les origines et leurs dépendances.

note: type: table
en: This shows the @emph{reverse} DAG of packages.  Unlike @code{reverse-package}, it also takes implicit dependencies into account.  For example:
fr: Cela montre le DAG @emph{inverse} des paquets.  Contrairement à @code{reverse-package}, il montre aussi les dépendance implicites.  Par exemple :

note: type: table
en: ...@: yields the graph of all packages that depend on Dune, directly or indirectly.  Since Dune is an @emph{implicit} dependency of many packages @i{via} @code{dune-build-system}, this shows a large number of packages, whereas @code{reverse-package} would show very few if any.
fr: …@: crée le graphe des tous les paquets qui dépendent de Dune, directement ou indirectement.  Comme Dune est une dépendance @emph{implicite} de nombreux paquets @i{via} @code{dune-build-system}, cela montre un plus grand nombre de paquets, alors que @code{reverse-package} en montrerait très peu, voir aucun.

note: type: table
en: This is the most detailed representation: It shows the DAG of derivations (@pxref{Derivations}) and plain store items.  Compared to the above representation, many additional nodes are visible, including build scripts, patches, Guile modules, etc.
fr: C'est la représentation lu plus détaillée : elle montre le DAG des dérivations (@pxref{Derivations}) et des éléments du dépôt.  Comparé à la représentation ci-dessus, beaucoup plus de nœuds sont visibles, dont les scripts de construction, les correctifs, les modules Guile, etc.

note: type: table
en: For this type of graph, it is also possible to pass a @file{.drv} file name instead of a package name, as in:
fr: Pour ce type de graphe, il est aussi possible de passer un nom de fichier @file{.drv} à la place d'un nom de paquet, comme dans :

note: type: table
en: This is the graph of @dfn{package modules} (@pxref{Package Modules}).  For example, the following command shows the graph for the package module that defines the @code{guile} package:
fr: C'est le graphe des @dfn{modules de paquets} (@pxref{Package Modules}).  Par exemple, la commande suivante montre le graphe des modules de paquets qui définissent le paquet @code{guile} :

note: type: Plain text
en: All the types above correspond to @emph{build-time dependencies}.  The following graph type represents the @emph{run-time dependencies}:
fr: Tous les types ci-dessus correspondent aux @emph{dépendances à la construction}.  Le type de graphe suivant représente les @emph{dépendances à l'exécution} :

note: type: table
en: This is the graph of @dfn{references} of a package output, as returned by @command{guix gc --references} (@pxref{Invoking guix gc}).
fr: C'est le graphe des @dfn{references} d'une sortie d'un paquet, telles que renvoyées par @command{guix gc --references} (@pxref{Invoking guix gc}).

note: type: table
en: If the given package output is not available in the store, @command{guix graph} attempts to obtain dependency information from substitutes.
fr: Si la sortie du paquet donnée n'est pas disponible dans le dépôt, @command{guix graph} essayera d'obtenir les informations sur les dépendances à travers les substituts.

note: type: table
en: Here you can also pass a store file name instead of a package name.  For example, the command below produces the reference graph of your profile (which can be big!):
fr: Vous pouvez aussi passer un nom de fichier du dépôt plutôt qu'un nom de paquet.  Par exemple, la commande ci-dessous produit le graphe des références de votre profile (qui peut être gros !) :

note: type: table
en: This is the graph of the @dfn{referrers} of a store item, as returned by @command{guix gc --referrers} (@pxref{Invoking guix gc}).
fr: C'est le graphe des @dfn{référents} d'un élément du dépôt, tels que renvoyés par @command{guix gc --referrers} (@pxref{Invoking guix gc}).

note: type: table
en: This relies exclusively on local information from your store.  For instance, let us suppose that the current Inkscape is available in 10 profiles on your machine; @command{guix graph -t referrers inkscape} will show a graph rooted at Inkscape and with those 10 profiles linked to it.
fr: Cela repose exclusivement sur les informations de votre dépôt.  Par exemple, supposons que Inkscape est actuellement disponible dans 10 profils sur votre machine ; @command{guix graph -t referrers inkscape} montrera le graphe dont la racine est Inkscape avec 10 profils qui y sont liés.

note: type: table
en: It can help determine what is preventing a store item from being garbage collected.
fr: Cela peut aider à déterminer ce qui empêche un élément du dépôt d'être glané.

note: type: cindex
en: shortest path, between packages
fr: chemin le plus court entre paquets

note: type: Plain text
en: Often, the graph of the package you are interested in does not fit on your screen, and anyway all you want to know is @emph{why} that package actually depends on some seemingly unrelated package.  The @option{--path} option instructs @command{guix graph} to display the shortest path between two packages (or derivations, or store items, etc.):
fr: Souvent, le graphe du paquet qui vous intéresse ne tient pas sur votre écran, et de toute façon tout ce que vous voulez savoir c'est @emph{pourquoi} ce paquet dépend en fait d'un paquet apparemment sans rapport.  L'option @option{--path} indique à @command{guix graph} d'afficher le chemin le plus court entre deux paquets (ou dérivations, ou éléments du dépôt, etc.) :

note: type: Plain text
en: Sometimes you still want to visualize the graph but would like to trim it so it can actually be displayed.  One way to do it is via the @option{--max-depth} (or @option{-M}) option, which lets you specify the maximum depth of the graph.  In the example below, we visualize only @code{libreoffice} and the nodes whose distance to @code{libreoffice} is at most 2:
fr: Parfois vous voudrez quand même visualiser le graphe mais préférerez le recouper afin qu'il puisse être affiché. Un moyen pour ce faire est l'option @option{--max-depth} (ou @option{-M}), qui vous laisse spécifier la profondeur maximale du graphe. Dans l'exemple ci-dessous, nous visualisons seulement @code{libreoffice} et les nœuds dont la distance à @code{libreoffice} est au plus 2 :

note: type: Plain text
en: Mind you, that's still a big ball of spaghetti, but at least @command{dot} can render it quickly and it can be browsed somewhat.
fr: Attention hein, c'est encore un sacré plat de spaghetti, mais au moins @command{dot} peut en faire un rendu rapide et il est possible de le parcourir un peu.

note: type: Plain text
en: The available options are the following:
fr: Les options disponibles sont les suivantes :

note: type: table
en: Produce a graph output of @var{type}, where @var{type} must be one of the values listed above.
fr: Produit un graphe en sortie de type @var{type} où @var{type} doit être l'un des types au-dessus.

note: type: table
en: List the supported graph types.
fr: Liste les types de graphes supportés.

note: type: item
en: --backend=@var{backend}
fr: --backend=@var{moteur}

note: type: itemx
en: -b @var{backend}
fr: -b @var{moteur}

note: type: table
en: Produce a graph using the selected @var{backend}.
fr: Produit un graphe avec le @var{moteur} choisi.

note: type: table
en: List the supported graph backends.
fr: Liste les moteurs de graphes supportés.

note: type: table
en: Currently, the available backends are Graphviz and d3.js.
fr: Actuellement les moteurs disponibles sont Graphviz et d3.js.

note: type: table
en: Display the shortest path between two nodes of the type specified by @option{--type}.  The example below shows the shortest path between @code{libreoffice} and @code{llvm} according to the references of @code{libreoffice}:
fr: Affiche le chemin le plus court entre deux nœuds du type spécifié par @option{--type}. L'exemple ci-dessous montre le chemin le plus court entre @code{libreoffice} et @code{llvm} correspondant aux références de @code{libreoffice} :

note: type: table
en: Display the graph for @var{system}---e.g., @code{i686-linux}.
fr: Affiche le graphe pour @var{système} — p.@: ex.@: @code{i686-linux}.

note: type: table
en: The package dependency graph is largely architecture-independent, but there are some architecture-dependent bits that this option allows you to visualize.
fr: Le graphe de dépendance des paquets est la plupart du temps indépendant de l'architecture, mais il y a quelques parties qui dépendent de l'architecture que cette option vous permet de visualiser.

note: type: Plain text
en: On top of that, @command{guix graph} supports all the usual package transformation options (@pxref{Package Transformation Options}).  This makes it easy to view the effect of a graph-rewriting transformation such as @option{--with-input}.  For example, the command below outputs the graph of @code{git} once @code{openssl} has been replaced by @code{libressl} everywhere in the graph:
fr: En plus de cela, @command{guix graph} prend en charge toutes les options habituelles de transformation des paquets (@pxref{Package Transformation Options}).  Il est ainsi facile de voir l'effet d'une transformation de réécriture de graphe telle que @option{--with-input}.  Par exemple, la commande ci-dessous produit le graphe de @code{git} une fois que @code{openssl} a été remplacé par @code{libressl} partout dans le graphe :

note: type: Plain text
en: So many possibilities, so much fun!
fr: Tant de possibilités, tant de plaisir !

note: type: section
en: Invoking @command{guix publish}
fr: Invoquer @command{guix publish}

note: type: Plain text
en: The purpose of @command{guix publish} is to enable users to easily share their store with others, who can then use it as a substitute server (@pxref{Substitutes}).
fr: Le but de @command{guix publish} est de vous permettre de partager facilement votre dépôt avec d'autres personnes qui peuvent ensuite l'utiliser comme serveur de substituts (@pxref{Substituts}).

note: type: Plain text
en: When @command{guix publish} runs, it spawns an HTTP server which allows anyone with network access to obtain substitutes from it.  This means that any machine running Guix can also act as if it were a build farm, since the HTTP interface is compatible with Cuirass, the software behind the @code{@value{SUBSTITUTE-SERVER-1}} build farm.
fr: Lorsque @command{guix publish} est lancé, il crée un serveur HTTP qui permet à n'importe qui avec un accès réseau d'y récupérer des substituts.  Cela signifie que toutes les machines qui font tourner Guix peuvent aussi agir comme une ferme de construction, puisque l'interface HTTP est compatible avec Cuirass, le logiciel derrière la ferme de construction @code{@value{SUBSTITUTE-SERVER-1}}.

note: type: Plain text
en: For security, each substitute is signed, allowing recipients to check their authenticity and integrity (@pxref{Substitutes}).  Because @command{guix publish} uses the signing key of the system, which is only readable by the system administrator, it must be started as root; the @option{--user} option makes it drop root privileges early on.
fr: Pour des raisons de sécurité, chaque substitut est signé, ce qui permet aux destinataires de vérifier leur authenticité et leur intégrité (@pxref{Substituts}). Parce que @command{guix publish} utilise la clé de signature du système, qui n'est lisible que par l'administrateur système, il doit être lancé en root ; l'option @code{--user} lui fait abandonner les privilèges de root dès le début.

note: type: Plain text
en: The signing key pair must be generated before @command{guix publish} is launched, using @command{guix archive --generate-key} (@pxref{Invoking guix archive}).
fr: La pair de clefs pour les signatures doit être générée avant de lancer @command{guix publish}, avec @command{guix archive --generate-key} (@pxref{Invoking guix archive}).

note: type: Plain text
en: When the @option{--advertise} option is passed, the server advertises its availability on the local network using multicast DNS (mDNS) and DNS service discovery (DNS-SD), currently @i{via} Guile-Avahi (@pxref{Top,,, guile-avahi, Using Avahi in Guile Scheme Programs}).
fr: Lorsque vous passez l'option @option{--advertise}, le serveur annonce sa disponibilité sur le réseau local en utilisant le DNS multicast (mDNS) et le protocole de découvert de service DNS (DNS-SD), actuellement via Guile-Avahi (@pxref{Top,,, guile-avahi, Using Avahi in Guile Scheme Programs}).

note: type: Plain text
en: Running @command{guix publish} without any additional arguments will spawn an HTTP server on port 8080:
fr: Lancer @command{guix publish} sans arguments supplémentaires lancera un serveur HTTP sur le port 8080 :

note: type: cindex
en: socket activation, for @command{guix publish}
fr: activation par socket, pour @command{guix publish}

note: type: Plain text
en: @command{guix publish} can also be started following the systemd ``socket activation'' protocol (@pxref{Service De- and Constructors, @code{make-systemd-constructor},, shepherd, The GNU Shepherd Manual}).
fr: @command{guix publish} peut aussi être démarré avec le protocole d'« activation par socket » de systemd (@pxref{Service De- and Constructors, @code{make-systemd-constructor},, shepherd, le manuel de GNU Shepherd}).

note: type: Plain text
en: Once a publishing server has been authorized, the daemon may download substitutes from it.  @xref{Getting Substitutes from Other Servers}.
fr: Une fois qu'un serveur de publication a été autorisé, le démon peut télécharger des substituts à partir de lui.  @xref{Getting Substitutes from Other Servers}.

note: type: Plain text
en: By default, @command{guix publish} compresses archives on the fly as it serves them.  This ``on-the-fly'' mode is convenient in that it requires no setup and is immediately available.  However, when serving lots of clients, we recommend using the @option{--cache} option, which enables caching of the archives before they are sent to clients---see below for details.  The @command{guix weather} command provides a handy way to check what a server provides (@pxref{Invoking guix weather}).
fr: Par défaut, @command{guix publish} compresse les archives à la volée quand il les sert.  Ce mode « à la volée » est pratique puisqu'il ne demande aucune configuration et est disponible immédiatement.  Cependant, lorsqu'il s'agit de servir beaucoup de clients, nous recommandons d'utiliser l'option @option{--cache}, qui active le cache des archives avant de les envoyer aux clients — voir les détails plus bas.  La commande @command{guix weather} fournit un manière pratique de vérifier ce qu'un serveur fournit (@pxref{Invoking guix weather}).

note: type: Plain text
en: As a bonus, @command{guix publish} also serves as a content-addressed mirror for source files referenced in @code{origin} records (@pxref{origin Reference}).  For instance, assuming @command{guix publish} is running on @code{example.org}, the following URL returns the raw @file{hello-2.10.tar.gz} file with the given SHA256 hash (represented in @code{nix-base32} format, @pxref{Invoking guix hash}):
fr: En bonus, @command{guix publish} sert aussi un miroir adressé par le contenu des fichiers source référencées dans les enregistrements @code{origin} (@pxref{origin Reference}).  Par exemple, en supposant que @command{guix publish} tourne sur @code{example.org}, l'URL suivante renverra le fichier brut @file{hello-2.10.tar.gz} avec le hash SHA256 donné (représenté sous le format @code{nix-base32}, @pxref{Invoking guix hash}) :

note: type: Plain text
en: Obviously, these URLs only work for files that are in the store; in other cases, they return 404 (``Not Found'').
fr: Évidemment, ces URL ne fonctionnent que pour des fichiers dans le dépôt ; dans les autres cas, elles renvoie une erreur 404 (« Introuvable »).

note: type: cindex
en: build logs, publication
fr: journaux de construction, publication

note: type: Plain text
en: Build logs are available from @code{/log} URLs like:
fr: Les journaux de construction sont disponibles à partir des URL @code{/log} comme ceci :

note: type: Plain text
en: When @command{guix-daemon} is configured to save compressed build logs, as is the case by default (@pxref{Invoking guix-daemon}), @code{/log} URLs return the compressed log as-is, with an appropriate @code{Content-Type} and/or @code{Content-Encoding} header.  We recommend running @command{guix-daemon} with @option{--log-compression=gzip} since Web browsers can automatically decompress it, which is not the case with Bzip2 compression.
fr: Lorsque @command{guix-daemon} est configuré pour sauvegarder les journaux de construction compressés, comme c'est le cas par défaut (@pxref{Invoquer guix-daemon}), les URL @code{/log} renvoient le journal compressé tel-quel, avec une en-tête @code{Content-Type} et/ou @code{Content-Encoding} appropriée.  Nous recommandons de lancer @command{guix-daemon} avec @option{--log-compression=gzip} parce que les navigateurs web les décompressent automatiquement, ce qui n'est pas le cas avec la compression bzip2.

note: type: table
en: Listen for HTTP requests on @var{port}.
fr: Écoute les requêtes HTTP sur le @var{port}.

note: type: item
en: --listen=@var{host}
fr: --listen=@var{hôte}

note: type: table
en: Listen on the network interface for @var{host}.  The default is to accept connections from any interface.
fr: Écoute sur l'interface réseau de @var{hôte}.  Par défaut, la commande accepte les connexions de n'importe quelle interface.

note: type: table
en: Change privileges to @var{user} as soon as possible---i.e., once the server socket is open and the signing key has been read.
fr: Charge les privilèges de @var{utilisateur} le plus vite possible — c.-à-d. une fois que la socket du serveur est ouverte et que la clef de signature a été lue.

note: type: item
en: --compression[=@var{method}[:@var{level}]]
fr: --compression[=@var{méthode}[:@var{niveau}]]

note: type: itemx
en: -C [@var{method}[:@var{level}]]
fr: -C [@var{méthode}[:@var{niveau}]]

note: type: table
en: Compress data using the given @var{method} and @var{level}.  @var{method} is one of @code{lzip}, @code{zstd}, and @code{gzip}; when @var{method} is omitted, @code{gzip} is used.
fr: Compresser les données en utilisant les @var{method} et @var{level} donnés.  @var{method} est l'un des codes @code{lzip}, @code{zstd} ou @code{gzip} ; lorsque @var{method} est omis, @code{gzip} est utilisé.

note: type: table
en: When @var{level} is zero, disable compression.  The range 1 to 9 corresponds to different compression levels: 1 is the fastest, and 9 is the best (CPU-intensive).  The default is 3.
fr: Lorsque @var{level} est égal à zéro, désactivez la compression.  La plage de 1 à 9 correspond à différents niveaux de compression : 1 est le plus rapide, et 9 est le meilleur (gourmand en CPU).  Le niveau par défaut est 3.

note: type: table
en: Usually, @code{lzip} compresses noticeably better than @code{gzip} for a small increase in CPU usage; see @uref{https://nongnu.org/lzip/lzip_benchmark.html,benchmarks on the lzip Web page}.  However, @code{lzip} achieves low decompression throughput (on the order of 50@tie{}MiB/s on modern hardware), which can be a bottleneck for someone who downloads over a fast network connection.
fr: Habituellement, @code{lzip} compresse notablement mieux que @code{gzip} pour une légère augmentation de l'utilisation du CPU. voir @uref{https://nongnu.org/lzip/lzip_benchmark.html,benchmarks on the lzip Web page}.  Cependant, @code{lzip} permet un faible débit à la décompression (de l'ordre de 50@tie{}Mio/s sur du matériel récent), ce qui peut être le facteur limitant pour quelqu'un qui télécharge sur un réseau rapide.

note: type: table
en: The compression ratio of @code{zstd} is between that of @code{lzip} and that of @code{gzip}; its main advantage is a @uref{https://facebook.github.io/zstd/,high decompression speed}.
fr: Le ratio de compression de @code{zstd} est entre celui de @code{lzip} et celui de @code{gzip} ; son avantage principal est sa @uref{https://facebook.github.io/zstd/,high vitesse de décompression}.

note: type: table
en: Unless @option{--cache} is used, compression occurs on the fly and the compressed streams are not cached.  Thus, to reduce load on the machine that runs @command{guix publish}, it may be a good idea to choose a low compression level, to run @command{guix publish} behind a caching proxy, or to use @option{--cache}.  Using @option{--cache} has the advantage that it allows @command{guix publish} to add @code{Content-Length} HTTP header to its responses.
fr: À moins que @option{--cache} ne soit utilisé, la compression se fait à la volée et les flux compressés ne sont pas cachés.  Ainsi, pour réduire la charge sur la machine qui fait tourner @command{guix publish}, c'est une bonne idée de choisir un niveau de compression faible, de lancer @command{guix publish} derrière un serveur de cache ou d'utiliser @option{--cache}.  Utilise @option{--cache} a l'avantage qu'il permet à @command{guix publish} d'ajouter l'en-tête HTTP @code{Content-Length} à sa réponse.

note: type: table
en: This option can be repeated, in which case every substitute gets compressed using all the selected methods, and all of them are advertised.  This is useful when users may not support all the compression methods: they can select the one they support.
fr: Cette option peut être répétée, auquel cas chaque substitut est compressé en utilisant toutes les méthodes sélectionnées, et toutes sont annoncées.  Cette option est utile lorsque les utilisateur·rice·s ne supportent pas toutes les méthodes de compression : il·elle·s peuvent sélectionner celle qu'elles supportent.

note: type: item
en: --cache=@var{directory}
fr: --cache=@var{répertoire}

note: type: itemx
en: -c @var{directory}
fr: -c @var{répertoire}

note: type: table
en: Cache archives and meta-data (@code{.narinfo} URLs) to @var{directory} and only serve archives that are in cache.
fr: Cache les archives et les métadonnées (les URL @code{.narinfo}) dans @var{répertoire} et ne sert que les archives dans ce cache.

note: type: table
en: When this option is omitted, archives and meta-data are created on-the-fly.  This can reduce the available bandwidth, especially when compression is enabled, since this may become CPU-bound.  Another drawback of the default mode is that the length of archives is not known in advance, so @command{guix publish} does not add a @code{Content-Length} HTTP header to its responses, which in turn prevents clients from knowing the amount of data being downloaded.
fr: Lorsque cette option est omise, les archives et les métadonnées sont crées à la volée.  Cela réduit la bande passante disponible, surtout quand la compression est activée puisqu'elle pourrait être limitée par le CPU.  Un autre inconvénient au mode par défaut est que la taille des archives n'est pas connue à l'avance, donc @command{guix publish} n'ajoute pas l'en-tête @code{Content-Length} à ses réponses, ce qui empêche les clients de savoir la quantité de données à télécharger.

note: type: table
en: Conversely, when @option{--cache} is used, the first request for a store item (@i{via} a @code{.narinfo} URL) triggers a background process to @dfn{bake} the archive---computing its @code{.narinfo} and compressing the archive, if needed.  Once the archive is cached in @var{directory}, subsequent requests succeed and are served directly from the cache, which guarantees that clients get the best possible bandwidth.
fr: À l'inverse, lorsque @option{--cache} est utilisée, la première requête pour un élément du dépôt (via une URL @code{.narinfo}) déclenche une tâche de fond pour créer l'archive — en calculant son @code{.narinfo} et en compressant l'archive au besoin.  Une fois l'archive en cache dans @var{répertoire}, les requêtes suivantes réussissent et sont servies directement depuis le cache, ce qui garanti que les clients ont la meilleure bande passante possible.

note: type: table
en: That first @code{.narinfo} request nonetheless returns 200, provided the requested store item is ``small enough'', below the cache bypass threshold---see @option{--cache-bypass-threshold} below.  That way, clients do not have to wait until the archive is baked.  For larger store items, the first @code{.narinfo} request returns 404, meaning that clients have to wait until the archive is baked.
fr: Cette première requête @code{.narinfo} renvoie quand même 200, si l'élément du dépôt est « assez petit », sous la limite de contournement du cache --- voir @option{--cache-bypass-threshold} plus bas.  De cette manière, les clients n'ont pas besoin d'attendre que l'archive soit prête.  Pour les éléments plus gros, la première requête @code{.narinfo} renvoie 404, ce qui signifie que les clients doivent attendre jusqu'à ce que l'archive soit prête.

note: type: table
en: The ``baking'' process is performed by worker threads.  By default, one thread per CPU core is created, but this can be customized.  See @option{--workers} below.
fr: Le processus de création est effectué par des threads de travail.  Par défaut, un thread par cœur du CPU est créé, mais cela peut être personnalisé.  Voir @option{--workers} plus bas.

note: type: table
en: When @option{--ttl} is used, cached entries are automatically deleted when they have expired.
fr: Lorsque l'option @option{--ttl} est utilisée, les entrées cachées sont automatiquement supprimées lorsqu'elles expirent.

note: type: table
en: When @option{--cache} is used, request the allocation of @var{N} worker threads to ``bake'' archives.
fr: Lorsque @option{--cache} est utilisée, demande l'allocation de @var{N} thread de travail pour créer les archives.

note: type: table
en: Produce @code{Cache-Control} HTTP headers that advertise a time-to-live (TTL) of @var{ttl}.  @var{ttl} must denote a duration: @code{5d} means 5 days, @code{1m} means 1 month, and so on.
fr: Produit des en-têtes HTTP @code{Cache-Control} qui annoncent une durée de vie (TTL) de @var{ttl}.  @var{ttl} peut dénoter une durée : @code{5d} signifie 5 jours, @code{1m} signifie un mois, etc.

note: type: table
en: This allows the user's Guix to keep substitute information in cache for @var{ttl}.  However, note that @code{guix publish} does not itself guarantee that the store items it provides will indeed remain available for as long as @var{ttl}.
fr: Cela permet au Guix de l'utilisateur de garder les informations en cache pendant @var{ttl}.  Cependant, remarquez que @code{guix publish} ne garanti pas lui-même que les éléments du dépôt qu'il fournit seront toujours disponible pendant la durée @var{ttl}.

note: type: table
en: Additionally, when @option{--cache} is used, cached entries that have not been accessed for @var{ttl} and that no longer have a corresponding item in the store, may be deleted.
fr: En plus, lorsque @option{--cache} est utilisée, les entrées cachées qui n'ont pas été demandé depuis @var{ttl} et n'ont pas d'élément correspondant dans le dépôt peuvent être supprimées.

note: type: table
en: Similarly produce @code{Cache-Control} HTTP headers to advertise the time-to-live (TTL) of @emph{negative} lookups---missing store items, for which the HTTP 404 code is returned.  By default, no negative TTL is advertised.
fr: Produit de la même manière des en-têtes HTTP @code{Cache-Control} pour annoncer la durée de vie (TLL) d'une recherche @emph{négative} — des entrées du dépôt manquantes, pour lesquelles une erreur 404 est renvoyée. Par défaut, aucun TTL négatif n'est annoncé.

note: type: table
en: This parameter can help adjust server load and substitute latency by instructing cooperating clients to be more or less patient when a store item is missing.
fr: Ce paramètre peut aider à ajuster la charge du serveur et la latence des substituts en demandant aux clients coopératifs d'être plus ou moins patients quand un élément du dépôt manque.

note: type: item
en: --cache-bypass-threshold=@var{size}
fr: --cache-bypass-threshold=@var{taille}

note: type: table
en: When used in conjunction with @option{--cache}, store items smaller than @var{size} are immediately available, even when they are not yet in cache.  @var{size} is a size in bytes, or it can be suffixed by @code{M} for megabytes and so on.  The default is @code{10M}.
fr: Avec @option{--cache}, les éléments du dépôt plus petits que @var{taille} sont immédiatement disponibles, même s'ils ne sont pas en cache.  @var{taille} est une taille en octets, ou peut utiliser un suffixe comme @code{M} pour les mégaoctets, etc.  La valeur par défaut est @code{10M}.

note: type: table
en: ``Cache bypass'' allows you to reduce the publication delay for clients at the expense of possibly additional I/O and CPU use on the server side: depending on the client access patterns, those store items can end up being baked several times until a copy is available in cache.
fr: Le « contournement du cache » vous permet de réduire le délai de publication pour les clients au prix d'utilisation accrue des I/O et du CPU sur le serveur : en fonction des accès clients, ces éléments peuvent être créés plusieurs fois avant qu'une copie ne soit disponible dans le cache.

note: type: table
en: Increasing the threshold may be useful for sites that have few users, or to guarantee that users get substitutes even for store items that are not popular.
fr: Augmenter la limite peut être utile pour les sites qui ont peu d'utilisateurs, ou pour garantir que les utilisateurs reçoivent les substituts même pour les éléments qui ne sont pas populaires.

note: type: item
en: --nar-path=@var{path}
fr: --nar-path=@var{chemin}

note: type: table
en: Use @var{path} as the prefix for the URLs of ``nar'' files (@pxref{Invoking guix archive, normalized archives}).
fr: Utilise @var{chemin} comme préfixe des URL de fichier « nar » (@pxref{Invoking guix archive, normalized archives}).

note: type: table
en: By default, nars are served at a URL such as @code{/nar/gzip/@dots{}-coreutils-8.25}.  This option allows you to change the @code{/nar} part to @var{path}.
fr: Par défaut, les nars sont présents à l'URL comme @code{/nar/gzip/@dots{}-coreutils-8.25}.  Cette option vous permet de changer la partie @code{/nar} en @var{chemin}.

note: type: item
en: --public-key=@var{file}
fr: --public-key=@var{fichier}

note: type: itemx
en: --private-key=@var{file}
fr: --private-key=@var{fichier}

note: type: table
en: Use the specific @var{file}s as the public/private key pair used to sign the store items being published.
fr: Utilise les @var{fichier}s spécifiques comme pair de clefs utilisées pour signer les éléments avant de les publier.

note: type: table
en: The files must correspond to the same key pair (the private key is used for signing and the public key is merely advertised in the signature metadata).  They must contain keys in the canonical s-expression format as produced by @command{guix archive --generate-key} (@pxref{Invoking guix archive}).  By default, @file{/etc/guix/signing-key.pub} and @file{/etc/guix/signing-key.sec} are used.
fr: Les fichiers doivent correspondre à la même pair de clefs (la clef privée est utilisée pour signer et la clef publique est seulement ajouté aux métadonnées de la signature).  Ils doivent contenir les clefs dans le format s-expression canonique produit par @command{guix archive --generate-key} (@pxref{Invoking guix archive}).  Par défaut, @file{/etc/guix/signing-key.pub} et @file{/etc/guix/signing-key.sec} sont utilisés.

note: type: table
en: Spawn a Guile REPL server (@pxref{REPL Servers,,, guile, GNU Guile Reference Manual}) on @var{port} (37146 by default).  This is used primarily for debugging a running @command{guix publish} server.
fr: Crée un serveur REPL Guile  (@pxref{REPL Servers,,, guile, GNU Guile Reference Manual}) sur @var{pport} (37146 par défaut).  C'est surtout utile pour déboguer un serveur @command{guix publish} qui tourne.

note: type: Plain text
en: Enabling @command{guix publish} on Guix System is a one-liner: just instantiate a @code{guix-publish-service-type} service in the @code{services} field of the @code{operating-system} declaration (@pxref{guix-publish-service-type, @code{guix-publish-service-type}}).
fr: Activer @command{guix publish} sur un système Guix est vraiment une seule ligne : instanciez simplement un service @code{guix-publish-service-type} dans le champs @code{services} de votre déclaration @code{operating-system} (@pxref{guix-publish-service-type, @code{guix-publish-service-type}}).

note: type: Plain text
en: If you are instead running Guix on a ``foreign distro'', follow these instructions:
fr: Si vous utilisez plutôt Guix sur une « distro étrangère », suivez ces instructions :

note: type: itemize
en: If your host distro uses the systemd init system:
fr: Si votre distro hôte utilise le système d'init systemd :

note: type: itemize
en: Otherwise, proceed similarly with your distro's init system.
fr: Sinon, procédez de manière similaire avec votre système d'init de votre distro.

note: type: section
en: Invoking @command{guix challenge}
fr: Invoquer @command{guix challenge}

note: type: cindex
en: verifiable builds
fr: constructions vérifiables

note: type: cindex
en: challenge
fr: défi

note: type: Plain text
en: Do the binaries provided by this server really correspond to the source code it claims to build? Is a package build process deterministic? These are the questions the @command{guix challenge} command attempts to answer.
fr: Est-ce que les binaires fournis par ce serveur correspondent réellement au code source qu'il dit avoir construit ? Est-ce que le processus de construction d'un paquet est déterministe ? Ce sont les question auxquelles la commande @command{guix challenge} essaye de répondre.

note: type: Plain text
en: The former is obviously an important question: Before using a substitute server (@pxref{Substitutes}), one had better @emph{verify} that it provides the right binaries, and thus @emph{challenge} it.  The latter is what enables the former: If package builds are deterministic, then independent builds of the package should yield the exact same result, bit for bit; if a server provides a binary different from the one obtained locally, it may be either corrupt or malicious.
fr: La première question est évidemment importante : avant d'utiliser un serveur de substituts (@pxref{Substituts}), il vaut mieux @emph{vérifier} qu'il fournit les bons binaires et donc le @emph{défier}. La deuxième est ce qui permet la première : si les constructions des paquets sont déterministes alors des constructions indépendantes du paquet devraient donner le même résultat, bit à bit ; si un serveur fournit un binaire différent de celui obtenu localement, il peut être soit corrompu, soit malveillant.

note: type: Plain text
en: We know that the hash that shows up in @file{/gnu/store} file names is the hash of all the inputs of the process that built the file or directory---compilers, libraries, build scripts, etc. (@pxref{Introduction}).  Assuming deterministic build processes, one store file name should map to exactly one build output.  @command{guix challenge} checks whether there is, indeed, a single mapping by comparing the build outputs of several independent builds of any given store item.
fr: On sait que le hash qui apparaît dans @file{/gnu/store} est le hash de toutes les entrées du processus qui construit le fichier ou le répertoire — les compilateurs, les bibliothèques, les scripts de construction, etc. (@pxref{Introduction}).  En supposant que les processus de construction sont déterministes, un nom de fichier dans le dépôt devrait correspondre exactement à une sortie de construction.  @command{guix challenge} vérifie si il y a bien effectivement une seule correspondance en comparant les sorties de plusieurs constructions indépendantes d'un élément du dépôt donné.

note: type: Plain text
en: The command output looks like this:
fr: La sortie de la commande ressemble à :

note: type: smallexample
en: $ guix challenge \
      --substitute-urls="https://@value{SUBSTITUTE-SERVER-1} https://guix.example.org" \
      openssl git pius coreutils grep
    updating substitutes from 'https://@value{SUBSTITUTE-SERVER-1}'... 100.0%
    updating substitutes from 'https://guix.example.org'... 100.0%
    /gnu/store/@dots{}-openssl-1.0.2d contents differ:
      local hash: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q
      https://@value{SUBSTITUTE-SERVER-1}/nar/@dots{}-openssl-1.0.2d: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q
      https://guix.example.org/nar/@dots{}-openssl-1.0.2d: 1zy4fmaaqcnjrzzajkdn3f5gmjk754b43qkq47llbyak9z0qjyim
      differing files:
        /lib/libcrypto.so.1.1
        /lib/libssl.so.1.1
fr: $ guix challenge \
      --substitute-urls="https://@value{SUBSTITUTE-SERVER-1} https://guix.example.org" \
      openssl git pius coreutils grep
    mise à jour des substituts depuis 'https://@value{SUBSTITUTE-SERVER-1}'... 100.0%
    mise à jour des substituts depuis 'https://guix.example.org'... 100.0%
    le contenu de /gnu/store/@dots{}-openssl-1.0.2d diffère :
      empreinte locale : 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q
      https://@value{SUBSTITUTE-SERVER-1}/nar/@dots{}-openssl-1.0.2d : 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q
      https://guix.example.org/nar/@dots{}-openssl-1.0.2d : 1zy4fmaaqcnjrzzajkdn3f5gmjk754b43qkq47llbyak9z0qjyim
      fichiers différents :
        /lib/libcrypto.so.1.1
        /lib/libssl.so.1.1

note: type: smallexample
en: /gnu/store/@dots{}-git-2.5.0 contents differ:
      local hash: 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha
      https://@value{SUBSTITUTE-SERVER-1}/nar/@dots{}-git-2.5.0: 069nb85bv4d4a6slrwjdy8v1cn4cwspm3kdbmyb81d6zckj3nq9f
      https://guix.example.org/nar/@dots{}-git-2.5.0: 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
      differing file:
        /libexec/git-core/git-fsck
fr: le contenu de /gnu/store/@dots{}-git-2.5.0 diffère :
      empreinte locale : 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha
      https://@value{SUBSTITUTE-SERVER-1}/nar/@dots{}-git-2.5.0 : 069nb85bv4d4a6slrwjdy8v1cn4cwspm3kdbmyb81d6zckj3nq9f
      https://guix.example.org/nar/@dots{}-git-2.5.0 : 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
      fichier différent :
        /libexec/git-core/git-fsck

note: type: smallexample
en: /gnu/store/@dots{}-pius-2.1.1 contents differ:
      local hash: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
      https://@value{SUBSTITUTE-SERVER-1}/nar/@dots{}-pius-2.1.1: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
      https://guix.example.org/nar/@dots{}-pius-2.1.1: 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs
      differing file:
        /share/man/man1/pius.1.gz
fr: le contenu de /gnu/store/@dots{}-pius-2.1.1 diffère :
      empreinte locale : 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
      https://@value{SUBSTITUTE-SERVER-1}/nar/@dots{}-pius-2.1.1 : 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
      https://guix.example.org/nar/@dots{}-pius-2.1.1 : 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs
      fichier différent:
        /share/man/man1/pius.1.gz

note: type: smallexample
en: 5 store items were analyzed:
      - 2 (40.0%) were identical
      - 3 (60.0%) differed
      - 0 (0.0%) were inconclusive
fr: 5 éléments du dépôt ont été analysés :
      - 2 (40.0%) étaient identiques
      - 3 (60.0%) étaient différents
      - 0 (0.0%) étaient impossibles à évaluer

note: type: Plain text
en: In this example, @command{guix challenge} queries all the substitute servers for each of the fives packages specified on the command line.  It then reports those store items for which the servers obtained a result different from the local build (if it exists) and/or different from one another; here, the @samp{local hash} lines indicate that a local build result was available for each of these packages and shows its hash.
fr: Dans cet exemple, @command{guix challenge} demande à tous les serveurs de substituts les cinq paquets spécifiés sur la ligne de commande. Il rapporte ensuite les éléments du dépôt pour lesquels les serveurs obtiennent un résultat différent de la construction locale (si elle existe) ou différent entre eux ; ici, les lignes @samp{empreinte locale} indiquent que le résultat d'une construction locale était disponible pour chacun des paquets et montre son empreinte.

note: type: cindex
en: non-determinism, in package builds
fr: non-déterminisme, dans les constructions des paquets

note: type: Plain text
en: As an example, @code{guix.example.org} always gets a different answer.  Conversely, @code{@value{SUBSTITUTE-SERVER-1}} agrees with local builds, except in the case of Git.  This might indicate that the build process of Git is non-deterministic, meaning that its output varies as a function of various things that Guix does not fully control, in spite of building packages in isolated environments (@pxref{Features}).  Most common sources of non-determinism include the addition of timestamps in build results, the inclusion of random numbers, and directory listings sorted by inode number.  See @uref{https://reproducible-builds.org/docs/}, for more information.
fr: Dans l'exemple, @code{guix.example.org} obtient toujours une réponse différente.  Inversement, @code{@value{SUBSTITUTE-SERVER-1}} est d'accord avec les constructions locale, sauf dans le cas de Git.  Cela peut indiquer que le processus de construction de Git est non-déterministe, ce qui signifie que sa sortie diffère en fonction de divers choses que Guix ne contrôle pas parfaitement, malgré l'isolation des constructions (@pxref{Features}).  Les sources les plus communes de non-déterminisme comprennent l'ajout d'horodatage dans les résultats des constructions, l'inclusion de nombres aléatoires et des listes de fichiers ordonnés par numéro d'inœud.  Voir @uref{https://reproducible-builds.org/docs/}, pour plus d'informations.

note: type: Plain text
en: To find out what is wrong with this Git binary, the easiest approach is to run:
fr: Pour trouver ce qui ne va pas avec ce binaire Git, l'approche la plus facile est de lancer :

note: type: Plain text
en: This automatically invokes @command{diffoscope}, which displays detailed information about files that differ.
fr: Cela invoque automatiquement @command{diffoscope}, qui affiche des informations détaillées sur les fichiers qui diffèrent.

note: type: Plain text
en: Alternatively, we can do something along these lines (@pxref{Invoking guix archive}):
fr: Autrement, nous pouvons faire quelque chose comme dans ces lignes (@pxref{Invoquer guix archive}) :

note: type: Plain text
en: This command shows the difference between the files resulting from the local build, and the files resulting from the build on @code{@value{SUBSTITUTE-SERVER-1}} (@pxref{Overview, Comparing and Merging Files,, diffutils, Comparing and Merging Files}).  The @command{diff} command works great for text files.  When binary files differ, a better option is @uref{https://diffoscope.org/, Diffoscope}, a tool that helps visualize differences for all kinds of files.
fr: Cette commande montre les différences entre les fichiers qui résultent de la construction locale et des fichiers qui résultent de la construction sur @code{@value{SUBSTITUTE-SERVER-1}} (@pxref{Overview, Comparing and Merging Files,, diffutils, Comparing and Merging Files}).  La commande @command{diff} fonctionne bien avec des fichiers texte.  Lorsque des fichiers binaires diffèrent cependant, @uref{https://diffoscope.org/, Diffoscope} est une meilleure option.  C'est un outil qui aide à visualiser les différences entre toute sorte de fichiers.

note: type: Plain text
en: Once you have done that work, you can tell whether the differences are due to a non-deterministic build process or to a malicious server.  We try hard to remove sources of non-determinism in packages to make it easier to verify substitutes, but of course, this is a process that involves not just Guix, but a large part of the free software community.  In the meantime, @command{guix challenge} is one tool to help address the problem.
fr: Une fois que vous avez fait ce travail, vous pourrez dire si les différences sont dues au non-déterminisme du processus de construction ou à la malhonnêteté du serveur.  Nous avons fait beaucoup d'effort pour éliminer les sources de non-déterminisme dans les paquets pour rendre plus facile la vérification des substituts, mais bien sûr, c'est un processus qui n'implique pas que Guix, mais une grande partie de la communauté des logiciels libres.  Pendant ce temps, @command{guix challenge} est un outil pour aider à corriger le problème.

note: type: Plain text
en: If you are writing packages for Guix, you are encouraged to check whether @code{@value{SUBSTITUTE-SERVER-1}} and other substitute servers obtain the same build result as you did with:
fr: Si vous écrivez un paquet pour Guix, nous vous encourageons à vérifier si @code{@value{SUBSTITUTE-SERVER-1}} et d'autres serveurs de substituts obtiennent le même résultat que vous avec :

note: type: example
en: guix challenge @var{package}
fr: guix challenge @var{paquet}

note: type: Plain text
en: where @var{argument} is a package specification such as @code{guile@@2.0} or @code{glibc:debug} or, alternatively, a store file name as returned, for example, by @command{guix build} or @command{guix gc --list-live}.
fr: où @var{argument} est une spécification de paquet comme @code{guile@@2.0} ou @code{glibc:debug} ou, autrement, un nom de fichier du dépôt renvoyé, par exemple, par @command{guix build} ou @command{guix gc --list-live}.

note: type: Plain text
en: When a difference is found between the hash of a locally-built item and that of a server-provided substitute, or among substitutes provided by different servers, the command displays it as in the example above and its exit code is 2 (other non-zero exit codes denote other kinds of errors).
fr: Lorsqu'une différence est trouvée entre l'empreinte d'un élément construit localement et celle d'un substitut fourni par un serveur, ou parmi les substituts fournis par différents serveurs, la commande l'affiche comme dans l'exemple ci-dessus et sa valeur de sortie est 2 (les autres valeurs différentes de 0 indiquent d'autres sortes d'erreurs).

note: type: Plain text
en: The one option that matters is:
fr: L'option qui compte est :

note: type: table
en: Consider @var{urls} the whitespace-separated list of substitute source URLs to compare to.
fr: Considère @var{urls} comme la liste des URL des sources de substituts séparés par des espaces avec lesquels comparer les paquets locaux.

note: type: table
en: Upon mismatches, show differences according to @var{mode}, one of:
fr: En cas d'inadéquation, montre les différences en fonction de @var{mode}, l'un des :

note: type: item
en: @code{simple} (the default)
fr: @code{simple} (par défaut)

note: type: table
en: Show the list of files that differ.
fr: Montrer la liste des fichiers qui diffèrent.

note: type: var{#1}
en: command
fr: commande

note: type: table
en: Invoke @uref{https://diffoscope.org/, Diffoscope}, passing it two directories whose contents do not match.
fr: Invoque @uref{https://diffoscope.org/, Diffoscope}, en lui passant deux répertoires dont le contenu ne correspond pas.

note: type: table
en: When @var{command} is an absolute file name, run @var{command} instead of Diffoscope.
fr: Quand @var{command} est un nom de fichier absolu, lancez @var{command} au lieu de Diffoscope.

note: type: table
en: Do not show further details about the differences.
fr: Ne donnez pas plus de détails sur les différences.

note: type: table
en: Thus, unless @option{--diff=none} is passed, @command{guix challenge} downloads the store items from the given substitute servers so that it can compare them.
fr: Ainsi, à moins que l'option @option{--diff=none} ne soit passée, @command{guix challenge} télécharge les éléments du store à partir des serveurs de substitut donnés afin de pouvoir les comparer.

note: type: table
en: Show details about matches (identical contents) in addition to information about mismatches.
fr: Montre des détails sur les correspondances (contenu identique) en plus des informations sur différences.

note: type: section
en: Invoking @command{guix copy}
fr: Invoquer @command{guix copy}

note: type: cindex
en: copy, of store items, over SSH
fr: copier des éléments du dépôt par SSH

note: type: cindex
en: SSH, copy of store items
fr: SSH, copie d'éléments du dépôt

note: type: cindex
en: sharing store items across machines
fr: partager des éléments du dépôt entre plusieurs machines

note: type: cindex
en: transferring store items across machines
fr: transférer des éléments du dépôt entre plusieurs machines

note: type: Plain text
en: The @command{guix copy} command copies items from the store of one machine to that of another machine over a secure shell (SSH)  connection@footnote{This command is available only when Guile-SSH was found.  @xref{Requirements}, for details.}.  For example, the following command copies the @code{coreutils} package, the user's profile, and all their dependencies over to @var{host}, logged in as @var{user}:
fr: La commande @command{guix copy} copie des éléments du dépôt d'une machine vers le dépôt d'une autre machine à travers une connexion SSH@footnote{Cette commande n'est disponible que si Guile-SSH est trouvé.  @xref{Requirements},  pour des détails}.  Par exemple, la commande suivante copie le paquet @code{coreutils}, le profil utilisateur et toutes leurs dépendances sur @var{hôte}, en tant qu'utilisateur @var{utilisateur} :

note: type: example
en: guix copy --to=@var{user}@@@var{host} \
              coreutils $(readlink -f ~/.guix-profile)
fr: guix copy --to=@var{utilisateur}@@@var{hôte} \
              coreutils $(readlink -f ~/.guix-profile)

note: type: Plain text
en: If some of the items to be copied are already present on @var{host}, they are not actually sent.
fr: Si certains éléments à copier sont déjà présents sur @var{hôte}, ils ne sont pas envoyés.

note: type: Plain text
en: The command below retrieves @code{libreoffice} and @code{gimp} from @var{host}, assuming they are available there:
fr: La commande ci-dessous récupère @code{libreoffice} et @code{gimp} depuis @var{hôte}, en supposant qu'ils y sont présents :

note: type: example
en: guix copy --from=@var{host} libreoffice gimp
fr: guix copy --from=@var{hôte} libreoffice gimp

note: type: Plain text
en: The SSH connection is established using the Guile-SSH client, which is compatible with OpenSSH: it honors @file{~/.ssh/known_hosts} and @file{~/.ssh/config}, and uses the SSH agent for authentication.
fr: La connexion SSH est établie avec le client Guile-SSH, qui set compatible avec OpenSSH : il prend en compte @file{~/.ssh/known_hosts} et @file{~/.ssh/config} et utilise l'agent SSH pour l'authentification.

note: type: Plain text
en: The key used to sign items that are sent must be accepted by the remote machine.  Likewise, the key used by the remote machine to sign items you are retrieving must be in @file{/etc/guix/acl} so it is accepted by your own daemon.  @xref{Invoking guix archive}, for more information about store item authentication.
fr: La clef utilisée pour signer les éléments qui sont envoyés doit être acceptée par la machine distante.  De même, la clef utilisée pour la machine distante depuis laquelle vous récupérez des éléments doit être dans @file{/etc/guix/acl} pour qu'ils soient acceptés par votre propre démon.  @xref{Invoking guix archive}, pour plus d'informations sur l'authentification des éléments du dépôt.

note: type: Plain text
en: You must always specify one of the following options:
fr: Vous devez toujours spécifier l'une des options suivantes :

note: type: table
en: Specify the host to send to or receive from.  @var{spec} must be an SSH spec such as @code{example.org}, @code{charlie@@example.org}, or @code{charlie@@example.org:2222}.
fr: Spécifie l'hôte où envoyer ou d'où recevoir les éléments.  @var{spec} doit être une spécification SSH comme @code{example.org}, @code{charlie@@example.org} ou @code{charlie@@example.org:2222}.

note: type: Plain text
en: The @var{items} can be either package names, such as @code{gimp}, or store items, such as @file{/gnu/store/@dots{}-idutils-4.6}.
fr: L'option @var{items} peut être des noms de paquets, comme @code{gimp} ou des éléments du dépôt comme @file{/gnu/store/@dots{}-idutils-4.6}.

note: type: Plain text
en: When specifying the name of a package to send, it is first built if needed, unless @option{--dry-run} was specified.  Common build options are supported (@pxref{Common Build Options}).
fr: Lorsque vous spécifiez le nom d'un paquet à envoyer, il est d'abord construit au besoin, sauf si l'option @option{--dry-run} est spécifiée.  Les options de construction communes sont supportées (@pxref{Common Build Options}).

note: type: section
en: Invoking @command{guix container}
fr: Invoquer @command{guix container}

note: type: quotation
en: As of version @value{VERSION}, this tool is experimental.  The interface is subject to radical change in the future.
fr: À la version @value{VERSION}, cet outil est toujours expérimental.  L'interface est sujette à changement radicaux dans le futur.

note: type: Plain text
en: The purpose of @command{guix container} is to manipulate processes running within an isolated environment, commonly known as a ``container'', typically created by the @command{guix shell} (@pxref{Invoking guix shell}) and @command{guix system container} (@pxref{Invoking guix system}) commands.
fr: Le but de @command{guix container} est de manipuler des processus qui tournent dans un environnement séparé, connus sous le nom de « conteneur », typiquement créés par les commandes @command{guix shell} (@pxref{Invoking guix shell}) et @command{guix system container} (@pxref{Invoking guix system}).

note: type: Plain text
en: @var{action} specifies the operation to perform with a container, and @var{options} specifies the context-specific arguments for the action.
fr: @var{action} spécifie les opérations à effectuer avec un conteneur, et @var{options} spécifie les arguments spécifiques au contexte pour l'action.

note: type: Plain text
en: The following actions are available:
fr: Les actions suivantes sont disponibles :

note: type: table
en: Execute a command within the context of a running container.
fr: Exécute une commande dans le contexte d'un conteneur lancé.

note: type: table
en: The syntax is:
fr: La syntaxe est :

note: type: example
en: guix container exec @var{pid} @var{program} @var{arguments}@dots{}
fr: guix container exec @var{pid} @var{programme} @var{arguments}@dots{}

note: type: table
en: @var{pid} specifies the process ID of the running container.  @var{program} specifies an executable file name within the root file system of the container.  @var{arguments} are the additional options that will be passed to @var{program}.
fr: @var{pid} spécifie le PID du conteneur lancé.  @var{programme} spécifie le nom du fichier exécutable dans le système de fichiers racine du conteneur.  @var{arguments} sont les options supplémentaires à passer à @var{programme}.

note: type: table
en: The following command launches an interactive login shell inside a Guix system container, started by @command{guix system container}, and whose process ID is 9001:
fr: La commande suivante lance un shell de connexion interactif dans un conteneur Guix System, démarré par @command{guix system container} et dont le PID est 9001 :

note: type: table
en: Note that the @var{pid} cannot be the parent process of a container.  It must be PID 1 of the container or one of its child processes.
fr: Remarquez que @var{pid} ne peut pas être le processus parent d'un conteneur.  Ce doit être le PID 1 du conteneur ou l'un de ses processus fils.

note: type: section
en: Invoking @command{guix weather}
fr: Invoquer @command{guix weather}

note: type: Plain text
en: Occasionally you're grumpy because substitutes are lacking and you end up building packages by yourself (@pxref{Substitutes}).  The @command{guix weather} command reports on substitute availability on the specified servers so you can have an idea of whether you'll be grumpy today.  It can sometimes be useful info as a user, but it is primarily useful to people running @command{guix publish} (@pxref{Invoking guix publish}).
fr: Vous pouvez parfois grogner lorsque les substituts ne sont pas disponibles et que vous devez construire les paquets vous-même (@pxref{Substituts}). La commande @command{guix weather} rapporte la disponibilité des substituts sur les serveurs spécifiés pour que vous sachiez si vous allez raller aujourd'hui. Cela peut parfois être une information utile pour les utilisateurs, mais elle est surtout utile pour les personnes qui font tourner @command{guix publish} (@pxref{Invoking guix publish}).

note: type: cindex
en: statistics, for substitutes
fr: statistiques sur les substituts

note: type: cindex
en: availability of substitutes
fr: disponibilité des substituts

note: type: cindex
en: substitute availability
fr: substituts, disponibilité

note: type: cindex
en: weather, substitute availability
fr: weather, disponibilité des substituts

note: type: Plain text
en: Here's a sample run:
fr: Voici un exemple :

note: type: example
en: $ guix weather --substitute-urls=https://guix.example.org
    computing 5,872 package derivations for x86_64-linux...
    looking for 6,128 store items on https://guix.example.org..
    updating substitutes from 'https://guix.example.org'... 100.0%
    https://guix.example.org
      43.4% substitutes available (2,658 out of 6,128)
      7,032.5 MiB of nars (compressed)
      19,824.2 MiB on disk (uncompressed)
      0.030 seconds per request (182.9 seconds in total)
      33.5 requests per second
fr: $ guix weather --substitute-urls=https://guix.example.org
    calcul de 5,872 dérivations de paquets pour x86_64-linux…
    recherche de 6,128 éléments du dépôt sur https://guix.example.org…
    mise à jour des substituts depuis 'https://guix.example.org'... 100.0%
    https://guix.example.org
      43.4% substituts disponibles (2,658 sur 6,128)
      7,032.5 Mo de fichiers nar (compressés)
      19,824.2 Mo sur le disque (décompressés)
      0.030 secondes par requêtes (182.9 secondes au total)
      33.5 requêtes par seconde

note: type: example
en:   9.8% (342 out of 3,470) of the missing items are queued
      867 queued builds
          x86_64-linux: 518 (59.7%)
          i686-linux: 221 (25.5%)
          aarch64-linux: 128 (14.8%)
      build rate: 23.41 builds per hour
          x86_64-linux: 11.16 builds per hour
          i686-linux: 6.03 builds per hour
          aarch64-linux: 6.41 builds per hour
fr:   9.8% (342 sur 3,470) des éléments manquants sont dans la queue
      867 constructions dans la queue
          x86_64-linux : 518 (59.7%)
          i686-linux : 221 (25.5%)
          aarch64-linux : 128 (14.8%)
      vitesse de construction : 23.41 constructions par heure
          x86_64-linux : 11.16 constructions par heure
          i686-linux : 6.03 constructions par heure
          aarch64-linux : 6.41 constructions par heure

note: type: cindex
en: continuous integration, statistics
fr: intégration continue, statistiques

note: type: Plain text
en: As you can see, it reports the fraction of all the packages for which substitutes are available on the server---regardless of whether substitutes are enabled, and regardless of whether this server's signing key is authorized.  It also reports the size of the compressed archives (``nars'') provided by the server, the size the corresponding store items occupy in the store (assuming deduplication is turned off), and the server's throughput.  The second part gives continuous integration (CI) statistics, if the server supports it.  In addition, using the @option{--coverage} option, @command{guix weather} can list ``important'' package substitutes missing on the server (see below).
fr: Comme vous pouvez le voir, elle rapporte le pourcentage des paquets pour lesquels des substituts sont disponibles sur le serveur — indépendamment du fait que les substituts soient activés, et indépendamment du fait que la clef de signature du serveur soit autorisée.  Elle rapporte aussi la taille des archives compressées (« nars ») fournies par le serveur, la taille des éléments du dépôt correspondant dans le dépôt (en supposant que la déduplication soit désactivée) et la vitesse du serveur.  La deuxième partie donne des statistiques sur l'intégration continue (CI), si le serveur le supporte.  En plus, avec l'option @option{--coverage}, @command{guix weather} peut lister les substituts de paquets « importants » qui font défaut sur le serveur (voir plus bas).

note: type: Plain text
en: To achieve that, @command{guix weather} queries over HTTP(S) meta-data (@dfn{narinfos}) for all the relevant store items.  Like @command{guix challenge}, it ignores signatures on those substitutes, which is innocuous since the command only gathers statistics and cannot install those substitutes.
fr: Pour cela, @command{guix weather} récupère par HTTP(S) les métadonnées (@dfn{narinfos}@ de tous les éléments du dépôts pertinents.  Comme @command{guix challenge}, il ignore les signatures de ces substituts, ce qui n'est pas dangereux puisque la commande ne fait que récupérer des statistiques et n'installe pas ces substituts.

note: type: example
en: guix weather @var{options}@dots{} [@var{packages}@dots{}]
fr: guix weather @var{options}@dots{} [@var{paquets}@dots{}]

note: type: Plain text
en: When @var{packages} is omitted, @command{guix weather} checks the availability of substitutes for @emph{all} the packages, or for those specified with @option{--manifest}; otherwise it only considers the specified packages.  It is also possible to query specific system types with @option{--system}.  @command{guix weather} exits with a non-zero code when the fraction of available substitutes is below 100%.
fr: Lorsque @var{packages} est omis, @command{guix weather} vérifie la disponibilité de substituts pour @emph{all} les paquets, ou pour ceux spécifiés avec @option{--manifest} ; sinon, il ne prend en compte que les paquets spécifiés.  Il est également possible d'interroger des types de systèmes spécifiques avec @option{--system}.  @command{guix weather} sort avec un code non nul lorsque la fraction des substituts disponibles est inférieure à 100%.

note: type: table
en: @var{urls} is the space-separated list of substitute server URLs to query.  When this option is omitted, the default set of substitute servers is queried.
fr: @var{urls} est la liste des URL des serveurs de substituts séparés par des espaces.  Lorsque cette option n'est pas renseignée, l'ensemble des serveurs de substituts par défaut est utilisé.

note: type: table
en: Query substitutes for @var{system}---e.g., @code{aarch64-linux}.  This option can be repeated, in which case @command{guix weather} will query substitutes for several system types.
fr: Effectue des requêtes pour les substituts @var{système} — p.@: ex.@: @code{aarch64-linux}.  Cette option peut être répétée, auquel cas @command{guix weather} demandera les substituts de plusieurs types de systèmes.

note: type: table
en: Instead of querying substitutes for all the packages, only ask for those specified in @var{file}.  @var{file} must contain a @dfn{manifest}, as with the @code{-m} option of @command{guix package} (@pxref{Invoking guix package}).
fr: Plutôt que de demander des substituts pour tous les paquets, demande uniquement les paquets spécifiés dans @var{fichier}.  @var{fichier} doit contenir un @dfn{manifeste} comme avec l'option @code{-m} de @command{guix package} (@pxref{Invoking guix package}).

note: type: table
en: This option can be repeated several times, in which case the manifests are concatenated.
fr: Cette option peut être répétée plusieurs fois, auquel cas les manifestes sont concaténés.

note: type: table
en: Report on substitute coverage for packages: list packages with at least @var{count} dependents (zero by default) for which substitutes are unavailable.  Dependent packages themselves are not listed: if @var{b} depends on @var{a} and @var{a} has no substitutes, only @var{a} is listed, even though @var{b} usually lacks substitutes as well.  The result looks like this:
fr: Rapporte la couverture des substituts pour les paquets : liste les paquets avec au moins @var{count} autres paquets qui en dépendent (zéro par défaut) pour lesquels il n'y a pas de substitut.  Les paquets qui en dépendent ne sont pas listés : si @var{b} dépend de @var{a} et que @var{a} n'a pas de substitut, seul @var{a} est listé, même si @var{b} n'a habituellement pas de substitut non plus.  Le résultat ressemble à cela :

note: type: example
en: $ guix weather --substitute-urls=@value{SUBSTITUTE-URLS} -c 10
    computing 8,983 package derivations for x86_64-linux...
    looking for 9,343 store items on @value{SUBSTITUTE-URLS}...
    updating substitutes from '@value{SUBSTITUTE-URLS}'... 100.0%
    @value{SUBSTITUTE-URLS}
      64.7% substitutes available (6,047 out of 9,343)
    @dots{}
    2502 packages are missing from '@value{SUBSTITUTE-URLS}' for 'x86_64-linux', among which:
        58  kcoreaddons@@5.49.0      /gnu/store/@dots{}-kcoreaddons-5.49.0
        46  qgpgme@@1.11.1           /gnu/store/@dots{}-qgpgme-1.11.1
        37  perl-http-cookiejar@@0.008  /gnu/store/@dots{}-perl-http-cookiejar-0.008
        @dots{}
fr: $ guix weather --substitute-urls=@value{SUBSTITUTE-URLS} -c 10
    calcul de 8 983 dérivations de paquets pour x86_64-linux…
    recherche de 9 343 éléments du dépôt sur @value{SUBSTITUTE-URLS}…
    mise à jour des substituts depuis « @value{SUBSTITUTE-URLS} »… 100,0 %
    @value{SUBSTITUTE-URLS}
      64.7 % des substituts sont disponibles (6,047 sur 9,343)
    @dots{}
    2502 paquets ne sont pas sur « @value{SUBSTITUTE-URLS} » pour « x86_64-linux », parmi lesquels :
        58  kcoreaddons@@5.49.0      /gnu/store/@dots{}-kcoreaddons-5.49.0
        46  qgpgme@@1.11.1           /gnu/store/@dots{}-qgpgme-1.11.1
        37  perl-http-cookiejar@@0.008  /gnu/store/@dots{}-perl-http-cookiejar-0.008
        @dots{}

note: type: table
en: What this example shows is that @code{kcoreaddons} and presumably the 58 packages that depend on it have no substitutes at @code{@value{SUBSTITUTE-SERVER-1}}; likewise for @code{qgpgme} and the 46 packages that depend on it.
fr: Ce que montre cet exemple est que @code{kcoreaddons} et probablement les 58 paquets qui en dépendent n'ont pas de substituts sur @code{@value{SUBSTITUTE-SERVER-1}} ; de même pour @code{qgpgme} et les 46 paquets qui en dépendent.

note: type: table
en: If you are a Guix developer, or if you are taking care of this build farm, you'll probably want to have a closer look at these packages: they may simply fail to build.
fr: Si vous êtes un développeur de Guix, ou si vous prenez soin de cette ferme de construction, vous voudrez sans doute inspecter plus finement ces paquets : ils peuvent simplement avoir échoué à la construction.

note: type: table
en: Display the list of store items for which substitutes are missing.
fr: Afficher la liste des articles du magasin pour lesquels il manque des substituts.

note: type: section
en: Invoking @command{guix processes}
fr: Invoquer @command{guix processes}

note: type: Plain text
en: The @command{guix processes} command can be useful to developers and system administrators, especially on multi-user machines and on build farms: it lists the current sessions (connections to the daemon), as well as information about the processes involved@footnote{Remote sessions, when @command{guix-daemon} is started with @option{--listen} specifying a TCP endpoint, are @emph{not} listed.}.  Here's an example of the information it returns:
fr: La commande @command{guix processes} peut être utile pour les développeur·euses ou les personnes qui administrent des systèmes, surtout sur des machines multi-utilisateur·rice et sur les fermes de construction : elle liste les sessions actuelles (les connexions au démon), ainsi que des informations sur les processus en question@footnote{Les sessions distantes, lorsque @command{guix-daemon} est démarré avec @option{--listen} en spécifiant un point d'entrée TCP, ne sont @emph{pas} listées.}.  Voici un exemple des informations qu'elle renvoie :

note: type: Plain text
en: In this example we see that @command{guix-daemon} has three clients: @command{guix environment}, @command{guix publish}, and the Cuirass continuous integration tool; their process identifier (PID) is given by the @code{ClientPID} field.  The @code{SessionPID} field gives the PID of the @command{guix-daemon} sub-process of this particular session.
fr: Dans cet exemple, on voit que @command{guix-daemon} a trois clients directs : @command{guix environment}, @command{guix publish} et l'outil d'intégration continue Cuirass ; leur identifiant de processus (PID) est donné par le champ @code{ClientPID}.  Le champ @code{SessionPID} fournit le PID du sous-processus @command{guix-daemon} de cette session particulière.

note: type: Plain text
en: The @code{LockHeld} fields show which store items are currently locked by this session, which corresponds to store items being built or substituted (the @code{LockHeld} field is not displayed when @command{guix processes} is not running as root).  Last, by looking at the @code{ChildPID} and @code{ChildCommand} fields, we understand that these three builds are being offloaded (@pxref{Daemon Offload Setup}).
fr: Le champs @code{LockHeld} montre quels éléments du dépôt sont actuellement verrouillés par cette session, ce qui correspond aux éléments du dépôt qui sont en train d'être construits ou d'être substitués (le champ @code{LockHeld} n'est pas montré si @command{guix processes} n'est pas lancé en root).  Enfin, en regardant les champs @code{ChildPID} et @code{ChildCommand}, on comprend que ces trois constructions sont déchargées (@pxref{Daemon Offload Setup}).

note: type: Plain text
en: The output is in Recutils format so we can use the handy @command{recsel} command to select sessions of interest (@pxref{Selection Expressions,,, recutils, GNU recutils manual}).  As an example, the command shows the command line and PID of the client that triggered the build of a Perl package:
fr: La sortie est dans le format Recutils pour qu'on puisse utiliser la commande @command{recsel} pour sélectionner les sessions qui nous intéressent (@pxref{Selection Expressions,,, recutils, GNU recutils manual}).  Par exemple, la commande montre la ligne de commande et le PID du client qui effectue la construction d'un paquet Perl :

note: type: Plain text
en: Additional options are listed below.
fr: Des options supplémentaires sont listées ci-dessous.

note: type: table
en: The default option.  It outputs a set of Session recutils records that include each @code{ChildProcess} as a field.
fr: L'option par défaut. Elle affiche un ensemble d'enregistrement Session recutils qui incluent chacun @code{ChildProcess} comme champ.

note: type: table
en: Normalize the output records into record sets (@pxref{Record Sets,,, recutils, GNU recutils manual}).  Normalizing into record sets allows joins across record types.  The example below lists the PID of each @code{ChildProcess} and the associated PID for @code{Session} that spawned the @code{ChildProcess} where the @code{Session} was started using @command{guix build}.
fr: Normalise les enregistrements de sortie en ensembles d'enregistrement (@pxref{Record Sets,,, recutils, GNU recutils manual}). La normalisation en ensembles d'enregistrement permet de faire des jointures entre plusieurs types d'enregistrement. L'exemple ci-dessous liste le PID de chaque @code{ChildProcess} et le PID associé pour @code{Session} qui lance @code{ChildProcess} où la @code{Session} a été démarrée avec @command{guix build}.

note: type: Plain text
en: You can target computers of different CPU architectures when producing packages (@pxref{Invoking guix package}), packs (@pxref{Invoking guix pack}) or full systems (@pxref{Invoking guix system}).
fr: vous pouvez cibler des ordinateurs d'architectures CPU différentes lors de la production de paquets (@pxref{Invoking guix package}), de lots applicatif (@pxref{Invoking guix pack}) ou de systèmes complets (@pxref{Invoking guix system}).

note: type: Plain text
en: GNU Guix supports two distinct mechanisms to target foreign architectures:
fr: GNU Guix prend en charge deux mécanismes distincts pour cibles des architectures externes :

note: type: enumerate
en: The traditional @uref{https://en.wikipedia.org/wiki/Cross_compiler,cross-compilation} mechanism.
fr: La mécanisme de @uref{https://fr.wikipedia.org/wiki/Compilateur#Compilation_crois%C3%A9e,compilation croisée} classique.

note: type: enumerate
en: The native building mechanism which consists in building using the CPU instruction set of the foreign system you are targeting.  It often requires emulation, using the QEMU program for instance.
fr: Le mécanisme de construction natif qui consiste à construire en utilisant le jeu d'instruction CPU du système externe que vous ciblez. Cela nécessite souvent de l'émulation, avec le programme QEMU par exemple.

note: type: cindex
en: foreign architectures
fr: architectures externes

note: type: Plain text
en: The commands supporting cross-compilation are proposing the @option{--list-targets} and @option{--target} options.
fr: Les commandes qui prennent en charge la compilation croisée proposent les options @option{--list-target} et @option{--target}.

note: type: Plain text
en: The @option{--list-targets} option lists all the supported targets that can be passed as an argument to @option{--target}.
fr: L'option @option{--list-targets} liste toutes les cibles prises en charge qui peuvent être passées en argument à @option{--target}.

note: type: example
en: $ guix build --list-targets
    The available targets are:
fr: $ guix build --list-targets
    Les cibles disponibles sont :

note: type: Plain text
en: Targets are specified as GNU triplets (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf}).
fr: Les cibles sont spécifiées comme des triplets GNU (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf}).

note: type: Plain text
en: Those triplets are passed to GCC and the other underlying compilers possibly involved when building a package, a system image or any other GNU Guix output.
fr: Ces triplets sont passés à GCC et aux autres compilateurs sous-jacent éventuellement impliqués dans la construction d'un paquet, d'une image système et de toute autre sortie de GNU Guix.

note: type: Plain text
en: The major benefit of cross-compilation is that there are no performance penaly compared to emulation using QEMU.  There are however higher risks that some packages fail to cross-compile because few users are using this mechanism extensively.
fr: Le principal avantage de la compilation croisée est qu'il n'y a pas de ralentissement par rapport à l'émulation avec QEMU. Il y a cependant de plus grands risque que certains paquets échouent à compiler de manière croisée car seuls quelques utilisateurs et utilisatrices utilisent ce mécanisme de manière intensive.

note: type: Plain text
en: The commands that support impersonating a specific system have the @option{--list-systems} and @option{--system} options.
fr: Les commandes qui prennent en charge l'imitation d'un système spécifique proposent les options @option{--list-systems} et @option{--system}.

note: type: Plain text
en: The @option{--list-systems} option lists all the supported systems that can be passed as an argument to @option{--system}.
fr: L'option @option{--list-systems} liste tous les systèmes pris en charge qui peuvent être passés en argument à @option{--system}.

note: type: example
en: $ guix build --list-systems
    The available systems are:
fr: $ guix build --list-systems
    Les systèmes disponibles sont :

note: type: Plain text
en: In the above example, the current system is @var{x86_64-linux}.  The @var{hello} package is however built for the @var{i686-linux} system.
fr: Dans l'exemple ci-dessus, le système actuel est @var{x86_64-linux}. Le paquet @var{hello} est cependant construit pour le système @var{i686-linux}.

note: type: Plain text
en: This is possible because the @var{i686} CPU instruction set is a subset of the @var{x86_64}, hence @var{i686} targeting binaries can be run on @var{x86_64}.
fr: C'est possible parce que le jeu d'instruction CPU @var{i686} est un sous-ensemble de @var{x86_64}, d'où le fait que les binaires ciblant @var{i686} puissent tourner sur @var{x86_64}.

note: type: Plain text
en: Still in the context of the previous example, if picking the @var{aarch64-linux} system and the @command{guix build --system=aarch64-linux hello} has to build some derivations, an extra step might be needed.
fr: Toujours dans le contexte de l'exemple précédent, si on choisit le système @var{aarch64-linux} que la commande @command{guix build --system=aarch64-linux hello} doit construire des dérivations, une étape supplémentaire est nécessaire.

note: type: Plain text
en: The @var{aarch64-linux} targeting binaries cannot directly be run on a @var{x86_64-linux} system.  An emulation layer is requested.  The GNU Guix daemon can take advantage of the Linux kernel @uref{https://en.wikipedia.org/wiki/Binfmt_misc,binfmt_misc} mechanism for that.  In short, the Linux kernel can defer the execution of a binary targeting a foreign platform, here @var{aarch64-linux}, to a userspace program, usually an emulator.
fr: Les binaires qui cibles @var{aarch64-linux} ne peuvent pas tourner directement sur un système @var{x86_64-linux}. Une couche d'émulation est requise. Le démon GNU Guix peut utiliser le mécanisme @uref{https://en.wikipedia.org/wiki/Binfmt_misc,binfmt_misc} du noyau Linux pour cela. En résumé, le noyau Linux peut laisser l'exécution d'un binaire qui cible une plateforme externe, ici @var{aarch64-linux} à un programme en espace utilisateur, typiquement un émulateur.

note: type: Plain text
en: There is a service that registers QEMU as a backend for the @code{binfmt_misc} mechanism (@pxref{Virtualization Services, @code{qemu-binfmt-service-type}}).  On Debian based foreign distributions, the alternative would be the @code{qemu-user-static} package.
fr: Il existe un service qui configure QEMU en tant que moteur pour le mécanisme @code{binfnmt_misc} (@pxref{Virtualization Services, @code{qemu-binfmt-service-type}}). Sur les distributions externes basées sur Debian, l'alternative consiste à installer le paquet @code{qemu-user-static}.

note: type: Plain text
en: If the @code{binfmt_misc} mechanism is not setup correctly, the building will fail this way:
fr: Si le mécanisme @code{binfmt_misc} n'est pas correctement mis en place, la construction échouera de cette façon :

note: type: Plain text
en: whereas, with the @code{binfmt_misc} mechanism correctly linked with QEMU, one can expect to see:
fr: alors que, avec le mécanisme @code{binfmt_misc} correctement lié à QEMU, on peut s'attendre à voir :

note: type: Plain text
en: The main advantage of native building compared to cross-compiling, is that more packages are likely to build correctly.  However it comes at a price: compilation backed by QEMU is @emph{way slower} than cross-compilation, because every instruction needs to be emulated.
fr: Le principal avantage de la construction native par rapport à la compilation croisée est que plus de paquets seront susceptibles de se construire correctement. Cependant cela a un prix : la compilation prise en charge par QEMU est @emph{bien plus lente} que la compilation croisée, car chaque instruction doit être émulée.

note: type: Plain text
en: The availability of substitutes for the architecture targeted by the @code{--system} option can mitigate this problem.  An other way to work around it is to install GNU Guix on a machine whose CPU supports the targeted instruction set, and set it up as an offload machine (@pxref{Daemon Offload Setup}).
fr: La disponibilité des substituts pour l'architecture ciblée par l'option @code{--system} peut atténuer ce problème. Une autre manière de le contourner est d'installer GNU Guix sur une machine dont le CPU prend en charge le jeu d'instruction cible, et de la configurer en tant que machine de déchargement (@pxref{Daemon Offload Setup}).

note: type: cindex
en: system configuration
fr: configuration du système

note: type: Plain text
en: Guix System supports a consistent whole-system configuration mechanism.  By that we mean that all aspects of the global system configuration---such as the available system services, timezone and locale settings, user accounts---are declared in a single place.  Such a @dfn{system configuration} can be @dfn{instantiated}---i.e., effected.
fr: Guix System utilise un mécanisme de configuration du système cohérent.  On veut dire par là que tous les aspects de la configuration globale du système — comme la disponibilité des services système, la configuration des fuseaux horaires, des paramètres linguistiques et des comptes utilisateurs — sont déclarés à un seul endroit.  Une telle @dfn{configuration système} peut être @dfn{instanciée}, c'est-à-dire entrer en vigueur.

note: type: Plain text
en: One of the advantages of putting all the system configuration under the control of Guix is that it supports transactional system upgrades, and makes it possible to roll back to a previous system instantiation, should something go wrong with the new one (@pxref{Features}).  Another advantage is that it makes it easy to replicate the exact same configuration across different machines, or at different points in time, without having to resort to additional administration tools layered on top of the own tools of the system.
fr: L'un des avantages de placer toute la configuration du système sous le contrôle de Guix est de permettre les mises à jour transactionnelles du système ce qui rend possible le fait de revenir en arrière à une instanciation précédent du système, si quelque chose se passait mal avec le nouveau (@pxref{Features}).  Un autre avantage est de rendre facile la réplication de la même configuration sur plusieurs machines différentes ou à différents moments dans le temps, sans avoir à recourir à des outils d'administrations supplémentaires au-dessus des outils du système.

note: type: Plain text
en: This section describes this mechanism.  First we focus on the system administrator's viewpoint---explaining how the system is configured and instantiated.  Then we show how this mechanism can be extended, for instance to support new system services.
fr: Cette section décrit ce mécanisme.  Tout d'abord nous nous concentrons sur le point de vue de l'administrateur système en expliquant comment le système est configuré et instancié.  Ensuite nous montrons comment ce mécanisme peut être étendu, par exemple pour supporter de nouveaux services systèmes.

note: type: Plain text
en: The operating system is configured by providing an @code{operating-system} declaration in a file that can then be passed to the @command{guix system} command (@pxref{Invoking guix system}).  A simple setup, with the default system services, the default Linux-Libre kernel, initial RAM disk, and boot loader looks like this:
fr: Le système d'exploitation est configuré en fournissant une déclaration @code{operating-system} dans un fichier qui peut être passé à la commande @command{guix system} (@pxref{Invoking guix system}).  Une configuration simple, avec les services systèmes par défaut, le noyau Linux-Libre par défaut, un disque de RAM initial et un chargeur d'amorçage ressemble à ceci :

note: type: Plain text
en: This example should be self-describing.  Some of the fields defined above, such as @code{host-name} and @code{bootloader}, are mandatory.  Others, such as @code{packages} and @code{services}, can be omitted, in which case they get a default value.
fr: Cet exemple devrait se comprendre de lui-même.  Certains champs définis ci-dessus, comme @code{host-name} et @code{bootloader} sont obligatoires.  D'autres comme @code{packages} et @code{services} peuvent être omis auquel cas ils ont une valeur par défaut.

note: type: Plain text
en: Below we discuss the effect of some of the most important fields (@pxref{operating-system Reference}, for details about all the available fields), and how to @dfn{instantiate} the operating system using @command{guix system}.
fr: Ci-dessous nous discutons des effets de certains des champs les plus importants (@pxref{operating-system Reference}, pour des détails sur tous les champs disponibles) et comment @dfn{instancier} le système d'exploitation avec @command{guix system}.

note: type: cindex
en: legacy boot, on Intel machines
fr: ancien système de démarrage, sur les machines Intel

note: type: cindex
en: BIOS boot, on Intel machines
fr: Démarrage BIOS, sur les machines Intel

note: type: cindex
en: UEFI boot
fr: Démarrage UEFI

note: type: cindex
en: EFI boot
fr: Démarrage EFI

note: type: Plain text
en: The @code{bootloader} field describes the method that will be used to boot your system.  Machines based on Intel processors can boot in ``legacy'' BIOS mode, as in the example above.  However, more recent machines rely instead on the @dfn{Unified Extensible Firmware Interface} (UEFI) to boot.  In that case, the @code{bootloader} field should contain something along these lines:
fr: Le champ @code{bootloader} décrit la méthode qui sera utilisée pour démarrer votre système.  Les machines basées sur les processeurs Intel peuvent démarrer dans l'ancien mode BIOS, comme dans l'exemple au-dessus.  Cependant, les machines plus récentes s'appuient sur l'UEFI (@dfn{Unified Extensible Firmware Interface}) pour démarrer.  Dans ce cas, le champ @code{bootloader} devrait contenir quelque chose comme cela :

note: type: Plain text
en: @xref{Bootloader Configuration}, for more information on the available configuration options.
fr: @xref{Bootloader Configuration}, pour plus d'informations sur les options de configuration disponibles.

note: type: unnumberedsubsec
en: Globally-Visible Packages
fr: Paquets visibles sur tout le système

note: type: Plain text
en: The @code{packages} field lists packages that will be globally visible on the system, for all user accounts---i.e., in every user's @env{PATH} environment variable---in addition to the per-user profiles (@pxref{Invoking guix package}).  The @code{%base-packages} variable provides all the tools one would expect for basic user and administrator tasks---including the GNU Core Utilities, the GNU Networking Utilities, the @command{mg} lightweight text editor, @command{find}, @command{grep}, etc.  The example above adds GNU@tie{}Screen to those, taken from the @code{(gnu packages screen)} module (@pxref{Package Modules}).  The @code{(list package output)} syntax can be used to add a specific output of a package:
fr: Le champ @code{packages} liste les paquets qui seront visibles sur tout le système, pour tous les comptes utilisateur·rice·s — c.-à-d.@: dans la variable d'environnement @env{PATH} de tous les utilisateur·rice·s — en plus des profils utilisateur·rice·s (@pxref{Invoquer guix package}).  La variable @var{%base-packages} fournit tous les outils qu'on pourrait attendre pour les tâches de base de l'administrateur·rice et de l'utilisateur·rice — dont les GNU Core Utilities, les GNU Networking Utilities, l'éditeur de texte léger @command{mg}, @command{find}, @command{grep}, etc.  L'exemple ci-dessus ajoute GNU@tie{}Screen à ces paquets, récupéré depuis le module @code{(gnu packages screen)} (@pxref{Package Modules}).  Vous pouvez utiliser la syntaxe @code{(list package output)} pour ajouter une sortie spécifique d'un paquet :

note: type: Plain text
en: Referring to packages by variable name, like @code{isc-bind} above, has the advantage of being unambiguous; it also allows typos and such to be diagnosed right away as ``unbound variables''.  The downside is that one needs to know which module defines which package, and to augment the @code{use-package-modules} line accordingly.  To avoid that, one can use the @code{specification->package} procedure of the @code{(gnu packages)} module, which returns the best package for a given name or name and version:
fr: Se référer aux paquets par le nom de leur variable, comme @code{isc-bind} ci-dessus, a l'avantage d'être sans ambigüité ; cela permet aussi de se rendre rapidement compte de coquilles quand on a des « variables non liées ».  L'inconvénient est qu'on a besoin de savoir dans quel module est défini le paquet, et de modifier la ligne @code{use-package-modules} en conséquence.  Pour éviter cela, on peut utiliser la procédure @code{specification->package} du module @code{(gnu packages)}, qui renvoie le meilleur paquet pour un nom donné ou un nom et une version :

note: type: unnumberedsubsec
en: System Services
fr: Services systèmes

note: type: Plain text
en: The @code{services} field lists @dfn{system services} to be made available when the system starts (@pxref{Services}).  The @code{operating-system} declaration above specifies that, in addition to the basic services, we want the OpenSSH secure shell daemon listening on port 2222 (@pxref{Networking Services, @code{openssh-service-type}}).  Under the hood, @code{openssh-service-type} arranges so that @command{sshd} is started with the right command-line options, possibly with supporting configuration files generated as needed (@pxref{Defining Services}).
fr: Le champ @code{services} liste les @dfn{services système} à rendre disponible lorsque le système démarre (@pxref{Services}).  La déclaration @code{operating-system} au-dessus spécifie que, en plus des services de base, on veut que le démon ssh OpenSSH écoute sur le port 2222 (@pxref{Networking Services, @code{openssh-service-type}}).  Sous le capot, @code{openssh-service-type} s'arrange pour que @code{sshd} soit lancé avec les bonnes options de la ligne de commande, éventuellement en générant des fichiers de configuration (@pxref{Defining Services}).

note: type: cindex
en: customization, of services
fr: personnalisation des services

note: type: Plain text
en: Occasionally, instead of using the base services as is, you will want to customize them.  To do this, use @code{modify-services} (@pxref{Service Reference, @code{modify-services}}) to modify the list.
fr: Parfois, plutôt que d'utiliser les services de base tels-quels, on peut vouloir les personnaliser.  Pour cela, utilisez  @code{modify-services} (@pxref{Service Reference, @code{modify-services}}) pour modifier la liste.

note: type: anchor{#1}
en: auto-login to TTY
fr: connexion automatique à un TTY

note: type: Plain text
en: For example, suppose you want to modify @code{guix-daemon} and Mingetty (the console log-in) in the @code{%base-services} list (@pxref{Base Services, @code{%base-services}}).  To do that, you can write the following in your operating system declaration:
fr: Par exemple, supposons que vous souhaitiez modifier @code{guix-daemon} et Mingetty (l'écran de connexion en console) dans la liste @code{%base-services} (@pxref{Base Services, @code{%base-services}}).  Pour cela, vous pouvez écrire ce qui suit dans votre déclaration de système d'exploitation :

note: type: lisp
en: (define %my-services
      ;; My very own list of services.
      (modify-services %base-services
        (guix-service-type config =>
                           (guix-configuration
                            (inherit config)
                            ;; Fetch substitutes from example.org.
                            (substitute-urls
                              (list "https://example.org/guix"
                                    "https://ci.guix.gnu.org"))))
        (mingetty-service-type config =>
                               (mingetty-configuration
                                (inherit config)
                                ;; Automatically log in as "guest".
                                (auto-login "guest")))))
fr: (define %my-services
      ;; ma propre liste de services.
      (modify-services %base-services
        (guix-service-type config =>
                           (guix-configuration
                            (inherit config)
                            ;; Récupérer les substituts depuis example.org.
                            (substitute-urls
                              (list "https://example.org/guix"
                                    "https://ci.guix.gnu.org"))))
        (mingetty-service-type config =>
                               (mingetty-configuration
                                (inherit config)
                                ;; Connexion automatique en tant que « guest ».
                                (auto-login "guest")))))

note: type: Plain text
en: This changes the configuration---i.e., the service parameters---of the @code{guix-service-type} instance, and that of all the @code{mingetty-service-type} instances in the @code{%base-services} list (@pxref{Auto-Login to a Specific TTY, see the cookbook for how to auto-login one user to a specific TTY,, guix-cookbook, GNU Guix Cookbook})).  Observe how this is accomplished: first, we arrange for the original configuration to be bound to the identifier @code{config} in the @var{body}, and then we write the @var{body} so that it evaluates to the desired configuration.  In particular, notice how we use @code{inherit} to create a new configuration which has the same values as the old configuration, but with a few modifications.
fr: Cela modifie la configuration — c.-à-d.@: les paramètres du service — de l'instance de @code{guix-service-type}, et de toutes les instances de @code{mingetty-service-type} dans la liste @code{%base-services} (@pxref{Connexion automatique à un TTY donné, voir le livre de recettes pour apprendre à connecter quelqu'un automatiquement sur un TTY donné,, guix-cookbook.fr, GNU Guix Cookbook})).  Remarquez comment on fait cela : d'abord, on s'arrange pour que la configuration de départ soit liée à l'identifiant @code{config} dans @var{body} puis on écrit @var{body} pour qu'il s'évalue en la configuration désirée.  En particulier, remarquez comment on utilise @code{inherit} pour créer une nouvelle configuration qui a les même valeurs que l'ancienne configuration, avec seulement quelques modifications.

note: type: Plain text
en: The configuration for a typical ``desktop'' usage, with an encrypted root partition, a swap file on the root partition, the X11 display server, GNOME and Xfce (users can choose which of these desktop environments to use at the log-in screen by pressing @kbd{F1}), network management, power management, and more, would look like this:
fr: La configuration pour une utilisation de « bureau » typique, avec une partition racine chiffrée, a fichier d'échange sur la partition racine, le serveur d'affichage X11, GNOME et Xfce (les utilisateurs peuvent choisir l'environnement de bureau sur l'écran de connexion en appuyant sur @kbd{F1}), la gestion du réseau, la gestion de l'énergie, et bien plus, ressemblerait à ceci :

note: type: Plain text
en: A graphical system with a choice of lightweight window managers instead of full-blown desktop environments would look like this:
fr: Un système graphique avec un choix de gestionnaires de fenêtres légers plutôt que des environnement de bureaux complets ressemblerait à cela :

note: type: Plain text
en: This example refers to the @file{/boot/efi} file system by its UUID, @code{1234-ABCD}.  Replace this UUID with the right UUID on your system, as returned by the @command{blkid} command.
fr: Cet exemple se réfère au système de fichier @file{/boot/efi} par son UUID, @code{1234-ABCD}.  Remplacez cet UUID par le bon UUID de votre système, renvoyé par la commande @command{blkid}.

note: type: Plain text
en: @xref{Desktop Services}, for the exact list of services provided by @code{%desktop-services}.  @xref{X.509 Certificates}, for background information about the @code{nss-certs} package that is used here.
fr: @xref{Desktop Services}, pour la liste exacte des services fournis par @code{%desktop-services}.  @xref{X.509 Certificates}, pour des informations sur le paquet @code{nss-certs} utilisé ici.

note: type: Plain text
en: Again, @code{%desktop-services} is just a list of service objects.  If you want to remove services from there, you can do so using the procedures for list filtering (@pxref{SRFI-1 Filtering and Partitioning,,, guile, GNU Guile Reference Manual}).  For instance, the following expression returns a list that contains all the services in @code{%desktop-services} minus the Avahi service:
fr: Encore une fois, @code{%desktop-services} n'est qu'une liste d'objets service.  Si vous voulez enlever des services de là, vous pouvez le faire avec des procédures pour les listes (@pxref{SRFI-1 Filtering and Partitioning,,, guile, GNU Guile Reference Manual}).  Par exemple, l'expression suivante renvoie une liste qui contient tous les services dans @code{%desktop-services} sauf le service Avahi :

note: type: Plain text
en: Alternatively, the @code{modify-services} macro can be used:
fr: Autrement, la macro @code{modify-services} peut être utilisée :

note: type: unnumberedsubsec
en: Instantiating the System
fr: Instancier le système

note: type: Plain text
en: Assuming the @code{operating-system} declaration is stored in the @file{my-system-config.scm} file, the @command{guix system reconfigure my-system-config.scm} command instantiates that configuration, and makes it the default GRUB boot entry (@pxref{Invoking guix system}).
fr: En supposant que la déclaration @code{operating-system} est stockée dans le fichier @file{my-system-config.scm}, la commande @command{guix system reconfigure my-system-config.scm} instancie cette configuration et en fait l'entrée par défaut dans GRUB (@pxref{Invoking guix system}).

note: type: quotation
en: We recommend that you keep this @file{my-system-config.scm} file safe and under version control to easily track changes to your configuration.
fr: Nous recommandons que vous gardiez le fichier @file{my-system-config.scm} en lieu sur et sous contrôle de version pour mieux tracer les changements de votre configuration.

note: type: Plain text
en: The normal way to change the system configuration is by updating this file and re-running @command{guix system reconfigure}.  One should never have to touch files in @file{/etc} or to run commands that modify the system state such as @command{useradd} or @command{grub-install}.  In fact, you must avoid that since that would not only void your warranty but also prevent you from rolling back to previous versions of your system, should you ever need to.
fr: Pour changer la configuration du système, on met normalement à jour ce fichier et on relance @command{guix system reconfigure}.  On ne devrait jamais avoir à modifier de fichiers dans @file{/etc} ou à lancer des commandes qui modifient l'état du système comme @command{useradd} ou @command{grub-install}.  En fait, vous devez les éviter parce que non seulement ça annulerait vos garanties, mais ça empêcherait aussi de revenir à des versions précédents du système, si vous en avez besoin.

note: type: cindex
en: roll-back, of the operating system
fr: revenir en arrière dans la configuration du système

note: type: Plain text
en: Speaking of roll-back, each time you run @command{guix system reconfigure}, a new @dfn{generation} of the system is created---without modifying or deleting previous generations.  Old system generations get an entry in the bootloader boot menu, allowing you to boot them in case something went wrong with the latest generation.  Reassuring, no? The @command{guix system list-generations} command lists the system generations available on disk.  It is also possible to roll back the system via the commands @command{guix system roll-back} and @command{guix system switch-generation}.
fr: En parlant de revenir en arrière, à chaque fois que vous lancez @command{guix system reconfigure}, une nouvelle @dfn{génération} du système est crée — sans modifier ou supprimer les générations précédentes.  Les anciennes générations du système ont une entrée dans le menu du chargeur d'amorçage, ce qui vous permet de démarrer dessus au cas où quelque chose se serait mal passé avec la dernière génération.  C'est rassurant, non ?  La commande @command{guix system list-generations} liste les générations du système disponibles sur le disque.  Il est possible de revenir à une ancienne génération via les commandes @command{guix system roll-back} et @command{guix system switch-generation}.

note: type: Plain text
en: Although the @command{guix system reconfigure} command will not modify previous generations, you must take care when the current generation is not the latest (e.g., after invoking @command{guix system roll-back}), since the operation might overwrite a later generation (@pxref{Invoking guix system}).
fr: Bien que la commande @command{guix system reconfigure} ne modifiera pas les générations précédentes, vous devez faire attention lorsque votre génération actuelle n'est pas la dernière (p.@: ex.@: après avoir invoqué @command{guix system roll-back}), puisque l'opération pourrait remplacer une génération suivante (@pxref{Invoking guix system}).

note: type: unnumberedsubsec
en: The Programming Interface
fr: L'interface de programmation

note: type: Plain text
en: At the Scheme level, the bulk of an @code{operating-system} declaration is instantiated with the following monadic procedure (@pxref{The Store Monad}):
fr: Au niveau Scheme, la grosse déclaration @code{operating-system} est instanciée avec la procédure monadique suivante (@pxref{The Store Monad}) :

note: type: deffn
en: {Monadic Procedure} operating-system-derivation os
fr: {Procédure monadique} operating-system-derivation os

note: type: deffn
en: Return a derivation that builds @var{os}, an @code{operating-system} object (@pxref{Derivations}).
fr: Renvoie une dérivation qui construit @var{os}, un objet @code{operating-system} (@pxref{Derivations}).

note: type: deffn
en: The output of the derivation is a single directory that refers to all the packages, configuration files, and other supporting files needed to instantiate @var{os}.
fr: La sortie de la dérivation est un répertoire qui se réfère à tous les paquets et d'autres fichiers supports requis pour instancier @var{os}.

note: type: Plain text
en: This procedure is provided by the @code{(gnu system)} module.  Along with @code{(gnu services)} (@pxref{Services}), this module contains the guts of Guix System.  Make sure to visit it!
fr: Cette procédure est fournie par le module @code{(gnu system)}.  Avec @code{(gnu services)} (@pxref{Services}), ce module contient les entrailles du système Guix.  Ouvrez-le un jour !

note: type: section
en: @code{operating-system} Reference
fr: Référence de @code{operating-system}

note: type: Plain text
en: This section summarizes all the options available in @code{operating-system} declarations (@pxref{Using the Configuration System}).
fr: Cette section résume toutes les options disponibles dans les déclarations @code{operating-system} (@pxref{Using the Configuration System}).

note: type: deftp
en: {Data Type} operating-system
fr: {Type de données} operating-system

note: type: deftp
en: This is the data type representing an operating system configuration.  By that, we mean all the global system configuration, not per-user configuration (@pxref{Using the Configuration System}).
fr: C'est le type de données représentant une configuration d'un système d'exploitation.  On veut dire par là toute la configuration globale du système, mais pas la configuration par utilisateur (@pxref{Using the Configuration System}).

note: type: item
en: @code{kernel} (default: @code{linux-libre})
fr: @code{kernel} (par défaut : @code{linux-libre})

note: type: table
en: The package object of the operating system kernel to use@footnote{Currently only the Linux-libre kernel is fully supported.  Using GNU@tie{}mach with the GNU@tie{}Hurd is experimental and only available when building a virtual machine disk image.}.
fr: L'objet du paquet du système d'exploitation à utiliser@footnote{Actuellement, seul le noyau Linux-libre est entièrement pris en charge.  L'utilisation de GNU@tie{}mach avec le GNU@tie{}Hurd est expérimentale et n'est disponible que lors de la construction d'une image disque de machine virtuelle.}.

note: type: item
en: @code{hurd} (default: @code{#f})
fr: @code{hurd} (par défaut : @code{#f})

note: type: table
en: The package object of the Hurd to be started by the kernel.  When this field is set, produce a GNU/Hurd operating system.  In that case, @code{kernel} must also be set to the @code{gnumach} package---the microkernel the Hurd runs on.
fr: L'objet du paquet du hurd à être lancé par le noyau.  Lorsque ce champ est défini, produire un système d'exploitation GNU/Hurd.  Dans ce cas, @code{kernel} doit également être défini sur le paquet @code{gnumach} --- le micro-noyau sur lequel tourne le Hurd.

note: type: quotation
en: This feature is experimental and only supported for disk images.
fr: Cette fonction est expérimentale et seulement prise en charge pour les images de disques.

note: type: item
en: @code{kernel-loadable-modules} (default: '())
fr: @code{kernel-loadable-modules} (par défault : '())

note: type: table
en: A list of objects (usually packages) to collect loadable kernel modules from--e.g. @code{(list ddcci-driver-linux)}.
fr: Une liste d'objets (généralement des paquets) pour collecter les modules de noyau chargeables depuis - par exemple @code{(liste ddcci-driver-linux)}.

note: type: item
en: @code{kernel-arguments} (default: @code{%default-kernel-arguments})
fr: @code{server-arguments} (par défaut : @code{%default-kernel-arguments})

note: type: table
en: List of strings or gexps representing additional arguments to pass on the command-line of the kernel---e.g., @code{("console=ttyS0")}.
fr: Liste de chaînes ou de gexps représentant des arguments supplémentaires à passer sur la ligne de commande du noyau — p.@: ex.@: @code{("console=ttyS0")}.

note: type: table
en: The system bootloader configuration object.  @xref{Bootloader Configuration}.
fr: L'objet de configuration du chargeur d'amorçage.  @xref{Bootloader Configuration}.

note: type: table
en: This is the label (a string) as it appears in the bootloader's menu entry.  The default label includes the kernel name and version.
fr: C'est l'étiquette (une chaîne de caractères) comme elle apparaît dans l'entrée du menu du chargeur d'amorçage.  L'étiquette par défaut inclus le nom du noyau et sa version.

note: type: item
en: @code{keyboard-layout} (default: @code{#f})
fr: @code{keyboard-layout} (par défaut : @code{#f})

note: type: table
en: This field specifies the keyboard layout to use in the console.  It can be either @code{#f}, in which case the default keyboard layout is used (usually US English), or a @code{<keyboard-layout>} record. @xref{Keyboard Layout}, for more information.
fr: Ce champ spécifie la disposition du clavier à utiliser dans la console.  Il peut être soit @code{#f}, auquel cas la disposition par défaut est utilisée (habituellement anglais américain), ou un enregistrement @code{<keyboard-layout>}. @xref{Keyboard Layout}, pour plus d'informations.

note: type: table
en: This keyboard layout is in effect as soon as the kernel has booted.  For instance, it is the keyboard layout in effect when you type a passphrase if your root file system is on a @code{luks-device-mapping} mapped device (@pxref{Mapped Devices}).
fr: Cette disposition du clavier est effective dès que le noyau démarre.  Par exemple, c'est la disposition du clavier effective lorsque vous saisissez la phrase de passe de votre système de fichier racine sur une partition utilisant @code{luks-device-mapping} (@pxref{Mapped Devices}).

note: type: quotation
en: This does @emph{not} specify the keyboard layout used by the bootloader, nor that used by the graphical display server.  @xref{Bootloader Configuration}, for information on how to specify the bootloader's keyboard layout.  @xref{X Window}, for information on how to specify the keyboard layout used by the X Window System.
fr: Cela ne spécifie @emph{pas} la disposition clavier utilisée par le chargeur d'amorçage, ni celle utilisée par le serveur d'affichage graphique.  @xref{Bootloader Configuration}, pour plus d'information sur la manière de spécifier la disposition du clavier pour le chargeur d'amorçage.  @xref{X Window}, pour plus d'informations sur la manière de spécifier la disposition du clavier utilisée par le système de fenêtrage X.

note: type: item
en: @code{initrd-modules} (default: @code{%base-initrd-modules})
fr: @code{initrd-modules} (par défaut : @code{%base-initrd-modules})

note: type: cindex
en: initial RAM disk
fr: disque de RAM initial

note: type: table
en: The list of Linux kernel modules that need to be available in the initial RAM disk.  @xref{Initial RAM Disk}.
fr: La liste des modules du noyau linux requis dans l'image disque de RAM initiale.  @xref{Initial RAM Disk}.

note: type: item
en: @code{initrd} (default: @code{base-initrd})
fr: @code{initrd} (par défaut : @code{base-initrd})

note: type: table
en: A procedure that returns an initial RAM disk for the Linux kernel.  This field is provided to support low-level customization and should rarely be needed for casual use.  @xref{Initial RAM Disk}.
fr: Une procédure qui renvoie un disque de RAM initial pour le noyau Linux.  Ce champ est fournit pour pouvoir personnaliser son système à bas-niveau et n'est que rarement utile dans le cas général.  @xref{Initial RAM Disk}.

note: type: item
en: @code{firmware} (default: @code{%base-firmware})
fr: @code{firmware} (par défaut : @code{%base-firmware})

note: type: table
en: List of firmware packages loadable by the operating system kernel.
fr: Liste les paquets de microgiciels chargeables pour le noyau de système d'exploitation.

note: type: table
en: The default includes firmware needed for Atheros- and Broadcom-based WiFi devices (Linux-libre modules @code{ath9k} and @code{b43-open}, respectively).  @xref{Hardware Considerations}, for more info on supported hardware.
fr: La valeur par défaut contient les microgiciels requis pour les périphériques WiFi Atheros et Broadcom (modules @code{ath9k} et @code{b43-open} de Linux-libre, respectivement).  @xref{Hardware Considerations}, pour plus d'info sur les périphériques supportés.

note: type: table
en: The host name.
fr: Le nom d'hôte.

note: type: cindex
en: hosts file
fr: fichier hosts

note: type: table
en: A file-like object (@pxref{G-Expressions, file-like objects}) for use as @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}).  The default is a file with entries for @code{localhost} and @var{host-name}.
fr: Un objet simili-fichier (@pxref{G-Expressions, file-like objects}) à utiliser comme @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}).  La valeur par défaut est un fichier avec des entrées pour @code{localhost} et @var{host-name}.

note: type: item
en: @code{mapped-devices} (default: @code{'()})
fr: @code{mapped-devices} (par défaut : @code{'()})

note: type: table
en: A list of mapped devices.  @xref{Mapped Devices}.
fr: Une liste de périphériques mappés.  @xref{Mapped Devices}.

note: type: table
en: A list of file systems.  @xref{File Systems}.
fr: Une liste de systèmes de fichiers.  @xref{File Systems}.

note: type: item
en: @code{swap-devices} (default: @code{'()})
fr: @code{swap-devices} (par défaut : @code{'()})

note: type: cindex
en: swap devices
fr: périphériques d'espaces d'échange

note: type: table
en: A list of swap spaces.  @xref{Swap Space}.
fr: Une liste de d'espaces d'échanges.  @xref{Swap Space}.

note: type: item
en: @code{users} (default: @code{%base-user-accounts})
fr: @code{users} (par défaut : @code{%base-user-accounts})

note: type: itemx
en: @code{groups} (default: @code{%base-groups})
fr: @code{groups} (par défaut : @code{%base-groups})

note: type: table
en: List of user accounts and groups.  @xref{User Accounts}.
fr: Liste les comptes utilisateurs et les groupes.  @xref{User Accounts}.

note: type: table
en: If the @code{users} list lacks a user account with UID@tie{}0, a ``root'' account with UID@tie{}0 is automatically added.
fr: Si la liste @code{users} n'a pas de compte lié à l'UID@tie{}0, un compte « root » avec l'UID@tie{}0 est automatiquement ajouté.

note: type: item
en: @code{skeletons} (default: @code{(default-skeletons)})
fr: @code{skeletons} (par défaut : @code{(default-skeletons)})

note: type: table
en: A list of target file name/file-like object tuples (@pxref{G-Expressions, file-like objects}).  These are the skeleton files that will be added to the home directory of newly-created user accounts.
fr: Une liste de « couples » de noms de fichiers cibles/objets de type fichier (@pxref{G-Expressions, objets de type fichier}).  Ce sont les fichiers squelettes qui seront ajoutés au répertoire d'accueil des comptes utilisatrice·eur·s nouvellement créés.

note: type: table
en: For instance, a valid value may look like this:
fr: Par exemple, un valeur valide ressemblerait à cela :

note: type: item
en: @code{issue} (default: @code{%default-issue})
fr: @code{issue} (par défaut : @code{%default-issue})

note: type: table
en: A string denoting the contents of the @file{/etc/issue} file, which is displayed when users log in on a text console.
fr: Une chaîne qui dénote le contenu du fichier @file{/etc/issue} qui est affiché lorsqu'un utilisateur se connecte sur la console.

note: type: item
en: @code{packages} (default: @code{%base-packages})
fr: @code{packages} (par défaut : @code{%base-packages})

note: type: table
en: A list of packages to be installed in the global profile, which is accessible at @file{/run/current-system/profile}.  Each element is either a package variable or a package/output tuple.  Here's a simple example of both:
fr: Une liste de paquets à installer dans le profil global, qui est accessible à partir de @file{/run/current-system/profile}. Chaque élément est soit une variable de paquet, soit un tuple de paquet/sortie.  Voici un exemple simple des deux :

note: type: lisp
en: (cons* git                     ; the default "out" output
           (list git "send-email") ; another output of git
           %base-packages)         ; the default set
fr: (cons* git                     ; la sortie "out" par défaut
           (list git "send-email") ; une autre sortie de git
           %base-packages)         ; l'ensemble par défaut

note: type: table
en: The default set includes core utilities and it is good practice to install non-core utilities in user profiles (@pxref{Invoking guix package}).
fr: L'ensemble par défaut contient les utilitaires de base et c'est une bonne pratique d'installer les utilitaires non essentiels dans les profils utilisateurs (@pxref{Invoking guix package}).

note: type: item
en: @code{timezone} (default: @code{"Etc/UTC"})
fr: @code{timezone} (par défaut : @code{"Etc/UTC"})

note: type: table
en: A timezone identifying string---e.g., @code{"Europe/Paris"}.
fr: Une chaîne identifiant un fuseau horaire — p.@: ex.@: @code{"Europe/Paris"}.

note: type: table
en: You can run the @command{tzselect} command to find out which timezone string corresponds to your region.  Choosing an invalid timezone name causes @command{guix system} to fail.
fr: Vous pouvez lancer la commande @command{tzselect} pour trouver le fuseau horaire correspondant à votre région.  Si vous choisissez un nom de fuseau horaire invalide, @command{guix system} échouera.

note: type: item
en: @code{locale} (default: @code{"en_US.utf8"})
fr: @code{locale} (par défaut : @code{"en_US.utf8"})

note: type: table
en: The name of the default locale (@pxref{Locale Names,,, libc, The GNU C Library Reference Manual}).  @xref{Locales}, for more information.
fr: Le nom du paramètre régional par défaut (@pxref{Locale Names,,, libc, The GNU C Library Reference Manual}).  @xref{Locales}, pour plus d'informations.

note: type: item
en: @code{locale-definitions} (default: @code{%default-locale-definitions})
fr: @code{locale-definitions} (par défaut : @code{%default-locale-definitions})

note: type: table
en: The list of locale definitions to be compiled and that may be used at run time.  @xref{Locales}.
fr: La liste des définitions de locales à compiler et qui devraient être utilisées à l'exécution.  @xref{Locales}.

note: type: item
en: @code{locale-libcs} (default: @code{(list @var{glibc})})
fr: @code{locale-libcs} (par défaut : @code{(list @var{glibc})})

note: type: table
en: The list of GNU@tie{}libc packages whose locale data and tools are used to build the locale definitions.  @xref{Locales}, for compatibility considerations that justify this option.
fr: La liste des paquets GNU@tie{}libc dont les données des paramètres linguistiques sont utilisées pour construire les définitions des paramètres linguistiques.  @xref{Locales}, pour des considérations sur la compatibilité qui justifient cette option.

note: type: item
en: @code{name-service-switch} (default: @code{%default-nss})
fr: @code{name-service-switch} (par défaut : @code{%default-nss})

note: type: table
en: Configuration of the libc name service switch (NSS)---a @code{<name-service-switch>} object.  @xref{Name Service Switch}, for details.
fr: La configuration de NSS de la libc (name service switch) — un objet @code{<name-service-switch>}.  @xref{Name Service Switch}, pour des détails.

note: type: item
en: @code{services} (default: @code{%base-services})
fr: @code{services} (par défaut : @code{%base-services})

note: type: table
en: A list of service objects denoting system services.  @xref{Services}.
fr: Une liste d'objets services qui dénotent les services du système.  @xref{Services}.

note: type: cindex
en: essential services
fr: services essentiels

note: type: item
en: @code{essential-services} (default: ...)
fr: @code{essential-services} (par défaut : …)

note: type: table
en: The list of ``essential services''---i.e., things like instances of @code{system-service-type} and @code{host-name-service-type} (@pxref{Service Reference}), which are derived from the operating system definition itself.  As a user you should @emph{never} need to touch this field.
fr: La liste des « services essentiels » — c.-à-d.@: les services comme des instance de @code{system-service-type} et @code{host-name-service-type} (@pxref{Service Reference}), qui sont dérivés de la définition du système d'exploitation lui-même.  En tant qu'utilisateur vous ne devriez @emph{jamais} toucher à ce champ.

note: type: item
en: @code{pam-services} (default: @code{(base-pam-services)})
fr: @code{pam-services} (par défaut : @code{(base-pam-services)})

note: type: table
en: Linux @dfn{pluggable authentication module} (PAM) services.
fr: Services PAM (@dfn{pluggable authentication module}) Linux.

note: type: item
en: @code{setuid-programs} (default: @code{%setuid-programs})
fr: @code{setuid-programs} (par défaut : @code{%setuid-programs})

note: type: table
en: List of @code{<setuid-program>}.  @xref{Setuid Programs}, for more information.
fr: Liste de @code{<setuid-program>}.  @xref{Setuid Programs}, pour plus d'informations.

note: type: item
en: @code{sudoers-file} (default: @code{%sudoers-specification})
fr: @code{sudoers-file} (par défaut : @code{%sudoers-specification})

note: type: cindex
en: sudoers file
fr: fichier sudoers

note: type: table
en: The contents of the @file{/etc/sudoers} file as a file-like object (@pxref{G-Expressions, @code{local-file} and @code{plain-file}}).
fr: Le contenu du fichier @file{/etc/sudoers} comme un objet simili-fichier (@pxref{G-Expressions, @code{local-file} et @code{plain-file}}).

note: type: table
en: This file specifies which users can use the @command{sudo} command, what they are allowed to do, and what privileges they may gain.  The default is that only @code{root} and members of the @code{wheel} group may use @code{sudo}.
fr: Ce fichier spécifier quels utilisateurs peuvent utiliser la commande @command{sudo}, ce qu'ils ont le droit de faire, et quels privilèges ils peuvent gagner.  La valeur par défaut est que seul @code{root} et les membres du groupe @code{wheel} peuvent utiliser @code{sudo}.

note: type: deffn
en: {Scheme Syntax} this-operating-system
fr: {Type de données} this-operating-system

note: type: deffn
en: When used in the @emph{lexical scope} of an operating system field definition, this identifier resolves to the operating system being defined.
fr: Lorsqu'il est utilisée dans la @emph{portée lexicale} de la définition d'un du système d'exploitation, cet identifiant est résolu comme étant le système d'exploitation définit.

note: type: deffn
en: The example below shows how to refer to the operating system being defined in the definition of the @code{label} field:
fr: L'exemple ci-dessous montre le référencement au système d'exploitation définit dans la définition du champ @code{label} :

note: type: deffn
en: It is an error to refer to @code{this-operating-system} outside an operating system definition.
fr: C'est une erreur que de se référer à @code{this-operating-system} en dehors de la définition d'un système d'exploitation.

note: type: Plain text
en: The list of file systems to be mounted is specified in the @code{file-systems} field of the operating system declaration (@pxref{Using the Configuration System}).  Each file system is declared using the @code{file-system} form, like this:
fr: La liste des systèmes de fichiers à monter est spécifiée dans le champ @code{file-systems} de la déclaration de système d'exploitation (@pxref{Using the Configuration System}).  Chaque système de fichier est déclaré avec la forme @code{file-system}, comme ceci :

note: type: Plain text
en: As usual, some of the fields are mandatory---those shown in the example above---while others can be omitted.  These are described below.
fr: Comme d'habitude, certains de ces champs sont obligatoire — comme le montre l'exemple au-dessus — alors que d'autres peuvent être omis.  Ils sont décrits plus bas.

note: type: deftp
en: {Data Type} file-system
fr: {Type de données} file-system

note: type: deftp
en: Objects of this type represent file systems to be mounted.  They contain the following members:
fr: Les objets de ce type représentent des systèmes de fichiers à monter.  Ils contiennent les membres suivants :

note: type: table
en: This is a string specifying the type of the file system---e.g., @code{"ext4"}.
fr: C'est une chaîne de caractères spécifiant le type du système de fichier — p.@: ex.@: @code{"ext4"}.

note: type: table
en: This designates the place where the file system is to be mounted.
fr: Désigne l'emplacement où le système de fichier sera monté.

note: type: table
en: This names the ``source'' of the file system.  It can be one of three things: a file system label, a file system UUID, or the name of a @file{/dev} node.  Labels and UUIDs offer a way to refer to file systems without having to hard-code their actual device name@footnote{Note that, while it is tempting to use @file{/dev/disk/by-uuid} and similar device names to achieve the same result, this is not recommended: These special device nodes are created by the udev daemon and may be unavailable at the time the device is mounted.}.
fr: Ce champ nomme le système de fichier « source ».  il peut être l'une de ces trois choses : une étiquette de système de fichiers, un UUID de système de fichier ou le nom d'un nœud dans @file{/dev}.  Les étiquettes et les UUID offrent une manière de se référer à des systèmes de fichiers sans avoir à coder en dur le nom de périphérique@footnote{Remarquez que, s'il est tentant d'utiliser @file{/dev/disk/by-uuid} et autres chemins similaires pour obtenir le même résultat, ce n'est pas recommandé : ces nœuds de périphériques spéciaux sont créés par le démon udev et peuvent ne pas être disponibles au moment de monter le périphérique.}.

note: type: table
en: File system labels are created using the @code{file-system-label} procedure, UUIDs are created using @code{uuid}, and @file{/dev} node are plain strings.  Here's an example of a file system referred to by its label, as shown by the @command{e2label} command:
fr: Les étiquettes de systèmes de fichiers sont crées avec la procédure @code{file-system-label}, les UUID avec @code{uuid} et les nœuds de @file{/dev} sont de simples chaînes de caractères.  Voici un exemple d'un système de fichiers référencé par son étiquette, donnée par la commande @command{e2label} :

note: type: table
en: UUIDs are converted from their string representation (as shown by the @command{tune2fs -l} command) using the @code{uuid} form@footnote{The @code{uuid} form expects 16-byte UUIDs as defined in @uref{https://tools.ietf.org/html/rfc4122, RFC@tie{}4122}.  This is the form of UUID used by the ext2 family of file systems and others, but it is different from ``UUIDs'' found in FAT file systems, for instance.}, like this:
fr: Les UUID sont convertis à partir de leur représentation en chaîne de caractères (montrée par la commande @command{tune2fs -l}) en utilisant la forme @code{uuid}@footnote{La forme @code{uuid} s'attend à des UUID sur 16 octets définis dans la @uref{https://tools.ietf.org/html/rfc4122, RFC@tie{}4122}.  C'est la forme des UUID utilisées par la famille de systèmes de fichiers ext2 et d'autres, mais ce n'est pas le même type d'UUID que ceux qui se trouvent sur les systèmes de fichiers FAT par exemple}, comme ceci :

note: type: table
en: When the source of a file system is a mapped device (@pxref{Mapped Devices}), its @code{device} field @emph{must} refer to the mapped device name---e.g., @file{"/dev/mapper/root-partition"}.  This is required so that the system knows that mounting the file system depends on having the corresponding device mapping established.
fr: Lorsque la source d'un système de fichiers est un périphérique mappé (@pxref{Mapped Devices}), sont champ @code{device} @emph{doit} se référer au nom du périphérique mappé — p.@: ex.@: @file{"/dev/mapper/root-partition"}.  Cela est requis pour que le système sache que monter ce système de fichier dépend de la présence du périphérique mappé correspondant.

note: type: item
en: @code{flags} (default: @code{'()})
fr: @code{flags} (par défaut : @code{'()})

note: type: table
en: This is a list of symbols denoting mount flags.  Recognized flags include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow access to special files), @code{no-suid} (ignore setuid and setgid bits), @code{no-atime} (do not update file access times), @code{no-diratime} (likewise for directories only), @code{strict-atime} (update file access time), @code{lazy-time} (only update time on the in-memory version of the file inode), @code{no-exec} (disallow program execution), and @code{shared} (make the mount shared).  @xref{Mount-Unmount-Remount,,, libc, The GNU C Library Reference Manual}, for more information on these flags.
fr: C'est une liste de symboles qui désignent des drapeaux de montage.  Les drapeaux reconnus sont @code{read-only}, @code{bind-mount}, @code{no-dev} (interdit l'accès aux fichiers spéciaux), @code{no-suid} (ignore les bits setuid et setgid), @code{no-atime} (ne met pas à jour les heures d'accès aux fichiers), @code{no-diratime} (pareil mais pour les répertoires uniquement), @code{strict-atime} (met à jour les heures d'accès aux fichiers), @code{lazy-time} (ne met à jour les heures que dans la version mémoire des inœuds de fichiers), @code{no-exec} (interdit l'exécution de programmes), et @code{shared} (partage le montage).  @xref{Mount-Unmount-Remount,,, libc, The GNU C Library Reference Manual}, pour plus d'informations sur ces drapeaux.

note: type: item
en: @code{options} (default: @code{#f})
fr: @code{options} (par défaut : @code{#f})

note: type: table
en: This is either @code{#f}, or a string denoting mount options passed to the file system driver.  @xref{Mount-Unmount-Remount,,, libc, The GNU C Library Reference Manual}, for details.
fr: C'est soit @code{#f}, soit une chaine qui dénote les options de montage passées au pilote de système de fichiers. @xref{Mount-Unmount-Remount,,, libc, le manuel de référence de la bibliothèque C de GNU} pour plus de détails.

note: type: table
en: Run @command{man 8 mount} for options for various file systems, but beware that what it lists as file-system-independent ``mount options'' are in fact flags, and belong in the @code{flags} field described above.
fr: Lancez @command{man 8 mount} pour voir les options des divers systèmes de fichiers, mais sachez que les « options de montage » indépendantes du système de fichiers sont en fait des drapeaux, et appartiennent au champ @code{flags} décrit plus haut.

note: type: table
en: The @code{file-system-options->alist} and @code{alist->file-system-options} procedures from @code{(gnu system file-systems)} can be used to convert file system options given as an association list to the string representation, and vice-versa.
fr: Les procédures @code{file-system-options->alist} et @code{alist->file-system-options} de @code{(gnu system file-systems)} peuvent être utilisées pour convertir des options de systèmes de fichiers données sous forme de liste d'association en représentation de chaîne de caractères, et vice-versa.

note: type: item
en: @code{mount?} (default: @code{#t})
fr: @code{mount?} (par défaut : @code{#t})

note: type: table
en: This value indicates whether to automatically mount the file system when the system is brought up.  When set to @code{#f}, the file system gets an entry in @file{/etc/fstab} (read by the @command{mount} command) but is not automatically mounted.
fr: Cette valeur indique s'il faut monter automatiquement le système de fichier au démarrage du système.  Lorsque la valeur est @code{#f}, le système de fichier reçoit une entrée dans @file{/etc/fstab} (lue par la commande @command{mount}) mais n'est pas monté automatiquement.

note: type: item
en: @code{needed-for-boot?} (default: @code{#f})
fr: @code{needed-for-boot?} (par défaut : @code{#f})

note: type: table
en: This Boolean value indicates whether the file system is needed when booting.  If that is true, then the file system is mounted when the initial RAM disk (initrd) is loaded.  This is always the case, for instance, for the root file system.
fr: Cette valeur booléenne indique si le système de fichier est nécessaire au démarrage.  Si c'est vrai alors le système de fichier est monté au chargement du disque de RAM initial.  C'est toujours le cas par exemple du système de fichiers racine.

note: type: item
en: @code{check?} (default: @code{#t})
fr: @code{check?} (par défaut : @code{#t})

note: type: table
en: This Boolean indicates whether the file system should be checked for errors before being mounted.  How and when this happens can be further adjusted with the following options.
fr: Cette valeur booléenne indique si le système de fichier devrait être vérifié avant de le monter. Comment et quand cela se produit peut être réglé plus en détail avec les options suivantes.

note: type: item
en: @code{skip-check-if-clean?} (default: @code{#t})
fr: @code{skip-check-if-clean?} (par défaut : @code{#t})

note: type: table
en: When true, this Boolean indicates that a file system check triggered by @code{check?} may exit early if the file system is marked as ``clean'', meaning that it was previously correctly unmounted and should not contain errors.
fr: Lorsqu'il a la valeur vrai, ce booléen indique qu'une vérification de système de fichier initiée par @code{check?} peut terminer prématurément si le système de fichier est marqué comme « propre », ce qui signifie qu'il a préalablement été démonté correctement and ne devrait contenir aucune erreur.

note: type: table
en: Setting this to false will always force a full consistency check when @code{check?} is true.  This may take a very long time and is not recommended on healthy systems---in fact, it may reduce reliability!
fr: Lui affecter la valeur faux imposera toujours une vérification de cohérence complète si @code{check?} est à vrai. Cela peut prendre très longtemps et n'est pas recommandé sur des systèmes sains---en fait, cela pourrait même réduire la fiabilité !

note: type: table
en: Conversely, some primitive file systems like @code{fat} do not keep track of clean shutdowns and will perform a full scan regardless of the value of this option.
fr: À l'inverse, certains systèmes de fichiers primitifs comme @code{fat} ne gardent pas trace des arrêts propres et exécuteront une vérification complète sans tenir compte de la valeur de cette option.

note: type: item
en: @code{repair} (default: @code{'preen})
fr: @code{repair} (par défaut : @code{'preen})

note: type: table
en: When @code{check?} finds errors, it can (try to) repair them and continue booting.  This option controls when and how to do so.
fr: Quand @code{check?} trouve des erreurs, il peut (essayer de) les réparer pour poursuivre le démarrage. Cette option contrôle dans quel cas et de quelle manière appliquer cette stratégie.

note: type: table
en: If false, try not to modify the file system at all.  Checking certain file systems like @code{jfs} may still write to the device to replay the journal.  No repairs will be attempted.
fr: À la valeur faux, il essayera de pas modifier le système de fichier du tout. Vérifier certains systèmes de fichiers comme @code{jfs} peut quand même provoquer des écritures sur le périphérique pour rejouer le journal. Aucune réparation ne sera tentée.

note: type: table
en: If @code{#t}, try to repair any errors found and assume ``yes'' to all questions.  This will fix the most errors, but may be risky.
fr: Si la valeur @code{#t} est renseignée, il essayera de récupérer toute erreur qu'il trouvera et supposera qu'il peut répondre « oui » à toutes les questions. Cela corrigera la plupart des erreurs, mais peut s'avérer risqué.

note: type: table
en: If @code{'preen}, repair only errors that are safe to fix without human interaction.  What that means is left up to the developers of each file system and may be equivalent to ``none'' or ``all''.
fr: Si elle vaut @code{'preen}, il ne réparera que les erreurs qui peuvent être corrigées sans risque  en l'absence d'intervention humaine. Ce que cela signifie est laissé à l'appréciation des personnes qui développent chaque système de fichier et peut être équivalent à « aucune » ou « toutes ».

note: type: item
en: @code{create-mount-point?} (default: @code{#f})
fr: @code{create-mount-point?} (par défaut : @code{#f})

note: type: table
en: When true, the mount point is created if it does not exist yet.
fr: Lorsque cette valeur est vraie, le point de montage est créé s'il n'existe pas déjà.

note: type: item
en: @code{mount-may-fail?} (default: @code{#f})
fr: @code{mount-may-fail?} (par défaut : @code{#t})

note: type: table
en: When true, this indicates that mounting this file system can fail but that should not be considered an error.  This is useful in unusual cases; an example of this is @code{efivarfs}, a file system that can only be mounted on EFI/UEFI systems.
fr: Lorsque cela est vrai, indique que le montage de ce système de fichiers peut échouer, mais cela ne doit pas être considéré comme une erreur.  Ceci est utile dans des cas inhabituels ; un exemple de ceci est @code{efivarfs}, un système de fichiers qui ne peut être monté que sur des systèmes EFI/UEFI.

note: type: table
en: This is a list of @code{<file-system>} or @code{<mapped-device>} objects representing file systems that must be mounted or mapped devices that must be opened before (and unmounted or closed after) this one.
fr: C'est une liste d'objets @code{<file-system>} ou @code{<mapped-device>} qui représentent les systèmes de fichiers qui doivent être montés ou les périphériques mappés qui doivent être ouverts avant (et monté ou fermés après) celui-ci.

note: type: table
en: As an example, consider a hierarchy of mounts: @file{/sys/fs/cgroup} is a dependency of @file{/sys/fs/cgroup/cpu} and @file{/sys/fs/cgroup/memory}.
fr: Par exemple, considérons une hiérarchie de montage : @file{/sys/fs/cgroup} est une dépendance de @file{/sys/fs/cgroup/cpu} et @file{/sys/fs/cgroup/memory}.

note: type: table
en: Another example is a file system that depends on a mapped device, for example for an encrypted partition (@pxref{Mapped Devices}).
fr: Un autre exemple est un système de fichier qui dépend d'un périphérique mappé, par exemple pour une partition chiffrée (@pxref{Mapped Devices}).

note: type: deffn
en: {Scheme Procedure} file-system-label @var{str}
fr: {Procédure Scheme} file-system-label @var{str}

note: type: deffn
en: This procedure returns an opaque file system label from @var{str}, a string:
fr: Cette procédure renvoie un label de système de fichiers opaque à partir de @var{str}, une chaîne de caractères :

note: type: deffn
en: File system labels are used to refer to file systems by label rather than by device name.  See above for examples.
fr: Les étiquettes de systèmes de fichiers sont utilisées pour faire référence aux systèmes de fichiers par étiquette plutôt que par nom de dispositif.  Voir ci-dessus pour des exemples.

note: type: Plain text
en: The @code{(gnu system file-systems)} exports the following useful variables.
fr: Le module @code{(gnu system file-systems)} exporte les variables utiles suivantes.

note: type: defvr
en: {Scheme Variable} %base-file-systems
fr: {Variable Scheme} %base-file-systems

note: type: defvr
en: These are essential file systems that are required on normal systems, such as @code{%pseudo-terminal-file-system} and @code{%immutable-store} (see below).  Operating system declarations should always contain at least these.
fr: Ce sont les systèmes de fichiers essentiels qui sont requis sur les systèmes normaux, comme @code{%pseudo-terminal-file-system} et @code{%immutable-store} (voir plus bas).  Les déclarations de systèmes d'exploitation devraient au moins les contenir.

note: type: defvr
en: {Scheme Variable} %pseudo-terminal-file-system
fr: {Variable Scheme} %pseudo-terminal-file-system

note: type: defvr
en: This is the file system to be mounted as @file{/dev/pts}.  It supports @dfn{pseudo-terminals} created @i{via} @code{openpty} and similar functions (@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference Manual}).  Pseudo-terminals are used by terminal emulators such as @command{xterm}.
fr: C'est le système de fichier monté sur @file{/dev/pts}.  Il supporte les @dfn{pseudo-terminaux} créés via @code{openpty} et les fonctions similaires (@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference Manual}).  Les pseudo-terminaux sont utilisés par les émulateurs de terminaux comme @command{xterm}.

note: type: defvr
en: {Scheme Variable} %shared-memory-file-system
fr: {Variable Scheme} %shared-memory-file-system

note: type: defvr
en: This file system is mounted as @file{/dev/shm} and is used to support memory sharing across processes (@pxref{Memory-mapped I/O, @code{shm_open},, libc, The GNU C Library Reference Manual}).
fr: Ce système de fichier est monté dans @file{/dev/shm} et est utilisé pour le partage de mémoire entre processus (@pxref{Memory-mapped I/O, @code{shm_open},, libc, The GNU C Library Reference Manual}).

note: type: defvr
en: {Scheme Variable} %immutable-store
fr: {Variable Scheme} %immutable-store

note: type: defvr
en: This file system performs a read-only ``bind mount'' of @file{/gnu/store}, making it read-only for all the users including @code{root}.  This prevents against accidental modification by software running as @code{root} or by system administrators.
fr: Ce système de fichiers effectue un « montage lié » en lecture-seule de @file{/gnu/store}, ce qui en fait un répertoire en lecture-seule pour tous les utilisateurs dont @code{root}.  Cela évite que des logiciels qui tournent en @code{root} ou des administrateurs systèmes ne modifient accidentellement le dépôt.

note: type: defvr
en: The daemon itself is still able to write to the store: it remounts it read-write in its own ``name space.''
fr: Le démon lui-même est toujours capable d'écrire dans le dépôt : il est remonté en lecture-écriture dans son propre « espace de nom ».

note: type: defvr
en: {Scheme Variable} %binary-format-file-system
fr: {Variable Scheme} %binary-format-file-system

note: type: defvr
en: The @code{binfmt_misc} file system, which allows handling of arbitrary executable file types to be delegated to user space.  This requires the @code{binfmt.ko} kernel module to be loaded.
fr: Le système de fichiers @code{binfmt_misc}, qui permet de gérer n'importe quel type de fichiers exécutables à déléguer en espace utilisateur.  Cela demande que le module du noyau @code{binfmt.ko} soit chargé.

note: type: defvr
en: {Scheme Variable} %fuse-control-file-system
fr: {Variable Scheme} %fuse-control-file-system

note: type: defvr
en: The @code{fusectl} file system, which allows unprivileged users to mount and unmount user-space FUSE file systems.  This requires the @code{fuse.ko} kernel module to be loaded.
fr: Le système de fichiers @code{fusectl}, qui permet à des utilisateurs non privilégiés de monter et de démonter des systèmes de fichiers FUSE en espace utilisateur.  Cela requiert que le module du noyau @code{fuse.ko} soit chargé.

note: type: Plain text
en: The @code{(gnu system uuid)} module provides tools to deal with file system ``unique identifiers'' (UUIDs).
fr: Le module @code{(gnu system uuid)} fournit les outils pour traiter les « identifiants uniques » de système de fichier (UUIDs).

note: type: deffn
en: {Scheme Procedure} uuid @var{str} [@var{type}]
fr: {Procédure Scheme} uuid @var{type} [@var{value}]

note: type: deffn
en: Return an opaque UUID (unique identifier) object of the given @var{type} (a symbol) by parsing @var{str} (a string):
fr: Renvoie un objet UUID (identifiant unique) opaque du @var{type} donné (un symbole) en analysant @var{str} (une chaîne) :

note: type: lisp
en: (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")
    @result{} #<<uuid> type: dce bv: @dots{}>
fr: (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")
    @result{} #<uuid> type: dce bv: @dots{}>

note: type: lisp
en: (uuid "1234-ABCD" 'fat)
    @result{} #<<uuid> type: fat bv: @dots{}>
fr: (uuid "1234-ABCD" 'fat)
    @result{} #<uuid> type: fat bv: @dots{}>

note: type: deffn
en: @var{type} may be one of @code{dce}, @code{iso9660}, @code{fat}, @code{ntfs}, or one of the commonly found synonyms for these.
fr: @var{type} peut être l'un des codes suivants : @code{dce}, @code{iso9660}, @code{fat}, @code{ntfs}, ou l'un des synonymes les plus courants.

note: type: deffn
en: UUIDs are another way to unambiguously refer to file systems in operating system configuration.  See the examples above.
fr: Les UUIDs sont un autre moyen de faire référence sans ambiguïté aux systèmes de fichiers dans la configuration du système d'exploitation.  Voir les exemples ci-dessus.

note: type: subsection
en: Btrfs file system
fr: Système de fichier Btrfs

note: type: Plain text
en: The Btrfs has special features, such as subvolumes, that merit being explained in more details.  The following section attempts to cover basic as well as complex uses of a Btrfs file system with the Guix System.
fr: Btrfs a des particularités, comme les sous-volumes, qui méritent d'être expliquées plus en détail.  La section suivante tente de couvrir les utilisations de base ainsi que les utilisations complexes d'un système de fichiers Btrfs avec le système Guix.

note: type: Plain text
en: In its simplest usage, a Btrfs file system can be described, for example, by:
fr: Dans son usage le plus simple, un système de fichier Btrfs peut être décrit, par exemple, par :

note: type: Plain text
en: The example below is more complex, as it makes use of a Btrfs subvolume, named @code{rootfs}.  The parent Btrfs file system is labeled @code{my-btrfs-pool}, and is located on an encrypted device (hence the dependency on @code{mapped-devices}):
fr: L'exemple ci-dessous est plus complexe, car il utilise un sous-volume de Btrfs, nommé @code{rootfs}.  Le système de fichiers Btrfs parent est appelé @code{my-btrfs-pool}, et se trouve sur un périphérique crypté (d'où la dépendance à l'égard de @code{mapped-devices}) :

note: type: Plain text
en: Some bootloaders, for example GRUB, only mount a Btrfs partition at its top level during the early boot, and rely on their configuration to refer to the correct subvolume path within that top level.  The bootloaders operating in this way typically produce their configuration on a running system where the Btrfs partitions are already mounted and where the subvolume information is readily available.  As an example, @command{grub-mkconfig}, the configuration generator command shipped with GRUB, reads @file{/proc/self/mountinfo} to determine the top-level path of a subvolume.
fr: Certains chargeurs d'amorçage, par exemple GRUB, ne montent une partition Btrfs qu'à son niveau supérieur au début du démarrage, et s'appuient sur leur configuration pour se référer au chemin correct du sous-volume à l'intérieur de ce niveau supérieur.  Les chargeurs d'amorçage fonctionnant de cette manière produisent généralement leur configuration sur un système en cours d'exécution où les partitions Btrfs sont déjà montées et où les informations sur les sous-volumes sont facilement disponibles.  Par exemple, @command{grub-mkconfig}, la commande de générateur de configuration livrée avec GRUB, lit @file{/proc/self/mountinfo} pour déterminer le chemin de niveau supérieur d'un sous-volume.

note: type: Plain text
en: The Guix System produces a bootloader configuration using the operating system configuration as its sole input; it is therefore necessary to extract the subvolume name on which @file{/gnu/store} lives (if any)  from that operating system configuration.  To better illustrate, consider a subvolume named 'rootfs' which contains the root file system data.  In such situation, the GRUB bootloader would only see the top level of the root Btrfs partition, e.g.:
fr: Guix  System produit une configuration de bootloader en utilisant la configuration du système d'exploitation comme seule entrée ; il est donc nécessaire d'extraire le nom du sous-volume sur lequel vit @file{/gnu/store} (s'il existe) de cette configuration du système d'exploitation.  Pour mieux illustrer cela, considérons un sous-volume nommé "rootfs" qui contient les données du système de fichiers racine.  Dans une telle situation, le chargeur de démarrage GRUB ne verrait que le niveau supérieur de la partition Btrfs de la racine, par exemple :

note: type: example
en: /                   (top level)
    ├── rootfs          (subvolume directory)
        ├── gnu         (normal directory)
            ├── store   (normal directory)
    [...]
fr: /                   (niveau supérieur)
    ├── rootfs          (répertoire des sous-volumes)
        ├── gnu         (répertoire normal)
            ├── store   (répertoire normal)
    [...]

note: type: Plain text
en: Thus, the subvolume name must be prepended to the @file{/gnu/store} path of the kernel, initrd binaries and any other files referred to in the GRUB configuration that must be found during the early boot.
fr: Ainsi, le nom du sous-volume doit être précédé du chemin @file{/gnu/store} du noyau, des binaires initrd et de tout autre fichier mentionné dans la configuration GRUB qui doit être trouvé au début du démarrage.

note: type: Plain text
en: The next example shows a nested hierarchy of subvolumes and directories:
fr: L'exemple suivant montre une hiérarchie imbriquée de sous-volumes et de répertoires :

note: type: example
en: /                   (top level)
    ├── rootfs          (subvolume)
        ├── gnu         (normal directory)
            ├── store   (subvolume)
    [...]
fr: /                   (niveau supérieur)
    ├── rootfs          (sous-volume)
        ├── gnu         (répertoire normal)
            ├── store   (sous-volume)
    [...]

note: type: Plain text
en: This scenario would work without mounting the 'store' subvolume.  Mounting 'rootfs' is sufficient, since the subvolume name matches its intended mount point in the file system hierarchy.  Alternatively, the 'store' subvolume could be referred to by setting the @code{subvol} option to either @code{/rootfs/gnu/store} or @code{rootfs/gnu/store}.
fr: Ce scénario fonctionnerait sans monter le sous-volume « store ».  Le montage de "rootfs" est suffisant, puisque le nom du sous-volume correspond à son point de montage prévu dans la hiérarchie du système de fichiers.  Une autre solution consiste à faire référence au sous-volume « store » en définissant l'option @code{subvol} soit @code{/rootfs/gnu/store} soit @code{rootfs/gnu/store}.

note: type: Plain text
en: Finally, a more contrived example of nested subvolumes:
fr: Enfin, un exemple plus élaboré de sous-volumes imbriqués :

note: type: example
en: /                           (top level)
    ├── root-snapshots          (subvolume)
        ├── root-current        (subvolume)
            ├── guix-store      (subvolume)
    [...]
fr: /                           (niveau supérieur)
    ├── root-snapshots          (sous-volume)
        ├── root-current        (sous-volume)
            ├── guix-store      (sous-volume)
    [...]

note: type: Plain text
en: Here, the 'guix-store' subvolume doesn't match its intended mount point, so it is necessary to mount it.  The subvolume must be fully specified, by passing its file name to the @code{subvol} option.  To illustrate, the 'guix-store' subvolume could be mounted on @file{/gnu/store} by using a file system declaration such as:
fr: Ici, le sous-volume « guix-store » ne correspond pas à son point de montage prévu, il est donc nécessaire de le monter.  Le sous-volume doit être entièrement spécifié, en passant son nom de fichier à l'option @code{subvol}.  Par exemple, le sous-volume « guix-store » peut être monté sur @file{/gnu/store} en utilisant une déclaration de système de fichiers telle que :

note: type: cindex
en: device mapping
fr: mappage de périphériques

note: type: cindex
en: mapped devices
fr: périphériques mappés

note: type: Plain text
en: The Linux kernel has a notion of @dfn{device mapping}: a block device, such as a hard disk partition, can be @dfn{mapped} into another device, usually in @code{/dev/mapper/}, with additional processing over the data that flows through it@footnote{Note that the GNU@tie{}Hurd makes no difference between the concept of a ``mapped device'' and that of a file system: both boil down to @emph{translating} input/output operations made on a file to operations on its backing store.  Thus, the Hurd implements mapped devices, like file systems, using the generic @dfn{translator} mechanism (@pxref{Translators,,, hurd, The GNU Hurd Reference Manual}).}.  A typical example is encryption device mapping: all writes to the mapped device are encrypted, and all reads are deciphered, transparently.  Guix extends this notion by considering any device or set of devices that are @dfn{transformed} in some way to create a new device; for instance, RAID devices are obtained by @dfn{assembling} several other devices, such as hard disks or partitions, into a new one that behaves as one partition.
fr: Le noyau Linux a une notion de @dfn{mappage de périphériques} : un périphérique bloc, comme une partition sur un disque dur, peut être @dfn{mappé} sur un autre périphérique, typiquement dans @code{/dev/mapper}, avec des calculs supplémentaires sur les données qui naviguent entre les deux@footnote{Remarquez que le Hurd ne fait pas de différence entre le concept de « périphérique mappé » et celle d'un système de fichiers : les deux correspondent à la @emph{traduction} des opérations d'entrée-sortie faites sur un fichier en des opérations sur ce qui le contient.  Ainsi, le Hurd implémente les périphériques mappés, comme les systèmes de fichiers, avec le mécanisme des @dfn{traducteurs} générique (@pxref{Translators,,, hurd, The GNU Hurd Reference Manual}).}.  Un exemple typique est le mappage de périphériques chiffrés : toutes les écritures sont sur le périphérique mappé sont chiffrées, toutes les lectures déchiffrées, de manière transparente.  Guix étend cette notion en considérant que tout périphérique ou ensemble de périphériques qui sont @dfn{transformés} d'une certaine manière créent un nouveau périphérique ; par exemple, les périphériques RAID sont obtenus en @dfn{assemblant} plusieurs autres périphériques, comme des disque ou des partitions, en un nouveau périphérique en tant qu'unique partition.

note: type: Plain text
en: Mapped devices are declared using the @code{mapped-device} form, defined as follows; for examples, see below.
fr: Les périphériques mappés sont déclarés avec la forme @code{mapped-device}, définie comme suit ; par exemple, voir ci-dessous.

note: type: deftp
en: {Data Type} mapped-device
fr: {Type de données} mapped-device

note: type: deftp
en: Objects of this type represent device mappings that will be made when the system boots up.
fr: Les objets de ce type représentent des mappages de périphériques qui seront effectués au démarrage du système.

note: type: table
en: This is either a string specifying the name of the block device to be mapped, such as @code{"/dev/sda3"}, or a list of such strings when several devices need to be assembled for creating a new one.  In case of LVM this is a string specifying name of the volume group to be mapped.
fr: C'est soit une chaîne qui spécifie le nom d'un périphérique bloc à projeter, comme @code{"/dev/sda3"}, soit une liste de plusieurs périphériques à assembler pour en créer un nouveau.  Dans le cas de LVM, c'est une chaîne spécifiant le nom du groupe de volume à projeter.

note: type: table
en: This string specifies the name of the resulting mapped device.  For kernel mappers such as encrypted devices of type @code{luks-device-mapping}, specifying @code{"my-partition"} leads to the creation of the @code{"/dev/mapper/my-partition"} device.  For RAID devices of type @code{raid-device-mapping}, the full device name such as @code{"/dev/md0"} needs to be given.  LVM logical volumes of type @code{lvm-device-mapping} need to be specified as @code{"VGNAME-LVNAME"}.
fr: Cette chaîne spécifie le nom du périphérique mappé qui en résulte.  Pour les mappeurs noyaux comme les périphériques chiffrés de type @code{luks-device-mapping}, spécifier @code{"ma-partition"} crée le périphérique @code{"/dev/mapper/ma-partition"}.  Pour les périphériques RAID de type @code{raid-device-mapping}, il faut donner le nom complet comme @code{"/dev/md0"}.  Les volumes logiques LVM de type @code{lvm-device-mapping} doivent être spécifiés comme étant @code{"VGNAME-LVNAME"}.

note: type: table
en: This list of strings specifies names of the resulting mapped devices in case there are several.  The format is identical to @var{target}.
fr: Cette liste de chaînes spécifie les noms des périphériques projetés s'il y en a plusieurs. Le format est identique à @var{target}.

note: type: table
en: This must be a @code{mapped-device-kind} object, which specifies how @var{source} is mapped to @var{target}.
fr: Ce doit être un objets @code{mapped-device-kind}, qui spécifie comment @var{source} est mappés sur @var{target}.

note: type: defvr
en: {Scheme Variable} luks-device-mapping
fr: {Variable Scheme} luks-device-mapping

note: type: defvr
en: This defines LUKS block device encryption using the @command{cryptsetup} command from the package with the same name.  It relies on the @code{dm-crypt} Linux kernel module.
fr: Cela définie les périphériques blocs chiffrés en LUKS avec @command{cryptsetup} du paquet du même nom.  Elle s'appuie sur le module du noyau Linux @code{dm-crypt}.

note: type: defvr
en: {Scheme Variable} raid-device-mapping
fr: {Variable Scheme} raid-device-mapping

note: type: defvr
en: This defines a RAID device, which is assembled using the @code{mdadm} command from the package with the same name.  It requires a Linux kernel module for the appropriate RAID level to be loaded, such as @code{raid456} for RAID-4, RAID-5 or RAID-6, or @code{raid10} for RAID-10.
fr: Cela définie un périphérique RAID qui est assemblé avec la commande @code{mdadm} du paquet du même nom.  Elle nécessite un module noyau Linux approprié pour le niveau RAID chargé, comme @code{raid456} pour RAID-4, RAID-5 et RAID-6 ou @code{raid10} pour RAID-10.

note: type: cindex
en: LVM, logical volume manager
fr: LVM, gestionnaire de volume logique

note: type: defvr
en: {Scheme Variable} lvm-device-mapping
fr: {Variable Scheme} lvm-device-mapping

note: type: defvr
en: This defines one or more logical volumes for the Linux @uref{https://www.sourceware.org/lvm2/, Logical Volume Manager (LVM)}.  The volume group is activated by the @command{vgchange} command from the @code{lvm2} package.
fr: Cela définie un ou plusieurs volumes logiques pour le @uref{https://www.sourceware.org/lvm2/, Gestionnaire de Volume Logique (LVM)} de Linux. Le groupe de volume est activé par la commande @command{vgchange} du paquet @code{lvm2}.

note: type: cindex
en: disk encryption
fr: chiffrement du disque

note: type: Plain text
en: The following example specifies a mapping from @file{/dev/sda3} to @file{/dev/mapper/home} using LUKS---the @url{https://gitlab.com/cryptsetup/cryptsetup,Linux Unified Key Setup}, a standard mechanism for disk encryption.  The @file{/dev/mapper/home} device can then be used as the @code{device} of a @code{file-system} declaration (@pxref{File Systems}).
fr: L'exemple suivant spécifie un mappage de @file{/dev/sda3} vers @file{/dev/mapper/home} avec LUKS — @url{https://gitlab.com/cryptsetup/cryptsetup,Linux Unified Key Setup}, un mécanisme standard pour chiffrer les disques.  Le périphérique @file{/dev/mapper/home} peut ensuite être utilisé comme @code{device} d'une déclaration @code{file-system} (@pxref{File Systems}).

note: type: Plain text
en: Alternatively, to become independent of device numbering, one may obtain the LUKS UUID (@dfn{unique identifier}) of the source device by a command like:
fr: Autrement, pour devenir indépendant du numéro de périphérique, on peut obtenir l'UUID LUKS (@dfn{l'identifiant unique}) du périphérique source avec une commande comme :

note: type: Plain text
en: and use it as follows:
fr: et l'utiliser ainsi :

note: type: cindex
en: swap encryption
fr: chiffrement de l'espace d'échange

note: type: Plain text
en: It is also desirable to encrypt swap space, since swap space may contain sensitive data.  One way to accomplish that is to use a swap file in a file system on a device mapped via LUKS encryption.  In this way, the swap file is encrypted because the entire device is encrypted.  @xref{Swap Space}, or @xref{Preparing for Installation,,Disk Partitioning}, for an example.
fr: Il est aussi désirable de chiffrer l'espace d'échange, puisque l'espace d'échange peut contenir des données sensibles.  Une manière de faire cela est d'utiliser un fichier d'échange dans un système de fichiers sur un périphérique mappé avec un chiffrement LUKS.  De cette manière, le fichier d'échange est chiffré parce que tout le périphérique est chiffré.  @xref{Swap Space} ou @xref{Preparing for Installation,,Disk Partitioning}, pour un exemple.

note: type: Plain text
en: A RAID device formed of the partitions @file{/dev/sda1} and @file{/dev/sdb1} may be declared as follows:
fr: Un périphérique RAID formé des partitions @file{/dev/sda1} et @file{/dev/sdb1} peut être déclaré ainsi :

note: type: Plain text
en: The @file{/dev/md0} device can then be used as the @code{device} of a @code{file-system} declaration (@pxref{File Systems}).  Note that the RAID level need not be given; it is chosen during the initial creation and formatting of the RAID device and is determined automatically later.
fr: Le périphérique @file{/dev/md0} peut ensuite être utilisé comme @code{device} d'une déclaration @code{file-system} (@pxref{File Systems}).  Remarquez que le niveau de RAID n'a pas besoin d'être donné ; il est choisi pendant la création initiale du périphérique RAID et est ensuite déterminé automatiquement.

note: type: Plain text
en: LVM logical volumes ``alpha'' and ``beta'' from volume group ``vg0'' can be declared as follows:
fr: Les volumes logiques LVM « alpha » et « beta » du groupe de volumes « vg0 » se déclarent de cette façon :

note: type: Plain text
en: Devices @file{/dev/mapper/vg0-alpha} and @file{/dev/mapper/vg0-beta} can then be used as the @code{device} of a @code{file-system} declaration (@pxref{File Systems}).
fr: Les périphériques @file{/dev/mapper/vg0-alpha} et @file{/dev/mapper/vg0-beta} sont maintenant utilisables comme @code{device} d'une déclaration @code{file-system} (@pxref{File Systems}).

note: type: cindex
en: swap space
fr: espace d'échange

note: type: Plain text
en: Swap space, as it is commonly called, is a disk area specifically designated for paging: the process in charge of memory management (the Linux kernel or Hurd's default pager) can decide that some memory pages stored in RAM which belong to a running program but are unused should be stored on disk instead.  It unloads those from the RAM, freeing up precious fast memory, and writes them to the swap space.  If the program tries to access that very page, the memory management process loads it back into memory for the program to use.
fr: Un espace d'échange est un espace disque spécifiquement dédié à la pagination mémoire : le processus en charge de la gestion de la mémoire (le noyau Linux ou le gestionnaire par défaut du Hurd) peut décider que certaines pages mémoire stockées en RAM qui appartiennent à un processus en cours d'exécution mais qui sont inutilisées devraient plutôt être stockées sur disque. Il les décharge de la RAM pour libérer la précieuse mémoire rapide, et les écrit sur l'espace d'échange. Si le programme essaye d'accéder à la page, le processus de gestion de la mémoire la charge à nouveau dans la mémoire pour que le programme puisse l'utiliser.

note: type: Plain text
en: A common misconception about swap is that it is only useful when small amounts of RAM are available to the system.  However, it should be noted that kernels often use all available RAM for disk access caching to make I/O faster, and thus paging out unused portions of program memory will expand the RAM available for such caching.
fr: Une idée fausse répandue sur l'espace d'échange est qu'il n'est utile que lorsque seule une petite quantité de RAM est disponible sur le système. En réalité, vous devriez savoir que les noyaux utilisent souvent toute la RAM disponible pour le cache des accès disques pour rendre les opérations d'entrée-sortie plus rapides. En conséquence, déplacer des pages mémoire inutilisées augmentera la quantité de RAM disponible pour ce cache.

note: type: Plain text
en: For a more detailed description of how memory is managed from the viewpoint of a monolithic kernel, @xref{Memory Concepts,,, libc, The GNU C Library Reference Manual}.
fr: Pour une description plus complète de la gestion de la mémoire du point de vue d'un noyau monolithique, @xref{Memory Concepts,,, libc, le manuel de référence de la bibliothèque C de GNU}.

note: type: Plain text
en: The Linux kernel has support for swap partitions and swap files: the former uses a whole disk partition for paging, whereas the second uses a file on a file system for that (the file system driver needs to support it).  On a comparable setup, both have the same performance, so one should consider ease of use when deciding between them.  Partitions are ``simpler'' and do not need file system support, but need to be allocated at disk formatting time (logical volumes notwithstanding), whereas files can be allocated and deallocated at any time.
fr: Le noyau Linux prend en charge les partitions d'échanges et les fichiers d'échange : le premier utilise une partition disque complète pour la pagination, alors que le second utilise un fichier sur un système de fichiers pour cela (le pilote du système de fichiers doit le prendre en charge). Pour une configuration comparable, les deux ont les mêmes performances, donc vous devriez considérer la facilité d'utilisation pour vous décider entre les deux. Les partitions sont « plus simples » et n'ont pas besoin de la prise en charge dans le système de fichiers, mais ont besoin d'être allouées au formatage du disque (en oubliant les volumes logiques), alors que les fichiers peuvent être alloués et désalloués à n'importe quel moment.

note: type: Plain text
en: Note that swap space is not zeroed on shutdown, so sensitive data (such as passwords) may linger on it if it was paged out.  As such, you should consider having your swap reside on an encrypted device (@pxref{Mapped Devices}).
fr: Remarquez que l'espace d'échange n'est pas remis à zéro à l'extinction donc les données sensibles (comme les mots de passe) peuvent y rester si elles y ont été déplacées. De fait, vous devriez faire résider votre espace d'échange sur un périphérique chiffré (@pxref{Mapped Devices}).

note: type: deftp
en: {Data Type} swap-space
fr: {Type de données} swap-space

note: type: deftp
en: Objects of this type represent swap spaces.  They contain the following members:
fr: Les objets de ce type représentent des espaces d'échange.  Ils contiennent les membres suivants :

note: type: table
en: The device or file to use, either a UUID, a @code{file-system-label} or a string, as in the definition of a @code{file-system} (@pxref{File Systems}).
fr: Le périphérique ou le fichier à utiliser, soit un UUID, soit un @code{file-system-label}, soit une chaine, comme dans la définition d'un @code{file-system} (@pxref{File Systems}).

note: type: table
en: A list of @code{file-system} or @code{mapped-device} objects, upon which the availability of the space depends.  Note that just like for @code{file-system} objects, dependencies which are needed for boot and mounted in early userspace are not managed by the Shepherd, and so automatically filtered out for you.
fr: Une liste de d'objets @code{file-system} ou @code{mapped-device}, dont dépend la disponibilité de l'espace. Remarquez que, tout comme pour les objets @code{file-system}, les dépendances qui sont requises au démarrage et montées au plus tôt en espace utilisateur ne sont pas gérées par le Shepherd, et sont donc automatiquement retirées pour vous.

note: type: item
en: @code{priority} (default: @code{#f})
fr: @code{priority} (par défaut : @code{#f})

note: type: table
en: Only supported by the Linux kernel.  Either @code{#f} to disable swap priority, or an integer between 0 and 32767.  The kernel will first use swap spaces of higher priority when paging, and use same priority spaces on a round-robin basis.  The kernel will use swap spaces without a set priority after prioritized spaces, and in the order that they appeared in (not round-robin).
fr: Seulement pris en charge par le noyau Linux. Soit @code{#f} pour désactive la priorité de l'espace d'échange, soit un entier entre 0 et 32767. Le noyau utilisera d'abord les espaces d'échange avec la plus grande priorité, et utilisera les espaces d'échange de même priorité à tour de rôle. Le noyau utilisera les espaces d'échange sans priorité après les espaces prioritaires, et dans l'ordre dans lequel ils sont apparus (donc pas à tour de rôle).

note: type: item
en: @code{discard?} (default: @code{#f})
fr: @code{discard?} (par défaut : @code{#f})

note: type: table
en: Only supported by the Linux kernel.  When true, the kernel will notify the disk controller of discarded pages, for example with the TRIM operation on Solid State Drives.
fr: Uniquement pris en charge par le noyau Linux. Lorsque la valeur est vraie, le noyau notifiera le contrôleur de disque des pages supprimées, par exemple avec l'opération TRIM sur les disques SSD.

note: type: Plain text
en: Here are some examples:
fr: Voici quelques exemples :

note: type: Plain text
en: Use the swap partition with the given UUID@.  You can learn the UUID of a Linux swap partition by running @command{swaplabel @var{device}}, where @var{device} is the @file{/dev} file name of that partition.
fr: Utilise la partition de swap avec l'UUID donné.  Vous pouvez voir l'UUID d'une partition de swap Linux en lançant @command{swaplabel @var{device}}, où @var{device} est le nom de fichier @file{/dev} de cette partition.

note: type: lisp
en: (swap-space
      (target (file-system-label "swap"))
      (dependencies mapped-devices))
fr: (swap-space
      (target (file-system-label "swap"))
      (dependencies mapped-device))

note: type: Plain text
en: Use the partition with label @code{swap}, which can be found after all the @var{mapped-devices} mapped devices have been opened.  Again, the @command{swaplabel} command allows you to view and change the label of a Linux swap partition.
fr: Utilise la partition avec l'étiquette @code{swap}, qui peut être trouvée après que tous les périphériques mappés @var{mapped-devices} ont été ouverts.  De nouveau, la commande @command{swaplabel} vous permet de voir et de changer l'étiquette d'une partition swap de Linux.

note: type: Plain text
en: Here's a more involved example with the corresponding @code{file-systems} part of an @code{operating-system} declaration.
fr: Voici un exemple plus complet de la partie @code{file-systems} d'une déclaration @code{operating-system}.

note: type: Plain text
en: Use the file @file{/btrfs/swapfile} as swap space, which depends on the file system mounted at @file{/btrfs}.  Note how we use Guile's filter to select the file system in an elegant fashion!
fr: utilise le fichier @file{/btrfs/swapfile} comme espace d'échange, ce qui dépend du système de fichiers monté sur @file{/btrfs}. Remarquez comment nous utilisons la fonction filter de Guile pour élégamment sélectionner le système de fichiers !

note: type: cindex
en: users
fr: utilisateurs

note: type: cindex
en: accounts
fr: comptes

note: type: cindex
en: user accounts
fr: comptes utilisateurs

note: type: Plain text
en: User accounts and groups are entirely managed through the @code{operating-system} declaration.  They are specified with the @code{user-account} and @code{user-group} forms:
fr: Les comptes utilisateurs et les groupes sont gérés entièrement par la déclaration @code{operating-system}.  Ils sont spécifiés avec les formes @code{user-account} et @code{user-group} :

note: type: lisp
en: (user-account
      (name "alice")
      (group "users")
      (supplementary-groups '("wheel"   ;allow use of sudo, etc.
                              "audio"   ;sound card
                              "video"   ;video devices such as webcams
                              "cdrom")) ;the good ol' CD-ROM
      (comment "Bob's sister"))
fr: (user-account
      (name "alice")
      (group "users")
      (supplementary-groups '("wheel"   ;permet d'utiliser sudo, etc.
                              "audio"   ;carte son
                              "video"   ;périphériques réseaux comme les webcams
                              "cdrom")) ;le bon vieux CD-ROM
      (comment "Bob's sister"))

note: type: Plain text
en: Here's a user account that uses a different shell and a custom home directory (the default would be @file{"/home/bob"}):
fr: Voici un compte d'utilisateur·rice qui utilise un shell différent et un répertoire d'accueil personnalisé (le répertoire par défaut serait @file{"/home/bob"}) :

note: type: Plain text
en: When booting or upon completion of @command{guix system reconfigure}, the system ensures that only the user accounts and groups specified in the @code{operating-system} declaration exist, and with the specified properties.  Thus, account or group creations or modifications made by directly invoking commands such as @command{useradd} are lost upon reconfiguration or reboot.  This ensures that the system remains exactly as declared.
fr: Lors du démarrage ou à la fin de @command{guix system reconfigure}, le système s'assure que seuls les comptes utilisateurs et les groupes spécifiés dans la déclaration @code{operating-system} existent, et avec les propriétés spécifiées.  Ainsi, les modifications ou les créations de comptes ou de groupes effectuées directement en invoquant des commandes comme @command{useradd} sont perdue à la reconfiguration ou au redémarrage.  Cela permet de s'assurer que le système reste exactement tel que déclaré.

note: type: deftp
en: {Data Type} user-account
fr: {Type de données} user-account

note: type: deftp
en: Objects of this type represent user accounts.  The following members may be specified:
fr: Les objets de se type représentent les comptes utilisateurs.  Les membres suivants peuvent être spécifiés :

note: type: table
en: The name of the user account.
fr: Le nom du compte utilisateur.

note: type: cindex
en: groups
fr: groupes

note: type: table
en: This is the name (a string) or identifier (a number) of the user group this account belongs to.
fr: C'est le nom (une chaîne) ou un identifiant (un nombre) du groupe utilisateur auquel ce compte appartient.

note: type: item
en: @code{supplementary-groups} (default: @code{'()})
fr: @code{supplementary-groups} (par défaut : @code{'()})

note: type: table
en: Optionally, this can be defined as a list of group names that this account belongs to.
fr: Éventuellement, cela peut être définie comme une liste de noms de groupes auxquels ce compte appartient.

note: type: item
en: @code{uid} (default: @code{#f})
fr: @code{uid} (par défaut : @code{#f})

note: type: table
en: This is the user ID for this account (a number), or @code{#f}.  In the latter case, a number is automatically chosen by the system when the account is created.
fr: C'est l'ID utilisateur de ce compte (un nombre) ou @code{#f}.  Dans ce dernier cas, le nombre est choisi automatiquement par le système à la création du compte.

note: type: item
en: @code{comment} (default: @code{""})
fr: @code{comment} (par défaut : @code{""})

note: type: table
en: A comment about the account, such as the account owner's full name.
fr: Un commentaire à propos du compte, comme le nom complet de l'utilisateur.

note: type: table
en: Note that, for non-system accounts, users are free to change their real name as it appears in @file{/etc/passwd} using the @command{chfn} command.  When they do, their choice prevails over the system administrator's choice; reconfiguring does @emph{not} change their name.
fr: Remarquez que, pour les compte non-systèmes, vous êtes libres de changer votre nom réel tel qu'il apparait dans @file{/etc/passwd} avec la commande @command{chfn}. Lorsque vous faites cela, votre choix prévaut sur le choix de l'administrateur ou l'administratrice système ; la reconfiguration ne change @emph{pas} votre nom.

note: type: table
en: This is the name of the home directory for the account.
fr: C'est le nom du répertoire personnel du compte.

note: type: item
en: @code{create-home-directory?} (default: @code{#t})
fr: @code{create-home-directory?} (par défaut : @code{#t})

note: type: table
en: Indicates whether the home directory of this account should be created if it does not exist yet.
fr: Indique si le répertoire personnel du compte devrait être créé s'il n'existe pas déjà.

note: type: item
en: @code{shell} (default: Bash)
fr: @code{shell} (par défaut : Bash)

note: type: table
en: This is a G-expression denoting the file name of a program to be used as the shell (@pxref{G-Expressions}).  For example, you would refer to the Bash executable like this:
fr: C'est une G-expression qui désigne le nom de fichier d'un programme utilisé comme shell (@pxref{G-Expressions}). Par exemple, vous pourriez vous référer à l'exécutable Bash comme ceci :

note: type: table
en: ... and to the Zsh executable like that:
fr: ... et à l' exécutable Zsh comme ceci :

note: type: item
en: @code{system?} (default: @code{#f})
fr: @code{system?} (par défaut : @code{#f})

note: type: table
en: This Boolean value indicates whether the account is a ``system'' account.  System accounts are sometimes treated specially; for instance, graphical login managers do not list them.
fr: C'est une valeur booléenne qui indique si le compte est un compte « système ».  Les comptes systèmes sont parfois traités à part ; par exemple, les gestionnaires de connexion graphiques ne les liste pas.

note: type: cindex
en: password, for user accounts
fr: mot de passe, pour les comptes utilisateurs

note: type: item
en: @code{password} (default: @code{#f})
fr: @code{password} (par défaut : @code{#f})

note: type: table
en: You would normally leave this field to @code{#f}, initialize user passwords as @code{root} with the @command{passwd} command, and then let users change it with @command{passwd}.  Passwords set with @command{passwd} are of course preserved across reboot and reconfiguration.
fr: Vous laisseriez normalement ce champ à @code{#f} et initialiseriez les mots de passe utilisateurs en tant que @code{root} avec la commande @command{passwd}, puis laisseriez l'utilisateur le changer avec @command{passwd}.  Les mots de passes définis avec @command{passwd} sont bien sûr préservés après redémarrage et reconfiguration.

note: type: table
en: If you @emph{do} want to set an initial password for an account, then this field must contain the encrypted password, as a string.  You can use the @code{crypt} procedure for this purpose:
fr: Si vous voulez @emph{vraiment} définir un mot de passe pour un compte, alors ce champ doit contenir le mot de passe chiffré, comme une chaîne de caractère.  Vous pouvez utiliser la procédure @code{crypt} pour cela :

note: type: lisp
en:   ;; Specify a SHA-512-hashed initial password.
      (password (crypt "InitialPassword!" "$6$abc")))
fr:   ;; Spécifie un mot de passe initial hashé avec sha512.
      (password (crypt "InitialPassword!" "$6$abc")))

note: type: quotation
en: The hash of this initial password will be available in a file in @file{/gnu/store}, readable by all the users, so this method must be used with care.
fr: Le hash de ce mot de passe initial sera disponible dans un fichier dans @file{/gnu/store}, lisible par tous les utilisateurs, donc cette méthode est à utiliser avec soin.

note: type: table
en: @xref{Passphrase Storage,,, libc, The GNU C Library Reference Manual}, for more information on password encryption, and @ref{Encryption,,, guile, GNU Guile Reference Manual}, for information on Guile's @code{crypt} procedure.
fr: @xref{Passphrase Storage,,, libc, The GNU C Library Reference Manual}, pour plus d'information sur le chiffrement des mots de passe et @ref{Encryption,,, guile, GNU Guile Reference Manual}, pour des informations sur la procédure @code{crypt} de Guile.

note: type: Plain text
en: User group declarations are even simpler:
fr: Les déclarations de groupes sont encore plus simple :

note: type: deftp
en: {Data Type} user-group
fr: {Type de données} user-group

note: type: deftp
en: This type is for, well, user groups.  There are just a few fields:
fr: C'est le type pour, hé bien, les comptes utilisateurs.  Il n'y a que quelques champs :

note: type: table
en: The name of the group.
fr: Le nom du groupe.

note: type: item
en: @code{id} (default: @code{#f})
fr: @code{id} (par défaut : @code{#f})

note: type: table
en: The group identifier (a number).  If @code{#f}, a new number is automatically allocated when the group is created.
fr: L'identifiant du groupe (un nombre).  S'il est @code{#f}, un nouveau nombre est alloué automatiquement lorsque le groupe est créé.

note: type: table
en: This Boolean value indicates whether the group is a ``system'' group.  System groups have low numerical IDs.
fr: Cette valeur booléenne indique si le groupe est un groupe « système ».  les groupes systèmes ont un numéro d'ID bas.

note: type: table
en: What, user groups can have a password? Well, apparently yes.  Unless @code{#f}, this field specifies the password of the group.
fr: Quoi, les groupes utilisateurs peuvent avoir des mots de passe ?  On dirait bien.  À moins que la valeur ne soit @code{#f}, ce champ spécifie le mot de passe du groupe.

note: type: Plain text
en: For convenience, a variable lists all the basic user groups one may expect:
fr: Par simplicité, une variable liste les groupes utilisateurs de base auxquels on pourrait s'attendre :

note: type: defvr
en: {Scheme Variable} %base-groups
fr: {Variable Scheme} %base-groups

note: type: defvr
en: This is the list of basic user groups that users and/or packages expect to be present on the system.  This includes groups such as ``root'', ``wheel'', and ``users'', as well as groups used to control access to specific devices such as ``audio'', ``disk'', and ``cdrom''.
fr: C'est la liste des groupes utilisateur de base que les utilisateurs et les paquets s'attendent à trouver sur le système.  Cela comprend des groupes comme « root », « wheel » et « users », ainsi que des groupes utilisés pour contrôler l'accès à certains périphériques, comme « audio », « disk » et « cdrom ».

note: type: defvr
en: {Scheme Variable} %base-user-accounts
fr: {Variable Scheme} %base-user-accounts

note: type: defvr
en: This is the list of basic system accounts that programs may expect to find on a GNU/Linux system, such as the ``nobody'' account.
fr: C'est la liste des compte du système de base que les programmes peuvent s'attendre à trouver sur un système GNU/Linux, comme le compte « nobody ».

note: type: defvr
en: Note that the ``root'' account is not included here.  It is a special-case and is automatically added whether or not it is specified.
fr: Remarquez que le compte « root » n'est pas défini ici.  C'est un cas particulier et il est automatiquement ajouté qu'il soit spécifié ou non.

note: type: cindex
en: keymap
fr: disposition clavier

note: type: Plain text
en: To specify what each key of your keyboard does, you need to tell the operating system what @dfn{keyboard layout} you want to use.  The default, when nothing is specified, is the US English QWERTY layout for 105-key PC keyboards.  However, German speakers will usually prefer the German QWERTZ layout, French speakers will want the AZERTY layout, and so on; hackers might prefer Dvorak or bépo, and they might even want to further customize the effect of some of the keys.  This section explains how to get that done.
fr: Pour spécifier ce que fait chaque touche de votre clavier, vous devez dire au système d'exploitation quel @dfn{disposition du clavier} vous voulez utiliser.  Par défaut, lorsque rien n'est spécifié, la disposition QWERTY pour l'anglais américain pour les claviers 105 touches est utilisée.  Cependant, les germanophones préfèrent généralement la disposition QWERTZ, les francophones la disposition AZERTY etc.@: ; les hackers peuvent préférer Dvorak ou bépo, et peuvent même vouloir personnaliser plus en détails l'effet de certaines touches.  Cette section explique comment faire cela.

note: type: cindex
en: keyboard layout, definition
fr: disposition du clavier, définition

note: type: Plain text
en: There are three components that will want to know about your keyboard layout:
fr: Il y a trois composants qui devront connaître votre disposition du clavier :

note: type: itemize
en: The @emph{bootloader} may want to know what keyboard layout you want to use (@pxref{Bootloader Configuration, @code{keyboard-layout}}).  This is useful if you want, for instance, to make sure that you can type the passphrase of your encrypted root partition using the right layout.
fr: Le @emph{chargeur d'amorçage} peut avoir besoin de connaître la disposition clavier que vous voulez utiliser (@pxref{Bootloader Configuration, @code{keyboard-layout}}).  C'est utile si vous voulez par exemple vous assurer que vous pouvez saisir la phrase de passe de votre partition racine chiffrée avec la bonne disposition.

note: type: itemize
en: The @emph{operating system kernel}, Linux, will need that so that the console is properly configured (@pxref{operating-system Reference, @code{keyboard-layout}}).
fr: Le @emph{noyau du système d'exploitation}, Linux, en aura besoin pour configurer correctement la console (@pxref{operating-system Reference, @code{keyboard-layout}}).

note: type: itemize
en: The @emph{graphical display server}, usually Xorg, also has its own idea of the keyboard layout (@pxref{X Window, @code{keyboard-layout}}).
fr: Le @emph{serveur d'affichage graphique}, habituellement Xorg, a aussi sa propre idée sur la disposition du clavier à utiliser (@pxref{X Window, @code{keyboard-layout}}).

note: type: Plain text
en: Guix allows you to configure all three separately but, fortunately, it allows you to share the same keyboard layout for all three components.
fr: Guix vous permet de configurer les trois séparément mais, heureusement, il vous permet de partager la même disposition du clavier pour chacun des trois composants.

note: type: cindex
en: XKB, keyboard layouts
fr: XKB, disposition du clavier

note: type: Plain text
en: Keyboard layouts are represented by records created by the @code{keyboard-layout} procedure of @code{(gnu system keyboard)}.  Following the X Keyboard extension (XKB), each layout has four attributes: a name (often a language code such as ``fi'' for Finnish or ``jp'' for Japanese), an optional variant name, an optional keyboard model name, and a possibly empty list of additional options.  In most cases the layout name is all you care about.
fr: Les dispositions de clavier sont représentées par des enregistrements créés par la procédure @code{keyboard-layout} de @code{(gnu system keyboard)}.  En suivant l'extension clavier de X (XKB), chaque disposition a quatre attributs : un nom (souvent un code de langue comme « fi » pour le finnois ou « jp » pour le japonais), un nom de variante facultatif, un nom de modèle de clavier facultatif et une liste éventuellement vide d'options supplémentaires.  Dans la plupart des cas, vous n'aurez besoin que du nom de la disposition.

note: type: deffn
en: {Scheme Procedure} keyboard-layout @var{name} [@var{variant}] @
fr: {Procédure Scheme} keyboard-layout @var{nom} [@var{variante}] @

note: type: deffn
en: [#:model] [#:options '()] Return a new keyboard layout with the given @var{name} and @var{variant}.
fr: [#:model] [#:options '()]
    Renvoie une nouvelle disposition de clavier avec les @var{nom} et @var{variante} donnés.

note: type: deffn
en: @var{name} must be a string such as @code{"fr"}; @var{variant} must be a string such as @code{"bepo"} or @code{"nodeadkeys"}.  See the @code{xkeyboard-config} package for valid options.
fr: @var{nom} doit être une chaine comme @code{"fr"} ; @var{variante} doit être une chaine comme @code{"bepo"} ou @code{"nodeadkeys"}.  Vois le paquet @code{xkeyboard-config} pour les options valides.

note: type: Plain text
en: Here are a few examples:
fr: Voici quelques exemples :

note: type: lisp
en: ;; The German QWERTZ layout.  Here we assume a standard
    ;; "pc105" keyboard model.
    (keyboard-layout "de")
fr: ;; La disposition QWERTZ allemande.  Ici on suppose que vous utilisez un clavier
    ;; type « pc105 » standard.
    (keyboard-layout "de")

note: type: lisp
en: ;; The bépo variant of the French layout.
    (keyboard-layout "fr" "bepo")
fr: ;; La variante bépo de la disposition française.
    (keyboard-layout "fr" "bepo")

note: type: lisp
en: ;; The Catalan layout.
    (keyboard-layout "es" "cat")
fr: ;; La disposition catalane.
    (keyboard-layout "es" "cat")

note: type: lisp
en: ;; Arabic layout with "Alt-Shift" to switch to US layout.
    (keyboard-layout "ar,us" #:options '("grp:alt_shift_toggle"))
fr: ;; Disposition du clavier en langue arabe avec « Alt-Shift » pour passer à la mise en page US.
    (keyboard-layout "ar,us" #:options '("grp:alt_shift_toggle"))

note: type: lisp
en: ;; The Latin American Spanish layout.  In addition, the
    ;; "Caps Lock" key is used as an additional "Ctrl" key,
    ;; and the "Menu" key is used as a "Compose" key to enter
    ;; accented letters.
    (keyboard-layout "latam"
                     #:options '("ctrl:nocaps" "compose:menu"))
fr: ;; La disposition espagnole américaine.  En plus, la touche
    ;; « Verr. Maj. » est utilisée comme touche « Ctrl » supplémentaire,
    ;; et la touche « Menu » est utilisée comme touche « Compose » pour
    ;; saisir des lettres accentuées.
    (keyboard-layout "latam"
                     #:options '("ctrl:nocaps" "compose:menu"))

note: type: lisp
en: ;; The Russian layout for a ThinkPad keyboard.
    (keyboard-layout "ru" #:model "thinkpad")
fr: ;; La disposition russe pour un clavier de ThinkPad.
    (keyboard-layout "ru" #:model "thinkpad")

note: type: lisp
en: ;; The "US international" layout, which is the US layout plus
    ;; dead keys to enter accented characters.  This is for an
    ;; Apple MacBook keyboard.
    (keyboard-layout "us" "intl" #:model "macbook78")
fr: ;; La disposition « US internationale », qui est comme la disposition US plus
    ;; des touches mortes pour saisir des caractères accentués.  Cet exemple est pour
    ;; un clavier de MacBook Apple.
    (keyboard-layout "us" "intl" #:model "macbook78")

note: type: Plain text
en: See the @file{share/X11/xkb} directory of the @code{xkeyboard-config} package for a complete list of supported layouts, variants, and models.
fr: Voir le répertoire @file{share/X11/xkb} du paquet @code{xkeyboard-config} pour une liste complète des disposition, des variantes et des modèles pris en charge.

note: type: cindex
en: keyboard layout, configuration
fr: disposition du clavier, configuration

note: type: Plain text
en: Let's say you want your system to use the Turkish keyboard layout throughout your system---bootloader, console, and Xorg.  Here's what your system configuration would look like:
fr: Disons que vous voulez que votre système utilise la disposition turque sur tout le système — du chargeur d'amorçage à Xorg en passant par la console.  Voici ce que votre configuration du système contiendrait :

note: type: lisp
en: ;; Using the Turkish layout for the bootloader, the console,
    ;; and for Xorg.
fr: ;; Utiliser la disposition turque pour le chargeur d'amorçage,
    ;; la console et Xorg.

note: type: lisp
en: (operating-system
      ;; ...
      (keyboard-layout (keyboard-layout "tr"))  ;for the console
      (bootloader (bootloader-configuration
                    (bootloader grub-efi-bootloader)
                    (targets '("/boot/efi"))
                    (keyboard-layout keyboard-layout))) ;for GRUB
      (services (cons (set-xorg-configuration
                        (xorg-configuration             ;for Xorg
                          (keyboard-layout keyboard-layout)))
                      %desktop-services)))
fr: (operating-system
      ;; ...
      (keyboard-layout (keyboard-layout "tr"))  ;pour la console
      (bootloader (bootloader-configuration
                    (bootloader grub-efi-bootloader)
                    (targets '("/boot/efi"))
                    (keyboard-layout keyboard-layout))) ;pour GRUB
      (services (cons (set-xorg-configuration
                        (xorg-configuration             ;pour Xorg
                          (keyboard-layout keyboard-layout)))
                      %desktop-services)))

note: type: Plain text
en: In the example above, for GRUB and for Xorg, we just refer to the @code{keyboard-layout} field defined above, but we could just as well refer to a different layout.  The @code{set-xorg-configuration} procedure communicates the desired Xorg configuration to the graphical log-in manager, by default GDM.
fr: Dans l'exemple ci-dessus, pour GRUB et pour Xorg, nous nous référons simplement au champ @code{keyboard-layout} au dessus, mais on pourrait aussi bien se référer à une autre disposition.  La procédure @code{set-xorg-configuration} communique la configuration Xorg désirée au gestionnaire de connexion, par défaut GDM.

note: type: Plain text
en: We've discussed how to specify the @emph{default} keyboard layout of your system when it starts, but you can also adjust it at run time:
fr: Nous avons discuté de la manière de spécifier la disposition du clavier @emph{par défaut} lorsque votre système démarre, mais vous pouvez aussi l'ajuster à l'exécution :

note: type: itemize
en: If you're using GNOME, its settings panel has a ``Region & Language'' entry where you can select one or more keyboard layouts.
fr: Si vous utilisez GNOME, son panneau de configuration contient une entrée « Région & Langues » où vous pouvez choisir une ou plusieurs dispositions du clavier.

note: type: itemize
en: Under Xorg, the @command{setxkbmap} command (from the same-named package)  allows you to change the current layout.  For example, this is how you would change the layout to US Dvorak:
fr: Sous Xorg, la commande @command{sexkbmap} (du paquet du même nom) vous permet de changer la disposition actuelle.  Par exemple, voilà comment changer la disposition pour un Dvorak américain :

note: type: itemize
en: The @code{loadkeys} command changes the keyboard layout in effect in the Linux console.  However, note that @code{loadkeys} does @emph{not} use the XKB keyboard layout categorization described above.  The command below loads the French bépo layout:
fr: La commande @code{loadkey} change la disposition du clavier dans la console Linux.  Cependant, remarque que @code{loadkeys} n'utilise @emph{pas} la catégorisation des dispositions XKB décrite plus haut.  La commande suivante charge la disposition bépo française :

note: type: cindex
en: locale
fr: paramètres linguistiques

note: type: Plain text
en: A @dfn{locale} defines cultural conventions for a particular language and region of the world (@pxref{Locales,,, libc, The GNU C Library Reference Manual}).  Each locale has a name that typically has the form @code{@var{language}_@var{territory}.@var{codeset}}---e.g., @code{fr_LU.utf8} designates the locale for the French language, with cultural conventions from Luxembourg, and using the UTF-8 encoding.
fr: Un @dfn{paramètre linguistique} définie les conventions culturelles d'une langue et d'une région particulières (@pxref{Locales,,, libc, The GNU C Library Reference Manual}).  Chaque paramètre linguistique a un nom de la forme @code{@var{langue}_@var{territoire}.@var{jeudecaractères}} — p.@: ex.@: @code{fr_LU.utf8} désigne le paramètre linguistique pour le français, avec les conventions culturelles du Luxembourg, en utilisant l'encodage UTF-8.

note: type: cindex
en: locale definition
fr: définition des paramètres linguistiques

note: type: Plain text
en: Usually, you will want to specify the default locale for the machine using the @code{locale} field of the @code{operating-system} declaration (@pxref{operating-system Reference, @code{locale}}).
fr: Normalement, vous voudrez spécifier les paramètres linguistiques par défaut pour la machine en utilisant le champ @code{locale} de la déclaration @code{operating-system} (@pxref{operating-system Reference, @code{locale}}).

note: type: Plain text
en: The selected locale is automatically added to the @dfn{locale definitions} known to the system if needed, with its codeset inferred from its name---e.g., @code{bo_CN.utf8} will be assumed to use the @code{UTF-8} codeset.  Additional locale definitions can be specified in the @code{locale-definitions} slot of @code{operating-system}---this is useful, for instance, if the codeset could not be inferred from the locale name.  The default set of locale definitions includes some widely used locales, but not all the available locales, in order to save space.
fr: Les paramètres régionaux choisis sont automatiquement ajoutés aux définitions des @dfn{paramètres régionaux} connues par le système au besoin, avec le jeu de caractères inféré à partir de son nom, p.@: ex.@: @code{bo_CN.utf8} supposera qu'il faut utiliser le jeu de caractères @code{UTF-8}.  Des définitions supplémentaires peuvent être spécifiées dans le champ @code{locale-definitions} de @code{operating-system} — c'est utile par exemple si le jeu de caractères n'a pas été inféré à partir du nom.  L'ensemble par défaut de définitions comprend certains paramètres linguistiques parmi les plus utilisés, mais pas toutes les variantes disponibles, pour gagner de la place.

note: type: Plain text
en: For instance, to add the North Frisian locale for Germany, the value of that field may be:
fr: Par exemple, pour ajouter les paramètres pour le frison septentrional en Allemagne, la valeur de ce champ serait :

note: type: Plain text
en: Likewise, to save space, one might want @code{locale-definitions} to list only the locales that are actually used, as in:
fr: De me, pour gagner de la place, on peut vouloir lister dans @code{locale-definitions} seulement les paramètres qui sont vraiment utilisés, comme dans :

note: type: Plain text
en: The compiled locale definitions are available at @file{/run/current-system/locale/X.Y}, where @code{X.Y} is the libc version, which is the default location where the GNU@tie{}libc provided by Guix looks for locale data.  This can be overridden using the @env{LOCPATH} environment variable (@pxref{locales-and-locpath, @env{LOCPATH} and locale packages}).
fr: Les définitions compilées de locale sont disponibles à @file{/run/current-system/locale/X.Y}, où @code{X.Y} est la version de la libc, qui est l'emplacement par défaut où la GNU@tie{}libc fournie par Guix recherche les données locales.  Il est possible d'y remédier en utilisant la variable d'environnement @env{LOCPATH} (@pxref{locales-and-locpath, @env{LOCPATH} et les paquets locaux}).

note: type: Plain text
en: The @code{locale-definition} form is provided by the @code{(gnu system locale)} module.  Details are given below.
fr: La forme @code{locale-definition} est fournie par le module @code{(gnu system locale)}.  Des détails sont disponibles plus bas.

note: type: deftp
en: {Data Type} locale-definition
fr: {Type de données} locale-definition

note: type: deftp
en: This is the data type of a locale definition.
fr: C'est le type de données d'une définition de paramètres linguistiques.

note: type: table
en: The name of the locale.  @xref{Locale Names,,, libc, The GNU C Library Reference Manual}, for more information on locale names.
fr: Le nom du paramètre linguistique.   @xref{Locale Names,,, libc, The GNU C Library Reference Manual}, pour en savoir plus sur les noms de paramètres linguistiques.

note: type: table
en: The name of the source for that locale.  This is typically the @code{@var{language}_@var{territory}} part of the locale name.
fr: Le nom de la source pour ce paramètre linguistique.  C'est typiquement la partie @code{@var{langue}_@var{territoire}} du nom du paramètre.

note: type: item
en: @code{charset} (default: @code{"UTF-8"})
fr: @code{charset} (par défaut : @code{"UTF-8"})

note: type: table
en: The ``character set'' or ``code set'' for that locale, @uref{https://www.iana.org/assignments/character-sets, as defined by IANA}.
fr: Le « jeu de caractères » d'un paramètre linguistique, @uref{https://www.iana.org/assignments/character-sets, défini par l'IANA}.

note: type: defvr
en: {Scheme Variable} %default-locale-definitions
fr: {Variable Scheme} %default-locale-definitions

note: type: defvr
en: A list of commonly used UTF-8 locales, used as the default value of the @code{locale-definitions} field of @code{operating-system} declarations.
fr: Une liste des paramètres linguistiques UTF-8 couramment utilisés, utilisée comme valeur par défaut pour le champ @code{locale-definitions} des déclarations @code{operating-system}.

note: type: cindex
en: locale name
fr: nom de paramètre linguistique

note: type: cindex
en: normalized codeset in locale names
fr: jeu de caractère normalisé dans les noms de paramètres linguistiques

note: type: defvr
en: These locale definitions use the @dfn{normalized codeset} for the part that follows the dot in the name (@pxref{Using gettextized software, normalized codeset,, libc, The GNU C Library Reference Manual}).  So for instance it has @code{uk_UA.utf8} but @emph{not}, say, @code{uk_UA.UTF-8}.
fr: Ces définitions de paramètres linguistiques utilisent le @dfn{jeu de caractère normalisé} pour la partie qui suit le point dans le nom (@pxref{Using gettextized software, normalized codeset,, libc, The GNU C Library Reference Manual}).  Donc par exemple il y a @code{uk_UA.utf8} mais @emph{pas}, disons, @code{uk_UA.UTF-8}.

note: type: subsection
en: Locale Data Compatibility Considerations
fr: Considérations sur la compatibilité des données linguistiques

note: type: cindex
en: incompatibility, of locale data
fr: incompatibilité, des données linguistiques

note: type: Plain text
en: @code{operating-system} declarations provide a @code{locale-libcs} field to specify the GNU@tie{}libc packages that are used to compile locale declarations (@pxref{operating-system Reference}).  ``Why would I care?'', you may ask.  Well, it turns out that the binary format of locale data is occasionally incompatible from one libc version to another.
fr: Les déclaration @code{operating-system} fournissent un champ @code{locale-libcs} pour spécifier les paquets GNU@tie{}libc à utiliser pour compiler les déclarations de paramètres linguistiques (@pxref{operating-system Reference}).  « Pourquoi je devrais m'en soucier ? », vous demandez-vous sûrement.  Hé bien il se trouve que le format binaire des données linguistique est parfois incompatible d'une version de la libc à une autre.

note: type: Plain text
en: For instance, a program linked against libc version 2.21 is unable to read locale data produced with libc 2.22; worse, that program @emph{aborts} instead of simply ignoring the incompatible locale data@footnote{Versions 2.23 and later of GNU@tie{}libc will simply skip the incompatible locale data, which is already an improvement.}.  Similarly, a program linked against libc 2.22 can read most, but not all, of the locale data from libc 2.21 (specifically, @env{LC_COLLATE} data is incompatible); thus calls to @code{setlocale} may fail, but programs will not abort.
fr: Par exemple, un programme lié à la version 2.21 de la libc est incapable de lire les données locales produites avec la libc 2.22 ; pire encore, ce programme @emph{aborts} au lieu d'ignorer simplement les données locales incompatibles@footnote{Versions 2.23 et suivantes de GNU@tie{}libc ignorera simplement les données locales incompatibles, ce qui est déjà une amélioration.}.  De même, un programme lié à la libc 2.22 peut lire la plupart des données locales de la libc 2.21, mais pas toutes (en particulier, les données @env{LC_COLLATE} sont incompatibles) ; ainsi, les appels à @code{setlocale} peuvent échouer, mais les programmes ne s'arrêteront pas.

note: type: Plain text
en: The ``problem'' with Guix is that users have a lot of freedom: They can choose whether and when to upgrade software in their profiles, and might be using a libc version different from the one the system administrator used to build the system-wide locale data.
fr: Le « problème » avec Guix c'est que les utilisateurs ont beaucoup de liberté : ils peuvent choisir s'ils veulent et quand ils veulent mettre à jour les logiciels de leur profil, et peuvent utiliser une version différente de la libc de celle que l'administrateur système utilise pour construire les données linguistiques du système global.

note: type: Plain text
en: Fortunately, unprivileged users can also install their own locale data and define @env{GUIX_LOCPATH} accordingly (@pxref{locales-and-locpath, @env{GUIX_LOCPATH} and locale packages}).
fr: Heureusement, les utilisateur·rice·s non privilégié·e·s peuvent aussi installer leurs propres données linguistiques et définir @var{GUIX_LOCPATH} comme il le faut (@pxref{locales-and-locpath, @code{GUIX_LOCPATH} and locale packages}).

note: type: Plain text
en: Still, it is best if the system-wide locale data at @file{/run/current-system/locale} is built for all the libc versions actually in use on the system, so that all the programs can access it---this is especially crucial on a multi-user system.  To do that, the administrator can specify several libc packages in the @code{locale-libcs} field of @code{operating-system}:
fr: Cependant, c'est encore mieux si les données linguistiques du système dans @file{/run/current-system/locale} étaient construites avec les versions de la libc utilisées sur le système, pour que tous les programmes puissent y accéder — c'est surtout crucial sur un système multi-utilisateurs.  Pour cela, l'administrateur peut spécifier plusieurs paquets de la libc dans le champ @code{locale-libcs} de @code{operating-system} :

note: type: Plain text
en: This example would lead to a system containing locale definitions for both libc 2.21 and the current version of libc in @file{/run/current-system/locale}.
fr: Cet exemple créera un système contenant les définitions des paramètres linguistiques pour la libc 2.21 et pour la version actuelle de la libc dans @file{/run/current-system/locale}.

note: type: cindex
en: system services
fr: services systèmes

note: type: Plain text
en: An important part of preparing an @code{operating-system} declaration is listing @dfn{system services} and their configuration (@pxref{Using the Configuration System}).  System services are typically daemons launched when the system boots, or other actions needed at that time---e.g., configuring network access.
fr: Une part importante de la préparation d'une déclaration @code{operating-system} est la liste des @dfn{services systèmes} et de leur configuration (@pxref{Using the Configuration System}).  Les services systèmes sont typiquement des démons lancés au démarrage ou d'autres actions requises à ce moment-là — p.@: ex.@: configurer les accès réseaux.

note: type: Plain text
en: Guix has a broad definition of ``service'' (@pxref{Service Composition}), but many services are managed by the GNU@tie{}Shepherd (@pxref{Shepherd Services}).  On a running system, the @command{herd} command allows you to list the available services, show their status, start and stop them, or do other specific operations (@pxref{Jump Start,,, shepherd, The GNU Shepherd Manual}).  For example:
fr: Guix a une définition large de « service » (@pxref{Service Composition}), mais beaucoup de services sont gérés par le GNU@tie{}Shepherd (@pxref{Shepherd Services}).  Sur un système lancé, la commande @command{herd} vous permet de lister les services disponibles, montrer leur statut, les démarrer et les arrêter, ou faire d'autres opérations spécifiques (@pxref{Jump Start,,, shepherd, The GNU Shepherd Manual}).  Par exemple :

note: type: Plain text
en: The above command, run as @code{root}, lists the currently defined services.  The @command{herd doc} command shows a synopsis of the given service and its associated actions:
fr: La commande ci-dessus, lancée en @code{root}, liste les services actuellement définis.  La commande @command{herd doc} montre un synopsis du service donné et ses actions associées :

note: type: Plain text
en: The @command{start}, @command{stop}, and @command{restart} sub-commands have the effect you would expect.  For instance, the commands below stop the nscd service and restart the Xorg display server:
fr: Les sous-commandes @command{start}, @command{stop} et @command{restart} ont l'effet auquel on s'attend.  Par exemple, les commande suivantes stoppent le service nscd et redémarrent le serveur d'affichage Xorg :

note: type: cindex
en: configuration, action for shepherd services
fr: configuration, action des services Shepherd

note: type: cindex
en: configuration file, of a shepherd service
fr: fichier de configuration, d'un service Shepherd

note: type: Plain text
en: For some services, @command{herd configuration} returns the name of the service's configuration file, which can be handy to inspect its configuration:
fr: Pour certains services, @command{herd configuraiton} renvoie le nom du fichier de configuration du service, ce qui peut être pratique pour inspecter sa configuration :

note: type: Plain text
en: The following sections document the available services, starting with the core services, that may be used in an @code{operating-system} declaration.
fr: Les sections suivantes documentent les services disponibles, en commençant par les services de base qui peuvent être utilisés avec une déclaration @code{operating-system}.

note: type: subsection
en: File-Sharing Services
fr: Services de partage de fichiers

note: type: menuentry
en: File-sharing services.
fr: Services de partage de fichiers.

note: type: subsection
en: VNC Services
fr: Services VNC

note: type: menuentry
en: VNC daemons.
fr: Démons VNC.

note: type: Plain text
en: The @code{(gnu services base)} module provides definitions for the basic services that one expects from the system.  The services exported by this module are listed below.
fr: Le module @code{(gnu services base)} fournit des définitions de services pour les services de base qu'on peut attendre du système.  Les services exportés par ce module sort listés ci-dessous.

note: type: defvr
en: {Scheme Variable} %base-services
fr: {Variable Scheme} %base-services

note: type: defvr
en: This variable contains a list of basic services (@pxref{Service Types and Services}, for more information on service objects) one would expect from the system: a login service (mingetty) on each tty, syslogd, the libc name service cache daemon (nscd), the udev device manager, and more.
fr: Cette variable contient une liste de services de base (@pxref{Service Types and Services}, pour plus d'informations sur les objets service) qu'on peut attendre du système : un service de connexion (mingetty) sur chaque tty, syslogd, le démon de cache de noms de la libc (nscd), le gestionnaire de périphériques udev, et plus.

note: type: defvr
en: This is the default value of the @code{services} field of @code{operating-system} declarations.  Usually, when customizing a system, you will want to append services to @code{%base-services}, like this:
fr: C'est la valeur par défaut du champ @code{services} des déclarations @code{operating-system}.  Habituellement, lors de la personnalisation d'un système, vous voudrez ajouter des services à ceux de @code{%base-services}, comme ceci :

note: type: defvr
en: {Scheme Variable} special-files-service-type
fr: {Variable Scheme} special-files-service-type

note: type: defvr
en: This is the service that sets up ``special files'' such as @file{/bin/sh}; an instance of it is part of @code{%base-services}.
fr: C'est le service qui met en place des « fichiers spéciaux » comme @file{/bin/sh} ; une instance de ce service fait partie de @code{%base-services}.

note: type: defvr
en: The value associated with @code{special-files-service-type} services must be a list of tuples where the first element is the ``special file'' and the second element is its target.  By default it is:
fr: La valeur associée avec les services @code{special-files-service-type} doit être une liste de couples dont le premier élément est le « fichier spécial » et le deuxième sa cible.  Par défaut il s'agit de :

note: type: cindex
en: @file{sh}, in @file{/bin}
fr: @file{sh}, dans @file{/bin}

note: type: cindex
en: @file{env}, in @file{/usr/bin}
fr: @file{env}, dans @file{/usr/bin}

note: type: defvr
en: If you want to add, say, @code{/bin/bash} to your system, you can change it to:
fr: Si vous voulez ajouter, disons, @code{/bin/bash} à votre système, vous pouvez changer cela en :

note: type: defvr
en: Since this is part of @code{%base-services}, you can use @code{modify-services} to customize the set of special files (@pxref{Service Reference, @code{modify-services}}).  But the simple way to add a special file is @i{via} the @code{extra-special-file} procedure (see below).
fr: Comme cela fait partie de @code{%base-services}, vous pouvez utiliser @code{modify-services} pour personnaliser l'ensemble des fichiers spéciaux (@pxref{Service Reference, @code{modify-services}}).  Mais la manière la plus simple d'ajouter un fichier spécial est @i{via} la procédure @code{extra-special-file} (voir ci-dessous).

note: type: deffn
en: {Scheme Procedure} extra-special-file @var{file} @var{target}
fr: {Procédure Scheme} extra-special-file @var{file} @var{target}

note: type: deffn
en: Use @var{target} as the ``special file'' @var{file}.
fr: Utilise @var{target} comme « fichier spécial » @var{file}.

note: type: deffn
en: For example, adding the following lines to the @code{services} field of your operating system declaration leads to a @file{/usr/bin/env} symlink:
fr: Par exemple, ajouter l'une des lignes suivantes au champ @code{services} de votre déclaration de système d'exploitation crée un lien symbolique @file{/usr/bin/env} :

note: type: deffn
en: {Scheme Procedure} host-name-service @var{name}
fr: {Procédure Scheme} host-name-service @var{name}

note: type: deffn
en: Return a service that sets the host name to @var{name}.
fr: Renvoie un service qui paramètre le nom d'hôte à @var{name}.

note: type: defvr
en: {Scheme Variable} console-font-service-type
fr: {Variable Scheme} console-font-service-type

note: type: defvr
en: Install the given fonts on the specified ttys (fonts are per virtual console on the kernel Linux).  The value of this service is a list of tty/font pairs.  The font can be the name of a font provided by the @code{kbd} package or any valid argument to @command{setfont}, as in this example:
fr: Installez les polices données sur les ttys spécifiés (les polices sont par console virtuelle sur le noyau Linux).  La valeur de ce service est une liste de paires tty/polices.  La police peut être le nom d'une police fournie par le paquet @code{kbd} ou tout argument valide de @command{setfont}, comme dans cet exemple :

note: type: lisp
en: `(("tty1" . "LatGrkCyr-8x16")
      ("tty2" . ,(file-append
                    font-tamzen
                    "/share/kbd/consolefonts/TamzenForPowerline10x20.psf"))
      ("tty3" . ,(file-append
                    font-terminus
                    "/share/consolefonts/ter-132n"))) ; for HDPI
fr: `(("tty1" . "LatGrkCyr-8x16")
      ("tty2" . ,(file-append
                    font-tamzen
                    "/share/kbd/consolefonts/TamzenForPowerline10x20.psf"))
      ("tty3" . ,(file-append
                    font-terminus
                    "/share/consolefonts/ter-132n"))) ; pour HDPI

note: type: deffn
en: {Scheme Procedure} login-service @var{config}
fr: {Procédure Scheme} login-service @var{config}

note: type: deffn
en: Return a service to run login according to @var{config}, a @code{<login-configuration>} object, which specifies the message of the day, among other things.
fr: Renvoie un service pour lancer login en suivant @var{config}, un objet @code{<login-configuration>} qui spécifie le message du jour, entre autres choses.

note: type: deftp
en: {Data Type} login-configuration
fr: {Type de données} login-configuration

note: type: deftp
en: This is the data type representing the configuration of login.
fr: Le type de données qui représente la configuration de login.

note: type: cindex
en: message of the day
fr: message du jour

note: type: table
en: A file-like object containing the ``message of the day''.
fr: Un objet simili-fichier contenant le « message du jour ».

note: type: item
en: @code{allow-empty-passwords?} (default: @code{#t})
fr: @code{allow-empty-passwords?} (par défaut : @code{#t})

note: type: table
en: Allow empty passwords by default so that first-time users can log in when the 'root' account has just been created.
fr: Permet les mots de passes vides par défaut pour que les utilisateurs puissent se connecter au compte « root » la première fois après sa création.

note: type: deffn
en: {Scheme Procedure} mingetty-service @var{config}
fr: {Procédure Scheme} mingetty-service @var{config}

note: type: deffn
en: Return a service to run mingetty according to @var{config}, a @code{<mingetty-configuration>} object, which specifies the tty to run, among other things.
fr: Renvoie un service qui lance mingetty en suivant @var{config}, un objet @code{<mingetty-configuration>}, qui spécifie le tty à lancer entre autres choses.

note: type: deftp
en: {Data Type} mingetty-configuration
fr: {Type de données} mingetty-configuration

note: type: deftp
en: This is the data type representing the configuration of Mingetty, which provides the default implementation of virtual console log-in.
fr: C'est le type de données représentant la configuration de Mingetty, qui fournit l'implémentation par défaut de l'écran de connexion des consoles virtuelles.

note: type: table
en: The name of the console this Mingetty runs on---e.g., @code{"tty1"}.
fr: Le nom de la console sur laquelle tourne ce Mingetty, p.@: ex.@: @code{"tty1"}.

note: type: item
en: @code{auto-login} (default: @code{#f})
fr: @code{auto-login} (par défaut : @code{#f})

note: type: table
en: When true, this field must be a string denoting the user name under which the system automatically logs in.  When it is @code{#f}, a user name and password must be entered to log in.
fr: Lorsque la valeur est vraie, ce champ doit être une chaîne de caractère dénotant le nom d'utilisateur pour lequel le système se connecte automatiquement.  Lorsque la valeur est @code{#f}, il faut entrer un nom d'utilisateur et un mot de passe pour se connecter.

note: type: item
en: @code{login-program} (default: @code{#f})
fr: @code{login-program} (par défaut : @code{#f})

note: type: table
en: This must be either @code{#f}, in which case the default log-in program is used (@command{login} from the Shadow tool suite), or a gexp denoting the name of the log-in program.
fr: Ce doit être soit @code{#f}, auquel cas le programme de connexion par défaut est utilisé (@command{login} de la suite d'outils Shadow), soit une gexp dénotant le nom d'un programme de connexion.

note: type: item
en: @code{login-pause?} (default: @code{#f})
fr: @code{login-pause?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t} in conjunction with @var{auto-login}, the user will have to press a key before the log-in shell is launched.
fr: Lorsque la valeur est @code{#t} en plus de @var{auto-login}, l'utilisateur devrai appuyer sur une touche avant que le shell de connexion ne soit lancé.

note: type: item
en: @code{clear-on-logout?} (default: @code{#t})
fr: @code{clear-on-logout?} (par défaut : @code{#t})

note: type: table
en: When set to @code{#t}, the screen will be cleared after logout.
fr: Lorsque la valeur est @code{#t}, l'écran sera nettoyé après la déconnexion.

note: type: item
en: @code{mingetty} (default: @var{mingetty})
fr: @code{mingetty} (par défaut : @var{mingetty})

note: type: table
en: The Mingetty package to use.
fr: Le paquet Mingetty à utiliser.

note: type: deffn
en: {Scheme Procedure} agetty-service @var{config}
fr: {Procédure Scheme} agetty-service @var{config}

note: type: deffn
en: Return a service to run agetty according to @var{config}, an @code{<agetty-configuration>} object, which specifies the tty to run, among other things.
fr: Renvoie un service pour lancer agetty en suivant @var{config}, un objet @code{<agetty-configuration>}, qui spécifie le tty à lancer, entre autres choses.

note: type: deftp
en: {Data Type} agetty-configuration
fr: {Type de données} agetty-configuration

note: type: deftp
en: This is the data type representing the configuration of agetty, which implements virtual and serial console log-in.  See the @code{agetty(8)} man page for more information.
fr: Ce type de données représente la configuration de agetty, qui implémente l'écran de connexion des consoles virtuelles et series.  Voir la page de manuel de @code{agetty(8)} pour plus d'informations.

note: type: table
en: The name of the console this agetty runs on, as a string---e.g., @code{"ttyS0"}.  This argument is optional, it will default to a reasonable default serial port used by the kernel Linux.
fr: Le nom de la console sur laquelle cet agetty fonctionne, sous forme de chaîne de caractères, par exemple @code{"ttyS0"}.  Cet argument est optionnel, il sera par défaut un port série raisonnable par défaut utilisé par le noyau Linux.

note: type: table
en: For this, if there is a value for an option @code{agetty.tty} in the kernel command line, agetty will extract the device name of the serial port from it and use that.
fr: Pour cela, s'il y a une valeur pour une option @code{agetty.tty} sur la ligne de commande du noyau, agetty extraira le nom du périphérique du port série à partir de cette option.

note: type: table
en: If not and if there is a value for an option @code{console} with a tty in the Linux command line, agetty will extract the device name of the serial port from it and use that.
fr: Sinon et s'il y a une valeur pour une option @code{console} avec un tty sur la ligne de commande du noyau Linux, agetty extraira le nom du périphérique du port série et l'utilisera.

note: type: table
en: In both cases, agetty will leave the other serial device settings (baud rate etc.)@: alone---in the hope that Linux pinned them to the correct values.
fr: Dans les deux cas, agetty laissera les autres paramètres du périphérique série (baud, etc.) sans y toucher — dans l'espoir que Linux leur a assigné les bonnes valeurs.

note: type: item
en: @code{baud-rate} (default: @code{#f})
fr: @code{baud-rate} (par défaut : @code{#f})

note: type: table
en: A string containing a comma-separated list of one or more baud rates, in descending order.
fr: Une chaîne qui contient une liste d'un ou plusieurs taux de baud séparés par des virgules, en ordre décroissant.

note: type: item
en: @code{term} (default: @code{#f})
fr: @code{term} (par défaut : @code{#f})

note: type: table
en: A string containing the value used for the @env{TERM} environment variable.
fr: Une chaîne de caractères contenant la valeur utilisée pour la variable d'environnement @env{TERM}.

note: type: item
en: @code{eight-bits?} (default: @code{#f})
fr: @code{eight-bits?} (par défaut : @code{#f})

note: type: table
en: When @code{#t}, the tty is assumed to be 8-bit clean, and parity detection is disabled.
fr: Lorsque la valeur est @code{#t}, le tty est supposé être propre pour les caractères 8-bit et la détection de parité est désactivée.

note: type: table
en: When passed a login name, as a string, the specified user will be logged in automatically without prompting for their login name or password.
fr: Lorsqu'un nom de connexion est passé comme une chaîne de caractères, l'utilisateur spécifié sera automatiquement connecté sans demande du nom d'utilisateur ni du mot de passe.

note: type: item
en: @code{no-reset?} (default: @code{#f})
fr: @code{no-reset?} (par défaut : @code{#f})

note: type: table
en: When @code{#t}, don't reset terminal cflags (control modes).
fr: Lorsque la valeur est @code{#t}, ne vide pas les cflags du terminal (modes de contrôle).

note: type: item
en: @code{host} (default: @code{#f})
fr: @code{host} (par défaut : @code{#f})

note: type: table
en: This accepts a string containing the ``login_host'', which will be written into the @file{/var/run/utmpx} file.
fr: Ceci accepte une chaîne de caractères contenant le "login_host", qui sera écrite dans le fichier @file{/var/run/utmpx}.

note: type: item
en: @code{remote?} (default: @code{#f})
fr: @code{remote?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t} in conjunction with @var{host}, this will add an @code{-r} fakehost option to the command line of the login program specified in @var{login-program}.
fr: Lorsque la valeur est @code{#t} en plus de @var{host}, cette option ajoutera une option fakehost @code{-r} à la ligne de commande du programme de connexion spécifié dans @var{login-program}.

note: type: item
en: @code{flow-control?} (default: @code{#f})
fr: @code{flow-control?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, enable hardware (RTS/CTS) flow control.
fr: Lorsque la valeur est @code{#t}, active le contrôle de flux matériel (RTS/CTS).

note: type: item
en: @code{no-issue?} (default: @code{#f})
fr: @code{no-issue?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, the contents of the @file{/etc/issue} file will not be displayed before presenting the login prompt.
fr: Lorsque la valeur est @code{#t}, le contenu du fichier @file{/etc/issue} ne sera pas affiché avant de présenter l'écran de connexion.

note: type: item
en: @code{init-string} (default: @code{#f})
fr: @code{init-string} (par défaut : @code{#f})

note: type: table
en: This accepts a string that will be sent to the tty or modem before sending anything else.  It can be used to initialize a modem.
fr: Cette option accepte une chaîne de caractères qui sera envoyée au tty ou au modem avant toute autre chose.  Elle peut être utilisée pour initialiser un modem.

note: type: item
en: @code{no-clear?} (default: @code{#f})
fr: @code{no-clear?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, agetty will not clear the screen before showing the login prompt.
fr: Lorsque la valeur est @code{#t}, agetty ne nettoiera pas l'écran avant de montrer l'écran de connexion.

note: type: item
en: @code{login-program} (default: (file-append shadow "/bin/login"))
fr: @code{login-program} (par défaut : (file-append shadow "/bin/login"))

note: type: table
en: This must be either a gexp denoting the name of a log-in program, or unset, in which case the default value is the @command{login} from the Shadow tool suite.
fr: Cette option doit être soit une gexp dénotant le nom d'un programme de connexion, soit non définie, auquel cas la valeur par défaut est la commande @command{login} de la suite d'outils Shadow.

note: type: item
en: @code{local-line} (default: @code{#f})
fr: @code{local-line} (par défaut : @code{#f})

note: type: table
en: Control the CLOCAL line flag.  This accepts one of three symbols as arguments, @code{'auto}, @code{'always}, or @code{'never}.  If @code{#f}, the default value chosen by agetty is @code{'auto}.
fr: Contrôle le drapeau CLOCAL.  Cette option accepte l'un des trois symboles comme argument, @code{'auto}, @code{'always} ou @code{'never}.  Si la valeur est @code{#f}, la valeur par défaut choisie par agetty est @code{'auto}.

note: type: item
en: @code{extract-baud?} (default: @code{#f})
fr: @code{extract-baud?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, instruct agetty to try to extract the baud rate from the status messages produced by certain types of modems.
fr: Lorsque la valeur est @code{#t}, dit à agetty d'essayer d'extraire la taux de baud depuis les messages de statut produits par certains modems.

note: type: item
en: @code{skip-login?} (default: @code{#f})
fr: @code{skip-login?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, do not prompt the user for a login name.  This can be used with @var{login-program} field to use non-standard login systems.
fr: Lorsque la valeur est @code{#t}, ne demande par de nom d'utilisateur.  Elle peut être utilisée avec le champ @var{login-program} pour utiliser des systèmes de connexion non standards.

note: type: item
en: @code{no-newline?} (default: @code{#f})
fr: @code{no-newline?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, do not print a newline before printing the @file{/etc/issue} file.
fr: Lorsque la valeur est @code{#t}, n'affiche pas de retour à la ligne avant d'afficher le fichier @file{/etc/issue}.

note: type: item
en: @code{login-options} (default: @code{#f})
fr: @code{login-options} (par défaut : @code{#f})

note: type: table
en: This option accepts a string containing options that are passed to the login program.  When used with the @var{login-program}, be aware that a malicious user could try to enter a login name containing embedded options that could be parsed by the login program.
fr: Cette option accepte une chaîne de caractères contenant des options passées au programme login.  Lorsqu'utilisé avec @var{login-program}, soyez conscient qu'un utilisateur malicieux pourrait essayer de rentrer un nom d'utilisateur contenant des options incluses qui pourraient être analysées par le programme de connexion.

note: type: item
en: @code{login-pause} (default: @code{#f})
fr: @code{login-pause} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, wait for any key before showing the login prompt.  This can be used in conjunction with @var{auto-login} to save memory by lazily spawning shells.
fr: Lorsque la valeur est @code{#t}, attend qu'une touche soit appuyée avant de montrer l'écran de connexion.  Cela peut être utilisé avec @var{auto-login} pour sauvegarder de la mémoire en lançant les shells de manière fainéante.

note: type: item
en: @code{chroot} (default: @code{#f})
fr: @code{chroot} (par défaut : @code{#f})

note: type: table
en: Change root to the specified directory.  This option accepts a directory path as a string.
fr: Change de racine dans le répertoire donné.  Cette option accepte un chemin en tant que chaîne de caractères.

note: type: item
en: @code{hangup?} (default: @code{#f})
fr: @code{hangup?} (par défaut : @code{#f})

note: type: table
en: Use the Linux system call @code{vhangup} to do a virtual hangup of the specified terminal.
fr: Utilise l'appel système Linux @code{vhangup} pour raccrocher virtuellement le terminal spécifié.

note: type: item
en: @code{keep-baud?} (default: @code{#f})
fr: @code{keep-baud?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, try to keep the existing baud rate.  The baud rates from @var{baud-rate} are used when agetty receives a @key{BREAK} character.
fr: Lorsque la valeur est @code{#t}, essaye de garder le taux de baud existant.  Les taux de baud de @var{baud-rate} sont utilisés lorsque agetty reçoit un caractères @key{BREAK}.

note: type: item
en: @code{timeout} (default: @code{#f})
fr: @code{timeout} (par défaut : @code{#f})

note: type: table
en: When set to an integer value, terminate if no user name could be read within @var{timeout} seconds.
fr: Lorsque la valeur est un nombre entier, termine la session si aucun nom d'utilisateur n'a pu être lu après @var{timeout} secondes.

note: type: item
en: @code{detect-case?} (default: @code{#f})
fr: @code{detect-case?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, turn on support for detecting an uppercase-only terminal.  This setting will detect a login name containing only uppercase letters as indicating an uppercase-only terminal and turn on some upper-to-lower case conversions.  Note that this will not support Unicode characters.
fr: Lorsque la valeur est @code{#t}, active le support pour la détection des terminaux en majuscule uniquement.  Ce paramètre détectera qu'un nom d'utilisateur qui ne contient que des majuscules indique un terminal en majuscule et effectuera des conversion de majuscule en minuscule.  Remarquez que cela ne fonctionne pas avec les caractères unicode.

note: type: item
en: @code{wait-cr?} (default: @code{#f})
fr: @code{wait-cr?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, wait for the user or modem to send a carriage-return or linefeed character before displaying @file{/etc/issue} or login prompt.  This is typically used with the @var{init-string} option.
fr: Lorsque la valeur est @code{#t}, attend que l'utilisateur ou le modem envoie un retour chariot ou un saut de ligne avant d'afficher @file{/etc/issue} ou l'écran de connexion.  Cela est typiquement utilisé avec l'option @var{init-string}.

note: type: item
en: @code{no-hints?} (default: @code{#f})
fr: @code{no-hints?} (par défaut : @code{#f})

note: type: table
en: When set to @code{#t}, do not print hints about Num, Caps, and Scroll locks.
fr: Lorsque la valeur est @code{#t}, n'affiche par les astuces à propos des verrouillages numériques, majuscule et défilement.

note: type: item
en: @code{no-hostname?} (default: @code{#f})
fr: @code{no-hostname?} (par défaut : @code{#f})

note: type: table
en: By default, the hostname is printed.  When this option is set to @code{#t}, no hostname will be shown at all.
fr: Par défaut, le nom d'hôte est affiché.  Lorsque la valeur est @code{#t}, aucun nom d'hôte ne sera affiché.

note: type: item
en: @code{long-hostname?} (default: @code{#f})
fr: @code{long-hostname?} (par défaut : @code{#f})

note: type: table
en: By default, the hostname is only printed until the first dot.  When this option is set to @code{#t}, the fully qualified hostname by @code{gethostname} or @code{getaddrinfo} is shown.
fr: Par défaut, le nom d'hôte n'est affiché qu'après le premier point.  Lorsque la valeur est @code{#t}, le nom d'hôte pleinement qualifié renvoyé par @code{gethostname} ou @code{getaddrinfo} sera affiché.

note: type: item
en: @code{erase-characters} (default: @code{#f})
fr: @code{erase-characters} (par défaut : @code{#f})

note: type: table
en: This option accepts a string of additional characters that should be interpreted as backspace when the user types their login name.
fr: Cette option accepte une chaîne de caractères de caractères supplémentaires qui devraient être interprétés comme des effacements lorsque l'utilisateur les tape dans leur nom d'utilisateur.

note: type: item
en: @code{kill-characters} (default: @code{#f})
fr: @code{kill-characters} (par défaut : @code{#f})

note: type: table
en: This option accepts a string that should be interpreted to mean ``ignore all previous characters'' (also called a ``kill'' character) when the user types their login name.
fr: Cette option accepte une chaîne de caractères qui devrait être interprétée comme signifiant « ignore tous les caractères précédents » (aussi appelé un caractère « kill ») lorsque l'utilisateur·rice tape son nom d'utilisateur·rice.

note: type: item
en: @code{chdir} (default: @code{#f})
fr: @code{chdir} (par défaut : @code{#f})

note: type: table
en: This option accepts, as a string, a directory path that will be changed to before login.
fr: Cette option accepte, en tant que chaîne de caractères, un chemin vers un répertoire dans lequel se trouvera la commande avant la connexion.

note: type: item
en: @code{delay} (default: @code{#f})
fr: @code{delay} (par défaut : @code{#f})

note: type: table
en: This options accepts, as an integer, the number of seconds to sleep before opening the tty and displaying the login prompt.
fr: Cette option accepte, en tant qu'entier, le nombre de secondes à attendre avant d'ouvrir le tty et afficher l'écran de connexion.

note: type: item
en: @code{nice} (default: @code{#f})
fr: @code{nice} (par défaut : @code{#f})

note: type: table
en: This option accepts, as an integer, the nice value with which to run the @command{login} program.
fr: Cette option accepte, en tant qu'entier, la valeur « nice » avec laquelle le programme @command{login} tourne.

note: type: item
en: @code{extra-options} (default: @code{'()})
fr: @code{extra-options} (par défaut : @code{'()})

note: type: table
en: This option provides an ``escape hatch'' for the user to provide arbitrary command-line arguments to @command{agetty} as a list of strings.
fr: Cette option fournit un « mécanisme de secours » pour que l'utilisateur·rice puisse ajouter des arguments arbitraires en ligne de commande à @command{agetty} comme une liste de chaînes de caractères.

note: type: item
en: @code{shepherd-requirement} (default: @code{'()})
fr: @code{rshepherd-equirement} (par défaut : @code{'()})

note: type: table
en: The option can be used to provides extra shepherd requirements (for example @code{'syslogd}) to the respective @code{'term-}* shepherd service.
fr: L'option peut être utilisée pour fournir des prérequis shepherd supplémentaires (par exemple @code{'syslogd}) aux services shepherd @code{'term-}* correspondants.

note: type: deffn
en: {Scheme Procedure} kmscon-service-type @var{config}
fr: {Procédure Scheme} kmscon-service-type @var{config}

note: type: deffn
en: Return a service to run @uref{https://www.freedesktop.org/wiki/Software/kmscon,kmscon} according to @var{config}, a @code{<kmscon-configuration>} object, which specifies the tty to run, among other things.
fr: Renvoie un service qui lance @uref{https://www.freedesktop.org/wiki/Software/kmscon,kmscon} d'après @var{config}, un objet @code{<kmscon-configuration>}, qui spécifie le tty sur lequel tourner, entre autres choses.

note: type: deftp
en: {Data Type} kmscon-configuration
fr: {Type de données} kmscon-configuration

note: type: deftp
en: This is the data type representing the configuration of Kmscon, which implements virtual console log-in.
fr: C'est le type de données représentant la configuration de Kscon, qui implémente l'écran de chargement de la console virtuelle.

note: type: table
en: The name of the console this Kmscon runs on---e.g., @code{"tty1"}.
fr: Le nom de la console sur laquelle Kmscon tourne, p.@: ex.@: @code{"tty1"}.

note: type: item
en: @code{login-program} (default: @code{#~(string-append #$shadow "/bin/login")})
fr: @code{login-program} (par défaut : @code{#~(string-append #$shadow "/bin/login")})

note: type: table
en: A gexp denoting the name of the log-in program.  The default log-in program is @command{login} from the Shadow tool suite.
fr: Une gexp qui dénote le nom d'un programme de connexion.  le programme de connexion par défaut est @command{login} de la suite d'outils Shadow.

note: type: item
en: @code{login-arguments} (default: @code{'("-p")})
fr: @code{login-arguments} (par défaut : @code{'("-p")})

note: type: table
en: A list of arguments to pass to @command{login}.
fr: Une liste d'arguments à passer à @command{login}.

note: type: item
en: @code{hardware-acceleration?} (default: #f)
fr: @code{hardware-acceleration?} (par défaut : #f)

note: type: table
en: Whether to use hardware acceleration.
fr: S'il faut utiliser l'accélération matérielle.

note: type: item
en: @code{font-engine} (default: @code{"pango"})
fr: @code{font-engine} (par défaut : @code{"pango"})

note: type: table
en: Font engine used in Kmscon.
fr: Moteur de polices utilisé dans Kmscon.

note: type: item
en: @code{font-size} (default: @code{12})
fr: @code{font-size} (par défaut : @code{12})

note: type: table
en: Font size used in Kmscon.
fr: Taille de police utilisée par Kmscon.

note: type: table
en: If this is @code{#f}, Kmscon uses the default keyboard layout---usually US English (``qwerty'') for a 105-key PC keyboard.
fr: Si la valeur est @code{#f}, Kmscon utilise la disposition du clavier par défaut — habituellement la disposition anglaise américaine (« qwerty ») pour un clavier de PC à 105 touches.

note: type: table
en: Otherwise this must be a @code{keyboard-layout} object specifying the keyboard layout.  @xref{Keyboard Layout}, for more information on how to specify the keyboard layout.
fr: Sinon cela doit être un objet @code{keyboard-layout} spécifiant la disposition du clavier.  @xref{Keyboard Layout} pour plus d'informations sur la manière de spécifier la disposition du clavier.

note: type: item
en: @code{kmscon} (default: @var{kmscon})
fr: @code{kmscon} (par défaut : @var{kmscon})

note: type: table
en: The Kmscon package to use.
fr: Le paquet Kmscon à utiliser.

note: type: deffn
en: {Scheme Procedure} nscd-service [@var{config}] [#:glibc glibc] @
fr: {Procédure Scheme} nscd-service [@var{config}] [#:glibc glibc] @

note: type: deffn
en: [#:name-services '()] Return a service that runs the libc name service cache daemon (nscd) with the given @var{config}---an @code{<nscd-configuration>} object.  @xref{Name Service Switch}, for an example.
fr: [#:name-services '()]
    Renvoie un service qui lance le démon de cache de services de noms de la libc (nscd) avec la @var{config} donnée — un objet @code{<nscd-configuration>}.  @xref{Name Service Switch}, pour un exemple.

note: type: deffn
en: For convenience, the Shepherd service for nscd provides the following actions:
fr: Parce que c'est pratique, le service du Shepherd pour nscd fournit les actions suivantes :

note: type: cindex
en: cache invalidation, nscd
fr: invalidation du cache, nscd

note: type: cindex
en: nscd, cache invalidation
fr: nscd, invalidation du cache

note: type: table
en: This invalidate the given cache.  For instance, running:
fr: Cela invalide le cache donné.  Par exemple, en laçant :

note: type: table
en: invalidates the host name lookup cache of nscd.
fr: on invalide le cache de noms d'hôtes de nscd.

note: type: item
en: statistics
fr: statistiques

note: type: table
en: Running @command{herd statistics nscd} displays information about nscd usage and caches.
fr: Lancer @command{herd statistics nscd} affiche des informations sur l'utilisation de nscd et des caches.

note: type: defvr
en: {Scheme Variable} %nscd-default-configuration
fr: {Variable Scheme} %nscd-default-configuration

note: type: defvr
en: This is the default @code{<nscd-configuration>} value (see below) used by @code{nscd-service}.  It uses the caches defined by @code{%nscd-default-caches}; see below.
fr: C'est la valeur par défaut de @code{<nscd-configuration>} (voir plus bas) utilisée par @code{nscd-service}.  Elle utilise les caches définis par @code{%nscd-default-caches} ; voir plus bas.

note: type: deftp
en: {Data Type} nscd-configuration
fr: {Type de données} nscd-configuration

note: type: deftp
en: This is the data type representing the name service cache daemon (nscd)  configuration.
fr: C'est le type de données qui représente la configuration du démon de cache de services de noms (nscd).

note: type: item
en: @code{name-services} (default: @code{'()})
fr: @code{name-services} (par défaut : @code{'()})

note: type: table
en: List of packages denoting @dfn{name services} that must be visible to the nscd---e.g., @code{(list @var{nss-mdns})}.
fr: Liste des paquets dénotant des @dfn{services de noms} qui doivent être visible pour nscd, p.@: ex.@: @code{(list @var{nss-mdns})}.

note: type: item
en: @code{glibc} (default: @var{glibc})
fr: @code{glibc} (par défaut : @var{glibc})

note: type: table
en: Package object denoting the GNU C Library providing the @command{nscd} command.
fr: Objet de paquet qui dénote la Bibliothèque C de GNU qui fournit la commande @command{nscd}.

note: type: item
en: @code{log-file} (default: @code{"/var/log/nscd.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/nscd.log"})

note: type: table
en: Name of the nscd log file.  This is where debugging output goes when @code{debug-level} is strictly positive.
fr: Nom du fichier journal de nscd.  C'est là que les sorties de débogage sont envoyée lorsque @code{debug-level} est strictement positif.

note: type: item
en: @code{debug-level} (default: @code{0})
fr: @code{debug-level} (par défaut : @code{0})

note: type: table
en: Integer denoting the debugging levels.  Higher numbers mean that more debugging output is logged.
fr: Entier qui dénote le niveau de débogage.  Les entiers les plus grands signifient plus de sortie de débogage.

note: type: item
en: @code{caches} (default: @code{%nscd-default-caches})
fr: @code{caches} (par défaut : @code{%nscd-default-caches})

note: type: table
en: List of @code{<nscd-cache>} objects denoting things to be cached; see below.
fr: Liste d'objets @code{<nscd-cache>} qui dénotent des choses à mettre en cache ; voir plus bas.

note: type: deftp
en: {Data Type} nscd-cache
fr: {Type de données} nscd-cache

note: type: deftp
en: Data type representing a cache database of nscd and its parameters.
fr: Type de données représentant une base de données de cache de nscd et ses paramètres.

note: type: table
en: This is a symbol representing the name of the database to be cached.  Valid values are @code{passwd}, @code{group}, @code{hosts}, and @code{services}, which designate the corresponding NSS database (@pxref{NSS Basics,,, libc, The GNU C Library Reference Manual}).
fr: C'est un symbole qui représente le nom de la base de donnée à mettre en cache.  Les valeurs valide sont @code{passwd}, @code{group}, @code{hosts} et @code{services} qui désignent les bases de données NSS correspondantes (@pxref{NSS Basics,,, libc, The GNU C Library Reference Manual}).

note: type: itemx
en: @code{negative-time-to-live} (default: @code{20})
fr: @code{negative-time-to-live} (par défaut : @code{20})

note: type: table
en: A number representing the number of seconds during which a positive or negative lookup result remains in cache.
fr: Un entier qui représente le nombre de secondes pendant lesquelles un résultat positif ou négatif reste en cache.

note: type: item
en: @code{check-files?} (default: @code{#t})
fr: @code{check-files?} (par défaut : @code{#t})

note: type: table
en: Whether to check for updates of the files corresponding to @var{database}.
fr: Indique s'il faut vérifier des mises à jours dans les fichiers correspondant à @var{database}.

note: type: table
en: For instance, when @var{database} is @code{hosts}, setting this flag instructs nscd to check for updates in @file{/etc/hosts} and to take them into account.
fr: Par exemple, lorsque @var{database} est @code{hosts}, ce drapeau indique à nscd de vérifier s'il y a des mises à jour de @file{/etc/hosts} et de les prendre en compte.

note: type: item
en: @code{persistent?} (default: @code{#t})
fr: @code{persistent?} (par défaut : @code{#t})

note: type: table
en: Whether the cache should be stored persistently on disk.
fr: Indique si le cache devrait être stocké de manière persistante sur le disque.

note: type: item
en: @code{shared?} (default: @code{#t})
fr: @code{shared?} (par défaut : @code{#t})

note: type: table
en: Whether the cache should be shared among users.
fr: Indique si le cache devrait être partagé entre les utilisateurs.

note: type: item
en: @code{max-database-size} (default: 32@tie{}MiB)
fr: @code{max-database-size} (par défaut : 32@tie{}MiB)

note: type: table
en: Maximum size in bytes of the database cache.
fr: Taille maximale en octets de la base de données en cache.

note: type: defvr
en: {Scheme Variable} %nscd-default-caches
fr: {Variable Scheme} %nscd-default-caches

note: type: defvr
en: List of @code{<nscd-cache>} objects used by default by @code{nscd-configuration} (see above).
fr: Liste d'objets @code{<nscd-cache>} utilisés par défaut par @code{nscd-configuration} (voir plus haut).

note: type: defvr
en: It enables persistent and aggressive caching of service and host name lookups.  The latter provides better host name lookup performance, resilience in the face of unreliable name servers, and also better privacy---often the result of host name lookups is in local cache, so external name servers do not even need to be queried.
fr: Elle active la mise en cache persistante et agressive des recherches de services et de noms d'hôtes.  Ces derniers fournissent une recherche de noms d'hôtes plus performante, résiliente face à des serveurs de noms peu fiables et une protection de votre vie privée plus efficace — souvent le résultat des recherches de noms d'hôtes sont dans le cache local, donc les serveurs de nom externes n'ont même pas besoin d'être questionnés.

note: type: cindex
en: logging
fr: journalisation

note: type: deftp
en: {Data Type} syslog-configuration
fr: {Type de données} syslog-configuration

note: type: deftp
en: This data type represents the configuration of the syslog daemon.
fr: Ce type de données représente la configuration du démon syslog.

note: type: item
en: @code{syslogd} (default: @code{#~(string-append #$inetutils "/libexec/syslogd")})
fr: @code{syslogd} (par défaut : @code{#~(string-append #$inetutils "/libexec/syslogd")})

note: type: table
en: The syslog daemon to use.
fr: Le démon syslog à utiliser.

note: type: item
en: @code{config-file} (default: @code{%default-syslog.conf})
fr: @code{config-file} (par défaut : @code{%default-syslog.conf})

note: type: table
en: The syslog configuration file to use.
fr: Le fichier de configuration de syslog à utiliser.

note: type: deffn
en: {Scheme Procedure} syslog-service @var{config}
fr: {Procédure Scheme} syslog-service @var{config}

note: type: deffn
en: Return a service that runs a syslog daemon according to @var{config}.
fr: Renvoie un service qui lance un démon syslog en suivant @var{config}.

note: type: deffn
en: @xref{syslogd invocation,,, inetutils, GNU Inetutils}, for more information on the configuration file syntax.
fr: @xref{syslogd invocation,,, inetutils, GNU Inetutils}, pour plus d'informations sur la syntaxe du fichier de configuration.

note: type: defvr
en: {Scheme Variable} guix-service-type
fr: {Variable Scheme} guix-service-type

note: type: defvr
en: This is the type of the service that runs the build daemon, @command{guix-daemon} (@pxref{Invoking guix-daemon}).  Its value must be a @code{guix-configuration} record as described below.
fr: C'est le type de service qui lance le démon de construction, @command{guix-daemon} (@pxref{Invoking guix-daemon}).  Sa valeur doit être un enregistrement @code{guix-configuration} décrit plus bas.

note: type: deftp
en: {Data Type} guix-configuration
fr: {Type de données} guix-configuration

note: type: deftp
en: This data type represents the configuration of the Guix build daemon.  @xref{Invoking guix-daemon}, for more information.
fr: Ce type de données représente la configuration du démon de construction de Guix.  @xref{Invoking guix-daemon} pour plus d'informations.

note: type: item
en: @code{guix} (default: @var{guix})
fr: @code{guix} (par défaut : @var{guix})

note: type: table
en: The Guix package to use.
fr: Le paquet Guix à utiliser.

note: type: item
en: @code{build-group} (default: @code{"guixbuild"})
fr: @code{build-group} (par défaut : @code{"guixbuild"})

note: type: table
en: Name of the group for build user accounts.
fr: Nom du groupe des comptes utilisateurs de construction.

note: type: item
en: @code{build-accounts} (default: @code{10})
fr: @code{build-accounts} (par défaut : @code{10})

note: type: table
en: Number of build user accounts to create.
fr: Nombre de comptes utilisateurs de construction à créer.

note: type: item
en: @code{authorize-key?} (default: @code{#t})
fr: @code{authorize-key?} (par défaut : @code{#t})

note: type: table
en: Whether to authorize the substitute keys listed in @code{authorized-keys}---by default that of @code{@value{SUBSTITUTE-SERVER-1}} and @code{@value{SUBSTITUTE-SERVER-2}} (@pxref{Substitutes}).
fr: Indique s'il faut autoriser ou non les clefs de substituts listées dans @code{authorize-keys} — par défaut celle de @code{@value{SUBSTITUTE-SERVER-1}} et @code{@value{SUBSTITUTE-SERVER-2}} (@pxref{Substituts}).

note: type: table
en: When @code{authorize-key?} is true, @file{/etc/guix/acl} cannot be changed by invoking @command{guix archive --authorize}.  You must instead adjust @code{guix-configuration} as you wish and reconfigure the system.  This ensures that your operating system configuration file is self-contained.
fr: Lorsque @code{authorize-key?} est vrai, @file{/etc/guix/acl} ne peut pas être changé en invoquant @command{guix archive --authorize}.  vous devez plutôt ajuster @code{guix-configuration} comme vous le souhaitez et reconfigurer le système.  Cela s'assure que le fichier de configuration de votre système est auto-contenu.

note: type: quotation
en: When booting or reconfiguring to a system where @code{authorize-key?} is true, the existing @file{/etc/guix/acl} file is backed up as @file{/etc/guix/acl.bak} if it was determined to be a manually modified file.  This is to facilitate migration from earlier versions, which allowed for in-place modifications to @file{/etc/guix/acl}.
fr: Au démarrage ou la reconfiguration d'un système où @code{authorize-key?} est vrai, le fichier @file{/etc/guix/acl} existant est sauvegardé dans @file{/etc/guix/acl.bak} s'il est déterminé qu'il a été modifié manuellement.  Cela facilite la migration à partir de versions précédentes, qui permettaient des modifications en-place de @file{/etc/guix/acl}.

note: type: item
en: @code{authorized-keys} (default: @code{%default-authorized-guix-keys})
fr: @code{authorized-keys} (par défaut : @code{%default-authorized-guix-keys})

note: type: table
en: The list of authorized key files for archive imports, as a list of string-valued gexps (@pxref{Invoking guix archive}).  By default, it contains that of @code{@value{SUBSTITUTE-SERVER-1}} and @code{@value{SUBSTITUTE-SERVER-2}} (@pxref{Substitutes}).  See @code{substitute-urls} below for an example on how to change it.
fr: La liste des fichiers des fichiers de clés autorisées pour les imports d'archives, en tant que liste de gexps sous forme de chaines (@pxref{Invoking guix archive}).  Par défaut, elle contient celle de @code{@value{SUBSTITUTE-SERVER-1}} et @code{@value{SUBSTITUTE-SERVER-2}} (@pxref{Substituts}).  Voir @code{substitute-urls} ci-dessous pour apprendre comment la changer.

note: type: item
en: @code{use-substitutes?} (default: @code{#t})
fr: @code{use-substitutes?} (par défaut : @code{#t})

note: type: table
en: Whether to use substitutes.
fr: S'il faut utiliser les substituts.

note: type: item
en: @code{substitute-urls} (default: @code{%default-substitute-urls})
fr: @code{substitute-urls} (par défaut : @code{%default-substitute-urls})

note: type: table
en: The list of URLs where to look for substitutes by default.
fr: La liste des URL où trouver des substituts par défaut.

note: type: table
en: Suppose you would like to fetch substitutes from @code{guix.example.org} in addition to @code{@value{SUBSTITUTE-SERVER-1}}.  You will need to do two things: (1) add @code{guix.example.org} to @code{substitute-urls}, and (2) authorize its signing key, having done appropriate checks (@pxref{Substitute Server Authorization}).  The configuration below does exactly that:
fr: Supposons que vous vouliez récupérer des substituts à partir de @code{guix.example.org} en plus de @code{@value{SUBSTITUTE-SERVER-1}}.  Vous devrez faire deux choses : (1) ajouter @code{guix.example.org} à @code{substitute-urls}, et (2) autoriser sa clé de signature, après avoir effectué les vérifications adéquates (@pxref{Substitute Server Authorization}).  La configuration ci-dessous fait exactement cela :

note: type: table
en: This example assumes that the file @file{./guix.example.org-key.pub} contains the public key that @code{guix.example.org} uses to sign substitutes.
fr: Cet exemple suppose que le fichier @file{./guix.example.org-key.pub} contient la clé publique que @code{guix.example.org} utilise pour signer les substituts.

note: type: item
en: @code{generate-substitute-key?} (default: @code{#t})
fr: @code{generate-substitute-keys?} (par défaut : @code{#t})

note: type: table
en: Whether to generate a @dfn{substitute key pair} under @file{/etc/guix/signing-key.pub} and @file{/etc/guix/signing-key.sec} if there is not already one.
fr: Indique s'il faut générer une @dfn{paire de clés de substituts} dans @file{/etc/guix/signing-key.pub} et @file{/etc/guix/signing-key.sec} si elle n'existe pas déjà.

note: type: table
en: This key pair is used when exporting store items, for instance with @command{guix publish} (@pxref{Invoking guix publish}) or @command{guix archive} (@pxref{Invoking guix archive}).  Generating a key pair takes a few seconds when enough entropy is available and is only done once; you might want to turn it off for instance in a virtual machine that does not need it and where the extra boot time is a problem.
fr: Cette paire de clés est utilisée pour exporter les éléments du dépôt, par exemple avec @command{guix publish} (@pxref{Invoking guix publish}) ou @command{guix archive} (@pxref{Invoking guix archive}). Générer une paire de clés prend quelques secondes quand il y a assez d'entropie disponible et n'est fait qu'une seule fois ; vous pouvez la désactiver par exemple dans une machine virtuelle qui n'en pas besoin et où le temps de démarrage supplémentaire peut être problématique.

note: type: item
en: @code{max-silent-time} (default: @code{0})
fr: @code{max-silent-time} (par défaut : @code{0})

note: type: itemx
en: @code{timeout} (default: @code{0})
fr: @code{timeout} (par défaut : @code{0})

note: type: table
en: The number of seconds of silence and the number of seconds of activity, respectively, after which a build process times out.  A value of zero disables the timeout.
fr: Le nombre de secondes de silence et le nombre de secondes d'inactivité, respectivement, après lesquelles un processus de construction son délai d'attente.  Une valeur de zéro désactive le délai d'attente.

note: type: item
en: @code{log-compression} (default: @code{'gzip})
fr: @code{log-compression} (par défaut : @code{'gzip})

note: type: table
en: The type of compression used for build logs---one of @code{gzip}, @code{bzip2}, or @code{none}.
fr: Le type de compression utilisé par les journaux de construction — parmi @code{gzip}, @code{bzip2} et @code{none}.

note: type: item
en: @code{discover?} (default: @code{#f})
fr: @code{discover?} (par défaut : @code{#f})

note: type: table
en: List of extra command-line options for @command{guix-daemon}.
fr: Liste d'options supplémentaires de la ligne de commande pour @command{guix-daemon}.

note: type: item
en: @code{log-file} (default: @code{"/var/log/guix-daemon.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/guix-daemon.log"})

note: type: table
en: File where @command{guix-daemon}'s standard output and standard error are written.
fr: Le fichier où les sorties standard et d'erreur de @command{guix-daemon} sont écrites.

note: type: cindex
en: HTTP proxy, for @code{guix-daemon}
fr: Proxy HTTP, pour @code{guix-daemon}

note: type: cindex
en: proxy, for @code{guix-daemon} HTTP access
fr: proxy, pour l'accès @code{guix-daemon} HTTP

note: type: item
en: @code{http-proxy} (default: @code{#f})
fr: @code{http-proxy} (par défaut : @code{#f})

note: type: table
en: The URL of the HTTP and HTTPS proxy used for downloading fixed-output derivations and substitutes.
fr: L'URL du proxy HTTP et HTTPS utilisé pour le téléchargement des dérivés et substituts à sortie fixe.

note: type: table
en: It is also possible to change the daemon's proxy at run time through the @code{set-http-proxy} action, which restarts it:
fr: Il est également possible de changer le proxy du démon au moment de l'exécution grâce à l'action @code{set-http-proxy}, qui le redémarre :

note: type: table
en: To clear the proxy settings, run:
fr: Pour effacer les paramètres du proxy, exécutez :

note: type: item
en: @code{tmpdir} (default: @code{#f})
fr: @code{tmpdir} (par défaut : @code{#f})

note: type: table
en: A directory path where the @command{guix-daemon} will perform builds.
fr: Un répertoire où @command{guix-daemon} effectuera ses constructions.

note: type: deftp
en: {Data Type} guix-extension
fr: {Type de données} guix-extension

note: type: deftp
en: This data type represents the parameters of the Guix build daemon that are extendable. This is the type of the object that must be used within a guix service extension.  @xref{Service Composition}, for more information.
fr: Ce type de données représente les paramètres du démon de construction de Guix qui peuvent être étendus. C'est le type d'objet qui doit être utilisé dans une extension du service guix. @xref{Service Composition}, pour plus d'informations.

note: type: item
en: @code{authorized-keys} (default: @code{'()})
fr: @code{authorized-keys} (par défaut : @code{'()})

note: type: table
en: A list of file-like objects where each element contains a public key.
fr: Une liste d'objets simili-fichiers où chaque élément contient une clé publique.

note: type: item
en: @code{substitute-urls} (default: @code{'()})
fr: @code{substitute-urls} (par défaut : @code{'()})

note: type: table
en: A list of strings where each element is a substitute URL.
fr: Une liste de chaines où chaque élément est l'URL d'un serveur de substituts.

note: type: item
en: @code{chroot-directories} (default: @code{'()})
fr: @code{chroot-directories} (par défaut : @code{'()})

note: type: table
en: A list of file-like objects or strings pointing to additional directories the build daemon can use.
fr: Une liste d'objets simili-fichiers ou de chaines pointant vers des répertoires supplémentaires que le démon de construction peut utiliser.

note: type: deffn
en: {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]
fr: {Procédure Scheme} udev-service [#:udev @var{eudev} #:rules @code{'()}]

note: type: deffn
en: Run @var{udev}, which populates the @file{/dev} directory dynamically.  udev rules can be provided as a list of files through the @var{rules} variable.  The procedures @code{udev-rule}, @code{udev-rules-service} and @code{file->udev-rule} from @code{(gnu services base)} simplify the creation of such rule files.
fr: Lance @var{udev}, qui remplit le répertoire @file{/dev} dynamiquement.  Les règles udev peuvent être fournies comme une liste de fichier via la variable @var{rules}.  Les procédures @code{udev-rule}, @code{udev-rules-service} et @code{(gnu services base)} simplifient la création de ces fichiers de règle.

note: type: deffn
en: {Scheme Procedure} udev-rule [@var{file-name} @var{contents}]
fr: {Procédure Scheme} udev-rule [@var{file-name} @var{contents}]

note: type: deffn
en: Return a udev-rule file named @var{file-name} containing the rules defined by the @var{contents} literal.
fr: Renvoie un fichier de règle udev nommé @var{file-name} contenant les règles définie par le littéral @var{contents}.

note: type: deffn
en: In the following example, a rule for a USB device is defined to be stored in the file @file{90-usb-thing.rules}.  The rule runs a script upon detecting a USB device with a given product identifier.
fr: Dans l'exemple suivant, on définie une règle pour un périphérique USB qui sera stockée dans le fichier @file{90-usb-thing.rules}.  La règle lance un script à la détection du périphérique USB avec l'identifiant de produit donné.

note: type: deffn
en: {Scheme Procedure} udev-rules-service [@var{name} @var{rules}] @
fr: {Procédure Scheme} udev-rule-service [@var{name} @var{rules}] @

note: type: deffn
en: [#:groups @var{groups}] Return a service that extends @code{udev-service-type } with @var{rules} and @code{account-service-type} with @var{groups} as system groups.  This works by creating a singleton service type @code{@var{name}-udev-rules}, of which the returned service is an instance.
fr: [#:groups @var{groups}]
    Renvoie un service qui étend @code{udev-service-type } avec @var{rules} et @code{account-service-type} avec @var{groups} comme groupes système.  Cela fonctionne en créant un service de type @code{@var{name}-udev-rules}, dont le service renvoyé est une instance.

note: type: deffn
en: Here we show how it can be used to extend @code{udev-service-type} with the previously defined rule @code{%example-udev-rule}.
fr: Nous montrons ici comment cela peut être utilisé pour étendre @code{udev-service-type} avec la règle précédemment définie @code{%exemple-udev-rule}.

note: type: deffn
en: {Scheme Procedure} file->udev-rule [@var{file-name} @var{file}]
fr: {Procédure Scheme} file->udev-rule [@var{file-name} @var{file}]

note: type: deffn
en: Return a udev file named @var{file-name} containing the rules defined within @var{file}, a file-like object.
fr: Renvoie un fichier udev nommé @var{file-name} contenant les règles définies dans @var{file}, un objet simili-fichier.

note: type: deffn
en: The following example showcases how we can use an existing rule file.
fr: L'exemple suivant montre comment utiliser un fichier de règles existant.

note: type: lisp
en: (use-modules (guix download)     ;for url-fetch
                 (guix packages)     ;for origin
                 @dots{})
fr: (use-modules (guix download)     ;pour url-fetch
                 (guix packages)     ;pour origin
                 @dots{})

note: type: Plain text
en: Additionally, Guix package definitions can be included in @var{rules} in order to extend the udev rules with the definitions found under their @file{lib/udev/rules.d} sub-directory.  In lieu of the previous @var{file->udev-rule} example, we could have used the @var{android-udev-rules} package which exists in Guix in the @code{(gnu packages android)} module.
fr: En plus, les définitions des paquets de Guix peuvent être inclus dans @var{rules} pour étendre les règles avec les définitions trouvées dans leur sous-répertoire @file{lib/udev/rules.d}.  Au lieu de l'exemple @var{file->udev-rule} précédent, on aurait pu utiliser le paquet @var{android-udev-rules} qui existe dans le module @code{(gnu packages android)}.

note: type: Plain text
en: The following example shows how to use the @var{android-udev-rules} package so that the Android tool @command{adb} can detect devices without root privileges.  It also details how to create the @code{adbusers} group, which is required for the proper functioning of the rules defined within the @code{android-udev-rules} package.  To create such a group, we must define it both as part of the @code{supplementary-groups} of our @code{user-account} declaration, as well as in the @var{groups} of the @code{udev-rules-service} procedure.
fr: L'exemple suivant montre comment utiliser le paquet @var{android-udev-rules} pour que l'outil Android @command{adb} puisse détecter les appareils sans privilège root.  Il détaille aussi comment créer le groupe @code{adbusers}, requis pour le bon fonctionnement des règles définies dans le paquet @code{android-udev-rules}.  Pour créer ce groupe, on doit le définir dans les @code{supplementary-groups} de la déclaration @code{user-account} ainsi que dans le champ @var{groups} de l'enregistrement @var{operating-system}.

note: type: lisp
en: (use-modules (gnu packages android)  ;for android-udev-rules
                 (gnu system shadow)     ;for user-group
                 @dots{})
fr: (use-modules (gnu packages android)  ;pour android-udev-rules
                 (gnu system shadow)     ;pour user-group
                 @dots{})

note: type: defvr
en: {Scheme Variable} urandom-seed-service-type
fr: {Variable Scheme} urandom-seed-service-type

note: type: defvr
en: Save some entropy in @code{%random-seed-file} to seed @file{/dev/urandom} when rebooting.  It also tries to seed @file{/dev/urandom} from @file{/dev/hwrng} while booting, if @file{/dev/hwrng} exists and is readable.
fr: Conserve de l' entropie dans @code{%random-seed-file} pour amorcer @file{/dev/urandom} lors du redémarrage.  Il essaie également d'amorcer @file{/dev/urandom} à partir de @file{/dev/hwrng} lors du démarrage, si @file{/dev/hwrng} existe et est lisible.

note: type: defvr
en: {Scheme Variable} %random-seed-file
fr: {Variable Scheme} %random-seed-file

note: type: defvr
en: This is the name of the file where some random bytes are saved by @var{urandom-seed-service} to seed @file{/dev/urandom} when rebooting.  It defaults to @file{/var/lib/random-seed}.
fr: C'est le nom du fichier où des octets aléatoires sont sauvegardés par @var{urandom-seed-service} pour démarrer @file{/dev/urandom} au redémarrage.  Sa valeur par défaut est @file{/var/lib/random-seed}.

note: type: cindex
en: mouse
fr: souris

note: type: defvr
en: {Scheme Variable} gpm-service-type
fr: {Variable Scheme} gpm-service-type

note: type: defvr
en: This is the type of the service that runs GPM, the @dfn{general-purpose mouse daemon}, which provides mouse support to the Linux console.  GPM allows users to use the mouse in the console, notably to select, copy, and paste text.
fr: C'est le type du service qui lance GPM, le @dfn{démon de souris à but général}, qui fournit le support de la souris sur la console Linux.  GPM permet aux utilisateurs d'utiliser la souris dans la console, entre autres pour sélectionner, copier et coller du texte.

note: type: defvr
en: The value for services of this type must be a @code{gpm-configuration} (see below).  This service is not part of @code{%base-services}.
fr: La valeur pour les services de ce type doit être un @code{gpm-configuration} (voir plus bas).  Ce service ne fait pas partie de @code{%base-services}.

note: type: deftp
en: {Data Type} gpm-configuration
fr: {Type de données} gpm-configuration

note: type: deftp
en: Data type representing the configuration of GPM.
fr: Type de données représentant la configuration de GPM.

note: type: item
en: @code{options} (default: @code{%default-gpm-options})
fr: @code{options} (par défaut : @code{%default-gpm-options})

note: type: table
en: Command-line options passed to @command{gpm}.  The default set of options instruct @command{gpm} to listen to mouse events on @file{/dev/input/mice}.  @xref{Command Line,,, gpm, gpm manual}, for more information.
fr: Les options de la ligne de commande à passer à @command{gpm}.  L'ensemble des options par défaut dit à @command{gpm} d'écouter les événements de la souris dans @file{/dev/input/mice}.  @xref{Command Line,,, gpm, gpm manual}, pour plus d'informations.

note: type: item
en: @code{gpm} (default: @code{gpm})
fr: @code{gpm} (par défaut : @code{gpm})

note: type: table
en: The GPM package to use.
fr: Le paquet GPM à utiliser.

note: type: deffn
en: {Scheme Variable} guix-publish-service-type
fr: {Variable Scheme} guix-publish-service-type

note: type: deffn
en: This is the service type for @command{guix publish} (@pxref{Invoking guix publish}).  Its value must be a @code{guix-publish-configuration} object, as described below.
fr: C'est le type de service pour @command{guix publish} (@pxref{Invoquer guix publish}).  Sa valeur doit être un objet @code{guix-publish-configuration} décrit plus bas.

note: type: deffn
en: This assumes that @file{/etc/guix} already contains a signing key pair as created by @command{guix archive --generate-key} (@pxref{Invoking guix archive}).  If that is not the case, the service will fail to start.
fr: Ce service suppose que @file{/etc/guix} contient déjà une paire de clefs créée par @command{guix archive --generate-key} (@pxref{Invoking guix archive}).  Si ce n'est pas le cas, le service ne démarrera pas.

note: type: deftp
en: {Data Type} guix-publish-configuration
fr: {Type de données} guix-publish-configuration

note: type: deftp
en: Data type representing the configuration of the @code{guix publish} service.
fr: Le type de données représentant la configuration du service @code{guix publish}.

note: type: item
en: @code{guix} (default: @code{guix})
fr: @code{guix} (par défaut : @code{guix})

note: type: item
en: @code{port} (default: @code{80})
fr: @code{port} (par défaut : @code{80})

note: type: table
en: The TCP port to listen for connections.
fr: Le port TCP sur lequel écouter les connexions.

note: type: item
en: @code{host} (default: @code{"localhost"})
fr: @code{host} (par défaut : @code{"localhost"})

note: type: table
en: The host (and thus, network interface) to listen to.  Use @code{"0.0.0.0"} to listen on all the network interfaces.
fr: L'hôte (et donc, l'interface réseau) sur lequel écouter.  Utilisez @code{"0.0.0.0"} pour écouter sur toutes les interfaces réseaux.

note: type: item
en: @code{advertise?} (default: @code{#f})
fr: @code{advertise?} (par défaut : @code{#f})

note: type: table
en: When true, advertise the service on the local network @i{via} the DNS-SD protocol, using Avahi.
fr: Lorsque la valeur est vraie, annonce le service sur le réseau local via le protocole DNS-SD, avec Avahi.

note: type: table
en: This allows neighboring Guix devices with discovery on (see @code{guix-configuration} above) to discover this @command{guix publish} instance and to automatically download substitutes from it.
fr: Cela permet aux machines Guix voisines qui ont activé la découverte (voir @code{guix-configuration} ci-dessus) de découvrir cette instance de @command{guix publish} et de télécharger des substituts directement à partir d'elle.

note: type: item
en: @code{compression} (default: @code{'(("gzip" 3) ("zstd" 3))})
fr: @code{compression} (par défaut : @code{'(("gzip" 3) ("zstd" 3))})

note: type: table
en: This is a list of compression method/level tuple used when compressing substitutes.  For example, to compress all substitutes with @emph{both} lzip at level 7 and gzip at level 9, write:
fr: Il s'agit d'une liste de méthodes de compression/numéros de niveau utilisés lors de la compression des substituts.  Par exemple, pour compresser tous les substituts avec @emph{both} lzip au niveau 7 et gzip au niveau 9, écrivez :

note: type: table
en: Level 9 achieves the best compression ratio at the expense of increased CPU usage, whereas level 1 achieves fast compression.  @xref{Invoking guix publish}, for more information on the available compression methods and the tradeoffs involved.
fr: Le niveau 9 atteint le meilleur taux de compression au détriment d'une utilisation accrue du CPU, tandis que le niveau 1 atteint une compression rapide. @xref{Invoking guix publish}, pour plus d'information sur les méthodes de compression disponibles et les compromis à faire entre elles.

note: type: table
en: An empty list disables compression altogether.
fr: Une liste vide désactive complètement la compression.

note: type: item
en: @code{nar-path} (default: @code{"nar"})
fr: @code{nar-path} (par défaut : @code{"nar"})

note: type: table
en: The URL path at which ``nars'' can be fetched.  @xref{Invoking guix publish, @option{--nar-path}}, for details.
fr: Le chemin d'URL où les « nars » se trouvent.  @xref{Invoquer guix publish, @option{--nar-path}}, pour des détails.

note: type: item
en: @code{cache} (default: @code{#f})
fr: @code{cache} (par défaut : @code{#f})

note: type: table
en: When it is @code{#f}, disable caching and instead generate archives on demand.  Otherwise, this should be the name of a directory---e.g., @code{"/var/cache/guix/publish"}---where @command{guix publish} caches archives and meta-data ready to be sent.  @xref{Invoking guix publish, @option{--cache}}, for more information on the tradeoffs involved.
fr: Lorsque la valeur est @code{#f}, désactive le cache et génère les archives à la demande.  Sinon, cela devrait être le nom d'un répertoire — p.@: ex.@: @code{"/var/cache/guix/publish"} — où @command{guix publish} gère le cache des archives et des métadonnées prêtes à être envoyées.   @xref{Invoking guix publish, @option{--cache}}, pour plus d'informations sur les compromis impliqués.

note: type: item
en: @code{workers} (default: @code{#f})
fr: @code{workers} (par défaut : @code{#f})

note: type: table
en: When it is an integer, this is the number of worker threads used for caching; when @code{#f}, the number of processors is used.  @xref{Invoking guix publish, @option{--workers}}, for more information.
fr: Lorsque la valeur est un entier, c'est le nombre de threads de travail utilisés pour le cache ; lorsque la valeur est @code{#f}, le nombre de processeurs est utilisé.  @xref{Invoking guix publish, @option{--workers}}, pour plus d'informations.

note: type: item
en: @code{cache-bypass-threshold} (default: 10 MiB)
fr: @code{cache-bypass-threshold} (par défaut : 10 Mio)

note: type: table
en: When @code{cache} is true, this is the maximum size in bytes of a store item for which @command{guix publish} may bypass its cache in case of a cache miss.  @xref{Invoking guix publish, @option{--cache-bypass-threshold}}, for more information.
fr: Lorsque @code{cache} est vrai, c'est la taille maximale en octets d'un élément du dépôt pour lequel @command{guix publish} peut contourner le cache s'il n'y est pas.  @xref{Invoking guix publish, @option{--cache-bypass-threshold}}, pour plus d'informations.

note: type: item
en: @code{ttl} (default: @code{#f})
fr: @code{ttl} (par défaut : @code{#f})

note: type: table
en: When it is an integer, this denotes the @dfn{time-to-live} in seconds of the published archives.  @xref{Invoking guix publish, @option{--ttl}}, for more information.
fr: Lorsque la valeur est un entier, il dénote la @dfn{durée de vie} en secondes des archives publiées.  @xref{Invoking guix publish, @option{--ttl}}, pour plus d'informations.

note: type: item
en: @code{negative-ttl} (default: @code{#f})
fr: @code{negative-ttl} (par défaut : @code{#f})

note: type: table
en: When it is an integer, this denotes the @dfn{time-to-live} in seconds for the negative lookups.  @xref{Invoking guix publish, @option{--negative-ttl}}, for more information.
fr: Lorsque la valeur est un entier, il dénote la @dfn{durée de vie} en secondes pour les réponses négatives.  @xref{Invoking guix publish, @option{--negative-ttl}}, pour plus d'informations.

note: type: deffn
en: {Scheme Procedure} rngd-service [#:rng-tools @var{rng-tools}] @
fr: {Procédure Scheme} rngd-service [#:rng-tools @var{rng-tools}] @

note: type: deffn
en: [#:device "/dev/hwrng"] Return a service that runs the @command{rngd} program from @var{rng-tools} to add @var{device} to the kernel's entropy pool.  The service will fail if @var{device} does not exist.
fr: [#:device "/dev/hwrng"]
    Renvoie un service qui lance le programme @command{rngd} de @var{rng-tools} pour ajouter @var{device} à la réserve d'entropie du noyau.  Le service échouera si @var{device} n'existe pas.

note: type: cindex
en: session limits
fr: limites de session

note: type: cindex
en: priority
fr: priorités

note: type: cindex
en: realtime
fr: temps réel

note: type: cindex
en: open file descriptors
fr: descripteurs de fichiers ouverts

note: type: deffn
en: {Scheme Procedure} pam-limits-service [#:limits @code{'()}]
fr: {Procédure Scheme} pam-limits-service [#:limits @code{'()}]

note: type: deffn
en: Return a service that installs a configuration file for the @uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html, @code{pam_limits} module}.  The procedure optionally takes a list of @code{pam-limits-entry} values, which can be used to specify @code{ulimit} limits and @code{nice} priority limits to user sessions.
fr: Renvoie un service qui installe un fichier de configuration pour le @uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html, module @code{pam_limits}}.  La procédure prend éventuellement une liste de valeurs @code{pam-limits-entry} qui peuvent être utilisées pour spécifier les limites @code{ulimit} et les priorités @code{nice} des sessions utilisateurs.

note: type: deffn
en: The following limits definition sets two hard and soft limits for all login sessions of users in the @code{realtime} group:
fr: La définition de limites suivante défini deux limites matérielles et logicielles pour toutes les sessions connectées des utilisateurs du groupe @code{realtime} :

note: type: deffn
en: The first entry increases the maximum realtime priority for non-privileged processes; the second entry lifts any restriction of the maximum address space that can be locked in memory.  These settings are commonly used for real-time audio systems.
fr: La première entrée augment la priorité en temps réel maximale des processus non privilégiés ; la deuxième entrée abandonne les restrictions sur l'espace d'adressage maximal qui peut être verrouillé en mémoire.  Ces paramètres sont souvent utilisés sur les systèmes audio temps-réel.

note: type: deffn
en: Another useful example is raising the maximum number of open file descriptors that can be used:
fr: Un autre exemple utile est d'augmenter le nombre maximum de descripteurs de fichiers ouverts qui peuvent être utilisés :

note: type: deffn
en: In the above example, the asterisk means the limit should apply to any user.  It is important to ensure the chosen value doesn't exceed the maximum system value visible in the @file{/proc/sys/fs/file-max} file, else the users would be prevented from login in.  For more information about the Pluggable Authentication Module (PAM) limits, refer to the @samp{pam_limits} man page from the @code{linux-pam} package.
fr: Dans l'exemple au-dessus, l'astérisque signifie que la limite s'applique à tous les utilisateurs. Il est important de s'assurer que la valeur choisie n'excède pas la valeur maximale du système visible dans le fichier @file{/proc/sys/fs/file-max}, sinon les utilisateurs ne pourront pas se connecter. Pour plus d'information sur les limites du module d'authentification grefable (PAM), regardez la page de manuel @samp{pam_limits} du paquet @code{linux-pam}.

note: type: defvr
en: {Scheme Variable} greetd-service-type
fr: {Variable Scheme} greetd-service-type

note: type: defvr
en: @uref{https://git.sr.ht/~kennylevinsen/greetd, @code{greetd}} is a minimal and flexible login manager daemon, that makes no assumptions about what you want to launch.
fr: @uref{https://git.sr.ht/~kennylevinsen/greetd, @code{greetd}} est un démon de gestion des connexions minimaliste et flexible, qui ne fait aucune hypothèse sur ce que vous voulez lancer.

note: type: defvr
en: If you can run it from your shell in a TTY, greetd can start it. If it can be taught to speak a simple JSON-based IPC protocol, then it can be a geeter.
fr: Si vous pouvez le lancer depuis votre shell dans un TTY, greetd peut le lancer. S'il peut apprendre à parler un protocole IPC simple basé sur JSON, alors ce peut être un écran d'accueil.

note: type: defvr
en: @code{greetd-service-type} provides necessary infrastructure for logging in users, including:
fr: @code{greetd-service-type} fournit l'infrastructure nécessaire pour la connexion des utilisateurs, ce qui comprend :

note: type: itemize
en: @code{greetd} PAM service
fr: le service PAM @code{greetd}

note: type: itemize
en: Special variation of @code{pam-mount} to mount @code{XDG_RUNTIME_DIR}
fr: Une variante spéciale de @code{pam-mount} pour monter @code{XDG_RUNTIME_DIR}

note: type: defvr
en: Here is example of switching from @code{mingetty-service-type} to @code{greetd-service-type}, and how different terminals could be:
fr: Voici un exemple pour passer de @code{mingetty-service-type} à @code{greetd-service-type} et comment vous pouvez le spécifier pour plusieurs terminaux :

note: type: lisp
en:   (append
       (modify-services %base-services
         ;; greetd-service-type provides "greetd" PAM service
         (delete login-service-type)
         ;; and can be used in place of mingetty-service-type
         (delete mingetty-service-type))
       (list
        (service greetd-service-type
                 (greetd-configuration
                  (terminals
                   (list
                    ;; we can make any terminal active by default
                    (greetd-terminal-configuration (terminal-vt "1") (terminal-switch #t))
                    ;; we can make environment without XDG_RUNTIME_DIR set
                    ;; even provide our own environment variables
                    (greetd-terminal-configuration
                     (terminal-vt "2")
                     (default-session-command
                       (greetd-agreety-session
                        (extra-env '(("MY_VAR" . "1")))
                        (xdg-env? #f))))
                    ;; we can use different shell instead of default bash
                    (greetd-terminal-configuration
                     (terminal-vt "3")
                     (default-session-command
                       (greetd-agreety-session (command (file-append zsh "/bin/zsh")))))
                    ;; we can use any other executable command as greeter
                    (greetd-terminal-configuration
                     (terminal-vt "4")
                     (default-session-command (program-file "my-noop-greeter" #~(exit))))
                    (greetd-terminal-configuration (terminal-vt "5"))
                    (greetd-terminal-configuration (terminal-vt "6"))))))
        ;; mingetty-service-type can be used in parallel
        ;; if needed to do so, do not (delete login-service-type)
        ;; as illustrated above
        #| (service mingetty-service-type (mingetty-configuration (tty "tty8"))) |#))
fr:   (append
       (modify-services %base-services
         ;; greetd-service-type fournit le srevice PAM « greetd »
         (delete login-service-type)
         ;; et peut être utilisé à la place de mingetty-service-type
         (delete mingetty-service-type))
       (list
        (service greetd-service-type
                 (greetd-configuration
                  (terminals
                   (list
                    ;; on peut rendre n'importe quel terminal actif par défaut
                    (greetd-terminal-configuration (terminal-vt "1") (terminal-switch #t))
                    ;; on peut créer des environnement sans initialiser XDG_RUNTIME_DIR
                    ;; et même fournir nos propres variables d'environnement
                    (greetd-terminal-configuration
                     (terminal-vt "2")
                     (default-session-command
                       (greetd-agreety-session
                        (extra-env '(("MY_VAR" . "1")))
                        (xdg-env? #f))))
                    ;; on peut utiliser un shell différent au lieu de bash par défaut
                    (greetd-terminal-configuration
                     (terminal-vt "3")
                     (default-session-command
                       (greetd-agreety-session (command (file-append zsh "/bin/zsh")))))
                    ;; on peut utiliser n'importe quelle autre commande exécutable comme gestionnaire de connexion
                    (greetd-terminal-configuration
                     (terminal-vt "4")
                     (default-session-command (program-file "my-noop-greeter" #~(exit))))
                    (greetd-terminal-configuration (terminal-vt "5"))
                    (greetd-terminal-configuration (terminal-vt "6"))))))
        ;; mingetty-service-type peut être utilisé en parallèle
        ;; si vous voulez faire cela, n'utilisez pas (delete login-service-type)
        ;; comme indiqué plus haut
        #| (service mingetty-service-type (mingetty-configuration (tty "tty8"))) |#))

note: type: deftp
en: {Data Type} greetd-configuration
fr: {Type de données} greetd-configuration

note: type: deftp
en: Configuration record for the @code{greetd-service-type}.
fr: La configuration pour @code{greetd-service-type}.

note: type: item
en: @code{terminals} (default: @code{'()})
fr: @code{terminal} (par défaut : @code{'()})

note: type: table
en: List of @code{greetd-terminal-configuration} per terminal for which @code{greetd} should be started.
fr: Liste de @code{greetd-terminal-configuration} par terminal pour lequel @code{greetd} doit démarrer.

note: type: item
en: @code{greeter-supplementary-groups} (default: @code{'()})
fr: @code{greeter-supplementary-groups} (par défaut : @code{'()})

note: type: table
en: List of groups which should be added to @code{greeter} user. For instance:
fr: Liste des groupes qui devraient être ajoutés à l'utilisateur @code{greeter}. Par exemple :

note: type: table
en: Note that this example will fail if @code{seat} group does not exist.
fr: Remarquez que cet exemple échouera si le groupe @code{seat} n'existe pas.

note: type: deftp
en: {Data Type} greetd-terminal-configuration
fr: {Type de données} greetd-terminal-configuration

note: type: deftp
en: Configuration record for per terminal greetd daemon service.
fr: Enregistrement de la configuration par terminal du service greetd.

note: type: item
en: @code{greetd} (default: @code{greetd})
fr: @code{greetd} (par défaut : @code{greetd})

note: type: table
en: The greetd package to use.
fr: Le paquet greetd à utiliser.

note: type: table
en: Configuration file name to use for greetd daemon. Generally, autogenerated derivation based on @code{terminal-vt} value.
fr: Nom du fichier de configuration utilisé pour le démon greetd. En général, c'est une dérivation générée à partir de la valeur de @code{terminal-vt}.

note: type: table
en: Log file name to use for greetd daemon. Generally, autogenerated name based on @code{terminal-vt} value.
fr: Nom du fichier de journalisation utilisé par le démon greetd. En général, c'est un nom généré à partir de la valeur de @code{terminal-vt}.

note: type: item
en: @code{terminal-vt} (default: @samp{"7"})
fr: @code{terminal-vt} (par défaut : @samp{"7"})

note: type: table
en: The VT to run on. Use of a specific VT with appropriate conflict avoidance is recommended.
fr: Le terminal virtuel sur lequel tourner. L'utilisation d'un VT spécifique en évitant les conflits est recommandé.

note: type: item
en: @code{terminal-switch} (default: @code{#f})
fr: @code{terminal-switch} (par défaut : @code{#f})

note: type: table
en: Make this terminal active on start of @code{greetd}.
fr: Rend ce terminal actif au démarrage de @code{greetd}.

note: type: item
en: @code{default-session-user} (default: @samp{"greeter"})
fr: @code{default-session-user} (par défaut : @samp{"greeter"})

note: type: table
en: The user to use for running the greeter.
fr: L'utilisateur à utiliser pour lancer l'écran d'accueil.

note: type: item
en: @code{default-session-command} (default: @code{(greetd-agreety-session)})
fr: @code{default-session-command} (par défaut : @code{(greetd-agreety-session)})

note: type: table
en: Can be either instance of @code{greetd-agreety-session} configuration or @code{gexp->script} like object to use as greeter.
fr: Peut être soit une instance d'une configuration @code{greetd-agreety-session} ou un objet comme @code{gexp->script} à utiliser comme écran d'accueil.

note: type: deftp
en: {Data Type} greetd-agreety-session
fr: {Type de données} greetd-agreety-session

note: type: deftp
en: Configuration record for the agreety greetd greeter.
fr: Enregistrement de la configuration de l'écran d'accueil agreety de greetd.

note: type: item
en: @code{agreety} (default: @code{greetd})
fr: @code{agreety} (par défaut : @code{greetd})

note: type: table
en: The package with @command{/bin/agreety} command.
fr: Le paquet dans lequel se trouve la commande @command{/bin/agreety}.

note: type: item
en: @code{command} (default: @code{(file-append bash "/bin/bash")})
fr: @code{command} (par défaut : @code{(file-append bash "/bin/bash"})

note: type: table
en: Command to be started by @command{/bin/agreety} on successful login.
fr: La commande à démarrer par @command{/bin/agreety} si la connexion réussi.

note: type: item
en: @code{command-args} (default: @code{'("-l")})
fr: @code{command-args} (par défaut : @code{'("-l")})

note: type: table
en: Command arguments to pass to command.
fr: Les arguments à passer à la commande.

note: type: item
en: @code{extra-env} (default: @code{'()})
fr: @code{extra-env} (par défaut : @code{'()})

note: type: table
en: Extra environment variables to set on login.
fr: Variables d'environnement supplémentaires à définir à la connexion.

note: type: item
en: @code{xdg-env?} (default: @code{#t})
fr: @code{xdg-env?} (par défaut : @code{#t})

note: type: table
en: If true @code{XDG_RUNTIME_DIR} and @code{XDG_SESSION_TYPE} will be set before starting command. One should note that, @code{extra-env} variables are set right after mentioned variables, so that they can be overriden.
fr: Si la valeur est vraie, @code{XDG_RUNTIME_DIR} et @code{XDG_SESSION_TYPE} seront initialisés avant de démarrer la commande. Il faut remarquer que les variables @code{extra-env} sont initialisées juste après les variables mentionnées, donc elles peuvent être écrasées.

note: type: deftp
en: {Data Type} greetd-wlgreet-session
fr: {Type de données} greetd-wlgreet-session

note: type: deftp
en: Generic configuration record for the wlgreet greetd greeter.
fr: Enregistrement de configuration générique de l'écran d'accueil wlgreet de greetd.

note: type: item
en: @code{wlgreet} (default: @code{wlgreet})
fr: @code{wlgreet} (par défaut : @code{wlgreet})

note: type: table
en: The package with the @command{/bin/wlgreet} command.
fr: Le paquet dans lequel se trouve la commande @command{/bin/wlgreet}.

note: type: item
en: @code{command} (default: @code{(file-append sway "/bin/sway")})
fr: @code{command} (par défaut : @code{(file-append sway "/bin/sway"})

note: type: table
en: Command to be started by @command{/bin/wlgreet} on successful login.
fr: La commande à démarrer par @command{/bin/wlgreet} si la connexion réussi.

note: type: item
en: @code{command-args} (default: @code{'()})
fr: @code{command-args} (par défaut : @code{'()})

note: type: item
en: @code{output-mode} (default: @code{"all"})
fr: @code{output-mode} (par défaut : @code{"all"})

note: type: table
en: Option to use for @code{outputMode} in the TOML configuration file.
fr: Option à utiliser pour @code{outputMode} dans le fichier de configuration TOML.

note: type: item
en: @code{scale} (default: @code{1})
fr: @code{sclae} (par défaut : @code{1})

note: type: table
en: Option to use for @code{scale} in the TOML configuration file.
fr: Option à utiliser pour @code{scale} dans le fichier de configuration TOML.

note: type: item
en: @code{background} (default: @code{'(0 0 0 0.9)})
fr: @code{background} (par défaut : @code{'(0 0 0 0.9)})

note: type: table
en: RGBA list to use as the background colour of the login prompt.
fr: Liste RGBA à utiliser comme couleur de fond pour l'invite de connexion.

note: type: item
en: @code{headline} (default: @code{'(1 1 1 1)})
fr: @code{headline} (par défaut : @code{'(1 1 1 1)})

note: type: table
en: RGBA list to use as the headline colour of the UI popup.
fr: Liste RGBA à utiliser comme couleur de titre dans la popup.

note: type: item
en: @code{prompt} (default: @code{'(1 1 1 1)})
fr: @code{prompt} (par défaut : @code{'(1 1 1 1)})

note: type: table
en: RGBA list to use as the prompt colour of the UI popup.
fr: Liste RGBA à utiliser comme couleur d'invite dans la popup.

note: type: item
en: @code{prompt-error} (default: @code{'(1 1 1 1)})
fr: @code{prompt-error} (par défaut : @code{'(1 1 1 1)})

note: type: table
en: RGBA list to use as the error colour of the UI popup.
fr: Liste RGBA à utiliser comme couleur d'erreur dans la popup.

note: type: item
en: @code{border} (default: @code{'(1 1 1 1)})
fr: @code{border} (par défaut : @code{'(1 1 1 1)})

note: type: table
en: RGBA list to use as the border colour of the UI popup.
fr: Liste RGBA à utiliser comme couleur de bordure de la popup.

note: type: deftp
en: {Data Type} greetd-wlgreet-sway-session
fr: {Type de données} greetd-wlgreet-sway-session

note: type: deftp
en: Sway-specific configuration record for the wlgreet greetd greeter.
fr: Enregistrement de la configuration spécifique à sway, de l'écran d'accueil wlgreet de greetd.

note: type: item
en: @code{wlgreet-session} (default: @code{(greetd-wlgreet-session)})
fr: @code{wlgreet-session} (par défaut : @code{(greetd-wlgreet-session)})

note: type: table
en: A @code{greetd-wlgreet-session} record for generic wlgreet configuration, on top of the Sway-specific @code{greetd-wlgreet-sway-session}.
fr: Un enregistrement @code{greetd-wlgreet-session} pour la configuration générale de wlgreet, en plus du @code{greetd-wlgreet-sway-session} spécifique à Sway.

note: type: item
en: @code{sway} (default: @code{sway})
fr: @code{sway} (par défaut : @code{sway})

note: type: table
en: The package providing the @command{/bin/sway} command.
fr: Le paquet qui fournit la commande @command{/bin/sway}.

note: type: item
en: @code{sway-configuration} (default: #f)
fr: @code{sway-configuration} (par défaut : @code{#f})

note: type: table
en: File-like object providing an additional Sway configuration file to be prepended to the mandatory part of the configuration.
fr: Objet simili-fichier qui fournit un fichier de configuration Sway supplémentaire à ajouter au début de la partie obligatoire de la configuration.

note: type: deftp
en: Here is an example of a greetd configuration that uses wlgreet and Sway:
fr: Voici un exemple de configuration de greetd qui utilise wlgreet et Sway :

note: type: lisp
en:   (greetd-configuration
       ;; We need to give the greeter user these permissions, otherwise
       ;; Sway will crash on launch.
       (greeter-supplementary-groups (list "video" "input" "seat"))
       (terminals
        (list (greetd-terminal-configuration
               (terminal-vt "1")
               (terminal-switch #t)
               (default-session-command
                (greetd-wlgreet-sway-session
                 (sway-configuration
                  (local-file "sway-greetd.conf"))))))))
fr:   (greetd-configuration
       ;; Nous devons donner ces permissions à l'utilisateur de l'écran d'accueil, sinon
       ;; Sway plantera au démarrage.
       (greeter-supplementary-groups (list "video" "input" "seat"))
       (terminals
        (list (greetd-terminal-configuration
               (terminal-vt "1")
               (terminal-switch #t)
               (default-session-command
                (greetd-wlgreet-sway-session
                 (sway-configuration
                  (local-file "sway-greetd.conf"))))))))

note: type: cindex
en: scheduling jobs
fr: tâches planifiées

note: type: Plain text
en: The @code{(gnu services mcron)} module provides an interface to GNU@tie{}mcron, a daemon to run jobs at scheduled times (@pxref{Top,,, mcron, GNU@tie{}mcron}).  GNU@tie{}mcron is similar to the traditional Unix @command{cron} daemon; the main difference is that it is implemented in Guile Scheme, which provides a lot of flexibility when specifying the scheduling of jobs and their actions.
fr: Le module @code{(gnu services mcron)} fournit une interface pour GNU@tie{}mcron, un démon qui lance des tâches planifiées (@pxref{Top,,, mcron, GNU@tie{}mcron}).  GNU@tie{}mcron est similaire au démon Unix traditionnel @command{cron} ; la principale différence est qu'il est implémenté en Guile Scheme, qui fournit beaucoup de flexibilité lors de la spécification de la planification des tâches et de leurs actions.

note: type: Plain text
en: The example below defines an operating system that runs the @command{updatedb} (@pxref{Invoking updatedb,,, find, Finding Files})  and the @command{guix gc} commands (@pxref{Invoking guix gc}) daily, as well as the @command{mkid} command on behalf of an unprivileged user (@pxref{mkid invocation,,, idutils, ID Database Utilities}).  It uses gexps to introduce job definitions that are passed to mcron (@pxref{G-Expressions}).
fr: L'exemple en dessous définit un système d'exploitation qui lance les commandes @command{updatebd} (@pxref{Invoking updatedb,,, find, Finding Files}) et @command{guix gc} (@pxref{Invoking guix gc}) tous les jours, ainsi que la commande @command{mkid} en tant qu'utilisateur non privilégié (@pxref{mkid invocation,,, idutils, ID Database Utilities}).  Il utilise des gexps pour introduire des définitions de tâches qui sont passées à mcron (@pxref{G-Expressions}).

note: type: lisp
en: (define updatedb-job
      ;; Run 'updatedb' at 3AM every day.  Here we write the
      ;; job's action as a Scheme procedure.
      #~(job '(next-hour '(3))
             (lambda ()
               (system* (string-append #$findutils "/bin/updatedb")
                        "--prunepaths=/tmp /var/tmp /gnu/store"))
             "updatedb"))
fr: (define updatedb-job
      ;; Lance « updatedb » à 3h du matin chaque jour.  Ici nous spécifions
      ;; l'action de la tâche comme une procédure Scheme.
      #~(job '(next-hour '(3))
             (lambda ()
               (system* (string-append #$findutils "/bin/updatedb")
                      "--prunepaths=/tmp /var/tmp /gnu/store"))
             "updatedb"))

note: type: lisp
en: (define garbage-collector-job
      ;; Collect garbage 5 minutes after midnight every day.
      ;; The job's action is a shell command.
      #~(job "5 0 * * *"            ;Vixie cron syntax
             "guix gc -F 1G"))
fr: (define garbage-collector-job
      ;; Lance le ramasse-miettes tous les jours à minuit cinq.
      ;; L'action de la tâche est une commande shell.
      #~(job "5 0 * * *"            ;Vixie cron syntax
             "guix gc -F 1G"))

note: type: lisp
en: (define idutils-job
      ;; Update the index database as user "charlie" at 12:15PM
      ;; and 19:15PM.  This runs from the user's home directory.
      #~(job '(next-minute-from (next-hour '(12 19)) '(15))
             (string-append #$idutils "/bin/mkid src")
             #:user "charlie"))
fr: (define idutils-job
      ;; Met à jour la base de données d'index en tant que « charlie » à 12h15
      ;; et 19h15.  La commande est lancée depuis le répertoire personnel de l'utilisateur.
      #~(job '(next-minute-from (next-hour '(12 19)) '(15))
             (string-append #$idutils "/bin/mkid src")
             #:user "charlie"))

note: type: lisp
en:   ;; %BASE-SERVICES already includes an instance of
      ;; 'mcron-service-type', which we extend with additional
      ;; jobs using 'simple-service'.
      (services (cons (simple-service 'my-cron-jobs
                                       mcron-service-type
                                       (list garbage-collector-job
                                             updatedb-job
                                             idutils-job))
                      %base-services)))
fr:   ;; %BASE-SERVICES inclus déjà une instance de
      ;; « mcron-service-type », que nous étendons avec un
      ;; travail supplémentaire avec « simple-service ».
      (services (cons (simple-service 'my-cron-jobs
                                       mcron-service-type
                                       (list garbage-collector-job
                                             updatedb-job
                                             idutils-job))
                      %base-services)))

note: type: quotation
en: When providing the action of a job specification as a procedure, you should provide an explicit name for the job via the optional 3rd argument as done in the @code{updatedb-job} example above.  Otherwise, the job would appear as ``Lambda function'' in the output of @command{herd schedule mcron}, which is not nearly descriptive enough!
fr: Lorsque vous fournissez l'action d'une spécification de tâche avec une procédure, vous devriez donner un nom explicite à la tâche via le troisième argument facultatif comme dans l'exemple @code{updatedb-job} ci-dessus. Sinon, la tâche apparaitra comme « Lambda function » dans la sortie de @command{herd schedule mcron}, ce qui n'est pas très descriptif !

note: type: quotation
en: Avoid calling the Guile procedures @code{execl}, @code{execle} or @code{execlp} inside a job specification, else mcron won't be able to output the completion status of the job.
fr: Évitez d'appeler les procédures Guile @code{execl}, @code{execle} et @code{execlp} dans la spécification des tâches sinon mcron ne pourra pas afficher le statut complet de la tâche.

note: type: Plain text
en: For more complex jobs defined in Scheme where you need control over the top level, for instance to introduce a @code{use-modules} form, you can move your code to a separate program using the @code{program-file} procedure of the @code{(guix gexp)} module (@pxref{G-Expressions}).  The example below illustrates that.
fr: Pour les tâches plus complexes définies dans Scheme où vous devez contrôler le haut niveau, par exemple pour introduire un formulaire @code{use-modules}, vous pouvez déplacer votre code vers un programme séparé en utilisant la procédure @code{program-file} du module @code{(guix gexp)} (@pxref{G-Expressions}).  L'exemple ci-dessous illustre cette possibilité.

note: type: lisp
en:               (setenv "LC_ALL" "C")     ;ensure English output
                  (and-let* ((input-pipe (open-pipe*
                                          OPEN_READ
                                          #$(file-append acpi "/bin/acpi")))
                             (output (get-string-all input-pipe))
                             (m (string-match "Discharging, ([0-9]+)%" output))
                             (level (string->number (match:substring m 1)))
                             ((< level %min-level)))
                    (format #t "warning: Battery level is low (~a%)~%" level)
                    (invoke #$(file-append beep "/bin/beep") "-r5")))))))
fr:               (setenv "LC_ALL" "C")     ; assure que la sortie est en anglais
                  (and-let* ((input-pipe (open-pipe*
                                          OPEN_READ
                                          #$(file-append acpi "/bin/acpi")))
                             (output (get-string-all input-pipe))
                             (m (string-match "Discharging, ([0-9]+)%" output))
                             (level (string->number (match:substring m 1)))
                             ((< level %min-level)))
                    (format #t "warning: Battery level is low (~a%)~%" level)
                    (invoke #$(file-append beep "/bin/beep") "-r5")))))))

note: type: Plain text
en: @xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}, for more information on mcron job specifications.  Below is the reference of the mcron service.
fr: @xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}, pour plus d'informations sur les spécifications des tâche de mcron.  Ci-dessous est la référence du service mcron.

note: type: Plain text
en: On a running system, you can use the @code{schedule} action of the service to visualize the mcron jobs that will be executed next:
fr: Sur un système lancé, vous pouvez utiliser l'action @code{schedule} du service pour visualiser les travaux mcron qui seront exécutés ensuite :

note: type: Plain text
en: The example above lists the next five tasks that will be executed, but you can also specify the number of tasks to display:
fr: Cet exemple ci-dessus montre les cinq tâches qui seront exécutés, mais vous pouvez spécifier le nombre de tâches à afficher :

note: type: defvr
en: {Scheme Variable} mcron-service-type
fr: {Variable Scheme} mcron-service-type

note: type: defvr
en: This is the type of the @code{mcron} service, whose value is an @code{mcron-configuration} object.
fr: C'est le type du service @code{mcron}, dont la valeur est un objet @code{mcron-configuration}.

note: type: defvr
en: This service type can be the target of a service extension that provides additional job specifications (@pxref{Service Composition}).  In other words, it is possible to define services that provide additional mcron jobs to run.
fr: Ce type de service peut être la cible d'une extension de service qui fournit des spécifications de tâches supplémentaires (@pxref{Service Composition}).  En d'autres termes, il est possible de définir des services qui fournissent des tâches mcron à lancer.

note: type: deftp
en: {Data Type} mcron-configuration
fr: {Type de données} mcron-configuration

note: type: deftp
en: Available @code{mcron-configuration} fields are:
fr: Les champs de @code{mcron-configuration} disponibles sont :

note: type: item
en: @code{mcron} (default: @code{mcron}) (type: file-like)
fr: @code{mcron} (par défaut : @code{mcron}) (type : simili-fichier)

note: type: table
en: The mcron package to use.
fr: Le paquet mcron à utiliser.

note: type: item
en: @code{jobs} (default: @code{()}) (type: list-of-gexps)
fr: @code{jobs} (par défaut : @code{()}) (type : liste-de-gexps)

note: type: table
en: This is a list of gexps (@pxref{G-Expressions}), where each gexp corresponds to an mcron job specification (@pxref{Syntax, mcron job specifications,, mcron,GNU@tie{}mcron}).
fr: C'est la liste des gexps (@pxref{G-Expressions}), où chaque gexp correspond à une spécification de tâche de mcron (@pxref{Syntax, mcron job specifications,, mcron,GNU@tie{}mcron}).

note: type: item
en: @code{log?} (default: @code{#t}) (type: boolean)
fr: @code{log?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Log messages to standard output.
fr: Journalise les messages sur la sortie standard.

note: type: item
en: @code{log-format} (default: @code{"~1@@*~a ~a: ~a~%"}) (type: string)
fr: @code{log-format} (par défaut : @code{"~1@@*~a ~a: ~a~%"}) (type : chaine)

note: type: table
en: @code{(ice-9 format)} format string for log messages.  The default value produces messages like "@samp{@var{pid} @var{name}: @var{message}"} (@pxref{Invoking mcron, Invoking,, mcron,GNU@tie{}mcron}).  Each message is also prefixed by a timestamp by GNU Shepherd.
fr: Chaine de format @code{(ice-9 format)} pour les message de journaux. La valeur par défaut produit des messages de type « @samp{@var{pid} @var{name}: @var{message}} » (@pxref{Invoking mcron, Invoking,, mcron,GNU@tie{}mcron}). Chaque message est aussi préfixé par un horodatage par le GNU@tie{}Shepherd.

note: type: cindex
en: log rotation
fr: journaux, rotation

note: type: Plain text
en: Log files such as those found in @file{/var/log} tend to grow endlessly, so it's a good idea to @dfn{rotate} them once in a while---i.e., archive their contents in separate files, possibly compressed.  The @code{(gnu services admin)} module provides an interface to GNU@tie{}Rot[t]log, a log rotation tool (@pxref{Top,,, rottlog, GNU Rot[t]log Manual}).
fr: Les fichiers journaux comme ceux qui se trouvent dans @file{/var/log} ont tendance à grandir sans fin, donc c'est une bonne idée de le @dfn{faire tourner} de temps à autres — c.-à-d.@: archiver leur contenu dans des fichiers séparés, potentiellement compressés.  Le module @code{(gnu services admin)} fournit une interface pour GNU@tie{}Rot[t]log, un outil de rotation de journaux (@pxref{Top,,, rottlog, GNU Rot[t]log Manual}).

note: type: Plain text
en: This service is part of @code{%base-services}, and thus enabled by default, with the default settings, for commonly encountered log files.  The example below shows how to extend it with an additional @dfn{rotation}, should you need to do that (usually, services that produce log files already take care of that):
fr: Ce service fait partie de @code{%base-services}, et se trouve donc activé par défaut, avec les paramètres par défaut, pour les fichiers journaux les plus fréquemment rencontrés.  L'exemple ci-dessous montre comment l'étendre avec une @dfn{rotation} supplémentaire, si vous devez le faire (généralement, les services qui produisent des fichiers journaux s'en chargent déjà) :

note: type: lisp
en: (define my-log-files
      ;; Log files that I want to rotate.
      '("/var/log/something.log" "/var/log/another.log"))
fr: (define my-log-files
      ;; Journaux que je veux faire tourner.
      '("/var/log/something.log" "/var/log/another.log"))

note: type: defvr
en: {Scheme Variable} rottlog-service-type
fr: {Variable Scheme} rottlog-service-type

note: type: defvr
en: This is the type of the Rottlog service, whose value is a @code{rottlog-configuration} object.
fr: C'est le type du service Rotlog, dont la valeur est un objet @code{rottlog-configuration}.

note: type: defvr
en: Other services can extend this one with new @code{log-rotation} objects (see below), thereby augmenting the set of files to be rotated.
fr: D'autres services peuvent étendre celui-ci avec de nouveaux objets @code{log-rotation} (voir plus bas), en augmentant ainsi l'ensemble des fichiers à faire tourner.

note: type: defvr
en: This service type can define mcron jobs (@pxref{Scheduled Job Execution}) to run the rottlog service.
fr: Ce type de service peut définir des tâches (@pxref{Scheduled Job Execution}) pour lancer le service rottlog.

note: type: deftp
en: {Data Type} rottlog-configuration
fr: {Type de données} rottlog-configuration

note: type: deftp
en: Data type representing the configuration of rottlog.
fr: Type de données représentant la configuration de rottlog.

note: type: item
en: @code{rottlog} (default: @code{rottlog})
fr: @code{rottlog} (par défaut : @code{rottlog})

note: type: table
en: The Rottlog package to use.
fr: Le paquet Rottlog à utiliser.

note: type: item
en: @code{rc-file} (default: @code{(file-append rottlog "/etc/rc")})
fr: @code{rc-file} (par défaut : @code{(file-append rottlog "/etc/rc")})

note: type: table
en: The Rottlog configuration file to use (@pxref{Mandatory RC Variables,,, rottlog, GNU Rot[t]log Manual}).
fr: Le fichier de configuration Rottlog à utiliser (@pxref{Mandatory RC Variables,,, rottlog, GNU Rot[t]log Manual}).

note: type: item
en: @code{rotations} (default: @code{%default-rotations})
fr: @code{rotations} (par défaut : @code{%default-rotations})

note: type: table
en: A list of @code{log-rotation} objects as defined below.
fr: Une liste d'objets @code{log-rotation} définis plus bas.

note: type: table
en: This is a list of gexps where each gexp corresponds to an mcron job specification (@pxref{Scheduled Job Execution}).
fr: C'est une liste de gexps où chaque gexp correspond à une spécification de tâche de mcron (@pxref{Scheduled Job Execution}).

note: type: deftp
en: {Data Type} log-rotation
fr: {Type de données} log-rotation

note: type: deftp
en: Data type representing the rotation of a group of log files.
fr: Type de données représentant la rotation d'un groupe de fichiers journaux.

note: type: deftp
en: Taking an example from the Rottlog manual (@pxref{Period Related File Examples,,, rottlog, GNU Rot[t]log Manual}), a log rotation might be defined like this:
fr: En reprenant un exemple du manuel de Rottlog (@pxref{Period Related File Examples,,, rottlog, GNU Rot[t]log Manual}), on peut définir la rotation d'un journal de cette manière :

note: type: deftp
en: The list of fields is as follows:
fr: La liste des champs est la suivante :

note: type: item
en: @code{frequency} (default: @code{'weekly})
fr: @code{frequency} (par défaut : @code{'weekly})

note: type: table
en: The log rotation frequency, a symbol.
fr: La fréquence de rotation, un symbole.

note: type: table
en: The list of files or file glob patterns to rotate.
fr: La liste des fichiers ou des motifs de noms de fichiers à faire tourner.

note: type: item
en: @code{options} (default: @code{%default-log-rotation-options})
fr: @code{options} (par défaut : @code{%default-log-rotation-options})

note: type: table
en: The list of rottlog options for this rotation (@pxref{Configuration parameters,,, rottlog, GNU Rot[t]log Manual}).
fr: La liste des options de rottlog pour cette rotation (@pxref{Configuration parameters,,, rottlog, GNU Rot[t]log Manual}).

note: type: item
en: @code{post-rotate} (default: @code{#f})
fr: @code{post-rotate} (par défaut : @code{#f})

note: type: table
en: Either @code{#f} or a gexp to execute once the rotation has completed.
fr: Soit @code{#f}, soit une gexp à exécuter une fois la rotation terminée.

note: type: defvr
en: {Scheme Variable} %default-rotations
fr: {Variable Scheme} %default-rotations

note: type: defvr
en: Specifies weekly rotation of @code{%rotated-files} and of @file{/var/log/guix-daemon.log}.
fr: Spécifie la rotation hebdomadaire de @code{%rotated-files} et de @file{/var/log/guix-daemon.log}.

note: type: defvr
en: {Scheme Variable} %rotated-files
fr: {Variable Scheme} %rotated-files

note: type: defvr
en: The list of syslog-controlled files to be rotated.  By default it is: @code{'("/var/log/messages" "/var/log/secure" "/var/log/debug" \ "/var/log/maillog")}.
fr: La liste des fichiers contrôlés par syslog à faire tourner.  Par défaut il s'agit de : @code{'("/var/log/messages" "/var/log/secure" "/var/log/debug" \ "/var/log/maillog")}.

note: type: Plain text
en: Some log files just need to be deleted periodically once they are old, without any other criterion and without any archival step.  This is the case of build logs stored by @command{guix-daemon} under @file{/var/log/guix/drvs} (@pxref{Invoking guix-daemon}).  The @code{log-cleanup} service addresses this use case.  For example, @code{%base-services} (@pxref{Base Services}) includes the following:
fr: Certains fichiers journaux doivent simplement être supprimés périodiquement quand ils deviennent trop vieux, sans autre critère et sans étape d'archivage. C'est le cas des journaux de construction stockés par @command{guix-daemon} dans @file{/var/log/guix/drvs} (@pxref{Invoking guix-daemon}). Le service @code{log-cleanup} gère ce cas. Par exemple, @code{%base-services} (@pxref{Base Services}) inclus ce qui suit :

note: type: lisp
en: ;; Periodically delete old build logs.
    (service log-cleanup-service-type
             (log-cleanup-configuration
              (directory "/var/log/guix/drvs")))
fr: ;; Supprime régulièrement les anciens journaux de construction.
    (service log-cleanup-service-type
             (log-cleanup-configuration
              (directory "/var/log/guix/drvs")))

note: type: Plain text
en: That ensures build logs do not accumulate endlessly.
fr: Cela s'assure que les journaux de construction ne s'accumulent pas sans fin.

note: type: defvr
en: {Scheme Variable} log-cleanup-service-type
fr: {Variable Scheme} log-cleanup-service-type

note: type: defvr
en: This is the type of the service to delete old logs.  Its value must be a @code{log-cleanup-configuration} record as described below.
fr: C'est le type du service pour supprimer les anciens journaux.  Sa valeur doit être un enregistrement @code{log-cleanup-configuration}, décrit ci-dessous.

note: type: deftp
en: {Data Type} log-cleanup-configuration
fr: {Type de données} log-cleanup-configuration

note: type: deftp
en: Data type representing the log cleanup configuration
fr: Type de données représentant la configuration de nettoyage des journaux

note: type: table
en: Name of the directory containing log files.
fr: Nom du répertoire contenant les fichiers journaux.

note: type: item
en: @code{expiry} (default: @code{(* 6 30 24 3600)})
fr: @code{expiry} (par défaut : @code{(* 6 30 24 3600)})

note: type: table
en: Age in seconds after which a file is subject to deletion (six months by default).
fr: Âge en secondes après lequel un fichier peut être supprimé (six moins par défaut).

note: type: item
en: @code{schedule} (default: @code{"30 12 01,08,15,22 * *"})
fr: @code{schedule} (par défaut : @code{"30 12 01,08,15,22 * *"})

note: type: table
en: String or gexp denoting the corresponding mcron job schedule (@pxref{Scheduled Job Execution}).
fr: Chaine ou gexp dénotant la date de la tâche mcron correspondant (@pxref{Scheduled Job Execution}).

note: type: cindex
en: logging, anonymization
fr: journalisation, anonymisation

note: type: subheading
en: Anonip Service
fr: Service Anonip

note: type: Plain text
en: Anonip is a privacy filter that removes IP address from web server logs.  This service creates a FIFO and filters any written lines with anonip before writing the filtered log to a target file.
fr: Anonip est un filtre pour la vie privée qui supprime les adresses IP des journaux des serveurs web. Ce service crée une FIFO et filtre toutes les lignes écrite avec anonip avant d'écrire les journaux filtrés dans un fichier cible.

note: type: Plain text
en: The following example sets up the FIFO @file{/var/run/anonip/https.access.log} and writes the filtered log file @file{/var/log/anonip/https.access.log}.
fr: L'exemple suivant configure la FIFO @file{/var/run/anonip/https.access.log} et écrit le fichier journal filtré dans @file{/var/log/anonip/https.access.log}.

note: type: Plain text
en: Configure your web server to write its logs to the FIFO at @file{/var/run/anonip/https.access.log} and collect the anonymized log file at @file{/var/web-logs/https.access.log}.
fr: Configurez votre serveur web pour écrire ses journaux dans la FIFO @file{/var/run/anonip/https.access.log} et récupérez les fichiers journaux anonymisés dans @file{/var/web-logs/https.access.log}.

note: type: deftp
en: {Data Type} anonip-configuration
fr: {Type de données} anonip-configuration

note: type: deftp
en: This data type represents the configuration of anonip.  It has the following parameters:
fr: Ce type de données représente la configuration d'anonip.  Il a les paramètres suivants :

note: type: item
en: @code{anonip} (default: @code{anonip})
fr: @code{anonip} (par défaut : @code{anonip})

note: type: table
en: The anonip package to use.
fr: Le paquet anonip à utiliser.

note: type: table
en: The file name of the input log file to process.  The service creates a FIFO of this name.  The web server should write its logs to this FIFO.
fr: Le nom de fichier du fichier journal d'entrée à traiter. Le service crée une FIFO de ce nom. Le serveur web doit écrire ses journaux dans cette FIFO.

note: type: table
en: The file name of the processed log file.
fr: Le nom du fichier journal traité.

note: type: deftp
en: The following optional settings may be provided:
fr: Les réglages facultatifs suivants peuvent être fournis :

note: type: table
en: When @code{#true} do not mask addresses in private ranges.
fr: Lorsque la valeur est @code{#true}, ne masque pas les adresses dans les plages privées.

note: type: table
en: A 1-based indexed column number.  Assume IP address is in the specified column (default is 1).
fr: Un numéro de colonne commençant par 1 pour la première colonne. Suppose que l'adresse IP est dans la colonne donnée (1 par défaut).

note: type: table
en: Replacement string in case address parsing fails, e.g. @code{"0.0.0.0"}.
fr: Chaine de remplacement au cas où l'analyse de l'adresse échoue, p.@: ex.@: @code{"0.0.0.0"}.

note: type: table
en: Number of bits to mask in IPv4 addresses.
fr: Nombre de bits à masquer dans les adresses IPv4.

note: type: table
en: Number of bits to mask in IPv6 addresses.
fr: Nombre de bits à masquer dans les adresses IPv6.

note: type: table
en: Increment the IP address by the given number.  By default this is zero.
fr: Incrémente l'adresse IP par le nombre donné. La valeur par défaut est zéro.

note: type: table
en: Log delimiter string.
fr: Chaine de délimitation des journaux.

note: type: table
en: Regular expression for detecting IP addresses.  Use this instead of @code{column}.
fr: Expression régulière pour détecter l'adresse IP. À utiliser à la place de @code{column}.

note: type: Plain text
en: The @code{(gnu services networking)} module provides services to configure network interfaces and set up networking on your machine.  Those services provide different ways for you to set up your machine: by declaring a static network configuration, by running a Dynamic Host Configuration Protocol (DHCP) client, or by running daemons such as NetworkManager and Connman that automate the whole process, automatically adapt to connectivity changes, and provide a high-level user interface.
fr: Le module @code{(gnu services networking)} fournit des services pour configurer les interfaces réseau et paramétrer le réseau sur votre machine. Ces services fournissent différentes manière pour paramétrer votre machine : en déclarant une configuration réseau statique, en lançant un client DHCP (Dynamic Host Configuration Protocol) ou en lançant des démon comme NetworkManager et Connman qui automatisent le processus complet, en s'adaptant automatiquement aux changements de connectivité et en fournissant une interface utilisateur de haut niveau.

note: type: Plain text
en: On a laptop, NetworkManager and Connman are by far the most convenient options, which is why the default desktop services include NetworkManager (@pxref{Desktop Services, @code{%desktop-services}}).  For a server, or for a virtual machine or a container, static network configuration or a simple DHCP client are often more appropriate.
fr: Sur un portable, NetworkManager et Connman sont de loin les options les plus pratiques, ce qui explique que les services de bureau par défaut incluent NetworkManager @pxref{Desktop Services, @code{%desktop-services}}). Pour un serveur, une machine virtuelle ou un conteneur, la configuration réseau statique ou un simple client DHCP sont plus souvent mieux appropriés.

note: type: Plain text
en: This section describes the various network setup services available, starting with static network configuration.
fr: Cette section décrit les divers services de paramétrage réseau existants, en commençant par le configuration réseau statique.

note: type: defvr
en: {Scheme Variable} static-networking-service-type
fr: {Variable Scheme} static-networking-service-type

note: type: defvr
en: This is the type for statically-configured network interfaces.  Its value must be a list of @code{static-networking} records.  Each of them declares a set of @dfn{addresses}, @dfn{routes}, and @dfn{links}, as shown below.
fr: C'est le type pour les interfaces réseaux configurées statiquement. Sa valeur doit être une liste d'enregistrements @code{static-networking}. Chacun déclare un ensemble d'@dfn{adresses}, de @dfn{routes} et de @dfn{liens}, comme indiqué plus bas.

note: type: cindex
en: network interface controller (NIC)
fr: contrôleur d'interface réseau (NIC)

note: type: cindex
en: NIC, networking interface controller
fr: NIC, contrôleur d'interface réseau

note: type: defvr
en: Here is the simplest configuration, with only one network interface controller (NIC) and only IPv4 connectivity:
fr: Voici la plus simple des configurations, avec un seul contrôleur d'interface réseau (NIC) et une seule connectivité IPv4 :

note: type: lisp
en: ;; Static networking for one NIC, IPv4-only.
    (service static-networking-service-type
             (list (static-networking
                    (addresses
                     (list (network-address
                            (device "eno1")
                            (value "10.0.2.15/24"))))
                    (routes
                     (list (network-route
                            (destination "default")
                            (gateway "10.0.2.2"))))
                    (name-servers '("10.0.2.3")))))
fr: ;; Réseau statique pour un NIC, IPv4 uniquement.
    (service static-networking-service-type
             (list (static-networking
                    (addresses
                     (list (network-address
                            (device "eno1")
                            (value "10.0.2.15/24"))))
                    (routes
                     (list (network-route
                            (destination "default")
                            (gateway "10.0.2.2"))))
                    (name-servers '("10.0.2.3")))))

note: type: defvr
en: The snippet above can be added to the @code{services} field of your operating system configuration (@pxref{Using the Configuration System}).  It will configure your machine to have 10.0.2.15 as its IP address, with a 24-bit netmask for the local network---meaning that any 10.0.2.@var{x} address is on the local area network (LAN).  Traffic to addresses outside the local network is routed @i{via} 10.0.2.2.  Host names are resolved by sending domain name system (DNS) queries to 10.0.2.3.
fr: Le bout de code ci-dessus peut être ajouté au champ @code{services} de votre configuration du système d'exploitation (@pxref{Using the Configuration System}). Il configurera votre machine pour avoir l'adresse IP 10.0.2.15, avec un masque de sous-réseau de 24 bits pour le réseau local --- cela signifie que toutes les adresse 10.0.2.@var{x} sont sur le réseau local (LAN). Le trafic à destination d'adresses extérieures au réseau local est routé @i{via} 10.0.2.2. Les noms d'hôte sont résolus en envoyant des requêtes au système de nom de domaine (DNS) à 10.0.2.3.

note: type: deftp
en: {Data Type} static-networking
fr: {Type de données} static-networking

note: type: deftp
en: This is the data type representing a static network configuration.
fr: C'est le type de données représentant la configuration d'un réseau statique.

note: type: deftp
en: As an example, here is how you would declare the configuration of a machine with a single network interface controller (NIC) available as @code{eno1}, and with one IPv4 and one IPv6 address:
fr: Voici un exemple de la manière dont vous pouvez déclarer la configuration sur une machine avec un seul contrôleur d'interface réseau (NIC) disponible sous le nom @code{eno1} et avec une adresse IPv4 et une adresse IPv6 :

note: type: lisp
en: ;; Network configuration for one NIC, IPv4 + IPv6.
    (static-networking
     (addresses (list (network-address
                       (device "eno1")
                       (value "10.0.2.15/24"))
                      (network-address
                       (device "eno1")
                       (value "2001:123:4567:101::1/64"))))
     (routes (list (network-route
                    (destination "default")
                    (gateway "10.0.2.2"))
                   (network-route
                    (destination "default")
                    (gateway "2020:321:4567:42::1"))))
     (name-servers '("10.0.2.3")))
fr: ;; Configuration réseau pour un NIC, IPv4 + IPv6.
    (static-networking
     (addresses (list (network-address
                       (device "eno1")
                       (value "10.0.2.15/24"))
                      (network-address
                       (device "eno1")
                       (value "2001:123:4567:101::1/64"))))
     (routes (list (network-route
                    (destination "default")
                    (gateway "10.0.2.2"))
                   (network-route
                    (destination "default")
                    (gateway "2020:321:4567:42::1"))))
     (name-servers '("10.0.2.3")))

note: type: deftp
en: If you are familiar with the @command{ip} command of the @uref{https://wiki.linuxfoundation.org/networking/iproute2, @code{iproute2} package} found on Linux-based systems, the declaration above is equivalent to typing:
fr: Si vous connaissez la commande @command{ip} du @uref{https://wiki.linuxfoundation.org/networking/iproute2, paquet @code{iproute2}} qui se trouve sur les systèmes Linux, la déclaration ci-dessus est équivalente à exécuter :

note: type: deftp
en: Run @command{man 8 ip} for more info.  Venerable GNU/Linux users will certainly know how to do it with @command{ifconfig} and @command{route}, but we'll spare you that.
fr: Exécutez @command{man 8 ip} pour plus d'informations. Les utilisateurs et utilisatrices vétérans de GNU/Linux sauront sans doute comment le faire avec @command{ifconfig} et @command{route}, mais nous vous épargnons cela.

note: type: deftp
en: The available fields of this data type are as follows:
fr: Les champs disponibles pour ce type de données sont les suivants :

note: type: code{#1}
en: addresses
fr: adresses

note: type: itemx
en: @code{links} (default: @code{'()})
fr: @code{links} (par défaut : @code{'()})

note: type: itemx
en: @code{routes} (default: @code{'()})
fr: @code{routes} (par défaut : @code{'()})

note: type: table
en: The list of @code{network-address}, @code{network-link}, and @code{network-route} records for this network (see below).
fr: La liste de enregistrements @code{network-address}, @code{network-link} et @code{network-route} pour ce réseau (voir plus bas).

note: type: item
en: @code{name-servers} (default: @code{'()})
fr: @code{name-servers} (par défaut : @code{'()})

note: type: table
en: The list of IP addresses (strings) of domain name servers.  These IP addresses go to @file{/etc/resolv.conf}.
fr: La liste des adresses IP (chaines) des serveurs de nom de domaine. Ces adresses IP vont dans @file{/etc/resolv.conf}.

note: type: item
en: @code{provision} (default: @code{'(networking)})
fr: @code{provision} (par défaut : @code{'(networking)})

note: type: table
en: If true, this should be a list of symbols for the Shepherd service corresponding to this network configuration.
fr: Si la valeur est vraie, cela devrait être une liste de symboles pour le service Shepherd correspondant à cette configuration réseau.

note: type: item
en: @code{requirement} (default @code{'()})
fr: @code{requirement} (par défaut : @code{'()})

note: type: table
en: The list of Shepherd services depended on.
fr: La liste des services Shepherd dont celui-ci dépend.

note: type: deftp
en: {Data Type} network-address
fr: {Type de données} network-address

note: type: deftp
en: This is the data type representing the IP address of a network interface.
fr: C'est le type de données représentant l'adresse IP d'une interface réseau.

note: type: table
en: The name of the network interface for this address---e.g., @code{"eno1"}.
fr: Le nom de l'interface réseau pour cette adresse --- p.@: ex.@: @code{"eno1"}.

note: type: item
en: value
fr: valeur

note: type: table
en: The actual IP address and network mask, in @uref{https://en.wikipedia.org/wiki/CIDR#CIDR_notation, @acronym{CIDR, Classless Inter-Domain Routing} notation}, as a string.
fr: L'adresse IP effective et le masque de sous-réseau en @uref{https://fr.wikipedia.org/wiki/Adresse_IP#Agr%C3%A9gation_des_adresses, notation @acronym{CIDR, Classless Inter-Domain Routing}}, en tant que chaine de caractères.

note: type: table
en: For example, @code{"10.0.2.15/24"} denotes IPv4 address 10.0.2.15 on a 24-bit sub-network---all 10.0.2.@var{x} addresses are on the same local network.
fr: Par exemple, @code{"10.0.2.15/24"} dénote l'adresse IPv4 10 0 2 15 sur un sous-réseau de 24 bits --- toutes les adresses 10.0.2.@var{x} sont sur le même réseau local.

note: type: table
en: Whether @code{value} denotes an IPv6 address.  By default this is automatically determined.
fr: Indique si @code{value} dénote une adresse IPv6. Par défaut cela est déterminé automatiquement.

note: type: deftp
en: {Data Type} network-route
fr: {Type de données} network-route

note: type: deftp
en: This is the data type representing a network route.
fr: C'est le type de donnée représentant une route réseau.

note: type: table
en: The route destination (a string), either an IP address and network mask or @code{"default"} to denote the default route.
fr: La destination de la route (une chaine), soit une adresse IP et un masque de sous-réseau, soit @code{"default"} qui dénote la route par défaut.

note: type: item
en: @code{source} (default: @code{#f})
fr: @code{source} (par défaut : @code{#f})

note: type: table
en: The route source.
fr: Le source de la route.

note: type: item
en: @code{device} (default: @code{#f})
fr: @code{device} (par défaut : @code{#f})

note: type: table
en: The device used for this route---e.g., @code{"eno2"}.
fr: Le périphérique utilisé pour la route --- p.@: ex.@: @code{"eno2"}.

note: type: item
en: @code{ipv6?} (default: auto)
fr: @code{ipv6?} (par défaut : auto)

note: type: table
en: Whether this is an IPv6 route.  By default this is automatically determined based on @code{destination} or @code{gateway}.
fr: Indique si c'est une route IPv6. Par défaut cela est déterminé automatiquement en fonction de @code{destination} ou de @code{gateway}.

note: type: item
en: @code{gateway} (default: @code{#f})
fr: @code{gateway} (par défaut : @code{#f})

note: type: table
en: IP address (a string) through which traffic is routed.
fr: Adresse IP (une chaine) à travers laquelle le trafic est routé.

note: type: deftp
en: {Data Type} network-link
fr: {Type de données} network-link

note: type: deftp
en: Data type for a network link (@pxref{Link,,, guile-netlink, Guile-Netlink Manual}).
fr: Type de données pour un lien réseau (@pxref{Link,,, guile-netlink, le manuel de Guile-Netlink}).

note: type: table
en: The name of the link---e.g., @code{"v0p0"}.
fr: Le nom du lien --- p.@: ex.@: @code{"v0p0"}.

note: type: table
en: A symbol denoting the type of the link---e.g., @code{'veth}.
fr: Un symbole dénotant le type de lien — p.@: ex.@: @code{'veth}.

note: type: table
en: List of arguments for this type of link.
fr: La liste des arguments pour ce type de lien.

note: type: cindex
en: loopback device
fr: périphérique de rebouclage

note: type: defvr
en: {Scheme Variable} %loopback-static-networking
fr: {Variable Scheme} %loopback-static-networking

note: type: defvr
en: This is the @code{static-networking} record representing the ``loopback device'', @code{lo}, for IP addresses 127.0.0.1 and ::1, and providing the @code{loopback} Shepherd service.
fr: C'est l'enregistrement @code{static-networking} qui représente le « périphérique de rebouclage », @code{lo}, pour les adresses IP 127.0.0.1 et ::1, et qui fournit le service Shepherd @code{loopback}.

note: type: cindex
en: networking, with QEMU
fr: réseau, avec QEMU

note: type: cindex
en: QEMU, networking
fr: QEMU, réseau

note: type: defvr
en: {Scheme Variable} %qemu-static-networking
fr: {Variable Scheme} %qemu-static-networking

note: type: defvr
en: This is the @code{static-networking} record representing network setup when using QEMU's user-mode network stack on @code{eth0} (@pxref{Using the user mode network stack,,, QEMU, QEMU Documentation}).
fr: C'est l'enregistrement @code{static-networking} représentant la configuration réseau pour utiliser la pile réseau en mode utilisateur de QEMU sur @code{eth0} (@pxref{Using the user mode network stack,,, QEMU, la documentation de QEMU}).

note: type: cindex
en: DHCP, networking service
fr: DHCP, service réseau

note: type: defvr
en: {Scheme Variable} dhcp-client-service-type
fr: {Variable Scheme} dhcp-client-service-type

note: type: defvr
en: This is the type of services that run @var{dhcp}, a Dynamic Host Configuration Protocol (DHCP) client.
fr: C'est le type de services qui lance @var{dhcp}, un client DHCP (protocole de configuration d'hôte dynamique).

note: type: deftp
en: {Data Type} dhcp-client-configuration
fr: {Type de données} dhcp-client-configuration

note: type: deftp
en: Data type representing the configuration of the DHCP client service.
fr: Le type de données représentant la configuration du service client DHCP.

note: type: item
en: @code{package} (default: @code{isc-dhcp})
fr: @code{package} (par défaut : @code{isc-dhcp})

note: type: table
en: DHCP client package to use.
fr: Le paquet du client DHCP à utiliser.

note: type: item
en: @code{interfaces} (default: @code{'all})
fr: @code{interfaces} (par défaut : @code{'all})

note: type: table
en: Either @code{'all} or the list of interface names that the DHCP client should listen on---e.g., @code{'("eno1")}.
fr: Soit @code{'all}, soit la liste des noms d'interface sur lesquelles le client DHCP devrait écouter — p.@: ex.@: @code{'("eno1")}.

note: type: table
en: When set to @code{'all}, the DHCP client listens on all the available non-loopback interfaces that can be activated.  Otherwise the DHCP client listens only on the specified interfaces.
fr: Lorsque la valeur est @code{'all}, le client DHCP écoute sur toutes les interfaces disponibles et activables en dehors des interfaces de rebouclage. Sinon le client DHCP écoute uniquement sur les interfaces spécifiées.

note: type: defvr
en: {Scheme Variable} network-manager-service-type
fr: {Variable Scheme} network-manager-service-type

note: type: defvr
en: This is the service type for the @uref{https://wiki.gnome.org/Projects/NetworkManager, NetworkManager} service. The value for this service type is a @code{network-manager-configuration} record.
fr: C'est le type de service pour le service @uref{https://wiki.gnome.org/Projects/NetworkManager, NetworkManager}. La valeur pour ce type de service est un enregistrement @code{network-manager-configuration}.

note: type: defvr
en: This service is part of @code{%desktop-services} (@pxref{Desktop Services}).
fr: Ce service fait partie de @code{%desktop-services} (@pxref{Desktop Services}).

note: type: deftp
en: {Data Type} network-manager-configuration
fr: {Type de données} network-manager-configuration

note: type: deftp
en: Data type representing the configuration of NetworkManager.
fr: Type de données représentant la configuration de NetworkManager.

note: type: item
en: @code{network-manager} (default: @code{network-manager})
fr: @code{network-manager} (par défaut : @code{network-manager})

note: type: table
en: The NetworkManager package to use.
fr: Le paquet NetworkManager à utiliser.

note: type: item
en: @code{dns} (default: @code{"default"})
fr: @code{dns} (par défaut : @code{"default"})

note: type: table
en: Processing mode for DNS, which affects how NetworkManager uses the @code{resolv.conf} configuration file.
fr: Mode de gestion pour le DNS, qui affecte la manière dont NetworkManager utilise le fichier de configuration @code{resolv.conf}.

note: type: table
en: NetworkManager will update @code{resolv.conf} to reflect the nameservers provided by currently active connections.
fr: NetworkManager mettra à jour @code{resolv.conf} pour refléter les serveurs de noms fournis par les connexions actives.

note: type: table
en: NetworkManager will run @code{dnsmasq} as a local caching nameserver, using a @dfn{conditional forwarding} configuration if you are connected to a VPN, and then update @code{resolv.conf} to point to the local nameserver.
fr: NetworkManager exécutera @code{dnsmasq} comme un serveur de noms local en cache, en utilisant une configuration @dfn{transfert conditionnel} si vous êtes connecté à un VPN, puis mettra à jour @code{resolv.conf} pour pointer vers le serveur de noms local.

note: type: table
en: With this setting, you can share your network connection.  For example when you want to share your network connection to another laptop @i{via} an Ethernet cable, you can open @command{nm-connection-editor} and configure the Wired connection's method for IPv4 and IPv6 to be ``Shared to other computers'' and reestablish the connection (or reboot).
fr: Avec ce paramètre, vous pouvez partager votre connexion réseau.  Par exemple, lorsque vous souhaitez partager votre connexion réseau avec un autre ordinateur portable @i{via} un câble Ethernet, vous pouvez ouvrir @command{nm-connection-editor} et configurer la méthode de connexion câblée pour IPv4 et IPv6 de manière à ce qu'elle soit "partagée avec d'autres ordinateurs" et à ce que la connexion soit rétablie (ou redémarrée).

note: type: table
en: You can also set up a @dfn{host-to-guest connection} to QEMU VMs (@pxref{Installing Guix in a VM}).  With a host-to-guest connection, you can e.g.@: access a Web server running on the VM (@pxref{Web Services}) from a Web browser on your host system, or connect to the VM @i{via} SSH (@pxref{Networking Services, @code{openssh-service-type}}).  To set up a host-to-guest connection, run this command once:
fr: Vous pouvez également établir une @dfn{connexion hôte-invité} aux VM QEMU (@pxref{Installing Guix in a VM}).  Avec une connexion d'hôte à invité, vous pouvez par exemple @ : accéder à un serveur Web fonctionnant sur la VM (@pxref{Web Services}) à partir d'un navigateur Web sur votre système hôte, ou vous connecter à la VM @i{via} SSH (@pxref{Networking Services, @code{openssh-service-type}}).  Pour établir une connexion entre hôtes, exécutez cette commande une fois :

note: type: table
en: Then each time you launch your QEMU VM (@pxref{Running Guix in a VM}), pass @option{-nic tap,ifname=tap0,script=no,downscript=no} to @command{qemu-system-...}.
fr: Ensuite, chaque fois que vous lancez votre VM QEMU (@pxref{Running Guix in a VM}), passez @option{-nic tap,ifname=tap0,script=no,downscript=no} à @command{qemu-system-...}.

note: type: table
en: NetworkManager will not modify @code{resolv.conf}.
fr: NetworkManager ne modifiera pas @code{resolv.conf}.

note: type: item
en: @code{vpn-plugins} (default: @code{'()})
fr: @code{vpn-plugins} (par défaut : @code{'()})

note: type: table
en: This is the list of available plugins for virtual private networks (VPNs).  An example of this is the @code{network-manager-openvpn} package, which allows NetworkManager to manage VPNs @i{via} OpenVPN.
fr: C'est la liste des greffons disponibles pour les VPN (réseaux privés virtuels).  Un exemple est le paquet @code{network-manager-openvpn}, qui permet à NetworkManager de gérer des VPN via OpenVPN.

note: type: item
en: @code{iwd?} (default: @code{#f})
fr: @code{iwd?} (par défaut : @code{#f})

note: type: table
en: NetworkManager will use iwd as a backend for wireless networking if this option is set to @code{#t}, otherwise it will use wpa-supplicant.
fr: NetworkManagement utilisera iwd comme moteur pour les réseaux sans fil si cette option est indiquée à @code{#t}, sinon il utilisera wpa-supplicant.

note: type: deffn
en: {Scheme Variable} connman-service-type
fr: {Variable Scheme} connman-service-type

note: type: deffn
en: This is the service type to run @url{https://01.org/connman,Connman}, a network connection manager.
fr: C'est le type de service pour lancer @url{https://01.org/connman,Connman}, un gestionnaire de connexions réseaux.

note: type: deffn
en: Its value must be an @code{connman-configuration} record as in this example:
fr: Sa valeur doit être un enregistrement @code{connman-configuration} comme dans cet exemple :

note: type: deffn
en: See below for details about @code{connman-configuration}.
fr: Voir plus bas pour des détails sur @code{connman-configuration}.

note: type: deftp
en: {Data Type} connman-configuration
fr: {Type de données} connman-configuration

note: type: deftp
en: Data Type representing the configuration of connman.
fr: Type de données représentant la configuration de connman.

note: type: item
en: @code{connman} (default: @var{connman})
fr: @code{connman} (par défaut : @var{connman})

note: type: table
en: The connman package to use.
fr: Le paquet connman à utiliser.

note: type: item
en: @code{disable-vpn?} (default: @code{#f})
fr: @code{disable-vpn?} (par défaut : @code{#f})

note: type: table
en: When true, disable connman's vpn plugin.
fr: Lorsque la valeur est vraie, désactive le greffon vpn de connman.

note: type: defvr
en: {Scheme Variable} wpa-supplicant-service-type
fr: {Variable Scheme} wpa-supplicant-service-type

note: type: defvr
en: This is the service type to run @url{https://w1.fi/wpa_supplicant/,WPA supplicant}, an authentication daemon required to authenticate against encrypted WiFi or ethernet networks.
fr: C'est le type du service qui lance@url{https://w1.fi/wpa_supplicant/,WPA supplicant}, un démon d'authentification requis pour s'authentifier sur des WiFi chiffrés ou des réseaux ethernet.

note: type: deftp
en: {Data Type} wpa-supplicant-configuration
fr: {Type de données} wpa-supplicant-configuration

note: type: deftp
en: Data type representing the configuration of WPA Supplicant.
fr: Type données qui représente la configuration de WPA Supplicant.

note: type: deftp
en: It takes the following parameters:
fr: Il prend les paramètres suivants :

note: type: item
en: @code{wpa-supplicant} (default: @code{wpa-supplicant})
fr: @code{wpa-supplicant} (par défaut : @code{wpa-supplicant})

note: type: table
en: The WPA Supplicant package to use.
fr: Le paquet WPA Supplicant à utiliser.

note: type: item
en: @code{requirement} (default: @code{'(user-processes loopback syslogd)}
fr: @code{requirement} (par défaut : @code{'(user-processes loopback syslogd)}

note: type: table
en: List of services that should be started before WPA Supplicant starts.
fr: Liste des services qui doivent être démarrés avant le début de WPA Supplicant.

note: type: item
en: @code{dbus?} (default: @code{#t})
fr: @code{dbus?} (par défaut : @code{#t})

note: type: table
en: Whether to listen for requests on D-Bus.
fr: Indique s'il faut écouter les requêtes sur D-Bus.

note: type: item
en: @code{pid-file} (default: @code{"/var/run/wpa_supplicant.pid"})
fr: @code{pid-file} (par défaut : @code{"/var/run/wpa_supplicant.pid"})

note: type: table
en: Where to store the PID file.
fr: Où stocker votre fichier de PID.

note: type: item
en: @code{interface} (default: @code{#f})
fr: @code{interface} (par défaut : @code{#f})

note: type: table
en: If this is set, it must specify the name of a network interface that WPA supplicant will control.
fr: Si une valeur est indiquée, elle doit spécifier le nom d'une interface réseau que WPA supplicant contrôlera.

note: type: item
en: @code{config-file} (default: @code{#f})
fr: @code{config-file} (par défaut : @code{#f})

note: type: table
en: Optional configuration file to use.
fr: Fichier de configuration facultatif à utiliser.

note: type: table
en: List of additional command-line arguments to pass to the daemon.
fr: Liste d'arguments de la ligne de commande supplémentaires à passer au démon.

note: type: Plain text
en: Some networking devices such as modems require special care, and this is what the services below focus on.
fr: Certains périphériques réseau comme les modems ont des besoins spécifiques et c'est ce dont s'occupe les services suivants.

note: type: defvr
en: {Scheme Variable} modem-manager-service-type
fr: {Variable Scheme} modem-manager-service-type

note: type: defvr
en: This is the service type for the @uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager} service.  The value for this service type is a @code{modem-manager-configuration} record.
fr: C'est le type de service pour le service @uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager}.  La valeur de ce type de service est un enregistrement @code{modem-manager-configuration}.

note: type: deftp
en: {Data Type} modem-manager-configuration
fr: {Type de données} modem-manager-configuration

note: type: deftp
en: Data type representing the configuration of ModemManager.
fr: Type de donnée représentant la configuration de ModemManager.

note: type: item
en: @code{modem-manager} (default: @code{modem-manager})
fr: @code{modem-manager} (par défaut : @code{modem-manager})

note: type: table
en: The ModemManager package to use.
fr: Le paquet ModemManager à utiliser.

note: type: defvr
en: {Scheme Variable} usb-modeswitch-service-type
fr: {Variable Scheme} usb-modeswitch-service-type

note: type: defvr
en: This is the service type for the @uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch} service.  The value for this service type is a @code{usb-modeswitch-configuration} record.
fr: C'est le type de service pour le service @uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch}. La valeur pour ce type de service est un enregistrement @code{usb-modeswitch-configuration}.

note: type: defvr
en: When plugged in, some USB modems (and other USB devices) initially present themselves as a read-only storage medium and not as a modem.  They need to be @dfn{modeswitched} before they are usable.  The USB_ModeSwitch service type installs udev rules to automatically modeswitch these devices when they are plugged in.
fr: Lorsqu'ils sont branchés, certains modems USB (et autres dispositifs USB) se présentent initialement comme un support de stockage en lecture seule et non comme un modem.  Ils doivent être @dfn{modeswitched} avant d'être utilisables.  Le service de type USB_ModeSwitch installe des règles udev pour commuter automatiquement les modes de ces dispositifs lorsqu'ils sont branchés.

note: type: deftp
en: {Data Type} usb-modeswitch-configuration
fr: {Type de donnée} openvswitch-configuration

note: type: deftp
en: Data type representing the configuration of USB_ModeSwitch.
fr: Type de données représentant la configuration du USB_ModeSwitch.

note: type: item
en: @code{usb-modeswitch} (default: @code{usb-modeswitch})
fr: @code{usb-modeswitch} (par défaut : @code{usb-modeswitch})

note: type: table
en: The USB_ModeSwitch package providing the binaries for modeswitching.
fr: Le paquet USB_ModeSwitch fournit les binaires pour la commutation de modes.

note: type: item
en: @code{usb-modeswitch-data} (default: @code{usb-modeswitch-data})
fr: @code{usb-modeswitch-data} (par défaut : @code{usb-modeswitch-data})

note: type: table
en: The package providing the device data and udev rules file used by USB_ModeSwitch.
fr: Le paquet fournissant les données du dispositif et le fichier de règles udev utilisé par USB_ModeSwitch.

note: type: item
en: @code{config-file} (default: @code{#~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf")})
fr: @code{config-file} (par défaut : @code{#~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf")})

note: type: table
en: Which config file to use for the USB_ModeSwitch dispatcher.  By default the config file shipped with USB_ModeSwitch is used which disables logging to @file{/var/log} among other default settings.  If set to @code{#f}, no config file is used.
fr: Le fichier de configuration à utiliser pour le répartiteur USB_ModeSwitch.  Par défaut, le fichier de configuration livré avec USB_ModeSwitch est utilisé, ce qui désactive la connexion au @file{/var/log} parmi d'autres paramètres par défaut.  S'il est défini sur @code{#f}, aucun fichier de configuration n'est utilisé.

note: type: Plain text
en: The @code{(gnu services networking)} module discussed in the previous section provides services for more advanced setups: providing a DHCP service for others to use, filtering packets with iptables or nftables, running a WiFi access point with @command{hostapd}, running the @command{inetd} ``superdaemon'', and more.  This section describes those.
fr: Le module @code{(gnu services networking)} dont on a parlé dans la section précédente fournit des services pour des configuration plus avancées : fournir un service DHCP que d'autres peuvent utiliser, filtrer des paquets avec iptables ou nftables, faire tourner un point d'accès WiFi avec @command{hostadp}, lancer le « superdémon » @command{inetd} et bien plus encore. Cette section les décrit.

note: type: deffn
en: {Scheme Procedure} dhcpd-service-type
fr: {Procédure Scheme} dhcpd-service-type

note: type: deffn
en: This type defines a service that runs a DHCP daemon.  To create a service of this type, you must supply a @code{<dhcpd-configuration>}.  For example:
fr: Ce type définie un service qui lance un démon DHCP.  Pour créer un service de ce type, vous devez appliquer un objet @code{<dhcpd-configuration>}.  Par exemple :

note: type: deftp
en: {Data Type} dhcpd-configuration
fr: {Type de données} dhcpd-configuration

note: type: table
en: The package that provides the DHCP daemon.  This package is expected to provide the daemon at @file{sbin/dhcpd} relative to its output directory.  The default package is the @uref{https://www.isc.org/dhcp/, ISC's DHCP server}.
fr: Le paquet qui fournit le démon DHCP.  ce paquet doit fournir le démon @file{sbin/dhcpd} relativement à son répertoire de sortie.  Le paquet par défaut est le @uref{https://www.isc.org/dhcp/, serveur DHCP d'ISC}.

note: type: table
en: The configuration file to use.  This is required.  It will be passed to @code{dhcpd} via its @code{-cf} option.  This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}).  See @code{man dhcpd.conf} for details on the configuration file syntax.
fr: Le fichier de configuration à utiliser.  Il est requis.  Il sera passé à @code{dhcpd} via son option @code{-cf}.  La valeur peut être n'importe quel objet « simili-fichier » (@pxref{G-Expressions, file-like objects}).  Voir @code{man dhcpd.conf} pour des détails sur la syntaxe du fichier de configuration.

note: type: item
en: @code{version} (default: @code{"4"})
fr: @code{version} (par défaut : @code{"4"})

note: type: table
en: The DHCP version to use.  The ISC DHCP server supports the values ``4'', ``6'', and ``4o6''.  These correspond to the @code{dhcpd} program options @code{-4}, @code{-6}, and @code{-4o6}.  See @code{man dhcpd} for details.
fr: La version de DHCP à utiliser.  Le serveur DHCP d'ISC supporte les valeur « 4 », « 6 » et « 4o6 ».  Elles correspondent aux options @code{-4}, @code{-6} et @code{-4o6} du programme @code{dhcpd}.  Voir @code{man dhcpd} pour plus de détails.

note: type: item
en: @code{run-directory} (default: @code{"/run/dhcpd"})
fr: @code{run-directory} (par défaut : @code{"/run/dhcpd"})

note: type: table
en: The run directory to use.  At service activation time, this directory will be created if it does not exist.
fr: Le répertoire d'exécution à utiliser.  Au moment de l'activation du service, ce répertoire sera créé s'il n'existe pas.

note: type: item
en: @code{pid-file} (default: @code{"/run/dhcpd/dhcpd.pid"})
fr: @code{pid-file} (par défaut : @code{"/run/dhcpd/dhcpd.pid"})

note: type: table
en: The PID file to use.  This corresponds to the @code{-pf} option of @code{dhcpd}.  See @code{man dhcpd} for details.
fr: Le fichier de PID à utiliser.  Cela correspond à l'option @code{-pf} de @code{dhcpd}.  Voir @code{man dhcpd} pour plus de détails.

note: type: item
en: @code{interfaces} (default: @code{'()})
fr: @code{interfaces} (par défaut : @code{'()})

note: type: table
en: The names of the network interfaces on which dhcpd should listen for broadcasts.  If this list is not empty, then its elements (which must be strings) will be appended to the @code{dhcpd} invocation when starting the daemon.  It may not be necessary to explicitly specify any interfaces here; see @code{man dhcpd} for details.
fr: Les noms des interfaces réseaux sur lesquelles dhcpd écoute.  Si cette liste n'est pas vide, alors ses éléments (qui doivent être des chaînes de caractères) seront ajoutés à l'invocation de @code{dhcpd} lors du démarrage du démon.  Il n'est pas forcément nécessaire de spécifier des interfaces ici ; voir @code{man dhcpd} pour plus de détails.

note: type: cindex
en: hostapd service, for Wi-Fi access points
fr: service hostapd, pour les points d'accès Wi-Fi

note: type: cindex
en: Wi-Fi access points, hostapd service
fr: Points d'accès Wi-Fi, service hostapd

note: type: defvr
en: {Scheme Variable} hostapd-service-type
fr: {Variable Scheme} hostapd-service-type

note: type: defvr
en: This is the service type to run the @uref{https://w1.fi/hostapd/, hostapd} daemon to set up WiFi (IEEE 802.11) access points and authentication servers.  Its associated value must be a @code{hostapd-configuration} as shown below:
fr: Il s'agit du type de service permettant d'exécuter le démon @uref{https://w1.fi/hostapd/, hostapd} pour mettre en place des points d'accès et des serveurs d'authentification WiFi (IEEE 802.11).  Sa valeur associée doit être un @code{hostapd-configuration} comme indiqué ci-dessous :

note: type: lisp
en: ;; Use wlan1 to run the access point for "My Network".
    (service hostapd-service-type
             (hostapd-configuration
              (interface "wlan1")
              (ssid "My Network")
              (channel 12)))
fr: ;; Utiliser wlan1 pour lancer le point d'accès pour « My Network ».
    (service hostapd-service-type
             (hostapd-configuration
              (interface "wlan1")
              (ssid "My Network")
              (channel 12)))

note: type: deftp
en: {Data Type} hostapd-configuration
fr: {Type de données} hostapd-configuration

note: type: deftp
en: This data type represents the configuration of the hostapd service, with the following fields:
fr: Ce type de données représente la configuration du service hostapd, avec les champs suivants :

note: type: item
en: @code{package} (default: @code{hostapd})
fr: @code{package} (par défaut : @code{hostapd})

note: type: table
en: The hostapd package to use.
fr: Le paquet hostapd à utiliser.

note: type: item
en: @code{interface} (default: @code{"wlan0"})
fr: @code{interface} (par défaut : @code{"wlan0"})

note: type: table
en: The network interface to run the WiFi access point.
fr: L'interface réseau pour faire fonctionner le point d'accès WiFi.

note: type: table
en: The SSID (@dfn{service set identifier}), a string that identifies this network.
fr: Le SSID (@dfn{identifiant de l'ensemble de services}), une chaîne de caractères qui identifie ce réseau.

note: type: item
en: @code{broadcast-ssid?} (default: @code{#t})
fr: @code{broadcast-ssid?} (par défaut : @code{#t})

note: type: table
en: Whether to broadcast this SSID.
fr: La diffusion de ce SSID.

note: type: item
en: @code{channel} (default: @code{1})
fr: @code{channel} (par défaut : @code{#f})

note: type: table
en: The WiFi channel to use.
fr: Le canal WiFi à utiliser.

note: type: item
en: @code{driver} (default: @code{"nl80211"})
fr: @code{drivers} (par défaut : @code{"nl80211"})

note: type: table
en: The driver interface type.  @code{"nl80211"} is used with all Linux mac80211 drivers.  Use @code{"none"} if building hostapd as a standalone RADIUS server that does # not control any wireless/wired driver.
fr: Le type d'interface du conducteur.  @code{"nl80211"} est utilisé avec tous les pilotes mac80211 de Linux.  Utilisez @code{"none"} si vous construisez hostapd comme un serveur RADIUS autonome qui ne # contrôle aucun pilote sans-fil/filaire.

note: type: item
en: @code{extra-settings} (default: @code{""})
fr: @code{extra-settings} (par défaut : @code{""})

note: type: table
en: Extra settings to append as-is to the hostapd configuration file.  See @uref{https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf} for the configuration file reference.
fr: Paramètres supplémentaires à ajouter tels quels au fichier de configuration de hostapd.  Voir @uref{https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf} pour la référence du fichier de configuration.

note: type: defvr
en: {Scheme Variable} simulated-wifi-service-type
fr: {Variable Scheme} simulated-wifi-service-type

note: type: defvr
en: This is the type of a service to simulate WiFi networking, which can be useful in virtual machines for testing purposes.  The service loads the Linux kernel @uref{https://www.kernel.org/doc/html/latest/networking/mac80211_hwsim/mac80211_hwsim.html, @code{mac80211_hwsim} module} and starts hostapd to create a pseudo WiFi network that can be seen on @code{wlan0}, by default.
fr: C'est le type de service permettant de simuler la mise en réseau WiFi, qui peut être utile dans les machines virtuelles à des fins de test.  Le service charge le noyau Linux @uref{https://www.kernel.org/doc/html/latest/networking/mac80211_hwsim/mac80211_hwsim.html, module @code{mac80211_hwsim}} et lance hostapd pour créer un pseudo réseau WiFi qui peut être vu sur @code{wlan0}, par défaut.

note: type: defvr
en: The service's value is a @code{hostapd-configuration} record.
fr: La valeur du service est un enregistrement @code{hostapd-configuration}.

note: type: defvr
en: {Scheme Variable} iptables-service-type
fr: {Variable Scheme} iptables-service-type

note: type: defvr
en: This is the service type to set up an iptables configuration.  iptables is a packet filtering framework supported by the Linux kernel.  This service supports configuring iptables for both IPv4 and IPv6.  A simple example configuration rejecting all incoming connections except those to the ssh port 22 is shown below.
fr: C'est le type de service pour mettre en place une configuration iptables.  iptables est un outil de filtrage de paquets pris en charge par le noyau Linux.  Ce service prend en charge la configuration d'iptable pour IPv4 et IPv6.  Un exemple de configuration simple, qui rejette les connexions entrantes sauf celles sur le port 22 est présenté ci-dessous.

note: type: deftp
en: {Data Type} iptables-configuration
fr: {Type de données} iptables-configuration

note: type: deftp
en: The data type representing the configuration of iptables.
fr: Type de données représentant la configuration d'iptables.

note: type: item
en: @code{iptables} (default: @code{iptables})
fr: @code{iptables} (par défaut : @code{iptables})

note: type: table
en: The iptables package that provides @code{iptables-restore} and @code{ip6tables-restore}.
fr: Le paquet iptables qui fournit @code{iptables-restore} et @code{ip6tables-restore}.

note: type: item
en: @code{ipv4-rules} (default: @code{%iptables-accept-all-rules})
fr: @code{ipv4-rules} (par défaut : @code{%iptables-accept-all-rules})

note: type: table
en: The iptables rules to use.  It will be passed to @code{iptables-restore}.  This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}).
fr: Les règles iptables à utiliser.  Elles seront passées à @code{iptables-restore}.  Cela peut être un objet « simili-fichier » (@pxref{G-Expressions, file-like objects}).

note: type: item
en: @code{ipv6-rules} (default: @code{%iptables-accept-all-rules})
fr: @code{ipv6-rules} (par défaut : @code{%iptables-accept-all-rules})

note: type: table
en: The ip6tables rules to use.  It will be passed to @code{ip6tables-restore}.  This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}).
fr: Les règles iptables à utiliser.  Elles seront passées à @code{ip6tables-restore}.  Cela peut être un objet « simili-fichier » (@pxref{G-Expressions, file-like objects}).

note: type: defvr
en: {Scheme Variable} nftables-service-type
fr: {Variable Scheme} nftables-service-type

note: type: defvr
en: This is the service type to set up a nftables configuration.  nftables is a netfilter project that aims to replace the existing iptables, ip6tables, arptables and ebtables framework.  It provides a new packet filtering framework, a new user-space utility @command{nft}, and a compatibility layer for iptables.  This service comes with a default ruleset @code{%default-nftables-ruleset} that rejecting all incoming connections except those to the ssh port 22.  To use it, simply write:
fr: C'est le type de service permettant de mettre en place une configuration nftables. nftables est un projet de netfilter qui vise à remplacer le cadre existant iptables, ip6tables, arptables et ebtables.  Il fournit un nouveau cadre de filtrage de paquets, un nouvel utilitaire d'espace utilisateur·rice @command{nft}, et une couche de compatibilité pour iptables.  Ce service est fourni avec un jeu de règles par défaut @code{%default-nftables-ruleset} qui rejette toutes les connexions entrantes sauf celles vers le port ssh 22.  Pour l'utiliser, il suffit d'écrire :

note: type: deftp
en: {Data Type} nftables-configuration
fr: {Type de données} nftables-configuration

note: type: deftp
en: The data type representing the configuration of nftables.
fr: Type de données représentant la configuration de nftables.

note: type: item
en: @code{package} (default: @code{nftables})
fr: @code{package} (par défaut : @code{nftables})

note: type: table
en: The nftables package that provides @command{nft}.
fr: Le paquet nftables qui fournit @command{nft}.

note: type: item
en: @code{ruleset} (default: @code{%default-nftables-ruleset})
fr: @code{ruleset} (par défaut : @code{%default-nftables-ruleset})

note: type: table
en: The nftables ruleset to use.  This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}).
fr: Les règles d'utilisation de nftables.  Il peut s'agir de n'importe quel objet « de type fichier » (@pxref{G-Expressions, objets de type fichier}).

note: type: cindex
en: ntpd, service for the Network Time Protocol daemon
fr: ntpd, service pour le démon Network Time Protocol

note: type: cindex
en: real time clock
fr: horloge

note: type: defvr
en: {Scheme Variable} ntp-service-type
fr: {Variable Scheme} ntp-service-type

note: type: defvr
en: This is the type of the service running the @uref{https://www.ntp.org, Network Time Protocol (NTP)} daemon, @command{ntpd}.  The daemon will keep the system clock synchronized with that of the specified NTP servers.
fr: C'est le type de service qui lance le démon @uref{https://www.ntp.org, Network Time Protocol (NTP)}, @command{ntpd}.  Le démon gardera l'horloge système synchronisée avec celle des serveurs NTP spécifiés.

note: type: defvr
en: The value of this service is an @code{ntpd-configuration} object, as described below.
fr: La valeur de ce service est un objet @code{ntpd-configuration}, décrit ci-dessous.

note: type: deftp
en: {Data Type} ntp-configuration
fr: {Type de données} ntp-configuration

note: type: deftp
en: This is the data type for the NTP service configuration.
fr: C'est le type de données représentant la configuration du service NTP.

note: type: item
en: @code{servers} (default: @code{%ntp-servers})
fr: @code{servers} (par défaut : @code{%ntp-servers})

note: type: table
en: This is the list of servers (@code{<ntp-server>} records) with which @command{ntpd} will be synchronized.  See the @code{ntp-server} data type definition below.
fr: C'est la liste des serveurs (enregistrements @code{<ntp-server>}) avec lesquels @command{ntpd} sera synchronisé.  Voir la définition du type de données @code{ntp-server} ci-dessous.

note: type: item
en: @code{allow-large-adjustment?} (default: @code{#t})
fr: @code{allow-large-adjustment?} (par défaut : @code{#t})

note: type: table
en: This determines whether @command{ntpd} is allowed to make an initial adjustment of more than 1,000 seconds.
fr: Détermine si @code{ntpd} peut faire un ajustement initial de plus de 1@tie{}000 secondes.

note: type: item
en: @code{ntp} (default: @code{ntp})
fr: @code{ntp} (par défaut : @code{ntp})

note: type: table
en: The NTP package to use.
fr: Le paquet NTP à utiliser.

note: type: defvr
en: {Scheme Variable} %ntp-servers
fr: {Variable Scheme} %ntp-servers

note: type: defvr
en: List of host names used as the default NTP servers.  These are servers of the @uref{https://www.ntppool.org/en/, NTP Pool Project}.
fr: Liste de noms d'hôtes à utiliser comme serveurs NTP par défaut.  Ce sont les serveurs du @uref{https://www.ntppool.org/fr/, projet NTP Pool}.

note: type: deftp
en: {Data Type} ntp-server
fr: {Type de données} ntp-server

note: type: deftp
en: The data type representing the configuration of a NTP server.
fr: Le type de données représentant la configuration d'un serveur NTP.

note: type: item
en: @code{type} (default: @code{'server})
fr: @code{type} (par défaut : @code{'server})

note: type: table
en: The type of the NTP server, given as a symbol.  One of @code{'pool}, @code{'server}, @code{'peer}, @code{'broadcast} or @code{'manycastclient}.
fr: Le type de serveur NTP, indiqué par un symbole. L'un des types suivants : @code{'pool}, @code{'server}, @code{'peer}, @code{'broadcast} ou @code{'manycastclient}.

note: type: code{#1}
en: address
fr: adresse

note: type: table
en: The address of the server, as a string.
fr: L'adresse du serveur, comme une chaîne de caractères.

note: type: table
en: NTPD options to use with that specific server, given as a list of option names and/or of option names and values tuples.  The following example define a server to use with the options @option{iburst} and @option{prefer}, as well as @option{version} 3 and a @option{maxpoll} time of 16 seconds.
fr: Les options NTPD à utiliser avec ce serveur spécifique, données sous la forme d'une liste de noms d'options et/ou de tuples de noms et de valeurs d'options. L'exemple suivant définit un serveur à utiliser avec les options @option{iburst} et @option{prefer}, ainsi que @option{version} 3 et un temps @option{maxpoll} de 16 secondes.

note: type: deffn
en: {Scheme Procedure} openntpd-service-type
fr: {Procédure Scheme} openntpd-service-type

note: type: deffn
en: Run the @command{ntpd}, the Network Time Protocol (NTP) daemon, as implemented by @uref{http://www.openntpd.org, OpenNTPD}.  The daemon will keep the system clock synchronized with that of the given servers.
fr: Lance le démon NTP @command{ntpd}, implémenté par @uref{http://www.openntpd.org, OpenNTPD}.  Le démon gardera l'horloge système synchronisée avec celle des serveurs donnés.

note: type: defvr
en: {Scheme Variable} %openntpd-servers
fr: {Variable Scheme} %openntpd-servers

note: type: defvr
en: This variable is a list of the server addresses defined in @code{%ntp-servers}.
fr: Cette variable est une liste des adresses de serveurs définies dans @code{%ntp-servers}.

note: type: deftp
en: {Data Type} openntpd-configuration
fr: {Type de données} openntpd-configuration

note: type: item
en: @code{openntpd} (default: @code{(file-append openntpd "/sbin/ntpd")})
fr: @code{openntpd} (par défaut : @code{(file-append openntpd "/sbin/ntpd")})

note: type: table
en: The openntpd executable to use.
fr: L'exécutable openntpd à utiliser.

note: type: item
en: @code{listen-on} (default: @code{'("127.0.0.1" "::1")})
fr: @code{listen-on} (par défaut : @code{'("127.0.0.1" "::1")})

note: type: table
en: A list of local IP addresses or hostnames the ntpd daemon should listen on.
fr: Une liste d'adresses IP locales ou de noms d'hôtes que devrait écouter le démon ntpd.

note: type: item
en: @code{query-from} (default: @code{'()})
fr: @code{query-from} (par défaut : @code{'()})

note: type: table
en: A list of local IP address the ntpd daemon should use for outgoing queries.
fr: Une liste d'adresses IP que le démon devrait utiliser pour les requêtes sortantes.

note: type: item
en: @code{sensor} (default: @code{'()})
fr: @code{sensor} (par défaut : @code{'()})

note: type: table
en: Specify a list of timedelta sensor devices ntpd should use.  @code{ntpd} will listen to each sensor that actually exists and ignore non-existent ones.  See @uref{https://man.openbsd.org/ntpd.conf, upstream documentation} for more information.
fr: Spécifie une liste de senseurs de différences de temps que ntpd devrait utiliser.  @code{ntpd} écoutera chaque senseur qui existe et ignorera ceux qui n'existent pas.  Voir @uref{https://man.openbsd.org/ntpd.conf, la documentation en amont} pour plus d'informations.

note: type: item
en: @code{server} (default: @code{'()})
fr: @code{server} (par défaut : @code{'()})

note: type: table
en: Specify a list of IP addresses or hostnames of NTP servers to synchronize to.
fr: Spécifie une liste d'adresses IP ou de noms d'hôtes de serveurs NTP avec lesquels se synchroniser.

note: type: item
en: @code{servers} (default: @code{%openntp-servers})
fr: @code{servers} (par défaut : @code{%openntp-servers})

note: type: table
en: Specify a list of IP addresses or hostnames of NTP pools to synchronize to.
fr: Spécifie une liste d'adresses IP ou de noms d'hôtes de banques de serveurs NTP avec lesquelles se synchroniser.

note: type: item
en: @code{constraint-from} (default: @code{'()})
fr: @code{constraint-from} (par défaut : @code{'()})

note: type: table
en: @code{ntpd} can be configured to query the ‘Date’ from trusted HTTPS servers via TLS.  This time information is not used for precision but acts as an authenticated constraint, thereby reducing the impact of unauthenticated NTP man-in-the-middle attacks.  Specify a list of URLs, IP addresses or hostnames of HTTPS servers to provide a constraint.
fr: @code{ntpd} peut être configuré pour demander la « Date » à des serveurs HTTPS de confiance via TLS.  Cette information de temps n'est pas utilisée pour sa précision mais agit comme une contrainte authentifiée, ce qui réduit l'impact d'une attaque par l'homme du milieu sur le protocole NTP non authentifié.  Spécifie une liste d'URL, d'adresses IP ou de noms d'hôtes de serveurs HTTPS qui fournissent cette contrainte.

note: type: item
en: @code{constraints-from} (default: @code{'()})
fr: @code{constraints-from} (par défaut : @code{'()})

note: type: table
en: As with constraint from, specify a list of URLs, IP addresses or hostnames of HTTPS servers to provide a constraint.  Should the hostname resolve to multiple IP addresses, @code{ntpd} will calculate a median constraint from all of them.
fr: Comme pour @code{constraint-from}, spécifie une liste d'URL, d'adresses IP ou de noms d'hôtes de serveurs HTTPS qui fournissent une contrainte.  Si les noms d'hôtes sont résolus en plusieurs adresses IP, @code{ntpd} calculera la contrainte médiane.

note: type: deffn
en: {Scheme variable} inetd-service-type
fr: {Variable Scheme} inetd-service-type

note: type: deffn
en: This service runs the @command{inetd} (@pxref{inetd invocation,,, inetutils, GNU Inetutils}) daemon.  @command{inetd} listens for connections on internet sockets, and lazily starts the specified server program when a connection is made on one of these sockets.
fr: Ce service lance le démon @command{inetd} (@pxref{inetd invocation,,, inetutils, GNU Inetutils}).  @command{inetd} écoute des connexions sur des sockets internet et démarre le programme spécifié uniquement lorsqu'une connexion arrive sur l'un de ces sockets.

note: type: deffn
en: The value of this service is an @code{inetd-configuration} object.  The following example configures the @command{inetd} daemon to provide the built-in @command{echo} service, as well as an smtp service which forwards smtp traffic over ssh to a server @code{smtp-server} behind a gateway @code{hostname}:
fr: La valeur de ce service est un objet @code{inetd-configuration}.  L'exemple suivant configure le démon @command{inetd} pour qu'il fournisse le service @command{echo}, ainsi qu'un service smtp qui transfère le trafic smtp par ssh à un serveur @code{smtp-server} derrière une passerelle @code{hostname} :

note: type: lisp
en: (service
     inetd-service-type
     (inetd-configuration
      (entries (list
                (inetd-entry
                 (name "echo")
                 (socket-type 'stream)
                 (protocol "tcp")
                 (wait? #f)
                 (user "root"))
                (inetd-entry
                 (node "127.0.0.1")
                 (name "smtp")
                 (socket-type 'stream)
                 (protocol "tcp")
                 (wait? #f)
                 (user "root")
                 (program (file-append openssh "/bin/ssh"))
                 (arguments
                  '("ssh" "-qT" "-i" "/path/to/ssh_key"
                    "-W" "smtp-server:25" "user@@hostname")))))))
fr: (service
     inetd-service-type
     (inetd-configuration
      (entries (list
                (inetd-entry
                 (name "echo")
                 (socket-type 'stream)
                 (protocol "tcp")
                 (wait? #f)
                 (user "root"))
                (inetd-entry
                 (node "127.0.0.1")
                 (name "smtp")
                 (socket-type 'stream)
                 (protocol "tcp")
                 (wait? #f)
                 (user "root")
                 (program (file-append openssh "/bin/ssh"))
                 (arguments
                  '("ssh" "-qT" "-i" "/chemin/vers/ssh_key"
                    "-W" "smtp-server:25" "user@@hostname")))))))

note: type: deffn
en: See below for more details about @code{inetd-configuration}.
fr: Voir plus bas pour plus de détails sur @code{inetd-configuration}.

note: type: deftp
en: {Data Type} inetd-configuration
fr: {Type de données} inetd-configuration

note: type: deftp
en: Data type representing the configuration of @command{inetd}.
fr: Type de données représentant la configuration de @command{inetd}.

note: type: item
en: @code{program} (default: @code{(file-append inetutils "/libexec/inetd")})
fr: @code{program} (par défaut : @code{(file-append inetutils "/libexec/inetd")})

note: type: table
en: The @command{inetd} executable to use.
fr: L'exécutable @command{inetd} à utiliser.

note: type: item
en: @code{entries} (default: @code{'()})
fr: @code{entries} (par défaut : @code{'()})

note: type: table
en: A list of @command{inetd} service entries.  Each entry should be created by the @code{inetd-entry} constructor.
fr: Une liste d'entrées de services @command{inetd}.  Chaque entrée devrait être crée avec le constructeur @code{inetd-entry}.

note: type: deftp
en: {Data Type} inetd-entry
fr: {Type de données} inetd-entry

note: type: deftp
en: Data type representing an entry in the @command{inetd} configuration.  Each entry corresponds to a socket where @command{inetd} will listen for requests.
fr: Type de données représentant une entrée dans la configuration d'@command{inetd}.  Chaque entrée correspond à un socket sur lequel @command{inetd} écoutera les requêtes.

note: type: item
en: @code{node} (default: @code{#f})
fr: @code{node} (par défaut : @code{#f})

note: type: table
en: Optional string, a comma-separated list of local addresses @command{inetd} should use when listening for this service.  @xref{Configuration file,,, inetutils, GNU Inetutils} for a complete description of all options.
fr: Chaîne de caractères facultative, un liste d'adresses locales séparées par des virgules que @command{inetd} devrait utiliser pour écouter ce service.  @xref{Configuration file,,, inetutils, GNU Inetutils} pour une description complète de toutes les options.

note: type: table
en: A string, the name must correspond to an entry in @code{/etc/services}.
fr: Une chaîne de caractères dont le nom doit correspondre à une entrée de @code{/etc/services}.

note: type: table
en: One of @code{'stream}, @code{'dgram}, @code{'raw}, @code{'rdm} or @code{'seqpacket}.
fr: Un symbole parmi @code{'stream}, @code{'dgram}, @code{'raw}, @code{'rdm} ou @code{'seqpacket}.

note: type: table
en: A string, must correspond to an entry in @code{/etc/protocols}.
fr: Une chaîne de caractères qui doit correspondre à une entrée dans @code{/etc/protocols}.

note: type: item
en: @code{wait?} (default: @code{#t})
fr: @code{wait?} (par défaut : @code{#t})

note: type: table
en: Whether @command{inetd} should wait for the server to exit before listening to new service requests.
fr: Indique si @command{inetd} devrait attendre que le serveur ait quitté avant d'écouter de nouvelles demandes de service.

note: type: table
en: A string containing the user (and, optionally, group) name of the user as whom the server should run.  The group name can be specified in a suffix, separated by a colon or period, i.e.@: @code{"user"}, @code{"user:group"} or @code{"user.group"}.
fr: Une chaîne de caractères contenant le nom d'utilisateur (et éventuellement de groupe) de l'utilisateur en tant que lequel le serveur devrait tourner.  Le nom du groupe peut être spécifié comme un suffixe, séparé par un deux-points ou un point, c.-à-d.@: @code{"utilisateur"}, @code{"utilisateur:groupe"} ou @code{"utilisateur.groupe"}.

note: type: item
en: @code{program} (default: @code{"internal"})
fr: @code{program} (par défaut : @code{"internal"})

note: type: table
en: The server program which will serve the requests, or @code{"internal"} if @command{inetd} should use a built-in service.
fr: Le programme du serveur qui servira les requêtes, ou @code{"internal"} si @command{inetd} devrait utiliser un service inclus.

note: type: table
en: A list strings or file-like objects, which are the server program's arguments, starting with the zeroth argument, i.e.@: the name of the program itself.  For @command{inetd}'s internal services, this entry must be @code{'()} or @code{'("internal")}.
fr: Une liste de chaînes de caractères ou d'objets simili-fichiers qui sont les arguments du programme du serveur, en commençant par le zéroième argument, c.-à-d.@: le nom du programme lui-même.  Pour les services internes à @command{inetd}, cette entrée doit être @code{'()} ou @code{'("internal")}.

note: type: deftp
en: @xref{Configuration file,,, inetutils, GNU Inetutils} for a more detailed discussion of each configuration field.
fr: @xref{Configuration file,,, inetutils, GNU Inetutils} pour trouver une discussion plus détaillée de chaque champ de configuration.

note: type: cindex
en: opendht, distributed hash table network service
fr: opendht, service réseau de table de hash distribuée

note: type: cindex
en: dhtproxy, for use with jami
fr: dhtproxy, à utiliser avec jami

note: type: defvr
en: {Scheme Variable} opendht-service-type
fr: {Variable Scheme} opendht-service-type

note: type: defvr
en: This is the type of the service running a @uref{https://opendht.net, OpenDHT} node, @command{dhtnode}.  The daemon can be used to host your own proxy service to the distributed hash table (DHT), for example to connect to with Jami, among other applications.
fr: C'est le type du service qui lance un nœud @uref{https://opendht.net, OpenDHT}, @command{dhtnode}. Le démon peut être utilisé pour héberger votre propre service mandataire à la table de hash distribue (DHT), par exemple pour y connecter Jami, entre autres applications.

note: type: quotation
en: When using the OpenDHT proxy server, the IP addresses it ``sees'' from the clients should be addresses reachable from other peers.  In practice this means that a publicly reachable address is best suited for a proxy server, outside of your private network.  For example, hosting the proxy server on a IPv4 private local network and exposing it via port forwarding could work for external peers, but peers local to the proxy would have their private addresses shared with the external peers, leading to connectivity problems.
fr: Lorsque vous utiliser le serveur mandataire OpenDHT, les adresses IP qu'il « voit » venant des clients devraient être les adresses atteignables depuis les autres pairs. En pratique cela signifie qu'une adresse accessible publiquement est préférable pour un serveur mandataire, en dehors de votre réseau privé. Par exemple, héberger le serveur mandataire sur un réseau local privé en IPv4 et l'exposer via une redirection de port pourrait fonctionner pour les pairs externes, mais les pairs locaux au mandataire verront leur adresse privée partagées avec les pairs externes, ce qui posera des problèmes de connectivité.

note: type: defvr
en: The value of this service is a @code{opendht-configuration} object, as described below.
fr: La valeur de ce service est un objet @code{opendht-configuration}, décrit ci-dessous.

note: type: deftp
en: {Data Type} opendht-configuration
fr: {Type de données} opendht-configuration

note: type: deftp
en: Available @code{opendht-configuration} fields are:
fr: Les champs de @code{opendht-configuration} disponibles sont :

note: type: item
en: @code{opendht} (default: @code{opendht}) (type: file-like)
fr: @code{opendht} (par défaut : @code{opendht}) (type : simili-fichier)

note: type: table
en: The @code{opendht} package to use.
fr: Le paquet @code{opendht} à utiliser.

note: type: item
en: @code{peer-discovery?} (default: @code{#f}) (type: boolean)
fr: @code{peer-discovery?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether to enable the multicast local peer discovery mechanism.
fr: Indique s'il faut activer le mécanisme de découverte de pairs locaux en multidiffusion.

note: type: item
en: @code{enable-logging?} (default: @code{#f}) (type: boolean)
fr: @code{enable-logging?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether to enable logging messages to syslog.  It is disabled by default as it is rather verbose.
fr: Indique s'il faut activer la journalisation des messages vers syslog. C'est désactivé par défaut car cette option est plutôt verbeuse.

note: type: item
en: @code{debug?} (default: @code{#f}) (type: boolean)
fr: @code{debug?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether to enable debug-level logging messages.  This has no effect if logging is disabled.
fr: Indique s'il faut activer la journalisation de débogage. Cela n'a aucun effet si la journalisation n'est pas activée.

note: type: item
en: @code{bootstrap-host} (default: @code{"bootstrap.jami.net:4222"}) (type: maybe-string)
fr: @code{bootstrap-host} (par défaut : @code{"bootstrap.jami.net:4222"}) (type : peut-être-chaine)

note: type: table
en: The node host name that is used to make the first connection to the network.  A specific port value can be provided by appending the @code{:PORT} suffix.  By default, it uses the Jami bootstrap nodes, but any host can be specified here.  It's also possible to disable bootstrapping by explicitly setting this field to the @code{%unset-value} value.
fr: Le nom d'hôte du nœud utilisé pour effectuer la première connexion au réseau. Vous pouvez fournir une valeur de port spécifique en ajoutant le suffixe @code{:PORT}. Par défaut, cela utilise les nœuds d'amorçage de Jami, mais n'importe quel hôte peut être spécifié ici. Il est aussi possible de désactiver l'amorçage en paramétrant explicitement ce champ à la valeur @code{%unset-value}.

note: type: item
en: @code{port} (default: @code{4222}) (type: maybe-number)
fr: @code{port} (par défaut : @code{4222}) (type : peut-être-entier)

note: type: table
en: The UDP port to bind to.  When left unspecified, an available port is automatically selected.
fr: Le port UDP sur lequel se lier. Lorsque la valeur est laissée non spécifiée, un port disponible est automatiquement choisi.

note: type: item
en: @code{proxy-server-port} (type: maybe-number)
fr: @code{proxy-server-port} (type : peut-être-entier)

note: type: table
en: Spawn a proxy server listening on the specified port.
fr: Crée un serveur mandataire écoutant sur le port spécifié.

note: type: item
en: @code{proxy-server-port-tls} (type: maybe-number)
fr: @code{proxy-server-port-tls} (type : peut-être-entier)

note: type: table
en: Spawn a proxy server listening to TLS connections on the specified port.
fr: Crée un serveur mandataire écoutant les connexions TLS sur le port spécifié.

note: type: defvr
en: {Scheme Variable} tor-service-type
fr: {Variable Scheme} tor-service-type

note: type: defvr
en: This is the type for a service that runs the @uref{https://torproject.org, Tor} anonymous networking daemon.  The service is configured using a @code{<tor-configuration>} record.  By default, the Tor daemon runs as the @code{tor} unprivileged user, which is a member of the @code{tor} group.
fr: C'est le type pour un service qui lance le démon de navigation anonyme @uref{https://torproject.org, Tor}.  Le service est configuré avec un enregistrement @code{<tor-configuration>}.  Par défaut, le démon Tor est lancé en tant qu'utilisateur non privilégié @code{tor}, membre du groupe @code{tor}.

note: type: deftp
en: {Data Type} tor-configuration
fr: {Type de données} tor-configuration

note: type: item
en: @code{tor} (default: @code{tor})
fr: @code{tor} (par défaut : @code{tor})

note: type: table
en: The package that provides the Tor daemon.  This package is expected to provide the daemon at @file{bin/tor} relative to its output directory.  The default package is the @uref{https://www.torproject.org, Tor Project's} implementation.
fr: Le paquet qui fournit le démon Tor.  Ce paquet doit fournir le démon @file{bin/tor} relativement à son répertoire de sortie.  Le paquet par défaut est le l'implémentation du @uref{https://www.torproject.org, projet Tor}.

note: type: item
en: @code{config-file} (default: @code{(plain-file "empty" "")})
fr: @code{config-file} (par défaut : @code{(plain-file "empty" "")})

note: type: table
en: The configuration file to use.  It will be appended to a default configuration file, and the final configuration file will be passed to @code{tor} via its @code{-f} option.  This may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}).  See @code{man tor} for details on the configuration file syntax.
fr: Le fichier de configuration à utiliser.  Il sera ajouté au fichier de configuration par défaut, et le fichier de configuration final sera passé à @code{tor} via son option @code{-f}.  Cela peut être n'importe quel objet « simili-fichier » (@pxref{G-Expressions, file-like objects}).  Voir @code{man tor} pour plus de détails sur la syntaxe du fichier de configuration.

note: type: item
en: @code{hidden-services} (default: @code{'()})
fr: @code{hidden-services} (par défaut : @code{'()})

note: type: table
en: The list of @code{<hidden-service>} records to use.  For any hidden service you include in this list, appropriate configuration to enable the hidden service will be automatically added to the default configuration file.  You may conveniently create @code{<hidden-service>} records using the @code{tor-hidden-service} procedure described below.
fr: La liste des enregistrements @code{<hidden-service>} à utiliser.  Pour n'importe quel service cache que vous ajoutez à cette liste, la configuration appropriée pour activer le service caché sera automatiquement ajouté au fichier de configuration par défaut.  Vous pouvez aussi créer des enregistrements @code{<hidden-service>} avec la procédure @code{tor-hidden-service} décrite plus bas.

note: type: item
en: @code{socks-socket-type} (default: @code{'tcp})
fr: @code{socks-socket-type} (par défaut : @code{'tcp})

note: type: table
en: The default socket type that Tor should use for its SOCKS socket.  This must be either @code{'tcp} or @code{'unix}.  If it is @code{'tcp}, then by default Tor will listen on TCP port 9050 on the loopback interface (i.e., localhost).  If it is @code{'unix}, then Tor will listen on the UNIX domain socket @file{/var/run/tor/socks-sock}, which will be made writable by members of the @code{tor} group.
fr: Le type de socket par défaut que Tor devrait utiliser pour les socket SOCKS.  Cela doit être soit @code{'tcp} soit @code{'unix}.  S'il s'agit de @code{'tcp}, alors Tor écoutera pas défaut sur le port TCP 9050 sur l'interface de boucle locale (c.-à-d.@: localhost).  S'il s'agit de @code{'unix}, Tor écoutera sur le socket UNIX domain @file{/var/run/tor/socks-sock}, qui sera inscriptible pour les membres du groupe @code{tor}.

note: type: table
en: If you want to customize the SOCKS socket in more detail, leave @code{socks-socket-type} at its default value of @code{'tcp} and use @code{config-file} to override the default by providing your own @code{SocksPort} option.
fr: Si vous voulez personnaliser le socket SOCKS plus avant, laissez @code{socks-socket-type} à sa valeur par défaut de @code{'tcp} et utilisez @code{config-file} pour remplacer les valeurs par défaut avec votre propre option @code{SocksPort}.

note: type: item
en: @code{control-socket?} (default: @code{#f})
fr: @code{control-socket?} (par défaut : @code{#f})

note: type: table
en: Whether or not to provide a ``control socket'' by which Tor can be controlled to, for instance, dynamically instantiate tor onion services.  If @code{#t}, Tor will listen for control commands on the UNIX domain socket @file{/var/run/tor/control-sock}, which will be made writable by members of the @code{tor} group.
fr: Indique s'il faut utiliser un « socket de contrôle » par lequel on peut contrôler Tor pour, par exemple, instancier des services onion dynamiquement. Si la valeur est @code{#t}, Tor écoutera les commandes de contrôle sur le socket UNIX domain @file{/var/run/tor/control-sock}, qui sera inscriptible pour les membres du groupe @code{tor}.

note: type: cindex
en: hidden service
fr: service caché

note: type: deffn
en: {Scheme Procedure} tor-hidden-service @var{name} @var{mapping}
fr: {Procédure Scheme} tor-hidden-service @var{name} @var{mapping}

note: type: deffn
en: Define a new Tor @dfn{hidden service} called @var{name} and implementing @var{mapping}.  @var{mapping} is a list of port/host tuples, such as:
fr: Définie un @dfn{service caché} pour Tor nommé @var{name} qui implémente @var{mapping}.  @var{mapping} est une liste de paires de port et d'hôte, comme dans :

note: type: deffn
en: In this example, port 22 of the hidden service is mapped to local port 22, and port 80 is mapped to local port 8080.
fr: Dans cet exemple, le port 22 du service caché est relié au port local 22 et le port 80 est relié au port local 8080.

note: type: deffn
en: This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory, where the @file{hostname} file contains the @code{.onion} host name for the hidden service.
fr: Cela crée un répertoire @file{/var/lib/tor/hidden-services/@var{name}} où le fichier @file{hostname} contient le nom d'hôte @code{.onion} pour le service caché.

note: type: deffn
en: See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor project's documentation} for more information.
fr: Voir @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the Tor project's documentation} pour trouver plus d'information.

note: type: Plain text
en: The @code{(gnu services rsync)} module provides the following services:
fr: Le module @code{(gnu services rsync)} fournit les services suivant :

note: type: Plain text
en: You might want an rsync daemon if you have files that you want available so anyone (or just yourself) can download existing files or upload new files.
fr: Vous pourriez vouloir un démon rsync si vous voulez que des fichiers soient disponibles pour que n'importe qui (ou juste vous) puisse télécharger des fichiers existants ou en téléverser des nouveaux.

note: type: deffn
en: {Scheme Variable} rsync-service-type
fr: {Variable Scheme} rsync-service-type

note: type: deffn
en: This is the service type for the @uref{https://rsync.samba.org, rsync} daemon, The value for this service type is a @command{rsync-configuration} record as in this example:
fr: C'est le type pour le démon @uref{https://rsync.samba.org, rsync}. La valeur de ce service est un enregistrement @command{rsync-configuration} comme dans cet exemple :

note: type: lisp
en: ;; Export two directories over rsync.  By default rsync listens on
    ;; all the network interfaces.
    (service rsync-service-type
             (rsync-configuration
               (modules (list (rsync-module
                                (name "music")
                                (file-name "/srv/zik")
                                (read-only? #f))
                              (rsync-module
                                (name "movies")
                                (file-name "/home/charlie/movies"))))))
fr: ;; Exporte deux répertoires par rsync.  Par défaut rsync écoute sur toutes
    ;; les interfaces réseau.
    (service rsync-service-type
             (rsync-configuration
               (modules (list (rsync-module
                                (name "music")
                                (file-name "/srv/zik")
                                (read-only? #f))
                              (rsync-module
                                (name "movies")
                                (file-name "/home/charlie/movies"))))))

note: type: deffn
en: See below for details about @code{rsync-configuration}.
fr: Voir plus pas pour trouver des détails à propos de @code{rsync-configuration}.

note: type: deftp
en: {Data Type} rsync-configuration
fr: {Type de données} rsync-configuration

note: type: deftp
en: Data type representing the configuration for @code{rsync-service}.
fr: Type de données représentant la configuration de @code{rsync-service}.

note: type: item
en: @code{package} (default: @var{rsync})
fr: @code{package} (par défaut : @var{rsync})

note: type: table
en: @code{rsync} package to use.
fr: Le paquet @code{rsync} à utiliser.

note: type: item
en: @code{address} (default: @code{#f})
fr: @code{address} (par défaut : @code{#f})

note: type: table
en: IP address on which @command{rsync} listens for incoming connections.  If unspecified, it defaults to listening on all available addresses.
fr: L'adresse sur laquelle @command{rsync} écoute les connexions entrantes. Si la valeur n'est pas spécifiée, écoute sur toutes les adresses par défaut.

note: type: item
en: @code{port-number} (default: @code{873})
fr: @code{port-number} (par défaut : @code{873})

note: type: table
en: TCP port on which @command{rsync} listens for incoming connections.  If port is less than @code{1024} @command{rsync} needs to be started as the @code{root} user and group.
fr: Le port TCP sur lequel @command{rsync} écoute les connexions entrantes.  Si le port est inférieur à @code{1024}, @command{rsync} doit être démarré en tant qu'utilisateur et groupe @code{root}.

note: type: item
en: @code{pid-file} (default: @code{"/var/run/rsyncd/rsyncd.pid"})
fr: @code{pid-file} (par défaut : @code{"/var/run/rsyncd/rsyncd.pid"})

note: type: table
en: Name of the file where @command{rsync} writes its PID.
fr: Nom du fichier où @command{rsync} écrit son PID.

note: type: item
en: @code{lock-file} (default: @code{"/var/run/rsyncd/rsyncd.lock"})
fr: @code{lock-file} (par défaut : @code{"/var/run/rsyncd/rsyncd.lock"})

note: type: table
en: Name of the file where @command{rsync} writes its lock file.
fr: Nom du fichier où @command{rsync} écrit son fichier de verrouillage.

note: type: item
en: @code{log-file} (default: @code{"/var/log/rsyncd.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/rsyncd.log"})

note: type: table
en: Name of the file where @command{rsync} writes its log file.
fr: Nom du fichier où @command{rsync} écrit son fichier de journal.

note: type: item
en: @code{user} (default: @code{"root"})
fr: @code{user} (par défaut : @code{"root"})

note: type: table
en: Owner of the @code{rsync} process.
fr: Propriétaire du processus @code{rsync}.

note: type: item
en: @code{group} (default: @code{"root"})
fr: @code{group} (par défaut : @code{"root"})

note: type: table
en: Group of the @code{rsync} process.
fr: Groupe du processus @code{rsync}.

note: type: item
en: @code{uid} (default: @code{"rsyncd"})
fr: @code{uid} (par défaut : @code{"rsyncd"})

note: type: table
en: User name or user ID that file transfers to and from that module should take place as when the daemon was run as @code{root}.
fr: Nom d'utilisateur ou ID utilisateur en tant que lequel les transferts de fichiers ont lieu si le démon a été lancé en @code{root}.

note: type: item
en: @code{gid} (default: @code{"rsyncd"})
fr: @code{gid} (par défaut : @code{"rsyncd"})

note: type: table
en: Group name or group ID that will be used when accessing the module.
fr: Nom du groupe ou ID du groupe qui sera utilisé lors de l'accès au module.

note: type: item
en: @code{modules} (default: @code{%default-modules})
fr: @code{modules} (par défaut : @code{%default-modules})

note: type: table
en: List of ``modules''---i.e., directories exported over rsync.  Each element must be a @code{rsync-module} record, as described below.
fr: Liste des « modules » --- c.-à-d.@: des répertoires exportés par rsync. Chaque élément doit être un enregistrement @code{rsync-module}, comme décrit plus bas.

note: type: deftp
en: {Data Type} rsync-module
fr: {Type de données} rsync-module

note: type: deftp
en: This is the data type for rsync ``modules''.  A module is a directory exported over the rsync protocol.  The available fields are as follows:
fr: C'est le type de données pour les « modules » rsync. Un module est un répertoire exporté par le protocole rsync. Les champs disponibles sont les suivants :

note: type: table
en: The module name.  This is the name that shows up in URLs.  For example, if the module is called @code{music}, the corresponding URL will be @code{rsync://host.example.org/music}.
fr: Le nom du module. C'est le nom qui apparait dans les URL. Par exemple, si le module se nomme @code{music}, l'URL correspondante sera @code{rsync://host.example.org/music}.

note: type: table
en: Name of the directory being exported.
fr: Nom du répertoire exporté.

note: type: table
en: Comment associated with the module.  Client user interfaces may display it when they obtain the list of available modules.
fr: Commentaire associé au module. Les interfaces utilisateurs clientes peuvent l'afficher quand ils récupèrent la liste des modules disponibles.

note: type: item
en: @code{read-only?} (default: @code{#t})
fr: @code{read-only?} (par défaut : @code{#t})

note: type: table
en: Whether or not client will be able to upload files.  If this is false, the uploads will be authorized if permissions on the daemon side permit it.
fr: Indique si le client pourra envoyer des fichiers. Si la valeur est fausse, les envoies seront autorisés si les permissions du côté du démon le permettent.

note: type: item
en: @code{chroot?} (default: @code{#t})
fr: @code{chroot?} (par défaut : @code{#t})

note: type: table
en: When this is true, the rsync daemon changes root to the module's directory before starting file transfers with the client.  This improves security, but requires rsync to run as root.
fr: Lorsque la valeur est vraie, le démon rsync change de racine pour le répertoire du module avant de commencer le transfert de fichiers avec le client. Cela améliore la sécurité, mais nécessite que rsync tourne en root.

note: type: item
en: @code{timeout} (default: @code{300})
fr: @code{timeout} (par défaut : @code{300})

note: type: table
en: Idle time in seconds after which the daemon closes a connection with the client.
fr: La durée en secondes de silence après laquelle le démon ferme une connexion avec le client.

note: type: Plain text
en: The @code{(gnu services syncthing)} module provides the following services:
fr: Le module @code{(gnu services syncthing)} fournit les services suivant :

note: type: Plain text
en: You might want a syncthing daemon if you have files between two or more computers and want to sync them in real time, safely protected from prying eyes.
fr: Vous pourriez vouloir un démon syncthing si vous avez des fichiers sur plusieurs ordinateurs et souhaitez les synchroniser en temps réel, de manière sécurisée sans espionnage possible.

note: type: deffn
en: {Scheme Variable} syncthing-service-type
fr: {Variable Scheme} syncthing-service-type

note: type: deffn
en: This is the service type for the @uref{https://syncthing.net/, syncthing} daemon, The value for this service type is a @command{syncthing-configuration} record as in this example:
fr: C'est le type pour le démon @uref{https://syncthing.net/, syncthing}. La valeur de ce service est un enregistrement @command{syncthing-configuration} comme dans cet exemple :

note: type: deffn
en: See below for details about @code{syncthing-configuration}.
fr: Voir plus pas pour trouver des détails à propos de @code{syncthing-configuration}.

note: type: deftp
en: {Data Type} syncthing-configuration
fr: {Type de données} syncthing-configuration

note: type: deftp
en: Data type representing the configuration for @code{syncthing-service-type}.
fr: Type de données représentant la configuration de @code{syncthing-service}.

note: type: item
en: @code{syncthing} (default: @var{syncthing})
fr: @code{syncthing} (par défaut : @var{syncthing})

note: type: table
en: @code{syncthing} package to use.
fr: Le paquet @code{syncthing} à utiliser.

note: type: item
en: @code{arguments} (default: @var{'()})
fr: @code{arguments} (par défaut : @var{'()})

note: type: table
en: List of command-line arguments passing to @code{syncthing} binary.
fr: Liste d'arguments de la ligne de commande à passer au binaire @code{syncthing}.

note: type: item
en: @code{logflags} (default: @var{0})
fr: @code{logflags} (par défaut : @var{0})

note: type: table
en: Sum of logging flags, see @uref{https://docs.syncthing.net/users/syncthing.html#cmdoption-logflags, Syncthing documentation logflags}.
fr: L'ensemble des drapeaux de journalisation, voir @uref{https://docs.syncthing.net/users/syncthing.html#cmdoption-logflags, logfiles sur la documentation de Syncthing}.

note: type: item
en: @code{user} (default: @var{#f})
fr: @code{user} (par défaut : @var{#f})

note: type: table
en: The user as which the Syncthing service is to be run.  This assumes that the specified user exists.
fr: L'utilisateur qui lance le service Syncthing.  Cela suppose que l'utilisateur spécifié existe.

note: type: item
en: @code{group} (default: @var{"users"})
fr: @code{group} (par défaut : @var{"users"})

note: type: table
en: The group as which the Syncthing service is to be run.  This assumes that the specified group exists.
fr: Le groupe qui lance le service Syncthing.  Cela suppose que le group spécifié existe.

note: type: item
en: @code{home} (default: @var{#f})
fr: @code{home} (par défaut : @var{#f})

note: type: table
en: Common configuration and data directory.  The default configuration directory is @file{$HOME} of the specified Syncthing @code{user}.
fr: Configuration et répertoires de données communs. Le répertoire de configuration par défaut est @file{$HOME} de l'utilisateur @code{user} de Syncthing.

note: type: Plain text
en: Furthermore, @code{(gnu services ssh)} provides the following services.
fr: En plus, @code{(gnu services ssh)} fournit les services suivant.

note: type: cindex
en: SSH server
fr: Serveur SSH

note: type: deffn
en: {Scheme Procedure} lsh-service [#:host-key "/etc/lsh/host-key"] @
fr: {Procédure Scheme} lsh-service [#:host-key "/etc/lsh/host-key"] @

note: type: deffn
en: [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ [#:allow-empty-passwords? #f] [#:root-login? #f] @ [#:syslog-output? #t] [#:x11-forwarding? #t] @ [#:tcp/ip-forwarding? #t] [#:password-authentication? #t] @ [#:public-key-authentication? #t] [#:initialize? #t] Run the @command{lshd} program from @var{lsh} to listen on port @var{port-number}.  @var{host-key} must designate a file containing the host key, and readable only by root.
fr: [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @
    [#:allow-empty-passwords? #f] [#:root-login? #f] @
    [#:syslog-output? #t] [#:x11-forwarding? #t] @
    [#:tcp/ip-forwarding? #t] [#:password-authentication? #t] @
    [#:public-key-authentication? #t] [#:initialize? #t]
    Lance le programme @command{lshd} de @var{lsh} pour écouter sur le port @var{port-number}.  @var{host-key} doit désigner un fichier contenant la clef d'hôte et ne doit être lisible que par root.

note: type: deffn
en: When @var{daemonic?} is true, @command{lshd} will detach from the controlling terminal and log its output to syslogd, unless one sets @var{syslog-output?} to false.  Obviously, it also makes lsh-service depend on existence of syslogd service.  When @var{pid-file?} is true, @command{lshd} writes its PID to the file called @var{pid-file}.
fr: Lorsque @var{daemonic?} est vrai, @command{lshd} se détachera du terminal qui le contrôle et enregistrera ses journaux avec syslogd, à moins que @var{syslog-output?} ne soit faux.  Évidemment, cela rend aussi lsh-service dépendant de l'existence d'un service syslogd.  Lorsque @var{pid-file?} est vrai, @command{lshd} écrit son PID dans le fichier @var{pid-file}.

note: type: deffn
en: When @var{initialize?} is true, automatically create the seed and host key upon service activation if they do not exist yet.  This may take long and require interaction.
fr: Lorsque @var{initialize?} est vrai, la graine et la clef d'hôte seront créés lors de l'activation du service s'ils n'existent pas encore.  Cela peut prendre du temps et demande une interaction.

note: type: deffn
en: When @var{initialize?} is false, it is up to the user to initialize the randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to create a key pair with the private key stored in file @var{host-key} (@pxref{lshd basics,,, lsh, LSH Manual}).
fr: Lorsque @var{initialize?} est faux, c'est à l'utilisateur d'initialiser le générateur d'aléatoire (@pxref{lsh-make-seed,,, lsh, LSH Manual}) et de crée une paire de clefs dont la clef privée sera stockée dans le fichier @var{host-key} (@pxref{lshd basics,,, lsh, LSH Manual}).

note: type: deffn
en: When @var{interfaces} is empty, lshd listens for connections on all the network interfaces; otherwise, @var{interfaces} must be a list of host names or addresses.
fr: Lorsque @var{interfaces} est vide, lshd écoute les connexions sur toutes les interfaces réseau ; autrement, @var{interfaces} doit être une liste de noms d'hôtes et d'adresses.

note: type: deffn
en: @var{allow-empty-passwords?} specifies whether to accept log-ins with empty passwords, and @var{root-login?} specifies whether to accept log-ins as root.
fr: @var{allow-empty-passwords?} spécifie si les connexions avec des mots de passes vides sont acceptés et @var{root-login?} spécifie si la connexion en root est acceptée.

note: type: deffn
en: The other options should be self-descriptive.
fr: Les autres options devraient être évidentes.

note: type: deffn
en: {Scheme Variable} openssh-service-type
fr: {Variable Scheme} openssh-service-type

note: type: deffn
en: This is the type for the @uref{http://www.openssh.org, OpenSSH} secure shell daemon, @command{sshd}.  Its value must be an @code{openssh-configuration} record as in this example:
fr: C'est le type pour le démon ssh @uref{http://www.openssh.org, OpenSSH}, @command{sshd}.  Sa valeur doit être un enregistrement @code{openssh-configuration} comme dans cet exemple :

note: type: deffn
en: See below for details about @code{openssh-configuration}.
fr: Voir plus bas pour trouver des détails sur @code{openssh-configuration}.

note: type: deffn
en: This service can be extended with extra authorized keys, as in this example:
fr: Ce service peut être étendu avec des clefs autorisées supplémentaires, comme dans cet exemple :

note: type: deftp
en: {Data Type} openssh-configuration
fr: {Type de données} openssh-configuration

note: type: deftp
en: This is the configuration record for OpenSSH's @command{sshd}.
fr: C'est l'enregistrement de la configuration de la commande @command{sshd} d'OpenSSH.

note: type: item
en: @code{openssh} (default @var{openssh})
fr: @code{openssh} (par défaut : @var{openssh})

note: type: table
en: The OpenSSH package to use.
fr: Le paquet OpenSSH à utiliser.

note: type: item
en: @code{pid-file} (default: @code{"/var/run/sshd.pid"})
fr: @code{pid-file} (par défaut : @code{"/var/run/sshd.pid"})

note: type: table
en: Name of the file where @command{sshd} writes its PID.
fr: Nom du fichier où @command{sshd} écrit son PID.

note: type: item
en: @code{port-number} (default: @code{22})
fr: @code{port-number} (par défaut : @code{22})

note: type: table
en: TCP port on which @command{sshd} listens for incoming connections.
fr: Port TCP sur lequel @command{sshd} écoute les connexions entrantes.

note: type: item
en: @code{max-connections} (default: @code{200})
fr: @code{max-connections} (par défaut : @code{200})

note: type: table
en: Hard limit on the maximum number of simultaneous client connections, enforced by the inetd-style Shepherd service (@pxref{Service De- and Constructors, @code{make-inetd-constructor},, shepherd, The GNU Shepherd Manual}).
fr: Limite du nombre maximum de connexions clientes simultanées, appliquée par le service Shepherd dans le style d'inetd (@pxref{Service De- and Constructors, @code{make-inetd-constructor},, shepherd, le manuel de GNU Shepherd}).

note: type: item
en: @code{permit-root-login} (default: @code{#f})
fr: @code{permit-root-login} (par défaut : @code{#f})

note: type: table
en: This field determines whether and when to allow logins as root.  If @code{#f}, root logins are disallowed; if @code{#t}, they are allowed.  If it's the symbol @code{'prohibit-password}, then root logins are permitted but not with password-based authentication.
fr: Ce champ détermine si et quand autoriser les connexions en root.  Si la valeur est @code{#f}, les connexions en root sont désactivées ; si la valeur est @code{#t}, elles sont autorisées.  S'il s'agit du symbole @code{'prohibit-password}, alors les connexions root sont autorisées mais pas par une authentification par mot de passe.

note: type: item
en: @code{allow-empty-passwords?} (default: @code{#f})
fr: @code{allow-empty-passwords?} (par défaut : @code{#f})

note: type: table
en: When true, users with empty passwords may log in.  When false, they may not.
fr: Lorsque la valeur est vraie, les utilisateurs avec un mot de passe vide peuvent se connecter.  Sinon, ils ne peuvent pas.

note: type: item
en: @code{password-authentication?} (default: @code{#t})
fr: @code{password-authentication?} (par défaut : @code{#t})

note: type: table
en: When true, users may log in with their password.  When false, they have other authentication methods.
fr: Lorsque la valeur est vraie, les utilisateurs peuvent se connecter avec leur mot de passe.  Sinon, ils doivent utiliser une autre méthode d'authentification.

note: type: item
en: @code{public-key-authentication?} (default: @code{#t})
fr: @code{public-key-authentication?} (par défaut : @code{#t})

note: type: table
en: When true, users may log in using public key authentication.  When false, users have to use other authentication method.
fr: Lorsque la valeur est vraie, les utilisateurs peuvent se connecter avec leur clef publique.  Sinon, les utilisateurs doivent utiliser une autre méthode d'authentification.

note: type: table
en: Authorized public keys are stored in @file{~/.ssh/authorized_keys}.  This is used only by protocol version 2.
fr: Les clefs publiques autorisées sont stockées dans @file{~/.ssh/authorized_keys}.  Ce n'est utilisé que par le protocole version 2.

note: type: item
en: @code{x11-forwarding?} (default: @code{#f})
fr: @code{x11-forwarding?} (par défaut : @code{#f})

note: type: table
en: When true, forwarding of X11 graphical client connections is enabled---in other words, @command{ssh} options @option{-X} and @option{-Y} will work.
fr: Lorsque la valeur est vraie, le transfert de connexion du client graphique X11 est activé — en d'autre termes, les options @option{-X} et @option{-Y} de @command{ssh} fonctionneront.

note: type: item
en: @code{allow-agent-forwarding?} (default: @code{#t})
fr: @code{allow-agent-forwarding?} (par défaut : @code{#t})

note: type: table
en: Whether to allow agent forwarding.
fr: Indique s'il faut autoriser la redirection d'agent.

note: type: item
en: @code{allow-tcp-forwarding?} (default: @code{#t})
fr: @code{allow-tcp-forwarding?} (par défaut : @code{#t})

note: type: table
en: Whether to allow TCP forwarding.
fr: Indique s'il faut autoriser la redirection TCP.

note: type: item
en: @code{gateway-ports?} (default: @code{#f})
fr: @code{gateway-ports?} (par défaut : @code{#f})

note: type: table
en: Whether to allow gateway ports.
fr: Indique s'il faut autoriser les ports de passerelle.

note: type: item
en: @code{challenge-response-authentication?} (default: @code{#f})
fr: @code{challenge-response-authentication?} (par défaut : @code{#f})

note: type: table
en: Specifies whether challenge response authentication is allowed (e.g.@: via PAM).
fr: Spécifie si l'authentification par défi est autorisée (p.@: ex.@: via PAM).

note: type: item
en: @code{use-pam?} (default: @code{#t})
fr: @code{use-pam?} (par défaut : @code{#t})

note: type: table
en: Enables the Pluggable Authentication Module interface.  If set to @code{#t}, this will enable PAM authentication using @code{challenge-response-authentication?} and @code{password-authentication?}, in addition to PAM account and session module processing for all authentication types.
fr: Active l'interface avec le module d'authentification greffable, PAM.  Si la valeur est @code{#t}, cela activera l'authentification PAM avec @code{challenge-response-authentication?} et @code{password-authentication?}, en plus des modules de compte et de session de PAM pour tous les types d'authentification.

note: type: table
en: Because PAM challenge response authentication usually serves an equivalent role to password authentication, you should disable either @code{challenge-response-authentication?} or @code{password-authentication?}.
fr: Comme l'authentification par défi de PAM sert généralement un rôle équivalent à l'authentification par mot de passe, vous devriez désactiver soit @code{challenge-response-authentication?}, soit @code{password-authentication?}.

note: type: item
en: @code{print-last-log?} (default: @code{#t})
fr: @code{print-last-log?} (par défaut : @code{#t})

note: type: table
en: Specifies whether @command{sshd} should print the date and time of the last user login when a user logs in interactively.
fr: Spécifie si @command{sshd} devrait afficher la date et l'heure de dernière connexion des utilisateurs lorsqu'un utilisateur se connecte de manière interactive.

note: type: item
en: @code{subsystems} (default: @code{'(("sftp" "internal-sftp"))})
fr: @code{subsystems} (par défaut : @code{'(("sftp" "internal-sftp"))})

note: type: table
en: Configures external subsystems (e.g.@: file transfer daemon).
fr: Configure les sous-systèmes externes (p.@: ex.@: le démon de transfert de fichiers).

note: type: table
en: This is a list of two-element lists, each of which containing the subsystem name and a command (with optional arguments) to execute upon subsystem request.
fr: C'est une liste de paires, composées chacune du nom du sous-système et d'une commande (avec éventuellement des arguments) à exécuter à la demande du sous-système.

note: type: table
en: The command @command{internal-sftp} implements an in-process SFTP server.  Alternatively, one can specify the @command{sftp-server} command:
fr: La commande @command{internal-sftp} met en œuvre un serveur SFTP en cours de traitement.  On peut aussi spécifier la commande @command{sftp-server} :

note: type: item
en: @code{accepted-environment} (default: @code{'()})
fr: @code{accepted-environment} (par défaut : @code{'()})

note: type: table
en: List of strings describing which environment variables may be exported.
fr: Liste de chaînes de caractères qui décrivent les variables d'environnement qui peuvent être exportées.

note: type: table
en: Each string gets on its own line.  See the @code{AcceptEnv} option in @code{man sshd_config}.
fr: Chaque chaîne a sa propre ligne.  Voir l'option @code{AcceptEnv} dans @code{man sshd_config}.

note: type: table
en: This example allows ssh-clients to export the @env{COLORTERM} variable.  It is set by terminal emulators, which support colors.  You can use it in your shell's resource file to enable colors for the prompt and commands if this variable is set.
fr: Cet exemple permet aux clients ssh d'exporter la variable @env{COLORTERM}.  Elle est initialisée par les émulateurs de terminaux qui supportent les couleurs.  Vous pouvez l'utiliser dans votre fichier de ressource de votre shell pour activer les couleurs sur la ligne de commande si cette variable est initialisée.

note: type: cindex
en: authorized keys, SSH
fr: clefs autorisées, SSH

note: type: cindex
en: SSH authorized keys
fr: SSH, clefs autorisées

note: type: table
en: This is the list of authorized keys.  Each element of the list is a user name followed by one or more file-like objects that represent SSH public keys.  For example:
fr: C'est la liste des clefs autorisées.  Chaque élément de la liste est un nom d'utilisateur suivit d'un ou plusieurs objets simili-fichiers qui représentent les clefs publiques SSH.  Par exemple :

note: type: table
en: registers the specified public keys for user accounts @code{rekado}, @code{chris}, and @code{root}.
fr: enregistre les clefs publiques spécifiées pour les comptes @code{rekado}, @code{chris} et @code{root}.

note: type: table
en: Additional authorized keys can be specified @i{via} @code{service-extension}.
fr: Des clefs autorisées supplémentaires peuvent être spécifiées via @code{service-extension}.

note: type: table
en: Note that this does @emph{not} interfere with the use of @file{~/.ssh/authorized_keys}.
fr: Remarquez que cela n'interfère @emph{pas} avec l'utilisation de @file{~/.ssh/authorized_keys}.

note: type: item
en: @code{generate-host-keys?} (default: @code{#t})
fr: @code{generate-host-keys?} (par défaut : @code{#t})

note: type: table
en: Whether to generate host key pairs with @command{ssh-keygen -A} under @file{/etc/ssh} if there are none.
fr: Indique s'il faut générer des pairs de clés hôtes avec @command{ssh-keygen -A} dans @file{/etc/ssh} s'il n'y en a pas.

note: type: table
en: Generating key pairs takes a few seconds when enough entropy is available and is only done once.  You might want to turn it off for instance in a virtual machine that does not need it because host keys are provided in some other way, and where the extra boot time is a problem.
fr: Générer des pairs de clés prend quelques secondes quand assez d'entropie est disponible et n'arrive qu'une fois. Vous pouvez vouloir désactiver cette génération dans une machine virtuelle qui n'en a pas besoin car les clés hôtes sont fournies d'une autre manière, et où le temps de démarrage supplémentaire peut être un problème.

note: type: item
en: @code{log-level} (default: @code{'info})
fr: @code{log-level} (par défaut : @code{'info})

note: type: table
en: This is a symbol specifying the logging level: @code{quiet}, @code{fatal}, @code{error}, @code{info}, @code{verbose}, @code{debug}, etc.  See the man page for @file{sshd_config} for the full list of level names.
fr: C'est le symbole qui spécifie le niveau de journalisation : @code{quiet}, @code{fatal}, @code{error}, @code{info}, @code{verbose}, @code{debug}, etc.  Voir la page de manuel de @file{sshd_config} pour trouver la liste complète des noms de niveaux.

note: type: item
en: @code{extra-content} (default: @code{""})
fr: @code{extra-content} (par défaut : @code{""})

note: type: table
en: This field can be used to append arbitrary text to the configuration file.  It is especially useful for elaborate configurations that cannot be expressed otherwise.  This configuration, for example, would generally disable root logins, but permit them from one specific IP address:
fr: Ce champ peut être utilisé pour ajouter un texte arbitraire au fichier de configuration.  C'est particulièrement utile pour des configurations élaborées qui ne pourraient pas être exprimées autrement.  Cette configuration, par exemple, désactiverait les connexions en root, mais les permettrait depuis une adresse IP spécifique :

note: type: deffn
en: {Scheme Procedure} dropbear-service [@var{config}]
fr: {Procédure Scheme} dropbear-service [@var{config}]

note: type: deffn
en: Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH daemon} with the given @var{config}, a @code{<dropbear-configuration>} object.
fr: Lance le @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,démon SSH Dropbear} avec la configuration @var{config} donnée, un objet @code{<dropbear-configuration>}.

note: type: deffn
en: For example, to specify a Dropbear service listening on port 1234, add this call to the operating system's @code{services} field:
fr: Par exemple, pour spécifier un service Dropbear qui écoute sur le port 1234, ajoutez cet appel au champ @code{services} de votre système d'exploitation :

note: type: deftp
en: {Data Type} dropbear-configuration
fr: {Type de données} dropbear-configuration

note: type: deftp
en: This data type represents the configuration of a Dropbear SSH daemon.
fr: Ce type de données représente la configuration d'un démon SSH Dropbear.

note: type: item
en: @code{dropbear} (default: @var{dropbear})
fr: @code{dropbear} (par défaut : @var{dropbear})

note: type: table
en: The Dropbear package to use.
fr: Le paquet Dropbear à utiliser.

note: type: item
en: @code{port-number} (default: 22)
fr: @code{port-number} (par défaut : 22)

note: type: table
en: The TCP port where the daemon waits for incoming connections.
fr: Le port TCP sur lequel le démon attend des connexions entrantes.

note: type: item
en: @code{syslog-output?} (default: @code{#t})
fr: @code{syslog-output?} (par défaut : @code{#t})

note: type: table
en: Whether to enable syslog output.
fr: Indique s'il faut activer la sortie vers syslog.

note: type: item
en: @code{pid-file} (default: @code{"/var/run/dropbear.pid"})
fr: @code{pid-file} (par défaut : @code{"/var/run/dropbear.pid"})

note: type: table
en: File name of the daemon's PID file.
fr: Nom du fichier de PID du démon.

note: type: item
en: @code{root-login?} (default: @code{#f})
fr: @code{root-login?} (par défaut : @code{#f})

note: type: table
en: Whether to allow @code{root} logins.
fr: Indique s'il faut autoriser les connexions en @code{root}.

note: type: table
en: Whether to allow empty passwords.
fr: Indique s'il faut autoriser les mots de passes vides.

note: type: table
en: Whether to enable password-based authentication.
fr: Indique s'il faut autoriser l'authentification par mot de passe.

note: type: deffn
en: {Scheme Variable} autossh-service-type
fr: {Variable Scheme} autossh-service-type

note: type: deffn
en: This is the type for the @uref{https://www.harding.motd.ca/autossh, AutoSSH} program that runs a copy of @command{ssh} and monitors it, restarting it as necessary should it die or stop passing traffic.  AutoSSH can be run manually from the command-line by passing arguments to the binary @command{autossh} from the package @code{autossh}, but it can also be run as a Guix service.  This latter use case is documented here.
fr: C'est le type du programme @uref{https://www.harding.motd.ca/autossh, AutoSSH} qui exécute une copie de @command{ssh} et la surveille, en la redémarrant si nécessaire si elle meurt ou arrête le trafic passant.  AutoSSH peut être exécuté manuellement à partir de la ligne de commande en passant des arguments au binaire @command{autossh} du paquet @code{autossh}, mais peut aussi être exécuté comme un service Guix.  Ce dernier cas d'utilisation est documenté ici.

note: type: deffn
en: AutoSSH can be used to forward local traffic to a remote machine using an SSH tunnel, and it respects the @file{~/.ssh/config} of the user it is run as.
fr: AutoSSH peut être utilisé pour transférer le trafic local vers une machine distante en utilisant un tunnel SSH, et il respecte le @file{~/.ssh/config} de l'utilisateur sous lequel il est exécuté.

note: type: deffn
en: For example, to specify a service running autossh as the user @code{pino} and forwarding all local connections to port @code{8081} to @code{remote:8081} using an SSH tunnel, add this call to the operating system's @code{services} field:
fr: Par exemple, pour spécifier un service exécutant autossh comme utilisateur·rice @code{pino} et transférant toutes les connexions locales au port @code{8081} vers @code{remote:8081} en utilisant un tunnel SSH, ajoutez cet appel au champ @code{services} du système d'exploitation :

note: type: deftp
en: {Data Type} autossh-configuration
fr: {Type de données} autossh-configuration

note: type: deftp
en: This data type represents the configuration of an AutoSSH service.
fr: Ce type de données représente la configuration du service AutoSSH.

note: type: item
en: @code{user} (default @code{"autossh"})
fr: @code{user} (par défaut : @code{"autossh"})

note: type: table
en: The user as which the AutoSSH service is to be run.  This assumes that the specified user exists.
fr: L'utilisateur·rice en tant que responsable du service AutoSSH.  Cela suppose que l'utilisateur spécifié existe.

note: type: item
en: @code{poll} (default @code{600})
fr: @code{poll} (par défaut : @code{600})

note: type: table
en: Specifies the connection poll time in seconds.
fr: Spécifie le temps de sondage de la connexion en secondes.

note: type: item
en: @code{first-poll} (default @code{#f})
fr: @code{first-poll} (par défaut : @code{#f})

note: type: table
en: Specifies how many seconds AutoSSH waits before the first connection test.  After this first test, polling is resumed at the pace defined in @code{poll}.  When set to @code{#f}, the first poll is not treated specially and will also use the connection poll specified in @code{poll}.
fr: Indique le nombre de secondes que l'AutoSSH attend avant le premier test de connexion.  Après ce premier test, le vote reprend au rythme défini dans @code{poll}.  Lorsqu'il est défini à @code{#f}, le premier sondage n'est pas traité spécialement et utilisera également le sondage de connexion spécifié dans @code{poll}.

note: type: item
en: @code{gate-time} (default @code{30})
fr: @code{gate-time} (par défaut : @code{30})

note: type: table
en: Specifies how many seconds an SSH connection must be active before it is considered successful.
fr: Spécifie combien de secondes une connexion SSH doit être active avant qu'elle soit considérée comme réussie.

note: type: item
en: @code{log-level} (default @code{1})
fr: @code{log-level} (par défaut : @code{1})

note: type: table
en: The log level, corresponding to the levels used by syslog---so @code{0} is the most silent while @code{7} is the chattiest.
fr: Le niveau du log, correspondant aux niveaux utilisés par syslog---donc @code{0} est le plus silencieux tandis que @code{7} est le plus bavard.

note: type: item
en: @code{max-start} (default @code{#f})
fr: @code{max-start} (par défaut : @code{#f})

note: type: table
en: The maximum number of times SSH may be (re)started before AutoSSH exits.  When set to @code{#f}, no maximum is configured and AutoSSH may restart indefinitely.
fr: Le nombre maximum de fois que SSH peut être (re)démarré avant la sortie d'AutoSSH.  Lorsqu'il est défini sur @code{#f}, aucun maximum n'est configuré et AutoSSH peut redémarrer indéfiniment.

note: type: item
en: @code{message} (default @code{""})
fr: @code{message} (par défaut : @code{""})

note: type: table
en: The message to append to the echo message sent when testing connections.
fr: Le message à ajouter à celui de echo envoyé lors du test des connexions.

note: type: item
en: @code{port} (default @code{"0"})
fr: @code{port} (par défaut : @code{"0"})

note: type: table
en: The ports used for monitoring the connection.  When set to @code{"0"}, monitoring is disabled.  When set to @code{"@var{n}"} where @var{n} is a positive integer, ports @var{n} and @var{n}+1 are used for monitoring the connection, such that port @var{n} is the base monitoring port and @code{n+1} is the echo port.  When set to @code{"@var{n}:@var{m}"} where @var{n} and @var{m} are positive integers, the ports @var{n} and @var{m} are used for monitoring the connection, such that port @var{n} is the base monitoring port and @var{m} is the echo port.
fr: Les ports utilisés pour la surveillance de la connexion.  Lorsqu'il est défini sur @code{"0"}, la surveillance est désactivée.  Lorsqu'il est défini sur @code{"@var{n}"} où @var{n} est un entier positif, les ports @var{n} et @var{n}+1 sont utilisés pour surveiller la connexion, de sorte que le port @var{n} est le port de surveillance de base et @code{n+1} est le port d'echo.  Lorsqu'ils sont définis sur @code{"@var{n}:@var{m}"} où @var{n} et @var{m} sont des entiers positifs, les ports @var{n} et @var{m} sont utilisés pour surveiller la connexion, de sorte que le port @var{n} est le port de surveillance de base et @var{m} est le port d'echo.

note: type: item
en: @code{ssh-options} (default @code{'()})
fr: @code{ssh-options} (par défaut : @code{'()})

note: type: table
en: The list of command-line arguments to pass to @command{ssh} when it is run.  Options @option{-f} and @option{-M} are reserved for AutoSSH and may cause undefined behaviour.
fr: La liste des arguments de la ligne de commande à passer à @command{ssh} lorsqu'elle est exécutée.  Les options @option{-f} et @option{-M} sont réservées à AutoSSH et peuvent provoquer un comportement indéfini.

note: type: deffn
en: {Scheme Variable} webssh-service-type
fr: {Variable Scheme} webssh-service-type

note: type: deffn
en: This is the type for the @uref{https://webssh.huashengdun.org/, WebSSH} program that runs a web SSH client.  WebSSH can be run manually from the command-line by passing arguments to the binary @command{wssh} from the package @code{webssh}, but it can also be run as a Guix service.  This latter use case is documented here.
fr: C'est le type du programme @uref{https://webssh.huashengdun.org/, WebSSH} qui exécute un client web SSH.  WebSSH peut être exécuté manuellement à partir de la ligne de commande en passant des arguments au binaire @command{wssh} du paquet @code{webssh}, mais il peut aussi être exécuté comme un service Guix.  Ce dernier cas d'utilisation est documenté ici.

note: type: deffn
en: For example, to specify a service running WebSSH on loopback interface on port @code{8888} with reject policy with a list of allowed to connection hosts, and NGINX as a reverse-proxy to this service listening for HTTPS connection, add this call to the operating system's @code{services} field:
fr: Par exemple, pour spécifier un service exécutant WebSSH sur l'interface de bouclage sur le port @code{8888} avec une politique de rejet avec une liste des hôtes autorisés à se connecter, et NGINX comme reverse-proxy de ce service écoutant la connexion HTTPS, ajouter cet appel au champ @code{services} du système d'exploitation :

note: type: deftp
en: {Data Type} webssh-configuration
fr: {Type de données} webssh-configuration

note: type: deftp
en: Data type representing the configuration for @code{webssh-service}.
fr: Type de données représentant la configuration pour @code{webssh-service}.

note: type: item
en: @code{package} (default: @var{webssh})
fr: @code{package} (par défaut : @var{webssh})

note: type: table
en: @code{webssh} package to use.
fr: Le paquet @code{webssh} à utiliser.

note: type: item
en: @code{user-name} (default: @var{"webssh"})
fr: @code{user-name} (par défaut : @var{"webssh"})

note: type: table
en: User name or user ID that file transfers to and from that module should take place.
fr: Le nom ou l'identifiant de l'utilisateur·rice qui transfère le fichier vers et depuis ce module doit avoir lieu.

note: type: item
en: @code{group-name} (default: @var{"webssh"})
fr: @code{group-name} (par défaut : @var{"webssh"})

note: type: item
en: @code{address} (default: @var{#f})
fr: @code{address} (par défaut : @var{#f})

note: type: table
en: IP address on which @command{webssh} listens for incoming connections.
fr: Adresse IP sur laquelle @command{webssh} écoute les connexions entrantes.

note: type: item
en: @code{port} (default: @var{8888})
fr: @code{port} (par défaut : @var{8888})

note: type: table
en: TCP port on which @command{webssh} listens for incoming connections.
fr: Port TCP sur lequel @command{webssh} écoute les connexions entrantes.

note: type: item
en: @code{policy} (default: @var{#f})
fr: @code{policy} (par défaut : @var{#f})

note: type: table
en: Connection policy.  @var{reject} policy requires to specify @var{known-hosts}.
fr: Politique de connexion.  La politique de @var{reject} nécessite de spécifier @var{known-hosts}.

note: type: item
en: @code{known-hosts} (default: @var{'()})
fr: @code{known-hosts} (par défaut : @var{'()})

note: type: table
en: List of hosts which allowed for SSH connection from @command{webssh}.
fr: Liste des hôtes qui ont permis une connexion SSH à partir de @command{webssh}.

note: type: item
en: @code{log-file} (default: @file{"/var/log/webssh.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/webssh.log"})

note: type: table
en: Name of the file where @command{webssh} writes its log file.
fr: Nom du fichier où @command{webssh} écrit son fichier de journal.

note: type: item
en: @code{log-level} (default: @var{#f})
fr: @code{log-level} (par défaut : @var{#f})

note: type: table
en: Logging level.
fr: Niveau d'enregistrement.

note: type: defvr
en: {Scheme Variable} %facebook-host-aliases
fr: {Variable Scheme} %facebook-host-aliases

note: type: defvr
en: This variable contains a string for use in @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}).  Each line contains a entry that maps a known server name of the Facebook on-line service---e.g., @code{www.facebook.com}---to the local host---@code{127.0.0.1} or its IPv6 equivalent, @code{::1}.
fr: Cette variable contient une chaîne de caractères à utiliser dans @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}).  Chaque ligne contient une entrée qui fait correspondre les noms des serveurs connus du service en ligne Facebook — p.@: ex.@: @code{www.facebook.com} — à l'hôte local — @code{127.0.0.1} ou son équivalent en IPv6, @code{::1}.

note: type: defvr
en: This variable is typically used in the @code{hosts-file} field of an @code{operating-system} declaration (@pxref{operating-system Reference, @file{/etc/hosts}}):
fr: Cette variable est typiquement utilisée dans le champ @code{hosts-file} d'une déclaration @code{operating-system} (@pxref{operating-system Reference, @file{/etc/hosts}}) :

note: type: lisp
en: (operating-system
      (host-name "mymachine")
      ;; ...
      (hosts-file
        ;; Create a /etc/hosts file with aliases for "localhost"
        ;; and "mymachine", as well as for Facebook servers.
        (plain-file "hosts"
                    (string-append (local-host-aliases host-name)
                                   %facebook-host-aliases))))
fr: (operating-system
      (host-name "mamachine")
      ;; ...
      (hosts-file
        ;; Crée un fichier /etc/hosts avec des alias pour « localhost »
        ;; et « mamachine », ainsi que pour les serveurs de Facebook.
        (plain-file "hosts"
                    (string-append (local-host-aliases host-name)
                                   %facebook-host-aliases))))

note: type: defvr
en: This mechanism can prevent programs running locally, such as Web browsers, from accessing Facebook.
fr: Ce mécanisme peut éviter que des programmes qui tournent localement, comme des navigateurs Web, ne se connectent à Facebook.

note: type: Plain text
en: The @code{(gnu services avahi)} provides the following definition.
fr: Le module @code{(gnu services avahi)} fourni la définition suivante.

note: type: defvr
en: {Scheme Variable} avahi-service-type
fr: {Variable Scheme} avahi-service-type

note: type: defvr
en: This is the service that runs @command{avahi-daemon}, a system-wide mDNS/DNS-SD responder that allows for service discovery and ``zero-configuration'' host name lookups (see @uref{https://avahi.org/}).  Its value must be an @code{avahi-configuration} record---see below.
fr: C'est le service qui lance @command{avahi-daemon}, un service système qui répond aux requêtes mDNS/DNS-SD qui permet la découverte de services et la recherche de nom en « zéro configuration » (voir @uref{https://avahi.org/}).  Sa valeur doit être un enregistrement @code{avahi-configuration} — voir plus bas.

note: type: defvr
en: This service extends the name service cache daemon (nscd) so that it can resolve @code{.local} host names using @uref{https://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}.  @xref{Name Service Switch}, for information on host name resolution.
fr: Ce service étend le démon de cache de services de noms (nscd) pour qu'il puisse résoudre les noms d'hôtes en @code{.local} avec @uref{https://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}.  @xref{Name Service Switch}, pour plus d'informations sur la résolution des noms d'hôte.

note: type: defvr
en: Additionally, add the @var{avahi} package to the system profile so that commands such as @command{avahi-browse} are directly usable.
fr: En plus, cela ajoute le paquet @var{avahi} au profil du système pour que les commandes comme @command{avahi-browse} soient directement utilisables.

note: type: deftp
en: {Data Type} avahi-configuration
fr: {Type de données} avahi-configuration

note: type: deftp
en: Data type representation the configuration for Avahi.
fr: Type de données représentant la configuration d'Avahi.

note: type: item
en: @code{host-name} (default: @code{#f})
fr: @code{host-name} (par défaut : @code{#f})

note: type: table
en: If different from @code{#f}, use that as the host name to publish for this machine; otherwise, use the machine's actual host name.
fr: Si la valeur n'est pas @code{#f}, utilise cette valeur comme nom d'hôte à publier pour la machine ; sinon, utilise le vrai nom d'hôte de la machine.

note: type: item
en: @code{publish?} (default: @code{#t})
fr: @code{publish?} (par défaut : @code{#t})

note: type: table
en: When true, allow host names and services to be published (broadcast) over the network.
fr: Lorsque la valeur est vraie, permet la publication sur le réseau (en diffusion) des noms d'hôtes et des services.

note: type: item
en: @code{publish-workstation?} (default: @code{#t})
fr: @code{publish-workstation?} (par défaut : @code{#t})

note: type: table
en: When true, @command{avahi-daemon} publishes the machine's host name and IP address via mDNS on the local network.  To view the host names published on your local network, you can run:
fr: Lorsque la valeur est vraie, @command{avahi-daemon} publie le nom d'hôte et l'adresse IP de la machine via mDNS sur le réseau local.  Pour voir les noms d'hôtes publiés sur votre réseau local, vous pouvez lancer :

note: type: item
en: @code{wide-area?} (default: @code{#f})
fr: @code{wide-area?} (par défaut : @code{#f})

note: type: table
en: When true, DNS-SD over unicast DNS is enabled.
fr: Lorsque la valeur est vraie, DNS-SD sur DNS unicast est activé.

note: type: item
en: @code{ipv4?} (default: @code{#t})
fr: @code{ipv4?} (par défaut : @code{#t})

note: type: itemx
en: @code{ipv6?} (default: @code{#t})
fr: @code{ipv6?} (par défaut : @code{#t})

note: type: table
en: These fields determine whether to use IPv4/IPv6 sockets.
fr: Ces champs déterminent s'il faut utiliser des socket IPv4/IPv6.

note: type: item
en: @code{domains-to-browse} (default: @code{'()})
fr: @code{domains-to-browse} (par défaut : @code{'()})

note: type: table
en: This is a list of domains to browse.
fr: C'est la liste des domaines sur lesquels naviguer.

note: type: deffn
en: {Scheme Variable} openvswitch-service-type
fr: {Variable Scheme} openvswitch-service-type

note: type: deffn
en: This is the type of the @uref{https://www.openvswitch.org, Open vSwitch} service, whose value should be an @code{openvswitch-configuration} object.
fr: C'est le type du service @uref{https://www.openvswitch.org, Open vSwitch}, dont la valeur devrait être un objet @code{openvswitch-configuration}.

note: type: deftp
en: {Data Type} openvswitch-configuration
fr: {Type de données} openvswitch-configuration

note: type: deftp
en: Data type representing the configuration of Open vSwitch, a multilayer virtual switch which is designed to enable massive network automation through programmatic extension.
fr: Type de données représentant la configuration de Open vSwitch, un commutateur virtuel multiniveaux conçu pour rendre possible l'automatisation massive des réseaux avec des extensions programmables.

note: type: item
en: @code{package} (default: @var{openvswitch})
fr: @code{package} (par défaut : @var{openvswitch})

note: type: table
en: Package object of the Open vSwitch.
fr: Objet de paquet de Open vSwitch.

note: type: defvr
en: {Scheme Variable} pagekite-service-type
fr: {Variable Scheme} pagekite-service-type

note: type: defvr
en: This is the service type for the @uref{https://pagekite.net, PageKite} service, a tunneling solution for making localhost servers publicly visible, even from behind restrictive firewalls or NAT without forwarded ports.  The value for this service type is a @code{pagekite-configuration} record.
fr: Il s'agit du type de service du service @uref{https://pagekite.net, PageKite}, une solution de tunneling permettant de rendre les serveurs locaux visibles au public, même derrière des pare-feu restrictifs ou du NAT sans transfert de ports.  La valeur pour ce type de service est un enregistrement @code{pagekite-configuration}.

note: type: defvr
en: Here's an example exposing the local HTTP and SSH daemons:
fr: Voici un exemple exposant les démons locaux HTTP et SSH :

note: type: deftp
en: {Data Type} pagekite-configuration
fr: {Type de données} pagekite-configuration

note: type: deftp
en: Data type representing the configuration of PageKite.
fr: Type de données représentant la configuration de PageKite.

note: type: item
en: @code{package} (default: @var{pagekite})
fr: @code{package} (par défaut : @var{pagekite})

note: type: table
en: Package object of PageKite.
fr: Objet du paquet de PageKite.

note: type: item
en: @code{kitename} (default: @code{#f})
fr: @code{kitename} (par défaut : @code{#f})

note: type: table
en: PageKite name for authenticating to the frontend server.
fr: Nom de PageKite pour l'authentification au serveur frontal.

note: type: item
en: @code{kitesecret} (default: @code{#f})
fr: @code{kitesecret} (par défaut : @code{#f})

note: type: table
en: Shared secret for authenticating to the frontend server.  You should probably put this inside @code{extra-file} instead.
fr: Secret partagé pour s'authentifier auprès du serveur frontal.  Vous devriez probablement mettre cela dans @code{extra-file} à la place.

note: type: item
en: @code{frontend} (default: @code{#f})
fr: @code{frontend} (par défaut : @code{#f})

note: type: table
en: Connect to the named PageKite frontend server instead of the @uref{https://pagekite.net,,pagekite.net} service.
fr: Connectez-vous au serveur frontal nommé PageKite au lieu du service @uref{https://pagekite.net,,pagekite.net}.

note: type: item
en: @code{kites} (default: @code{'("http:@@kitename:localhost:80:@@kitesecret")})
fr: @code{kites} (par défaut : @code{'("http:@@kitename:localhost:80:@@kitesecret")})

note: type: table
en: List of service kites to use.  Exposes HTTP on port 80 by default.  The format is @code{proto:kitename:host:port:secret}.
fr: Liste de services kites à utiliser.  Expose HTTP sur le port 80 par défaut. Le format est @code{proto:nomdukite:hôte:port:secret}.

note: type: item
en: @code{extra-file} (default: @code{#f})
fr: @code{extra-file} (par défaut : @code{#f})

note: type: table
en: Extra configuration file to read, which you are expected to create manually.  Use this to add additional options and manage shared secrets out-of-band.
fr: Fichier de configuration supplémentaire à lire, que vous devez créer manuellement.  Utilisez-le pour ajouter des options supplémentaires et gérer les secrets partagés hors bande.

note: type: defvr
en: {Scheme Variable} yggdrasil-service-type
fr: {Variable Scheme} yggdrasil-service-type

note: type: defvr
en: The service type for connecting to the @uref{https://yggdrasil-network.github.io/, Yggdrasil network}, an early-stage implementation of a fully end-to-end encrypted IPv6 network.
fr: Le type de service pour se connecter au @uref{https://yggdrasil-network.github.io/, réseau Yggdrasil}, une jeune implémentation d'un réseau IPv6 entièrement chiffré de bout en bout.

note: type: quotation
en: Yggdrasil provides name-independent routing with cryptographically generated addresses.  Static addressing means you can keep the same address as long as you want, even if you move to a new location, or generate a new address (by generating new keys) whenever you want.  @uref{https://yggdrasil-network.github.io/2018/07/28/addressing.html}
fr: Yggdrasil fournit le routage indépendant du nom avec des adresses générées de manière cryptographiques.  L'adressage statique signifie que vous pouvez garder la même adresse aussi longtemps que vous le souhaitez, même si vous changez d'emplacement, et que vous pouvez générer une nouvelle adresse (en générant de nouvelles clés) quand vous le souhaitez.  @uref{https://yggdrasil-network.github.io/2018/07/28/addressing.html}

note: type: defvr
en: Pass it a value of @code{yggdrasil-configuration} to connect it to public peers and/or local peers.
fr: Passez-lui une valeur de type @code{yggdrasil-configuration} pour le connecter aux pairs publics ou aux pairs locaux.

note: type: defvr
en: Here is an example using public peers and a static address.  The static signing and encryption keys are defined in @file{/etc/yggdrasil-private.conf} (the default value for @code{config-file}).
fr: voici un exemple qui utilise des pairs publics et une adresse statique.  Les clés de signature et de chiffrement statiques sont définies dans @file{/etc/yggdrasil-private.conf} (la valeur par défaut de @code{config-file}).

note: type: lisp
en: ;; part of the operating-system declaration
    (service yggdrasil-service-type
                  (yggdrasil-configuration
                   (autoconf? #f) ;; use only the public peers
                   (json-config
                   ;; choose one from
                   ;; https://github.com/yggdrasil-network/public-peers
                    '((peers . #("tcp://1.2.3.4:1337"))))
                   ;; /etc/yggdrasil-private.conf is the default value for config-file
                   ))
fr: ;; extrait d'une déclaration de système d'exploitation
    (service yggdrasil-service-type
                  (yggdrasil-configuration
                   (autoconf? #f) ;; utiliser uniquement les pairs publics
                   (json-config
                   ;; choisir parmi
                   ;; https://github.com/yggdrasil-network/public-peers
                    '((peers . #("tcp://1.2.3.4:1337"))))
                   ;; /etc/yggdrasil-private.conf est la valeur par défaut pour config-file
                   ))

note: type: example
en: # sample content for /etc/yggdrasil-private.conf
    @{
      # Your public key. Your peers may ask you for this to put
      # into their AllowedPublicKeys configuration.
      PublicKey: 64277...
fr: # exemple de contenu de /etc/yggdrasil-private.conf
    @{
      # Votre clé publique. Vos pairs peuvent vous la demander pour la
      # mettre dans leur configuration AllowedPublicKeys.
      PublicKey: 64277...

note: type: example
en:   # Your private key. DO NOT share this with anyone!
      PrivateKey: 5c750...
    @}
fr:   # Votre clé privée. NE la partagez avec PERSONNE !
      PrivateKey: 5c750...
    @}

note: type: deftp
en: {Data Type} yggdrasil-configuration
fr: {Type de données} yggdrasil-configuration

note: type: deftp
en: Data type representing the configuration of Yggdrasil.
fr: Type de données qui représente la configuration de Yggdrasil.

note: type: item
en: @code{package} (default: @code{yggdrasil})
fr: @code{package} (par défaut : @code{yggdrasil})

note: type: table
en: Package object of Yggdrasil.
fr: Objet du paquet de Yggdrasil.

note: type: item
en: @code{json-config} (default: @code{'()})
fr: @code{json-config} (par défaut : @code{'()})

note: type: table
en: Contents of @file{/etc/yggdrasil.conf}.  Will be merged with @file{/etc/yggdrasil-private.conf}.  Note that these settings are stored in the Guix store, which is readable to all users. @strong{Do not store your private keys in it}.  See the output of @code{yggdrasil -genconf} for a quick overview of valid keys and their default values.
fr: Contenu de @file{/etc/yggdrasil.conf}.  Sera fusionné avec @file{/etc/yggdrasil-private.conf}.  Remarquez que ces paramètres sont stockés dans le dépôt de Guix, qui est disponible en lecture pour tout le monde.  @strong{Ne stockez pas vos clés privées dedans}.  Voir la sortie de @code{yggdrasil -genconf} pour un aperçu rapide de ce que sont des clés valides et leurs valeurs par défaut.

note: type: item
en: @code{autoconf?} (default: @code{#f})
fr: @code{autoconf?} (par défaut : @code{#f})

note: type: table
en: Whether to use automatic mode.  Enabling it makes Yggdrasil use adynamic IP and peer with IPv6 neighbors.
fr: Indique s'il faut utiliser le mode automatique.  L'activer fera utiliser une IP dynamique à Yggdrasil et l'appairer à ses voisins IPv6.

note: type: table
en: How much detail to include in logs.  Use @code{'debug} for more detail.
fr: La quantité de détails à inclure dans les journaux.  Utilisez @code{'debug} pour plus de détails.

note: type: item
en: @code{log-to} (default: @code{'stdout})
fr: @code{log-to} (par défaut : @code{'stdout})

note: type: table
en: Where to send logs.  By default, the service logs standard output to @file{/var/log/yggdrasil.log}.  The alternative is @code{'syslog}, which sends output to the running syslog service.
fr: L'emplacement où envoyer les journaux.  Par défaut, le service enregistre la sortie standard dans @file{/var/log/yggdrasil.log}.  L’alternative est @code{'syslog}, qui envoie la sortie au service syslog.

note: type: item
en: @code{config-file} (default: @code{"/etc/yggdrasil-private.conf"})
fr: @code{config-file} (par défaut : @code{"/etc/yggdrasil-private.conf"})

note: type: table
en: What HJSON file to load sensitive data from.  This is where private keys should be stored, which are necessary to specify if you don't want a randomized address after each restart.  Use @code{#f} to disable.  Options defined in this file take precedence over @code{json-config}.  Use the output of @code{yggdrasil -genconf} as a starting point.  To configure a static address, delete everything except these options:
fr: Le fichier HJSON depuis lequel charger les données sensibles.  C'est l'emplacement où stocker les clés privées, qui doivent être spécifiées si vous ne voulez pas une adresse aléatoire à chaque démarrage.  Utilisez @code{#f} pour désactiver.  Les options définies dans ce fichier prennent le pas sur @code{json-config}.  Utilisez la sortie de @code{yggdrasil -genconf} pour commencer.  Pour configurer une adresse statique, supprimez tout sauf ces options :

note: type: defvr
en: {Scheme Variable} ipfs-service-type
fr: {Variable Scheme} ipfs-service-type

note: type: defvr
en: The service type for connecting to the @uref{https://ipfs.io,IPFS network}, a global, versioned, peer-to-peer file system. Pass it a @code{ipfs-configuration} to change the ports used for the gateway and API.
fr: Le type de service pour se connecter au @uref{https://ipfs.io,réseau IPFS}, un système de fichiers mondial, versionné et en pair-à-pair. Passez lui un objet @code{ipfs-configuration} pour changer les ports utilisés pour la passerelle et l'API.

note: type: defvr
en: Here's an example configuration, using some non-standard ports:
fr: Voici un exemple de configuration, avec des ports non standards :

note: type: deftp
en: {Data Type} ipfs-configuration
fr: {Type de données} ipfs-configuration

note: type: deftp
en: Data type representing the configuration of IPFS.
fr: Type de données représentant la configuration d'IPFS.

note: type: item
en: @code{package} (default: @code{go-ipfs})
fr: @code{package} (par défaut : @code{go-ipfs})

note: type: table
en: Package object of IPFS.
fr: Objet du paquet d'IPFS.

note: type: item
en: @code{gateway} (default: @code{"/ip4/127.0.0.1/tcp/8082"})
fr: @code{gateway} (par défaut : @code{"/ip4/127.0.0.1/tcp/8082"})

note: type: table
en: Address of the gateway, in ‘multiaddress’ format.
fr: Adresse de la passerelle, au format « multiaddress ».

note: type: item
en: @code{api} (default: @code{"/ip4/127.0.0.1/tcp/5001"})
fr: @code{api} (par défaut : @code{"/ip4/127.0.0.1/tcp/5001"})

note: type: table
en: Address of the API endpoint, in ‘multiaddress’ format.
fr: Adresse du point d'accès de l'API, au format « multiaddress ».

note: type: deffn
en: {Scheme Variable} keepalived-service-type
fr: {Variable Scheme} keepalived-service-type

note: type: deffn
en: This is the type for the @uref{https://www.keepalived.org/, Keepalived} routing software, @command{keepalived}.  Its value must be an @code{keepalived-configuration} record as in this example for master machine:
fr: C'est le type pour le logiciel de routage @uref{https://www.keepalived.org/, Keepalived}, @command{keepalived}.  Sa valeur doit être un enregistrement @code{keepalived-configuration} comme dans cet exemple pour la machine maître :

note: type: deffn
en: where @file{keepalived-master.conf}:
fr: où @file{keepalived-master.conf} :

note: type: deffn
en: and for backup machine:
fr: et pour la machine de secours :

note: type: deffn
en: where @file{keepalived-backup.conf}:
fr: où @file{keepalived-backup.conf} :

note: type: cindex
en: unattended upgrades
fr: mises à jour non surveillées

note: type: cindex
en: upgrades, unattended
fr: mises à jour, non surveillées

note: type: Plain text
en: Guix provides a service to perform @emph{unattended upgrades}: periodically, the system automatically reconfigures itself from the latest Guix.  Guix System has several properties that make unattended upgrades safe:
fr: Guix fournit un service pour effectuer des @emph{unattended upgrades} : périodiquement, le système se reconfigure automatiquement à partir du dernier Guix.  Guix System possède plusieurs propriétés qui rendent les mises à jour non surveillées sûres :

note: type: itemize
en: upgrades are transactional (either the upgrade succeeds or it fails, but you cannot end up with an ``in-between'' system state);
fr: les mises à jour sont transactionnelles (soit la mise à jour réussit, soit elle échoue, mais vous ne pouvez pas vous retrouver avec un état système "intermédiaire") ;

note: type: itemize
en: the upgrade log is kept---you can view it with @command{guix system list-generations}---and you can roll back to any previous generation, should the upgraded system fail to behave as intended;
fr: le journal de mise à niveau est kept--- vous pouvez le consulter avec @command{guix system list-generations}--et vous pouvez revenir à n'importe quelle génération précédente, si le système mis à jour ne se comporte pas comme prévu ;

note: type: itemize
en: channel code is authenticated so you know you can only run genuine code (@pxref{Channels});
fr: le code du canal est authentifié, vous savez donc que vous ne pouvez exécuter que du code authentique (@pxref{Canaux}) ;

note: type: itemize
en: @command{guix system reconfigure} prevents downgrades, which makes it immune to @dfn{downgrade attacks}.
fr: @command{guix system reconfigure} empêche les déclassements, ce qui le rend immunisé contre les attaques @dfn{downgrade attacks}.

note: type: Plain text
en: To set up unattended upgrades, add an instance of @code{unattended-upgrade-service-type} like the one below to the list of your operating system services:
fr: Pour mettre en place des mises à jour sans surveillance, ajoutez une instance de @code{unattended-upgrade-service-type} comme celle ci-dessous, à la liste des services de votre système d'exploitation :

note: type: Plain text
en: The defaults above set up weekly upgrades: every Sunday at midnight.  You do not need to provide the operating system configuration file: it uses @file{/run/current-system/configuration.scm}, which ensures it always uses your latest configuration---@pxref{provenance-service-type}, for more information about this file.
fr: Les valeurs par défaut ci-dessus mettent en place des mises à jour hebdomadaires : tous les dimanches à minuit.  Il n'est pas nécessaire de fournir le fichier de configuration du système d'exploitation : il utilise @file{/run/current-system/configuration.scm}, ce qui garantit qu'il utilise toujours votre dernière configuration---@pxref{provenance-service-type}, pour plus d'informations sur ce fichier.

note: type: Plain text
en: There are several things that can be configured, in particular the periodicity and services (daemons) to be restarted upon completion.  When the upgrade is successful, the service takes care of deleting system generations older that some threshold, as per @command{guix system delete-generations}.  See the reference below for details.
fr: Plusieurs choses peuvent être configurés, notamment la périodicité et les services (démons) à redémarrer à la fin.  Lorsque la mise à jour est réussie, le service se charge de supprimer les générations de systèmes plus anciennes qu'un certain seuil, conformément à @command{guix system delete-generations}.  Voir la référence ci-dessous pour plus de détails.

note: type: Plain text
en: To ensure that upgrades are actually happening, you can run @command{guix system describe}.  To investigate upgrade failures, visit the unattended upgrade log file (see below).
fr: Pour vous assurer que les mises à jour sont bien effectuées, vous pouvez exécuter @command{guix system describe}.  Pour enquêter sur les échecs de mise à jour, consultez le fichier journal des mises à jour non surveillées (voir ci-dessous).

note: type: defvr
en: {Scheme Variable} unattended-upgrade-service-type
fr: {Variable Scheme} unattended-upgrade-service-type

note: type: defvr
en: This is the service type for unattended upgrades.  It sets up an mcron job (@pxref{Scheduled Job Execution}) that runs @command{guix system reconfigure} from the latest version of the specified channels.
fr: C'est le type de service pour les mises à jour sans surveillance.  Il met en place un job mcron (@pxref{Scheduled Job Execution}) qui exécute @command{guix system reconfigure} à partir de la dernière version des canaux spécifiés.

note: type: defvr
en: Its value must be a @code{unattended-upgrade-configuration} record (see below).
fr: Sa valeur doit être un enregistrement @code{unattended-upgrade-configuration} (voir ci-dessous).

note: type: deftp
en: {Data Type} unattended-upgrade-configuration
fr: {Type de données} unattended-upgrade-configuration

note: type: deftp
en: This data type represents the configuration of the unattended upgrade service.  The following fields are available:
fr: Ce type de données représente la configuration du service de mise à jour non surveillée.  Les champs suivants sont disponibles :

note: type: item
en: @code{schedule} (default: @code{"30 01 * * 0"})
fr: @code{schedule} (par défaut : @code{"30 01 * * 0"})

note: type: table
en: This is the schedule of upgrades, expressed as a gexp containing an mcron job schedule (@pxref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}).
fr: Il s'agit du calendrier des mises à jour, exprimé sous la forme d'une gexp contenant un calendrier des travaux mcron (@pxref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}).

note: type: item
en: @code{channels} (default: @code{#~%default-channels})
fr: @code{channels} (par défaut : @code{#~%default-channels})

note: type: table
en: This gexp specifies the channels to use for the upgrade (@pxref{Channels}).  By default, the tip of the official @code{guix} channel is used.
fr: Ce gexp spécifie les canaux à utiliser pour la mise à jour (@pxref{Canaux}).  Par défaut, l'extrémité du canal officiel @code{guix} est utilisée.

note: type: item
en: @code{operating-system-file} (default: @code{"/run/current-system/configuration.scm"})
fr: @code{operating-system-file} (par défaut : @code{"/run/current-system/configuration.scm"})

note: type: table
en: This field specifies the operating system configuration file to use.  The default is to reuse the config file of the current configuration.
fr: Ce champ indique le fichier de configuration du système d'exploitation à utiliser.  La valeur par défaut est de réutiliser le fichier de configuration de la configuration actuelle.

note: type: table
en: There are cases, though, where referring to @file{/run/current-system/configuration.scm} is not enough, for instance because that file refers to extra files (SSH public keys, extra configuration files, etc.) @i{via} @code{local-file} and similar constructs.  For those cases, we recommend something along these lines:
fr: Il y a cependant des cas où la référence à @file{/run/current-system/configuration.scm} n'est pas suffisante, par exemple parce que ce fichier fait référence à des fichiers supplémentaires (clés publiques SSH, fichiers de configuration supplémentaires, etc.) @i{via} @code{local-file} et constructions similaires.  Pour ces cas, nous recommandons quelque chose qui va dans ce sens :

note: type: table
en: The effect here is to import all of the current directory into the store, and to refer to @file{config.scm} within that directory.  Therefore, uses of @code{local-file} within @file{config.scm} will work as expected.  @xref{G-Expressions}, for information about @code{local-file} and @code{file-append}.
fr: L'effet ici est d'importer tout le répertoire courant dans le dépôt, et de se référer à @file{config.scm} dans ce répertoire.  Par conséquent, l'utilisation de @code{local-file} dans @file{config.scm} fonctionnera comme prévu.  @xref{G-Expressions}, pour plus d' informations sur @code{local-file} et @code{file-append}.

note: type: item
en: @code{services-to-restart} (default: @code{'(mcron)})
fr: @code{services-to-restart} (par défaut : @code{'(mcron)})

note: type: table
en: This field specifies the Shepherd services to restart when the upgrade completes.
fr: Ce champ indique les services Shepherd à redémarrer lorsque la mise à jour est terminée.

note: type: table
en: Those services are restarted right away upon completion, as with @command{herd restart}, which ensures that the latest version is running---remember that by default @command{guix system reconfigure} only restarts services that are not currently running, which is conservative: it minimizes disruption but leaves outdated services running.
fr: Ces services sont redémarrés dès qu'ils sont terminés, comme avec @command{herd restart}, ce qui garantit que la dernière version fonctionne---souvenez-vous que par défaut @command{guix system reconfigure} ne redémarre que les services qui ne fonctionnent pas actuellement, ce qui est conservateur : cela minimise les perturbations mais laisse fonctionner les services obsolètes.

note: type: table
en: Use @command{herd status} to find out candidates for restarting.  @xref{Services}, for general information about services.  Common services to restart would include @code{ntpd} and @code{ssh-daemon}.
fr: Utilisez @command{herd status} pour trouver les candidats au redémarrage. @xref{Services}, pour des informations générales sur les services. Les services courants à redémarrer sont @code{ntpd} et @code{ssh-daemon}.

note: type: table
en: By default, the @code{mcron} service is restarted.  This ensures that the latest version of the unattended upgrade job will be used next time.
fr: Par défaut, le service @code{mcron} est redémarré.  Cela garantit que la dernière version du travail de mise à niveau non surveillée sera utilisée la prochaine fois.

note: type: item
en: @code{system-expiration} (default: @code{(* 3 30 24 3600)})
fr: @code{system-expiration} (par défaut : @code{(* 3 30 24 3600)})

note: type: table
en: This is the expiration time in seconds for system generations.  System generations older that this amount of time are deleted with @command{guix system delete-generations} when an upgrade completes.
fr: C'est le temps d'expiration en secondes pour les générations du système.  Les générations du système plus anciennes que ce délai sont supprimées avec @command{guix system delete-generations} lorsqu'une mise à jour se termine .

note: type: quotation
en: The unattended upgrade service does not run the garbage collector.  You will probably want to set up your own mcron job to run @command{guix gc} periodically.
fr: Le service de mise à jour sans surveillance ne fait pas fonctionner le ramasse miettes.  Vous voudrez probablement configurer votre propre job mcron pour exécuter @command{guix gc} périodiquement.

note: type: item
en: @code{maximum-duration} (default: @code{3600})
fr: @code{minimum-duration} (par défaut : @code{3600})

note: type: table
en: Maximum duration in seconds for the upgrade; past that time, the upgrade aborts.
fr: Durée maximale en secondes de la mise à jour ; passé ce délai, la mise à jour est interrompue.

note: type: table
en: This is primarily useful to ensure the upgrade does not end up rebuilding or re-downloading ``the world''.
fr: Cela est surtout utile pour s'assurer que la mise à jour ne finira pas par reconstruire ou retélécharger « le monde ».

note: type: item
en: @code{log-file} (default: @code{"/var/log/unattended-upgrade.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/unattended-upgrade.log"})

note: type: table
en: File where unattended upgrades are logged.
fr: Fichier où sont consignées les mises à jour non surveillées.

note: type: cindex
en: X Window System
fr: Système de fenêtrage X

note: type: cindex
en: login manager
fr: gestionnaire de connexion

note: type: Plain text
en: Support for the X Window graphical display system---specifically Xorg---is provided by the @code{(gnu services xorg)} module.  Note that there is no @code{xorg-service} procedure.  Instead, the X server is started by the @dfn{login manager}, by default the GNOME Display Manager (GDM).
fr: La prise en chargue du système d'affichage graphique X Window — en particulier Xorg — est fournit par le module @code{(gnu services xorg)}.  Remarquez qu'il n'y a pas de procédure @code{xorg-service}.  À la place, le serveur X est démarré par le @dfn{gestionnaire de connexion}, par défaut le gestionnaire d'affichage de GNOME (GDM).

note: type: cindex
en: GNOME, login manager
fr: GNOME, gestionnaire de connexion

note: type: Plain text
en: GDM of course allows users to log in into window managers and desktop environments other than GNOME; for those using GNOME, GDM is required for features such as automatic screen locking.
fr: GDM permet évidemment aux utilisateurs de se connecter et d'ouvrir un gestionnaire de fenêtre ou un gestionnaire d'environnement autre que GNOME ; pour ceux qui utilisent GNOME, GDM est requis pour certaines fonctionnalités comme l'écran de verrouillage automatique.

note: type: cindex
en: window manager
fr: gestionnaire de fenêtre

note: type: Plain text
en: To use X11, you must install at least one @dfn{window manager}---for example the @code{windowmaker} or @code{openbox} packages---preferably by adding it to the @code{packages} field of your operating system definition (@pxref{operating-system Reference, system-wide packages}).
fr: Pour utiliser X11, vous devez installer au moins un @dfn{gestionnaire de fenêtre} — par exemple les paquets @code{windowmaker} ou @code{openbox} — de préférence en l'ajoutant au champ @code{packages} de votre définition de système d'exploitation (@pxref{operating-system Reference, system-wide packages}).

note: type: Plain text
en: GDM also supports Wayland: it can itself use Wayland instead of X11 for its user interface, and it can also start Wayland sessions.  The former is required for the latter, to enable, set @code{wayland?} to @code{#t} in @code{gdm-configuration}.
fr: GDM prend aussi en charge Wayland : il peut lui-même utiliser Wayland au lieu de X11 pour son interface utilisateur, et il peut aussi démarrer des sessions Wayland. Le premier est requis pour le second. Pour l'activer indiquez @code{wayland?} à @code{#t} dans @code{gdm-configuration}.

note: type: defvr
en: {Scheme Variable} gdm-service-type
fr: {Variable Scheme} gdm-service-type

note: type: defvr
en: This is the type for the @uref{https://wiki.gnome.org/Projects/GDM/, GNOME Desktop Manager} (GDM), a program that manages graphical display servers and handles graphical user logins.  Its value must be a @code{gdm-configuration} (see below).
fr: C'est le type pour le @uref{https://wiki.gnome.org/Projects/GDM/, GNOME Desktop Manager} (GDM), un programme qui gère les serveurs d'affichage graphique et qui gère les connexions graphiques des utilisateur·rice·s.  Sa valeur doit être un @code{gdm-configuration} (voir ci-dessous).

note: type: cindex
en: session types
fr: types de sessions

note: type: defvr
en: GDM looks for @dfn{session types} described by the @file{.desktop} files in @file{/run/current-system/profile/share/xsessions} (for X11 sessions) and @file{/run/current-system/profile/share/wayland-sessions} (for Wayland sessions) and allows users to choose a session from the log-in screen.  Packages such as @code{gnome}, @code{xfce}, @code{i3} and @code{sway} provide @file{.desktop} files; adding them to the system-wide set of packages automatically makes them available at the log-in screen.
fr: GDM cherche des @dfn{types de sessions} définies par les fichiers @file{.desktop} dans @file{/run/current-system/profile/share/xsessions} (pour les session X11) et @file{/run/current-system/profile/share/wayland-sessions} (pour les sessions Wayland) et permet aux utilisateurs de choisir une session depuis l'écran de connexion.  Les paquets comme @code{gnmoe}, @code{xfce}, @code{i3} et @code{sway} fournissent des fichiers @file{.desktop} ; les ajouter à l'ensemble des paquets du système les rendra automatiquement disponibles sur l'écran de connexion.

note: type: defvr
en: In addition, @file{~/.xsession} files are honored.  When available, @file{~/.xsession} must be an executable that starts a window manager and/or other X clients.
fr: En plus, les fichiers @file{~/.xsession} sont pris en compte.  Lorsqu'il est disponible, @file{~/.xsession} doit être un fichier exécutable qui démarre un gestionnaire de fenêtre au un autre client X.

note: type: deftp
en: {Data Type} gdm-configuration
fr: {Type de données} gdm-configuration

note: type: item
en: @code{auto-login?} (default: @code{#f})
fr: @code{auto-login?} (par défaut : @code{#f})

note: type: itemx
en: @code{default-user} (default: @code{#f})
fr: @code{default-user} (par défaut : @code{#f})

note: type: table
en: When @code{auto-login?} is false, GDM presents a log-in screen.
fr: Lorsque @code{auto-login?} est faux, GDM présente un écran de connexion.

note: type: table
en: When @code{auto-login?} is true, GDM logs in directly as @code{default-user}.
fr: Lorsque @code{auto-login?} est vrai, GDM se connecte directement en tant que @code{default-user}.

note: type: item
en: @code{auto-suspend?} (default @code{#t})
fr: @code{auto-suspend?} (par défaut : @code{#t})

note: type: table
en: When true, GDM will automatically suspend to RAM when nobody is physically connected.  When a machine is used via remote desktop or SSH, this should be set to false to avoid GDM interrupting remote sessions or rendering the machine unavailable.
fr: Lorsque la valeur est vraie, GDM passera en veille lorsque personne n'est connecté physiquement. Si votre machine peut être utilisée avec un bureau à distance ou SSH, cette option devrait être mise à faux pour éviter que GDM n'interrompe les sessions distantes ou rende la machine indisponible.

note: type: item
en: @code{debug?} (default: @code{#f})
fr: @code{debug?} (par défaut : @code{#f})

note: type: table
en: When true, GDM writes debug messages to its log.
fr: Lorsqu'il est « vrai », GDM écrit des messages de débogage dans son journal.

note: type: item
en: @code{gnome-shell-assets} (default: ...)
fr: @code{gnome-shell-assets} (par défaut : …)

note: type: table
en: List of GNOME Shell assets needed by GDM: icon theme, fonts, etc.
fr: Liste de données requises par GDM : un thème d'icônes, des polices, etc.

note: type: item
en: @code{xorg-configuration} (default: @code{(xorg-configuration)})
fr: @code{xorg-configuration} (par défaut : @code{(xorg-configuration)})

note: type: table
en: Configuration of the Xorg graphical server.
fr: Configuration du serveur graphique Xorg.

note: type: item
en: @code{x-session} (default: @code{(xinitrc)})
fr: @code{x-session} (par défaut : @code{xinitrc})

note: type: table
en: Script to run before starting a X session.
fr: Le script à lancer avant de démarrer une session X.

note: type: item
en: @code{xdmcp?} (default: @code{#f})
fr: @code{xdmcp?} (par défaut : @code{#f})

note: type: table
en: When true, enable the X Display Manager Control Protocol (XDMCP).  This should only be enabled in trusted environments, as the protocol is not secure.  When enabled, GDM listens for XDMCP queries on the UDP port 177.
fr: Lorsque la valeur est vraie, active le protocole de contrôle du gestionnaire d'affichage X (XDMCP). Cela ne devrait être activé que dans des environnements de confiance, car le protocole n'est pas sécurisé. Lorsque l'option est activée, GDM attend des requêtes XDMCP sur le port UDP 177.

note: type: item
en: @code{dbus-daemon} (default: @code{dbus-daemon-wrapper})
fr: @code{dbus-daemon} (par défaut : @code{dbus-daemon-wrapper})

note: type: table
en: File name of the @code{dbus-daemon} executable.
fr: Nom du fichier de l'exécutable @code{dbus-daemon}.

note: type: item
en: @code{gdm} (default: @code{gdm})
fr: @code{gdm} (par défaut : @code{gdm})

note: type: table
en: The GDM package to use.
fr: Le paquet GDM à utiliser.

note: type: item
en: @code{wayland?} (default: @code{#f})
fr: @code{wayland?} (par défaut : @code{#f})

note: type: table
en: When true, enables Wayland in GDM, necessary to use Wayland sessions.
fr: Lorsque la valeur est vraie, active Wayland dans GDM, ce qui est requis pour utiliser les sessions Wayland.

note: type: item
en: @code{wayland-session} (default: @code{gdm-wayland-session-wrapper})
fr: @code{wayland-session} (par défaut : @code{gdm-wayland-session-wrapper})

note: type: table
en: The Wayland session wrapper to use, needed to setup the environment.
fr: L'enveloppe de session Wayland à utiliser, requise pour mettre en place l'environnement.

note: type: defvr
en: {Scheme Variable} slim-service-type
fr: {Variable Scheme} slim-service-type

note: type: defvr
en: This is the type for the SLiM graphical login manager for X11.
fr: C'est de type pour le gestionnaire de connexion graphique SLiM pour X11.

note: type: defvr
en: Like GDM, SLiM looks for session types described by @file{.desktop} files and allows users to choose a session from the log-in screen using @kbd{F1}.  It also honors @file{~/.xsession} files.
fr: Comme GDM, SLiM recherche des types de sessions décrites par des fichiers @file{.desktop} et permet aux utilisateurs de choisir une session à partir de l'écran de connexion avec @kbd{F1}.  Il prend aussi en compte les fichiers @file{~/.xsession}.

note: type: defvr
en: Unlike GDM, SLiM does not spawn the user session on a different VT after logging in, which means that you can only start one graphical session.  If you want to be able to run multiple graphical sessions at the same time you have to add multiple SLiM services to your system services.  The following example shows how to replace the default GDM service with two SLiM services on tty7 and tty8.
fr: Contrairement à GDM, SLiM ne démarre pas la session utilisateur sur un terminal virtuel différent à la connexion, ce qui signifie que vous ne pouvez démarrer qu'une seule session graphique.  Si vous voulez pouvoir exécuter plusieurs sessions graphiques en même temps, vous devez ajouter plusieurs services SLiM à la liste des services de votre système.  L'exemple suivant montre comment remplacer le service GDM par défaut par deux services SLiM sur les tty 7 et 8.

note: type: deftp
en: {Data Type} slim-configuration
fr: {Type de données} slim-configuration

note: type: deftp
en: Data type representing the configuration of @code{slim-service-type}.
fr: Type de données représentant la configuration de @code{slim-service-type}.

note: type: table
en: Whether to allow logins with empty passwords.
fr: S'il faut autoriser les connexions avec un mot de passe vide.

note: type: item
en: @code{gnupg?} (default: @code{#f})
fr: @code{gnupg?} (par défaut : @code{#f})

note: type: table
en: If enabled, @code{pam-gnupg} will attempt to automatically unlock the user's GPG keys with the login password via @code{gpg-agent}.  The keygrips of all keys to be unlocked should be written to @file{~/.pam-gnupg}, and can be queried with @code{gpg -K --with-keygrip}.  Presetting passphrases must be enabled by adding @code{allow-preset-passphrase} in @file{~/.gnupg/gpg-agent.conf}.
fr: Si l'option est activée, @code{pam-gnupg} essaiera automatique de débloquer les clés GPG de l'utilisateur·rice avec le mot de passe de connexion via @code{gpg-agent}. Les keygrips de toutes les clés à débloquer doivent se trouver dans @file{~/.pam-gnupg} et vous pouvez les récupérer avec @code{gpg -K --with-keygrip}. Vous pouvez activer le préchargement des phrases de passes en ajoutant @code{allow-preset-passphrase} dans @file{~/.gnupg/gpg-agent.conf}.

note: type: itemx
en: @code{default-user} (default: @code{""})
fr: @code{default-user} (par défaut : @code{""})

note: type: table
en: When @code{auto-login?} is false, SLiM presents a log-in screen.
fr: Lorsque @code{auto-login?} est faux, SLiM présent un écran de connexion.

note: type: table
en: When @code{auto-login?} is true, SLiM logs in directly as @code{default-user}.
fr: Lorsque @code{auto-login?} est vrai, SLiM se connecte directement en tant que @code{default-user}.

note: type: item
en: @code{theme} (default: @code{%default-slim-theme})
fr: @code{theme} (par défaut : @code{%default-slim-theme})

note: type: itemx
en: @code{theme-name} (default: @code{%default-slim-theme-name})
fr: @code{theme-name} (par défaut : @code{%default-slim-theme-name})

note: type: table
en: The graphical theme to use and its name.
fr: Le thème graphique à utiliser et son nom.

note: type: item
en: @code{auto-login-session} (default: @code{#f})
fr: @code{auto-login-session} (par défaut : @code{#f})

note: type: table
en: If true, this must be the name of the executable to start as the default session---e.g., @code{(file-append windowmaker "/bin/windowmaker")}.
fr: Si la valeur est vraie, elle doit être le nom d'un exécutable à démarrer comme session par défaut — p.@: ex.@: @code{(file-append windowmaker "/bin/windowmaker")}.

note: type: table
en: If false, a session described by one of the available @file{.desktop} files in @code{/run/current-system/profile} and @code{~/.guix-profile} will be used.
fr: Si la valeur est fausse, une session décrite par l'un des fichiers @file{.desktop} disponibles dans @code{/run/current-system/profile} et @code{~/.guix-profile} sera utilisée.

note: type: quotation
en: You must install at least one window manager in the system profile or in your user profile.  Failing to do that, if @code{auto-login-session} is false, you will be unable to log in.
fr: Vous devez installer au moins un gestionnaire de fenêtres dans le profil du système ou dans votre profil utilisateur.  Sinon, si @code{auto-login-session} est faux, vous ne serez jamais capable de vous connecter.

note: type: item
en: @code{xorg-configuration} (default @code{(xorg-configuration)})
fr: @code{xorg-configuration} (par défaut : @code{(xorg-configuration)})

note: type: item
en: @code{display} (default @code{":0"})
fr: @code{display} (par défaut : @code{":0"})

note: type: table
en: The display on which to start the Xorg graphical server.
fr: La session d'affichage sur laquelle démarrer le serveur graphique Xorg.

note: type: item
en: @code{vt} (default @code{"vt7"})
fr: @code{vt} (par défaut : @code{"vt7"})

note: type: table
en: The VT on which to start the Xorg graphical server.
fr: Le terminal virtuel sur lequel démarrer le serveur d'affichage graphique Xorg.

note: type: item
en: @code{xauth} (default: @code{xauth})
fr: @code{xauth} (par défaut : @code{xauth})

note: type: table
en: The XAuth package to use.
fr: Le paquet XAuth à utiliser.

note: type: item
en: @code{shepherd} (default: @code{shepherd})
fr: @code{shepherd} (par défaut : @code{shepherd})

note: type: table
en: The Shepherd package used when invoking @command{halt} and @command{reboot}.
fr: Le paquet Shepherd à utiliser pour invoquer @command{halt} et @command{reboot}.

note: type: item
en: @code{sessreg} (default: @code{sessreg})
fr: @code{sessreg} (par défaut : @code{sessreg})

note: type: table
en: The sessreg package used in order to register the session.
fr: Le paquet sessreg à utiliser pour enregistrer la session.

note: type: item
en: @code{slim} (default: @code{slim})
fr: @code{slim} (par défaut : @code{slim})

note: type: table
en: The SLiM package to use.
fr: Le paquet SLiM à utiliser.

note: type: defvr
en: {Scheme Variable} %default-theme
fr: {Variable Scheme} %default-theme

note: type: defvrx
en: {Scheme Variable} %default-theme-name
fr: {Variable Scheme} %default-theme-name

note: type: defvr
en: The default SLiM theme and its name.
fr: Le thème SLiM par défaut et son nom.

note: type: cindex
en: X11 login
fr: Connexion X11

note: type: defvr
en: {Scheme Variable} sddm-service-type
fr: {Variable Scheme} sddm-service-type

note: type: defvr
en: This is the type of the service to run the @uref{https://github.com/sddm/sddm,SDDM display manager}.  Its value must be a @code{sddm-configuration} record (see below).
fr: C'est le type de service qui permet d'exécuter le gestionnaire d'affichage @uref{https://github.com/sddm/sddm,Gestionnaire d'affichage SDDM}.  Sa valeur doit être un enregistrement @code{sddm-configuration} (voir ci-dessous).

note: type: defvr
en: Here's an example use:
fr: Voici un exemple d'utilisation :

note: type: deftp
en: {Data Type} sddm-configuration
fr: {Type de données} sddm-configuration

note: type: deftp
en: This data type represents the configuration of the SDDM login manager.  The available fields are:
fr: Ce type de données représente la configuration du gestionnaire de connexion SDDM.  Les champs disponibles sont :

note: type: item
en: @code{sddm} (default: @code{sddm})
fr: @code{sddm} (par défaut : @code{sddm})

note: type: table
en: The SDDM package to use.
fr: Le paquet SDDM à utiliser.

note: type: item
en: @code{display-server} (default: "x11")
fr: @code{display-server} (par défaut : "x11")

note: type: table
en: Select display server to use for the greeter.  Valid values are @samp{"x11"} or @samp{"wayland"}.
fr: Choisit le serveur d'affichage à utiliser pour l'écran d'accueil.  Les valeurs valides sont @samp{"x11"} ou @samp{"wayland"}.

note: type: item
en: @code{numlock} (default: "on")
fr: @code{numlock} (par défaut : "on")

note: type: table
en: Valid values are @samp{"on"}, @samp{"off"} or @samp{"none"}.
fr: Les valeurs valides sont @samp{"on"}, @samp{"off"} or @samp{"none"}.

note: type: item
en: @code{halt-command} (default @code{#~(string-append #$shepherd "/sbin/halt")})
fr: @code{halt-command} (par défaut : @code{#~(string-append #$shepherd "/sbin/halt")})

note: type: table
en: Command to run when halting.
fr: La commande à lancer à l'arrêt du système.

note: type: item
en: @code{reboot-command} (default @code{#~(string-append #$shepherd "/sbin/reboot")})
fr: @code{reboot-command} (par défaut : @code{#~(string-append #$shepherd "/sbin/reboot")})

note: type: table
en: Command to run when rebooting.
fr: La commande à lancer lors du redémarrage du système.

note: type: item
en: @code{theme} (default "maldives")
fr: @code{theme} (par défaut : "maldives")

note: type: table
en: Theme to use.  Default themes provided by SDDM are @samp{"elarun"}, @samp{"maldives"} or @samp{"maya"}.
fr: Thème à utiliser.  Les thèmes par défaut fournis par SDDM sont @samp{"elarun"}, @samp{"maldives"} ou @samp{"maya"}.

note: type: item
en: @code{themes-directory} (default "/run/current-system/profile/share/sddm/themes")
fr: @code{themes-directory} (par défaut : "/run/current-system/profile/share/sddm/themes")

note: type: table
en: Directory to look for themes.
fr: Le répertoire où se trouvent les thèmes.

note: type: item
en: @code{faces-directory} (default "/run/current-system/profile/share/sddm/faces")
fr: @code{faces-directory} (par défaut : "/run/current-system/profile/share/sddm/faces")

note: type: table
en: Directory to look for faces.
fr: Répertoire où se trouvent les avatars.

note: type: item
en: @code{default-path} (default "/run/current-system/profile/bin")
fr: @code{default-path} (par défaut : "/run/current-system/profile/bin")

note: type: table
en: Default PATH to use.
fr: Le PATH par défaut à utiliser.

note: type: item
en: @code{minimum-uid} (default: 1000)
fr: @code{minimum-uid} (par défaut : 1000)

note: type: table
en: Minimum UID displayed in SDDM and allowed for log-in.
fr: UID minimum affiché dans le SDDM et autorisé pour la connexion.

note: type: item
en: @code{maximum-uid} (default: 2000)
fr: @code{maximum-uid} (par défaut : 2000)

note: type: table
en: Maximum UID to display in SDDM.
fr: UID maximum pour être affiché dans SDDM.

note: type: item
en: @code{remember-last-user?} (default #t)
fr: @code{remember-last-user?} (par défaut : #t)

note: type: table
en: Remember last user.
fr: S'il faut se rappeler le dernier utilisateur connecté.

note: type: item
en: @code{remember-last-session?} (default #t)
fr: @code{remember-last-session?} (par défaut : #t)

note: type: table
en: Remember last session.
fr: S'il faut se rappeler la dernière session.

note: type: item
en: @code{hide-users} (default "")
fr: @code{hide-users} (par défaut : "")

note: type: table
en: Usernames to hide from SDDM greeter.
fr: Les noms d'utilisateurs à cacher sur l'écran d'accueil de SDDM.

note: type: item
en: @code{hide-shells} (default @code{#~(string-append #$shadow "/sbin/nologin")})
fr: @code{hide-shells} (par défaut : @code{#~(string-append #$shadow "/sbin/nologin")})

note: type: table
en: Users with shells listed will be hidden from the SDDM greeter.
fr: Les utilisateurs avec les shells listés seront cachés sur l'écran d'accueil de SDDM.

note: type: item
en: @code{session-command} (default @code{#~(string-append #$sddm "/share/sddm/scripts/wayland-session")})
fr: @code{session-command} (par défaut : @code{#~(string-append #$sddm "/share/sddm/scripts/wayland-session")})

note: type: table
en: Script to run before starting a wayland session.
fr: Le script à lancer avant de démarrer une session wayland.

note: type: item
en: @code{sessions-directory} (default "/run/current-system/profile/share/wayland-sessions")
fr: @code{sessions-directory} (par défaut : "/run/current-system/profile/share/wayland-sessions")

note: type: table
en: Directory to look for desktop files starting wayland sessions.
fr: Le répertoire où trouver les fichiers .desktop qui démarrent des sessions wayland.

note: type: item
en: @code{xauth-path} (default @code{#~(string-append #$xauth "/bin/xauth")})
fr: @code{xauth-path} (par défaut : @code{#~(string-append #$xauth "/bin/xauth")})

note: type: table
en: Path to xauth.
fr: Chemin vers xauth.

note: type: item
en: @code{xephyr-path} (default @code{#~(string-append #$xorg-server "/bin/Xephyr")})
fr: @code{xephyr-path} (par défaut : @code{#~(string-append #$xorg-server "/bin/Xephyr")})

note: type: table
en: Path to Xephyr.
fr: Chemin vers Xephyr.

note: type: item
en: @code{xdisplay-start} (default @code{#~(string-append #$sddm "/share/sddm/scripts/Xsetup")})
fr: @code{xdisplay-start} (par défaut : @code{#~(string-append #$sddm "/share/sddm/scripts/Xsetup")})

note: type: table
en: Script to run after starting xorg-server.
fr: Le script à lancer après avoir démarré xorg-server.

note: type: item
en: @code{xdisplay-stop} (default @code{#~(string-append #$sddm "/share/sddm/scripts/Xstop")})
fr: @code{xdisplay-stop} (par défaut : @code{#~(string-append #$sddm "/share/sddm/scripts/Xstop")})

note: type: table
en: Script to run before stopping xorg-server.
fr: Le script à lancer avant d'arrêter xorg-server.

note: type: item
en: @code{xsession-command} (default: @code{xinitrc})
fr: @code{xsession-command} (par défaut : @code{xinitrc})

note: type: item
en: @code{xsessions-directory} (default: "/run/current-system/profile/share/xsessions")
fr: @code{xsessions-directory} (par défaut : "/run/current-system/profile/share/xsessions")

note: type: table
en: Directory to look for desktop files starting X sessions.
fr: Répertoire où trouver les fichiers .desktop pour les sessions X.

note: type: item
en: @code{minimum-vt} (default: 7)
fr: @code{minimum-vt} (par défaut : 7)

note: type: table
en: Minimum VT to use.
fr: VT minimal à utiliser.

note: type: item
en: @code{auto-login-user} (default "")
fr: @code{auto-login-user} (par défaut : "")

note: type: table
en: User account that will be automatically logged in.  Setting this to the empty string disables auto-login.
fr: Compte utilisateur qui sera automatiquement connecté. Paramétrer ceci à la chaine vide désactive la connexion automatique.

note: type: item
en: @code{auto-login-session} (default "")
fr: @code{auto-login-session} (par défaut : "")

note: type: table
en: The @file{.desktop} file name to use as the auto-login session, or the empty string.
fr: Nom du fichier @file{.desktop} utilisé comme session pour la connexion automatique, ou la chaine vide.

note: type: item
en: @code{relogin?} (default #f)
fr: @code{relogin?} (par défaut : #f)

note: type: table
en: Relogin after logout.
fr: S'il faut se reconnecter après la déconnexion.

note: type: cindex
en: lightdm, graphical login manager
fr: lightdm, gestionnaire de connexion graphique

note: type: cindex
en: display manager, lightdm
fr: gestionnaire d'affichage, lightdm

note: type: defvr
en: {Scheme Variable} lightdm-service-type
fr: {Variable Scheme} lightdm-service-type

note: type: defvr
en: This is the type of the service to run the @url{https://github.com/canonical/lightdm,LightDM display manager}.  Its value must be a @code{lightdm-configuration} record, which is documented below.  Among its distinguishing features are TigerVNC integration for easily remoting your desktop as well as support for the XDMCP protocol, which can be used by remote clients to start a session from the login manager.
fr: C'est le type de service qui lance le @url{https://github.com/canonical/lightdm,gestionnaire d'affichage LightDM}. Sa valeur doit être un enregistrement @code{lightdm-configuration}, qui est documenté ci-dessous. Entre autres particularité, il possède une intégration avec TigerVNC pour accéder à votre bureau à distance ainsi que la prise en charge du protocole XDMCP, qui peut être utilisé par les clients distants pour démarrer une session à partir du gestionnaire de connexion.

note: type: defvr
en: In its most basic form, it can be used simply as:
fr: Dans sa forme la plus basique, il peut s'utiliser de cette manière :

note: type: defvr
en: A more elaborate example making use of the VNC capabilities and enabling more features and verbose logs could look like:
fr: Un exemple plus élaboré qui utilise la fonctionnalité VNC et active plus de fonctionnalités et les journaux verbeux ressemblerait à ceci :

note: type: deftp
en: {Data Type} lightdm-configuration
fr: {Type de données} lightdm-configuration

note: type: deftp
en: Available @code{lightdm-configuration} fields are:
fr: Les champs de @code{lightdm-configuration} disponibles sont :

note: type: item
en: @code{lightdm} (default: @code{lightdm}) (type: file-like)
fr: @code{lightdm} (par défaut : @code{lightdm}) (type : simili-fichier)

note: type: table
en: The lightdm package to use.
fr: Le paquet lightdm à utiliser.

note: type: item
en: @code{allow-empty-passwords?} (default: @code{#f}) (type: boolean)
fr: @code{allow-empty-passwords?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether users not having a password set can login.
fr: Indique si les utilisateurs et utilisatrices sans mot de passe peuvent se connecter.

note: type: table
en: Enable verbose output.
fr: Active la sortie verbeuse.

note: type: item
en: @code{xorg-configuration} (type: xorg-configuration)
fr: @code{xorg-configuration} (type : xorg-configuration)

note: type: table
en: The default Xorg server configuration to use to generate the Xorg server start script.  It can be refined per seat via the @code{xserver-command} of the @code{<lightdm-seat-configuration>} record, if desired.
fr: La configuration par défaut du serveur Xorg à utiliser pour générer le script de démarrage du serveur Xorg. Elle peut être raffinée pour chaque siège via le champ @code{xserver-command} de l'enregistrement  @code{<lightdm-seat-configuration>} si vous le souhaitez.

note: type: item
en: @code{greeters} (type: list-of-greeter-configurations)
fr: @code{greeters} (type : liste-de-greeter-configurations)

note: type: table
en: The LightDM greeter configurations specifying the greeters to use.
fr: Les configurations de l'écran d'accueil de LightDM spécifiant les écrans d'accueil à utiliser.

note: type: item
en: @code{seats} (type: list-of-seat-configurations)
fr: @code{seats} (type : liste-de-seat-configurations)

note: type: table
en: The seat configurations to use.  A LightDM seat is akin to a user.
fr: Les configurations de sièges à utiliser. Un siège LightDM correspond à un utilisateur ou une utilisatrice.

note: type: item
en: @code{xdmcp?} (default: @code{#f}) (type: boolean)
fr: @code{xdmcp?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether a XDMCP server should listen on port UDP 177.
fr: Indique si le serveur XDMCP doit écouter sur le port UDP 177.

note: type: item
en: @code{xdmcp-listen-address} (type: maybe-string)
fr: @code{xdmcp-listen-address} (type : peut-être-chaine)

note: type: table
en: The host or IP address the XDMCP server listens for incoming connections.  When unspecified, listen on for any hosts/IP addresses.
fr: L'hôte ou l'adresse IP sur laquelle le serveur XDMCP écoute les connexions entrantes. Si la valeur n'est pas spécifiée, écoute sur tous les hôtes et toutes les adresses.

note: type: item
en: @code{vnc-server?} (default: @code{#f}) (type: boolean)
fr: @code{vnc-server?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether a VNC server is started.
fr: Si un serveur VNC est démarré.

note: type: item
en: @code{vnc-server-command} (type: file-like)
fr: @code{vnc-server-command} (type : simili-fichier)

note: type: table
en: The Xvnc command to use for the VNC server, it's possible to provide extra options not otherwise exposed along the command, for example to disable security:
fr: La commande Xvnc à utiliser pour le serveur VNC, il est possible de fournir des options supplémentaires qui ne sont sinon pas exposées avec la commande, par exemple pour désactiver la sécurité :

note: type: table
en: Or to set a PasswordFile for the classic (unsecure) VncAuth mecanism:
fr: Ou pour indiquer un fichier de mot de passe pour le mécanisme VncAuth classique (non sécurisé) :

note: type: table
en: The password file should be manually created using the @command{vncpasswd} command.  Note that LightDM will create new sessions for VNC users, which means they need to authenticate in the same way as local users would.
fr: Le fichier de mots de passe devrait être créé manuellement avec la commande @command{vncpasswd}. Remarquez que LightDM créera de nouvelles sessions pour les utilisateurs et les utilisatrices VNC, ce qui signifie qu'ils et elles devront s'authentifier de la même manière que les utilisateurs locaux et utilisatrices locales.

note: type: item
en: @code{vnc-server-listen-address} (type: maybe-string)
fr: @code{vnc-server-listen-address} (type : peut-être-chaine)

note: type: table
en: The host or IP address the VNC server listens for incoming connections.  When unspecified, listen for any hosts/IP addresses.
fr: L'hôte ou l'adresse IP sur laquelle le serveur VNC écoute les connexions entrantes. Si la valeur n'est pas spécifiée, écoute sur tous les hôtes et toutes les adresses.

note: type: item
en: @code{vnc-server-port} (default: @code{5900}) (type: number)
fr: @code{vnc-server-port} (par défaut : @code{5900}) (type : nombre)

note: type: table
en: The TCP port the VNC server should listen to.
fr: Port TCP sur lequel écoute le serveur VNC.

note: type: item
en: @code{extra-config} (default: @code{()}) (type: list-of-strings)
fr: @code{extra-config} (par défaut : @code{()}) (type : liste-de-chaines)

note: type: table
en: Extra configuration values to append to the LightDM configuration file.
fr: Valeurs de configuration supplémentaires à ajouter à la fin du fichier de configuration de LightDM.

note: type: deftp
en: {Data Type} lightdm-gtk-greeter-configuration
fr: {Type de données} lightdm-gtk-greeter-configuration

note: type: deftp
en: Available @code{lightdm-gtk-greeter-configuration} fields are:
fr: Les champs de @code{lightdm-gtk-greter-configuration} disponibles sont :

note: type: item
en: @code{lightdm-gtk-greeter} (default: @code{lightdm-gtk-greeter}) (type: file-like)
fr: @code{lightdm-gtk-greeter} (par défaut : @code{lightdm-gtk-greeter}) (type : simili-fichier)

note: type: table
en: The lightdm-gtk-greeter package to use.
fr: Le paquet lightdm-gtk-greeter à utiliser.

note: type: table
en: (default: @code{(adwaita-icon-theme gnome-themes-extrahicolor-icon-theme)}) @ (type: list-of-file-likes)  The list of packages complementing the greeter, such as package providing icon themes.
fr: (par défaut : @code{(adwaita-icon-theme gnome-themes-extrahicolor-icon-theme)}) @
    (type : liste-de-simili-fichiers)
    La liste des paquets qui accompagnent l'écran d'accueil, comme un paquet qui fournit un thème d'icônes.

note: type: item
en: @code{theme-name} (default: @code{"Adwaita"}) (type: string)
fr: @code{theme-name} (par défaut : @code{"Adwaita"}) (type : chaine)

note: type: table
en: The name of the theme to use.
fr: Le nom du thème à utiliser.

note: type: item
en: @code{icon-theme-name} (default: @code{"Adwaita"}) (type: string)
fr: @code{icon-theme-name} (par défaut : @code{"Adwaita"}) (type : chaine)

note: type: table
en: The name of the icon theme to use.
fr: Le nom du thème d'icônes à utiliser.

note: type: item
en: @code{cursor-theme-name} (default: @code{"Adwaita"}) (type: string)
fr: @code{cursor-theme-name} (par défaut : @code{"Adwaita"}) (type : chaine)

note: type: table
en: The name of the cursor theme to use.
fr: Le nom du thème de curseurs à utiliser.

note: type: item
en: @code{cursor-theme-size} (default: @code{16}) (type: number)
fr: @code{cursor-theme-size} (par défaut : @code{16}) (type : nombre)

note: type: table
en: The size to use for the cursor theme.
fr: La taille à utiliser pour le thème de curseurs.

note: type: item
en: @code{allow-debugging?} (type: maybe-boolean)
fr: @code{allow-debugging?} (type : peut-être-booléen)

note: type: table
en: Set to #t to enable debug log level.
fr: Indiquez #t pour activer le niveau de journalisation de débogage.

note: type: item
en: @code{background} (type: file-like)
fr: @code{background} (type : simili-fichier)

note: type: table
en: The background image to use.
fr: L'image de fond à utiliser.

note: type: item
en: @code{at-spi-enabled?} (default: @code{#f}) (type: boolean)
fr: @code{at-spi-enables?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Enable accessibility support through the Assistive Technology Service Provider Interface (AT-SPI).
fr: Active la prise en charge de l'accessibilité à travers l'interface de fourniture de service de technologie d'assistance (AT-SPI).

note: type: table
en: (default: @code{(contrast font keyboard reader)}) (type: list-of-a11y-states)  The accessibility features to enable, given as list of symbols.
fr: (par défaut : @code{(contrast font keyboard reader)})
    (type : liste-d'états-d'accessibilité)
    Les fonctionnalités d'accessibilité à activer, données en tant que liste de symboles.

note: type: item
en: @code{reader} (type: maybe-file-like)
fr: @code{reader} (type : peut-être-simili-fichier)

note: type: table
en: The command to use to launch a screen reader.
fr: La commande à utiliser pour lancer un lecteur d'écran.

note: type: table
en: Extra configuration values to append to the LightDM GTK Greeter configuration file.
fr: Valeurs de configuration supplémentaires à ajouter à la fin du fichier de configuration de l'écran d'accueil de LightDM.

note: type: deftp
en: {Data Type} lightdm-seat-configuration
fr: {Type de données} lightdm-seat-configuration

note: type: deftp
en: Available @code{lightdm-seat-configuration} fields are:
fr: Les champs de @code{lightdm-seat-configuration} disponibles sont :

note: type: item
en: @code{name} (type: seat-name)
fr: @code{name} (type : nom-de-siège)

note: type: table
en: The name of the seat.  An asterisk (*) can be used in the name to apply the seat configuration to all the seat names it matches.
fr: Le nom du siège. Vous pouvez utiliser un astérisque (*) dans le nom pour appliquer la configuration de siège à tous les noms de sièges qui correspondent.

note: type: item
en: @code{user-session} (type: maybe-string)
fr: @code{user-session} (type : peut-être-chaine)

note: type: table
en: The session to use by default.  The session name must be provided as a lowercase string, such as @code{"gnome"}, @code{"ratpoison"}, etc.
fr: La session à utiliser par défaut. Le nom de session doit être fournit en une chaine en minuscules, comme @code{"gnome"}, @code{"ratpoison"}, etc.

note: type: item
en: @code{type} (default: @code{local}) (type: seat-type)
fr: @code{type} (par défaut : @code{local}) (type : type-de-siège)

note: type: table
en: The type of the seat, either the @code{local} or @code{xremote} symbol.
fr: Le type du siège, soit le symbole @code{local}, soit le symbole @code{xremote}.

note: type: item
en: @code{autologin-user} (type: maybe-string)
fr: @code{autologin-user} (type : peut-être-chaine)

note: type: table
en: The username to automatically log in with by default.
fr: Le nom d'utilisateur à connecter par défaut.

note: type: table
en: (default: @code{lightdm-gtk-greeter}) (type: greeter-session)  The greeter session to use, specified as a symbol.  Currently, only @code{lightdm-gtk-greeter} is supported.
fr: (par défaut : @code{lightdm-gtk-greeter}) (type : greeter-session)
    La session d'écran d'accueil à utilisé, spécifié en tant que symbole. Actuellement, seul @code{lightdm-gtk-greeter} est pris en charge.

note: type: item
en: @code{xserver-command} (type: maybe-file-like)
fr: @code{xserver-command} (type : peut-être-simili-fichier)

note: type: table
en: The Xorg server command to run.
fr: La commande du serveur Xorg à lancer.

note: type: item
en: @code{session-wrapper} (type: file-like)
fr: @code{session-wrapper} (type : simili-fichier)

note: type: table
en: The xinitrc session wrapper to use.
fr: L'enveloppe de session xinitrc à utiliser.

note: type: table
en: Extra configuration values to append to the seat configuration section.
fr: Valeurs de configuration supplémentaires à ajouter à la fin de la section de configuration des sièges.

note: type: deftp
en: {Data Type} xorg-configuration
fr: {Type de données} xorg-configuration

note: type: deftp
en: This data type represents the configuration of the Xorg graphical display server.  Note that there is no Xorg service; instead, the X server is started by a ``display manager'' such as GDM, SDDM, LightDM or SLiM@.  Thus, the configuration of these display managers aggregates an @code{xorg-configuration} record.
fr: Ce type de données représente la configuration du serveur d'affichage graphique Xorg.  Remarquez qu'il n'y a pas de service Xorg ; à la place, le serveur X est démarré par un « gestionnaire d'affichage graphique » comme GDM, SDDM, LightDM et SLiM@.  Ainsi, la configuration de ces gestionnaires d'affichage agrègent un enregistrement @code{xorg-configuration}.

note: type: item
en: @code{modules} (default: @code{%default-xorg-modules})
fr: @code{modules} (par défaut : @code{%default-xorg-modules})

note: type: table
en: This is a list of @dfn{module packages} loaded by the Xorg server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so on.
fr: C'est une liste de @dfn{paquets de module} chargés par le serveur Xorg — p.@: ex.@: @code{xf86-video-vesa}, @code{xf86-input-keyboard} etc.

note: type: item
en: @code{fonts} (default: @code{%default-xorg-fonts})
fr: @code{fonts} (par défaut : @code{%default-xorg-fonts})

note: type: table
en: This is a list of font directories to add to the server's @dfn{font path}.
fr: C'est une liste de répertoires de polices à ajouter au @dfn{chemin de polices} du serveur.

note: type: item
en: @code{drivers} (default: @code{'()})
fr: @code{drivers} (par défaut : @code{'()})

note: type: table
en: This must be either the empty list, in which case Xorg chooses a graphics driver automatically, or a list of driver names that will be tried in this order---e.g., @code{("modesetting" "vesa")}.
fr: Cela doit être soit la liste vide, auquel cas Xorg choisit un pilote graphique automatiquement, soit une liste de noms de pilotes qui seront essayés dans cet ordre — p.@: ex.@: @code{("modesetting" "vesa")}.

note: type: item
en: @code{resolutions} (default: @code{'()})
fr: @code{resolutions} (par défaut : @code{'()})

note: type: table
en: When @code{resolutions} is the empty list, Xorg chooses an appropriate screen resolution.  Otherwise, it must be a list of resolutions---e.g., @code{((1024 768) (640 480))}.
fr: Lorsque @code{resolutions} est la liste vide, Xorg choisit une résolution d'écran appropriée.  Sinon, il doit s'agir d'une liste de résolutions — p.@: ex.@: @code{((1024 768) (640 480))}.

note: type: cindex
en: keyboard layout, for Xorg
fr: disposition du clavier, pour Xorg

note: type: cindex
en: keymap, for Xorg
fr: disposition des touches, Xorg

note: type: table
en: If this is @code{#f}, Xorg uses the default keyboard layout---usually US English (``qwerty'') for a 105-key PC keyboard.
fr: Si la valeur est @code{#f}, Xorg utilise la disposition du clavier par défaut — habituellement la disposition anglaise américaine (« qwerty ») pour un clavier de PC à 105 touches.

note: type: table
en: Otherwise this must be a @code{keyboard-layout} object specifying the keyboard layout in use when Xorg is running.  @xref{Keyboard Layout}, for more information on how to specify the keyboard layout.
fr: Sinon cela doit être un objet @code{keyboard-layout} spécifiant la disposition du clavier à utiliser lorsque Xorg tourne.  @xref{Keyboard Layout} pour plus d'informations sur la manière de spécifier la disposition du clavier.

note: type: item
en: @code{extra-config} (default: @code{'()})
fr: @code{extra-config} (par défaut : @code{'()})

note: type: table
en: This is a list of strings or objects appended to the configuration file.  It is used to pass extra text to be added verbatim to the configuration file.
fr: C'est une liste de chaînes de caractères ou d'objets ajoutés au fichier de configuration.  Elle est utile pour ajouter du texte supplémentaire directement dans le fichier de configuration.

note: type: item
en: @code{server} (default: @code{xorg-server})
fr: @code{server} (par défaut : @code{xorg-server})

note: type: table
en: This is the package providing the Xorg server.
fr: C'est le paquet fournissant le serveur Xorg.

note: type: item
en: @code{server-arguments} (default: @code{%default-xorg-server-arguments})
fr: @code{server-arguments} (par défaut : @code{%default-xorg-server-arguments})

note: type: table
en: This is the list of command-line arguments to pass to the X server.  The default is @code{-nolisten tcp}.
fr: Liste d'arguments de la ligne de commande supplémentaires à passer au serveur X.  La valeur par défaut est @code{-nolisten tcp}.

note: type: deffn
en: {Scheme Procedure} set-xorg-configuration @var{config} @
fr: {Procédure Scheme} set-xorg-configuration @var{config} @

note: type: deffn
en: [@var{login-manager-service-type}] Tell the log-in manager (of type @var{login-manager-service-type}) to use @var{config}, an @code{<xorg-configuration>} record.
fr: [@var{login-manager-service-type}]
    Dit au gestionnaire de connexion (de type @var{login-manager-service-type}) d'utiliser @var{config}, un enregistrement @code{<xorg-configuration>}.

note: type: deffn
en: Since the Xorg configuration is embedded in the log-in manager's configuration---e.g., @code{gdm-configuration}---this procedure provides a shorthand to set the Xorg configuration.
fr: Comme la configuration Xog est incluse dans la configuration du gestionnaire de connexion — p.@: ex.@: @code{gdm-configuration} — cette procédure fournit un raccourci pour configurer Xorg.

note: type: deffn
en: {Scheme Procedure} xorg-start-command [@var{config}]
fr: {Procédure Scheme} xorg-start-command [@var{config}]

note: type: deffn
en: Return a @code{startx} script in which the modules, fonts, etc. specified in @var{config}, are available.  The result should be used in place of @code{startx}.
fr: Renvoie un script @code{startx} dans lequel les modules, les polices, etc., spécifiés dans @var{config} sont disponibles.  Le résultat devrait être utilisé à la place de @code{startx}.

note: type: deffn
en: Usually the X server is started by a login manager.
fr: Habituellement le serveur X est démarré par un gestionnaire de connexion.

note: type: deffn
en: {Scheme Procedure} screen-locker-service @var{package} [@var{program}]
fr: {Procédure Scheme} screen-locker-service @var{package} [@var{program}]

note: type: deffn
en: Add @var{package}, a package for a screen locker or screen saver whose command is @var{program}, to the set of setuid programs and add a PAM entry for it.  For example:
fr: Ajoute @var{package}, un paquet pour un verrouiller l'écran ou un économiseur d'écran dont la commande est @var{program}, à l'ensemble des programmes setuid et lui ajoute une entrée PAM.  Par exemple :

note: type: deffn
en: makes the good ol' XlockMore usable.
fr: rend utilisable le bon vieux XlockMore.

note: type: cindex
en: printer support with CUPS
fr: support des imprimantes avec CUPS

note: type: Plain text
en: The @code{(gnu services cups)} module provides a Guix service definition for the CUPS printing service.  To add printer support to a Guix system, add a @code{cups-service} to the operating system definition:
fr: Le module @code{(gnu services cups)} fournit une définition de service Guix pour le service d'impression CUPS.  Pour ajouter la prise en charge d'une imprimante à un système Guix, ajoutez un @code{cups-service} à la définition du système d'exploitation :

note: type: deffn
en: {Scheme Variable} cups-service-type
fr: {Variable Scheme} cups-service-type

note: type: deffn
en: The service type for the CUPS print server.  Its value should be a valid CUPS configuration (see below).  To use the default settings, simply write:
fr: Le type de service pour un serveur d'impression CUPS.  Sa valeur devrait être une configuration CUPS valide (voir plus bas).  Pour utiliser les paramètres par défaut, écrivez simplement :

note: type: Plain text
en: The CUPS configuration controls the basic things about your CUPS installation: what interfaces it listens on, what to do if a print job fails, how much logging to do, and so on.  To actually add a printer, you have to visit the @url{http://localhost:631} URL, or use a tool such as GNOME's printer configuration services.  By default, configuring a CUPS service will generate a self-signed certificate if needed, for secure connections to the print server.
fr: La configuration de CUPS contrôle les paramètres de base de votre installation CUPS : sur quelles interfaces il doit écouter, que faire si un travail échoue, combien de journalisation il faut faire, etc.  Pour ajouter une imprimante, vous devrez visiter l'URL @url{http://localhost:631} ou utiliser un outil comme les services de configuration d'imprimante de GNOME.  Par défaut, la configuration du service CUPS générera un certificat auto-signé si besoin, pour les connexions sécurisée avec le serveur d'impression.

note: type: Plain text
en: Suppose you want to enable the Web interface of CUPS and also add support for Epson printers @i{via} the @code{epson-inkjet-printer-escpr} package and for HP printers @i{via} the @code{hplip-minimal} package.  You can do that directly, like this (you need to use the @code{(gnu packages cups)} module):
fr: Supposons que vous souhaitiez activer l'interface Web de CUPS et ajouter le support pour les imprimantes Epson via le paquet @code{epson-inkjet-printer-escpr} et pour les imprimantes HP via le paquet @code{hplip-minimal}.  Vous pouvez le faire directement, comme ceci (vous devez utiliser le module @code{(gnu packages cups)}) :

note: type: quotation
en: If you wish to use the Qt5 based GUI which comes with the hplip package then it is suggested that you install the @code{hplip} package, either in your OS configuration file or as your user.
fr: Si vous souhaitez utiliser la GUI basée sur Qt5 qui provient du paquet hplip, nous vous suggérons d'installer le paquet @code{hplip}, soit dans votre configuration d'OS, soit en tant qu'utilisateur.

note: type: Plain text
en: The available configuration parameters follow.  Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings.  There is also a way to specify the configuration as a string, if you have an old @code{cupsd.conf} file that you want to port over from some other system; see the end for more details.
fr: Les paramètres de configuration disponibles sont les suivants.  Chaque définition des paramètres est précédé par son type ; par exemple, @samp{string-list toto} indique que le paramètre @code{toto} devrait être spécifié comme une liste de chaînes de caractères.  Il y a aussi une manière de spécifier la configuration comme une chaîne de caractères, si vous avez un vieux fichier @code{cupsd.conf} que vous voulez porter depuis un autre système ; voir la fin pour plus de détails.

note: type: Plain text
en: Available @code{cups-configuration} fields are:
fr: Les champs de @code{cups-configuration} disponibles sont :

note: type: deftypevr
en: {@code{cups-configuration} parameter} package cups
fr: {paramètre de @code{cups-configuration}} package cups

note: type: deftypevr
en: The CUPS package.
fr: Le paquet CUPS.

note: type: deftypevr
en: {@code{cups-configuration} parameter} package-list extensions (default: @code{(list brlaser cups-filters epson-inkjet-printer-escpr foomatic-filters hplip-minimal splix)})
fr: {paramètre de @code{cups-configuration}} package-list extensions (par défaut : @code{(list brlaser cups-filters epson-inkjet-printer-escpr foomatic-filters hplip-minimal splix)})

note: type: deftypevr
en: Drivers and other extensions to the CUPS package.
fr: Pilotes et autres extensions du paquet CUPS.

note: type: deftypevr
en: {@code{cups-configuration} parameter} files-configuration files-configuration
fr: {paramètre de @code{cups-configuration}} files-configuration files-configuration

note: type: deftypevr
en: Configuration of where to write logs, what directories to use for print spools, and related privileged configuration parameters.
fr: Configuration de l'emplacement où écrire les journaux, quels répertoires utiliser pour les travaux d'impression et les paramètres de configuration privilégiés liés.

note: type: deftypevr
en: Available @code{files-configuration} fields are:
fr: Les champs @code{files-configuration} disponibles sont :

note: type: deftypevr
en: {@code{files-configuration} parameter} log-location access-log
fr: {paramètre de @code{files-configuration}} log-location access-log

note: type: deftypevr
en: Defines the access log filename.  Specifying a blank filename disables access log generation.  The value @code{stderr} causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.  The value @code{syslog} causes log entries to be sent to the system log daemon.  The server name may be included in filenames using the string @code{%s}, as in @code{/var/log/cups/%s-access_log}.
fr: Définit le fichier de journal d'accès.  Spécifier un nom de fichier vide désactive la génération de journaux d'accès.  La valeur @code{stderr} fait que les entrées du journal seront envoyés sur l'erreur standard lorsque l'ordonnanceur est lancé au premier plan ou vers le démon de journal système lorsqu'il tourne en tâche de fond.  La valeur @code{syslog} fait que les entrées du journal sont envoyées au démon de journalisation du système.  Le nom du serveur peut être inclus dans les noms de fichiers avec la chaîne @code{%s}, comme dans @code{/var/log/cups/%s-access_log}.

note: type: deftypevr
en: Defaults to @samp{"/var/log/cups/access_log"}.
fr: La valeur par défaut est @samp{"/var/log/cups/access_log"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} file-name cache-dir
fr: {paramètre de @code{files-configuration}} file-name cache-dir

note: type: deftypevr
en: Where CUPS should cache data.
fr: L'emplacement où CUPS devrait mettre les données en cache.

note: type: deftypevr
en: Defaults to @samp{"/var/cache/cups"}.
fr: La valeur par défaut est @samp{"/var/cache/cups"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} string config-file-perm
fr: {paramètre de @code{files-configuration}} string config-file-perm

note: type: deftypevr
en: Specifies the permissions for all configuration files that the scheduler writes.
fr: Spécifie les permissions pour tous les fichiers de configuration que l'ordonnanceur écrit.

note: type: deftypevr
en: Note that the permissions for the printers.conf file are currently masked to only allow access from the scheduler user (typically root).  This is done because printer device URIs sometimes contain sensitive authentication information that should not be generally known on the system.  There is no way to disable this security feature.
fr: Remarquez que les permissions pour le fichier printers.conf sont actuellement masqués pour ne permettre que l'accès par l'utilisateur de l'ordonnanceur (typiquement root).  La raison est que les URI des imprimantes contiennent des informations d'authentification sensibles qui ne devraient pas être connues sur le système.  Il n'est pas possible de désactiver cette fonctionnalité de sécurité.

note: type: deftypevr
en: Defaults to @samp{"0640"}.
fr: La valeur par défaut est @samp{"0640"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} log-location error-log
fr: {paramètre de @code{files-configuration}} log-location error-log

note: type: deftypevr
en: Defines the error log filename.  Specifying a blank filename disables error log generation.  The value @code{stderr} causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.  The value @code{syslog} causes log entries to be sent to the system log daemon.  The server name may be included in filenames using the string @code{%s}, as in @code{/var/log/cups/%s-error_log}.
fr: Définit le fichier de journal d'erreur.  Spécifier un nom de fichier vide désactive la génération de journaux d'erreur.  La valeur @code{stderr} fait que les entrées du journal seront envoyés sur l'erreur standard lorsque l'ordonnanceur est lancé au premier plan ou vers le démon de journalisation du système lorsqu'il tourne en tâche de fond.  La valeur @code{syslog} fait que les entrées du journal sont envoyées au démon de journalisation du système.  Le nom du serveur peut être inclus dans les noms de fichiers avec la chaîne @code{%s}, comme dans @code{/var/log/cups/%s-error_log}.

note: type: deftypevr
en: Defaults to @samp{"/var/log/cups/error_log"}.
fr: La valeur par défaut est @samp{"/var/log/cups/error_log"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} string fatal-errors
fr: {paramètre de @code{files-configuration}} string fatal-errors

note: type: deftypevr
en: Specifies which errors are fatal, causing the scheduler to exit.  The kind strings are:
fr: Spécifie quelles erreurs sont fatales, qui font terminer l'ordonnanceur.  Les types de chaînes sont :

note: type: table
en: No errors are fatal.
fr: Aucune erreur n'est fatale.

note: type: table
en: All of the errors below are fatal.
fr: Toutes les erreurs ci-dessous sont fatales.

note: type: table
en: Browsing initialization errors are fatal, for example failed connections to the DNS-SD daemon.
fr: Les erreurs d'initialisation de la navigation sont fatales, par exemple les connexion échouées au démon DNS-SD.

note: type: table
en: Configuration file syntax errors are fatal.
fr: Les erreurs de syntaxe du fichier de configuration sont fatale.

note: type: table
en: Listen or Port errors are fatal, except for IPv6 failures on the loopback or @code{any} addresses.
fr: Les erreurs d'écoute ou de port sont fatales, sauf pour les erreurs d'IPv6 sur la boucle locale ou les adresses @code{any}.

note: type: table
en: Log file creation or write errors are fatal.
fr: Les erreurs de création ou d'écriture des fichiers de journal sont fatales.

note: type: table
en: Bad startup file permissions are fatal, for example shared TLS certificate and key files with world-read permissions.
fr: Les mauvaises permissions des fichiers de démarrage sont fatales, par exemple un certificat TLS et des fichiers de clefs avec des permissions permettant la lecture à tout le monde.

note: type: deftypevr
en: Defaults to @samp{"all -browse"}.
fr: La valeur par défaut est @samp{"all -browse"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} boolean file-device?
fr: {paramètre de @code{files-configuration}} boolean file-device?

note: type: deftypevr
en: Specifies whether the file pseudo-device can be used for new printer queues.  The URI @uref{file:///dev/null} is always allowed.
fr: Spécifie si le fichier de pseudo-périphérique peut être utilisé pour de nouvelles queues d'impression.  L'URI @uref{file:///dev/null} est toujours permise.

note: type: deftypevr
en: Defaults to @samp{#f}.
fr: La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{files-configuration} parameter} string group
fr: {paramètre de @code{files-configuration}} string group

note: type: deftypevr
en: Specifies the group name or ID that will be used when executing external programs.
fr: Spécifie le nom ou l'ID du groupe qui sera utilisé lors de l'exécution de programmes externes.

note: type: deftypevr
en: Defaults to @samp{"lp"}.
fr: La valeur par défaut est @samp{"lp"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} string log-file-group
fr: {paramètre de @code{files-configuration}} string log-file-group

note: type: deftypevr
en: Specifies the group name or ID that will be used for log files.
fr: Spécifie le nom ou l'ID du groupe qui sera utilisé pour les fichiers de journaux.

note: type: deftypevr
en: Defaults to @samp{"lpadmin"}.
fr: La valeur par défaut est @samp{"lpadmin"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} string log-file-perm
fr: {paramètre de @code{files-configuration}} string log-file-perm

note: type: deftypevr
en: Specifies the permissions for all log files that the scheduler writes.
fr: Spécifie les permissions pour tous les fichiers de journal que l'ordonnanceur écrit.

note: type: deftypevr
en: Defaults to @samp{"0644"}.
fr: La valeur par défaut est @samp{"0644"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} log-location page-log
fr: {paramètre de @code{files-configuration}} log-location page-log

note: type: deftypevr
en: Defines the page log filename.  Specifying a blank filename disables page log generation.  The value @code{stderr} causes log entries to be sent to the standard error file when the scheduler is running in the foreground, or to the system log daemon when run in the background.  The value @code{syslog} causes log entries to be sent to the system log daemon.  The server name may be included in filenames using the string @code{%s}, as in @code{/var/log/cups/%s-page_log}.
fr: Définit le fichier de journal de page.  Spécifier un nom de fichier vide désactive la génération de journaux de pages.  La valeur @code{stderr} fait que les entrées du journal seront envoyés sur l'erreur standard lorsque l'ordonnanceur est lancé au premier plan ou vers le démon de journal système lorsqu'il tourne en tâche de fond.  La valeur @code{syslog} fait que les entrées du journal sont envoyées au démon de journalisation du système.  Le nom du serveur peut être inclus dans les noms de fichiers avec la chaîne @code{%s}, comme dans @code{/var/log/cups/%s-page_log}.

note: type: deftypevr
en: Defaults to @samp{"/var/log/cups/page_log"}.
fr: La valeur par défaut est @samp{"/var/log/cups/page_log"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} string remote-root
fr: {paramètre de @code{files-configuration}} string remote-root

note: type: deftypevr
en: Specifies the username that is associated with unauthenticated accesses by clients claiming to be the root user.  The default is @code{remroot}.
fr: Spécifie le nom d'utilisateur associé aux accès non authentifiés par des clients qui se disent être l'utilisateur root.  La valeur par défaut est @code{remroot}.

note: type: deftypevr
en: Defaults to @samp{"remroot"}.
fr: La valeur par défaut est @samp{"remroot"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} file-name request-root
fr: {paramètre de @code{files-configuration}} file-name request-root

note: type: deftypevr
en: Specifies the directory that contains print jobs and other HTTP request data.
fr: Spécifie le répertoire qui contient les travaux d'impression et d'autres données des requêtes HTTP.

note: type: deftypevr
en: Defaults to @samp{"/var/spool/cups"}.
fr: La valeur par défaut est @samp{"/var/spool/cups"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} sandboxing sandboxing
fr: {paramètre de @code{files-configuration}} sandboxing sandboxing

note: type: deftypevr
en: Specifies the level of security sandboxing that is applied to print filters, backends, and other child processes of the scheduler; either @code{relaxed} or @code{strict}.  This directive is currently only used/supported on macOS.
fr: Spécifie le niveau d'isolation de sécurité appliqué aux filtres d'impression, aux moteurs et aux autres processus fils de l'ordonnanceur ; soit @code{relaxed} soit @code{strict}.  Cette directive n'est actuellement utilisée et supportée que sur macOS.

note: type: deftypevr
en: Defaults to @samp{strict}.
fr: La valeur par défaut est @samp{strict}.

note: type: deftypevr
en: {@code{files-configuration} parameter} file-name server-keychain
fr: {paramètre de @code{files-configuration}} file-name server-keychain

note: type: deftypevr
en: Specifies the location of TLS certificates and private keys.  CUPS will look for public and private keys in this directory: @file{.crt} files for PEM-encoded certificates and corresponding @file{.key} files for PEM-encoded private keys.
fr: Spécifie l'emplacement des certifications TLS et des clés privées.  CUPS cherchera les clés publiques et privées dans ce répertoire : un fichier @file{.crt} pour un certificat encodé en PEM et le fichier @file{.key} correspondant pour la clé privée encodée en PEM.

note: type: deftypevr
en: Defaults to @samp{"/etc/cups/ssl"}.
fr: La valeur par défaut est @samp{"/etc/cups/ssl"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} file-name server-root
fr: {paramètre de @code{files-configuration}} file-name server-root

note: type: deftypevr
en: Specifies the directory containing the server configuration files.
fr: Spécifie le répertoire contenant les fichiers de configuration du serveur.

note: type: deftypevr
en: Defaults to @samp{"/etc/cups"}.
fr: La valeur par défaut est @samp{"/etc/cups"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} boolean sync-on-close?
fr: {paramètre de @code{files-configuration}} boolean sync-on-close?

note: type: deftypevr
en: Specifies whether the scheduler calls fsync(2) after writing configuration or state files.
fr: Spécifie si l'ordonnanceur appelle fsync(2) après avoir écrit la configuration ou les fichiers d'état.

note: type: deftypevr
en: {@code{files-configuration} parameter} space-separated-string-list system-group
fr: {paramètre de @code{files-configuration}} space-separated-string-list system-group

note: type: deftypevr
en: Specifies the group(s) to use for @code{@@SYSTEM} group authentication.
fr: Spécifie le groupe ou les groupes à utiliser pour l'authentification du groupe @code{@@SYSTEM}.

note: type: deftypevr
en: {@code{files-configuration} parameter} file-name temp-dir
fr: {paramètre de @code{files-configuration}} file-name temp-dir

note: type: deftypevr
en: Specifies the directory where temporary files are stored.
fr: Spécifie le répertoire où les fichiers temporaires sont stockés.

note: type: deftypevr
en: Defaults to @samp{"/var/spool/cups/tmp"}.
fr: La valeur par défaut est @samp{"/var/spool/cups/tmp"}.

note: type: deftypevr
en: {@code{files-configuration} parameter} string user
fr: {paramètre de @code{files-configuration}} string user

note: type: deftypevr
en: Specifies the user name or ID that is used when running external programs.
fr: Spécifie le nom d'utilisateur ou l'ID utilisé pour lancer des programmes externes.

note: type: deftypevr
en: {@code{files-configuration} parameter} string set-env
fr: {paramètre de @code{files-configuration}} string set-env

note: type: deftypevr
en: Set the specified environment variable to be passed to child processes.
fr: Indique que la variable d'environnement spécifiée doit être passée aux processus fils.

note: type: deftypevr
en: Defaults to @samp{"variable value"}.
fr: La valeur par défaut est @samp{"variable value"}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} access-log-level access-log-level
fr: {paramètre de @code{cups-configuration}} access-log-level access-log-level

note: type: deftypevr
en: Specifies the logging level for the AccessLog file.  The @code{config} level logs when printers and classes are added, deleted, or modified and when configuration files are accessed or updated.  The @code{actions} level logs when print jobs are submitted, held, released, modified, or canceled, and any of the conditions for @code{config}.  The @code{all} level logs all requests.
fr: Spécifie le niveau de journalisation pour le fichier AccessLog.  Le niveau @code{config} enregistre les ajouts, suppressions et modifications d'imprimantes et de classes et lorsque les fichiers de configuration sont accédés ou mis à jour.  Le niveau @code{actions} enregistre la soumission, la suspension, la libération, la modification et l'annulation des travaux et toutes les conditions de @code{config}.  Le niveau @code{all} enregistre toutes les requêtes.

note: type: deftypevr
en: Defaults to @samp{actions}.
fr: La valeur par défaut est @samp{actions}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean auto-purge-jobs?
fr: {paramètre de @code{cups-configuration}} boolean auto-purge-jobs?

note: type: deftypevr
en: Specifies whether to purge job history data automatically when it is no longer required for quotas.
fr: Spécifie s'il faut vider l'historique des travaux automatiquement lorsqu'il n'est plus nécessaire pour les quotas.

note: type: deftypevr
en: {@code{cups-configuration} parameter} comma-separated-string-list browse-dns-sd-sub-types
fr: {paramètre de @code{cups-configuration}} comma-separated-string-list browse-dns-sd-sub-types

note: type: deftypevr
en: Specifies a list of DNS-SD sub-types to advertise for each shared printer.  For example, @samp{"_cups" "_print"} will tell network clients that both CUPS sharing and IPP Everywhere are supported.
fr: Spécifie une liste de sous-types DNS-SD à annoncer pour chaque imprimante connectée.  Par exemple, @samp{" cups" " print"} dira aux clients réseaux que le partage CUPS et IPP Everywhere sont pris en charge.

note: type: deftypevr
en: Defaults to @samp{"_cups"}.
fr: La valeur par défaut est @samp{" cups"}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} browse-local-protocols browse-local-protocols
fr: {paramètre de @code{cups-configuration}} browse-local-protocols browse-local-protocols

note: type: deftypevr
en: Specifies which protocols to use for local printer sharing.
fr: Spécifie les protocoles à utiliser pour partager les imprimantes sur le réseau local.

note: type: deftypevr
en: Defaults to @samp{dnssd}.
fr: La valeur par défaut est @samp{dnssd}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean browse-web-if?
fr: {paramètre de @code{cups-configuration}} boolean browse-web-if?

note: type: deftypevr
en: Specifies whether the CUPS web interface is advertised.
fr: Spécifie si l'interface web de CUPS est annoncée.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean browsing?
fr: {paramètre de @code{cups-configuration}} boolean browsing?

note: type: deftypevr
en: Specifies whether shared printers are advertised.
fr: Spécifie si les imprimantes partagées sont annoncées.

note: type: deftypevr
en: {@code{cups-configuration} parameter} string classification
fr: {paramètre de @code{cups-configuration}} string classification

note: type: deftypevr
en: Specifies the security classification of the server.  Any valid banner name can be used, including @samp{"classified"}, @samp{"confidential"}, @samp{"secret"}, @samp{"topsecret"}, and @samp{"unclassified"}, or the banner can be omitted to disable secure printing functions.
fr: Spécifie la classification de sécurité du serveur.  N'importe quel nom de bannière peut être utilisé, comme @samp{"classified"}, @samp{"confidential"}, @samp{"secret"}, @samp{"topsecret"} et @samp{"unclassified"} ou la bannière peut être omise pour désactiver les fonctions d'impression sécurisées.

note: type: deftypevr
en: Defaults to @samp{""}.
fr: La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean classify-override?
fr: {paramètre de @code{cups-configuration}} boolean classify-override?

note: type: deftypevr
en: Specifies whether users may override the classification (cover page) of individual print jobs using the @code{job-sheets} option.
fr: Spécifie si les utilisateurs peuvent remplacer la classification (page de couverture) des travaux d'impression individuels avec l'option @code{job-sheets}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} default-auth-type default-auth-type
fr: {paramètre de @code{cups-configuration}} default-auth-type default-auth-type

note: type: deftypevr
en: Specifies the default type of authentication to use.
fr: Spécifie le type d'authentification par défaut à utiliser.

note: type: deftypevr
en: Defaults to @samp{Basic}.
fr: La valeur par défaut est @samp{Basic}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} default-encryption default-encryption
fr: {paramètre de @code{cups-configuration}} default-encryption default-encryption

note: type: deftypevr
en: Specifies whether encryption will be used for authenticated requests.
fr: Spécifie si le chiffrement sera utilisé pour les requêtes authentifiées.

note: type: deftypevr
en: Defaults to @samp{Required}.
fr: La valeur par défaut est @samp{Required}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} string default-language
fr: {paramètre de @code{cups-configuration}} string default-language

note: type: deftypevr
en: Specifies the default language to use for text and web content.
fr: Spécifie la langue par défaut à utiliser pour le contenu textuel et web.

note: type: deftypevr
en: Defaults to @samp{"en"}.
fr: La valeur par défaut est @samp{"en"}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} string default-paper-size
fr: {paramètre de @code{cups-configuration}} string default-paper-size

note: type: deftypevr
en: Specifies the default paper size for new print queues.  @samp{"Auto"} uses a locale-specific default, while @samp{"None"} specifies there is no default paper size.  Specific size names are typically @samp{"Letter"} or @samp{"A4"}.
fr: Spécifie la taille de papier par défaut pour les nouvelles queues d'impression.  @samp{"Auto"} utilise la valeur par défaut du paramètre de régionalisation, tandis que @samp{"None"} spécifie qu'il n'y a pas de taille par défaut.  Des noms de tailles spécifique sont par exemple @samp{"Letter"} et @samp{"A4"}.

note: type: deftypevr
en: Defaults to @samp{"Auto"}.
fr: La valeur par défaut est @samp{"Auto"}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} string default-policy
fr: {paramètre de @code{cups-configuration}} string default-policy

note: type: deftypevr
en: Specifies the default access policy to use.
fr: Spécifie la politique d'accès par défaut à utiliser.

note: type: deftypevr
en: Defaults to @samp{"default"}.
fr: La valeur par défaut est @samp{"default"}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean default-shared?
fr: {paramètre de @code{cups-configuration}} boolean default-shared?

note: type: deftypevr
en: Specifies whether local printers are shared by default.
fr: Spécifie si les imprimantes locales sont partagées par défaut.

note: type: deftypevr
en: Defaults to @samp{#t}.
fr: La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer dirty-clean-interval
fr: {paramètre de @code{cups-configuration}} entier-non-négatif dirty-clean-interval

note: type: deftypevr
en: Specifies the delay for updating of configuration and state files, in seconds.  A value of 0 causes the update to happen as soon as possible, typically within a few milliseconds.
fr: Spécifie le délai pour mettre à jour les fichiers de configuration et d'état.  Une valeur de 0 fait que la mise à jour arrive aussi vite que possible, typiquement en quelques millisecondes.

note: type: deftypevr
en: Defaults to @samp{30}.
fr: La valeur par défaut est @samp{30}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} error-policy error-policy
fr: {paramètre de @code{cups-configuration}} error-policy error-policy

note: type: deftypevr
en: Specifies what to do when an error occurs.  Possible values are @code{abort-job}, which will discard the failed print job; @code{retry-job}, which will retry the job at a later time; @code{retry-current-job}, which retries the failed job immediately; and @code{stop-printer}, which stops the printer.
fr: Spécifie ce qu'il faut faire si une erreur a lieu.  Les valeurs possibles sont @code{abort-job}, qui supprimera les travaux d'impression en échec ; @code{retry-job}, qui tentera de nouveau l'impression plus tard ; @code{retry-current-job}, qui retentera l'impression immédiatement ; et @code{stop-printer} qui arrête l'imprimante.

note: type: deftypevr
en: Defaults to @samp{stop-printer}.
fr: La valeur par défaut est @samp{stop-printer}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer filter-limit
fr: {paramètre de @code{cups-configuration}} entier-non-négatif filter-limit

note: type: deftypevr
en: Specifies the maximum cost of filters that are run concurrently, which can be used to minimize disk, memory, and CPU resource problems.  A limit of 0 disables filter limiting.  An average print to a non-PostScript printer needs a filter limit of about 200.  A PostScript printer needs about half that (100).  Setting the limit below these thresholds will effectively limit the scheduler to printing a single job at any time.
fr: Spécifie le coût maximum des filtres qui sont lancés en même temps, pour minimiser les problèmes de ressources de disque, de mémoire et de CPU.  Une limite de 0 désactive la limite de filtrage.  Une impression standard vers une imprimante non-PostScript requiert une limite de filtre d'environ 200.  Une imprimante PostScript requiert environ la moitié (100).  Mettre en place la limite en dessous de ces valeurs limitera l'ordonnanceur à un seul travail d'impression à la fois.

note: type: deftypevr
en: Defaults to @samp{0}.
fr: La valeur par défaut est @samp{0}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer filter-nice
fr: {paramètre de @code{cups-configuration}} entier-non-négatif filter-nice

note: type: deftypevr
en: Specifies the scheduling priority of filters that are run to print a job.  The nice value ranges from 0, the highest priority, to 19, the lowest priority.
fr: Spécifie la priorité des filtres de l'ordonnanceur qui sont lancés pour imprimer un travail.  La valeur va de 0, la plus grande priorité, à 19, la plus basse priorité.

note: type: deftypevr
en: {@code{cups-configuration} parameter} host-name-lookups host-name-lookups
fr: {paramètre de @code{cups-configuration}} host-name-lookups host-name-lookups

note: type: deftypevr
en: Specifies whether to do reverse lookups on connecting clients.  The @code{double} setting causes @code{cupsd} to verify that the hostname resolved from the address matches one of the addresses returned for that hostname.  Double lookups also prevent clients with unregistered addresses from connecting to your server.  Only set this option to @code{#t} or @code{double} if absolutely required.
fr: Spécifie s'il faut faire des résolutions inverses sur les clients qui se connectent.  Le paramètre @code{double} fait que @code{cupsd} vérifie que le nom d'hôte résolu depuis l'adresse correspond à l'une des adresses renvoyées par ce nom d'hôte.  Les résolutions doubles évitent aussi que des clients avec des adresses non enregistrées ne s'adressent à votre serveur.  N'initialisez cette valeur qu'à @code{#t} ou @code{double} que si c'est absolument nécessaire.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer job-kill-delay
fr: {paramètre de @code{cups-configuration}} entier-non-négatif job-kill-delay

note: type: deftypevr
en: Specifies the number of seconds to wait before killing the filters and backend associated with a canceled or held job.
fr: Spécifie le nombre de secondes à attendre avant de tuer les filtres et les moteurs associés avec un travail annulé ou suspendu.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer job-retry-interval
fr: {paramètre de @code{cups-configuration}} entier-non-négatif job-retry-interval

note: type: deftypevr
en: Specifies the interval between retries of jobs in seconds.  This is typically used for fax queues but can also be used with normal print queues whose error policy is @code{retry-job} or @code{retry-current-job}.
fr: Spécifie l'intervalle des nouvelles tentatives en secondes.  C'est typiquement utilisé pour les queues de fax mais peut aussi être utilisé avec des queues d'impressions normales dont la politique d'erreur est @code{retry-job} ou @code{retry-current-job}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer job-retry-limit
fr: {paramètre de @code{cups-configuration}} entier-non-négatif job-retry-limit

note: type: deftypevr
en: Specifies the number of retries that are done for jobs.  This is typically used for fax queues but can also be used with normal print queues whose error policy is @code{retry-job} or @code{retry-current-job}.
fr: Spécifie le nombre de nouvelles tentatives pour les travaux.  C'est typiquement utilisé pour les queues de fax mais peut aussi être utilisé pour les queues d'impressions dont la politique d'erreur est @code{retry-job} ou @code{retry-current-job}.

note: type: deftypevr
en: Defaults to @samp{5}.
fr: La valeur par défaut est @samp{5}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean keep-alive?
fr: {paramètre de @code{cups-configuration}} boolean keep-alive?

note: type: deftypevr
en: Specifies whether to support HTTP keep-alive connections.
fr: Spécifie s'il faut supporter les connexion HTTP keep-alive.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer limit-request-body
fr: {paramètre de @code{cups-configuration}} entier-non-négatif limit-request-body

note: type: deftypevr
en: Specifies the maximum size of print files, IPP requests, and HTML form data.  A limit of 0 disables the limit check.
fr: Spécifie la taille maximale des fichiers à imprimer, des requêtes IPP et des données de formulaires HTML.  Une limite de 0 désactive la vérification de la limite.

note: type: deftypevr
en: {@code{cups-configuration} parameter} multiline-string-list listen
fr: {paramètre de @code{cups-configuration}} multiline-string-list listen

note: type: deftypevr
en: Listens on the specified interfaces for connections.  Valid values are of the form @var{address}:@var{port}, where @var{address} is either an IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to indicate all addresses.  Values can also be file names of local UNIX domain sockets.  The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks.
fr: Écoute sur les interfaces spécifiées.  Les valeurs valides sont de la forme @var{adresse}:@var{port}, où @var{adresse} est soit une adresse IPv6 dans des crochets, soit une adresse IPv4, soit @code{*} pour indiquer toutes les adresses.  Les valeurs peuvent aussi être des noms de fichiers de socket UNIX domain.  La directive Listen est similaire à la directive Port mais vous permet de restreindre l'accès à des interfaces ou des réseaux spécifiques.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer listen-back-log
fr: {paramètre de @code{cups-configuration}} entier-non-négatif listen-back-log

note: type: deftypevr
en: Specifies the number of pending connections that will be allowed.  This normally only affects very busy servers that have reached the MaxClients limit, but can also be triggered by large numbers of simultaneous connections.  When the limit is reached, the operating system will refuse additional connections until the scheduler can accept the pending ones.
fr: Spécifie le nombre de connexions en attente qui seront permises.  Ça n'affecte normalement que les serveurs très actifs qui ont atteint la limite MaxClients, mais peut aussi être déclenché par un grand nombre de connexions simultanées.  Lorsque la limite est atteinte, le système d'exploitation refusera les connexions supplémentaires jusqu'à ce que l'ordonnanceur accepte les connexions en attente.

note: type: deftypevr
en: Defaults to @samp{128}.
fr: La valeur par défaut est @samp{128}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} location-access-control-list location-access-controls
fr: {paramètre de @code{cups-configuration}} location-access-control-list location-access-controls

note: type: deftypevr
en: Specifies a set of additional access controls.
fr: Spécifie un ensemble de contrôles d'accès supplémentaires.

note: type: deftypevr
en: Available @code{location-access-controls} fields are:
fr: Les champs de @code{location-access-controls} disponibles sont :

note: type: deftypevr
en: {@code{location-access-controls} parameter} file-name path
fr: {paramètre de @code{location-access-controls}} file-name path

note: type: deftypevr
en: Specifies the URI path to which the access control applies.
fr: Spécifie le chemin d'URI auquel les contrôles d'accès s'appliquent.

note: type: deftypevr
en: {@code{location-access-controls} parameter} access-control-list access-controls
fr: {paramètre de @code{location-access-controls}} access-control-list access-controls

note: type: deftypevr
en: Access controls for all access to this path, in the same format as the @code{access-controls} of @code{operation-access-control}.
fr: Les contrôles d'accès pour tous les accès à ce chemin, dans le même format que le champ @code{access-controls} de @code{operation-access-control}.

note: type: deftypevr
en: Defaults to @samp{()}.
fr: La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{location-access-controls} parameter} method-access-control-list method-access-controls
fr: {paramètre de @code{location-access-controls}} method-access-control-list method-access-controls

note: type: deftypevr
en: Access controls for method-specific access to this path.
fr: Contrôles d'accès pour les accès spécifiques à la méthode à ce chemin.

note: type: deftypevr
en: Available @code{method-access-controls} fields are:
fr: Les champs de @code{method-access-controls} disponibles sont :

note: type: deftypevr
en: {@code{method-access-controls} parameter} boolean reverse?
fr: {paramètre de @code{method-access-controls}} boolean reverse?

note: type: deftypevr
en: If @code{#t}, apply access controls to all methods except the listed methods.  Otherwise apply to only the listed methods.
fr: Si la valeur est @code{#t}, applique les contrôles d'accès à toutes les méthodes sauf les méthodes listées.  Sinon, applique le contrôle uniquement aux méthodes listées.

note: type: deftypevr
en: {@code{method-access-controls} parameter} method-list methods
fr: {paramètre de @code{method-access-controls}} method-list methods

note: type: deftypevr
en: Methods to which this access control applies.
fr: Les méthodes auxquelles ce contrôle d'accès s'applique.

note: type: deftypevr
en: {@code{method-access-controls} parameter} access-control-list access-controls
fr: {paramètre de @code{method-access-controls}} access-control-list access-controls

note: type: deftypevr
en: Access control directives, as a list of strings.  Each string should be one directive, such as @samp{"Order allow,deny"}.
fr: Directives de contrôle d'accès, en tant que liste de chaines de caractères.  Chaque chaine devrait être une directive, comme @samp{"Order allow,deny"}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer log-debug-history
fr: {paramètre de @code{cups-configuration}} entier-non-négatif log-debug-history

note: type: deftypevr
en: Specifies the number of debugging messages that are retained for logging if an error occurs in a print job.  Debug messages are logged regardless of the LogLevel setting.
fr: Spécifie le nombre de messages de débogage qui sont retenu pour la journalisation si une erreur arrive dans un travail d'impression.  Les messages de débogage sont journalisés indépendamment du paramètre LogLevel.

note: type: deftypevr
en: Defaults to @samp{100}.
fr: La valeur par défaut est @samp{100}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} log-level log-level
fr: {paramètre de @code{cups-configuration}} log-level log-level

note: type: deftypevr
en: Specifies the level of logging for the ErrorLog file.  The value @code{none} stops all logging while @code{debug2} logs everything.
fr: Spécifie le niveau de journalisation du fichier ErrorLog.  La valeur @code{none} arrête toute journalisation alors que @code{debug2} enregistre tout.

note: type: deftypevr
en: Defaults to @samp{info}.
fr: La valeur par défaut est @samp{info}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} log-time-format log-time-format
fr: {paramètre de @code{cups-configuration}} log-time-format log-time-format

note: type: deftypevr
en: Specifies the format of the date and time in the log files.  The value @code{standard} logs whole seconds while @code{usecs} logs microseconds.
fr: Spécifie le format de la date et de l'heure dans les fichiers de journaux.  La valeur @code{standard} enregistre les secondes entières alors que @code{usecs} enregistre les microsecondes.

note: type: deftypevr
en: Defaults to @samp{standard}.
fr: La valeur par défaut est @samp{standard}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer max-clients
fr: {paramètre de @code{cups-configuration}} entier-non-négatif max-clients

note: type: deftypevr
en: Specifies the maximum number of simultaneous clients that are allowed by the scheduler.
fr: Spécifie le nombre maximum de clients simultanés qui sont autorisés par l'ordonnanceur.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer max-clients-per-host
fr: {paramètre de @code{cups-configuration}} entier-non-négatif max-clients-per-host

note: type: deftypevr
en: Specifies the maximum number of simultaneous clients that are allowed from a single address.
fr: Spécifie le nombre maximum de clients simultanés permis depuis une même adresse.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer max-copies
fr: {paramètre de @code{cups-configuration}} entier-non-négatif max-copies

note: type: deftypevr
en: Specifies the maximum number of copies that a user can print of each job.
fr: Spécifie le nombre maximum de copies qu'un utilisateur peut imprimer pour chaque travail.

note: type: deftypevr
en: Defaults to @samp{9999}.
fr: La valeur par défaut est @samp{9999}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer max-hold-time
fr: {paramètre de @code{cups-configuration}} entier-non-négatif max-hold-time

note: type: deftypevr
en: Specifies the maximum time a job may remain in the @code{indefinite} hold state before it is canceled.  A value of 0 disables cancellation of held jobs.
fr: Spécifie la durée maximum qu'un travail peut rester dans l'état de suspension @code{indefinite} avant qu'il ne soit annulé.  La valeur 0 désactive l'annulation des travaux suspendus.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer max-jobs
fr: {paramètre de @code{cups-configuration}} entier-non-négatif max-jobs

note: type: deftypevr
en: Specifies the maximum number of simultaneous jobs that are allowed.  Set to 0 to allow an unlimited number of jobs.
fr: Spécifie le nombre maximum de travaux simultanés autorisés.  La valeur 0 permet un nombre illimité de travaux.

note: type: deftypevr
en: Defaults to @samp{500}.
fr: La valeur par défaut est @samp{500}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer max-jobs-per-printer
fr: {paramètre de @code{cups-configuration}} entier-non-négatif max-jobs-per-printer

note: type: deftypevr
en: Specifies the maximum number of simultaneous jobs that are allowed per printer.  A value of 0 allows up to MaxJobs jobs per printer.
fr: Spécifie le nombre maximum de travaux simultanés autorisés par imprimante.  La valeur 0 permet au plus MaxJobs travaux par imprimante.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer max-jobs-per-user
fr: {paramètre de @code{cups-configuration}} entier-non-négatif max-jobs-per-user

note: type: deftypevr
en: Specifies the maximum number of simultaneous jobs that are allowed per user.  A value of 0 allows up to MaxJobs jobs per user.
fr: Spécifie le nombre maximum de travaux simultanés permis par utilisateur.  La valeur 0 permet au plus MaxJobs travaux par utilisateur.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer max-job-time
fr: {paramètre de @code{cups-configuration}} entier-non-négatif max-job-time

note: type: deftypevr
en: Specifies the maximum time a job may take to print before it is canceled, in seconds.  Set to 0 to disable cancellation of ``stuck'' jobs.
fr: Spécifie la durée maximum qu'un travail peut prendre avant qu'il ne soit annulé, en secondes.  Indiquez 0 pour désactiver l'annulation des travaux « coincés ».

note: type: deftypevr
en: Defaults to @samp{10800}.
fr: La valeur par défaut est @samp{10800}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer max-log-size
fr: {paramètre de @code{cups-configuration}} entier-non-négatif max-log-size

note: type: deftypevr
en: Specifies the maximum size of the log files before they are rotated, in bytes.  The value 0 disables log rotation.
fr: Spécifie la taille maximale des fichiers de journaux avant qu'on ne les fasse tourner, en octets.  La valeur 0 désactive la rotation.

note: type: deftypevr
en: Defaults to @samp{1048576}.
fr: La valeur par défaut est @samp{1048576}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer multiple-operation-timeout
fr: {paramètre de @code{cups-configuration}} entier-non-négatif multiple-operation-timeout

note: type: deftypevr
en: Specifies the maximum amount of time to allow between files in a multiple file print job, in seconds.
fr: Spécifie la durée maximale à permettre entre les fichiers d'un travail en contenant plusieurs, en secondes.

note: type: deftypevr
en: Defaults to @samp{900}.
fr: La valeur par défaut est @samp{900}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} string page-log-format
fr: {paramètre de @code{cups-configuration}} string page-log-format

note: type: deftypevr
en: Specifies the format of PageLog lines.  Sequences beginning with percent (@samp{%}) characters are replaced with the corresponding information, while all other characters are copied literally.  The following percent sequences are recognized:
fr: Spécifie le format des lignes PageLog.  Les séquences qui commencent par un pourcent (@samp{%}) sont remplacées par l'information correspondante, tandis que les autres caractères sont copiés littéralement.  Les séquences pourcent suivantes sont reconnues :

note: type: table
en: insert a single percent character
fr: insère un seul caractères pourcent

note: type: table
en: insert the value of the specified IPP attribute
fr: insère la valeur de l'attribut IPP spécifié

note: type: table
en: insert the number of copies for the current page
fr: insère le nombre de copies pour la page actuelle

note: type: table
en: insert the current page number
fr: insère le numéro de page actuelle

note: type: table
en: insert the current date and time in common log format
fr: insère la date et l'heure actuelle dans un format de journal commun

note: type: table
en: insert the job ID
fr: insère l'ID du travail

note: type: table
en: insert the printer name
fr: insère le nom de l'imprimante

note: type: table
en: insert the username
fr: insère le nom d'utilisateur

note: type: deftypevr
en: A value of the empty string disables page logging.  The string @code{%p %u %j %T %P %C %@{job-billing@} %@{job-originating-host-name@} %@{job-name@} %@{media@} %@{sides@}} creates a page log with the standard items.
fr: Si la valeur est la chaîne vide, le PageLog est désactivée.  La chaîne @code{%p %u %j %T %P %C %@{job-billing@} %@{job-originating-host-name@} %@{job-name@} %@{media@} %@{sides@}} crée un PageLog avec les entrées standards.

note: type: deftypevr
en: {@code{cups-configuration} parameter} environment-variables environment-variables
fr: {paramètre de @code{cups-configuration}} environment-variables environment-variables

note: type: deftypevr
en: Passes the specified environment variable(s) to child processes; a list of strings.
fr: Passe les variables d'environnement spécifiées aux processus fils ; une liste de chaînes de caractères.

note: type: deftypevr
en: {@code{cups-configuration} parameter} policy-configuration-list policies
fr: {paramètre de @code{cups-configuration}} policy-configuration-list policies

note: type: deftypevr
en: Specifies named access control policies.
fr: Spécifie des politiques de contrôle d'accès nommées.

note: type: deftypevr
en: Available @code{policy-configuration} fields are:
fr: Les champs de @code{policy-configuration} disponibles sont :

note: type: deftypevr
en: {@code{policy-configuration} parameter} string name
fr: {paramètre de @code{policy-configuration}} string name

note: type: deftypevr
en: Name of the policy.
fr: Nom de la politique.

note: type: deftypevr
en: {@code{policy-configuration} parameter} string job-private-access
fr: {paramètre de @code{policy-configuration}} string job-private-access

note: type: deftypevr
en: Specifies an access list for a job's private values.  @code{@@ACL} maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.  @code{@@OWNER} maps to the job's owner.  @code{@@SYSTEM} maps to the groups listed for the @code{system-group} field of the @code{files-configuration}, which is reified into the @code{cups-files.conf(5)} file.  Other possible elements of the access list include specific user names, and @code{@@@var{group}} to indicate members of a specific group.  The access list may also be simply @code{all} or @code{default}.
fr: Spécifie une liste d'accès pour les valeurs privées du travail.  @code{@@ACL} correspond aux valeurs requesting-user-name-allowed ou requesting-user-name-denied de l'imprimante.  @code{@@OWNER} correspond au propriétaire du travail.  @code{@@SYSTEM} correspond aux groupes listés dans le champ @code{system-group} de la configuration @code{files-configuration}, qui est réifié dans le fichier @code{cups-files.conf(5)}.  Les autres éléments possibles de la liste d'accès sont des noms d'utilisateurs spécifiques et @code{@@@var{group}} pour indiquer les membres d'un groupe spécifique.  La liste d'accès peut aussi être simplement @code{all} ou @code{default}.

note: type: deftypevr
en: Defaults to @samp{"@@OWNER @@SYSTEM"}.
fr: La valeur par défaut est @samp{"@@OWNER @@SYSTEM"}.

note: type: deftypevr
en: {@code{policy-configuration} parameter} string job-private-values
fr: {paramètre de @code{policy-configuration}} string job-private-values

note: type: deftypevr
en: Specifies the list of job values to make private, or @code{all}, @code{default}, or @code{none}.
fr: Spécifie la liste des valeurs de travaux à rendre privée, ou @code{all}, @code{default}, ou @code{none}.

note: type: deftypevr
en: Defaults to @samp{"job-name job-originating-host-name job-originating-user-name phone"}.
fr: La valeur par défaut est @samp{"job-name job-originating-host-name job-originating-user-name phone"}.

note: type: deftypevr
en: {@code{policy-configuration} parameter} string subscription-private-access
fr: {paramètre de @code{policy-configuration}} string subscription-private-access

note: type: deftypevr
en: Specifies an access list for a subscription's private values.  @code{@@ACL} maps to the printer's requesting-user-name-allowed or requesting-user-name-denied values.  @code{@@OWNER} maps to the job's owner.  @code{@@SYSTEM} maps to the groups listed for the @code{system-group} field of the @code{files-configuration}, which is reified into the @code{cups-files.conf(5)} file.  Other possible elements of the access list include specific user names, and @code{@@@var{group}} to indicate members of a specific group.  The access list may also be simply @code{all} or @code{default}.
fr: Spécifie un liste d'accès pour les valeurs privées de la souscription.  @code{@@ACL} correspond aux valeurs requesting-user-name-allowed ou requesting-user-name-denied de l'imprimante.  @code{@@OWNER} correspond au propriétaire du travail.  @code{@@SYSTEM} correspond aux groupes listés dans le champ @code{system-group} de la configuration @code{files-configuration}, qui est réifié dans le fichier @code{cups-files.conf(5)}.  Les autres éléments possibles de la liste d'accès sont des noms d'utilisateurs spécifiques et @code{@@@var{group}} pour indiquer les membres d'un groupe spécifique.  La liste d'accès peut aussi être simplement @code{all} ou @code{default}.

note: type: deftypevr
en: {@code{policy-configuration} parameter} string subscription-private-values
fr: {paramètre de @code{policy-configuration}} string subscription-private-values

note: type: deftypevr
en: Defaults to @samp{"notify-events notify-pull-method notify-recipient-uri notify-subscriber-user-name notify-user-data"}.
fr: La valeur par défaut est @samp{"notify-events notify-pull-method notify-recipient-uri notify-subscriber-user-name notify-user-data"}.

note: type: deftypevr
en: {@code{policy-configuration} parameter} operation-access-control-list access-controls
fr: {paramètre de @code{policy-configuration}} operation-access-control-list access-controls

note: type: deftypevr
en: Access control by IPP operation.
fr: Contrôle d'accès par les actions IPP.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-files
fr: {paramètre de @code{cups-configuration}} booléen-ou-entier-non-négatif preserve-job-files

note: type: deftypevr
en: Specifies whether job files (documents) are preserved after a job is printed.  If a numeric value is specified, job files are preserved for the indicated number of seconds after printing.  Otherwise a boolean value applies indefinitely.
fr: Spécifie si les fichiers de travaux (les documents) sont préservés après qu'un travail est imprimé.  Si une valeur numérique est spécifiée, les fichiers de travaux sont préservés pour le nombre de secondes indiquées après l'impression.  Sinon, une valeur booléenne s'applique indéfiniment.

note: type: deftypevr
en: Defaults to @samp{86400}.
fr: La valeur par défaut est @samp{86400}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean-or-non-negative-integer preserve-job-history
fr: {paramètre de @code{cups-configuration}} booléen-ou-entier-non-négatif preserve-job-history

note: type: deftypevr
en: Specifies whether the job history is preserved after a job is printed.  If a numeric value is specified, the job history is preserved for the indicated number of seconds after printing.  If @code{#t}, the job history is preserved until the MaxJobs limit is reached.
fr: Spécifie si l'historique des travaux est préservé après qu'un travail est imprimé.  Si une valeur numérique est spécifiée, l'historique des travaux est préservé pour le nombre de secondes indiquées après l'impression.  Si la valeur est @code{#t}, l'historique des travaux est préservé jusqu'à atteindre la limite MaxJobs.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer reload-timeout
fr: {paramètre de @code{cups-configuration}} entier-non-négatif reload-timeout

note: type: deftypevr
en: Specifies the amount of time to wait for job completion before restarting the scheduler.
fr: Spécifie la durée d'attente pour la fin des travaux avant de redémarrer l'ordonnanceur.

note: type: deftypevr
en: {@code{cups-configuration} parameter} string rip-cache
fr: {paramètre de @code{cups-configuration}} string rip-cache

note: type: deftypevr
en: Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer.
fr: Spécifie la quantité de mémoire maximale à utiliser pour convertir des documents en bitmaps pour l'imprimante.

note: type: deftypevr
en: Defaults to @samp{"128m"}.
fr: La valeur par défaut est @samp{"128m"}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} string server-admin
fr: {paramètre de @code{cups-configuration}} string server-admin

note: type: deftypevr
en: Specifies the email address of the server administrator.
fr: Spécifie l'adresse de courriel de l'administrateur système.

note: type: deftypevr
en: Defaults to @samp{"root@@localhost.localdomain"}.
fr: La valeur par défaut est @samp{"root@@localhost.localdomain"}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} host-name-list-or-* server-alias
fr: {paramètre de @code{cups-configuration}} host-name-list-or-* server-alias

note: type: deftypevr
en: The ServerAlias directive is used for HTTP Host header validation when clients connect to the scheduler from external interfaces.  Using the special name @code{*} can expose your system to known browser-based DNS rebinding attacks, even when accessing sites through a firewall.  If the auto-discovery of alternate names does not work, we recommend listing each alternate name with a ServerAlias directive instead of using @code{*}.
fr: La directive ServerAlias est utilisée pour la validation des en-tête HTTP Host lorsque les clients se connectent à l'ordonnanceur depuis des interfaces externes.  Utiliser le nom spécial @code{*} peut exposer votre système à des attaques connues de recombinaison DNS dans le navigateur, même lorsque vous accédez au site à travers un pare-feu.  Si la découverte automatique des autres noms ne fonctionne pas, nous vous recommandons de lister chaque nom alternatif avec une directive SeverAlias plutôt que d'utiliser @code{*}.

note: type: deftypevr
en: Defaults to @samp{*}.
fr: La valeur par défaut est @samp{*}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} string server-name
fr: {paramètre de @code{cups-configuration}} string server-name

note: type: deftypevr
en: Specifies the fully-qualified host name of the server.
fr: Spécifie le nom d'hôte pleinement qualifié du serveur.

note: type: deftypevr
en: Defaults to @samp{"localhost"}.
fr: La valeur par défaut est @samp{"localhost"}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} server-tokens server-tokens
fr: {paramètre de @code{cups-configuration}} server-tokens server-tokens

note: type: deftypevr
en: Specifies what information is included in the Server header of HTTP responses.  @code{None} disables the Server header.  @code{ProductOnly} reports @code{CUPS}.  @code{Major} reports @code{CUPS 2}.  @code{Minor} reports @code{CUPS 2.0}.  @code{Minimal} reports @code{CUPS 2.0.0}.  @code{OS} reports @code{CUPS 2.0.0 (@var{uname})} where @var{uname} is the output of the @code{uname} command.  @code{Full} reports @code{CUPS 2.0.0 (@var{uname}) IPP/2.0}.
fr: Spécifie les informations incluses dans les en-têtes Server des réponses HTTP.  @code{None} désactive l'en-tête Server.  @code{ProductOnly} rapporte @code{CUPS}.  @code{Major} rapporte @code{CUPS 2}.  @code{Minor} rapporte @code{CUPS 2.0}.  @code{Minimal} rapporte @code{CUPS 2.0.0}.  @code{OS} rapporte @code{CUPS 2.0.0 (@var{uname})} où @var{uname} est la sortie de la commande @code{uname}.  @code{Full} rapporte @code{CUPS 2.0.0 (@var{uname}) IPP/2.0}.

note: type: deftypevr
en: Defaults to @samp{Minimal}.
fr: La valeur par défaut est @samp{Minimal}.

note: type: deftypevr
en: {@code{cups-configuration} parameter} multiline-string-list ssl-listen
fr: {paramètre de @code{cups-configuration}} multiline-string-list ssl-listen

note: type: deftypevr
en: Listens on the specified interfaces for encrypted connections.  Valid values are of the form @var{address}:@var{port}, where @var{address} is either an IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to indicate all addresses.
fr: Écoute des connexions chiffrées sur les interfaces spécifiées.  Les valeurs valides sont de la forme @var{adresse}:@var{port}, où @var{adresse} est soit une adresse IPv6 dans des crochets, soit une adresse IPv4, soit @code{*} pour indiquer toutes les interfaces.

note: type: deftypevr
en: {@code{cups-configuration} parameter} ssl-options ssl-options
fr: {paramètre de @code{cups-configuration}} ssl-options ssl-options

note: type: deftypevr
en: Sets encryption options.  By default, CUPS only supports encryption using TLS v1.0 or higher using known secure cipher suites.  Security is reduced when @code{Allow} options are used, and enhanced when @code{Deny} options are used.  The @code{AllowRC4} option enables the 128-bit RC4 cipher suites, which are required for some older clients.  The @code{AllowSSL3} option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.  The @code{DenyCBC} option disables all CBC cipher suites.  The @code{DenyTLS1.0} option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
fr: Indique les options de chiffrement.  Par défaut, CUPS ne supporte que le chiffrement avec TLS v1.0 ou plus avec des suites de chiffrement connues pour être sures. La sécurité peut être réduite en utilisant les options @code{Allow}, et améliorée en utilisant les options @code{Deny}.  L'option @code{AllowRC4} active les suites de chiffrement 128-bits RC4, qui sont requises pour certains vieux.  L'option @code{AllowSSL3} active SSL v3.0, qui est requis par certains vieux clients qui ne supportent pas TLS v1.0.  L'option @code{DenyCBC} désactive toutes les suites CBC.  L'option @code{DenyTLS1.0} désactive la prise en charge de TLS v1.0 — la version minimale du protocole est donc TLS v1.1.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean strict-conformance?
fr: {paramètre de @code{cups-configuration}} boolean strict-conformance?

note: type: deftypevr
en: Specifies whether the scheduler requires clients to strictly adhere to the IPP specifications.
fr: Spécifie si l'ordonnanceur demande aux clients d'adhérer aux spécifications IPP.

note: type: deftypevr
en: {@code{cups-configuration} parameter} non-negative-integer timeout
fr: {paramètre de @code{cups-configuration}} entier-non-négatif timeout

note: type: deftypevr
en: Specifies the HTTP request timeout, in seconds.
fr: Spécifie le délai d'attente des requêtes HTTP, en secondes.

note: type: deftypevr
en: {@code{cups-configuration} parameter} boolean web-interface?
fr: {paramètre de @code{cups-configuration}} boolean web-interface?

note: type: deftypevr
en: Specifies whether the web interface is enabled.
fr: Spécifie si l'interface web est activée.

note: type: Plain text
en: At this point you're probably thinking ``oh dear, Guix manual, I like you but you can stop already with the configuration options''.  Indeed.  However, one more point: it could be that you have an existing @code{cupsd.conf} that you want to use.  In that case, you can pass an @code{opaque-cups-configuration} as the configuration of a @code{cups-service-type}.
fr: Maintenant, vous vous dîtes peut-être « oh là là, cher manuel de Guix, je t'aime bien mais arrête maintenant avec ces options de configuration »@footnote{NdT : je vous rassure, c'est aussi mon sentiment au moment de traduire ces lignes.  Et pour moi, c'est encore loin d'être fini.}.  En effet.  cependant, encore un point supplémentaire : vous pouvez avoir un fichier @code{cupsd.conf} existant que vous pourriez vouloir utiliser.  Dans ce cas, vous pouvez passer un @code{opaque-cups-configuration} en configuration d'un @code{cups-service-type}.

note: type: Plain text
en: Available @code{opaque-cups-configuration} fields are:
fr: Les champs de @code{opaque-cups-configuration} disponibles sont :

note: type: deftypevr
en: {@code{opaque-cups-configuration} parameter} package cups
fr: {paramètre de @code{opaque-cups-configuration}} package cups

note: type: deftypevr
en: {@code{opaque-cups-configuration} parameter} string cupsd.conf
fr: {paramètre de @code{opaque-cups-configuration}} string cupsd.conf

note: type: deftypevr
en: The contents of the @code{cupsd.conf}, as a string.
fr: Le contenu de @code{cupsd.conf}, en tant que chaîne de caractères.

note: type: deftypevr
en: {@code{opaque-cups-configuration} parameter} string cups-files.conf
fr: {paramètre de @code{opaque-cups-configuration}} string cups-files.conf

note: type: deftypevr
en: The contents of the @code{cups-files.conf} file, as a string.
fr: Le contenu du fichier @code{cups-files.conf}, en tant que chaîne de caractères.

note: type: Plain text
en: For example, if your @code{cupsd.conf} and @code{cups-files.conf} are in strings of the same name, you could instantiate a CUPS service like this:
fr: Par exemple, si vos fichiers @code{cupsd.conf} et @code{cups-files.conf} sont dans des chaînes du même nom, pouvez instancier un service CUPS de cette manière :

note: type: Plain text
en: The @code{(gnu services desktop)} module provides services that are usually useful in the context of a ``desktop'' setup---that is, on a machine running a graphical display server, possibly with graphical user interfaces, etc.  It also defines services that provide specific desktop environments like GNOME, Xfce or MATE.
fr: Le module @code{(gnu services desktop)} fournit des services qui sont habituellement utiles dans le contexte d'une installation « de bureau » — c'est-à-dire sur une machine qui fait tourner un service d'affichage graphique, éventuellement avec des interfaces utilisateurs graphiques, etc.  Il définit aussi des services qui fournissent des environnements de bureau spécifiques comme GNOME, Xfce et MATE.

note: type: Plain text
en: To simplify things, the module defines a variable containing the set of services that users typically expect on a machine with a graphical environment and networking:
fr: Pour simplifier les choses, le module définit une variable contenant l'ensemble des services que les utilisateurs s'attendent en général à avoir sur une machine avec un environnement graphique et le réseau :

note: type: defvr
en: {Scheme Variable} %desktop-services
fr: {Variable Scheme} %desktop-services

note: type: defvr
en: This is a list of services that builds upon @code{%base-services} and adds or adjusts services for a typical ``desktop'' setup.
fr: C'est la liste des services qui étend @code{%base-services} en ajoutant ou en ajustant des services pour une configuration « de bureau » typique.

note: type: defvr
en: In particular, it adds a graphical login manager (@pxref{X Window, @code{gdm-service-type}}), screen lockers, a network management tool (@pxref{Networking Services, @code{network-manager-service-type}}) with modem support (@pxref{Networking Services, @code{modem-manager-service-type}}), energy and color management services, the @code{elogind} login and seat manager, the Polkit privilege service, the GeoClue location service, the AccountsService daemon that allows authorized users change system passwords, an NTP client (@pxref{Networking Services}), the Avahi daemon, and has the name service switch service configured to be able to use @code{nss-mdns} (@pxref{Name Service Switch, mDNS}).
fr: En particulier, elle ajoute un gestionnaire de connexion graphique (@pxref{X Window, @code{gdm-service-type}}), des verrouilleurs d'écran, un outil de gestion réseau (@pxref{Networking Services, @code{network-manager-service-type}}) avec la prise en charge des modems (@pxref{Networking Services, @code{modem-manager-service-type}}), des services de gestion de l'énergie et des couleurs, le gestionnaire de connexion et de siège @code{elogind}, le service de privilèges Polkit, le service de géolocalisation GeoClue, le démon AccountsService qui permet aux utilisateurs autorisés de changer les mots de passe du système, un client NTP (@pxref{Networking Services}), le démon Avahi, et le service name service switch est configuré pour pouvoir utiliser @code{nss-mdns} (@pxref{Name Service Switch, mDNS}).

note: type: Plain text
en: The @code{%desktop-services} variable can be used as the @code{services} field of an @code{operating-system} declaration (@pxref{operating-system Reference, @code{services}}).
fr: La variable @code{%desktop-services} peut être utilisée comme champ @code{services} d'une déclaration @code{operating-system} (@pxref{operating-system Reference, @code{services}}).

note: type: Plain text
en: Additionally, the @code{gnome-desktop-service-type}, @code{xfce-desktop-service}, @code{mate-desktop-service-type}, @code{lxqt-desktop-service-type} and @code{enlightenment-desktop-service-type} procedures can add GNOME, Xfce, MATE and/or Enlightenment to a system.  To ``add GNOME'' means that system-level services like the backlight adjustment helpers and the power management utilities are added to the system, extending @code{polkit} and @code{dbus} appropriately, allowing GNOME to operate with elevated privileges on a limited number of special-purpose system interfaces.  Additionally, adding a service made by @code{gnome-desktop-service-type} adds the GNOME metapackage to the system profile.  Likewise, adding the Xfce service not only adds the @code{xfce} metapackage to the system profile, but it also gives the Thunar file manager the ability to open a ``root-mode'' file management window, if the user authenticates using the administrator's password via the standard polkit graphical interface.  To ``add MATE'' means that @code{polkit} and @code{dbus} are extended appropriately, allowing MATE to operate with elevated privileges on a limited number of special-purpose system interfaces.  Additionally, adding a service of type @code{mate-desktop-service-type} adds the MATE metapackage to the system profile.  ``Adding Enlightenment'' means that @code{dbus} is extended appropriately, and several of Enlightenment's binaries are set as setuid, allowing Enlightenment's screen locker and other functionality to work as expected.
fr: En plus, les procédures @code{gnome-desktop-service-type}, @code{xfce-desktop-service}, @code{mate-desktop-service-type}, @code{lxqt-desktop-service-type} et @code{enlightenment-desktop-service-type} peuvent ajouter GNOME, Xfce, MATE ou Enlightenment à un système.  « Ajouter GNOME » signifie que les services du système comme les utilitaires d'ajustement de la luminosité et de gestion de l'énergie sont ajoutés au système, en étendant @code{polkit} et @code{dbus} de la bonne manière, ce qui permet à GNOME d'opérer avec des privilèges plus élevés sur un nombre limité d'interfaces systèmes spécialisées.  En plus, ajouter un service construit par @code{gnome-desktop-service-type} ajoute le métapaquet GNOME au profil du système.  De même, ajouter le service Xfce ajoute non seulement le métapaquet @code{xfce} au profil système, mais il permet aussi au gestionnaire de fichiers Thunar d'ouvrir une fenêtre de gestion des fichier « en mode root », si l'utilisateur s'authentifie avec le mot de passe administrateur via l'interface graphique polkit standard.  « Ajouter MATE » signifie que @code{polkit} et @code{dbus} sont étendue de la bonne manière, ce qui permet à MATE d'opérer avec des privilèges plus élevés sur un nombre limité d'interface systèmes spécialisées. En plus, ajouter un service de type @code{mate-desktop-service-type} ajoute le métapaquet MATE au profil du système.  « Ajouter Enlightenment » signifie que @code{dbus} est étendu comme il faut et que plusieurs binaires d'Enlightenment récupèrent le bit setuid, ce qui permet au verrouilleur d'écran d'Enlightenment et à d'autres fonctionnalités de fonctionner correctement.

note: type: Plain text
en: The desktop environments in Guix use the Xorg display server by default.  If you'd like to use the newer display server protocol called Wayland, you need to enable Wayland support in GDM (@pxref{wayland-gdm}).  Another solution is to use the @code{sddm-service} instead of GDM as the graphical login manager.  You should then select the ``GNOME (Wayland)'' session in SDDM@.  Alternatively you can also try starting GNOME on Wayland manually from a TTY with the command ``XDG_SESSION_TYPE=wayland exec dbus-run-session gnome-session``.  Currently only GNOME has support for Wayland.
fr: Les environnement de bureau dans Guix utilisent le service d'affichage Xorg par défaut.  Si vous voulez utiliser le protocole de serveur d'affichage plus récent Wayland, vous devez activer la prise en charge de Wayland dans GDM (@pxref{wayland-gdm}). Une autre solution consiste à utiliser @code{sddm-service} à la place de GDM comme gestionnaire de connexion graphique.  Vous devriez ensuite sélectionner la session « GNOME (Wayland) » dans SDDM@.  Autrement, vous pouvez essayer de démarrer GNOME sur Wayland manuellement depuis un TTY avec la commande @command{XDG_SESSION_TYPE=wayland exec dbus-run-session gnome-session}.  Actuellement seul GNOME support Wayland.

note: type: defvr
en: {Scheme Variable} gnome-desktop-service-type
fr: {Variable Scheme} gnome-desktop-service-type

note: type: defvr
en: This is the type of the service that adds the @uref{https://www.gnome.org, GNOME} desktop environment.  Its value is a @code{gnome-desktop-configuration} object (see below).
fr: C'est le type de service qui ajoute l'environnement de bureau @uref{https://www.gnome.org, GNOME}. Sa valeur est un objet @code{gnome-desktop-configuration} (voir plus bas).

note: type: defvr
en: This service adds the @code{gnome} package to the system profile, and extends polkit with the actions from @code{gnome-settings-daemon}.
fr: Ce service ajoute le paquet @code{gnome} au profil du système et étend polkit avec les actions de @code{gnome-settings-daemon}.

note: type: deftp
en: {Data Type} gnome-desktop-configuration
fr: {Type de données} gnome-desktop-configuration

note: type: deftp
en: Configuration record for the GNOME desktop environment.
fr: Enregistrement de la configuration de l'environnement de bureau GNOME.

note: type: item
en: @code{gnome} (default: @code{gnome})
fr: @code{gnome} (par défaut : @code{gnome})

note: type: table
en: The GNOME package to use.
fr: Le paquet GNOME à utiliser.

note: type: defvr
en: {Scheme Variable} xfce-desktop-service-type
fr: {Variable Scheme} xfce-desktop-service-type

note: type: defvr
en: This is the type of a service to run the @uref{Xfce, https://xfce.org/} desktop environment.  Its value is an @code{xfce-desktop-configuration} object (see below).
fr: C'est le type de service qui lance l'environnement de bureau @uref{Xfce, https://xfce.org/}.  Sa valeur est un objet @code{xfce-desktop-configuration} (voir plus bas).

note: type: defvr
en: This service adds the @code{xfce} package to the system profile, and extends polkit with the ability for @code{thunar} to manipulate the file system as root from within a user session, after the user has authenticated with the administrator's password.
fr: Ce service ajoute le paquet @code{xfce} au profil du système et étend polkit avec la possibilité pour @code{thunar} de manipuler le système de fichier en root depuis une session utilisateur, après que l'utilisateur s'authentifie avec le mot de passe administrateur.

note: type: defvr
en: Note that @code{xfce4-panel} and its plugin packages should be installed in the same profile to ensure compatibility.  When using this service, you should add extra plugins (@code{xfce4-whiskermenu-plugin}, @code{xfce4-weather-plugin}, etc.) to the @code{packages} field of your @code{operating-system}.
fr: Remarquez que @code{xfce4-panel} et ses paquets de greffons devraient être installés dans le même profil pour assurer la compatibilité. Lorsque vous utilisez ce service, vous devriez ajouter les greffons supplémentaires (@code{xfce4-whiskermenu-plugin}, @code{xfce4-weather-plugin}, etc) au champ @code{packages} de votre @code{operating-system}.

note: type: deftp
en: {Data Type} xfce-desktop-configuration
fr: {Type de données} xfce-desktop-configuration

note: type: deftp
en: Configuration record for the Xfce desktop environment.
fr: Enregistrement de la configuration de l'environnement de bureau Xfce.

note: type: item
en: @code{xfce} (default: @code{xfce})
fr: @code{xfce} (par défaut : @code{xfce})

note: type: table
en: The Xfce package to use.
fr: Le paquet Xfce à utiliser.

note: type: deffn
en: {Scheme Variable} mate-desktop-service-type
fr: {Variable Scheme} mate-desktop-service-type

note: type: deffn
en: This is the type of the service that runs the @uref{https://mate-desktop.org/, MATE desktop environment}.  Its value is a @code{mate-desktop-configuration} object (see below).
fr: C'est le type de service qui lance @uref{https://mate-desktop.org/, l'environnement de bureau MATE}.  Sa valeur est un objet @code{mate-desktop-configuration} (voir plus bas).

note: type: deffn
en: This service adds the @code{mate} package to the system profile, and extends polkit with the actions from @code{mate-settings-daemon}.
fr: Ce service ajoute le paquet @code{mate} au profil du système, et étend polkit avec les actions de @code{mate-settings-daemon}.

note: type: deftp
en: {Data Type} mate-desktop-configuration
fr: {Type de données} mate-desktop-configuration

note: type: deftp
en: Configuration record for the MATE desktop environment.
fr: Enregistrement de configuration pour l'environnement de bureau MATE.

note: type: item
en: @code{mate} (default: @code{mate})
fr: @code{mate} (par défaut : @code{mate})

note: type: table
en: The MATE package to use.
fr: Le paquet MATE à utiliser.

note: type: deffn
en: {Scheme Variable} lxqt-desktop-service-type
fr: {Variable Scheme} lxqt-desktop-service-type

note: type: deffn
en: This is the type of the service that runs the @uref{https://lxqt-project.org, LXQt desktop environment}.  Its value is a @code{lxqt-desktop-configuration} object (see below).
fr: C'est le type de service qui lance @uref{https://lxqt-project.org, l'environnement de bureau LXQt}.  Sa valeur est un objet @code{lxqt-desktop-configuration} (voir plus bas).

note: type: deffn
en: This service adds the @code{lxqt} package to the system profile.
fr: Ce service ajoute le paquet @code{lxqt} au profil du système.

note: type: deftp
en: {Data Type} lxqt-desktop-configuration
fr: {Type de données} lxqt-desktop-configuration

note: type: deftp
en: Configuration record for the LXQt desktop environment.
fr: Enregistrement de la configuration de l'environnement de bureau LXQt.

note: type: item
en: @code{lxqt} (default: @code{lxqt})
fr: @code{lxqt} (par défaut : @code{lxqt})

note: type: table
en: The LXQT package to use.
fr: Le paquet LXQT à utiliser.

note: type: deffn
en: {Scheme Variable} enlightenment-desktop-service-type
fr: {Variable Scheme} enlightenment-desktop-service-type

note: type: deffn
en: Return a service that adds the @code{enlightenment} package to the system profile, and extends dbus with actions from @code{efl}.
fr: Renvoie un service qui ajoute le paquet @code{enlightenment} et étend dbus avec les actions de @code{efl}.

note: type: deftp
en: {Data Type} enlightenment-desktop-service-configuration
fr: {Type de données} enlightenment-desktop-service-configuration

note: type: item
en: @code{enlightenment} (default: @code{enlightenment})
fr: @code{enlightenment} (par défaut : @code{enlightenment})

note: type: table
en: The enlightenment package to use.
fr: Le paquet enlightenment à utiliser.

note: type: Plain text
en: Because the GNOME, Xfce and MATE desktop services pull in so many packages, the default @code{%desktop-services} variable doesn't include any of them by default.  To add GNOME, Xfce or MATE, just @code{cons} them onto @code{%desktop-services} in the @code{services} field of your @code{operating-system}:
fr: Comme les services de bureau GNOME, Xfce et MATE récupèrent tant de paquet, la variable @code{%desktop-services} par défaut n'inclut aucun d'entre eux.  Pour ajouter GNOME, Xfce ou MATE, utilisez @code{cons} pour les ajouter à @code{%desktop-services} dans le champ @code{services} de votre @code{operating-system} :

note: type: lisp
en: (use-modules (gnu))
    (use-service-modules desktop)
    (operating-system
      ...
      ;; cons* adds items to the list given as its last argument.
      (services (cons* (service gnome-desktop-service-type)
                       (service xfce-desktop-service)
                       %desktop-services))
      ...)
fr: (use-modules (gnu))
    (use-service-modules desktop)
    (operating-system
      ...
      ;; cons* ajoute des éléments à la liste donnée en dernier argument.
      (services (cons* (service gnome-desktop-service-type)
                       (service xfce-desktop-service)
                       %desktop-services))
      ...)

note: type: Plain text
en: These desktop environments will then be available as options in the graphical login window.
fr: Ces environnements de bureau seront alors disponibles comme une option dans la fenêtre de connexion graphique.

note: type: Plain text
en: The actual service definitions included in @code{%desktop-services} and provided by @code{(gnu services dbus)} and @code{(gnu services desktop)} are described below.
fr: Les définitions de service qui sont vraiment incluses dans @code{%desktop-services} et fournies par @code{(gnu services dbus)} et @code{(gnu services desktop)} sont décrites plus bas.

note: type: deffn
en: {Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()] @
fr: {Procédure Scheme} dbus-service [#:dbus @var{dbus}] [#:services '()] @

note: type: deffn
en: [#:verbose?] Return a service that runs the ``system bus'', using @var{dbus}, with support for @var{services}.  When @var{verbose?} is true, it causes the @samp{DBUS_VERBOSE} environment variable to be set to @samp{1}; a verbose-enabled D-Bus package such as @code{dbus-verbose} should be provided as @var{dbus} in this scenario.  The verbose output is logged to @file{/var/log/dbus-daemon.log}.
fr: [#:verbose?]
    Renvoie un service qui lance le « bus système », avec @var{dbus}, et la prise en charge des @var{services}. Lorsque @var{verbose?} est vrai, cela initialise la variable d'environnement @samp{DBUS_VERBOSE} à @samp{1} ; un paquet D-Bus verbeux comme @code{dbus-verbose} devrait être fournit en tant que @var{dbus} dans ce cas. La sortie verbeuse est enregistrée dans @file{/var/log/dbus-daemon.log}.

note: type: deffn
en: @uref{https://dbus.freedesktop.org/, D-Bus} is an inter-process communication facility.  Its system bus is used to allow system services to communicate and to be notified of system-wide events.
fr: @uref{https://dbus.freedesktop.org/, D-Bus} est un utilitaire de communication inter-processus.  Son bus système est utilisé pour permettre à des services systèmes de communiquer et d'être notifiés d'événements systèmes.

note: type: deffn
en: @var{services} must be a list of packages that provide an @file{etc/dbus-1/system.d} directory containing additional D-Bus configuration and policy files.  For example, to allow avahi-daemon to use the system bus, @var{services} must be equal to @code{(list avahi)}.
fr: @var{services} doit être une liste de paquets qui fournissent un répertoire @file{etc/dbus-1/system.d} contenant de la configuration D-Bus supplémentaire et des fichiers de politiques.  Par exemple, pour permettre à avahi-daemon d'utiliser le bus système, @var{services} doit être égal à @code{(list avahi)}.

note: type: deffn
en: {Scheme Procedure} elogind-service [#:config @var{config}]
fr: {Procédure Scheme} elogind-service [#:config @var{config}]

note: type: deffn
en: Return a service that runs the @code{elogind} login and seat management daemon.  @uref{https://github.com/elogind/elogind, Elogind} exposes a D-Bus interface that can be used to know which users are logged in, know what kind of sessions they have open, suspend the system, inhibit system suspend, reboot the system, and other tasks.
fr: Renvoie un service qui lance le démon de gestion de connexion et de siège @code{elogind}.  @uref{https://github.com/elogind/elogind, Elogind} expose une interface D-Bus qui peut être utilisée pour connaître quels utilisateurs sont connectés, le type de session qu'ils sont ouverte, suspendre le système, désactiver la veille système, redémarrer le système et d'autre tâches.

note: type: deffn
en: Elogind handles most system-level power events for a computer, for example suspending the system when a lid is closed, or shutting it down when the power button is pressed.
fr: Elogind gère la plupart des événements liés à l'énergie du système, par exemple mettre en veille le système quand l'écran est rabattu ou en l'éteignant quand le bouton de démarrage est appuyé.

note: type: deffn
en: The @var{config} keyword argument specifies the configuration for elogind, and should be the result of an @code{(elogind-configuration (@var{parameter} @var{value})...)} invocation.  Available parameters and their default values are:
fr: L'argument @var{config} spécifie la configuration d'elogind et devrait être le résultat d'une invocation de @code{(elogind-configuration (@var{parameter} @var{value})...)}.  Les paramètres disponibles et leur valeur par défaut sont :

note: type: deffn
en: {Scheme Procedure} accountsservice-service @
fr: {Procédure Scheme} accountsservice-service @

note: type: deffn
en: [#:accountsservice @var{accountsservice}] Return a service that runs AccountsService, a system service that can list available accounts, change their passwords, and so on.  AccountsService integrates with PolicyKit to enable unprivileged users to acquire the capability to modify their system configuration.  @uref{https://www.freedesktop.org/wiki/Software/AccountsService/, the accountsservice web site} for more information.
fr: [#:accountsservice @var{accountsservice}]
    Renvoie un service qui lance AccountsService, un service système qui peut lister les comptes disponibles, changer leur mot de passe, etc.  AccountsService s'intègre à Polkit pour permettre aux utilisateurs non privilégiés de pouvoir modifier la configuration de leur système.  @uref{https://www.freedesktop.org/wiki/Software/AccountsService/, le site de accountsservice} pour trouver plus d'informations.

note: type: deffn
en: The @var{accountsservice} keyword argument is the @code{accountsservice} package to expose as a service.
fr: L'argument @var{accountsservice} est le paquet @code{accountsservice} à exposer comme un service.

note: type: deffn
en: {Scheme Procedure} polkit-service @
fr: {Procédure Scheme} polkit-service @

note: type: deffn
en: [#:polkit @var{polkit}] Return a service that runs the @uref{https://www.freedesktop.org/wiki/Software/polkit/, Polkit privilege management service}, which allows system administrators to grant access to privileged operations in a structured way.  By querying the Polkit service, a privileged system component can know when it should grant additional capabilities to ordinary users.  For example, an ordinary user can be granted the capability to suspend the system if the user is logged in locally.
fr: [#:polkit @var{polkit}]
    Renvoie un service qui lance le @uref{https://www.freedesktop.org/wiki/Software/polkit/, service de gestion des privilèges Polkit}, qui permet aux administrateurs systèmes de permettre l'accès à des opération privilégiées d'une manière structurée.  En demandant au service Polkit, un composant système privilégié peut savoir lorsqu'il peut donner des privilèges supplémentaires à des utilisateurs normaux.  Par exemple, un utilisateur normal peut obtenir le droit de mettre le système en veille si l'utilisateur est connecté localement.

note: type: defvr
en: {Scheme Variable} polkit-wheel-service
fr: {Variable Scheme} polkit-wheel-service

note: type: defvr
en: Service that adds the @code{wheel} group as admins to the Polkit service.  This makes it so that users in the @code{wheel} group are queried for their own passwords when performing administrative actions instead of @code{root}'s, similar to the behaviour used by @code{sudo}.
fr: Service qui ajoute le groupe @code{wheel} comme administrateur au service Polkit.  Cela fait en sorte qu'on demande le mot de passe des utilisateurs du groupe @code{wheel} eux-mêmes pour effectuer des tâches d'administration au lieu du mot de passe @code{root}, comme le fait @code{sudo}.

note: type: defvr
en: {Scheme Variable} upower-service-type
fr: {Variable Scheme} upower-service-type

note: type: defvr
en: Service that runs @uref{https://upower.freedesktop.org/, @command{upowerd}}, a system-wide monitor for power consumption and battery levels, with the given configuration settings.
fr: Service qui lance @uref{https://upower.freedesktop.org/, @command{upowerd}}, un moniteur système de consommation d'énergie et de niveau de batterie, avec les paramètres de configuration donnés.

note: type: defvr
en: It implements the @code{org.freedesktop.UPower} D-Bus interface, and is notably used by GNOME.
fr: Il implémente l'interface D-Bus @code{org.freedesktop.UPower} et est notamment utilisé par GNOME.

note: type: deftp
en: {Data Type} upower-configuration
fr: {Type de données} upower-configuration

note: type: deftp
en: Data type representation the configuration for UPower.
fr: Type de données représentant la configuration de UPower.

note: type: item
en: @code{upower} (default: @var{upower})
fr: @code{upower} (par défaut : @var{upower})

note: type: table
en: Package to use for @code{upower}.
fr: Paquet à utiliser pour @code{upower}.

note: type: item
en: @code{watts-up-pro?} (default: @code{#f})
fr: @code{watts-up-pro?} (par défaut : @code{#f})

note: type: table
en: Enable the Watts Up Pro device.
fr: Active le périphérique Watts Up Pro.

note: type: item
en: @code{poll-batteries?} (default: @code{#t})
fr: @code{poll-batteries?} (par défaut : @code{#t})

note: type: table
en: Enable polling the kernel for battery level changes.
fr: Active les requêtes au noyau pour les changements de niveau de batterie.

note: type: item
en: @code{ignore-lid?} (default: @code{#f})
fr: @code{ignore-lid?} (par défaut : @code{#f})

note: type: table
en: Ignore the lid state, this can be useful if it's incorrect on a device.
fr: Ignore l'état de l'écran, ce qui peut être utile s'il est incorrect sur un appareil.

note: type: item
en: @code{use-percentage-for-policy?} (default: @code{#t})
fr: @code{use-percentage-for-policy?} (par défaut : @code{#t})

note: type: table
en: Whether to use a policy based on battery percentage rather than on estimated time left.  A policy based on battery percentage is usually more reliable.
fr: Indique s'il faut utiliser une politique basée sur le pourcentage de batterie plutôt que l'estimation du temps restant. Une politique basée sur le pourcentage de batterie est souvent plus fiable.

note: type: item
en: @code{percentage-low} (default: @code{20})
fr: @code{percentage-low} (par défaut : @code{20})

note: type: table
en: When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which the battery is considered low.
fr: Lorsque @code{use-percentage-for-policy?} est @code{#t}, cela indique à quel niveau la batterie est considérée comme faible.

note: type: item
en: @code{percentage-critical} (default: @code{5})
fr: @code{percentage-critical} (par défaut : @code{5})

note: type: table
en: When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which the battery is considered critical.
fr: Lorsque @code{use-percentage-for-policy?} est @code{#t}, cela indique à quel niveau la batterie est considérée comme critique.

note: type: item
en: @code{percentage-action} (default: @code{2})
fr: @code{percentage-action} (par défaut : @code{2})

note: type: table
en: When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which action will be taken.
fr: Lorsque @code{use-percentage-for-policy?} est @code{#t}, cela indique à quel niveau l'action sera prise.

note: type: item
en: @code{time-low} (default: @code{1200})
fr: @code{time-low} (par défaut : @code{1200})

note: type: table
en: When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which the battery is considered low.
fr: Lorsque @code{use-percentage-for-policy?} est @code{#f}, cela indique à quelle durée restante en secondes la batterie est considérée comme faible.

note: type: item
en: @code{time-critical} (default: @code{300})
fr: @code{time-critical} (par défaut : @code{300})

note: type: table
en: When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which the battery is considered critical.
fr: Lorsque @code{use-percentage-for-policy?} est @code{#f}, cela indique à quelle durée restante en secondes la batterie est considérée comme critique.

note: type: item
en: @code{time-action} (default: @code{120})
fr: @code{time-action} (par défaut : @code{120})

note: type: table
en: When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which action will be taken.
fr: Lorsque @code{use-percentage-for-policy?} est @code{#f}, cela indique à quelle durée restante en secondes l'action sera prise.

note: type: item
en: @code{critical-power-action} (default: @code{'hybrid-sleep})
fr: @code{critical-power-action} (par défaut : @code{'hybrid-sleep})

note: type: table
en: The action taken when @code{percentage-action} or @code{time-action} is reached (depending on the configuration of @code{use-percentage-for-policy?}).
fr: L'action à prendre lorsque @code{percentage-action} ou @code{time-action} est atteint (en fonction de la configuration de @code{use-percentage-for-policy?}).

note: type: table
en: Possible values are:
fr: Les valeurs possibles sont :

note: type: deffn
en: {Scheme Procedure} udisks-service [#:udisks @var{udisks}]
fr: {Procédure Scheme} udisks-service [#:udisks @var{udisks}]

note: type: deffn
en: Return a service for @uref{https://udisks.freedesktop.org/docs/latest/, UDisks}, a @dfn{disk management} daemon that provides user interfaces with notifications and ways to mount/unmount disks.  Programs that talk to UDisks include the @command{udisksctl} command, part of UDisks, and GNOME Disks.  Note that Udisks relies on the @command{mount} command, so it will only be able to use the file-system utilities installed in the system profile.  For example if you want to be able to mount NTFS file-systems in read and write fashion, you'll need to have @code{ntfs-3g} installed system-wide.
fr: Renvoie un service pour @uref{https://udisks.freedesktop.org/docs/latest/, UDisks}, un démon de @dfn{gestion de disques} qui fournit des notifications et la capacité de monter et démonter des disques à des interfaces utilisateurs.  Les programmes qui parlent à UDisks sont par exemple la commande @command{udisksctl}, qui fait partie de UDisks, et GNOME Disks.  Remarquez que Udisks s'appuie sur la commande @command{mount}, donc il ne sera capable d'utiliser que les utilitaires de systèmes de fichiers installés dans le profil du système.  Par exemple si vous voulez monter des systèmes de fichiers NTFS en lecture-écriture, vous devrez ajouter @code{ntfs-3g} aux paquets installés sur le système entier.

note: type: deffn
en: {Scheme Variable} colord-service-type
fr: {Variable Scheme} colord-service-type

note: type: deffn
en: This is the type of the service that runs @command{colord}, a system service with a D-Bus interface to manage the color profiles of input and output devices such as screens and scanners.  It is notably used by the GNOME Color Manager graphical tool.  See @uref{https://www.freedesktop.org/software/colord/, the colord web site} for more information.
fr: C'est le type de service qui lance @command{colord}, un service système avec une interface D-Bus pour gérer les profils de couleur des périphériques d'entrées et de sorties comme les écrans et les scanners.  Il est notamment utilisé par l'outil graphique GNOME Color Manager.  Voir @uref{https://www.freedesktop.org/software/colord/, le site web de colord} pour plus d'informations.

note: type: cindex
en: scanner access
fr: accès au scanner

note: type: defvr
en: {Scheme Variable} sane-service-type
fr: {Variable Scheme} sane-service-type

note: type: defvr
en: This service provides access to scanners @i{via} @uref{http://www.sane-project.org, SANE} by installing the necessary udev rules.  It is included in @code{%desktop-services} (@pxref{Desktop Services}) and relies by default on @code{sane-backends-minimal} package (see below) for hardware support.
fr: Ce service fournit un accès aux scanner via @uref{http://www.sane-project.org, SANE} en installant les règles udev nécessaires. Il est inclus dans @code{%desktop-services} (@pxref{Desktop Services}) et s'appuie sur le paquet @code{sane-backends-minimal} par défaut (voir plus bas) pour la prise en charge matérielle.

note: type: defvr
en: {Scheme Variable} sane-backends-minimal
fr: {Variable Scheme} sane-backends-minimal

note: type: defvr
en: The default package which the @code{sane-service-type} installs.  It supports many recent scanners.
fr: Le paquet par défaut installé par le @code{sane-service-type}. Il prend en charge beaucoup de scanners récents.

note: type: defvr
en: {Scheme Variable} sane-backends
fr: {Variable Scheme} sane-backends

note: type: defvr
en: This package includes support for all scanners that @code{sane-backends-minimal} supports, plus older Hewlett-Packard scanners supported by @code{hplip} package.  In order to use this on a system which relies on @code{%desktop-services}, you may use @code{modify-services} (@pxref{Service Reference, @code{modify-services}}) as illustrated below:
fr: Ce paquet inclus la prise en charge de tous les scanners pris en charge par @code{sane-backends-minimal}, plus les scanners Hewlett-Packard plus anciens pris en charges par le paquet @code{hplip}. Pour l'utiliser sur un système qui utiliser les @code{%desktop-services}, vous pouvez utiliser @code{modify-services} (@pxref{Service Reference, @code{modify-services}}) comme montré ci-dessous :

note: type: lisp
en: (define %my-desktop-services
      ;; List of desktop services that supports a broader range of scanners.
      (modify-services %desktop-services
        (sane-service-type _ => sane-backends)))
fr: (define %my-desktop-services
      ;; Liste des services de bureau qui prennent en charge un plus grand nombre de scanners.
      (modify-services %desktop-services
        (sane-service-type _ => sane-backends)))

note: type: lisp
en: (operating-system
      @dots{}
      (services %my-desktop-services))
fr: (operating-system
      ;; @dots{}
      (services %my-desktop-services))

note: type: deffn
en: {Scheme Procedure} geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()]
fr: {Procédure Scheme} geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()]

note: type: deffn
en: Return a configuration allowing an application to access GeoClue location data.  @var{name} is the Desktop ID of the application, without the @code{.desktop} part.  If @var{allowed?} is true, the application will have access to location information by default.  The boolean @var{system?} value indicates whether an application is a system component or not.  Finally @var{users} is a list of UIDs of all users for which this application is allowed location info access.  An empty users list means that all users are allowed.
fr: Renvoie une configuration qui permet d'accéder aux données de localisation de GeoClue.  @var{name} est l'ID Desktop de l'application, sans la partie en @code{.desktop}.  Si @var{allowed?} est vraie, l'application aura droit d'accéder aux informations de localisation par défaut.  Le booléen @var{system?} indique si une application est un composant système ou non.  Enfin @var{users} est la liste des UID des utilisateurs pour lesquels cette application a le droit d'accéder aux informations de géolocalisation.  Une liste d'utilisateurs vide indique que tous les utilisateurs sont autorisés.

note: type: defvr
en: {Scheme Variable} %standard-geoclue-applications
fr: {Variable Scheme} %standard-geoclue-applications

note: type: defvr
en: The standard list of well-known GeoClue application configurations, granting authority to the GNOME date-and-time utility to ask for the current location in order to set the time zone, and allowing the IceCat and Epiphany web browsers to request location information.  IceCat and Epiphany both query the user before allowing a web page to know the user's location.
fr: La liste standard de configuration des application GeoClue connues, qui permet à l'utilitaire date-and-time de GNOME de demander l'emplacement actuel pour initialiser le fuseau horaire et aux navigateurs web IceCat et Epiphany de demander les informations de localisation.  IceCat et Epiphany demandent tous deux à l'utilisateur avant de permettre à une page web de connaître l'emplacement de l'utilisateur.

note: type: deffn
en: {Scheme Procedure} geoclue-service [#:colord @var{colord}] @
fr: {Procédure Scheme} geoclue-service [#:colord @var{colord}] @

note: type: deffn
en: [#:whitelist '()] @ [#:wifi-geolocation-url "https://location.services.mozilla.com/v1/geolocate?key=geoclue"] @ [#:submit-data? #f] [#:wifi-submission-url "https://location.services.mozilla.com/v1/submit?key=geoclue"] @ [#:submission-nick "geoclue"] @ [#:applications %standard-geoclue-applications] Return a service that runs the GeoClue location service.  This service provides a D-Bus interface to allow applications to request access to a user's physical location, and optionally to add information to online location databases.  See @uref{https://wiki.freedesktop.org/www/Software/GeoClue/, the GeoClue web site} for more information.
fr: [#:whitelist '()] @
    [#:wifi-geolocation-url "https://location.services.mozilla.com/v1/geolocate?key=geoclue"] @
    [#:submit-data? #f] [#:wifi-submission-url "https://location.services.mozilla.com/v1/submit?key=geoclue"] @
    [#:submission-nick "geoclue"] @
    [#:applications %standard-geoclue-applications]
    Renvoie un service qui lance le service de géolocalisation GeoClue.  Ce service fournit une interface D-Bus pour permettre aux applications de demande l'accès à la position de l'utilisateur et éventuellement d'ajouter des informations à des bases de données de géolocalisation en ligne.  Voir @uref{https://wiki.freedesktop.org/www/Software/GeoClue/, le site web de GeoClue} pour plus d'informations.

note: type: deffn
en: {Scheme Procedure} bluetooth-service [#:bluez @var{bluez}] @
fr: {Procédure Scheme} bluetooth-service [#:bluez @var{bluez}] @

note: type: deffn
en: [@w{#:auto-enable? #f}] Return a service that runs the @command{bluetoothd} daemon, which manages all the Bluetooth devices and provides a number of D-Bus interfaces.  When AUTO-ENABLE? is true, the bluetooth controller is powered automatically at boot, which can be useful when using a bluetooth keyboard or mouse.
fr: [@w{#:auto-enable? #f}]
    Renvoie un service qui lance le démon @command{bluetoothd} qui gère tous les appareils Bluetooth et fournit un certain nombre d'interfaces D-Bus.  Lorsque @var{auto-enable?} est vraie, le contrôler bluetooth est automatiquement alimenté au démarrage, ce qui peut être utile lorsque vous utilisez un clavier ou une souris bluetooth.

note: type: deffn
en: Users need to be in the @code{lp} group to access the D-Bus service.
fr: Les utilisateurs doivent être dans le groupe @code{lp} pour accéder au service D-Bus.

note: type: deffn
en: {Scheme Variable} bluetooth-service-type
fr: {Variable Scheme} bluetooth-service-type

note: type: deffn
en: This is the type for the @uref{https://bluez.org/, Linux Bluetooth Protocol Stack} (BlueZ) system, which generates the @file{/etc/bluetooth/main.conf} configuration file.  The value for this type is a @command{bluetooth-configuration} record as in this example:
fr: C'est le type pour le système @uref{https://bluez.org/, Linux Bluetooth Protocol Stack} (BlueZ), qui génère le fichier de configuration @file{/etc/bluetooth/main.conf}.  La valeur de ce type est un enregistrement @command{bluetooth-configuration} comme dans cet exemple :

note: type: deffn
en: See below for details about @code{bluetooth-configuration}.
fr: Voir plus bas pour des détails sur @code{bluetooth-configuration}.

note: type: deftp
en: {Data Type} bluetooth-configuration
fr: {Type de données} bluetooth-configuration

note: type: deftp
en: Data type representing the configuration for @code{bluetooth-service}.
fr: Type de données représentant la configuration pour @code{bluetooth-service}.

note: type: item
en: @code{bluez} (default: @code{bluez})
fr: @code{bluez} (par défaut : @code{bluez})

note: type: table
en: @code{bluez} package to use.
fr: Le paquet @code{bluez} à utiliser.

note: type: item
en: @code{name} (default: @code{"BlueZ"})
fr: @code{name} (par défaut : @code{"BlueZ"})

note: type: table
en: Default adapter name.
fr: Nom de l'adaptateur par défaut.

note: type: item
en: @code{class} (default: @code{#x000000})
fr: @code{class} (par défaut : @code{#x000000})

note: type: table
en: Default device class. Only the major and minor device class bits are considered.
fr: Classe de périphérique par défaut. Seuls les bits de classe de périphérique majeurs et mineurs sont pris en compte.

note: type: item
en: @code{discoverable-timeout} (default: @code{180})
fr: @code{discoverable-timeout} (par défaut : @code{180})

note: type: table
en: How long to stay in discoverable mode before going back to non-discoverable. The value is in seconds.
fr: Indique le temps pendant lequel rester en mode découvrable avant de repasser en mode non-découvrable. La valeur est en secondes.

note: type: item
en: @code{always-pairable?} (default: @code{#f})
fr: @code{always-pairable?} (par défaut : @code{#f})

note: type: table
en: Always allow pairing even if there are no agents registered.
fr: Permet de toujours s’appairer même s'il n'y a aucun agent enregistré.

note: type: item
en: @code{pairable-timeout} (default: @code{0})
fr: @code{pairable-timeout} (par défaut : @code{0})

note: type: table
en: How long to stay in pairable mode before going back to non-discoverable. The value is in seconds.
fr: Indique combien de temps rester en mode d'appairage avant de repasser en mode non-découvrable. La valeur est en secondes.

note: type: item
en: @code{device-id} (default: @code{#f})
fr: @code{device-id} (par défaut : @code{#f})

note: type: table
en: Use vendor id source (assigner), vendor, product and version information for DID profile support. The values are separated by ":" and @var{assigner}, @var{VID}, @var{PID} and @var{version}.
fr: Utilise les informations de source de l'identifiant de fabriquant (assignateur), de fabriquant, de produit et de version pour la prise en charge du profil DID. Les valeurs sont séparées par « : » et @var{assignateur}, @var{fabriquant}, @var{produit} et @var{version}.

note: type: itemize
en: @code{#f} to disable it,
fr: @code{#f} pour le désactiver,

note: type: itemize
en: @code{"assigner:1234:5678:abcd"}, where @var{assigner} is either @code{usb} (default)  or @code{bluetooth}.
fr: @code{"assignateur:1234:5678:abcd"}, où @var{assignateur} est soit @code{usb} (par défaut) soit @code{bluetooth}.

note: type: item
en: @code{reverse-service-discovery?} (default: @code{#t})
fr: @code{reverse-service-discovery?} (par défaut : @code{#t})

note: type: table
en: Do reverse service discovery for previously unknown devices that connect to us. For BR/EDR this option is really only needed for qualification since the BITE tester doesn't like us doing reverse SDP for some test cases, for LE this disables the GATT client functionally so it can be used in system which can only operate as peripheral.
fr: Utilise la découverte de service inversée pour les périphériques précédemment inconnus qui se connectent. Pour BR/EDR cette option n'est vraiment requise que pour la qualification cate le testeur BITE n'aime pas la découverte inversée dans certains cas de tests, pour LE cela désactive la fonctionnalité cliente GATT donc elle peut être utilisée pour les systèmes qui n'opèrent que comme un périphérique.

note: type: item
en: @code{name-resolving?} (default: @code{#t})
fr: @code{name-resolving?} (par défaut : @code{#t})

note: type: table
en: Enable name resolving after inquiry. Set it to @code{#f} if you don't need remote devices name and want shorter discovery cycle.
fr: Active la résolution de nom après la requête. Indiquez @code{#f} si vous n'avez pas besoin des noms des périphériques distants et souhaitez avoir un cycle de découverte plus court.

note: type: item
en: @code{debug-keys?} (default: @code{#f})
fr: @code{debug-keys?} (par défaut : @code{#f})

note: type: table
en: Enable runtime persistency of debug link keys. Default is false which makes debug link keys valid only for the duration of the connection that they were created for.
fr: Active la persistance des clés de lien de débogage à l'exécution. La valeur par défaut est fausse et rend les clés de lien de débogage valides uniquement pour la durée de la connexion pour laquelle elles ont été créées.

note: type: item
en: @code{controller-mode} (default: @code{'dual})
fr: @code{controller-mode} (par défaut : @code{'dual})

note: type: table
en: Restricts all controllers to the specified transport. @code{'dual} means both BR/EDR and LE are enabled (if supported by the hardware).
fr: Restreint tous les contrôleurs à leur transport spécifié. @code{'dual} signifie que BR/EDR et LE sont tous deux activés (si cela est pris en charge par le matériel).

note: type: item
en: @code{multi-profile} (default: @code{'off})
fr: @code{multi-profile} (par défaut : @code{'off})

note: type: table
en: Enables Multi Profile Specification support. This allows to specify if system supports only Multiple Profiles Single Device (MPSD) configuration or both Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple Devices (MPMD) configurations.
fr: Active la prise en charge de la spécification multi-profil. Cela permet de spécifier si le système ne prend en charge que la configuration multi-profil mono-appareil (MPSD) ou à la fois la configuration multi-profil mono-appareil (MPSD) et multi-profil multi-appareil (MPMD).

note: type: item
en: @code{fast-connectable?} (default: @code{#f})
fr: @code{fast-connectable?} (par défaut : @code{#f})

note: type: table
en: Permanently enables the Fast Connectable setting for adapters that support it. When enabled other devices can connect faster to us, however the tradeoff is increased power consumptions. This feature will fully work only on kernel version 4.1 and newer.
fr: Active le paramètre Fast Connectable de manière permanente pour les adaptateurs qui le prennent en charge. Lorsqu'il est activé les autres appareils peuvent se connecter plus rapidement, cependant le compromis est l'augmentation de la consommation électrique. Ce paramètre ne fonctionnera correctement que sur les versions du noyau 4.1 et supérieur.

note: type: item
en: @code{privacy} (default: @code{'off})
fr: @code{privacy} (par défaut : @code{'off})

note: type: table
en: Default privacy settings.
fr: Paramètres de vie privée par défaut.

note: type: itemize
en: @code{'off}: Disable local privacy
fr: @code{'off} : désactive la vie privée locale

note: type: itemize
en: @code{'network/on}: A device will only accept advertising packets from peer devices that contain private addresses. It may not be compatible with some legacy devices since it requires the use of RPA(s) all the time
fr: @code{'network/on} : un appareil n'acceptera pas de paquets d'annonce d'appareils appairés qui contiennent des adresses privées. Cela peut ne pas être compatible avec certains anciens appareils car ils nécessitent l'utilisation continue de RPA

note: type: itemize
en: @code{'device}: A device in device privacy mode is only concerned about the privacy of the device and will accept advertising packets from peer devices that contain their Identity Address as well as ones that contain a private address, even if the peer device has distributed its IRK in the past
fr: @code{'device} : un appareil dans le mode de vie privée pour l'appareil ne se souci que de la vie privée de l'appareil et acceptera les paquets d'annonces d'appareils appairés qui contiennent leur adresse d'identité ainsi que ceux qui contiennent une adresse privée, même si l'appareil a distribué son IRK par le passé

note: type: table
en: and additionally, if @var{controller-mode} is set to @code{'dual}:
fr: et en plus, si @var{controller-mode} vaut @code{'dual} :

note: type: itemize
en: @code{'limited-network}: Apply Limited Discoverable Mode to advertising, which follows the same policy as to BR/EDR that publishes the identity address when discoverable, and Network Privacy Mode for scanning
fr: @code{'limited-network} : applique le mode de découverte limité aux annonces, qui suivent la même politique que BR/EDR qui publie l'adresse d'identité en mode découvrable, et le mode de vie privée réseau pour scanner

note: type: itemize
en: @code{'limited-device}: Apply Limited Discoverable Mode to advertising, which follows the same policy as to BR/EDR that publishes the identity address when discoverable, and Device Privacy Mode for scanning.
fr: @code{'limited-device} : applique le mode de découverte limitée aux annonces, qui suit la même politique que BR/EDR qui publie d'adresse d'identité en mode découvrable, et le mode de vie privé de l'appareil pour le scan.

note: type: item
en: @code{just-works-repairing} (default: @code{'never})
fr: @code{just-works-repairing} (par défaut : @code{'never})

note: type: table
en: Specify the policy to the JUST-WORKS repairing initiated by peer.
fr: Spécifie la politique de ré-appairage JUST-WORKS du pair.

note: type: table
en: Possible values:
fr: Les valeurs possibles sont :

note: type: item
en: @code{temporary-timeout} (default: @code{30})
fr: @code{temporary-timeout} (par défaut : @code{30})

note: type: table
en: How long to keep temporary devices around. The value is in seconds. @code{0} disables the timer completely.
fr: Le temps pendant lequel garder les appareils temporaires. La valeur est en secondes. @code{0} désactive complètement l'horloge.

note: type: item
en: @code{refresh-discovery?} (default: @code{#t})
fr: @code{refresh-discovery?} (par défaut : @code{#t})

note: type: table
en: Enables the device to issue an SDP request to update known services when profile is connected.
fr: Permet au périphérique d'envoyer une requête SDP pour mettre à jour les services connus quand le profil est connecté.

note: type: item
en: @code{experimental} (default: @code{#f})
fr: @code{experimental?} (par défaut : @code{#f})

note: type: table
en: Enables experimental features and interfaces, alternatively a list of UUIDs can be given.
fr: Active les fonctionnalités et les interfaces expérimentales, ou bien une liste d'UUID.

note: type: table
en: List of possible UUIDs:
fr: La liste des UUID possibles :

note: type: itemize
en: @code{d4992530-b9ec-469f-ab01-6c481c47da1c}: BlueZ Experimental Debug,
fr: @code{d4992530-b9ec-469f-ab01-6c481c47da1c} : le débogage expérimental de BlueZ,

note: type: itemize
en: @code{671b10b5-42c0-4696-9227-eb28d1b049d6}: BlueZ Experimental Simultaneous Central and Peripheral,
fr: @code{671b10b5-42c0-4696-9227-eb28d1b049d6} : simultanément central et périphérique expérimental de BlueZ,

note: type: itemize
en: @code{"15c0a148-c273-11ea-b3de-0242ac130004}: BlueZ Experimental LL privacy,
fr: @code{"15c0a148-c273-11ea-b3de-0242ac130004} : vie privée LL expérimentale de BlueZ,

note: type: itemize
en: @code{330859bc-7506-492d-9370-9a6f0614037f}: BlueZ Experimental Bluetooth Quality Report,
fr: @code{330859bc-7506-492d-9370-9a6f0614037f} : rapport de qualité Bluetooth expérimental de BlueZ,

note: type: itemize
en: @code{a6695ace-ee7f-4fb9-881a-5fac66c629af}: BlueZ Experimental Offload Codecs.
fr: @code{a6695ace-ee7f-4fb9-881a-5fac66c629af} : codecs de déchargement expérimentaux de BlueZ.

note: type: item
en: @code{remote-name-request-retry-delay} (default: @code{300})
fr: @code{remote-name-request-retry-delay} (par défaut : @code{300})

note: type: table
en: The duration to avoid retrying to resolve a peer's name, if the previous try failed.
fr: La durée pour éviter de réessayer de résoudre le nom d'un pair, si l'essai précédent a échoué.

note: type: item
en: @code{page-scan-type} (default: @code{#f})
fr: @code{page-scan-type} (par défaut : @code{#f})

note: type: table
en: BR/EDR Page scan activity type.
fr: type d'activité de scan de page BR/EDR.

note: type: item
en: @code{page-scan-interval} (default: @code{#f})
fr: @code{page-scan-interval} (par défaut : @code{#f})

note: type: table
en: BR/EDR Page scan activity interval.
fr: Intervalle d'activité de scan de page BR/EDR.

note: type: item
en: @code{page-scan-window} (default: @code{#f})
fr: @code{page-scan-window} (par défaut : @code{#f})

note: type: table
en: BR/EDR Page scan activity window.
fr: Fenêtre d'activité de scan de page BR/EDR.

note: type: item
en: @code{inquiry-scan-type} (default: @code{#f})
fr: @code{inquiry-scan-type} (par défaut : @code{#f})

note: type: table
en: BR/EDR Inquiry scan activity type.
fr: Type d'activité de scan de requête BR/EDR.

note: type: item
en: @code{inquiry-scan-interval} (default: @code{#f})
fr: @code{inquiry-scan-interval} (par défaut : @code{#f})

note: type: table
en: BR/EDR Inquiry scan activity interval.
fr: Intervalle d'activité de scan de requête BR/EDR.

note: type: item
en: @code{inquiry-scan-window} (default: @code{#f})
fr: @code{inquiry-scan-window} (par défaut : @code{#f})

note: type: table
en: BR/EDR Inquiry scan activity window.
fr: Fenêtre d'activité de scan de requête BR/EDR.

note: type: item
en: @code{link-supervision-timeout} (default: @code{#f})
fr: @code{link-supervision-timeout} (par défaut : @code{#f})

note: type: table
en: BR/EDR Link supervision timeout.
fr: Délai d'attente de supervision du lien BR/EDR.

note: type: item
en: @code{page-timeout} (default: @code{#f})
fr: @code{page-timeout} (par défaut : @code{#f})

note: type: table
en: BR/EDR Page timeout.
fr: Délai d'attente de page BR/EDR.

note: type: item
en: @code{min-sniff-interval} (default: @code{#f})
fr: @code{min-sniff-interval} (par défaut : @code{#f})

note: type: table
en: BR/EDR minimum sniff interval.
fr: Intervalle de sniff minimum BR/EDR.

note: type: item
en: @code{max-sniff-interval} (default: @code{#f})
fr: @code{max-sniff-interval} (par défaut : @code{#f})

note: type: table
en: BR/EDR maximum sniff interval.
fr: Intervalle de sniff maximum BR/EDR.

note: type: item
en: @code{min-advertisement-interval} (default: @code{#f})
fr: @code{min-advertisement-interval} (par défaut : @code{#f})

note: type: table
en: LE minimum advertisement interval (used for legacy advertisement only).
fr: Intervalle d'annonce minimum LE (utilisé pour les anciens types d'annonces uniquement).

note: type: item
en: @code{max-advertisement-interval} (default: @code{#f})
fr: @code{max-advertisement-interval} (par défaut : @code{#f})

note: type: table
en: LE maximum advertisement interval (used for legacy advertisement only).
fr: Intervalle d'annonce maximum LE (utilisé pour les anciens types d'annonce uniquement).

note: type: item
en: @code{multi-advertisement-rotation-interval} (default: @code{#f})
fr: @code{multi-advertisement-rotation-interval} (par défaut : @code{#f})

note: type: table
en: LE multiple advertisement rotation interval.
fr: Intervalle de rotation des multi-annonces LE.

note: type: item
en: @code{scan-interval-auto-connect} (default: @code{#f})
fr: @code{scan-interval-auto-connect} (par défaut : @code{#f})

note: type: table
en: LE scanning interval used for passive scanning supporting auto connect.
fr: Intervalle de scan LE utilisé pour le scan passif avec connexion automatique.

note: type: item
en: @code{scan-window-auto-connect} (default: @code{#f})
fr: @code{scan-window-auto-connect} (par défaut : @code{#f})

note: type: table
en: LE scanning window used for passive scanning supporting auto connect.
fr: Fenêtre de scan LE utilisé pour le scan passive avec prise en charge de la connexion automatique.

note: type: item
en: @code{scan-interval-suspend} (default: @code{#f})
fr: @code{scan-interval-suspend} (par défaut : @code{#f})

note: type: table
en: LE scanning interval used for active scanning supporting wake from suspend.
fr: Intervalle de scan LE utilisé pour le scan actif avec prise en charge du réveil.

note: type: item
en: @code{scan-window-suspend} (default: @code{#f})
fr: @code{scan-window-suspend} (par défaut : @code{#f})

note: type: table
en: LE scanning window used for active scanning supporting wake from suspend.
fr: Fenêtre de scan LE utilisée pour le scan actif avec prise en charge du réveil.

note: type: item
en: @code{scan-interval-discovery} (default: @code{#f})
fr: @code{scan-interval-discovery} (par défaut : @code{#f})

note: type: table
en: LE scanning interval used for active scanning supporting discovery.
fr: Intervalle de scan LE utilisé pour le scan actif avec prise en charge de la découverte.

note: type: item
en: @code{scan-window-discovery} (default: @code{#f})
fr: @code{scan-window-discovery} (par défaut : @code{#f})

note: type: table
en: LE scanning window used for active scanning supporting discovery.
fr: Fenêtre de scan LE utilisée pour le scan actif avec prise en charge de la découverte.

note: type: item
en: @code{scan-interval-adv-monitor} (default: @code{#f})
fr: @code{scan-interval-adv-monitor} (par défaut : @code{#f})

note: type: table
en: LE scanning interval used for passive scanning supporting the advertisement monitor APIs.
fr: Intervalle de scan LE utilisé pour le scan passif avec prise en charge des API de surveillance des annonces.

note: type: item
en: @code{scan-window-adv-monitor} (default: @code{#f})
fr: @code{scan-window-adv-monitor} (par défaut : @code{#f})

note: type: table
en: LE scanning window used for passive scanning supporting the advertisement monitor APIs.
fr: Fenêtre de scan LE utilisée pour le scan passif avec prise en charge des API de surveillance des annonces.

note: type: item
en: @code{scan-interval-connect} (default: @code{#f})
fr: @code{scan-interval-connect} (par défaut : @code{#f})

note: type: table
en: LE scanning interval used for connection establishment.
fr: Intervalle de scan LE utilisé pour l'établissement de connexion.

note: type: item
en: @code{scan-window-connect} (default: @code{#f})
fr: @code{scan-window-connect} (par défaut : @code{#f})

note: type: table
en: LE scanning window used for connection establishment.
fr: Fenêtre de scan LE utilisée pour l'établissement de connexion.

note: type: item
en: @code{min-connection-interval} (default: @code{#f})
fr: @code{min-connection-interval} (par défaut : @code{#f})

note: type: table
en: LE default minimum connection interval. This value is superseded by any specific value provided via the Load Connection Parameters interface.
fr: Intervalle minimal de connexion LE par défaut. Cette valeur est remplacée par toute valeur spécifique de l'interface de chargement des paramètres de connexion.

note: type: item
en: @code{max-connection-interval} (default: @code{#f})
fr: @code{max-connection-interval} (par défaut : @code{#f})

note: type: table
en: LE default maximum connection interval. This value is superseded by any specific value provided via the Load Connection Parameters interface.
fr: Intervalle maximal de connexion LE par défaut. Cette valeur est remplacée par toute valeur spécifique de l'interface de chargement des paramètres de connexion.

note: type: item
en: @code{connection-latency} (default: @code{#f})
fr: @code{connection-latency} (par défaut : @code{#f})

note: type: table
en: LE default connection latency. This value is superseded by any specific value provided via the Load Connection Parameters interface.
fr: Latence de connexion LE. Cette valeur est remplacée par toute valeur spécifique de l'interface de chargement des paramètres de connexion.

note: type: item
en: @code{connection-supervision-timeout} (default: @code{#f})
fr: @code{connection-supervision-timeout} (par défaut : @code{#f})

note: type: table
en: LE default connection supervision timeout. This value is superseded by any specific value provided via the Load Connection Parameters interface.
fr: Délai d'attente de supervision de la connexion LE par défaut. Cette valeur est remplacée par toute valeur spécifique de l'interface de chargement des paramètres de connexion.

note: type: item
en: @code{autoconnect-timeout} (default: @code{#f})
fr: @code{autoconnect-timeout} (par défaut : @code{#f})

note: type: table
en: LE default autoconnect timeout. This value is superseded by any specific value provided via the Load Connection Parameters interface.
fr: Délai d'attente de connexion automatique LE par défaut. Cette valeur est remplacée par toute valeur spécifique de l'interface de chargement des paramètres de connexion.

note: type: item
en: @code{adv-mon-allowlist-scan-duration} (default: @code{300})
fr: @code{adv-mon-allowlist-scan-duration} (par défaut : @code{300})

note: type: table
en: Allowlist scan duration during interleaving scan. Only used when scanning for ADV monitors. The units are msec.
fr: Durée du scan Allowlist pendant le scan entrelacé. Utilisé uniquement pour scanner des moniteurs ADV. L'unité est en msec.

note: type: item
en: @code{adv-mon-no-filter-scan-duration} (default: @code{500})
fr: @code{adv-mon-no-filter-scan-duration} (par défaut : @code{5})

note: type: table
en: No filter scan duration during interleaving scan. Only used when scanning for ADV monitors. The units are msec.
fr: Durée du scan sans filtre pendant le scan entrelacé. Utilisé uniquement pour scanner des moniteurs ADV. L'unité est en msec.

note: type: item
en: @code{enable-adv-mon-interleave-scan?} (default: @code{#t})
fr: @code{enable-adv-mon-interleave-scan?} (par défaut : @code{#t})

note: type: table
en: Enable/Disable Advertisement Monitor interleave scan for power saving.
fr: Active ou désactive le scan entrelacé des moniteurs d'annonce pour la batterie.

note: type: item
en: @code{cache} (default: @code{'always})
fr: @code{cache} (par défaut : @code{'always})

note: type: table
en: GATT attribute cache.
fr: Cache des attributs GATT.

note: type: itemize
en: @code{'always}: Always cache attributes even for devices not paired, this is recommended as it is best for interoperability, with more consistent reconnection times and enables proper tracking of notifications for all devices
fr: @code{'always} : toujours mettre en cache les attributs même pour les périphériques non appairés, c'est recommandé car l'option est la plus adaptée pour l'interopérabilité, avec des temps de reconnexions plus constants, et cela active le suivi correct des notifications de tous les appareils

note: type: itemize
en: @code{'yes}: Only cache attributes of paired devices
fr: @code{'yes} : ne met en cache que les attributs des périphériques appairés

note: type: itemize
en: @code{'no}: Never cache attributes.
fr: @code{'no} : ne met aucun attribut en cache.

note: type: item
en: @code{key-size} (default: @code{0})
fr: @code{key-size} (par défaut : @code{0})

note: type: table
en: Minimum required Encryption Key Size for accessing secured characteristics.
fr: Minimum requis pour la taille de clé de chiffrement pour accéder aux caractéristiques sécurisées.

note: type: itemize
en: @code{0}: Don't care
fr: @code{0} : on s'en fiche

note: type: item
en: @code{exchange-mtu} (default: @code{517})
fr: @code{exchange-mtu} (par défaut : @code{517})

note: type: table
en: Exchange MTU size. Possible values are:
fr: Taille de MTU pour les échanges. Les valeurs possibles sont :

note: type: item
en: @code{att-channels} (default: @code{3})
fr: @code{att-channels} (par défaut : @code{3})

note: type: table
en: Number of ATT channels. Possible values are:
fr: Nombre de canaux ATT. Les valeurs possibles sont :

note: type: itemize
en: @code{1}: Disables EATT
fr: @code{1} : désactive EATT

note: type: item
en: @code{session-mode} (default: @code{'basic})
fr: @code{session-mode} (par défaut : @code{'basic})

note: type: table
en: AVDTP L2CAP signalling channel mode.
fr: Mode de canal AVDTP L2CAP.

note: type: itemize
en: @code{'basic}: Use L2CAP basic mode
fr: @code{'basic} : utiliser le mode de base L2CAP

note: type: itemize
en: @code{'ertm}: Use L2CAP enhanced retransmission mode.
fr: @code{'ertm} : utiliser le mode de retransmission amélioré L2CAP.

note: type: item
en: @code{stream-mode} (default: @code{'basic})
fr: @code{stream-mode} (par défaut : @code{'basic})

note: type: table
en: AVDTP L2CAP transport channel mode.
fr: Mode de canal de transport AVDTP L2CAP.

note: type: itemize
en: @code{'streaming}: Use L2CAP streaming mode.
fr: @code{'streaming} : utiliser le mode de flux L2CAP.

note: type: item
en: @code{reconnect-uuids} (default: @code{'()})
fr: @code{reconnect-uuids} (par défaut : @code{'()})

note: type: table
en: The ReconnectUUIDs defines the set of remote services that should try to be reconnected to in case of a link loss (link supervision timeout). The policy plugin should contain a sane set of values by default, but this list can be overridden here. By setting the list to empty the reconnection feature gets disabled.
fr: ReconnectUUIDs défini l'ensemble des services distants auxquels on devrait essayer de se reconnecter en cas de perte de lien (délai d'attente dépassés sur la supervision du lien). Le greffon de politique devrait contenir un ensemble de valeurs par défaut correct, mais cette liste peut être modifiée ici. En indiquant la liste vide, la fonctionnalité de reconnexion est désactivée.

note: type: item
en: @code{reconnect-attempts} (default: @code{7})
fr: @code{reconnect-attempts} (par défaut : @code{7})

note: type: table
en: Defines the number of attempts to reconnect after a link lost. Setting the value to 0 disables reconnecting feature.
fr: Défini le nombre de tentatives de reconnexion après la perte d'un lien. La valeur 0 désactive la fonctionnalité de reconnexion.

note: type: item
en: @code{reconnect-intervals} (default: @code{'(1 2 4 8 16 32 64)})
fr: @code{reconnect-intervals} (par défaut : @code{'(1 2 4 8 16 32 64)})

note: type: table
en: Defines a list of intervals in seconds to use in between attempts. If the number of attempts defined in @var{reconnect-attempts} is bigger than the list of intervals the last interval is repeated until the last attempt.
fr: Défini une liste d'intervalles en secondes à utiliser entre les tentatives. Si le nombre de tentatives défini dans @var{reconnect-attempts} est plus grand que la liste d'intervalles, le dernier intervalle est répété jusqu'à la dernière tentative.

note: type: item
en: @code{auto-enable?} (default: @code{#f})
fr: @code{auto-enable?} (par défaut : @code{#f})

note: type: table
en: Defines option to enable all controllers when they are found. This includes adapters present on start as well as adapters that are plugged in later on.
fr: Défini l'option pour activer tous les contrôleurs quand ils sont trouvés. Cela comprend les adaptateurs présents au démarrage ainsi que les adaptateurs branchés plus tard.

note: type: item
en: @code{resume-delay} (default: @code{2})
fr: @code{resume-delay} (par défaut : @code{2})

note: type: table
en: Audio devices that were disconnected due to suspend will be reconnected on resume. @var{resume-delay} determines the delay between when the controller resumes from suspend and a connection attempt is made. A longer delay is better for better co-existence with Wi-Fi. The value is in seconds.
fr: Les périphériques audio qui ont été déconnectés à cause d'une hibernation seront reconnectés au redémarrage. @var{resume-delay} détermine le délai entre le retour du contrôleur de veille et la tentative de connexion. Un délai plus long est préférable pour une meilleure coexistence avec le Wi-Fi. La valeur est en secondes.

note: type: item
en: @code{rssi-sampling-period} (default: @code{#xFF})
fr: @code{rssi-sampling-period} (par défaut : @code{#xFF})

note: type: table
en: Default RSSI Sampling Period. This is used when a client registers an advertisement monitor and leaves the RSSISamplingPeriod unset.
fr: Période d’échantillonnage RSSI par défaut. C'est utilisé quand un client enregistre un moniteur d'annonce et laisse RSSISamplingPeriod sans valeur.

note: type: itemize
en: @code{#x0}: Report all advertisements
fr: @code{#x0} : rapporte toutes les annonces

note: type: itemize
en: @code{N = #xXX}: Report advertisements every N x 100 msec (range: #x01 to #xFE)
fr: @code{N = #xXX} : rapporte les annonces toutes les N × 100 msec (de #x01 à #xFE)

note: type: itemize
en: @code{#xFF}: Report only one advertisement per device during monitoring period.
fr: @code{#xFF} : rapporte seulement une annonce par périphérique pendant la période de monitoring.

note: type: defvr
en: {Scheme Variable} gnome-keyring-service-type
fr: {Variable Scheme} gnome-keyring-service-type

note: type: defvr
en: This is the type of the service that adds the @uref{https://wiki.gnome.org/Projects/GnomeKeyring, GNOME Keyring}.  Its value is a @code{gnome-keyring-configuration} object (see below).
fr: C'est le type de service qui ajoute @uref{https://wiki.gnome.org/Projects/GnomeKeyring, GNOME Keyring}.  Sa valeur est un objet @code{gnome-keyring-configuration} (voir plus bas).

note: type: defvr
en: This service adds the @code{gnome-keyring} package to the system profile and extends PAM with entries using @code{pam_gnome_keyring.so}, unlocking a user's login keyring when they log in or setting its password with passwd.
fr: Ce service ajoute le paquet @code{gnome-keyring} au profil du système et étend PAM avec des entrées avec @code{pam_gnome_keyring.so}, permettant de déverrouiller un porteclé utilisateur à la connexion ou de spécifier son mot de passe avec passwd.

note: type: deftp
en: {Data Type} gnome-keyring-configuration
fr: {Type de données} gnome-keyring-configuration

note: type: deftp
en: Configuration record for the GNOME Keyring service.
fr: Enregistrement de la configuration du service GNOME Keyring.

note: type: item
en: @code{keyring} (default: @code{gnome-keyring})
fr: @code{keyring} (par défaut : @code{gnome-keyring})

note: type: table
en: The GNOME keyring package to use.
fr: Le paquet GNOME keyring à utiliser.

note: type: table
en: A list of @code{(@var{service} . @var{kind})} pairs denoting PAM services to extend, where @var{service} is the name of an existing service to extend and @var{kind} is one of @code{login} or @code{passwd}.
fr: Une liste de paires @code{(@var{service} . @var{type})} dénotant des services PAM à étendre, où @var{service} est le nom d'un service existant à étendre et @var{type} est @code{login} ou @code{passwd}.

note: type: table
en: If @code{login} is given, it adds an optional @code{pam_gnome_keyring.so} to the auth block without arguments and to the session block with @code{auto_start}.  If @code{passwd} is given, it adds an optional @code{pam_gnome_keyring.so} to the password block without arguments.
fr: S'il s'agit de @code{login}, cela ajoute un @code{pam_gnome_keyring.so} facultatif au bloc d'authentification sans argument et au bloc de session avec @code{auto_start}.  S'il s'agit de @code{passwd}, cela ajoute un @code{pam_gnome_keyring.so} facultatif au bloc de mot de passe sans argument.

note: type: table
en: By default, this field contains ``gdm-password'' with the value @code{login} and ``passwd'' is with the value @code{passwd}.
fr: Par défaut, ce champ contient « gdm-password » avec la valeur @code{login} et « passwd » avec la valeur @code{passwd}.

note: type: defvr
en: {Scheme Variable} seatd-service-type
fr: {Variable Scheme} seatd-service-type

note: type: defvr
en: @uref{https://sr.ht/~kennylevinsen/seatd/, seatd} is a minimal seat management daemon.
fr: @uref{https://sr.ht/~kennylevinsen/seatd/, seatd} est un démon de gestion de siège.

note: type: defvr
en: Seat management takes care of mediating access to shared devices (graphics, input), without requiring the applications needing access to be root.
fr: La gestion des sièges prend en charge la médiation de l'accès aux périphériques partagés (d'affichage, de saisie), sans nécessiter que les applications n'aient besoin d'être root.

note: type: lisp
en: (append
      (list
       ;; make sure seatd is running
       (service seatd-service-type))
fr: (append
      (list
       ;; s'assure que seatd est lancé
       (service seatd-service-type))

note: type: lisp
en:   ;; normally one would want %base-services
      %base-services)
fr:   ;; normalement vous avez besoin de %base-services
      %base-services)

note: type: defvr
en: @code{seatd} operates over a UNIX domain socket, with @code{libseat} providing the client side of the protocol.  Applications that acquire access to the shared resources via @code{seatd} (e.g. @code{sway})  need to be able to talk to this socket.  This can be achieved by adding the user they run under to the group owning @code{seatd}'s socket (usually ``seat''), like so:
fr: @code{seatd} agit sur un socket domaine UNIX, et @code{libseat} fournit le côté client du protocole. Les applications qui ont accès aux ressources partagées par @code{seatd} (p.@: ex.@: @code{sway}) doivent pouvoir parler sur ce socket. Vous pouvez y arriver en ajoutant l'utilisateur sous lequel ils tournent au groupe auquel appartient le socket de @code{seatd} (habituellement « seat »), comme ceci :

note: type: lisp
en: (user-account
      (name "alice")
      (group "users")
      (supplementary-groups '("wheel"   ; allow use of sudo, etc.
                              "seat"    ; seat management
                              "audio"   ; sound card
                              "video"   ; video devices such as webcams
                              "cdrom")) ; the good ol' CD-ROM
      (comment "Bob's sister"))
fr: (user-account
      (name "alice")
      (group "users")
      (supplementary-groups '("wheel"   ; permet d'utiliser sudo, etc.
                              "seat"    ; gestion des sièges
                              "audio"   ; carte son
                              "video"   ; périphériques réseaux comme les webcams
                              "cdrom")) ; le bon vieux CD-ROM
      (comment "Bob's sister"))

note: type: defvr
en: Depending on your setup, you will have to not only add regular users, but also system users to this group.  For instance, some greetd greeters require graphics and therefore also need to negotiate with seatd.
fr: En fonction de votre configuration, vous devrez non seulement ajouter des utilisateur normaux, mais aussi des utilisateurs systèmes à ce groupe. Par exemple, certains écrans d'accueil greetd nécessitent les graphismes et doivent donc négocier avec seatd.

note: type: deftp
en: {Data Type} seatd-configuration
fr: {Type de données} seatd-configuration

note: type: deftp
en: Configuration record for the seatd daemon service.
fr: Enregistrement de la configuration du service du démon seatd.

note: type: item
en: @code{seatd} (default: @code{seatd})
fr: @code{seatd} (par défaut : @code{seatd})

note: type: table
en: The seatd package to use.
fr: Le paquet seatd à utiliser.

note: type: item
en: @code{group} (default: @samp{"seat"})
fr: @code{group} (par défaut : @samp{"seat"})

note: type: table
en: Group to own the seatd socket.
fr: Groupe qui possède le socket seatd.

note: type: item
en: @code{socket} (default: @samp{"/run/seatd.sock"})
fr: @code{socket} (par défaut : @samp{"/run/seatd.sock"})

note: type: table
en: Where to create the seatd socket.
fr: Indique où créer le socket seatd.

note: type: item
en: @code{logfile} (default: @samp{"/var/log/seatd.log"})
fr: @code{logfile} (par défaut : @samp{"/var/log/seatd.log"})

note: type: table
en: Log file to write to.
fr: Fichier journal où écrire.

note: type: item
en: @code{loglevel} (default: @samp{"error"})
fr: @code{loglevel} (par défaut : @samp{"error"})

note: type: table
en: Log level to output logs. Possible values: @samp{"silent"}, @samp{"error"}, @samp{"info"} and @samp{"debug"}.
fr: Niveau de journalisation pour l'affichage des journaux. Les valeurs possibles sont : @samp{"silent"}, @samp{"error"}, @samp{"info"} et @samp{"debug"}.

note: type: cindex
en: sound support
fr: support du son

note: type: cindex
en: PulseAudio, sound support
fr: PulseAudio, support du son

note: type: Plain text
en: The @code{(gnu services sound)} module provides a service to configure the Advanced Linux Sound Architecture (ALSA) system, which makes PulseAudio the preferred ALSA output driver.
fr: Le module @code{(gnu services sound)} fournit un service pour configurer le système ALSA (architecture son linux avancée), qui fait de PulseAudio le pilote de sortie préféré d'ALSA.

note: type: deffn
en: {Scheme Variable} alsa-service-type
fr: {Variable Scheme} alsa-service-type

note: type: deffn
en: This is the type for the @uref{https://alsa-project.org/, Advanced Linux Sound Architecture} (ALSA) system, which generates the @file{/etc/asound.conf} configuration file.  The value for this type is a @command{alsa-configuration} record as in this example:
fr: C'est le type pour le système @uref{https://alsa-project.org/, Advanced Linux Sound Architecture} (ALSA), qui génère le fichier de configuration @file{/etc/asound.conf}.  La valeur de ce type est un enregistrement @command{alsa-configuration} comme dans cet exemple :

note: type: deffn
en: See below for details about @code{alsa-configuration}.
fr: Voir plus bas pour des détails sur @code{alsa-configuration}.

note: type: deftp
en: {Data Type} alsa-configuration
fr: {Type de données} alsa-configuration

note: type: deftp
en: Data type representing the configuration for @code{alsa-service}.
fr: Type de données représentant la configuration pour @code{alsa-service}.

note: type: item
en: @code{alsa-plugins} (default: @var{alsa-plugins})
fr: @code{alsa-plugins} (par défaut : @var{alsa-plugins})

note: type: table
en: @code{alsa-plugins} package to use.
fr: Le paquet @code{alsa-plugins} à utiliser.

note: type: item
en: @code{pulseaudio?} (default: @var{#t})
fr: @code{pulseaudio?} (par défaut : @var{#t})

note: type: table
en: Whether ALSA applications should transparently be made to use the @uref{https://www.pulseaudio.org/, PulseAudio} sound server.
fr: Indique si les applications ALSA devraient utiliser le serveur de son @uref{https://www.pulseaudio.org/, PulseAudio} de manière transparente pour elles.

note: type: table
en: Using PulseAudio allows you to run several sound-producing applications at the same time and to individual control them @i{via} @command{pavucontrol}, among other things.
fr: Utiliser PulseAudio vous permet dans lancer plusieurs applications qui produisent du son en même temps et de les contrôler individuellement via @command{pavucontrol} entre autres choses.

note: type: item
en: @code{extra-options} (default: @var{""})
fr: @code{extra-options} (par défaut : @var{""})

note: type: table
en: String to append to the @file{/etc/asound.conf} file.
fr: Chaîne à ajouter au fichier @file{/etc/asound.conf}.

note: type: Plain text
en: Individual users who want to override the system configuration of ALSA can do it with the @file{~/.asoundrc} file:
fr: Les utilisateurs individuels qui veulent modifier la configuration système d'ALSA peuvent le faire avec le fichier @file{~/.asoundrc} :

note: type: example
en: # In guix, we have to specify the absolute path for plugins.
    pcm_type.jack @{
      lib "/home/alice/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so"
    @}
fr: # Dans guix, il faut spécifier le chemin absolu des greffons.
    pcm_type.jack @{
      lib "/home/alice/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so"
    @}

note: type: example
en: # Routing ALSA to jack:
    # <http://jackaudio.org/faq/routing_alsa.html>.
    pcm.rawjack @{
      type jack
      playback_ports @{
        0 system:playback_1
        1 system:playback_2
      @}
fr: # Faire passer ALSA par Jack :
    # <http://jackaudio.org/faq/routing_alsa.html>.
    pcm.rawjack @{
      type jack
      playback_ports @{
        0 system:playback_1
        1 system:playback_2
      @}

note: type: Plain text
en: See @uref{https://www.alsa-project.org/main/index.php/Asoundrc} for the details.
fr: Voir @uref{https://www.alsa-project.org/main/index.php/Asoundrc} pour les détails.

note: type: deffn
en: {Scheme Variable} pulseaudio-service-type
fr: {Variable Scheme} pulseaudio-service-type

note: type: deffn
en: This is the type for the @uref{https://www.pulseaudio.org/, PulseAudio} sound server.  It exists to allow system overrides of the default settings via @code{pulseaudio-configuration}, see below.
fr: C'est le type de service pour le serveur de son @uref{https://www.pulseaudio.org/, PulseAudio}.  Sa valeur est un @code{pulseaudio-configuration} (voir plus bas).

note: type: quotation
en: This service overrides per-user configuration files.  If you want PulseAudio to honor configuration files in @file{~/.config/pulse} you have to unset the environment variables @env{PULSE_CONFIG} and @env{PULSE_CLIENTCONFIG} in your @file{~/.bash_profile}.
fr: Ce service prend le pas sur les fichiers de configuration utilisateurs.  Si vous voulez que PulseAudio prenne en compte les fichiers de configuration de @file{~/.config/pulse} vous devez réinitialiser les variables d'environnement @env{PULSE_CONFIG} et @env{PULSE_CLIENTCONFIG} dans votre @file{~/.bash_profile}.

note: type: quotation
en: This service on its own does not ensure, that the @code{pulseaudio} package exists on your machine.  It merely adds configuration files for it, as detailed below.  In the (admittedly unlikely) case, that you find yourself without a @code{pulseaudio} package, consider enabling it through the @code{alsa-service-type} above.
fr: Ce service seul ne s'assure pas que le paquet @code{pulseaudio} existe sur votre machine.  Il ajoute seulement des fichiers de configuration, comme décrit plus bas.  Dans le cas (vraiment improbable) où vous n'auriez pas de paquet @code{pulseaudio}, vous pouvez l'activer à travers le service @code{alsa-service-type} plus haut.

note: type: deftp
en: {Data Type} pulseaudio-configuration
fr: {Type de données} pulseaudio-configuration

note: type: deftp
en: Data type representing the configuration for @code{pulseaudio-service}.
fr: Type de données représentant la configuration pour @code{pulseaudio-service}.

note: type: item
en: @code{client-conf} (default: @code{'()})
fr: @code{client-conf} (par défaut : @code{'()})

note: type: table
en: List of settings to set in @file{client.conf}.  Accepts a list of strings or symbol-value pairs.  A string will be inserted as-is with a newline added.  A pair will be formatted as ``key = value'', again with a newline added.
fr: Liste les paramètres à indiquer dans @file{client.conf}.  Accepte une liste de chaines ou de paires symboles-valeurs.  Une chaine sera insérée telle quelle avec un saut de ligne.  Une paire sera formatée en « clé = valeur » avec un saut de ligne.

note: type: item
en: @code{daemon-conf} (default: @code{'((flat-volumes . no))})
fr: @code{daemon-conf} (par défaut : @code{'((flat-volumes . no))})

note: type: table
en: List of settings to set in @file{daemon.conf}, formatted just like @var{client-conf}.
fr: Liste les paramètres à indiquer dans @file{daemon.conf}, formaté comme @var{client-conf}.

note: type: item
en: @code{script-file} (default: @code{(file-append pulseaudio "/etc/pulse/default.pa")})
fr: @code{script-file} (par défaut : @code{(file-append pulseaudio "/etc/pulse/default.pa")})

note: type: table
en: Script file to use as @file{default.pa}.  In case the @code{extra-script-files} field below is used, an @code{.include} directive pointing to @file{/etc/pulse/default.pa.d} is appended to the provided script.
fr: Le fichier de script à utiliser en tant que @file{default.pa}. Si le champ @code{extra-script-files} ci-dessous est utilisé, une directive @code{.include} pointant vers @file{/etc/pulse/default.pa.d} est ajoutée au script fourni.

note: type: item
en: @code{extra-script-files} (default: @code{'()})
fr: @code{extra-script-files} (par défaut : @code{'()})

note: type: table
en: A list of file-like objects defining extra PulseAudio scripts to run at the initialization of the @command{pulseaudio} daemon, after the main @code{script-file}.  The scripts are deployed to the @file{/etc/pulse/default.pa.d} directory; they should have the @samp{.pa} file name extension.  For a reference of the available commands, refer to @command{man pulse-cli-syntax}.
fr: Une liste d'objet simili-fichiers qui définissent des scripts PulseAudio supplémentaires à lancer à l'initialisation du démon @command{pulseaudio}, après le @code{script-file} principal. Les scripts sont déployés dans le répertoire @file{/etc/pulse/default.pa.d}. Ils devraient avoir l'extension de nom de fichier @samp{.pa}. Pour une référence sur les commandes disponibles, consultez @command{man pulse-cli-syntax}.

note: type: item
en: @code{system-script-file} (default: @code{(file-append pulseaudio "/etc/pulse/system.pa")})
fr: @code{system-script-file} (par défaut : @code{(file-append pulseaudio "/etc/pulse/system.pa")})

note: type: table
en: Script file to use as @file{system.pa}.
fr: Fichier de script à utiliser comme @file{system.pa}.

note: type: deftp
en: The example below sets the default PulseAudio card profile, the default sink and the default source to use for a old SoundBlaster Audigy sound card:
fr: L'exemple ci-dessous initialise le profil de carte PulseAudio par défaut, le drain par défaut et la source par défaut à utiliser pour une ancienne carte son SoundBlaster Audigy :

note: type: deftp
en: Note that @code{pulseaudio-service-type} is part of @code{%desktop-services}; if your operating system declaration was derived from one of the desktop templates, you'll want to adjust the above example to modify the existing @code{pulseaudio-service-type} via @code{modify-services} (@pxref{Service Reference, @code{modify-services}}), instead of defining a new one.
fr: Remarquez que @code{pulseaudio-service-type} fait partie de @code{%desktop-services}. Si votre déclaration de système d'exploitation dérive d'un des modèles pour ordinateur de bureau, vous devrez ajuster l'exemple ci-dessus pour modifier le service @code{pulseaudio-service-type} existant avec @code{modify-services} (@pxref{Service Reference, @code{modify-services}}), au lieu de le définir à nouveau.

note: type: deffn
en: {Scheme Variable} ladspa-service-type
fr: {Variable Scheme} ladspa-service-type

note: type: deffn
en: This service sets the @var{LADSPA_PATH} variable, so that programs, which respect it, e.g. PulseAudio, can load LADSPA plugins.
fr: Ce service initialise la variable @var{LADSPA_PATH} pour que les programmes qui la respectent, p.@: ex.@: PulseAudio, puissent charger les greffons LADSPA.

note: type: deffn
en: The following example will setup the service to enable modules from the @code{swh-plugins} package:
fr: L'exemple suivant met en place le service pour activer les modules du paquet @code{swh-plugins} :

note: type: deffn
en: See @uref{http://plugin.org.uk/ladspa-swh/docs/ladspa-swh.html} for the details.
fr: Voir @uref{http://plugin.org.uk/ladspa-swh/docs/ladspa-swh.html} pour les détails.

note: type: Plain text
en: The @code{(gnu services databases)} module provides the following services.
fr: Le module @code{(gnu services databases)} fournit les services suivants.

note: type: Plain text
en: The following example describes a PostgreSQL service with the default configuration.
fr: L'exemple suivant décrit un service PostgreSQL avec la configuration par défaut.

note: type: Plain text
en: If the services fails to start, it may be due to an incompatible cluster already present in @var{data-directory}.  Adjust it (or, if you don't need the cluster anymore, delete @var{data-directory}), then restart the service.
fr: Si les services ne démarrent pas, cela peut être dû à une grappe incompatible déjà présente dans @var{data-directory}.  Ajustez-la (ou, si vous n'avez plus besoin de la grappe, supprimez @var{data-directory}) puis redémarrez le service.

note: type: Plain text
en: Peer authentication is used by default and the @code{postgres} user account has no shell, which prevents the direct execution of @code{psql} commands as this user.  To use @code{psql}, you can temporarily log in as @code{postgres} using a shell, create a PostgreSQL superuser with the same name as one of the system users and then create the associated database.
fr: L'authentification des pairs est utilisé par défaut et le compte utilisateur @code{postgres} n'a pas de shell, ce qui évite l'exécution directe de @code{psql} en tant que cet utilisateur.  Pour utiliser @code{psql}, vous pouvez vous authentifier temporairement en tant que @code{postgres} avec un shell, créer un superutilisateur PostgreSQL avec le même nom qu'un des utilisateurs du système et créer la base de données associée.

note: type: example
en: sudo -u postgres -s /bin/sh
    createuser --interactive
    createdb $MY_USER_LOGIN      # Replace appropriately.
fr: sudo -u postgres -s /bin/sh
    createuser --interactive
    createdb $MY_USER_LOGIN      # Remplacez comme vous voulez.

note: type: deftp
en: {Data Type} postgresql-configuration
fr: {Type de données} postgresql-configuration

note: type: deftp
en: Data type representing the configuration for the @code{postgresql-service-type}.
fr: Type de données représentant la configuration de @code{postgresql-service-type}.

note: type: table
en: PostgreSQL package to use for the service.
fr: Le paquet PostgreSQL à utiliser pour ce service.

note: type: item
en: @code{port} (default: @code{5432})
fr: @code{port} (par défaut : @code{5432})

note: type: table
en: Port on which PostgreSQL should listen.
fr: Port sur lequel PostgreSQL écoutera.

note: type: table
en: Locale to use as the default when creating the database cluster.
fr: Paramètre linguistique à utiliser par défaut lors de la création de la grappe de bases de données.

note: type: item
en: @code{config-file} (default: @code{(postgresql-config-file)})
fr: @code{config-file} (par défaut : @code{(postgresql-config-file)})

note: type: table
en: The configuration file to use when running PostgreSQL@.  The default behaviour uses the postgresql-config-file record with the default values for the fields.
fr: Le fichier de configuration à utiliser pour lancer PostgreSQL@.  Le comportement par défaut est d'utiliser l'enregistrement postgresql-config-file avec les valeurs par défaut pour les champs.

note: type: table
en: The directory where @command{pg_ctl} output will be written in a file named @code{"pg_ctl.log"}.  This file can be useful to debug PostgreSQL configuration errors for instance.
fr: Le répertoire où la sortie de @command{pg_ctl} sera écrite, dans un fichier nommé @code{"pg_ctl.log"}. Ce fichier peut être utile pour déboguer les erreurs de configuration de PostgreSQL par exemple.

note: type: item
en: @code{data-directory} (default: @code{"/var/lib/postgresql/data"})
fr: @code{data-directory} (par défaut : @code{"/var/lib/postgresql/data"})

note: type: table
en: Directory in which to store the data.
fr: Répertoire dans lequel stocker les données.

note: type: item
en: @code{extension-packages} (default: @code{'()})
fr: @code{extension-packages} (par défaut : @code{'()})

note: type: table
en: Additional extensions are loaded from packages listed in @var{extension-packages}.  Extensions are available at runtime.  For instance, to create a geographic database using the @code{postgis} extension, a user can configure the postgresql-service as in this example:
fr: Des extensions supplémentaires peuvent être chargées à partir de paquets listés dans @var{extension-packages}.  Les extensions sont disponibles à l'exécution.  Par exemple, pour créer une base de données géographique avec l'extension @code{postgis}, on peut configurer postgresql-service de cette manière :

note: type: lisp
en: (operating-system
      ...
      ;; postgresql is required to run `psql' but postgis is not required for
      ;; proper operation.
      (packages (cons* postgresql %base-packages))
      (services
        (cons*
          (service postgresql-service-type
                   (postgresql-configuration
                    (postgresql postgresql-10)
                    (extension-packages (list postgis))))
          %base-services)))
fr: (operating-system
      ...
      ;; postgresql est requis pour lancer `psql' mais postgis n'est pas requis pour son
      ;; bon fonctionnement.
      (packages (cons* postgresql %base-packages))
      (services
        (cons*
          (service postgresql-service-type
                   (postgresql-configuration
                    (postgresql postgresql-10)
                    (extension-packages (list postgis))))
          %base-services)))

note: type: table
en: Then the extension becomes visible and you can initialise an empty geographic database in this way:
fr: Ensuite l'extension devient visible et vous pouvez initialiser une base de données géographique de cette manière :

note: type: table
en: There is no need to add this field for contrib extensions such as hstore or dblink as they are already loadable by postgresql.  This field is only required to add extensions provided by other packages.
fr: Vous n'avez pas besoin d'ajouter ce champ pour les extensions « contrib » comme hstore ou dblink comme elles sont déjà exploitables par postgresql.  Ce champ n'est requis que pour ajouter des extensions fournies par d'autres paquets.

note: type: deftp
en: {Data Type} postgresql-config-file
fr: {Type de données} postgresql-config-file

note: type: deftp
en: Data type representing the PostgreSQL configuration file.  As shown in the following example, this can be used to customize the configuration of PostgreSQL@.  Note that you can use any G-expression or filename in place of this record, if you already have a configuration file you'd like to use for example.
fr: Type de données représentant le fichier de configuration de PostgreSQL.  Comme montré dans l'exemple suivant, on peut l'utiliser pour personnaliser la configuration de PostgreSQL@.  Remarquez que vous pouvez utiliser n'importe quelle G-expression ou nom de fichier à la place de cet enregistrement, si par exemple vous avez déjà un fichier de configuration que vous voulez utiliser.

note: type: item
en: @code{log-destination} (default: @code{"syslog"})
fr: @code{log-destination} (par défaut : @code{"syslog"})

note: type: table
en: The logging method to use for PostgreSQL@.  Multiple values are accepted, separated by commas.
fr: La méthode de journalisation de PostgreSQL@.  Plusieurs valeurs sont possibles, séparées par des virgules.

note: type: item
en: @code{hba-file} (default: @code{%default-postgres-hba})
fr: @code{hba-file} (par défaut : @code{%default-postgres-hba})

note: type: table
en: Filename or G-expression for the host-based authentication configuration.
fr: Nom de fichier ou G-expression pour la configuration de l'authentification par hôte.

note: type: item
en: @code{ident-file} (default: @code{%default-postgres-ident})
fr: @code{ident-file} (par défaut : @code{%default-postgres-ident})

note: type: table
en: Filename or G-expression for the user name mapping configuration.
fr: Nom de fichier ou G-expression pour la configuration de la correspondance de noms d'utilisateurs.

note: type: item
en: @code{socket-directory} (default: @code{"/var/run/postgresql"})
fr: @code{socket-directory} (par défaut : @code{"/var/run/postgresql"})

note: type: table
en: Specifies the directory of the Unix-domain socket(s) on which PostgreSQL is to listen for connections from client applications. If set to @code{""} PostgreSQL does not listen on any Unix-domain sockets, in which case only TCP/IP sockets can be used to connect to the server.
fr: Spécifie le répertoire des sockets Unix-domain sur lesquels PostgreSQL écoutera les connexion d'applications clientes. Si la valeur est @code{""}, PostgreSQL n'écoute sur aucun socket Unix-domain, auquel cas seuls les socket TCP/IP permettent de se connecter au serveur.

note: type: table
en: By default, the @code{#false} value means the PostgreSQL default value will be used, which is currently @samp{/tmp}.
fr: Par défaut, la valeur @code{#false} signifie que la valeur par défaut de PostgreSQL sera utilisée, actuellement @samp{/tmp}.

note: type: table
en: List of additional keys and values to include in the PostgreSQL config file.  Each entry in the list should be a list where the first element is the key, and the remaining elements are the values.
fr: Liste de clés et valeurs supplémentaires à inclure dans le fichier de configuration de PostgreSQL.  Chaque entrée dans la liste devrait être une liste où le premier élément est la clé, et les autres éléments sont les valeurs.

note: type: table
en: The values can be numbers, booleans or strings and will be mapped to PostgreSQL parameters types @code{Boolean}, @code{String}, @code{Numeric}, @code{Numeric with Unit} and @code{Enumerated} described @uref{https://www.postgresql.org/docs/current/config-setting.html, here}.
fr: Les valeurs peuvent être des nombres, des booléens ou des chaînes et seront transformées en types de paramètres de PostgreSQL @code{Boolean}, @code{String}, @code{Numeric}, @code{Numeric with Unit} et @code{Enumerated} décrits @uref{https://www.postgresql.org/docs/current/config-setting.html, ici}.

note: type: deffn
en: {Scheme Variable} postgresql-role-service-type
fr: {Variable Scheme} postgresql-role-service-type

note: type: deffn
en: This service allows to create PostgreSQL roles and databases after PostgreSQL service start.  Here is an example of its use.
fr: Ce service permet de créer des rôles PostgreSQL et des bases de données après le démarrage du service PostgreSQL. Voici un exemple d'utilisation.

note: type: deffn
en: This service can be extended with extra roles, as in this example:
fr: Ce service peut être étendu avec des rôles supplémentaires, comme dans cet exemple :

note: type: deftp
en: {Data Type} postgresql-role
fr: {Type de données} postgresql-role

note: type: deftp
en: PostgreSQL manages database access permissions using the concept of roles.  A role can be thought of as either a database user, or a group of database users, depending on how the role is set up.  Roles can own database objects (for example, tables) and can assign privileges on those objects to other roles to control who has access to which objects.
fr: PostgreSQL gère les permissions d'accès à la base de données en utilisant le concept de rôle. Un rôle est soit comme un utilisateur de la base de données, soit un groupe d'utilisateurs, en fonction du paramétrage du rôle. Les rôles peuvent posséder des objets de la base (par exemple des tables) et peuvent assigner des privilèges sur ces objets à d'autres rôles pour contrôler qui a accès à quels objets.

note: type: table
en: The role name.
fr: Le nom du rôle.

note: type: item
en: @code{permissions} (default: @code{'(createdb login)})
fr: @code{permissions} (par défaut : @code{'(createdb login)})

note: type: table
en: The role permissions list.  Supported permissions are @code{bypassrls}, @code{createdb}, @code{createrole}, @code{login}, @code{replication} and @code{superuser}.
fr: La liste des permissions du rôle. Les permissions prises en charge sont @code{bypassrls}, @code{createdb}, @code{createrole}, @code{login}, @code{replication} et @code{superuser}.

note: type: item
en: @code{create-database?} (default: @code{#f})
fr: @code{create-database?} (par défaut : @code{#f})

note: type: table
en: Whether to create a database with the same name as the role.
fr: Indique s'il faut créer une base de données avec le même nom que le rôle.

note: type: deftp
en: {Data Type} postgresql-role-configuration
fr: {Type de données} postgresql-role-configuration

note: type: deftp
en: Data type representing the configuration of @var{postgresql-role-service-type}.
fr: Type de données représentant la configuration de @var{postgresql-role-service-type}.

note: type: item
en: @code{host} (default: @code{"/var/run/postgresql"})
fr: @code{host} (par défaut : @code{"/var/run/postgresql"})

note: type: table
en: The PostgreSQL host to connect to.
fr: L'hôte PostgreSQL sur lequel se connecter.

note: type: item
en: @code{log} (default: @code{"/var/log/postgresql_roles.log"})
fr: @code{log} (par défaut : @code{"/var/log/postgresql_roles.log"})

note: type: table
en: File name of the log file.
fr: Nom du fichier du fichier de journal.

note: type: item
en: @code{roles} (default: @code{'()})
fr: @code{roles} (par défaut : @code{'()})

note: type: table
en: The initial PostgreSQL roles to create.
fr: Les rôles PostgreSQL initiaux à créer.

note: type: defvr
en: {Scheme Variable} mysql-service-type
fr: {Variable Scheme} mysql-service-type

note: type: defvr
en: This is the service type for a MySQL or MariaDB database server.  Its value is a @code{mysql-configuration} object that specifies which package to use, as well as various settings for the @command{mysqld} daemon.
fr: C'est le type du service pour une base de donnée MySQL ou MariaDB.  Sa valeur est un objet @code{mysql-configuration}, qui spécifie le paquet à utiliser ainsi que divers paramètres pour le démon @command{mysqld}.

note: type: deftp
en: {Data Type} mysql-configuration
fr: {Type de données} mysql-configuration

note: type: deftp
en: Data type representing the configuration of @var{mysql-service-type}.
fr: Type de données représentant la configuration de @var{mysql-service-type}.

note: type: item
en: @code{mysql} (default: @var{mariadb})
fr: @code{mysql} (par défaut : @var{mariadb})

note: type: table
en: Package object of the MySQL database server, can be either @var{mariadb} or @var{mysql}.
fr: Objet paquet du serveur de base de données MySQL, qui peut être soit @var{mariadb}, soit @var{mysql}.

note: type: table
en: For MySQL, a temporary root password will be displayed at activation time.  For MariaDB, the root password is empty.
fr: Pour MySQL, un mot de passe root temporaire sera affiché à l'activation.  Pour MariaDB, le mot de passe root est vide.

note: type: item
en: @code{bind-address} (default: @code{"127.0.0.1"})
fr: @code{bind-address} (par défaut : @code{"127.0.0.1"})

note: type: table
en: The IP on which to listen for network connections.  Use @code{"0.0.0.0"} to bind to all available network interfaces.
fr: L'IP sur laquelle écouter les connexions réseau.  Utilisez @code{"0.0.0.0"} pour écouter sur toutes les interfaces réseaux.

note: type: item
en: @code{port} (default: @code{3306})
fr: @code{port} (par défaut : @code{3306})

note: type: table
en: TCP port on which the database server listens for incoming connections.
fr: Port TCP sur lequel le serveur de base de données écoute les connexions entrantes.

note: type: item
en: @code{socket} (default: @code{"/run/mysqld/mysqld.sock"})
fr: @code{socket} (par défaut : @code{"/run/mysqld/mysqld.sock"})

note: type: table
en: Socket file to use for local (non-network) connections.
fr: Fichier de socket à utiliser pour les connexions locales (pas via le réseau).

note: type: table
en: Additional settings for the @file{my.cnf} configuration file.
fr: Paramètres supplémentaires pour le fichier de configuration @file{my.cnf}.

note: type: item
en: @code{extra-environment} (default: @code{#~'()})
fr: @code{extra-environment} (par défaut : @code{#~'()})

note: type: table
en: List of environment variables passed to the @command{mysqld} process.
fr: Liste de variables d'environnement passées au processus @command{mysqld}.

note: type: item
en: @code{auto-upgrade?} (default: @code{#t})
fr: @code{auto-upgrade?} (par défaut : @code{#t})

note: type: table
en: Whether to automatically run @command{mysql_upgrade} after starting the service.  This is necessary to upgrade the @dfn{system schema} after ``major'' updates (such as switching from MariaDB 10.4 to 10.5), but can be disabled if you would rather do that manually.
fr: Indique s'il faut automatiquement lancer @command{mysql_upgrade} après avoir démarré le service. C'est nécessaire pour mettre à jour le @dfn{schéma système} après une mise à jour « majeure » (comme de passer de MariaDB 10.4 à 10.5), mais peut être désactivé si vous voulez plutôt le faire manuellement.

note: type: defvr
en: {Scheme Variable} memcached-service-type
fr: {Variable Scheme} memcached-service-type

note: type: defvr
en: This is the service type for the @uref{https://memcached.org/, Memcached} service, which provides a distributed in memory cache.  The value for the service type is a @code{memcached-configuration} object.
fr: C'est le type de service pour le service @uref{https://memcached.org/, Memcached} qui fournit un cache en mémoire distribué.  La valeur pour le type de service est un objet @code{memcached-configuration}.

note: type: deftp
en: {Data Type} memcached-configuration
fr: {Type de données} memcached-configuration

note: type: deftp
en: Data type representing the configuration of memcached.
fr: Type de données représentant la configuration de memcached.

note: type: item
en: @code{memcached} (default: @code{memcached})
fr: @code{memcached} (par défaut : @code{memcached})

note: type: table
en: The Memcached package to use.
fr: Le paquet Memcached à utiliser.

note: type: item
en: @code{interfaces} (default: @code{'("0.0.0.0")})
fr: @code{interfaces} (par défaut : @code{'("0.0.0.0")})

note: type: table
en: Network interfaces on which to listen.
fr: Les interfaces réseaux sur lesquelles écouter.

note: type: item
en: @code{tcp-port} (default: @code{11211})
fr: @code{tcp-port} (par défaut : @code{11211})

note: type: table
en: Port on which to accept connections.
fr: Port sur lequel accepter les connexions.

note: type: item
en: @code{udp-port} (default: @code{11211})
fr: @code{udp-port} (par défaut : @code{11211})

note: type: table
en: Port on which to accept UDP connections on, a value of 0 will disable listening on a UDP socket.
fr: Port sur lequel accepter les connexions UDP, une valeur de 0 désactive l'écoute en UDP.

note: type: item
en: @code{additional-options} (default: @code{'()})
fr: @code{additional-options} (par défaut : @code{'()})

note: type: table
en: Additional command line options to pass to @code{memcached}.
fr: Options de la ligne de commande supplémentaires à passer à @code{memcached}.

note: type: defvr
en: {Scheme Variable} redis-service-type
fr: {Variable Scheme} redis-service-type

note: type: defvr
en: This is the service type for the @uref{https://redis.io/, Redis} key/value store, whose value is a @code{redis-configuration} object.
fr: C'est le type de service pour la base clef-valeur @uref{https://redis.io/, Redis} dont la valeur est un objet @code{redis-configuration}.

note: type: deftp
en: {Data Type} redis-configuration
fr: {Type de données} redis-configuration

note: type: deftp
en: Data type representing the configuration of redis.
fr: Type de données représentant la configuration de redis.

note: type: item
en: @code{redis} (default: @code{redis})
fr: @code{redis} (par défaut : @code{redis})

note: type: table
en: The Redis package to use.
fr: Le paquet Redis à utiliser.

note: type: item
en: @code{bind} (default: @code{"127.0.0.1"})
fr: @code{bind} (par défaut : @code{"127.0.0.1"})

note: type: table
en: Network interface on which to listen.
fr: Interface réseau sur laquelle écouter.

note: type: item
en: @code{port} (default: @code{6379})
fr: @code{port} (par défaut : @code{6379})

note: type: table
en: Port on which to accept connections on, a value of 0 will disable listening on a TCP socket.
fr: Port sur lequel accepter les connexions, une valeur de 0 désactive l'écoute sur un socket TCP.

note: type: item
en: @code{working-directory} (default: @code{"/var/lib/redis"})
fr: @code{working-directory} (par défaut : @code{"/var/lib/redis"})

note: type: table
en: Directory in which to store the database and related files.
fr: Répertoire dans lequel stocker la base de données et les fichiers liés.

note: type: cindex
en: mail
fr: courriel

note: type: Plain text
en: The @code{(gnu services mail)} module provides Guix service definitions for email services: IMAP, POP3, and LMTP servers, as well as mail transport agents (MTAs).  Lots of acronyms! These services are detailed in the subsections below.
fr: Le module @code{(gnu services mail)} fournit des définitions de services Guix pour les services de courriel : des serveurs IMAP, POP3 et LMTP ainsi que des MTA (Mail Transport Agent).  Que d'acronymes !  Ces services sont détaillés dans les sous-sections ci-dessous.

note: type: subsubheading
en: Dovecot Service
fr: Service Dovecot

note: type: deffn
en: {Scheme Procedure} dovecot-service [#:config (dovecot-configuration)]
fr: {Procédure Scheme} dovecot-service [#:config (dovecot-configuration)]

note: type: deffn
en: Return a service that runs the Dovecot IMAP/POP3/LMTP mail server.
fr: Renvoie un service qui lance le serveur de courriel IMAP/POP3/LMTP Dovecot.

note: type: Plain text
en: By default, Dovecot does not need much configuration; the default configuration object created by @code{(dovecot-configuration)} will suffice if your mail is delivered to @code{~/Maildir}.  A self-signed certificate will be generated for TLS-protected connections, though Dovecot will also listen on cleartext ports by default.  There are a number of options, though, which mail administrators might need to change, and as is the case with other services, Guix allows the system administrator to specify these parameters via a uniform Scheme interface.
fr: Par défaut, Dovecot n'a pas besoin de beaucoup de configuration ; l'objet de configuration par défaut créé par @code{(dovecot-configuration)} suffira si votre courriel est livré dans @code{~/Maildir}.  Un certificat auto-signé sera généré pour les connexions TLS, bien que Dovecot écoutera aussi sur les ports non chiffrés par défaut.  Il y a quelques options cependant, que les administrateurs peuvent avoir besoin de changer et comme c'est le cas avec d'autres services, Guix permet aux administrateurs systèmes de spécifier ces paramètres via une interface Scheme unifiée.

note: type: Plain text
en: For example, to specify that mail is located at @code{maildir~/.mail}, one would instantiate the Dovecot service like this:
fr: Par exemple, pour spécifier que les courriels se trouvent dans @code{maildir~/.mail}, on peut instancier Dovecot de cette manière :

note: type: Plain text
en: The available configuration parameters follow.  Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings.  There is also a way to specify the configuration as a string, if you have an old @code{dovecot.conf} file that you want to port over from some other system; see the end for more details.
fr: Les paramètres de configuration disponibles sont les suivants.  Chaque définition des paramètres est précédé par son type ; par exemple, @samp{string-list toto} indique que le paramètre @code{toto} devrait être spécifié comme une liste de chaînes de caractères.  Il y a aussi une manière de spécifier la configuration comme une chaîne de caractères, si vous avez un vieux fichier @code{dovecot.conf} que vous voulez porter depuis un autre système ; voir la fin pour plus de détails.

note: type: Plain text
en: Available @code{dovecot-configuration} fields are:
fr: Les champs de @code{dovecot-configuration} disponibles sont :

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} package dovecot
fr: {paramètre de @code{dovecot-configuration}} package dovecot

note: type: deftypevr
en: The dovecot package.
fr: Le paquet dovecot.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} comma-separated-string-list listen
fr: {paramètre de @code{dovecot-configuration}} comma-separated-string-list listen

note: type: deftypevr
en: A list of IPs or hosts where to listen for connections.  @samp{*} listens on all IPv4 interfaces, @samp{::} listens on all IPv6 interfaces.  If you want to specify non-default ports or anything more complex, customize the address and port fields of the @samp{inet-listener} of the specific services you are interested in.
fr: Une liste d'IP ou d'hôtes à écouter pour les connexions.  @samp{*} écoute sur toutes les interfaces IPv4, @samp{::} écoute sur toutes les interfaces IPv6.  Si vous voulez spécifier des ports différents de la valeur par défaut ou quelque chose de plus complexe, complétez les champs d'adresse et de port de @samp{inet-listener} des services spécifiques qui vous intéressent.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} protocol-configuration-list protocols
fr: {paramètre de @code{dovecot-configuration}} protocol-configuration-list protocols

note: type: deftypevr
en: List of protocols we want to serve.  Available protocols include @samp{imap}, @samp{pop3}, and @samp{lmtp}.
fr: Liste des protocoles que vous voulez servir.  Les protocoles disponibles comprennent @samp{imap}, @samp{pop3} et @samp{lmtp}.

note: type: deftypevr
en: Available @code{protocol-configuration} fields are:
fr: Les champs @code{protocol-configuration} disponibles sont :

note: type: deftypevr
en: {@code{protocol-configuration} parameter} string name
fr: {paramètre de @code{protocol-configuration}} string name

note: type: deftypevr
en: The name of the protocol.
fr: Le nom du protocole.

note: type: deftypevr
en: {@code{protocol-configuration} parameter} string auth-socket-path
fr: {paramètre de @code{protocol-configuration}} string auth-socket-path

note: type: deftypevr
en: UNIX socket path to the master authentication server to find users.  This is used by imap (for shared users) and lda.  It defaults to @samp{"/var/run/dovecot/auth-userdb"}.
fr: Le chemin d'un socket UNIX vers le serveur d'authentification maître pour trouver les utilisateurs.  C'est utilisé par imap (pour les utilisateurs partagés) et lda.  Sa valeur par défaut est @samp{"/var/run/dovecot/auth-userdb"}.

note: type: deftypevr
en: {@code{protocol-configuration} parameter} boolean imap-metadata?
fr: {paramètre de @code{protocol-configuration}} boolean imap-metadata?

note: type: deftypevr
en: Whether to enable the @code{IMAP METADATA} extension as defined in @uref{https://tools.ietf.org/html/rfc5464,RFC@tie{}5464}, which provides a means for clients to set and retrieve per-mailbox, per-user metadata and annotations over IMAP.
fr: Indique s'il faut activer l'extension @code{IMAP METADATA} définie dans @uref{https://tools.ietf.org/html/rfc5464,RFC@tie{}5464}, qui permet aux clients d'indiquer et récupérer des métadonnées et des annotations pour chaque boîte aux lettres et chaque utilisateur par IMAP.

note: type: deftypevr
en: If this is @samp{#t}, you must also specify a dictionary @i{via} the @code{mail-attribute-dict} setting.
fr: Si la valeur est @samp{#t}, vous devez spécifier un dictionnaire via le paramètre @code{mail-attribute-dict}.

note: type: deftypevr
en: {@code{protocol-configuration} parameter} space-separated-string-list managesieve-notify-capabilities
fr: {paramètre de @code{protocol-configuration}} space-separated-string-list managesieve-notify-capabilities

note: type: deftypevr
en: Which NOTIFY capabilities to report to clients that first connect to the ManageSieve service, before authentication.  These may differ from the capabilities offered to authenticated users.  If this field is left empty, report what the Sieve interpreter supports by default.
fr: Les capacités NOTIFY à rapporter aux clients qui se connectent pour la première fois au service ManageSieve, avant l'authentification. Elles peuvent être différentes des capacités offertes aux utilisateurs authentifiés. Si ce champ est vide, rapporte ce que l'interpréteur Sieve prend en charge par défaut.

note: type: deftypevr
en: {@code{protocol-configuration} parameter} space-separated-string-list managesieve-sieve-capability
fr: {paramètre de @code{protocol-configuration}} space-separated-string-list managesieve-sieve-capability

note: type: deftypevr
en: Which SIEVE capabilities to report to clients that first connect to the ManageSieve service, before authentication.  These may differ from the capabilities offered to authenticated users.  If this field is left empty, report what the Sieve interpreter supports by default.
fr: Les capacités SIEVE à rapporter aux clients qui se connectent pour la première fois au service ManageSieve, avant l'authentification. Elles peuvent être différentes des capacités offertes aux utilisateurs authentifiés. Si ce champ est vide, rapporte ce que l'interpréteur Sieve prend en charge par défaut.

note: type: deftypevr
en: {@code{protocol-configuration} parameter} space-separated-string-list mail-plugins
fr: {paramètre de @code{protocol-configuration}} space-separated-string-list mail-plugins

note: type: deftypevr
en: Space separated list of plugins to load.
fr: Liste de greffons à charger séparés par des espaces.

note: type: deftypevr
en: {@code{protocol-configuration} parameter} non-negative-integer mail-max-userip-connections
fr: {paramètre de @code{protocol-configuration}} entier-non-négatif mail-max-userip-connections

note: type: deftypevr
en: Maximum number of IMAP connections allowed for a user from each IP address.  NOTE: The username is compared case-sensitively.  Defaults to @samp{10}.
fr: Nombre maximum de connexions IMAP permises pour un utilisateur depuis chaque adresse IP.  Remarque : la comparaison du nom d'utilisateur est sensible à la casse.  Par défaut @samp{10}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} service-configuration-list services
fr: {paramètre de @code{dovecot-configuration}} service-configuration-list services

note: type: deftypevr
en: List of services to enable.  Available services include @samp{imap}, @samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth}, and @samp{lmtp}.
fr: Liste des services à activer.  Les services disponibles comprennent @samp{imap}, @samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth} et @samp{lmtp}.

note: type: deftypevr
en: Available @code{service-configuration} fields are:
fr: Les champs de @code{service-configuration} disponibles sont :

note: type: deftypevr
en: {@code{service-configuration} parameter} string kind
fr: {paramètre de @code{service-configuration}} string kind

note: type: deftypevr
en: The service kind.  Valid values include @code{director}, @code{imap-login}, @code{pop3-login}, @code{lmtp}, @code{imap}, @code{pop3}, @code{auth}, @code{auth-worker}, @code{dict}, @code{tcpwrap}, @code{quota-warning}, or anything else.
fr: Le type de service.  Les valeurs valides comprennent @code{director}, @code{imap-login}, @code{pop3-login}, @code{lmtp}, @code{imap}, @code{pop3}, @code{auth}, @code{auth-worker}, @code{dict}, @code{tcpwrap}, @code{quota-warning} ou n'importe quoi d'autre.

note: type: deftypevr
en: {@code{service-configuration} parameter} listener-configuration-list listeners
fr: {paramètre de @code{service-configuration}} listener-configuration-list listeners

note: type: deftypevr
en: Listeners for the service.  A listener is either a @code{unix-listener-configuration}, a @code{fifo-listener-configuration}, or an @code{inet-listener-configuration}.  Defaults to @samp{()}.
fr: Les auditeurs du service.  Un auditeur est soit un @code{unix-listener-configuration}, soit un @code{fifo-listener-configuration}, soit un @code{inet-listener-configuration}.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: Available @code{unix-listener-configuration} fields are:
fr: Les champs de @code{unix-listener-configuration} disponibles sont :

note: type: deftypevr
en: {@code{unix-listener-configuration} parameter} string path
fr: {paramètre de @code{unix-listener-configuration}} string path

note: type: deftypevr
en: Path to the file, relative to @code{base-dir} field.  This is also used as the section name.
fr: Chemin vers le fichier, relativement au champ @code{base-dir}.  C'est aussi utilisé comme nom de section.

note: type: deftypevr
en: {@code{unix-listener-configuration} parameter} string mode
fr: {paramètre de @code{unix-listener-configuration}} string mode

note: type: deftypevr
en: The access mode for the socket.  Defaults to @samp{"0600"}.
fr: Le mode d'accès pour le socket.  La valeur par défaut est @samp{"0600"}.

note: type: deftypevr
en: {@code{unix-listener-configuration} parameter} string user
fr: {paramètre de @code{unix-listener-configuration}} string user

note: type: deftypevr
en: The user to own the socket.  Defaults to @samp{""}.
fr: L'utilisateur à qui appartient le socket.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{unix-listener-configuration} parameter} string group
fr: {paramètre de @code{unix-listener-configuration}} string group

note: type: deftypevr
en: The group to own the socket.  Defaults to @samp{""}.
fr: Le groupe auquel appartient le socket.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: Available @code{fifo-listener-configuration} fields are:
fr: Les champs de @code{fifo-listener-configuration} disponibles sont :

note: type: deftypevr
en: {@code{fifo-listener-configuration} parameter} string path
fr: {paramètre de @code{fifo-listener-configuration}} string path

note: type: deftypevr
en: {@code{fifo-listener-configuration} parameter} string mode
fr: {paramètre de @code{fifo-listener-configuration}} string mode

note: type: deftypevr
en: {@code{fifo-listener-configuration} parameter} string user
fr: {paramètre de @code{fifo-listener-configuration}} string user

note: type: deftypevr
en: {@code{fifo-listener-configuration} parameter} string group
fr: {paramètre de @code{fifo-listener-configuration}} string group

note: type: deftypevr
en: Available @code{inet-listener-configuration} fields are:
fr: Les champs de @code{inet-listener-configuration} disponibles sont :

note: type: deftypevr
en: {@code{inet-listener-configuration} parameter} string protocol
fr: {paramètre de @code{inet-listener-configuration}} string protocol

note: type: deftypevr
en: The protocol to listen for.
fr: Le protocole à écouter.

note: type: deftypevr
en: {@code{inet-listener-configuration} parameter} string address
fr: {paramètre de @code{inet-listener-configuration}} string address

note: type: deftypevr
en: The address on which to listen, or empty for all addresses.  Defaults to @samp{""}.
fr: L'adresse sur laquelle écouter, ou la chaîne vide pour toutes les adresses.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{inet-listener-configuration} parameter} non-negative-integer port
fr: {paramètre de @code{inet-listener-configuration}} entier-non-négatif port

note: type: deftypevr
en: The port on which to listen.
fr: Le port sur lequel écouter.

note: type: deftypevr
en: {@code{inet-listener-configuration} parameter} boolean ssl?
fr: {paramètre de @code{inet-listener-configuration}} boolean ssl?

note: type: deftypevr
en: Whether to use SSL for this service; @samp{yes}, @samp{no}, or @samp{required}.  Defaults to @samp{#t}.
fr: S'il faut utiliser SSL pour ce service ; @samp{yes}, @samp{no} ou @samp{required}.  La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{service-configuration} parameter} non-negative-integer client-limit
fr: {paramètre de @code{service-configuration}} entier-non-négatif client-limit

note: type: deftypevr
en: Maximum number of simultaneous client connections per process.  Once this number of connections is received, the next incoming connection will prompt Dovecot to spawn another process.  If set to 0, @code{default-client-limit} is used instead.
fr: Connexions de clients simultanées maximum par processus.  Une fois ce nombre de connections atteint, la connexion suivante fera en sorte que Dovecot démarre un autre processus.  Si la valeur est 0, @code{default-client-limit} est utilisé à la place.

note: type: deftypevr
en: {@code{service-configuration} parameter} non-negative-integer service-count
fr: {paramètre de @code{service-configuration}} entier-non-négatif service-count

note: type: deftypevr
en: Number of connections to handle before starting a new process.  Typically the only useful values are 0 (unlimited) or 1.  1 is more secure, but 0 is faster.  <doc/wiki/LoginProcess.txt>.  Defaults to @samp{1}.
fr: Nombre de connexions à gérer avant de démarrer un nouveau processus.  Typiquement les valeurs utiles sont 0 (sans limite) ou 1.  1 est plus sûr, mais 0 est plus rapide.  <doc/wiki/LoginProcess.txt>.  La valeur par défaut est @samp{1}.

note: type: deftypevr
en: {@code{service-configuration} parameter} non-negative-integer process-limit
fr: {paramètre de @code{service-configuration}} entier-non-négatif process-limit

note: type: deftypevr
en: Maximum number of processes that can exist for this service.  If set to 0, @code{default-process-limit} is used instead.
fr: Nombre de processus maximum qui peut exister pour ce service.  Si la valeur est 0, @code{default-process-limit} est utilisé à la place.

note: type: deftypevr
en: {@code{service-configuration} parameter} non-negative-integer process-min-avail
fr: {paramètre de @code{service-configuration}} entier-non-négatif process-min-avail

note: type: deftypevr
en: Number of processes to always keep waiting for more connections.  Defaults to @samp{0}.
fr: Nombre de processus à toujours garder en attente de connexions.  La valeur par défaut est @samp{0}.

note: type: deftypevr
en: {@code{service-configuration} parameter} non-negative-integer vsz-limit
fr: {paramètre de @code{service-configuration}} entier-non-négatif vsz-limit

note: type: deftypevr
en: If you set @samp{service-count 0}, you probably need to grow this.  Defaults to @samp{256000000}.
fr: Si vous mettez @samp{service-count 0}, vous avez sans doute besoin d'augmenter ce paramètre.  La valeur par défaut est @samp{256000000}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} dict-configuration dict
fr: {paramètre de @code{dovecot-configuration}} dict-configuration dict

note: type: deftypevr
en: Dict configuration, as created by the @code{dict-configuration} constructor.
fr: Configuration du dictionnaire, créé par le constructeur @code{dict-configuration}.

note: type: deftypevr
en: Available @code{dict-configuration} fields are:
fr: Les champs de @code{dict-configuration} disponibles sont :

note: type: deftypevr
en: {@code{dict-configuration} parameter} free-form-fields entries
fr: {paramètre de @code{dict-configuration}} free-form-fields entries

note: type: deftypevr
en: A list of key-value pairs that this dict should hold.  Defaults to @samp{()}.
fr: Une liste de paires de clefs-valeurs que ce dictionnaire contient.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} passdb-configuration-list passdbs
fr: {paramètre de @code{dovecot-configuration}} passdb-configuration-list passdbs

note: type: deftypevr
en: A list of passdb configurations, each one created by the @code{passdb-configuration} constructor.
fr: Une liste de configurations passdb, chacune créée par le constructeur @code{passdb-configuration}.

note: type: deftypevr
en: Available @code{passdb-configuration} fields are:
fr: Les champs de @code{passdb-configuration} disponibles sont :

note: type: deftypevr
en: {@code{passdb-configuration} parameter} string driver
fr: {paramètre de @code{passdb-configuration}} string driver

note: type: deftypevr
en: The driver that the passdb should use.  Valid values include @samp{pam}, @samp{passwd}, @samp{shadow}, @samp{bsdauth}, and @samp{static}.  Defaults to @samp{"pam"}.
fr: Le pilote à utiliser par passdb.  Les valeur valides comprennent @samp{pam}, @samp{passwd}, @samp{shadow}, @samp{bsdauth} et @samp{static}.  La valeur par défaut est @samp{"pam"}.

note: type: deftypevr
en: {@code{passdb-configuration} parameter} space-separated-string-list args
fr: {paramètre de @code{passdb-configuration}} space-separated-string-list args

note: type: deftypevr
en: Space separated list of arguments to the passdb driver.  Defaults to @samp{""}.
fr: Liste d'arguments pour le pilote passdb séparés par des espaces.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} userdb-configuration-list userdbs
fr: {paramètre de @code{dovecot-configuration}} userdb-configuration-list userdbs

note: type: deftypevr
en: List of userdb configurations, each one created by the @code{userdb-configuration} constructor.
fr: Liste des configurations userdb, chacune créée par le constructeur @code{userdb-configuration}.

note: type: deftypevr
en: Available @code{userdb-configuration} fields are:
fr: Les champs de @code{userdb-configuration} disponibles sont :

note: type: deftypevr
en: {@code{userdb-configuration} parameter} string driver
fr: {paramètre de @code{userdb-configuration}} string driver

note: type: deftypevr
en: The driver that the userdb should use.  Valid values include @samp{passwd} and @samp{static}.  Defaults to @samp{"passwd"}.
fr: Le pilote que userdb devrait utiliser.  Les valeurs valides comprennent @samp{passwd} et @samp{static}.  La valeur par défaut est @samp{"passwd"}.

note: type: deftypevr
en: {@code{userdb-configuration} parameter} space-separated-string-list args
fr: {paramètre de @code{userdb-configuration}} space-separated-string-list args

note: type: deftypevr
en: Space separated list of arguments to the userdb driver.  Defaults to @samp{""}.
fr: Liste des arguments du pilote userdb séparés par des espaces.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{userdb-configuration} parameter} free-form-args override-fields
fr: {paramètre de @code{userdb-configuration}} free-form-args override-fields

note: type: deftypevr
en: Override fields from passwd.  Defaults to @samp{()}.
fr: Remplace des champs de passwd.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} plugin-configuration plugin-configuration
fr: {paramètre de @code{dovecot-configuration}} plugin-configuration plugin-configuration

note: type: deftypevr
en: Plug-in configuration, created by the @code{plugin-configuration} constructor.
fr: Configuration du greffon, créé par le constructeur @code{plugin-configuration}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} list-of-namespace-configuration namespaces
fr: {paramètre de @code{dovecot-configuration}} list-of-namespace-configuration namespaces

note: type: deftypevr
en: List of namespaces.  Each item in the list is created by the @code{namespace-configuration} constructor.
fr: Liste d'espaces de noms.  Chaque élément de la liste est créé par le constructeur @code{namespace-configuration}.

note: type: deftypevr
en: Available @code{namespace-configuration} fields are:
fr: Les champs de @code{namespace-configuration} disponibles sont :

note: type: deftypevr
en: {@code{namespace-configuration} parameter} string name
fr: {paramètre de @code{namespace-configuration}} string name

note: type: deftypevr
en: Name for this namespace.
fr: Nom de cet espace de nom.

note: type: deftypevr
en: {@code{namespace-configuration} parameter} string type
fr: {paramètre de @code{namespace-configuration}} string type

note: type: deftypevr
en: Namespace type: @samp{private}, @samp{shared} or @samp{public}.  Defaults to @samp{"private"}.
fr: Type d'espace de nom : @samp{private}, @samp{shared} ou @samp{public}.  La valeur par défaut est @samp{"private"}.

note: type: deftypevr
en: {@code{namespace-configuration} parameter} string separator
fr: {paramètre de @code{namespace-configuration}} string separator

note: type: deftypevr
en: Hierarchy separator to use.  You should use the same separator for all namespaces or some clients get confused.  @samp{/} is usually a good one.  The default however depends on the underlying mail storage format.  Defaults to @samp{""}.
fr: Séparateur de hiérarchie à utiliser.  Vous devriez utiliser le même séparateur pour tous les espaces de noms ou certains clients seront confus.  @samp{/} est généralement une bonne valeur.  La valeur par défaut dépend cependant du format de stockage sous-jacent.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{namespace-configuration} parameter} string prefix
fr: {paramètre de @code{namespace-configuration}} string prefix

note: type: deftypevr
en: Prefix required to access this namespace.  This needs to be different for all namespaces.  For example @samp{Public/}.  Defaults to @samp{""}.
fr: Préfixe requis pour accéder à cet espace de nom.  Ce paramètres doit être différent pour tous les espaces de noms.  Par exemple @samp{Public/}.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{namespace-configuration} parameter} string location
fr: {paramètre de @code{namespace-configuration}} string location

note: type: deftypevr
en: Physical location of the mailbox. This is in the same format as mail_location, which is also the default for it.  Defaults to @samp{""}.
fr: Emplacement physique de la boîte aux lettres.  C'est le même format que mail_location, qui est aussi la valeur par défaut.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{namespace-configuration} parameter} boolean inbox?
fr: {paramètre de @code{namespace-configuration}} boolean inbox?

note: type: deftypevr
en: There can be only one INBOX, and this setting defines which namespace has it.  Defaults to @samp{#f}.
fr: Il ne peut y avoir qu'un INBOX, et ce paramètre définit l'espace de nom qui le possède.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{namespace-configuration} parameter} boolean hidden?
fr: {paramètre de @code{namespace-configuration}} boolean hidden?

note: type: deftypevr
en: If namespace is hidden, it's not advertised to clients via NAMESPACE extension.  You'll most likely also want to set @samp{list? #f}.  This is mostly useful when converting from another server with different namespaces which you want to deprecate but still keep working.  For example you can create hidden namespaces with prefixes @samp{~/mail/}, @samp{~%u/mail/} and @samp{mail/}.  Defaults to @samp{#f}.
fr: Si l'espace de nom est caché, il n'est pas annoncé auprès des clients par l'extension NAMESPACE.  Vous voudrez aussi sans doute indiquer @samp{list? #f}.  C'est surtout utile lors de la conversion depuis un autre serveur avec des espaces de noms différents que vous voulez rendre obsolètes sans les casser.  Par exemple vous pouvez cacher les espaces de noms avec les préfixes @samp{~/mail/}, @samp{~%u/mail/} et @samp{mail/}.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{namespace-configuration} parameter} boolean list?
fr: {paramètre de @code{namespace-configuration}} boolean list?

note: type: deftypevr
en: Show the mailboxes under this namespace with the LIST command.  This makes the namespace visible for clients that do not support the NAMESPACE extension.  The special @code{children} value lists child mailboxes, but hides the namespace prefix.  Defaults to @samp{#t}.
fr: Montre les boîtes aux lettres sons cet espace de nom avec la commande LIST.  Cela rend l'espace de nom visible pour les clients qui ne supportent pas l'extension NAMESPACE.  La valeur spéciale @code{children} liste les boîtes aux lettres filles mais cache le préfixe de l'espace de nom.  La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{namespace-configuration} parameter} boolean subscriptions?
fr: {paramètre de @code{namespace-configuration}} boolean subscriptions?

note: type: deftypevr
en: Namespace handles its own subscriptions.  If set to @code{#f}, the parent namespace handles them.  The empty prefix should always have this as @code{#t}).  Defaults to @samp{#t}.
fr: Les espaces de noms gèrent leur propre souscription.  Si la valeur est @code{#f}, l'espace de nom parent s'en charge.  Le préfixe vide devrait toujours avoir cette valeur à @code{#t}.  La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{namespace-configuration} parameter} mailbox-configuration-list mailboxes
fr: {paramètre de @code{namespace-configuration}} mailbox-configuration-list mailboxes

note: type: deftypevr
en: List of predefined mailboxes in this namespace.  Defaults to @samp{()}.
fr: Liste des boîtes aux lettres prédéfinies dans cet espace de nom.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: Available @code{mailbox-configuration} fields are:
fr: Les champs de @code{mailbox-configuration} disponibles sont :

note: type: deftypevr
en: {@code{mailbox-configuration} parameter} string name
fr: {paramètre de @code{mailbox-configuration}} string name

note: type: deftypevr
en: Name for this mailbox.
fr: Nom de cette boîte aux lettres.

note: type: deftypevr
en: {@code{mailbox-configuration} parameter} string auto
fr: {paramètre de @code{mailbox-configuration}} string auto

note: type: deftypevr
en: @samp{create} will automatically create this mailbox.  @samp{subscribe} will both create and subscribe to the mailbox.  Defaults to @samp{"no"}.
fr: @samp{create} créera automatiquement cette boîte aux lettres.  @samp{subscribe} créera et souscrira à la boîte aux lettres.  La valeur par défaut est @samp{"no"}.

note: type: deftypevr
en: {@code{mailbox-configuration} parameter} space-separated-string-list special-use
fr: {paramètre de @code{mailbox-configuration}} space-separated-string-list special-use

note: type: deftypevr
en: List of IMAP @code{SPECIAL-USE} attributes as specified by RFC 6154.  Valid values are @code{\All}, @code{\Archive}, @code{\Drafts}, @code{\Flagged}, @code{\Junk}, @code{\Sent}, and @code{\Trash}.  Defaults to @samp{()}.
fr: Liste des attributs @code{SPECIAL-USE} IMAP spécifiés par la RFC 6154.  Les valeurs valides sont @code{\All}, @code{\Archive}, @code{\Drafts}, @code{\Flagged}, @code{\Junk}, @code{\Sent} et @code{\Trash}.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} file-name base-dir
fr: {paramètre de @code{dovecot-configuration}} file-name base-dir

note: type: deftypevr
en: Base directory where to store runtime data.  Defaults to @samp{"/var/run/dovecot/"}.
fr: Répertoire de base où stocker les données d'exécution.  La valeur par défaut est @samp{"/var/run/dovecot/"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string login-greeting
fr: {paramètre de @code{dovecot-configuration}} string login-greeting

note: type: deftypevr
en: Greeting message for clients.  Defaults to @samp{"Dovecot ready."}.
fr: Message d'accueil pour les clients.  La valeur par défaut est @samp{"Dovecot ready."}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list login-trusted-networks
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list login-trusted-networks

note: type: deftypevr
en: List of trusted network ranges.  Connections from these IPs are allowed to override their IP addresses and ports (for logging and for authentication checks).  @samp{disable-plaintext-auth} is also ignored for these networks.  Typically you would specify your IMAP proxy servers here.  Defaults to @samp{()}.
fr: Liste des groupes d'adresses de confiance.  Les connexions depuis ces IP sont autorisées à modifier leurs adresses IP et leurs ports (pour la connexion et la vérification d'authentification).  @samp{disable-plaintext-auth} est aussi ignoré pour ces réseaux.  Typiquement vous voudrez spécifier votre mandataire IMAP ici.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list login-access-sockets
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list login-access-sockets

note: type: deftypevr
en: List of login access check sockets (e.g.@: tcpwrap).  Defaults to @samp{()}.
fr: Liste des sockets de vérification d'accès de connexion (p.@: ex.@: tcpwrap).  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean verbose-proctitle?
fr: {paramètre de @code{dovecot-configuration}} boolean verbose-proctitle?

note: type: deftypevr
en: Show more verbose process titles (in ps).  Currently shows user name and IP address.  Useful for seeing who is actually using the IMAP processes (e.g.@: shared mailboxes or if the same uid is used for multiple accounts).  Defaults to @samp{#f}.
fr: Montre des titres de processus plus verbeux (dans ps).  Actuellement, montre le nom d'utilisateur et l'adresse IP.  Utile pour voir qui utilise en réalité les processus IMAP (p.@: ex.@: des boîtes aux lettres partagées ou si le même uid est utilisé pour plusieurs comptes).  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean shutdown-clients?
fr: {paramètre de @code{dovecot-configuration}} boolean shutdown-clients?

note: type: deftypevr
en: Should all processes be killed when Dovecot master process shuts down.  Setting this to @code{#f} means that Dovecot can be upgraded without forcing existing client connections to close (although that could also be a problem if the upgrade is e.g.@: due to a security fix).  Defaults to @samp{#t}.
fr: Indique si les processus devraient toujours être tués lorsque le processus maître de Dovecot est éteint.  La valeur @code{#f} signifie que Dovecot peut être mis à jour sans forcer les connexions clientes existantes à se fermer (bien que cela puisse être un problème si la mise à jour est un correctif de sécurité par exemple).  La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer doveadm-worker-count
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif doveadm-worker-count

note: type: deftypevr
en: If non-zero, run mail commands via this many connections to doveadm server, instead of running them directly in the same process.  Defaults to @samp{0}.
fr: Si la valeur n'est pas zéro, lance les commandes de courriel via ce nombre de connexions au serveur doveadm au lieu de les lancer dans le même processus.  La valeur par défaut est @samp{0}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string doveadm-socket-path
fr: {paramètre de @code{dovecot-configuration}} string doveadm-socket-path

note: type: deftypevr
en: UNIX socket or host:port used for connecting to doveadm server.  Defaults to @samp{"doveadm-server"}.
fr: Socket UNIX ou hôte:port utilisé pour se connecter au serveur doveadm.  La valeur par défaut est @samp{"doveadm-server"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list import-environment
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list import-environment

note: type: deftypevr
en: List of environment variables that are preserved on Dovecot startup and passed down to all of its child processes.  You can also give key=value pairs to always set specific settings.
fr: Liste des variables d'environnement qui sont préservées au démarrage de Dovecot et passées à tous ses processus fils.  Vous pouvez aussi donner des paires clef=valeur pour toujours spécifier ce paramètre.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean disable-plaintext-auth?
fr: {paramètre de @code{dovecot-configuration}} boolean disable-plaintext-auth?

note: type: deftypevr
en: Disable LOGIN command and all other plaintext authentications unless SSL/TLS is used (LOGINDISABLED capability).  Note that if the remote IP matches the local IP (i.e.@: you're connecting from the same computer), the connection is considered secure and plaintext authentication is allowed.  See also ssl=required setting.  Defaults to @samp{#t}.
fr: Désactive la commande LOGIN et toutes les autres authentifications en texte clair à moins que SSL/TLS ne soit utilisé (capacité LOGINDISABLED).  Remarquez que si l'IP distante correspond à l'IP locale (c.-à-d.@: que vous vous connectez depuis le même ordinateur), la connexion est considérée comme sécurisée et l'authentification en texte clair est permise.  Voir aussi le paramètre ssl=required.  La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer auth-cache-size
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif auth-cache-size

note: type: deftypevr
en: Authentication cache size (e.g.@: @samp{#e10e6}).  0 means it's disabled.  Note that bsdauth, PAM and vpopmail require @samp{cache-key} to be set for caching to be used.  Defaults to @samp{0}.
fr: Taille du cache d'authentification (p.@: ex.@: @samp{#e10e6}).  0 signifie qu'il est désactivé.  Remarquez que bsdauth, PAM et vpopmail ont besoin que @samp{cache-key} soit indiqué pour que le cache soit utilisé.  La valeur par défaut est @samp{0}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-cache-ttl
fr: {paramètre de @code{dovecot-configuration}} string auth-cache-ttl

note: type: deftypevr
en: Time to live for cached data.  After TTL expires the cached record is no longer used, *except* if the main database lookup returns internal failure.  We also try to handle password changes automatically: If user's previous authentication was successful, but this one wasn't, the cache isn't used.  For now this works only with plaintext authentication.  Defaults to @samp{"1 hour"}.
fr: Durée de vie des données en cache.  Après l'expiration du TTL l'enregistrement en cache n'est plus utilisé *sauf* si la requête à la base de données principale revoie une erreur interne.  Nous essayons aussi de gérer les changements de mot de passe automatiquement : si l'authentification précédente de l'utilisateur était réussie mais pas celle-ci, le cache n'est pas utilisé.  Pour l'instant cela fonctionne avec l'authentification en texte clair uniquement.  La valeur par défaut est @samp{"1 hour"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-cache-negative-ttl
fr: {paramètre de @code{dovecot-configuration}} string auth-cache-negative-ttl

note: type: deftypevr
en: TTL for negative hits (user not found, password mismatch).  0 disables caching them completely.  Defaults to @samp{"1 hour"}.
fr: TTL pour les résultats négatifs (l'utilisateur n'est pas trouvé ou le mot de passe ne correspond pas).  0 désactive la mise en cache complètement.  La valeur par défaut est @samp{"1 hour"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list auth-realms
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list auth-realms

note: type: deftypevr
en: List of realms for SASL authentication mechanisms that need them.  You can leave it empty if you don't want to support multiple realms.  Many clients simply use the first one listed here, so keep the default realm first.  Defaults to @samp{()}.
fr: Liste des domaines pour les mécanismes d'authentification SASL qui en ont besoin.  Vous pouvez laisser ce paramètre vide si vous ne voulez pas utiliser plusieurs domaines.  Beaucoup de clients utilisent le premier domaine listé ici, donc gardez celui par défaut en premier.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-default-realm
fr: {paramètre de @code{dovecot-configuration}} string auth-default-realm

note: type: deftypevr
en: Default realm/domain to use if none was specified.  This is used for both SASL realms and appending @@domain to username in plaintext logins.  Defaults to @samp{""}.
fr: Domaine par défaut à utiliser si aucun n'est spécifié.  C'est utilisé pour les domaines SASL et pour ajouter @@domaine au nom d'utilisateur dans les authentification en texte clair.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-username-chars
fr: {paramètre de @code{dovecot-configuration}} string auth-username-chars

note: type: deftypevr
en: List of allowed characters in username.  If the user-given username contains a character not listed in here, the login automatically fails.  This is just an extra check to make sure user can't exploit any potential quote escaping vulnerabilities with SQL/LDAP databases.  If you want to allow all characters, set this value to empty.  Defaults to @samp{"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@@"}.
fr: Liste des caractères autorisés dans les noms d'utilisateur.  Si le nom d'utilisateur donné par l'utilisateur contient un caractère qui n'est pas listé ici, la connexion échoue automatiquement.  C'est juste une vérification supplémentaire pour s'assure que l'utilisateur ne puisse pas exploiter des vulnérabilités potentielles d'échappement de guillemets avec les bases de données SQL/LDAP.  Si vous voulez autoriser tous les caractères, indiquez la liste vide.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-username-translation
fr: {paramètre de @code{dovecot-configuration}} string auth-username-translation

note: type: deftypevr
en: Username character translations before it's looked up from databases.  The value contains series of from -> to characters.  For example @samp{#@@/@@} means that @samp{#} and @samp{/} characters are translated to @samp{@@}.  Defaults to @samp{""}.
fr: Traduction de caractères dans les noms d'utilisateur avant qu'ils ne soient cherchés en base.  La valeur contient une série de caractère de -> à.  Par exemple @samp{#@@/@@} signifie que @samp{#} et @samp{/} sont traduits en @samp{@@}.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-username-format
fr: {paramètre de @code{dovecot-configuration}} string auth-username-format

note: type: deftypevr
en: Username formatting before it's looked up from databases.  You can use the standard variables here, e.g.@: %Lu would lowercase the username, %n would drop away the domain if it was given, or @samp{%n-AT-%d} would change the @samp{@@} into @samp{-AT-}.  This translation is done after @samp{auth-username-translation} changes.  Defaults to @samp{"%Lu"}.
fr: Format des noms d'utilisateur avant qu'ils ne soient cherchés en base.  Vous pouvez utiliser les variables standard ici, p.@: ex.@: %Lu est le nom d'utilisateur en minuscule, %n enlève le domaine s'il est donné ou @samp{%n-AT-%d} changerait le @samp{@@} en @samp{-AT-}.  Cette traduction est faite après les changements de @samp{auth-username-translation}.  La valeur par défaut est @samp{"%Lu"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-master-user-separator
fr: {paramètre de @code{dovecot-configuration}} string auth-master-user-separator

note: type: deftypevr
en: If you want to allow master users to log in by specifying the master username within the normal username string (i.e.@: not using SASL mechanism's support for it), you can specify the separator character here.  The format is then <username><separator><master username>.  UW-IMAP uses @samp{*} as the separator, so that could be a good choice.  Defaults to @samp{""}.
fr: Si vous voulez permettre aux utilisateurs maîtres de se connecter en spécifiant le nom d'utilisateur maître dans la chaîne de nom d'utilisateur normal (c.-à-d.@: sans utiliser le support du mécanisme SASL pour cela), vous pouvez spécifier le caractère de séparation ici.  Le format est ensuite <nom d'utilisateur><séparateur><nom d'utilisateur maître>.  UW-IMAP utilise @samp{*} comme séparateur, donc ça pourrait être un bon choix.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-anonymous-username
fr: {paramètre de @code{dovecot-configuration}} string auth-anonymous-username

note: type: deftypevr
en: Username to use for users logging in with ANONYMOUS SASL mechanism.  Defaults to @samp{"anonymous"}.
fr: Nom d'utilisateur à utiliser pour les utilisateurs qui se connectent avec le mécanisme SASL ANONYMOUS.  La valeur par défaut est @samp{"anonymous"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer auth-worker-max-count
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif auth-worker-max-count

note: type: deftypevr
en: Maximum number of dovecot-auth worker processes.  They're used to execute blocking passdb and userdb queries (e.g.@: MySQL and PAM).  They're automatically created and destroyed as needed.  Defaults to @samp{30}.
fr: Nombre maximum de processus de travail dovecot-auth.  Ils sont utilisés pour exécuter des requêtes passdb et userdb bloquantes (p.@: ex.@: MySQL et PAM).  Ils sont créés automatiquement et détruits au besoin.  La valeur par défaut est @samp{30}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-gssapi-hostname
fr: {paramètre de @code{dovecot-configuration}} string auth-gssapi-hostname

note: type: deftypevr
en: Host name to use in GSSAPI principal names.  The default is to use the name returned by gethostname().  Use @samp{$ALL} (with quotes) to allow all keytab entries.  Defaults to @samp{""}.
fr: Nom d'hôte à utiliser dans les noms GSSAPI principaux.  La valeur par défaut est d'utiliser le nom renvoyé par gethostname().  Utilisez @samp{$ALL} (avec des guillemets) pour permettre toutes les entrées keytab.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-krb5-keytab
fr: {paramètre de @code{dovecot-configuration}} string auth-krb5-keytab

note: type: deftypevr
en: Kerberos keytab to use for the GSSAPI mechanism.  Will use the system default (usually @file{/etc/krb5.keytab}) if not specified.  You may need to change the auth service to run as root to be able to read this file.  Defaults to @samp{""}.
fr: Keytab Kerberos à utiliser pour le mécanisme GSSAPI.  Utilisera la valeur par défaut du système (typiquement @file{/etc/krb5.keytab}) s'il n'est pas spécifié.  Vous pourriez avoir besoin de faire en sorte que le service d'authentification tourne en root pour pouvoir lire ce fichier.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean auth-use-winbind?
fr: {paramètre de @code{dovecot-configuration}} boolean auth-use-winbind?

note: type: deftypevr
en: Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and @samp{ntlm-auth} helper.  <doc/wiki/Authentication/Mechanisms/Winbind.txt>.  Defaults to @samp{#f}.
fr: Effectue l'authentification NTLM et GSS-SPNEGO avec le démon winbind de Samba et l'utilitaire @samp{ntlm-auth}.  <doc/wiki/Authentication/Mechanisms/Winbind.txt>.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} file-name auth-winbind-helper-path
fr: {paramètre de @code{dovecot-configuration}} file-name auth-winbind-helper-path

note: type: deftypevr
en: Path for Samba's @samp{ntlm-auth} helper binary.  Defaults to @samp{"/usr/bin/ntlm_auth"}.
fr: Chemin du binaire @samp{ntlm-auth} de samba.  La valeur par défaut est @samp{"/usr/bin/ntlm_auth"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-failure-delay
fr: {paramètre de @code{dovecot-configuration}} string auth-failure-delay

note: type: deftypevr
en: Time to delay before replying to failed authentications.  Defaults to @samp{"2 secs"}.
fr: Durée d'attente avant de répondre à des authentifications échouées.  La valeur par défaut est @samp{"2 secs"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean auth-ssl-require-client-cert?
fr: {paramètre de @code{dovecot-configuration}} boolean auth-ssl-require-client-cert?

note: type: deftypevr
en: Require a valid SSL client certificate or the authentication fails.  Defaults to @samp{#f}.
fr: Requiert un certification client SSL valide ou l'authentification échoue.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean auth-ssl-username-from-cert?
fr: {paramètre de @code{dovecot-configuration}} boolean auth-ssl-username-from-cert?

note: type: deftypevr
en: Take the username from client's SSL certificate, using @code{X509_NAME_get_text_by_NID()} which returns the subject's DN's CommonName.  Defaults to @samp{#f}.
fr: Prend le nom d'utilisateur du certificat SSL client, avec @code{X509_NAME_get_text_by_NID()} qui renvoie le CommonName du DN du sujet.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list auth-mechanisms
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list auth-mechanisms

note: type: deftypevr
en: List of wanted authentication mechanisms.  Supported mechanisms are: @samp{plain}, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, @samp{ntlm}, @samp{rpa}, @samp{apop}, @samp{anonymous}, @samp{gssapi}, @samp{otp}, @samp{skey}, and @samp{gss-spnego}.  NOTE: See also @samp{disable-plaintext-auth} setting.
fr: Liste des mécanismes d'authentification souhaités.  Les mécanismes supportés sont : @samp{plain}, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, @samp{ntlm}, @samp{rpa}, @samp{apop}, @samp{anonymous}, @samp{gssapi}, @samp{otp}, @samp{skey} et @samp{gss-spnego}.  Remarquez : Voir aussi le paramètre @samp{disable-plaintext-auth}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list director-servers
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list director-servers

note: type: deftypevr
en: List of IPs or hostnames to all director servers, including ourself.  Ports can be specified as ip:port.  The default port is the same as what director service's @samp{inet-listener} is using.  Defaults to @samp{()}.
fr: Liste des IP ou des noms d'hôtes des serveurs directeurs, dont soi-même.  Les ports peuvent être spécifiés avec ip:port.  Le port par défaut est le même que le @samp{inet-listener} du service directeur.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list director-mail-servers
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list director-mail-servers

note: type: deftypevr
en: List of IPs or hostnames to all backend mail servers.  Ranges are allowed too, like 10.0.0.10-10.0.0.30.  Defaults to @samp{()}.
fr: Liste des IP ou des noms d'hôtes de tous les serveurs de courriel de la grappe.  Les intervalles sont aussi permis, comme 10.0.0.10-10.0.0.30.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string director-user-expire
fr: {paramètre de @code{dovecot-configuration}} string director-user-expire

note: type: deftypevr
en: How long to redirect users to a specific server after it no longer has any connections.  Defaults to @samp{"15 min"}.
fr: Combien de temps avant de rediriger les utilisateurs à un serveur spécifique après qu'il n'y a plus de connexion.  La valeur par défaut est @samp{"15 min"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string director-username-hash
fr: {paramètre de @code{dovecot-configuration}} string director-username-hash

note: type: deftypevr
en: How the username is translated before being hashed.  Useful values include %Ln if user can log in with or without @@domain, %Ld if mailboxes are shared within domain.  Defaults to @samp{"%Lu"}.
fr: La manière de traduire le nom d'utilisateur avant de le hasher.  Les valeurs utiles comprennent %Ln si l'utilisateur peut se connecter avec ou sans @@domain, %Ld si les boîtes aux lettres sont partagées dans le domaine.  La valeur par défaut est @samp{"%Lu"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string log-path
fr: {paramètre de @code{dovecot-configuration}} string log-path

note: type: deftypevr
en: Log file to use for error messages.  @samp{syslog} logs to syslog, @samp{/dev/stderr} logs to stderr.  Defaults to @samp{"syslog"}.
fr: Fichier de journal à utiliser pour les messages d'erreur.  @samp{syslog} journalise vers syslog, @samp{/dev/stderr} vers la sortie d'erreur.  La valeur par défaut est @samp{"syslog"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string info-log-path
fr: {paramètre de @code{dovecot-configuration}} string info-log-path

note: type: deftypevr
en: Log file to use for informational messages.  Defaults to @samp{log-path}.  Defaults to @samp{""}.
fr: Fichier de journal à utiliser pour les messages d'information.  La valeur par défaut est @samp{log-path}.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string debug-log-path
fr: {paramètre de @code{dovecot-configuration}} string debug-log-path

note: type: deftypevr
en: Log file to use for debug messages.  Defaults to @samp{info-log-path}.  Defaults to @samp{""}.
fr: Fichier de journal à utiliser pour les messages de débogage.  La valeur par défaut est @samp{info-log-path}.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string syslog-facility
fr: {paramètre de @code{dovecot-configuration}} string syslog-facility

note: type: deftypevr
en: Syslog facility to use if you're logging to syslog.  Usually if you don't want to use @samp{mail}, you'll use local0..local7.  Also other standard facilities are supported.  Defaults to @samp{"mail"}.
fr: Dispositif syslog à utiliser si vous journalisez avec syslog.  Normalement si vous ne voulez pas utiliser @samp{mail}, vous voudrez utiliser local0..local7.  D'autres dispositifs standard sont supportés.  La valeur par défaut est @samp{"mail"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean auth-verbose?
fr: {paramètre de @code{dovecot-configuration}} boolean auth-verbose?

note: type: deftypevr
en: Log unsuccessful authentication attempts and the reasons why they failed.  Defaults to @samp{#f}.
fr: Indique s'il faut enregistrer les tentatives de connexion échouées et la raison de leur échec.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string auth-verbose-passwords
fr: {paramètre de @code{dovecot-configuration}} string auth-verbose-passwords

note: type: deftypevr
en: In case of password mismatches, log the attempted password.  Valid values are no, plain and sha1.  sha1 can be useful for detecting brute force password attempts vs.  user simply trying the same password over and over again.  You can also truncate the value to n chars by appending ":n" (e.g.@: sha1:6).  Defaults to @samp{"no"}.
fr: Dans le cas où le mot de passe n'était pas correct, indique s'il faut enregistrer le mauvais mot de passe. Les valeurs valides sont « no », « plain » et « sha1 ».  Il peut être utile d'indiquer « sha1 » pour discriminer des attaques par force brute d'utilisateurs qui réessayent encore et encore le même mot de passe.  Vous pouvez aussi tronquer la valeur à n caractères en ajoutant « :n » (p.@: ex.@: « sha1:6 »).  La valeur par défaut est @samp{"no"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean auth-debug?
fr: {paramètre de @code{dovecot-configuration}} boolean auth-debug?

note: type: deftypevr
en: Even more verbose logging for debugging purposes.  Shows for example SQL queries.  Defaults to @samp{#f}.
fr: Journaux encore plus verbeux pour le débogage.  Cela montre par exemple les requêtes SQL effectuées.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean auth-debug-passwords?
fr: {paramètre de @code{dovecot-configuration}} boolean auth-debug-passwords?

note: type: deftypevr
en: In case of password mismatches, log the passwords and used scheme so the problem can be debugged.  Enabling this also enables @samp{auth-debug}.  Defaults to @samp{#f}.
fr: Dans le cas où le mot de passe était incorrect, indique s'il faut enregistrer les mots de passe et les schémas utilisés pour que le problème puisse être débogué.  Activer cette option active aussi @samp{auth-debug}.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mail-debug?
fr: {paramètre de @code{dovecot-configuration}} boolean mail-debug?

note: type: deftypevr
en: Enable mail process debugging.  This can help you figure out why Dovecot isn't finding your mails.  Defaults to @samp{#f}.
fr: Indique s'il faut activer le débogage du traitement des courriels.  Cela peut vous aider à comprendre pourquoi Dovecot ne trouve pas vos courriels.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean verbose-ssl?
fr: {paramètre de @code{dovecot-configuration}} boolean verbose-ssl?

note: type: deftypevr
en: Show protocol level SSL errors.  Defaults to @samp{#f}.
fr: Indique s'il faut montrer les erreurs au niveau SSL.  La valeur par défaut est  @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string log-timestamp
fr: {paramètre de @code{dovecot-configuration}} string log-timestamp

note: type: deftypevr
en: Prefix for each line written to log file.  % codes are in strftime(3) format.  Defaults to @samp{"\"%b %d %H:%M:%S \""}.
fr: Préfixe à utiliser devant chaque ligne écrite dans le fichier journal.  Les codes % sont au format strftime(3).  La valeur par défaut est @samp{"\"%b %d %H:%M:%S \""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list login-log-format-elements
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list login-log-format-elements

note: type: deftypevr
en: List of elements we want to log.  The elements which have a non-empty variable value are joined together to form a comma-separated string.
fr: Liste des éléments qu'il faut enregistrer.  Les éléments qui ont une variable non vide sont agrégés pour former une chaîne de mots séparés par des virgules.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string login-log-format
fr: {paramètre de @code{dovecot-configuration}} string login-log-format

note: type: deftypevr
en: Login log format.  %s contains @samp{login-log-format-elements} string, %$ contains the data we want to log.  Defaults to @samp{"%$: %s"}.
fr: Format du journal de connexion.  %s contient la chaîne @samp{login-log-format-elements}, %$ contient la donnée à enregistrer.  La valeur par défaut est @samp{"%$: %s"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-log-prefix
fr: {paramètre de @code{dovecot-configuration}} string mail-log-prefix

note: type: deftypevr
en: Log prefix for mail processes.  See doc/wiki/Variables.txt for list of possible variables you can use.  Defaults to @samp{"\"%s(%u)<%@{pid@}><%@{session@}>: \""}.
fr: Préfixe à utiliser devant chaque ligne du fichier de journal pour les processus traitant les courriels.  Voir doc/wiki/Variables.txt pour trouver la liste des variables que vous pouvez utiliser.  La valeur par défaut est @samp{"\"%s(%u)<%@{pid@}><%@{session@}>: \""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string deliver-log-format
fr: {paramètre de @code{dovecot-configuration}} string deliver-log-format

note: type: deftypevr
en: Format to use for logging mail deliveries.  You can use variables:
fr: Format à utiliser pour enregistrer les livraisons de courriels.  Vous pouvez utiliser ces variables :

note: type: table
en: Delivery status message (e.g.@: @samp{saved to INBOX})
fr: Message de statut de la livraison (p.@: ex.@: @samp{saved to INBOX})

note: type: table
en: Subject
fr: Objet

note: type: table
en: From address
fr: Adresse « de »

note: type: table
en: Physical size
fr: Taille physique

note: type: table
en: Virtual size.
fr: Taille virtuelle.

note: type: deftypevr
en: Defaults to @samp{"msgid=%m: %$"}.
fr: La valeur par défaut est @samp{"msgid=%m: %$"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-location
fr: {paramètre de @code{dovecot-configuration}} string mail-location

note: type: deftypevr
en: Location for users' mailboxes.  The default is empty, which means that Dovecot tries to find the mailboxes automatically.  This won't work if the user doesn't yet have any mail, so you should explicitly tell Dovecot the full location.
fr: Emplacement des boîtes à lettre des utilisateurs.  La valeur par défaut est vide, ce qui signifie que Dovecot essaiera de trouver les boîte aux lettres automatiquement.  Cela ne fonctionnera pas si l'utilisateur n'a aucun courriel, donc il vaut mieux indiquer explicitement le bon emplacement à Dovecot.

note: type: deftypevr
en: If you're using mbox, giving a path to the INBOX file (e.g.@: @file{/var/mail/%u}) isn't enough.  You'll also need to tell Dovecot where the other mailboxes are kept.  This is called the @emph{root mail directory}, and it must be the first path given in the @samp{mail-location} setting.
fr: Si vous utilisez mbox, il ne suffit pas de donner le chemin vers le fichier INBOX (p.@: ex.@: @file{/var/mail/%u}).  Vous devrez aussi dire à Dovecot où les autres boîtes aux lettres se trouvent.  Cela s'appelle le « répertoire racine des courriels » et il doit être le premier chemin donné à l'option @samp{mail-location}.

note: type: deftypevr
en: There are a few special variables you can use, e.g.:
fr: Il y a quelques variables spéciales que vous pouvez utiliser, p.@: ex@: :

note: type: table
en: username
fr: nom d'utilisateur

note: type: table
en: user part in user@@domain, same as %u if there's no domain
fr: la partie « utilisateur » dans « utilisateur@@domaine », comme %u s'il n'y a pas de domaine

note: type: table
en: domain part in user@@domain, empty if there's no domain
fr: la partie « domaine » dans « utilisateur@@domaine », vide s'il n'y a pas de domaine

note: type: table
en: home director
fr: répertoire personnel

note: type: deftypevr
en: See doc/wiki/Variables.txt for full list.  Some examples:
fr: Voir doc/wiki/Variables.txt pour la liste complète.  Quelques exemple :

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-uid
fr: {paramètre de @code{dovecot-configuration}} string mail-uid

note: type: deftypevr
en: System user and group used to access mails.  If you use multiple, userdb can override these by returning uid or gid fields.  You can use either numbers or names.  <doc/wiki/UserIds.txt>.  Defaults to @samp{""}.
fr: Utilisateur et groupe système utilisé pour accéder aux courriels.  Si vous utilisez multiple, userdb peut remplacer ces valeurs en renvoyant les champs uid et gid.  Vous pouvez utiliser soit des nombres, soit des noms.  <doc/wiki/UserIds.txt>.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-gid
fr: {paramètre de @code{dovecot-configuration}} string mail-gid

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-privileged-group
fr: {paramètre de @code{dovecot-configuration}} string mail-privileged-group

note: type: deftypevr
en: Group to enable temporarily for privileged operations.  Currently this is used only with INBOX when either its initial creation or dotlocking fails.  Typically this is set to @samp{"mail"} to give access to @file{/var/mail}.  Defaults to @samp{""}.
fr: Groupe à activer temporairement pour les opérations privilégiées.  Actuellement cela est utilisé uniquement avec INBOX lors de sa création initiale et quand le verrouillage échoie.  Typiquement, vous pouvez utiliser @samp{"mail"} pour donner accès à @file{/var/mail}.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-access-groups
fr: {paramètre de @code{dovecot-configuration}} string mail-access-groups

note: type: deftypevr
en: Grant access to these supplementary groups for mail processes.  Typically these are used to set up access to shared mailboxes.  Note that it may be dangerous to set these if users can create symlinks (e.g.@: if @samp{mail} group is set here, @code{ln -s /var/mail ~/mail/var} could allow a user to delete others' mailboxes, or @code{ln -s /secret/shared/box ~/mail/mybox} would allow reading it).  Defaults to @samp{""}.
fr: Donne l'accès à ces groupes supplémentaires aux processus de courriel.  Ils sont typiquement utilisés pour mettre en place l'accès à des boites aux lettres partagées.  Remarquez qu'il peut être dangereux d'utiliser cette option si l'utilisateur peut créer des liens symboliques (p.@: ex.@: si le groupe @samp{mail} est utilisé ici, @code{ln -s /var/mail ~/mail/var} peut permettre à un utilisateur de supprimer les boites aux lettres des autres, ou @code{ln -s /secret/shared/box ~/mail/mybox} lui permettrait de la lire).  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-attribute-dict
fr: {paramètre de @code{dovecot-configuration}} string mail-attribute-dict

note: type: deftypevr
en: The location of a dictionary used to store @code{IMAP METADATA} as defined by @uref{https://tools.ietf.org/html/rfc5464, RFC@tie{}5464}.
fr: L'emplacement d'un dictionnaire utilisé pour stocker les @code{IMAP METADATA} définies par @uref{https://tools.ietf.org/html/rfc5464, RFC@tie{}5464}.

note: type: deftypevr
en: The IMAP METADATA commands are available only if the ``imap'' protocol configuration's @code{imap-metadata?} field is @samp{#t}.
fr: Les commandes IMAP METADATA sont disponibles seulement si le champ @code{imap-metadata?} de la configuration du protocol « imap » vaut @samp{#t}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mail-full-filesystem-access?
fr: {paramètre de @code{dovecot-configuration}} boolean mail-full-filesystem-access?

note: type: deftypevr
en: Allow full file system access to clients.  There's no access checks other than what the operating system does for the active UID/GID@.  It works with both maildir and mboxes, allowing you to prefix mailboxes names with e.g.@: @file{/path/} or @file{~user/}.  Defaults to @samp{#f}.
fr: Permet l'accès complet au système de fichiers pour les clients.  Il n'y a pas de vérification d'accès autres que ce que le système d'exploitation fait avec les UID/GID@.  Cela fonctionne aussi bien avec maildir qu'avec mbox, ce qui vous permet de préfixer les noms des boites aux lettres avec p.@: ex.@: @file{/chemin/} ou @file{~utilisateur/}.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mmap-disable?
fr: {paramètre de @code{dovecot-configuration}} boolean mmap-disable?

note: type: deftypevr
en: Don't use @code{mmap()} at all.  This is required if you store indexes to shared file systems (NFS or clustered file system).  Defaults to @samp{#f}.
fr: Ne pas du tout utiliser @code{mmap()}.  Cela est requis si vous stockez les index dans des systèmes de fichiers partagés (NFS ou clusterfs).  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean dotlock-use-excl?
fr: {paramètre de @code{dovecot-configuration}} boolean dotlock-use-excl?

note: type: deftypevr
en: Rely on @samp{O_EXCL} to work when creating dotlock files.  NFS supports @samp{O_EXCL} since version 3, so this should be safe to use nowadays by default.  Defaults to @samp{#t}.
fr: S'appuyer sur @samp{O_EXCL} lors de la création de fichiers de verrouillage.  NFS supporte @samp{O_EXCL} depuis la version 3, donc cette option est sûre de nos jours.  La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-fsync
fr: {paramètre de @code{dovecot-configuration}} string mail-fsync

note: type: deftypevr
en: When to use fsync() or fdatasync() calls:
fr: Quand utiliser les appels à fsync() ou fdatasync() :

note: type: table
en: Whenever necessary to avoid losing important data
fr: Lorsque cela est nécessaire pour éviter de perdre des données importantes

note: type: table
en: Useful with e.g.@: NFS when @code{write()}s are delayed
fr: Utile lorsque par exemple les @code{write()} de NFS sont retardées

note: type: table
en: Never use it (best performance, but crashes can lose data).
fr: Ne l'utilisez pas (ça a de meilleures performances, mais les crashs font perdre toutes les données).

note: type: deftypevr
en: Defaults to @samp{"optimized"}.
fr: La valeur par défaut est @samp{"optimized"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mail-nfs-storage?
fr: {paramètre de @code{dovecot-configuration}} boolean mail-nfs-storage?

note: type: deftypevr
en: Mail storage exists in NFS@.  Set this to yes to make Dovecot flush NFS caches whenever needed.  If you're using only a single mail server this isn't needed.  Defaults to @samp{#f}.
fr: Le stockage des courriels se fait sur NFS@.  Utilisez cette option pour que Dovecot vide les caches NFS lorsque c'est nécessaire.  Si vous utilisez seulement un simple serveur de courriel, ce n'est pas nécessaire.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mail-nfs-index?
fr: {paramètre de @code{dovecot-configuration}} boolean mail-nfs-index?

note: type: deftypevr
en: Mail index files also exist in NFS@.  Setting this to yes requires @samp{mmap-disable? #t} and @samp{fsync-disable? #f}.  Defaults to @samp{#f}.
fr: Les fichiers d'index de courriels sont sur un système de fichiers NFS@.  Pour utiliser cette option, vous aurez besoin de @samp{mmap-disable? #t} et @samp{fsync-disable? #f}.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string lock-method
fr: {paramètre de @code{dovecot-configuration}} string lock-method

note: type: deftypevr
en: Locking method for index files.  Alternatives are fcntl, flock and dotlock.  Dotlocking uses some tricks which may create more disk I/O than other locking methods.  NFS users: flock doesn't work, remember to change @samp{mmap-disable}.  Defaults to @samp{"fcntl"}.
fr: Méthode de verrouillage des fichiers d'index.  Les alternatives sont fcntl, flock et dotlock.  Le verrouillage-point (dotlocking) utilise des astuces qui peuvent créer plus d'utilisation du disque que les autres méthodes de verrouillage.  Pour les utilisateurs de NFS, flock ne marche pas, et rappelez-vous de modifier @samp{mmap-disable}.  La valeur par défaut est @samp{"fcntl"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} file-name mail-temp-dir
fr: {paramètre de @code{dovecot-configuration}} file-name mail-temp-dir

note: type: deftypevr
en: Directory in which LDA/LMTP temporarily stores incoming mails >128 kB.  Defaults to @samp{"/tmp"}.
fr: Le répertoire dans lequel LDA/LMTP stockent temporairement les courriels de plus de 128 Ko.  La valeur par défaut est @samp{"/tmp"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer first-valid-uid
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif first-valid-uid

note: type: deftypevr
en: Valid UID range for users.  This is mostly to make sure that users can't log in as daemons or other system users.  Note that denying root logins is hardcoded to dovecot binary and can't be done even if @samp{first-valid-uid} is set to 0.  Defaults to @samp{500}.
fr: L'intervalle d'UID valides pour les utilisateurs.  Cette option est surtout utile pour s'assurer que les utilisateurs ne peuvent pas s'authentifier en tant que démon ou qu'un autre utilisateur système.  Remarquez que la connexion en root est interdite en dur dans le binaire de dovecot et qu'on ne peut pas l'autoriser même si @samp{first-valid-uid} vaut 0.  La valeur par défaut est @samp{500}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer last-valid-uid
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif last-valid-uid

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer first-valid-gid
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif first-valid-gid

note: type: deftypevr
en: Valid GID range for users.  Users having non-valid GID as primary group ID aren't allowed to log in.  If user belongs to supplementary groups with non-valid GIDs, those groups are not set.  Defaults to @samp{1}.
fr: Li'ntervalle de GID valides pour les utilisateurs.  Les utilisateurs qui ont un GID non-valide comme numéro de groupe primaire ne peuvent pas se connecter.  Si l'utilisateur appartient à un groupe avec un GID non valide, ce groupe n'est pas utilisable.  La valeur par défaut est @samp{1}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer last-valid-gid
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif last-valid-gid

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer mail-max-keyword-length
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif mail-max-keyword-length

note: type: deftypevr
en: Maximum allowed length for mail keyword name.  It's only forced when trying to create new keywords.  Defaults to @samp{50}.
fr: Longueur maximale autorisée pour les mots-clefs.  Elle n'est utilisée que lors de la création de nouveaux mots-clefs.  La valeur par défaut est @samp{50}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} colon-separated-file-name-list valid-chroot-dirs
fr: {paramètre de @code{dovecot-configuration}} colon-separated-file-name-list valid-chroot-dirs

note: type: deftypevr
en: List of directories under which chrooting is allowed for mail processes (i.e.@: @file{/var/mail} will allow chrooting to @file{/var/mail/foo/bar} too).  This setting doesn't affect @samp{login-chroot} @samp{mail-chroot} or auth chroot settings.  If this setting is empty, @samp{/./} in home dirs are ignored.  WARNING: Never add directories here which local users can modify, that may lead to root exploit.  Usually this should be done only if you don't allow shell access for users.  <doc/wiki/Chrooting.txt>.  Defaults to @samp{()}.
fr: Liste des répertoires sous lesquels le chroot est permis pour les processus de traitement des courriels (c.-à-d.@: @file{/var/mail} permettra aussi de se chrooter dans @file{/var/mail/toto/titi}).  Ce paramètre n'affecte pas @samp{login-chroot} @samp{mail-chroot} ou les paramètres de chroot de l'authentification.  Si ce paramètre est vide, @samp{/./} dans les répertoires personnels sont ignorés.  ATTENTION : n'ajoutez jamais de répertoires ici que les utilisateurs locaux peuvent modifier, puisque ça pourrait permettre d'escalader les privilèges.  Normalement vous ne devriez le faire que si les utilisateurs n'ont pas d'accès shell.  <doc/wiki/Chrooting.txt>.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-chroot
fr: {paramètre de @code{dovecot-configuration}} string mail-chroot

note: type: deftypevr
en: Default chroot directory for mail processes.  This can be overridden for specific users in user database by giving @samp{/./} in user's home directory (e.g.@: @samp{/home/./user} chroots into @file{/home}).  Note that usually there is no real need to do chrooting, Dovecot doesn't allow users to access files outside their mail directory anyway.  If your home directories are prefixed with the chroot directory, append @samp{/.} to @samp{mail-chroot}.  <doc/wiki/Chrooting.txt>.  Defaults to @samp{""}.
fr: Répertoire chroot par défaut pour les processus de traitement des courriels.  Cela peut être modifié pour des utilisateurs particuliers dans la base de donnée en donnant @samp{/./} dans le répertoire personnel (p.@: ex.@: @samp{/home/./utilisateur} permet de se chrooter dans @file{/home}).  Remarquez qu'il n'y a d'habitude pas besoin de se chrooter.  Dovecot ne permet pas aux utilisateurs d'accéder aux fichiers en dehors de leur répertoire de courriels de toute façon.  Si vos répertoires personnels sont préfixés par le répertoire de chroot, ajoutez @samp{/.} à @samp{mail-chroot}.  <doc/wiki/Chrooting.txt>.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} file-name auth-socket-path
fr: {paramètre de @code{dovecot-configuration}} file-name auth-socket-path

note: type: deftypevr
en: UNIX socket path to master authentication server to find users.  This is used by imap (for shared users) and lda.  Defaults to @samp{"/var/run/dovecot/auth-userdb"}.
fr: Chemin de socket UNIX vers le serveur d'authentification maître pour trouver les utilisateurs.  C'est utilisé par imap (pour les utilisateurs partagés) et lda.  La valeur par défaut est @samp{"/var/run/dovecot/auth-userdb"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} file-name mail-plugin-dir
fr: {paramètre de @code{dovecot-configuration}} file-name mail-plugin-dir

note: type: deftypevr
en: Directory where to look up mail plugins.  Defaults to @samp{"/usr/lib/dovecot"}.
fr: Répertoire où trouver les greffons.  La valeur par défaut est @samp{"/usr/lib/dovecot"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list mail-plugins
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list mail-plugins

note: type: deftypevr
en: List of plugins to load for all services.  Plugins specific to IMAP, LDA, etc.@: are added to this list in their own .conf files.  Defaults to @samp{()}.
fr: Liste des greffons à charger pour tous les services.  Les greffons spécifiques à IMAP, LDA, etc.@: sont ajoutés à cette liste dans leur propre fichiers .conf.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer mail-cache-min-mail-count
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif mail-cache-min-mail-count

note: type: deftypevr
en: The minimum number of mails in a mailbox before updates are done to cache file.  This allows optimizing Dovecot's behavior to do less disk writes at the cost of more disk reads.  Defaults to @samp{0}.
fr: Le nombre minimal de courriels dans une boîte aux lettres avant de mettre à jour le fichier de cache.  Cela permet d'optimiser le comportement de Dovecot pour qu'il fasse moins d'écriture disque contre plus de lecture disque.  La valeur par défaut est @samp{0}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mailbox-idle-check-interval
fr: {paramètre de @code{dovecot-configuration}} string mailbox-idle-check-interval

note: type: deftypevr
en: When IDLE command is running, mailbox is checked once in a while to see if there are any new mails or other changes.  This setting defines the minimum time to wait between those checks.  Dovecot can also use dnotify, inotify and kqueue to find out immediately when changes occur.  Defaults to @samp{"30 secs"}.
fr: Lorsque la commande IDLE est lancée, la boîte aux lettres est vérifiée de temps en temps pour voir s'il y a de nouveaux messages ou d'autres changements.  Ce paramètre défini le temps d'attente minimum entre deux vérifications.  Dovecot peut aussi utilise dnotify, inotify et kqueue pour trouver immédiatement les changements.  La valeur par défaut est @samp{"30 secs"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mail-save-crlf?
fr: {paramètre de @code{dovecot-configuration}} boolean mail-save-crlf?

note: type: deftypevr
en: Save mails with CR+LF instead of plain LF@.  This makes sending those mails take less CPU, especially with sendfile() syscall with Linux and FreeBSD@.  But it also creates a bit more disk I/O which may just make it slower.  Also note that if other software reads the mboxes/maildirs, they may handle the extra CRs wrong and cause problems.  Defaults to @samp{#f}.
fr: Sauvegarder les courriels avec CR+LF plutôt que seulement LF@.  Cela permet de consommer moins de CPU en envoyant ces courriels, surtout avec l'appel système sendfile() de Linux et FreeBSD@.  Mais cela crée un peu plus d'utilisation du disque, ce qui peut aussi le ralentir.  Remarquez aussi que si d'autres logiciels lisent les mbox/maildirs, ils peuvent se tromper dans leur traitement de ces CR supplémentaires et causer des problèmes.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean maildir-stat-dirs?
fr: {paramètre de @code{dovecot-configuration}} boolean maildir-stat-dirs?

note: type: deftypevr
en: By default LIST command returns all entries in maildir beginning with a dot.  Enabling this option makes Dovecot return only entries which are directories.  This is done by stat()ing each entry, so it causes more disk I/O.  (For systems setting struct @samp{dirent->d_type} this check is free and it's done always regardless of this setting).  Defaults to @samp{#f}.
fr: Par défaut la commande LIST renvoie toutes les entrées du maildir qui commencent par un point.  Activer cette option permet à Dovecot de renvoyer uniquement les entrées qui sont des répertoires.  Cela se fait avec stat() sur chaque entrée, ce qui cause plus d'utilisation du disque.  For systems setting struct @samp{dirent->d_type} this check is free and it's done always regardless of this setting).  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean maildir-copy-with-hardlinks?
fr: {paramètre de @code{dovecot-configuration}} boolean maildir-copy-with-hardlinks?

note: type: deftypevr
en: When copying a message, do it with hard links whenever possible.  This makes the performance much better, and it's unlikely to have any side effects.  Defaults to @samp{#t}.
fr: Lors de la copie d'un message, le faire avec des liens en dur si possible.  Cela améliore un peu la performance et n'a que peu de chance d'avoir des effets secondaires.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean maildir-very-dirty-syncs?
fr: {paramètre de @code{dovecot-configuration}} boolean maildir-very-dirty-syncs?

note: type: deftypevr
en: Assume Dovecot is the only MUA accessing Maildir: Scan cur/ directory only when its mtime changes unexpectedly or when we can't find the mail otherwise.  Defaults to @samp{#f}.
fr: Suppose que Dovecot est le seul MUA qui accède à Maildir : scanne le répertoire cur/ seulement lorsque son mtime change de manière inattendue ou lorsqu'il ne peut pas trouver le courriel autrement.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list mbox-read-locks
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list mbox-read-locks

note: type: deftypevr
en: Which locking methods to use for locking mbox.  There are four available:
fr: La méthode de verrouillage à utiliser pour verrouiller le boîtes aux lettres mbox.  Il y en a quatre :

note: type: table
en: Create <mailbox>.lock file.  This is the oldest and most NFS-safe solution.  If you want to use /var/mail/ like directory, the users will need write access to that directory.
fr: Crée un fichier <mailbox>.lock.  C'est la solution la plus ancienne et la plus sûr pour NFS.  Si vous voulez utiliser /var/mail/, les utilisateurs auront besoin de l'accès en écriture à ce répertoire.

note: type: table
en: Same as dotlock, but if it fails because of permissions or because there isn't enough disk space, just skip it.
fr: Comme pour dotlock, mais si elle échoue à cause d'un problème de permission ou parce qu'il n'y a pas assez d'espace disque, l'ignore.

note: type: table
en: Use this if possible.  Works with NFS too if lockd is used.
fr: Utilisez cette méthode si possible.  Elle fonctionne aussi avec NFS si vous utilisez lockd.

note: type: table
en: May not exist in all systems.  Doesn't work with NFS.
fr: Peut ne pas exister sur tous les systèmes.  Ne fonctionne pas avec NFS.

note: type: deftypevr
en: You can use multiple locking methods; if you do the order they're declared in is important to avoid deadlocks if other MTAs/MUAs are using multiple locking methods as well.  Some operating systems don't allow using some of them simultaneously.
fr: Vous pouvez utiliser plusieurs méthodes de verrouillage ; dans ce cas l'ordre dans lequel elles sont déclarées est important pour éviter des interblocages si d'autres MTA/MUA utilisent aussi plusieurs méthodes.  Certains systèmes d'exploitation ne permettent pas d'utiliser certaines méthodes en même temps.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list mbox-write-locks
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list mbox-write-locks

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mbox-lock-timeout
fr: {paramètre de @code{dovecot-configuration}} string mbox-lock-timeout

note: type: deftypevr
en: Maximum time to wait for lock (all of them) before aborting.  Defaults to @samp{"5 mins"}.
fr: Temps d'attente maximal pour un verrou (tous les verrous) avant d'abandonner.  La valeur par défaut est @samp{"5 mins"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mbox-dotlock-change-timeout
fr: {paramètre de @code{dovecot-configuration}} string mbox-dotlock-change-timeout

note: type: deftypevr
en: If dotlock exists but the mailbox isn't modified in any way, override the lock file after this much time.  Defaults to @samp{"2 mins"}.
fr: Si le fichier dotlock existe mais que la boîte aux lettres n'est pas modifiée, remplacer le fichier de verrouillage après ce temps d'attente.  La valeur par défaut est @samp{"2 mins"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mbox-dirty-syncs?
fr: {paramètre de @code{dovecot-configuration}} boolean mbox-dirty-syncs?

note: type: deftypevr
en: When mbox changes unexpectedly we have to fully read it to find out what changed.  If the mbox is large this can take a long time.  Since the change is usually just a newly appended mail, it'd be faster to simply read the new mails.  If this setting is enabled, Dovecot does this but still safely fallbacks to re-reading the whole mbox file whenever something in mbox isn't how it's expected to be.  The only real downside to this setting is that if some other MUA changes message flags, Dovecot doesn't notice it immediately.  Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK commands.  Defaults to @samp{#t}.
fr: Lorsqu'un mbox change ne manière inattendue, il faut le lire en entier pour savoir ce qui a changé.  Si le mbox est assez grand cela peut prendre beaucoup de temps.  Comme le changement est habituellement un simple courriel supplémentaire, il serait plus rapide de lire le nouveaux courriels.  Si ce paramètre est activé, Dovecot fait cela mais revient toujours à relire le fichier mbox complet si le fichier n'est pas comme attendu.  Le seul réel inconvénient à ce paramètre est que certains MUA changent les drapeaux des messages, et dans ce cas Dovecot ne s'en rend pas immédiatement compte.  Remarquez qu'une synchronisation complète est effectuée avec les commandes SELECT, EXAMINE, EXPUNGE et CHECK.  La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mbox-very-dirty-syncs?
fr: {paramètre de @code{dovecot-configuration}} boolean mbox-very-dirty-syncs?

note: type: deftypevr
en: Like @samp{mbox-dirty-syncs}, but don't do full syncs even with SELECT, EXAMINE, EXPUNGE or CHECK commands.  If this is set, @samp{mbox-dirty-syncs} is ignored.  Defaults to @samp{#f}.
fr: Comme @samp{mbox-dirty-syncs}, mais ne synchronise pas complètement même avec les commandes SELECT, EXAMINE, EXPUNGE ou CHECK.  Si l'option n'est pas activée, @samp{mbox-dirty-syncs} est ignorée.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mbox-lazy-writes?
fr: {paramètre de @code{dovecot-configuration}} boolean mbox-lazy-writes?

note: type: deftypevr
en: Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK commands and when closing the mailbox).  This is especially useful for POP3 where clients often delete all mails.  The downside is that our changes aren't immediately visible to other MUAs.  Defaults to @samp{#t}.
fr: Attendre avant d'écrire les en-têtes mbox jusqu'à la prochaine synchronisation des écritures (les commandes EXPUNGE et CHECK et quand on ferme la boîte aux lettres).  C'est surtout utile pour POP3 où les clients suppriment souvent tous les courriels.  L'inconvénient c'est que vos changements ne sont pas immédiatement visibles pour les autres MUA.  La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer mbox-min-index-size
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif mbox-min-index-size

note: type: deftypevr
en: If mbox size is smaller than this (e.g.@: 100k), don't write index files.  If an index file already exists it's still read, just not updated.  Defaults to @samp{0}.
fr: Si la taille du fichier mbox est plus petite que cela (p.@: ex.@: 100k), ne pas écrire de fichier d'index.  Si un fichier d'index existe déjà il est toujours lu, mais pas mis à jour.  La valeur par défaut est @samp{0}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer mdbox-rotate-size
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif mdbox-rotate-size

note: type: deftypevr
en: Maximum dbox file size until it's rotated.  Defaults to @samp{10000000}.
fr: Taille du fichier dbox maximale avant rotation.  La valeur par défaut est @samp{10000000}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mdbox-rotate-interval
fr: {paramètre de @code{dovecot-configuration}} string mdbox-rotate-interval

note: type: deftypevr
en: Maximum dbox file age until it's rotated.  Typically in days.  Day begins from midnight, so 1d = today, 2d = yesterday, etc.  0 = check disabled.  Defaults to @samp{"1d"}.
fr: Âge maximum du fichier dbox avant rotation.  Typiquement en jours.  Les jours commencent à minuit, donc 1d signifie aujourd'hui, 2d pour hier, etc.  0 pour désactiver la vérification.  La valeur par défaut est @samp{"1d"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean mdbox-preallocate-space?
fr: {paramètre de @code{dovecot-configuration}} boolean mdbox-preallocate-space?

note: type: deftypevr
en: When creating new mdbox files, immediately preallocate their size to @samp{mdbox-rotate-size}.  This setting currently works only in Linux with some file systems (ext4, xfs).  Defaults to @samp{#f}.
fr: Lors de la création des fichiers mdbox, préallouer immédiatement leur taille à @samp{mdbox-rotate-size}.  Ce paramètre ne fonctionne actuellement que dans Linux avec certains systèmes de fichiers (ext4, xfs).  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-attachment-dir
fr: {paramètre de @code{dovecot-configuration}} string mail-attachment-dir

note: type: deftypevr
en: sdbox and mdbox support saving mail attachments to external files, which also allows single instance storage for them.  Other backends don't support this for now.
fr: sdbox et mdbox supportent la sauvegarde des pièces-jointes dans des fichiers externes, ce qui permet de les stocker une seule fois.  Les autres moteurs ne le supportent pas pour le moment.

note: type: deftypevr
en: WARNING: This feature hasn't been tested much yet.  Use at your own risk.
fr: ATTENTION : Cette fonctionnalité n'a pas été beaucoup testée.  Utilisez-la à vos risques et périls.

note: type: deftypevr
en: Directory root where to store mail attachments.  Disabled, if empty.  Defaults to @samp{""}.
fr: Racine du répertoire où stocker les pièces-jointes.  Désactivé si vide.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer mail-attachment-min-size
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif mail-attachment-min-size

note: type: deftypevr
en: Attachments smaller than this aren't saved externally.  It's also possible to write a plugin to disable saving specific attachments externally.  Defaults to @samp{128000}.
fr: Les pièces-jointes plus petites que cela ne sont pas enregistrées à part.  Il est aussi possible d'écrire un greffon pour désactiver l'enregistrement externe de certaines pièces-jointes spécifiques.  La valeur par défaut est @samp{128000}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-attachment-fs
fr: {paramètre de @code{dovecot-configuration}} string mail-attachment-fs

note: type: deftypevr
en: File system backend to use for saving attachments:
fr: Moteur du système de fichier à utiliser pour sauvegarder les pièces-jointes :

note: type: table
en: No SiS done by Dovecot (but this might help FS's own deduplication)
fr: Pas de SiS (single instance storage) par Dovecot (mais cela peut aider la déduplication du système de fichier)

note: type: table
en: SiS with immediate byte-by-byte comparison during saving
fr: SiS avec comparaison bit-à-bit immédiate pendant la sauvegarde

note: type: table
en: SiS with delayed comparison and deduplication.
fr: SiS avec déduplication et comparaison différées.

note: type: deftypevr
en: Defaults to @samp{"sis posix"}.
fr: La valeur par défaut est @samp{"sis posix"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string mail-attachment-hash
fr: {paramètre de @code{dovecot-configuration}} string mail-attachment-hash

note: type: deftypevr
en: Hash format to use in attachment filenames.  You can add any text and variables: @code{%@{md4@}}, @code{%@{md5@}}, @code{%@{sha1@}}, @code{%@{sha256@}}, @code{%@{sha512@}}, @code{%@{size@}}.  Variables can be truncated, e.g.@: @code{%@{sha256:80@}} returns only first 80 bits.  Defaults to @samp{"%@{sha1@}"}.
fr: Format de hash à utiliser dans les noms de fichiers des pièces-jointes.  Vous pouvez ajouter n'importe quel texte ou variable : @code{%@{md4@}}, @code{%@{md5@}}, @code{%@{sha1@}}, @code{%@{sha256@}}, @code{%@{sha512@}}, @code{%@{size@}}.  Les variables peuvent être tronquées, p.@: ex.@: @code{%@{sha256:80@}} renvoie seulement les 80 premiers bits.  La valeur par défaut est @samp{"%@{sha1@}"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer default-process-limit
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif default-process-limit

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer default-client-limit
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif default-client-limit

note: type: deftypevr
en: Defaults to @samp{1000}.
fr: La valeur par défaut est @samp{1000}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer default-vsz-limit
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif default-vsz-limit

note: type: deftypevr
en: Default VSZ (virtual memory size) limit for service processes.  This is mainly intended to catch and kill processes that leak memory before they eat up everything.  Defaults to @samp{256000000}.
fr: Limite VSZ (taille mémoire virtuelle) par défaut pour les processus de service.  C'est surtout pour attraper et tuer les processus qui font fuiter la mémoire avant qu'ils ne l'utilisent en entier.  La valeur par défaut est @samp{256000000}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string default-login-user
fr: {paramètre de @code{dovecot-configuration}} string default-login-user

note: type: deftypevr
en: Login user is internally used by login processes.  This is the most untrusted user in Dovecot system.  It shouldn't have access to anything at all.  Defaults to @samp{"dovenull"}.
fr: Utilisateur de connexion utilisé en interne par les processus de connexion.  C'est l'utilisateur avec la confiance minimale pour Dovecot.  Il ne devrait avoir accès à rien du tout.  La valeur par défaut est @samp{"dovenull"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string default-internal-user
fr: {paramètre de @code{dovecot-configuration}} string default-internal-user

note: type: deftypevr
en: Internal user is used by unprivileged processes.  It should be separate from login user, so that login processes can't disturb other processes.  Defaults to @samp{"dovecot"}.
fr: Utilisateur utilisé en interne par les processus non privilégiés.  Il devrait être différent de l'utilisateur de connexion, pour que les processus de connexion ne puissent pas perturber les autres processus.  La valeur par défaut est @samp{"dovecot"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string ssl?
fr: {paramètre de @code{dovecot-configuration}} string ssl?

note: type: deftypevr
en: SSL/TLS support: yes, no, required.  <doc/wiki/SSL.txt>.  Defaults to @samp{"required"}.
fr: Support SSL/TLS : yes, no, required.  <doc/wiki/SSL.txt>.  La valeur par défaut est @samp{"required"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string ssl-cert
fr: {paramètre de @code{dovecot-configuration}} string ssl-cert

note: type: deftypevr
en: PEM encoded X.509 SSL/TLS certificate (public key).  Defaults to @samp{"</etc/dovecot/default.pem"}.
fr: Certificat SSL/TLS X.509 encodé en PEM (clef publique).  La valeur par défaut est @samp{"</etc/dovecot/default.pem"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string ssl-key
fr: {paramètre de @code{dovecot-configuration}} string ssl-key

note: type: deftypevr
en: PEM encoded SSL/TLS private key.  The key is opened before dropping root privileges, so keep the key file unreadable by anyone but root.  Defaults to @samp{"</etc/dovecot/private/default.pem"}.
fr: Clef privée SSL/TLS encodée en PEM.  La clef est ouverte avant l'abandon des privilèges root, donc laissez-la non-lisible pour les utilisateurs.  La valeur par défaut est @samp{"</etc/dovecot/private/default.pem"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string ssl-key-password
fr: {paramètre de @code{dovecot-configuration}} string ssl-key-password

note: type: deftypevr
en: If key file is password protected, give the password here.  Alternatively give it when starting dovecot with -p parameter.  Since this file is often world-readable, you may want to place this setting instead to a different.  Defaults to @samp{""}.
fr: Si le fichier de clef est protégé par un mot de passe, donnez-le ici.  Autrement, donnez-le en démarrant dovecot avec le paramètre -p.  Comme ce fichier est souvent lisible pour tout le monde, vous pourriez vouloir placer ce paramètre dans un autre fichier.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string ssl-ca
fr: {paramètre de @code{dovecot-configuration}} string ssl-ca

note: type: deftypevr
en: PEM encoded trusted certificate authority.  Set this only if you intend to use @samp{ssl-verify-client-cert? #t}.  The file should contain the CA certificate(s) followed by the matching CRL(s).  (e.g.@: @samp{ssl-ca </etc/ssl/certs/ca.pem}).  Defaults to @samp{""}.
fr: Certificat de l'autorité de confiance encodé en PEM.  Indiquez cette valeur si vous voulez utiliser @samp{ssl-verify-client-cert? #t}.  Le fichier devrait contenir les certificats de CA suivi par les CRL correspondants (p.@: ex.@: @samp{ssl-ca </etc/ssl/certs/ca.pem}).  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean ssl-require-crl?
fr: {paramètre de @code{dovecot-configuration}} boolean ssl-require-crl?

note: type: deftypevr
en: Require that CRL check succeeds for client certificates.  Defaults to @samp{#t}.
fr: Indique si les certificats clients doivent réussir la vérification du CRL.  La valeur par défaut est @samp{#t}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean ssl-verify-client-cert?
fr: {paramètre de @code{dovecot-configuration}} boolean ssl-verify-client-cert?

note: type: deftypevr
en: Request client to send a certificate.  If you also want to require it, set @samp{auth-ssl-require-client-cert? #t} in auth section.  Defaults to @samp{#f}.
fr: Demande aux clients d'envoyer un certificat.  Si vous voulez aussi le requérir, indiquez @samp{auth-ssl-require-client-cert? #t} dans la section auth.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string ssl-cert-username-field
fr: {paramètre de @code{dovecot-configuration}} string ssl-cert-username-field

note: type: deftypevr
en: Which field from certificate to use for username.  commonName and x500UniqueIdentifier are the usual choices.  You'll also need to set @samp{auth-ssl-username-from-cert? #t}.  Defaults to @samp{"commonName"}.
fr: Le champ du certificat à utiliser pour le nom d'utilisateur.  Les choix habituels sont commonName et X500UniqueIdentifier.  Vous devrez aussi indiquer @samp{auth-ssl-username-from-cert? #t}.  La valeur par défaut est @samp{"commonName"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string ssl-min-protocol
fr: {paramètre de @code{dovecot-configuration}} string ssl-min-protocol

note: type: deftypevr
en: Minimum SSL protocol version to accept.  Defaults to @samp{"TLSv1"}.
fr: Version minimale de SSL à accepter.  La valeur par défaut est @samp{"TLSv1"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string ssl-cipher-list
fr: {paramètre de @code{dovecot-configuration}} string ssl-cipher-list

note: type: deftypevr
en: SSL ciphers to use.  Defaults to @samp{"ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@@STRENGTH"}.
fr: Méthodes de chiffrement à utiliser.  La valeur par défaut est @samp{"ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@@STRENGTH"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string ssl-crypto-device
fr: {paramètre de @code{dovecot-configuration}} string ssl-crypto-device

note: type: deftypevr
en: SSL crypto device to use, for valid values run "openssl engine".  Defaults to @samp{""}.
fr: Moteur cryptographique SSL à utiliser.  Pour les valeur valides, lancez « openssl engine ».  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string postmaster-address
fr: {paramètre de @code{dovecot-configuration}} string postmaster-address

note: type: deftypevr
en: Address to use when sending rejection mails.  %d expands to recipient domain.  Defaults to @samp{"postmaster@@%d"}.
fr: Adresse à utiliser pour envoyer les courriels de rejet.  %d correspond au domaine du destinataire.  La valeur par défaut est @samp{"postmaster@@%d"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string hostname
fr: {paramètre de @code{dovecot-configuration}} string hostname

note: type: deftypevr
en: Hostname to use in various parts of sent mails (e.g.@: in Message-Id)  and in LMTP replies.  Default is the system's real hostname@@domain.  Defaults to @samp{""}.
fr: Nom d'hôte à utiliser dans diverses parties des courriels envoyés (p.@: ex.@: dans Message-Id) et dans les réponses LMTP.  La valeur par défaut est le nomdhôte@@domaine réel du système.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean quota-full-tempfail?
fr: {paramètre de @code{dovecot-configuration}} boolean quota-full-tempfail?

note: type: deftypevr
en: If user is over quota, return with temporary failure instead of bouncing the mail.  Defaults to @samp{#f}.
fr: Si l'utilisateur dépasse le quota, renvoie un échec temporaire au lieu de rejeter le courriel.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} file-name sendmail-path
fr: {paramètre de @code{dovecot-configuration}} file-name sendmail-path

note: type: deftypevr
en: Binary to use for sending mails.  Defaults to @samp{"/usr/sbin/sendmail"}.
fr: Binaire à utiliser pour envoyer des courriels.  La valeur par défaut est @samp{"/usr/sbin/sendmail"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string submission-host
fr: {paramètre de @code{dovecot-configuration}} string submission-host

note: type: deftypevr
en: If non-empty, send mails via this SMTP host[:port] instead of sendmail.  Defaults to @samp{""}.
fr: Si la valeur est non vide, envoyer les courriels à ce serveur SMTP hôte[:port] au lieu de sendmail.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string rejection-subject
fr: {paramètre de @code{dovecot-configuration}} string rejection-subject

note: type: deftypevr
en: Subject: header to use for rejection mails.  You can use the same variables as for @samp{rejection-reason} below.  Defaults to @samp{"Rejected: %s"}.
fr: En-tête d'objet à utiliser pour les courriels de rejet.  Vous pouvez utiliser les mêmes variables que pour @samp{rejection-reason} ci-dessous.  La valeur par défaut est @samp{"Rejected: %s"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string rejection-reason
fr: {paramètre de @code{dovecot-configuration}} string rejection-reason

note: type: deftypevr
en: Human readable error message for rejection mails.  You can use variables:
fr: Message d'erreur pour les humains dans les courriels de rejet.  Vous pouvez utiliser ces variables :

note: type: table
en: reason
fr: raison

note: type: table
en: original subject
fr: objet du courriel de départ

note: type: table
en: recipient
fr: destinataire

note: type: deftypevr
en: Defaults to @samp{"Your message to <%t> was automatically rejected:%n%r"}.
fr: La valeur par défaut est @samp{"Your message to <%t> was automatically rejected:%n%r"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string recipient-delimiter
fr: {paramètre de @code{dovecot-configuration}} string recipient-delimiter

note: type: deftypevr
en: Delimiter character between local-part and detail in email address.  Defaults to @samp{"+"}.
fr: Caractère de délimitation entre la partie locale et le détail des adresses de courriel.  La valeur par défaut est @samp{"+"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string lda-original-recipient-header
fr: {paramètre de @code{dovecot-configuration}} string lda-original-recipient-header

note: type: deftypevr
en: Header where the original recipient address (SMTP's RCPT TO: address) is taken from if not available elsewhere.  With dovecot-lda -a parameter overrides this.  A commonly used header for this is X-Original-To.  Defaults to @samp{""}.
fr: En-tête où l'adresse du destinataire d'origine (l'adresse RCPT TO de SMTP) est récupérée si elle n'est pas disponible ailleurs.  Le paramètre -a de dovecot-lda le remplace.  L'en-tête couramment utilisée pour cela est X-Original-To.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean lda-mailbox-autocreate?
fr: {paramètre de @code{dovecot-configuration}} boolean lda-mailbox-autocreate?

note: type: deftypevr
en: Should saving a mail to a nonexistent mailbox automatically create it?.  Defaults to @samp{#f}.
fr: Sauvegarder un courriel dans un fichier qui n'existe pas devrait-il le créer ?  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} boolean lda-mailbox-autosubscribe?
fr: {paramètre de @code{dovecot-configuration}} boolean lda-mailbox-autosubscribe?

note: type: deftypevr
en: Should automatically created mailboxes be also automatically subscribed?.  Defaults to @samp{#f}.
fr: Devrait-on aussi se souscrire aux boîtes aux lettres nouvellement créées ?  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} non-negative-integer imap-max-line-length
fr: {paramètre de @code{dovecot-configuration}} entier-non-négatif imap-max-line-length

note: type: deftypevr
en: Maximum IMAP command line length.  Some clients generate very long command lines with huge mailboxes, so you may need to raise this if you get "Too long argument" or "IMAP command line too large" errors often.  Defaults to @samp{64000}.
fr: Longueur maximale de la ligne de commande IMAP.  Certains clients génèrent des lignes de commandes très longues avec des boîtes aux lettres énormes, donc vous pourriez avoir besoin d'augmenter cette limite si vous obtenez les erreurs « Too long argument » ou « IMAP command line too large ».  La valeur par défaut est @samp{64000}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string imap-logout-format
fr: {paramètre de @code{dovecot-configuration}} string imap-logout-format

note: type: deftypevr
en: IMAP logout format string:
fr: Format de la chaîne de déconnexion IMAP :

note: type: table
en: total number of bytes read from client
fr: nombre d'octets lus par le client

note: type: table
en: total number of bytes sent to client.
fr: nombre total d'octets envoyés au client.

note: type: deftypevr
en: See @file{doc/wiki/Variables.txt} for a list of all the variables you can use.  Defaults to @samp{"in=%i out=%o deleted=%@{deleted@} expunged=%@{expunged@} trashed=%@{trashed@} hdr_count=%@{fetch_hdr_count@} hdr_bytes=%@{fetch_hdr_bytes@} body_count=%@{fetch_body_count@} body_bytes=%@{fetch_body_bytes@}"}.
fr: Voir @file{doc/wiki/Variables.txt} pour une liste de toutes les variables utilisables.  La valeur par défaut est @samp{"in=%i out=%o deleted=%@{deleted@} expunged=%@{expunged@} trashed=%@{trashed@} hdr_count=%@{fetch_hdr_count@} hdr_bytes=%@{fetch_hdr_bytes@} body_count=%@{fetch_body_count@} body_bytes=%@{fetch_body_bytes@}"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string imap-capability
fr: {paramètre de @code{dovecot-configuration}} string imap-capability

note: type: deftypevr
en: Override the IMAP CAPABILITY response.  If the value begins with '+', add the given capabilities on top of the defaults (e.g.@: +XFOO XBAR).  Defaults to @samp{""}.
fr: Remplace la réponse CAPABILITY d'IMAP.  Si la valeur commence par « + », ajoute les capacités données en haut des valeur par défaut (p.@: ex.@: +XFOO XBAR).  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string imap-idle-notify-interval
fr: {paramètre de @code{dovecot-configuration}} string imap-idle-notify-interval

note: type: deftypevr
en: How long to wait between "OK Still here" notifications when client is IDLEing.  Defaults to @samp{"2 mins"}.
fr: Temps d'attente entre les notifications « OK Still here » lorsque le client est en IDLE.  La valeur par défaut est @samp{"2 mins"}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string imap-id-send
fr: {paramètre de @code{dovecot-configuration}} string imap-id-send

note: type: deftypevr
en: ID field names and values to send to clients.  Using * as the value makes Dovecot use the default value.  The following fields have default values currently: name, version, os, os-version, support-url, support-email.  Defaults to @samp{""}.
fr: Noms des champs ID et de leur valeur à envoyer aux clients.  « * » signifie la valeur par défaut.  Les champs suivants ont actuellement des valeurs par défaut : name, version, os, os-version, support-url, support-email.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string imap-id-log
fr: {paramètre de @code{dovecot-configuration}} string imap-id-log

note: type: deftypevr
en: ID fields sent by client to log.  * means everything.  Defaults to @samp{""}.
fr: Champs ID envoyés par le client à enregistrer.  « * » signifie tout.  La valeur par défaut est @samp{""}.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} space-separated-string-list imap-client-workarounds
fr: {paramètre de @code{dovecot-configuration}} space-separated-string-list imap-client-workarounds

note: type: deftypevr
en: Workarounds for various client bugs:
fr: Contournements pour divers bogues de certains client :

note: type: table
en: Send EXISTS/RECENT new mail notifications only when replying to NOOP and CHECK commands.  Some clients ignore them otherwise, for example OSX Mail (<v2.1).  Outlook Express breaks more badly though, without this it may show user "Message no longer in server" errors.  Note that OE6 still breaks even with this workaround if synchronization is set to "Headers Only".
fr: Envoi des notifications de nouveau message EXISTS/RECENT seulement en réponse aux commandes NOOP et CHECK.  Certains clients les ignorent autrement, par exemple OSX Mail (< v2.1).  Outlook Express est encore plus cassé, sans cela il peut montrer des erreurs de type « Le message n'est plus sur le serveur ».  Remarquez que OE6 est toujours cassé même avec ce contournement si la synchronisation est à « En-têtes seulement ».

note: type: table
en: Thunderbird gets somehow confused with LAYOUT=fs (mbox and dbox) and adds extra @samp{/} suffixes to mailbox names.  This option causes Dovecot to ignore the extra @samp{/} instead of treating it as invalid mailbox name.
fr: Thunderbird se mélange les pinceaux avec LAYOUT=fs (mbox et dbox) et ajoute un suffixe @samp{/} supplémentaire sur les noms des boîtes aux lettres.  Cette option fait que dovecot ignore le @samp{/} supplémentaire au lieu de le traiter comme un nom de boîte aux lettres invalide.

note: type: table
en: Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g.@: mbox).  This makes Thunderbird realize they aren't selectable and show them greyed out, instead of only later giving "not selectable" popup error.
fr: Montre les drapeaux \Noselect pour les réponses LSUB avec LAYOUT=fs (p.@: ex.@: mbox).  Cela fait que Thunderbird réalise qu'ils ne sont pas sélectionnables et les montre en grisé, au lieu de montrer un popup « non sélectionnable » après coup.

note: type: deftypevr
en: {@code{dovecot-configuration} parameter} string imap-urlauth-host
fr: {paramètre de @code{dovecot-configuration}} string imap-urlauth-host

note: type: deftypevr
en: Host allowed in URLAUTH URLs sent by client.  "*" allows all.  Defaults to @samp{""}.
fr: Hôte autorisé dans les URL URLAUTH envoyés par les clients.  « * » les autorise tous.  La valeur par défaut est @samp{""}.

note: type: Plain text
en: Whew! Lots of configuration options.  The nice thing about it though is that Guix has a complete interface to Dovecot's configuration language.  This allows not only a nice way to declare configurations, but also offers reflective capabilities as well: users can write code to inspect and transform configurations from within Scheme.
fr: Ouf !  Tant d'options de configuration.  La bonne nouvelle, c'est que Guix a une interface complète avec le langage de configuration de Dovecot.  Cela permet non seulement de déclarer la configuration de manière agréable, mais aussi d'offrir des capacités de réflexion : les utilisateurs peuvent écrire du code pour inspecter et transformer les configuration depuis Scheme.

note: type: Plain text
en: However, it could be that you just want to get a @code{dovecot.conf} up and running.  In that case, you can pass an @code{opaque-dovecot-configuration} as the @code{#:config} parameter to @code{dovecot-service}.  As its name indicates, an opaque configuration does not have easy reflective capabilities.
fr: Cependant, vous pourriez avoir un fichier @code{dovecot.conf} déjà tout prêt.  Dans ce cas, vous pouvez passer un objet @code{opaque-dovecot-configuration} comme paramètre @code{#:config} à @code{dovecot-service}.  Comme son nom l'indique, une configuration opaque n'a pas les capacités de réflexions.

note: type: Plain text
en: Available @code{opaque-dovecot-configuration} fields are:
fr: Les champs de @code{opaque-dovecot-configuration} disponibles sont :

note: type: deftypevr
en: {@code{opaque-dovecot-configuration} parameter} package dovecot
fr: {paramètre de @code{opaque-dovecot-configuration}} package dovecot

note: type: deftypevr
en: {@code{opaque-dovecot-configuration} parameter} string string
fr: {paramètre de @code{opaque-dovecot-configuration}} string string

note: type: deftypevr
en: The contents of the @code{dovecot.conf}, as a string.
fr: Le contenu de @code{dovecot.conf}, en tant que chaîne de caractères.

note: type: Plain text
en: For example, if your @code{dovecot.conf} is just the empty string, you could instantiate a dovecot service like this:
fr: Par exemple, si votre @code{dovecot.conf} est simplement la chaîne vide, vous pouvez instancier un service dovecot comme cela :

note: type: subsubheading
en: OpenSMTPD Service
fr: Service OpenSMTPD

note: type: deffn
en: {Scheme Variable} opensmtpd-service-type
fr: {Variable Scheme} opensmtpd-service-type

note: type: deffn
en: This is the type of the @uref{https://www.opensmtpd.org, OpenSMTPD} service, whose value should be an @code{opensmtpd-configuration} object as in this example:
fr: C'est le type de service de @uref{https://www.opensmtpd.org, OpenSMTPD}, dont la valeur devrait être un objet @code{opensmtpd-configuration} comme dans cet exemple :

note: type: deftp
en: {Data Type} opensmtpd-configuration
fr: {Type de données} opensmtpd-configuration

note: type: deftp
en: Data type representing the configuration of opensmtpd.
fr: Type de données représentant la configuration de opensmtpd.

note: type: item
en: @code{package} (default: @var{opensmtpd})
fr: @code{package} (par défaut : @var{opensmtpd})

note: type: table
en: Package object of the OpenSMTPD SMTP server.
fr: Objet de paquet du serveur SMTP OpenSMTPD.

note: type: item
en: @code{config-file} (default: @code{%default-opensmtpd-config-file})
fr: @code{config-file} (par défaut : @code{%default-opensmtpd-config-file})

note: type: table
en: File-like object of the OpenSMTPD configuration file to use.  By default it listens on the loopback network interface, and allows for mail from users and daemons on the local machine, as well as permitting email to remote servers.  Run @command{man smtpd.conf} for more information.
fr: Objet simili-fichier du fichier de configuration de OpenSMTPD à utiliser.  Par défaut il écoute sur l'interface de boucle locale et accepte les courriels des utilisateurs et des démons de la machine locale, et autorise l'envoi de courriels à des serveurs distants.  Lancez @command{man smtpd.conf} pour plus d'information.

note: type: item
en: @code{setgid-commands?} (default: @code{#t})
fr: @code{setgid-commands?} (par défaut : @code{#t})

note: type: table
en: Make the following commands setgid to @code{smtpq} so they can be executed: @command{smtpctl}, @command{sendmail}, @command{send-mail}, @command{makemap}, @command{mailq}, and @command{newaliases}.  @xref{Setuid Programs}, for more information on setgid programs.
fr: Rend les commandes suivantes setgid à @code{smtpq} pour qu'elles puissent être exécutées : @command{smtpctl}, @command{sendmail}, @command{send-mail}, @command{makemap}, @command{mailq} et @command{newalsiases}. @xref{Setuid Programs}, pour plus d'informations sur les programmes setgid.

note: type: subsubheading
en: Exim Service
fr: Service Exim

note: type: cindex
en: mail transfer agent (MTA)
fr: agent de transfert de courriel (MTA)

note: type: cindex
en: MTA (mail transfer agent)
fr: MTA (agent de transfert de courriel)

note: type: deffn
en: {Scheme Variable} exim-service-type
fr: {Variable Scheme} exim-service-type

note: type: deffn
en: This is the type of the @uref{https://exim.org, Exim} mail transfer agent (MTA), whose value should be an @code{exim-configuration} object as in this example:
fr: C'est le type de l'agent de transfert de courriel (MTA) @uref{https://exim.org, Exim}, dont la valeur devrait être un objet @code{exim-configuration} comme dans cet exemple :

note: type: Plain text
en: In order to use an @code{exim-service-type} service you must also have a @code{mail-aliases-service-type} service present in your @code{operating-system} (even if it has no aliases).
fr: Pour utilise le service @code{exim-service-type} vous devez aussi avoir un service @code{mail-aliases-service-type} dans votre @code{operating-system} (même sans alias).

note: type: deftp
en: {Data Type} exim-configuration
fr: {Type de données} exim-configuration

note: type: deftp
en: Data type representing the configuration of exim.
fr: Type de données représentant la configuration d'exim.

note: type: item
en: @code{package} (default: @var{exim})
fr: @code{package} (par défaut : @var{exim})

note: type: table
en: Package object of the Exim server.
fr: Objet de paquet du serveur Exim.

note: type: table
en: File-like object of the Exim configuration file to use.  If its value is @code{#f} then use the default configuration file from the package provided in @code{package}.  The resulting configuration file is loaded after setting the @code{exim_user} and @code{exim_group} configuration variables.
fr: Objet simili-fichier du fichier de configuration d'Exim à utiliser.  Si sa valeur est @code{#f} alors le service utilisera la configuration par défaut du paquet fournit dans @code{package}.  Le fichier de configuration qui en résulte est chargé après avoir mis en place les variables de configuration @code{exim_user} et @code{exim_group}.

note: type: subsubheading
en: Getmail service
fr: Service Getmail

note: type: deffn
en: {Scheme Variable} getmail-service-type
fr: {Variable Scheme} getmail-service-type

note: type: deffn
en: This is the type of the @uref{http://pyropus.ca/software/getmail/, Getmail} mail retriever, whose value should be an @code{getmail-configuration}.
fr: C'est le type du service de récupération de courriels @uref{http://pyropus.ca/software/getmail/, Getmail}, dont la valeur devrait être un objet @code{getmail-configuration}.

note: type: Plain text
en: Available @code{getmail-configuration} fields are:
fr: Les champs de @code{getmail-configuration} disponibles sont :

note: type: deftypevr
en: {@code{getmail-configuration} parameter} symbol name
fr: {paramètre de @code{getmail-configuration}} symbol name

note: type: deftypevr
en: A symbol to identify the getmail service.
fr: Un symbole pour identifier le service getmail.

note: type: deftypevr
en: Defaults to @samp{"unset"}.
fr: La valeur par défaut est @samp{"unset"}.

note: type: deftypevr
en: {@code{getmail-configuration} parameter} package package
fr: {paramètre de @code{getmail-configuration}} package package

note: type: deftypevr
en: The getmail package to use.
fr: Le paquet getmail à utiliser.

note: type: deftypevr
en: {@code{getmail-configuration} parameter} string user
fr: {paramètre de @code{getmail-configuration}} string user

note: type: deftypevr
en: The user to run getmail as.
fr: L'utilisateur qui lance getmail.

note: type: deftypevr
en: Defaults to @samp{"getmail"}.
fr: La valeur par défaut est @samp{"getmail"}.

note: type: deftypevr
en: {@code{getmail-configuration} parameter} string group
fr: {paramètre de @code{getmail-configuration}} string group

note: type: deftypevr
en: The group to run getmail as.
fr: Le groupe qui lance getmail.

note: type: deftypevr
en: {@code{getmail-configuration} parameter} string directory
fr: {paramètre de @code{getmail-configuration}} string directory

note: type: deftypevr
en: The getmail directory to use.
fr: Le répertoire getmail à utiliser.

note: type: deftypevr
en: Defaults to @samp{"/var/lib/getmail/default"}.
fr: La valeur par défaut est @samp{"/var/lib/getmail/default"}.

note: type: deftypevr
en: {@code{getmail-configuration} parameter} getmail-configuration-file rcfile
fr: {paramètre de @code{getmail-configuration}} getmail-configuration-file rcfile

note: type: deftypevr
en: The getmail configuration file to use.
fr: Le fichier de configuration de getmail à utiliser.

note: type: deftypevr
en: Available @code{getmail-configuration-file} fields are:
fr: Les champs de @code{getmail-configuration-file} disponibles sont :

note: type: deftypevr
en: {@code{getmail-configuration-file} parameter} getmail-retriever-configuration retriever
fr: {paramètre de @code{getmail-configuration-file}} getmail-retriever-configuration retriever

note: type: deftypevr
en: What mail account to retrieve mail from, and how to access that account.
fr: Le compte de courriel duquel récupérer les courriel, et comme accéder à ce compte.

note: type: deftypevr
en: Available @code{getmail-retriever-configuration} fields are:
fr: Les champs de @code{getmail-retriever-configuration} disponibles sont :

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} string type
fr: {paramètre de @code{getmail-retriever-configuration}} string type

note: type: deftypevr
en: The type of mail retriever to use.  Valid values include @samp{passwd} and @samp{static}.
fr: Le type de récupérateur de courriel à utiliser.  Des valeurs valides sont @samp{passwd} et @samp{static}.

note: type: deftypevr
en: Defaults to @samp{"SimpleIMAPSSLRetriever"}.
fr: La valeur par défaut est @samp{"SimpleIMAPSSLRetriever"}.

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} string server
fr: {paramètre de @code{getmail-retriever-configuration}} string server

note: type: deftypevr
en: Username to login to the mail server with.
fr: Utilisateur avec lequel se connecter au serveur de courriel.

note: type: deftypevr
en: Defaults to @samp{unset}.
fr: La valeur par défaut est @samp{unset}.

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} string username
fr: {paramètre de @code{getmail-retriever-configuration}} string username

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} non-negative-integer port
fr: {paramètre de @code{getmail-retriever-configuration}} entier-non-négatif port

note: type: deftypevr
en: Port number to connect to.
fr: Numéro de port sur lequel se connecter.

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} string password
fr: {paramètre de @code{getmail-retriever-configuration}} string password

note: type: deftypevr
en: Override fields from passwd.
fr: Remplace des champs de passwd.

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} list password-command
fr: {paramètre de @code{getmail-retriever-configuration}} list password-command

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} string keyfile
fr: {paramètre de @code{getmail-retriever-configuration}} string keyfile

note: type: deftypevr
en: PEM-formatted key file to use for the TLS negotiation.
fr: Fichier de clés au format PEM pour la négociation TLS.

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} string certfile
fr: {paramètre de @code{getmail-retriever-configuration}} string certfile

note: type: deftypevr
en: PEM-formatted certificate file to use for the TLS negotiation.
fr: Fichier de certificat au format PEM à utiliser pour la négociation TLS.

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} string ca-certs
fr: {paramètre de @code{getmail-retriever-configuration}} string ca-certs

note: type: deftypevr
en: CA certificates to use.
fr: Certificats d'autorité à utiliser.

note: type: deftypevr
en: {@code{getmail-retriever-configuration} parameter} parameter-alist extra-parameters
fr: {paramètre de @code{getmail-retriever-configuration}} parameter-alist extra-parameters

note: type: deftypevr
en: Extra retriever parameters.
fr: Paramètres supplémentaires pour le récupérateur.

note: type: deftypevr
en: {@code{getmail-configuration-file} parameter} getmail-destination-configuration destination
fr: {paramètre de @code{getmail-configuration-file}} getmail-destination-configuration destination

note: type: deftypevr
en: What to do with retrieved messages.
fr: Que faire avec les message récupérés.

note: type: deftypevr
en: Available @code{getmail-destination-configuration} fields are:
fr: Les champs de @code{getmail-destination-configuration} disponibles sont :

note: type: deftypevr
en: {@code{getmail-destination-configuration} parameter} string type
fr: {paramètre de @code{getmail-destination-configuration}} string type

note: type: deftypevr
en: The type of mail destination.  Valid values include @samp{Maildir}, @samp{Mboxrd} and @samp{MDA_external}.
fr: Le type de destination des courriels.  Des valeurs valides sont @samp{Mailldir}, @samp{Mboxrd} et @samp{MDA external}.

note: type: deftypevr
en: {@code{getmail-destination-configuration} parameter} string-or-filelike path
fr: {paramètre de @code{getmail-destination-configuration}} string-or-filelike path

note: type: deftypevr
en: The path option for the mail destination.  The behaviour depends on the chosen type.
fr: L'option de chemin pour la destination du courriel.  Le comportement dépend du type choisi.

note: type: deftypevr
en: {@code{getmail-destination-configuration} parameter} parameter-alist extra-parameters
fr: {paramètre de @code{getmail-destination-configuration}} parameter-alist extra-parameters

note: type: deftypevr
en: Extra destination parameters
fr: Paramètres supplémentaires pour la destination

note: type: deftypevr
en: {@code{getmail-configuration-file} parameter} getmail-options-configuration options
fr: {paramètre de @code{getmail-destination-configuration}} getmail-options-configuration options

note: type: deftypevr
en: Configure getmail.
fr: Configurer getmail.

note: type: deftypevr
en: Available @code{getmail-options-configuration} fields are:
fr: Les champs de @code{getmail-options-configuration} disponibles sont :

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} non-negative-integer verbose
fr: {paramètre de @code{getmail-options-configuration}} non-negative-integer verbose

note: type: deftypevr
en: If set to @samp{0}, getmail will only print warnings and errors.  A value of @samp{1} means that messages will be printed about retrieving and deleting messages.  If set to @samp{2}, getmail will print messages about each of its actions.
fr: Si la valeur est @samp{0}, getmail n'affichera que les avertissements et les erreurs.  Une valeur de @samp{1} signifie que des messages à propos de la récupération et de la suppression de messages seront affichés.  Si la valeur est @samp{2}, getmail affichera des messages pour chacune de ses actions.

note: type: deftypevr
en: Defaults to @samp{1}.
fr: La valeur par défaut est @samp{1}.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} boolean read-all
fr: {paramètre de @code{getmail-options-configuration}} boolean read-all

note: type: deftypevr
en: If true, getmail will retrieve all available messages.  Otherwise it will only retrieve messages it hasn't seen previously.
fr: Si la valeur est vraie, getmail récupérera tous les messages disponibles.  Sinon, il récupérera les message qu'il n'a pas déjà vu.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} boolean delete
fr: {paramètre de @code{getmail-options-configuration}} boolean delete

note: type: deftypevr
en: If set to true, messages will be deleted from the server after retrieving and successfully delivering them.  Otherwise, messages will be left on the server.
fr: Si la valeur est vraie, les messages seront supprimées du serveur après les avoir récupérés et les avoir livrés correctement.  Sinon, les messages seront laissés sur le serveur.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} non-negative-integer delete-after
fr: {paramètre de @code{getmail-options-configuration}} entier-non-négatif delete-after

note: type: deftypevr
en: Getmail will delete messages this number of days after seeing them, if they have been delivered.  This means messages will be left on the server this number of days after delivering them.  A value of @samp{0} disabled this feature.
fr: Getmail supprimera les messages après un certain nombre de jours après les avoir vu, s'ils ont été livrés.  Cela signifie que les messages resteront sur le serveur quelques jours après qu'ils ont été livrés.  Une valeur de @samp{0} désactive cette fonctionnalité.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} non-negative-integer delete-bigger-than
fr: {paramètre de @code{getmail-options-configuration}} entier-non-négatif delete-bigger-than

note: type: deftypevr
en: Delete messages larger than this of bytes after retrieving them, even if the delete and delete-after options are disabled.  A value of @samp{0} disables this feature.
fr: Supprime les messages plus grands que cette quantité d'octets après les avoir récupérés, même si les options delete et delete-after sont désactivées.  La valeur @samp{0} permet de désactiver cette fonctionnalité.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} non-negative-integer max-bytes-per-session
fr: {paramètre de @code{getmail-options-configuration}} entier-non-négatif max-bytes-per-session

note: type: deftypevr
en: Retrieve messages totalling up to this number of bytes before closing the session with the server.  A value of @samp{0} disables this feature.
fr: Récupère les message jusqu'à ce nombre d'octets avant de fermer la session avec le serveur.  La valeur @samp{0} désactive cette fonctionnalité.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} non-negative-integer max-message-size
fr: {paramètre de @code{getmail-options-configuration}} entier-non-négatif max-message-size

note: type: deftypevr
en: Don't retrieve messages larger than this number of bytes.  A value of @samp{0} disables this feature.
fr: Ne récupère pas les messages plus grands que cette valeur en octets.  La valeur @samp{0} désactive cette fonctionnalité.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} boolean delivered-to
fr: {paramètre de @code{getmail-options-configuration}} boolean delivered-to

note: type: deftypevr
en: If true, getmail will add a Delivered-To header to messages.
fr: Si la valeur est vraie, getmail ajoutera un en-tête Delivered-To aux messages.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} boolean received
fr: {paramètre de @code{getmail-options-configuration}} boolean received

note: type: deftypevr
en: If set, getmail adds a Received header to the messages.
fr: Si la valeur est indiquée, getmail ajoute un en-tête Received aux messages.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} string message-log
fr: {paramètre de @code{getmail-options-configuration}} string message-log

note: type: deftypevr
en: Getmail will record a log of its actions to the named file.  A value of @samp{""} disables this feature.
fr: Getmail enregistrera un journal de ses actions dans le fichier ainsi nommé.  La valeur @samp{""} désactive la fonctionnalité.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} boolean message-log-syslog
fr: {paramètre de @code{getmail-options-configuration}} boolean message-log-syslog

note: type: deftypevr
en: If true, getmail will record a log of its actions using the system logger.
fr: Si la valeur est vraie, getmail enregistrera un journal de ses actions en utilisant le démon de journalisation du système.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} boolean message-log-verbose
fr: {paramètre de @code{getmail-options-configuration}} boolean message-log-verbose

note: type: deftypevr
en: If true, getmail will log information about messages not retrieved and the reason for not retrieving them, as well as starting and ending information lines.
fr: Si la valeur est vraie, getmail enregistrera un journal de ses action à propos des messages non-récupérés et la raison pour laquelle ils n'ont pas été récupérés, en plus de lignes d'informations sur le début et la fin des opérations.

note: type: deftypevr
en: {@code{getmail-options-configuration} parameter} parameter-alist extra-parameters
fr: {paramètre de @code{getmail-options-configuration}} parameter-alist extra-parameters

note: type: deftypevr
en: Extra options to include.
fr: Options supplémentaires à inclure.

note: type: deftypevr
en: {@code{getmail-configuration} parameter} list idle
fr: {paramètre de @code{getmail-options-configuration}} list idle

note: type: deftypevr
en: A list of mailboxes that getmail should wait on the server for new mail notifications.  This depends on the server supporting the IDLE extension.
fr: Une liste de boites de courriels pour lesquels getmail devrait attendre une notification de nouveaux messages sur le serveur.  Cela demande que le serveur prenne en charge l'extension IDLE.

note: type: deftypevr
en: {@code{getmail-configuration} parameter} list environment-variables
fr: {paramètre de @code{getmail-configuration}} list environment-variables

note: type: deftypevr
en: Environment variables to set for getmail.
fr: Une liste de variables d'environnement à définir pour getmail.

note: type: subsubheading
en: Mail Aliases Service
fr: Service d'alias de courriel

note: type: cindex
en: email aliases
fr: alias de courriel

note: type: cindex
en: aliases, for email addresses
fr: alias, pour les adresses de courriel

note: type: deffn
en: {Scheme Variable} mail-aliases-service-type
fr: {Variable Scheme} mail-aliases-service-type

note: type: deffn
en: This is the type of the service which provides @code{/etc/aliases}, specifying how to deliver mail to users on this system.
fr: C'est le type de service qui fournit @code{/etc/aliases} et qui spécifie comment délivrer les courriels aux utilisateurs du système.

note: type: Plain text
en: The configuration for a @code{mail-aliases-service-type} service is an association list denoting how to deliver mail that comes to this system.  Each entry is of the form @code{(alias addresses ...)}, with @code{alias} specifying the local alias and @code{addresses} specifying where to deliver this user's mail.
fr: La configuration pour un service @code{mail-aliases-service-type} est une liste associative qui dénote comment délivrer les courriels qui arrivent au système.  Chaque entrée est de la forme @code{(alias adresses ...)} avec @code{alias} qui spécifie l'alias local et @code{adresses} qui spécifie où délivrer les courriels de cet utilisateur.

note: type: Plain text
en: The aliases aren't required to exist as users on the local system.  In the above example, there doesn't need to be a @code{postmaster} entry in the @code{operating-system}'s @code{user-accounts} in order to deliver the @code{postmaster} mail to @code{bob} (which subsequently would deliver mail to @code{bob@@example.com} and @code{bob@@example2.com}).
fr: Les alias n'ont pas besoin de correspondre à des utilisateurs locaux du système.  Dans l'exemple au-dessus, il n'y a pas besoin d'une entrée @code{postmaster} dans la liste @code{user-accounts} du @code{operating-system} pour délivrer les courriels à destination de @code{postmaster} à @code{bob} (qui ensuite délivrerait le courriel à @code{bob@@example.com} et @code{bob@@example2.com}).

note: type: cindex
en: GNU Mailutils IMAP4 Daemon
fr: Démon IMAP4 GNU Mailutils

note: type: deffn
en: {Scheme Variable} imap4d-service-type
fr: {Variable Scheme} imap4d-service-type

note: type: deffn
en: This is the type of the GNU Mailutils IMAP4 Daemon (@pxref{imap4d,,, mailutils, GNU Mailutils Manual}), whose value should be an @code{imap4d-configuration} object as in this example:
fr: C'est le type du démon IMAP4 GNU Mailutils, dont la valeur devrait être un objet @code{imap4d-configuration} comme dans cet exemple :

note: type: deftp
en: {Data Type} imap4d-configuration
fr: {Type de données} imap4d-configuration

note: type: deftp
en: Data type representing the configuration of @command{imap4d}.
fr: Type de données représentant la configuration de @command{imap4d}.

note: type: item
en: @code{package} (default: @code{mailutils})
fr: @code{package} (par défaut : @code{mailutils})

note: type: table
en: The package that provides @command{imap4d}.
fr: Le paquet qui fournit @command{imap4d}.

note: type: item
en: @code{config-file} (default: @code{%default-imap4d-config-file})
fr: @code{config-file} (par défaut : @code{%default-imap4d-config-file})

note: type: table
en: File-like object of the configuration file to use, by default it will listen on TCP port 143 of @code{localhost}.  @xref{Conf-imap4d,,, mailutils, GNU Mailutils Manual}, for details.
fr: Objet simili-fichier du fichier de configuration à utiliser.  Par défaut, la configuration fera écouter sur le port TCP 143 sur @code{localhost}.  @xref{Conf-imap4d,,, mailutils, GNU Mailutils Manual}, pour les détails.

note: type: subsubheading
en: Radicale Service
fr: Service Radicale

note: type: deffn
en: {Scheme Variable} radicale-service-type
fr: {Variable Scheme} radicale-service-type

note: type: deffn
en: This is the type of the @uref{https://radicale.org, Radicale} CalDAV/CardDAV server whose value should be a @code{radicale-configuration}.
fr: C'est le type du service de récupération de courriels @uref{https://radicale.org, Radicale}, dont la valeur devrait être un objet @code{radicale-configuration}.

note: type: deftp
en: {Data Type} radicale-configuration
fr: {Type de données} radicale-configuration

note: type: deftp
en: Data type representing the configuration of @command{radicale}.
fr: Type de données représentant la configuration de @command{radicale}.

note: type: item
en: @code{package} (default: @code{radicale})
fr: @code{package} (par défaut : @code{radicale})

note: type: table
en: The package that provides @command{radicale}.
fr: Le paquet qui fournit @command{radicale}.

note: type: item
en: @code{config-file} (default: @code{%default-radicale-config-file})
fr: @code{config-file} (par défaut : @code{%default-radicale-config-file})

note: type: table
en: File-like object of the configuration file to use, by default it will listen on TCP port 5232 of @code{localhost} and use the @code{htpasswd} file at @file{/var/lib/radicale/users} with no (@code{plain}) encryption.
fr: Objet simili-fichier du fichier de configuration à utiliser. Par défaut, la configuration fera écouter sur le port TCP 5232 sur @code{localhost} et utiliser le fichier @code{htpasswd} dans @file{/var/lib/radicale/users} sans chiffrement (@code{plain}).

note: type: cindex
en: messaging
fr: messagerie instantanée

note: type: Plain text
en: The @code{(gnu services messaging)} module provides Guix service definitions for messaging services.  Currently it provides the following services:
fr: Le module @code{(gnu services messaging)} fournit des définitions de services Guix pour les services de messageries instantanées.  Actuellement il fournit les services suivants :

note: type: subsubheading
en: Prosody Service
fr: Service Prosody

note: type: deffn
en: {Scheme Variable} prosody-service-type
fr: {Variable Scheme} prosody-service-type

note: type: deffn
en: This is the type for the @uref{https://prosody.im, Prosody XMPP communication server}.  Its value must be a @code{prosody-configuration} record as in this example:
fr: C'est le type pour le @uref{https://prosody.im, le serveur de communication XMPP Prosody}.  Sa valeur doit être un enregistrement @code{prosody-configuration} comme dans cet exemple :

note: type: deffn
en: See below for details about @code{prosody-configuration}.
fr: Voir plus bas pour des détails sur @code{prosody-configuration}.

note: type: Plain text
en: By default, Prosody does not need much configuration.  Only one @code{virtualhosts} field is needed: it specifies the domain you wish Prosody to serve.
fr: Par défaut, Prosody n'a pas besoin de beaucoup de configuration.  Seul un champ @code{virtualhosts} est requis : il spécifie le domaine que vous voulez voir Prosody servir.

note: type: Plain text
en: You can perform various sanity checks on the generated configuration with the @code{prosodyctl check} command.
fr: Vous pouvez effectuer plusieurs vérifications de la configuration générée avec la commande @code{prosodyctl check}.

note: type: Plain text
en: Prosodyctl will also help you to import certificates from the @code{letsencrypt} directory so that the @code{prosody} user can access them.  See @url{https://prosody.im/doc/letsencrypt}.
fr: Prosodyctl vous aidera aussi à importer des certificats du répertoire @code{letsencrypt} pour que l'utilisateur @code{prosody} puisse y accéder.  Voir @url{https://prosody.im/doc/letsencrypt}.

note: type: Plain text
en: The available configuration parameters follow.  Each parameter definition is preceded by its type; for example, @samp{string-list foo} indicates that the @code{foo} parameter should be specified as a list of strings.  Types starting with @code{maybe-} denote parameters that won't show up in @code{prosody.cfg.lua} when their value is left unspecified.
fr: Les paramètres de configuration disponibles sont les suivants.  Chaque définition des paramètres est précédé par son type ; par exemple, @samp{liste-de-chaines toto} indique que le paramètre @code{toto} devrait être spécifié comme une liste de chaînes de caractères.  Les types précédés de @code{peut-être-} signifient que le paramètre n'apparaîtra pas dans @code{prosody.cfg.lua} lorsque sa valeur est non spécifiée.

note: type: Plain text
en: There is also a way to specify the configuration as a string, if you have an old @code{prosody.cfg.lua} file that you want to port over from some other system; see the end for more details.
fr: Il y a aussi une manière de spécifier la configuration en tant que chaîne de caractères si vous avez un vieux fichier @code{prosody.cfg.lua} que vous voulez porter depuis un autre système ; voir la fin pour plus de détails.

note: type: Plain text
en: The @code{file-object} type designates either a file-like object (@pxref{G-Expressions, file-like objects}) or a file name.
fr: Le type @code{file-object} désigne soit un objet simili-fichier (@pxref{G-Expressions, file-like objects}), soit un nom de fichier.

note: type: Plain text
en: Available @code{prosody-configuration} fields are:
fr: Les champs de @code{prosody-configuration} disponibles sont :

note: type: deftypevr
en: {@code{prosody-configuration} parameter} package prosody
fr: {paramètre de @code{prosody-configuration}} package prosody

note: type: deftypevr
en: The Prosody package.
fr: Le paquet Prosody.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} file-name data-path
fr: {paramètre de @code{prosody-configuration}} file-name data-path

note: type: deftypevr
en: Location of the Prosody data storage directory.  See @url{https://prosody.im/doc/configure}.  Defaults to @samp{"/var/lib/prosody"}.
fr: Emplacement du répertoire de stockage des données de Prosody.  Voir @url{https://prosody.im/doc/configure}.  La valeur par défaut est @samp{"/var/lib/prosody"}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} file-object-list plugin-paths
fr: {paramètre de @code{prosody-configuration}} file-object-list plugin-paths

note: type: deftypevr
en: Additional plugin directories.  They are searched in all the specified paths in order.  See @url{https://prosody.im/doc/plugins_directory}.  Defaults to @samp{()}.
fr: Répertoires de greffons supplémentaires.  Ils sont analysés dans l'ordre spécifié.  Voir @url{https://prosody.im/doc/plugins_directory}.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} file-name certificates
fr: {paramètre de @code{prosody-configuration}} file-name certificates

note: type: deftypevr
en: Every virtual host and component needs a certificate so that clients and servers can securely verify its identity.  Prosody will automatically load certificates/keys from the directory specified here.  Defaults to @samp{"/etc/prosody/certs"}.
fr: Chaque hôte virtuel et composant a besoin d'un certificat pour que les clients et les serveurs puissent vérifier son identité.  Prosody chargera automatiquement les clefs et les certificats dans le répertoire spécifié ici.  La valeur par défaut est @samp{"/etc/prosody/certs"}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} string-list admins
fr: {paramètre de @code{prosody-configuration}} string-list admins

note: type: deftypevr
en: This is a list of accounts that are admins for the server.  Note that you must create the accounts separately.  See @url{https://prosody.im/doc/admins} and @url{https://prosody.im/doc/creating_accounts}.  Example: @code{(admins '("user1@@example.com" "user2@@example.net"))} Defaults to @samp{()}.
fr: C'est une liste des comptes administrateurs de ce serveur.  Remarquez que vous devez créer les comptes séparément.  Voir @url{https://prosody.im/doc/admins} et @url{https://prosody.im/doc/creating_accounts}.  Par exemple : @code{(admins '("user1@@example.com" "user2@@example.net"))}.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} boolean use-libevent?
fr: {paramètre de @code{prosody-configuration}} boolean use-libevent?

note: type: deftypevr
en: Enable use of libevent for better performance under high load.  See @url{https://prosody.im/doc/libevent}.  Defaults to @samp{#f}.
fr: Active l'utilisation de libevent pour de meilleures performances sous une forte charge.  Voir @url{https://prosody.im/doc/libevent}.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} module-list modules-enabled
fr: {paramètre de @code{prosody-configuration}} module-list modules-enabled

note: type: deftypevr
en: This is the list of modules Prosody will load on startup.  It looks for @code{mod_modulename.lua} in the plugins folder, so make sure that exists too.  Documentation on modules can be found at: @url{https://prosody.im/doc/modules}.  Defaults to @samp{("roster" "saslauth" "tls" "dialback" "disco" "carbons" "private" "blocklist" "vcard" "version" "uptime" "time" "ping" "pep" "register" "admin_adhoc")}.
fr: C'est la liste des modules que Prosody chargera au démarrage.  Il cherchera @code{mod_modulename.lua} dans le répertoire des greffons, donc assurez-vous qu'il existe aussi.  La documentation des modules se trouve sur @url{https://prosody.im/doc/modules}.  La valeur par défaut est @samp{("roster" "saslauth" "tls" "dialback" "disco" "carbons" "private" "blocklist" "vcard" "version" "uptime" "time" "ping" "pep" "register" "admin_adhoc")}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} string-list modules-disabled
fr: {paramètre de @code{prosody-configuration}} string-list modules-disabled

note: type: deftypevr
en: @samp{"offline"}, @samp{"c2s"} and @samp{"s2s"} are auto-loaded, but should you want to disable them then add them to this list.  Defaults to @samp{()}.
fr: @samp{"offline"},@samp{"c2s"} et @samp{"s2s"} sont chargés automatiquement, mais si vous voulez les désactiver, ajoutez-les à cette liste.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} file-object groups-file
fr: {paramètre de @code{prosody-configuration}} file-object groups-file

note: type: deftypevr
en: Path to a text file where the shared groups are defined.  If this path is empty then @samp{mod_groups} does nothing.  See @url{https://prosody.im/doc/modules/mod_groups}.  Defaults to @samp{"/var/lib/prosody/sharedgroups.txt"}.
fr: Chemin vers un fichier texte où les groupes partagés sont définis.  Si ce chemin est vide alors @samp{mod_groups} ne fait rien.  Voir @url{https://prosody.im/doc/modules/mod_groups}.  La valeur par défaut est @samp{"/var/lib/prosody/sharedgroups.txt"}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} boolean allow-registration?
fr: {paramètre de @code{prosody-configuration}} boolean allow-registration?

note: type: deftypevr
en: Disable account creation by default, for security.  See @url{https://prosody.im/doc/creating_accounts}.  Defaults to @samp{#f}.
fr: Désactive la création de compte par défaut, pour la sécurité.  Voir @url{https://prosody.im/doc/creating_accounts}.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} maybe-ssl-configuration ssl
fr: {paramètre de @code{prosody-configuration}} peut-être-ssl-configuration ssl

note: type: deftypevr
en: These are the SSL/TLS-related settings.  Most of them are disabled so to use Prosody's defaults.  If you do not completely understand these options, do not add them to your config, it is easy to lower the security of your server using them.  See @url{https://prosody.im/doc/advanced_ssl_config}.
fr: Ce sont les paramètres liés à SSL/TLS.  La plupart sont désactivés pour pouvoir utiliser les paramètres par défaut de Prosody.  Si vous ne comprenez pas complètement ces options, ne les ajoutez pas à votre configuration, il est aisé de diminuer la sécurité de votre serveur en les modifiant.  Voir @url{https://prosody.im/doc/advanced_ssl_config}.

note: type: deftypevr
en: Available @code{ssl-configuration} fields are:
fr: Les champs de @code{ssl-configuration} disponibles sont :

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-string protocol
fr: {paramètre de @code{ssl-configuration}} peut-être-chaine protocol

note: type: deftypevr
en: This determines what handshake to use.
fr: Cela détermine la poignée de main à utiliser.

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-file-name key
fr: {paramètre de @code{ssl-configuration}} peut-être-nom-de-fichier key

note: type: deftypevr
en: Path to your private key file.
fr: Chemin vers votre fichier de clef privée.

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-file-name certificate
fr: {paramètre de @code{ssl-configuration}} peut-être-nom-de-fichier certificate

note: type: deftypevr
en: Path to your certificate file.
fr: Chemin vers votre fichier de certificat.

note: type: deftypevr
en: {@code{ssl-configuration} parameter} file-object capath
fr: {paramètre de @code{ssl-configuration}} file-object capath

note: type: deftypevr
en: Path to directory containing root certificates that you wish Prosody to trust when verifying the certificates of remote servers.  Defaults to @samp{"/etc/ssl/certs"}.
fr: Chemin vers le répertoire contenant les certificats racines que vous voulez voir Prosody utiliser lors de la vérification des certificats des serveurs distants.  La valeur par défaut est @samp{"/etc/ssl/certs"}.

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-file-object cafile
fr: {paramètre de @code{ssl-configuration}} peut-être-fichier-objet cafile

note: type: deftypevr
en: Path to a file containing root certificates that you wish Prosody to trust.  Similar to @code{capath} but with all certificates concatenated together.
fr: Chemin vers un fichier contenant les certificats racines auxquels Prosody devra faire confiance.  Comme @code{capath} mais avec les certificats concaténés ensemble.

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-string-list verify
fr: {paramètre de @code{ssl-configuration}} peut-être-liste-de-chaine verify

note: type: deftypevr
en: A list of verification options (these mostly map to OpenSSL's @code{set_verify()} flags).
fr: Une liste d'options de vérification (qui correspondent globalement aux drapeaux @code{set_verify()} d'OpenSSL).

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-string-list options
fr: {paramètre de @code{ssl-configuration}} peut-être-liste-de-chaine options

note: type: deftypevr
en: A list of general options relating to SSL/TLS@.  These map to OpenSSL's @code{set_options()}.  For a full list of options available in LuaSec, see the LuaSec source.
fr: Une liste d'options générales liées à SSL/TLS@.  Elles correspondent globalement à @code{set_options()} d'OpenSSL.  Pour une liste complète des options disponibles dans LuaSec, voir les sources de LuaSec.

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-non-negative-integer depth
fr: {paramètre de @code{ssl-configuration}} peut-être-entier-non-négatif depth

note: type: deftypevr
en: How long a chain of certificate authorities to check when looking for a trusted root certificate.
fr: Longueur maximale d'une chaîne d'autorités de certifications avant la racine.

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-string ciphers
fr: {paramètre de @code{ssl-configuration}} peut-être-chaine ciphers

note: type: deftypevr
en: An OpenSSL cipher string.  This selects what ciphers Prosody will offer to clients, and in what order.
fr: Une chaîne de méthodes de chiffrement OpenSSL.  Cela choisi les méthodes de chiffrement que Prosody offrira aux clients, et dans quel ordre de préférence.

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-file-name dhparam
fr: {paramètre de @code{ssl-configuration}} peut-être-nom-de-fichier dhparam

note: type: deftypevr
en: A path to a file containing parameters for Diffie-Hellman key exchange.  You can create such a file with: @code{openssl dhparam -out /etc/prosody/certs/dh-2048.pem 2048}
fr: Un chemin vers un fichier contenant les paramètres pour l'échange de clef Diffie-Hellman.  Vous pouvez créer un tel fichier avec : @code{openssl dhparam -out /etc/prosody/certs/dh-2048.pem 2048}

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-string curve
fr: {paramètre de @code{ssl-configuration}} peut-être-chaine curve

note: type: deftypevr
en: Curve for Elliptic curve Diffie-Hellman.  Prosody's default is @samp{"secp384r1"}.
fr: Courbe pour Diffie-Hellman sur courbe elliptique.  La valeur par défaut de Prosody est @samp{"secp384r1"}.

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-string-list verifyext
fr: {paramètre de @code{ssl-configuration}} peut-être-liste-de-chaine verifyext

note: type: deftypevr
en: A list of ``extra'' verification options.
fr: Une liste d'options de vérification « supplémentaires ».

note: type: deftypevr
en: {@code{ssl-configuration} parameter} maybe-string password
fr: {paramètre de @code{ssl-configuration}} peut-être-chaine password

note: type: deftypevr
en: Password for encrypted private keys.
fr: Mot de passe pour les clefs privées chiffrées.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} boolean c2s-require-encryption?
fr: {paramètre de @code{prosody-configuration}} boolean c2s-require-encryption?

note: type: deftypevr
en: Whether to force all client-to-server connections to be encrypted or not.  See @url{https://prosody.im/doc/modules/mod_tls}.  Defaults to @samp{#f}.
fr: S'il faut forcer toutes les connexions client-serveur à être chiffrées ou non.  Voir @url{https://prosody.im/doc/modules/mod_tls}.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} string-list disable-sasl-mechanisms
fr: {paramètre de @code{prosody-configuration}} string-list disable-sasl-mechanisms

note: type: deftypevr
en: Set of mechanisms that will never be offered.  See @url{https://prosody.im/doc/modules/mod_saslauth}.  Defaults to @samp{("DIGEST-MD5")}.
fr: Ensemble de mécanismes qui ne seront jamais offerts.  Voir @url{https://prosody.im/doc/modules/mod_saslauth}.  La valeur par défaut est @samp{("DIGEST-MD5")}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} boolean s2s-require-encryption?
fr: {paramètre de @code{prosody-configuration}} boolean s2s-require-encryption?

note: type: deftypevr
en: Whether to force all server-to-server connections to be encrypted or not.  See @url{https://prosody.im/doc/modules/mod_tls}.  Defaults to @samp{#f}.
fr: S'il faut forcer toutes les connexion serveur-serveur à être chiffrées ou non.  Voir @url{https://prosody.im/doc/modules/mod_tls}.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} boolean s2s-secure-auth?
fr: {paramètre de @code{prosody-configuration}} boolean s2s-secure-auth?

note: type: deftypevr
en: Whether to require encryption and certificate authentication.  This provides ideal security, but requires servers you communicate with to support encryption AND present valid, trusted certificates.  See @url{https://prosody.im/doc/s2s#security}.  Defaults to @samp{#f}.
fr: S'il faut requérir le chiffrement et l'authentification du certificat.  Cela fournit une sécurité idéale, mais demande que les serveurs avec lesquels vous communiquez supportent le chiffrement ET présentent un certificat valide et de confiance.  Voir @url{https://prosody.im/doc/s2s#security}.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} string-list s2s-insecure-domains
fr: {paramètre de @code{prosody-configuration}} string-list s2s-insecure-domains

note: type: deftypevr
en: Many servers don't support encryption or have invalid or self-signed certificates.  You can list domains here that will not be required to authenticate using certificates.  They will be authenticated using DNS@.  See @url{https://prosody.im/doc/s2s#security}.  Defaults to @samp{()}.
fr: Beaucoup de serveurs ne supportent pas le chiffrement ou ont un certificat invalide ou auto-signé.  Vous pouvez lister les domaines ici qui n'ont pas besoin de s'authentifier avec des certificats.  Ils seront authentifiés par DNS@.  Voir @url{https://prosody.im/doc/s2s#security}.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} string-list s2s-secure-domains
fr: {paramètre de @code{prosody-configuration}} string-list s2s-secure-domains

note: type: deftypevr
en: Even if you leave @code{s2s-secure-auth?} disabled, you can still require valid certificates for some domains by specifying a list here.  See @url{https://prosody.im/doc/s2s#security}.  Defaults to @samp{()}.
fr: Même si vous laissez @code{s2s-secure-auth?} désactivé, vous pouvez toujours demander un certificat valide pour certains domaine en spécifiant la liste ici.  Voir @url{https://prosody.im/doc/s2s#security}.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} string authentication
fr: {paramètre de @code{prosody-configuration}} string authentication

note: type: deftypevr
en: Select the authentication backend to use.  The default provider stores passwords in plaintext and uses Prosody's configured data storage to store the authentication data.  If you do not trust your server please see @url{https://prosody.im/doc/modules/mod_auth_internal_hashed} for information about using the hashed backend.  See also @url{https://prosody.im/doc/authentication} Defaults to @samp{"internal_plain"}.
fr: Choisi le moteur d'authentification à utiliser.  Le moteur par défaut stocke les mots de passes en texte clair et utilise la configuration de stockage des données de Prosody pour stocker les données authentifiées.  Si vous n'avez pas confiance dans le serveur, lisez @url{https://prosody.im/doc/modules/mod_auth_internal_hashed} pour plus d'information sur l'utilisation du moteur hashed.  Voir aussi @url{https://prosody.im/doc/authentication}.  La valeur par défaut est @samp{"internal_plain"}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} maybe-string log
fr: {paramètre de @code{prosody-configuration}} peut-être-chaine log

note: type: deftypevr
en: Set logging options.  Advanced logging configuration is not yet supported by the Prosody service.  See @url{https://prosody.im/doc/logging}.  Defaults to @samp{"*syslog"}.
fr: Indique les options de journalisation.  La configuration avancée des journaux n'est pas encore supportée par le service Prosody.  Voir @url{https://prosody.im/doc/logging}.  La valeur par défaut est @samp{"*syslog"}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} file-name pidfile
fr: {paramètre de @code{prosody-configuration}} file-name pidfile

note: type: deftypevr
en: File to write pid in.  See @url{https://prosody.im/doc/modules/mod_posix}.  Defaults to @samp{"/var/run/prosody/prosody.pid"}.
fr: Fichier où écrire le PID.  Voir @url{https://prosody.im/doc/modules/mod_posix}.  La valeur par défaut est @samp{"/var/run/prosody/prosody.pid"}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} maybe-non-negative-integer http-max-content-size
fr: {paramètre de @code{prosody-configuration}} peut-être-entier-non-négatif http-max-content-size

note: type: deftypevr
en: Maximum allowed size of the HTTP body (in bytes).
fr: Taille maximum autorisée pour le corps HTTP (en octets).

note: type: deftypevr
en: {@code{prosody-configuration} parameter} maybe-string http-external-url
fr: {paramètre de @code{prosody-configuration}} peut-être-chaine http-external-url

note: type: deftypevr
en: Some modules expose their own URL in various ways.  This URL is built from the protocol, host and port used.  If Prosody sits behind a proxy, the public URL will be @code{http-external-url} instead.  See @url{https://prosody.im/doc/http#external_url}.
fr: Certains modules exposent leur propre URL de diverses manières.  Cette URL est construite à partir du protocole, de l'hôte et du port utilisé.  Si Prosody se trouve derrière un proxy, l'URL publique sera @code{http-external-url} à la place.  Voir @url{https://prosody.im/doc/http#external_url}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} virtualhost-configuration-list virtualhosts
fr: {paramètre de @code{prosody-configuration}} virtualhost-configuration-list virtualhosts

note: type: deftypevr
en: A host in Prosody is a domain on which user accounts can be created.  For example if you want your users to have addresses like @samp{"john.smith@@example.com"} then you need to add a host @samp{"example.com"}.  All options in this list will apply only to this host.
fr: Un hôte dans Prosody est un domaine sur lequel les comptes utilisateurs sont créés.  Par exemple si vous voulez que vos utilisateurs aient une adresse comme @samp{"john.smith@@example.com"} vous devrez ajouter un hôte @samp{"example.com"}.  Toutes les options de cette liste seront appliquées uniquement à cet hôte.

note: type: quotation
en: The name @emph{virtual} host is used in configuration to avoid confusion with the actual physical host that Prosody is installed on.  A single Prosody instance can serve many domains, each one defined as a VirtualHost entry in Prosody's configuration.  Conversely a server that hosts a single domain would have just one VirtualHost entry.
fr: Le nom d'hôte @emph{virtuel} est utilisé dans la configuration pour éviter de le confondre avec le nom d'hôte physique réel de la machine qui héberge Prosody.  Une seule instance de Prosody peut servir plusieurs domaines, chacun défini comme une entrée VirtualHost dans la configuration de Prosody.  Ainsi, un serveur qui n'héberge qu'un seul domaine n'aura qu'une entrée VirtualHost.

note: type: quotation
en: See @url{https://prosody.im/doc/configure#virtual_host_settings}.
fr: Voir @url{https://prosody.im/doc/configure#virtual_host_settings}.

note: type: deftypevr
en: Available @code{virtualhost-configuration} fields are:
fr: Les champs de @code{virtualhost-configuration} disponibles sont :

note: type: deftypevr
en: all these @code{prosody-configuration} fields: @code{admins}, @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, @code{groups-file}, @code{allow-registration?}, @code{ssl}, @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, @code{s2s-insecure-domains}, @code{s2s-secure-domains}, @code{authentication}, @code{log}, @code{http-max-content-size}, @code{http-external-url}, @code{raw-content}, plus:
fr: tous ces champs de @code{prosody-configuration} : @code{admins}, @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, @code{groups-file}, @code{allow-registration?}, @code{ssl}, @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, @code{s2s-insecure-domains}, @code{s2s-secure-domains}, @code{authentication}, @code{log}, @code{http-max-content-size}, @code{http-external-url}, @code{raw-content}, plus :

note: type: deftypevr
en: {@code{virtualhost-configuration} parameter} string domain
fr: {paramètre de @code{virtualhost-configuration}} string domain

note: type: deftypevr
en: Domain you wish Prosody to serve.
fr: Domaine que vous souhaitez que Prosody serve.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} int-component-configuration-list int-components
fr: {paramètre de @code{prosody-configuration}} int-component-configuration-list int-components

note: type: deftypevr
en: Components are extra services on a server which are available to clients, usually on a subdomain of the main server (such as @samp{"mycomponent.example.com"}).  Example components might be chatroom servers, user directories, or gateways to other protocols.
fr: Les composant sont des services supplémentaires qui sont disponibles pour les clients, habituellement sur un sous-domaine du serveur principal (comme @samp{"mycomponent.example.com"}).  Des exemples de composants sont des serveurs de chatroom, des répertoires utilisateurs ou des passerelles vers d'autres protocoles.

note: type: deftypevr
en: Internal components are implemented with Prosody-specific plugins.  To add an internal component, you simply fill the hostname field, and the plugin you wish to use for the component.
fr: Les composants internes sont implémentés dans des greffons spécifiques à Prosody.  Pour ajouter un composant interne, vous n'avez qu'à remplir le champ de nom d'hôte et le greffon que vous voulez utiliser pour le composant.

note: type: deftypevr
en: See @url{https://prosody.im/doc/components}.  Defaults to @samp{()}.
fr: Voir @url{https://prosody.im/doc/components}.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: Available @code{int-component-configuration} fields are:
fr: Les champs de @code{int-component-configuration} disponibles sont :

note: type: deftypevr
en: {@code{int-component-configuration} parameter} string hostname
fr: {paramètre de @code{int-component-configuration}} string hostname

note: type: deftypevr
en: Hostname of the component.
fr: Nom d'hôte du composant.

note: type: deftypevr
en: {@code{int-component-configuration} parameter} string plugin
fr: {paramètre de @code{int-component-configuration}} string plugin

note: type: deftypevr
en: Plugin you wish to use for the component.
fr: Greffon que vous voulez utiliser pour ce composant.

note: type: deftypevr
en: {@code{int-component-configuration} parameter} maybe-mod-muc-configuration mod-muc
fr: {paramètre de @code{int-component-configuration}} peut-être-mod-muc-configuration mod-muc

note: type: deftypevr
en: Multi-user chat (MUC) is Prosody's module for allowing you to create hosted chatrooms/conferences for XMPP users.
fr: Le chat multi-utilisateur (MUC) est le modules de Prosody qui vous permet de créer des chatrooms/conférences pour les utilisateurs XMPP.

note: type: deftypevr
en: General information on setting up and using multi-user chatrooms can be found in the ``Chatrooms'' documentation (@url{https://prosody.im/doc/chatrooms}), which you should read if you are new to XMPP chatrooms.
fr: Des informations générales sur la configuration des salons de discussion multiutilisateurs se trouvent dans la documentation sur les salons (@url{https://prosody.im/doc/chatrooms}), que vous devriez lire si vous découvrez les salons XMPP.

note: type: deftypevr
en: See also @url{https://prosody.im/doc/modules/mod_muc}.
fr: Voir aussi @url{https://prosody.im/doc/modules/mod_muc}.

note: type: deftypevr
en: Available @code{mod-muc-configuration} fields are:
fr: Les champs de @code{mod-muc-configuration} disponibles sont :

note: type: deftypevr
en: {@code{mod-muc-configuration} parameter} string name
fr: {paramètre de @code{mod-muc-configuration}} string name

note: type: deftypevr
en: The name to return in service discovery responses.  Defaults to @samp{"Prosody Chatrooms"}.
fr: Le nom à renvoyer dans les réponses de découverte de services.  La valeur par défaut est @samp{"Prosody Chatrooms"}.

note: type: deftypevr
en: {@code{mod-muc-configuration} parameter} string-or-boolean restrict-room-creation
fr: {paramètre de @code{mod-muc-configuration}} string-or-boolean restrict-room-creation

note: type: deftypevr
en: If @samp{#t}, this will only allow admins to create new chatrooms.  Otherwise anyone can create a room.  The value @samp{"local"} restricts room creation to users on the service's parent domain.  E.g.@: @samp{user@@example.com} can create rooms on @samp{rooms.example.com}.  The value @samp{"admin"} restricts to service administrators only.  Defaults to @samp{#f}.
fr: Si la valeur est @samp{#t}, cela permettra uniquement aux admins de créer de nouveaux salons.  Sinon n'importe qui peut créer un salon.  La valeur @samp{"local"} restreint la création aux utilisateurs du domaine parent du service.  P.@: ex.@: @samp{user@@example.com} peut créer des salons sur @samp{rooms.example.com}.  La valeur @samp{"admin"} restreint ce service aux administrateurs.  La valeur par défaut est @samp{#f}.

note: type: deftypevr
en: {@code{mod-muc-configuration} parameter} non-negative-integer max-history-messages
fr: {paramètre de @code{mod-muc-configuration}} entier-non-négatif max-history-messages

note: type: deftypevr
en: Maximum number of history messages that will be sent to the member that has just joined the room.  Defaults to @samp{20}.
fr: Nombre maximum de messages d'historique qui seront envoyés aux membres qui viennent de rejoindre le salon.  La valeur par défaut est @samp{20}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} ext-component-configuration-list ext-components
fr: {paramètre de @code{prosody-configuration}} ext-component-configuration-list ext-components

note: type: deftypevr
en: External components use XEP-0114, which most standalone components support.  To add an external component, you simply fill the hostname field.  See @url{https://prosody.im/doc/components}.  Defaults to @samp{()}.
fr: Les composants externes utilisent XEP-0114, que la plupart des composants supportent.  Pour ajouter un composant externe, vous remplissez simplement le champ de nom d'hôte.  Voir @url{https://prosody.im/doc/components}.  La valeur par défaut est @samp{()}.

note: type: deftypevr
en: Available @code{ext-component-configuration} fields are:
fr: Les champs de @code{ext-component-configuration} disponibles sont :

note: type: deftypevr
en: {@code{ext-component-configuration} parameter} string component-secret
fr: {paramètre de @code{ext-component-configuration}} string component-secret

note: type: deftypevr
en: Password which the component will use to log in.
fr: Mot de passe que le composant utilisera pour s'authentifier.

note: type: deftypevr
en: {@code{ext-component-configuration} parameter} string hostname
fr: {paramètre de @code{ext-component-configuration}} string hostname

note: type: deftypevr
en: {@code{prosody-configuration} parameter} non-negative-integer-list component-ports
fr: {paramètre de @code{prosody-configuration}} liste-d'entiers-non-négatifs component-ports

note: type: deftypevr
en: Port(s) Prosody listens on for component connections.  Defaults to @samp{(5347)}.
fr: Ports sur lesquels Prosody écoutera les connexions des composants.  La valeur par défaut est @samp{(5347)}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} string component-interface
fr: {paramètre de @code{prosody-configuration}} string component-interface

note: type: deftypevr
en: Interface Prosody listens on for component connections.  Defaults to @samp{"127.0.0.1"}.
fr: Interface sur laquelle Prosody écoutera les connexions des composants.  La valeur par défaut est @samp{"127.0.0.1"}.

note: type: deftypevr
en: {@code{prosody-configuration} parameter} maybe-raw-content raw-content
fr: {paramètre de @code{prosody-configuration}} peut-être-contenu-brut raw-content

note: type: deftypevr
en: Raw content that will be added to the configuration file.
fr: Contenu brut qui sera ajouté au fichier de configuration.

note: type: Plain text
en: It could be that you just want to get a @code{prosody.cfg.lua} up and running.  In that case, you can pass an @code{opaque-prosody-configuration} record as the value of @code{prosody-service-type}.  As its name indicates, an opaque configuration does not have easy reflective capabilities.  Available @code{opaque-prosody-configuration} fields are:
fr: Il se peut que vous ayez juste envie de lancer un fichier @code{prosody.cfg.lua} directement.  Dans ce cas, vous pouvez passer un enregistrement @code{opaque-prosody-configuration} comme valeur à @code{prosody-service-type}.  Comme son nom l'indique, une configuration opaque n'a pas de capacités de réflexion simples.  Les champs disponibles de @code{opaque-prosody-configuration} sont :

note: type: deftypevr
en: {@code{opaque-prosody-configuration} parameter} package prosody
fr: {paramètre de @code{opaque-prosody-configuration}} package prosody

note: type: deftypevr
en: The prosody package.
fr: Le paquet prosody.

note: type: deftypevr
en: {@code{opaque-prosody-configuration} parameter} string prosody.cfg.lua
fr: {paramètre de @code{opaque-prosody-configuration}} string prosody.cfg.lua

note: type: deftypevr
en: The contents of the @code{prosody.cfg.lua} to use.
fr: Le contenu de @code{prosody.cfg.lua} à utiliser.

note: type: Plain text
en: For example, if your @code{prosody.cfg.lua} is just the empty string, you could instantiate a prosody service like this:
fr: Par exemple, si votre @code{prosody.cfg.lua} est juste la chaîne vide, vous pouvez instancier un service prosody comme ceci :

note: type: subsubheading
en: BitlBee Service
fr: Service BitlBee

note: type: cindex
en: IRC gateway
fr: Passerelle IRC

note: type: Plain text
en: @url{https://bitlbee.org,BitlBee} is a gateway that provides an IRC interface to a variety of messaging protocols such as XMPP.
fr: @url{https://bitlbee.org,BitlBee} est une passerelle qui fournit une interface IRC vers une variété de protocoles de messagerie instantanée comme XMPP.

note: type: defvr
en: {Scheme Variable} bitlbee-service-type
fr: {Variable Scheme} bitlbee-service-type

note: type: defvr
en: This is the service type for the @url{https://bitlbee.org,BitlBee} IRC gateway daemon.  Its value is a @code{bitlbee-configuration} (see below).
fr: C'est le type de service pour le démon de passerelle IRC @url{https://bitlbee.org,BitlBee}.  Sa valeur est un @code{bitlbee-configuration} (voir plus bas).

note: type: defvr
en: To have BitlBee listen on port 6667 on localhost, add this line to your services:
fr: Pour que BitlBee écoute sur le port 6667 sur localhost, ajoutez cette ligne à vos services :

note: type: deftp
en: {Data Type} bitlbee-configuration
fr: {Type de données} bitlbee-configuration

note: type: deftp
en: This is the configuration for BitlBee, with the following fields:
fr: C'est la configuration de BitlBee, avec les champs suivants :

note: type: item
en: @code{interface} (default: @code{"127.0.0.1"})
fr: @code{interface} (par défaut : @code{"127.0.0.1"})

note: type: itemx
en: @code{port} (default: @code{6667})
fr: @code{port} (par défaut : @code{6667})

note: type: table
en: Listen on the network interface corresponding to the IP address specified in @var{interface}, on @var{port}.
fr: Écoute sur l'interface réseau correspondant à l'adresse IP dans @var{interface}, sur @var{port}.

note: type: table
en: When @var{interface} is @code{127.0.0.1}, only local clients can connect; when it is @code{0.0.0.0}, connections can come from any networking interface.
fr: Lorsque @var{interface} vaut @code{127.0.0.1}, seuls les clients locaux peuvent se connecter ; lorsqu'elle vaut @code{0.0.0.0}, les connexions peuvent venir de n'importe quelle interface réseau.

note: type: item
en: @code{bitlbee} (default: @code{bitlbee})
fr: @code{bitlbee} (par défaut : @code{bitlbee})

note: type: table
en: The BitlBee package to use.
fr: Le paquet BitlBee à utiliser.

note: type: item
en: @code{plugins} (default: @code{'()})
fr: @code{plugins} (par défaut : @code{'()})

note: type: table
en: List of plugin packages to use---e.g., @code{bitlbee-discord}.
fr: Liste des paquets de greffons à utiliser — p.@: ex.@: @code{bitlbee-discord}.

note: type: table
en: Configuration snippet added as-is to the BitlBee configuration file.
fr: Partie de configuration ajoutée telle-quelle au fichier de configuration de BitlBee.

note: type: subsubheading
en: Quassel Service
fr: Service Quassel

note: type: Plain text
en: @url{https://quassel-irc.org/,Quassel} is a distributed IRC client, meaning that one or more clients can attach to and detach from the central core.
fr: @url{https://quassel-irc.org/,Quassel} est un client IRC distribué, ce qui signifie qu'un client ou plus peuvent s'attacher et se détacher du cœur central.

note: type: defvr
en: {Scheme Variable} quassel-service-type
fr: {Variable Scheme} quassel-service-type

note: type: defvr
en: This is the service type for the @url{https://quassel-irc.org/,Quassel} IRC backend daemon.  Its value is a @code{quassel-configuration} (see below).
fr: C'est le type de service pour le démon IRC @url{https://quassel-irc.org/,Quassel}.  Sa valeur est un @code{quassel-configuration} (voir plus bas).

note: type: deftp
en: {Data Type} quassel-configuration
fr: {Type de données} quassel-configuration

note: type: deftp
en: This is the configuration for Quassel, with the following fields:
fr: C'est la configuration de Quassel, avec les champs suivants :

note: type: item
en: @code{quassel} (default: @code{quassel})
fr: @code{quassel} (par défaut : @code{quassel})

note: type: table
en: The Quassel package to use.
fr: Le paquet Quassel à utiliser.

note: type: item
en: @code{interface} (default: @code{"::,0.0.0.0"})
fr: @code{interface} (par défaut : @code{"::,0.0.0.0"})

note: type: item
en: @code{port} (default: @code{4242})
fr: @code{port} (par défaut : @code{4242})

note: type: table
en: Listen on the network interface(s) corresponding to the IPv4 or IPv6 interfaces specified in the comma delimited @var{interface}, on @var{port}.
fr: Écoute sur les interfaces réseau correspondant à l'adresse IPv4 ou IPv6 des interfaces spécifiées dans @var{interface}, une liste de chaînes délimitées par des virgules, sur @var{port}.

note: type: item
en: @code{loglevel} (default: @code{"Info"})
fr: @code{loglevel} (par défaut : @code{"info"})

note: type: table
en: The level of logging desired.  Accepted values are Debug, Info, Warning and Error.
fr: Le niveau de journalisation souhaité.  Les valeurs acceptées sont « Debug », « Info », « Warning » et « Error ».

note: type: cindex
en: telephony, services
fr: téléphonie, services

note: type: Plain text
en: The @code{(gnu services telephony)} module contains Guix service definitions for telephony services.  Currently it provides the following services:
fr: Le module @code{(gnu services telephony)} contient des définitions de services Guix pour les services de téléphonie.  Actuellement il fournit les services suivants :

note: type: Plain text
en: This section describes how to configure a Jami server that can be used to host video (or audio) conferences, among other uses.  The following example demonstrates how to specify Jami account archives (backups) to be provisioned automatically:
fr: Cette section décrit comment configurer un serveur Jami que vous pouvez utiliser pour héberger des conférence vidéo (ou audio) entre autres choses. L'exemple suivant montre comment spécifier les archives de compte Jami (les sauvegardes) automatiquement :

note: type: Plain text
en: When the accounts field is specified, the Jami account files of the service found under @file{/var/lib/jami} are recreated every time the service starts.
fr: Lorsque le champ de comptes est spécifié, les fichiers de compte Jami du service trouvés dans @file{/var/lib/jami} seront recréés à chaque redémarrage du service.

note: type: Plain text
en: Jami accounts and their corresponding backup archives can be generated using the @code{jami} or @code{jami-gnome} Jami clients.  The accounts should not be password-protected, but it is wise to ensure their files are only readable by @samp{root}.
fr: Les comptes Jami et leurs sauvegardes correspondantes peuvent être générés avec les clients @code{jami} ou @code{jami-gnome}. Les comptes ne devraient pas être protégés par un mot de passe, mais il vaut mieux vous assurer que leurs fichiers ne sont lisibles que par @samp{root}.

note: type: Plain text
en: The next example shows how to declare that only some contacts should be allowed to communicate with a given account:
fr: L'exemple suivant montre comme déclarer que seuls certains contact devraient pouvoir communiquer avec un compte donné :

note: type: Plain text
en: In this mode, only the declared @code{allowed-contacts} can initiate communication with the Jami account.  This can be used, for example, with rendezvous point accounts to create a private video conferencing space.
fr: dans ce mode, seuls les @code{allowed-contacts} déclarés peuvent débuter une communication avec le compte Jami. Vous pouvez utiliser cela par exemple avec des comptes de point de rendez-vous pour créer un espace de vidéo-conférence privé.

note: type: Plain text
en: To put the system administrator in full control of the conferences hosted on their system, the Jami service supports the following actions:
fr: Pour que l'administrateur système ait le contrôle complet des conférences hébergées sur son système, le service Jami prend en charge les actions suivantes :

note: type: Plain text
en: The above actions aim to provide the most valuable actions for moderation purposes, not to cover the whole Jami API.  Users wanting to interact with the Jami daemon from Guile may be interested in experimenting with the @code{(gnu build jami-service)} module, which powers the above Shepherd actions.
fr: Les actions ci-dessus ont pour but de fournir les actions les plus utiles pour la modération, pas de couvrir l'ensemble de l'API de Jami. Si vous souhaitez interagir avec le démon Jami depuis Guile, vous pouvez expérimenter le module @code{(gnu build jami-service)}, qui propulse les actions Shepherd ci-dessus.

note: type: Plain text
en: The @code{add-moderator} and @code{ban-contact} actions accept a contact @emph{fingerprint} (40 characters long hash) as first argument and an account fingerprint or username as second argument:
fr: Les action @code{add-moderator} et @code{ban-contact} acceptent @emph{l'empreinte} d'un contact (un hash long de 40 caractères) comme premier argument et l'empreinte d'un compte ou un nom d'utilisateur comme second argument :

note: type: Plain text
en: In the case of @code{ban-contact}, the second username argument is optional; when omitted, the account is banned from all Jami accounts:
fr: dans le cas de @code{ban-contact}, le second argument est facultatif ; lorsqu'il est omis, le compte est banni de tous les comptes de Jami :

note: type: Plain text
en: Banned contacts are also stripped from their moderation privileges.
fr: Les contacts bannis n'ont plus non plus de privilèges administrateur.

note: type: Plain text
en: The @code{disable-account} action allows to completely disconnect an account from the network, making it unreachable, while @code{enable-account} does the inverse.  They accept a single account username or fingerprint as first argument:
fr: L'action @code{disable-account} permet de déconnecter entièrement un compte du réseau, le rendant injoignable, tandis que @code{enable-account} fait l'inverse. Ils acceptent un seul nom de compte ou empreinte comme premier argument :

note: type: Plain text
en: The @code{list-account-details} action prints the detailed parameters of each accounts in the Recutils format, which means the @command{recsel} command can be used to select accounts of interest (@pxref{Selection Expressions,,,recutils, GNU recutils manual}).  Note that period characters (@samp{.}) found in the account parameter keys are mapped to underscores (@samp{_}) in the output, to meet the requirements of the Recutils format.  The following example shows how to print the account fingerprints for all accounts operating in the rendezvous point mode:
fr: L'action @code{list-account-details} affiche les paramètres détaillés de chaque compte au format Recutils, ce qui signifie que vous pouvez utiliser la commande @command{recsel} pour choisir les comptes qui vous intéressent (@pxref{Selection Expressions,,,recutils, GNU recutils manual}). Remarquez que les caractères point (@samp{.}) qui se trouvent la les clés des paramètres deviennent des underscores (@samp{_}) dans la sortie, pour satisfaire les exigences du format Recutils. L'exemple suivant vous montre comment afficher les empreintes des comptes qui opèrent en mode rendez-vous :

note: type: Plain text
en: The remaining actions should be self-explanatory.
fr: Les autres actions devraient être évidentes.

note: type: Plain text
en: The complete set of available configuration options is detailed below.
fr: L'ensemble des options de configuration disponibles est donné ci-dessous.

note: type: deftp
en: {Data Type} jami-configuration
fr: {Type de données} jami-configuration

note: type: deftp
en: Available @code{jami-configuration} fields are:
fr: Les champs de @code{jami-configuration} disponibles sont :

note: type: item
en: @code{libjami} (default: @code{libjami}) (type: package)
fr: @code{libjami} (par défaut : @code{libjami}) (type : paquet)

note: type: table
en: The Jami daemon package to use.
fr: Le paquet du démon Jami à utiliser.

note: type: item
en: @code{dbus} (default: @code{dbus-for-jami}) (type: package)
fr: @code{dbus} (par défaut : @code{dbus-for-jami}) (type : paquet)

note: type: table
en: The D-Bus package to use to start the required D-Bus session.
fr: Le paquet D-Bus à utiliser pour démarrer la session D-Bus requise.

note: type: item
en: @code{nss-certs} (default: @code{nss-certs}) (type: package)
fr: @code{nss-certs} (par défaut : @code{nss-certs}) (type : paquet)

note: type: table
en: The nss-certs package to use to provide TLS certificates.
fr: Le paquet nss-certs à utiliser pour utiliser les certificats TLS fournis.

note: type: item
en: @code{enable-logging?} (default: @code{#t}) (type: boolean)
fr: @code{enable-logging?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Whether to enable logging to syslog.
fr: Indique s'il faut activer la journalisation vers syslog.

note: type: table
en: Whether to enable debug level messages.
fr: Indique s'il faut activer les messages de débogage.

note: type: item
en: @code{auto-answer?} (default: @code{#f}) (type: boolean)
fr: @code{auto-answer?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether to force automatic answer to incoming calls.
fr: Indique s'il faut forcer la réponse automatique aux appels entrants.

note: type: item
en: @code{accounts} (type: maybe-jami-account-list)
fr: @code{accounts} (type : peut-être-liste-de-jami-account)

note: type: table
en: A list of Jami accounts to be (re-)provisioned every time the Jami daemon service starts.  When providing this field, the account directories under @file{/var/lib/jami/} are recreated every time the service starts, ensuring a consistent state.
fr: Une liste de comptes Jami à (re-)provisionner à chaque fois que le service du démon Jami démarre. Lorsque le champ est spécifié, les répertoires des comptes dans @file{/var/lib/jami/} sont recréés à chaque fois que le service démarre, pour assurer un état cohérent.

note: type: deftp
en: {Data Type} jami-account
fr: {Type de données} jami-account

note: type: deftp
en: Available @code{jami-account} fields are:
fr: Les champs de @code{jami-account} disponibles sont :

note: type: item
en: @code{archive} (type: string-or-computed-file)
fr: @code{archive} (type : string-or-computed-file)

note: type: table
en: The account archive (backup) file name of the account.  This is used to provision the account when the service starts.  The account archive should @emph{not} be encrypted.  It is highly recommended to make it readable only to the @samp{root} user (i.e., not in the store), to guard against leaking the secret key material of the Jami account it contains.
fr: Le nom de fichier de l'archive (sauvegarde) du compte. C'est utilisé pour provisionner le compte quand le service démarre. L'archive du compte ne devrait @emph{pas} être chiffrée. Il est fortement recommandé de la rendre lisible uniquement à l'utilisateur @samp{root} (c.-à-d. pas dans le dépôt), pour vous prémunir contre la fuite de la clé secrète du compte Jami sauvegardé.

note: type: item
en: @code{allowed-contacts} (type: maybe-account-fingerprint-list)
fr: @code{allowed-contacts} (type : peut-être-liste-de-account-fingerprint)

note: type: table
en: The list of allowed contacts for the account, entered as their 40 characters long fingerprint.  Messages or calls from accounts not in that list will be rejected.  When left specified, the configuration of the account archive is used as-is with respect to contacts and public inbound calls/messaging allowance, which typically defaults to allow any contact to communicate with the account.
fr: La liste des contacts permis pour le compte, saisis avec leur empreinte longue de 40 caractères. Les messages et les appels des comptes qui ne sont pas dans la liste seront rejetés. Lorsque la valeur n'est pas spécifiée, la configuration de l'archive du compte est utilisée telle-quelle par rapport aux permissions d'appels et de messages entrants, ce qui se résume par défaut à accepter tous les contacts à communiquer avec le compte.

note: type: item
en: @code{moderators} (type: maybe-account-fingerprint-list)
fr: @code{moderators} (type : peut-être-liste-de-account-fingerprint)

note: type: table
en: The list of contacts that should have moderation privileges (to ban, mute, etc.  other users) in rendezvous conferences, entered as their 40 characters long fingerprint.  When left unspecified, the configuration of the account archive is used as-is with respect to moderation, which typically defaults to allow anyone to moderate.
fr: La liste des contacts qui devraient avoir des privilèges de modération (pour bannir, rendre muet, etc les autres utilisateur·rices) dans les conférences en rendez-vous, saisis avec leur empreinte longue de 40 caractères. Lorsque la valeur n'est pas spécifiée, la configuration de l'archive du compte est utilisée telle-quelle pour la modération, ce qui se résume par défaut à permettre à n'importe qui de modérer.

note: type: item
en: @code{rendezvous-point?} (type: maybe-boolean)
fr: @code{rendezvous-point?} (type : peut-être-booléen)

note: type: table
en: Whether the account should operate in the rendezvous mode.  In this mode, all the incoming audio/video calls are mixed into a conference.  When left unspecified, the value from the account archive prevails.
fr: Indique si le compte devrait opérer en mode rendez-vous. Dans ce mode, tous les appels audio et vidéos entrants sont fusionnés en une conférence. Lorsque la valeur n'est pas spécifiée, la valeur de l'archive du compte est utilisée.

note: type: item
en: @code{peer-discovery?} (type: maybe-boolean)
fr: @code{peer-discovery?} (type : peut-être-booléen)

note: type: table
en: Whether peer discovery should be enabled.  Peer discovery is used to discover other OpenDHT nodes on the local network, which can be useful to maintain communication between devices on such network even when the connection to the Internet has been lost.  When left unspecified, the value from the account archive prevails.
fr: Indique si la découverte de pairs devrait être activée. La découverte de pairs est utilisée pour découvrir d'autres nœuds OpenDHT sur le réseau local, ce qui peut être utile pour maintenir une connexion entre appareils locaux sur le réseau même si la connexion internet est perdue. Lorsque la valeur n'est pas spécifiée, celle de l'archive du compte est utilisée.

note: type: item
en: @code{bootstrap-hostnames} (type: maybe-string-list)
fr: @code{bootstrap-hostnames} (type : peut-être-liste-de-chaine)

note: type: table
en: A list of hostnames or IPs pointing to OpenDHT nodes, that should be used to initially join the OpenDHT network.  When left unspecified, the value from the account archive prevails.
fr: Une liste des noms d'hôte ou IP pointant vers des nœuds OpenDHT, qui devraient être utilisés pour rejoindre le réseau OpenDHT au départ. Lorsque la valeur n'est pas spécifiée, la valeur de l'archive du compte est utilisée.

note: type: item
en: @code{name-server-uri} (type: maybe-string)
fr: @code{name-server-uri} (type : peut-être-chaine)

note: type: table
en: The URI of the name server to use, that can be used to retrieve the account fingerprint for a registered username.
fr: L'URI du serveur de nom à utiliser, qui peut être utilisé pour récupérer l'empreinte du compte pour un nom d'utilisateur enregistré.

note: type: subsubheading
en: Mumble server
fr: Serveur Mumble

note: type: cindex
en: VoIP server
fr: Serveur VoIP

note: type: Plain text
en: This section describes how to set up and run a @uref{https://mumble.info, Mumble} server (formerly known as Murmur).
fr: Cette section décrit comment configurer et lancer un serveur @uref{https://mumble.info, Mumble} (précédemment connu sous le nom de Murmur).

note: type: deftp
en: {Data Type} mumble-server-configuration
fr: {Type de données} mumble-server-configuration

note: type: deftp
en: The service type for the Mumble server.  An example configuration can look like this:
fr: Le type de service pour le serveur Mumble.  Voici un exemple de configuration :

note: type: lisp
en: (service mumble-server-service-type
             (mumble-server-configuration
              (welcome-text
                "Welcome to this Mumble server running on Guix!")
              (cert-required? #t) ;disallow text password logins
              (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem")
              (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem")))
fr: (service mumble-server-service-type
             (mumble-server-configuration
              (welcome-text
                "Bienvenue sur ce serveur Mumble qui tourne sur Guix !")
              (cert-required? #t) ;désactive les connections par mot de passe
              (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem")
              (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem")))

note: type: deftp
en: After reconfiguring your system, you can manually set the mumble-server @code{SuperUser} password with the command that is printed during the activation phase.
fr: Après avoir reconfiguré votre système, vous pouvez manuellement indiquer le mot de passe @code{SuperUser} de mumble-server avec la commande qui s'affiche pendant la phase d'activation.

note: type: deftp
en: It is recommended to register a normal Mumble user account and grant it admin or moderator rights.  You can use the @code{mumble} client to login as new normal user, register yourself, and log out.  For the next step login with the name @code{SuperUser} use the @code{SuperUser} password that you set previously, and grant your newly registered mumble user administrator or moderator rights and create some channels.
fr: Il est recommandé d'enregistrer un compte utilisateur Mumble normal et de lui donner les droits admin ou modérateur.  Vous pouvez utiliser le client @code{mumble} pour vous connecter en tant que nouvel utilisateur normal, vous enregistrer et vous déconnecter.  Pour l'étape suivante, connectez-vous avec le nom @code{SuperUser} en utilisant le mot de passe @code{SuperUser} que vous avez indiqué précédemment et accordez les droits administrateur ou modérateur à vous utilisateur mumble nouvellement enregistré et créez quelques salons.

note: type: deftp
en: Available @code{mumble-server-configuration} fields are:
fr: Les champs de @code{mumble-server-configuration} disponibles sont :

note: type: item
en: @code{package} (default: @code{mumble})
fr: @code{package} (par défaut : @code{mumble})

note: type: table
en: Package that contains @code{bin/mumble-server}.
fr: Paquet qui contient @code{bin/mumble-server}.

note: type: item
en: @code{user} (default: @code{"mumble-server"})
fr: @code{user} (par défaut : @code{"mumble-server"})

note: type: table
en: User who will run the Mumble-Server server.
fr: Utilisateur qui lancera le serveur Mumble.

note: type: item
en: @code{group} (default: @code{"mumble-server"})
fr: @code{group} (par défaut : @code{"mumble-server"})

note: type: table
en: Group of the user who will run the mumble-server server.
fr: Groupe de l'utilisateur qui lancera le serveur Mumble.

note: type: item
en: @code{port} (default: @code{64738})
fr: @code{port} (par défaut : @code{64738})

note: type: table
en: Port on which the server will listen.
fr: Port sur lequel le serveur écoutera.

note: type: item
en: @code{welcome-text} (default: @code{""})
fr: @code{welcome-text} (par défaut : @code{""})

note: type: table
en: Welcome text sent to clients when they connect.
fr: Texte de bienvenue envoyé aux clients lors de leur connexion.

note: type: item
en: @code{server-password} (default: @code{""})
fr: @code{server-password} (par défaut : @code{""})

note: type: table
en: Password the clients have to enter in order to connect.
fr: Mot de passe que les clients devront entrer pour se connecter.

note: type: item
en: @code{max-users} (default: @code{100})
fr: @code{max-users} (par défaut : @code{100})

note: type: table
en: Maximum of users that can be connected to the server at once.
fr: Nombre maximum d'utilisateurs qui peuvent se connecter à ce serveur en même temps.

note: type: item
en: @code{max-user-bandwidth} (default: @code{#f})
fr: @code{max-user-bandwidth} (par défaut : @code{#f})

note: type: table
en: Maximum voice traffic a user can send per second.
fr: Trafic de voix maximum qu'un utilisateur peut envoyer par seconde.

note: type: item
en: @code{database-file} (default: @code{"/var/lib/mumble-server/db.sqlite"})
fr: @code{database-file} (par défaut : @code{"/var/lib/mumble-server/db.sqlite"})

note: type: table
en: File name of the sqlite database.  The service's user will become the owner of the directory.
fr: Nom de fichier de la base de données sqlite.  L'utilisateur du service deviendra propriétaire du répertoire.

note: type: item
en: @code{log-file} (default: @code{"/var/log/mumble-server/mumble-server.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/mumble-server/mumble-server.log"})

note: type: table
en: File name of the log file.  The service's user will become the owner of the directory.
fr: Nom du fichier de journal.  L'utilisateur du service deviendra propriétaire du répertoire.

note: type: item
en: @code{autoban-attempts} (default: @code{10})
fr: @code{autoban-attempts} (par défaut : @code{10})

note: type: table
en: Maximum number of logins a user can make in @code{autoban-timeframe} without getting auto banned for @code{autoban-time}.
fr: Nombre maximum de connexions qu'un utilisateur peut faire pendant @code{autoban-timeframe} sans être banni automatiquement pour @code{autoban-time}.

note: type: item
en: @code{autoban-timeframe} (default: @code{120})
fr: @code{autoban-timeframe} (par défaut : @code{120})

note: type: table
en: Timeframe for autoban in seconds.
fr: Durée du temps pendant lequel le nombre de connexions est compté.

note: type: item
en: @code{autoban-time} (default: @code{300})
fr: @code{autoban-time} (par défaut : @code{300})

note: type: table
en: Amount of time in seconds for which a client gets banned when violating the autoban limits.
fr: Durée du bannissement automatique en secondes.

note: type: item
en: @code{opus-threshold} (default: @code{100})
fr: @code{opus-threshold} (par défaut : @code{100})

note: type: table
en: Percentage of clients that need to support opus before switching over to opus audio codec.
fr: Pourcentage des clients qui doivent supporter opus avant de passer sur le codec audio opus.

note: type: item
en: @code{channel-nesting-limit} (default: @code{10})
fr: @code{channel-nesting-limit} (par défaut : @code{10})

note: type: table
en: How deep channels can be nested at maximum.
fr: Profondeur maximum des canaux.

note: type: item
en: @code{channelname-regex} (default: @code{#f})
fr: @code{channelname-regex} (par défaut : @code{#f})

note: type: table
en: A string in form of a Qt regular expression that channel names must conform to.
fr: Une chaîne de la forme d'une expression régulière Qt que les noms de canaux doivent respecter.

note: type: item
en: @code{username-regex} (default: @code{#f})
fr: @code{username-regex} (par défaut : @code{#f})

note: type: table
en: A string in form of a Qt regular expression that user names must conform to.
fr: Une chaîne de la forme d'une expression régulière Qt que les noms d'utilisateurs doivent respecter.

note: type: item
en: @code{text-message-length} (default: @code{5000})
fr: @code{text-message-length} (par défaut : @code{5000})

note: type: table
en: Maximum size in bytes that a user can send in one text chat message.
fr: Taille maximum en octets qu'un utilisateur peut envoyer en un seul message textuel.

note: type: item
en: @code{image-message-length} (default: @code{(* 128 1024)})
fr: @code{image-message-length} (par défaut : @code{(* 128 1024)})

note: type: table
en: Maximum size in bytes that a user can send in one image message.
fr: Taille maximum en octets qu'un utilisateur peut envoyer en une seule image.

note: type: item
en: @code{cert-required?} (default: @code{#f})
fr: @code{cert-required?} (par défaut : @code{#f})

note: type: table
en: If it is set to @code{#t} clients that use weak password authentication will not be accepted.  Users must have completed the certificate wizard to join.
fr: Si la valeur est @code{#t} les clients utilisant une authentification par mot de passe faible ne seront pas acceptés.  Les utilisateurs doivent compléter l'assistant de configuration des certificats pour rejoindre le serveur.

note: type: item
en: @code{remember-channel?} (default: @code{#f})
fr: @code{remember-channel?} (paramètre de : @code{#f})

note: type: table
en: Should mumble-server remember the last channel each user was in when they disconnected and put them into the remembered channel when they rejoin.
fr: Indique si mumble-server devrait se rappeler du dernier canal dans lequel étaient les utilisateurs au moment de leur déconnexion et les y remettre lorsqu'ils se reconnectent.

note: type: item
en: @code{allow-html?} (default: @code{#f})
fr: @code{allow-html?} (par défaut : @code{#f})

note: type: table
en: Should html be allowed in text messages, user comments, and channel descriptions.
fr: Indique si le html est autorisé dans les messages textuels, les commentaires utilisateurs et les descriptions des canaux.

note: type: item
en: @code{allow-ping?} (default: @code{#f})
fr: @code{allow-ping?} (par défaut : @code{#f})

note: type: table
en: Setting to true exposes the current user count, the maximum user count, and the server's maximum bandwidth per client to unauthenticated users.  In the Mumble client, this information is shown in the Connect dialog.
fr: Mettre à vrai expose le nombre d'utilisateurs, le nombre d'utilisateurs maximum et la bande passante maximale du serveur par client aux utilisateurs non connectés.  Dans le client Mumble, cette information est affichée dans la boîte de dialogue de connexion.

note: type: table
en: Disabling this setting will prevent public listing of the server.
fr: Désactiver ce paramètre empêchera le serveur d'être publiquement listé.

note: type: item
en: @code{bonjour?} (default: @code{#f})
fr: @code{bonjour?} (par défaut : @code{#f})

note: type: table
en: Should the server advertise itself in the local network through the bonjour protocol.
fr: Indique si le serveur s'annonce sur le réseau local à travers le protocole bonjour.

note: type: item
en: @code{send-version?} (default: @code{#f})
fr: @code{send-version?} (par défaut : @code{#f})

note: type: table
en: Should the mumble-server server version be exposed in ping requests.
fr: Indique si la version du serveur mumble-server doit être exposée dans les requêtes ping.

note: type: item
en: @code{log-days} (default: @code{31})
fr: @code{log-days} (par défaut : @code{31})

note: type: table
en: Mumble also stores logs in the database, which are accessible via RPC.  The default is 31 days of months, but you can set this setting to 0 to keep logs forever, or -1 to disable logging to the database.
fr: Mumlbe stocke aussi les journaux en base de données, qui sont accessible via RPC.  La valeur par défaut est 31 jours, mais vous pouvez le mettre à 0 pour les garder pour toujours ou à -1 pour désactiver la journalisation dans la base de données.

note: type: item
en: @code{obfuscate-ips?} (default: @code{#t})
fr: @code{obfuscate-ips?} (par défaut : @code{#t})

note: type: table
en: Should logged ips be obfuscated to protect the privacy of users.
fr: Indique si les IP enregistrées doivent être cachées pour protéger la vie privée des utilisateurs.

note: type: item
en: @code{ssl-cert} (default: @code{#f})
fr: @code{ssl-cert} (par défaut : @code{#f})

note: type: table
en: File name of the SSL/TLS certificate used for encrypted connections.
fr: Nom de fichier du certificat SSL/TLS utilisé pour les connexions chiffrées.

note: type: item
en: @code{ssl-key} (default: @code{#f})
fr: @code{ssl-key} (par défaut : @code{#f})

note: type: table
en: Filepath to the ssl private key used for encrypted connections.
fr: Chemin de fichier vers la clef privée ssl pour les connexions chiffrées.

note: type: item
en: @code{ssl-dh-params} (default: @code{#f})
fr: @code{ssl-dh-params} (par défaut : @code{#f})

note: type: table
en: File name of a PEM-encoded file with Diffie-Hellman parameters for the SSL/TLS encryption.  Alternatively you set it to @code{"@@ffdhe2048"}, @code{"@@ffdhe3072"}, @code{"@@ffdhe4096"}, @code{"@@ffdhe6144"} or @code{"@@ffdhe8192"} to use bundled parameters from RFC 7919.
fr: Nom de fichier d'un fichier encodé en PEM avec les paramètres Diffie-Hellman pour le chiffrement SSL/TLS.  Autrement vous pouvez indiquer @code{"@@ffdhe2048"}, @code{"@@ffdhe3072"}, @code{"@@ffdhe4096"}, @code{"@@ffdhe6144"} ou @code{"@@ffdhe8192"} pour utiliser les paramètres inclus de la RFC 7919.

note: type: item
en: @code{ssl-ciphers} (default: @code{#f})
fr: @code{ssl-ciphers} (par défaut : @code{#f})

note: type: table
en: The @code{ssl-ciphers} option chooses the cipher suites to make available for use in SSL/TLS.
fr: L'option @code{ssl-ciphers} permet de choisir les suites de chiffrement disponibles pour SSL/TLS.

note: type: table
en: This option is specified using @uref{https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT, OpenSSL cipher list notation}.
fr: Cette option est spécifiée en utilisant l'@uref{https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT, OpenSSL cipher list notation}.

note: type: table
en: It is recommended that you try your cipher string using 'openssl ciphers <string>' before setting it here, to get a feel for which cipher suites you will get.  After setting this option, it is recommend that you inspect your Mumble server log to ensure that Mumble is using the cipher suites that you expected it to.
fr: Nous vous recommandons d'essayer votre chaîne de suites de chiffrements avec « openssl ciphers <chaîne> » avant de l'indiquer ici, pour avoir une idée des suites de chiffrement que vous aurez.  Après avoir indiqué cette option, nous vous recommandons d'inspecter les journaux du serveur Mumble pour vous assurer que Mumble utilise les suites de chiffrements auxquelles vous vous attendez.

note: type: quotation
en: Changing this option may impact the backwards compatibility of your Mumble-Server server, and can remove the ability for older Mumble clients to be able to connect to it.
fr: Modifier cette option peut impacter la rétrocompatibilité de votre serveur Mumble, et peut empêcher que des clients Mumble anciens se connectent.

note: type: item
en: @code{public-registration} (default: @code{#f})
fr: @code{public-registration} (par défaut : @code{#f})

note: type: table
en: Must be a @code{<mumble-server-public-registration-configuration>} record or @code{#f}.
fr: Doit être un enregistrement @code{<mumble-server-public-registration-configuration>} ou @code{#f}.

note: type: table
en: You can optionally register your server in the public server list that the @code{mumble} client shows on startup.  You cannot register your server if you have set a @code{server-password}, or set @code{allow-ping} to @code{#f}.
fr: Vous pouvez aussi enregistrer votre serveur dans la liste des serveurs publiques que le client @code{mumble} affiche au démarrage.  Vous ne pouvez pas enregistrer votre serveur si vous avez un @code{server-password} ou @code{allow-ping} à @code{#f}.

note: type: table
en: It might take a few hours until it shows up in the public list.
fr: Cela peut prendre quelques heures avant d'arriver sur la liste publique.

note: type: item
en: @code{file} (default: @code{#f})
fr: @code{file} (par défaut : @code{#f})

note: type: table
en: Optional alternative override for this configuration.
fr: Version alternative de cette configuration : si vous indiquez quelque chose, le reste est ignoré.

note: type: deftp
en: {Data Type} mumble-server-public-registration-configuration
fr: {Type de données} mumble-server-public-registration-configuration

note: type: deftp
en: Configuration for public registration of a mumble-server service.
fr: Configuration pour l'enregistrement public du service mumble-server.

note: type: table
en: This is a display name for your server.  Not to be confused with the hostname.
fr: C'est le nom d'affichage de votre serveur.  Ne pas le confondre avec le nom d'hôte.

note: type: table
en: A password to identify your registration.  Subsequent updates will need the same password.  Don't lose your password.
fr: Un mot de passe pour identifier votre enregistrement.  Les mises à jours suivantes devront utiliser le même mot de passe.  Ne le perdez pas.

note: type: table
en: This should be a @code{http://} or @code{https://} link to your web site.
fr: Cela devrait être le lien @code{http://} ou @code{https://} vers votre site web.

note: type: item
en: @code{hostname} (default: @code{#f})
fr: @code{hostname} (par défaut : @code{#f})

note: type: table
en: By default your server will be listed by its IP address.  If it is set your server will be linked by this host name instead.
fr: Par défaut votre serveur sera listé par son adresse IP.  Si cette option est indiquée votre serveur sera listé par son nom d'hôte.

note: type: quotation
en: Deprecation notice
fr: Avertissement d’obsolescence

note: type: quotation
en: Due to historical reasons, all of the above @code{mumble-server-} procedures are also exported with the @code{murmur-} prefix.  It is recommended that you switch to using @code{mumble-server-} going forward.
fr: Pour des raisons historiques, toutes les procédures @code{mumble-server-} ci-dessus sont aussi exportées avec le préfixe @code{murmur-} à la place. Il est recommandé de commencer à utiliser @code{mumble-server-} à partir de maintenant.

note: type: Plain text
en: The @code{(gnu services file-sharing)} module provides services that assist with transferring files over peer-to-peer file-sharing networks.
fr: Le module @code{(gnu services file-sharing)} fournit des services qui aident au transfert de fichiers sur des réseaux de partage en pair-à-pair.

note: type: subsubheading
en: Transmission Daemon Service
fr: Service du démon Transmission

note: type: Plain text
en: @uref{https://transmissionbt.com/, Transmission} is a flexible BitTorrent client that offers a variety of graphical and command-line interfaces.  A @code{transmission-daemon-service-type} service provides Transmission's headless variant, @command{transmission-daemon}, as a system service, allowing users to share files via BitTorrent even when they are not logged in.
fr: @uref{https://transmissionbt.com/, Transmission} est un client BitTorrent flexibe qui propose un éventail d'interfaces graphiques et en ligne de commande. Un service @code{transmission-daemon-service-type} fournit la variante sans interface de Transmission, @command{transmission-daemon}, en tant que service du système, ce qui permet aux utilisateurs de partager des fichiers via BitTorrent même lorsqu'ils ne sont pas connectés.

note: type: deffn
en: {Scheme Variable} transmission-daemon-service-type
fr: {Variable Scheme} transmission-daemon-service-type

note: type: deffn
en: The service type for the Transmission Daemon BitTorrent client. Its value must be a @code{transmission-daemon-configuration} object as in this example:
fr: Le type de service pour le démon du client BitTorrent Transmission. Sa valeur doit être un enregistrement @code{trasnmission-daemon-configuration} comme dans cet exemple :

note: type: lisp
en: (service transmission-daemon-service-type
             (transmission-daemon-configuration
              ;; Restrict access to the RPC ("control") interface
              (rpc-authentication-required? #t)
              (rpc-username "transmission")
              (rpc-password
               (transmission-password-hash
                "transmission" ; desired password
                "uKd1uMs9"))   ; arbitrary salt value
fr: (service transmission-daemon-service-type
             (transmission-daemon-configuration
              ;; Restreint l'accès à l'interface RPC ("control")
              (rpc-authentication-required? #t)
              (rpc-username "transmission")
              (rpc-password
               (transmission-password-hash
                "transmission" ; mot de passe souhaité
                "uKd1uMs9"))   ; valeur de sel arbitraire

note: type: lisp
en:           ;; Accept requests from this and other hosts on the
              ;; local network
              (rpc-whitelist-enabled? #t)
              (rpc-whitelist '("::1" "127.0.0.1" "192.168.0.*"))
fr:           ;; Accepte les requêtes de cet hôte et d'autres sur le
              ;; réseau local
              (rpc-whitelist-enabled? #t)
              (rpc-whitelist '("::1" "127.0.0.1" "192.168.0.*"))

note: type: lisp
en:           ;; Limit bandwidth use during work hours
              (alt-speed-down (* 1024 2)) ;   2 MB/s
              (alt-speed-up 512)          ; 512 kB/s
fr:           ;; Limite la bande passant utilisée pendant les heures de bureau
              (alt-speed-down (* 1024 2)) ;   2 Mo/s
              (alt-speed-up 512)          ; 512 ko/s

note: type: lisp
en:           (alt-speed-time-enabled? #t)
              (alt-speed-time-day 'weekdays)
              (alt-speed-time-begin
               (+ (* 60 8) 30))           ; 8:30 am
              (alt-speed-time-end
               (+ (* 60 (+ 12 5)) 30))))  ; 5:30 pm
fr:           (alt-speed-time-enabled? #t)
              (alt-speed-time-day 'weekdays)
              (alt-speed-time-begin
               (+ (* 60 8) 30))           ; 8:30
              (alt-speed-time-end
               (+ (* 60 (+ 12 5)) 30))))  ; 17:30

note: type: Plain text
en: Once the service is started, users can interact with the daemon through its Web interface (at @code{http://localhost:9091/}) or by using the @command{transmission-remote} command-line tool, available in the @code{transmission} package.  (Emacs users may want to also consider the @code{emacs-transmission} package.)  Both communicate with the daemon through its remote procedure call (RPC) interface, which by default is available to all users on the system; you may wish to change this by assigning values to the @code{rpc-authentication-required?}, @code{rpc-username} and @code{rpc-password} settings, as shown in the example above and documented further below.
fr: Une fois le service démarré, vous pouvez interagir avec le démon à travers son interface web (sur @code{https://localhost:9091} ou en utilisant la ligne de commande @command{transmission-remote}, disponible dans le paquet @code{transmission}. (les utilisateurs d'Emacs peuvent aussi regarder le paquet @code{emacs-transmission}). Les deux communiquent avec le démon à travers son interface d'appel de procédure distante (RPC), qui est disponible par défaut pour tous les utilisateurs du système ; vous voudrez peut-être changer cela en indiquant des valeurs dans les paramètres @code{rpc-authentication-required?}, @code{rpc-username} et @code{rpc-password}, comme cela est montré et documenté plus bas.

note: type: Plain text
en: The value for @code{rpc-password} must be a password hash of the type generated and used by Transmission clients.  This can be copied verbatim from an existing @file{settings.json} file, if another Transmission client is already being used.  Otherwise, the @code{transmission-password-hash} and @code{transmission-random-salt} procedures provided by this module can be used to obtain a suitable hash value.
fr: La valeur de @code{rpc-password} doit toujours être un hash de mot de passe du type généré et utilisé par les clients Transmission. Il peut être copié directement d'un fichier @file{settings.json} existant, si au autre client Transmission est déjà utilisé. Sinon, les procédures @code{transmission-password-hash} et @code{transmission-random-salt} fournies par ce module peuvent être utilisées pour obtenir un hash convenable.

note: type: deffn
en: {Scheme Procedure} transmission-password-hash @var{password} @var{salt}
fr: {Procédure Scheme} transmission-password-hash @var{password} @var{salt}

note: type: deffn
en: Returns a string containing the result of hashing @var{password} together with @var{salt}, in the format recognized by Transmission clients for their @code{rpc-password} configuration setting.
fr: Renvoie une chaîne contenant le résultat du hash de @var{password} avec @var{salt}, au format reconnu par les clients Transmission pour leur paramètre @code{rpc-password}.

note: type: deffn
en: @var{salt} must be an eight-character string.  The @code{transmission-random-salt} procedure can be used to generate a suitable salt value at random.
fr: @var{salt} doit être une chaîne de huit caractères. La procédure @code{transmission-random-salt} est utile pour générer une valeur correcte au hasard.

note: type: deffn
en: {Scheme Procedure} transmission-random-salt
fr: {Procédure Scheme} transmission-random-salt

note: type: deffn
en: Returns a string containing a random, eight-character salt value of the type generated and used by Transmission clients, suitable for passing to the @code{transmission-password-hash} procedure.
fr: Renvoie une chaîne contenant une valeur de sel à huit caractères aléatoires du type généré et utilisé par les clients de Transmission, utilisable avec la procédure @code{transmission-password-hash}.

note: type: Plain text
en: These procedures are accessible from within a Guile REPL started with the @command{guix repl} command (@pxref{Invoking guix repl}).  This is useful for obtaining a random salt value to provide as the second parameter to `transmission-password-hash`, as in this example session:
fr: Ces procédures sont disponibles dans la REPL Guile démarrée avec @command{guix repl} (@pxref{Invoking guix repl}). C'est utile pour obtenir une valeur de sel aléatoire à donner au second paramètres de @code{transmission-password-hash} comme dans cet exemple de session :

note: type: Plain text
en: Alternatively, a complete password hash can generated in a single step:
fr: Autrement, vous pouvez générer un hash de mot de passe complet en une seule étape :

note: type: Plain text
en: The resulting string can be used as-is for the value of @code{rpc-password}, allowing the password to be kept hidden even in the operating-system configuration.
fr: La chaîne qui en résulte peut être utilisée telle quelle comme valeur de @code{rpc-password}, ce qui permet de garder les mots de passes cachés même dans la configuration du système d'exploitation.

note: type: Plain text
en: Torrent files downloaded by the daemon are directly accessible only to users in the ``transmission'' user group, who receive read-only access to the directory specified by the @code{download-dir} configuration setting (and also the directory specified by @code{incomplete-dir}, if @code{incomplete-dir-enabled?} is @code{#t}).  Downloaded files can be moved to another directory or deleted altogether using @command{transmission-remote} with its @code{--move} and @code{--remove-and-delete} options.
fr: Les fichiers torrent téléchargés par le démon ne sont directement accessibles qu'aux utilisateurs dans le groupe « transmission », qui reçoivent l'accès en lecture seule au répertoire spécifié dans le paramètre @code{download-dir} (et aussi le répertoire spécifié par @code{incomplete-dir} si @code{incomplete-dir-enabled?} vaut @code{#t}). Les fichiers téléchargés peuvent être déplacés vers un autre répertoire ou supprimés complètement avec @command{transmission-remote} avec les options @code{--move} et @code{--remove-and-delete}.

note: type: Plain text
en: If the @code{watch-dir-enabled?} setting is set to @code{#t}, users in the ``transmission'' group are able also to place @file{.torrent} files in the directory specified by @code{watch-dir} to have the corresponding torrents added by the daemon.  (The @code{trash-original-torrent-files?} setting controls whether the daemon deletes these files after processing them.)
fr: Si le paramètre @code{watch-dir-enabled?} vaut @code{#t}, les utilisateurs du groupe « transmission » peuvent aussi placer des fichiers @file{.torrent} dans le répertoire spécifié par @code{watch-dir} pour que les torrents correspondants soient ajoutés par le démon. Le paramètre @code{trash-original-torrent-files?} indique si le démon doit supprimer ces fichiers après les avoir traités.

note: type: Plain text
en: Some of the daemon's configuration settings can be changed temporarily by @command{transmission-remote} and similar tools. To undo these changes, use the service's @code{reload} action to have the daemon reload its settings from disk:
fr: Certains paramètres de configuration du démon peuvent être changés temporairement par @command{transmission-remote} et des outils similaires. Pour annuler ces changements, utiliser l'action @code{reload} du service pour que le démon recharge ses paramètres sur disque :

note: type: Plain text
en: The full set of available configuration settings is defined by the @code{transmission-daemon-configuration} data type.
fr: La liste complète des paramètres disponibles est définie par le type de données @code{transmission-daemon-configuration}.

note: type: deftp
en: {Data Type} transmission-daemon-configuration
fr: {Type de données} transmission-daemon-configuration

note: type: deftp
en: The data type representing configuration settings for Transmission Daemon.  These correspond directly to the settings recognized by Transmission clients in their @file{settings.json} file.
fr: Le type de données représentant les paramètres de configuration du démon Transmission. Ils correspondent directement aux paramètres reconnus par les clients Transmission dans le fichier @file{settings.json}.

note: type: Plain text
en: Available @code{transmission-daemon-configuration} fields are:
fr: Les champs de @code{transmission-daemon-configuration} disponibles sont :

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} package transmission
fr: {paramètre de @code{transmission-daemon-configuration}} package transmission

note: type: deftypevr
en: The Transmission package to use.
fr: Le paquet Transmission à utiliser.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer stop-wait-period
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif stop-wait-period

note: type: deftypevr
en: The period, in seconds, to wait when stopping the service for @command{transmission-daemon} to exit before killing its process.  This allows the daemon time to complete its housekeeping and send a final update to trackers as it shuts down.  On slow hosts, or hosts with a slow network connection, this value may need to be increased.
fr: Le temps d'attente à l'arrêt du service avant que @command{transmission-daemon} ne termine et tue ses processus. Cela permet au démon de tout mettre en ordre et d'envoyer une dernière mise à jour aux trackers avant de s'arrêter. Vous devrez peut-être augmenter cette valeur pour les hôtes lents, ou les hôtes avec une connexion réseau lente.

note: type: deftypevr
en: Defaults to @samp{10}.
fr: La valeur par défaut est @samp{10}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} string download-dir
fr: {paramètre de @code{transmission-daemon-configuration}} string download-dir

note: type: deftypevr
en: The directory to which torrent files are downloaded.
fr: Le répertoire dans lequel les fichiers torrent sont téléchargés.

note: type: deftypevr
en: Defaults to @samp{"/var/lib/transmission-daemon/downloads"}.
fr: La valeur par défaut est @samp{"/var/lib/transmission-daemon/downloads"}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean incomplete-dir-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean incomplete-dir-enabled?

note: type: deftypevr
en: If @code{#t}, files will be held in @code{incomplete-dir} while their torrent is being downloaded, then moved to @code{download-dir} once the torrent is complete.  Otherwise, files for all torrents (including those still being downloaded) will be placed in @code{download-dir}.
fr: Si la valeur est @code{#t}, les fichiers seront gardés dans @code{incomplete-dir} tant que leur torrent est en cours de téléchargement, puis déplacés vers @code{download-dir} une fois le torrent terminé. Sinon, les fichiers pour tous les torrents (dont ceux qui sont toujours en cours) seront placés dans @code{download-dir}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} maybe-string incomplete-dir
fr: {paramètre de @code{transmission-daemon-configuration}} peut-être-chaine incomplete-dir

note: type: deftypevr
en: The directory in which files from incompletely downloaded torrents will be held when @code{incomplete-dir-enabled?} is @code{#t}.
fr: Le répertoire dans lequel les fichiers des torrents incomplets seront gardé si @code{incomplete-dir-enabled?} vaut @code{#t}.

note: type: deftypevr
en: Defaults to @samp{disabled}.
fr: La valeur par défaut est @samp{disabled}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} umask umask
fr: {paramètre de @code{transmission-daemon-configuration}} umask umask

note: type: deftypevr
en: The file mode creation mask used for downloaded files.  (See the @command{umask} man page for more information.)
fr: Le masque de droits d’accès à la création des fichiers téléchargés. voir la page de manuel de @command{umask} pour plus d'informations.

note: type: deftypevr
en: Defaults to @samp{18}.
fr: La valeur par défaut est @samp{18}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean rename-partial-files?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean name-partial-files?

note: type: deftypevr
en: When @code{#t}, ``.part'' is appended to the name of partially downloaded files.
fr: Lorsque la valeur est @code{#t}, « .part » est ajouté à la fin du nom des fichiers partiellement téléchargés.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} preallocation-mode preallocation
fr: {paramètre de @code{transmission-daemon-configuration}} preallocation-mode preallocation

note: type: deftypevr
en: The mode by which space should be preallocated for downloaded files, one of @code{none}, @code{fast} (or @code{sparse}) and @code{full}.  Specifying @code{full} will minimize disk fragmentation at a cost to file-creation speed.
fr: Le mode de préallocation d'espace pour les fichiers téléchargés, parmi @code{none}, @code{fast} (ou @code{sparse}) ou @code{full}. Spécifiez @code{full} pour minimiser la fragmentation du disque en sacrifiant un peu de vitesse de création du fichier.

note: type: deftypevr
en: Defaults to @samp{fast}.
fr: La valeur par défaut est @samp{fast}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean watch-dir-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean watch-dir-enabled?

note: type: deftypevr
en: If @code{#t}, the directory specified by @code{watch-dir} will be watched for new @file{.torrent} files and the torrents they describe added automatically (and the original files removed, if @code{trash-original-torrent-files?} is @code{#t}).
fr: Si la valeur est @code{#t}, le répertoire spécifié par @code{watch-dir} sera surveillé en attendant de nouveaux fichiers @file{.torrent} et les torrents qu'ils décrivent seront ajoutés automatiquement (et le fichier d'origine supprimé, si @code{trash-original-torrent-files?} vaut @code{#t}).

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} maybe-string watch-dir
fr: {paramètre de @code{transmission-daemon-configuration}} peut-être-chaine watch-dir

note: type: deftypevr
en: The directory to be watched for @file{.torrent} files indicating new torrents to be added, when @code{watch-dir-enabled} is @code{#t}.
fr: Le répertoire à surveiller pour les fichiers @file{.torrent} indiquant de nouveaux torrents à ajouter, lorsque @code{watch-dir-enabled} vaut @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean trash-original-torrent-files?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean transh-original-torrent-files?

note: type: deftypevr
en: When @code{#t}, @file{.torrent} files will be deleted from the watch directory once their torrent has been added (see @code{watch-directory-enabled?}).
fr: Lorsque la valeur est @code{#t}, les fichiers @file{.torrent} seront supprimés du répertoire de surveillance une fois leur torrent ajouté (voir @code{watch-directory-enabled?}).

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean speed-limit-down-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean speed-limit-down-enabled?

note: type: deftypevr
en: When @code{#t}, the daemon's download speed will be limited to the rate specified by @code{speed-limit-down}.
fr: Lorsque la valeur est @code{#t}, la vitesse de téléchargement du démon sera limitée par la vitesse spécifiée par @code{speed-limit-down}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer speed-limit-down
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif speed-limit-down

note: type: deftypevr
en: The default global-maximum download speed, in kilobytes per second.
fr: La vitesse de téléchargement par défaut maximale, en kilooctets par seconde.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean speed-limit-up-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean speed-limit-up-enabled?

note: type: deftypevr
en: When @code{#t}, the daemon's upload speed will be limited to the rate specified by @code{speed-limit-up}.
fr: Lorsque la valeur est @code{#t}, la vitesse de téléversement du démon sera limitée par la vitesse spécifiée par @code{speed-limit-up}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer speed-limit-up
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif speed-limit-up

note: type: deftypevr
en: The default global-maximum upload speed, in kilobytes per second.
fr: La vitesse globale de téléversement maximale par défaut, en kilooctets par seconde.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean alt-speed-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean alt-speed-enabled?

note: type: deftypevr
en: When @code{#t}, the alternate speed limits @code{alt-speed-down} and @code{alt-speed-up} are used (in place of @code{speed-limit-down} and @code{speed-limit-up}, if they are enabled) to constrain the daemon's bandwidth usage.  This can be scheduled to occur automatically at certain times during the week; see @code{alt-speed-time-enabled?}.
fr: Lorsque la valeur est @code{#t}, les limites de vitesse alternatives @code{alt-speed-down} et @code{alt-speed-up} sont utilisée (au lieu de @code{speed-limit-down} et @code{speed-limit-up}, si elles sont activées) pour contraindre l'utilisation de la bande passante par le démon. Elles peuvent être programmées automatiquement à certains moment de la semaine ; voir @code{alt-speed-time-enabled?}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer alt-speed-down
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif alt-speed-down

note: type: deftypevr
en: The alternate global-maximum download speed, in kilobytes per second.
fr: La vitesse de téléchargement globale alternative maximale, en kilooctets par seconde.

note: type: deftypevr
en: Defaults to @samp{50}.
fr: La valeur par défaut est @samp{50}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer alt-speed-up
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif alt-speed-up

note: type: deftypevr
en: The alternate global-maximum upload speed, in kilobytes per second.
fr: La vitesse de téléversement globale alternative maximale, en kilooctets par seconde.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean alt-speed-time-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean alt-speed-time-enabled?

note: type: deftypevr
en: When @code{#t}, the alternate speed limits @code{alt-speed-down} and @code{alt-speed-up} will be enabled automatically during the periods specified by @code{alt-speed-time-day}, @code{alt-speed-time-begin} and @code{alt-time-speed-end}.
fr: Lorsque la valeur est @code{#t}, les limites de vitesses alternatives @code{alt-speed-down} et @code{alt-speed-up} seront activées automatiquement aux périodes spécifiées par @code{alt-speed-time-day}, @code{alt-speed-time-begin} et @code{alt-time-speed-end}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} day-list alt-speed-time-day
fr: {paramètre de @code{transmission-daemon-configuration}} day-list alt-speed-time-day

note: type: deftypevr
en: The days of the week on which the alternate-speed schedule should be used, specified either as a list of days (@code{sunday}, @code{monday}, and so on) or using one of the symbols @code{weekdays}, @code{weekends} or @code{all}.
fr: Les jours de la semaine pendant lesquels le programme de vitesse alternative devrait être utilisé, spécifié soit comme une liste de jours (@code{sunday}, @code{monday}, etc), soit en utilisant les symboles @code{weekdays}, @code{weekends} ou @code{all}.

note: type: deftypevr
en: Defaults to @samp{all}.
fr: La valeur par défaut est @samp{all}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer alt-speed-time-begin
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif alt-speed-time-begin

note: type: deftypevr
en: The time of day at which to enable the alternate speed limits, expressed as a number of minutes since midnight.
fr: Le moment de la journée auquel activer les limites de vitesse alternatives, en nombre de minutes à partir de minuit.

note: type: deftypevr
en: Defaults to @samp{540}.
fr: La valeur par défaut est @samp{540}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer alt-speed-time-end
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif alt-speed-time-end

note: type: deftypevr
en: The time of day at which to disable the alternate speed limits, expressed as a number of minutes since midnight.
fr: Le moment de la journée auquel désactiver les limites de vitesses alternatives, en nombre de minutes à partir de minuit.

note: type: deftypevr
en: Defaults to @samp{1020}.
fr: La valeur par défaut est @samp{1020}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} string bind-address-ipv4
fr: {paramètre de @code{transmission-daemon-configuration}} string bind-address-ipv4

note: type: deftypevr
en: The IP address at which to listen for peer connections, or ``0.0.0.0'' to listen at all available IP addresses.
fr: L'IP sur laquelle écouter les connexions de pairs, ou « 0.0.0.0 » pour écouter sur toutes les interfaces réseaux.

note: type: deftypevr
en: Defaults to @samp{"0.0.0.0"}.
fr: La valeur par défaut est @samp{"0.0.0.0"}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} string bind-address-ipv6
fr: {paramètre de @code{transmission-daemon-configuration}} string bind-address-ipv6

note: type: deftypevr
en: The IPv6 address at which to listen for peer connections, or ``::'' to listen at all available IPv6 addresses.
fr: L'adresse IPv6 sur laquelle écouter les connexions de pairs, ou « :: » pour écouter sur toutes les interfaces réseaux.

note: type: deftypevr
en: Defaults to @samp{"::"}.
fr: La valeur par défaut est @samp{"::"}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean peer-port-random-on-start?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean peer-port-random-on-start?

note: type: deftypevr
en: If @code{#t}, when the daemon starts it will select a port at random on which to listen for peer connections, from the range specified (inclusively) by @code{peer-port-random-low} and @code{peer-port-random-high}.  Otherwise, it listens on the port specified by @code{peer-port}.
fr: Si la valeur est @code{#t}, lorsque le démon démarre il choisira un port au hasard sur lequel écouter les connexions des pairs, à partir d'un intervalle spécifié (inclusivement) par @code{peer-port-random-low} et @code{peer-port-random-high}. Sinon, il écoutera sur le port spécifié par @code{peer-port}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} port-number peer-port-random-low
fr: {paramètre de @code{transmission-daemon-configuration}} port-number peer-port-random-low

note: type: deftypevr
en: The lowest selectable port number when @code{peer-port-random-on-start?} is @code{#t}.
fr: Le plus petit numéro de port possible lorsque @code{peer-port-random-on-start?} vaut @code{#t}.

note: type: deftypevr
en: Defaults to @samp{49152}.
fr: La valeur par défaut est @samp{49152}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} port-number peer-port-random-high
fr: {paramètre de @code{transmission-daemon-configuration}} port-number peer-port-random-high

note: type: deftypevr
en: The highest selectable port number when @code{peer-port-random-on-start} is @code{#t}.
fr: Le plus grand numéro de port possible lorsque @code{peer-port-random-on-start} vaut @code{#t}.

note: type: deftypevr
en: Defaults to @samp{65535}.
fr: La valeur par défaut est @samp{65535}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} port-number peer-port
fr: {paramètre de @code{transmission-daemon-configuration}} port-number peer-port

note: type: deftypevr
en: The port on which to listen for peer connections when @code{peer-port-random-on-start?} is @code{#f}.
fr: Le port sur lequel écouter pour les connexions des pairs lorsque @code{peer-port-random-on-start?} vaut @code{#f}.

note: type: deftypevr
en: Defaults to @samp{51413}.
fr: La valeur par défaut est @samp{51413}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean port-forwarding-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean port-forwarding-enabled?

note: type: deftypevr
en: If @code{#t}, the daemon will attempt to configure port-forwarding on an upstream gateway automatically using @acronym{UPnP} and @acronym{NAT-PMP}.
fr: Si la valeur est @code{#t}, le démon essayera de configurer le renvoie de port vers une passerelle amont automatiquement avec @acronym{UPnP} et @acronym{NAT-PMP}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} encryption-mode encryption
fr: {paramètre de @code{transmission-daemon-configuration}} encryption-mode encryption

note: type: deftypevr
en: The encryption preference for peer connections, one of @code{prefer-unencrypted-connections}, @code{prefer-encrypted-connections} or @code{require-encrypted-connections}.
fr: Vos préférences de chiffrement pour les connexions avec les pairs, parmi @code{prefer-unencrypted-connections}, @code{prefer-encrypted-connections} et @code{require-encrypted-connections}.

note: type: deftypevr
en: Defaults to @samp{prefer-encrypted-connections}.
fr: La valeur par défaut est @samp{prefer-encrypted-connections}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} maybe-string peer-congestion-algorithm
fr: {paramètre de @code{transmission-daemon-configuration}} peut-être-chaine peer-congestion-algorithm

note: type: deftypevr
en: The TCP congestion-control algorithm to use for peer connections, specified using a string recognized by the operating system in calls to @code{setsockopt}.  When left unspecified, the operating-system default is used.
fr: L'algorithme de contrôle de congestion TCP à utiliser pour les connexions avec les pairs, spécifié avec une chaîne reconnue par le système d'exploitation dans les appels à @code{setsockopt}. Lorsque la valeur n'est pas spécifiée, le système d'exploitation utilise la valeur par défaut.

note: type: deftypevr
en: Note that on GNU/Linux systems, the kernel must be configured to allow processes to use a congestion-control algorithm not in the default set; otherwise, it will deny these requests with ``Operation not permitted''.  To see which algorithms are available on your system and which are currently permitted for use, look at the contents of the files @file{tcp_available_congestion_control} and @file{tcp_allowed_congestion_control} in the @file{/proc/sys/net/ipv4} directory.
fr: Remarquez que sur les systèmes GNU/Linux, le noyau doit être configuré pour permettre aux processus d'utiliser un algorithme de contrôle de congestion qui n'est pas dans l'ensemble par défaut ; sinon, il refusera les demande avec « Opération non autorisée ». Pour voir les algorithmes disponibles sur votre système et ceux qui sont actuellement autorisés, regardez le contenu des fichiers @file{tcp_available_congestion_control} et @file{tcp_allowed_congestion_control} dans le répertoire @file{/proc/sys/net/ipv4}.

note: type: deftypevr
en: As an example, to have Transmission Daemon use @uref{http://www-ece.rice.edu/networks/TCP-LP/,the TCP Low Priority congestion-control algorithm}, you'll need to modify your kernel configuration to build in support for the algorithm, then update your operating-system configuration to allow its use by adding a @code{sysctl-service-type} service (or updating the existing one's configuration) with lines like the following:
fr: Par exemple, pour que le démon Transmission utilise @uref{http://www-ece.rice.edu/networks/TCP-LP/,l'algorithme de contrôle de congestion TCP de basse priorité}, vous devrez modifier la configuration de votre noyau pour construire la prise en charge de cet algorithme, puis mettre à jour votre configuration de système d'exploitation pour permettre son utilisation en ajoutant un service @code{sysctl-service-type} (ou en mettant à jour la configuration de ce service s'il existe déjà) avec les lignes suivantes :

note: type: deftypevr
en: The Transmission Daemon configuration can then be updated with
fr: La configuration de démon Transmission peut être mise à jour avec

note: type: deftypevr
en: and the system reconfigured to have the changes take effect.
fr: et le système peut être reconfiguré pour que les changements prennent effet.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} tcp-type-of-service peer-socket-tos
fr: {paramètre de @code{transmission-daemon-configuration}} tcp-type-of-service peer-soket-tos

note: type: deftypevr
en: The type of service to request in outgoing @acronym{TCP} packets, one of @code{default}, @code{low-cost}, @code{throughput}, @code{low-delay} and @code{reliability}.
fr: Le type de service à demander pour les paquets @acronym{TCP} sortants, entre @code{default}, @code{low-cost}, @code{throughput}, @code{low-delay} et @code{reliability}.

note: type: deftypevr
en: Defaults to @samp{default}.
fr: La valeur par défaut est @samp{default}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer peer-limit-global
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif peer-limit-global

note: type: deftypevr
en: The global limit on the number of connected peers.
fr: La limite globale pour le nombre de pairs connectés.

note: type: deftypevr
en: Defaults to @samp{200}.
fr: La valeur par défaut est @samp{200}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer peer-limit-per-torrent
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif peer-limit-per-torrent

note: type: deftypevr
en: The per-torrent limit on the number of connected peers.
fr: La limite par torrent de pairs connectés.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer upload-slots-per-torrent
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif upload-slots-per-torrent

note: type: deftypevr
en: The maximum number of peers to which the daemon will upload data simultaneously for each torrent.
fr: Le nombre maximum de pairs auxquels le démon enverra des données en même temps pour chaque torrent.

note: type: deftypevr
en: Defaults to @samp{14}.
fr: La valeur par défaut est @samp{14}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer peer-id-ttl-hours
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif peer-id-ttl-hours

note: type: deftypevr
en: The maximum lifespan, in hours, of the peer ID associated with each public torrent before it is regenerated.
fr: La durée maximum, en heures, de l'identifiant de pair associé à chaque torrent public avant qu'il ne soit régénéré.

note: type: deftypevr
en: Defaults to @samp{6}.
fr: La valeur par défaut est @samp{6}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean blocklist-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean blocklist-enabled?

note: type: deftypevr
en: When @code{#t}, the daemon will ignore peers mentioned in the blocklist it has most recently downloaded from @code{blocklist-url}.
fr: Lorsque la valeur est @code{#t}, le démon ignorera les pairs mentionnés dans la dernière liste de blocage téléchargée depuis @code{blocklist-url}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} maybe-string blocklist-url
fr: {paramètre de @code{transmission-daemon-configuration}} peut-être-chaine blocklist-url

note: type: deftypevr
en: The URL of a peer blocklist (in @acronym{P2P}-plaintext or eMule @file{.dat} format) to be periodically downloaded and applied when @code{blocklist-enabled?} is @code{#t}.
fr: L'URL d'une liste de blocage de pairs (au format @acronym{P2P}-plaintext ou eMule @file{.dat}) périodiquement téléchargés et appliqués lorsque @code{blocklist-enabled?} vaut @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean download-queue-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean download-queue-enabled?

note: type: deftypevr
en: If @code{#t}, the daemon will be limited to downloading at most @code{download-queue-size} non-stalled torrents simultaneously.
fr: Si la valeur est @code{#t}, le démon sera limité à téléchargé au plus @code{download-queue-size} torrents non bloqués en même temps.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer download-queue-size
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif download-queue-size

note: type: deftypevr
en: The size of the daemon's download queue, which limits the number of non-stalled torrents it will download at any one time when @code{download-queue-enabled?} is @code{#t}.
fr: La taille de la queue de téléchargement du démon, qui limite le nombre de torrents non bloqués qu'il télécharge en même temps lorsque @code{download-queue-enabled?} vaut @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean seed-queue-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean seed-queue-enabled?

note: type: deftypevr
en: If @code{#t}, the daemon will be limited to seeding at most @code{seed-queue-size} non-stalled torrents simultaneously.
fr: Si la valeur est @code{#t}, le démon sera limité à envoyer au plus @code{seed-queue-size} torrents non bloqués en même temps.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer seed-queue-size
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif seed-queue-size

note: type: deftypevr
en: The size of the daemon's seed queue, which limits the number of non-stalled torrents it will seed at any one time when @code{seed-queue-enabled?} is @code{#t}.
fr: La taille de la queue d'envoi du démon, qui limite le nombre de torrents non bloqué qu'il enverra en même temps lorsque @code{seed-queue-enabled?} vaut @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean queue-stalled-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean queue-stalled-enabled?

note: type: deftypevr
en: When @code{#t}, the daemon will consider torrents for which it has not shared data in the past @code{queue-stalled-minutes} minutes to be stalled and not count them against its @code{download-queue-size} and @code{seed-queue-size} limits.
fr: Lorsque la valeur est @code{#t}, le démon considère les torrents pour lesquels il n'a pas partagé de données dans les dernières @code{queue-stalled-minutes} comme bloqué et ne les contera pas dans les limites @code{download-queue-size} et @code{seed-queue-size}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer queue-stalled-minutes
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif queue-stalled-minutes

note: type: deftypevr
en: The maximum period, in minutes, a torrent may be idle before it is considered to be stalled, when @code{queue-stalled-enabled?} is @code{#t}.
fr: La période maximale, en minutes, pendant laquelle un torrent peut être inactif avant d'être considéré comme bloqué, lorsque @code{queue-stalled-enabled?} vaut @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean ratio-limit-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean ratio-limit-enabled?

note: type: deftypevr
en: When @code{#t}, a torrent being seeded will automatically be paused once it reaches the ratio specified by @code{ratio-limit}.
fr: Lorsque la valeur est @code{#t}, un torrent téléchargé sera automatiquement mis en pause une fois qu'il atteint le ratio spécifié par @code{ratio-limit}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-rational ratio-limit
fr: {paramètre de @code{transmission-daemon-configuration}} non-negative-rational ratio-limit

note: type: deftypevr
en: The ratio at which a torrent being seeded will be paused, when @code{ratio-limit-enabled?} is @code{#t}.
fr: Le ratio auquel un torrent téléchargé sera mis en pause, lorsque @code{ratio-limit-enabled?} vaut @code{#t}.

note: type: deftypevr
en: Defaults to @samp{2.0}.
fr: La valeur par défaut est @samp{2.0}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean idle-seeding-limit-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean idle-seeding-limit-enabled?

note: type: deftypevr
en: When @code{#t}, a torrent being seeded will automatically be paused once it has been idle for @code{idle-seeding-limit} minutes.
fr: Lorsque la valeur est @code{#t}, un torrent téléchargé sera automatiquement mis en pause s'il est inactif depuis @code{idle-seeding-limit} minutes.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer idle-seeding-limit
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif idle-seeding-limit

note: type: deftypevr
en: The maximum period, in minutes, a torrent being seeded may be idle before it is paused, when @code{idle-seeding-limit-enabled?} is @code{#t}.
fr: La durée maximum, en minutes, pendant laquelle un torrent téléchargé peut être inactif avant d'être mis en pause, quand @code{idle-seeding-limit-enabled?} vaut @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean dht-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean dht-enabled?

note: type: deftypevr
en: Enable @uref{http://bittorrent.org/beps/bep_0005.html,the distributed hash table (@acronym{DHT}) protocol}, which supports the use of trackerless torrents.
fr: Active @uref{http://bittorrent.org/beps/bep_0005.html,le protocole de table de hash (@acronym{DHT}) distribuée}, qui prend en charge les torrents sans tracker.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean lpd-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean lpd-enabled?

note: type: deftypevr
en: Enable @uref{https://en.wikipedia.org/wiki/Local_Peer_Discovery,local peer discovery} (@acronym{LPD}), which allows the discovery of peers on the local network and may reduce the amount of data sent over the public Internet.
fr: Active @uref{https://en.wikipedia.org/wiki/Local_Peer_Discovery,la découverte de pairs locaux} (@acronym{LPD}), qui permet de découvrir des pairs sur le réseau local et peut réduire la quantité de données envoyées sur Internet.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean pex-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean pex-enabled?

note: type: deftypevr
en: Enable @uref{https://en.wikipedia.org/wiki/Peer_exchange,peer exchange} (@acronym{PEX}), which reduces the daemon's reliance on external trackers and may improve its performance.
fr: Active @uref{https://en.wikipedia.org/wiki/Peer_exchange,l'échange de pairs} (@acronym{PEX}), qui réduit la dépendance du démon aux trackers externes et peut améliorer les performances.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean utp-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean utp-enabled?

note: type: deftypevr
en: Enable @uref{http://bittorrent.org/beps/bep_0029.html,the micro transport protocol} (@acronym{uTP}), which aims to reduce the impact of BitTorrent traffic on other users of the local network while maintaining full utilization of the available bandwidth.
fr: Active @uref{http://bittorrent.org/beps/bep_0029.html,le protocole de micro transport} (@acronym{uTP}), qui cherche à réduire l'impact du trafic BitTorrent sur les autres utilisateurs du réseau local tout en utilisant toute la bande passante disponible.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean rpc-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean rpc-enabled?

note: type: deftypevr
en: If @code{#t}, enable the remote procedure call (@acronym{RPC})  interface, which allows remote control of the daemon via its Web interface, the @command{transmission-remote} command-line client, and similar tools.
fr: Si la valeur est @code{#t}, active l’interface d'appel de procédures distantes (@acronym{RPC}), qui permet de contrôler le démon à distance via son interface web, le client @command{transmission-remote} en ligne de commande et des outils similaires.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} string rpc-bind-address
fr: {paramètre de @code{transmission-daemon-configuration}} string rpc-bind-address

note: type: deftypevr
en: The IP address at which to listen for @acronym{RPC} connections, or ``0.0.0.0'' to listen at all available IP addresses.
fr: L'adresse IP sur laquelle écouter les connexions @acronym{RPC}, ou « 0.0.0.0 » pour écouter sur toutes les adresses IP.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} port-number rpc-port
fr: {paramètre de @code{transmission-daemon-configuration}} port-number rpc-port

note: type: deftypevr
en: The port on which to listen for @acronym{RPC} connections.
fr: Le port sur lequel écouter les connexions @acronym{RPC} entrantes.

note: type: deftypevr
en: Defaults to @samp{9091}.
fr: La valeur par défaut est @samp{9091}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} string rpc-url
fr: {paramètre de @code{transmission-daemon-configuration}} string rpc-url

note: type: deftypevr
en: The path prefix to use in the @acronym{RPC}-endpoint @acronym{URL}.
fr: Le préfixe de chemin à utiliser dans l'@acronym{URL} du point d'accès @acronym{RPC}.

note: type: deftypevr
en: Defaults to @samp{"/transmission/"}.
fr: La valeur par défaut est @samp{"/transmission/"}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean rpc-authentication-required?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean rpc-authentication-required?

note: type: deftypevr
en: When @code{#t}, clients must authenticate (see @code{rpc-username} and @code{rpc-password}) when using the @acronym{RPC} interface.  Note this has the side effect of disabling host-name whitelisting (see @code{rpc-host-whitelist-enabled?}.
fr: Lorsque la valeur est @code{#t}, les clients doivent s'authentifier (voir @code{rpc-username} et @code{rpc-password}) quand ils utilisent l'interface @acronym{RPC}. Remarquez que cela a pour effet de bord de désactiver la liste d'hôtes (voir @code{rpc-host-whitelist-enabled?}).

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} maybe-string rpc-username
fr: {paramètre de @code{transmission-daemon-configuration}} peut-être-chaine rpc-username

note: type: deftypevr
en: The username required by clients to access the @acronym{RPC} interface when @code{rpc-authentication-required?} is @code{#t}.
fr: Le nom d'utilisateur requis par les clients pour accéder à l'interface @acronym{RPC} lorsque @code{rpc-authentication-required?} vaut @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} maybe-transmission-password-hash rpc-password
fr: {paramètre de @code{transmission-daemon-configuration}} peut-être-transmission-password-hash rpc-password

note: type: deftypevr
en: The password required by clients to access the @acronym{RPC} interface when @code{rpc-authentication-required?} is @code{#t}.  This must be specified using a password hash in the format recognized by Transmission clients, either copied from an existing @file{settings.json} file or generated using the @code{transmission-password-hash} procedure.
fr: Le mot de passe requis pour permettre aux clients d'accéder à l'interface @acronym{RPC} lorsque @code{rpc-authentication-required?} vaut @code{#t}. Il doit être spécifié avec un hash de mot de passe au format reconnu par les clients de Transmission, soit copié d'un fichier @file{settings.json} existant, soit généré avec la procédure @code{transmission-password-hash}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean rpc-whitelist-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean rpc-whitelist-enabled?

note: type: deftypevr
en: When @code{#t}, @acronym{RPC} requests will be accepted only when they originate from an address specified in @code{rpc-whitelist}.
fr: Lorsque la valeur est @code{#t}, les requêtes de @acronym{RPC} seront acceptées seulement si elles proviennent d'une adresse spécifiée dans @code{rpc-whitelist}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} string-list rpc-whitelist
fr: {paramètre de @code{transmission-daemon-configuration}} string-list rpc-whitelist

note: type: deftypevr
en: The list of IP and IPv6 addresses from which @acronym{RPC} requests will be accepted when @code{rpc-whitelist-enabled?} is @code{#t}.  Wildcards may be specified using @samp{*}.
fr: La liste des adresse IP et IPv6 pour lesquelles les requêtes @acronym{RPC} sont acceptées lorsque @code{rpc-whitelist-enabled?} vaut @code{#t}. Vous pouvez spécifier des jokers avec @samp{*}.

note: type: deftypevr
en: Defaults to @samp{("127.0.0.1" "::1")}.
fr: La valeur par défaut est @samp{("127.0.0.1" "::1")}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean rpc-host-whitelist-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean rpc-host-whitelist-enabled?

note: type: deftypevr
en: When @code{#t}, @acronym{RPC} requests will be accepted only when they are addressed to a host named in @code{rpc-host-whitelist}.  Note that requests to ``localhost'' or ``localhost.'', or to a numeric address, are always accepted regardless of these settings.
fr: Lorsque la valeur est @code{#t}, les requêtes @acronym{RPC} seront acceptée lorsqu'elles sont adressées à un hôte nommé dans @code{rpc-host-whitelist}. Remarquez que les requêtes adressées à « localhost » ou « localhost. » ou à une adresse numérique, sont toujours acceptées indépendamment de ce paramètre.

note: type: deftypevr
en: Note also this functionality is disabled when @code{rpc-authentication-required?} is @code{#t}.
fr: Remarquez aussi que cette fonctionnalité est désactivée lorsque @code{rpc-authentication-required?} vaut @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} string-list rpc-host-whitelist
fr: {paramètre de @code{transmission-daemon-configuration}} string-list rpc-host-whitelist

note: type: deftypevr
en: The list of host names recognized by the @acronym{RPC} server when @code{rpc-host-whitelist-enabled?} is @code{#t}.
fr: La liste des noms d'hôte reconnus par le serveur @acronym{RPC} lorsque @code{rpc-host-whitelist-enabled?} vaut @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} message-level message-level
fr: {paramètre de @code{transmission-daemon-configuration}} message-level message-level

note: type: deftypevr
en: The minimum severity level of messages to be logged (to @file{/var/log/transmission.log}) by the daemon, one of @code{none} (no logging), @code{error}, @code{info} and @code{debug}.
fr: Le niveau de sévérité minimum des messages à enregistrer dans les journaux (dans @file{/var/log/transmission.log}) par le démon, entre @code{none} (par de journalisation), @code{error}, @code{info} et @code{debug}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean start-added-torrents?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean start-added-torrents?

note: type: deftypevr
en: When @code{#t}, torrents are started as soon as they are added; otherwise, they are added in ``paused'' state.
fr: Lorsque la valeur est @code{#t}, les torrents sont démarrés dès qu'ils sont ajoutés ; sinon ils sont ajouté et mis en pause.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean script-torrent-done-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean script-torrent-done-enabled?

note: type: deftypevr
en: When @code{#t}, the script specified by @code{script-torrent-done-filename} will be invoked each time a torrent completes.
fr: Lorsque la valeur est @code{#t}, le script spécifié par @code{script-torrent-done-filename} sera invoqué à chaque fois qu'un torrent termine.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} maybe-file-object script-torrent-done-filename
fr: {paramètre de @code{transmission-daemon-configuration}} peut-être-objet-fichier script-torrent-done-filename

note: type: deftypevr
en: A file name or file-like object specifying a script to run each time a torrent completes, when @code{script-torrent-done-enabled?} is @code{#t}.
fr: Un nom de fichier ou un simili-fichier spécifiant un script à lancer à chaque fois qu'un torrent termine, lorsque @code{script-torrent-done-enabled?} est @code{#t}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean scrape-paused-torrents-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean scrape-paused-torrents-enabled?

note: type: deftypevr
en: When @code{#t}, the daemon will scrape trackers for a torrent even when the torrent is paused.
fr: Lorsque la valeur est @code{#t}, le démon contactera les trackers pour le torrent même si le torrent est en pause.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} non-negative-integer cache-size-mb
fr: {paramètre de @code{transmission-daemon-configuration}} entier-non-négatif cache-size-mb

note: type: deftypevr
en: The amount of memory, in megabytes, to allocate for the daemon's in-memory cache.  A larger value may increase performance by reducing the frequency of disk I/O.
fr: La quantité de mémoire, en mégaoctets, à allouer pour le cache mémoire du démon. Une grande valeur peut améliorer les performances en réduisant le fréquence des entrées-sorties sur le disque.

note: type: deftypevr
en: Defaults to @samp{4}.
fr: La valeur par défaut est @samp{4}.

note: type: deftypevr
en: {@code{transmission-daemon-configuration} parameter} boolean prefetch-enabled?
fr: {paramètre de @code{transmission-daemon-configuration}} boolean prefetch-enabled?

note: type: deftypevr
en: When @code{#t}, the daemon will try to improve I/O performance by hinting to the operating system which data is likely to be read next from disk to satisfy requests from peers.
fr: Lorsque la valeur est @code{#t}, le démon essaiera d'améliorer les performances des entrées-sorties en disant au système quelles données seront probablement bientôt lues pour satisfaire les requêtes des pairs.

note: type: subsubheading
en: Tailon Service
fr: Service Tailon

note: type: Plain text
en: @uref{https://tailon.readthedocs.io/, Tailon} is a web application for viewing and searching log files.
fr: @uref{https://tailon.readthedocs.io/, Tailon} est une application web pour visualiser et chercher des fichiers de journaux.

note: type: Plain text
en: The following example will configure the service with default values.  By default, Tailon can be accessed on port 8080 (@code{http://localhost:8080}).
fr: L'exemple suivant configurera le service avec les valeurs par défaut.  Par défaut, on peut accéder à Tailon sur le pour 8080 (@code{http://localhost:8080}).

note: type: Plain text
en: The following example customises more of the Tailon configuration, adding @command{sed} to the list of allowed commands.
fr: L'exemple suivant personnalise un peu plus la configuration de Tailon, en ajoutant @command{sed} à la liste des commandes autorisées.

note: type: deftp
en: {Data Type} tailon-configuration
fr: {Type de données} tailon-configuration

note: type: deftp
en: Data type representing the configuration of Tailon.  This type has the following parameters:
fr: Type de données représentant la configuration de Tailon.  Ce type a les paramètres suivants :

note: type: item
en: @code{config-file} (default: @code{(tailon-configuration-file)})
fr: @code{config-file} (par défaut : @code{(tailon-configuration-file)})

note: type: table
en: The configuration file to use for Tailon.  This can be set to a @dfn{tailon-configuration-file} record value, or any gexp (@pxref{G-Expressions}).
fr: Le fichier de configuration à utiliser pour Tailon.  Ce champ peut contenir un enregistrement @dfn{tailon-configuration-file} ou n'importe quelle gexp (@pxref{G-Expressions}).

note: type: table
en: For example, to instead use a local file, the @code{local-file} function can be used:
fr: Par exemple, pour utiliser un fichier local à la place, on peut utiliser la fonction @code{local-file} :

note: type: item
en: @code{package} (default: @code{tailon})
fr: @code{package} (par défaut : @code{tailon})

note: type: table
en: The tailon package to use.
fr: Le paquet tailon à utiliser.

note: type: deftp
en: {Data Type} tailon-configuration-file
fr: {Type de données} tailon-configuration-file

note: type: deftp
en: Data type representing the configuration options for Tailon.  This type has the following parameters:
fr: Type de données représentant les options de configuration de Tailon.  Ce type a les paramètres suivants :

note: type: item
en: @code{files} (default: @code{(list "/var/log")})
fr: @code{files} (par défaut : @code{(list "/var/log")})

note: type: table
en: List of files to display.  The list can include strings for a single file or directory, or a list, where the first item is the name of a subsection, and the remaining items are the files or directories in that subsection.
fr: Liste des fichiers à afficher.  La liste peut inclure des chaînes pour des fichiers simple ou des répertoires, ou une liste, où le premier élément est le nom d'un sous-section et le reste des fichiers ou des répertoires de cette sous-section.

note: type: item
en: @code{bind} (default: @code{"localhost:8080"})
fr: @code{bind} (par défaut : @code{"localhost:8080"})

note: type: table
en: Address and port to which Tailon should bind on.
fr: Adresse et port sur lesquels Tailon écoute.

note: type: item
en: @code{relative-root} (default: @code{#f})
fr: @code{relative-root} (par défaut : @code{#f})

note: type: table
en: URL path to use for Tailon, set to @code{#f} to not use a path.
fr: Chemin de l'URL à utiliser pour Tailon, ou @code{#f} pour ne pas utiliser de chemin.

note: type: item
en: @code{allow-transfers?} (default: @code{#t})
fr: @code{allow-transfers?} (par défaut : @code{#t})

note: type: table
en: Allow downloading the log files in the web interface.
fr: Permet de télécharger les journaux dans l'interface web.

note: type: item
en: @code{follow-names?} (default: @code{#t})
fr: @code{follow-names?} (par défaut : @code{#t})

note: type: table
en: Allow tailing of not-yet existent files.
fr: Permet de surveiller des fichiers qui n'existent pas encore.

note: type: item
en: @code{tail-lines} (default: @code{200})
fr: @code{tail-lines} (par défaut : @code{200})

note: type: table
en: Number of lines to read initially from each file.
fr: Nombre de lignes à lire initialement dans chaque fichier.

note: type: item
en: @code{allowed-commands} (default: @code{(list "tail" "grep" "awk")})
fr: @code{allowed-commands} (par défaut : @code{(list "tail" "grep" "awk")})

note: type: table
en: Commands to allow running.  By default, @code{sed} is disabled.
fr: Commandes autorisées.  Par défaut, @code{sed} est désactivé.

note: type: table
en: Set @code{debug?} to @code{#t} to show debug messages.
fr: Configurez @code{debug?} à @code{#t} pour montrer les messages de débogage.

note: type: item
en: @code{wrap-lines} (default: @code{#t})
fr: @code{wrap-lines} (par défaut : @code{#t})

note: type: table
en: Initial line wrapping state in the web interface.  Set to @code{#t} to initially wrap lines (the default), or to @code{#f} to initially not wrap lines.
fr: État initial du retour à la ligne dans l'interface web.  Configurez l'option à @code{#t} pour retourner à la ligne (par défaut) ou à @code{#f} pour ne pas retourner à la ligne au début.

note: type: item
en: @code{http-auth} (default: @code{#f})
fr: @code{http-auth} (par défaut : @code{#f})

note: type: table
en: HTTP authentication type to use.  Set to @code{#f} to disable authentication (the default).  Supported values are @code{"digest"} or @code{"basic"}.
fr: Type d'authentification HTTP à utiliser.  Indiquez @code{#f} pour désactiver l'authentification (par défaut).  Les valeur supportées sont @code{"digest"} et @code{"basic"}.

note: type: item
en: @code{users} (default: @code{#f})
fr: @code{users} (par défaut : @code{#f})

note: type: table
en: If HTTP authentication is enabled (see @code{http-auth}), access will be restricted to the credentials provided here.  To configure users, use a list of pairs, where the first element of the pair is the username, and the 2nd element of the pair is the password.
fr: Si l'authentification HTTP est activée (voir @code{http-auth}), l'accès sera restreint aux identifiants fournis ici.  Pour configurer des utilisateurs, utilisez une liste de paires, où le premier élément de la paire est le nom d'utilisateur et le second élément est le mot de passe.

note: type: subsubheading
en: Darkstat Service
fr: Service Darkstat

note: type: Plain text
en: Darkstat is a packet sniffer that captures network traffic, calculates statistics about usage, and serves reports over HTTP.
fr: Darkstat est un « renifleur de paquets » qui capture le trafic réseau, calcul des statistiques sur l'utilisation et sert des rapport sur HTTP.

note: type: defvar
en: {Scheme Variable} darkstat-service-type
fr: {Variable Scheme} darkstat-service-type

note: type: defvar
en: This is the service type for the @uref{https://unix4lyfe.org/darkstat/, darkstat} service, its value must be a @code{darkstat-configuration} record as in this example:
fr: C'est le type de service pour le service @uref{https://unix4lyfe.org/darkstat/, darkstat}, sa valeur doit être un enregistrement @code{darkstat-configuration} comme dans cet exemple :

note: type: deftp
en: {Data Type} darkstat-configuration
fr: {Type de données} darkstat-configuration

note: type: deftp
en: Data type representing the configuration of @command{darkstat}.
fr: Type de données représentant la configuration de @command{darkstat}.

note: type: item
en: @code{package} (default: @code{darkstat})
fr: @code{package} (par défaut : @code{darkstat})

note: type: table
en: The darkstat package to use.
fr: Le paquet darkstat à utiliser.

note: type: table
en: Capture traffic on the specified network interface.
fr: Capture le trafic sur l'interface réseau spécifiée.

note: type: item
en: @code{port} (default: @code{"667"})
fr: @code{port} (par défaut : @code{"667"})

note: type: table
en: Bind the web interface to the specified port.
fr: Lie l'interface web sur le port spécifié.

note: type: table
en: Bind the web interface to the specified address.
fr: Lie l'interface web sur l'adresse spécifiée.

note: type: item
en: @code{base} (default: @code{"/"})
fr: @code{base} (par défaut : @code{"/"})

note: type: table
en: Specify the path of the base URL@.  This can be useful if @command{darkstat} is accessed via a reverse proxy.
fr: Spécifie le chemin de base des URL@.  C'est utile si on accède à @command{darkstat} à travers un proxy inverse.

note: type: subsubheading
en: Prometheus Node Exporter Service
fr: Service d'export de nœud de Prometheus

note: type: Plain text
en: The Prometheus ``node exporter'' makes hardware and operating system statistics provided by the Linux kernel available for the Prometheus monitoring system.  This service should be deployed on all physical nodes and virtual machines, where monitoring these statistics is desirable.
fr: L'exportateur de nœuds de Prometheus rend disponible les statistiques sur le matériel et le système d'exploitation fournies par le noyau Linux pour le système de surveillance Prometheus.  Ce service devrait être déployé sur tous les nœuds physiques et les machines virtuelles, où vous voulez surveiller ces statistiques.

note: type: defvar
en: {Scheme variable} prometheus-node-exporter-service-type
fr: {Variable Scheme} prometheus-node-exporter-service-type

note: type: defvar
en: This is the service type for the @uref{https://github.com/prometheus/node_exporter/, prometheus-node-exporter} service, its value must be a @code{prometheus-node-exporter-configuration}.
fr: C'est le type de service pour le service @uref{https://github.com/prometheus/node_exporter/, prometheus-node-exporter}, sa valeur doit être un enregistrement @code{prometheus-node-exporter-configuration}.

note: type: deftp
en: {Data Type} prometheus-node-exporter-configuration
fr: {Type de données} prometheus-node-exporter-configuration

note: type: deftp
en: Data type representing the configuration of @command{node_exporter}.
fr: Type de données représentant la configuration de @command{node_exporter}.

note: type: item
en: @code{package} (default: @code{go-github-com-prometheus-node-exporter})
fr: @code{package} (par défaut : @code{go-github-com-prometheus-node-exporter})

note: type: table
en: The prometheus-node-exporter package to use.
fr: Le paquet prometheus-node-exporter à utiliser.

note: type: item
en: @code{web-listen-address} (default: @code{":9100"})
fr: @code{web-listen-address} (par défaut : @code{":9100"})

note: type: item
en: @code{textfile-directory} (default: @code{"/var/lib/prometheus/node-exporter"})
fr: @code{textfile-directory} (par défaut : @code{"/var/lib/prometheus/node-exporter"})

note: type: table
en: This directory can be used to export metrics specific to this machine.  Files containing metrics in the text format, with the filename ending in @code{.prom} should be placed in this directory.
fr: Ce répertoire est utilisable pour exporter des métriques spécifiques à cette machine. Les fichiers contenant les métriques au format texte, dont le nom de fichier termine par @code{.prom} devraient être placés dans ce répertoire.

note: type: table
en: Extra options to pass to the Prometheus node exporter.
fr: Options supplémentaires à passer au lancement de l'exportateur de nœuds de Prometheus.

note: type: subsubheading
en: Zabbix server
fr: Server zabbix

note: type: Plain text
en: Zabbix is a high performance monitoring system that can collect data from a variety of sources and provide the results in a web-based interface.  Alerting and reporting is built-in, as well as @dfn{templates} for common operating system metrics such as network utilization, CPU load, and disk space consumption.
fr: Zabbix est un système de surveillance très performant qui peut récupérer des données de plusieurs sources et fournir les résultats sur une interface web. Les alertes et les rapport sont inclus, ainsi que les @dfn{modèles} pour les métriques communes des systèmes d'exploitation comme l'utilisation du réseau, la charge CPU et la consommation de l'espace disque.

note: type: Plain text
en: This service provides the central Zabbix monitoring service; you also need @ref{zabbix-front-end,@code{zabbix-front-end-service-type}} to configure Zabbix and display results, and optionally @ref{zabbix-agent, @code{zabbix-agent-service-type}} on machines that should be monitored (other data sources are supported, such as @ref{prometheus-node-exporter, Prometheus Node Exporter}).
fr: Ce service fournit le service de surveillance Zabbix central. Vous aurez aussi besoin de @ref{zabbix-front-end,@code{zabbix-front-end-service-type}} pour configurer Zabbix et afficher les résultats et éventuellement de @ref{zabbix-agent, @code{zabbix-agent-service-type}} sur les machines qui doivent être surveillées (d'autres sources de données sont prises en charge, comme @ref{prometheus-node-exporter, Prometheus Node Exporter}).

note: type: defvar
en: {Scheme variable} zabbix-server-service-type
fr: {Variable Scheme} zabbix-server-service-type

note: type: defvar
en: This is the service type for the Zabbix server service.  Its value must be a @code{zabbix-server-configuration} record, shown below.
fr: C'est le type de service pour le service du serveur Zabbix.  Sa valeur doit être un enregistrement @code{zabbix-serveur-configuration}, décrit ci-dessous.

note: type: deftp
en: {Data Type} zabbix-server-configuration
fr: {Type de données} zabbix-server-configuration

note: type: deftp
en: Available @code{zabbix-server-configuration} fields are:
fr: Les champs de @code{zabbix-server-configuration} disponibles sont :

note: type: item
en: @code{zabbix-server} (default: @code{zabbix-server}) (type: file-like)
fr: @code{zabbix-server} (par défaut : @code{zabbix-server}) (type : simili-fichier)

note: type: table
en: The zabbix-server package.
fr: Le paquet zabbix-server.

note: type: item
en: @code{user} (default: @code{"zabbix"}) (type: string)
fr: @code{user} (par défaut : @code{"zabbix"}) (type : chaine)

note: type: table
en: User who will run the Zabbix server.
fr: Utilisateur qui lancera le serveur Zabbix.

note: type: item
en: @code{group} (default: @code{"zabbix"}) (type: group)
fr: @code{group} (par défaut : @code{"zabbix"}) (type : groupe)

note: type: table
en: Group who will run the Zabbix server.
fr: Groupe qui lancera le serveur Zabbix.

note: type: item
en: @code{db-host} (default: @code{"127.0.0.1"}) (type: string)
fr: @code{db-host} (par défaut : @code{"127.0.0.1"}) (type : chaine)

note: type: table
en: Database host name.
fr: Le nom d'hôte de la base de données.

note: type: item
en: @code{db-name} (default: @code{"zabbix"}) (type: string)
fr: @code{db-name} (par défaut : @code{"zabbix"}) (type : chaine)

note: type: table
en: Database name.
fr: Nom de la base de données.

note: type: item
en: @code{db-user} (default: @code{"zabbix"}) (type: string)
fr: @code{db-user} (par défaut : @code{"zabbix"}) (type : chaine)

note: type: table
en: Database user.
fr: Utilisateur de la base de données.

note: type: item
en: @code{db-password} (default: @code{""}) (type: string)
fr: @code{db-password} (par défaut : @code{""}) (type : chaine)

note: type: table
en: Database password.  Please, use @code{include-files} with @code{DBPassword=SECRET} inside a specified file instead.
fr: Mot de passe de la base de données.  Utilisez plutôt @code{include-files} avec @code{DBPassword=SECRET} dans le fichier spécifié à la place.

note: type: item
en: @code{db-port} (default: @code{5432}) (type: number)
fr: @code{db-port} (par défaut : @code{5432}) (type : entier)

note: type: table
en: Database port.
fr: Port de la base de données.

note: type: item
en: @code{log-type} (default: @code{""}) (type: string)
fr: @code{log-type} (par défaut : @code{""}) (type : chaine)

note: type: table
en: Specifies where log messages are written to:
fr: Spécifie où les messages de journalisation seront écrits :

note: type: item
en: @code{file} - file specified with @code{log-file} parameter.
fr: @code{file} - fichier spécifié par le paramètre @code{log-file}.

note: type: item
en: @code{console} - standard output.
fr: @code{console} - sortie standard.

note: type: item
en: @code{log-file} (default: @code{"/var/log/zabbix/server.log"}) (type: string)
fr: @code{log-file} (par défaut : @code{"/var/log/zabbix/server.log"}) (type : chaine)

note: type: table
en: Log file name for @code{log-type} @code{file} parameter.
fr: Nom du fichier de journal lorsque le paramètre @code{log-type} vaut @code{file}.

note: type: item
en: @code{pid-file} (default: @code{"/var/run/zabbix/zabbix_server.pid"}) (type: string)
fr: @code{pid-file} (par défaut : @code{"/var/run/zabbix/zabbix_server.pid"}) (type : chaine)

note: type: table
en: Name of PID file.
fr: Nom du fichier de PID.

note: type: item
en: @code{ssl-ca-location} (default: @code{"/etc/ssl/certs/ca-certificates.crt"}) (type: string)
fr: @code{ssl-ca-location} (par défaut : @code{"/etc/ssl/certs/ca-certificates.crt"}) (type : chaine)

note: type: table
en: The location of certificate authority (CA) files for SSL server certificate verification.
fr: Emplacement des fichiers d'autorités de certification (AC) pour la vérification des certificats SSL du serveur.

note: type: item
en: @code{ssl-cert-location} (default: @code{"/etc/ssl/certs"}) (type: string)
fr: @code{ssl-cert-location} (par défaut : @code{"/etc/ssl/certs"}) (type : chaine)

note: type: table
en: Location of SSL client certificates.
fr: Emplacement des certificats SSL des clients.

note: type: item
en: @code{extra-options} (default: @code{""}) (type: extra-options)
fr: @code{extra-options} (par défaut : @code{""}) (type : extra-options)

note: type: table
en: Extra options will be appended to Zabbix server configuration file.
fr: Options supplémentaires ajoutées à la fin du fichier de configuration du serveur Zabbix.

note: type: item
en: @code{include-files} (default: @code{()}) (type: include-files)
fr: @code{include-files} (par défaut : @code{()}) (type : include-files)

note: type: table
en: You may include individual files or all files in a directory in the configuration file.
fr: Vous pouvez inclure des fichiers individuels ou tous les fichiers d'un répertoire dans le fichier de configuration.

note: type: subsubheading
en: Zabbix agent
fr: Agent zabbix

note: type: Plain text
en: The Zabbix agent gathers information about the running system for the Zabbix monitoring server.  It has a variety of built-in checks, and can be extended with custom @uref{https://www.zabbix.com/documentation/current/en/manual/config/items/userparameters, @dfn{user parameters}}.
fr: L'agent Zabbix récupère les informations sur le système pour le serveur de surveillance Zabbix. Il a plusieurs vérificateurs intégrés et peut être étendu avec des @uref{https://www.zabbix.com/documentation/current/en/manual/config/items/userparameters, @dfn{paramètres utilisateurs}} personnalisés.

note: type: defvar
en: {Scheme variable} zabbix-agent-service-type
fr: {Variable Scheme} zabbix-agent-service-type

note: type: defvar
en: This is the service type for the Zabbix agent service.  Its value must be a @code{zabbix-agent-configuration} record, shown below.
fr: C'est le type de service du service de l'agent Zabbix.  Sa valeur doit être un enregistrement @code{zabbix-agent-configuration}, décrit ci-dessous.

note: type: deftp
en: {Data Type} zabbix-agent-configuration
fr: {Type de données} zabbix-agent-configuration

note: type: deftp
en: Available @code{zabbix-agent-configuration} fields are:
fr: Les champs de @code{zabbix-agent-configuration} disponibles sont :

note: type: item
en: @code{zabbix-agent} (default: @code{zabbix-agentd}) (type: file-like)
fr: @code{zabbix-agent} (par défaut : @code{zabbix-agentd}) (type : simili-fichier)

note: type: table
en: The zabbix-agent package.
fr: Le paquet zabbix-agent.

note: type: table
en: User who will run the Zabbix agent.
fr: Utilisateur qui lancera l'agent Zabbix.

note: type: table
en: Group who will run the Zabbix agent.
fr: Groupe qui lancera l'agent Zabbix.

note: type: item
en: @code{hostname} (default: @code{""}) (type: string)
fr: @code{hostname} (par défaut : @code{""}) (type : chaine)

note: type: table
en: Unique, case sensitive hostname which is required for active checks and must match hostname as configured on the server.
fr: Noms d'hôte unique et sensible à la casse requis pour les vérifications actives et qui doit correspondre au nom d'hôte configuré sur le serveur.

note: type: item
en: @code{file} - file specified with
fr: @code{file} — fichier spécifié par

note: type: itemize
en: @code{log-file} parameter.
fr: le paramètre @code{log-file}.

note: type: item
en: @code{log-file} (default: @code{"/var/log/zabbix/agent.log"}) (type: string)
fr: @code{log-file} (par défaut : @code{"/var/log/zabbix/agent.log"}) (type : chaine)

note: type: item
en: @code{pid-file} (default: @code{"/var/run/zabbix/zabbix_agent.pid"}) (type: string)
fr: @code{pid-file} (par défaut : @code{"/var/run/zabbix/zabbix_agent.pid"}) (type : chaine)

note: type: item
en: @code{server} (default: @code{("127.0.0.1")}) (type: list)
fr: @code{server} (par défaut : @code{("127.0.0.1")}) (type : liste)

note: type: table
en: List of IP addresses, optionally in CIDR notation, or hostnames of Zabbix servers and Zabbix proxies.  Incoming connections will be accepted only from the hosts listed here.
fr: Liste d'adresses IP, éventuellement en notation CIDR ou de noms d'hôtes de serveurs Zabbix et de mandataires Zabbix.  Les connexions entrantes ne seront acceptées que si elles viennent des hôtes listés ici.

note: type: item
en: @code{server-active} (default: @code{("127.0.0.1")}) (type: list)
fr: @code{server-active} (par défaut : @code{("127.0.0.1")}) (type : liste)

note: type: table
en: List of IP:port (or hostname:port) pairs of Zabbix servers and Zabbix proxies for active checks.  If port is not specified, default port is used.  If this parameter is not specified, active checks are disabled.
fr: Liste de paires d'IP:port (ou nom d'hôte:port) de serveurs Zabbix et de mandataires Zabbix pour les vérifications actives.  Si le port n'est pas spécifié, le port par défaut est utilisé.  Si ce paramètre n'est pas spécifié, les vérifications actives sont désactivées.

note: type: subsubheading
en: Zabbix front-end
fr: Interface utilisateur Zabbix

note: type: Plain text
en: The Zabbix front-end provides a web interface to Zabbix.  It does not need to run on the same machine as the Zabbix server.  This service works by extending the @ref{PHP-FPM} and @ref{NGINX} services with the configuration necessary for loading the Zabbix user interface.
fr: L'interface Zabbix fournit une interface web à Zabbix. Il n'a pas besoin de tourner sur la même machine que le serveur Zabbix. Ce service fonctionne en étendant les service @ref{PHP-FPM} et @ref{NGINX} avec la configuration nécessaire à charger l'interface utilisateur Zabbix.

note: type: defvar
en: {Scheme variable} zabbix-front-end-service-type
fr: {Variable Scheme} zabbix-front-end-service-type

note: type: defvar
en: This is the service type for the Zabbix web frontend.  Its value must be a @code{zabbix-front-end-configuration} record, shown below.
fr: C'est le type de service de l'interface web de Zabbix.  Sa valeur doit être un enregistrement @code{virtlog-configuration}, décrit plus bas.

note: type: deftp
en: {Data Type} zabbix-front-end-configuration
fr: {Type de données} zabbix-front-end-configuration

note: type: deftp
en: Available @code{zabbix-front-end-configuration} fields are:
fr: Les champs de @code{zabbix-front-end-configuration} disponibles sont :

note: type: table
en: The Zabbix server package to use.
fr: Le paquet du serveur Zabbix à utiliser.

note: type: item
en: @code{nginx} (default: @code{()}) (type: list)
fr: @code{nginx} (par défaut : @code{()}) (type : liste)

note: type: table
en: List of @ref{nginx-server-configuration,@code{nginx-server-configuration}} blocks for the Zabbix front-end.  When empty, a default that listens on port 80 is used.
fr: Liste de blocs @ref{nginx-server-configuration,@code{nginx-server-configuration}} pour l'interface Zabbix. Lorsque la valeur est vide, un bloc par défaut qui écoute sur le port 80 est utilisé.

note: type: item
en: @code{db-host} (default: @code{"localhost"}) (type: string)
fr: @code{db-host} (par défaut : @code{"localhost"}) (type : chaine)

note: type: table
en: Database password.  Please, use @code{db-secret-file} instead.
fr: Mot de passe de la base de données.  Utilisez plutôt @code{db-secret-file}.

note: type: item
en: @code{db-secret-file} (default: @code{""}) (type: string)
fr: @code{db-secret-file} (par défaut : @code{""}) (type : chaine)

note: type: table
en: Secret file which will be appended to @file{zabbix.conf.php} file.  This file contains credentials for use by Zabbix front-end.  You are expected to create it manually.
fr: Fichier de secrets qui sera ajouté au fichier @file{zabbix.conf.php}.  Ce fichier contient les paramètres d'authentification utilisés par Zabbix.  On s'attend à ce que vous le créiez manuellement.

note: type: item
en: @code{zabbix-host} (default: @code{"localhost"}) (type: string)
fr: @code{zabbix-host} (par défaut : @code{"localhost"}) (type : chaine)

note: type: table
en: Zabbix server hostname.
fr: Nom d'hôte du serveur Zabbix.

note: type: item
en: @code{zabbix-port} (default: @code{10051}) (type: number)
fr: @code{zabbix-port} (par défaut : @code{10051}) (type : nombre)

note: type: table
en: Zabbix server port.
fr: Port du serveur Zabbix.

note: type: Plain text
en: The @code{(gnu services kerberos)} module provides services relating to the authentication protocol @dfn{Kerberos}.
fr: Le module @code{(gnu services kerberos)} fournit des services liés au protocole d'authentification @dfn{Kerberos}.

note: type: subsubheading
en: Krb5 Service
fr: Service Krb5

note: type: Plain text
en: Programs using a Kerberos client library normally expect a configuration file in @file{/etc/krb5.conf}.  This service generates such a file from a definition provided in the operating system declaration.  It does not cause any daemon to be started.
fr: Les programmes qui utilisent une bibliothèque cliente Kerberos s'attendent à trouver un fichier de configuration dans @file{/etc/krb5.conf}.  Ce service génère un tel fichier à partir d'une définition fournie par la déclaration de système d'exploitation.  Il ne démarre aucun démon.

note: type: Plain text
en: No ``keytab'' files are provided by this service---you must explicitly create them.  This service is known to work with the MIT client library, @code{mit-krb5}.  Other implementations have not been tested.
fr: Aucun fichier « keytab » n'est fourni par ce service — vous devez les créer explicitement.  Ce service est connu pour fonctionner avec la bibliothèque cliente MIT, @code{mit-krb5}.  Les autres implémentations n'ont pas été testées.

note: type: defvr
en: {Scheme Variable} krb5-service-type
fr: {Variable Scheme} krb5-service-type

note: type: defvr
en: A service type for Kerberos 5 clients.
fr: Un type de service pour les clients Kerberos 5.

note: type: Plain text
en: Here is an example of its use:
fr: Voici un exemple d'utilisation :

note: type: Plain text
en: This example provides a Kerberos@tie{}5 client configuration which:
fr: Cet exemple fournit une configuration cliente Kerberos@tie{}5 qui :

note: type: item
en: Recognizes two realms, @i{viz:} ``EXAMPLE.COM'' and ``ARGRX.EDU'', both
fr: Reconnais deux domaines : « EXAMPLE.COM » et « ARGREX.EDU », tous deux

note: type: itemize
en: of which have distinct administration servers and key distribution centers;
fr: aillant des serveurs d'administration et des centres de distribution de clefs distincts ;

note: type: item
en: Will default to the realm ``EXAMPLE.COM'' if the realm is not explicitly
fr: Utilisera le domaine « EXAMPLE.COM » pr défaut si le domaine n'est pas spécifié

note: type: itemize
en: specified by clients;
fr: explicitement par les clients ;

note: type: item
en: Accepts services which only support encryption types known to be weak.
fr: Acceptera les services qui ne supportent que des types de chiffrements connus pour être faibles.

note: type: Plain text
en: The @code{krb5-realm} and @code{krb5-configuration} types have many fields.  Only the most commonly used ones are described here.  For a full list, and more detailed explanation of each, see the MIT @uref{https://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html,,krb5.conf} documentation.
fr: Les types @code{krb5-realm} et @code{krb5-configuration} ont de nombreux champs.  Seuls les plus communs sont décrits ici.  Pour une liste complète, et plus de détails sur chacun d'entre eux, voir la documentation de MIT @uref{https://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html,,krb5.conf}.

note: type: deftp
en: {Data Type} krb5-realm
fr: {Type de données} krb5-realm

note: type: cindex
en: realm, kerberos
fr: domaine, kerberos

note: type: table
en: This field is a string identifying the name of the realm.  A common convention is to use the fully qualified DNS name of your organization, converted to upper case.
fr: Ce champ est une chaîne identifiant le nom d'un domaine.  Une convention courante est d'utiliser le nom pleinement qualifié de votre organisation, converti en majuscule.

note: type: table
en: This field is a string identifying the host where the administration server is running.
fr: Ce champ est une chaîne identifiant l'hôte où le serveur d'administration tourne.

note: type: table
en: This field is a string identifying the key distribution center for the realm.
fr: Ce champ est une chaîne identifiant le centre de distribution de clefs pour ce domaine.

note: type: deftp
en: {Data Type} krb5-configuration
fr: {Type de données} krb5-configuration

note: type: item
en: @code{allow-weak-crypto?} (default: @code{#f})
fr: @code{allow-weak-crypto?} (par défaut : @code{#f})

note: type: table
en: If this flag is @code{#t} then services which only offer encryption algorithms known to be weak will be accepted.
fr: Si ce drapeau est @code{#t} les services qui n'offrent que des algorithmes de chiffrement faibles seront acceptés.

note: type: item
en: @code{default-realm} (default: @code{#f})
fr: @code{default-realm} (par défaut : @code{#f})

note: type: table
en: This field should be a string identifying the default Kerberos realm for the client.  You should set this field to the name of your Kerberos realm.  If this value is @code{#f} then a realm must be specified with every Kerberos principal when invoking programs such as @command{kinit}.
fr: Ce champ devrait être une chaîne identifiant le domaine Kerberos par défaut pour le client.  Vous devriez mettre le nom de votre domaine Kerberos dans ce champ.  Si cette valeur est @code{#f} alors un domaine doit être spécifié pour chaque principal Kerberos à l'invocation des programmes comme @command{kinit}.

note: type: table
en: This should be a non-empty list of @code{krb5-realm} objects, which clients may access.  Normally, one of them will have a @code{name} field matching the @code{default-realm} field.
fr: Cela doit être une liste non-vide d'objets @code{krb5-realm}, auxquels les clients peuvent accéder.  Normalement, l'un d'entre eux aura un champ @code{name} qui correspond au champ @code{default-realm}.

note: type: subsubheading
en: PAM krb5 Service
fr: Service PAM krb5

note: type: Plain text
en: The @code{pam-krb5} service allows for login authentication and password management via Kerberos.  You will need this service if you want PAM enabled applications to authenticate users using Kerberos.
fr: Le service @code{pam-krb5} permet la connexion et la gestion des mots de passe par Kerberos.  Vous aurez besoin de ce service si vous voulez que les applications qui utilisent PAM puissent authentifier automatiquement les utilisateurs avec Kerberos.

note: type: defvr
en: {Scheme Variable} pam-krb5-service-type
fr: {Variable Scheme} pam-krb5-service-type

note: type: defvr
en: A service type for the Kerberos 5 PAM module.
fr: Un type de service pour le module PAM Kerberos 5.

note: type: deftp
en: {Data Type} pam-krb5-configuration
fr: {Type de données} pam-krb5-configuration

note: type: deftp
en: Data type representing the configuration of the Kerberos 5 PAM module.  This type has the following parameters:
fr: Type de données représentant la configuration du module PAM Kerberos 5.  Ce type a les paramètres suivants :

note: type: item
en: @code{pam-krb5} (default: @code{pam-krb5})
fr: @code{pam-krb5} (par défaut : @code{pam-krb5})

note: type: table
en: The pam-krb5 package to use.
fr: Le paquet pam-krb5 à utiliser.

note: type: item
en: @code{minimum-uid} (default: @code{1000})
fr: @code{minimum-uid} (par défaut : @code{1000})

note: type: table
en: The smallest user ID for which Kerberos authentications should be attempted.  Local accounts with lower values will silently fail to authenticate.
fr: Le plus petite ID utilisateur pour lequel les authentifications Kerberos devraient être tentées.  Les comptes locaux avec une valeur plus petite échoueront silencieusement leur authentification Kerberos.

note: type: cindex
en: nslcd, LDAP service
fr: nslcd, service LDAP

note: type: Plain text
en: The @code{(gnu services authentication)} module provides the @code{nslcd-service-type}, which can be used to authenticate against an LDAP server.  In addition to configuring the service itself, you may want to add @code{ldap} as a name service to the Name Service Switch. @xref{Name Service Switch} for detailed information.
fr: Le module @code{(gnu services authentication)} fournit le type de service @code{nslcd-service-type}, qui peut être utilisé pour l'authentification par LDAP.  En plus de configurer le service lui-même, vous pouvez ajouter @code{ldap} comme service de noms au Name Service Switch.  @xref{Name Service Switch} pour des informations détaillées.

note: type: Plain text
en: Here is a simple operating system declaration with a default configuration of the @code{nslcd-service-type} and a Name Service Switch configuration that consults the @code{ldap} name service last:
fr: Voici une déclaration de système d'exploitation simple avec une configuration par défaut pour @code{nslcd-service-type} et une configuration du Name Service Switch qui consulte le service de noms @code{ldap} en dernier :

note: type: Plain text
en: Available @code{nslcd-configuration} fields are:
fr: Les champs de @code{nslcd-configuration} disponibles sont :

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} package nss-pam-ldapd
fr: {paramètre de @code{nslcd-configuration}} package nss-pam-ldapd

note: type: deftypevr
en: The @code{nss-pam-ldapd} package to use.
fr: Le paquet @code{nss-pam-ldapd} à utiliser.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number threads
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre threads

note: type: deftypevr
en: The number of threads to start that can handle requests and perform LDAP queries.  Each thread opens a separate connection to the LDAP server.  The default is to start 5 threads.
fr: Le nombre de threads à démarrer qui peuvent gérer les requête et effectuer des requêtes LDAP.  Chaque thread ouvre une connexion séparée au serveur LDAP.  La valeur par défaut est de 5 threads.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} string uid
fr: {paramètre de @code{nslcd-configuration}} string uid

note: type: deftypevr
en: This specifies the user id with which the daemon should be run.
fr: Cela spécifie l'id de l'utilisateur sous lequel le démon devrait tourner.

note: type: deftypevr
en: Defaults to @samp{"nslcd"}.
fr: La valeur par défaut est @samp{"nslcd"}.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} string gid
fr: {paramètre de @code{nslcd-configuration}} string gid

note: type: deftypevr
en: This specifies the group id with which the daemon should be run.
fr: Cela spécifie l'id du groupe sous lequel le démon devrait tourner.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} log-option log
fr: {paramètre de @code{nslcd-configuration}} log-option log

note: type: deftypevr
en: This option controls the way logging is done via a list containing SCHEME and LEVEL@.  The SCHEME argument may either be the symbols @samp{none} or @samp{syslog}, or an absolute file name.  The LEVEL argument is optional and specifies the log level.  The log level may be one of the following symbols: @samp{crit}, @samp{error}, @samp{warning}, @samp{notice}, @samp{info} or @samp{debug}.  All messages with the specified log level or higher are logged.
fr: Cette option contrôle la journalisation via une liste contenant le schéma et le niveau.  Le schéma peut être soit un symbole @samp{none}, @samp{syslog}, soit un nom de fichier absolu.  Le niveau est facultatif et spécifie le niveau de journalisation.  Le niveau de journalisation peut être l'un des symboles suivants :@samp{crit}, @samp{error}, @samp{warning}, @samp{notice}, @samp{info} ou @samp{debug}.  Tous les messages avec le niveau spécifié ou supérieurs sont enregistrés.

note: type: deftypevr
en: Defaults to @samp{("/var/log/nslcd" info)}.
fr: La valeur par défaut est @samp{("/var/log/nslcd" info)}.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} list uri
fr: {paramètre de @code{nslcd-configuration}} list uri

note: type: deftypevr
en: The list of LDAP server URIs.  Normally, only the first server will be used with the following servers as fall-back.
fr: La liste des URI des serveurs LDAP.  Normalement, seul le premier serveur sera utilisé avec les serveurs suivants comme secours.

note: type: deftypevr
en: Defaults to @samp{("ldap://localhost:389/")}.
fr: La valeur par défaut est @samp{("ldap://localhost:389/")}.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string ldap-version
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine ldap-version

note: type: deftypevr
en: The version of the LDAP protocol to use.  The default is to use the maximum version supported by the LDAP library.
fr: La version du protocole LDAP à utiliser.  La valeur par défaut est d'utiliser la version maximum supportée par la bibliothèque LDAP.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string binddn
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine binddn

note: type: deftypevr
en: Specifies the distinguished name with which to bind to the directory server for lookups.  The default is to bind anonymously.
fr: Spécifie le nom distingué avec lequel se lier au serveur de répertoire pour les recherches.  La valeur par défaut est de se lier anonymement.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string bindpw
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine bindpw

note: type: deftypevr
en: Specifies the credentials with which to bind.  This option is only applicable when used with binddn.
fr: Spécifie le mot de passe avec lequel se lier.  Cette option n'est valable que lorsqu'elle est utilisée avec binddn.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string rootpwmoddn
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine rootpwmoddn

note: type: deftypevr
en: Specifies the distinguished name to use when the root user tries to modify a user's password using the PAM module.
fr: Spécifie le nom distingué à utiliser lorsque l'utilisateur root essaye de modifier le mot de passe d'un utilisateur avec le module PAM.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string rootpwmodpw
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine rootpwmodpw

note: type: deftypevr
en: Specifies the credentials with which to bind if the root user tries to change a user's password.  This option is only applicable when used with rootpwmoddn
fr: Spécifie le mot de passe à utiliser pour se lier si l'utilisateur root essaye de modifier un mot de passe utilisateur.  Cette option n'est valable que si elle est utilisée avec rootpwmoddn

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string sasl-mech
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine sasl-mech

note: type: deftypevr
en: Specifies the SASL mechanism to be used when performing SASL authentication.
fr: Spécifie le mécanisme SASL à utiliser lors de l'authentification SASL.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string sasl-realm
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine sasl-realm

note: type: deftypevr
en: Specifies the SASL realm to be used when performing SASL authentication.
fr: Spécifie le royaume SASL à utiliser pour effectuer une authentification SASL.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string sasl-authcid
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine sasl-authcid

note: type: deftypevr
en: Specifies the authentication identity to be used when performing SASL authentication.
fr: Spécifie l'identité d'authentification à utiliser pour effectuer une authentification SASL.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string sasl-authzid
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine sasl-authzid

note: type: deftypevr
en: Specifies the authorization identity to be used when performing SASL authentication.
fr: Spécifie l'identité d'autorisation à utiliser lors d'une authentification SASL.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-boolean sasl-canonicalize?
fr: {paramètre de @code{nslcd-configuration}} peut-être-booléen sasl-canonicalize?

note: type: deftypevr
en: Determines whether the LDAP server host name should be canonicalised.  If this is enabled the LDAP library will do a reverse host name lookup.  By default, it is left up to the LDAP library whether this check is performed or not.
fr: Détermine si le nom d'hôte du serveur LDAP devrait être canonalisé.  Si c'est activé la bibliothèque LDAP effectuera une recherche de nom d'hôte inversée.  Par défaut, il est laissé à la bibliothèque LDAP le soin de savoir si la vérification doit être effectuée ou non.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string krb5-ccname
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine krb5-ccname

note: type: deftypevr
en: Set the name for the GSS-API Kerberos credentials cache.
fr: Indique le nom du cache d'informations de connexion de GSS-API Kerberos.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} string base
fr: {paramètre de @code{nslcd-configuration}} string base

note: type: deftypevr
en: The directory search base.
fr: La base de recherche de répertoires.

note: type: deftypevr
en: Defaults to @samp{"dc=example,dc=com"}.
fr: La valeur par défaut est @samp{"dc=example,dc=com"}.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} scope-option scope
fr: {paramètre de @code{nslcd-configuration}} scope-option scope

note: type: deftypevr
en: Specifies the search scope (subtree, onelevel, base or children).  The default scope is subtree; base scope is almost never useful for name service lookups; children scope is not supported on all servers.
fr: Spécifie la portée de la recherche (subtree, onelevel, base ou children).  La portée par défaut est subtree ; la portée base n'est presque jamais utile pour les recherches de service de noms ; la portée children n'est pas prise en charge par tous les serveurs.

note: type: deftypevr
en: Defaults to @samp{(subtree)}.
fr: La valeur par défaut est @samp{(subtree)}.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-deref-option deref
fr: {paramètre de @code{nslcd-configuration}} peut-être-deref-option deref

note: type: deftypevr
en: Specifies the policy for dereferencing aliases.  The default policy is to never dereference aliases.
fr: Spécifie la politique de déréférencement des alias.  La politique par défaut est de ne jamais déréférencer d'alias.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-boolean referrals
fr: {paramètre de @code{nslcd-configuration}} peut-être-booléen referrals

note: type: deftypevr
en: Specifies whether automatic referral chasing should be enabled.  The default behaviour is to chase referrals.
fr: Spécifie s'il faut activer le suivi de référence.  Le comportement par défaut est de suivre les références.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} list-of-map-entries maps
fr: {paramètre de @code{nslcd-configuration}} list-of-map-entries maps

note: type: deftypevr
en: This option allows for custom attributes to be looked up instead of the default RFC 2307 attributes.  It is a list of maps, each consisting of the name of a map, the RFC 2307 attribute to match and the query expression for the attribute as it is available in the directory.
fr: Cette option permet d'ajouter des attributs personnalisés à rechercher à la place des attributs par défaut de la RFC 2307.  C'est une liste de correspondances, consistant chacune en un nom, en l'attribut RFC 2307 à utiliser et l'expression de la requête pour l'attribut tel qu'il sera disponible dans le répertoire.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} list-of-filter-entries filters
fr: {paramètre de @code{nslcd-configuration}} list-of-filter-entries filters

note: type: deftypevr
en: A list of filters consisting of the name of a map to which the filter applies and an LDAP search filter expression.
fr: Une liste de filtres consistant en le nom d'une correspondance à laquelle applique le filtre et en une expression de filtre de recherche LDAP.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number bind-timelimit
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre bind-timelimit

note: type: deftypevr
en: Specifies the time limit in seconds to use when connecting to the directory server.  The default value is 10 seconds.
fr: Spécifie la limite de temps en seconds à utiliser lors de la connexion au serveur de répertoire.  La valeur par défaut est de 10 secondes.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number timelimit
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre timelimit

note: type: deftypevr
en: Specifies the time limit (in seconds) to wait for a response from the LDAP server.  A value of zero, which is the default, is to wait indefinitely for searches to be completed.
fr: Spécifie la limite de temps (en secondes) à attendre une réponse d'un serveur LDAP.  La valeur de zéro, par défaut, permet d'attendre indéfiniment la fin des recherches.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number idle-timelimit
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre idle-timelimit

note: type: deftypevr
en: Specifies the period if inactivity (in seconds) after which the con‐ nection to the LDAP server will be closed.  The default is not to time out connections.
fr: Spécifie la période d'inactivité (en seconde) après laquelle la connexion au serveur LDAP sera fermée.  La valeur par défaut est de ne jamais la fermer.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number reconnect-sleeptime
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre reconnect-sleeptime

note: type: deftypevr
en: Specifies the number of seconds to sleep when connecting to all LDAP servers fails.  By default one second is waited between the first failure and the first retry.
fr: Spécifie le nombre de secondes pendant laquelle attendre lorsque la connexion à tous les serveurs LDAP a échouée.  Par défaut, il y a une seconde d'attente entre le premier échec et la tentative suivante.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number reconnect-retrytime
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre reconnect-retrytime

note: type: deftypevr
en: Specifies the time after which the LDAP server is considered to be permanently unavailable.  Once this time is reached retries will be done only once per this time period.  The default value is 10 seconds.
fr: Spécifie la durée après laquelle le serveur LDAP est considéré comme définitivement inatteignable.  Une fois cette durée atteinte, les tentatives de connexions n'auront plus lieu qu'une fois par cet intervalle de temps.  La valeur par défaut est de 10 secondes.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-ssl-option ssl
fr: {paramètre de @code{nslcd-configuration}} peut-être-ssl-option ssl

note: type: deftypevr
en: Specifies whether to use SSL/TLS or not (the default is not to).  If 'start-tls is specified then StartTLS is used rather than raw LDAP over SSL.
fr: Spécifie s'il faut utiliser SSL/TLS ou non (la valeur par défaut est non).  Si 'start-tls est spécifié alors StartTLS est utilisé à la place de LDAP sur SSL.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-tls-reqcert-option tls-reqcert
fr: {paramètre de @code{nslcd-configuration}} peut-être-tls-reqcert-option tls-reqcert

note: type: deftypevr
en: Specifies what checks to perform on a server-supplied certificate.  The meaning of the values is described in the ldap.conf(5) manual page.
fr: Spécifie quelles vérifications effectuer sur les certificats donnés par les serveurs.  La signification des valeurs est décrite dans la page de manuel de ldap.conf(5).

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string tls-cacertdir
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine tls-cacertdir

note: type: deftypevr
en: Specifies the directory containing X.509 certificates for peer authen‐ tication.  This parameter is ignored when using GnuTLS.
fr: Spécifie le répertoire contenant les certificats X.509 pour l'authentification des pairs.  Ce paramètre est ignoré quand il est utilisé avec GnuTLS.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string tls-cacertfile
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine tls-cacertfile

note: type: deftypevr
en: Specifies the path to the X.509 certificate for peer authentication.
fr: Spécifie le chemin des certificats X.509 pour l'authentification des pairs.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string tls-randfile
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine tls-randfile

note: type: deftypevr
en: Specifies the path to an entropy source.  This parameter is ignored when using GnuTLS.
fr: Spécifie le chemin d'une source d'entropie.  Ce paramètre est ignoré quand il est utilisé avec GnuTLS.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string tls-ciphers
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine tls-ciphers

note: type: deftypevr
en: Specifies the ciphers to use for TLS as a string.
fr: Spécifie les suites de chiffrements à utiliser pour TLS en tant que chaîne de caractères.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string tls-cert
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine tls-cert

note: type: deftypevr
en: Specifies the path to the file containing the local certificate for client TLS authentication.
fr: Spécifie le chemin vers le fichier contenant le certificat local pour l'authentification TLS du client.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string tls-key
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine tls-key

note: type: deftypevr
en: Specifies the path to the file containing the private key for client TLS authentication.
fr: Spécifie le chemin du fichier contenant la clef privée pour l'authentification TLS du client.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number pagesize
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre pagesize

note: type: deftypevr
en: Set this to a number greater than 0 to request paged results from the LDAP server in accordance with RFC2696.  The default (0) is to not request paged results.
fr: Indiquez un nombre plus grand que 0 pour demander des résultats paginés au serveur LDAP en accord avec la RFC 2696.  La valeur par défaut (0) est de ne pas demander de pagination des résultats.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-ignore-users-option nss-initgroups-ignoreusers
fr: {paramètre de @code{nslcd-configuration}} peut-être-ignore-users-option nss-initgroups-ignoreusers

note: type: deftypevr
en: This option prevents group membership lookups through LDAP for the specified users.  Alternatively, the value 'all-local may be used.  With that value nslcd builds a full list of non-LDAP users on startup.
fr: Cette option évite les recherches d'appartenance au groupe à travers le LDAP pour les utilisateurs spécifiés.  Autrement, la valeur 'all-local peut être utilisée.  Avec cette valeur nslcd construit une liste complète des utilisateurs non-LDAP au démarrage.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number nss-min-uid
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre nss-min-uid

note: type: deftypevr
en: This option ensures that LDAP users with a numeric user id lower than the specified value are ignored.
fr: Cette option s'assure que les utilisateurs LDAP avec un id utilisateur numérique plus petit que la valeur spécifiée sont ignorés.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number nss-uid-offset
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre nss-uid-offset

note: type: deftypevr
en: This option specifies an offset that is added to all LDAP numeric user ids.  This can be used to avoid user id collisions with local users.
fr: Cette option spécifie un décalage à ajouter à tous les id utilisateurs numériques LDAP.  Cela peut être utile pour éviter des collisions d'id utilisateurs avec des utilisateurs locaux.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-number nss-gid-offset
fr: {paramètre de @code{nslcd-configuration}} peut-être-nombre nss-gid-offset

note: type: deftypevr
en: This option specifies an offset that is added to all LDAP numeric group ids.  This can be used to avoid user id collisions with local groups.
fr: Cette option spécifie un décalage à ajouter à tous les id de groupe numériques LDAP.  Cela peut être utile pour éviter des collisions d'id utilisateurs avec des groupes locaux.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-boolean nss-nested-groups
fr: {paramètre de @code{nslcd-configuration}} peut-être-booléen nss-nested-groups

note: type: deftypevr
en: If this option is set, the member attribute of a group may point to another group.  Members of nested groups are also returned in the higher level group and parent groups are returned when finding groups for a specific user.  The default is not to perform extra searches for nested groups.
fr: Si cette option est indiquée, l'attribut de membre de groupe peut pointer vers un autre groupe.  Les membres de groupes imbriqués sont aussi renvoyés dans le groupe de haut-niveau et les groupes parents sont renvoyés lorsqu'on recherche un utilisateur spécifique.  La valeur par défaut est de ne pas effectuer de recherche supplémentaire sur les groupes imbriqués.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-boolean nss-getgrent-skipmembers
fr: {paramètre de @code{nslcd-configuration}} peut-être-booléen nss-getgrent-skipmembers

note: type: deftypevr
en: If this option is set, the group member list is not retrieved when looking up groups.  Lookups for finding which groups a user belongs to will remain functional so the user will likely still get the correct groups assigned on login.
fr: Si cette option est indiqée, la liste de membres du groupe n'est pas récupérée lorsqu'on cherche un groupe.  Les recherches pour trouver les groupes auxquels un utilisateur appartient resteront fonctionnelles donc l'utilisateur obtiendra probablement les bons groupes à la connexion.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-boolean nss-disable-enumeration
fr: {paramètre de @code{nslcd-configuration}} peut-être-booléen nss-disable-enumeration

note: type: deftypevr
en: If this option is set, functions which cause all user/group entries to be loaded from the directory will not succeed in doing so.  This can dramatically reduce LDAP server load in situations where there are a great number of users and/or groups.  This option is not recommended for most configurations.
fr: Si cette option est indiquée, les fonctions qui causent le chargement de toutes les entrées d'utilisateur et de groupe depuis le répertoire ne pourront pas le faire.  Cela peut grandement diminuer la charge du serveur LDAP dans des situations où il y a beaucoup d'utilisateurs et de groupes.  Cette option n'est pas recommandées pour la plupart des configurations.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string validnames
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine validnames

note: type: deftypevr
en: This option can be used to specify how user and group names are verified within the system.  This pattern is used to check all user and group names that are requested and returned from LDAP.
fr: Cette option peut être utilisée pour spécifier comment les noms d'utilisateurs et de groupes sont vérifiés sur le système.  Ce motif est utilisé pour vérifier tous les noms d'utilisateurs et de groupes qui sont demandés et renvoyés par le LDAP.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-boolean ignorecase
fr: {paramètre de @code{nslcd-configuration}} peut-être-booléen ignorecase

note: type: deftypevr
en: This specifies whether or not to perform searches using case-insensitive matching.  Enabling this could open up the system to authorization bypass vulnerabilities and introduce nscd cache poisoning vulnerabilities which allow denial of service.
fr: Cela spécifie s'il faut ou non effectuer des recherches avec une correspondance sensible à la casse.  Activer cela pourrait mener à des vulnérabilités de type contournement d'authentification sur le système et introduire des vulnérabilité d'empoisonnement de cache nscd qui permettent un déni de service.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-boolean pam-authc-ppolicy
fr: {paramètre de @code{nslcd-configuration}} peut-être-booléen pam-authc-ppolicy

note: type: deftypevr
en: This option specifies whether password policy controls are requested and handled from the LDAP server when performing user authentication.
fr: Cette option spécifie si des contrôles de la politique de mots de passe sont demandés et gérés par le serveur LDAP à l'authentification de l'utilisateur.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string pam-authc-search
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine pam-authc-search

note: type: deftypevr
en: By default nslcd performs an LDAP search with the user's credentials after BIND (authentication) to ensure that the BIND operation was successful.  The default search is a simple check to see if the user's DN exists.  A search filter can be specified that will be used instead.  It should return at least one entry.
fr: Par défaut nslcd effectue une recherche LDAP avec le mot de passe de l'utilisateur après BIND (authentification) pour s'assurer que l'opération BIND a bien réussi.  La recherche par défaut est une simple vérification que le DN de l'utilisateur existe.  Un filtre de recherche peut être spécifié pour l'utiliser à la place.  Il devrait renvoyer au moins une entrée.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string pam-authz-search
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine pam-authz-search

note: type: deftypevr
en: This option allows flexible fine tuning of the authorisation check that should be performed.  The search filter specified is executed and if any entries match, access is granted, otherwise access is denied.
fr: Cette option permet la configuration fine et flexible de la vérification d'autorisation qui devrait être effectuée.  Le filtre de recherche est exécuté et si une entrée correspond, l'accès est autorisé, sinon il est refusé.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} maybe-string pam-password-prohibit-message
fr: {paramètre de @code{nslcd-configuration}} peut-être-chaine pam-password-prohibit-message

note: type: deftypevr
en: If this option is set password modification using pam_ldap will be denied and the specified message will be presented to the user instead.  The message can be used to direct the user to an alternative means of changing their password.
fr: Si cette option est indiquée, la modification de mot de passe par pam_ldap sera refusée et le message spécifié sera présenté à l'utilisateur à la place.  Le message peut être utilisé pour rediriger les utilisateurs vers une autre méthode pour changer leur mot de passe.

note: type: deftypevr
en: {@code{nslcd-configuration} parameter} list pam-services
fr: {paramètre de @code{nslcd-configuration}} list pam-services

note: type: deftypevr
en: List of pam service names for which LDAP authentication should suffice.
fr: Liste de noms de service pam pour lesquels l'authentification LDAP devrait suffire.

note: type: Plain text
en: The @code{(gnu services web)} module provides the Apache HTTP Server, the nginx web server, and also a fastcgi wrapper daemon.
fr: Le module @code{(gnu services web)} fournit le serveur Apache HTTP, le serveur web nginx et aussi un démon fastcgi.

note: type: subsubheading
en: Apache HTTP Server
fr: Serveur Apache HTTP

note: type: deffn
en: {Scheme Variable} httpd-service-type
fr: {Variable Scheme} httpd-service-type

note: type: deffn
en: Service type for the @uref{https://httpd.apache.org/,Apache HTTP} server (@dfn{httpd}).  The value for this service type is a @code{httpd-configuration} record.
fr: Type de service pour le serveur @uref{https://httpd.apache.org/,Apache HTTP} (@dfn{httpd}).  La valeur de ce type de service est un enregistrement @code{httpd-configuration}.

note: type: deffn
en: A simple example configuration is given below.
fr: Un exemple de configuration simple est donné ci-dessous.

note: type: deffn
en: Other services can also extend the @code{httpd-service-type} to add to the configuration.
fr: D'autres services peuvent aussi étendre @code{httpd-service-type} pour être ajouté à la configuration.

note: type: Plain text
en: The details for the @code{httpd-configuration}, @code{httpd-module}, @code{httpd-config-file} and @code{httpd-virtualhost} record types are given below.
fr: Les détails des types d'enregistrement @code{httpd-configuration}, @code{httpd-module}, @code{httpd-config-file} et @code{httpd-virtualhost} sont donnés plus bas.

note: type: deffn
en: {Data Type} httpd-configuration
fr: {Type de données} httpd-configuration

note: type: deffn
en: This data type represents the configuration for the httpd service.
fr: Ce type de données représente la configuration du service httpd.

note: type: item
en: @code{package} (default: @code{httpd})
fr: @code{package} (par défaut : @code{httpd})

note: type: table
en: The httpd package to use.
fr: Le paquet httpd à utiliser.

note: type: item
en: @code{pid-file} (default: @code{"/var/run/httpd"})
fr: @code{pid-file} (par défaut : @code{"/var/run/httpd"})

note: type: table
en: The pid file used by the shepherd-service.
fr: Le fichier de pid utilisé par le service shepherd.

note: type: item
en: @code{config} (default: @code{(httpd-config-file)})
fr: @code{config} (par défaut : @code{(httpd-config-file)})

note: type: table
en: The configuration file to use with the httpd service.  The default value is a @code{httpd-config-file} record, but this can also be a different G-expression that generates a file, for example a @code{plain-file}.  A file outside of the store can also be specified through a string.
fr: Le fichier de configuration à utiliser avec le service httpd.  La valeur par défaut est un enregistrement @code{httpd-config-file} mais cela peut aussi être un G-expression qui génère un fichier, par exemple un @code{plain-file}.  Un fichier en dehors du dépôt peut aussi être spécifié avec une chaîne de caractères.

note: type: deffn
en: {Data Type} httpd-module
fr: {Type de données} httpd-module

note: type: deffn
en: This data type represents a module for the httpd service.
fr: Ce type de données représente un module pour le service httpd.

note: type: table
en: The name of the module.
fr: Le nom du module.

note: type: table
en: The file for the module.  This can be relative to the httpd package being used, the absolute location of a file, or a G-expression for a file within the store, for example @code{(file-append mod-wsgi "/modules/mod_wsgi.so")}.
fr: Le fichier pour le module.  Cela peut être relatif au paquet httpd utilisé, l'emplacement absolu d'un fichier ou une G-expression pour un fichier dans le dépôt, par exemple @code{(file-append mod-wsgi "/modules/mod_wsgi.so")}.

note: type: defvr
en: {Scheme Variable} %default-httpd-modules
fr: {Variable Scheme} %default-httpd-modules

note: type: defvr
en: A default list of @code{httpd-module} objects.
fr: Une liste par défaut des objets @code{httpd-module}.

note: type: deffn
en: {Data Type} httpd-config-file
fr: {Type de données} httpd-config-file

note: type: deffn
en: This data type represents a configuration file for the httpd service.
fr: Ce type de données représente un fichier de configuration pour le service httpd.

note: type: item
en: @code{modules} (default: @code{%default-httpd-modules})
fr: @code{modules} (par défaut : @code{%default-httpd-modules})

note: type: table
en: The modules to load.  Additional modules can be added here, or loaded by additional configuration.
fr: Les modules à charger.  Les modules supplémentaires peuvent être ajoutés ici ou chargés par des configuration supplémentaires.

note: type: table
en: For example, in order to handle requests for PHP files, you can use Apache’s @code{mod_proxy_fcgi} module along with @code{php-fpm-service-type}:
fr: Par exemple, pour gérer les requêtes pour des fichiers PHP, vous pouvez utiliser le module @code{mod_proxy_fcgi} d'Apache avec @code{php-fpm-service-type} :

note: type: item
en: @code{server-root} (default: @code{httpd})
fr: @code{server-root} (par défaut : @code{httpd})

note: type: table
en: The @code{ServerRoot} in the configuration file, defaults to the httpd package.  Directives including @code{Include} and @code{LoadModule} are taken as relative to the server root.
fr: Le @code{ServerRoot} dans le fichier de configuration, par défaut le paquet httpd.  Les directives comme @code{Include} et @code{LoadModule} sont prises relativement à la racine du serveur.

note: type: item
en: @code{server-name} (default: @code{#f})
fr: @code{server-name} (par défaut : @code{#f})

note: type: table
en: The @code{ServerName} in the configuration file, used to specify the request scheme, hostname and port that the server uses to identify itself.
fr: Le @code{ServerName} dans le fichier de configuration, utilisé pour spécifier le schéma de requête, le nom d'hôte et le port que le serveur utilise pour s'identifier.

note: type: table
en: This doesn't need to be set in the server config, and can be specified in virtual hosts.  The default is @code{#f} to not specify a @code{ServerName}.
fr: Cela n'a pas besoin d'être dans la configuration du serveur, et peut être spécifié dans les hôtes virtuels.  La valeur par défaut est @code{#f} pour ne pas spécifier de @code{ServerName}.

note: type: item
en: @code{document-root} (default: @code{"/srv/http"})
fr: @code{document-root} (par défaut : @code{"/srv/http"})

note: type: table
en: The @code{DocumentRoot} from which files will be served.
fr: Le @code{DocumentRoot} depuis lequel les fichiers seront servis.

note: type: item
en: @code{listen} (default: @code{'("80")})
fr: @code{listen} (par défaut : @code{'("80")})

note: type: table
en: The list of values for the @code{Listen} directives in the config file.  The value should be a list of strings, when each string can specify the port number to listen on, and optionally the IP address and protocol to use.
fr: La liste des valeurs pour les directives @code{Listen} dans le fichier de configuration.  La valeur devrait être une liste de chaînes, où chacune spécifie le port sur lequel écouter et éventuellement une adresse IP et un protocole à utiliser.

note: type: table
en: The @code{PidFile} to use.  This should match the @code{pid-file} set in the @code{httpd-configuration} so that the Shepherd service is configured correctly.
fr: Le @code{PidFile} à utiliser.  Cela devrait correspondre à @code{pid-file} indiqué dans @code{httpd-configuration} pour que le service Shepherd soit correctement configuré.

note: type: item
en: @code{error-log} (default: @code{"/var/log/httpd/error_log"})
fr: @code{error-log} (par défaut : @code{"/var/log/httpd/error_log"})

note: type: table
en: The @code{ErrorLog} to which the server will log errors.
fr: Le @code{ErrorLog} où le serveur écrit les journaux d'erreurs.

note: type: item
en: @code{user} (default: @code{"httpd"})
fr: @code{user} (par défaut : @code{"httpd"})

note: type: table
en: The @code{User} which the server will answer requests as.
fr: Le @code{User} en tant que lequel le serveur répondra aux requêtes.

note: type: item
en: @code{group} (default: @code{"httpd"})
fr: @code{group} (par défaut : @code{"httpd"})

note: type: table
en: The @code{Group} which the server will answer requests as.
fr: Le @code{Group} que le serveur utilisera pour répondre aux requêtes.

note: type: item
en: @code{extra-config} (default: @code{(list "TypesConfig etc/httpd/mime.types")})
fr: @code{extra-config} (par défaut : @code{(list "TypesConfig etc/httpd/mime.types")})

note: type: table
en: A flat list of strings and G-expressions which will be added to the end of the configuration file.
fr: Une liste plate de chaînes et de G-expressions qui seront ajoutées à la fin du fichier de configuration.

note: type: table
en: Any values which the service is extended with will be appended to this list.
fr: N'importe quelle valeur avec laquelle le service est étendu sera ajouté à cette liste.

note: type: deffn
en: {Data Type} httpd-virtualhost
fr: {Type de données} httpd-virtualhost

note: type: deffn
en: This data type represents a virtualhost configuration block for the httpd service.
fr: Ce type de données représente la configuration d'un hôte virtuel pour le service httpd.

note: type: deffn
en: These should be added to the extra-config for the httpd-service.
fr: Ils devraient être ajoutés à extra-config dans httpd-service.

note: type: table
en: The addresses and ports for the @code{VirtualHost} directive.
fr: L'adresse et le port pour la directive @code{VirtualHost}.

note: type: table
en: The contents of the @code{VirtualHost} directive, this should be a list of strings and G-expressions.
fr: Le contenu de la directive @code{VirtualHost}, cela devrait être une liste de chaîne et de G-expressions.

note: type: deffn
en: {Scheme Variable} nginx-service-type
fr: {Variable Scheme} nginx-service-type

note: type: deffn
en: Service type for the @uref{https://nginx.org/,NGinx} web server.  The value for this service type is a @code{<nginx-configuration>} record.
fr: Type de service pour le serveur web @uref{https://nginx.org/,NGinx}.  La valeur de ce service est un enregistrement @code{<nginx-configuration>}.

note: type: deffn
en: In addition to adding server blocks to the service configuration directly, this service can be extended by other services to add server blocks, as in this example:
fr: En plus d'ajouter des blocs de serveurs dans la configuration du service directement, ce service peut être étendu par d'autres services pour ajouter des blocs de serveurs, comme dans cet exemple :

note: type: Plain text
en: At startup, @command{nginx} has not yet read its configuration file, so it uses a default file to log error messages.  If it fails to load its configuration file, that is where error messages are logged.  After the configuration file is loaded, the default error log file changes as per configuration.  In our case, startup error messages can be found in @file{/var/run/nginx/logs/error.log}, and after configuration in @file{/var/log/nginx/error.log}.  The second location can be changed with the @var{log-directory} configuration option.
fr: Au démarrage, @command{nginx} n'a pas encore lu son fichier de configuration, donc il utilise les fichiers par défaut pour les messages d'erreur.  S'il échoue à charger sa configuration, c'est là où les messages seront enregistrés.  Après la lecture du fichier de configuration, le fichier de journal d'erreur par défaut change en fonction de celle-ci.  Dans notre cas, les messages d'erreur au démarrage se trouvent dans @file{/var/run/nginx/logs/error.log} et après la configuration dans @file{/var/log/nginx/error.log}.  Ce second emplacement peut être modifié avec l'option de configuration @var{log-directory}.

note: type: deffn
en: {Data Type} nginx-configuration
fr: {Type de données} nginx-configuration

note: type: deffn
en: This data type represents the configuration for NGinx.  Some configuration can be done through this and the other provided record types, or alternatively, a config file can be provided.
fr: Ce type de données représente la configuration de NGinx.  Certaines configurations peuvent se faire ici et d'autres fournissent des types d'enregistrement ou éventuellement, on peut fournir un fichier de configuration.

note: type: item
en: @code{nginx} (default: @code{nginx})
fr: @code{nginx} (par défaut : @code{nginx})

note: type: table
en: The nginx package to use.
fr: Le paquet nginx à utiliser.

note: type: table
en: This is a list of symbols naming Shepherd services the nginx service will depend on.
fr: C'est une liste de symboles nommant les services du Shepherd dont les services nginx dépendent.

note: type: table
en: This is useful if you would like @command{nginx} to be started after a back-end web server or a logging service such as Anonip has been started.
fr: C'est utile si vous voulez que @command{nginx} démarre après qu'un serveur web en arrière-plan ou qu'un service de journalisation comme Anonip a été démarré.

note: type: item
en: @code{log-directory} (default: @code{"/var/log/nginx"})
fr: @code{log-directory} (par défaut : @code{"/var/log/nginx"})

note: type: table
en: The directory to which NGinx will write log files.
fr: Le répertoire dans lequel NGinx écrira ses fichiers journaux.

note: type: item
en: @code{run-directory} (default: @code{"/var/run/nginx"})
fr: @code{run-directory} (par défaut : @code{"/var/run/nginx"})

note: type: table
en: The directory in which NGinx will create a pid file, and write temporary files.
fr: Le répertoire dans lequel NGinx créera un fichier de pid et écrira des fichiers temporaires.

note: type: item
en: @code{server-blocks} (default: @code{'()})
fr: @code{server-blocks} (par défaut : @code{'()})

note: type: table
en: A list of @dfn{server blocks} to create in the generated configuration file, the elements should be of type @code{<nginx-server-configuration>}.
fr: Une liste de @dfn{blocs serveur} à créer dans le fichier de configuration généré, dont les éléments sont de type @code{<nginx-server-configuration>}.

note: type: table
en: The following example would setup NGinx to serve @code{www.example.com} from the @code{/srv/http/www.example.com} directory, without using HTTPS.
fr: L'exemple suivant paramètre NGinx pour servir @code{www.example.com} depuis le répertoire @code{/srv/http/www.example.com} sans utiliser HTTPS.

note: type: item
en: @code{upstream-blocks} (default: @code{'()})
fr: @code{upstream-blocks} (par défaut : @code{'()})

note: type: table
en: A list of @dfn{upstream blocks} to create in the generated configuration file, the elements should be of type @code{<nginx-upstream-configuration>}.
fr: Une liste de @dfn{blocs amont} à créer dans le fichier de configuration généré, dont les éléments sont de type @code{<nginx-upstream-configuration>}.

note: type: table
en: Configuring upstreams through the @code{upstream-blocks} can be useful when combined with @code{locations} in the @code{<nginx-server-configuration>} records.  The following example creates a server configuration with one location configuration, that will proxy requests to a upstream configuration, which will handle requests with two servers.
fr: Configurer les serveurs amont à travers les @code{upstream-blocks} peut être utile en combinaison avec @code{locations} dans les enregistrements @code{<nginx-server-configuration>}.  L'exemple suivant crée une configuration de serveur avec une configuration « location » qui sera mandataire pour une configuration amont, qui gérera les requêtes avec deux serveurs.

note: type: table
en: If a configuration @var{file} is provided, this will be used, rather than generating a configuration file from the provided @code{log-directory}, @code{run-directory}, @code{server-blocks} and @code{upstream-blocks}.  For proper operation, these arguments should match what is in @var{file} to ensure that the directories are created when the service is activated.
fr: Si un fichier de configuration @var{file} est fourni, il sera utilisé au lieu de générer un fichier de configuration à partir des @code{log-directory}, @code{run-directory}, @code{server-blocks} et @code{upstream-blocks} fournis.  Pour un bon fonctionnement, ces arguments devraient correspondre à ce qui se trouve dans @var{file} pour s'assurer que les répertoires sont créé lorsque le service est activé.

note: type: table
en: This can be useful if you have an existing configuration file, or it's not possible to do what is required through the other parts of the nginx-configuration record.
fr: Cela peut être utile si vous avez déjà un fichier de configuration existant ou s'il n'est pas possible de faire ce dont vous avez besoin avec les autres parties de l'enregistrement nginx-configuration.

note: type: item
en: @code{server-names-hash-bucket-size} (default: @code{#f})
fr: @code{server-names-hash-bucket-size} (par défaut : @code{#f})

note: type: table
en: Bucket size for the server names hash tables, defaults to @code{#f} to use the size of the processors cache line.
fr: Taille du seau pour les tables de hashage des noms de serveurs, par dauft @code{#f} pour utilise la taille des lignes de cache du processeur.

note: type: item
en: @code{server-names-hash-bucket-max-size} (default: @code{#f})
fr: @code{server-names-hash-bucket-max-size} (par défaut : @code{#f})

note: type: table
en: Maximum bucket size for the server names hash tables.
fr: Taille maximum des seaux pour les tables de hashage des serveurs de noms.

note: type: table
en: List of nginx dynamic modules to load.  This should be a list of file names of loadable modules, as in this example:
fr: Liste de modules dynamiques de nginx à charger.  Cela devrait être une liste de noms de fichiers de modules chargeables, comme dans cet exemple :

note: type: item
en: @code{lua-package-path} (default: @code{'()})
fr: @code{lua-package-path} (par défaut : @code{'()})

note: type: table
en: List of nginx lua packages to load.  This should be a list of package names of loadable lua modules, as in this example:
fr: Liste des paquets lua à charger.  Cela devrait être une liste de noms de paquets de modules lua chargeables, comme dans cet exemple :

note: type: item
en: @code{lua-package-cpath} (default: @code{'()})
fr: @code{lua-package-cpath} (par défaut : @code{'()})

note: type: table
en: List of nginx lua C packages to load.  This should be a list of package names of loadable lua C modules, as in this example:
fr: Liste de paquets lua C à charger.  cela devrait être une liste de noms de paquets de modules lua C, comme dans cet exemple :

note: type: item
en: @code{global-directives} (default: @code{'((events . ()))})
fr: @code{global-directives} (par défaut : @code{'((events . ()))})

note: type: table
en: Association list of global directives for the top level of the nginx configuration.  Values may themselves be association lists.
fr: Liste d'association des directives globales pour le plus haut niveau de la configuration de nginx.  Les valeurs peuvent elles-mêmes être des listes d'association.

note: type: table
en: Extra content for the @code{http} block.  Should be string or a string valued G-expression.
fr: Contenu supplémentaire du bloc @code{http}.  Cela devrait être une chaîne ou un G-expression.

note: type: deftp
en: {Data Type} nginx-server-configuration
fr: {Type de données} nginx-server-configuration

note: type: deftp
en: Data type representing the configuration of an nginx server block.  This type has the following parameters:
fr: Type de données représentant la configuration d'un bloc serveur de nginx.  Ce type a les paramètres suivants :

note: type: item
en: @code{listen} (default: @code{'("80" "443 ssl")})
fr: @code{listen} (par défaut : @code{'("80" "443 ssl")})

note: type: table
en: Each @code{listen} directive sets the address and port for IP, or the path for a UNIX-domain socket on which the server will accept requests.  Both address and port, or only address or only port can be specified.  An address may also be a hostname, for example:
fr: Chaque directive @code{listen} indique l'adresse et le port pour le protocole IP ou le chemin d'un socket UNIX-domain sur lequel le serveur acceptera les connexions.  On peut spécifier l'adresse et le port, ou juste l'adresse ou juste le port.  Une adresse peut aussi être un nom d'hôte, par exemple :

note: type: item
en: @code{server-name} (default: @code{(list 'default)})
fr: @code{server-name} (par défaut : @code{(list 'default)})

note: type: table
en: A list of server names this server represents. @code{'default} represents the default server for connections matching no other server.
fr: Une liste de noms de serveurs que ce serveur représente. @code{'default} représente le serveur par défaut pour les connexions qui ne correspondent à aucun autre serveur.

note: type: item
en: @code{root} (default: @code{"/srv/http"})
fr: @code{root} (par défaut : @code{"/srv/http"})

note: type: table
en: Root of the website nginx will serve.
fr: Racine du site web que sert nginx.

note: type: item
en: @code{locations} (default: @code{'()})
fr: @code{locations} (par défaut : @code{'()})

note: type: table
en: A list of @dfn{nginx-location-configuration} or @dfn{nginx-named-location-configuration} records to use within this server block.
fr: Une liste d'enregistrements @dfn{nginx-location-configuration} ou @dfn{nginx-named-location-configuration} à utiliser dans ce bloc serveur.

note: type: item
en: @code{index} (default: @code{(list "index.html")})
fr: @code{index} (par défaut : @code{(list "index.html")})

note: type: table
en: Index files to look for when clients ask for a directory.  If it cannot be found, Nginx will send the list of files in the directory.
fr: Fichiers d'index à chercher lorsque les clients demandent un répertoire.  S'il ne peut pas être trouvé, Nginx enverra la liste des fichiers dans le répertoire.

note: type: item
en: @code{try-files} (default: @code{'()})
fr: @code{try-files} (par défaut : @code{'()})

note: type: table
en: A list of files whose existence is checked in the specified order.  @code{nginx} will use the first file it finds to process the request.
fr: Une liste de fichiers dont l'existence doit être vérifiée dans l'ordre spécifié.  @code{nginx} utilisera le premier fichier trouvé pour satisfaire la requête.

note: type: item
en: @code{ssl-certificate} (default: @code{#f})
fr: @code{ssl-certificate} (par défaut : @code{#f})

note: type: table
en: Where to find the certificate for secure connections.  Set it to @code{#f} if you don't have a certificate or you don't want to use HTTPS.
fr: Où trouver les certificats pour les connexions sécurisées.  Indiquez @code{#f} si vous n'avez pas de certificats et que vous ne voulez pas utiliser HTTPS.

note: type: item
en: @code{ssl-certificate-key} (default: @code{#f})
fr: @code{ssl-certificate-key} (par défaut : @code{#f})

note: type: table
en: Where to find the private key for secure connections.  Set it to @code{#f} if you don't have a key or you don't want to use HTTPS.
fr: Où trouver la clef privée pour les connexions sécurisées.  Indiquez @code{#f} si vous n'avez pas de clef et que vous ne voulez pas utiliser HTTPS.

note: type: item
en: @code{server-tokens?} (default: @code{#f})
fr: @code{server-tokens?} (par défaut : @code{#f})

note: type: table
en: Whether the server should add its configuration to response.
fr: Indique si le serveur devrait ajouter sa configuration dans les réponses.

note: type: item
en: @code{raw-content} (default: @code{'()})
fr: @code{raw-content} (par défaut : @code{'()})

note: type: table
en: A list of raw lines added to the server block.
fr: Une liste de lignes brutes à ajouter dans le bloc serveur.

note: type: deftp
en: {Data Type} nginx-upstream-configuration
fr: {Type de données} nginx-upstream-configuration

note: type: deftp
en: Data type representing the configuration of an nginx @code{upstream} block.  This type has the following parameters:
fr: Type de données représentant la configuration d'un bloc @code{upstream} nginx.  Ce type a les paramètres suivants :

note: type: table
en: Name for this group of servers.
fr: Nome de ces groupe de serveurs.

note: type: code{#1}
en: servers
fr: serveurs

note: type: table
en: Specify the addresses of the servers in the group.  The address can be specified as a IP address (e.g.@: @samp{127.0.0.1}), domain name (e.g.@: @samp{backend1.example.com}) or a path to a UNIX socket using the prefix @samp{unix:}.  For addresses using an IP address or domain name, the default port is 80, and a different port can be specified explicitly.
fr: Spécifie les adresses des serveurs dans le groupe.  L'adresse peut être spécifié avec une adresse IP (p.@: ex.@: @samp{127.0.0.1}), un nom de domaine (p.@: ex.@: @samp{backend1.example.com}) ou un chemin vers un socket UNIX avec le préfixe @samp{unix:}.  Pour les adresse utilisant une adresse IP ou un nom de domaine, le port par défaut est 80 et un port différent peut être spécifié explicitement.

note: type: table
en: A string or list of strings to add to the upstream block.
fr: Une chaine ou une liste de chaines à ajouter au bloc amont.

note: type: deftp
en: {Data Type} nginx-location-configuration
fr: {Type de données} nginx-location-configuration

note: type: deftp
en: Data type representing the configuration of an nginx @code{location} block.  This type has the following parameters:
fr: Type de données représentant la configuration d'un bloc @code{location} nginx.  Ce type a les paramètres suivants :

note: type: table
en: URI which this location block matches.
fr: URI qui correspond à ce bloc.

note: type: table
en: Body of the location block, specified as a list of strings.  This can contain many configuration directives.  For example, to pass requests to a upstream server group defined using an @code{nginx-upstream-configuration} block, the following directive would be specified in the body @samp{(list "proxy_pass http://upstream-name;")}.
fr: Corps du block location, spécifié comme une liste de chaînes de caractères.  Cela peut contenir de nombreuses directives de configuration.  Par exemple, pour passer des requêtes à un groupe de serveurs amont définis dans un bloc @code{nginx-upstream-configuration}, la directive suivante peut être spécifiée dans le corps : @samp{(list "proxy_pass http://upstream-name;")}.

note: type: deftp
en: {Data Type} nginx-named-location-configuration
fr: {Type de données} nginx-named-location-configuration

note: type: deftp
en: Data type representing the configuration of an nginx named location block.  Named location blocks are used for request redirection, and not used for regular request processing.  This type has the following parameters:
fr: Type de données représentant la configuration d'un bloc location nginx nommé.  Les blocs location nommés sont utilisé les redirections de requêtes et pas pour le traitement des requêtes normales.  Ce type a les paramètres suivants :

note: type: table
en: Name to identify this location block.
fr: Nom pour identifier ce bloc location.

note: type: table
en: @xref{nginx-location-configuration body}, as the body for named location blocks can be used in a similar way to the @code{nginx-location-configuration body}.  One restriction is that the body of a named location block cannot contain location blocks.
fr: @xref{nginx-location-configuration body}, comme le corps d'un bloc location nommé peut être utilisé de la même manière que @code{nginx-location-configuration body}.  Une restriction est que le corps d'un bloc location nommé ne peut pas contenir de bloc location.

note: type: subsubheading
en: Varnish Cache
fr: Cache Varnish

note: type: Plain text
en: Varnish is a fast cache server that sits in between web applications and end users.  It proxies requests from clients and caches the accessed URLs such that multiple requests for the same resource only creates one request to the back-end.
fr: Varnish est un serveur de cache rapide qui se trouve entre les applications web et les utilisateurs.  Il sert de serveur mandataire pour les requêtes des clients et met les URL accédées en cache pour que plusieurs requêtes à la même ressource ne crée qu'une requête au moteur.

note: type: defvr
en: {Scheme Variable} varnish-service-type
fr: {Variable Scheme} varnish-service-type

note: type: defvr
en: Service type for the Varnish daemon.
fr: Type de service pour le démon Varnish.

note: type: deftp
en: {Data Type} varnish-configuration
fr: {Type de données} varnish-configuration

note: type: deftp
en: Data type representing the @code{varnish} service configuration.  This type has the following parameters:
fr: Type de données représentant la configuration du service @code{varnish}.  Ce type a les paramètres suivants :

note: type: item
en: @code{package} (default: @code{varnish})
fr: @code{package} (par défaut : @code{varnish})

note: type: table
en: The Varnish package to use.
fr: Le paquet Varnish à utiliser.

note: type: item
en: @code{name} (default: @code{"default"})
fr: @code{name} (par défaut : @code{"default"})

note: type: table
en: A name for this Varnish instance.  Varnish will create a directory in @file{/var/varnish/} with this name and keep temporary files there.  If the name starts with a forward slash, it is interpreted as an absolute directory name.
fr: Un nom pour cet instance de Varnish.  Varnish va créer un répertoire dans @file{/var/varnish/} avec ce nom et gardera des fichiers temporaires à cet endroit.  Si le nom commence par une barre oblique, il est interprété comme un nom de répertoire absolu.

note: type: table
en: Pass the @code{-n} argument to other Varnish programs to connect to the named instance, e.g.@: @command{varnishncsa -n default}.
fr: Passez l'argument @code{-n} aux autres programmes Varnish pour vous connecter à l'instance nommée, p.@: ex.@: @command{varnishncsa -n default}.

note: type: item
en: @code{backend} (default: @code{"localhost:8080"})
fr: @code{backend} (par défaut : @code{"localhost:8080"})

note: type: table
en: The backend to use.  This option has no effect if @code{vcl} is set.
fr: Le moteur à utiliser.  Cette option n'a pas d'effet si @code{vcl} est vrai.

note: type: item
en: @code{vcl} (default: #f)
fr: @code{vcl} (par défaut : #f)

note: type: table
en: The @dfn{VCL} (Varnish Configuration Language) program to run.  If this is @code{#f}, Varnish will proxy @code{backend} using the default configuration.  Otherwise this must be a file-like object with valid VCL syntax.
fr: Le programme @dfn{VCL} (Varnish Configuration Language) à lancer.  Si la valeur est @code{#f}, Varnsh servira de mandataire pour @code{backend} avec la configuration par défaut.  Sinon, ce doit être un objet simili-fichier avec une syntaxe VCL valide.

note: type: table
en: For example, to mirror @url{https://www.gnu.org,www.gnu.org} with VCL you can do something along these lines:
fr: Par exemple, pour créer un miroir de @url{https://www.gnu.org,www.gnu.org} avec VCL vous pouvez faire quelque chose comme cela :

note: type: table
en: The configuration of an already running Varnish instance can be inspected and changed using the @command{varnishadm} program.
fr: On peut inspecter la configuration d'une instance Varnish actuellement lancée en utilisant le programme @command{varnishadm}.

note: type: table
en: Consult the @url{https://varnish-cache.org/docs/,Varnish User Guide} and @url{https://book.varnish-software.com/4.0/,Varnish Book} for comprehensive documentation on Varnish and its configuration language.
fr: Consultez le @url{https://varnish-cache.org/docs/,guide utilisateur de varnish} et le @url{https://book.varnish-software.com/4.0/,livre varnish} pour une documentation complète sur Varnish et son langage de configuration.

note: type: item
en: @code{listen} (default: @code{'("localhost:80")})
fr: @code{listen} (par défaut : @code{'("localhost:80")})

note: type: table
en: List of addresses Varnish will listen on.
fr: Liste des adresses sur lesquelles écoute Varnish.

note: type: item
en: @code{storage} (default: @code{'("malloc,128m")})
fr: @code{storage} (par défaut : @code{'("malloc,128m")})

note: type: table
en: List of storage backends that will be available in VCL.
fr: Liste de moteurs de stockage qui seront disponibles en VCL.

note: type: item
en: @code{parameters} (default: @code{'()})
fr: @code{parameters} (par défaut : @code{'()})

note: type: table
en: List of run-time parameters in the form @code{'(("parameter" . "value"))}.
fr: Liste des paramètres à l'exécution de la forme @code{'(("parameter" . "value"))}.

note: type: table
en: Additional arguments to pass to the @command{varnishd} process.
fr: Arguments supplémentaires à passer au processus @command{varnishd}.

note: type: Plain text
en: Patchwork is a patch tracking system.  It can collect patches sent to a mailing list, and display them in a web interface.
fr: Patchwork est un système de suivi de correctifs.  Il peut récupérer des correctifs envoyés à une liste de diffusion, et les afficher sur une interface web.

note: type: defvr
en: {Scheme Variable} patchwork-service-type
fr: {Variable Scheme} patchwork-service-type

note: type: defvr
en: Service type for Patchwork.
fr: Type de service pour Patchwork.

note: type: Plain text
en: The following example is an example of a minimal service for Patchwork, for the @code{patchwork.example.com} domain.
fr: L'exemple suivant est un exemple de service Patchwork minimal, pour le domaine @code{patchwork.example.com}.

note: type: Plain text
en: There are three records for configuring the Patchwork service.  The @code{<patchwork-configuration>} relates to the configuration for Patchwork within the HTTPD service.
fr: Il y a trois enregistrements pour configurer le service Patchwork.  Le @code{<patchwork-configuration>} correspond à la configuration de Patchwork dans le service HTTPD.

note: type: Plain text
en: The @code{settings-module} field within the @code{<patchwork-configuration>} record can be populated with the @code{<patchwork-settings-module>} record, which describes a settings module that is generated within the Guix store.
fr: Le champ @code{settings-module} dans l'enregistrement @code{<patchwork-configuration>} peut être rempli avec l'enregistrement @code{<patchwork-settings-modules>}, qui décrit un module de paramètres généré dans le dépôt de Guix.

note: type: Plain text
en: For the @code{database-configuration} field within the @code{<patchwork-settings-module>}, the @code{<patchwork-database-configuration>} must be used.
fr: Pour le champ @code{database-configuration} dans @code{<patchwork-settings-module>}, il faut utiliser un @code{<patchwork-dataase-configuration>}.

note: type: deftp
en: {Data Type} patchwork-configuration
fr: {Type de données} patchwork-configuration

note: type: deftp
en: Data type representing the Patchwork service configuration.  This type has the following parameters:
fr: Type de données représentant la configuration du service Patchwork.  Ce type a les paramètres suivants :

note: type: item
en: @code{patchwork} (default: @code{patchwork})
fr: @code{patchwork} (par défaut : @code{patchwork})

note: type: table
en: The Patchwork package to use.
fr: Le paquet Patchwork à utiliser.

note: type: table
en: The domain to use for Patchwork, this is used in the HTTPD service virtual host.
fr: Le domaine à utiliser pour Patchwork, utilisé comme hôte virtuel dans le service HTTPD.

note: type: table
en: The settings module to use for Patchwork.  As a Django application, Patchwork is configured with a Python module containing the settings.  This can either be an instance of the @code{<patchwork-settings-module>} record, any other record that represents the settings in the store, or a directory outside of the store.
fr: Le module de paramètres à utiliser pour Patchwork.  En tant qu'application Django, Patchwork est configuré avec un module Python contenant les paramètres.  Il peut s'agir d'une instance de l'enregistrement @code{<patchwork-settings-module>}, de n'importe quel enregistrement qui représente les paramètres dans le dépôt, ou un répertoire en dehors du dépôt.

note: type: item
en: @code{static-path}  (default: @code{"/static/"})
fr: @code{static-path}  (par défaut : @code{"/static/"})

note: type: table
en: The path under which the HTTPD service should serve the static files.
fr: Le chemin dans lequel le service HTTPD devrait servir les fichiers statiques.

note: type: table
en: The getmail-retriever-configuration record value to use with Patchwork.  Getmail will be configured with this value, the messages will be delivered to Patchwork.
fr: La valeur d'enregistrement getmail-retriever-configuration à utiliser avec Patchwork.  getmail sera configuré avec cette valeur, les messages seront livrés à Patchwork.

note: type: deftp
en: {Data Type} patchwork-settings-module
fr: {Type de données} patchwork-settings-module

note: type: deftp
en: Data type representing a settings module for Patchwork.  Some of these settings relate directly to Patchwork, but others relate to Django, the web framework used by Patchwork, or the Django Rest Framework library.  This type has the following parameters:
fr: Type de données représentant le module de paramètres de Patchwork.  Certains de ces paramètres sont liés à Patchwork, mais d'autres sont liés à Django, le cadriciel web utilisé par Patchwork, ou la bibliothèque Django Rest Framework.  Ce type a les paramètres suivants :

note: type: item
en: @code{database-configuration} (default: @code{(patchwork-database-configuration)})
fr: @code{database-configuration} (par défaut : @code{(patchwork-database-configuration)})

note: type: table
en: The database connection settings used for Patchwork.  See the @code{<patchwork-database-configuration>} record type for more information.
fr: Les paramètres de connexion à la base de données à utiliser pour Patchwork.  Voir le type d'enregistrement @code{<patchwork-database-configuration>} pour plus d'information.

note: type: item
en: @code{secret-key-file} (default: @code{"/etc/patchwork/django-secret-key"})
fr: @code{secret-key-file} (par défaut : @code{"/etc/patchwork/django-secret-key"})

note: type: table
en: Patchwork, as a Django web application uses a secret key for cryptographically signing values.  This file should contain a unique unpredictable value.
fr: Patchwork, en tant qu'application web Django, utilise une clé secrète pour signer des valeurs avec de la cryptographie.  Ce fichier devrait contenir une valeur unique imprévisible.

note: type: table
en: If this file does not exist, it will be created and populated with a random value by the patchwork-setup shepherd service.
fr: Si ce fichier n'existe pas, il sera créé avec une valeur aléatoire par le service patchwork-setup.

note: type: table
en: This setting relates to Django.
fr: Ce paramètre est lié à Django.

note: type: table
en: A list of valid hosts for this Patchwork service.  This should at least include the domain specified in the @code{<patchwork-configuration>} record.
fr: Une liste des hôtes valides pour ce service Patchwork.  Cela doit au minimum inclure le domaine spécifié dans l'enregistrement @code{<patchwork-configuration>}.

note: type: table
en: This is a Django setting.
fr: C'est un paramètre pour Django.

note: type: table
en: The email address from which Patchwork should send email by default.
fr: L'adresse de courriel sur laquelle Patchwork devrait envoyer les courriels par défaut.

note: type: table
en: This is a Patchwork setting.
fr: C'est un paramètre de Patchwork.

note: type: item
en: @code{static-url} (default: @code{#f})
fr: @code{static-url} (par défaut : @code{#f})

note: type: table
en: The URL to use when serving static assets.  It can be part of a URL, or a full URL, but must end in a @code{/}.
fr: L'URL à utiliser pour servir les ressources statiques.  Cela peut être un bout d'URL ou une URL complète, mais doit finir par @code{/}.

note: type: table
en: If the default value is used, the @code{static-path} value from the @code{<patchwork-configuration>} record will be used.
fr: Si la valeur par défaut est utilisée, la valeur @code{static-path} de @code{<patchwork-configuration>} sera utilisée.

note: type: item
en: @code{admins} (default: @code{'()})
fr: @code{admins} (par défaut : @code{'()})

note: type: table
en: Email addresses to send the details of errors that occur.  Each value should be a list containing two elements, the name and then the email address.
fr: Adresses de courriel auxquelles envoyer le détails des erreurs s'il y en a.  Chaque valeur de la liste contient deux éléments, le nom et l'adresse de courriel.

note: type: table
en: Whether to run Patchwork in debug mode.  If set to @code{#t}, detailed error messages will be shown.
fr: Indique s'il faut lancer Patchwork en mode de débogage.  Si la valeur est @code{#t}, les messages d'erreur détaillés seront affichés.

note: type: item
en: @code{enable-rest-api?} (default: @code{#t})
fr: @code{enable-rest-api?} (par défaut : @code{#t})

note: type: table
en: Whether to enable the Patchwork REST API.
fr: Indique s'il faut activer l'API REST de Patchwork.

note: type: item
en: @code{enable-xmlrpc?} (default: @code{#t})
fr: @code{enable-xmlrpc?} (par défaut : @code{#t})

note: type: table
en: Whether to enable the XML RPC API.
fr: Indique s'il faut active l'API RPC en XML.

note: type: item
en: @code{force-https-links?} (default: @code{#t})
fr: @code{force-https-links?} (par défaut : @code{#t})

note: type: table
en: Whether to use HTTPS links on Patchwork pages.
fr: Indique s'il faut utiliser des liens HTTPS sur les pages de Patchwork.

note: type: table
en: Extra code to place at the end of the Patchwork settings module.
fr: Code supplémentaire à placer à la fin du module de paramètres de Patchwork.

note: type: deftp
en: {Data Type} patchwork-database-configuration
fr: {Type de données} patchwork-database-configuration

note: type: deftp
en: Data type representing the database configuration for Patchwork.
fr: Type de données représentant la configuration de la base de données de Patchwork.

note: type: item
en: @code{engine} (default: @code{"django.db.backends.postgresql_psycopg2"})
fr: @code{engine} (par défaut : @code{"django.db.backends.postgresql_psycopg2"})

note: type: table
en: The database engine to use.
fr: Le moteur de base de données à utiliser.

note: type: item
en: @code{name} (default: @code{"patchwork"})
fr: @code{name} (par défaut : @code{"patchwork"})

note: type: table
en: The name of the database to use.
fr: Le nom de la base de données à utiliser.

note: type: table
en: The user to connect to the database as.
fr: L'utilisateur à utiliser pour se connecter à la base de données.

note: type: item
en: @code{password} (default: @code{""})
fr: @code{password} (par défaut : @code{""})

note: type: table
en: The password to use when connecting to the database.
fr: Le mot de passe à utiliser lors de la connexion à la base de données.

note: type: item
en: @code{host} (default: @code{""})
fr: @code{host} (par défaut : @code{""})

note: type: table
en: The host to make the database connection to.
fr: L'hôte sur lequel se connecter à la base de données.

note: type: item
en: @code{port} (default: @code{""})
fr: @code{port} (par défaut : @code{""})

note: type: table
en: The port on which to connect to the database.
fr: Le port sur lequel se connecter à la base de données.

note: type: cindex
en: Mumi, Debbugs Web interface
fr: Mumi, interface web pour debbugs

note: type: cindex
en: Debbugs, Mumi Web interface
fr: Debbugs, interface web Mumi

note: type: Plain text
en: @uref{https://git.elephly.net/gitweb.cgi?p=software/mumi.git, Mumi} is a Web interface to the Debbugs bug tracker, by default for @uref{https://bugs.gnu.org, the GNU instance}.  Mumi is a Web server, but it also fetches and indexes mail retrieved from Debbugs.
fr: @uref{https://git.elephly.net/gitweb.cgi?p=software/mumi.git, Mumi} est une interface Web pour le logiciel de suivi de bogues Debbugs, par défaut pour @uref{https://bugs.gnu.org, l'instance de GNU}.  Mumi est un serveur Web, mais il récupère et indexe aussi les courriels provenant de Debbugs.

note: type: defvr
en: {Scheme Variable} mumi-service-type
fr: {Variable Scheme} mumi-service-type

note: type: defvr
en: This is the service type for Mumi.
fr: Le type de service pour Mumi.

note: type: deftp
en: {Data Type} mumi-configuration
fr: {Type de données} mumi-configuration

note: type: deftp
en: Data type representing the Mumi service configuration.  This type has the following fields:
fr: Type de données représentant la configuration du service Mumi.  Ce type a les champs suivants :

note: type: item
en: @code{mumi} (default: @code{mumi})
fr: @code{mumi} (par défaut : @code{mumi})

note: type: table
en: The Mumi package to use.
fr: Le paquet Mumi à utiliser.

note: type: item
en: @code{mailer?} (default: @code{#true})
fr: @code{mailer?} (par défaut : @code{#true})

note: type: table
en: Whether to enable or disable the mailer component.
fr: Indique s'il faut activer le composant d'envoie de courriels.

note: type: table
en: The email address used as the sender for comments.
fr: L'adresse de courriel utilisée comme expéditeur pour les commentaires.

note: type: table
en: A URI to configure the SMTP settings for Mailutils.  This could be something like @code{sendmail:///path/to/bin/msmtp} or any other URI supported by Mailutils.  @xref{SMTP Mailboxes, SMTP Mailboxes,, mailutils, GNU@tie{}Mailutils}.
fr: Une URI pour configurer les paramètres SMTP pour Mailutils.  Cela peut être quelque chose comme @code{sendmail:///path/to/bin/msmtp} ou toute autre URI prise en charge par Mailutils.  @xref{SMTP Mailboxes, SMTP Mailboxes,, mailutils, GNU@tie{}Mailutils}.

note: type: Plain text
en: FastCGI is an interface between the front-end and the back-end of a web service.  It is a somewhat legacy facility; new web services should generally just talk HTTP between the front-end and the back-end.  However there are a number of back-end services such as PHP or the optimized HTTP Git repository access that use FastCGI, so we have support for it in Guix.
fr: FastCGI est une interface entre le frontal et le moteur d'un service web.  C'est un dispositif quelque peu désuet ; les nouveaux services devraient généralement juste parler HTTP entre le frontal et le moteur.  Cependant il y a un certain nombre de services de moteurs comme PHP ou l'accès aux dépôts Git optimisé en HTTP qui utilisent FastCGI, donc nous le supportons dans Guix.

note: type: Plain text
en: To use FastCGI, you configure the front-end web server (e.g., nginx) to dispatch some subset of its requests to the fastcgi backend, which listens on a local TCP or UNIX socket.  There is an intermediary @code{fcgiwrap} program that sits between the actual backend process and the web server.  The front-end indicates which backend program to run, passing that information to the @code{fcgiwrap} process.
fr: Pour utiliser FastCGI, vous configurez le serveur web frontal (p.@: ex.@: nginx) pour envoyer un sous-ensemble de ses requêtes au moteur fastcgi, qui écoute sur un socket UNIX ou TCP local.  Il y a un programme @code{fcgiwrap} intermédiaire qui se trouve entre le processus du moteur et le serveur web.  Le frontal indique quel moteur lancer, en passant cette information au processus @code{fcgiwrap}.

note: type: defvr
en: {Scheme Variable} fcgiwrap-service-type
fr: {Variable Scheme} fcgiwrap-service-type

note: type: defvr
en: A service type for the @code{fcgiwrap} FastCGI proxy.
fr: Un type de service pour le mandataire FastCGI @code{fcgiwrap}.

note: type: deftp
en: {Data Type} fcgiwrap-configuration
fr: {Type de données} fcgiwrap-configuration

note: type: deftp
en: Data type representing the configuration of the @code{fcgiwrap} service.  This type has the following parameters:
fr: Type de données représentant la configuration du service @code{fcgiwrap}.  Ce type a les paramètres suivants :

note: type: item
en: @code{package} (default: @code{fcgiwrap})
fr: @code{package} (par défaut : @code{fcgiwrap})

note: type: table
en: The fcgiwrap package to use.
fr: Le paquet fcgiwrap à utiliser.

note: type: item
en: @code{socket} (default: @code{tcp:127.0.0.1:9000})
fr: @code{socket} (par défaut : @code{tcp:127.0.0.1:9000})

note: type: table
en: The socket on which the @code{fcgiwrap} process should listen, as a string.  Valid @var{socket} values include @code{unix:@var{/path/to/unix/socket}}, @code{tcp:@var{dot.ted.qu.ad}:@var{port}} and @code{tcp6:[@var{ipv6_addr}]:port}.
fr: Le socket sur lequel le processus @code{fcgiwrap} écoute, en tant que chaîne de caractères.  Les valeurs valides de @var{socket} sont @code{unix:@var{/path/to/unix/socket}}, @code{tcp:@var{dot.ted.qu.ad}:@var{port}} et @code{tcp6:[@var{ipv6_addr}]:port}.

note: type: item
en: @code{user} (default: @code{fcgiwrap})
fr: @code{user} (par défaut : @code{fcgiwrap})

note: type: itemx
en: @code{group} (default: @code{fcgiwrap})
fr: @code{group} (par défaut : @code{fcgiwrap})

note: type: table
en: The user and group names, as strings, under which to run the @code{fcgiwrap} process.  The @code{fastcgi} service will ensure that if the user asks for the specific user or group names @code{fcgiwrap} that the corresponding user and/or group is present on the system.
fr: Les noms de l'utilisateur et du groupe, en tant que chaînes de caractères, sous lesquels lancer le processus @code{fcgiwrap}.  Le service @code{fastcgi} s'assurera que si l'utilisateur demande les noms d'utilisateurs et de groupes @code{fcgiwrap} l'utilisateur et le groupe correspondant seront présents sur le système.

note: type: table
en: It is possible to configure a FastCGI-backed web service to pass HTTP authentication information from the front-end to the back-end, and to allow @code{fcgiwrap} to run the back-end process as a corresponding local user.  To enable this capability on the back-end, run @code{fcgiwrap} as the @code{root} user and group.  Note that this capability also has to be configured on the front-end as well.
fr: Il est possible de configurer un service web soutenu par FastCGI pour passer les informations d'authentification HTTP depuis le frontal jusqu'au moteur, et de permettre à @code{fcgiwrap} dans lancer le processus de moteur avec l'utilisateur local correspondant.  Pour activer cette fonctionnalité sur le moteur, lancez @code{fcgiwrap} en tant qu'utilisateur et groupe @code{root}.  Remarquez que cette fonctionnalité doit aussi être configurée sur le frontal.

note: type: Plain text
en: PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size.
fr: PHP-FPM (FastCGI Process Manager) est une implémentation FastCGI de PHP alternative avec quelques fonctionnalités supplémentaires utiles pour les sites de toutes tailles.

note: type: Plain text
en: These features include:
fr: Ces fonctionnalités comprennent :

note: type: item
en: Adaptive process spawning
fr: La création de processus adaptative

note: type: item
en: Basic statistics (similar to Apache's mod_status)
fr: Des statistiques de base (comme le mod_status d'Apache)

note: type: item
en: Advanced process management with graceful stop/start
fr: La gestion des processus avancée avec arrêt et démarrage sans heurts

note: type: item
en: Ability to start workers with different uid/gid/chroot/environment
fr: La possibilité de démarrer des processus de travail avec différents uid/gid/chroot/environnement

note: type: itemize
en: and different php.ini (replaces safe_mode)
fr: et différents php.ini (à la place de safe_mode)

note: type: item
en: Stdout & stderr logging
fr: L'enregistrement des journaux sur stdout et stderr

note: type: item
en: Emergency restart in case of accidental opcode cache destruction
fr: Le redémarrage d'urgence dans le cas de la destruction accidentelle du cache des opcodes

note: type: item
en: Accelerated upload support
fr: Le support des téléversements accélérés

note: type: item
en: Support for a "slowlog"
fr: Le support de « showlog »

note: type: item
en: Enhancements to FastCGI, such as fastcgi_finish_request() -
fr: Des améliorations à FastCGI, comme fastcgi_finish_request() -

note: type: itemize
en: a special function to finish request & flush all data while continuing to do something time-consuming (video converting, stats processing, etc.)
fr: une fonction spéciale pour terminer la requête et nettoyer toutes les données tout en continuant à faire d'autres choses qui prennent du temps (conversion vidéo, gestion des stats, etc.).

note: type: Plain text
en: ...@: and much more.
fr: …@: et bien plus.

note: type: defvr
en: {Scheme Variable} php-fpm-service-type
fr: {Variable Scheme} php-fpm-service-type

note: type: defvr
en: A Service type for @code{php-fpm}.
fr: Un type de service pour @code{php-fpm}.

note: type: deftp
en: {Data Type} php-fpm-configuration
fr: {Type de données} php-fpm-configuration

note: type: deftp
en: Data Type for php-fpm service configuration.
fr: Type de données pour la configuration du service php-fpm.

note: type: item
en: @code{php} (default: @code{php})
fr: @code{php} (par défaut : @code{php})

note: type: table
en: The php package to use.
fr: Le paquet php à utiliser.

note: type: item
en: @code{socket} (default: @code{(string-append "/var/run/php" (version-major (package-version php)) "-fpm.sock")})
fr: @code{socket} (par défaut : @code{(string-append "/var/run/php" (version-major (package-version php)) "-fpm.sock")})

note: type: table
en: The address on which to accept FastCGI requests.  Valid syntaxes are:
fr: L'adresse sur laquelle accepter les requêtes FastCGI.  Les syntaxes valides sont :

note: type: table
en: Listen on a TCP socket to a specific address on a specific port.
fr: Écoute sur un socket TCP sur l'adresse spécifiée sur un port spécifié.

note: type: table
en: Listen on a TCP socket to all addresses on a specific port.
fr: Écoute sur un socket TCP sur toutes les adresse sur un port spécifique.

note: type: table
en: Listen on a unix socket.
fr: Écoute sur un socket unix.

note: type: item
en: @code{user} (default: @code{php-fpm})
fr: @code{user} (par défaut : @code{php-fpm})

note: type: table
en: User who will own the php worker processes.
fr: Utilisateur à qui appartiendra le processus de travail de php.

note: type: item
en: @code{group} (default: @code{php-fpm})
fr: @code{group} (par défaut : @code{php-fpm})

note: type: table
en: Group of the worker processes.
fr: Groupe du processus de travail.

note: type: item
en: @code{socket-user} (default: @code{php-fpm})
fr: @code{socket-user} (par défaut : @code{php-fpm})

note: type: table
en: User who can speak to the php-fpm socket.
fr: Utilisateur qui peut parler au socket php-fpm.

note: type: item
en: @code{socket-group} (default: @code{nginx})
fr: @code{socket-group} (par défaut : @code{nginx})

note: type: table
en: Group that can speak to the php-fpm socket.
fr: Groupe qui peut parler au socket php-fpm.

note: type: item
en: @code{pid-file} (default: @code{(string-append "/var/run/php" (version-major (package-version php)) "-fpm.pid")})
fr: @code{pid-file} (par défaut : @code{(string-append "/var/run/php" (version-major (package-version php)) "-fpm.pid")})

note: type: table
en: The process id of the php-fpm process is written to this file once the service has started.
fr: Le pid de php-fpm est écrit dans ce fichier une fois que le service a démarré.

note: type: item
en: @code{log-file} (default: @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.log")})
fr: @code{log-file} (par défaut : @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.log")})

note: type: table
en: Log for the php-fpm master process.
fr: Fichier de journal pour le processus maître de php-fpm.

note: type: item
en: @code{process-manager} (default: @code{(php-fpm-dynamic-process-manager-configuration)})
fr: @code{process-manager} (par défaut : @code{(php-fpm-dynamic-process-manager-configuration)})

note: type: table
en: Detailed settings for the php-fpm process manager.  Must be one of:
fr: Configuration détaillée pour le gestionnaire de processus de php-fpm.  Il doit s'agir soit de :

note: type: code{#1}
en: <php-fpm-static-process-manager-configuration>
fr: <php-fpm-static-process-manager-configuration> ou

note: type: item
en: @code{display-errors} (default @code{#f})
fr: @code{display-errors} (par défaut : @code{#f})

note: type: table
en: Determines whether php errors and warning should be sent to clients and displayed in their browsers.  This is useful for local php development, but a security risk for public sites, as error messages can reveal passwords and personal data.
fr: Détermine si les erreurs et les avertissements php doivent être envoyés aux clients et affichés dans leur navigateur.  Cela est utile pour un développement php local, mais un risque pour la sécurité pour les sites publics, comme les messages d'erreur peuvent révéler des mots de passes et des données personnelles.

note: type: item
en: @code{timezone} (default @code{#f})
fr: @code{timezone} (par défaut : @code{#f})

note: type: table
en: Specifies @code{php_admin_value[date.timezone]} parameter.
fr: Spécifie le paramètre @code{php_admin_value[date.timezone]}.

note: type: item
en: @code{workers-logfile} (default @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")})
fr: @code{workers-logfile} (par défaut : @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")})

note: type: table
en: This file will log the @code{stderr} outputs of php worker processes.  Can be set to @code{#f} to disable logging.
fr: Ce fichier enregistrera la sortie @code{stderr} des processus de travail de php.  On peut indiquer @code{#f} pour désactiver la journalisation.

note: type: item
en: @code{file} (default @code{#f})
fr: @code{file} (par défaut : @code{#f})

note: type: table
en: An optional override of the whole configuration.  You can use the @code{mixed-text-file} function or an absolute filepath for it.
fr: Une version alternative de la configuration complète.  Vous pouvez utiliser la fonction @code{mixed-text-file} ou un chemin de fichier absolu.

note: type: item
en: @code{php-ini-file} (default @code{#f})
fr: @code{php-ini-file} (par défaut : @code{#f})

note: type: table
en: An optional override of the default php settings.  It may be any ``file-like'' object (@pxref{G-Expressions, file-like objects}).  You can use the @code{mixed-text-file} function or an absolute filepath for it.
fr: Une version alternative de la configuration de php par défaut.  Il peut s'agir de n'importe quel objet « simili-fichier » (@pxref{G-Expressions, file-like objects}).  Vous pouvez utiliser la fonction @code{mixed-text-file} ou un chemin de fichier absolu.

note: type: table
en: For local development it is useful to set a higher timeout and memory limit for spawned php processes.  This be accomplished with the following operating system configuration snippet:
fr: Pour le développement local il est utile d'indiquer un long délai d'attente et une limite mémoire plus importante pour les processus php créés.  Cela se fait avec les bouts de configuration systèmes suivants :

note: type: table
en: Consult the @url{https://www.php.net/manual/en/ini.core.php,core php.ini directives} for comprehensive documentation on the acceptable @file{php.ini} directives.
fr: Consultez les @url{https://www.php.net/manual/en/ini.core.php,principales directives de php.ini} pour une documentation complète sur les directives @file{php.ini} possibles.

note: type: deftp
en: {Data type} php-fpm-dynamic-process-manager-configuration
fr: {Type de données} php-fpm-dynamic-process-manager-configuration

note: type: deftp
en: Data Type for the @code{dynamic} php-fpm process manager.  With the @code{dynamic} process manager, spare worker processes are kept around based on its configured limits.
fr: Type de données pour le gestionnaire de processus @code{dynamic} de php-fpm.  Avec le gestionnaire de processus @code{dynamic}, des processus de travail de secours sont gardés en fonction des limites configurées.

note: type: item
en: @code{max-children} (default: @code{5})
fr: @code{max-children} (par défaut : @code{5})

note: type: table
en: Maximum of worker processes.
fr: Nombre maximum de processus de travail.

note: type: item
en: @code{start-servers} (default: @code{2})
fr: @code{start-servers} (par défaut : @code{2})

note: type: table
en: How many worker processes should be started on start-up.
fr: Nombre de processus de travail au démarrage.

note: type: item
en: @code{min-spare-servers} (default: @code{1})
fr: @code{min-spare-servers} (par défaut : @code{1})

note: type: table
en: How many spare worker processes should be kept around at minimum.
fr: Nombre de processus de travail de secours minimum qui doivent rester à disposition.

note: type: item
en: @code{max-spare-servers} (default: @code{3})
fr: @code{max-spare-servers} (par défaut : @code{3})

note: type: table
en: How many spare worker processes should be kept around at maximum.
fr: Nombre maximum de processus de travail de secours qui peuvent rester à disposition.

note: type: deftp
en: {Data type} php-fpm-static-process-manager-configuration
fr: {Type de données} php-fpm-static-process-manager-configuration

note: type: deftp
en: Data Type for the @code{static} php-fpm process manager.  With the @code{static} process manager, an unchanging number of worker processes are created.
fr: Type de données pour le gestionnaire de processus @code{static} de php-fpm.  Avec le gestionnaire de processus @code{static}, un nombre constant de processus de travail est créé.

note: type: deftp
en: {Data type} php-fpm-on-demand-process-manager-configuration
fr: {Type de données} php-fpm-on-demand-process-manager-configuration

note: type: deftp
en: Data Type for the @code{on-demand} php-fpm process manager.  With the @code{on-demand} process manager, worker processes are only created as requests arrive.
fr: Type de données pour le gestionnaire de processus @code{on-demand} de php-fpm.  Avec le gestionnaire de processus @code{on-demand}, les processus de travail ne sont créés que lorsque les requêtes arrivent.

note: type: item
en: @code{process-idle-timeout} (default: @code{10})
fr: @code{process-idle-timeout} (par défaut : @code{10})

note: type: table
en: The time in seconds after which a process with no requests is killed.
fr: La durée en secondes après laquelle un processus sans requête sera tué.

note: type: deffn
en: {Scheme Procedure} nginx-php-location @
fr: {Procédure Scheme} nginx-php-location @

note: type: deffn
en: [#:nginx-package nginx] @ [socket (string-append "/var/run/php" @ (version-major (package-version php)) @ "-fpm.sock")] A helper function to quickly add php to an @code{nginx-server-configuration}.
fr: [#:nginx-package nginx] @
    [socket (string-append "/var/run/php" @
    (version-major (package-version php)) @
    "-fpm.sock")]
    Une fonction d'aide pour ajouter rapidement php à un @code{nginx-server-configuration}.

note: type: Plain text
en: A simple services setup for nginx with php can look like this:
fr: Une configuration simple de services pour php ressemble à ceci :

note: type: Plain text
en: The cat avatar generator is a simple service to demonstrate the use of php-fpm in @code{Nginx}.  It is used to generate cat avatar from a seed, for instance the hash of a user's email address.
fr: Le générateur d'avatar de chat est un simple service pour démontrer l'utilisation de php-fpm dans @code{Nginx}.  Il permet de générer des avatars de chats à partir d'une graine, par exemple le hash de l'adresse de courriel d'un utilisateur.

note: type: deffn
en: {Scheme Procedure} cat-avatar-generator-service @
fr: {Procédure Scheme} cat-avatar-generator-service @

note: type: deffn
en: [#:cache-dir "/var/cache/cat-avatar-generator"] @ [#:package cat-avatar-generator] @ [#:configuration (nginx-server-configuration)] Returns an nginx-server-configuration that inherits @code{configuration}.  It extends the nginx configuration to add a server block that serves @code{package}, a version of cat-avatar-generator.  During execution, cat-avatar-generator will be able to use @code{cache-dir} as its cache directory.
fr: [#:cache-dir "/var/cache/cat-avatar-generator"] @
    [#:package cat-avatar-generator] @
    [#:configuration (nginx-server-configuration)]
    Renvoie un nginx-server-configuration qui hérite de @code{configuration}.  Il étend la configuration nginx pour ajouter un bloc de serveur qui sert @code{package}, une version de cat-avatar-generator.  Pendant l'exécution, cat-avatar-generator pourra utiliser @code{cache-dir} comme répertoire de cache.

note: type: Plain text
en: A simple setup for cat-avatar-generator can look like this:
fr: Une configuration simple de cat-avatar-generator ressemble à ceci :

note: type: Plain text
en: The @uref{https://github.com/UMCUGenetics/hpcguix-web/, hpcguix-web} program is a customizable web interface to browse Guix packages, initially designed for users of high-performance computing (HPC)  clusters.
fr: Le programme @uref{https://github.com/UMCUGenetics/hpcguix-web/, hpcguix-web} est une interface web personnalisable pour naviguer dans les paquets Guix, initialement conçue pour les utilisateurs des grappes de calcul de haute performance (HPC).

note: type: defvr
en: {Scheme Variable} hpcguix-web-service-type
fr: {Variable Scheme} hpcguix-web-service-type

note: type: defvr
en: The service type for @code{hpcguix-web}.
fr: Le type de service pour @code{hpcguix-web}.

note: type: deftp
en: {Data Type} hpcguix-web-configuration
fr: {Type de données} hpcguix-web-configuration

note: type: deftp
en: Data type for the hpcguix-web service configuration.
fr: Type de données pour la configuration du service hpcguix-web.

note: type: table
en: A gexp (@pxref{G-Expressions}) specifying the hpcguix-web service configuration.  The main items available in this spec are:
fr: Une gexp (@pxref{G-Expressions}) spécifiant la configuration du service hpcguix-web.  Les éléments principaux disponibles dans cette spec sont :

note: type: item
en: @code{title-prefix} (default: @code{"hpcguix | "})
fr: @code{title-prefix} (par défaut : @code{"hpcguix | "})

note: type: table
en: The page title prefix.
fr: Le préfixe du titre des pages.

note: type: item
en: @code{guix-command} (default: @code{"guix"})
fr: @code{guix-command} (par défaut : @code{"guix"})

note: type: table
en: The @command{guix} command.
fr: La commande @command{guix}.

note: type: item
en: @code{package-filter-proc} (default: @code{(const #t)})
fr: @code{package-filter-proc} (par défaut : @code{(const #t)})

note: type: table
en: A procedure specifying how to filter packages that are displayed.
fr: Une procédure qui spécifie comment filtrer les paquets qui seront affichés.

note: type: item
en: @code{package-page-extension-proc} (default: @code{(const '())})
fr: @code{package-page-extension-proc} (par défaut : @code{(const '())})

note: type: table
en: Extension package for @code{hpcguix-web}.
fr: Paquet d'extensions pour @code{hpcguix-web}.

note: type: item
en: @code{menu} (default: @code{'()})
fr: @code{menu} (par défaut : @code{'()})

note: type: table
en: Additional entry in page @code{menu}.
fr: Entrée supplémentaire dans la page @code{menu}.

note: type: item
en: @code{channels} (default: @code{%default-channels})
fr: @code{channels} (par défaut : @code{%default-channels})

note: type: table
en: List of channels from which the package list is built (@pxref{Channels}).
fr: Liste des canaux depuis lesquels la liste des paquets est construite (@pxref{Channels}).

note: type: item
en: @code{package-list-expiration} (default: @code{(* 12 3600)})
fr: @code{package-list-expiration} (par défaut : @code{(* 12 3600)})

note: type: table
en: The expiration time, in seconds, after which the package list is rebuilt from the latest instances of the given channels.
fr: Le temps d'expiration, en secondes, après lequel la liste des paquets est reconstruite depuis les dernières instance des canaux donnés.

note: type: table
en: See the hpcguix-web repository for a @uref{https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm, complete example}.
fr: Voir le dépôt hpcguix-web pour un @uref{https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm, exemple complet}.

note: type: item
en: @code{package} (default: @code{hpcguix-web})
fr: @code{package} (par défaut : @code{hpcguix-web})

note: type: table
en: The hpcguix-web package to use.
fr: Le paquet hpcguix-web à utiliser.

note: type: item
en: @code{address} (default: @code{"127.0.0.1"})
fr: @code{address} (par défaut : @code{"127.0.0.1"})

note: type: table
en: The IP address to listen to.
fr: L'adresse IP sur laquelle écouter.

note: type: item
en: @code{port} (default: @code{5000})
fr: @code{port} (par défaut : @code{5000})

note: type: table
en: The port number to listen to.
fr: Le numéro de port sur lequel écouter.

note: type: Plain text
en: A typical hpcguix-web service declaration looks like this:
fr: Une déclaration de service hpcguix-web typique ressemble à cela :

note: type: quotation
en: The hpcguix-web service periodically updates the package list it publishes by pulling channels from Git.  To that end, it needs to access X.509 certificates so that it can authenticate Git servers when communicating over HTTPS, and it assumes that @file{/etc/ssl/certs} contains those certificates.
fr: Le service hpcguix-web met régulièrement à jour la liste des paquets qu'il publie en récupérant les canaux depuis Git.  Pour cela, il doit accéder aux certificats X.509 pour qu'il puisse authentifier les serveurs Git quand il communique en HTTPS, et il suppose que @file{/etc/ssl/certs} contient ces certificats.

note: type: quotation
en: Thus, make sure to add @code{nss-certs} or another certificate package to the @code{packages} field of your configuration.  @ref{X.509 Certificates}, for more information on X.509 certificates.
fr: Ainsi, assurez-vous d'ajouter @code{nss-certs} ou un autre paquet de certificats dans le champ @code{packages} de votre configuration.  @ref{X.509 Certificates} pour plus d'informations sur les certificats X.509.

note: type: Plain text
en: The @uref{https://git.sr.ht/~sircmpwn/gmnisrv, gmnisrv} program is a simple @uref{https://gemini.circumlunar.space/, Gemini} protocol server.
fr: Le programme @uref{https://git.sr.ht/~sircmpwn/gmnisrv, gmnisrv} est un serveur simple pour le protocole @uref{https://gemini.circumlunar.space/, Gemini}.

note: type: deffn
en: {Scheme Variable} gmnisrv-service-type
fr: {Variable Scheme} gmnisrv-service-type

note: type: deffn
en: This is the type of the gmnisrv service, whose value should be a @code{gmnisrv-configuration} object, as in this example:
fr: C'est le type du service gmnisrv, dont la valeur devrait être un objet @code{gmnisrv-configuration} comme dans cet exemple :

note: type: deftp
en: {Data Type} gmnisrv-configuration
fr: {Type de données} gmnisrv-configuration

note: type: deftp
en: Data type representing the configuration of gmnisrv.
fr: Type données qui représente la configuration de gmnisrv.

note: type: item
en: @code{package} (default: @var{gmnisrv})
fr: @code{package} (par défaut : @var{gmnisrv})

note: type: table
en: Package object of the gmnisrv server.
fr: Objet de paquet du serveur gmnisrv.

note: type: item
en: @code{config-file} (default: @code{%default-gmnisrv-config-file})
fr: @code{config-file} (par défaut : @code{%default-gmnisrv-config-file})

note: type: table
en: File-like object of the gmnisrv configuration file to use.  The default configuration listens on port 1965 and serves files from @file{/srv/gemini}.  Certificates are stored in @file{/var/lib/gemini/certs}.  For more information, run @command{man gmnisrv} and @command{man gmnisrv.ini}.
fr: Objet simili-fichier du fichier de configuration de gmnisrv à utiliser.  La configuration par défaut écoute sur le port 1965 et sert les fichiers de @file{/srv/gemini}.  Les certificats sont stockés dans @file{/var/lib/gemini/certs}.  Pour plus d'informations, lancez @command{man gmnisrv} et @command{man gmnisrv.ini}.

note: type: Plain text
en: The @uref{gemini://qwertqwefsday.eu/agate.gmi, Agate} (@uref{https://github.com/mbrubeck/agate, GitHub page over HTTPS})  program is a simple @uref{https://gemini.circumlunar.space/, Gemini} protocol server written in Rust.
fr: Le programme @uref{gemini://qwertqwefsday.eu/agate.gmi, Agate} (@uref{https://github.com/mbrubeck/agate, page GitHub sur HTTPS}) est un serveur simple pour le protocole @uref{https://gemini.circumlunar.space/, Gemini} écrit en Rust.

note: type: deffn
en: {Scheme Variable} agate-service-type
fr: {Variable Scheme} agate-service-type

note: type: deffn
en: This is the type of the agate service, whose value should be an @code{agate-service-type} object, as in this example:
fr: C'est le type du service agate, dont la valeur devrait être un objet @code{agate-service-type} comme dans cet exemple :

note: type: deffn
en: The example above represents the minimal tweaking necessary to get Agate up and running.  Specifying the path to the certificate and key is always necessary, as the Gemini protocol requires TLS by default.
fr: L'exemple ci-dessus représente les changements minimaux nécessaires pour qu'Agate soit lancé. Spécifier le chemin du certificat et de la clé est toujours nécessaire, car le protocole Gemini nécessite TLS par défaut.

note: type: deffn
en: To obtain a certificate and a key, you could, for example, use OpenSSL, running a command similar to the following example:
fr: Pour obtenir un certificat et une clé, vous pouvez par exemple utiliser OpenSSL, en lançant une commande telle que l'exemple suivant :

note: type: deffn
en: Of course, you'll have to replace @i{example.com} with your own domain name, and then point the Agate configuration towards the path of the generated key and certificate.
fr: Bien sûr, vous devez remplacer @i{example.com} par votre propre nom de domaine, puis pointer la configuration d'Agate vers le chemin de la clé et du certificats générés.

note: type: deftp
en: {Data Type} agate-configuration
fr: {Type de données} agate-configuration

note: type: deftp
en: Data type representing the configuration of Agate.
fr: Type de données représentant la configuration d'Agate.

note: type: item
en: @code{package} (default: @code{agate})
fr: @code{package} (par défaut : @code{agate})

note: type: table
en: The package object of the Agate server.
fr: Objet de paquet du serveur Agate.

note: type: item
en: @code{content} (default: @file{"/srv/gemini"})
fr: @code{content} (par défaut : @file{"/srv/gemini"})

note: type: table
en: The directory from which Agate will serve files.
fr: Le répertoire à partir duquel Agate servira ses fichiers.

note: type: item
en: @code{cert} (default: @code{#f})
fr: @code{cert} (par défaut : @code{#f})

note: type: table
en: The path to the TLS certificate PEM file to be used for encrypted connections.  Must be filled in with a value from the user.
fr: Le chemin vers le certificat TLS en PEM à utiliser pour chiffrer les connexions. Il doit être rempli avec une valeur venant de l'utilisateur.

note: type: item
en: @code{key} (default: @code{#f})
fr: @code{key} (par défaut : @code{#f})

note: type: table
en: The path to the PKCS8 private key file to be used for encrypted connections.  Must be filled in with a value from the user.
fr: Le chemin de fichier vers la clef privée PKCS8 à utilise pour les connexions chiffrées. Elle doit être remplie avec une valeur de l'utilisateur.

note: type: item
en: @code{addr} (default: @code{'("0.0.0.0:1965" "[::]:1965")})
fr: @code{addr} (par défaut : @code{'("0.0.0.0:1965" "[::]:1965")})

note: type: table
en: A list of the addresses to listen on.
fr: Une liste des adresses sur lesquelles écouter.

note: type: table
en: The domain name of this Gemini server.  Optional.
fr: Le nom de domaine de ce serveur Gemini. Facultatif.

note: type: item
en: @code{lang} (default: @code{#f})
fr: @code{lang} (par défaut : @code{#f})

note: type: table
en: RFC 4646 language code(s) for text/gemini documents.  Optional.
fr: Codes de langues RFC 4646 pour les documents text/gemini. Facultatif.

note: type: item
en: @code{silent?} (default: @code{#f})
fr: @code{silent?} (par défaut : @code{#f})

note: type: table
en: Set to @code{#t} to disable logging output.
fr: Indiquez @code{#t} pour désactiver la journalisation de la sortie.

note: type: item
en: @code{serve-secret?} (default: @code{#f})
fr: @code{serve-secret?} (par défaut : @code{#f})

note: type: table
en: Set to @code{#t} to serve secret files (files/directories starting with a dot).
fr: Indiquez @code{#t} pour servir des fichiers secrets (des fichiers et répertoires commençant par un point).

note: type: item
en: @code{log-ip?} (default: @code{#t})
fr: @code{log-ip?} (par défaut : @code{#t})

note: type: table
en: Whether or not to output IP addresses when logging.
fr: Indique si l'adresse IP de sortie doit être journalisée.

note: type: item
en: @code{user} (default: @code{"agate"})
fr: @code{user} (par défaut : @code{"agate"})

note: type: table
en: Owner of the @code{agate} process.
fr: Propriétaire du processus @code{agate}.

note: type: item
en: @code{group} (default: @code{"agate"})
fr: @code{group} (par défaut : @code{"agate"})

note: type: table
en: Owner's group of the @code{agate} process.
fr: Groupe du propriétaire du processus @code{agate}.

note: type: item
en: @code{log-file} (default: @file{"/var/log/agate.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/agate.log"})

note: type: table
en: The file which should store the logging output of Agate.
fr: Le fichier qui devrait contenir la sortie de journal d'Agate.

note: type: cindex
en: TLS certificates
fr: Certificats TLS

note: type: Plain text
en: The @code{(gnu services certbot)} module provides a service to automatically obtain a valid TLS certificate from the Let's Encrypt certificate authority.  These certificates can then be used to serve content securely over HTTPS or other TLS-based protocols, with the knowledge that the client will be able to verify the server's authenticity.
fr: Le module @code{(gnu services certbot)} fournit un service qui récupère automatiquement un certificat TLS valide de l'autorité de certification Let's Encrypt.  Ces certificats peuvent ensuite être utilisés pour servir du contenu de manière sécurisée sur HTTPS et d'autres protocoles basés sur TLS, en sachant que le client sera capable de vérifier l'authenticité du serveur.

note: type: Plain text
en: @url{https://letsencrypt.org/, Let's Encrypt} provides the @code{certbot} tool to automate the certification process.  This tool first securely generates a key on the server.  It then makes a request to the Let's Encrypt certificate authority (CA) to sign the key.  The CA checks that the request originates from the host in question by using a challenge-response protocol, requiring the server to provide its response over HTTP@.  If that protocol completes successfully, the CA signs the key, resulting in a certificate.  That certificate is valid for a limited period of time, and therefore to continue to provide TLS services, the server needs to periodically ask the CA to renew its signature.
fr: @url{https://letsencrypt.org/, Let's Encrypt} fournit l'outil @code{certbot} pour automatiser le processus de certification.  Cet outil génère d'abord un clef sur le serveur de manière sécurisée.  Ensuite il demande à l'autorité de certification Let's Encrypt de signer la clef.  La CA vérifie que la requête provient de l'hôte en question en utilisant un protocole de défi-réponse, ce qui requiert que le serveur fournisse sa réponse par HTTP@.  Si ce protocole se passe sans encombre, la CA signe la clef et on obtient un certificat.  Ce certificat est valide pour une durée limitée et donc, pour continuer à fournir des services en TLS, le serveur doit régulièrement demander à la CA de renouveler sa signature.

note: type: Plain text
en: The certbot service automates this process: the initial key generation, the initial certification request to the Let's Encrypt service, the web server challenge/response integration, writing the certificate to disk, the automated periodic renewals, and the deployment tasks associated with the renewal (e.g.@: reloading services, copying keys with different permissions).
fr: Le service certbot automatise ce processus : la génération initiale de la clef, la demande de certification initiale au service Let's Encrypt, l'intégration du protocole de défi/réponse dans le serveur web, l'écriture du certificat sur le disque, les renouvellements périodiques et les tâches de déploiement avec le renouvellement (p.@: ex.@: recharger les services, copier les clefs avec d'autres permissions).

note: type: Plain text
en: Certbot is run twice a day, at a random minute within the hour.  It won't do anything until your certificates are due for renewal or revoked, but running it regularly would give your service a chance of staying online in case a Let's Encrypt-initiated revocation happened for some reason.
fr: Certbot est lancé deux fois par jour, à une minute aléatoire dans l'heure.  Il ne fera rien sauf si vos certificats doivent être renouvelés ou sont révoqués, mais le lancer régulièrement permettra à vos services de rester en ligne si Let's Encrypt décide de révoquer votre certificat.

note: type: Plain text
en: By using this service, you agree to the ACME Subscriber Agreement, which can be found there: @url{https://acme-v01.api.letsencrypt.org/directory}.
fr: En utilisant ce service, vous acceptez le document « ACME Subscriber Agreement », qu'on peut trouver ici : @url{https://acme-v01.api.letsencrypt.org/directory}.

note: type: defvr
en: {Scheme Variable} certbot-service-type
fr: {Variable Scheme} certbot-service-type

note: type: defvr
en: A service type for the @code{certbot} Let's Encrypt client.  Its value must be a @code{certbot-configuration} record as in this example:
fr: Un type de service pour le client Let's Encrypt @code{certbot}.  Sa valeur doit être un enregistrement @code{certbot-configuration} comme dans cet exemple :

note: type: lisp
en: (service certbot-service-type
             (certbot-configuration
              (email "foo@@example.net")
              (certificates
               (list
                (certificate-configuration
                 (domains '("example.net" "www.example.net"))
                 (deploy-hook %nginx-deploy-hook))
                (certificate-configuration
                 (domains '("bar.example.net")))))))
fr: (service certbot-service-type
             (certbot-configuration
              (email "toto@@example.net")
              (certificates
               (list
                (certificate-configuration
                 (domains '("example.net" "www.example.net"))
                 (deploy-hook %nginx-deploy-hook))
                (certificate-configuration
                 (domains '("titi.example.net")))))))

note: type: defvr
en: See below for details about @code{certbot-configuration}.
fr: Voir plus bas pour des détails sur @code{certbot-configuration}.

note: type: deftp
en: {Data Type} certbot-configuration
fr: {Type de données} certbot-configuration

note: type: deftp
en: Data type representing the configuration of the @code{certbot} service.  This type has the following parameters:
fr: Type données représentant la configuration du service @code{certbot}.  Ce type a les paramètres suivants :

note: type: item
en: @code{package} (default: @code{certbot})
fr: @code{package} (par défaut : @code{certbot})

note: type: table
en: The certbot package to use.
fr: Le paquet certbot à utiliser.

note: type: item
en: @code{webroot} (default: @code{/var/www})
fr: @code{webroot} (par défaut : @code{/var/www})

note: type: table
en: The directory from which to serve the Let's Encrypt challenge/response files.
fr: Le répertoire depuis lequel servir les fichiers du défi/réponse de Let's Encrypt.

note: type: item
en: @code{certificates} (default: @code{()})
fr: @code{certificates} (par défaut : @code{()})

note: type: table
en: A list of @code{certificates-configuration}s for which to generate certificates and request signatures.  Each certificate has a @code{name} and several @code{domains}.
fr: Une liste de @code{certificates-configuration} pour lesquels générer des certificats et demander des signatures.  Chaque certificat a un @code{name} et plusieurs @code{domains}.

note: type: item
en: @code{email} (default: @code{#f})
fr: @code{email} (par défaut : @code{#f})

note: type: table
en: Optional email address used for registration and recovery contact.  Setting this is encouraged as it allows you to receive important notifications about the account and issued certificates.
fr: Adresse de courriel facultative pour la création de compte et le contact de récupération de compte.  Il est recommandé de l'indiquer car cela vous permet de recevoir des notifications importantes à propos de votre compte et des certificats créés.

note: type: item
en: @code{server} (default: @code{#f})
fr: @code{server} (par défaut : @code{#f})

note: type: table
en: Optional URL of ACME server.  Setting this overrides certbot's default, which is the Let's Encrypt server.
fr: URL facultative d'un serveur ACME.  Indiquer ce paramètre remplace la valeur de certbot par défaut, qui est le serveur de Let's Encrypt.

note: type: item
en: @code{rsa-key-size} (default: @code{2048})
fr: @code{rsa-key-size} (par défaut : @code{2048})

note: type: table
en: Size of the RSA key.
fr: Taille de la clef RSA.

note: type: item
en: @code{default-location} (default: @i{see below})
fr: @code{default-location} (par défaut : @i{voir plus bas})

note: type: table
en: The default @code{nginx-location-configuration}.  Because @code{certbot} needs to be able to serve challenges and responses, it needs to be able to run a web server.  It does so by extending the @code{nginx} web service with an @code{nginx-server-configuration} listening on the @var{domains} on port 80, and which has a @code{nginx-location-configuration} for the @code{/.well-known/} URI path subspace used by Let's Encrypt.  @xref{Web Services}, for more on these nginx configuration data types.
fr: Le @code{nginx-location-configuration} par défaut.  Comme @code{certbot} doit pouvoir servir les défis et les réponses, il doit être capable de lancer un serveur web.  Cela se fait en étendant le service web @code{nginx} avec un @code{nginx-server-configuration} qui écoute sur les @var{domains} sur le port 80 et qui a un @code{nginx-location-configuration} pour le chemin @code{/.well-known/} utilisé par Let's Encrypt.  @xref{Web Services} pour plus d'information sur les types de données de la configuration de nginx.

note: type: table
en: Requests to other URL paths will be matched by the @code{default-location}, which if present is added to all @code{nginx-server-configuration}s.
fr: Les requêtes vers d'autres URL correspondra à @code{default-location}, qui, s'il est présent, sera ajout é à tous les @code{nginx-server-configuration}.

note: type: table
en: By default, the @code{default-location} will issue a redirect from @code{http://@var{domain}/...} to @code{https://@var{domain}/...}, leaving you to define what to serve on your site via @code{https}.
fr: Par défaut, le @code{default-location} sera une redirection de @code{http://@var{domain}/…} vers @code{https://@var{domain}/…}, en vous laissant définir ce que vous voulez servir sur votre site en @code{https}.

note: type: table
en: Pass @code{#f} to not issue a default location.
fr: Passez @code{#f} pour ne pas utiliser de location par défaut.

note: type: deftp
en: {Data Type} certificate-configuration
fr: {Type de données} certificate-configuration

note: type: deftp
en: Data type representing the configuration of a certificate.  This type has the following parameters:
fr: Type de données représentant la configuration d'un certificat.  Ce type a les paramètres suivants :

note: type: item
en: @code{name} (default: @i{see below})
fr: @code{name} (par défaut : @i{voir plus bas})

note: type: table
en: This name is used by Certbot for housekeeping and in file paths; it doesn't affect the content of the certificate itself.  To see certificate names, run @code{certbot certificates}.
fr: Ce nom est utilisé par Certbot pour ses tâches quotidiennes et dans les chemins de fichiers ; il n'affecte pas le contenu des certificats eux-mêmes.  Pour voir les noms des certificats, lancez @code{certbot certificates}.

note: type: table
en: Its default is the first provided domain.
fr: Sa valeur par défaut est le premier domaine spécifié.

note: type: item
en: @code{domains} (default: @code{()})
fr: @code{domains} (par défaut : @code{()})

note: type: table
en: The first domain provided will be the subject CN of the certificate, and all domains will be Subject Alternative Names on the certificate.
fr: Le premier domaine spécifié sera le CN du sujet du certificat, et tous les domaines seront les noms alternatifs du sujet dans le certificat.

note: type: item
en: @code{challenge} (default: @code{#f})
fr: @code{challenge} (par défaut : @code{#f})

note: type: table
en: The challenge type that has to be run by certbot.  If @code{#f} is specified, default to the HTTP challenge.  If a value is specified, defaults to the manual plugin (see @code{authentication-hook}, @code{cleanup-hook} and the documentation at @url{https://certbot.eff.org/docs/using.html#hooks}), and gives Let's Encrypt permission to log the public IP address of the requesting machine.
fr: Le type de défi à utiliser avec certbot.  Si @code{#f} est spécifié, le défi HTTP par défaut sera utilisé.  Si une valeur est spécifiée, le greffon manuel sera utilisé par défaut (voir @code{authentication-hook}, @code{cleanup-hook} et la documentation sur @url{https://certbot.eff.org/docs/using.html#hooks}), et donne à Let's Encrypt la permission d'enregistrer l'adresse IP publique de la machine qui a fait la demande.

note: type: item
en: @code{csr} (default: @code{#f})
fr: @code{csr} (par défaut : @code{#f})

note: type: table
en: File name of Certificate Signing Request (CSR) in DER or PEM format.  If @code{#f} is specified, this argument will not be passed to certbot.  If a value is specified, certbot will use it to obtain a certificate, instead of using a self-generated CSR.  The domain-name(s) mentioned in @code{domains}, must be consistent with the domain-name(s) mentioned in CSR file.
fr: Nom de fichier d'une Demande de Signature de Certificat (CSR) au format DER ou PEM. Si @code{#f} est spécifié, cet argument ne sera pas passé à @code{certbot}. Si une valeur est spécifiée, @code{certbot} l'utilisera pour obtenir un certificat, au lieu d'utiliser une CSR auto-signée. Le(s) nom(s) de domaine mentionné(s) dans @code{domains} doivent être en cohérence avec ceux mentionné(s) dans le fichier CSR.

note: type: item
en: @code{authentication-hook} (default: @code{#f})
fr: @code{authentication-hook} (par défaut : @code{#t})

note: type: table
en: Command to be run in a shell once for each certificate challenge to be answered.  For this command, the shell variable @code{$CERTBOT_DOMAIN} will contain the domain being authenticated, @code{$CERTBOT_VALIDATION} contains the validation string and @code{$CERTBOT_TOKEN} contains the file name of the resource requested when performing an HTTP-01 challenge.
fr: Commande à lancer dans un shell une fois par défi de certificat auquel répondre.  Pour cette commande, la variable shell @code{$CERTBOT_DOMAIN} contiendra le domaine à authentifier, @code{$CERTBOT_VALIDATION} contiendra la chaîne de validation et @code{$CERTBOT_TOKEN} contiendra le nom de fichier de la ressource demandée pour le défi HTTP-01.

note: type: item
en: @code{cleanup-hook} (default: @code{#f})
fr: @code{cleanup-hook} (par défaut : @code{#f})

note: type: table
en: Command to be run in a shell once for each certificate challenge that have been answered by the @code{auth-hook}.  For this command, the shell variables available in the @code{auth-hook} script are still available, and additionally @code{$CERTBOT_AUTH_OUTPUT} will contain the standard output of the @code{auth-hook} script.
fr: Commande à lancer dans un shell une fois par défi de certificat auquel @code{auth-hook} a répondu.  Pour cette commande, les variables shell disponibles dans le script @code{auth-hook} sont toujours disponibles, et en plus @code{$CERTBOT_AUTH_OUTPUT} contiendra la sortie standard du script @code{auth-hook}.

note: type: item
en: @code{deploy-hook} (default: @code{#f})
fr: @code{deploy-hook} (par défaut : @code{#f})

note: type: table
en: Command to be run in a shell once for each successfully issued certificate.  For this command, the shell variable @code{$RENEWED_LINEAGE} will point to the config live subdirectory (for example, @samp{"/etc/letsencrypt/live/example.com"}) containing the new certificates and keys; the shell variable @code{$RENEWED_DOMAINS} will contain a space-delimited list of renewed certificate domains (for example, @samp{"example.com www.example.com"}.
fr: Commande à lancer dans un shell une fois par certificat récupéré avec succès.  Pour cette commande, la variable @code{$RENEWED_LINEAGE} pointera sur le sous-répertoire live (par exemple, @samp{"/etc/letsencrypt/live/example.com"}) contenant le nouveau certificat et la clef ; la variable @code{$RENEWED_DOMAINS} contiendra les noms de domaines séparés par des espaces (par exemple @samp{"example.com www.example.com"}).

note: type: Plain text
en: For each @code{certificate-configuration}, the certificate is saved to @code{/etc/letsencrypt/live/@var{name}/fullchain.pem} and the key is saved to @code{/etc/letsencrypt/live/@var{name}/privkey.pem}.
fr: Pour chaque @code{certificate-configuration}, le certificat est sauvegardé dans @code{/etc/letsencrypt/live/@var{name}/fullchain.pem} et la clef est sauvegardée dans @code{/etc/letsencrypt/live/@var{name}/privkey.pem}.

note: type: Plain text
en: The @code{(gnu services dns)} module provides services related to the @dfn{domain name system} (DNS).  It provides a server service for hosting an @emph{authoritative} DNS server for multiple zones, slave or master.  This service uses @uref{https://www.knot-dns.cz/, Knot DNS}.  And also a caching and forwarding DNS server for the LAN, which uses @uref{http://www.thekelleys.org.uk/dnsmasq/doc.html, dnsmasq}.
fr: Le module @code{(gnu services dns)} fournit des services liés au @dfn{système de noms de domaines} (DNS).  Il fournit un service de serveur pour héberger un serveur DNS @emph{faisant autorité} pour plusieurs zones, en esclave ou en maître.  Ce service utilise @uref{https://www.knot-dns.cz/, Knot DNS}.  Il fournit aussi un service de cache et de renvoie DNS pour le LAN, qui utilise @uref{http://www.thekelleys.org.uk/dnsmasq/doc.html, dnsmasq}.

note: type: subsubheading
en: Knot Service
fr: Service Knot

note: type: Plain text
en: An example configuration of an authoritative server for two zones, one master and one slave, is:
fr: Voici un exemple de configuration pour un serveur faisant autorité sur deux zone, un maître et un esclave :

note: type: deffn
en: {Scheme Variable} knot-service-type
fr: {Variable Scheme} knot-service-type

note: type: deffn
en: This is the type for the Knot DNS server.
fr: C'est le type pour le serveur DNS Knot.

note: type: deffn
en: Knot DNS is an authoritative DNS server, meaning that it can serve multiple zones, that is to say domain names you would buy from a registrar.  This server is not a resolver, meaning that it can only resolve names for which it is authoritative.  This server can be configured to serve zones as a master server or a slave server as a per-zone basis.  Slave zones will get their data from masters, and will serve it as an authoritative server.  From the point of view of a resolver, there is no difference between master and slave.
fr: Knot DNS est un serveur DNS faisant autorité, ce qui signifie qu'il peut servir plusieurs zones, c'est-à-dire des noms de domaines que vous achetez à un registrar.  Ce serveur n'est pas un résolveur, ce qui signifie qu'il ne peut pas résoudre les noms pour lesquels il ne fait pas autorité.  Ce serveur peut être configuré pour servir des zones comme un serveur maître ou comme un serveur esclave, en fonction des zones.  Les zones esclaves récupèrent leurs données des maîtres, et seront servies comme faisant autorité.  Du point de vue d'un résolveur, il n'y a pas de différence entre un maître et un esclave@footnote{NdT : Voir la conférence en Français de Stéphane Bortzmeyer pour en apprendre plus sur le DNS : @url{https://iletaitunefoisinternet.fr/dns-bortzmeyer/index.html}}.

note: type: deffn
en: The following data types are used to configure the Knot DNS server:
fr: Les types de données suivants sont utilisés pour configurer le serveur DNS Knot :

note: type: deftp
en: {Data Type} knot-key-configuration
fr: {Type de données} knot-key-configuration

note: type: deftp
en: Data type representing a key.  This type has the following parameters:
fr: Type de données représentant une clef.  Ce type a les paramètres suivants :

note: type: item
en: @code{id} (default: @code{""})
fr: @code{id} (par défaut : @code{""})

note: type: table
en: An identifier for other configuration fields to refer to this key.  IDs must be unique and must not be empty.
fr: Un identifiant pour d'autres champs de configuration qui se réfèrent à cette clef.  Les ID doivent être uniques et non vides.

note: type: item
en: @code{algorithm} (default: @code{#f})
fr: @code{algorithm} (par défaut : @code{#f})

note: type: table
en: The algorithm to use.  Choose between @code{#f}, @code{'hmac-md5}, @code{'hmac-sha1}, @code{'hmac-sha224}, @code{'hmac-sha256}, @code{'hmac-sha384} and @code{'hmac-sha512}.
fr: L'algorithme à utiliser.  Choisissez entre @code{#f}, @code{'hmac-md5}, @code{'hmac-sha1}, @code{'hmac-sha224}, @code{'hmac-sha256}, @code{'hmac-sha384} et @code{'hmac-sha512}.

note: type: item
en: @code{secret} (default: @code{""})
fr: @code{secret} (par défaut : @code{""})

note: type: table
en: The secret key itself.
fr: La clef secrète elle-même.

note: type: deftp
en: {Data Type} knot-acl-configuration
fr: {Type de données} knot-acl-configuration

note: type: deftp
en: Data type representing an Access Control List (ACL) configuration.  This type has the following parameters:
fr: Type de données représentant une configuration de liste de contrôle d'accès (ACL).  Ce type a les paramètres suivants :

note: type: item
en: @code{address} (default: @code{'()})
fr: @code{address} (par défaut : @code{'()})

note: type: table
en: An ordered list of IP addresses, network subnets, or network ranges represented with strings.  The query must match one of them.  Empty value means that address match is not required.
fr: Une liste ordonnée d'adresses IP, de sous-réseaux ou d'intervalles de réseaux représentés par des chaînes de caractères.  La requête doit correspondre à l'une d'entre elles.  La valeur vide signifie que l'adresse n'a pas besoin de correspondre.

note: type: item
en: @code{key} (default: @code{'()})
fr: @code{key} (par défaut : @code{'()})

note: type: table
en: An ordered list of references to keys represented with strings.  The string must match a key ID defined in a @code{knot-key-configuration}.  No key means that a key is not require to match that ACL.
fr: Une liste ordonnées de références à des clefs représentés par des chaînes.  La chaîne doit correspondre à un ID définie dans un @code{knot-key-configuration}.  Aucune clef signifie qu'une clef n'est pas nécessaire pour correspondre à l'ACL.

note: type: item
en: @code{action} (default: @code{'()})
fr: @code{action} (par défaut : @code{'()})

note: type: table
en: An ordered list of actions that are permitted or forbidden by this ACL@.  Possible values are lists of zero or more elements from @code{'transfer}, @code{'notify} and @code{'update}.
fr: Une liste ordonnée d'actions permises ou interdites par cet ACL@.  Les valeurs possibles sont une liste de zéro ou plus d'éléments entre @code{'transfer}, @code{'notify} et @code{'update}.

note: type: item
en: @code{deny?} (default: @code{#f})
fr: @code{deny?} (par défaut : @code{#f})

note: type: table
en: When true, the ACL defines restrictions.  Listed actions are forbidden.  When false, listed actions are allowed.
fr: Lorsque la valeur est vraie, l'ACL définie des restrictions.  Les actions listées sont interdites.  Lorsque la valeur est fausse, les actions listées sont autorisées.

note: type: deftp
en: {Data Type} zone-entry
fr: {Type de données} zone-entry

note: type: deftp
en: Data type representing a record entry in a zone file.  This type has the following parameters:
fr: Type de données représentant une entrée dans un fichier de zone.  Ce type a les paramètres suivants :

note: type: item
en: @code{name} (default: @code{"@@"})
fr: @code{name} (par défaut : @code{"@@"})

note: type: table
en: The name of the record.  @code{"@@"} refers to the origin of the zone.  Names are relative to the origin of the zone.  For example, in the @code{example.org} zone, @code{"ns.example.org"} actually refers to @code{ns.example.org.example.org}.  Names ending with a dot are absolute, which means that @code{"ns.example.org."} refers to @code{ns.example.org}.
fr: Le nom de l'enregistrement.  @code{"@@"} se réfère à l'origine de la zone.  Les noms sont relatifs à l'origine de la zone. Par exemple, dans la zone @code{example.org}, @code{"ns.example.org"} se réfère en fait à @code{ns.example.org.example.org}.  Les noms qui finissent par un point sont absolus, ce qui signifie que @code{"ns.example.org."} se réfère bien à @code{ns.example.org}.

note: type: item
en: @code{ttl} (default: @code{""})
fr: @code{ttl} (par défaut : @code{""})

note: type: table
en: The Time-To-Live (TTL) of this record.  If not set, the default TTL is used.
fr: La durée de vie (TTL) de cet enregistrement.  S'il n'est pas indiqué, le TTL par défaut est utilisé.

note: type: item
en: @code{class} (default: @code{"IN"})
fr: @code{class} (par défaut : @code{"IN"})

note: type: table
en: The class of the record.  Knot currently supports only @code{"IN"} and partially @code{"CH"}.
fr: La classe de l'enregistrement.  Knot ne supporte actuellement que @code{"IN"} et partiellement @code{"CH"}.

note: type: item
en: @code{type} (default: @code{"A"})
fr: @code{type} (par défaut : @code{"A"})

note: type: table
en: The type of the record.  Common types include A (IPv4 address), AAAA (IPv6 address), NS (Name Server) and MX (Mail eXchange).  Many other types are defined.
fr: Le type d'enregistrement.  Les types usuels sont A (une adresse IPv4), NS (serveur de nom) et MX (serveur de courriel).  Bien d'autres types sont définis.

note: type: item
en: @code{data} (default: @code{""})
fr: @code{data} (par défaut : @code{""})

note: type: table
en: The data contained in the record.  For instance an IP address associated with an A record, or a domain name associated with an NS record.  Remember that domain names are relative to the origin unless they end with a dot.
fr: Les données contenues dans l'enregistrement.  Par exemple une adresse IP associée à un enregistrement A, ou un nom de domaine associé à un enregistrement NS.  Rappelez-vous que les noms de domaines sont relatifs à l'origine à moins qu'ils ne finissent par un point.

note: type: deftp
en: {Data Type} zone-file
fr: {Type de données} zone-file

note: type: deftp
en: Data type representing the content of a zone file.  This type has the following parameters:
fr: Type données représentant le contenu d'un fichier de zone.  Ce type a les paramètres suivants :

note: type: table
en: The list of entries.  The SOA record is taken care of, so you don't need to put it in the list of entries.  This list should probably contain an entry for your primary authoritative DNS server.  Other than using a list of entries directly, you can use @code{define-zone-entries} to define a object containing the list of entries more easily, that you can later pass to the @code{entries} field of the @code{zone-file}.
fr: La liste des entrées.  On s'occupe de l'enregistrement SOA, donc vous n'avez pas besoin de l'ajouter dans la liste des entrées.  Cette liste devrait contenir une entrée pour votre serveur DNS primaire faisant autorité.  En plus d'utiliser une liste des entrées directement, vous pouvez utiliser @code{define-zone-entries} pour définir un objet contenant la liste des entrées plus facilement, que vous pouvez ensuite passer au champ @code{entries} de @code{zone-file}.

note: type: item
en: @code{origin} (default: @code{""})
fr: @code{origin} (par défaut : @code{""})

note: type: table
en: The name of your zone.  This parameter cannot be empty.
fr: Le nom de votre zone.  Ce paramètre ne peut pas être vide.

note: type: item
en: @code{ns} (default: @code{"ns"})
fr: @code{ns} (par défaut : @code{"ns"})

note: type: table
en: The domain of your primary authoritative DNS server.  The name is relative to the origin, unless it ends with a dot.  It is mandatory that this primary DNS server corresponds to an NS record in the zone and that it is associated to an IP address in the list of entries.
fr: Le domaine de votre serveur DNS primaire faisant autorité.  Le nom est relatif à l'origine, à moins qu'il finisse par un point.  Il est nécessaire que ce serveur DNS primaire corresponde à un enregistrement NS dans la zone et qu'il soit associé à une adresse IP dans la liste des entrées.

note: type: item
en: @code{mail} (default: @code{"hostmaster"})
fr: @code{mail} (par défaut : @code{"hostmaster"})

note: type: table
en: An email address people can contact you at, as the owner of the zone.  This is translated as @code{<mail>@@<origin>}.
fr: Une adresse de courriel pour vous contacter en tant que propriétaire de la zone.  Cela se transforme en @code{<mail>@@<origin>}.

note: type: item
en: @code{serial} (default: @code{1})
fr: @code{serial} (par défaut : @code{1})

note: type: table
en: The serial number of the zone.  As this is used to keep track of changes by both slaves and resolvers, it is mandatory that it @emph{never} decreases.  Always increment it when you make a change in your zone.
fr: Le numéro de série de la zone.  Comme c'est utilisé pour vérifier les changements à la fois par les esclaves et par les résolveurs, il est nécessaire qu'il ne décroisse @emph{jamais}.  Incrémentez-le toujours quand vous faites un changement sur votre zone.

note: type: item
en: @code{refresh} (default: @code{(* 2 24 3600)})
fr: @code{refresh} (par défaut : @code{(* 2 24 3600)})

note: type: table
en: The frequency at which slaves will do a zone transfer.  This value is a number of seconds.  It can be computed by multiplications or with @code{(string->duration)}.
fr: La fréquence à laquelle les esclaves demanderont un transfert de zone.  Cette valeur est un nombre de secondes.  On peut le calculer avec des multiplications ou avec @code{(string->duration)}.

note: type: item
en: @code{retry} (default: @code{(* 15 60)})
fr: @code{retry} (par défaut : @code{(* 15 60)})

note: type: table
en: The period after which a slave will retry to contact its master when it fails to do so a first time.
fr: La période après laquelle un esclave essaiera de contacter son maître lorsqu'il échoue à le faire la première fois.

note: type: item
en: @code{expiry} (default: @code{(* 14 24 3600)})
fr: @code{expiry} (par défaut : @code{(* 14 24 3600)})

note: type: table
en: Default TTL of records.  Existing records are considered correct for at most this amount of time.  After this period, resolvers will invalidate their cache and check again that it still exists.
fr: TTL par défaut des enregistrements.  Les enregistrements existants sont considérés corrects pour au moins cette durée.  Après cette période, les résolveurs invalideront leur cache et vérifieront de nouveau qu'ils existent toujours.

note: type: item
en: @code{nx} (default: @code{3600})
fr: @code{nx} (par défaut : @code{3600})

note: type: table
en: Default TTL of inexistent records.  This delay is usually short because you want your new domains to reach everyone quickly.
fr: TTL par défaut des enregistrement inexistants.  Ce TTL est habituellement court parce que vous voulez que vous nouveaux domaines soient disponibles pour tout le monde le plus rapidement possible.

note: type: deftp
en: {Data Type} knot-remote-configuration
fr: {Type de données} knot-remote-configuration

note: type: deftp
en: Data type representing a remote configuration.  This type has the following parameters:
fr: Type de données représentant une configuration de serveurs distants.  Ce type a les paramètres suivants :

note: type: table
en: An identifier for other configuration fields to refer to this remote.  IDs must be unique and must not be empty.
fr: Un identifiant pour que les autres champs de configuration se réfèrent à ce serveur distant.  les ID doivent être uniques et non vides.

note: type: table
en: An ordered list of destination IP addresses.  Addresses are tried in sequence.  An optional port can be given with the @@ separator.  For instance: @code{(list "1.2.3.4" "2.3.4.5@@53")}.  Default port is 53.
fr: Une liste ordonnée d'adresses IP de destination.  Ces adresses sont essayées en séquence.  Un port facultatif peut être donné avec le séparateur @@.  Par exemple @code{(list "1.2.3.4" "2.3.4.5@@53")}.  Le port par défaut est le 53.

note: type: item
en: @code{via} (default: @code{'()})
fr: @code{via} (par défaut : @code{'()})

note: type: table
en: An ordered list of source IP addresses.  An empty list will have Knot choose an appropriate source IP@.  An optional port can be given with the @@ separator.  The default is to choose at random.
fr: Une liste ordonnée d'adresses IP sources.  Une liste vide fera choisir une IP source appropriée à Knot.  Un port facultatif peut être donné avec le séparateur @@.  La valeur par défaut est de choisir aléatoirement.

note: type: table
en: A reference to a key, that is a string containing the identifier of a key defined in a @code{knot-key-configuration} field.
fr: Une référence à une clef, c'est-à-dire une chaîne contenant l'identifiant d'une clef définie dans un champ @code{knot-key-configuration}.

note: type: deftp
en: {Data Type} knot-keystore-configuration
fr: {Type de données} knot-keystore-configuration

note: type: deftp
en: Data type representing a keystore to hold dnssec keys.  This type has the following parameters:
fr: Type de données représentant une base de clefs pour garder les clefs dnssec.  Ce type a les paramètres suivants :

note: type: table
en: The id of the keystore.  It must not be empty.
fr: L'id de cette base de clefs.  Il ne doit pas être vide.

note: type: item
en: @code{backend} (default: @code{'pem})
fr: @code{backend} (par défaut : @code{'pem})

note: type: table
en: The backend to store the keys in.  Can be @code{'pem} or @code{'pkcs11}.
fr: Le moteur de stockage des clefs.  Cela peut être @code{'pem} ou @code{'pkcs11}.

note: type: item
en: @code{config} (default: @code{"/var/lib/knot/keys/keys"})
fr: @code{config} (par défaut : @code{"/var/lib/knot/keys/keys"})

note: type: table
en: The configuration string of the backend.  An example for the PKCS#11 is: @code{"pkcs11:token=knot;pin-value=1234 /gnu/store/.../lib/pkcs11/libsofthsm2.so"}.  For the pem backend, the string represents a path in the file system.
fr: La chaine de configuration du moteur.  Voici un exemple pour PKCS#11 : @code{"pkcs11:token=knot;pin-value=1234 /gnu/store/.../lib/pkcs11/libsofthsm2.so"}.  Pour le moteur pem, la chaine représente un chemin dans le système de fichiers.

note: type: deftp
en: {Data Type} knot-policy-configuration
fr: {Type de données} knot-policy-configuration

note: type: deftp
en: Data type representing a dnssec policy.  Knot DNS is able to automatically sign your zones.  It can either generate and manage your keys automatically or use keys that you generate.
fr: Type de données représentant une politique dnssec.  Knot DNS est capable de signer automatiquement vos zones.  Il peut soit générer et gérer vos clefs automatiquement ou utiliser des clefs que vous générez.

note: type: deftp
en: Dnssec is usually implemented using two keys: a Key Signing Key (KSK) that is used to sign the second, and a Zone Signing Key (ZSK) that is used to sign the zone.  In order to be trusted, the KSK needs to be present in the parent zone (usually a top-level domain).  If your registrar supports dnssec, you will have to send them your KSK's hash so they can add a DS record in their zone.  This is not automated and need to be done each time you change your KSK.
fr: Dnssec est habituellement implémenté avec deux clefs : une KSK (key signing key) qui est utilisé pour signer une seconde, la ZSK (zone signing key) qui est utilisée pour signer la zone.  Pour pouvoir être de confiance, la KSK doit être présente dans la zone parente (normalement un domaine de haut niveau).  Si votre registrar supporte dnssec, vous devrez leur envoyer le hash de votre KSK pour qu'il puisse ajouter un enregistrement DS dans la zone parente.  Ce n'est pas automatique et vous devrez le faire à chaque fois que vous changerez votre KSK.

note: type: deftp
en: The policy also defines the lifetime of keys.  Usually, ZSK can be changed easily and use weaker cryptographic functions (they use lower parameters) in order to sign records quickly, so they are changed often.  The KSK however requires manual interaction with the registrar, so they are changed less often and use stronger parameters because they sign only one record.
fr: La politique définie aussi la durée de vie des clefs.  Habituellement, la ZSK peut être changée facilement et utilise des fonctions cryptographiques plus faibles (avec un paramètre plus faible) pour signer les enregistrements rapidement, donc elles sont changées très régulièrement.  La KSK en revanche requiert une interaction manuelle avec le registrar, donc elle change moins souvent et utilise des paramètres plus robustes puisqu'elle ne signe qu'un seul enregistrement.

note: type: deftp
en: This type has the following parameters:
fr: Ce type a les paramètres suivants :

note: type: table
en: The id of the policy.  It must not be empty.
fr: L'id de la politique.  Il ne doit pas être vide.

note: type: item
en: @code{keystore} (default: @code{"default"})
fr: @code{keystore} (par défaut : @code{"default"})

note: type: table
en: A reference to a keystore, that is a string containing the identifier of a keystore defined in a @code{knot-keystore-configuration} field.  The @code{"default"} identifier means the default keystore (a kasp database that was setup by this service).
fr: Une référence à une base de clefs, c'est-à-dire une chaîne contenant l'identifiant d'une base de clefs définie dans un champ @code{knot-keystore-configuration}.  L'identifiant @code{"default"} signifie la base par défaut (une base de données kasp initialisée par ce service).

note: type: item
en: @code{manual?} (default: @code{#f})
fr: @code{manual?} (par défaut : @code{#f})

note: type: table
en: Whether the key management is manual or automatic.
fr: Indique si la clef est gérée manuellement ou automatiquement.

note: type: item
en: @code{single-type-signing?} (default: @code{#f})
fr: @code{single-type-signing?} (par défaut : @code{#f})

note: type: table
en: When @code{#t}, use the Single-Type Signing Scheme.
fr: Lorsque la valeur est @code{#t}, utilise le schéma de signature Single-Type.

note: type: item
en: @code{algorithm} (default: @code{"ecdsap256sha256"})
fr: @code{algorithm} (par défaut : @code{"ecdsap256sha256"})

note: type: table
en: An algorithm of signing keys and issued signatures.
fr: Un algorithme de clef de signature et de signatures.

note: type: item
en: @code{ksk-size} (default: @code{256})
fr: @code{ksk-size} (par défaut : @code{256})

note: type: table
en: The length of the KSK@.  Note that this value is correct for the default algorithm, but would be unsecure for other algorithms.
fr: La longueur de la KSK@.  Remarquez que cette valeur est correcte pour l'algorithme par défaut, mais ne serait pas sécurisée pour d'autres algorithmes.

note: type: item
en: @code{zsk-size} (default: @code{256})
fr: @code{zsk-size} (par défaut : @code{256})

note: type: table
en: The length of the ZSK@.  Note that this value is correct for the default algorithm, but would be unsecure for other algorithms.
fr: La longueur de la ZSK@.  Remarquez que cette valeur est correcte pour l'algorithme par défaut, mais ne serait pas sécurisée pour d'autres algorithmes.

note: type: item
en: @code{dnskey-ttl} (default: @code{'default})
fr: @code{dnskey-ttl} (par défaut : @code{'default})

note: type: table
en: The TTL value for DNSKEY records added into zone apex.  The special @code{'default} value means same as the zone SOA TTL.
fr: La valeur du TTL pour les enregistrements DNSKEY ajoutés au sommet de la zone.  La valeur spéciale @code{'default} signifie la même valeur que le TTL du SOA de la zone.

note: type: item
en: @code{zsk-lifetime} (default: @code{(* 30 24 3600)})
fr: @code{zsk-lifetime} (par défaut : @code{(* 30 24 3600)})

note: type: table
en: The period between ZSK publication and the next rollover initiation.
fr: La période entre la publication d'une ZSK et l'initialisation d'un nouveau changement.

note: type: item
en: @code{propagation-delay} (default: @code{(* 24 3600)})
fr: @code{propagation-delay} (par défaut : @code{(* 24 3600)})

note: type: table
en: An extra delay added for each key rollover step.  This value should be high enough to cover propagation of data from the master server to all slaves.
fr: Un délai supplémentaire pour chaque étape du changement.  Cette valeur devrait être assez grande pour couvrir le temps de propagation des données entre le serveur primaire et tous les secondaires.

note: type: item
en: @code{rrsig-lifetime} (default: @code{(* 14 24 3600)})
fr: @code{rrsig-lifetime} (par défaut : @code{(* 14 24 3600)})

note: type: table
en: A validity period of newly issued signatures.
fr: Une période de validité des nouvelles signatures.

note: type: item
en: @code{rrsig-refresh} (default: @code{(* 7 24 3600)})
fr: @code{rrsig-refresh} (par défaut : @code{(* 7 24 3600)})

note: type: table
en: A period how long before a signature expiration the signature will be refreshed.
fr: Une période qui indique combien de temps avant l'expiration d'une signature elle sera rafraîchie.

note: type: item
en: @code{nsec3?} (default: @code{#f})
fr: @code{nsec3?} (par défaut : @code{#f})

note: type: table
en: When @code{#t}, NSEC3 will be used instead of NSEC.
fr: Lorsque la valeur est @code{#t}, on utilisera NSEC3 au lien de NSEC.

note: type: item
en: @code{nsec3-iterations} (default: @code{5})
fr: @code{nsec3-iterations} (par défaut : @code{5})

note: type: table
en: The number of additional times the hashing is performed.
fr: Le nombre de fois supplémentaires que le hash est effectué.

note: type: item
en: @code{nsec3-salt-length} (default: @code{8})
fr: @code{nsec3-salt-length} (par défaut : @code{8})

note: type: table
en: The length of a salt field in octets, which is appended to the original owner name before hashing.
fr: La longueur du champ de sel en octets, ajouté au nom du propriétaire avant de hasher.

note: type: item
en: @code{nsec3-salt-lifetime} (default: @code{(* 30 24 3600)})
fr: @code{nsec3-salt-lifetime} (par défaut : @code{(* 30 24 3600)})

note: type: table
en: The validity period of newly issued salt field.
fr: La période de validité des nouveaux champs sel.

note: type: deftp
en: {Data Type} knot-zone-configuration
fr: {Type de données} knot-zone-configuration

note: type: deftp
en: Data type representing a zone served by Knot.  This type has the following parameters:
fr: Type de données représentant la zone servie par Knot.  ce type a les paramètres suivants :

note: type: item
en: @code{domain} (default: @code{""})
fr: @code{domain} (par défaut : @code{""})

note: type: table
en: The domain served by this configuration.  It must not be empty.
fr: Le domaine servi par cette configuration.  Il ne doit pas être vide.

note: type: item
en: @code{file} (default: @code{""})
fr: @code{file} (par défaut : @code{""})

note: type: table
en: The file where this zone is saved.  This parameter is ignored by master zones.  Empty means default location that depends on the domain name.
fr: Le fichier où la zone est sauvegardée.  Ce paramètre est ignoré pour les zones maîtres.  La valeur vide signifie l'emplacement par défaut qui dépend du nom de domaine.

note: type: item
en: @code{zone} (default: @code{(zone-file)})
fr: @code{zone} (par défaut : @code{(zone-file)})

note: type: table
en: The content of the zone file.  This parameter is ignored by slave zones.  It must contain a zone-file record.
fr: Le contenu du fichier de zone.  Ce paramètre est ignoré par les zones esclaves.  Il doit contenir un enregistrement zone-file.

note: type: item
en: @code{master} (default: @code{'()})
fr: @code{master} (par défaut : @code{'()})

note: type: table
en: A list of master remotes.  When empty, this zone is a master.  When set, this zone is a slave.  This is a list of remotes identifiers.
fr: Une liste des serveurs distants maîtres.  Lorsque la liste est vide, cette zone est un maître.  Lorsque la valeur est indiquée, cette zone est un esclave.  C'est al liste des identifiants des serveurs distants.

note: type: item
en: @code{ddns-master} (default: @code{#f})
fr: @code{ddns-master} (par défaut : @code{#f})

note: type: table
en: The main master.  When empty, it defaults to the first master in the list of masters.
fr: Le maître principal.  Lorsque la valeur est vide, la valeur par défaut est le premier maître de la liste des maîtres.

note: type: item
en: @code{notify} (default: @code{'()})
fr: @code{notify} (par défaut : @code{'()})

note: type: table
en: A list of slave remote identifiers.
fr: Une liste d'identifiants de groupe de serveurs esclaves.

note: type: item
en: @code{acl} (default: @code{'()})
fr: @code{acl} (par défaut : @code{'()})

note: type: table
en: A list of acl identifiers.
fr: Une liste d'identifiants d'ACL.

note: type: item
en: @code{semantic-checks?} (default: @code{#f})
fr: @code{semantic-checks?} (par défaut : @code{#f})

note: type: table
en: When set, this adds more semantic checks to the zone.
fr: Lorsque la valeur est indiquée, cela ajoute plus de vérifications sémantiques à la zone.

note: type: item
en: @code{zonefile-sync} (default: @code{0})
fr: @code{zonefile-sync} (par défaut : @code{0})

note: type: table
en: The delay between a modification in memory and on disk.  0 means immediate synchronization.
fr: Le délai entre une modification en mémoire et sur le disque.  0 signifie une synchronisation immédiate.

note: type: item
en: @code{zonefile-load} (default: @code{#f})
fr: @code{zonefile-load} (par défaut : @code{#f})

note: type: table
en: The way the zone file contents are applied during zone load.  Possible values are:
fr: La manière dont le contenu du fichier de zone influe sur le chargement de la zone.  Les valeurs possibles sont :

note: type: item
en: @code{#f} for using the default value from Knot,
fr: @code{#f} pour utilise la valeur par défaut de Knot,

note: type: item
en: @code{'none} for not using the zone file at all,
fr: @code{'none} pour ne pas utiliser le fichier de zone du tout,

note: type: item
en: @code{'difference} for computing the difference between already available
fr: @code{'difference} pour calculer les différences entre le contenu déjà disponible

note: type: itemize
en: contents and zone contents and applying it to the current zone contents,
fr: et le contenu du fichier de zone et les appliquer au contenu actuel de la zone,

note: type: item
en: @code{'difference-no-serial} for the same as @code{'difference}, but
fr: @code{'difference-no-serial} pour la même chose que @code{'difference}, mais

note: type: itemize
en: ignoring the SOA serial in the zone file, while the server takes care of it automatically.
fr: en ignorant le serial du SOA du fichier de zone, pour que le serveur s'en charge automatiquement.

note: type: item
en: @code{'whole} for loading zone contents from the zone file.
fr: @code{'whole} pour charger le contenu de la zone depuis le fichier de zone.

note: type: item
en: @code{journal-content} (default: @code{#f})
fr: @code{journal-content} (par défaut : @code{#f})

note: type: table
en: The way the journal is used to store zone and its changes.  Possible values are @code{'none} to not use it at all, @code{'changes} to store changes and @code{'all} to store contents.  @code{#f} does not set this option, so the default value from Knot is used.
fr: La manière dont le journal est utilisé pour stocker la zone et ses changements.  Les valeurs possibles sont @code{'none} pour ne pas l'utiliser du tout, @code{'changes} pour stocker les changements et @code{'all} pour stocker le contenu.  @code{#f} ne met pas en place cette option et la valeur par défaut de Knot est utilisée.

note: type: item
en: @code{max-journal-usage} (default: @code{#f})
fr: @code{max-journal-usage} (par défaut : @code{#f})

note: type: table
en: The maximum size for the journal on disk.  @code{#f} does not set this option, so the default value from Knot is used.
fr: La taille maximale du journal sur le disque.  @code{#f} ne met pas en place cette option et la valeur par défaut de Knot est utilisée.

note: type: item
en: @code{max-journal-depth} (default: @code{#f})
fr: @code{max-journal-depth} (par défaut : @code{#f})

note: type: table
en: The maximum size of the history.  @code{#f} does not set this option, so the default value from Knot is used.
fr: La taille maximale de l'historique.  @code{#f} ne met pas en place cette option et la valeur par défaut de Knot est utilisée.

note: type: item
en: @code{max-zone-size} (default: @code{#f})
fr: @code{max-zone-size} (par défaut : @code{#f})

note: type: table
en: The maximum size of the zone file.  This limit is enforced for incoming transfer and updates.  @code{#f} does not set this option, so the default value from Knot is used.
fr: La taille maximale du fichier de zone.  Cette limite est prise en charge pour les transferts entrants et les mises à jour.  @code{#f} ne met pas en place cette option et la valeur par défaut de Knot est utilisée.

note: type: item
en: @code{dnssec-policy} (default: @code{#f})
fr: @code{dnssec-policy} (par défaut : @code{#f})

note: type: table
en: A reference to a @code{knot-policy-configuration} record, or the special name @code{"default"}.  If the value is @code{#f}, there is no dnssec signing on this zone.
fr: Une référence à un enregistrement @code{knot-policy-configuration}, ou le nom spécial @code{"default"}.  Si la valeur est @code{#f}, cette zone n'est pas signée.

note: type: item
en: @code{serial-policy} (default: @code{'increment})
fr: @code{serial-policy} (par défaut : @code{'increment})

note: type: table
en: A policy between @code{'increment} and @code{'unixtime}.
fr: Une politique entre @code{'increment} et @code{'unixtime}.

note: type: deftp
en: {Data Type} knot-configuration
fr: {Type de données} knot-configuration

note: type: deftp
en: Data type representing the Knot configuration.  This type has the following parameters:
fr: Type de données représentant la configuration de Knot.  Ce type a les paramètres suivants :

note: type: item
en: @code{knot} (default: @code{knot})
fr: @code{knot} (par défaut : @code{knot})

note: type: table
en: The Knot package.
fr: Le paquet Knot.

note: type: item
en: @code{run-directory} (default: @code{"/var/run/knot"})
fr: @code{run-directory} (par défaut : @code{"/var/run/knot"})

note: type: table
en: The run directory.  This directory will be used for pid file and sockets.
fr: Le répertoire de travail.  Ce répertoire sera utilisé pour le fichier pid et les sockets.

note: type: item
en: @code{includes} (default: @code{'()})
fr: @code{includes} (par défaut : @code{'()})

note: type: table
en: A list of strings or file-like objects denoting other files that must be included at the top of the configuration file.
fr: Une liste plate de chaînes ou d'objets simili-fichiers qui seront inclus en haut du fichier de configuration.

note: type: cindex
en: secrets, Knot service
fr: secrets, service Knot

note: type: table
en: This can be used to manage secrets out-of-band.  For example, secret keys may be stored in an out-of-band file not managed by Guix, and thus not visible in @file{/gnu/store}---e.g., you could store secret key configuration in @file{/etc/knot/secrets.conf} and add this file to the @code{includes} list.
fr: Cela peut être utile pour gérer des secrets hors-bande.  Par exemple, on peut stocker des clefs secrètes dans un fichier hors-bande qui n'est pas géré par Guix, et donc pas visible dans @file{/gnu/store} — p.@: ex.@: vous pouvez stocker la configuration des clefs secrètes dans @file{/etc/knot/secrets.conf} et ajouter ce fichier à la lite @code{includes}.

note: type: table
en: One can generate a secret tsig key (for nsupdate and zone transfers with the keymgr command from the knot package.  Note that the package is not automatically installed by the service.  The following example shows how to generate a new tsig key:
fr: On peut générer une clé secrète tsig (pour nsupdate et les transferts de zones) avec la commande keymgr du paquet knot.  Remarquez que le paquet n'est pas automatiquement installé par le service.  L'exemple suivant montre comment générer une nouvelle clé tsig :

note: type: table
en: Also note that the generated key will be named @var{mysecret}, so it is the name that needs to be used in the @var{key} field of the @code{knot-acl-configuration} record and in other places that need to refer to that key.
fr: Remarquez aussi que la clé générée sera nommée @var{mysecret}, donc c'est le nom qui est requis dans le champ @var{key} de l'enregistrement @code{knot-acl-configuration} et aux autres endroits qui se réfèrent à cette clé.

note: type: table
en: It can also be used to add configuration not supported by this interface.
fr: Cela peut aussi être utilisé pour ajouter des configurations qui ne sont pas prises en charge par cette interface.

note: type: item
en: @code{listen-v4} (default: @code{"0.0.0.0"})
fr: @code{listen-v4} (par défaut : @code{"0.0.0.0"})

note: type: table
en: An ip address on which to listen.
fr: Une adresse IP sur laquelle écouter.

note: type: item
en: @code{listen-v6} (default: @code{"::"})
fr: @code{listen-v6} (par défaut : @code{"::"})

note: type: item
en: @code{listen-port} (default: @code{53})
fr: @code{listen-port} (par défaut : @code{53})

note: type: table
en: A port on which to listen.
fr: Un port sur lequel écouter.

note: type: item
en: @code{keys} (default: @code{'()})
fr: @code{keys} (par défaut : @code{'()})

note: type: table
en: The list of knot-key-configuration used by this configuration.
fr: La liste des knot-key-configuration utilisés par cette configuration.

note: type: item
en: @code{acls} (default: @code{'()})
fr: @code{acls} (par défaut : @code{'()})

note: type: table
en: The list of knot-acl-configuration used by this configuration.
fr: La liste des knot-acl-configuration utilisés par cette configuration.

note: type: item
en: @code{remotes} (default: @code{'()})
fr: @code{remotes} (par défaut : @code{'()})

note: type: table
en: The list of knot-remote-configuration used by this configuration.
fr: La liste des knot-remote-configuration utilisés par cette configuration.

note: type: item
en: @code{zones} (default: @code{'()})
fr: @code{zones} (par défaut : @code{'()})

note: type: table
en: The list of knot-zone-configuration used by this configuration.
fr: La liste des knot-zone-configuration utilisés par cette configuration.

note: type: subsubheading
en: Knot Resolver Service
fr: Service de résolveur Knot

note: type: deffn
en: {Scheme Variable} knot-resolver-service-type
fr: {Variable Scheme} knot-resolver-service-type

note: type: deffn
en: This is the type of the knot resolver service, whose value should be an @code{knot-resolver-configuration} object as in this example:
fr: C'est le type du service de résolution de knot, dont la valeur devrait être un objet @code{knot-resolver-configuration} comme dans cet exemple :

note: type: deffn
en: For more information, refer its @url{https://knot-resolver.readthedocs.org/en/stable/daemon.html#configuration, manual}.
fr: Pour plus d'information, regardez @url{https://knot-resolver.readthedocs.org/en/stable/daemon.html#configuration, manual}.

note: type: deftp
en: {Data Type} knot-resolver-configuration
fr: {Type de données} knot-resolver-configuration

note: type: deftp
en: Data type representing the configuration of knot-resolver.
fr: Type de données représentant la configuration de knot-resolver.

note: type: item
en: @code{package} (default: @var{knot-resolver})
fr: @code{package} (par défaut : @var{knot-resolver})

note: type: table
en: Package object of the knot DNS resolver.
fr: Objet de paquet du résolveur DNS knot.

note: type: item
en: @code{kresd-config-file} (default: %kresd.conf)
fr: @code{kresd-config-file} (par défaut : %kresd.conf)

note: type: table
en: File-like object of the kresd configuration file to use, by default it will listen on @code{127.0.0.1} and @code{::1}.
fr: Objet simili-fichier du fichier de configuration de kresd à utiliser. Par défaut il écoutera sur @code{127.0.0.1} et @code{::1}.

note: type: item
en: @code{garbage-collection-interval} (default: 1000)
fr: @code{garbage-collection-interval} (par défaut : 1000)

note: type: table
en: Number of milliseconds for @code{kres-cache-gc} to periodically trim the cache.
fr: Nombre de millisecondes correspondant à la périodicité avec laquelle @code{kres-cache-gc} nettoie le cache.

note: type: subsubheading
en: Dnsmasq Service
fr: Services Dnsmasq

note: type: deffn
en: {Scheme Variable} dnsmasq-service-type
fr: {Variable Scheme} dnsmasq-service-type

note: type: deffn
en: This is the type of the dnsmasq service, whose value should be an @code{dnsmasq-configuration} object as in this example:
fr: C'est le type du service dnsmasq, dont la valeur devrait être un objet @code{dnsmasq-configuration} comme dans cet exemple :

note: type: deftp
en: {Data Type} dnsmasq-configuration
fr: {Type de données} dnsmasq-configuration

note: type: deftp
en: Data type representing the configuration of dnsmasq.
fr: Type de données qui représente la configuration de dnsmasq.

note: type: item
en: @code{package} (default: @var{dnsmasq})
fr: @code{package} (par défaut : @var{dnsmasq})

note: type: table
en: Package object of the dnsmasq server.
fr: L'objet de paquet du serveur dnsmasq.

note: type: item
en: @code{no-hosts?} (default: @code{#f})
fr: @code{no-hosts?} (par défaut : @code{#f})

note: type: table
en: When true, don't read the hostnames in /etc/hosts.
fr: Lorsque la valeur est vraie, ne pas lire les noms d'hôte dans /etc/hosts.

note: type: item
en: @code{port} (default: @code{53})
fr: @code{port} (par défaut : @code{53})

note: type: table
en: The port to listen on.  Setting this to zero completely disables DNS responses, leaving only DHCP and/or TFTP functions.
fr: Le port sur lequel écouter.  Le mettre à zéro désactive complètement les réponses DNS, ce qui ne laisse que les fonctions DHCP et TFTP.

note: type: item
en: @code{local-service?} (default: @code{#t})
fr: @code{local-service?} (par défaut : @code{#t})

note: type: table
en: Accept DNS queries only from hosts whose address is on a local subnet, ie a subnet for which an interface exists on the server.
fr: Accepte les requêtes DNS seulement des hôtes dont les adresses sont sur le sous-réseau local, c.-à-d.@: sur un sous-réseau pour lequel une interface existe sur le serveur.

note: type: item
en: @code{listen-addresses} (default: @code{'()})
fr: @code{listen-addresses} (par défaut : @code{'()})

note: type: table
en: Listen on the given IP addresses.
fr: Écoute sur le adresses IP données.

note: type: item
en: @code{resolv-file} (default: @code{"/etc/resolv.conf"})
fr: @code{resolv-file} (par défaut : @code{"/etc/resolv.conf"})

note: type: table
en: The file to read the IP address of the upstream nameservers from.
fr: Le fichier où lire l'adresse IP des serveurs de noms en amont.

note: type: item
en: @code{no-resolv?} (default: @code{#f})
fr: @code{no-resolv?} (par défaut : @code{#f})

note: type: table
en: When true, don't read @var{resolv-file}.
fr: Lorsque la valeur est vraie, ne pas lire @var{resolv-file}.

note: type: item
en: @code{forward-private-reverse-lookup?} (default: @code{#t})
fr: @code{forward-private-reverse-lookup?} (par défaut : @code{#t})

note: type: table
en: When false, all reverse lookups for private IP ranges are answered with "no such domain" rather than being forwarded upstream.
fr: Lorsque la valeur est fausse, toutes les requêtes inverses pour les intervalles d'IP privées reçoivent la réponse « le domaine n'existe pas » plutôt qu'être renvoyé en amont.

note: type: item
en: @code{query-servers-in-order?} (default: @code{#f})
fr: @code{query-servers-in-order?} (par défaut : @code{#f})

note: type: table
en: When true, dnsmasq queries the servers in the same order as they appear in @var{servers}.
fr: Lorsque la valeur est vraie, dnsmasq demande aux serveurs dans le même ordre qu'ils apparaissent dans @var{servers}.

note: type: item
en: @code{servers} (default: @code{'()})
fr: @code{servers} (par défaut : @code{'()})

note: type: table
en: Specify IP address of upstream servers directly.
fr: Spécifiez l'adresse IP des serveurs en amont directement.

note: type: item
en: @code{addresses} (default: @code{'()})
fr: @code{addresses} (par défaut : @code{'()})

note: type: table
en: For each entry, specify an IP address to return for any host in the given domains.  Queries in the domains are never forwarded and always replied to with the specified IP address.
fr: Pour chaque entrée, spécifie une adresse IP à renvoyer pour les hôtes des domaines donnés.  Les requêtes dans les domaines ne sont jamais envoyés et la réponse sera toujours l'adresse IP spécifiée.

note: type: table
en: This is useful for redirecting hosts locally, for example:
fr: C'est utile pour rediriger des hôtes localement, comme dans cet exemple :

note: type: lisp
en: (service dnsmasq-service-type
             (dnsmasq-configuration
               (addresses
                 '(; Redirect to a local web-server.
                   "/example.org/127.0.0.1"
                   ; Redirect subdomain to a specific IP.
                   "/subdomain.example.org/192.168.1.42"))))
fr: (service dnsmasq-service-type
             (dnsmasq-configuration
               (addresses
                 '(; Redirige vers un serveur web local.
                   "/example.org/127.0.0.1"
                   ; Redirige un sous-domaine vers une adresse IP spécifique.
                   "/subdomain.example.org/192.168.1.42"))))

note: type: table
en: Note that rules in @file{/etc/hosts} take precedence over this.
fr: Remarquez que les règles dans @file{/etc/hosts} prennent le pas sur celles-ci.

note: type: item
en: @code{cache-size} (default: @code{150})
fr: @code{cache-size} (par défaut : @code{150})

note: type: table
en: Set the size of dnsmasq's cache.  Setting the cache size to zero disables caching.
fr: Indique la taille du cache de dnsmasq.  Indiquer 0 désactive le cache.

note: type: item
en: @code{negative-cache?} (default: @code{#t})
fr: @code{negative-cache?} (par défaut : @code{#t})

note: type: table
en: When false, disable negative caching.
fr: Lorsque la valeur est fausse, désactive le cache des réponses négatives.

note: type: item
en: @code{cpe-id} (default: @code{#f})
fr: @code{cpe-id} (par défaut : @code{#f})

note: type: table
en: If set, add a CPE (Customer-Premises Equipment) identifier to DNS queries which are forwarded upstream.
fr: Si une valeur est indiquée, ajoute un identifiant CPE (Customer-Premises Equipment) aux requêtes DNS qui sont renvoyées en amont.

note: type: item
en: @code{tftp-enable?} (default: @code{#f})
fr: @code{tftp-enable?} (par défaut : @code{#f})

note: type: table
en: Whether to enable the built-in TFTP server.
fr: Indique s'il faut activer le serveur TFTP inclus.

note: type: item
en: @code{tftp-no-fail?} (default: @code{#f})
fr: @code{tftp-no-fail?} (par défaut : @code{#f})

note: type: table
en: If true, does not fail dnsmasq if the TFTP server could not start up.
fr: Si la valeur est vraie, dnsmasq n'échoue pas si le serveur TFTP ne peut pas démarrer.

note: type: item
en: @code{tftp-single-port?} (default: @code{#f})
fr: @code{tftp-single-port?} (par défaut : @code{#f})

note: type: table
en: Whether to use only one single port for TFTP.
fr: Indique s'il faut utiliser un seul port pour TFTP.

note: type: item
en: @code{tftp-secure?} (default: @code{#f})
fr: @code{tftp-secure?} (par défaut : @code{#f})

note: type: table
en: If true, only files owned by the user running the dnsmasq process are accessible.
fr: Si la valeur est vraie, seuls les fichiers appartenant à l'utilisateur sous lequel tourne dnsmasq sont accessibles.

note: type: table
en: If dnsmasq is being run as root, different rules apply: @code{tftp-secure?} has no effect, but only files which have the world-readable bit set are accessible.
fr: Si dnsmasq est lancé en root, des règles différentes s'appliquent : @code{tft-secure?} n'a pas d'effet, mais seuls les fichiers qui ont le bit de lecture pour tout le monde sont accessibles.

note: type: item
en: @code{tftp-max} (default: @code{#f})
fr: @code{tftp-max} (par défaut : @code{#f})

note: type: table
en: If set, sets the maximal number of concurrent connections allowed.
fr: Si une valeur est indiquée, indique le nombre maximal de connexions permises en parallèle.

note: type: item
en: @code{tftp-mtu} (default: @code{#f})
fr: @code{tftp-mtu} (par défaut : @code{#f})

note: type: table
en: If set, sets the MTU for TFTP packets to that value.
fr: Si une valeur est indiquée, indique le MTU pour les paquets TFTP.

note: type: item
en: @code{tftp-no-blocksize?} (default: @code{#f})
fr: @code{tftp-no-blocksize?} (par défaut : @code{#f})

note: type: table
en: If true, stops the TFTP server from negotiating the blocksize with a client.
fr: Si la valeur est vraie, empêche que le serveur TFTP ne négocie la taille de bloc avec un client.

note: type: item
en: @code{tftp-lowercase?} (default: @code{#f})
fr: @code{tftp-lowercase?} (par défaut : @code{#f})

note: type: table
en: Whether to convert all filenames in TFTP requests to lowercase.
fr: Indique s'il faut convertir tous les noms de fichiers dans les requêtes TFTP en minuscule.

note: type: item
en: @code{tftp-port-range} (default: @code{#f})
fr: @code{tftp-port-range} (par défaut : @code{#f})

note: type: table
en: If set, fixes the dynamical ports (one per client) to the given range (@code{"<start>,<end>"}).
fr: Si une valeur est indiquée, fixe les ports dynamiques (un par client) à la zone données (@code{"<début>,<fin>"}).

note: type: item
en: @code{tftp-root} (default: @code{/var/empty,lo})
fr: @code{tftp-root} (par défaut : @code{/var/empty,lo})

note: type: table
en: Look for files to transfer using TFTP relative to the given directory.  When this is set, TFTP paths which include @samp{..} are rejected, to stop clients getting outside the specified root.  Absolute paths (starting with @samp{/}) are allowed, but they must be within the TFTP-root.  If the optional interface argument is given, the directory is only used for TFTP requests via that interface.
fr: Cherche les fichiers à transférer avec TFTP relativement au répertoire donné.  Lorsque la valeur est indiquée, les chemins TFTP qui contiennent @samp{..} sont rejeté, pour éviter que les client n'arrivent en dehors de la racine donnée.  Les chemins absolus (commençant par @samp{/}) sont permis, mais ils doivent être à l'intérieur de la racine de TFTP.  Si un argument d'interface facultatif est donné, le répertoire n'est utilisé que pour les requêtes TFTP via cette interface.

note: type: item
en: @code{tftp-unique-root} (default: @code{#f})
fr: @code{tftp-unique-root} (par défaut : @code{#f})

note: type: table
en: If set, add the IP or hardware address of the TFTP client as a path component on the end of the TFTP-root.  Only valid if a TFTP root is set and the directory exists.  Defaults to adding IP address (in standard dotted-quad format).
fr: Si une valeur est indiquée, ajoute d'IP ou l'adresse matérielle du client TFTP en tant que composant du chemin à la fin de la racine TFTP.  Valide uniquement si une racine TFTP est indiquée et que le répertoire existe.  La valeur par défaut ajoute l'adresse IP (au format à trois points standard).

note: type: table
en: For instance, if @option{--tftp-root} is @samp{/tftp} and client @samp{1.2.3.4} requests file @file{myfile} then the effective path will be @file{/tftp/1.2.3.4/myfile} if @file{/tftp/1.2.3.4} exists or @file{/tftp/myfile} otherwise.  When @samp{=mac} is specified it will append the MAC address instead, using lowercase zero padded digits separated by dashes, e.g.: @samp{01-02-03-04-aa-bb}.  Note that resolving MAC addresses is only possible if the client is in the local network or obtained a DHCP lease from dnsmasq.
fr: Par exemple, si -@option{-tftp-root} est @samp{/tftp} et que le client @samp{1.2.3.4} demande le fichier @file{monfichier} alors le chemin effectif sera @file{/tftp/1.2.3.4/monfichier} si @file{/tftp/1.2.3.4} existe, ou @file{/tftp/monfichier} sinon.  Avec @samp{=mac}, c'est l'adresse MAC qui sera ajoutée à la place, en utilisant des nombres en minuscule à taille fixe et séparés par des tirets, p.@: ex.@: : @samp{01-02-03-04-aa-bb}.  Remarquez que la résolution d'une adresse MAC n'est possible que si le client est sur le réseau local ou a obtenu un bail DHCP de dnsmasq.

note: type: subsubheading
en: ddclient Service
fr: service ddclient

note: type: Plain text
en: The ddclient service described below runs the ddclient daemon, which takes care of automatically updating DNS entries for service providers such as @uref{https://dyn.com/dns/, Dyn}.
fr: Le service ddclient décrit plus bas lance le démon ddclient, qui prend en charge la mise à jour automatique des entrées DNS pour les fournisseurs de service comme @uref{https://dyn.com/dns/, Dyn}.

note: type: Plain text
en: The following example show instantiates the service with its default configuration:
fr: L'exemple suivant montre comment instantier le service avec sa configuration par défaut :

note: type: Plain text
en: Note that ddclient needs to access credentials that are stored in a @dfn{secret file}, by default @file{/etc/ddclient/secrets} (see @code{secret-file} below).  You are expected to create this file manually, in an ``out-of-band'' fashion (you @emph{could} make this file part of the service configuration, for instance by using @code{plain-file}, but it will be world-readable @i{via} @file{/gnu/store}).  See the examples in the @file{share/ddclient} directory of the @code{ddclient} package.
fr: Remarquez que ddclient a besoin d'accéder à des identifiants stockés dans un @dfn{fichier de secrets}, par défaut @file{/etc/ddclient/secrets} (voir @code{secret-file} plus bas).  On s'attend à ce que vous créiez ce fichier manuellement, de manière externe à guix (vous @emph{pourriez} ajouter ce fichier dans une partie de votre configuration, par exemple avec @code{plain-file}, mais il serait lisible pour tout le monde via @file{/gnu/store}).  Vois les exemples dans le répertoire @file{share/ddclient} du paquet @code{ddclient}.

note: type: Plain text
en: Available @code{ddclient-configuration} fields are:
fr: Les champs de @code{ddclient-configuration} disponibles sont :

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} package ddclient
fr: {paramètre de @code{ddclient-configuration}} package ddclient

note: type: deftypevr
en: The ddclient package.
fr: Le paquet ddclient.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} integer daemon
fr: {paramètre de @code{ddclient-configuration}} integer daemon

note: type: deftypevr
en: The period after which ddclient will retry to check IP and domain name.
fr: La période après laquelle ddclient réessaiera de vérifier l'IP et le nom de domaine.

note: type: deftypevr
en: Defaults to @samp{300}.
fr: La valeur par défaut est @samp{300}.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} boolean syslog
fr: {paramètre de @code{ddclient-configuration}} boolean syslog

note: type: deftypevr
en: Use syslog for the output.
fr: Utiliser syslog pour la sortie.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} string mail
fr: {paramètre de @code{ddclient-configuration}} string mail

note: type: deftypevr
en: Mail to user.
fr: Courriel de l'utilisateur.

note: type: deftypevr
en: Defaults to @samp{"root"}.
fr: La valeur par défaut est @samp{"root"}.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} string mail-failure
fr: {paramètre de @code{ddclient-configuration}} string mail-failure

note: type: deftypevr
en: Mail failed update to user.
fr: Courriel de l'utilisateur pour les échecs.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} string pid
fr: {paramètre de @code{ddclient-configuration}} string pid

note: type: deftypevr
en: The ddclient PID file.
fr: Le fichier de PID de ddclient.

note: type: deftypevr
en: Defaults to @samp{"/var/run/ddclient/ddclient.pid"}.
fr: La valeur par défaut est @samp{"/var/run/ddclient/ddclient.pid"}.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} boolean ssl
fr: {paramètre de @code{ddclient-configuration}} boolean ssl

note: type: deftypevr
en: Enable SSL support.
fr: Activer le support de SSL.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} string user
fr: {paramètre de @code{ddclient-configuration}} string user

note: type: deftypevr
en: Specifies the user name or ID that is used when running ddclient program.
fr: Spécifie le nm d'utilisateur ou l'ID qui est utilisé pour lancer le programme ddclient.

note: type: deftypevr
en: Defaults to @samp{"ddclient"}.
fr: La valeur par défaut est @samp{"ddclient"}.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} string group
fr: {paramètre de @code{ddclient-configuration}} string group

note: type: deftypevr
en: Group of the user who will run the ddclient program.
fr: Groupe de l'utilisateur qui lancera le programme ddclient.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} string secret-file
fr: {paramètre de @code{ddclient-configuration}} string secret-file

note: type: deftypevr
en: Secret file which will be appended to @file{ddclient.conf} file.  This file contains credentials for use by ddclient.  You are expected to create it manually.
fr: Fichier de secrets qui sera ajouté au fichier @file{ddclient.conf}.  Ce fichier contient les paramètres d'authentification utilisés par ddclient.  On s'attend à ce que vous le créiez manuellement.

note: type: deftypevr
en: Defaults to @samp{"/etc/ddclient/secrets.conf"}.
fr: La valeur par défaut est @samp{"/etc/ddclient/secrets.conf"}.

note: type: deftypevr
en: {@code{ddclient-configuration} parameter} list extra-options
fr: {paramètre de @code{ddclient-configuration}} list extra-options

note: type: deftypevr
en: Extra options will be appended to @file{ddclient.conf} file.
fr: Options supplémentaires qui seront ajoutées au fichier @file{ddclient.conf}.

note: type: cindex
en: VNC (virtual network computing)
fr: VNC (réseau privé virtuel)

note: type: cindex
en: XDMCP (x display manager control protocol)
fr: XDMCP (protocole de contrôle de gestion de l'affichage X)

note: type: Plain text
en: The @code{(gnu services vnc)} module provides services related to @dfn{Virtual Network Computing} (VNC), which makes it possible to locally use graphical Xorg applications running on a remote machine.  Combined with a graphical manager that supports the @dfn{X Display Manager Control Protocol}, such as GDM (@pxref{gdm}) or LightDM (@pxref{lightdm}), it is possible to remote an entire desktop for a multi-user environment.
fr: le module @code{(gnu services vnc)} fournit les services liés à @dfn{l'informatique virtuelle en réseau} (VNC), qui rend possible l'utilisation locale d'applications Xorg graphiques qui tournent sur une machine distante. Avec un gestionnaire graphique qui prend en charge le @dfn{protocole de contrôle de gestion de l'affichage X}, comme GDM (@pxref{gdm}) ou LightDM (@pxref{lightdm}), il est possible de rendre un bureau à distance complet pour un environnement multi-utilisateur.

note: type: Plain text
en: Xvnc is a VNC server that spawns its own X window server; which means it can run on headless servers.  The Xvnc implementations provided by the @code{tigervnc-server} and @code{turbovnc} aim to be fast and efficient.
fr: Xvnc est un serveur VNC qui démarre son propre serveur X. Cela signifie qu'il peut lancer des serveurs sans affichage. Les implémentations de Xvnc fournies par @code{tigervnc-server} et @code{turbovnc} se veulent rapides et efficaces.

note: type: defvar
en: {Scheme Variable} xvnc-service-type
fr: {Variable Scheme} xvnc-service-type

note: type: defvar
en: The @code{xvnc-server-type} service can be configured via the @code{xvnc-configuration} record, documented below.  A second virtual display could be made available on a remote machine via the following configuration:
fr: Le service @code{xvnc-server-type} peut être configuré via l'enregistrement @code{xvnc-configuration}, documenté ci-dessous. Un second affichage virtuel peut être créé sur une machine à distance via la configuration suivante :

note: type: Plain text
en: As a demonstration, the @command{xclock} command could then be started on the remote machine on display number 10, and it could be displayed locally via the @command{vncviewer} command:
fr: Pour l'exemple, la commande @command{xclock} peut ensuite être démarrée sur la machine à distance sur l'affichage numéro 10, et elle peut être affichée localement via la commande @command{vncviewer} :

note: type: example
en: # Start xclock on the remote machine.
    ssh -L5910:localhost:5910 -- guix shell xclock -- env DISPLAY=:10 xclock
    # Access it via VNC.
    guix shell tigervnc-client -- vncviewer localhost:5910
fr: # Démarre xclock sur la machine distante.
    ssh -L5910:localhost:5910 -- guix shell xclock -- env DISPLAY=:10 xclock
    # On y accède via VNC.
    guix shell tigervnc-client -- vncviewer localhost:5910

note: type: Plain text
en: The following configuration combines XDMCP and Inetd to allow multiple users to concurrently use the remote system, login in graphically via the GDM display manager:
fr: La configuration suivante combine XDMCP et Inetd pour permettre à plusieurs utilisateurs ou utilisatrices d'utiliser le système à distance et de se connecter via le gestionnaire d'affichage GDM en même temps :

note: type: Plain text
en: A remote user could then connect to it by using the @command{vncviewer} command or a compatible VNC client and start a desktop session of their choosing:
fr: Vous pouvez ensuite vous connecter à distance en utilisant la commande @command{vncviewer} ou un client VNC compatible et démarrer une session de bureau de votre choix :

note: type: example
en: vncviewer remote-host:5905
fr: vncviewer hôte-distant:5905

note: type: quotation
en: Unless your machine is in a controlled environment, for security reasons, the @code{localhost?} configuration of the @code{xvnc-configuration} record should be left to its default @code{#t} value and exposed via a secure means such as an SSH port forward.  The XDMCP port, UDP 177 should also be blocked from the outside by a firewall, as it is not a secure protocol and can expose login credentials in clear.
fr: À moins que votre machine ne se trouve dans un environnement contrôlé, pour des raisons de sécurité, la configuration @code{localhost?} de l'enregistrement @code{xvnc-configuration} devrait garder sa valeur par défaut @code{#t} et être exposé par un moyen sécurisé comme la redirection de port SSH. Le port XDMCP, UDP 177 devrait aussi être bloqué de l'extérieur par un pare-feu, car ce n'est pas un protocole sécurisé et peut exposer les identifiants en clair.

note: type: deftp
en: {Data Type} xvnc-configuration
fr: {Type de données} xvnc-configuration

note: type: deftp
en: Available @code{xvnc-configuration} fields are:
fr: Les champs de @code{xvnc-configuration} disponibles sont :

note: type: item
en: @code{xvnc} (default: @code{tigervnc-server}) (type: file-like)
fr: @code{xvnc} (par défaut : @code{tigervnc-server}) (type : simili-fichier)

note: type: table
en: The package that provides the Xvnc binary.
fr: Le paquet qui fournit le binaire Xvnc.

note: type: item
en: @code{display-number} (default: @code{0}) (type: number)
fr: @code{display-number} (par défaut : @code{0}) (type : nombre)

note: type: table
en: The display number used by Xvnc.  You should set this to a number not already used a Xorg server.
fr: Le numéro d'affichage utilisé par Xvnc. Vous devriez le paramétrer à un numéro non utilisé par un serveur Xorg.

note: type: item
en: @code{geometry} (default: @code{"1024x768"}) (type: string)
fr: @code{geometry} (par défaut : @code{"1024x768"}) (type : chaine)

note: type: table
en: The size of the desktop to be created.
fr: La taille du bureau à créer.

note: type: item
en: @code{depth} (default: @code{24}) (type: color-depth)
fr: @code{depth} (par défaut : @code{24}) (type : color-depth)

note: type: table
en: The pixel depth in bits of the desktop to be created.  Accepted values are 16, 24 or 32.
fr: La profondeur de pixel en bits du bureau à créer . Les valeurs possibles sont 16, 24 et 32.

note: type: item
en: @code{port} (type: maybe-port)
fr: @code{port} (type : peut-être-port)

note: type: table
en: The port on which to listen for connections from viewers.  When left unspecified, it defaults to 5900 plus the display number.
fr: Le port sur lequel écouter les connexions entrantes des visualiseurs. Si la valeur n'est pas spécifiée, écoute sur le port 5900 plus le numéro d'affichage par défaut.

note: type: item
en: @code{ipv4?} (default: @code{#t}) (type: boolean)
fr: @code{ipv4?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Use IPv4 for incoming and outgoing connections.
fr: Utiliser IPv4 pour les connexions entrantes et sortantes.

note: type: item
en: @code{ipv6?} (default: @code{#t}) (type: boolean)
fr: @code{ipv6?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Use IPv6 for incoming and outgoing connections.
fr: Utiliser IPv6 pour les connexions entrantes et sortantes.

note: type: item
en: @code{password-file} (type: maybe-string)
fr: @code{password-file} (type : peut-être-chaine)

note: type: table
en: The password file to use, if any.  Refer to vncpasswd(1) to learn how to generate such a file.
fr: Le mot de passe à utiliser, si vous en voulez un. Consultez vncpasswd(1) pour apprendre à générer un tel fichier.

note: type: table
en: Query the XDMCP server for a session.  This enables users to log in a desktop session from the login manager screen.  For a multiple users scenario, you'll want to enable the @code{inetd?} option as well, so that each connection to the VNC server is handled separately rather than shared.
fr: Demande une session au serveur XDMCP. Cela permet aux utilisateurs et aux utilisatrices de se connecter à une session de bureau depuis l'écran du gestionnaire de connexion. Pour un scénario à plusieurs utilisateurs et utilisatrices, vous devrez également activer l'option @code{inetd?} pour que chaque connexion au serveur VNC soit gérée séparément, plutôt qu'elles soient partagées.

note: type: item
en: @code{inetd?} (default: @code{#f}) (type: boolean)
fr: @code{inetd?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Use an Inetd-style service, which runs the Xvnc server on demand.
fr: Utiliser un service de type Inetd, qui lance le serveur Xvnc à la demande.

note: type: item
en: @code{frame-rate} (default: @code{60}) (type: number)
fr: @code{frame-rate} (par défaut : @code{60}) (type : entier)

note: type: table
en: The maximum number of updates per second sent to each client.
fr: Le nombre maximum de mise à jour par seconde envoyées à chaque client.

note: type: item
en: @code{security-types} (default: @code{("None")}) (type: security-types)
fr: @code{security-types} (par défaut : @code{("None")}) (type : types-de-sécurité)

note: type: table
en: The allowed security schemes to use for incoming connections.  The default is "None", which is safe given that Xvnc is configured to authenticate the user via the display manager, and only for local connections.  Accepted values are any of the following: ("None" "VncAuth" "Plain" "TLSNone" "TLSVnc" "TLSPlain" "X509None" "X509Vnc")
fr: Les schémas de sécurité autorisés à utiliser pour les connexions entrantes. La valeur par défaut est "None", ce qui est sûr étant donné que Xvnc est configuré pour authentifier les personnes via le gestionnaire d'affichage et seulement pour les connexions locales. Les valeurs acceptées sont les suivantes : ("None" "VncAuth" "Plain" "TLSNone" "TLSVnc" "TLSPlain" "X509None" "X509Vnc")

note: type: item
en: @code{localhost?} (default: @code{#t}) (type: boolean)
fr: @code{localhost?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Only allow connections from the same machine.  It is set to #true by default for security, which means SSH or another secure means should be used to expose the remote port.
fr: Ne permettre que les connexions de la même machine. La valeur est #true par défaut par sécurité, ce qui signifie que SSH ou d'autres manières sécurisées doivent être utilisés pour exposer le port distant.

note: type: item
en: @code{log-level} (default: @code{30}) (type: log-level)
fr: @code{log-level} (par défaut : @code{30}) (type : niveau-de-journalisation)

note: type: table
en: The log level, a number between 0 and 100, 100 meaning most verbose output.  The log messages are output to syslog.
fr: Le niveau de journalisation, un nombre entre 0 et 100, 100 étant la sortie la plus verbeuse. Les messages de journalisation sont envoyés au syslog.

note: type: item
en: @code{extra-options} (default: @code{()}) (type: strings)
fr: @code{extra-options} (par défaut : @code{()}) (type : chaines)

note: type: table
en: This can be used to provide extra Xvnc options not exposed via this <xvnc-configuration> record.
fr: On peut utiliser cette option pour fournir des options Xvnc supplémentaires qui ne sont pas proposées par cet enregistrement <xvnc-configuration>.

note: type: cindex
en: VPN (virtual private network)
fr: VPN (réseau privé virtuel)

note: type: cindex
en: virtual private network (VPN)
fr: réseau privé virtuel (VPN)

note: type: Plain text
en: The @code{(gnu services vpn)} module provides services related to @dfn{virtual private networks} (VPNs).
fr: Le module @code{(gnu services vpn)} fournit des services liés aux @dfn{réseaux privés virtuels} (VPN).

note: type: defvr
en: {Scheme Variable} bitmask-service-type
fr: {Variable Scheme} bitmask-service-type

note: type: defvr
en: A service type for the @uref{https://bitmask.net, Bitmask} VPN client.  It makes the client available in the system and loads its polkit policy.  Please note that the client expects an active polkit-agent, which is either run by your desktop-environment or should be run manually.
fr: Un type de service pour le client VPN @uref{https://bitmask.net, Bitmask}. Il rend le client disponible dans le système et charge sa politique Polkit. Remarquez que le client attend un @code{polkit-agent} actif, lancé soit par votre environnement de bureau soit par vous manuellement.

note: type: Plain text
en: It provides a @emph{client} service for your machine to connect to a VPN, and a @emph{server} service for your machine to host a VPN@.
fr: Il fournit un service @emph{client} pour que votre machine se connecte à un VPN et un service @emph{serveur} pour que votre machine héberge un VPN@.

note: type: deffn
en: {Scheme Procedure} openvpn-client-service @
fr: {Procédure Scheme} openvpn-client-service @

note: type: deffn
en: Return a service that runs @command{openvpn}, a VPN daemon, as a client.
fr: Renvoie un service qui lance @command{openvpn}, un démon VPN, en tant que client.

note: type: deffn
en: {Scheme Procedure} openvpn-server-service @
fr: {Procédure Scheme} openvpn-server-service @

note: type: deffn
en: Return a service that runs @command{openvpn}, a VPN daemon, as a server.
fr: Renvoie un service qui lance @command{openvpn}, un démon VPN, en tant que serveur.

note: type: deffn
en: Both can be run simultaneously.
fr: Les deux services peuvent être lancés en même temps.

note: type: deftp
en: {Data Type} openvpn-client-configuration
fr: {Type de données} openvpn-client-configuration

note: type: deftp
en: Available @code{openvpn-client-configuration} fields are:
fr: Les champs de @code{openvpn-client-configuration} disponibles sont :

note: type: item
en: @code{openvpn} (default: @code{openvpn}) (type: file-like)
fr: @code{openvpn} (par défaut : @code{openvin}) (type : simili-fichier)

note: type: table
en: The OpenVPN package.
fr: Le paquet OpenVPN.

note: type: item
en: @code{pid-file} (default: @code{"/var/run/openvpn/openvpn.pid"}) (type: string)
fr: @code{pid-file} (par défaut : @code{"/var/run/openvpn/openvpn.pid"}) (type : chaine)

note: type: table
en: The OpenVPN pid file.
fr: Le fichier de PID d'OpenVPN.

note: type: item
en: @code{proto} (default: @code{udp}) (type: proto)
fr: @code{proto} (par défaut : @code{udp}) (type : proto)

note: type: table
en: The protocol (UDP or TCP) used to open a channel between clients and servers.
fr: Le protocole (UDP ou TCP) utilisé pour ouvrir un canal entre les clients et les serveurs.

note: type: item
en: @code{dev} (default: @code{tun}) (type: dev)
fr: @code{dev} (par défaut : @code{tun}) (type : dev)

note: type: table
en: The device type used to represent the VPN connection.
fr: Le périphérique utilisé pour représenter la connexion VPN.

note: type: item
en: @code{ca} (default: @code{"/etc/openvpn/ca.crt"}) (type: maybe-string)
fr: @code{ca} (par défaut : @code{"/etc/openvpn/ca.crt"}) (type : peut-être-chaine)

note: type: table
en: The certificate authority to check connections against.
fr: L'autorité de certification qui sert à vérifier les connexions.

note: type: item
en: @code{cert} (default: @code{"/etc/openvpn/client.crt"}) (type: maybe-string)
fr: @code{certe} (par défaut : @code{"/etc/openvpn/client.crt"}) (type : peut-être-chaine)

note: type: table
en: The certificate of the machine the daemon is running on.  It should be signed by the authority given in @code{ca}.
fr: Le certificat de la machine sur laquelle tourne le démon.  Il devrait être signé par l'autorité indiquée dans @code{ca}.

note: type: item
en: @code{key} (default: @code{"/etc/openvpn/client.key"}) (type: maybe-string)
fr: @code{key} (par défaut : @code{"/etc/openvpn/client.key"}) (type : peut-être-chaine)

note: type: table
en: The key of the machine the daemon is running on.  It must be the key whose certificate is @code{cert}.
fr: La clef de la machine sur laquelle tourne le démon.  Elle doit être la clef dont le certificat est donné dans @code{cert}.

note: type: item
en: @code{comp-lzo?} (default: @code{#t}) (type: boolean)
fr: @code{comp-lzo?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Whether to use the lzo compression algorithm.
fr: Indique s'il faut utiliser l'algorithme de compression lzo.

note: type: item
en: @code{persist-key?} (default: @code{#t}) (type: boolean)
fr: @code{persist-key?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Don't re-read key files across SIGUSR1 or --ping-restart.
fr: Ne pas relire les fichiers de clefs entre les SIGUSR1 et les --ping-restart.

note: type: item
en: @code{persist-tun?} (default: @code{#t}) (type: boolean)
fr: @code{persist-tun?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Don't close and reopen TUN/TAP device or run up/down scripts across SIGUSR1 or --ping-restart restarts.
fr: Ne pas fermer et rouvrir les périphériques TUN/TAP ou lancer de scripts de démarrage/d'arrêt entre les SIGUSR1 et les --ping-restart.

note: type: item
en: @code{fast-io?} (default: @code{#f}) (type: boolean)
fr: @code{fast-io?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: (Experimental) Optimize TUN/TAP/UDP I/O writes by avoiding a call to poll/epoll/select prior to the write operation.
fr: (Expérimental) Optimise les écritures TUN/TAP/UDP en évitant d'appeler poll/epoll/select avant l'opération d'écriture.

note: type: item
en: @code{verbosity} (default: @code{3}) (type: number)
fr: @code{verbosity} (par défaut : @code{3}) (type : entier)

note: type: table
en: Verbosity level.
fr: Niveau de verbosité.

note: type: item
en: @code{tls-auth} (default: @code{#f}) (type: tls-auth-client)
fr: @code{tls-auth} (par défaut : @code{#f}) (type : tls-auth-client)

note: type: table
en: Add an additional layer of HMAC authentication on top of the TLS control channel to protect against DoS attacks.
fr: Ajoute une couche d'authentification HMAC supplémentaire au dessus du canal de contrôle TLS pour se protéger contre les attaques DoS.

note: type: item
en: @code{auth-user-pass} (type: maybe-string)
fr: @code{auth-user-pass} (type : peut-être-chaine)

note: type: table
en: Authenticate with server using username/password.  The option is a file containing username/password on 2 lines.  Do not use a file-like object as it would be added to the store and readable by any user.
fr: S'authentifie avec le serveur en utilisant le nom d'utilisateur et le mot de passe.  L'option est un fichier contenant le nom d'utilisateur et le mot de passe sur deux lignes.  N'utilisez pas un objet simili-fichier car il serait ajouté au dépôt et serait lisible pour n'importe quel utilisateur.

note: type: item
en: @code{verify-key-usage?} (default: @code{#t}) (type: key-usage)
fr: @code{verify-key-usage?} (par défaut : @code{#t}) (type : key-usage)

note: type: table
en: Whether to check the server certificate has server usage extension.
fr: Indique s'il faut vérifier que le certificat du serveur a l'extension d'utilisation.

note: type: item
en: @code{bind?} (default: @code{#f}) (type: bind)
fr: @code{bind?} (par défaut : @code{#f}) (type : bind)

note: type: table
en: Bind to a specific local port number.
fr: Se lier à un port spécifique.

note: type: item
en: @code{resolv-retry?} (default: @code{#t}) (type: resolv-retry)
fr: @code{resolv-retry?} (par défaut : @code{#t}) (type : resolv-retry)

note: type: table
en: Retry resolving server address.
fr: Réessayer de résoudre l'adresse du serveur.

note: type: item
en: @code{remote} (default: @code{()}) (type: openvpn-remote-list)
fr: @code{remote} (par défaut : @code{()}) (type : liste-de-openvpn-remote)

note: type: table
en: A list of remote servers to connect to.
fr: Une liste de serveurs distants sur lesquels se connecter.

note: type: deftp
en: {Data Type} openvpn-remote-configuration
fr: {Type de données} openvpn-remote-configuration

note: type: deftp
en: Available @code{openvpn-remote-configuration} fields are:
fr: Les champs de @code{openvpn-remote-configuration} disponibles sont :

note: type: item
en: @code{name} (default: @code{"my-server"}) (type: string)
fr: @code{name} (par défaut : @code{"my-server"}) (type : chaine)

note: type: table
en: Server name.
fr: Nom du serveur.

note: type: item
en: @code{port} (default: @code{1194}) (type: number)
fr: @code{port} (par défaut : @code{1194}) (type : nombre)

note: type: table
en: Port number the server listens to.
fr: Numéro de port sur lequel écoute le serveur.

note: type: deftp
en: {Data Type} openvpn-server-configuration
fr: {Type de données} openvpn-server-configuration

note: type: deftp
en: Available @code{openvpn-server-configuration} fields are:
fr: Les champs de @code{openvpn-server-configuration} disponibles sont :

note: type: item
en: @code{tls-auth} (default: @code{#f}) (type: tls-auth-server)
fr: @code{tls-auth} (par défaut : @code{#f}) (type : tls-auth-server)

note: type: table
en: Specifies the port number on which the server listens.
fr: Spécifie le numéro de port sur lequel les serveurs écoutent.

note: type: item
en: @code{server} (default: @code{"10.8.0.0 255.255.255.0"}) (type: ip-mask)
fr: @code{server} (par défaut : @code{"10.8.0.0 255.255.255.0"}) (type : ip-mask)

note: type: table
en: An ip and mask specifying the subnet inside the virtual network.
fr: Une ip et un masque de sous-réseau spécifiant le sous-réseau dans le réseau virtuel.

note: type: item
en: @code{server-ipv6} (default: @code{#f}) (type: cidr6)
fr: @code{server-ipv6} (par défaut : @code{#f}) (type : cidr6)

note: type: table
en: A CIDR notation specifying the IPv6 subnet inside the virtual network.
fr: Une notation CIDR pour spécifier le sous-réseau IPv6 dans le réseau virtuel.

note: type: item
en: @code{dh} (default: @code{"/etc/openvpn/dh2048.pem"}) (type: string)
fr: @code{dh} (par défaut : @code{"/etc/openvpn/dh2048.pem"}) (type : chaine)

note: type: table
en: The Diffie-Hellman parameters file.
fr: Le fichier de paramètres Diffie-Hellman.

note: type: item
en: @code{ifconfig-pool-persist} (default: @code{"/etc/openvpn/ipp.txt"}) (type: string)
fr: @code{ifconfig-pool-persist} (par défaut : @code{"/etc/openvpn/ipp.txt"}) (type : chaine)

note: type: table
en: The file that records client IPs.
fr: Le fichier qui enregistre les IP des clients.

note: type: item
en: @code{redirect-gateway?} (default: @code{#f}) (type: gateway)
fr: @code{redirect-gateway?} (par défaut : @code{#f}) (type : gateway)

note: type: table
en: When true, the server will act as a gateway for its clients.
fr: Lorsque la valeur est vraie, le serveur agira comme une passerelle pour ses clients.

note: type: item
en: @code{client-to-client?} (default: @code{#f}) (type: boolean)
fr: @code{client-to-client?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: When true, clients are allowed to talk to each other inside the VPN.
fr: Lorsque la valeur est vraie, les clients sont autorisés à se parler entre eux dans le VPN.

note: type: item
en: @code{keepalive} (default: @code{(10 120)}) (type: keepalive)
fr: @code{keepalive} (par défaut : @code{(10 120)}) (type : keepalive)

note: type: table
en: Causes ping-like messages to be sent back and forth over the link so that each side knows when the other side has gone down.  @code{keepalive} requires a pair.  The first element is the period of the ping sending, and the second element is the timeout before considering the other side down.
fr: Fait que des messages de ping sont envoyés régulièrement dans les deux sens pour que chaque côté sache quand l'autre n'est plus disponible.  @code{keepalive} a besoin d'une paire.  Le premier élément est la période d'envoi du ping, et le second élément est le délai d'attente avant de considéré que l'autre côté n'est plus disponible.

note: type: item
en: @code{max-clients} (default: @code{100}) (type: number)
fr: @code{max-clients} (par défaut : @code{100}) (type : nombre)

note: type: table
en: The maximum number of clients.
fr: Le nombre maximum de clients.

note: type: item
en: @code{status} (default: @code{"/var/run/openvpn/status"}) (type: string)
fr: @code{status} (par défaut : @code{"/var/run/openvpn/status"}) (type : chaine)

note: type: table
en: The status file.  This file shows a small report on current connection.  It is truncated and rewritten every minute.
fr: Le fichier de statut.  Ce fichier montre un court rapport sur les connexions actuelles.  Il est tronqué et réécrit toutes les minutes.

note: type: item
en: @code{client-config-dir} (default: @code{()}) (type: openvpn-ccd-list)
fr: @code{client-config-dir} (par défaut : @code{()}) (type : liste-de-openvpn-ccd)

note: type: table
en: The list of configuration for some clients.
fr: La liste des configuration pour certains clients.

note: type: Plain text
en: Currently, the strongSwan service only provides legacy-style configuration with @file{ipsec.conf} and @file{ipsec.secrets} files.
fr: Pour l'instant, le service @code{strongSwan} fournit seulement une configuration héritée des version précédentes avec des fichiers @file{ipsec.conf} et @file{ipsec.secrets}.

note: type: defvr
en: {Scheme Variable} strongswan-service-type
fr: {Variable Scheme} strongswan-service-type

note: type: defvr
en: A service type for configuring strongSwan for IPsec @acronym{VPN, Virtual Private Networking}.  Its value must be a @code{strongswan-configuration} record as in this example:
fr: Un type de service pour configurer strongSwan pour un @acronym{VPN, réseau privé virtuel} IPsec.  Sa valeur doit être un enregistrement @code{strongswan-configuration} comme dans cet exemple :

note: type: deftp
en: {Data Type} strongswan-configuration
fr: {Type de données} strongswan-configuration

note: type: deftp
en: Data type representing the configuration of the StrongSwan service.
fr: Le type de données représentant la configuration du service StrongSwan.

note: type: table
en: The strongSwan package to use for this service.
fr: Le paquet strongSwan à utiliser pour ce service.

note: type: item
en: @code{ipsec-conf} (default: @code{#f})
fr: @code{ipsec-conf} (par défaut : @code{#f})

note: type: table
en: The file name of your @file{ipsec.conf}.  If not @code{#f}, then this and @code{ipsec-secrets} must both be strings.
fr: Le nom de fichier de votre @file{ipsec.conf}. Si différent de @code{#f}, alors cette valeur et @code{ipsec-secrets} doivent toutes deux être des chaînes de caractères.

note: type: item
en: @code{ipsec-secrets} (default @code{#f})
fr: @code{ipsec-secrets} (par défaut : @code{#f})

note: type: table
en: The file name of your @file{ipsec.secrets}.  If not @code{#f}, then this and @code{ipsec-conf} must both be strings.
fr: Le nom de fichier de votre @file{ipsec.secrets}. Si différent de @code{#f}, alors cette valeur et @code{ipsec-conf} doivent toutes deux être des chaînes de caractères.

note: type: defvr
en: {Scheme Variable} wireguard-service-type
fr: {Variable Scheme} wireguard-service-type

note: type: defvr
en: A service type for a Wireguard tunnel interface.  Its value must be a @code{wireguard-configuration} record as in this example:
fr: Un type de service pour une interface de tunnel Wireguard.  Sa valeur doit être un enregistrement @code{wireguard-configuration} comme dans cet exemple :

note: type: deftp
en: {Data Type} wireguard-configuration
fr: {Type de données} wireguard-configuration

note: type: deftp
en: Data type representing the configuration of the Wireguard service.
fr: Le type de données représentant la configuration du service Wireguard.

note: type: table
en: The wireguard package to use for this service.
fr: Le paquet wireguard à utiliser pour ce service.

note: type: item
en: @code{interface} (default: @code{"wg0"})
fr: @code{interface} (par défaut : @code{"wg0"})

note: type: table
en: The interface name for the VPN.
fr: Le nom d'interface pour le VPN.

note: type: item
en: @code{addresses} (default: @code{'("10.0.0.1/32")})
fr: @code{addresses} (par défaut : @code{"10.0.01/32"})

note: type: table
en: The IP addresses to be assigned to the above interface.
fr: Les adresses IP à assigner à l'interface ci-dessus.

note: type: item
en: @code{port} (default: @code{51820})
fr: @code{port} (par défaut : @code{51820})

note: type: table
en: The port on which to listen for incoming connections.
fr: Le port sur lequel écouter les connexions entrantes.

note: type: item
en: @code{dns} (default: @code{#f})
fr: @code{dns} (par défaut : @code{#f})

note: type: table
en: The DNS server(s) to announce to VPN clients via DHCP.
fr: Les serveurs DNS à annoncer aux clients VPN via DHCP.

note: type: item
en: @code{private-key} (default: @code{"/etc/wireguard/private.key"})
fr: @code{private-key} (par défaut : @code{"/etc/wireguard/private.key"})

note: type: table
en: The private key file for the interface.  It is automatically generated if the file does not exist.
fr: Le fichier de clé privée pour l'interface. Il est automatiquement généré si le fichier n'existe pas.

note: type: item
en: @code{peers} (default: @code{'()})
fr: @code{peers} (par défaut : @code{'()})

note: type: table
en: The authorized peers on this interface.  This is a list of @var{wireguard-peer} records.
fr: Les pairs autorisés sur cette interface. C'est une liste d'enregistrements @var{wireguard-peer}.

note: type: item
en: @code{pre-up} (default: @code{'()})
fr: @code{pre-up} (par défaut : @code{'()})

note: type: table
en: The script commands to be run before setting up the interface.
fr: Les commandes de script à lancer avant de configurer l'interface.

note: type: item
en: @code{post-up} (default: @code{'()})
fr: @code{post-up} (par défaut : @code{'()})

note: type: table
en: The script commands to be run after setting up the interface.
fr: Les commandes de script à lancer après la configuration de l'interface.

note: type: item
en: @code{pre-down} (default: @code{'()})
fr: @code{pre-down} (par défaut : @code{'()})

note: type: table
en: The script commands to be run before tearing down the interface.
fr: Les commandes de script à lancer avec d'arrêter l'interface.

note: type: item
en: @code{post-down} (default: @code{'()})
fr: @code{post-down} (par défaut : @code{'()})

note: type: table
en: The script commands to be run after tearing down the interface.
fr: Les commandes de script à lancer après l'arrêt de l'interface.

note: type: item
en: @code{table} (default: @code{"auto"})
fr: @code{table} (par défaut : @code{"auto"})

note: type: table
en: The routing table to which routes are added, as a string.  There are two special values: @code{"off"} that disables the creation of routes altogether, and @code{"auto"} (the default) that adds routes to the default table and enables special handling of default routes.
fr: La table de routage à laquelle les routes sont ajoutées, en tant que chaine. Il y a deux valeurs spéciales : @code{"off"} qui désactive la création de route complètement, et @code{"auto"} (par défaut) qui ajoute les routes à la table par défaut et active la gestion spéciale des routes par défaut.

note: type: deftp
en: {Data Type} wireguard-peer
fr: {Type de données} wireguard-peer

note: type: deftp
en: Data type representing a Wireguard peer attached to a given interface.
fr: Type de données représentant un pair Wireguard attaché à une interface donnée.

note: type: table
en: The peer name.
fr: Le nom du pair.

note: type: item
en: @code{endpoint} (default: @code{#f})
fr: @code{endpoint} (par défaut : @code{#f})

note: type: table
en: The optional endpoint for the peer, such as @code{"demo.wireguard.com:51820"}.
fr: Le point d'entrée facultatif du pair, comme @code{"demo.wireguard.com:51820"}.

note: type: table
en: The peer public-key represented as a base64 string.
fr: La clé publique du pair, représentée par une chaîne en base64.

note: type: table
en: A list of IP addresses from which incoming traffic for this peer is allowed and to which incoming traffic for this peer is directed.
fr: Une liste d'adresses IP à partir desquelles le trafic entrant pour ce pair est autorisé et vers lesquelles le trafic à destination de ce pair est dirigé.

note: type: item
en: @code{keep-alive} (default: @code{#f})
fr: @code{keep-alive} (par défaut : @code{#f})

note: type: table
en: An optional time interval in seconds.  A packet will be sent to the server endpoint once per time interval.  This helps receiving incoming connections from this peer when you are behind a NAT or a firewall.
fr: Une durée en seconde facultative. Un paquet sera régulièrement envoyé au serveur après cette durée. Cela aide à recevoir les connexions entrantes de ce pair si vous êtes derrière un NAT ou un pare-feu.

note: type: Plain text
en: The @code{(gnu services nfs)} module provides the following services, which are most commonly used in relation to mounting or exporting directory trees as @dfn{network file systems} (NFS).
fr: Le module @code{(gnu services nfs)} fournit les services suivants, qui sont tous utilisés pour monter et exporter des arborescences de répertoires en @dfn{network file systems} (NFS).

note: type: Plain text
en: While it is possible to use the individual components that together make up a Network File System service, we recommended to configure an NFS server with the @code{nfs-service-type}.
fr: Bien qu'il soit possible d'utiliser des composants individuels qui forment ensemble un service de système de fichiers en réseau, nous recommandons de configurer un serveur NFS avec @code{nfs-service-type}.

note: type: subsubheading
en: NFS Service
fr: Services NFS

note: type: cindex
en: NFS, server
fr: NFS, serveur

note: type: Plain text
en: The NFS service takes care of setting up all NFS component services, kernel configuration file systems, and installs configuration files in the locations that NFS expects.
fr: Le service NFS s'occupe de paramétrer tous les services composant NFS, les systèmes de fichiers de configuration du noyau et installe les fichiers de configuration aux endroit attendus par NFS.

note: type: defvr
en: {Scheme Variable} nfs-service-type
fr: {Variable Scheme} nfs-service-type

note: type: defvr
en: A service type for a complete NFS server.
fr: Un type de service pour un serveur NFS complet.

note: type: deftp
en: {Data Type} nfs-configuration
fr: {Type de données} nfs-configuration

note: type: deftp
en: This data type represents the configuration of the NFS service and all of its subsystems.
fr: Ce type de données représente la configuration d'un service NFS et de tous ses sous-systèmes.

note: type: deftp
en: It has the following parameters:
fr: Il prend les paramètres suivants :

note: type: item
en: @code{nfs-utils} (default: @code{nfs-utils})
fr: @code{nfs-utils} (par défaut : @code{nfs-utils})

note: type: table
en: The nfs-utils package to use.
fr: Le paquet nfs-utils à utiliser.

note: type: item
en: @code{nfs-versions} (default: @code{'("4.2" "4.1" "4.0")})
fr: @code{nfs-versions} (par défaut : @code{'("4.2" "4.1" "4.0")})

note: type: table
en: If a list of string values is provided, the @command{rpc.nfsd} daemon will be limited to supporting the given versions of the NFS protocol.
fr: Si une liste de chaines est fournie, le démon @command{rpc.nfsd} sera limité à la prise en charge des versions données du protocole NFS.

note: type: item
en: @code{exports} (default: @code{'()})
fr: @code{exports} (par défaut : @code{'()})

note: type: table
en: This is a list of directories the NFS server should export.  Each entry is a list consisting of two elements: a directory name and a string containing all options.  This is an example in which the directory @file{/export} is served to all NFS clients as a read-only share:
fr: C'est une liste de répertoires que le serveur NFS devrait exporter.  Chaque entrée est une liste consistant en deux éléments : un nom de répertoire et une chaine de caractères contenant toutes les options.  Voici un exemple dans lequel le répertoire @file{/export} est servi à tous les clients en lecture-seule :

note: type: item
en: @code{rpcmountd-port} (default: @code{#f})
fr: @code{rpcmountd-port} (par défaut : @code{#f})

note: type: table
en: The network port that the @command{rpc.mountd} daemon should use.
fr: Le port réseau que le démon @command{rpc.mountd} devrait utiliser.

note: type: item
en: @code{rpcstatd-port} (default: @code{#f})
fr: @code{rpcstatd-port} (par défaut : @code{#f})

note: type: table
en: The network port that the @command{rpc.statd} daemon should use.
fr: Le port réseau que le démon @command{rpc.statd} devrait utiliser.

note: type: item
en: @code{rpcbind} (default: @code{rpcbind})
fr: @code{rpcbind} (par défaut : @code{rpcbind})

note: type: table
en: The rpcbind package to use.
fr: Le paquet rpcbind à utiliser.

note: type: item
en: @code{idmap-domain} (default: @code{"localdomain"})
fr: @code{idmap-domain} (par défaut : @code{"localdomain"})

note: type: table
en: The local NFSv4 domain name.
fr: Le nom de domaine NFSv4 local.

note: type: item
en: @code{nfsd-port} (default: @code{2049})
fr: @code{nfsd-port} (par défaut : @code{2049})

note: type: table
en: The network port that the @command{nfsd} daemon should use.
fr: Le port réseau que le démon @command{nfsd} devrait utiliser.

note: type: item
en: @code{nfsd-threads} (default: @code{8})
fr: @code{nfsd-threads} (par défaut : @code{8})

note: type: table
en: The number of threads used by the @command{nfsd} daemon.
fr: Le nombre de thread à utiliser par le démon @command{nfsd}.

note: type: item
en: @code{nfsd-tcp?} (default: @code{#t})
fr: @code{nfsd-tcp?} (par défaut : @code{#t})

note: type: table
en: Whether the @command{nfsd} daemon should listen on a TCP socket.
fr: Indique si le démon @command{nfsd} devrait écouter sur une socket TCP.

note: type: item
en: @code{nfsd-udp?} (default: @code{#f})
fr: @code{nfsd-udp?} (par défaut : @code{#f})

note: type: table
en: Whether the @command{nfsd} daemon should listen on a UDP socket.
fr: Indique si le démon @command{nfsd} devrait écouter sur une socket UDP.

note: type: item
en: @code{pipefs-directory} (default: @code{"/var/lib/nfs/rpc_pipefs"})
fr: @code{pipefs-directory} (par défaut : @code{"/var/lib/nfs/rpc_pipefs"})

note: type: table
en: The directory where the pipefs file system is mounted.
fr: Le répertoire où le système de fichier pipefs doit être monté.

note: type: item
en: @code{debug} (default: @code{'()"})
fr: @code{debug} (par défaut : @code{'()"})

note: type: table
en: A list of subsystems for which debugging output should be enabled.  This is a list of symbols.  Any of these symbols are valid: @code{nfsd}, @code{nfs}, @code{rpc}, @code{idmap}, @code{statd}, or @code{mountd}.
fr: Une liste des sous-systèmes pour lesquels la sortie de débogage est activée.  C'est une liste de symboles.  Ces symboles sont valides : @code{nfsd}, @code{nfs}, @code{rpc}, @code{idmap}, @code{statd} et @code{mountd}.

note: type: Plain text
en: If you don't need a complete NFS service or prefer to build it yourself you can use the individual component services that are documented below.
fr: Si vous n'avez pas besoin d'un service NFS complet ou préférez le construire vous-même vous pouvez utiliser les composants individuels décrit plus bas.

note: type: subsubheading
en: RPC Bind Service
fr: Service RPC Bind

note: type: Plain text
en: The RPC Bind service provides a facility to map program numbers into universal addresses.  Many NFS related services use this facility.  Hence it is automatically started when a dependent service starts.
fr: Le service RPC Bind fournit un dispositif pour faire correspondre les numéros de programmes à des adresses universelles.  De nombreux services liés à NFS utilisent ce dispositif.  Donc il est automatiquement démarré lorsqu'un service qui en dépend est démarré.

note: type: defvr
en: {Scheme Variable} rpcbind-service-type
fr: {Variable Scheme} rpcbind-service-type

note: type: defvr
en: A service type for the RPC portmapper daemon.
fr: Un type de service pour le démon RPC portmapper.

note: type: deftp
en: {Data Type} rpcbind-configuration
fr: {Type de données} rpcbind-configuration

note: type: deftp
en: Data type representing the configuration of the RPC Bind Service.  This type has the following parameters:
fr: Type données représentant la configuration du service RPC Bind.  Ce type a les paramètres suivants :

note: type: item
en: @code{warm-start?} (default: @code{#t})
fr: @code{warm-start?} (par défaut : @code{#t})

note: type: table
en: If this parameter is @code{#t}, then the daemon will read a state file on startup thus reloading state information saved by a previous instance.
fr: Si ce paramètre est @code{#t}, alors le démon lira un fichier d'état au démarrage ce qui lui fait recharger les informations d'états sauvegardés par une instance précédente.

note: type: subsubheading
en: Pipefs Pseudo File System
fr: Pseudo-système de fichiers Pipefs

note: type: Plain text
en: The pipefs file system is used to transfer NFS related data between the kernel and user space programs.
fr: Le système de fichiers pipefs est utilisé pour transférer des données liées à NFS entre le noyau et les programmes en espace utilisateur.

note: type: defvr
en: {Scheme Variable} pipefs-service-type
fr: {Variable Scheme} pipefs-service-type

note: type: defvr
en: A service type for the pipefs pseudo file system.
fr: Un type de service pour le pseudo-système de fichiers pipefs.

note: type: deftp
en: {Data Type} pipefs-configuration
fr: {Type de données} pipefs-configuration

note: type: deftp
en: Data type representing the configuration of the pipefs pseudo file system service.  This type has the following parameters:
fr: Type de données représentant la configuration du service du pseudo-système de fichiers pipefs.  Ce type a les paramètres suivants :

note: type: item
en: @code{mount-point} (default: @code{"/var/lib/nfs/rpc_pipefs"})
fr: @code{mount-point} (par défaut : @code{"/var/lib/nfs/rpc_pipefs"})

note: type: table
en: The directory to which the file system is to be attached.
fr: Le répertoire dans lequel le système de fichiers est attaché.

note: type: subsubheading
en: GSS Daemon Service
fr: Service de démon GSS

note: type: cindex
en: global security system
fr: système de sécurité global

note: type: Plain text
en: The @dfn{global security system} (GSS) daemon provides strong security for RPC based protocols.  Before exchanging RPC requests an RPC client must establish a security context.  Typically this is done using the Kerberos command @command{kinit} or automatically at login time using PAM services (@pxref{Kerberos Services}).
fr: Le démon du @dfn{système de sécurité global} (GSS) fournit une sécurité forte pour les protocoles basés sur des RPC.  Avant d'échanger des requêtes RPC, un client RPC doit établir un contexte sécurisé.  Typiquement cela se fait avec la commande Kerberos @command{kinit} ou automatiquement à la connexion avec les services PAM (@pxref{Kerberos Services}).

note: type: defvr
en: {Scheme Variable} gss-service-type
fr: {Variable Scheme} gss-service-type

note: type: defvr
en: A service type for the Global Security System (GSS) daemon.
fr: Un type de service pour le démon du système de sécurité global (GSS).

note: type: deftp
en: {Data Type} gss-configuration
fr: {Type de données} gss-configuration

note: type: deftp
en: Data type representing the configuration of the GSS daemon service.  This type has the following parameters:
fr: Type de données représentant la configuration du service du démon GSS.  Ce type a les paramètres suivants :

note: type: table
en: The package in which the @command{rpc.gssd} command is to be found.
fr: Le paquet dans lequel la commande @command{rpc.gssd} se trouve.

note: type: subsubheading
en: IDMAP Daemon Service
fr: Service de démon IDMAP

note: type: cindex
en: name mapper
fr: correspondance de nom

note: type: Plain text
en: The idmap daemon service provides mapping between user IDs and user names.  Typically it is required in order to access file systems mounted via NFSv4.
fr: Le service du démon idmap fournit une correspondance entre les ID utilisateur et les noms d'utilisateurs.  Typiquement, cela est requis pour accéder aux systèmes de fichiers montés via NFSv4.

note: type: defvr
en: {Scheme Variable} idmap-service-type
fr: {Variable Scheme} idmap-service-type

note: type: defvr
en: A service type for the Identity Mapper (IDMAP) daemon.
fr: Un type de service pour le démon de correspondance d'identité (IDMAP).

note: type: deftp
en: {Data Type} idmap-configuration
fr: {Type de données} idmap-configuration

note: type: deftp
en: Data type representing the configuration of the IDMAP daemon service.  This type has the following parameters:
fr: Type de données représentant la configuration du service du démon IDMAP.  Ce type a les paramètres suivants :

note: type: table
en: The package in which the @command{rpc.idmapd} command is to be found.
fr: Le paquet dans lequel se trouve la commande @command{rpc.idmapd}.

note: type: item
en: @code{domain} (default: @code{#f})
fr: @code{domain} (par défaut : @code{#f})

note: type: table
en: The local NFSv4 domain name.  This must be a string or @code{#f}.  If it is @code{#f} then the daemon will use the host's fully qualified domain name.
fr: Le nom de domaine NFSv4 local.  Il faut que ce soit une chaîne de caractères ou @code{#f}.  Si la valeur est @code{#f} le démon utilisera le nom de domaine pleinement qualifié de l'hôte.

note: type: item
en: @code{verbosity} (default: @code{0})
fr: @code{verbosity} (par défaut : @code{0})

note: type: table
en: The verbosity level of the daemon.
fr: Le niveau de verbosité du démon.

note: type: Plain text
en: The @code{(gnu services samba)} module provides service definitions for Samba as well as additional helper services.  Currently it provides the following services.
fr: Le module @code{(gnu services samba)} fournit des définitions de services pour les services Samba ainsi que d'autres services utilitaires.  Actuellement il fournit les services suivants.

note: type: Plain text
en: @uref{https://www.samba.org, Samba} provides network shares for folders and printers using the SMB/CIFS protocol commonly used on Windows.  It can also act as an Active Directory Domain Controller (AD DC) for other hosts in an heterougenious network with different types of Computer systems.
fr: @uref{https://www.samba.org, Samba} fournit des partages réseau pour les répertoires et les imprimantes qui utilisent le protocole SMB/CIFS souvent utilisé sous Windows. Il peut aussi se comporter comme un contrôleur de domaine Active Directory (AD DC) pour les autres hôtes dans un réseau hétérogène avec plusieurs types d'ordinateurs.

note: type: defvar
en: {Scheme variable} samba-service-type
fr: {Variable Scheme} samba-service-type

note: type: defvar
en: The service type to enable the samba services @code{samba}, @code{nmbd}, @code{smbd} and @code{winbindd}.  By default this service type does not run any of the Samba daemons; they must be enabled individually.
fr: Le type de service pour activer les services samba @code{samba}, @code{nmbd}, @code{smbd} et @code{winbindd}. Par défaut ce type de service ne lance aucun démon Samba. Ils doivent être activés individuellement.

note: type: defvar
en: Below is a basic example that configures a simple, anonymous (unauthenticated) Samba file share exposing the @file{/public} directory.
fr: voici un exemple de base qui configure un partage de fichiers Samba simple et anonyme (sans authentification) qui expose le répertoire @file{/public}.

note: type: quotation
en: The @file{/public} directory and its contents must be world readable/writable, so you'll want to run @samp{chmod -R 777 /public} on it.
fr: Le répertoire @file{/public} et sont contenu doivent être disponible en lecture-écriture pour le monde entier, donc vous devrez utiliser @samp{chmod -R 777 /public} dessus.

note: type: quotation
en: Caution
fr: Attention

note: type: quotation
en: Such a Samba configuration should only be used in controlled environments, and you should not share any private files using it, as anyone connecting to your network would be able to access them.
fr: Une telle configuration Samba ne devrait être utilisée que dans des environnements contrôlés et vous ne devriez pas partage des fichiers privés avec, car n'importe qui se connectant à votre réseau y aurait accès.

note: type: Plain text
en: @deftp{Data Type} samba-service-configuration Configuration record for the Samba suite.
fr: @deftp{Type de données} samba-service-configuration
    Enregistrement de configuration pour la suite Samba.

note: type: item
en: @code{package} (default: @code{samba})
fr: @code{package} (par défaut : @code{samba})

note: type: table
en: The samba package to use.
fr: Le paquet samba à utiliser.

note: type: table
en: The config file to use.  To learn about its syntax, run @samp{man smb.conf}.
fr: Le fichier de configuration à utiliser. Pour comprendre sa syntaxe, lancez @samp{man smb.conf}.

note: type: item
en: @code{enable-samba?} (default: @code{#f})
fr: @code{enable-samba?} (par défaut : @code{#f})

note: type: table
en: Enable the @code{samba} daemon.
fr: Active le démon @code{samba}.

note: type: item
en: @code{enable-smbd?} (default: @code{#f})
fr: @code{enable-smbd?} (par défaut : @code{#f})

note: type: table
en: Enable the @code{smbd} daemon.
fr: Active le démon @code{smbd}.

note: type: item
en: @code{enable-nmbd?} (default: @code{#f})
fr: @code{enable-nmbd?} (par défaut : @code{#f})

note: type: table
en: Enable the @code{nmbd} daemon.
fr: Active le démon @code{nmbd}.

note: type: item
en: @code{enable-winbindd?} (default: @code{#f})
fr: @code{enable-winbindd?} (par défaut : @code{#f})

note: type: table
en: Enable the @code{winbindd} daemon.
fr: Active le démon @code{winbindd}.

note: type: cindex
en: wsdd, Web service discovery daemon
fr: wssd, Démon de découverte des services web

note: type: subsubheading
en: Web Service Discovery Daemon
fr: Démon de découverte des services web

note: type: Plain text
en: The @acronym{WSDD, Web Service Discovery daemon} implements the @uref{http://docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-spec-os.html, Web Services Dynamic Discovery} protocol that enables host discovery over Multicast DNS, similar to what Avahi does.  It is a drop-in replacement for SMB hosts that have had SMBv1 disabled for security reasons.
fr: Le @acronym{WSDD, démon de découverte des services web} implémente le protocole de @uref{http://docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-spec-os.html, découverte dynamique des services web} qui permet des découvrir des hôtes sur le DNS multicast, de la même manière que Avahi. C'est un remplaçant pour les hôtes SMB qui ont désactivé leur SMBv1 pour des raisons de sécurité.

note: type: defvr
en: {Scheme Variable} wsdd-service-type
fr: {Variable Scheme} wsdd-service-type

note: type: defvr
en: Service type for the WSD host daemon.  The value for this service type is a @code{wsdd-configuration} record.  The details for the @code{wsdd-configuration} record type are given below.
fr: Type pour le démon hôte WSD. La valeur de ce type de service est un enregistrement @command{wssd-configuration}. Les détails du type d'enregistrement @code{wsdd-configuration} sont fournis plus bas.

note: type: deftp
en: {Data Type} wsdd-configuration
fr: {Type de données} wsdd-configuration

note: type: deftp
en: This data type represents the configuration for the wsdd service.
fr: Ce type de données représente la configuration du service wsdd.

note: type: item
en: @code{package} (default: @code{wsdd})
fr: @code{package} (par défaut : @code{wsdd})

note: type: table
en: The wsdd package to use.
fr: Le paquet wsdd à utiliser.

note: type: item
en: @code{ipv4only?} (default: @code{#f})
fr: @code{ipv4only?} (par défaut : @code{#f})

note: type: table
en: Only listen to IPv4 addresses.
fr: N'écoute que sur le adresses IPv4.

note: type: item
en: @code{ipv6only} (default: @code{#f})
fr: @code{ipv6only} (par défaut : @code{#f})

note: type: table
en: Only listen to IPv6 addresses.  Please note: Activating both options is not possible, since there would be no IP versions to listen to.
fr: N'écoute que sur les adresses IPv6. Remarquez : activer les deux options n'est pas possible, car il n'y aurait aucune version d'IP sur laquelle écouter.

note: type: table
en: Chroot into a separate directory to prevent access to other directories.  This is to increase security in case there is a vulnerability in @command{wsdd}.
fr: Entre dans un chroot dans un répertoire séparé pour empêcher l'accès à d'autres répertoires. Cela permet d'améliorer la sécurité en cas de vulnérabilité dans @command{wsdd}.

note: type: item
en: @code{hop-limit} (default: @code{1})
fr: @code{hop-limit} (par défaut : @code{1})

note: type: table
en: Limit to the level of hops for multicast packets.  The default is @var{1} which should prevent packets from leaving the local network.
fr: Limite le niveau de sauts pour les paquets multicast. La valeur par défaut est @var{1}, ce qui devrait éviter aux paquets de quitter le réseau local.

note: type: item
en: @code{interface} (default: @code{'()})
fr: @code{interface} (par défaut : @code{'()})

note: type: table
en: Limit to the given list of interfaces to listen to.  By default wsdd will listen to all interfaces.  Except the loopback interface is never used.
fr: Limite l'écoute aux interfaces listées. Par défaut wsdd écoutera sur toutes les interfaces. Sauf l'interface de rebouclage qui n'est jamais utilisée.

note: type: item
en: @code{uuid-device} (default: @code{#f})
fr: @code{uuid-device} (par défaut : @code{#f})

note: type: table
en: The WSD protocol requires a device to have a UUID.  Set this to manually assign the service a UUID.
fr: Le protocole WSD nécessite qu'un périphérique ait un UUID. Indiquez ce paramètre pour assigner manuellement un UUID au service.

note: type: table
en: Notify this host is a member of an Active Directory.
fr: Notifie que cet hôte est membre d'un Active Directory.

note: type: table
en: Manually set the hostname rather than letting @command{wsdd} inherit this host's hostname.  Only the host name part of a possible FQDN will be used in the default case.
fr: Indique le nom d'hôte manuellement au lieu de laisser @command{wsdd} hériter du nom de cet hôte. Seul la partie du nom d'hôte d'un éventuel nom de domaine pleinement qualifié sera utilisé dans le cas par défaut.

note: type: item
en: @code{preserve-case?} (default: @code{#f})
fr: @code{preserve-case?} (par défaut : @code{#f})

note: type: table
en: By default @command{wsdd} will convert the hostname in workgroup to all uppercase.  The opposite is true for hostnames in domains.  Setting this parameter will preserve case.
fr: Par défaut @command{wsdd} convertira le nom d'hôte dans le groupe de travail en majuscules. L'inverse est vrai pour les noms d'hôtes dans les domaines. Indiquer ce paramètre préservera la casse.

note: type: item
en: @code{workgroup} (default: @var{"WORKGROUP"})
fr: @code{workgroup} (par défaut : @var{"WORKGROUP"})

note: type: table
en: Change the name of the workgroup.  By default @command{wsdd} reports this host being member of a workgroup.
fr: Change le nom du groupe de travail. Par défaut @command{wsdd} rapport cet hôte comme étant membre d'un groupe de travail.

note: type: Plain text
en: @uref{https://guix.gnu.org/cuirass/, Cuirass} is a continuous integration tool for Guix.  It can be used both for development and for providing substitutes to others (@pxref{Substitutes}).
fr: @uref{https://guix.gnu.org/fr/cuirass/, Cuirass} est un outil d'intégration continue pour Guix.  On peut l'utiliser aussi bien pour le développement que pour fournir des substituts à d'autres (@pxref{Substituts}).

note: type: Plain text
en: The @code{(gnu services cuirass)} module provides the following service.
fr: Le module @code{(gnu services cuirass)} fournit le service suivant.

note: type: defvr
en: {Scheme Procedure} cuirass-service-type
fr: {Procédure Scheme} cuirass-service-type

note: type: defvr
en: The type of the Cuirass service.  Its value must be a @code{cuirass-configuration} object, as described below.
fr: Le type du service Cuirass.  Sa valeur doit être un objet @code{cuirass-configuration}, décrit ci-dessous.

note: type: Plain text
en: To add build jobs, you have to set the @code{specifications} field of the configuration.  For instance, the following example will build all the packages provided by the @code{my-channel} channel.
fr: Pour ajouter des travaux de construction, vous devez indiquer le champ @code{specifications} de la configuration.  Par exemple, voici un exemple qui construira tous les paquets fournis par le canal @code{my-channel}.

note: type: Plain text
en: To build the @code{linux-libre} package defined by the default Guix channel, one can use the following configuration.
fr: Pour construire le paquet @code{linux-libre} défini par le canal Guix par défaut, on peut utiliser la configuration suivante.

note: type: Plain text
en: The other configuration possibilities, as well as the specification record itself are described in the Cuirass manual (@pxref{Specifications,,, cuirass, Cuirass}).
fr: Les autres possibilités de configuration, ainsi que l'enregistrement de spécification lui-même sont décrits dans le manuel de Cuirass (@pxref{Specifications,,, cuirass, Cuirass}).

note: type: Plain text
en: While information related to build jobs is located directly in the specifications, global settings for the @command{cuirass} process are accessible in other @code{cuirass-configuration} fields.
fr: Tandis que les informations liés aux travaux de construction sont directement dans les spécifications, les paramètres globaux pour le processus @command{cuirass} sont accessibles dans les autres champs de @code{cuirass-configuration}.

note: type: deftp
en: {Data Type} cuirass-configuration
fr: {Type de données} cuirass-configuration

note: type: deftp
en: Data type representing the configuration of Cuirass.
fr: Type de données représentant la configuration de Cuirass.

note: type: item
en: @code{cuirass} (default: @code{cuirass})
fr: @code{cuirass} (par défaut : @code{cuirass})

note: type: table
en: The Cuirass package to use.
fr: Le paquet Cuirass à utiliser.

note: type: item
en: @code{log-file} (default: @code{"/var/log/cuirass.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/cuirass.log"})

note: type: table
en: Location of the log file.
fr: Emplacement du fichier de journal.

note: type: item
en: @code{web-log-file} (default: @code{"/var/log/cuirass-web.log"})
fr: @code{web-log-file} (par défaut : @code{"/var/log/cuirass-web.log"})

note: type: table
en: Location of the log file used by the web interface.
fr: Emplacement du fichier journal utilisé par l'interface web.

note: type: item
en: @code{cache-directory} (default: @code{"/var/cache/cuirass"})
fr: @code{cache-directory} (par défaut : @code{"/var/cache/cuirass"})

note: type: table
en: Location of the repository cache.
fr: Emplacement du cache du dépôt.

note: type: item
en: @code{user} (default: @code{"cuirass"})
fr: @code{user} (par défaut : @code{"cuirass"})

note: type: table
en: Owner of the @code{cuirass} process.
fr: Propriétaire du processus @code{cuirass}.

note: type: item
en: @code{group} (default: @code{"cuirass"})
fr: @code{group} (par défaut : @code{"cuirass"})

note: type: table
en: Owner's group of the @code{cuirass} process.
fr: Groupe du propriétaire du processus @code{cuirass}.

note: type: item
en: @code{interval} (default: @code{60})
fr: @code{interval} (par défaut : @code{60})

note: type: table
en: Number of seconds between the poll of the repositories followed by the Cuirass jobs.
fr: Nombre de secondes entre les mises à jour du dépôt suivis des travaux de Cuirass.

note: type: item
en: @code{parameters} (default: @code{#f})
fr: @code{parameters} (par défaut : @code{#f})

note: type: table
en: Read parameters from the given @var{parameters} file.  The supported parameters are described here (@pxref{Parameters,,, cuirass, Cuirass}).
fr: Lit les paramètres dans le fichier @var{parameters}. Les paramètres pris en charges sont décrits ici (@pxref{Parameters,,, cuirass, Cuirass}).

note: type: item
en: @code{remote-server} (default: @code{#f})
fr: @code{remote-server} (par défaut : @code{#f})

note: type: table
en: A @code{cuirass-remote-server-configuration} record to use the build remote mechanism or @code{#f} to use the default build mechanism.
fr: Un enregistrement @code{cuirass-remote-server-configuration} pour utiliser le mécanisme de construction distante ou @code{#f} pour utiliser le mécanisme de construction par défaut.

note: type: item
en: @code{database} (default: @code{"dbname=cuirass host=/var/run/postgresql"})
fr: @code{database} (par défaut : @code{"dbname=cuirass host=/var/run/postgresql"})

note: type: table
en: Use @var{database} as the database containing the jobs and the past build results. Since Cuirass uses PostgreSQL as a database engine, @var{database} must be a string such as @code{"dbname=cuirass host=localhost"}.
fr: Utiliser @var{database} comme base de données contenant les travaux et les résultats des constructions passées. Comme Cuirass utilise PostgreSQL comme moteur de base de données, @var{database} doit être une chaîne de la même forme que @code{"dbname=cuirass host=localhost"}.

note: type: item
en: @code{port} (default: @code{8081})
fr: @code{port} (par défaut : @code{8081})

note: type: table
en: Port number used by the HTTP server.
fr: Numéro de port utilisé pour le serveur HTTP.

note: type: table
en: Listen on the network interface for @var{host}.  The default is to accept connections from localhost.
fr: Écoute sur l'interface réseau de @var{host}.  La valeur par défaut est d'accepter les connexions depuis localhost.

note: type: item
en: @code{specifications} (default: @code{#~'()})
fr: @code{specifications} (par défaut : @code{#~'()})

note: type: table
en: A gexp (@pxref{G-Expressions}) that evaluates to a list of specifications records.  The specification record is described in the Cuirass manual (@pxref{Specifications,,, cuirass, Cuirass}).
fr: Une gexp (@pxref{G-Expressions}) qui s'évalue en une liste d'enregistrement de spécifications. L'enregistrement de spécification est décrit dans le manuel de Cuirass (@pxref{Specifications,,, cuirass, Cuirass}).

note: type: item
en: @code{use-substitutes?} (default: @code{#f})
fr: @code{use-substitutes?} (par défaut : @code{#f})

note: type: table
en: This allows using substitutes to avoid building every dependencies of a job from source.
fr: Cela permet d'utiliser des substituts pour éviter de construire toutes les dépendance d'un travail depuis les sources.

note: type: item
en: @code{one-shot?} (default: @code{#f})
fr: @code{one-shot?} (par défaut : @code{#f})

note: type: table
en: Only evaluate specifications and build derivations once.
fr: N'évaluer les spécification et construire les dérivations qu'une seule fois.

note: type: item
en: @code{fallback?} (default: @code{#f})
fr: @code{fallback?} (par défaut : @code{#f})

note: type: table
en: When substituting a pre-built binary fails, fall back to building packages locally.
fr: Lorsque la substitution d'un binaire pré-construit échoue, revenir à la construction locale du paquet.

note: type: table
en: Extra options to pass when running the Cuirass processes.
fr: Options supplémentaires à passer au lancement des processus de Cuirass.

note: type: cindex
en: remote build
fr: constructions distantes

note: type: subsubheading
en: Cuirass remote building
fr: Cuirass, construction distante

note: type: Plain text
en: Cuirass supports two mechanisms to build derivations.
fr: Cuirass prend en charge deux mécanisme pour construire les dérivations.

note: type: item
en: Using the local Guix daemon.
fr: Par le démon Guix local.

note: type: itemize
en: This is the default build mechanism.  Once the build jobs are evaluated, they are sent to the local Guix daemon.  Cuirass then listens to the Guix daemon output to detect the various build events.
fr: C'est le mécanisme de construction par défaut. Une fois les constructions évaluées, elles sont envoyées au démon Guix local. Cuirass écoute ensuite la sortie du démon Guix pour détecter les divers événements de construction.

note: type: item
en: Using the remote build mechanism.
fr: Par le mécanisme de construction distante.

note: type: itemize
en: The build jobs are not submitted to the local Guix daemon.  Instead, a remote server dispatches build requests to the connect remote workers, according to the build priorities.
fr: Les constructions ne sont pas soumises au démon Guix local. À la place, un serveur distant distribue les requêtes de construction aux serveurs connectés, en fonction des priorités de construction.

note: type: Plain text
en: To enable this build mode a @code{cuirass-remote-server-configuration} record must be passed as @code{remote-server} argument of the @code{cuirass-configuration} record.  The @code{cuirass-remote-server-configuration} record is described below.
fr: Pour active ce mode de construction, vous devez passer un enregistrement @code{cuirass-remote-server-configuration} au champ @code{remote-server} de l'enregistrement @code{cuirass-configuration}. L'enregistrement @code{cuirass-remote-server-configuration} est décrit plus bas.

note: type: Plain text
en: This build mode scales way better than the default build mode.  This is the build mode that is used on the GNU Guix build farm at @url{https://ci.guix.gnu.org}.  It should be preferred when using Cuirass to build large amount of packages.
fr: Ce mode de construction passe mieux à l'échelle que celui par défaut. C'est le mode de construction utilisé sur la ferme de construction de GNU Guix @url{https://ci.guix.gnu.org}. Vous devriez l'utiliser si vous utilisez Cuirass pour construire un grand nombre de paquets.

note: type: deftp
en: {Data Type} cuirass-remote-server-configuration
fr: {Type de données} cuirass-remote-server-configuration

note: type: deftp
en: Data type representing the configuration of the Cuirass remote-server.
fr: Le type de données représentant la configuration des serveurs distants de Cuirass.

note: type: item
en: @code{backend-port} (default: @code{5555})
fr: @code{backend-port} (par défaut : @code{5555})

note: type: table
en: The TCP port for communicating with @code{remote-worker} processes using ZMQ.  It defaults to @code{5555}.
fr: Le port TCP pour communiquer avec les processus @code{remote-worker} via ZMQ. Sa valeur par défaut est @code{5555}.

note: type: item
en: @code{log-port} (default: @code{5556})
fr: @code{log-port} (par défaut : @code{5556})

note: type: table
en: The TCP port of the log server.  It defaults to @code{5556}.
fr: Le port TCP du serveur de journalisation. Sa valeur par défaut est @code{5556}.

note: type: item
en: @code{publish-port} (default: @code{5557})
fr: @code{publish-port} (par défaut : @code{5557})

note: type: table
en: The TCP port of the publish server.  It defaults to @code{5557}.
fr: Le port TCP du serveur de publication. Sa valeur par défaut est @code{5557}.

note: type: item
en: @code{log-file} (default: @code{"/var/log/cuirass-remote-server.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/cuirass-remote-server.log"})

note: type: item
en: @code{cache} (default: @code{"/var/cache/cuirass/remote"})
fr: @code{cache} (par défaut : @code{"/var/cache/cuirass/remote"})

note: type: table
en: Use @var{cache} directory to cache build log files.
fr: Utiliser le répertoire @var{cache} pour mettre les journaux en cache.

note: type: item
en: @code{trigger-url} (default: @code{#f})
fr: @code{trigger-url} (par défaut : @code{#f})

note: type: table
en: Once a substitute is successfully fetched, trigger substitute baking at @var{trigger-url}.
fr: Lorsqu'un substitut a été correctement récupéré, cause la préparation d'un substitut sur @var{trigger-url}.

note: type: table
en: If set to false, do not start a publish server and ignore the @code{publish-port} argument.  This can be useful if there is already a standalone publish server standing next to the remote server.
fr: Si la valeur est fausse, ne démarre pas de serveur de publication et ignore l'argument @code{publish-port}. Ça peut être utile s'il y a déjà un serveur de publication indépendant qui se trouve à côté du serveur distant.

note: type: Plain text
en: At least one remote worker must also be started on any machine of the local network to actually perform the builds and report their status.
fr: Au moins un serveur distant doit aussi être démarré sur une machine du réseau local pour effectivement effectuer les constructions et rapporter leur état.

note: type: deftp
en: {Data Type} cuirass-remote-worker-configuration
fr: {Type de données} cuirass-remote-worker-configuration

note: type: deftp
en: Data type representing the configuration of the Cuirass remote-worker.
fr: Type de données représentant la configuration des serveurs distants de Cuirass.

note: type: item
en: @code{workers} (default: @code{1})
fr: @code{workers} (par défaut : @code{1})

note: type: table
en: Start @var{workers} parallel workers.
fr: Démarre @var{workers} travailleurs en parallèle.

note: type: table
en: Do not use Avahi discovery and connect to the given @code{server} IP address instead.
fr: Ne pas utiliser Avahi pour découvrir des serveurs et se connecter à l'IP @code{server} donnée à la place.

note: type: item
en: @code{systems} (default: @code{(list (%current-system))})
fr: @code{systems} (par défaut : @code{(list (%current-system))})

note: type: table
en: Only request builds for the given @var{systems}.
fr: Ne demander des constructions que pour les systèmes @var{systems} donnés.

note: type: item
en: @code{log-file} (default: @code{"/var/log/cuirass-remote-worker.log"})
fr: @code{log-file} (par défaut : @code{"/var/log/cuirass-remote-worker.log"})

note: type: item
en: @code{publish-port} (default: @code{5558})
fr: @code{publish-port} (par défaut : @code{5558})

note: type: table
en: The TCP port of the publish server.  It defaults to @code{5558}.
fr: Le port TCP du serveur de publication. La valeur par défaut est @code{5558}.

note: type: Plain text
en: @uref{https://laminar.ohwg.net/, Laminar} is a lightweight and modular Continuous Integration service.  It doesn't have a configuration web UI instead uses version-controllable configuration files and scripts.
fr: @uref{https://laminar.ohwg.net/, Laminar} est service d'intégration continue léger et modulaire. Il n'a pas d'interface de configuration web et utilise plutôt des fichiers de configuration et des scripts sous contrôle de version.

note: type: Plain text
en: Laminar encourages the use of existing tools such as bash and cron instead of reinventing them.
fr: Laminar encourage l'utilisation d'outils existants comme bash et cron au lieu de les réinventer.

note: type: defvr
en: {Scheme Procedure} laminar-service-type
fr: {Procédure Scheme} laminar-service-type

note: type: defvr
en: The type of the Laminar service.  Its value must be a @code{laminar-configuration} object, as described below.
fr: Le type du service Laminar.  Sa valeur doit être un objet @code{laminar-configuration}, décrit ci-dessous.

note: type: defvr
en: All configuration values have defaults, a minimal configuration to get Laminar running is shown below. By default, the web interface is available on port 8080.
fr: Toutes les configurations ont des valeurs par défaut, une configuration minimale pour lancer Laminar se trouve plus bas. Par défaut, l'interface web est disponible sur le port 8080.

note: type: deftp
en: {Data Type} laminar-configuration
fr: {Type de données} laminar-configuration

note: type: deftp
en: Data type representing the configuration of Laminar.
fr: Type données qui représente la configuration de Laminar.

note: type: item
en: @code{laminar} (default: @code{laminar})
fr: @code{laminar} (par défaut : @code{laminar})

note: type: table
en: The Laminar package to use.
fr: Le paquet Laminar à utiliser.

note: type: item
en: @code{home-directory} (default: @code{"/var/lib/laminar"})
fr: @code{home-directory} (par défaut : @code{"/var/lib/laminar"})

note: type: table
en: The directory for job configurations and run directories.
fr: Le répertoire de la configuration des travaux et des répertoires d'exécution.

note: type: item
en: @code{bind-http} (default: @code{"*:8080"})
fr: @code{bind-http} (par défaut : @code{"*:8080"})

note: type: table
en: The interface/port or unix socket on which laminard should listen for incoming connections to the web frontend.
fr: L'interface et le port ou la socket unix sur laquelle laminard écoutera les connexions entrantes sur l'interface web.

note: type: item
en: @code{bind-rpc} (default: @code{"unix-abstract:laminar"})
fr: @code{bind-rpc} (par défaut : @code{"unix-abstract:laminar"})

note: type: table
en: The interface/port or unix socket on which laminard should listen for incoming commands such as build triggers.
fr: L'interface et le port ou la socket unix sur laquelle laminard écoutera les commandes entrantes comme les requêtes de construction.

note: type: item
en: @code{title} (default: @code{"Laminar"})
fr: @code{title} (par défaut : @code{"Laminar"})

note: type: table
en: The page title to show in the web frontend.
fr: Le titre de la page à afficher sur l'interface web.

note: type: item
en: @code{keep-rundirs} (default: @code{0})
fr: @code{keep-rundirs} (par défaut : @code{0})

note: type: table
en: Set to an integer defining how many rundirs to keep per job.  The lowest-numbered ones will be deleted.  The default is 0, meaning all run dirs will be immediately deleted.
fr: Indiquez un entier indiquant le nombre de répertoire d'exécution garder par tâche. Les répertoires avec les numéros les plus petits seront supprimé. La valeur par défaut est 0, ce qui signifie que tous les répertoires d'exécution seront immédiatement supprimés.

note: type: item
en: @code{archive-url} (default: @code{#f})
fr: @code{archive-url} (par défaut : @code{#f})

note: type: table
en: The web frontend served by laminard will use this URL to form links to artefacts archived jobs.
fr: L'interface web servi par laminard utilisera cette URL pour former les liens vers les artefacts des travaux archivés.

note: type: item
en: @code{base-url} (default: @code{#f})
fr: @code{base-url} (par défaut : @code{#f})

note: type: table
en: Base URL to use for links to laminar itself.
fr: URL de base à utiliser pour les liens vers laminar.

note: type: cindex
en: power management with TLP
fr: gestion de l'énergie avec TLP

note: type: subsubheading
en: TLP daemon
fr: Démon TLP

note: type: Plain text
en: The @code{(gnu services pm)} module provides a Guix service definition for the Linux power management tool TLP.
fr: Le module @code{(gnu services pm)} fournit une définition de service Guix pour l'outil de gestion d'énergie Linux TLP.

note: type: Plain text
en: TLP enables various powersaving modes in userspace and kernel.  Contrary to @code{upower-service}, it is not a passive, monitoring tool, as it will apply custom settings each time a new power source is detected.  More information can be found at @uref{https://linrunner.de/en/tlp/tlp.html, TLP home page}.
fr: TLP active plusieurs modes un espace utilisateur et dans le noyau.  Contrairement à @code{upower-service}, ce n'est pas un outil passif de surveillance, puisqu'il applique des paramètres personnalisés à chaque fois qu'il détecte une nouvelle source d'énergie.  Vous pouvez trouver plus d'informations sur @uref{https://linrunner.de/en/tlp/tlp.html, la page d'accueil de TLP}.

note: type: deffn
en: {Scheme Variable} tlp-service-type
fr: {Variable Scheme} tlp-service-type

note: type: deffn
en: The service type for the TLP tool.  The default settings are optimised for battery life on most systems, but you can tweak them to your heart's content by adding a valid @code{tlp-configuration}:
fr: Le type de service pour l'outil TLP.  Les paramètres par défaut sont optimisés pour la durée de la batterie sur la plupart des systèmes, mais vous pouvez les modifier comme vous voulez en ajoutant un @code{tlp-configuration} valide :

note: type: Plain text
en: Each parameter definition is preceded by its type; for example, @samp{boolean foo} indicates that the @code{foo} parameter should be specified as a boolean.  Types starting with @code{maybe-} denote parameters that won't show up in TLP config file when their value is left unset, or is explicitly set to the @code{%unset-value} value.
fr: Chaque définition de paramètre est précédée par son type ; par exemple, @samp{booléen toto} indique que le paramètre @code{toto} doit être spécifié comme un booléen.  Les types qui commencent par @code{peut-être-} dénotent des paramètres qui n'apparaîtront pas dans la configuration de TLP lorsque leur valeur est non spécifiée, ou est explicitement initialisée à la valeur @code{%unset-value}.

note: type: Plain text
en: Available @code{tlp-configuration} fields are:
fr: Les champs de @code{tlp-configuration} disponibles sont :

note: type: deftypevr
en: {@code{tlp-configuration} parameter} package tlp
fr: {paramètre de @code{tlp-configuration}} package tlp

note: type: deftypevr
en: The TLP package.
fr: Le paquet TLP.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} boolean tlp-enable?
fr: {paramètre de @code{tlp-configuration}} boolean tlp-enable?

note: type: deftypevr
en: Set to true if you wish to enable TLP.
fr: Indiquez vrai si vous souhaitez activer TLP.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string tlp-default-mode
fr: {paramètre de @code{tlp-configuration}} string tlp-default-mode

note: type: deftypevr
en: Default mode when no power supply can be detected.  Alternatives are AC and BAT.
fr: Mode par défaut lorsqu'aucune source d'énergie ne peut être détectée.  Les possibilités sont AC et BAT.

note: type: deftypevr
en: Defaults to @samp{"AC"}.
fr: La valeur par défaut est @samp{"AC"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} non-negative-integer disk-idle-secs-on-ac
fr: {paramètre de @code{tlp-configuration}} entier-non-négatif disk-idle-secs-on-ac

note: type: deftypevr
en: Number of seconds Linux kernel has to wait after the disk goes idle, before syncing on AC.
fr: Nombre de secondes que le noyau Linux doit attendre après que les disques s'arrêtent pour se synchroniser quand il est sur secteur.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} non-negative-integer disk-idle-secs-on-bat
fr: {paramètre de @code{tlp-configuration}} entier-non-négatif disk-idle-secs-on-bat

note: type: deftypevr
en: Same as @code{disk-idle-ac} but on BAT mode.
fr: Comme @code{disk-idle-ac} mais en mode batterie.

note: type: deftypevr
en: Defaults to @samp{2}.
fr: La valeur par défaut est @samp{2}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} non-negative-integer max-lost-work-secs-on-ac
fr: {paramètre de @code{tlp-configuration}} entier-non-négatif max-lost-work-secs-on-ac

note: type: deftypevr
en: Dirty pages flushing periodicity, expressed in seconds.
fr: Périodicité du nettoyage des pages invalidées, en secondes.

note: type: deftypevr
en: Defaults to @samp{15}.
fr: La valeur par défaut est @samp{15}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} non-negative-integer max-lost-work-secs-on-bat
fr: {paramètre de @code{tlp-configuration}} entier-non-négatif max-lost-work-secs-on-bat

note: type: deftypevr
en: Same as @code{max-lost-work-secs-on-ac} but on BAT mode.
fr: Comme @code{max-lost-work-secs-on-ac} mais en mode batterie.

note: type: deftypevr
en: Defaults to @samp{60}.
fr: La valeur par défaut est @samp{60}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-space-separated-string-list cpu-scaling-governor-on-ac
fr: {paramètre de @code{tlp-configuration}} peut-être-liste-de-chaines-séparées-par-des-espaces cpu-scaling-governor-on-ac

note: type: deftypevr
en: CPU frequency scaling governor on AC mode.  With intel_pstate driver, alternatives are powersave and performance.  With acpi-cpufreq driver, alternatives are ondemand, powersave, performance and conservative.
fr: Gouverneur de fréquence d'horloge sur secteur.  Avec le pilote intel_pstate, les possibilités sont powersave et performance.  Avec le pilote acpi-cpufreq, les possibilités sont ondemand, powersave, performance et conservative.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-space-separated-string-list cpu-scaling-governor-on-bat
fr: {paramètre de @code{tlp-configuration}} peut-être-liste-de-chaines-séparées-par-des-espaces cpu-scaling-governor-on-bat

note: type: deftypevr
en: Same as @code{cpu-scaling-governor-on-ac} but on BAT mode.
fr: Comme @code{cpu-scaling-governor-on-ac} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-ac
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif cpu-scaling-min-freq-on-ac

note: type: deftypevr
en: Set the min available frequency for the scaling governor on AC.
fr: Indique la fréquence d'horloge minimale pour le gouverneur sur secteur.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-ac
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif cpu-scaling-max-freq-on-ac

note: type: deftypevr
en: Set the max available frequency for the scaling governor on AC.
fr: Indique la fréquence d'horloge maximale pour le gouverneur sur secteur.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-bat
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif cpu-scaling-min-freq-on-bat

note: type: deftypevr
en: Set the min available frequency for the scaling governor on BAT.
fr: Indique la fréquence d'horloge minimale pour le gouverneur sur batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-bat
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif cpu-scaling-max-freq-on-bat

note: type: deftypevr
en: Set the max available frequency for the scaling governor on BAT.
fr: Indique la fréquence d'horloge maximale pour le gouverneur sur batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-min-perf-on-ac
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif cpu-min-perf-on-ac

note: type: deftypevr
en: Limit the min P-state to control the power dissipation of the CPU, in AC mode.  Values are stated as a percentage of the available performance.
fr: Limite le P-état minimum pour contrôler la dissipation de puissance dans le CPU, sur secteur.  Les valeurs sont indiqués comme un pourcentage des performances disponibles.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-max-perf-on-ac
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif cpu-max-perf-on-ac

note: type: deftypevr
en: Limit the max P-state to control the power dissipation of the CPU, in AC mode.  Values are stated as a percentage of the available performance.
fr: Limite le P-état maximum pour contrôler la dissipation de puissance dans le CPU, sur secteur.  Les valeurs sont indiqués comme un pourcentage des performances disponibles.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-min-perf-on-bat
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif cpu-min-perf-on-bat

note: type: deftypevr
en: Same as @code{cpu-min-perf-on-ac} on BAT mode.
fr: Comme @code{cpu-min-perf-on-ac} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-max-perf-on-bat
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif cpu-max-perf-on-bat

note: type: deftypevr
en: Same as @code{cpu-max-perf-on-ac} on BAT mode.
fr: Comme @code{cpu-max-perf-on-ac} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-ac?
fr: {paramètre de @code{tlp-configuration}} peut-être-booléen cpu-boost-on-ac?

note: type: deftypevr
en: Enable CPU turbo boost feature on AC mode.
fr: Active la fonctionnalité turbo boost du CPU sur secteur.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-bat?
fr: {paramètre de @code{tlp-configuration}} peut-être-booléen cpu-boost-on-bat?

note: type: deftypevr
en: Same as @code{cpu-boost-on-ac?} on BAT mode.
fr: Comme @code{cpu-boost-on-ac?} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} boolean sched-powersave-on-ac?
fr: {paramètre de @code{tlp-configuration}} boolean sched-powersave-on-ac?

note: type: deftypevr
en: Allow Linux kernel to minimize the number of CPU cores/hyper-threads used under light load conditions.
fr: Permet au noyau Linux de minimiser le nombre de cœurs/hyper-threads CPU utilisés lorsque la charge est faible.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} boolean sched-powersave-on-bat?
fr: {paramètre de @code{tlp-configuration}} boolean sched-powersave-on-bat?

note: type: deftypevr
en: Same as @code{sched-powersave-on-ac?} but on BAT mode.
fr: Comme @code{sched-powersave-on-ac?} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} boolean nmi-watchdog?
fr: {paramètre de @code{tlp-configuration}} boolean nmi-watchdog?

note: type: deftypevr
en: Enable Linux kernel NMI watchdog.
fr: Active le chien de garde NMI du noyau Linux.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-string phc-controls
fr: {paramètre de @code{tlp-configuration}} peut-être-chaine phc-controls

note: type: deftypevr
en: For Linux kernels with PHC patch applied, change CPU voltages.  An example value would be @samp{"F:V F:V F:V F:V"}.
fr: Pour les noyaux Linux avec le correctif PHC, change le voltage du CPU.  Une valeur serait par exemple @samp{"F:V F:V F:V F:V"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string energy-perf-policy-on-ac
fr: {paramètre de @code{tlp-configuration}} string energy-perf-policy-on-ac

note: type: deftypevr
en: Set CPU performance versus energy saving policy on AC@.  Alternatives are performance, normal, powersave.
fr: Indique le niveau de performance du CPU par rapport à la politique de gestion de l'énergie sur secteur.  Les possibilités sont performance, normal et powersave.

note: type: deftypevr
en: Defaults to @samp{"performance"}.
fr: La valeur par défaut est @samp{"performance"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string energy-perf-policy-on-bat
fr: {paramètre de @code{tlp-configuration}} string energy-perf-policy-on-bat

note: type: deftypevr
en: Same as @code{energy-perf-policy-ac} but on BAT mode.
fr: Comme @code{energy-perf-policy-ac} mais en mode batterie.

note: type: deftypevr
en: Defaults to @samp{"powersave"}.
fr: La valeur par défaut est @samp{"powersave"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} space-separated-string-list disks-devices
fr: {paramètre de @code{tlp-configuration}} space-separated-string-list disks-devices

note: type: deftypevr
en: Hard disk devices.
fr: Périphériques de disque dur.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} space-separated-string-list disk-apm-level-on-ac
fr: {paramètre de @code{tlp-configuration}} space-separated-string-list disk-apm-level-on-ac

note: type: deftypevr
en: Hard disk advanced power management level.
fr: Niveau de gestion de l'énergie avancé des disques durs.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} space-separated-string-list disk-apm-level-on-bat
fr: {paramètre de @code{tlp-configuration}} space-separated-string-list disk-apm-level-on-bat

note: type: deftypevr
en: Same as @code{disk-apm-bat} but on BAT mode.
fr: Comme @code{disk-apm-bat} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-spindown-timeout-on-ac
fr: {paramètre de @code{tlp-configuration}} peut-être-liste-de-chaines-séparées-par-des-espaces disk-spindown-timeout-on-ac

note: type: deftypevr
en: Hard disk spin down timeout.  One value has to be specified for each declared hard disk.
fr: Délai d'attente pour arrêter de faire tourner les disques.  Une valeur doit être spécifiée pour chaque disque dur déclaré.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-spindown-timeout-on-bat
fr: {paramètre de @code{tlp-configuration}} peut-être-liste-de-chaines-séparées-par-des-espaces disk-spindown-timeout-on-bat

note: type: deftypevr
en: Same as @code{disk-spindown-timeout-on-ac} but on BAT mode.
fr: Comme @code{disk-spindown-timeout-on-ac} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-iosched
fr: {paramètre de @code{tlp-configuration}} peut-être-liste-de-chaines-séparées-par-des-espaces disk-iosched

note: type: deftypevr
en: Select IO scheduler for disk devices.  One value has to be specified for each declared hard disk.  Example alternatives are cfq, deadline and noop.
fr: Sélectionne l'ordonnanceur d'entrées-sorties pour le disque.  Une valeur doit être spécifiée pour chaque disque déclaré.  Les possibilités sont par exemple cfq, deadline et noop.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string sata-linkpwr-on-ac
fr: {paramètre de @code{tlp-configuration}} string sata-linkpwr-on-ac

note: type: deftypevr
en: SATA aggressive link power management (ALPM) level.  Alternatives are min_power, medium_power, max_performance.
fr: Niveau de gestion de l'énergie des lien SATA aggressive (ALPM).  Les possibilités sont min_power, medium_power et max_performance.

note: type: deftypevr
en: Defaults to @samp{"max_performance"}.
fr: La valeur par défaut est @samp{"max_performance"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string sata-linkpwr-on-bat
fr: {paramètre de @code{tlp-configuration}} string sata-linkpwr-on-bat

note: type: deftypevr
en: Same as @code{sata-linkpwr-ac} but on BAT mode.
fr: Comme @code{sata-linkpwr-ac} mais en mode batterie.

note: type: deftypevr
en: Defaults to @samp{"min_power"}.
fr: La valeur par défaut est @samp{"min_power"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-string sata-linkpwr-blacklist
fr: {paramètre de @code{tlp-configuration}} peut-être-chaine sata-linkpwr-blacklist

note: type: deftypevr
en: Exclude specified SATA host devices for link power management.
fr: Exclu les périphériques SATA spécifiés de la gestion de l'énergie des liens.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-ac?
fr: {paramètre de @code{tlp-configuration}} peut-être-booléen-on-off ahci-runtime-pm-on-ac?

note: type: deftypevr
en: Enable Runtime Power Management for AHCI controller and disks on AC mode.
fr: Active la gestion de l'énergie à l'exécution pour les contrôleurs AHCI et les disques, sur secteur.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-bat?
fr: {paramètre de @code{tlp-configuration}} peut-être-booléen-on-off ahci-runtime-pm-on-bat?

note: type: deftypevr
en: Same as @code{ahci-runtime-pm-on-ac} on BAT mode.
fr: Comme @code{ahci-runtime-pm-on-ac} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} non-negative-integer ahci-runtime-pm-timeout
fr: {paramètre de @code{tlp-configuration}} entier-non-négatif ahci-runtime-pm-timeout

note: type: deftypevr
en: Seconds of inactivity before disk is suspended.
fr: Secondes d'inactivités avant de suspendre les disques.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string pcie-aspm-on-ac
fr: {paramètre de @code{tlp-configuration}} string pcie-aspm-on-ac

note: type: deftypevr
en: PCI Express Active State Power Management level.  Alternatives are default, performance, powersave.
fr: Niveau de gestion de l'énergie des états actifs de PCI Express.  Les possibilités sont default, performance et powersave.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string pcie-aspm-on-bat
fr: {paramètre de @code{tlp-configuration}} string pcie-aspm-on-bat

note: type: deftypevr
en: Same as @code{pcie-aspm-ac} but on BAT mode.
fr: Comme @code{pcie-aspm-ac} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer start-charge-thresh-bat0
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif start-charge-thresh-bat0

note: type: deftypevr
en: Percentage when battery 0 should begin charging.  Only supported on some laptops.
fr: Pourcentage à partir duquel la batterie 0 doit commencer à charger. Seulement pris en charge sur les ordinateurs portables.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer stop-charge-thresh-bat0
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif stop-charge-thresh-bat0

note: type: deftypevr
en: Percentage when battery 0 should stop charging.  Only supported on some laptops.
fr: Pourcentage à partir duquel la batterie 0 devrait arrêter de charger. Seulement pris en charge sur les ordinateurs portables.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer start-charge-thresh-bat1
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif start-charge-thresh-bat1

note: type: deftypevr
en: Percentage when battery 1 should begin charging.  Only supported on some laptops.
fr: Pourcentage à partir duquel la batterie 1 devrait commencer à charger. Seulement pris en charge sur les ordinateurs portables.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-non-negative-integer stop-charge-thresh-bat1
fr: {paramètre de @code{tlp-configuration}} peut-être-entier-non-négatif stop-charge-thresh-bat1

note: type: deftypevr
en: Percentage when battery 1 should stop charging.  Only supported on some laptops.
fr: Pourcentage à partir duquel la batterie 1 devrait arrêter de charger. Seulement pris en charge sur les ordinateurs portables.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string radeon-power-profile-on-ac
fr: {paramètre de @code{tlp-configuration}} string radeon-power-profile-on-ac

note: type: deftypevr
en: Radeon graphics clock speed level.  Alternatives are low, mid, high, auto, default.
fr: Niveau de vitesse de l'horloge des cartes graphiques Radeon.  Les possibilités sont low, mid, high, auto et default.

note: type: deftypevr
en: Defaults to @samp{"high"}.
fr: La valeur par défaut est @samp{"high"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string radeon-power-profile-on-bat
fr: {paramètre de @code{tlp-configuration}} string radeon-power-profile-on-bat

note: type: deftypevr
en: Same as @code{radeon-power-ac} but on BAT mode.
fr: Comme @code{radeon-power-ac} mais en mode batterie.

note: type: deftypevr
en: Defaults to @samp{"low"}.
fr: La valeur par défaut est @samp{"low"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string radeon-dpm-state-on-ac
fr: {paramètre de @code{tlp-configuration}} string radeon-dpm-state-on-ac

note: type: deftypevr
en: Radeon dynamic power management method (DPM).  Alternatives are battery, performance.
fr: Méthode de gestion de l'énergie dynamique de Radeon (DPM).  Les possibilités sont battery et performance.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string radeon-dpm-state-on-bat
fr: {paramètre de @code{tlp-configuration}} string radeon-dpm-state-on-bat

note: type: deftypevr
en: Same as @code{radeon-dpm-state-ac} but on BAT mode.
fr: Comme @code{radeon-dpm-state-ac} mais en mode batterie.

note: type: deftypevr
en: Defaults to @samp{"battery"}.
fr: La valeur par défaut est @samp{"battery"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string radeon-dpm-perf-level-on-ac
fr: {paramètre de @code{tlp-configuration}} string radeon-dpm-perf-level-on-ac

note: type: deftypevr
en: Radeon DPM performance level.  Alternatives are auto, low, high.
fr: Niveau de performance de DPM.  Les possibilités sont auto, low et high.

note: type: deftypevr
en: Defaults to @samp{"auto"}.
fr: La valeur par défaut est @samp{"auto"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string radeon-dpm-perf-level-on-bat
fr: {paramètre de @code{tlp-configuration}} string radeon-dpm-perf-level-on-bat

note: type: deftypevr
en: Same as @code{radeon-dpm-perf-ac} but on BAT mode.
fr: Comme @code{radeon-dpm-perf-ac} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} on-off-boolean wifi-pwr-on-ac?
fr: {paramètre de @code{tlp-configuration}} on-off-boolean wifi-pwr-on-ac?

note: type: deftypevr
en: Wifi power saving mode.
fr: Mode de gestion de l'énergie wifi.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} on-off-boolean wifi-pwr-on-bat?
fr: {paramètre de @code{tlp-configuration}} on-off-boolean wifi-pwr-on-bat?

note: type: deftypevr
en: Same as @code{wifi-power-ac?} but on BAT mode.
fr: Comme @code{wifi-power-ac?} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} y-n-boolean wol-disable?
fr: {paramètre de @code{tlp-configuration}} y-n-boolean wol-disable?

note: type: deftypevr
en: Disable wake on LAN.
fr: Désactive wake on LAN.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} non-negative-integer sound-power-save-on-ac
fr: {paramètre de @code{tlp-configuration}} entier-non-négatif sound-power-save-on-ac

note: type: deftypevr
en: Timeout duration in seconds before activating audio power saving on Intel HDA and AC97 devices.  A value of 0 disables power saving.
fr: Durée d'attente en secondes avant d'activer la gestion de l'énergie audio sur les périphériques Intel HDA et AC97.  La valeur 0 désactive la gestion de l'énergie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} non-negative-integer sound-power-save-on-bat
fr: {paramètre de @code{tlp-configuration}} entier-non-négatif sound-power-save-on-bat

note: type: deftypevr
en: Same as @code{sound-powersave-ac} but on BAT mode.
fr: Comme @code{sound-powersave-ac} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} y-n-boolean sound-power-save-controller?
fr: {paramètre de @code{tlp-configuration}} y-n-boolean sound-power-save-controller?

note: type: deftypevr
en: Disable controller in powersaving mode on Intel HDA devices.
fr: Désactive le contrôleur en mode de gestion de l'énergie sur les périphériques Intel HDA.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} boolean bay-poweroff-on-bat?
fr: {paramètre de @code{tlp-configuration}} boolean bay-poweroff-on-bat?

note: type: deftypevr
en: Enable optical drive in UltraBay/MediaBay on BAT mode.  Drive can be powered on again by releasing (and reinserting) the eject lever or by pressing the disc eject button on newer models.
fr: Active le périphérique optique AltraBay/MediaBay en mode batterie.  Le périphérique peut être de nouveau alimenté en lâchant (et en réinsérant) le levier d'éjection ou en appuyant sur le bouton d'éjection sur les modèles plus récents.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string bay-device
fr: {paramètre de @code{tlp-configuration}} string bay-device

note: type: deftypevr
en: Name of the optical drive device to power off.
fr: Nom du périphérique optique à éteindre.

note: type: deftypevr
en: Defaults to @samp{"sr0"}.
fr: La valeur par défaut est @samp{"sr0"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string runtime-pm-on-ac
fr: {paramètre de @code{tlp-configuration}} string runtime-pm-on-ac

note: type: deftypevr
en: Runtime Power Management for PCI(e) bus devices.  Alternatives are on and auto.
fr: Gestion de l'énergie à l'exécution sur les bus PCI(e).  Les possibilités sont on et auto.

note: type: deftypevr
en: Defaults to @samp{"on"}.
fr: La valeur par défaut est @samp{"on"}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} string runtime-pm-on-bat
fr: {paramètre de @code{tlp-configuration}} string runtime-pm-on-bat

note: type: deftypevr
en: Same as @code{runtime-pm-ac} but on BAT mode.
fr: Comme @code{runtime-pm-ac} mais en mode batterie.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} boolean runtime-pm-all?
fr: {paramètre de @code{tlp-configuration}} boolean runtime-pm-all?

note: type: deftypevr
en: Runtime Power Management for all PCI(e) bus devices, except blacklisted ones.
fr: Gestion de l'énergie à l'exécution pour tous les bus PCI(e), sauf ceux en liste noire.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-space-separated-string-list runtime-pm-blacklist
fr: {paramètre de @code{tlp-configuration}} peut-être-liste-de-chaines-séparées-par-des-espaces runtime-pm-blacklist

note: type: deftypevr
en: Exclude specified PCI(e) device addresses from Runtime Power Management.
fr: Exclue les adresses des périphériques PCI(e) spécifiés de la gestion de l'énergie à l'exécution.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} space-separated-string-list runtime-pm-driver-blacklist
fr: {paramètre de @code{tlp-configuration}} space-separated-string-list runtime-pm-driver-blacklist

note: type: deftypevr
en: Exclude PCI(e) devices assigned to the specified drivers from Runtime Power Management.
fr: Exclue les périphériques PCI(e) assignés aux pilotes spécifiés de la gestion de l'énergie à l'exécution.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} boolean usb-autosuspend?
fr: {paramètre de @code{tlp-configuration}} boolean usb-autosuspend?

note: type: deftypevr
en: Enable USB autosuspend feature.
fr: Active la fonctionnalité de mise en veille automatique de l'USB.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-string usb-blacklist
fr: {paramètre de @code{tlp-configuration}} peut-être-chaine usb-blacklist

note: type: deftypevr
en: Exclude specified devices from USB autosuspend.
fr: Exclue les périphériques spécifiés de la mise en veille automatique de l'USB.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} boolean usb-blacklist-wwan?
fr: {paramètre de @code{tlp-configuration}} boolean usb-blacklist-wwan?

note: type: deftypevr
en: Exclude WWAN devices from USB autosuspend.
fr: Exclue les périphériques WWAN de la mise en veille automatique de l'USB.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-string usb-whitelist
fr: {paramètre de @code{tlp-configuration}} peut-être-chaine usb-whitelist

note: type: deftypevr
en: Include specified devices into USB autosuspend, even if they are already excluded by the driver or via @code{usb-blacklist-wwan?}.
fr: Inclue les périphériques spécifiés dans la mise en veille automatique de l'USB, même s'ils sont déjà exclus par le pilote ou via @code{usb-blacklist-wwan?}.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} maybe-boolean usb-autosuspend-disable-on-shutdown?
fr: {paramètre de @code{tlp-configuration}} peut-être-booléen usb-autosuspend-disable-on-shutdown?

note: type: deftypevr
en: Enable USB autosuspend before shutdown.
fr: Active la mise en veille de l'USB avant l'arrêt.

note: type: deftypevr
en: {@code{tlp-configuration} parameter} boolean restore-device-state-on-startup?
fr: {paramètre de @code{tlp-configuration}} boolean restore-device-state-on-startup?

note: type: deftypevr
en: Restore radio device state (bluetooth, wifi, wwan) from previous shutdown on system startup.
fr: Restaure l'état des périphériques radio (bluetooth, wifi, wwan) du dernier arrêt au démarrage du système.

note: type: cindex
en: CPU frequency scaling with thermald
fr: Gestion de la fréquence du CPU avec thermald

note: type: subsubheading
en: Thermald daemon
fr: Démon Thermald

note: type: Plain text
en: The @code{(gnu services pm)} module provides an interface to thermald, a CPU frequency scaling service which helps prevent overheating.
fr: Le module @code{(gnu services pm)} fournit une interface pour thermald, un service de gestion de l'horloge CPU qui aide à éviter la surchauffe.

note: type: defvr
en: {Scheme Variable} thermald-service-type
fr: {Variable Scheme} thermald-service-type

note: type: defvr
en: This is the service type for @uref{https://01.org/linux-thermal-daemon/, thermald}, the Linux Thermal Daemon, which is responsible for controlling the thermal state of processors and preventing overheating.
fr: C'est le type de service pour @uref{https://01.org/linux-thermal-daemon/, thermald}, le démon de température de Linux, responsable du contrôle de l'état thermique des processeurs et d'éviter la surchauffe.

note: type: deftp
en: {Data Type} thermald-configuration
fr: {Type de données} thermald-configuration

note: type: deftp
en: Data type representing the configuration of @code{thermald-service-type}.
fr: Type de données représentant la configuration de @code{thermald-service-type}.

note: type: item
en: @code{adaptive?} (default: @code{#f})
fr: @code{adptative?} (par défaut : @code{#f})

note: type: table
en: Use @acronym{DPTF, Dynamic Power and Thermal Framework} adaptive tables when present.
fr: Utilise les tables adaptatives @acronym{DPTF, Dynamic Power and Thermal Framework} si elles sont présentes.

note: type: item
en: @code{ignore-cpuid-check?} (default: @code{#f})
fr: @code{ignore-cpuid-check?} (par défaut : @code{#f})

note: type: table
en: Ignore cpuid check for supported CPU models.
fr: Ignore la vérification des modèles CPU supportés avec cpuid.

note: type: item
en: @code{thermald} (default: @var{thermald})
fr: @code{thermald} (par défaut : @var{thermald})

note: type: table
en: Package object of thermald.
fr: Objet du paquet de thermald.

note: type: Plain text
en: The @code{(gnu services audio)} module provides a service to start MPD (the Music Player Daemon).
fr: Le module @code{(gnu services audio)} fournit un service qui lance MPD (le démon de lecture de musique).

note: type: Plain text
en: The Music Player Daemon (MPD) is a service that can play music while being controlled from the local machine or over the network by a variety of clients.
fr: Le démon de lecture de musique (MPD) est un service qui joue de la musique tout en étant contrôlé depuis la machine locale ou à travers le réseau par divers clients.

note: type: Plain text
en: The following example shows how one might run @code{mpd} as user @code{"bob"} on port @code{6666}.  It uses pulseaudio for output.
fr: L'exemple suivant montre comment on peut lancer @code{mpd} en tant qu'utilisateur @code{"bob"} sur le port @code{6666}.  Il utilise pulseaudio pour la sortie audio.

note: type: defvr
en: {Scheme Variable} mpd-service-type
fr: {Variable Scheme} mpd-service-type

note: type: defvr
en: The service type for @command{mpd}
fr: Le type de service pour @command{mpd}

note: type: deftp
en: {Data Type} mpd-configuration
fr: {Type de données} mpd-configuration

note: type: deftp
en: Data type representing the configuration of @command{mpd}.
fr: Type de données représentant la configuration de @command{mpd}.

note: type: item
en: @code{user} (default: @code{"mpd"})
fr: @code{user} (par défaut : @code{"mpd"})

note: type: table
en: The user to run mpd as.
fr: L'utilisateur qui lance mpd.

note: type: item
en: @code{music-dir} (default: @code{"~/Music"})
fr: @code{music-dir} (par défaut : @code{"~/Music"})

note: type: table
en: The directory to scan for music files.
fr: Le répertoire à scanner pour trouver les fichiers de musique.

note: type: item
en: @code{playlist-dir} (default: @code{"~/.mpd/playlists"})
fr: @code{playlist-dir} (par défaut : @code{"~/.mpd/playlists"})

note: type: table
en: The directory to store playlists.
fr: Le répertoire où stocker les playlists.

note: type: item
en: @code{db-file} (default: @code{"~/.mpd/tag_cache"})
fr: @code{db-file} (par défaut : @code{"~/.mpd/tag_cache"})

note: type: table
en: The location of the music database.
fr: Emplacement de la base de données de musiques.

note: type: item
en: @code{state-file} (default: @code{"~/.mpd/state"})
fr: @code{state-file} (par défaut : @code{"~/.mpd/state"})

note: type: table
en: The location of the file that stores current MPD's state.
fr: Emplacement du fichier qui stocke l'état actuel de MPD.

note: type: item
en: @code{sticker-file} (default: @code{"~/.mpd/sticker.sql"})
fr: @code{sticker-file} (par défaut : @code{"~/.mpd/sticker.sql"})

note: type: table
en: The location of the sticker database.
fr: Emplacement de la base de données de stickers.

note: type: item
en: @code{port} (default: @code{"6600"})
fr: @code{port} (par défaut : @code{"6600"})

note: type: table
en: The port to run mpd on.
fr: Le port sur lequel lancer mpd.

note: type: item
en: @code{address} (default: @code{"any"})
fr: @code{address} (par défaut : @code{"any"})

note: type: table
en: The address that mpd will bind to.  To use a Unix domain socket, an absolute path can be specified here.
fr: L'adresse sur laquelle se lie mpd.  Pour utiliser un socket Unix domain, un chemin absolu peut être spécifié ici.

note: type: item
en: @code{outputs} (default: @code{"(list (mpd-output))"})
fr: @code{outputs} (par défaut : @code{"(list (mpd-output))"})

note: type: table
en: The audio outputs that MPD can use.  By default this is a single output using pulseaudio.
fr: Les sorties audio que MPD peut utiliser.  Par défaut c'est une seule sortie audio utilisant pulseaudio.

note: type: deftp
en: {Data Type} mpd-output
fr: {Type de données} mpd-output

note: type: deftp
en: Data type representing an @command{mpd} audio output.
fr: Type de données représentant une sortie audio de @command{mpd}.

note: type: item
en: @code{name} (default: @code{"MPD"})
fr: @code{name} (par défaut : @code{"MPD"})

note: type: table
en: The name of the audio output.
fr: Le nom de la sortie audio.

note: type: item
en: @code{type} (default: @code{"pulse"})
fr: @code{type} (par défaut : @code{"pulse"})

note: type: table
en: The type of audio output.
fr: Le type de sortie audio.

note: type: item
en: @code{enabled?} (default: @code{#t})
fr: @code{enabled?} (par défaut : @code{#t})

note: type: table
en: Specifies whether this audio output is enabled when MPD is started.  By default, all audio outputs are enabled.  This is just the default setting when there is no state file; with a state file, the previous state is restored.
fr: Spécifie si cette sortie audio est activée au démarrage de MPD.  Par défaut, toutes les sorties audio sont activées.  C'est le paramètre par défaut s'il n'y a pas de fichier d'état ; avec un fichier d'état, l'état précédent est restauré.

note: type: item
en: @code{tags?} (default: @code{#t})
fr: @code{tags?} (par défaut : @code{#t})

note: type: table
en: If set to @code{#f}, then MPD will not send tags to this output.  This is only useful for output plugins that can receive tags, for example the @code{httpd} output plugin.
fr: Si la valeur est @code{#f}, MPD n'enverra pas les tags à cette sortie.  C'est utile uniquement pour les greffons de sortie qui peuvent recevoir les tags, comme le greffon de sortie @code{httpd}.

note: type: item
en: @code{always-on?} (default: @code{#f})
fr: @code{always-on?} (par défaut : @code{#f})

note: type: table
en: If set to @code{#t}, then MPD attempts to keep this audio output always open.  This may be useful for streaming servers, when you don’t want to disconnect all listeners even when playback is accidentally stopped.
fr: Si la valeur est @code{#t}, alors MPD essaye de garder cette sortie audio toujours ouverte.  Cela peut être utile pour les serveurs de streaming, lorsque vous ne voulez pas déconnecter tous les clients même si la lecture est accidentellement interrompue.

note: type: table
en: This field accepts a symbol that specifies which mixer should be used for this audio output: the @code{hardware} mixer, the @code{software} mixer, the @code{null} mixer (allows setting the volume, but with no effect; this can be used as a trick to implement an external mixer External Mixer) or no mixer (@code{none}).
fr: Ce champ accepte un symbole qiu spécifie quel mixeur utiliser pour cette sortie audio : le mixeur @code{hardware}, le mixeur @code{software}, le mixer @code{null} (permet de gérer le volume, mais sans effet ; peut être utilisé pour implémenter un mixer externe) ou aucun mixeur (@code{none}).

note: type: table
en: An association list of option symbols to string values to be appended to the audio output configuration.
fr: Une liste d'association de symboles d'options à des valeurs à ajouter à la configuration de la sortie audio.

note: type: Plain text
en: The following example shows a configuration of @code{mpd} that provides an HTTP audio streaming output.
fr: L'exemple suivant montre comment configurer @code{mpd} pour fournir une sortie de streaming audio HTTP.

note: type: Plain text
en: The @code{(gnu services virtualization)} module provides services for the libvirt and virtlog daemons, as well as other virtualization-related services.
fr: Le module @code{(gnu services virtualization)} fournit des services pour les démons libvirt et virtlog, ainsi que d'autres services liés à la virtualisation.

note: type: subsubheading
en: Libvirt daemon
fr: Démon libvirt

note: type: Plain text
en: @code{libvirtd} is the server side daemon component of the libvirt virtualization management system.  This daemon runs on host servers and performs required management tasks for virtualized guests.
fr: @code{libvirtd} est le démon côté serveur du système de gestion de virtualisation libvirt.  Ce démon tourne sur des serveurs hôtes et effectue les tâches de gestion requises pour les clients virtualisés.

note: type: deffn
en: {Scheme Variable} libvirt-service-type
fr: {Variable Scheme} libvirt-service-type

note: type: deffn
en: This is the type of the @uref{https://libvirt.org, libvirt daemon}.  Its value must be a @code{libvirt-configuration}.
fr: C'est le type du @uref{https://libvirt.org, démon libvirt}.  Sa valeur doit être un @code{libvirt-configuration}.

note: type: Plain text
en: Available @code{libvirt-configuration} fields are:
fr: Les champs de @code{libvirt-configuration} disponibles sont :

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} package libvirt
fr: {paramètre de @code{libvirt-configuration}} package libvirt

note: type: deftypevar
en: Libvirt package.
fr: Paquet libvirt.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} boolean listen-tls?
fr: {paramètre de @code{libvirt-configuration}} boolean listen-tls?

note: type: deftypevr
en: Flag listening for secure TLS connections on the public TCP/IP port.  You must set @code{listen} for this to have any effect.
fr: Indique s'il faut écouter des connexions TLS sécurisées sur le port TCP/IP public.  Vous devez remplir le champ @code{listen} pour que cela ait un effet.

note: type: deftypevr
en: It is necessary to setup a CA and issue server certificates before using this capability.
fr: Il est nécessaire de mettre en place une CA et de créer un certificat serveur avant d'utiliser cette fonctionnalité.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} boolean listen-tcp?
fr: {paramètre de @code{libvirt-configuration}} boolean listen-tcp?

note: type: deftypevr
en: Listen for unencrypted TCP connections on the public TCP/IP port.  You must set @code{listen} for this to have any effect.
fr: Écoute des connexions non-chiffrées sur le port TCP/IP public.  Vous devez remplir le champ @code{listen} pour que cela ait un effet.

note: type: deftypevr
en: Using the TCP socket requires SASL authentication by default.  Only SASL mechanisms which support data encryption are allowed.  This is DIGEST_MD5 and GSSAPI (Kerberos5).
fr: L'utilisation des sockets TCP requiert une authentification SASL par défaut.  Seuls les mécanismes SASL qui prennent en charge le chiffrement des données sont permis.  Il s'agit de DIGEST_MD5 et GSSAPI (Kerberos5).

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string tls-port
fr: {paramètre de @code{libvirt-configuration}} string tls-port

note: type: deftypevr
en: Port for accepting secure TLS connections.  This can be a port number, or service name.
fr: Port pour accepter les connexions TLS sécurisées.  Il peut s'agir d'un numéro de port ou d'un nom de service.

note: type: deftypevr
en: Defaults to @samp{"16514"}.
fr: La valeur par défaut est @samp{"16514"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string tcp-port
fr: {paramètre de @code{libvirt-configuration}} string tcp-port

note: type: deftypevr
en: Port for accepting insecure TCP connections.  This can be a port number, or service name.
fr: Port sur lequel accepter les connexions TCP non sécurisées.  Cela peut être un numéro de port ou un nom de service.

note: type: deftypevr
en: Defaults to @samp{"16509"}.
fr: La valeur par défaut est @samp{"16509"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string listen-addr
fr: {paramètre de @code{libvirt-configuration}} string listen-addr

note: type: deftypevr
en: IP address or hostname used for client connections.
fr: Adresse IP ou nom d'hôte utilisé pour les connexions des clients.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} boolean mdns-adv?
fr: {paramètre de @code{libvirt-configuration}} boolean mdns-adv?

note: type: deftypevr
en: Flag toggling mDNS advertisement of the libvirt service.
fr: Indique s'il faut annoncer le service libvirt en mDNS.

note: type: deftypevr
en: Alternatively can disable for all services on a host by stopping the Avahi daemon.
fr: Autrement, vous pouvez désactiver cela pour tous les services en stoppant le démon Avahi.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string mdns-name
fr: {paramètre de @code{libvirt-configuration}} string mdns-name

note: type: deftypevr
en: Default mDNS advertisement name.  This must be unique on the immediate broadcast network.
fr: Nom annoncé par défaut sur mDNS.  Cela doit être unique sur le réseau local.

note: type: deftypevr
en: Defaults to @samp{"Virtualization Host <hostname>"}.
fr: La valeur par défaut est @samp{"Virtualization Host <hostname>"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string unix-sock-group
fr: {paramètre de @code{libvirt-configuration}} string unix-sock-group

note: type: deftypevr
en: UNIX domain socket group ownership.  This can be used to allow a 'trusted' set of users access to management capabilities without becoming root.
fr: Groupe propriétaire du socket Unix domain.  Cela peut être utilisé pour permettre à un ensemble d'utilisateurs « de confiance » de gérer les fonctionnalités sans devenir root.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string unix-sock-ro-perms
fr: {paramètre de @code{libvirt-configuration}} string unix-sock-ro-perms

note: type: deftypevr
en: UNIX socket permissions for the R/O socket.  This is used for monitoring VM status only.
fr: Permission Unix pour le socket en lecture seule.  Il est utilisé pour surveiller le statut des VM uniquement.

note: type: deftypevr
en: Defaults to @samp{"0777"}.
fr: La valeur par défaut est @samp{"0777"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string unix-sock-rw-perms
fr: {paramètre de @code{libvirt-configuration}} string unix-sock-rw-perms

note: type: deftypevr
en: UNIX socket permissions for the R/W socket.  Default allows only root.  If PolicyKit is enabled on the socket, the default will change to allow everyone (eg, 0777)
fr: Permission Unix pour le socket en lecture-écriture.  La valeur par défaut n'autorise que root.  Si PolicyKit est activé sur le socket, la valeur par défaut change et permet tout le monde (c.-à-d.@: 0777)

note: type: deftypevr
en: Defaults to @samp{"0770"}.
fr: La valeur par défaut est @samp{"0770"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string unix-sock-admin-perms
fr: {paramètre de @code{libvirt-configuration}} string unix-sock-admin-perms

note: type: deftypevr
en: UNIX socket permissions for the admin socket.  Default allows only owner (root), do not change it unless you are sure to whom you are exposing the access to.
fr: Permissions Unix pour le socket d'administration.  La valeur par défaut ne permet que le propriétaire (root), ne la changez pas à moins que vous ne soyez sûr de savoir à qui vous exposez cet accès.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string unix-sock-dir
fr: {paramètre de @code{libvirt-configuration}} string unix-sock-dir

note: type: deftypevr
en: The directory in which sockets will be found/created.
fr: Le répertoire dans lequel les sockets sont créés.

note: type: deftypevr
en: Defaults to @samp{"/var/run/libvirt"}.
fr: La valeur par défaut est @samp{"/var/run/libvirt"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string auth-unix-ro
fr: {paramètre de @code{libvirt-configuration}} string auth-unix-ro

note: type: deftypevr
en: Authentication scheme for UNIX read-only sockets.  By default socket permissions allow anyone to connect
fr: Schéma d'authentification pour les socket Unix en lecture-seule.  Par défaut les permissions des socket permettent à n'importe qui de se connecter

note: type: deftypevr
en: Defaults to @samp{"polkit"}.
fr: La valeur par défaut est @samp{"polkit"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string auth-unix-rw
fr: {paramètre de @code{libvirt-configuration}} string auth-unix-rw

note: type: deftypevr
en: Authentication scheme for UNIX read-write sockets.  By default socket permissions only allow root.  If PolicyKit support was compiled into libvirt, the default will be to use 'polkit' auth.
fr: Schéma d'authentification pour les socket UNIX en lecture-écriture.  Par défaut les permissions du socket ne permettent que root.  Si le support de PolicyKit a été compilé dans libvirt, la valeur par défaut utilise l'authentification « polkit ».

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string auth-tcp
fr: {paramètre de @code{libvirt-configuration}} string auth-tcp

note: type: deftypevr
en: Authentication scheme for TCP sockets.  If you don't enable SASL, then all TCP traffic is cleartext.  Don't do this outside of a dev/test scenario.
fr: Schéma d'authentification pour les sockets TCP.  Si vous n'avez pas activé SASL, alors tout le trafic TCP est en clair.  Ne le faites pas en dehors de scénario de développement ou de test.

note: type: deftypevr
en: Defaults to @samp{"sasl"}.
fr: La valeur par défaut est @samp{"sasl"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string auth-tls
fr: {paramètre de @code{libvirt-configuration}} string auth-tls

note: type: deftypevr
en: Authentication scheme for TLS sockets.  TLS sockets already have encryption provided by the TLS layer, and limited authentication is done by certificates.
fr: Schéma d'authentification pour les sockets TLS.  Les sockets TLS sont déjà chiffrés par la couche TLS, et une authentification limitée est effectuée avec les certificats.

note: type: deftypevr
en: It is possible to make use of any SASL authentication mechanism as well, by using 'sasl' for this option
fr: Il est possible d'utiliser de n'importe quel mécanisme d'authentification SASL en utilisant « sasl » pour cette option

note: type: deftypevr
en: Defaults to @samp{"none"}.
fr: La valeur par défaut est @samp{"none"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} optional-list access-drivers
fr: {paramètre de @code{libvirt-configuration}} optional-list access-drivers

note: type: deftypevr
en: API access control scheme.
fr: Schéma de contrôle d'accès à l'API.

note: type: deftypevr
en: By default an authenticated user is allowed access to all APIs.  Access drivers can place restrictions on this.
fr: Par défaut un utilisateur authentifié peut accéder à toutes les API.  Les pilotes d'accès peuvent placer des restrictions là-dessus.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string key-file
fr: {paramètre de @code{libvirt-configuration}} string key-file

note: type: deftypevr
en: Server key file path.  If set to an empty string, then no private key is loaded.
fr: Chemin de fichier de la clef du serveur.  Si la valeur est une chaîne vide, aucune clef privée n'est chargée.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string cert-file
fr: {paramètre de @code{libvirt-configuration}} string cert-file

note: type: deftypevr
en: Server key file path.  If set to an empty string, then no certificate is loaded.
fr: Chemin de fichier de la clef du serveur.  Si la chaîne est vide, aucun certificat n'est chargé.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string ca-file
fr: {paramètre de @code{libvirt-configuration}} string ca-file

note: type: deftypevr
en: Server key file path.  If set to an empty string, then no CA certificate is loaded.
fr: Chemin de fichier de la clef du serveur.  Si la chaîne est vide, aucun certificat de CA n'est chargé.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string crl-file
fr: {paramètre de @code{libvirt-configuration}} string crl-file

note: type: deftypevr
en: Certificate revocation list path.  If set to an empty string, then no CRL is loaded.
fr: Chemin de la liste de révocation des certificats.  Si la chaîne est vide, aucun CRL n'est chargé.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} boolean tls-no-sanity-cert
fr: {paramètre de @code{libvirt-configuration}} boolean tls-no-sanity-cert

note: type: deftypevr
en: Disable verification of our own server certificates.
fr: Désactive la vérification de nos propres certificats serveurs.

note: type: deftypevr
en: When libvirtd starts it performs some sanity checks against its own certificates.
fr: Lorsque libvirtd démarre il effectue des vérifications de routine sur ses propres certificats.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} boolean tls-no-verify-cert
fr: {paramètre de @code{libvirt-configuration}} boolean tls-no-verify-cert

note: type: deftypevr
en: Disable verification of client certificates.
fr: Désactive la vérification des certificats clients.

note: type: deftypevr
en: Client certificate verification is the primary authentication mechanism.  Any client which does not present a certificate signed by the CA will be rejected.
fr: La vérification des certificats clients est le mécanisme d'authentification principal.  Tout client qui ne présent pas de certificat signé par la CA sera rejeté.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} optional-list tls-allowed-dn-list
fr: {paramètre de @code{libvirt-configuration}} optional-list tls-allowed-dn-list

note: type: deftypevr
en: Whitelist of allowed x509 Distinguished Name.
fr: Liste blanche des Distinguished Name x509 autorisés.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} optional-list sasl-allowed-usernames
fr: {paramètre de @code{libvirt-configuration}} optional-list sasl-allowed-usernames

note: type: deftypevr
en: Whitelist of allowed SASL usernames.  The format for username depends on the SASL authentication mechanism.
fr: Liste blanche des noms d'utilisateur SASL permis.  Le format des noms d'utilisateurs dépend du mécanisme d'authentification SASL.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string tls-priority
fr: {paramètre de @code{libvirt-configuration}} string tls-priority

note: type: deftypevr
en: Override the compile time default TLS priority string.  The default is usually @samp{"NORMAL"} unless overridden at build time.  Only set this is it is desired for libvirt to deviate from the global default settings.
fr: Modifie la chaine de priorité TLS par défaut fixée à la compilation.  La valeur par défaut est typiquement @samp{NORMAL} à moins qu'elle n'ait été modifiée à la compilation.  Ne l'indiquez que si vous voulez que libvirt agisse différemment des paramètres par défaut globaux.

note: type: deftypevr
en: Defaults to @samp{"NORMAL"}.
fr: La valeur par défaut est @samp{"NORMAL"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer max-clients
fr: {paramètre de @code{libvirt-configuration}} integer max-clients

note: type: deftypevr
en: Maximum number of concurrent client connections to allow over all sockets combined.
fr: Nombre maximum de connexions clientes en même temps sur tous les sockets.

note: type: deftypevr
en: Defaults to @samp{5000}.
fr: La valeur par défaut est @samp{5000}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer max-queued-clients
fr: {paramètre de @code{libvirt-configuration}} integer max-queued-clients

note: type: deftypevr
en: Maximum length of queue of connections waiting to be accepted by the daemon.  Note, that some protocols supporting retransmission may obey this so that a later reattempt at connection succeeds.
fr: Longueur maximum de la queue de connexions en attente d'acceptation du démon.  Remarquez que certains protocoles supportant la retransmission peuvent obéir à ce paramètre pour qu'une connexion ultérieure réussisse.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer max-anonymous-clients
fr: {paramètre de @code{libvirt-configuration}} integer max-anonymous-clients

note: type: deftypevr
en: Maximum length of queue of accepted but not yet authenticated clients.  Set this to zero to turn this feature off
fr: Longueur maximum de la queue des clients acceptés mais pas authentifiés.  Indiquez zéro pour désactiver ce paramètre

note: type: deftypevr
en: Defaults to @samp{20}.
fr: La valeur par défaut est @samp{20}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer min-workers
fr: {paramètre de @code{libvirt-configuration}} integer min-workers

note: type: deftypevr
en: Number of workers to start up initially.
fr: Nombre de processus de travail démarrés initialement.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer max-workers
fr: {paramètre de @code{libvirt-configuration}} integer max-workers

note: type: deftypevr
en: Maximum number of worker threads.
fr: Nombre maximum de threads de travail.

note: type: deftypevr
en: If the number of active clients exceeds @code{min-workers}, then more threads are spawned, up to max_workers limit.  Typically you'd want max_workers to equal maximum number of clients allowed.
fr: Si le nombre de clients actifs dépasse @code{min-workers}, plus de threads seront démarrés, jusqu'à la limite de max_workers.  Typiquement vous voulez que max_workers soit égal au nombre maximum de clients permis.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer prio-workers
fr: {paramètre de @code{libvirt-configuration}} integer prio-workers

note: type: deftypevr
en: Number of priority workers.  If all workers from above pool are stuck, some calls marked as high priority (notably domainDestroy) can be executed in this pool.
fr: Nombre de travailleurs prioritaires.  Si tous les threads de travail du groupe ci-dessus sont bloqués, certains appels marqués comme prioritaires (notamment domainDestroy) peuvent être exécutés par ce groupe.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer max-requests
fr: {paramètre de @code{libvirt-configuration}} integer max-requests

note: type: deftypevr
en: Total global limit on concurrent RPC calls.
fr: Limite globale totale sur les appels RPC concurrents.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer max-client-requests
fr: {paramètre de @code{libvirt-configuration}} integer max-client-requests

note: type: deftypevr
en: Limit on concurrent requests from a single client connection.  To avoid one client monopolizing the server this should be a small fraction of the global max_requests and max_workers parameter.
fr: Limite de requêtes concurrentes depuis une connexion cliente unique. Pour éviter qu'un client ne monopolise le serveur, vous devriez indiquer une petite partie des paramètres global max_requests et max_workers.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer admin-min-workers
fr: {paramètre de @code{libvirt-configuration}} integer admin-min-workers

note: type: deftypevr
en: Same as @code{min-workers} but for the admin interface.
fr: Comme @code{min-workers} mais pour l'interface d'administration.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer admin-max-workers
fr: {paramètre de @code{libvirt-configuration}} integer admin-max-workers

note: type: deftypevr
en: Same as @code{max-workers} but for the admin interface.
fr: Comme @code{max-workers} mais pour l'interface d'administration.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer admin-max-clients
fr: {paramètre de @code{libvirt-configuration}} integer admin-max-clients

note: type: deftypevr
en: Same as @code{max-clients} but for the admin interface.
fr: Comme @code{max-clients} mais pour l'interface d'administration.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer admin-max-queued-clients
fr: {paramètre de @code{libvirt-configuration}} integer admin-max-queued-clients

note: type: deftypevr
en: Same as @code{max-queued-clients} but for the admin interface.
fr: Comme @code{max-queued-clients} mais pour l'interface d'administration.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer admin-max-client-requests
fr: {paramètre de @code{libvirt-configuration}} integer admin-max-client-requests

note: type: deftypevr
en: Same as @code{max-client-requests} but for the admin interface.
fr: Comme @code{max-client-requests} mais pour l'interface d'administration.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer log-level
fr: {paramètre de @code{libvirt-configuration}} integer log-level

note: type: deftypevr
en: Logging level.  4 errors, 3 warnings, 2 information, 1 debug.
fr: Niveau de journalisation.  4 : erreurs, 3 : avertissements, 2 : information, 1 : débogage.

note: type: deftypevr
en: Defaults to @samp{3}.
fr: La valeur par défaut est @samp{3}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string log-filters
fr: {paramètre de @code{libvirt-configuration}} string log-filters

note: type: deftypevr
en: Logging filters.
fr: Filtres de journalisation.

note: type: deftypevr
en: A filter allows to select a different logging level for a given category of logs.  The format for a filter is one of:
fr: Un filtre qui permet de sélectionner un niveau de journalisation différent pour une catégorie donnée.  Le format d'un filtre est :

note: type: itemize
en: x:name
fr: x:nom

note: type: itemize
en: x:+name
fr: x:+nom

note: type: deftypevr
en: where @code{name} is a string which is matched against the category given in the @code{VIR_LOG_INIT()} at the top of each libvirt source file, e.g., @samp{"remote"}, @samp{"qemu"}, or @samp{"util.json"} (the name in the filter can be a substring of the full category name, in order to match multiple similar categories), the optional @samp{"+"} prefix tells libvirt to log stack trace for each message matching name, and @code{x} is the minimal level where matching messages should be logged:
fr: où @code{nom} est une chaine de caractères qui correspond à la catégorie donnée dans @code{VIR_LOG_INIT()} au début de chaque fichier source de libvirt, p.@: ex.@: @samp{remote}, @samp{qemu} ou @samp{util.json} (le nom dans le filtre peut être une sous-chaine du nom complet de la catégorie, pour pouvoir correspondre à plusieurs catégories similaires), le préfixe facultatif @samp{+} dit à libvirt d'enregistrer les traces de piles pour chaque message qui correspond au nom, et @code{x} est le niveau minimal des messages qui devraient être enregistrés :

note: type: itemize
en: 1: DEBUG
fr: 1 : DEBUG

note: type: itemize
en: 2: INFO
fr: 2 : INFO

note: type: itemize
en: 3: WARNING
fr: 3 : WARNING

note: type: itemize
en: 4: ERROR
fr: 4 : ERROR

note: type: deftypevr
en: Multiple filters can be defined in a single filters statement, they just need to be separated by spaces.
fr: On peut définir plusieurs filtres dans une seule déclaration de filtres, ils doivent juste être séparés par des espaces.

note: type: deftypevr
en: Defaults to @samp{"3:remote 4:event"}.
fr: La valeur par défaut est @samp{"3:remote 4:event"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string log-outputs
fr: {paramètre de @code{libvirt-configuration}} string log-outputs

note: type: deftypevr
en: Logging outputs.
fr: Sorties de débogage.

note: type: deftypevr
en: An output is one of the places to save logging information.  The format for an output can be:
fr: Une sortie est l'un des endroits où les journaux sont enregistrés.  Le format d'une sortie peut être :

note: type: table
en: output goes to stderr
fr: la sortie va vers stderr

note: type: item
en: x:syslog:name
fr: x:syslog:nom

note: type: table
en: use syslog for the output and use the given name as the ident
fr: utilise syslog comme sortie et utilise le nom donné comme identifiant

note: type: item
en: x:file:file_path
fr: x:file:chemin_fichier

note: type: table
en: output to a file, with the given filepath
fr: la sortie va vers un fichier, avec le chemin donné

note: type: table
en: output to journald logging system
fr: la sortie va vers le système de journalisation journald

note: type: deftypevr
en: In all case the x prefix is the minimal level, acting as a filter
fr: Dans tous les cas, le préfixe x est le niveau minimal, qui agit comme un filtre

note: type: deftypevr
en: Multiple outputs can be defined, they just need to be separated by spaces.
fr: Plusieurs sorties peuvent être définies, elles doivent juste être séparées par des espaces.

note: type: deftypevr
en: Defaults to @samp{"3:stderr"}.
fr: La valeur par défaut est @samp{"3:stderr"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer audit-level
fr: {paramètre de @code{libvirt-configuration}} integer audit-level

note: type: deftypevr
en: Allows usage of the auditing subsystem to be altered
fr: Permet de modifier l'utilisation du sous-système d'audit

note: type: itemize
en: 0: disable all auditing
fr: 0 : désactive tout audit

note: type: itemize
en: 1: enable auditing, only if enabled on host
fr: 1 : active l'audit, seulement s'il est activé sur l'hôte

note: type: itemize
en: 2: enable auditing, and exit if disabled on host.
fr: 2 : active l'audit, et quitte s'il est désactivé sur l'hôte.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} boolean audit-logging
fr: {paramètre de @code{libvirt-configuration}} boolean audit-logging

note: type: deftypevr
en: Send audit messages via libvirt logging infrastructure.
fr: Envoie les messages d'audit via l'infrastructure de journalisation de libvirt.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} optional-string host-uuid
fr: {paramètre de @code{libvirt-configuration}} optional-string host-uuid

note: type: deftypevr
en: Host UUID@.  UUID must not have all digits be the same.
fr: UUID de l'hôte.  L'UUID ne doit pas avoir tous ses nombres identiques.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} string host-uuid-source
fr: {paramètre de @code{libvirt-configuration}} string host-uuid-source

note: type: deftypevr
en: Source to read host UUID.
fr: Source où lire l'UUID de l'hôte.

note: type: itemize
en: @code{smbios}: fetch the UUID from @code{dmidecode -s system-uuid}
fr: @code{smbios} : récupère l'UUID à partir de @code{dmidecode -s system-uuid}

note: type: itemize
en: @code{machine-id}: fetch the UUID from @code{/etc/machine-id}
fr: @code{machine-id} : récupère l'UUID à partir de @code{/etc/machine-id}

note: type: deftypevr
en: If @code{dmidecode} does not provide a valid UUID a temporary UUID will be generated.
fr: Si @code{dmidecode} ne fournit pas un UUID valide, un UUID temporaire sera généré.

note: type: deftypevr
en: Defaults to @samp{"smbios"}.
fr: La valeur par défaut est @samp{"smbios"}.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer keepalive-interval
fr: {paramètre de @code{libvirt-configuration}} integer keepalive-interval

note: type: deftypevr
en: A keepalive message is sent to a client after @code{keepalive_interval} seconds of inactivity to check if the client is still responding.  If set to -1, libvirtd will never send keepalive requests; however clients can still send them and the daemon will send responses.
fr: Un message keepalive est envoyé au client après @code{keepalive_interval} secondes d'inactivité pour vérifier si le client répond toujours.  Si la valeur est -1, libvirtd n'enverra jamais de requête keepalive ; cependant les clients peuvent toujours en envoyer et le démon y répondra.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer keepalive-count
fr: {paramètre de @code{libvirt-configuration}} integer keepalive-count

note: type: deftypevr
en: Maximum number of keepalive messages that are allowed to be sent to the client without getting any response before the connection is considered broken.
fr: Nombre maximum de messages keepalive qui peuvent être envoyés au client sans réponse avant que la connexion ne soit considérée comme cassée.

note: type: deftypevr
en: In other words, the connection is automatically closed approximately after @code{keepalive_interval * (keepalive_count + 1)} seconds since the last message received from the client.  When @code{keepalive-count} is set to 0, connections will be automatically closed after @code{keepalive-interval} seconds of inactivity without sending any keepalive messages.
fr: En d'autres termes, la connexion est approximativement fermée après @code{keepalive_interval * (keepalive_count + 1)} secondes après le dernier message reçu de la part du client.  Lorsque @code{keepalive-count} est à 0, les connexions seront automatiquement fermées après @code{keepalive-interval} secondes d'inactivité sans envoyer le moindre message keepalive.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer admin-keepalive-interval
fr: {paramètre de @code{libvirt-configuration}} integer admin-keepalive-interval

note: type: deftypevr
en: Same as above but for admin interface.
fr: Comme précédemment, mais pour l'interface d'administration.

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer admin-keepalive-count
fr: {paramètre de @code{libvirt-configuration}} integer admin-keepalive-count

note: type: deftypevr
en: {@code{libvirt-configuration} parameter} integer ovs-timeout
fr: {paramètre de @code{libvirt-configuration}} integer ovs-timeout

note: type: deftypevr
en: Timeout for Open vSwitch calls.
fr: Délai d'attente pour les appels Open vSwitch.

note: type: deftypevr
en: The @code{ovs-vsctl} utility is used for the configuration and its timeout option is set by default to 5 seconds to avoid potential infinite waits blocking libvirt.
fr: L'utilitaire @code{ovs-vsctl} est utilisé pour la configuration et son option de délai d'attente est à 5 secondes pour éviter qu'une attente infinie ne bloque libvirt.

note: type: subsubheading
en: Virtlog daemon
fr: Démon Virrlog

note: type: Plain text
en: The virtlogd service is a server side daemon component of libvirt that is used to manage logs from virtual machine consoles.
fr: Le service virtlogd est un démon côté serveur qui fait partie de libvirt, utilisé pour gérer les journaux des consoles des machines virtuelles.

note: type: Plain text
en: This daemon is not used directly by libvirt client applications, rather it is called on their behalf by @code{libvirtd}.  By maintaining the logs in a standalone daemon, the main @code{libvirtd} daemon can be restarted without risk of losing logs.  The @code{virtlogd} daemon has the ability to re-exec()  itself upon receiving @code{SIGUSR1}, to allow live upgrades without downtime.
fr: Ce démon n'est pas utilisé directement par les clients libvirt, mais il est appelé pour eux par @code{libvirtd}.  En maintenant les journaux dans un démon séparé, le démon @code{libvirtd} principal peut être redémarré sans risque de perte de journaux.  Le démon @code{virtlogd} a la possibilité de ré-exécuter exec() sur lui-même quand il reçoit @code{SIGUSR1}, pour permettre des mises à jour à chaud sans temps mort.

note: type: deffn
en: {Scheme Variable} virtlog-service-type
fr: {Variable Scheme} virtlog-service-type

note: type: deffn
en: This is the type of the virtlog daemon.  Its value must be a @code{virtlog-configuration}.
fr: Le type de service pour le démon virtlogd.  Sa valeur doit être un @code{virtlog-configuration}.

note: type: deftypevar
en: {@code{libvirt} parameter} package libvirt
fr: {paramètre de @code{libvirt}} package libvirt

note: type: deftypevr
en: {@code{virtlog-configuration} parameter} integer log-level
fr: {paramètre de @code{virtlog-configuration}} integer log-level

note: type: deftypevr
en: {@code{virtlog-configuration} parameter} string log-filters
fr: {paramètre de @code{virtlog-configuration}} string log-filters

note: type: deftypevr
en: A filter allows to select a different logging level for a given category of logs The format for a filter is one of:
fr: Un filtre qui permet de sélectionner plusieurs niveaux de journalisation pour une catégorie donnée. Le format d'un filtre est :

note: type: deftypevr
en: where @code{name} is a string which is matched against the category given in the @code{VIR_LOG_INIT()} at the top of each libvirt source file, e.g., "remote", "qemu", or "util.json" (the name in the filter can be a substring of the full category name, in order to match multiple similar categories), the optional "+" prefix tells libvirt to log stack trace for each message matching name, and @code{x} is the minimal level where matching messages should be logged:
fr: où @code{nom} est une chaîne de caractères qui correspond à la catégorie donnée dans @code{VIR_LOG_INIT()} au début de chaque fichier source de libvirt, p.@: ex.@: « remote », « qemu » ou « util.json » (le nom dans le filtre peut être une sous-chaîne du nom complet de la catégorie, pour pouvoir correspondre à plusieurs catégories similaires), le préfixe facultatif « + » dit à libvirt d'enregistrer les traces de piles pour chaque message qui correspond au nom, et @code{x} est le niveau minimal des messages qui devraient être enregistrés :

note: type: deftypevr
en: {@code{virtlog-configuration} parameter} string log-outputs
fr: {paramètre de @code{virtlog-configuration}} string log-outputs

note: type: deftypevr
en: An output is one of the places to save logging information The format for an output can be:
fr: Une sortie est l'un des endroits où les journaux sont enregistrés. Le format d'une sortie peut être :

note: type: deftypevr
en: {@code{virtlog-configuration} parameter} integer max-clients
fr: {paramètre de @code{virtlog-configuration}} integer max-clients

note: type: deftypevr
en: Defaults to @samp{1024}.
fr: La valeur par défaut est @samp{1024}.

note: type: deftypevr
en: {@code{virtlog-configuration} parameter} integer max-size
fr: {paramètre de @code{virtlog-configuration}} integer max-size

note: type: deftypevr
en: Maximum file size before rolling over.
fr: Taille de fichier maximale avant roulement.

note: type: deftypevr
en: Defaults to @samp{2MB}
fr: La valeur par défaut est @samp{2MB}

note: type: deftypevr
en: {@code{virtlog-configuration} parameter} integer max-backups
fr: {paramètre de @code{virtlog-configuration}} integer max-backups

note: type: deftypevr
en: Maximum number of backup files to keep.
fr: Nombre maximal de fichiers de sauvegardes à garder.

note: type: deftypevr
en: Defaults to @samp{3}
fr: La valeur par défaut est @samp{3}

note: type: subsubheading
en: Transparent Emulation with QEMU
fr: Émulation transparente avec QEMU

note: type: cindex
en: emulation
fr: émulation

note: type: Plain text
en: @code{qemu-binfmt-service-type} provides support for transparent emulation of program binaries built for different architectures---e.g., it allows you to transparently execute an ARMv7 program on an x86_64 machine.  It achieves this by combining the @uref{https://www.qemu.org, QEMU} emulator and the @code{binfmt_misc} feature of the kernel Linux.  This feature only allows you to emulate GNU/Linux on a different architecture, but see below for GNU/Hurd support.
fr: @code{qemu-binfmt-service-type} fournit le support de l'émulation transparente de binaires construits pour des architectures différentes — p.@: ex.@: il permet d'exécuter de manière transparente des programmes ARMv7 sur une machine x86_64.  Cela se fait en combinant l'émulateur @uref{https://www.qemu.org, QEMU} et la fonctionnalité @code{binfmt_misc} du noyau Linux.  Cette fonctionnalité ne vous permet que d'émuler GNU/Linux sur une architecture différente, mais regardez plus bas pour GNU/Hurd.

note: type: defvr
en: {Scheme Variable} qemu-binfmt-service-type
fr: {Variable Scheme} qemu-binfmt-service-type

note: type: defvr
en: This is the type of the QEMU/binfmt service for transparent emulation.  Its value must be a @code{qemu-binfmt-configuration} object, which specifies the QEMU package to use as well as the architecture we want to emulated:
fr: Le type du service QEMU/binfmt pour l'émulation transparente.  Sa valeur doit être un objet @code{qemu-binfmt-configuration}, qui spécifie le paquet QEMU à utiliser ainsi que l'architecture que vous voulez émuler :

note: type: defvr
en: In this example, we enable transparent emulation for the ARM and aarch64 platforms.  Running @code{herd stop qemu-binfmt} turns it off, and running @code{herd start qemu-binfmt} turns it back on (@pxref{Invoking herd, the @command{herd} command,, shepherd, The GNU Shepherd Manual}).
fr: Dans cet exemple, on active l'émulation transparente pour les plateformes ARM et aarch64.  Lancer @code{herd stop qemu-binfmt} l'éteint et lancer @code{herd start qemu-binfmt} le rallume (@pxref{Invoking herd, the @command{herd} command,, shepherd, The GNU Shepherd Manual}).

note: type: deftp
en: {Data Type} qemu-binfmt-configuration
fr: {Type de données} qemu-binfmt-configuration

note: type: deftp
en: This is the configuration for the @code{qemu-binfmt} service.
fr: La configuration du service @code{qemu-binfmt}.

note: type: item
en: @code{platforms} (default: @code{'()})
fr: @code{platforms} (par défaut : @code{'()})

note: type: table
en: The list of emulated QEMU platforms.  Each item must be a @dfn{platform object} as returned by @code{lookup-qemu-platforms} (see below).
fr: La liste des plates-formes émulées par QEMU.  Chaque élément doit être un objet @dfn{platform object} tel que renvoyé par @code{lookup-qemu-platforms} (voir plus bas).

note: type: table
en: For example, let's suppose you're on an x86_64 machine and you have this service:
fr: Par exemple, supposons que vous soyez sur une machine x86_64 et que vous avez ce services :

note: type: table
en: You can run:
fr: Vous pouvez lancer :

note: type: table
en: and it will build Inkscape for ARMv7 @emph{as if it were a native build}, transparently using QEMU to emulate the ARMv7 CPU@.  Pretty handy if you'd like to test a package build for an architecture you don't have access to!
fr: et cela construira Inkscape pour ARMv7 @emph{comme s'il s'agissait d'une construction native}, de manière transparente avec QEMU pour émuler un CPU ARMv7.  Plutôt pratique si vous voulez tester un paquet construit pour une architecture à laquelle vous n'avez pas accès !

note: type: item
en: @code{qemu} (default: @code{qemu})
fr: @code{qemu} (par défaut : @code{qemu})

note: type: table
en: The QEMU package to use.
fr: Le paquet QEMU à utiliser.

note: type: deffn
en: {Scheme Procedure} lookup-qemu-platforms @var{platforms}@dots{}
fr: {Procédure Scheme} lookup-qemu-platforms @var{platforms}@dots{}

note: type: deffn
en: Return the list of QEMU platform objects corresponding to @var{platforms}@dots{}.  @var{platforms} must be a list of strings corresponding to platform names, such as @code{"arm"}, @code{"sparc"}, @code{"mips64el"}, and so on.
fr: Renvoie la liste des objets de plates-formes QEMU correspondant à @var{platforms}@dots{}.  @var{platforms} doit être une liste de chaînes de caractères correspondant aux noms de plates-formes, comme @code{"arm"}, @code{"sparc"}, @code{"mips64el"} etc.

note: type: deffn
en: {Scheme Procedure} qemu-platform? @var{obj}
fr: {Procédure Scheme} qemu-platform? @var{obj}

note: type: deffn
en: Return true if @var{obj} is a platform object.
fr: Renvoie vrai s i@var{obj} est un objet de plate-forme.

note: type: deffn
en: {Scheme Procedure} qemu-platform-name @var{platform}
fr: {Procédure Scheme} qemu-platform-name @var{platform}

note: type: deffn
en: Return the name of @var{platform}---a string such as @code{"arm"}.
fr: Renvoie le nom de @var{platform} — une chaîne comme @code{"arm"}.

note: type: subsubheading
en: QEMU Guest Agent
fr: Agent invité de QEMU

note: type: Plain text
en: The QEMU guest agent provides control over the emulated system to the host.  The @code{qemu-guest-agent} service runs the agent on Guix guests.  To control the agent from the host, open a socket by invoking QEMU with the following arguments:
fr: L'agent invité de QEMU permet de contrôler le système émulé à partir de l'hôte. Le service @code{qemu-guest-agent} lance l'agent sur les invités Guix. Pour contrôler l'agent à partir de l'hôte, ouvrez un socket en invoquant QEMU avec les arguments suivants :

note: type: Plain text
en: This creates a socket at @file{/tmp/qga.sock} on the host.  Once the guest agent is running, you can issue commands with @code{socat}:
fr: Cela crée un socket dans @file{/tmp/qga.sock} sur l'hôte. Une fois l'agent invité lancé vos pouvez exécuter des commandes avec @code{socat} :

note: type: Plain text
en: See @url{https://wiki.qemu.org/Features/GuestAgent,QEMU guest agent documentation} for more options and commands.
fr: Voir @url{https://wiki.qemu.org/Features/GuestAgent,la documentation de l'agent invité de QEMU} pour les options et les commandes supplémentaires.

note: type: defvr
en: {Scheme Variable} qemu-guest-agent-service-type
fr: {Variable Scheme} qemu-guest-agent-service-type

note: type: defvr
en: Service type for the QEMU guest agent service.
fr: Type de service pour l'agent invité de QEMU.

note: type: deftp
en: {Data Type} qemu-guest-agent-configuration
fr: {Type de données} qemu-guest-agent-configuration

note: type: deftp
en: Configuration for the @code{qemu-guest-agent} service.
fr: La configuration du service @code{qemu-guest-agent}.

note: type: item
en: @code{qemu} (default: @code{qemu-minimal})
fr: @code{qemu} (par défaut : @code{qemu-minimal})

note: type: item
en: @code{device} (default: @code{""})
fr: @code{device} (par défaut : @code{""})

note: type: table
en: File name of the device or socket the agent uses to communicate with the host.  If empty, QEMU uses a default file name.
fr: Le nom de périphérique ou de socket que l'agent utilise pour communiquer avec l'hôte. Si le nom est vide, QEMU utilisera un nom de fichier par défaut.

note: type: subsubheading
en: The Hurd in a Virtual Machine
fr: Exécuter le Hurd dans une machine virtuelle

note: type: cindex
en: the Hurd
fr: le Hurd

note: type: Plain text
en: Service @code{hurd-vm} provides support for running GNU/Hurd in a virtual machine (VM), a so-called @dfn{childhurd}.  This service is meant to be used on GNU/Linux and the given GNU/Hurd operating system configuration is cross-compiled.  The virtual machine is a Shepherd service that can be referred to by the names @code{hurd-vm} and @code{childhurd} and be controlled with commands such as:
fr: Le service @code{hurd-vm} permet de lancer GNU/Hurd dans une machine virtuelle (VM), un @dfn{childhurd}.  Ce service est conçu pour être utilisé sur GNU/Linux et la configuration du système GNU/Hurd donné est compilée de manière croisée.  La machine virtuelle est un service Shepherd qui a les noms @code{hurd-vm} et @code{childhurd} et qui peut être contrôlé avec les commandes suivantes :

note: type: Plain text
en: When the service is running, you can view its console by connecting to it with a VNC client, for example with:
fr: Lorsque le service est lancé, vous pouvez voir sa console en vous y connectant avec un client VNC, par exemple avec :

note: type: Plain text
en: The default configuration (see @code{hurd-vm-configuration} below)  spawns a secure shell (SSH) server in your GNU/Hurd system, which QEMU (the virtual machine emulator) redirects to port 10222 on the host.  Thus, you can connect over SSH to the childhurd with:
fr: La configuration par défaut (voir @code{hurd-vm-configuration} ci-dessous) crée un serveur secure shell (SSH) dans votre système GNU/Hurd, que QEMU (l'émulateur de machine virtuelle) redirige sur le port 10222 de l'hôte.  Ainsi, vous pouvez vous connecter en SSH au childhurd avec :

note: type: Plain text
en: The childhurd is volatile and stateless: it starts with a fresh root file system every time you restart it.  By default though, all the files under @file{/etc/childhurd} on the host are copied as is to the root file system of the childhurd when it boots.  This allows you to initialize ``secrets'' inside the VM: SSH host keys, authorized substitute keys, and so on---see the explanation of @code{secret-root} below.
fr: Le childhurd est volatile et sans état . il démarre avec un nouveau système de fichier à chaque fois que vous le redémarrez.  Par défaut cependant, tous les fichiers sous @file{/etc/childhurd} sur l'hôte sont copiés tels quels sur le système de fichiers racine du childhurd à son démarrage.  Cela vous permet d'initialiser des « secrets » à l'intérieur de la VM : les clés hôtes SSH, les clés de substituts autorisés, etc — voir l'explication de @code{secret-root} ci-dessous.

note: type: defvr
en: {Scheme Variable} hurd-vm-service-type
fr: {Variable Scheme} hurd-vm-service-type

note: type: defvr
en: This is the type of the Hurd in a Virtual Machine service.  Its value must be a @code{hurd-vm-configuration} object, which specifies the operating system (@pxref{operating-system Reference}) and the disk size for the Hurd Virtual Machine, the QEMU package to use as well as the options for running it.
fr: C'est le type du service du Hurd dans une machine virtuelle.  Sa valeur doit être un objet @code{hurd-vm-configuration}, qui spécifie le système d'exploitation (@pxref{operating-system Reference}) et la taille de disque pour la machine virtuelle du Hurd, le paquet QEMU à utiliser ainsi que les options pour le lancer.

note: type: defvr
en: would create a disk image big enough to build GNU@tie{}Hello, with some extra memory.
fr: créerait une image disque assez grande pour construire GNU@tie{}Hello, avec une peu de place en plus.

note: type: deftp
en: {Data Type} hurd-vm-configuration
fr: {Type de données} hurd-vm-configuration

note: type: deftp
en: The data type representing the configuration for @code{hurd-vm-service-type}.
fr: Type de données représentant la configuration de @code{hurd-vm-service-type}.

note: type: item
en: @code{os} (default: @var{%hurd-vm-operating-system})
fr: @code{os} (par défaut : @var{%hurd-vm-operating-system})

note: type: table
en: The operating system to instantiate.  This default is bare-bones with a permissive OpenSSH secure shell daemon listening on port 2222 (@pxref{Networking Services, @code{openssh-service-type}}).
fr: Le système d'exploitation à instancier.  La valeur par défaut est le système minimal avec un démon OpenSSH permissif en écoute sur le port 2222 (@pxref{Networking Services, @code{openssh-service-type}}).

note: type: item
en: @code{image} (default: @var{hurd-vm-disk-image})
fr: @code{image} (par défaut : @var{hurd-vm-disk-image})

note: type: table
en: The procedure used to build the disk-image built from this configuration.
fr: La procédure utilisée pour construire l'image disque construite à partir de cette configuration.

note: type: item
en: @code{disk-size} (default: @code{'guess})
fr: @code{disk-size} (par défaut : @code{'guess})

note: type: table
en: The size of the disk image.
fr: La taille de l'image disque.

note: type: item
en: @code{memory-size} (default: @code{512})
fr: @code{memory-size} (par défaut : @code{512})

note: type: table
en: The memory size of the Virtual Machine in mebibytes.
fr: La taille de mémoire de la machine virtuelle en mébioctets.

note: type: item
en: @code{options} (default: @code{'("--snapshot")})
fr: @code{options} (par défaut : @code{'("--snapshot")})

note: type: table
en: The extra options for running QEMU.
fr: Options supplémentaires pour lancer QEMU.

note: type: table
en: If set, a non-zero positive integer used to parameterize Childhurd instances.  It is appended to the service's name, e.g. @code{childhurd1}.
fr: Si l'option est indiquée, c'est un entier strictement positif utilisé créer plusieurs instances de childhurd.  Il est ajouté au nom du service, p.@: ex.@: @code{childhurd1}.

note: type: item
en: @code{net-options} (default: @var{hurd-vm-net-options})
fr: @code{net-options} (par défaut : @var{hurd-vm-net-options})

note: type: table
en: The procedure used to produce the list of QEMU networking options.
fr: La procédure utilisée pour produire une liste d'options réseau pour QEMU.

note: type: table
en: By default, it produces
fr: Par défaut, elle produit

note: type: table
en: with forwarded ports:
fr: avec les ports renvoyés :

note: type: item
en: @code{secret-root} (default: @file{/etc/childhurd})
fr: @code{secret-root} (par défaut : @file{/etc/childhurd})

note: type: table
en: The root directory with out-of-band secrets to be installed into the childhurd once it runs.  Childhurds are volatile which means that on every startup, secrets such as the SSH host keys and Guix signing key are recreated.
fr: Le répertoire racine avec des secrets externes à installer dans le childhurd une fois lancé.  Les childhurds sont volatile, ce qiu signifie qu'à chaque démarrage, les secrets comme les clés hôtes SSH et la clé de signature de Guix sont recréés.

note: type: table
en: If the @file{/etc/childhurd} directory does not exist, the @code{secret-service} running in the Childhurd will be sent an empty list of secrets.
fr: Si le répertoire @file{/etc/childhurd} n'existe pas, le @code{secret-service} qui tourne dans le Childhurd recevra une liste vide de secrets.

note: type: table
en: By default, the service automatically populates @file{/etc/childhurd} with the following non-volatile secrets, unless they already exist:
fr: Par défaut, le service rempli automatiquement @file{/etc/childhurd} avec les secrets non-volatiles suivants, à moins qu'ils existent déjà :

note: type: table
en: These files are automatically sent to the guest Hurd VM when it boots, including permissions.
fr: Ces fichiers sont automatiquement envoyés à la VM Hurd invitée au démarrage, avec les permissions.

note: type: cindex
en: childhurd, offloading
fr: childhurd, déchargement

note: type: cindex
en: Hurd, offloading
fr: Hurd, déchargement

note: type: table
en: Having these files in place means that only a couple of things are missing to allow the host to offload @code{i586-gnu} builds to the childhurd:
fr: Avec ces fichiers en place, il ne manque plus grand chose pour pouvoir permettre à l'hôte de décharger les constructions @code{i586-gnu} au childhurd :

note: type: enumerate
en: Authorizing the childhurd's key on the host so that the host accepts build results coming from the childhurd, which can be done like so:
fr: Autoriser la clé du childhurd sur l'hôte pour que l'hôte puisse accepter les constructions venant du childhurd, ce qui peut se faire de cette manière :

note: type: enumerate
en: Adding the childhurd to @file{/etc/guix/machines.scm} (@pxref{Daemon Offload Setup}).
fr: Ajouter le childhurd à @file{/etc/guix/machines.scm} (@pxref{Daemon Offload Setup}).

note: type: table
en: We're working towards making that happen automatically---get in touch with us at @email{guix-devel@@gnu.org} to discuss it!
fr: Nous travaillons à rendre cela automatique — contactez nous sur @email{guix-devel@@gnu.org} pour en discuter !

note: type: Plain text
en: Note that by default the VM image is volatile, i.e., once stopped the contents are lost.  If you want a stateful image instead, override the configuration's @code{image} and @code{options} without the @code{--snapshot} flag using something along these lines:
fr: Remarquez que par défaut l'image de la VM est volatile, c.-à-d.@: qu'une fois arrêtée le contenu est perdu.  Si vous voulez une image avec état à la place, remplacez les champs @code{image} et @code{options} pour enlever le drapeau @code{--snapshot} avec quelque chose de ce style-là :

note: type: quotation
en: This service is considered experimental.  Configuration options may be changed in a backwards-incompatible manner, and not all features have been thorougly tested.  Users of this service are encouraged to share their experience at @email{guix-devel@@gnu.org}.
fr: Ce service est considéré comme étant expérimental.  Les options de configuration peuvent changer de manière non compatible, et tous les paramètres n'ont pas été testés.  Si vous utilisez ce service, nous vous encourageons à partager votre expérience avec @email{guix-devel@@gnu.org}.

note: type: Plain text
en: Ganeti is a virtual machine management system.  It is designed to keep virtual machines running on a cluster of servers even in the event of hardware failures, and to make maintenance and recovery tasks easy.  It consists of multiple services which are described later in this section.  In addition to the Ganeti service, you will need the OpenSSH service (@pxref{Networking Services, @code{openssh-service-type}}), and update the @file{/etc/hosts} file (@pxref{operating-system Reference, @code{hosts-file}}) with the cluster name and address (or use a DNS server).
fr: Ganeti est un système de gestion de machines virtuelles.  Il est conçu pour faire tourner les machines virtuelles en continue sur une grappe de serveurs même dans le cas d'une erreur matérielle, et pour rendre les tâches de maintenance et de récupération faciles.  Il consisste en plusieurs services qui sont décrits plus loin dans cette section.  En plus du service Ganeti, vous aurez besoin du service OpenSSH (@pxref{Networking Services, @code{openssh-service-type}}), et de mettre à jour le fichier @file{/etc/hosts} (@pxref{operating-system Reference, @code{hosts-file}}) avec le nom de la grappe et l'adresse (ou utiliser un serveur DNS).

note: type: Plain text
en: All nodes participating in a Ganeti cluster should have the same Ganeti and @file{/etc/hosts} configuration.  Here is an example configuration for a Ganeti cluster node that supports multiple storage backends, and installs the @code{debootstrap} and @code{guix} @dfn{OS providers}:
fr: Tous les nœuds participant dans une grappe Ganeti devraient avec la même configuration de Ganeti et @file{/etc/hosts}.  voici un exemple de configuration pour un nœud d'une grappe Ganeti qui prend en charge plusieurs moteurs de stockage et installe les @dfn{fournisseurs de systèmes} @code{debbotstrap} et @code{guix} :

note: type: lisp
en:   ;; Install QEMU so we can use KVM-based instances, and LVM, DRBD and Ceph
      ;; in order to use the "plain", "drbd" and "rbd" storage backends.
      (packages (append (map specification->package
                             '("qemu" "lvm2" "drbd-utils" "ceph"
                               ;; Add the debootstrap and guix OS providers.
                               "ganeti-instance-guix" "ganeti-instance-debootstrap"))
                        %base-packages))
      (services
       (append (list (service static-networking-service-type
                              (list (static-networking
                                     (addresses
                                      (list (network-address
                                             (device "eth0")
                                             (value "192.168.1.201/24"))))
                                     (routes
                                      (list (network-route
                                             (destination "default")
                                             (gateway "192.168.1.254"))))
                                     (name-servers '("192.168.1.252"
                                                     "192.168.1.253")))))
fr:   ;; Installe QEMU pour pouvoir utiliser les instances KVM, ainsi que LVM, DRBD et Ceph
      ;; pour utiliser les moteurs de stockage « plain », « drbd » et « rbd ».
      (packages (append (map specification->package
                             '("qemu" "lvm2" "drbd-utils" "ceph"
                               ;; Add the debootstrap and guix OS providers.
                               "ganeti-instance-guix" "ganeti-instance-debootstrap"))
                        %base-packages))
      (services
       (append (list (service static-networking-service-type
                              (list (static-networking
                                     (addresses
                                      (list (network-address
                                             (device "eth0")
                                             (value "192.168.1.201/24"))))
                                     (routes
                                      (list (network-route
                                             (destination "default")
                                             (gateway "192.168.1.254"))))
                                     (name-servers '("192.168.1.252"
                                                     "192.168.1.253")))))

note: type: lisp
en:                  ;; Ganeti uses SSH to communicate between nodes.
                     (service openssh-service-type
                              (openssh-configuration
                               (permit-root-login 'prohibit-password)))
fr:                  ;; Ganeti utilise SSH pour communiquer entre les nœuds.
                     (service openssh-service-type
                              (openssh-configuration
                               (permit-root-login 'prohibit-password)))

note: type: lisp
en:                  (service ganeti-service-type
                              (ganeti-configuration
                               ;; This list specifies allowed file system paths
                               ;; for storing virtual machine images.
                               (file-storage-paths '("/srv/ganeti/file-storage"))
                               ;; This variable configures a single "variant" for
                               ;; both Debootstrap and Guix that works with KVM.
                               (os %default-ganeti-os))))
               %base-services)))
fr:                  (service ganeti-service-type
                              (ganeti-configuration
                               ;; cette liste spécifie les chemins du système de fichiers autorisés
                               ;; pour le stockage des images de machines virtuelles.
                               (file-storage-paths '("/srv/ganeti/file-storage"))
                               ;; Cette variable configure une « variante » pour
                               ;; Debootstrap et Guix qui fonctionne avec KVM.
                               (os %default-ganeti-os))))
               %base-services)))

note: type: Plain text
en: Users are advised to read the @url{https://docs.ganeti.org/docs/ganeti/3.0/html/admin.html,Ganeti administrators guide} to learn about the various cluster options and day-to-day operations.  There is also a @url{https://guix.gnu.org/blog/2020/running-a-ganeti-cluster-on-guix/,blog post} describing how to configure and initialize a small cluster.
fr: Nous vous encourageons à lire le @url{https://docs.ganeti.org/docs/ganeti/3.0/html/admin.html,guide d'administration de Ganeti} pour apprendre les diverse options de grappes et les opérations de base.  Il y a aussi un @url{https://guix.gnu.org/blog/2020/running-a-ganeti-cluster-on-guix/,billet de blog} décrivant comment configurer et initialiser une petite grappe.

note: type: defvr
en: {Scheme Variable} ganeti-service-type
fr: {Variable Scheme} ganeti-service-type

note: type: defvr
en: This is a service type that includes all the various services that Ganeti nodes should run.
fr: C'est le type de service qui inclus tous les service dont les nœuds Ganeti ont besoin.

note: type: defvr
en: Its value is a @code{ganeti-configuration} object that defines the package to use for CLI operations, as well as configuration for the various daemons.  Allowed file storage paths and available guest operating systems are also configured through this data type.
fr: Sa valeur est un objet @code{ganeti-configurtaion} qui définie le paquet pour utiliser les opérations en ligne de commande, ainsi que pour les divers démons.  Les chemins de stockage autorisés et les systèmes d'exploitation invités disponibles sont aussi configurés à travers ce type de données.

note: type: deftp
en: {Data Type} ganeti-configuration
fr: {Type de données} ganeti-configuration

note: type: deftp
en: The @code{ganeti} service takes the following configuration options:
fr: Le service @code{ganeti} prend les options de configuration suivante :

note: type: item
en: @code{ganeti} (default: @code{ganeti})
fr: @code{ganeti} (par défaut : @code{ganeti})

note: type: table
en: The @code{ganeti} package to use.  It will be installed to the system profile and make @command{gnt-cluster}, @command{gnt-instance}, etc available.  Note that the value specified here does not affect the other services as each refer to a specific @code{ganeti} package (see below).
fr: Le paquet @code{ganeti} à utiliser.  Il sera installé sur le profil du système et rendra @command{gnt-cluster}, @command{gnt-instance}, etc disponibles.  Remarquez que la valeur spécifiée ici n'affecte pas les autres services auxquels se réfère le paquet @code{ganeti} (voir plus bas).

note: type: item
en: @code{noded-configuration} (default: @code{(ganeti-noded-configuration)})
fr: @code{noded-configuration} (par défaut : @code{(ganeti-noded-configuration)})

note: type: itemx
en: @code{confd-configuration} (default: @code{(ganeti-confd-configuration)})
fr: @code{confd-configuration} (par défaut : @code{(ganeti-confd-configuration)})

note: type: itemx
en: @code{wconfd-configuration} (default: @code{(ganeti-wconfd-configuration)})
fr: @code{wconfd-configuration} (par défaut : @code{(ganeti-wconfd-configuration)})

note: type: itemx
en: @code{luxid-configuration} (default: @code{(ganeti-luxid-configuration)})
fr: @code{luxid-configuration} (par défaut : @code{(ganeti-luxid-configuration)})

note: type: itemx
en: @code{rapi-configuration} (default: @code{(ganeti-rapi-configuration)})
fr: @code{rapi-configuration} (par défaut : @code{(ganeti-rapi-configuration)})

note: type: itemx
en: @code{kvmd-configuration} (default: @code{(ganeti-kvmd-configuration)})
fr: @code{kvmd-configuration} (par défaut : @code{(ganeti-kvmd-configuration)})

note: type: itemx
en: @code{mond-configuration} (default: @code{(ganeti-mond-configuration)})
fr: @code{mond-configuration} (par défaut : @code{(ganeti-mond-configuration)})

note: type: itemx
en: @code{metad-configuration} (default: @code{(ganeti-metad-configuration)})
fr: @code{metad-configuration} (par défaut : @code{(ganeti-metad-configuration)})

note: type: itemx
en: @code{watcher-configuration} (default: @code{(ganeti-watcher-configuration)})
fr: @code{watcher-configuration} (par défaut : @code{(ganeti-watcher-configuration)})

note: type: itemx
en: @code{cleaner-configuration} (default: @code{(ganeti-cleaner-configuration)})
fr: @code{cleaner-configuration} (par défaut : @code{(ganeti-cleaner-configuration)})

note: type: table
en: These options control the various daemons and cron jobs that are distributed with Ganeti.  The possible values for these are described in detail below.  To override a setting, you must use the configuration type for that service:
fr: Ces options contrôlent les divers démons et tâches cron distribués avec Ganeti.  Les valeurs possibles sont détaillées plus bas.  Pour changer un paramètre, vous devez utiliser le type de configuration pour ce service :

note: type: item
en: @code{file-storage-paths} (default: @code{'()})
fr: @code{file-storage-paths} (par défaut : @code{'()})

note: type: table
en: List of allowed directories for file storage backend.
fr: Liste des répertoire autorisés pour le moteur de stockage de fichiers.

note: type: item
en: @code{os} (default: @code{%default-ganeti-os})
fr: @code{os} (par défaut : @code{%default-ganeti-os})

note: type: table
en: List of @code{<ganeti-os>} records.
fr: Liste des enregistrements @code{<ganeti-os>}.

note: type: deftp
en: In essence @code{ganeti-service-type} is shorthand for declaring each service individually:
fr: En résumé @code{ganeti-service-type} est un raccourci pour la déclaration de chaque service individuel :

note: type: deftp
en: Plus a service extension for @code{etc-service-type} that configures the file storage backend and OS variants.
fr: Plus une extension de service pour @code{etc-service-type} qui configure le moteur de stockage de fichiers et les variantes de systèmes.

note: type: deftp
en: {Data Type} ganeti-os
fr: {Type de données} ganeti-os

note: type: deftp
en: This data type is suitable for passing to the @code{os} parameter of @code{ganeti-configuration}.  It takes the following parameters:
fr: Ce type de données peut être passé au paramètre @code{os} de @code{ganeti-configuration}.  Il prend les paramètres suivants :

note: type: table
en: The name for this OS provider.  It is only used to specify where the configuration ends up.  Setting it to ``debootstrap'' will create @file{/etc/ganeti/instance-debootstrap}.
fr: Le nom du fournisseur de système.  Il est seulement utilisé pour spécifier où la configuration se trouve.  Indiquer « debootstrap » créera @file{/etc/ganeti/intance-debootstrap}.

note: type: item
en: @code{extension} (default: @code{#f})
fr: @code{extension} (par défaut : @code{#f})

note: type: table
en: The file extension for variants of this OS type.  For example @file{.conf} or @file{.scm}.  It will be appended to the variant file name if set.
fr: L'extension de fichier pour les variantes de ce type de système. Par exemple @file{.conf} ou @file{.scm}. Elle sera ajoutée à la fin du nom de fichier si elle est indiquée.

note: type: item
en: @code{variants} (default: @code{'()})
fr: @code{variants} (par défaut : @code{'()})

note: type: table
en: This must be either a list of @code{ganeti-os-variant} objects for this OS, or a ``file-like'' object (@pxref{G-Expressions, file-like objects})  representing the variants directory.
fr: Il doit s'agir soit d'une liste d'objets @code{ganeti-os-variant} pour cet OS ou un objet « simili-fichier » (@pxref{G-Expressions, file-like objects}) représentant le répertoire des variantes.

note: type: table
en: To use the Guix OS provider with variant definitions residing in a local directory instead of declaring individual variants (see @var{guix-variants} below), you can do:
fr: Pour utiliser le fournisseur Guix OS avec les définitions des variantes dans un répertoire local au lieu de déclarer des variantes individuelles (voir @var{guix-variants} ci-dessous), vous pouvez utiliser :

note: type: table
en: Note that you will need to maintain the @file{variants.list} file (see @code{@url{https://docs.ganeti.org/docs/ganeti/3.0/man/ganeti-os-interface.html, ganeti-os-interface(7)}})  manually in this case.
fr: Remarquez que vous devrez maintenir le fichier @file{variants.list} (voir @code{@url{https://docs.ganeti.org/docs/ganeti/3.0/man/ganeti-os-interface.html, ganeti-os-interface(7)}}) manuellement dans ce cas.

note: type: deftp
en: {Data Type} ganeti-os-variant
fr: {Type de données} ganeti-os-variant

note: type: deftp
en: This is the data type for a Ganeti OS variant.  It takes the following parameters:
fr: Type de données représentant une variante de système Ganeti.  Il prend les paramètres suivants :

note: type: table
en: The name of this variant.
fr: Le nom de cette variante.

note: type: table
en: A configuration file for this variant.
fr: Un fichier de configuration pour cette variante.

note: type: defvr
en: {Scheme Variable} %default-debootstrap-hooks
fr: {Variable Scheme} %default-debootstrap-hooks

note: type: defvr
en: This variable contains hooks to configure networking and the GRUB bootloader.
fr: Cette variable contient les crochet pour configurer le réseau et le chargeur d'amorçage GRUB.

note: type: defvr
en: {Scheme Variable} %default-debootstrap-extra-pkgs
fr: {variable Scheme} %default-debootstrap-extra-pkgs

note: type: defvr
en: This variable contains a list of packages suitable for a fully-virtualized guest.
fr: Cette variable contient une liste de paquets requis pour un invité complètement virtualisé.

note: type: deftp
en: {Data Type} debootstrap-configuration
fr: {Type de données} debootstrap-configuration

note: type: deftp
en: This data type creates configuration files suitable for the debootstrap OS provider.
fr: Ce type de données crée des fichiers de configurations pour le fournisseur de système debootstrap.

note: type: item
en: @code{hooks} (default: @code{%default-debootstrap-hooks})
fr: @code{hooks} (par défaut : @code{%default-debootstrap-hooks})

note: type: table
en: When not @code{#f}, this must be a G-expression that specifies a directory with scripts that will run when the OS is installed.  It can also be a list of @code{(name . file-like)} pairs.  For example:
fr: Lorsque la valeur n'est pas @code{#f}, cela doit être une G-expression qui spécifie un répertoire avec les scripts qui seront lancés à l'installation du système.  Elle peut aussi être une liste de pairs de @code{(nom, simili-fichier)}.  Par exemple :

note: type: table
en: That will create a directory with one executable named @code{99-hello-world} and run it every time this variant is installed.  If set to @code{#f}, hooks in @file{/etc/ganeti/instance-debootstrap/hooks} will be used, if any.
fr: Cela va créer un répertoire avec un exécutable nommé @code{99-hello-world} et le lancera à chaque fois que cette variante est installée.  Si la valeur est @code{#f}, les crochets dans @file{/etc/ganeti/instance-debootstrap/hooks} seront utilisés, s'ils existent.

note: type: item
en: @code{proxy} (default: @code{#f})
fr: @code{proxy} (par défaut : @code{#f})

note: type: table
en: Optional HTTP proxy to use.
fr: Serveur mandataire HTTP facultatif à utiliser.

note: type: item
en: @code{mirror} (default: @code{#f})
fr: @code{mirror} (par défaut : @code{#f})

note: type: table
en: The Debian mirror.  Typically something like @code{http://ftp.no.debian.org/debian}.  The default varies depending on the distribution.
fr: Le miroir Debian.  Habituellement quelque chose comme @code{http://ftp.no.debian.org/debian}.  La valeur par défaut dépend de la distribution.

note: type: item
en: @code{arch} (default: @code{#f})
fr: @code{arch} (par défaut : @code{#f})

note: type: table
en: The dpkg architecture.  Set to @code{armhf} to debootstrap an ARMv7 instance on an AArch64 host.  Default is to use the current system architecture.
fr: L'architecture pour dpkg.  Indiquez @code{armhf} pour debootstrap pour une instnace ARMv7 sur un hôte AArch64.  La valeur par défaut est l'architecture système actuelle.

note: type: item
en: @code{suite} (default: @code{"stable"})
fr: @code{suite} (par défaut : @code{"stable"})

note: type: table
en: When set, this must be a Debian distribution ``suite'' such as @code{buster} or @code{focal}.  If set to @code{#f}, the default for the OS provider is used.
fr: Lorsqu'il est indiqué, ce paramètre doit être une distribution Debian comme @code{buster} ou @code{focal}.  Si la valeur est @code{#f}, la valeur par défaut du fournisseur de système est utilisée.

note: type: item
en: @code{extra-pkgs} (default: @code{%default-debootstrap-extra-pkgs})
fr: @code{extra-pkgs} (par défaut : @code{%default-debootstrap-extra-pkgs})

note: type: table
en: List of extra packages that will get installed by dpkg in addition to the minimal system.
fr: Liste des paquets supplémentaires qui seront installés par dpkg en plus du système minimal.

note: type: item
en: @code{components} (default: @code{#f})
fr: @code{components} (par défaut : @code{#f})

note: type: table
en: When set, must be a list of Debian repository ``components''.  For example @code{'("main" "contrib")}.
fr: Lorsque la valeur est indiquée, doit être une liste de « composants » de répertoires Debian.  Par exemple @code{'("main" "contrib")}.

note: type: item
en: @code{generate-cache?} (default: @code{#t})
fr: @code{generate-cache?} (par défaut : @code{#t})

note: type: table
en: Whether to automatically cache the generated debootstrap archive.
fr: Indique s'il faut automatiquement mettre en cache l'archive debootstrap générée.

note: type: item
en: @code{clean-cache} (default: @code{14})
fr: @code{clean-cache} (par défaut : @code{14})

note: type: table
en: Discard the cache after this amount of days.  Use @code{#f} to never clear the cache.
fr: Supprime le cache après ce nombre de jours.  Utilisez @code{#f} pour ne jamais vider le cache.

note: type: item
en: @code{partition-style} (default: @code{'msdos})
fr: @code{partition-style} (par défaut : @code{'msdos})

note: type: table
en: The type of partition to create.  When set, it must be one of @code{'msdos}, @code{'none} or a string.
fr: Le type de partition à créer.  Lorsqu'il est indiqué, ce paramètre doit être @code{'msdos}, @code{'none} ou une chaine de caractères.

note: type: item
en: @code{partition-alignment} (default: @code{2048})
fr: @code{partition-alignment} (par défaut : @code{2048})

note: type: table
en: Alignment of the partition in sectors.
fr: Alignement des partitions en nombre de secteur.

note: type: deffn
en: {Scheme Procedure} debootstrap-variant @var{name} @var{configuration}
fr: {Procédure Scheme} debootstrap-variant @var{nom} @var{configuration}

note: type: deffn
en: This is a helper procedure that creates a @code{ganeti-os-variant} record.  It takes two parameters: a name and a @code{debootstrap-configuration} object.
fr: C'est une procédure auxiliaire qui crée un enregistrement @code{ganeti-os-variant}.  Il prend deux paramètres . un nom et un objet @code{debootstrap-configuration}.

note: type: deffn
en: {Scheme Procedure} debootstrap-os @var{variants}@dots{}
fr: {Procédure Scheme} debootstrap-os @var{variants}@dots{}

note: type: deffn
en: This is a helper procedure that creates a @code{ganeti-os} record.  It takes a list of variants created with @code{debootstrap-variant}.
fr: C'est une procédure auxiliaire qui crée un enregistrement @code{ganeti-os}.  Elle prend une liste de variantes créé avec @code{debootstrap-variant}.

note: type: deffn
en: {Scheme Procedure} guix-variant @var{name} @var{configuration}
fr: {Procédure Scheme} guix-variant @var{name} @var{configuration}

note: type: deffn
en: This is a helper procedure that creates a @code{ganeti-os-variant} record for use with the Guix OS provider.  It takes a name and a G-expression that returns a ``file-like'' (@pxref{G-Expressions, file-like objects}) object containing a Guix System configuration.
fr: C'est une procédure auxiliaire qui crée un enregistrement @code{ganeti-os-variant} à utiliser avec le fournisseur de système Guix.  Il prend un nom et une G-expression qui renvoie un objet simili-fichier (@pxref{G-Expressions, file-like objects}) contenant une configuration Guix System.

note: type: deffn
en: {Scheme Procedure} guix-os @var{variants}@dots{}
fr: {Procédure Scheme} guix-os @var{variants}@dots{}

note: type: deffn
en: This is a helper procedure that creates a @code{ganeti-os} record.  It takes a list of variants produced by @code{guix-variant}.
fr: C'est une procédure auxiliaire qui crée un enregistrement @code{ganeti-os}.  Elle prend une liste de variantes produites par @code{guix-variant}.

note: type: defvr
en: {Scheme Variable} %default-debootstrap-variants
fr: {Variable Scheme} %default-debootstrap-variants

note: type: defvr
en: This is a convenience variable to make the debootstrap provider work ``out of the box'' without users having to declare variants manually.  It contains a single debootstrap variant with the default configuration:
fr: C'est une variable pratique pour que le fournisseur debootstrap fonctionne directement sans avoir à déclarer des variantes manuellement.  Elle contient une seule variante debootrstap avec la configuration par défaut :

note: type: defvr
en: {Scheme Variable} %default-guix-variants
fr: {Variable Scheme} %default-guix-variants

note: type: defvr
en: This is a convenience variable to make the Guix OS provider work without additional configuration.  It creates a virtual machine that has an SSH server, a serial console, and authorizes the Ganeti hosts SSH keys.
fr: C'est une variable pratique pour que le fournisseur Guix fonctionne directement sans configuration supplémentaire.  Elle crée une machine virtuelle qui a un serveur SSH, une console série et autorise les clés SSH des hôtes Ganeti.

note: type: Plain text
en: Users can implement support for OS providers unbeknownst to Guix by extending the @code{ganeti-os} and @code{ganeti-os-variant} records appropriately.  For example:
fr: Les utilisateur·rices peuvent implémenter la prise en charge des fournisseurs de systèmes inconnus de Guix en étendant les enregistrement @code{ganeti-os} et @code{ganeti-os-variant} comme il faut.  Par exemple :

note: type: lisp
en: (ganeti-os
     (name "custom")
     (extension ".conf")
     (variants
      (list (ganeti-os-variant
             (name "foo")
             (configuration (plain-file "bar" "this is fine"))))))
fr: (ganeti-os
     (name "custom")
     (extension ".conf")
     (variants
      (list (ganeti-os-variant
             (name "toto")
             (configuration (plain-file "titi" "this is fine"))))))

note: type: Plain text
en: That creates @file{/etc/ganeti/instance-custom/variants/foo.conf} which points to a file in the store with contents @code{this is fine}.  It also creates @file{/etc/ganeti/instance-custom/variants/variants.list} with contents @code{foo}.
fr: Cela crée @file{/etc/ganeti/instance-custom/variants/toto.conf} qui pointe vers un fichier dans le dépôt qui contient @code{this is fine}.  Cela crée aussi @file{/etc/ganeti/instance-custom/variants/variants.list} qui contient @code{toto}.

note: type: Plain text
en: Obviously this may not work for all OS providers out there.  If you find the interface limiting, please reach out to @email{guix-devel@@gnu.org}.
fr: Évidemment cela ne fonctionnera pas avec tous les fournisseurs d'OS disponibles.  Si vous trouvez que cette interface est trop limitée, contactez-nous sur @email{guix-devel@@gnu.org}.

note: type: Plain text
en: The rest of this section documents the various services that are included by @code{ganeti-service-type}.
fr: Le reste de cette section documente les divers services inclus par @code{ganeti-service-type}.

note: type: defvr
en: {Scheme Variable} ganeti-noded-service-type
fr: {Variable Scheme} ganeti-noded-service-type

note: type: defvr
en: @command{ganeti-noded} is the daemon responsible for node-specific functions within the Ganeti system.  The value of this service must be a @code{ganeti-noded-configuration} object.
fr: @command{ganeti-noded} est le démon responsable des fonctions spécifiques au nœud dans le système Ganeti.  La valeur de ce service doit être un objet @code{ganeti-noded-configuration}.

note: type: deftp
en: {Data Type} ganeti-noded-configuration
fr: {Type de données} ganeti-noded-configuration

note: type: deftp
en: This is the configuration for the @code{ganeti-noded} service.
fr: La configuration du service @code{ganeti-noded}.

note: type: table
en: The @code{ganeti} package to use for this service.
fr: Le paquet @code{ganeti} à utiliser pour ce service.

note: type: item
en: @code{port} (default: @code{1811})
fr: @code{port} (par défaut : @code{1811})

note: type: table
en: The TCP port on which the node daemon listens for network requests.
fr: Port TCP sur lequel le démon de nœud écoute les requêtes réseaux.

note: type: item
en: @code{address} (default: @code{"0.0.0.0"})
fr: @code{address} (par défaut : @code{"0.0.0.0"})

note: type: table
en: The network address that the daemon will bind to.  The default address means bind to all available addresses.
fr: Adresse réseau sur laquelle le démon se lie.  L'adresse par défaut signifie de se lier à toutes les adresse disponibles.

note: type: table
en: When this is set, it must be a specific network interface (e.g.@: @code{eth0})  that the daemon will bind to.
fr: Si une valeur est indiquée, elle doit être une interface réseau spécifique (p.@: ex.@: @code{eth0}) à laquelle le démon se liera.

note: type: item
en: @code{max-clients} (default: @code{20})
fr: @code{max-clients} (par défaut : @code{20})

note: type: table
en: This sets a limit on the maximum number of simultaneous client connections that the daemon will handle.  Connections above this count are accepted, but no responses will be sent until enough connections have closed.
fr: Cela indique une limite du nombre de connexions clientes simultanées que le démon pourra prendre en charge.  Les connexions au delà de ce nombre sont acceptées, mais aucune réponse ne sera envoyée avant que suffisamment de connexions ne soient fermées.

note: type: item
en: @code{ssl?} (default: @code{#t})
fr: @code{ssl?} (par défaut : @code{#t})

note: type: table
en: Whether to use SSL/TLS to encrypt network communications.  The certificate is automatically provisioned by the cluster and can be rotated with @command{gnt-cluster renew-crypto}.
fr: Indique s'il faut utiliser SSL/TLS pour chiffrer les communications réseaux.  Le certification est automatiquement intégré par la grappe et peut être modifié avec @command{gnt-cluster renew-crypto}.

note: type: item
en: @code{ssl-key} (default: @file{"/var/lib/ganeti/server.pem"})
fr: @code{ssl-key} (par défaut : @file{"/var/lib/ganeti/server.pem"})

note: type: table
en: This can be used to provide a specific encryption key for TLS communications.
fr: Cela peut être utilisé pour fournir une clé de chiffrement spécifique pour les communications TLS.

note: type: item
en: @code{ssl-cert} (default: @file{"/var/lib/ganeti/server.pem"})
fr: @code{ssl-cert} (par défaut : @file{"/var/lib/ganeti/server.pem"})

note: type: table
en: This can be used to provide a specific certificate for TLS communications.
fr: Cela peut être utilisé pour fournir un certification spécifique pour les communications TLS.

note: type: table
en: When true, the daemon performs additional logging for debugging purposes.  Note that this will leak encryption details to the log files, use with caution.
fr: Lorsque la valeur est vraie, le démon effectue plus de journalisation pour le débogage.  Remarque que cela laissera fuiter des détails de chiffrement dans les journaux, utilisez cette option avec prudence.

note: type: defvr
en: {Scheme Variable} ganeti-confd-service-type
fr: {Variable Scheme} ganeti-confd-service-type

note: type: defvr
en: @command{ganeti-confd} answers queries related to the configuration of a Ganeti cluster.  The purpose of this daemon is to have a highly available and fast way to query cluster configuration values.  It is automatically active on all @dfn{master candidates}.  The value of this service must be a @code{ganeti-confd-configuration} object.
fr: @command{ganeti-confd} répond aux requêtes liées à la configuration de la grappe Ganeti.  Le but de ce démon est d'avoir une manière rapide et très disponible de demander les valeurs de configuration de la grappe.  Il est automatiquement activé sur tous les @dfn{candidats maitres}.  La valeur de ce service doit être un objet @code{ganeti-confd-configuration}.

note: type: deftp
en: {Data Type} ganeti-confd-configuration
fr: {Type de données} ganeti-confd-configuration

note: type: deftp
en: This is the configuration for the @code{ganeti-confd} service.
fr: La configuration du service @code{ganeti-confd}.

note: type: item
en: @code{port} (default: @code{1814})
fr: @code{port} (par défaut : @code{1814})

note: type: table
en: The UDP port on which to listen for network requests.
fr: Le port UDP sur lequel écouter les requêtes réseaux.

note: type: table
en: Network address that the daemon will bind to.
fr: L'adresse réseau sur laquelle le démon se liera.

note: type: table
en: When true, the daemon performs additional logging for debugging purposes.
fr: Lorsque la valeur est vraie, le démon effectue des actions de journalisation supplémentaires pour le débogage.

note: type: defvr
en: {Scheme Variable} ganeti-wconfd-service-type
fr: {Variable Scheme} ganeti-wconfd-service-type

note: type: defvr
en: @command{ganeti-wconfd} is the daemon that has authoritative knowledge about the cluster configuration and is the only entity that can accept changes to it.  All jobs that need to modify the configuration will do so by sending appropriate requests to this daemon.  It only runs on the @dfn{master node} and will automatically disable itself on other nodes.
fr: @command{ganeti-wconfd} est le démon qui fait autorité sur la configuration de la grappe et est la seule entité qui peut y accepter des changements.  Tous les travaux qui ont besoin de modifier la configuration le feront en envoyant les requêtes appropriées à ce démon.  Il ne tourne que sur le @dfn{nœud maitre} et sera automatiquement désactivé sur les autres nœuds.

note: type: defvr
en: The value of this service must be a @code{ganeti-wconfd-configuration} object.
fr: La valeur de ce service est un objet @code{ganeti-wconfd-configuration}.

note: type: deftp
en: {Data Type} ganeti-wconfd-configuration
fr: {Type de données} ganeti-wconfd-configuration

note: type: deftp
en: This is the configuration for the @code{ganeti-wconfd} service.
fr: La configuration du service @code{ganeti-wconfd}.

note: type: item
en: @code{no-voting?} (default: @code{#f})
fr: @code{no-voting?} (par défaut : @code{#f})

note: type: table
en: The daemon will refuse to start if the majority of cluster nodes does not agree that it is running on the master node.  Set to @code{#t} to start even if a quorum can not be reached (dangerous, use with caution).
fr: Le démon refusera de démarrer si la majorité des nœuds de la grappe ne sont pas d'accord pour dire qu'il est le nœud maitre.  Indiquez @code{#t} pour le démarre même si le quorum n'a pas été atteint (dangereux, utilisez avec prudence).

note: type: defvr
en: {Scheme Variable} ganeti-luxid-service-type
fr: {Variable Scheme} ganeti-luxid-service-type

note: type: defvr
en: @command{ganeti-luxid} is a daemon used to answer queries related to the configuration and the current live state of a Ganeti cluster.  Additionally, it is the authoritative daemon for the Ganeti job queue.  Jobs can be submitted via this daemon and it schedules and starts them.
fr: @command{ganeti-luxid} est un démon utilisé pour répondre aux requêtes liées à la configuration et à l'état actuel d'une grappe Ganeti.  En plus, c'est le démon qui fait autorité pour la queue de travaux de Ganeti.  les travaux peuvent être soumis via ce démon et il les programme et les démarre.

note: type: defvr
en: It takes a @code{ganeti-luxid-configuration} object.
fr: Il prend un objet @code{ganeti-luxid-configuration}.

note: type: deftp
en: {Data Type} ganeti-luxid-configuration
fr: {Type de données} ganeti-luxid-configuration

note: type: deftp
en: This is the configuration for the @code{ganeti-luxid} service.
fr: La configuration du service @code{ganeti-rapi}.

note: type: table
en: The daemon will refuse to start if it cannot verify that the majority of cluster nodes believes that it is running on the master node.  Set to @code{#t} to ignore such checks and start anyway (this can be dangerous).
fr: Le démon refusera de démarrer s'il ne peut pas vérifier que la majorité des nœuds de la grappe pensent qu'il est le nœud maitre.  Indiquez @code{#t} pour le démarre malgré tout (cela peut être dangereux).

note: type: defvr
en: {Scheme Variable} ganeti-rapi-service-type
fr: {Variable Scheme} ganeti-rapi-service-type

note: type: defvr
en: @command{ganeti-rapi} provides a remote API for Ganeti clusters.  It runs on the master node and can be used to perform cluster actions programmatically via a JSON-based RPC protocol.
fr: @command{ganeti-rapi} fournit une API à distance pour les grappes Ganeti.  Il est lancé sur le maitre et peut être utilisé pour effectuer des actions programmées sur la grappe via un protocole de RPC basé sur JSON.

note: type: defvr
en: Most query operations are allowed without authentication (unless @var{require-authentication?} is set), whereas write operations require explicit authorization via the @file{/var/lib/ganeti/rapi/users} file.  See the @url{https://docs.ganeti.org/docs/ganeti/3.0/html/rapi.html, Ganeti Remote API documentation} for more information.
fr: La plupart des opérations de requêtes sont permises sans authentification (à moins que @var{require-authentification?} ne soit indiqué), alors que les opérations en écriture requièrent une autorisation explicite via le fichier @var{/var/lib/ganeti/rapi/users}.  Voir la @url{https://docs.ganeti.org/docs/ganeti/3.0/html/rapi.html, documentation de l'API distante de Ganeti} pour plus d'informations.

note: type: defvr
en: The value of this service must be a @code{ganeti-rapi-configuration} object.
fr: La valeur de ce service doit être un objet @code{geneti-rapi-configuration}.

note: type: deftp
en: {Data Type} ganeti-rapi-configuration
fr: {Type de données} ganeti-rapi-configuration

note: type: deftp
en: This is the configuration for the @code{ganeti-rapi} service.
fr: La configuration du service @code{ganeti-rapi}.

note: type: item
en: @code{require-authentication?} (default: @code{#f})
fr: @code{require-authentication?} (par défaut : @code{#f})

note: type: table
en: Whether to require authentication even for read-only operations.
fr: Indique s'il faut demander une authentification même pour les opérations en lecture-seule.

note: type: item
en: @code{port} (default: @code{5080})
fr: @code{port} (par défaut : @code{5080})

note: type: table
en: The TCP port on which to listen to API requests.
fr: Le port TCP sur lequel écouter les requêtes de l'API.

note: type: table
en: The network address that the service will bind to.  By default it listens on all configured addresses.
fr: L'adresse réseau sur laquelle le service de liera.  Par défaut il écoute sur toutes les adresses.

note: type: table
en: When set, it must specify a specific network interface such as @code{eth0} that the daemon will bind to.
fr: Si une valeur est indiquée, elle doit spécifier une interface réseau spécifique comme @code{eth0} sur laquelle le démon se liera.

note: type: table
en: The maximum number of simultaneous client requests to handle.  Further connections are allowed, but no responses are sent until enough connections have closed.
fr: Le nombre maximum de requêtes clientes simultanées à prendre en charge.  Les connexions supplémentaires sont permises, mais aucune réponse ne sera envoyée tant qu'il n'y aura pas assez de connexions fermées.

note: type: table
en: Whether to use SSL/TLS encryption on the RAPI port.
fr: Indique s'il faut utiliser le chiffrement SSL/TLS sur le port RAPI.

note: type: defvr
en: {Scheme Variable} ganeti-kvmd-service-type
fr: {Variable Scheme} ganeti-kvmd-service-type

note: type: defvr
en: @command{ganeti-kvmd} is responsible for determining whether a given KVM instance was shut down by an administrator or a user.  Normally Ganeti will restart an instance that was not stopped through Ganeti itself.  If the cluster option @code{user_shutdown} is true, this daemon monitors the @code{QMP} socket provided by QEMU and listens for shutdown events, and marks the instance as @dfn{USER_down} instead of @dfn{ERROR_down} when it shuts down gracefully by itself.
fr: @command{ganeti-kvmd} doit déterminer si une instance KVM donnée a été éteinte par un administrateur ou un utilisateur.  Normalement Ganeti redémarre une instance qui a été arrêtée par Ganeti lui-même.  Si l'option de grappe @code{user_shutdown} est vraie, ce démon vérifie la socket @code{QMP} fournie par QEMU et écoute les évènements d'extinction, et marque l'instance @dfn{USER down} au lieu de @dfn{ERROR down} lorsqu'elle s'éteint correctement par elle-même.

note: type: defvr
en: It takes a @code{ganeti-kvmd-configuration} object.
fr: Il prend un objet @code{ganeti-kvmd-configuration}.

note: type: deftp
en: {Data Type} ganeti-kvmd-configuration
fr: {Type de données} ganeti-kvmd-configuration

note: type: defvr
en: {Scheme Variable} ganeti-mond-service-type
fr: {Variable Scheme} ganeti-mond-service-type

note: type: defvr
en: @command{ganeti-mond} is an optional daemon that provides Ganeti monitoring functionality.  It is responsible for running data collectors and publish the collected information through a HTTP interface.
fr: @command{ganeti-mond} est un démon facultatif qui propose des fonctionnalités de surveillance de Ganeti.  Il est responsable des collecteurs de données et de la publication des informations récupérées sur une interface HTTP.

note: type: defvr
en: It takes a @code{ganeti-mond-configuration} object.
fr: Il prend un objet @code{ganeti-mond-configuration}.

note: type: deftp
en: {Data Type} ganeti-mond-configuration
fr: {Type de données} ganeti-mond-configuration

note: type: item
en: @code{port} (default: @code{1815})
fr: @code{port} (par défaut : @code{1815})

note: type: table
en: The port on which the daemon will listen.
fr: Le port sur lequel le démon écoutera.

note: type: table
en: The network address that the daemon will bind to.  By default it binds to all available interfaces.
fr: L'adresse réseau sur laquelle le démon se liera.  Par défaut, il se lie à toutes les interfaces disponibles.

note: type: defvr
en: {Scheme Variable} ganeti-metad-service-type
fr: {Variable Scheme} ganeti-metad-service-type

note: type: defvr
en: @command{ganeti-metad} is an optional daemon that can be used to provide information about the cluster to instances or OS install scripts.
fr: @command{ganeti-metad} est un démon facultatif qui peut être utilisé pour fournir des informations sur la grappe aux instance ou aux scripts d'installation de systèmes.

note: type: defvr
en: It takes a @code{ganeti-metad-configuration} object.
fr: Il prend un objet @code{ganeti-metad-configuration}.

note: type: deftp
en: {Data Type} ganeti-metad-configuration
fr: {Type de données} ganeti-metad-configuration

note: type: table
en: If set, the daemon will bind to this address only.  If left unset, the behavior depends on the cluster configuration.
fr: Si la valeur est indiquée, le démon se liera à cette adresse uniquement.  Si la valeur n'est pas indiquée, le comportement dépend de la configuration de la grappe.

note: type: defvr
en: {Scheme Variable} ganeti-watcher-service-type
fr: {Variable Scheme} ganeti-watcher-service-type

note: type: defvr
en: @command{ganeti-watcher} is a script designed to run periodically and ensure the health of a cluster.  It will automatically restart instances that have stopped without Ganeti's consent, and repairs DRBD links in case a node has rebooted.  It also archives old cluster jobs and restarts Ganeti daemons that are not running.  If the cluster parameter @code{ensure_node_health} is set, the watcher will also shutdown instances and DRBD devices if the node it is running on is declared offline by known master candidates.
fr: @command{ganeti-watcher} est un script conçu pour se lancer périodiquement et s'assurer de la santé de la grappe.  Il redémarrera automatiquement les instances qui sont arrêtées sans le consentement de Ganeti, et réparera les liens DRBD au cas où un nœud a redémarré.  Il archive aussi les anciennes tâche de la grappe et redémarre les démons Ganeti qui ne sont pas lancés.  Si le paramètres de grappe @code{ensure_node_health} est indiqué, le gardien éteindra aussi les instances et les périphériques DRBD si le nœud sur lequel il est lancé est déclaré hors-ligne par un candidat maitre.

note: type: defvr
en: It can be paused on all nodes with @command{gnt-cluster watcher pause}.
fr: Il peut être mis en pause sur tous les nœuds avec @command{gnt-cluster watcher-pause}.

note: type: defvr
en: The service takes a @code{ganeti-watcher-configuration} object.
fr: Le service prend un objet @code{ganeti-watcher-configuration}.

note: type: deftp
en: {Data Type} ganeti-watcher-configuration
fr: {Type de données} ganeti-watcher-configuration

note: type: item
en: @code{schedule} (default: @code{'(next-second-from (next-minute (range 0 60 5)))})
fr: @code{schedule} (par défaut : @code{'(next-second-from (next-minute (range 0 60 5)))})

note: type: table
en: How often to run the script.  The default is every five minutes.
fr: Indique quand lancer le script.  Par défaut, toutes les cinq minutes.

note: type: item
en: @code{rapi-ip} (default: @code{#f})
fr: @code{rapi-ip} (par défaut : @code{#f})

note: type: table
en: This option needs to be specified only if the RAPI daemon is configured to use a particular interface or address.  By default the cluster address is used.
fr: Cette option doit être spécifiée seulement si le démon RAPI est configuré pour utiliser une interface ou une adresse particulière.  Par défaut l'adresse de grappe est utilisée.

note: type: item
en: @code{job-age} (default: @code{(* 6 3600)})
fr: @code{job-age} (par défaut : @code{(* 6 3600)})

note: type: table
en: Archive cluster jobs older than this age, specified in seconds.  The default is 6 hours.  This keeps @command{gnt-job list} manageable.
fr: Archive les tâches de grappe plus vieilles que cela, en secondes.  Par défaut c'est 6 heure.  Cela permet de garder un @command{gnt-job list} gérable.

note: type: item
en: @code{verify-disks?} (default: @code{#t})
fr: @code{verify-disks?} (par défaut : @code{#t})

note: type: table
en: If this is @code{#f}, the watcher will not try to repair broken DRBD links automatically.  Administrators will need to use @command{gnt-cluster verify-disks} manually instead.
fr: Si la valeur est @code{#f}, le gardien n'essaiera pas de réparer les liens DRBD cassés automatiquement.  Les administrateur·rices devront utiliser @command{gnt-cluster verify-disks} manuellement à la place.

note: type: table
en: When @code{#t}, the script performs additional logging for debugging purposes.
fr: Lorsque la valeur est @code{#t}, le script effectue des actions de journalisation supplémentaires pour le débogage.

note: type: defvr
en: {Scheme Variable} ganeti-cleaner-service-type
fr: {Variable Scheme} ganeti-cleaner-service-type

note: type: defvr
en: @command{ganeti-cleaner} is a script designed to run periodically and remove old files from the cluster.  This service type controls two @dfn{cron jobs}: one intended for the master node that permanently purges old cluster jobs, and one intended for every node that removes expired X509 certificates, keys, and outdated @command{ganeti-watcher} information.  Like all Ganeti services, it is safe to include even on non-master nodes as it will disable itself as necessary.
fr: @command{ganeti-cleaner} est un script conçu pour être lancé périodiquement et supprimer les anciens fichiers de la grappe.  Ce type de service contrôle deux @dfn{tâches cron} : l'une est conçue pour le nœud maitre et purge de manière permanente les ancienne tâches de la grappe, et l'autre est conçue pour tous les nœuds et supprime les certificats X509, les clés et les informations @command{ganeti-watcher} périmées.  Comme tous les services Ganeti, on peut l'ajouter même sur les nœuds non-maitres car il se désactive tout seul en cas de besoin.

note: type: defvr
en: It takes a @code{ganeti-cleaner-configuration} object.
fr: Il prend un objet @code{ganeti-cleaner-configuration}.

note: type: deftp
en: {Data Type} ganeti-cleaner-configuration
fr: {Type de données} ganeti-cleaner-configuration

note: type: table
en: The @code{ganeti} package to use for the @command{gnt-cleaner} command.
fr: Le paquet @code{ganeti} à utiliser pour la commande @command{gnt-cleaner}.

note: type: item
en: @code{master-schedule} (default: @code{"45 1 * * *"})
fr: @code{master-schedule} (par défaut : @code{"45 1 * * *"})

note: type: table
en: How often to run the master cleaning job.  The default is once per day, at 01:45:00.
fr: La périodicité à laquelle lancer la tâche de nettoyage maitre.  Par défaut c'est une fois par jour, à 01:45:00.

note: type: item
en: @code{node-schedule} (default: @code{"45 2 * * *"})
fr: @code{node-schedule} (par défaut : @code{"45 2 * * *"})

note: type: table
en: How often to run the node cleaning job.  The default is once per day, at 02:45:00.
fr: La périodicité à laquelle lancer la tâche de nettoyage des nœuds.  Par défaut une fois par jour, à 02:45:00.

note: type: Plain text
en: The @code{(gnu services version-control)} module provides a service to allow remote access to local Git repositories.  There are three options: the @code{git-daemon-service}, which provides access to repositories via the @code{git://} unsecured TCP-based protocol, extending the @code{nginx} web server to proxy some requests to @code{git-http-backend}, or providing a web interface with @code{cgit-service-type}.
fr: Le module @code{(gnu services version-control)} fournit un service pour permettre l'accès à distance à des dépôts Git locaux.  Il y a trois options : en utilisant @code{git-daemon-service} qui fournit un accès aux dépôts via le protocole non sécurisé @code{git://} basé sur TCP, en étendant le serveur web @code{nginx} pour relayer les requêtes vers @code{git-http-backend} ou en fournissant une interface web avec @code{cgit-service-type}.

note: type: deffn
en: {Scheme Procedure} git-daemon-service [#:config (git-daemon-configuration)]
fr: {Procédure Scheme} git-daemon-service [#:config (git-daemon-configuration)]

note: type: deffn
en: Return a service that runs @command{git daemon}, a simple TCP server to expose repositories over the Git protocol for anonymous access.
fr: Renvoie un service qui lance @command{git daemon}, un serveur TCP simple pour exposer des dépôts sur le protocole Git pour des accès anonymes.

note: type: deffn
en: The optional @var{config} argument should be a @code{<git-daemon-configuration>} object, by default it allows read-only access to exported@footnote{By creating the magic file @file{git-daemon-export-ok} in the repository directory.} repositories under @file{/srv/git}.
fr: L'argument facultatif @var{config} devrait être un objet @code{<git-daemon-configuration>}, par défaut il permet l'accès en lecture-seule aux dépôts exportés@footnote{En créant le fichier magique @file{git-daemon-export-ok} dans le répertoire du dépôt.} dans @file{/srv/git}.

note: type: deftp
en: {Data Type} git-daemon-configuration
fr: {Type de données} git-daemon-configuration

note: type: deftp
en: Data type representing the configuration for @code{git-daemon-service}.
fr: Type de données représentnt la configuration de @code{git-daemon-service}.

note: type: item
en: @code{package} (default: @code{git})
fr: @code{package} (par défaut : @code{git})

note: type: table
en: Package object of the Git distributed version control system.
fr: Objet de paquet du système de contrôle de version distribué Git.

note: type: item
en: @code{export-all?} (default: @code{#f})
fr: @code{export-all?} (par défaut : @code{#f})

note: type: table
en: Whether to allow access for all Git repositories, even if they do not have the @file{git-daemon-export-ok} file.
fr: Indique s'il faut permettre l'accès à tous les dépôts Git, même s'ils n'ont pas le fichier @file{git-daemon-export-ok}.

note: type: item
en: @code{base-path} (default: @file{/srv/git})
fr: @code{base-path} (par défaut : @file{/srv/git})

note: type: table
en: Whether to remap all the path requests as relative to the given path.  If you run @command{git daemon} with @code{(base-path "/srv/git")} on @samp{example.com}, then if you later try to pull @indicateurl{git://example.com/hello.git}, git daemon will interpret the path as @file{/srv/git/hello.git}.
fr: Indique s'il faut traduire toutes les requêtes de chemins relativement au chemin actuel.  Si vous lancez @command{git daemon} avec @code{(base-path "/srv/git")} sur @samp{example.com}, et que vous essayez ensuite de récupérer @indicateurl{git://example.com/hello.git}, le démon git interprètera ce chemin comme étant @code{/srv/git/hello.git}.

note: type: item
en: @code{user-path} (default: @code{#f})
fr: @code{user-path} (par défaut : @code{#f})

note: type: table
en: Whether to allow @code{~user} notation to be used in requests.  When specified with empty string, requests to @indicateurl{git://host/~alice/foo} is taken as a request to access @code{foo} repository in the home directory of user @code{alice}.  If @code{(user-path "@var{path}")} is specified, the same request is taken as a request to access @file{@var{path}/foo} repository in the home directory of user @code{alice}.
fr: Indique s'il faut permettre la notation @code{~user} dans les requêtes.  Lorsque spécifié avec une chaine vide, les requêtes à @indicateurl{git://host/~alice/toto} sont des requêtes d'accès au dépôt @code{toto} dans le répertoire personnel de l'utilisateur @code{alice}.  Si @var{(user-path "@var{chemin}")} est spécifié, la même requête est interprétée comme accédant au répertoire @file{@var{chemin}/foo} dans le répertoire personnel de l'utilisateur @code{alice}.

note: type: item
en: @code{listen} (default: @code{'()})
fr: @code{listen} (par défaut : @code{'()})

note: type: table
en: Whether to listen on specific IP addresses or hostnames, defaults to all.
fr: Indique s'il faut écouter sur des adresses IP ou des noms d'hôtes particuliers, par défaut tous.

note: type: item
en: @code{port} (default: @code{#f})
fr: @code{port} (par défaut : @code{#f})

note: type: table
en: Whether to listen on an alternative port, which defaults to 9418.
fr: Indique s'il faut écouter sur un port particulier, par défaut le 9418.

note: type: item
en: @code{whitelist} (default: @code{'()})
fr: @code{whitelist} (par défaut : @code{'()})

note: type: table
en: If not empty, only allow access to this list of directories.
fr: Si la liste n'est pas vide, n'autoriser l'accès qu'aux dossiers spécifiés.

note: type: table
en: Extra options will be passed to @command{git daemon}, please run @command{man git-daemon} for more information.
fr: Options supplémentaires qui seront passées à @code{git daemon}, lancez @command{man git-daemon} pour plus d'informations.

note: type: Plain text
en: The @code{git://} protocol lacks authentication.  When you pull from a repository fetched via @code{git://}, you don't know whether the data you receive was modified or is even coming from the specified host, and your connection is subject to eavesdropping.  It's better to use an authenticated and encrypted transport, such as @code{https}.  Although Git allows you to serve repositories using unsophisticated file-based web servers, there is a faster protocol implemented by the @code{git-http-backend} program.  This program is the back-end of a proper Git web service.  It is designed to sit behind a FastCGI proxy.  @xref{Web Services}, for more on running the necessary @code{fcgiwrap} daemon.
fr: Le protocole @code{git://} ne permet pas l'authentification.  Lorsque vous récupérez un dépôt via @code{git://}, vous ne pouvez pas savoir si les données que vous recevez ont été modifiées ou si elles viennent bien de l'hôte spécifié, et votre connexion pourrait être espionnée.  Il est préférable d'utiliser un protocole de transport authentifié et chiffré, comme @code{https}.  Bien que Git vous permette de servir des dépôts avec un serveur web peu sophistiqué basé sur les fichiers, il y a un protocole plus rapide implémenté par le programme @code{git-http-backend}.  Ce programme est le moteur des services web Git corrects.  Il est conçu pour se trouver derrière un mandataire FastCGI.  @xref{Web Services} pour plus d'informations sur la manière de lancer le démon @code{fcgiwrap} nécessaire.

note: type: Plain text
en: Guix has a separate configuration data type for serving Git repositories over HTTP.
fr: Guix a un type de données de configuration séparé pour servir des dépôts Git par HTTP.

note: type: deftp
en: {Data Type} git-http-configuration
fr: {Type de données} git-http-configuration

note: type: deftp
en: Data type representing the configuration for a future @code{git-http-service-type}; can currently be used to configure Nginx through @code{git-http-nginx-location-configuration}.
fr: Type de données représentant la configuration d'un futur @code{git-http-service-type} ; il peut actuellement être utilisé pour configurer Nginx à travers @code{git-http-nginx-location-configuration}.

note: type: item
en: @code{package} (default: @var{git})
fr: @code{package} (par défaut : @var{git})

note: type: item
en: @code{git-root} (default: @file{/srv/git})
fr: @code{git-root} (par défaut : @file{/srv/git})

note: type: table
en: Directory containing the Git repositories to expose to the world.
fr: Répertoire contenant les dépôts Git à exposer au monde.

note: type: table
en: Whether to expose access for all Git repositories in @var{git-root}, even if they do not have the @file{git-daemon-export-ok} file.
fr: Indique s'il faut exposer l'accès de tous les dépôts Git dans @var{git-root}, même s'ils n'ont pas le fichier @file{git-daemon-export-ok}.

note: type: item
en: @code{uri-path} (default: @samp{/git/})
fr: @code{uri-path} (par défaut : @samp{/git/})

note: type: table
en: Path prefix for Git access.  With the default @samp{/git/} prefix, this will map @indicateurl{http://@var{server}/git/@var{repo}.git} to @file{/srv/git/@var{repo}.git}.  Requests whose URI paths do not begin with this prefix are not passed on to this Git instance.
fr: Préfixe du chemin pour l'accès Git.  Avec le préfixe @samp{/git/} par défaut, cela traduira @indicateurl{http://@var{server}/git/@var{repo}.git} en @file{/srv/git/@var{repo}.git}.  Les requêtes dont les chemins d'URI ne commencent pas par ce préfixe ne seront pas passées à cette instance de Git.

note: type: item
en: @code{fcgiwrap-socket} (default: @code{127.0.0.1:9000})
fr: @code{fcgiwrap-socket} (par défaut : @code{127.0.0.1:9000})

note: type: table
en: The socket on which the @code{fcgiwrap} daemon is listening.  @xref{Web Services}.
fr: Le socket sur lequel le démon @code{fcgiwrap} écoute.  @xref{Web Services}.

note: type: Plain text
en: There is no @code{git-http-service-type}, currently; instead you can create an @code{nginx-location-configuration} from a @code{git-http-configuration} and then add that location to a web server.
fr: Il n'y a pas de @code{git-http-service-type}, actuellement ; à la place vous pouvez créer un @code{nginx-location-configuration} à partir d'un @code{git-http-configuration} puis ajouter cela au serveur web.

note: type: deffn
en: {Scheme Procedure} git-http-nginx-location-configuration @
fr: {Procédure Scheme} git-http-nginx-location-configuration @

note: type: deffn
en: [config=(git-http-configuration)] Compute an @code{nginx-location-configuration} that corresponds to the given Git http configuration.  An example nginx service definition to serve the default @file{/srv/git} over HTTPS might be:
fr: [config=(git-http-configuration)]
    Calcule un @code{nginx-location-configuration} qui correspond à la configuration http Git donnée.  Voici un exemple de définition de service nginx qui sert le répertoire @file{/srv/git} par défaut en HTTPS :

note: type: deffn
en: This example assumes that you are using Let's Encrypt to get your TLS certificate.  @xref{Certificate Services}.  The default @code{certbot} service will redirect all HTTP traffic on @code{git.my-host.org} to HTTPS@.  You will also need to add an @code{fcgiwrap} proxy to your system services.  @xref{Web Services}.
fr: Ce exemple suppose que vous utilisez Let's Encrypt pour récupérer votre certificat TLS.  @xref{Certificate Services}.  Le service @code{certbot} par défaut redirigera tout le trafic HTTP de @code{git.my-host.org} en HTTPS@.  Vous devrez aussi ajouter un mandataire @code{fcgiwrap} à vos services systèmes.  @xref{Web Services}.

note: type: subsubheading
en: Cgit Service
fr: Service Cgit

note: type: cindex
en: Cgit service
fr: Service cgit

note: type: cindex
en: Git, web interface
fr: Git, interface web

note: type: Plain text
en: @uref{https://git.zx2c4.com/cgit/, Cgit} is a web frontend for Git repositories written in C.
fr: @uref{https://git.zx2c4.com/cgit/, Cgit} est une interface web pour des dépôts Git écrite en C.

note: type: Plain text
en: The following example will configure the service with default values.  By default, Cgit can be accessed on port 80 (@code{http://localhost:80}).
fr: L'exemple suivant configurera le service avec les valeurs par défaut.  Par défaut, on peut accéder à Cgit sur le port  (@code{http://localhost:80}).

note: type: Plain text
en: The @code{file-object} type designates either a file-like object (@pxref{G-Expressions, file-like objects}) or a string.
fr: Le type @code{file-object} désigne soit un objet simili-fichier (@pxref{G-Expressions, file-like objects}), soit une chaîne.

note: type: Plain text
en: Available @code{cgit-configuration} fields are:
fr: Les champs de @code{cgit-configuration} disponibles sont :

note: type: deftypevr
en: {@code{cgit-configuration} parameter} package package
fr: {paramètre de @code{cgit-configuration}} package package

note: type: deftypevr
en: The CGIT package.
fr: Le paquet cgit.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} nginx-server-configuration-list nginx
fr: {paramètre de @code{cgit-configuration}} nginx-server-configuration-list nginx

note: type: deftypevr
en: NGINX configuration.
fr: Configuration Nginx.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object about-filter
fr: {paramètre de @code{cgit-configuration}} file-object about-filter

note: type: deftypevr
en: Specifies a command which will be invoked to format the content of about pages (both top-level and for each repository).
fr: Spécifie une commande qui doit être invoquée pour formater le contenu des pages « à propos » (au plus haut niveau et pour chaque dépôt).

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string agefile
fr: {paramètre de @code{cgit-configuration}} string agefile

note: type: deftypevr
en: Specifies a path, relative to each repository path, which can be used to specify the date and time of the youngest commit in the repository.
fr: Spécifie un chemin, relativement à chaque dépôt, qui peut être utilisé pour spécifier la date et l'heure du plus récent commit du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object auth-filter
fr: {paramètre de @code{cgit-configuration}} file-object auth-filter

note: type: deftypevr
en: Specifies a command that will be invoked for authenticating repository access.
fr: Spécifie une commande qui sera invoquée pour authentifier l'accès au dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string branch-sort
fr: {paramètre de @code{cgit-configuration}} string branch-sort

note: type: deftypevr
en: Flag which, when set to @samp{age}, enables date ordering in the branch ref list, and when set @samp{name} enables ordering by branch name.
fr: Drapeau qui, lorsqu'il vaut @samp{age}, active le trie par date dans la liste des branches, et le trie par nom lorsqu'il vaut @samp{name}.

note: type: deftypevr
en: Defaults to @samp{"name"}.
fr: La valeur par défaut est @samp{"name"}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string cache-root
fr: {paramètre de @code{cgit-configuration}} string cache-root

note: type: deftypevr
en: Path used to store the cgit cache entries.
fr: Chemin utilisé pour stocker les entrées de cache de cgit.

note: type: deftypevr
en: Defaults to @samp{"/var/cache/cgit"}.
fr: La valeur par défaut est @samp{"/var/cache/cgit"}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer cache-static-ttl
fr: {paramètre de @code{cgit-configuration}} integer cache-static-ttl

note: type: deftypevr
en: Number which specifies the time-to-live, in minutes, for the cached version of repository pages accessed with a fixed SHA1.
fr: Nombre qui spécifie le temps de vie, en minute, des versions en cache des pages du dépôt accédées par leur SHA-1.

note: type: deftypevr
en: Defaults to @samp{-1}.
fr: La valeur par défaut est @samp{-1}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer cache-dynamic-ttl
fr: {paramètre de @code{cgit-configuration}} integer cache-dynamic-ttl

note: type: deftypevr
en: Number which specifies the time-to-live, in minutes, for the cached version of repository pages accessed without a fixed SHA1.
fr: Nombre qui spécifie le temps de vie, en minutes, des version en cache des pages du dépôt accédées sans leur SHA1.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer cache-repo-ttl
fr: {paramètre de @code{cgit-configuration}} integer cache-repo-ttl

note: type: deftypevr
en: Number which specifies the time-to-live, in minutes, for the cached version of the repository summary page.
fr: Nombre qui spécifie le temps de vie, en minute, des version en cache de la page de résumé du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer cache-root-ttl
fr: {paramètre de @code{cgit-configuration}} integer cache-root-ttl

note: type: deftypevr
en: Number which specifies the time-to-live, in minutes, for the cached version of the repository index page.
fr: Nombre qui spécifie le temps de vie, en minutes, de la version en cache de la page d'index du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer cache-scanrc-ttl
fr: {paramètre de @code{cgit-configuration}} integer cache-scanrc-ttl

note: type: deftypevr
en: Number which specifies the time-to-live, in minutes, for the result of scanning a path for Git repositories.
fr: Nombre qui spécifie le temps de vie, en minutes, de la version en cache du résultat du scan d'un chemin dans le dépôt Git.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer cache-about-ttl
fr: {paramètre de @code{cgit-configuration}} integer cache-about-ttl

note: type: deftypevr
en: Number which specifies the time-to-live, in minutes, for the cached version of the repository about page.
fr: Nombre qui spécifie le temps de vie, en minutes, de la version en cache de la page « à propos » du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer cache-snapshot-ttl
fr: {paramètre de @code{cgit-configuration}} integer cache-snapshot-ttl

note: type: deftypevr
en: Number which specifies the time-to-live, in minutes, for the cached version of snapshots.
fr: Nombre qui spécifie le temps de vie, en minutes, de la version en cache des archives.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer cache-size
fr: {paramètre de @code{cgit-configuration}} integer cache-size

note: type: deftypevr
en: The maximum number of entries in the cgit cache.  When set to @samp{0}, caching is disabled.
fr: Le nombre maximum d'entrées dans le cache de cgit.  Lorsque la valeur est @samp{0}, le cache est désactivé.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean case-sensitive-sort?
fr: {paramètre de @code{cgit-configuration}} boolean case-sensitive-sort?

note: type: deftypevr
en: Sort items in the repo list case sensitively.
fr: Indique si le tri des éléments est sensible à la casse.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} list clone-prefix
fr: {paramètre de @code{cgit-configuration}} list clone-prefix

note: type: deftypevr
en: List of common prefixes which, when combined with a repository URL, generates valid clone URLs for the repository.
fr: Liste des préfixes communs qui, lorsqu'ils sont combinés à l'URL du dépôt, génèrent des URL de clone valides pour le dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} list clone-url
fr: {paramètre de @code{cgit-configuration}} list clone-url

note: type: deftypevr
en: List of @code{clone-url} templates.
fr: Liste des modèles @code{clone-url}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object commit-filter
fr: {paramètre de @code{cgit-configuration}} file-object commit-filter

note: type: deftypevr
en: Command which will be invoked to format commit messages.
fr: Commande qui sera invoquée pour formater les messages de commit.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string commit-sort
fr: {paramètre de @code{cgit-configuration}} string commit-sort

note: type: deftypevr
en: Flag which, when set to @samp{date}, enables strict date ordering in the commit log, and when set to @samp{topo} enables strict topological ordering.
fr: Drapeau qui, s'il vaut @samp{date}, active le tri par date strict dans le messages de commit, et le tri topologique strict lorsqu'il vaut @samp{topo}.

note: type: deftypevr
en: Defaults to @samp{"git log"}.
fr: La valeur par défaut est @samp{"git log"}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object css
fr: {paramètre de @code{cgit-configuration}} file-object css

note: type: deftypevr
en: URL which specifies the css document to include in all cgit pages.
fr: URL qui spécifie le document css à inclure dans les pages cgit.

note: type: deftypevr
en: Defaults to @samp{"/share/cgit/cgit.css"}.
fr: La valeur par défaut est @samp{"/share/cgit/cgit.css"}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object email-filter
fr: {paramètre de @code{cgit-configuration}} file-object email-filter

note: type: deftypevr
en: Specifies a command which will be invoked to format names and email address of committers, authors, and taggers, as represented in various places throughout the cgit interface.
fr: Spécifie une commande qui sera invoquée pour formater les noms et l'adresse de courriel des commiteurs, des auteurs et des taggueurs, représentés à plusieurs endroits dans l'interface cgit.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean embedded?
fr: {paramètre de @code{cgit-configuration}} boolean embedded?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, will make cgit generate a HTML fragment suitable for embedding in other HTML pages.
fr: Drapeau qui, s'il vaut @samp{#t}, fera générer un fragment HTML à cgit qu'il sera possible d'inclure dans d'autres pages HTML.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-commit-graph?
fr: {paramètre de @code{cgit-configuration}} boolean enable-commit-graph?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, will make cgit print an ASCII-art commit history graph to the left of the commit messages in the repository log page.
fr: Drapeau qui, lorsqu'il vaut @samp{#t}, fera afficher un historique en ASCII-art à gauche des messages de commit dans la page de log du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-filter-overrides?
fr: {paramètre de @code{cgit-configuration}} boolean enable-filter-overrides?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, allows all filter settings to be overridden in repository-specific cgitrc files.
fr: Drapeau qui, lorsqu'il vaut @samp{#t}, permet à tous les paramètres de filtrage d'être modifiés dans des fichiers cgitrc spécifiques au dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-follow-links?
fr: {paramètre de @code{cgit-configuration}} boolean enable-follow-links?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, allows users to follow a file in the log view.
fr: Drapeau qui, s'il vaut @samp{#t}, permet aux utilisateurs de suivre un fichier dans la vue « log ».

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-http-clone?
fr: {paramètre de @code{cgit-configuration}} boolean enable-http-clone?

note: type: deftypevr
en: If set to @samp{#t}, cgit will act as an dumb HTTP endpoint for Git clones.
fr: Si la valeur est @samp{#t}, cgit agira comme un point d'accès HTTP idiot pour les clones Git.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-index-links?
fr: {paramètre de @code{cgit-configuration}} boolean enable-index-links?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, will make cgit generate extra links "summary", "commit", "tree" for each repo in the repository index.
fr: Drapeau qui, s'il vaut @samp{#t}, fera générer des liens « résumé », « commit » et « arborescence » supplémentaires poru chaque dépôt dans l'index des dépôts.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-index-owner?
fr: {paramètre de @code{cgit-configuration}} boolean enable-index-owner?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, will make cgit display the owner of each repo in the repository index.
fr: Drapeau qui, s'il vaut @samp{#t}, fera afficher le propriétaire de chaque dépôt dans l'index des dépôts.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-log-filecount?
fr: {paramètre de @code{cgit-configuration}} boolean enable-log-filecount?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, will make cgit print the number of modified files for each commit on the repository log page.
fr: Drapeau qui, s'il vaut @samp{#t}, fera afficher à cgit le nombre de fichiers modifiés pour chaque commit sur la page de log du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-log-linecount?
fr: {paramètre de @code{cgit-configuration}} boolean enable-log-linecount?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, will make cgit print the number of added and removed lines for each commit on the repository log page.
fr: Drapeau qui, s'il vaut @samp{#t}, fera afficher à cgit le nombre de lignes ajoutées et enlevées pour chaque commit de la page de log du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-remote-branches?
fr: {paramètre de @code{cgit-configuration}} boolean enable-remote-branches?

note: type: deftypevr
en: Flag which, when set to @code{#t}, will make cgit display remote branches in the summary and refs views.
fr: Drapeau qui, s'il vaut @samp{#t}, fera afficher les branches distantes dans les vues du résumé et des références.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-subject-links?
fr: {paramètre de @code{cgit-configuration}} boolean enable-subject-links?

note: type: deftypevr
en: Flag which, when set to @code{1}, will make cgit use the subject of the parent commit as link text when generating links to parent commits in commit view.
fr: Drapeau qui, s'il vaut @samp{1}, fera utiliser à cgit le sujet du commit parent comme texte du lien lors de la génération des liens vers les commits parents dans la vue des commits.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-html-serving?
fr: {paramètre de @code{cgit-configuration}} boolean enable-html-serving?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, will make cgit use the subject of the parent commit as link text when generating links to parent commits in commit view.
fr: Drapeau qui, s'il vaut @samp{#t}, fera utiliser à cgit l esujet du commit parent comme texte du lien lors de la génération des liens vers le commit parent dans la vue des commits.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-tree-linenumbers?
fr: {paramètre de @code{cgit-configuration}} boolean enable-tree-linenumbers?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, will make cgit generate linenumber links for plaintext blobs printed in the tree view.
fr: Drapeau qui, s'il vaut @samp{#t}, fera générer à cgit des liens vers le numéro de ligne pour les blobs en texte brut affichés dans la vue de l'arborescence.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean enable-git-config?
fr: {paramètre de @code{cgit-configuration}} boolean enable-git-config?

note: type: deftypevr
en: Flag which, when set to @samp{#f}, will allow cgit to use Git config to set any repo specific settings.
fr: Drapeau qui, s'il vaut @samp{#t}, permettra à cgit d'utiliser la configuration Git pour spécifier des paramètres spécifiques au dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object favicon
fr: {paramètre de @code{cgit-configuration}} file-object favicon

note: type: deftypevr
en: URL used as link to a shortcut icon for cgit.
fr: URL utilisée comme lien vers un icône pour cgit.

note: type: deftypevr
en: Defaults to @samp{"/favicon.ico"}.
fr: La valeur par défaut est @samp{"/favicon.ico"}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string footer
fr: {paramètre de @code{cgit-configuration}} string footer

note: type: deftypevr
en: The content of the file specified with this option will be included verbatim at the bottom of all pages (i.e.@: it replaces the standard "generated by..."@: message).
fr: Le contenu du fichier spécifié avec cette option sera inclus directement au bas de toutes les pages (c.-à-d.@: qu'il remplace le message « généré par …@: » générique).

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string head-include
fr: {paramètre de @code{cgit-configuration}} string head-include

note: type: deftypevr
en: The content of the file specified with this option will be included verbatim in the HTML HEAD section on all pages.
fr: Le contenu du fichier spécifié dans cette option sera inclus directement dans la section HEAD HTML de toutes les pages.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string header
fr: {paramètre de @code{cgit-configuration}} string header

note: type: deftypevr
en: The content of the file specified with this option will be included verbatim at the top of all pages.
fr: Le contenu du fichier spécifié avec cette option sera inclus directement au début de toutes les pages.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object include
fr: {paramètre de @code{cgit-configuration}} file-object include

note: type: deftypevr
en: Name of a configfile to include before the rest of the current config- file is parsed.
fr: Nom d'un fichier de configuration à inclure avant que le reste du fichier de configuration actuel ne soit analysé.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string index-header
fr: {paramètre de @code{cgit-configuration}} string index-header

note: type: deftypevr
en: The content of the file specified with this option will be included verbatim above the repository index.
fr: Le contenu du fichier spécifié avec cette option sera inclus directement au dessus de l'index des dépôts.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string index-info
fr: {paramètre de @code{cgit-configuration}} string index-info

note: type: deftypevr
en: The content of the file specified with this option will be included verbatim below the heading on the repository index page.
fr: Le contenu du fichier spécifié avec cette option sera inclus directement en dessous de l'en-tête sur la page d'index du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean local-time?
fr: {paramètre de @code{cgit-configuration}} boolean local-time?

note: type: deftypevr
en: Flag which, if set to @samp{#t}, makes cgit print commit and tag times in the servers timezone.
fr: Drapeau qui, s'il vaut @samp{#t}, fera afficher à cgit l'heure et la date de commit et de tag dans le fuseau horaire du serveur.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object logo
fr: {paramètre de @code{cgit-configuration}} file-object logo

note: type: deftypevr
en: URL which specifies the source of an image which will be used as a logo on all cgit pages.
fr: URL qui spécifie la source d'une image utilisé comme logo sur toutes les pages cgit.

note: type: deftypevr
en: Defaults to @samp{"/share/cgit/cgit.png"}.
fr: La valeur par défaut est @samp{"/share/cgit/cgit.png"}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string logo-link
fr: {paramètre de @code{cgit-configuration}} string logo-link

note: type: deftypevr
en: URL loaded when clicking on the cgit logo image.
fr: URL chargée lors du clic sur l'image du logo de cgit.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object owner-filter
fr: {paramètre de @code{cgit-configuration}} file-object owner-filter

note: type: deftypevr
en: Command which will be invoked to format the Owner column of the main page.
fr: Commande qui sera invoquée pour formater la colonne propriétaire sur la page principale.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer max-atom-items
fr: {paramètre de @code{cgit-configuration}} integer max-atom-items

note: type: deftypevr
en: Number of items to display in atom feeds view.
fr: Nombre d'éléments à afficher dans la vue des flux atom.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer max-commit-count
fr: {paramètre de @code{cgit-configuration}} integer max-commit-count

note: type: deftypevr
en: Number of entries to list per page in "log" view.
fr: Nombre d'éléments à lister par page dans la vue « log ».

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer max-message-length
fr: {paramètre de @code{cgit-configuration}} integer max-message-length

note: type: deftypevr
en: Number of commit message characters to display in "log" view.
fr: Nombre caractères de messages de commit à afficher dans la vue « log ».

note: type: deftypevr
en: Defaults to @samp{80}.
fr: La valeur par défaut est @samp{80}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer max-repo-count
fr: {paramètre de @code{cgit-configuration}} integer max-repo-count

note: type: deftypevr
en: Specifies the number of entries to list per page on the repository index page.
fr: Spécifie le nombre d'éléments à lister par page sur la page de l'index des dépôts.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer max-repodesc-length
fr: {paramètre de @code{cgit-configuration}} integer max-repodesc-length

note: type: deftypevr
en: Specifies the maximum number of repo description characters to display on the repository index page.
fr: Spécifie le nombre maximum de caractères de description de dépôts à afficher sur la page d'index des dépôts.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer max-blob-size
fr: {paramètre de @code{cgit-configuration}} integer max-blob-size

note: type: deftypevr
en: Specifies the maximum size of a blob to display HTML for in KBytes.
fr: Spécifie la taille maximale d'un blob pour lequel afficher du HTML en kilo-octets.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string max-stats
fr: {paramètre de @code{cgit-configuration}} string max-stats

note: type: deftypevr
en: Maximum statistics period.  Valid values are @samp{week},@samp{month}, @samp{quarter} and @samp{year}.
fr: Période de statistiques maximale.  Les valeurs valides sont @samp{week}, @samp{month}, @samp{quarter} et @samp{year}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} mimetype-alist mimetype
fr: {paramètre de @code{cgit-configuration}} mimetype-alist mimetype

note: type: deftypevr
en: Mimetype for the specified filename extension.
fr: Type mime pour l'extension de fichier spécifiée.

note: type: deftypevr
en: Defaults to @samp{((gif "image/gif") (html "text/html") (jpg "image/jpeg") (jpeg "image/jpeg") (pdf "application/pdf") (png "image/png") (svg "image/svg+xml"))}.
fr: La valeur par défaut est @samp{((gif "image/gif") (html "text/html") (jpg "image/jpeg") (jpeg "image/jpeg") (pdf "application/pdf") (png "image/png") (svg "image/svg+xml"))}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object mimetype-file
fr: {paramètre de @code{cgit-configuration}} file-object mimetype-file

note: type: deftypevr
en: Specifies the file to use for automatic mimetype lookup.
fr: Spécifie le fichier à utiliser pour la recherche automatique de type mime.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string module-link
fr: {paramètre de @code{cgit-configuration}} string module-link

note: type: deftypevr
en: Text which will be used as the formatstring for a hyperlink when a submodule is printed in a directory listing.
fr: Texte qui sera utilisé comme chaîne de formatage pour un lien hypertexte lorsqu'un sous-module est affiché dans la liste du répertoire.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean nocache?
fr: {paramètre de @code{cgit-configuration}} boolean nocache?

note: type: deftypevr
en: If set to the value @samp{#t} caching will be disabled.
fr: Si la valeur est @samp{#t}, le cache est désactivé.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean noplainemail?
fr: {paramètre de @code{cgit-configuration}} boolean noplainemail?

note: type: deftypevr
en: If set to @samp{#t} showing full author email addresses will be disabled.
fr: Si la valeur est @samp{#t}, l'affichage des adresse de courriel des auteurs sera désactivé.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean noheader?
fr: {paramètre de @code{cgit-configuration}} boolean noheader?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, will make cgit omit the standard header on all pages.
fr: Drapeau qui, s'il vaut @samp{#t}, fera omettre à cgit l'en-tête standard sur toutes les pages.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} project-list project-list
fr: {paramètre de @code{cgit-configuration}} project-list project-list

note: type: deftypevr
en: A list of subdirectories inside of @code{repository-directory}, relative to it, that should loaded as Git repositories.  An empty list means that all subdirectories will be loaded.
fr: UNe liste de sous-répertoires dans @code{repository-directory}, relativement à lui, qui devrait être chargé comme des dépôts Git.  Une liste vide signifie que tous les sous-répertoires seront chargés.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object readme
fr: {paramètre de @code{cgit-configuration}} file-object readme

note: type: deftypevr
en: Text which will be used as default value for @code{cgit-repo-readme}.
fr: Texte utilisé comme valeur par défaut pour @code{cgit-repo-readme}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean remove-suffix?
fr: {paramètre de @code{cgit-configuration}} boolean remove-suffix?

note: type: deftypevr
en: If set to @code{#t} and @code{repository-directory} is enabled, if any repositories are found with a suffix of @code{.git}, this suffix will be removed for the URL and name.
fr: Si la valeur est @code{#t} et que @code{repository-directory} est activé, si un dépôt avec un suffixe de @code{.git} est trouvé, ce suffixe sera supprimé de l'URL et du nom.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer renamelimit
fr: {paramètre de @code{cgit-configuration}} integer renamelimit

note: type: deftypevr
en: Maximum number of files to consider when detecting renames.
fr: Nombre maximum de fichiers à considérer lors de la détection des renommages.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string repository-sort
fr: {paramètre de @code{cgit-configuration}} string repository-sort

note: type: deftypevr
en: The way in which repositories in each section are sorted.
fr: La manière dont les dépôt de chaque section sont rangés.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} robots-list robots
fr: {paramètre de @code{cgit-configuration}} robots-list robots

note: type: deftypevr
en: Text used as content for the @code{robots} meta-tag.
fr: Texte utilisé comme contenu du méta-attribut @code{robots}.

note: type: deftypevr
en: Defaults to @samp{("noindex" "nofollow")}.
fr: La valeur par défaut est @samp{("noindex" "nofollow")}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string root-desc
fr: {paramètre de @code{cgit-configuration}} string root-desc

note: type: deftypevr
en: Text printed below the heading on the repository index page.
fr: Texte affiché en dessous de l'en-tête de la page d'index des dépôts.

note: type: deftypevr
en: Defaults to @samp{"a fast webinterface for the git dscm"}.
fr: La valeur par défaut est @samp{"a fast webinterface for the git dscm"}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string root-readme
fr: {paramètre de @code{cgit-configuration}} string root-readme

note: type: deftypevr
en: The content of the file specified with this option will be included verbatim below the ``about'' link on the repository index page.
fr: Le contenu du fichier spécifié avec cette option sera inclus directement en dessous du lien « à propos » sur la page d'index du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string root-title
fr: {paramètre de @code{cgit-configuration}} string root-title

note: type: deftypevr
en: Text printed as heading on the repository index page.
fr: Texte affiché sur la page d'index des dépôts.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean scan-hidden-path
fr: {paramètre de @code{cgit-configuration}} boolean scan-hidden-path

note: type: deftypevr
en: If set to @samp{#t} and repository-directory is enabled, repository-directory will recurse into directories whose name starts with a period.  Otherwise, repository-directory will stay away from such directories, considered as ``hidden''.  Note that this does not apply to the @file{.git} directory in non-bare repos.
fr: Si la valeur est @samp{#t} et que repository-directory est activé, repository-directory recherchera de manière récursive dans les répertoires dont le nom commence par un point.  Sinon, repository-directory restera hors de ces répertoires, considérés comme « cachés ».  Remarquez que cela ne s'applique pas au répertoire « .git » dans le dépôts non bruts.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} list snapshots
fr: {paramètre de @code{cgit-configuration}} list snapshots

note: type: deftypevr
en: Text which specifies the default set of snapshot formats that cgit generates links for.
fr: Texte qui spécifie l'ensemble des formats d'archives par défaut pour lesquelles cgit générera un lien.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} repository-directory repository-directory
fr: {paramètre de @code{cgit-configuration}} repository-directory repository-directory

note: type: deftypevr
en: Name of the directory to scan for repositories (represents @code{scan-path}).
fr: Nom du répertoire à scanner pour trouver les dépôts (représente @code{scan-path}).

note: type: deftypevr
en: Defaults to @samp{"/srv/git"}.
fr: La valeur par défaut est @samp{"/srv/git"}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string section
fr: {paramètre de @code{cgit-configuration}} string section

note: type: deftypevr
en: The name of the current repository section - all repositories defined after this option will inherit the current section name.
fr: Le nom de la section de dépôts actuelle — tous les dépôts définis après ce point hériterons du nom de section actuel.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string section-sort
fr: {paramètre de @code{cgit-configuration}} string section-sort

note: type: deftypevr
en: Flag which, when set to @samp{1}, will sort the sections on the repository listing by name.
fr: Drapeau qui, s'il vaut @samp{1}, triera les sections dans la liste des dépôts par nom.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer section-from-path
fr: {paramètre de @code{cgit-configuration}} integer section-from-path

note: type: deftypevr
en: A number which, if defined prior to repository-directory, specifies how many path elements from each repo path to use as a default section name.
fr: Un nombre qui, s'il est défini avant repository-directory, spécifier combien d'éléments de chemin de chaque chemin de dépôt utiliser comme nom de section par défaut.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} boolean side-by-side-diffs?
fr: {paramètre de @code{cgit-configuration}} boolean side-by-side-diffs?

note: type: deftypevr
en: If set to @samp{#t} shows side-by-side diffs instead of unidiffs per default.
fr: Si la valeur est @samp{#t}, afficher des diffs côte à côte au lieu des unidiffs par défaut.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} file-object source-filter
fr: {paramètre de @code{cgit-configuration}} file-object source-filter

note: type: deftypevr
en: Specifies a command which will be invoked to format plaintext blobs in the tree view.
fr: Spécifie une commande qui sera invoquée pour formater les blobs en texte brut dans la vue de l'arborescence.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer summary-branches
fr: {paramètre de @code{cgit-configuration}} integer summary-branches

note: type: deftypevr
en: Specifies the number of branches to display in the repository ``summary'' view.
fr: Spécifie le nombre de branches à afficher dans la vue « résumé » du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer summary-log
fr: {paramètre de @code{cgit-configuration}} integer summary-log

note: type: deftypevr
en: Specifies the number of log entries to display in the repository ``summary'' view.
fr: Spécifie le nombre d'élément du journal à afficher dans la vue « résumé » du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} integer summary-tags
fr: {paramètre de @code{cgit-configuration}} integer summary-tags

note: type: deftypevr
en: Specifies the number of tags to display in the repository ``summary'' view.
fr: Spécifie le nombre de tags à afficher dans la vue « résumé » du dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string strict-export
fr: {paramètre de @code{cgit-configuration}} string strict-export

note: type: deftypevr
en: Filename which, if specified, needs to be present within the repository for cgit to allow access to that repository.
fr: Nom de fichier qui, s'il est spécifié, doit être présent dans le dépôt pour que cgit accorde l'accès à ce dépôt.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} string virtual-root
fr: {paramètre de @code{cgit-configuration}} string virtual-root

note: type: deftypevr
en: URL which, if specified, will be used as root for all cgit links.
fr: URL qui, si elle est spécifiée, sera utilisée comme racine pour tous les liens cgit.

note: type: deftypevr
en: Defaults to @samp{"/"}.
fr: La valeur par défaut est @samp{"/"}.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} repository-cgit-configuration-list repositories
fr: {paramètre de @code{cgit-configuration}} repository-cgit-configuration-list repositories

note: type: deftypevr
en: A list of @dfn{cgit-repo} records to use with config.
fr: Une liste d'enregistrements @dfn{cgit-repo} à utiliser avec config.

note: type: deftypevr
en: Available @code{repository-cgit-configuration} fields are:
fr: Les champs de @code{repository-cgit-configuration} disponibles sont :

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-list snapshots
fr: {paramètre de @code{repository-cgit-configuration}} repo-list snapshots

note: type: deftypevr
en: A mask of snapshot formats for this repo that cgit generates links for, restricted by the global @code{snapshots} setting.
fr: Un masque de formats d'archives pour ce dépôt pour lesquelles cgit générera un lien, restreint par le paramètre @code{snapshots} global.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-file-object source-filter
fr: {paramètre de @code{repository-cgit-configuration}} repo-file-object source-filter

note: type: deftypevr
en: Override the default @code{source-filter}.
fr: Modifie le @code{source-filter} par défaut.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string url
fr: {paramètre de @code{repository-cgit-configuration}} repo-string url

note: type: deftypevr
en: The relative URL used to access the repository.
fr: URL relative utilisée pour accéder au dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-file-object about-filter
fr: {paramètre de @code{repository-cgit-configuration}} repo-file-object about-filter

note: type: deftypevr
en: Override the default @code{about-filter}.
fr: Modifie le paramètre @code{about-filter} par défaut.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string branch-sort
fr: {paramètre de @code{repository-cgit-configuration}} repo-string branch-sort

note: type: deftypevr
en: Flag which, when set to @samp{age}, enables date ordering in the branch ref list, and when set to @samp{name} enables ordering by branch name.
fr: Drapeau qui, s'il vaut @samp{age}, active le tri par date dans la liste des branches, et lorsqu'il vaut @samp{name}, le tri par nom.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-list clone-url
fr: {paramètre de @code{repository-cgit-configuration}} repo-list clone-url

note: type: deftypevr
en: A list of URLs which can be used to clone repo.
fr: Un liste d'URL qui peuvent être utilisées pour cloner ce dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-file-object commit-filter
fr: {paramètre de @code{repository-cgit-configuration}} repo-file-object commit-filter

note: type: deftypevr
en: Override the default @code{commit-filter}.
fr: Modifie le paramètre @code{commit-filter} par défaut.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string commit-sort
fr: {paramètre de @code{repository-cgit-configuration}} repo-string commit-sort

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string defbranch
fr: {paramètre de @code{repository-cgit-configuration}} repo-string defbranch

note: type: deftypevr
en: The name of the default branch for this repository.  If no such branch exists in the repository, the first branch name (when sorted) is used as default instead.  By default branch pointed to by HEAD, or ``master'' if there is no suitable HEAD.
fr: Le nom de la branche par défaut de ce dépôt.  Si cette branche n'existe pas dans le dépôt, le premier nom de branche (trié) sera utilisé par défaut.  Par défaut la branche pointée par HEAD, ou « master » s'il n'y a pas de HEAD convenable.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string desc
fr: {paramètre de @code{repository-cgit-configuration}} repo-string desc

note: type: deftypevr
en: The value to show as repository description.
fr: La valeur à afficher comme description du dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string homepage
fr: {paramètre de @code{repository-cgit-configuration}} repo-string homepage

note: type: deftypevr
en: The value to show as repository homepage.
fr: La valeur à afficher comme page d'accueil du dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-file-object email-filter
fr: {paramètre de @code{repository-cgit-configuration}} repo-file-object email-filter

note: type: deftypevr
en: Override the default @code{email-filter}.
fr: Modifie le paramètre @code{email-filter} par défaut.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-commit-graph?
fr: {paramètre de @code{repository-cgit-configuration}} peut-être-booléen-repo enable-commit-graph?

note: type: deftypevr
en: A flag which can be used to disable the global setting @code{enable-commit-graph?}.
fr: Un drapeau qui peut être utilisé pour désactiver le paramètre @code{enable-commit-graph?} global.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-log-filecount?
fr: {paramètre de @code{repository-cgit-configuration}} peut-être-booléen-repo enable-log-filecount?

note: type: deftypevr
en: A flag which can be used to disable the global setting @code{enable-log-filecount?}.
fr: Un drapeau qui peut être utilisé pour désactiver le paramètre @code{enable-log-filecount?} global.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-log-linecount?
fr: {paramètre de @code{repository-cgit-configuration}} peut-être-booléen-repo enable-log-linecount?

note: type: deftypevr
en: A flag which can be used to disable the global setting @code{enable-log-linecount?}.
fr: Un drapeau qui peut être utilisé pour désactiver le paramètre @code{enable-log-linecount?} global.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-remote-branches?
fr: {paramètre de @code{repository-cgit-configuration}} peut-être-booléen-repo enable-remote-branches?

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-subject-links?
fr: {paramètre de @code{repository-cgit-configuration}} peut-être-booléen-repo enable-subject-links?

note: type: deftypevr
en: A flag which can be used to override the global setting @code{enable-subject-links?}.
fr: Un drapeau qui peut être utilisé pour modifier le paramètre @code{enable-subject-links?} global.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} maybe-repo-boolean enable-html-serving?
fr: {paramètre de @code{repository-cgit-configuration}} peut-être-booléen-repo enable-html-serving?

note: type: deftypevr
en: A flag which can be used to override the global setting @code{enable-html-serving?}.
fr: Un drapeau qui peut être utilisé pour modifier le paramètre @code{enable-html-serving?} global.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-boolean hide?
fr: {paramètre de @code{repository-cgit-configuration}} repo-boolean hide?

note: type: deftypevr
en: Flag which, when set to @code{#t}, hides the repository from the repository index.
fr: Drapeau qui, s'il vaut @code{#t}, cache le dépôt de l'index des dépôts.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-boolean ignore?
fr: {paramètre de @code{repository-cgit-configuration}} repo-boolean ignore?

note: type: deftypevr
en: Flag which, when set to @samp{#t}, ignores the repository.
fr: Drapeau qui, s'il vaut @code{#t}, ignore le dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-file-object logo
fr: {paramètre de @code{repository-cgit-configuration}} repo-file-object logo

note: type: deftypevr
en: URL which specifies the source of an image which will be used as a logo on this repo’s pages.
fr: URL qui spécifie la source d'une image qui sera utilisée comme logo sur les pages de ce dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string logo-link
fr: {paramètre de @code{repository-cgit-configuration}} repo-string logo-link

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-file-object owner-filter
fr: {paramètre de @code{repository-cgit-configuration}} repo-file-object owner-filter

note: type: deftypevr
en: Override the default @code{owner-filter}.
fr: Modifie le paramètre @code{owner-filter} par défaut.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string module-link
fr: {paramètre de @code{repository-cgit-configuration}} repo-string module-link

note: type: deftypevr
en: Text which will be used as the formatstring for a hyperlink when a submodule is printed in a directory listing.  The arguments for the formatstring are the path and SHA1 of the submodule commit.
fr: Texte qui sera utilisé comme chaîne de formatage pour un lien hypertexte lorsqu'un sous-module est affiché dans une liste de fichiers.  Les arguments pour la chaîne de formatage sont le chemin et le SHA1 du commit du sous-module.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} module-link-path module-link-path
fr: {paramètre de @code{repository-cgit-configuration}} module-link-path module-link-path

note: type: deftypevr
en: Text which will be used as the formatstring for a hyperlink when a submodule with the specified subdirectory path is printed in a directory listing.
fr: Texte qui sera utilisé comme chaîne de formatage lorsqu'un sous-module avec un chemin spécifié sera affiché dans une liste de fichiers.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string max-stats
fr: {paramètre de @code{repository-cgit-configuration}} repo-string max-stats

note: type: deftypevr
en: Override the default maximum statistics period.
fr: Modifie la période de statistique maximale par défaut.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string name
fr: {paramètre de @code{repository-cgit-configuration}} repo-string name

note: type: deftypevr
en: The value to show as repository name.
fr: La valeur à afficher comme nom de dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string owner
fr: {paramètre de @code{repository-cgit-configuration}} repo-string owner

note: type: deftypevr
en: A value used to identify the owner of the repository.
fr: Une valeur utilisée pour identifier le propriétaire du dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string path
fr: {paramètre de @code{repository-cgit-configuration}} repo-string path

note: type: deftypevr
en: An absolute path to the repository directory.
fr: Un chemin absolu vers le répertoire du dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string readme
fr: {paramètre de @code{repository-cgit-configuration}} repo-string readme

note: type: deftypevr
en: A path (relative to repo) which specifies a file to include verbatim as the ``About'' page for this repo.
fr: Un chemin (relatif au dépôt) qui spécifie un fichier à inclure directement comme page « À propos » pour ce dépôt.

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-string section
fr: {paramètre de @code{repository-cgit-configuration}} repo-string section

note: type: deftypevr
en: {@code{repository-cgit-configuration} parameter} repo-list extra-options
fr: {paramètre de @code{repository-cgit-configuration}} repo-list extra-options

note: type: deftypevr
en: Extra options will be appended to cgitrc file.
fr: Options supplémentaires ajoutées à la fin du fichier cgitrc.

note: type: deftypevr
en: {@code{cgit-configuration} parameter} list extra-options
fr: {paramètre de @code{cgit-configuration}} list extra-options

note: type: Plain text
en: However, it could be that you just want to get a @code{cgitrc} up and running.  In that case, you can pass an @code{opaque-cgit-configuration} as a record to @code{cgit-service-type}.  As its name indicates, an opaque configuration does not have easy reflective capabilities.
fr: Cependant, vous pourriez vouloir simplement récupérer un @code{cgitrc} et l'utiliser.  Dans ce cas, vous pouvez passer un @code{opaque-cgit-configuration} comme enregistrement à @code{cgit-service-type}.  Comme son nom l'indique, une configuration opaque n'a pas de capacité de réflexion facile.

note: type: Plain text
en: Available @code{opaque-cgit-configuration} fields are:
fr: Les champs de @code{opaque-cgit-configuration} disponibles sont :

note: type: deftypevr
en: {@code{opaque-cgit-configuration} parameter} package cgit
fr: {paramètre de @code{opaque-cgit-configuration}} package cgit

note: type: deftypevr
en: The cgit package.
fr: Le paquet cgit.

note: type: deftypevr
en: {@code{opaque-cgit-configuration} parameter} string string
fr: {paramètre de @code{opaque-cgit-configuration}} string string

note: type: deftypevr
en: The contents of the @code{cgitrc}, as a string.
fr: Le contenu de @code{cgitrc}, en tant que chaîne de caractère.

note: type: Plain text
en: For example, if your @code{cgitrc} is just the empty string, you could instantiate a cgit service like this:
fr: Par exemple, si votre @code{cgitrc} est juste la chaîne vide, vous pouvez instancier un service cgit ainsi :

note: type: subsubheading
en: Gitolite Service
fr: Service Gitolite

note: type: cindex
en: Gitolite service
fr: Service Gitolite

note: type: cindex
en: Git, hosting
fr: Git, hébergement

note: type: Plain text
en: @uref{https://gitolite.com/gitolite/, Gitolite} is a tool for hosting Git repositories on a central server.
fr: @uref{https://gitolite.com/gitolite/, Gitolite} est un outil pour héberger des dépôts Git sur un serveur central.

note: type: Plain text
en: Gitolite can handle multiple repositories and users, and supports flexible configuration of the permissions for the users on the repositories.
fr: Gitolite peut gérer plusieurs dépôts et utilisateurs et supporte une configuration flexible des permissions pour les utilisateurs sur ces dépôts.

note: type: Plain text
en: The following example will configure Gitolite using the default @code{git} user, and the provided SSH public key.
fr: L'exemple suivant configure Gitolite en utilisant l'utilisateur @code{git} par défaut et la clef SSH fournie.

note: type: Plain text
en: Gitolite is configured through a special admin repository which you can clone, for example, if you setup Gitolite on @code{example.com}, you would run the following command to clone the admin repository.
fr: Gitolite est configuré via un dépôt d'administration spécial que vous pouvez cloner. Par exemple, si vous hébergez Gitolite sur @code{example.com}, vous pouvez lancer la commande suivante pour cloner le dépôt d'administration.

note: type: Plain text
en: When the Gitolite service is activated, the provided @code{admin-pubkey} will be inserted in to the @file{keydir} directory in the gitolite-admin repository.  If this results in a change in the repository, it will be committed using the message ``gitolite setup by GNU Guix''.
fr: Lorsque le service Gitolite est activé, la clef @code{admin-pubkey} fournie sera insérée dans le répertoire @file{keydir} du dépôt gitolite-admin.  Si cela change le dépôt, un commit sera effectué avec le message « gitolite setup by GNU Guix ».

note: type: deftp
en: {Data Type} gitolite-configuration
fr: {Type de données} gitolite-configuration

note: type: deftp
en: Data type representing the configuration for @code{gitolite-service-type}.
fr: Type de données représentant la configuration de @code{gitolite-service-type}.

note: type: item
en: @code{package} (default: @var{gitolite})
fr: @code{package} (par défaut : @var{gitolite})

note: type: table
en: Gitolite package to use.  There are optional Gitolite dependencies that are not included in the default package, such as Redis and git-annex.  These features can be made available by using the @code{make-gitolite} procedure in the @code{(gnu packages version-control}) module to produce a variant of Gitolite with the desired additional dependencies.
fr: Le paquet Gitolite à utiliser. Il y a des dépendances facultatives à Gitolite qui ne sont pas incluses dans le paquet par défaut comme Redis et git-annex. Ces fonctionnalités peuvent devenir disponibles en utilisant la procédure @code{make-gitolite} dans le module @code{(gnu packages version-control)} pour produire une variante de Gitolite avec les dépendances supplémentaires souhaitées.

note: type: table
en: The following code returns a package in which the Redis and git-annex programs can be invoked by Gitolite's scripts:
fr: Le code suivant renvoie un paquet dans lequel les programmes Redis et git-annex peuvent être invoqués par les scripts de Gitolite :

note: type: item
en: @code{user} (default: @var{git})
fr: @code{user} (par défaut : @var{git})

note: type: table
en: User to use for Gitolite.  This will be user that you use when accessing Gitolite over SSH.
fr: Utilisateur pour utiliser Gitolite.  Cela sera l'utilisateur à utiliser pour accéder à Gitolite par SSH.

note: type: item
en: @code{group} (default: @var{git})
fr: @code{group} (par défaut : @var{git})

note: type: table
en: Group to use for Gitolite.
fr: Groupe à utiliser pour Gitolite.

note: type: item
en: @code{home-directory} (default: @var{"/var/lib/gitolite"})
fr: @code{home-directory} (par défaut : @var{"/var/lib/gitolite"})

note: type: table
en: Directory in which to store the Gitolite configuration and repositories.
fr: Répertoire dans lequel stocker la configuration et les dépôts de Gitolite.

note: type: item
en: @code{rc-file} (default: @var{(gitolite-rc-file)})
fr: @code{rc-file} (par défaut : @var{(gitolite-rc-file)})

note: type: table
en: A ``file-like'' object (@pxref{G-Expressions, file-like objects}), representing the configuration for Gitolite.
fr: Un objet « simili-fichier » (@pxref{G-Expressions, file-like objects}) représentant la configuration de Gitolite.

note: type: item
en: @code{admin-pubkey} (default: @var{#f})
fr: @code{admin-pubkey} (par défaut : @var{#f})

note: type: table
en: A ``file-like'' object (@pxref{G-Expressions, file-like objects}) used to setup Gitolite.  This will be inserted in to the @file{keydir} directory within the gitolite-admin repository.
fr: Un objet « simili-fichier » (@pxref{G-Expressions, file-like objects}) utilisé pour paramétrer Gitolite.  Il sera inséré dans le répertoire @file{keydir} dans le dépôt gitolite-admin.

note: type: table
en: To specify the SSH key as a string, use the @code{plain-file} function.
fr: Pour spécifier la clef SSH comme chaîne de caractère, utilisez la fonction @code{plain-file}.

note: type: deftp
en: {Data Type} gitolite-rc-file
fr: {Type de données} gitolite-rc-file

note: type: deftp
en: Data type representing the Gitolite RC file.
fr: Type de données représentant le fichier RC de Gitolite.

note: type: item
en: @code{umask} (default: @code{#o0077})
fr: @code{umask} (par défaut : @code{#o0077})

note: type: table
en: This controls the permissions Gitolite sets on the repositories and their contents.
fr: Cela contrôle les permissions que Gitolite propose sur les dépôts et leur contenu.

note: type: table
en: A value like @code{#o0027} will give read access to the group used by Gitolite (by default: @code{git}).  This is necessary when using Gitolite with software like cgit or gitweb.
fr: Une valeur comme @code{#o0027} donnera accès en lecture au groupe utilisé par Gitolite (par défaut : @code{git}).  Cela est nécessaire lorsque vous utilise Gitolite avec un logiciel comme cgit ou gitweb.

note: type: item
en: @code{local-code} (default: @code{"$rc@{GL_ADMIN_BASE@}/local"})
fr: @code{local-code} (par défaut : @code{"$rc@{GL_ADMIN_BASE@}/local"})

note: type: table
en: Allows you to add your own non-core programs, or even override the shipped ones with your own.
fr: Vous permet d'ajouter vos propres programmes non essentiels, voire d'écraser les programmes fournis par défaut avec vos propres programmes.

note: type: table
en: Please supply the FULL path to this variable. By default, directory called "local" in your gitolite clone is used, providing the benefits of versioning them as well as making changes to them without having to log on to the server.
fr: Fournissez le chemin COMPLET à cette variable. Par défaut, le répertoire appelé « local » dans votre clone gitolite est utilisé, ce qui permet de le versionner et de vous permettre de le modifier sans avoir à vous connecter au serveur.

note: type: item
en: @code{unsafe-pattern} (default: @code{#f})
fr: @code{unsafe-pattern} (par défaut : @code{#f})

note: type: table
en: An optional Perl regular expression for catching unsafe configurations in the configuration file.  See @uref{https://gitolite.com/gitolite/git-config.html#compensating-for-unsafe_patt, Gitolite's documentation} for more information.
fr: Une expression régulière en Perl qui correspond aux configurations non sures dans le fichier de configuration. Voir @uref{https://gitolite.com/gitolite/git-config.html#compensating-for-unsafe_patt, la documentation de Gitolite} pour plus d'informations.

note: type: table
en: When the value is not @code{#f}, it should be a string containing a Perl regular expression, such as @samp{"[`~#\$\&()|;<>]"}, which is the default value used by gitolite.  It rejects any special character in configuration that might be interpreted by a shell, which is useful when sharing the administration burden with other people that do not otherwise have shell access on the server.
fr: Lorsque la valeur n'est pas @code{#f}, elle devrait être une chaîne contenant une expression régulière en Perl, comme @samp{"[`~#\$\&()|;<>]"}, qui est la valeur par défaut utilisée par gitolite. Elle rejette les caractères spéciaux dans la configuration qui pourraient être interprétés par un shell, ce qui est utile lorsque vous partagez la charge d'administration avec d'autres personnes qui n'ont pas accès à un shell sur le serveur.

note: type: item
en: @code{git-config-keys} (default: @code{""})
fr: @code{git-config-keys} (par défaut : @code{""})

note: type: table
en: Gitolite allows you to set git config values using the @samp{config} keyword.  This setting allows control over the config keys to accept.
fr: Gitolite vous permet de modifier les configurations git avec le mot-clef @samp{config}.  Ce paramètre vous permet de contrôler les clefs de configuration acceptables.

note: type: item
en: @code{roles} (default: @code{'(("READERS" . 1) ("WRITERS" . ))})
fr: @code{roles} (par défaut : @code{'(("READERS" . 1) ("WRITERS" . ))})

note: type: table
en: Set the role names allowed to be used by users running the perms command.
fr: Indique les noms des rôles qui peuvent être utilisés par les utilisateurs avec la commande perms.

note: type: item
en: @code{enable} (default: @code{'("help" "desc" "info" "perms" "writable" "ssh-authkeys" "git-config" "daemon" "gitweb")})
fr: @code{enable} (par défaut : @code{'("help" "desc" "info" "perms" "writable" "ssh-authkeys" "git-config" "daemon" "gitweb")})

note: type: table
en: This setting controls the commands and features to enable within Gitolite.
fr: Ce paramètre contrôle les commandes et les fonctionnalités à activer dans Gitolite.

note: type: subsubheading
en: Gitile Service
fr: Service Gitile

note: type: cindex
en: Gitile service
fr: service Gitile

note: type: Plain text
en: @uref{https://git.lepiller.eu/gitile, Gitile} is a Git forge for viewing public git repository contents from a web browser.
fr: @uref{https://git.lepiller.eu/gitile, Gitile} est une forge Git qui permet de visualiser le contenu de dépôts Git dans votre navigateur web.

note: type: Plain text
en: Gitile works best in collaboration with Gitolite, and will serve the public repositories from Gitolite by default.  The service should listen only on a local port, and a webserver should be configured to serve static resources.  The gitile service provides an easy way to extend the Nginx service for that purpose (@pxref{NGINX}).
fr: Gitile fonctionne mieux en tandem avec Gitolite, et servira les dépôts publics de Gitolite par défaut. Le service devrait écouter uniquement sur un port local, et vous devriez configurer un serveur web pour servir les ressources statiques. Le service gitile fournit une manière pratique d'étendre le service Nginx pour cela (@pxref{NGINX}).

note: type: Plain text
en: The following example will configure Gitile to serve repositories from a custom location, with some default messages for the home page and the footers.
fr: L'exemple suivant configurera Gitile pour servir les dépôts d'un emplacement personnalisé, avec quelques messages par défaut pour la page d'accueil et les pieds de page.

note: type: Plain text
en: In addition to the configuration record, you should configure your git repositories to contain some optional information.  First, your public repositories need to contain the @file{git-daemon-export-ok} magic file that allows Git to export the repository.  Gitile uses the presence of this file to detect public repositories it should make accessible.  To do so with Gitolite for instance, modify your @file{conf/gitolite.conf} to include this in the repositories you want to make public:
fr: En plus de l'enregistrement de configuration, vous devriez configurer vos dépôts git pour contenir certaines informations facultatives. Tout d'abord, vos dépôts publics doivent contenir le fichier magique @file{git-daemon-export-ok} qui permet à Git d'exporter le dépôt. Gitile utiliser la présence de ce fichier pour détecter les dépôts publics qu'il doit rendre accessibles. Pour cela, avec Gitolite par exemple, modifiez votre @file{conf/gitolite.conf} pour inclure ceci dans les dépôts que vous voulez rendre publics :

note: type: example
en: repo foo
        R = daemon
fr: repo toto
        R = daemon

note: type: Plain text
en: In addition, Gitile can read the repository configuration to display more information on the repository.  Gitile uses the gitweb namespace for its configuration.  As an example, you can use the following in your @file{conf/gitolite.conf}:
fr: En plus, Gitile peut lire la configuration du dépôt pour afficher des informations supplémentaires sur les page du dépôt. Gitile utilise l'espace de nom gitweb pour sa configuration. Par exemple, vous pouvez utiliser cela dans votre @file{conf/gitolite.conf} :

note: type: example
en: repo foo
        R = daemon
        desc = A long description, optionally with <i>HTML</i>, shown on the index page
        config gitweb.name = The Foo Project
        config gitweb.synopsis = A short description, shown on the main page of the project
fr: repo toto
        R = daemon
        desc = Une description longue, éventuellement avec du <i>HTML</i>, qui se trouvera sur la page d'accueil
        config gitweb.name = Le projet Toto
        config gitweb.synopsis = Une description courte, affichée sur la page principale du projet

note: type: Plain text
en: Do not forget to commit and push these changes once you are satisfied.  You may need to change your gitolite configuration to allow the previous configuration options to be set.  One way to do that is to add the following service definition:
fr: N'oubliez pas de commiter et de pousser les changement quand vous êtes satisfait. Vous pourrez avoir besoin de changer la configuration de gitolite pour permettre aux options précédentes d'être acceptées. Une manière de faire est d'ajouter la définition de service suivante :

note: type: lisp
en: (service gitolite-service-type
              (gitolite-configuration
                (admin-pubkey (local-file "key.pub"))
                (rc-file
                  (gitolite-rc-file
                    (umask #o0027)
                    ;; Allow to set any configuration key
                    (git-config-keys ".*")
                    ;; Allow any text as a valid configuration value
                    (unsafe-patt "^$")))))
fr: (service gitolite-service-type
              (gitolite-configuration
                (admin-pubkey (local-file "key.pub"))
                (rc-file
                  (gitolite-rc-file
                    (umask #o0027)
                    ;; Permet d'indique n'importe quelle clé de configuration
                    (git-config-keys ".*")
                    ;; Admet n'importe quel texte comme valeur de configuration valide
                    (unsafe-patt "^$")))))

note: type: deftp
en: {Data Type} gitile-configuration
fr: {Type de données} gitile-configuration

note: type: deftp
en: Data type representing the configuration for @code{gitile-service-type}.
fr: Type de données représentant la configuration de @code{gitile-service-type}.

note: type: item
en: @code{package} (default: @var{gitile})
fr: @code{package} (par défaut : @var{gitile})

note: type: table
en: Gitile package to use.
fr: Le paquet Gitile à utiliser.

note: type: table
en: The host on which gitile is listening.
fr: L'hôte sur lequel gitile écoute.

note: type: item
en: @code{port} (default: @code{8080})
fr: @code{port} (par défaut : @code{8080})

note: type: table
en: The port on which gitile is listening.
fr: Le port sur lequel gitile écoute.

note: type: item
en: @code{database} (default: @code{"/var/lib/gitile/gitile-db.sql"})
fr: @code{database} (par défaut : @code{"/var/lib/gitile/gitile-db.sql"})

note: type: table
en: The location of the database.
fr: L'emplacement de la base de données.

note: type: item
en: @code{repositories} (default: @code{"/var/lib/gitolite/repositories"})
fr: @code{repositories} (par défaut : @code{"/var/lib/gitolite/repositories"})

note: type: table
en: The location of the repositories.  Note that only public repositories will be shown by Gitile.  To make a repository public, add an empty @file{git-daemon-export-ok} file at the root of that repository.
fr: L'emplacement des dépôts. Notez que seuls les dépôts publics seront affichés par Gitile. Pour rendre un dépôt public, ajouter un fichier vide @file{git-daemon-export-ok} à la racine de ce dépôt.

note: type: table
en: The base git url that will be used to show clone commands.
fr: L'URL git de base qui sera utilisée pour afficher les commandes de clonage.

note: type: item
en: @code{index-title} (default: @code{"Index"})
fr: @code{index-title} (par défaut : @code{"Index"})

note: type: table
en: The page title for the index page that lists all the available repositories.
fr: La titre de la page pour la page d'index qui répertorie tous les dépôts disponibles.

note: type: item
en: @code{intro} (default: @code{'()})
fr: @code{intro} (par défaut : @code{'()})

note: type: table
en: The intro content, as a list of sxml expressions.  This is shown above the list of repositories, on the index page.
fr: Le contenu de l'introduction, sous la forme d'une liste d'expressions sxml. C'est ce qui est affiché au-dessus de la liste des dépôts, sur la page d'index.

note: type: item
en: @code{footer} (default: @code{'()})
fr: @code{footer} (par défaut : @code{'()})

note: type: table
en: The footer content, as a list of sxml expressions.  This is shown on every page served by Gitile.
fr: Le contenu du pied-de-page, sous la forme d'une liste d'expressions sxml. Il apparaît sur chaque page servie par Gitile.

note: type: table
en: An nginx server block that will be extended and used as a reverse proxy by Gitile to serve its pages, and as a normal web server to serve its assets.
fr: Un bloc de serveur nginx qui sera étendu et utilisé comme serveur mandataire inverse par Gitile pour servir ses pages, et comme serveur web normal pour servir ses ressources statiques.

note: type: table
en: You can use this block to add more custom URLs to your domain, such as a @code{/git/} URL for anonymous clones, or serving any other files you would like to serve.
fr: Vous pouvez utiliser ce bloc pour ajouter d'autres URLs personnalisées à votre domaine, comme une URL @code{/git/} pour les clonages anonymes, ou pour servir tout autre fichier que vous voudriez servir.

note: type: subsubheading
en: The Battle for Wesnoth Service
fr: Le service de la Bataille pour Wesnoth

note: type: Plain text
en: @uref{https://wesnoth.org, The Battle for Wesnoth} is a fantasy, turn based tactical strategy game, with several single player campaigns, and multiplayer games (both networked and local).
fr: @uref{https://wesnoth.org, La Bataille pour Wesnoth} est un jeu de stratégie en tour par tour dans un univers fantastique, avec plusieurs campagnes solo et des parties multijoueurs (en réseau et en local).

note: type: defvar
en: {Scheme Variable} wesnothd-service-type
fr: {Variable Scheme} wesnothd-service-type

note: type: defvar
en: Service type for the wesnothd service.  Its value must be a @code{wesnothd-configuration} object.  To run wesnothd in the default configuration, instantiate it as:
fr: Type de service pour le service wesnothd.  Sa valeur doit être un objet @code{wesnothd-configuration}.  Pour lancer wesnothd avec la configuration par défaut, instanciez-le ainsi :

note: type: deftp
en: {Data Type} wesnothd-configuration
fr: {Type de données} wesnothd-configuration

note: type: deftp
en: Data type representing the configuration of @command{wesnothd}.
fr: Type de donées représentant la configuration de @command{wesnothd}.

note: type: item
en: @code{package} (default: @code{wesnoth-server})
fr: @code{package} (par défaut : @code{wesnoth-server})

note: type: table
en: The wesnoth server package to use.
fr: Le paquet de serveur de wesnoth à utiliser.

note: type: item
en: @code{port} (default: @code{15000})
fr: @code{port} (par défaut : @code{15000})

note: type: table
en: The port to bind the server to.
fr: Le pour sur lequel lier le serveur.

note: type: Plain text
en: The @code{(gnu services pam-mount)} module provides a service allowing users to mount volumes when they log in.  It should be able to mount any volume format supported by the system.
fr: Le module @code{(gnu services pam-mount)} fournit un service qui permet de monter des volumes à la connexion de l'utilisateur·rice.  Il peut monter n'importe quel format de volume pris en charge par le système.

note: type: defvar
en: {Scheme Variable} pam-mount-service-type
fr: {Variable Scheme} pam-mount-service-type

note: type: defvar
en: Service type for PAM Mount support.
fr: Type de service pour la prise en charge de PAM Mount.

note: type: deftp
en: {Data Type} pam-mount-configuration
fr: {Type de données} pam-mount-configuration

note: type: deftp
en: Data type representing the configuration of PAM Mount.
fr: Type de données représentant la configuration de PAM Mount.

note: type: table
en: The configuration rules that will be used to generate @file{/etc/security/pam_mount.conf.xml}.
fr: Les règles de configuration utilisées pour générer @file{/etc/security/pam_mount.conf.xml}.

note: type: table
en: The configuration rules are SXML elements (@pxref{SXML,,, guile, GNU Guile Reference Manual}), and the default ones don't mount anything for anyone at login:
fr: Les règles de configuration sont des éléments SXML (@pxref{SXML,,, guile, GNU Guile Reference Manual}), et les valeurs par défaut ne montent rien pour personne à la connexion :

note: type: table
en: Some @code{volume} elements must be added to automatically mount volumes at login.  Here's an example allowing the user @code{alice} to mount her encrypted @env{HOME} directory and allowing the user @code{bob} to mount the partition where he stores his data:
fr: Certains éléments de @code{volume} doivent être ajoutés pour automatiquement monter des volumes à la connexion.  voici un exemple qui permet à l'utilisatrice @code{alice} de monter son répertoire @env{HOME} chiffré et permet à l'utilisateur @code{bob} de monter la partition où il stocke ses données :

note: type: table
en: The complete list of possible options can be found in the man page for @uref{http://pam-mount.sourceforge.net/pam_mount.conf.5.html, pam_mount.conf}.
fr: La liste complète des options disponibles se trouve sur la page de manuel de @uref{http://pam-mount.sourceforge.net/pam_mount.conf.5.html, pam_mount.conf}.

note: type: Plain text
en: The @uref{https://git.cbaines.net/guix/build-coordinator/,Guix Build Coordinator} aids in distributing derivation builds among machines running an @dfn{agent}.  The build daemon is still used to build the derivations, but the Guix Build Coordinator manages allocating builds and working with the results.
fr: Le @uref{https://git.cbaines.net/guix/build-coordinator/,Guix Build Coordinator} aide à distribuer la construction de dérivations entre machines sur lesquelles tourne un @dfn{agent}.  Le démon de construction est toujours utilisé pour construire les dérivations, mais Guix Build Coordinator gère l'allocation des construction et des résultats.

note: type: Plain text
en: The Guix Build Coordinator consists of one @dfn{coordinator}, and one or more connected @dfn{agent} processes.  The coordinator process handles clients submitting builds, and allocating builds to agents.  The agent processes talk to a build daemon to actually perform the builds, then send the results back to the coordinator.
fr: Le coordinateur des constructions Guix consiste en un @dfn{coordinateur}, et un ou plus processus @dfn{agents} connectés.  Le coordinateur gère les clients qui soumettent des constructions, et alloue les constructions aux agents.  Les processus agents parlent au démon de construction pour effectuer les constructions, puis envoie les résultats au coordinateur.

note: type: Plain text
en: There is a script to run the coordinator component of the Guix Build Coordinator, but the Guix service uses a custom Guile script instead, to provide better integration with G-expressions used in the configuration.
fr: Il y a un script pour lancer le composant du coordinateur de Guix Build Coordinator, mais le service Guix utilise un script Guile personnalisé à la place, pour fournir une meilleure intégration avec les G-expressions utilisées dans la configuration.

note: type: defvar
en: {Scheme Variable} guix-build-coordinator-service-type
fr: {Variable Scheme} guix-build-coordinator-service-type

note: type: defvar
en: Service type for the Guix Build Coordinator.  Its value must be a @code{guix-build-coordinator-configuration} object.
fr: Le type de service pour Guix Build Coordinator.  Sa valeur doit être un @code{guix-build-coordinator-configuration}.

note: type: deftp
en: {Data Type} guix-build-coordinator-configuration
fr: {Type de données} guix-build-coordinator-configuration

note: type: deftp
en: Data type representing the configuration of the Guix Build Coordinator.
fr: Le type de données représentant la configuration de Guix Build Coordinator.

note: type: item
en: @code{package} (default: @code{guix-build-coordinator})
fr: @code{package} (par défaut : @code{guix-build-coordinator})

note: type: table
en: The Guix Build Coordinator package to use.
fr: Le paquet Guix Build Coordinator à utiliser.

note: type: item
en: @code{user} (default: @code{"guix-build-coordinator"})
fr: @code{user} (par défaut : @code{"guix-build-coordinator"})

note: type: table
en: The system user to run the service as.
fr: L'utilisateur qui lance le service.

note: type: item
en: @code{group} (default: @code{"guix-build-coordinator"})
fr: @code{group} (par défaut : @code{"guix-build-coordinator"})

note: type: table
en: The system group to run the service as.
fr: Le groupe système qui lance le service.

note: type: item
en: @code{database-uri-string} (default: @code{"sqlite:///var/lib/guix-build-coordinator/guix_build_coordinator.db"})
fr: @code{database-uri-string} (par défaut : @code{"sqlite:///var/lib/guix-build-coordinator/guix_build_coordinator.db"})

note: type: table
en: The URI to use for the database.
fr: L'URI à utiliser pour la base de données.

note: type: item
en: @code{agent-communication-uri} (default: @code{"http://0.0.0.0:8745"})
fr: @code{agent-communication-uri} (par défaut : @code{"http://0.0.0.0:8745"})

note: type: table
en: The URI describing how to listen to requests from agent processes.
fr: L'URI décrivant comment écouter les requêtes des processus agents.

note: type: item
en: @code{client-communication-uri} (default: @code{"http://127.0.0.1:8746"})
fr: @code{client-communication-uri} (par défaut : @code{"http://127.0.0.1:8746"})

note: type: table
en: The URI describing how to listen to requests from clients.  The client API allows submitting builds and currently isn't authenticated, so take care when configuring this value.
fr: L'URI décrivant comme écouter les requêtes des clients.  L'API cliente permet de soumettre des constructions et n'est pas actuellement authentifiée, donc faites attention lors de la configuration de cette valeur.

note: type: item
en: @code{allocation-strategy} (default: @code{#~basic-build-allocation-strategy})
fr: @code{allocation-strategy} (par défaut : @code{#~basic-build-allocation-strategy})

note: type: table
en: A G-expression for the allocation strategy to be used.  This is a procedure that takes the datastore as an argument and populates the allocation plan in the database.
fr: Une G-expression pour la stratégie d'allocation à utiliser.  C'est une procédure qui prend le stockage de données en argument et rempli le plan d'allocation dans la base de données.

note: type: item
en: @code{hooks} (default: @var{'()})
fr: @code{hooks} (par défaut : @var{'()})

note: type: table
en: An association list of hooks.  These provide a way to execute arbitrary code upon certain events, like a build result being processed.
fr: Une liste d'association de crochets.  Ils fournissent une manière d'exécuter du code arbitraire en fonction d'évènements, comme le traitement des résultats des constructions.

note: type: item
en: @code{parallel-hooks} (default: @var{'()})
fr: @code{parallel-hooks} (par défaut : @var{'()})

note: type: table
en: Hooks can be configured to run in parallel.  This parameter is an association list of hooks to do in parallel, where the key is the symbol for the hook and the value is the number of threads to run.
fr: Les crochets peuvent être configurés pour être lancés en parallèle. Ce paramètre est une liste d'association de crochets à lancer en parallèle, où la clé est le symbole pour le crochet et la valeur est le nombre de threads à lancer.

note: type: item
en: @code{guile} (default: @code{guile-3.0-latest})
fr: @code{guile} (par défaut : @code{guile-3.0-latest})

note: type: table
en: The Guile package with which to run the Guix Build Coordinator.
fr: Le paquet Guile à utiliser pour lancer Guix Build Coordinator.

note: type: defvar
en: {Scheme Variable} guix-build-coordinator-agent-service-type
fr: {Variable Scheme} guix-build-coordinator-agent-service-type

note: type: defvar
en: Service type for a Guix Build Coordinator agent.  Its value must be a @code{guix-build-coordinator-agent-configuration} object.
fr: Le type de service pour un agent Guix Build Coordinator.  Sa valeur doit être un @code{guix-build-coordinator-agent-configuration}.

note: type: deftp
en: {Data Type} guix-build-coordinator-agent-configuration
fr: {Type de données} guix-build-coordinator-agent-configuration

note: type: deftp
en: Data type representing the configuration a Guix Build Coordinator agent.
fr: Type de données représentant la configuration d'un agent Guix Build Coordinator.

note: type: item
en: @code{package} (default: @code{guix-build-coordinator/agent-only})
fr: @code{package} (par défaut : @code{guix-build-coordinator/agent-only})

note: type: item
en: @code{user} (default: @code{"guix-build-coordinator-agent"})
fr: @code{user} (par défaut : @code{"guix-build-coordinator-agent"})

note: type: item
en: @code{coordinator} (default: @code{"http://localhost:8745"})
fr: @code{coordinator} (par défaut : @code{"http://localhost:8745"})

note: type: table
en: The URI to use when connecting to the coordinator.
fr: L'URI à utiliser lors de la connexion au coordinateur.

note: type: code{#1}
en: authentication
fr: authentification

note: type: table
en: Record describing how this agent should authenticate with the coordinator.  Possible record types are described below.
fr: Enregistrement décrivant comme cet agent devrait s'authentifier avec le coordinateur. Les types d'enregistrement possibles sont décrit plus bas.

note: type: item
en: @code{systems} (default: @code{#f})
fr: @code{systems} (par défaut : @code{#f})

note: type: table
en: The systems for which this agent should fetch builds.  The agent process will use the current system it's running on as the default.
fr: Les systèmes pour lesquels cet agent devrait récupérer les constructions.  Le processus de l'agent utilisera le système actuel comme valeur par défaut.

note: type: item
en: @code{max-parallel-builds} (default: @code{1})
fr: @code{max-parallel-builds} (par défaut : @code{1})

note: type: table
en: The number of builds to perform in parallel.
fr: Le nombre de constructions qui peuvent tourner simultanément.

note: type: item
en: @code{max-allocated-builds} (default: @code{#f})
fr: @code{max-allocated-builds} (par défaut : @code{#f})

note: type: table
en: The maximum number of builds this agent can be allocated.
fr: Le nombre maximum de constructions que cette agent peut allouer.

note: type: item
en: @code{max-1min-load-average} (default: @code{#f})
fr: @code{max-1min-load-average} (par défaut : @code{#f})

note: type: table
en: Load average value to look at when considering starting new builds, if the 1 minute load average exceeds this value, the agent will wait before starting new builds.
fr: Valeur moyenne de charge à vérifier avant de commencer de nouvelles construction. Si la valeur moyenne à une minute dépasse cette valeur, l'agent attendra avant de commencer de nouvelles constructions.

note: type: table
en: This will be unspecified if the value is @code{#f}, and the agent will use the number of cores reported by the system as the max 1 minute load average.
fr: Cela sera non spécifié si la valeur est @code{#f}, et l'agent utilisera le nombre de cœurs rapportés par le système comme la moyenne de charge à 1 minute maximale.

note: type: item
en: @code{derivation-substitute-urls} (default: @code{#f})
fr: @code{derivation-substitute-urls} (par défaut : @code{#f})

note: type: table
en: URLs from which to attempt to fetch substitutes for derivations, if the derivations aren't already available.
fr: URL à partir desquelles essayer de récupérer les substituts pour les dérivations, si les dérivation ne sont pas déjà disponibles.

note: type: item
en: @code{non-derivation-substitute-urls} (default: @code{#f})
fr: @code{non-derivation-substitute-urls} (par défaut : @code{#f})

note: type: table
en: URLs from which to attempt to fetch substitutes for build inputs, if the input store items aren't already available.
fr: URL à partir desquelles essayer de chercher les substituts pour les entrées des constructions, si les éléments du dépôt des entrées ne sont pas déjà disponibles.

note: type: deftp
en: {Data Type} guix-build-coordinator-agent-password-auth
fr: {Type de données} guix-build-coordinator-agent-password-auth

note: type: deftp
en: Data type representing an agent authenticating with a coordinator via a UUID and password.
fr: Type de données représentant un moyen d'authentification avec un coordinateur pour les agents, via un UUID et un mot de passe.

note: type: table
en: The UUID of the agent.  This should be generated by the coordinator process, stored in the coordinator database, and used by the intended agent.
fr: L'UUID de l'agent.  Il devrait être généré par le processus du coordinateur, stocké dans la base du coordinateur et utilisé par l'agent prévu.

note: type: table
en: The password to use when connecting to the coordinator.
fr: Le mot de passe à utiliser lors de la connexion au coordinateur.

note: type: deftp
en: {Data Type} guix-build-coordinator-agent-password-file-auth
fr: {Type de données} guix-build-coordinator-agent-password-file-auth

note: type: deftp
en: Data type representing an agent authenticating with a coordinator via a UUID and password read from a file.
fr: Type de données représentant un moyen d'authentification avec un coordinateur via un UUID et un mot de passe lu depuis un fichier.

note: type: table
en: A file containing the password to use when connecting to the coordinator.
fr: Un fichier contenant le mot de passe à utiliser pour la connexion avec le coordinateur.

note: type: deftp
en: {Data Type} guix-build-coordinator-agent-dynamic-auth
fr: {Type de données} guix-build-coordinator-agent-dynamic-auth

note: type: deftp
en: Data type representing an agent authenticating with a coordinator via a dynamic auth token and agent name.
fr: Type de données représentant un moyen d'authentification à un coordinateur via un jeton d’authentification dynamique et le nom de l'agent.

note: type: table
en: Name of an agent, this is used to match up to an existing entry in the database if there is one.  When no existing entry is found, a new entry is automatically added.
fr: Nom d'un agent, c'est utilisé pour le faire correspondre à une entrée existante dans la base de données s'il existe. Lorsqu'aucune entrée n'est trouvée, une nouvelle entrée est ajoutée automatiquement.

note: type: table
en: Dynamic auth token, this is created and stored in the coordinator database, and is used by the agent to authenticate.
fr: Jeton d'authentification dynamique, créé et stocké dans la base de données du coordinateur, et utilisé par l'agent pour s'authentifier.

note: type: deftp
en: {Data Type} guix-build-coordinator-agent-dynamic-auth-with-file
fr: {Type de données} guix-build-coordinator-agent-dynamic-auth-with-file

note: type: deftp
en: Data type representing an agent authenticating with a coordinator via a dynamic auth token read from a file and agent name.
fr: Type de données représentant une méthode d'authentification à un coordinateur via un jeton d'authentification dynamique lu depuis un fichier et un nom d'agent.

note: type: table
en: File containing the dynamic auth token, this is created and stored in the coordinator database, and is used by the agent to authenticate.
fr: Fichier contenant le jeton d'authentification dynamique, créé et stocké dans la base de données du coordinateur, et utilisé par l'agent pour s'authentifier.

note: type: Plain text
en: The Guix Build Coordinator package contains a script to query an instance of the Guix Data Service for derivations to build, and then submit builds for those derivations to the coordinator.  The service type below assists in running this script.  This is an additional tool that may be useful when building derivations contained within an instance of the Guix Data Service.
fr: Le paquet Guix Build Coordinator contient un script pour demander à une instance de Guix Data Service les dérivations à construire, puis pour soumettre les constructions de ces dérivations au coordinateur.  Le type de service ci-dessous vous aide à lancer ce script.  C'est un outil supplémentaire qui peut être utile lors de la construction de dérivations contenues dans une instance du Guix Data Service.

note: type: defvar
en: {Scheme Variable} guix-build-coordinator-queue-builds-service-type
fr: {Variable Scheme} guix-build-coordinator-queue-builds-service-type

note: type: defvar
en: Service type for the guix-build-coordinator-queue-builds-from-guix-data-service script.  Its value must be a @code{guix-build-coordinator-queue-builds-configuration} object.
fr: Type de service pour le script guix-build-coordinator-queue-builds-from-guix-data-service.  Sa valeur doit être un objet @code{guix-build-coordinator-queue-builds-configuration}.

note: type: deftp
en: {Data Type} guix-build-coordinator-queue-builds-configuration
fr: {Type de données} guix-build-coordinator-queue-builds-configuration

note: type: deftp
en: Data type representing the options to the queue builds from guix data service script.
fr: Le type de données représentant les options du script qui soumet les constructions à partir du guix data service.

note: type: item
en: @code{user} (default: @code{"guix-build-coordinator-queue-builds"})
fr: @code{user} (par défaut : @code{"guix-build-coordinator-queue-builds"})

note: type: item
en: @code{coordinator} (default: @code{"http://localhost:8746"})
fr: @code{coordinator} (par défaut : @code{"http://localhost:8746"})

note: type: table
en: The systems for which to fetch derivations to build.
fr: Les systèmes pour lesquels récupérer des dérivations à construire.

note: type: item
en: @code{systems-and-targets} (default: @code{#f})
fr: @code{systems-and-targets} (par défaut : @code{#f})

note: type: table
en: An association list of system and target pairs for which to fetch derivations to build.
fr: Une liste d'association de paires de systèmes et de cibles pour lesquelles chercher des dérivations à construire.

note: type: item
en: @code{guix-data-service} (default: @code{"https://data.guix.gnu.org"})
fr: @code{guix-data-service} (par défaut : @code{"https://data.guix.gnu.org"})

note: type: table
en: The Guix Data Service instance from which to query to find out about derivations to build.
fr: L'instance du Guix Data Service à laquelle demander les dérivations à construire.

note: type: item
en: @code{guix-data-service-build-server-id} (default: @code{#f})
fr: @code{guix-data-service-build-server-id} (par défaut : @code{#f})

note: type: table
en: The Guix Data Service build server ID corresponding to the builds being submitted.  Providing this speeds up the submitting of builds as derivations that have already been submitted can be skipped before asking the coordinator to build them.
fr: L'identifiant du serveur de construction du service Guix Data qui correspond aux constructions soumises. Fournir ceci accélère la soumission des constructions car les dérivations déjà soumises peuvent être passées avant de demander au coordinateur de les construire.

note: type: item
en: @code{processed-commits-file} (default: @code{"/var/cache/guix-build-coordinator-queue-builds/processed-commits"})
fr: @code{processed-commits-file} (par défaut : @code{"/var/cache/guix-build-coordinator-queue-builds/processed-commits"})

note: type: table
en: A file to record which commits have been processed, to avoid needlessly processing them again if the service is restarted.
fr: Un fichier qui enregistre les commits qui ont été traités, pour éviter de les traiter de nouveau inutilement si le service est redémarré.

note: type: Plain text
en: The @uref{http://data.guix.gnu.org,Guix Data Service} processes, stores and provides data about GNU Guix.  This includes information about packages, derivations and lint warnings.
fr: Le @uref{http://data.guix.gnu.org,Guix Data Service} traite, stocke et fournit des données à propos de GNU Guix.  Cela comprend des informations sur les paquets, les dérivations et les messages d'avertissement de formatage.

note: type: Plain text
en: The data is stored in a PostgreSQL database, and available through a web interface.
fr: Les données sont stockées dans une base PostgreSQL, et sont disponibles à travers une interface web.

note: type: defvar
en: {Scheme Variable} guix-data-service-type
fr: {Variable Scheme} guix-data-service-type

note: type: defvar
en: Service type for the Guix Data Service.  Its value must be a @code{guix-data-service-configuration} object.  The service optionally extends the getmail service, as the guix-commits mailing list is used to find out about changes in the Guix git repository.
fr: Le type de service pour le Guix Data Service.  Sa valeur doit être un objet @code{guix-data-service-configuration}.  Le service étend éventuellement le service getmail, car la liste de diffusion guix-commits est utilisée pour récupérer les changement dans le dépôt git de Guix.

note: type: deftp
en: {Data Type} guix-data-service-configuration
fr: {Type de données} guix-data-service-configuration

note: type: deftp
en: Data type representing the configuration of the Guix Data Service.
fr: Le type de données représentant la configuration du Guix Data Service.

note: type: item
en: @code{package} (default: @code{guix-data-service})
fr: @code{package} (par défaut : @code{guix-data-service})

note: type: table
en: The Guix Data Service package to use.
fr: Le paquet Guix Data Service à utiliser.

note: type: item
en: @code{user} (default: @code{"guix-data-service"})
fr: @code{user} (par défaut : @code{"guix-data-service"})

note: type: item
en: @code{group} (default: @code{"guix-data-service"})
fr: @code{group} (par défaut : @code{"guix-data-service"})

note: type: item
en: @code{port} (default: @code{8765})
fr: @code{port} (par défaut : @code{8765})

note: type: table
en: The port to bind the web service to.
fr: Le port sur lequel lier le service web.

note: type: item
en: @code{host} (default: @code{"127.0.0.1"})
fr: @code{host} (par défaut : @code{"127.0.0.1"})

note: type: table
en: The host to bind the web service to.
fr: L'hôte sur lequel lier le service web.

note: type: item
en: @code{getmail-idle-mailboxes} (default: @code{#f})
fr: @code{getmail-idle-mailboxes} (par défaut : @code{#f})

note: type: table
en: If set, this is the list of mailboxes that the getmail service will be configured to listen to.
fr: Si une valeur est indiquée, c'est la liste des boites de courriel que le service getmail récupère.

note: type: item
en: @code{commits-getmail-retriever-configuration} (default: @code{#f})
fr: @code{commits-getmail-retriever-configuration} (par défaut : @code{#f})

note: type: table
en: If set, this is the @code{getmail-retriever-configuration} object with which to configure getmail to fetch mail from the guix-commits mailing list.
fr: Si la valeur est indiquée, c'est l'objet @code{getmail-retriever-configuration} avec lequel configurer getmail pour récupérer les courriels à part de la liste de diffusion guix-commits.

note: type: item
en: @code{extra-options} (default: @var{'()})
fr: @code{extra-options} (par défaut : @var{'()})

note: type: table
en: Extra command line options for @code{guix-data-service}.
fr: Liste d'options supplémentaires de la ligne de commande pour @command{guix-data-service}.

note: type: item
en: @code{extra-process-jobs-options} (default: @var{'()})
fr: @code{extra-process-jobs-options} (par défaut : @var{'()})

note: type: table
en: Extra command line options for @code{guix-data-service-process-jobs}.
fr: Liste d'options supplémentaires de la ligne de commande pour @command{guix-data-service-process-jobs}.

note: type: Plain text
en: The @uref{https://git.cbaines.net/guix/nar-herder/about/,Nar Herder} is a utility for managing a collection of nars.
fr: @uref{https://git.cbaines.net/guix/nar-herder/about/,Nar Herder} est un utilitaire pour gérer une collection de nars.

note: type: defvar
en: {Scheme Variable} nar-herder-type
fr: {Variable Scheme} nar-herder-type

note: type: defvar
en: Service type for the Guix Data Service.  Its value must be a @code{nar-herder-configuration} object.  The service optionally extends the getmail service, as the guix-commits mailing list is used to find out about changes in the Guix git repository.
fr: Le type de service pour le Guix Data Service.  Sa valeur doit être un objet @code{nar-herder-configuration}.  Le service étend éventuellement le service getmail, car la liste de diffusion guix-commits est utilisée pour récupérer les changement dans le dépôt git de Guix.

note: type: deftp
en: {Data Type} nar-herder-configuration
fr: {Type de données} nar-herder-configuration

note: type: item
en: @code{package} (default: @code{nar-herder})
fr: @code{package} (par défaut : @code{nar-herder})

note: type: table
en: The Nar Herder package to use.
fr: Le paquet Nar Herder à utiliser.

note: type: item
en: @code{user} (default: @code{"nar-herder"})
fr: @code{user} (par défaut : @code{"nar-herder"})

note: type: item
en: @code{group} (default: @code{"nar-herder"})
fr: @code{group} (par défaut : @code{"nar-herder"})

note: type: item
en: @code{port} (default: @code{8734})
fr: @code{port} (par défaut : @code{8734})

note: type: table
en: The host to bind the server to.
fr: L'hôte sur lequel lier le serveur.

note: type: table
en: Optional URL of the other Nar Herder instance which should be mirrored.  This means that this Nar Herder instance will download it's database, and keep it up to date.
fr: URL facultative de l'autre instance de Nar Herder qui doit être répliquée. Cela signifie que cette instance de Nar Herder téléchargera sa base de données et la gardera à jour.

note: type: item
en: @code{database} (default: @code{"/var/lib/nar-herder/nar_herder.db"})
fr: @code{database} (par défaut : @code{"/var/lib/nar-herder/nar_herder.db"})

note: type: table
en: Location for the database.  If this Nar Herder instance is mirroring another, the database will be downloaded if it doesn't exist.  If this Nar Herder instance isn't mirroring another, an empty database will be created.
fr: Emplacement de la base de données. Si cette instance de Nar Herder en réplique une autre, la base de données sera téléchargée si elle n'existe pas. Si cette instance de Nar Herder n'en réplique pas une autre, une base de données vide sera créée.

note: type: item
en: @code{database-dump} (default: @code{"/var/lib/nar-herder/nar_herder_dump.db"})
fr: @code{database-dump} (par défaut : @code{"/var/lib/nar-herder/nar_herder_dump.db"})

note: type: table
en: Location of the database dump.  This is created and regularly updated by taking a copy of the database.  This is the version of the database that is available to download.
fr: Emplacement de la décharge de la base de données. Elle est crée et régulièrement mise à jour en prenant une copie de la base de données. C'est la version de la base de données qui est disponible au téléchargement.

note: type: item
en: @code{storage} (default: @code{#f})
fr: @code{storage} (par défaut : @code{#f})

note: type: table
en: Optional location in which to store nars.
fr: Emplacement facultatif dans lequel stocker les nars.

note: type: item
en: @code{storage-limit} (default: @code{"none"})
fr: @code{storage-limit} (par défaut : @code{"none"})

note: type: table
en: Limit in bytes for the nars stored in the storage location.  This can also be set to ``none'' so that there is no limit.
fr: Limite en octets pour les nars stockés dans l'emplacement de stockage. Cela peut valoir « none » pour qu'il n'y ait pas de limite.

note: type: table
en: When the storage location exceeds this size, nars are removed according to the nar removal criteria.
fr: Lorsque l'emplacement de stockage dépasse cette taille, les nars sont supprimés en fonction des critères de suppression des nars.

note: type: item
en: @code{storage-nar-removal-criteria} (default: @code{'()})
fr: @code{storage-nar-removal-criteria} (par défaut : @code{'()})

note: type: table
en: Criteria used to remove nars from the storage location.  These are used in conjunction with the storage limit.
fr: Critères utilisés pour supprimer les nars de l'emplacement de stockage. Ils sont utilisés en plus de la limite de stockage.

note: type: table
en: When the storage location exceeds the storage limit size, nars will be checked against the nar removal criteria and if any of the criteria match, they will be removed.  This will continue until the storage location is below the storage limit size.
fr: Lorsque l'emplacement de stockage dépasse la limite de taille, les nars passeront aux critères de suppression et ceux qui correspondent aux critères seront supprimés. Cela continue jusqu'à ce que l'emplacement de stockage repasse en dessous de la limite de taille.

note: type: table
en: Each criteria is specified by a string, then an equals sign, then another string. Currently, only one criteria is supported, checking if a nar is stored on another Nar Herder instance.
fr: Chaque critère est spécifié par une chaine, puis un signe égal, puis une autre chaine. Actuellement, seul un critère est pris en charge, vérifier si un nar est stocké sur une autre instance de Nar Herder.

note: type: table
en: This allows the user's Guix to keep substitute information in cache for @var{ttl}.
fr: Cela permet au Guix de l'utilisateur ou de l'utilisatrice de garder les informations de substituts en cache pendant @var{ttl}.

note: type: item
en: @code{log-level} (default: @code{'DEBUG})
fr: @code{log-level} (par défaut : @code{'DEBUG})

note: type: table
en: Log level to use, specify a log level like @code{'INFO} to stop logging individual requests.
fr: Niveau de journalisation à utiliser, spécifie un niveau de journalisation comme @code{'INFO} pour arrêter de journaliser les requêtes individuelles.

note: type: cindex
en: out of memory killer
fr: gestionnaire du remplissage de la mémoire

note: type: cindex
en: early out of memory daemon
fr: démon de gestion du remplissage de la mémoire précoce

note: type: subsubheading
en: Early OOM Service
fr: Service Early OOM

note: type: Plain text
en: @uref{https://github.com/rfjakob/earlyoom,Early OOM}, also known as Earlyoom, is a minimalist out of memory (OOM) daemon that runs in user space and provides a more responsive and configurable alternative to the in-kernel OOM killer.  It is useful to prevent the system from becoming unresponsive when it runs out of memory.
fr: @uref{https://github.com/rfjakob/earlyoom,Early OOM}, aussi appelé Earlyoom, est un démon de gestion du remplissage mémoire (OOM) minimaliste qui se lance en espace utilisateur et fournit une alternative plus rapide et configurable que le gestionnaire du noyau.  Il est utile pour éviter que le système ne cesse de répondre lorsqu'il n'a plus de mémoire.

note: type: deffn
en: {Scheme Variable} earlyoom-service-type
fr: {Variable Scheme} earlyoom-service-type

note: type: deffn
en: The service type for running @command{earlyoom}, the Early OOM daemon.  Its value must be a @code{earlyoom-configuration} object, described below.  The service can be instantiated in its default configuration with:
fr: Le type de service pour le service @command{earlyoom}, le démon Early OOM.  Sa valeur doit être un objet @code{earlyoom-configuration}, décrit plus bas.  Vous pouvez instancier le service avec sa configuration par défaut avec :

note: type: deftp
en: {Data Type} earlyoom-configuration
fr: {Type de données} earlyoom-configuration

note: type: deftp
en: This is the configuration record for the @code{earlyoom-service-type}.
fr: La configuration pour @code{earlyoom-service-type}.

note: type: item
en: @code{earlyoom} (default: @var{earlyoom})
fr: @code{earlyoom} (par défaut : @var{earlyoom})

note: type: table
en: The Earlyoom package to use.
fr: Le paquet Earlyoom à utiliser.

note: type: item
en: @code{minimum-available-memory} (default: @code{10})
fr: @code{minimum-available-memory} (par défaut : @code{10})

note: type: table
en: The threshold for the minimum @emph{available} memory, in percentages.
fr: La limite de mémoire @emph{disponible} minimum, en pourcentage.

note: type: item
en: @code{minimum-free-swap} (default: @code{10})
fr: @code{minimum-free-swap} (par défaut : @code{10})

note: type: table
en: The threshold for the minimum free swap memory, in percentages.
fr: La limite d'espace d'échange libre minimum, en pourcentage.

note: type: item
en: @code{prefer-regexp} (default: @code{#f})
fr: @code{prefer-regexp} (par défaut : @code{#f})

note: type: table
en: A regular expression (as a string) to match the names of the processes that should be preferably killed.
fr: Une expression régulière (une chaine) qui correspond aux noms des processus à tuer en priorité.

note: type: item
en: @code{avoid-regexp} (default: @code{#f})
fr: @code{avoid-regexp} (par défaut : @code{#f})

note: type: table
en: A regular expression (as a string) to match the names of the processes that should @emph{not} be killed.
fr: Une expression régulière (une chaine) des noms des processus qui ne doivent @emph{pas} être tués.

note: type: item
en: @code{memory-report-interval} (default: @code{0})
fr: @code{memory-report-interval} (par défaut : @code{0})

note: type: table
en: The interval in seconds at which a memory report is printed.  It is disabled by default.
fr: L'intervalle en seconde d'affichage du rapport mémoire.  Il est désactivé par défaut.

note: type: item
en: @code{ignore-positive-oom-score-adj?} (default: @code{#f})
fr: @code{ignore-positive-oom-score-adj?} (par défaut : @code{#f})

note: type: table
en: A boolean indicating whether the positive adjustments set in @file{/proc/*/oom_score_adj} should be ignored.
fr: Un booléen indiquant si les ajustements positifs indiqués dans @file{/proc/*/oom_score_adj} doivent être ignorés.

note: type: item
en: @code{show-debug-messages?} (default: @code{#f})
fr: @code{show-debug-messages?} (par défaut : @code{#f})

note: type: table
en: A boolean indicating whether debug messages should be printed.  The logs are saved at @file{/var/log/earlyoom.log}.
fr: Un booléen indiquant si les messages de débogages doivent être affichés.  Les journaux sont sauvegardés dans @file{/var/log/earlyoom.log}.

note: type: item
en: @code{send-notification-command} (default: @code{#f})
fr: @code{send-notification-command} (par défaut : @code{#f})

note: type: table
en: This can be used to provide a custom command used for sending notifications.
fr: On peut utiliser cette option pour fournir une commande personnalisée pour envoyer les notifications.

note: type: cindex
en: kernel module loader
fr: chargeur de module du noyau

note: type: subsubheading
en: Kernel Module Loader Service
fr: Service de chargement de modules du noyau

note: type: Plain text
en: The kernel module loader service allows one to load loadable kernel modules at boot.  This is especially useful for modules that don't autoload and need to be manually loaded, as is the case with @code{ddcci}.
fr: Le service de chargement de modules du noyau vous permet de charger des modules du noyau au démarrage.  C'est particulièrement utile pour les modules qui ne sont pas chargés automatiquement et qui doivent être chargés manuellement, comme c'est le cas avec @code{ddcci}.

note: type: deffn
en: {Scheme Variable} kernel-module-loader-service-type
fr: {Variable Scheme} kernel-module-loader-service-type

note: type: deffn
en: The service type for loading loadable kernel modules at boot with @command{modprobe}.  Its value must be a list of strings representing module names.  For example loading the drivers provided by @code{ddcci-driver-linux}, in debugging mode by passing some module parameters, can be done as follow:
fr: Le type de service pour charger des modules du noyau au démarrage avec @command{modprobe}.  Sa valeur doit être une liste de chaines de caractères représentant les noms des modules.  Par exemple pour charger les pilotes fournis par @code{ddcci-driver-linux}, en mode débogage en passant certains paramètres au module, on peut faire :

note: type: cindex
en: Platform Reliability, Availability and Serviceability daemon
fr: Démon de fiabilité de la plateforme, de disponibilité et de serviabilité

note: type: subsubheading
en: Rasdaemon Service
fr: Service Rasdaemon

note: type: Plain text
en: The Rasdaemon service provides a daemon which monitors platform @acronym{RAS, Reliability@comma{} Availability@comma{} and Serviceability} reports from Linux kernel trace events, logging them to syslogd.
fr: Le service Rasdaemon fournit un démon qui surveille les rapports @acronym{RAS, Reliability@comma{} Availability@comma{} and Serviceability} de la plateforme dans les événements de trace du noyau Linux, et les envoie à syslogd.

note: type: Plain text
en: Reliability, Availability and Serviceability is a concept used on servers meant to measure their robustness.
fr: La fiabilité, la disponibilité et la serviabilité est un concept utilisé sur les serveur conçu pour mesurer leur robustesse.

note: type: Plain text
en: @strong{Relability} is the probability that a system will produce correct outputs:
fr: La @strong{fiabilité} est la probabilité pour qu'un système produise les résultats attendus :

note: type: item
en: Generally measured as Mean Time Between Failures (MTBF), and
fr: Généralement mesuré en temps moyen entre échecs (@i{Mean Time Between Failures}, MTBF) et

note: type: item
en: Enhanced by features that help to avoid, detect and repair hardware
fr: Amélioré par les fonctionnalités qui aident à éviter, à détecter et à réparer les

note: type: itemize
en: faults
fr: fautes matérielles

note: type: Plain text
en: @strong{Availability} is the probability that a system is operational at a given time:
fr: La @strong{disponibilité} est la probabilité pour qu'un système soit opérationnel à un moment donné :

note: type: item
en: Generally measured as a percentage of downtime per a period of time, and
fr: Généralement mesuré en pourcentage de temps d'arrêt par période de temps et

note: type: item
en: Often uses mechanisms to detect and correct hardware faults in runtime.
fr: Utilise souvent des mécanismes de détection et de correction des fautes matérielles à l'exécution.

note: type: Plain text
en: @strong{Serviceability} is the simplicity and speed with which a system can be repaired or maintained:
fr: La @strong{serviabilité} est la simplicité et la rapidité avec laquelle un système peut être réparé ou maintenu :

note: type: item
en: Generally measured on Mean Time Between Repair (MTBR).
fr: Généralement mesuré en temps moyen entre réparations (@i{Mean Time Between Repair}, MTBR).

note: type: Plain text
en: Among the monitoring measures, the most usual ones include:
fr: Entre autres mesures de surveillance, les plus courantes sont :

note: type: item
en: CPU – detect errors at instruction execution and at L1/L2/L3 caches;
fr: Le CPU — détecte les erreurs d'exécution d'instructions et au niveau des caches L1/L2/L3 ;

note: type: item
en: Memory – add error correction logic (ECC) to detect and correct errors;
fr: La mémoire — ajoute des codes correcteurs d'erreur (@i{error correction codes}, ECC) et corrige les erreurs ;

note: type: item
en: I/O – add CRC checksums for transferred data;
fr: Les entrées-sorties — ajoute des sommes de contrôles CRC pour les données transférées ;

note: type: item
en: Storage – RAID, journal file systems, checksums, Self-Monitoring,
fr: Le stockage — RAID, systèmes de fichiers journalisés, sommes de contrôle, SMART

note: type: itemize
en: Analysis and Reporting Technology (SMART).
fr: (@i{Self-Monitoring, Analysis and Reporting Technology}).

note: type: Plain text
en: By monitoring the number of occurrences of error detections, it is possible to identify if the probability of hardware errors is increasing, and, on such case, do a preventive maintenance to replace a degraded component while those errors are correctable.
fr: En surveillant le nombre de détection d'erreurs, il est possible d'identifier si la probabilité d'erreurs matérielles augmente, et dans ce cas, d'effectuer une maintenance préventive pour remplacecr un composant dégradé tant que les erreurs peuvent être corrigées.

note: type: Plain text
en: For detailed information about the types of error events gathered and how to make sense of them, see the kernel administrator's guide at @url{https://www.kernel.org/doc/html/latest/admin-guide/ras.html}.
fr: Pour des informations détaillées sur les types d'événements d'erreur récupérés et comment les comprendre, voir le guide de l'administrateur du noyau sur @url{https://www.kernel.org/doc/html/latest/admin-guide/ras.html}.

note: type: defvr
en: {Scheme Variable} rasdaemon-service-type
fr: {Variable Scheme} rasdaemon-service-type

note: type: defvr
en: Service type for the @command{rasdaemon} service.  It accepts a @code{rasdaemon-configuration} object.  Instantiating like
fr: Le type de service pour le service @command{rasdaemon}.  Il accepte un objet @code{rasdaemon-configuration}. Instantiez-le avec

note: type: defvr
en: will load with a default configuration, which monitors all events and logs to syslogd.
fr: chargera une configuration par défaut, qui surveille tous les événements et les enregistre avec syslogd.

note: type: deftp
en: {Data Type} rasdaemon-configuration
fr: {Type de données} rasdaemon-configuration

note: type: deftp
en: The data type representing the configuration of @command{rasdaemon}.
fr: Type de données représentant la configuration de @command{rasdaemon}.

note: type: item
en: @code{record?} (default: @code{#f})
fr: @code{record?} (par défaut : @code{#f})

note: type: table
en: A boolean indicating whether to record the events in an SQLite database.  This provides a more structured access to the information contained in the log file.  The database location is hard-coded to @file{/var/lib/rasdaemon/ras-mc_event.db}.
fr: Un booléen indiquant s'il faut enregistrer les événements dans une base de données SQLite. Cela donne un accès plus structuré aux informations contenues dans le fichier journal. L'emplacement de la base de données est codée en dur : @file{/var/lib/rasdaemon/ras-mc_event.db}.

note: type: cindex
en: compressed swap
fr: espace d'échange compressé

note: type: cindex
en: Compressed RAM-based block devices
fr: Périphériques blocs compressés basés sur la RAM

note: type: subsubheading
en: Zram Device Service
fr: Service Zram

note: type: Plain text
en: The Zram device service provides a compressed swap device in system memory.  The Linux Kernel documentation has more information about @uref{https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html,zram} devices.
fr: Le service de périphérique Zram fournit un périphérique de swap compressé en mémoire système.  La documentation du noyau Linux a plus d'information à propos de ces périphériques @uref{https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html,zram}.

note: type: deffn
en: {Scheme Variable} zram-device-service-type
fr: {Variable Scheme} zram-device-service-type

note: type: deffn
en: This service creates the zram block device, formats it as swap and enables it as a swap device.  The service's value is a @code{zram-device-configuration} record.
fr: Ce service crée un périphérique de bloc zram, le formate en swap et active l'espace d'échange.  La valeur du service est un enregistrement @code{zram-device-configuration}.

note: type: deftp
en: {Data Type} zram-device-configuration
fr: {Type de données} zram-device-configuration

note: type: deftp
en: This is the data type representing the configuration for the zram-device service.
fr: C'est le type de données représentant la configuration du service zram-device.

note: type: item
en: @code{size} (default @code{"1G"})
fr: @code{size} (par défaut : @code{"1G"})

note: type: table
en: This is the amount of space you wish to provide for the zram device.  It accepts a string and can be a number of bytes or use a suffix, eg.: @code{"512M"} or @code{1024000}.
fr: C'est l'espace que vous voulez fournir à votre périphérique zram.  Il accepte une chaine et peut être un nombre d'octets ou utiliser un suffixe, p.@: ex.@: : @code{"512M"} ou @code{"1024000"}.

note: type: item
en: @code{compression-algorithm} (default @code{'lzo})
fr: @code{compression-algorithm} (par défaut : @code{'lzo})

note: type: table
en: This is the compression algorithm you wish to use.  It is difficult to list all the possible compression options, but common ones supported by Guix's Linux Libre Kernel include @code{'lzo}, @code{'lz4} and @code{'zstd}.
fr: C'est l'algorithme de compression à utiliser.  Il est difficile de lister toutes les possibilités, mais les options habituelles prises en charge par le noyau Linux Libre de Guix sont @code{'lzo}, @code{'lz4} et @code{'zstd}.

note: type: item
en: @code{memory-limit} (default @code{0})
fr: @code{memory-limit} (par défaut : @code{0})

note: type: table
en: This is the maximum amount of memory which the zram device can use.  Setting it to '0' disables the limit.  While it is generally expected that compression will be 2:1, it is possible that uncompressable data can be written to swap and this is a method to limit how much memory can be used.  It accepts a string and can be a number of bytes or use a suffix, eg.: @code{"2G"}.
fr: C'est la quantité de mémoire maximal que le périphérique zram peut utiliser.  le mettre à « 0 » désactive la limite.  Bien qu'il soit généralement accepté que la compression aura un ratio de 2 pour 1, il est possible que des données non-comprimables soient écrites en espace d'échange et c'est une méthode pour limiter la quantité de mémoire qui peut être utilisée.  Le paramètre accepte une chaine qui peut être un nombre d'octets ou utiliser un suffixe, p.@: ex.@: @code{"2G"}.

note: type: item
en: @code{priority} (default @code{#f})
fr: @code{priority} (par défaut : @code{#f})

note: type: table
en: This is the priority of the swap device created from the zram device.  @xref{Swap Space} for a description of swap priorities.  You might want to set a specific priority for the zram device, otherwise it could end up not being used much for the reasons described there.
fr: C'est la priorité du périphérique d'échange créé à partir du périphérique zram. @xref{Swap Space} pour une description des priorités des espaces d'échange. Vous voudrez peut-être indiquer une priorité spécifique pour le périphérique zram, sinon il pourrait ne pas être utilisé du tout pour les raisons qui y sont décrites.

note: type: defvr
en: {Scheme Variable} hurd-console-service-type
fr: {Variable Scheme} hurd-console-service-type

note: type: defvr
en: This service starts the fancy @code{VGA} console client on the Hurd.
fr: Ce service démarre le client @code{VGA} sophistiqué en console sur le Hurd.

note: type: defvr
en: The service's value is a @code{hurd-console-configuration} record.
fr: La valeur du service est un enregistrement @code{hurd-console-configuration}.

note: type: deftp
en: {Data Type} hurd-console-configuration
fr: {Type de données} hurd-console-configuration

note: type: deftp
en: This is the data type representing the configuration for the hurd-console-service.
fr: C'est le type de données représentant la configuration de hurd-console-service.

note: type: item
en: @code{hurd} (default: @var{hurd})
fr: @code{hurd} (par défaut : @var{hurd})

note: type: table
en: The Hurd package to use.
fr: Le paquet Hurd à utiliser.

note: type: defvr
en: {Scheme Variable} hurd-getty-service-type
fr: {Variable Scheme} hurd-getty-service-type

note: type: defvr
en: This service starts a tty using the Hurd @code{getty} program.
fr: Ce service démarre un tty avec le programme @code{getty}.

note: type: defvr
en: The service's value is a @code{hurd-getty-configuration} record.
fr: La valeur du service est un enregistrement @code{hurd-getty-configuration}.

note: type: deftp
en: {Data Type} hurd-getty-configuration
fr: {Type de données} hurd-getty-configuration

note: type: deftp
en: This is the data type representing the configuration for the hurd-getty-service.
fr: Ce type de données représente la configuration de hurd-getty-service.

note: type: table
en: The name of the console this Getty runs on---e.g., @code{"tty1"}.
fr: Le nom de la console sur laquelle tourne ce Getty, p.@: ex.@: @code{"tty1"}.

note: type: item
en: @code{baud-rate} (default: @code{38400})
fr: @code{baud-rate} (par défaut : @code{38400})

note: type: table
en: An integer specifying the baud rate of the tty.
fr: Un entier spécifiant le taux de Baud de ce tty.

note: type: cindex
en: fingerprint
fr: empreinte digitale

note: type: subsubheading
en: Fingerprint Service
fr: Service d'empreintes digitales

note: type: Plain text
en: The @code{(gnu services authentication)} module provides a DBus service to read and identify fingerprints via a fingerprint sensor.
fr: Le module @code{(gnu services authentication)} fournit un service DBus pour lire et identifier les empreintes digitales via un lecteur d'empreinte.

note: type: defvr
en: {Scheme Variable} fprintd-service-type
fr: {Variable Scheme} fprintd-service-type

note: type: defvr
en: The service type for @command{fprintd}, which provides the fingerprint reading capability.
fr: Le type de service pour @command{fprintd}, qui fournit des capacités de lecture d'empreinte.

note: type: subsubheading
en: System Control Service
fr: Service de contrôle du système

note: type: Plain text
en: The @code{(gnu services sysctl)} provides a service to configure kernel parameters at boot.
fr: Le module @code{(gnu services sysctl)} fournit un service pour configurer les paramètres du noyau au démarrage.

note: type: defvr
en: {Scheme Variable} sysctl-service-type
fr: {Variable Scheme} sysctl-service-type

note: type: defvr
en: The service type for @command{sysctl}, which modifies kernel parameters under @file{/proc/sys/}.  To enable IPv4 forwarding, it can be instantiated as:
fr: Le type de service pour @command{sysctl}, qui modifie les paramètres du noyau dans @file{/proc/sys/}.  Pour activer le transfert d'IPv4, vous pouvez l'instancier ainsi :

note: type: defvr
en: Since @code{sysctl-service-type} is used in the default lists of services, @code{%base-services} and @code{%desktop-services}, you can use @code{modify-services} to change its configuration and add the kernel parameters that you want (@pxref{Service Reference, @code{modify-services}}).
fr: Comme le service @code{sysctl-service-type} fait partie des services par défaut, @code{%base-services} et @code{%desktop-services}, vous pouvez utiliser @code{modify-services} pour changer sa configuration et ajouter les paramètres du noyau que vous voulez (@pxref{Service Reference, @code{modify-services}}).

note: type: deftp
en: {Data Type} sysctl-configuration
fr: {Type de données} sysctl-configuration

note: type: deftp
en: The data type representing the configuration of @command{sysctl}.
fr: Le type de données représentant la configuration de @command{sysctl}.

note: type: item
en: @code{sysctl} (default: @code{(file-append procps "/sbin/sysctl"})
fr: @code{sysctl} (par défaut : @code{(file-append procps "/sbin/sysctl"})

note: type: table
en: The @command{sysctl} executable to use.
fr: L'exécutable @command{sysctl} à utiliser.

note: type: item
en: @code{settings} (default: @code{%default-sysctl-settings})
fr: @code{settings} (par défaut : @code{%default-sysctl-settings})

note: type: table
en: An association list specifies kernel parameters and their values.
fr: Une liste d'association spécifiant les paramètres du noyau et leur valeur.

note: type: defvr
en: {Scheme Variable} %default-sysctl-settings
fr: {Variable Scheme} %default-sysctl-settings

note: type: defvr
en: An association list specifying the default @command{sysctl} parameters on Guix System.
fr: Une liste d'association spécifiant les paramètres @command{sysctl} par défaut sur le système Guix.

note: type: subsubheading
en: PC/SC Smart Card Daemon Service
fr: Service du démon PC/SC Smart Card

note: type: Plain text
en: The @code{(gnu services security-token)} module provides the following service to run @command{pcscd}, the PC/SC Smart Card Daemon.  @command{pcscd} is the daemon program for pcsc-lite and the MuscleCard framework.  It is a resource manager that coordinates communications with smart card readers, smart cards and cryptographic tokens that are connected to the system.
fr: Le module @code{(gnu services security-token)} fournit le service suivant qui lance @command{pcscd}, le démon PC/SC Smart Card.  @command{pcscd} est le démon pour  pcsc-lite et MuscleCard.  C'est un gestionnaire de ressource qui coordonne les communications avec les lecteurs de smart cards, les smart cards et les jetons cryptographiques connectés au système.

note: type: defvr
en: {Scheme Variable} pcscd-service-type
fr: {Variable Scheme} pcscd-service-type

note: type: defvr
en: Service type for the @command{pcscd} service.  Its value must be a @code{pcscd-configuration} object.  To run pcscd in the default configuration, instantiate it as:
fr: Le type de service pour le service @command{pcscd}.  Sa valeur doit être un objet @code{pcscd-configuration}.  Pour lancer pcscd dans sa configuration par défaut, instantiez-le avec :

note: type: deftp
en: {Data Type} pcscd-configuration
fr: {Type de données} pcscd-configuration

note: type: deftp
en: The data type representing the configuration of @command{pcscd}.
fr: Type de données représentant la configuration de @command{pcscd}.

note: type: item
en: @code{pcsc-lite} (default: @code{pcsc-lite})
fr: @code{pcsc-lite} (par défaut : @code{pcsc-lite})

note: type: table
en: The pcsc-lite package that provides pcscd.
fr: Le paquet pcsc-lite qui fournit pcscd.

note: type: item
en: @code{usb-drivers} (default: @code{(list ccid)})
fr: @code{usb-drivers} (par défaut : @code{(list ccid)})

note: type: table
en: List of packages that provide USB drivers to pcscd.  Drivers are expected to be under @file{pcsc/drivers} in the store directory of the package.
fr: Liste des paquets qui fournissent des pilotes USB à pcscd.  Les pilotes doivent être dans @file{pcsc/drivers} dans le répertoire du dépôt du paquet.

note: type: subsubheading
en: Lirc Service
fr: Service Lirc

note: type: Plain text
en: The @code{(gnu services lirc)} module provides the following service.
fr: Le module @code{(gnu services lirc)} fournit le service suivant.

note: type: deffn
en: {Scheme Procedure} lirc-service [#:lirc lirc] @
fr: {Procédure Scheme} lirc-service [#:lirc lirc] @

note: type: deffn
en: [#:device #f] [#:driver #f] [#:config-file #f] @ [#:extra-options '()] Return a service that runs @url{http://www.lirc.org,LIRC}, a daemon that decodes infrared signals from remote controls.
fr: [#:device #f] [#:driver #f] [#:config-file #f] @
    [#:extra-options '()]
    Renvoie un service qui lance @url{http://www.lirc.org,LIRC}, un démon qui décode les signaux infrarouges des télécommandes.

note: type: deffn
en: Optionally, @var{device}, @var{driver} and @var{config-file} (configuration file name) may be specified.  See @command{lircd} manual for details.
fr: Éventuellement, @var{device}, @var{driver} et @var{config-file} (le nom du fichier de configuration) peuvent être spécifiés.  Voir le manuel de @command{lircd} pour plus de détails.

note: type: deffn
en: Finally, @var{extra-options} is a list of additional command-line options passed to @command{lircd}.
fr: Enfin, @var{extra-options} est une liste d'options de la ligne de commande supplémentaires à passer à @command{lircd}.

note: type: subsubheading
en: Spice Service
fr: Service Spice

note: type: Plain text
en: The @code{(gnu services spice)} module provides the following service.
fr: Le module @code{(gnu services spice)} fournit le service suivant.

note: type: deffn
en: {Scheme Procedure} spice-vdagent-service [#:spice-vdagent]
fr: {Procédure Scheme} spice-vdagent-service [#:spice-vdagent]

note: type: deffn
en: Returns a service that runs @url{https://www.spice-space.org,VDAGENT}, a daemon that enables sharing the clipboard with a vm and setting the guest display resolution when the graphical console window resizes.
fr: Renvoie un service qui lance @url{https://www.spice-space.org,VDAGENT}, un démon qui permet le partage du presse-papier avec une vm et de configurer la résolution d'affichage du client lorsque la fenêtre de la console graphique est redimensionnée.

note: type: subsubheading
en: inputattach Service
fr: service inputattach

note: type: cindex
en: tablet input, for Xorg
fr: entrée tablette, pour Xorg

note: type: cindex
en: touchscreen input, for Xorg
fr: écran tactile, pour Xorg

note: type: Plain text
en: The @uref{https://linuxwacom.github.io/, inputattach} service allows you to use input devices such as Wacom tablets, touchscreens, or joysticks with the Xorg display server.
fr: Le service @uref{https://linuxwacom.github.io/, inputattach} vous permet d'utiliser des périphériques d'entrée comme les tablettes Wacom, les écrans tactiles ou les joysticks avec le serveur d'affichage Xorg.

note: type: deffn
en: {Scheme Variable} inputattach-service-type
fr: {Variable Scheme} inputattach-service-type

note: type: deffn
en: Type of a service that runs @command{inputattach} on a device and dispatches events from it.
fr: Type d'un service qui lance @command{inputattach} sur un appareil et envie les événements qu'il reçoit.

note: type: deftp
en: {Data Type} inputattach-configuration
fr: {Type de données} inputattach-configuration

note: type: item
en: @code{device-type} (default: @code{"wacom"})
fr: @code{device-type} (par défaut : @code{"wacom"})

note: type: table
en: The type of device to connect to.  Run @command{inputattach --help}, from the @code{inputattach} package, to see the list of supported device types.
fr: Le type du périphérique à gérer.  Lancez @command{inputattach --help}, du paquet @code{inputattach}, pour voir la liste des types de périphériques supportés.

note: type: item
en: @code{device} (default: @code{"/dev/ttyS0"})
fr: @code{device} (par défaut : @code{"/dev/ttyS0"})

note: type: table
en: The device file to connect to the device.
fr: Le fichier de périphérique pour s'y connecter.

note: type: table
en: Baud rate to use for the serial connection.  Should be a number or @code{#f}.
fr: Taux de Baud à utiliser pour la connexion série.  Cela doit être un nombre ou @code{#f}.

note: type: item
en: @code{log-file} (default: @code{#f})
fr: @code{log-file} (par défaut : @code{#f})

note: type: table
en: If true, this must be the name of a file to log messages to.
fr: Si la valeur est vraie, cela doit être le nom d'un fichier où enregistrer les messages.

note: type: subsubheading
en: Dictionary Service
fr: Service de dictionnaire

note: type: cindex
en: dictionary
fr: dictionnaire

note: type: Plain text
en: The @code{(gnu services dict)} module provides the following service:
fr: Le module @code{(gnu services dict)} fournit le service suivant :

note: type: defvr
en: {Scheme Variable} dicod-service-type
fr: {Variable Scheme} dicod-service-type

note: type: defvr
en: This is the type of the service that runs the @command{dicod} daemon, an implementation of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}).
fr: C'est le type de service qui lance le démon @command{dicod}, une implémentation du serveur DICT (@pxref{Dicod,,, dico, GNU Dico Manual}).

note: type: deffn
en: {Scheme Procedure} dicod-service [#:config (dicod-configuration)]
fr: {Procédure Scheme} dicod-service [#:config (dicod-configuration)]

note: type: deffn
en: Return a service that runs the @command{dicod} daemon, an implementation of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}).
fr: Renvoie un service qui lance le démon @command{dicod}, une implémentation du serveur DICT (@pxref{Dicod,,, dico, GNU Dico Manual}).

note: type: deffn
en: The optional @var{config} argument specifies the configuration for @command{dicod}, which should be a @code{<dicod-configuration>} object, by default it serves the GNU Collaborative International Dictionary of English.
fr: L'argument @var{config} facultatif spécifie la configuration pour @command{dicod}, qui devrait être un objet @code{<dicod-configuration>}, par défaut il sert le dictionnaire international collaboratif de GNU pour l'anglais.

note: type: deffn
en: You can add @command{open localhost} to your @file{~/.dico} file to make @code{localhost} the default server for @command{dico} client (@pxref{Initialization File,,, dico, GNU Dico Manual}).
fr: Vous pouvez ajouter @command{open localhost} à votre fichier @file{~/.dico} pour faire de @code{localhost} le serveur par défaut du client @command{dico} (@pxref{Initialization File,,, dico, GNU Dico Manual}).

note: type: deftp
en: {Data Type} dicod-configuration
fr: {Type de données} dicod-configuration

note: type: deftp
en: Data type representing the configuration of dicod.
fr: Type de données représentant la configuration de dicod.

note: type: item
en: @code{dico} (default: @var{dico})
fr: @code{dico} (par défaut : @var{dico})

note: type: table
en: Package object of the GNU Dico dictionary server.
fr: Objet de paquet du serveur de dictionnaire GNU Dico.

note: type: item
en: @code{interfaces} (default: @var{'("localhost")})
fr: @code{interfaces} (par défaut : @var{'("localhost")})

note: type: table
en: This is the list of IP addresses and ports and possibly socket file names to listen to (@pxref{Server Settings, @code{listen} directive,, dico, GNU Dico Manual}).
fr: C'est la liste des adresses IP et des ports et éventuellement des noms de fichiers de socket sur lesquels écouter (@pxref{Server Settings, @code{listen} directive,, dico, GNU Dico Manual}).

note: type: item
en: @code{handlers} (default: @var{'()})
fr: @code{handlers} (par défaut : @var{'()})

note: type: table
en: List of @code{<dicod-handler>} objects denoting handlers (module instances).
fr: Liste des objets @code{<dicod-handler>} qui définissent des gestionnaires (des instances de modules).

note: type: item
en: @code{databases} (default: @var{(list %dicod-database:gcide)})
fr: @code{databases} (par défaut : @var{(list %dicod-database:gcide)})

note: type: table
en: List of @code{<dicod-database>} objects denoting dictionaries to be served.
fr: Liste d'objets @code{<dicod-database>} qui définissent des dictionnaires à servir.

note: type: deftp
en: {Data Type} dicod-handler
fr: {Type de données} dicod-handler

note: type: deftp
en: Data type representing a dictionary handler (module instance).
fr: Type de données représentant un gestionnaire de dictionnaire (instance de module).

note: type: table
en: Name of the handler (module instance).
fr: Nom du gestionnaire (instance de module).

note: type: item
en: @code{module} (default: @var{#f})
fr: @code{module} (par défaut : @var{#f})

note: type: table
en: Name of the dicod module of the handler (instance).  If it is @code{#f}, the module has the same name as the handler.  (@pxref{Modules,,, dico, GNU Dico Manual}).
fr: Nom du module dicod du gestionnaire (instance).  Si la valeur est @code{#f}, le module a le même nom que le gestionnaire.  (@pxref{Modules,,, dico, GNU Dico Manual}).

note: type: table
en: List of strings or gexps representing the arguments for the module handler
fr: Liste de chaînes ou de gexps représentant les arguments pour le gestionnaire de module

note: type: deftp
en: {Data Type} dicod-database
fr: {Type de données} dicod-database

note: type: deftp
en: Data type representing a dictionary database.
fr: Type de données représentant une base de données de dictionnaire.

note: type: table
en: Name of the database, will be used in DICT commands.
fr: Nom de la base de données, qui sera utilisée dans les commande DICT.

note: type: table
en: Name of the dicod handler (module instance) used by this database (@pxref{Handlers,,, dico, GNU Dico Manual}).
fr: Nom du gestionnaire dicod (instance de module) utilisé par cette base de données (@pxref{Handlers,,, dico, GNU Dico Manual}).

note: type: item
en: @code{complex?} (default: @var{#f})
fr: @code{complex?} (par défaut : @var{#f})

note: type: table
en: Whether the database configuration complex.  The complex configuration will need a corresponding @code{<dicod-handler>} object, otherwise not.
fr: Indique si la configuration est pour une base de données complexe.  La configuration complexe a besoin d'un objet @code{<dicod-handler>} correspondant, sinon inutile.

note: type: table
en: List of strings or gexps representing the arguments for the database (@pxref{Databases,,, dico, GNU Dico Manual}).
fr: Liste de chaînes ou de gexps représentant les arguments pour la base de données (@pxref{Databases,,, dico, GNU Dico Manual}).

note: type: defvr
en: {Scheme Variable} %dicod-database:gcide
fr: {Variable Scheme} %dicod-database:gcide

note: type: defvr
en: A @code{<dicod-database>} object serving the GNU Collaborative International Dictionary of English using the @code{gcide} package.
fr: Un objet @code{<dicod-database>} servant le dictionnaire international collaboratif en anglais via le paquet @code{gcide}.

note: type: Plain text
en: The following is an example @code{dicod-service} configuration.
fr: Voici un exemple de configuration de @code{dicod-service}.

note: type: subsubheading
en: Docker Service
fr: Service Docker

note: type: Plain text
en: The @code{(gnu services docker)} module provides the following services.
fr: Le module @code{(gnu services docker)} fournit les services suivants.

note: type: defvr
en: {Scheme Variable} docker-service-type
fr: {Variable Scheme} docker-service-type

note: type: defvr
en: This is the type of the service that runs @url{https://www.docker.com,Docker}, a daemon that can execute application bundles (sometimes referred to as ``containers'') in isolated environments.
fr: C'est le type du service qui lance @url{https://www.docker.com,Docker}, un démon qui peut exécuter des lots applicatifs (aussi appelés « conteneurs ») dans des environnements isolés.

note: type: deftp
en: {Data Type} docker-configuration
fr: {Type de données} docker-configuration

note: type: deftp
en: This is the data type representing the configuration of Docker and Containerd.
fr: Le type de données qui représente la configuration de Docker et Containerd.

note: type: item
en: @code{docker} (default: @code{docker})
fr: @code{docker} (par défaut : @code{docker})

note: type: table
en: The Docker daemon package to use.
fr: Le paquet du démon Docker à utiliser.

note: type: item
en: @code{docker-cli} (default: @code{docker-cli})
fr: @code{docker-cli} (par défaut : @code{docker-cli})

note: type: table
en: The Docker client package to use.
fr: Le paquet du client Docker à utiliser.

note: type: item
en: @code{containerd} (default: @var{containerd})
fr: @code{containerd} (par défaut : @var{containerd})

note: type: table
en: The Containerd package to use.
fr: Le paquet Containerd à utiliser.

note: type: item
en: @code{proxy} (default @var{docker-libnetwork-cmd-proxy})
fr: @code{proxy} (par défaut : @var{docker-libnetwork-cmd-proxy})

note: type: table
en: The Docker user-land networking proxy package to use.
fr: Le paquet du mandataire réseau en espace utilisateur de Docker à utiliser.

note: type: item
en: @code{enable-proxy?} (default @code{#t})
fr: @code{enable-proxy?} (par défaut : @code{#t})

note: type: table
en: Enable or disable the use of the Docker user-land networking proxy.
fr: Indique s'il faut utiliser le mandataire réseau en espace utilisateur de Docker.

note: type: item
en: @code{debug?} (default @code{#f})
fr: @code{debug?} (par défaut : @code{#f})

note: type: table
en: Enable or disable debug output.
fr: Indique s'il faut activer la sortie de débogage.

note: type: item
en: @code{enable-iptables?} (default @code{#t})
fr: @code{enable-iptables?} (par défaut : @code{#t})

note: type: table
en: Enable or disable the addition of iptables rules.
fr: Indique s'il faut ajouter des règles iptables.

note: type: item
en: @code{environment-variables} (default: @code{()})
fr: @code{environment-variables} (par défaut : @code{()})

note: type: table
en: List of environment variables to set for @command{dockerd}.
fr: Liste de variables d'environnement à initialiser pour @command{dockerd}.

note: type: table
en: This must be a list of strings where each string has the form @samp{@var{key}=@var{value}} as in this example:
fr: Cela doit être une liste de chaines où chaque chaine a pour forme @samp{@var{clé}=@var{valeur}} comme dans cet exemple :

note: type: cindex
en: Singularity, container service
fr: Singularity, service de conteneurs

note: type: defvr
en: {Scheme Variable} singularity-service-type
fr: {Variable Scheme} singularity-service-type

note: type: defvr
en: This is the type of the service that allows you to run @url{https://www.sylabs.io/singularity/, Singularity}, a Docker-style tool to create and run application bundles (aka. ``containers'').  The value for this service is the Singularity package to use.
fr: C'est le type de service qui vous permet de lancer @url{https://www.sylabs.io/singularity/, Singularity}, un outil similaire à Docker pour créer et lancer des lots applicatifs (aussi appelés « conteneurs »).  la valeur de ce service est le paquet Singularity à utiliser.

note: type: defvr
en: The service does not install a daemon; instead, it installs helper programs as setuid-root (@pxref{Setuid Programs}) such that unprivileged users can invoke @command{singularity run} and similar commands.
fr: Le service n'installe pas de démon : à la place, il installe des utilitaires en setuid-root (@pxref{Setuid Programs}) pour que les utilisateurs non privilégiés puisse invoquer @command{singularity run} et les commandes similaires.

note: type: subsubheading
en: Auditd Service
fr: Service auditd

note: type: Plain text
en: The @code{(gnu services auditd)} module provides the following service.
fr: Le module @code{(gnu services auditd)} fournit le service suivant.

note: type: defvr
en: {Scheme Variable} auditd-service-type
fr: {Variable Scheme} auditd-service-type

note: type: defvr
en: This is the type of the service that runs @url{https://people.redhat.com/sgrubb/audit/,auditd}, a daemon that tracks security-relevant information on your system.
fr: C'est le type du service qui lance @url{https://people.redhat.com/sgrubb/audit/,auditd}, un démon qui suit les informations de sécurité de votre système.

note: type: defvr
en: Examples of things that can be tracked:
fr: Exemples de ce qui peut être suivi :

note: type: enumerate
en: File accesses
fr: Les accès aux fichiers

note: type: enumerate
en: System calls
fr: Les appels système

note: type: enumerate
en: Invoked commands
fr: Les commandes invoquées

note: type: enumerate
en: Failed login attempts
fr: Les tentatives de connexion échouées

note: type: enumerate
en: Firewall filtering
fr: Le filtrage du pare-feu

note: type: enumerate
en: Network access
fr: Les accès réseau

note: type: defvr
en: @command{auditctl} from the @code{audit} package can be used in order to add or remove events to be tracked (until the next reboot).  In order to permanently track events, put the command line arguments of auditctl into a file called @code{audit.rules} in the configuration directory (see below).  @command{aureport} from the @code{audit} package can be used in order to view a report of all recorded events.  The audit daemon by default logs into the file @file{/var/log/audit.log}.
fr: @command{auditctl} du paquet @code{audit} peut être utilisé pour ajouter ou supprimer des évènements à suivre (jusqu'au prochain redémarrage).  Pour suivre les évènements de manière permanente, ajoutez des arguments à la commande auditctl dans un fichier nommé @code{audit.rules} dans le répertoire de configuration (voir plus bas).  @command{aureport} du paquet @code{audit} peut être utilisé pour visualiser un rapport de tous les évènements enregistrés.  le démon d'audit enregistre par défaut dans le fichier @file{/var/log/audit.log}.

note: type: deftp
en: {Data Type} auditd-configuration
fr: {Type de données} auditd-configuration

note: type: deftp
en: This is the data type representing the configuration of auditd.
fr: Le type de données qui représente la configuration de auditd.

note: type: item
en: @code{audit} (default: @code{audit})
fr: @code{audit} (par défaut : @code{audit})

note: type: table
en: The audit package to use.
fr: Le paquet audit à utiliser.

note: type: item
en: @code{configuration-directory} (default: @code{%default-auditd-configuration-directory})
fr: @code{configuration-directory} (par défaut : @code{%default-auditd-configuration-directory})

note: type: table
en: The directory containing the configuration file for the audit package, which must be named @code{auditd.conf}, and optionally some audit rules to instantiate on startup.
fr: Le répertoire contenant le fichier de configuration du paquet audit, qui doit être nommé @code{auditd.conf}, et éventuellement des règles d'audit à instancier au démarrage.

note: type: subsubheading
en: R-Shiny service
fr: Service R-Shiny

note: type: Plain text
en: The @code{(gnu services science)} module provides the following service.
fr: Le module @code{(gnu services science)} fournit le service suivant.

note: type: defvr
en: {Scheme Variable} rshiny-service-type
fr: {Variable Scheme} rshiny-service-type

note: type: defvr
en: This is a type of service which is used to run a webapp created with @code{r-shiny}.  This service sets the @env{R_LIBS_USER} environment variable and runs the provided script to call @code{runApp}.
fr: C'est le type de service utilisé pour lancer une appli web créée avec @code{r-shiny}.  Ce service initialise la variable d'environnement @env{R_LIBS_USER} et lance le script fournit pour appeler @code{runApp}.

note: type: deftp
en: {Data Type} rshiny-configuration
fr: {Type de données} rshiny-configuration

note: type: deftp
en: This is the data type representing the configuration of rshiny.
fr: Le type de données qui représente la configuration de rshiny.

note: type: item
en: @code{package} (default: @code{r-shiny})
fr: @code{package} (par défaut : @code{r-shiny})

note: type: table
en: The package to use.
fr: Le paquet à utiliser.

note: type: item
en: @code{binary} (default @code{"rshiny"})
fr: @code{binary} (par défaut : @code{"rshiny"})

note: type: table
en: The name of the binary or shell script located at @code{package/bin/} to run when the service is run.
fr: Le nom du binaire ou du script shell situé dans @code{package/bin/} à lancer au démarrage du service.

note: type: table
en: The common way to create this file is as follows:
fr: La manière habituelle de créer ce fichier est :

note: type: subsubheading
en: Nix service
fr: Service Nix

note: type: Plain text
en: The @code{(gnu services nix)} module provides the following service.
fr: Le module @code{(gnu services nix)} fournit le service suivant.

note: type: defvr
en: {Scheme Variable} nix-service-type
fr: {Variable Scheme} nix-service-type

note: type: defvr
en: This is the type of the service that runs build daemon of the @url{https://nixos.org/nix/, Nix} package manager.  Here is an example showing how to use it:
fr: C'est le type du service qui lance le démon de construction du gestionnaire de paquets @url{https://nixos.org/nix/, Nix}.  Voici un exemple qui montre comment l'utiliser :

note: type: defvr
en: After @command{guix system reconfigure} configure Nix for your user:
fr: Après @command{guix system reconfigure}, configurez Nix pour votre utilisateur :

note: type: item
en: Add a Nix channel and update it.  See
fr: Ajoutez un canal Nix et mettez-le à jour.  Voir

note: type: itemize
en: @url{https://nixos.org/nix/manual/, Nix Package Manager Guide}.
fr: @url{https://nixos.org/nix/manual/, Guide du gestionnaire de paquets Nix}.

note: type: item
en: Create a symlink to your profile and activate Nix profile:
fr: Créez un lien symbolique vers votre profil et activez le profil de Nix :

note: type: deftp
en: {Data Type} nix-configuration
fr: {Type de données} nix-configuration

note: type: deftp
en: This data type represents the configuration of the Nix daemon.
fr: Ce type de données représente la configuration du démon Nix.

note: type: item
en: @code{nix} (default: @code{nix})
fr: @code{nix} (par défaut : @code{nix})

note: type: table
en: The Nix package to use.
fr: Le paquet Nix à utiliser.

note: type: item
en: @code{sandbox} (default: @code{#t})
fr: @code{sandbox} (par défaut : @code{#t})

note: type: table
en: Specifies whether builds are sandboxed by default.
fr: Spécifie si les constructions sont effectuées dans un bac à sable par défaut.

note: type: item
en: @code{build-sandbox-items} (default: @code{'()})
fr: @code{build-sandbox-items} (par défaut : @code{'()})

note: type: table
en: This is a list of strings or objects appended to the @code{build-sandbox-items} field of the configuration file.
fr: C'est une liste de chaines de caractères ou d'objets ajoutés au champ @code{build-sandbox-items} du fichier de configuration.

note: type: table
en: Extra command line options for @code{nix-service-type}.
fr: Options supplémentaires de la ligne de commande pour @code{nix-service-type}.

note: type: subsubheading
en: Fail2Ban service
fr: Service Fail2Ban

note: type: Plain text
en: @uref{http://www.fail2ban.org/, @code{fail2ban}} scans log files (e.g. @code{/var/log/apache/error_log}) and bans IP addresses that show malicious signs -- repeated password failures, attempts to make use of exploits, etc.
fr: @uref{http://www.fail2ban.org/, @code{fail2ban}} scanne les fichiers journaux (p.@: ex.@: @code{/var/log/apache/error_log}) et bannit les adresses IP qui montrent des signes de malhonnêteté — des échecs de connexion répétés, des tentatives d'utiliser des exploits, etc.

note: type: Plain text
en: @code{fail2ban-service-type} service type is provided by the @code{(gnu services security)} module.
fr: Le type de service @code{fail2ban-service-type} est fournit par le module @code{(gnu services security)}.

note: type: Plain text
en: This service type runs the @code{fail2ban} daemon.  It can be configured in various ways, which are:
fr: Ce type de service lance le démon @code{fail2ban}. Il peut être configuré de plusieurs façon qui sont :

note: type: item
en: Basic configuration
fr: Configuration basique

note: type: table
en: The basic parameters of the Fail2Ban service can be configured via its @code{fail2ban} configuration, which is documented below.
fr: Les paramètres de base du service Fail2Ban peut être configurés via sa configuration @code{fail2ban}, qui est documentée ci-dessous.

note: type: item
en: User-specified jail extensions
fr: Extensions personnalisées des prisons

note: type: table
en: The @code{fail2ban-jail-service} function can be used to add new Fail2Ban jails.
fr: La fonction @code{fail2ban-jail-service} peut être utilisée pour ajouter de nouvelles prisons Fail2Ban.

note: type: item
en: Shepherd extension mechanism
fr: Mécanisme d'extension du Shepherd

note: type: table
en: Service developers can extend the @code{fail2ban-service-type} service type itself via the usual service extension mechanism.
fr: Les développeurs de services peuvent étendre le type de service @code{fail2ban-service-type} lui-même avec le mécanisme d'extension habituel des services.

note: type: defvr
en: {Scheme Variable} fail2ban-service-type
fr: {Variable Scheme} fail2ban-service-type

note: type: defvr
en: This is the type of the service that runs @code{fail2ban} daemon.  Below is an example of a basic, explicit configuration:
fr: C'est le type de service qui lance le démon @command{fail2ban}. Voici un exemple de configuration de base explicite :

note: type: lisp
en: (append
     (list
      (service fail2ban-service-type
               (fail2ban-configuration
                (extra-jails
                 (list
                  (fail2ban-jail-configuration
                   (name "sshd")
                   (enabled? #t))))))
      ;; There is no implicit dependency on an actual SSH
      ;; service, so you need to provide one.
      (service openssh-service-type))
     %base-services)
fr: (append
     (list
      (service fail2ban-service-type
               (fail2ban-configuration
                (extra-jails
                 (list
                  (fail2ban-jail-configuration
                   (name "sshd")
                   (enabled? #t))))))
      ;; Il n'y a pas de dépendance implicite à un service SSH,
      ;; donc il faut en fournir un.
      (service openssh-service-type))
     %base-services)

note: type: deffn
en: {Scheme Procedure} fail2ban-jail-service @var{svc-type} @var{jail}
fr: {Procédure Scheme} fail2ban-jail-service @var{svc-type} @var{jail}

note: type: deffn
en: Extend @var{svc-type}, a @code{<service-type>} object with @var{jail}, a @code{fail2ban-jail-configuration} object.
fr: Étend @var{svc-type}, un objet @code{<service-type>} avec @var{jail}, un objet @code{fail2ban-jail-configuration}.

note: type: lisp
en: (append
     (list
      (service
       ;; The 'fail2ban-jail-service' procedure can extend any service type
       ;; with a fail2ban jail.  This removes the requirement to explicitly
       ;; extend services with fail2ban-service-type.
       (fail2ban-jail-service
        openssh-service-type
        (fail2ban-jail-configuration
         (name "sshd")
         (enabled? #t)))
       (openssh-configuration ...))))
fr: (append
     (list
      (service
       ;; La procédure « fail2ban-jail-service » peut étendre n'importe quel type de service
       ;; avec une prison fail2ban. Cela supprime la nécessité d'étendre les services explicitement
       ;; avec le fail2ban-service-type.
       (fail2ban-jail-service
        openssh-service-type
        (fail2ban-jail-configuration
         (name "sshd")
         (enabled? #t)))
       (openssh-configuration ...))))

note: type: Plain text
en: Below is the reference for the different @code{jail-service-type} configuration records.
fr: Ci-dessous se trouve la référence des différents enregistrement de configuration @code{jail-service-type}.

note: type: deftp
en: {Data Type} fail2ban-configuration
fr: {Type de données} fail2ban-configuration

note: type: deftp
en: Available @code{fail2ban-configuration} fields are:
fr: Les champs de @code{fail2ban-configuration} disponibles sont :

note: type: item
en: @code{fail2ban} (default: @code{fail2ban}) (type: package)
fr: @code{fail2ban} (par défaut : @code{fail2ban}) (type : paquet)

note: type: table
en: The @code{fail2ban} package to use.  It is used for both binaries and as base default configuration that is to be extended with @code{<fail2ban-jail-configuration>} objects.
fr: Le paquet @code{fail2ban} à utiliser. Il est utilisé à la fois pour les binaires et pour la configuration de base par défaut qui doit être étendue avec des objets @code{<fail2ban-jail-configuration>}.

note: type: item
en: @code{run-directory} (default: @code{"/var/run/fail2ban"}) (type: string)
fr: @code{run-directory} (par défaut : @code{"/var/run/fail2ban"}) (type : chaine)

note: type: table
en: The state directory for the @code{fail2ban} daemon.
fr: Le répertoire d'état pour le démon @code{fail2ban}.

note: type: item
en: @code{jails} (default: @code{()}) (type: list-of-fail2ban-jail-configurations)
fr: @code{jails} (par défaut : @code{()}) (type : liste-de-fail2ban-jail-configurations)

note: type: table
en: Instances of @code{<fail2ban-jail-configuration>} collected from extensions.
fr: Instances de @code{<fail2ban-jail-configuration>} collectées par les extensions.

note: type: item
en: @code{extra-jails} (default: @code{()}) (type: list-of-fail2ban-jail-configurations)
fr: @code{extra-jails} (par défaut : @code{()}) (type : liste-de-fail2ban-jail-configurations)

note: type: table
en: Instances of @code{<fail2ban-jail-configuration>} explicitly provided.
fr: Instances de @code{<fail2ban-jail-configuration>} fournies explicitement.

note: type: item
en: @code{extra-content} (default: @code{()}) (type: text-config)
fr: @code{extra-content} (par défaut : @code{()}) (type : text-config)

note: type: table
en: Extra raw content to add to the end of the @file{jail.local} file, provided as a list of file-like objects.
fr: Contenu brut supplémentaire à ajouter à la fin du fichier @file{jail.local}, à fournir sous forme d'une liste de simili-fichiers.

note: type: deftp
en: {Data Type} fail2ban-ignore-cache-configuration
fr: {Type de données} fail2ban-ignore-cache-configuration

note: type: deftp
en: Available @code{fail2ban-ignore-cache-configuration} fields are:
fr: Les champs de @code{fail2ban-ignore-cache-configuration} disponibles sont :

note: type: item
en: @code{key} (type: string)
fr: @code{key} (type : chaine)

note: type: table
en: Cache key.
fr: Clé de cache.

note: type: item
en: @code{max-count} (type: integer)
fr: @code{max-count} (type : entier)

note: type: table
en: Cache size.
fr: Taille du cache.

note: type: item
en: @code{max-time} (type: integer)
fr: @code{max-time} (type : entier)

note: type: table
en: Cache time.
fr: Durée du cache.

note: type: deftp
en: {Data Type} fail2ban-jail-action-configuration
fr: {Type de données} fail2ban-jail-action-configuration

note: type: deftp
en: Available @code{fail2ban-jail-action-configuration} fields are:
fr: Les champs de @code{fail2ban-jail-action-configuration} disponibles sont :

note: type: item
en: @code{name} (type: string)
fr: @code{name} (type : string)

note: type: table
en: Action name.
fr: Nom de l'action.

note: type: item
en: @code{arguments} (default: @code{()}) (type: list-of-arguments)
fr: @code{arguments} (par défaut : @code{()}) (type : liste-d'arguments)

note: type: table
en: Action arguments.
fr: Arguments de l'action.

note: type: deftp
en: {Data Type} fail2ban-jail-configuration
fr: {Type de données} fail2ban-jail-configuration

note: type: deftp
en: Available @code{fail2ban-jail-configuration} fields are:
fr: Les champs de @code{fail2ban-jail-configuration} disponibles sont :

note: type: table
en: Required name of this jail configuration.
fr: Nom requis de cette configuration de prison.

note: type: item
en: @code{enabled?} (default: @code{#t}) (type: boolean)
fr: @code{enabled?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Whether this jail is enabled.
fr: Spécifie si cette prison est activée.

note: type: item
en: @code{backend} (type: maybe-symbol)
fr: @code{backend} (type : peut-être-symbole)

note: type: table
en: Backend to use to detect changes in the @code{log-path}.  The default is 'auto.  To consult the defaults of the jail configuration, refer to the @file{/etc/fail2ban/jail.conf} file of the @code{fail2ban} package.
fr: Le moteur à utiliser pour détecter les changements dans @code{log-path}. La valeur par défaut est 'auto. Pour consulter les valeurs par défaut de la configuration de prison, consultez le fichier @file{/etc/fail2ban/jail.conf} du paquet @code{fail2ban}.

note: type: item
en: @code{max-retry} (type: maybe-integer)
fr: @code{max-retry} (type : peut-être-entier)

note: type: table
en: The number of failures before a host get banned (e.g.  @code{(max-retry 5)}).
fr: Le nombre d'échecs avant qu'un hôte ne soit banni (p.@: ex.@: @code{(max-retry 5)}).

note: type: item
en: @code{max-matches} (type: maybe-integer)
fr: @code{max-matches} (type : peut-être-entier)

note: type: table
en: The number of matches stored in ticket (resolvable via tag @code{<matches>}) in action.
fr: Le nombre de correspondances stockées dans le ticket (accessible avec l'étiquette @code{<matches>}) dans l'action.

note: type: item
en: @code{find-time} (type: maybe-string)
fr: @code{find-time} (type : peut-être-chaine)

note: type: table
en: The time window during which the maximum retry count must be reached for an IP address to be banned.  A host is banned if it has generated @code{max-retry} during the last @code{find-time} seconds (e.g.  @code{(find-time "10m")}).  It can be provided in seconds or using Fail2Ban's "time abbreviation format", as described in @command{man 5 jail.conf}.
fr: La fenêtre pendant laquelle le compte de tentative maximale doit être atteint pour qu'une adresse IP soit bannie. Un hôte est banni s'il a généré @code{max-retry} pendant les dernières @code{find-time} secondes (p.@: ex.@: @code{»find-time "10m")}). Elle peut être fournie en seconde ou avec le « format temporel abrégé » de Fail2ban, décrit dans @command{man 5 jail.conf}.

note: type: item
en: @code{ban-time} (type: maybe-string)
fr: @code{ban-time} (type : peut-être-chaine)

note: type: table
en: The duration, in seconds or time abbreviated format, that a ban should last.  (e.g.  @code{(ban-time "10m")}).
fr: La durée, en secondes ou au format temporel abrégé, qu'un bannissement doit durer (p.@: ex.@: @code{(ban-time "10m")}).

note: type: item
en: @code{ban-time-increment?} (type: maybe-boolean)
fr: @code{ban-time-increment?} (type : peut-être-booléen)

note: type: table
en: Whether to consider past bans to compute increases to the default ban time of a specific IP address.
fr: Indique s'il faut considérer les bannissements passés pour calculer un incrément du temps de bannissement par défaut d'une adresse IP particulière.

note: type: item
en: @code{ban-time-factor} (type: maybe-string)
fr: @code{ban-time-factor} (type : peut-être-chaine)

note: type: table
en: The coefficient to use to compute an exponentially growing ban time.
fr: Le coefficient à utiliser pour calculer un temps de bannissement exponentiel.

note: type: item
en: @code{ban-time-formula} (type: maybe-string)
fr: @code{ban-time-formula} (type : peut-être-chaine)

note: type: table
en: This is the formula used to calculate the next value of a ban time.
fr: C'est la formule utilisée pour calculer la prochaine valeur d'une durée de bannissement.

note: type: item
en: @code{ban-time-multipliers} (type: maybe-string)
fr: @code{ban-time-multipliers} (type : peut-être-chaine)

note: type: table
en: Used to calculate next value of ban time instead of formula.
fr: Utilisé pour calculer la prochaine valeur de la durée du bannissement au lieu de la formule.

note: type: item
en: @code{ban-time-max-time} (type: maybe-string)
fr: @code{ban-time-max-time} (type : peut-être-chaine)

note: type: table
en: The maximum number of seconds a ban should last.
fr: Le nombre maximum de secondes qu'un bannissement peut durer.

note: type: item
en: @code{ban-time-rnd-time} (type: maybe-string)
fr: @code{ban-time-rnd-time} (type : peut-être-chaine)

note: type: table
en: The maximum number of seconds a randomized ban time should last.  This can be useful to stop ``clever'' botnets calculating the exact time an IP address can be unbanned again.
fr: Le nombre maximum de secondes maximum qu'un bannissement à durée aléatoire peut durer. C'est utile pour arrêter les robots « intelligents » qui calculent le moment exacte où une adresse IP peut être dé-bannie.

note: type: item
en: @code{ban-time-overall-jails?} (type: maybe-boolean)
fr: @code{ban-time-overall-jails?} (type : peut-être-booléen)

note: type: table
en: When true, it specifies the search of an IP address in the database should be made across all jails.  Otherwise, only the current jail of the ban IP address is considered.
fr: Lorsque la valeur est vraie, elle spécifie que la recherche d'une adresse IP dans la base de donnée doit se faire dans toutes les prisons. Sinon, seule la prison actuelle pour l'adresse IP bannie est prise en compte.

note: type: item
en: @code{ignore-self?} (type: maybe-boolean)
fr: @code{ignore-self?} (type : peut-être-booléen)

note: type: table
en: Never ban the local machine's own IP address.
fr: Ne jamais bannir l'adresse IP de la machine locale.

note: type: item
en: @code{ignore-ip} (default: @code{()}) (type: list-of-strings)
fr: @code{ignore-ip} (par défaut : @code{()}) (type : liste-de-chaines)

note: type: table
en: A list of IP addresses, CIDR masks or DNS hosts to ignore.  @code{fail2ban} will not ban a host which matches an address in this list.
fr: Une liste d'adresse IP, de masques CIDR ou d'hôtes DNS à ignorer. @code{fail2ban} ne bannira par un hôte qui correspond à une adresse de cette liste.

note: type: item
en: @code{ignore-cache} (type: maybe-fail2ban-ignore-cache-configuration)
fr: @code{ignore-cache} (type : peut-être-fail2ban-ignore-cache-configuration)

note: type: table
en: Provide cache parameters for the ignore failure check.
fr: fournit des paramètres de cache pour ignorer les vérifications d'échecs.

note: type: item
en: @code{filter} (type: maybe-fail2ban-jail-filter-configuration)
fr: @code{filter} (type : peut-fail2ban-jail-filter-configuration)

note: type: table
en: The filter to use by the jail, specified via a @code{<fail2ban-jail-filter-configuration>} object.  By default, jails have names matching their filter name.
fr: Le filtre à utiliser par la prison, spécifiée par un objet @code{<fail2ban-jail-filter-configuration>}. Par défaut, les prisons ont un nom qui correspond au nom de leur filtre.

note: type: item
en: @code{log-time-zone} (type: maybe-string)
fr: @code{log-time-zone} (type : peut-être-chaine)

note: type: table
en: The default time zone for log lines that do not have one.
fr: Le fuseau horaire par défaut pour les lignes de journaux qui n'en indiquent pas.

note: type: item
en: @code{log-encoding} (type: maybe-symbol)
fr: @code{log-encoding} (type : peut-être-symbole)

note: type: table
en: The encoding of the log files handled by the jail.  Possible values are: @code{'ascii}, @code{'utf-8} and @code{'auto}.
fr: L'encodage des journaux traités par la prison. Les valeurs possibles sont : @code{'ascii}, @code{'utf-8} et @code{'auto}.

note: type: item
en: @code{log-path} (default: @code{()}) (type: list-of-strings)
fr: @code{log-path} (par défaut : @code{()}) (type : liste-de-chaines)

note: type: table
en: The file names of the log files to be monitored.
fr: Le nom de fichier des journaux à surveiller.

note: type: item
en: @code{action} (default: @code{()}) (type: list-of-fail2ban-jail-actions)
fr: @code{action} (par défaut : @code{()}) (type : liste-de-fail2ban-jail-action)

note: type: table
en: A list of @code{<fail2ban-jail-action-configuration>}.
fr: Une liste de @code{<fail2ban-jail-action-configuration>}.

note: type: table
en: Extra content for the jail configuration, provided as a list of file-like objects.
fr: Contenu supplémentaire pour la configuration de la prison, à fournir sous la forme d'une liste de simili-fichiers.

note: type: deftp
en: {Data Type} fail2ban-jail-filter-configuration
fr: {Type de données} fail2ban-jail-filter-configuration

note: type: deftp
en: Available @code{fail2ban-jail-filter-configuration} fields are:
fr: Les champs de @code{fail2ban-jail-filter-configuration} disponibles sont :

note: type: table
en: Filter to use.
fr: Filtre à utiliser.

note: type: item
en: @code{mode} (type: maybe-string)
fr: @code{mode} (type : peut-être-chaine)

note: type: table
en: Mode for filter.
fr: Mode de filtrage.

note: type: cindex
en: setuid programs
fr: programmes setuid

note: type: cindex
en: setgid programs
fr: programmes setgid

note: type: Plain text
en: Some programs need to run with elevated privileges, even when they are launched by unprivileged users.  A notorious example is the @command{passwd} program, which users can run to change their password, and which needs to access the @file{/etc/passwd} and @file{/etc/shadow} files---something normally restricted to root, for obvious security reasons.  To address that, @command{passwd} should be @dfn{setuid-root}, meaning that it always runs with root privileges (@pxref{How Change Persona,,, libc, The GNU C Library Reference Manual}, for more info about the setuid mechanism).
fr: Certains programmes doivent être lancés avec des privilèges élevés même lorsqu'ils sont lancés par un utilisateur non privilégié.  Un exemple notoire est le programme @command{passwd}, que les utilisateurs peuvent appeler pour modifier leur mot de passe et qui doit accéder à @file{/etc/passwd} et @file{/etc/shadow} — ce qui est normalement réservé à root, pour des raisons de sécurité évidentes.  Pour contourner cela, @command{passwd} devrait être @dfn{setuid-root}, ce qui signifie qu'il sera toujours lancé avec les privilèges root (@pxref{How Change Persona,,, libc, The GNU C Library Reference Manual}, pour plus d'informations sur le mécanisme setuid).

note: type: Plain text
en: The store itself @emph{cannot} contain setuid programs: that would be a security issue since any user on the system can write derivations that populate the store (@pxref{The Store}).  Thus, a different mechanism is used: instead of changing the setuid or setgid bits directly on files that are in the store, we let the system administrator @emph{declare} which programs should be entrusted with these additional privileges.
fr: Le dépôt lui-même ne @emph{peut pas} contenir de programmes setuid ; cela serait un problème de sécurité puisque n'importe quel utilisateur du système peut écrire une dérivation qui rempli le dépôt (@pxref{The Store}).  Donc, un mécanisme différent est utilisé : au lieu de changer les bits setuid ou setgid directement sur les fichiers qui sont dans le dépôt, nous laissons à l'administrateur système le soit de @emph{déclarer} les programmes qui devraient avoir ces privilèges supplémentaires.

note: type: Plain text
en: The @code{setuid-programs} field of an @code{operating-system} declaration contains a list of @code{<setuid-program>} denoting the names of programs to have a setuid or setgid bit set (@pxref{Using the Configuration System}).  For instance, the @command{mount.nfs} program, which is part of the nfs-utils package, with a setuid root can be designated like this:
fr: Le champ @code{setuid-programs} d'une déclaration @code{operating-system} contient une liste de @code{<setuid-program>} qui dénotent les noms des programmes qui auront le bit setuid ou setgid (@pxref{Using the Configuration System}).  Par exemple, le programme @command{mount.nfs}, qui fait partie du paquet nfs-utils, avec le bit setuid root, peut être désigné comme ceci :

note: type: Plain text
en: And then, to make @command{mount.nfs} setuid on your system, add the previous example to your operating system declaration by appending it to @code{%setuid-programs} like this:
fr: Ensuite, pour rendre @command{mount.nfs} setuid sur votre système, ajoutez l'exemple précédent à votre déclaration de système d'exploitation en l'ajoutant aux @code{%setuid-programs} de cette façon :

note: type: lisp
en: (operating-system
      ;; Some fields omitted...
      (setuid-programs
        (append (list (setuid-program
                        (program (file-append nfs-utils "/sbin/mount.nfs"))))
                %setuid-programs)))
fr: (operating-system
      ;; Certains champs omis...
      (setuid-programs
        (append (list (setuid-program
                        (program (file-append nfs-utils "/sbin/mount.nfs"))))
                %setuid-programs)))

note: type: deftp
en: {Data Type} setuid-program
fr: {Type de données} setuid-program

note: type: deftp
en: This data type represents a program with a setuid or setgid bit set.
fr: Ce type de données représente un programme avec le bit setuid ou setgid.

note: type: table
en: A file-like object having its setuid and/or setgid bit set.
fr: Un objet simili-fichier dont le bit setuid ou setgid est activé.

note: type: item
en: @code{setuid?} (default: @code{#t})
fr: @code{setuid?} (par défaut : @code{#t})

note: type: table
en: Whether to set user setuid bit.
fr: Indique s'il faut activer le bit setuid.

note: type: item
en: @code{setgid?} (default: @code{#f})
fr: @code{setgid?} (par défaut : @code{#f})

note: type: table
en: Whether to set group setgid bit.
fr: Indique s'il faut active le bit setgid.

note: type: item
en: @code{user} (default: @code{0})
fr: @code{user} (par défaut : @code{0})

note: type: table
en: UID (integer) or user name (string) for the user owner of the program, defaults to root.
fr: L'UID (entier) ou le nom d'utilisateur (chaîne) du propriétaire du programme, root par défaut.

note: type: item
en: @code{group} (default: @code{0})
fr: @code{group} (par défaut : @code{0})

note: type: table
en: GID (integer) goup name (string) for the group owner of the program, defaults to root.
fr: Le GID (entier) ou le nom du groupe (chaîne) pour le groupe propriétaire du programme, root par défaut.

note: type: Plain text
en: A default set of setuid programs is defined by the @code{%setuid-programs} variable of the @code{(gnu system)} module.
fr: Un ensemble de programmes par défaut est défini par la variable @code{%setuid-programs} du module @code{(gnu system)}.

note: type: defvr
en: {Scheme Variable} %setuid-programs
fr: {Variable Scheme} %setuid-programs

note: type: defvr
en: A list of @code{<setuid-program>} denoting common programs that are setuid-root.
fr: Une liste de @code{<setuid-program>} qui dénotent les programmes communément setuid-root.

note: type: defvr
en: The list includes commands such as @command{passwd}, @command{ping}, @command{su}, and @command{sudo}.
fr: La liste inclus des commandes comme @command{passwd}, @command{ping}, @command{su} et @command{sudo}.

note: type: Plain text
en: Under the hood, the actual setuid programs are created in the @file{/run/setuid-programs} directory at system activation time.  The files in this directory refer to the ``real'' binaries, which are in the store.
fr: Sous le capot, les programmes setuid sont créés dans le répertoire @file{/run/setuid-programs} au moment de l'activation du système.  Les fichiers dans ce répertoire se réfèrent aux « vrais » binaires, qui sont dans le dépot.

note: type: cindex
en: HTTPS, certificates
fr: HTTPS, certificats

note: type: cindex
en: X.509 certificates
fr: Certificats X.509

note: type: Plain text
en: Web servers available over HTTPS (that is, HTTP over the transport-layer security mechanism, TLS) send client programs an @dfn{X.509 certificate} that the client can then use to @emph{authenticate} the server.  To do that, clients verify that the server's certificate is signed by a so-called @dfn{certificate authority} (CA).  But to verify the CA's signature, clients must have first acquired the CA's certificate.
fr: Les serveurs web disponibles par HTTPS (c'est-à-dire HTTP sur le mécanisme de la couche de transport sécurisée, TLS) envoient aux clients un @dfn{certificat X.509} que les clients peuvent utiliser pour @emph{authentifier} le serveur.  Pour cela, les clients vérifient que le certificat du serveur est signé par une @dfn{autorité de certification} (AC ou CA).  Mais pour vérifier la signature de la CA, les clients doivent d'abord avoir récupéré le certificat de la CA.

note: type: Plain text
en: Web browsers such as GNU@tie{}IceCat include their own set of CA certificates, such that they are able to verify CA signatures out-of-the-box.
fr: Les navigateurs web comme GNU@tie{}IceCat incluent leur propre liste de certificats, pour qu'ils puissent vérifier les signatures des CA directement.

note: type: Plain text
en: However, most other programs that can talk HTTPS---@command{wget}, @command{git}, @command{w3m}, etc.---need to be told where CA certificates can be found.
fr: Cependant, la plupart des autres programmes qui peuvent parler HTTPS — @command{wget}, @command{git}, @command{w3m}, etc — doivent savoir où trouver les certificats des CA.

note: type: Plain text
en: In Guix, this is done by adding a package that provides certificates to the @code{packages} field of the @code{operating-system} declaration (@pxref{operating-system Reference}).  Guix includes one such package, @code{nss-certs}, which is a set of CA certificates provided as part of Mozilla's Network Security Services.
fr: Dans Guix, cela se fait en ajoutant un paquet qui fournit les certificats dans le champ @code{packages} de la déclaration @code{operating-system} (@pxref{operating-system Reference}).  Guix inclut l'un de ces paquets, @code{nss-certs}, qui est un ensemble de certificats de CA fourni par les services de sécurité réseau de Mozilla (nss).

note: type: Plain text
en: Note that it is @emph{not} part of @code{%base-packages}, so you need to explicitly add it.  The @file{/etc/ssl/certs} directory, which is where most applications and libraries look for certificates by default, points to the certificates installed globally.
fr: Remarquez qu'il ne fait @emph{pas} partie de @code{%base-packages}, donc vous devez explicitement l'ajouter.  Le répertoire @file{/etc/ssl/certs}, là où la plupart des applications et bibliothèques vont rechercher les certificats par défaut, pointe vers les certificats installés globalement.

note: type: Plain text
en: Unprivileged users, including users of Guix on a foreign distro, can also install their own certificate package in their profile.  A number of environment variables need to be defined so that applications and libraries know where to find them.  Namely, the OpenSSL library honors the @env{SSL_CERT_DIR} and @env{SSL_CERT_FILE} variables.  Some applications add their own environment variables; for instance, the Git version control system honors the certificate bundle pointed to by the @env{GIT_SSL_CAINFO} environment variable.  Thus, you would typically run something like:
fr: Les utilisateurs non privilégiés, dont les utilisateurs de Guix sur une distro externe, peuvent aussi installer leur propre paquet de certificats dans leur profil.  Un certain nombre de variables d'environnement doivent être définies pour que les applications et les bibliothèques puissent les trouver.  En particulier, la bibliothèque OpenSSL prend en compte les variables @env{SSL_CERT_DIR} et @env{SSL_CERT_FILE}.  Certaines applications ajoutent leurs propres variables, par exemple le système de contrôle de version Git prend en compte le lot de certificats pointé par la variable d'environnement @env{GIT_SSL_CAINFO}.  Ainsi, vous lanceriez quelque chose comme ceci :

note: type: Plain text
en: As another example, R requires the @env{CURL_CA_BUNDLE} environment variable to point to a certificate bundle, so you would have to run something like this:
fr: Un autre exemple serait R, qui a besoin que la variable d'environnement @env{CURL_CA_BUNDLE} pointe sur le lot de certificats, donc vous lanceriez quelque chose comme ceci :

note: type: Plain text
en: For other applications you may want to look up the required environment variable in the relevant documentation.
fr: Pour d'autres applications vous pourriez avoir besoin de chercher la variable d'environnement requise dans leur documentation.

note: type: Plain text
en: The @code{(gnu system nss)} module provides bindings to the configuration file of the libc @dfn{name service switch} or @dfn{NSS} (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference Manual}).  In a nutshell, the NSS is a mechanism that allows libc to be extended with new ``name'' lookup methods for system databases, which includes host names, service names, user accounts, and more (@pxref{Name Service Switch, System Databases and Name Service Switch,, libc, The GNU C Library Reference Manual}).
fr: Le module @code{(gnu system nss)} fournit des liaisons pour le fichier de configuration du @dfn{name service switch} ou @dfn{NSS} de la libc (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference Manual}).  En résumé, NSS est un mécanisme qui permet à la libc d'être étendue avec de nouvelles méthodes de résolution de « noms » dans les bases de données du système, comme les noms d'hôtes, les noms des services, les comptes utilisateurs et bien plus (@pxref{Name Service Switch, System Databases and Name Service Switch,, libc, The GNU C Library Reference Manual}).

note: type: Plain text
en: The NSS configuration specifies, for each system database, which lookup method is to be used, and how the various methods are chained together---for instance, under which circumstances NSS should try the next method in the list.  The NSS configuration is given in the @code{name-service-switch} field of @code{operating-system} declarations (@pxref{operating-system Reference, @code{name-service-switch}}).
fr: La configuration de NSS spécifie, pour chaque base de données du système, quelle méthode de résolution utiliser, et comment les diverses méthodes sont enchaînées — par exemple, sous certaines circonstances, NSS devrait essayer la méthode suivante de la liste.  La configuration de NSS est donnée dans le champ @code{name-service-switch} de la déclaration @code{operating-system} (@pxref{operating-system Reference, @code{name-service-switch}}).

note: type: cindex
en: .local, host name lookup
fr: .local, résolution de nom d'hôte

note: type: Plain text
en: As an example, the declaration below configures the NSS to use the @uref{https://0pointer.de/lennart/projects/nss-mdns/, @code{nss-mdns} back-end}, which supports host name lookups over multicast DNS (mDNS)  for host names ending in @code{.local}:
fr: Par exemple, la déclaration ci-dessous configure NSS pour utiliser le @uref{https://0pointer.de/lennart/projects/nss-mdns/, moteur @code{nss-mdns}}, qui supporte la résolution de nom d'hôte sur le DNS multicast (mDNS) pour les noms d'hôtes terminant par @code{.local} :

note: type: lisp
en: (name-service-switch
       (hosts (list %files    ;first, check /etc/hosts
fr: (name-service-switch
       (hosts (list %files    ; d'abord, vérifier /etc/hosts

note: type: lisp
en:                 ;; If the above did not succeed, try
                    ;; with 'mdns_minimal'.
                    (name-service
                      (name "mdns_minimal")
fr:                 ;; Si ce qui précède n'a pas fonctionné, essayer
                    ;; avec « mdns_minimal ».
                    (name-service
                      (name "mdns_minimal")

note: type: lisp
en:                   ;; 'mdns_minimal' is authoritative for
                      ;; '.local'.  When it returns "not found",
                      ;; no need to try the next methods.
                      (reaction (lookup-specification
                                 (not-found => return))))
fr:                   ;; « mdns_minimal » fait autorité pour
                      ;; « .local ».  Lorsqu'il renvoie « pas trouvé »,
                      ;; inutile d'essayer la méthode suivante.
                      (reaction (lookup-specification
                                 (not-found => return))))

note: type: lisp
en:                 ;; Then fall back to DNS.
                    (name-service
                      (name "dns"))
fr:                 ;; Puis revenir sur DNS.
                    (name-service
                      (name "dns"))

note: type: lisp
en:                 ;; Finally, try with the "full" 'mdns'.
                    (name-service
                      (name "mdns")))))
fr:                 ;; Enfin, essayer avec « mdns complet ».
                    (name-service
                      (name "mdns")))))

note: type: Plain text
en: Do not worry: the @code{%mdns-host-lookup-nss} variable (see below)  contains this configuration, so you will not have to type it if all you want is to have @code{.local} host lookup working.
fr: Ne vous inquiétez pas : la variable @code{%mdns-host-lookup-nss} (voir plus bas) contient cette configuration, donc vous n'avez pas besoin de tout taper si vous voulez simplement que la résolution de nom en @code{.local} fonctionne.

note: type: Plain text
en: Note that, in this case, in addition to setting the @code{name-service-switch} of the @code{operating-system} declaration, you also need to use @code{avahi-service-type} (@pxref{Networking Services, @code{avahi-service-type}}), or @code{%desktop-services}, which includes it (@pxref{Desktop Services}).  Doing this makes @code{nss-mdns} accessible to the name service cache daemon (@pxref{Base Services, @code{nscd-service}}).
fr: Remarquez que dans ce cas, en plus de mettre en place le @code{name-service-switch} de la déclaration @code{operating-system}, vous devez aussi utiliser @code{avahi-service-type} (@pxref{Networking Services, @code{avahi-service}}), ou @code{%desktop-services} qui l'inclut (@pxref{Desktop Services}).  Cela rend @code{nss-mdns} accessible au démon de cache du service de nom (@pxref{Base Services, @code{nscd-service}}).

note: type: Plain text
en: For convenience, the following variables provide typical NSS configurations.
fr: Pour votre confort, les variables suivantes contiennent des configurations NSS typiques.

note: type: defvr
en: {Scheme Variable} %default-nss
fr: {Variable Scheme} %default-nss

note: type: defvr
en: This is the default name service switch configuration, a @code{name-service-switch} object.
fr: C'est la configuration NSS par défaut, un objet @code{name-service-switch}.

note: type: defvr
en: {Scheme Variable} %mdns-host-lookup-nss
fr: {Variable Scheme} %mdns-host-lookup-nss

note: type: defvr
en: This is the name service switch configuration with support for host name lookup over multicast DNS (mDNS) for host names ending in @code{.local}.
fr: C'est la configuration NSS avec le support de la résolution de noms sur DNS multicast (mDNS) pour les noms d'hôtes en @code{.local}.

note: type: Plain text
en: The reference for name service switch configuration is given below.  It is a direct mapping of the configuration file format of the C library , so please refer to the C library manual for more information (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference Manual}).  Compared to the configuration file format of libc NSS, it has the advantage not only of adding this warm parenthetic feel that we like, but also static checks: you will know about syntax errors and typos as soon as you run @command{guix system}.
fr: La référence pour la configuration de NSS est donnée ci-dessous.  C'est une correspondance directe avec le format de fichier de la bibliothèque C, donc référez-vous au manuel de la bibliothèque C pour plus d'informations (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference Manual}).  Comparé au format de fichier de configuration de NSS, cette configuration a l'avantage non seulement d'ajouter ces bonnes vieilles parenthèses, mais aussi des vérifications statiques ; vous saurez s'il y a des erreurs de syntaxe et des coquilles dès que vous lancerez @command{guix system}.

note: type: deftp
en: {Data Type} name-service-switch
fr: {Type de données} name-service-switch

note: type: deftp
en: This is the data type representation the configuration of libc's name service switch (NSS).  Each field below represents one of the supported system databases.
fr: C'est le type de données représentant la configuration de NSS.  Chaque champ ci-dessous représente l'un des système de bases de données supportés.

note: type: table
en: The system databases handled by the NSS@.  Each of these fields must be a list of @code{<name-service>} objects (see below).
fr: Les bases de données du système gérées par NSS@.  Chaque champ doit être une liste d'objets @code{<name-service>} (voir plus bas).

note: type: deftp
en: {Data Type} name-service
fr: {Type de données} name-service

note: type: deftp
en: This is the data type representing an actual name service and the associated lookup action.
fr: C'est le type de données représentant un service de noms et l'action de résolution associée.

note: type: table
en: A string denoting the name service (@pxref{Services in the NSS configuration,,, libc, The GNU C Library Reference Manual}).
fr: Une chaîne dénotant le service de nom (@pxref{Services in the NSS configuration,,, libc, The GNU C Library Reference Manual}).

note: type: table
en: Note that name services listed here must be visible to nscd.  This is achieved by passing the @code{#:name-services} argument to @code{nscd-service} the list of packages providing the needed name services (@pxref{Base Services, @code{nscd-service}}).
fr: Remarquez que les services de dnoms listés ici doivent être visibles à nscd.  Cela se fait en passant la liste des paquets fournissant les services de noms à l'argument @code{#:name-services} de @code{nscd-service} (@pxref{Base Services, @code{nscd-service}}).

note: type: table
en: An action specified using the @code{lookup-specification} macro (@pxref{Actions in the NSS configuration,,, libc, The GNU C Library Reference Manual}).  For example:
fr: Une action spécifiée par la macro @code{lookup-specification} (@pxref{Actions in the NSS configuration,,, libc, The GNU C Library Reference Manual}).  Par exemple :

note: type: Plain text
en: For bootstrapping purposes, the Linux-Libre kernel is passed an @dfn{initial RAM disk}, or @dfn{initrd}.  An initrd contains a temporary root file system as well as an initialization script.  The latter is responsible for mounting the real root file system, and for loading any kernel modules that may be needed to achieve that.
fr: Pour le démarrage, on passe au noyau Linux-Libre un @dfn{disque de RAM initial} ou @dfn{initrd}.  Un initrd contient un système de fichier racine temporaire ainsi qu'un script d'initialisation.  Ce dernier est responsable du montage du vrai système de fichier racine et du chargement des modules du noyau qui peuvent être nécessaires à cette tâche.

note: type: Plain text
en: The @code{initrd-modules} field of an @code{operating-system} declaration allows you to specify Linux-libre kernel modules that must be available in the initrd.  In particular, this is where you would list modules needed to actually drive the hard disk where your root partition is---although the default value of @code{initrd-modules} should cover most use cases.  For example, assuming you need the @code{megaraid_sas} module in addition to the default modules to be able to access your root file system, you would write:
fr: Le champ @code{initrd-modules} d'une déclaration @code{operating-system} vous permet de spécifier les modules du noyau Linux-Libre qui doivent être disponibles dans l'initrd.  En particulier, c'est là où vous devez lister les modules requis pour effectivement piloter le disque dur où se trouve la partition racine — bien que la valeur par défaut de @code{initrd-modules} couvre la plupart des cas.  Par exemple, en supposant que vous ayez besoin du module @code{megaraid_sas} en plus des modules par défaut pour accéder à votre système de fichiers racine, vous écririez :

note: type: defvr
en: {Scheme Variable} %base-initrd-modules
fr: {Variable Scheme} %base-initrd-modules

note: type: defvr
en: This is the list of kernel modules included in the initrd by default.
fr: C'est la liste des modules du noyau inclus dans l'initrd par défaut.

note: type: Plain text
en: Furthermore, if you need lower-level customization, the @code{initrd} field of an @code{operating-system} declaration allows you to specify which initrd you would like to use.  The @code{(gnu system linux-initrd)} module provides three ways to build an initrd: the high-level @code{base-initrd} procedure and the low-level @code{raw-initrd} and @code{expression->initrd} procedures.
fr: En plus, si vous avez besoin de paramétrages plus bas niveau, le champ @code{initrd} d'une déclaration @code{operating-system} vous permet de spécifier quel initrd vous voudriez utiliser.  Le module @code{(gnu system linux-initrd)} fournit trois manières de construire un initrd : la procédure @code{base-initrd} de haut niveau et les procédures @code{raw-initrd} et @code{expression->initrd} de bas niveau.

note: type: Plain text
en: The @code{base-initrd} procedure is intended to cover most common uses.  For example, if you want to add a bunch of kernel modules to be loaded at boot time, you can define the @code{initrd} field of the operating system declaration like this:
fr: La procédure @code{base-initrd} est conçue pour couvrir la plupart des usages courants.  Par exemple, si vous voulez ajouter des modules du noyau à charger au démarrage, vous pouvez définir le champ @code{initrd} de votre déclaration de système d'exploitation ainsi :

note: type: lisp
en: (initrd (lambda (file-systems . rest)
              ;; Create a standard initrd but set up networking
              ;; with the parameters QEMU expects by default.
              (apply base-initrd file-systems
                     #:qemu-networking? #t
                     rest)))
fr: (initrd (lambda (file-systems . rest)
              ;; Crée un initrd standard mais paramètre le réseau
              ;; avec les paramètres que QEMU attend par défaut.
              (apply base-initrd file-systems
                     #:qemu-networking? #t
                     rest)))

note: type: Plain text
en: The @code{base-initrd} procedure also handles common use cases that involves using the system as a QEMU guest, or as a ``live'' system with volatile root file system.
fr: La procédure @code{base-initrd} gère aussi les cas d'utilisation courants qui concernent l'utilisation du système comme client QEMU, ou comme un système « live » avec un système de fichier racine volatile.

note: type: Plain text
en: The @code{base-initrd} procedure is built from @code{raw-initrd} procedure.  Unlike @code{base-initrd}, @code{raw-initrd} doesn't do anything high-level, such as trying to guess which kernel modules and packages should be included to the initrd.  An example use of @code{raw-initrd} is when a user has a custom Linux kernel configuration and default kernel modules included by @code{base-initrd} are not available.
fr: La procédure @code{base-initrd} est construite à partir de la procédure @code{raw-initrd}.  Contrairement à @code{base-initrd}, @code{raw-initrd} ne fait rien à haut-niveau, comme essayer de deviner les modules du noyau et les paquets qui devraient être inclus dans l'initrd.  Un exemple d'utilisation de @code{raw-initrd} serait si un utilisateur a une configuration personnalisée du noyau Linux et que les modules du noyau inclus par défaut par @code{base-initrd} ne sont pas disponibles.

note: type: Plain text
en: The initial RAM disk produced by @code{base-initrd} or @code{raw-initrd} honors several options passed on the Linux kernel command line (that is, arguments passed @i{via} the @code{linux} command of GRUB, or the @code{-append} option of QEMU), notably:
fr: Le disque de RAM initial produit par @code{base-initrd} ou @code{raw-initrd} prend en compte plusieurs options passées par la ligne de commande du noyau Linux (c'est-à-dire les arguments passés via la commande @code{linux} de GRUB ou l'option @code{-append} de QEMU), notamment :

note: type: table
en: Tell the initial RAM disk to load @var{boot}, a file containing a Scheme program, once it has mounted the root file system.
fr: Dit au disque de RAM initial de charger @var{boot}, un fichier contenant un programme Scheme, une fois qu'il a monté le système de fichier racine.

note: type: table
en: Guix uses this option to yield control to a boot program that runs the service activation programs and then spawns the GNU@tie{}Shepherd, the initialization system.
fr: Guix utilise cette option pour donner le contrôle à un programme de démarrage qui lance les programmes d'activation de services puis démarre le GNU@tie{}Shepherd, le système d'initialisation.

note: type: table
en: Mount @var{root} as the root file system.  @var{root} can be a device name like @code{/dev/sda1}, a file system label, or a file system UUID.  When unspecified, the device name from the root file system of the operating system declaration is used.
fr: Monte @var{root} comme système de fichier racine.  @var{root} peut être un nom de périphérique comme @code{/dev/sda1}, une étiquette de système de fichiers ou un UUID de système de fichiers.  Lorsque ce n'est pas spécifié, le nom de périphérique du système de fichier racine de la déclaration de système d'exploitation est utilisé.

note: type: table
en: Set the type of the root file system.  It overrides the @code{type} field of the root file system specified via the @code{operating-system} declaration, if any.
fr: Indique le type du système de fichiers racine. Il remplace le champ @code{type} du système de fichiers racine spécifié dans la déclaration @code{operating-system}, s'il existe.

note: type: table
en: Set the mount @emph{options} of the root file system.  It overrides the @code{options} field of the root file system specified via the @code{operating-system} declaration, if any.
fr: Indique les @emph{options} de montage du système de fichiers racine. Elles remplacent le champ @code{options} du système de fichiers racine spécifié dans la déclaration @code{operating-system} s'il existe.

note: type: table
en: Whether to check the @var{root} file system for errors before mounting it.  @var{mode} is one of @code{skip} (never check), @code{force} (always check), or @code{auto} to respect the root @code{<file-system>} object's @code{check?} setting (@pxref{File Systems}) and run a full scan only if the file system was not cleanly shut down.
fr: Contrôle s'il faut vérifier ou pas le système de fichier @var{root} avant de le monter. @var{mode} peut valoir @code{skip} (ne jamais vérifier), @code{force} (toujours vérifier), ou @code{auto} pour respecter le réglage @code{check?} de l'objet @code{<file-system>} pour la racine (@pxref{File Systems}) et n'exécuter une analyse complète que si le système de fichier n'a pas été éteint proprement.

note: type: table
en: @code{auto} is the default if this option is not present or if @var{mode} is not one of the above.
fr: @code{auto} est la valeur par défaut si cette option n'est pas renseignée ou si @var{mode} n'a pas l'une des valeurs ci-dessus.

note: type: item
en: fsck.repair=@var{level}
fr: fsck.repair=@var{niveau}

note: type: table
en: The level of repairs to perform automatically if errors are found in the @var{root} file system.  @var{level} is one of @code{no} (do not write to @var{root} at all if possible), @code{yes} (repair as much as possible), or @code{preen} to repair problems considered safe to repair automatically.
fr: Le niveau de réparation à effectuer automatiquement si des erreurs sont détectées dans le système de fichier @var{root}. @var{level} prend les valeurs @code{no} (ne pas écrire du tout sur @var{root} si possible), @code{yes} (réparer autant que possible), ou @code{preen} pour réparer les problèmes considérés réparables automatiquement sans risque.

note: type: table
en: @code{preen} is the default if this option is not present or if @var{level} is not one of the above.
fr: @code{preen} est la valeur par défaut si cette option n'est pas renseignée ou si @var{level} n'est pas l'une des valeurs ci-dessus.

note: type: item
en: gnu.system=@var{system}
fr: gnu.system=@var{système}

note: type: table
en: Have @file{/run/booted-system} and @file{/run/current-system} point to @var{system}.
fr: S'assure que @file{/run/booted-system} et @file{/run/current-system} pointent vers @var{system}.

note: type: cindex
en: module, black-listing
fr: module, black-list

note: type: cindex
en: black list, of kernel modules
fr: black-list, des modules du noyau

note: type: table
en: Instruct the initial RAM disk as well as the @command{modprobe} command (from the kmod package) to refuse to load @var{modules}.  @var{modules} must be a comma-separated list of module names---e.g., @code{usbkbd,9pnet}.
fr: Dit au disque de RAM initial ainsi qu'à la commande @command{modprobe} (du paquet kmod) de refuser de charger @var{modules}.  @var{modules} doit être une liste de noms de modules séparés par des virgules — p.@: ex.@: @code{usbkbd,9pnet}.

note: type: table
en: Start a read-eval-print loop (REPL) from the initial RAM disk before it tries to load kernel modules and to mount the root file system.  Our marketing team calls it @dfn{boot-to-Guile}.  The Schemer in you will love it.  @xref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}, for more information on Guile's REPL.
fr: Démarre une boucle lecture-évaluation-affichage (REPL) depuis le disque de RAM initial avant qu'il n'essaye de charger les modules du noyau et de monter le système de fichiers racine.  Notre équipe commerciale appelle cela @dfn{boot-to-Guile}.  Le Schemeur en vous va adorer.  @xref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}, pour plus d'information sur le REPL de Guile.

note: type: Plain text
en: Now that you know all the features that initial RAM disks produced by @code{base-initrd} and @code{raw-initrd} provide, here is how to use it and customize it further.
fr: Maintenant que vous connaissez toutes les fonctionnalités des disques de RAM initiaux produits par @code{base-initrd} et @code{raw-initrd}, voici comment l'utiliser le personnalisé plus avant.

note: type: deffn
en: {Scheme Procedure} raw-initrd @var{file-systems} @
fr: {Procédure Scheme} raw-initrd @var{file-systems} @

note: type: deffn
en: [#:linux-modules '()] [#:pre-mount #t] [#:mapped-devices '()] @ [#:keyboard-layout #f] [#:helper-packages '()] @ [#:qemu-networking? #f] [#:volatile-root? #f] Return a derivation that builds a raw initrd.  @var{file-systems} is a list of file systems to be mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via @option{root}.  @var{linux-modules} is a list of kernel modules to be loaded at boot time.  @var{mapped-devices} is a list of device mappings to realize before @var{file-systems} are mounted (@pxref{Mapped Devices}).  @var{pre-mount} is a G-expression to evaluate before realizing @var{mapped-devices}.  @var{helper-packages} is a list of packages to be copied in the initrd.  It may include @code{e2fsck/static} or other packages needed by the initrd to check the root file system.
fr: [#:linux-modules '()] [#:pre-mount #t] [#:mapped-devices '()] @
    [#:keyboard-layout #f] [#:helper-packages '()] @
    [#:qemu-networking? #f] [#:volatile-root? #f]
    Renvoie une dérivation qui construit un initrd.  @var{file-systems} est une liste de systèmes de fichiers à monter par l'initrd, éventuellement en plus du système de fichier racine spécifié sur la ligne de commande du noyau via @option{root}.  @var{linux-modules} est une liste de modules du noyau à charger au démarrage.  @var{mapped-devices} est une liste de correspondances de périphériques à réaliser avant que les @var{file-systems} ne soient montés (@pxref{Mapped Devices}).  @var{helper-packages} est une liste de paquets à copier dans l'initrd.  Elle peut inclure @code{e2fsck/static} ou d'autres paquets requis par l'initrd pour vérifier le système de fichiers racine.

note: type: deffn
en: When true, @var{keyboard-layout} is a @code{<keyboard-layout>} record denoting the desired console keyboard layout.  This is done before @var{mapped-devices} are set up and before @var{file-systems} are mounted such that, should the user need to enter a passphrase or use the REPL, this happens using the intended keyboard layout.
fr: Lorsque la valeur est vraie, @var{keyboard-layout} est un enregistrement @code{<keyboard-layout>} dénotant la disposition du clavier désirée pour la console.  Cela est effectuée avant que les @var{mapped-devices} ne soient créés et avant que les @var{file-systems} ne soient montés, de sorte que, si l'utilisateur au besoin de saisir une phrase de passe ou d'utiliser le REPL, cela arrive avec la disposition du clavier voulue.

note: type: deffn
en: When @var{qemu-networking?} is true, set up networking with the standard QEMU parameters.  When @var{virtio?} is true, load additional modules so that the initrd can be used as a QEMU guest with para-virtualized I/O drivers.
fr: Lorsque @var{qemu-networking?} est vrai, paramètre le réseau avec les paramètres QEMU standards.  Lorsque @var{virtio?} est vrai, charge des modules supplémentaires pour que l'initrd puisse être utilisé comme client QEMU avec les pilotes I/O para-virtualisés.

note: type: deffn
en: When @var{volatile-root?} is true, the root file system is writable but any changes to it are lost.
fr: Lorsque @var{volatile-root?} est vrai, le système de fichier racine est inscriptible mais tous les changements seront perdus.

note: type: deffn
en: {Scheme Procedure} base-initrd @var{file-systems} @
fr: {Procédure Scheme} base-initrd @var{file-systems} @

note: type: deffn
en: [#:mapped-devices '()] [#:keyboard-layout #f] @ [#:qemu-networking? #f] [#:volatile-root? #f] @ [#:linux-modules '()] Return as a file-like object a generic initrd, with kernel modules taken from @var{linux}.  @var{file-systems} is a list of file-systems to be mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via @option{root}.  @var{mapped-devices} is a list of device mappings to realize before @var{file-systems} are mounted.
fr: [#:mapped-devices '()] [#:keyboard-layout #f] @
    [#:qemu-networking? #f] [#:volatile-root? #f] @
    [#:linux-modules '()]
    Renvoie un objet simili-fichier contenant un initrd générique, avec les modules du noyau de @var{linux}.  @var{file-systems} est une liste de systèmes de fichiers à monter par l'initrd, éventuellement en plus du système de fichiers racine spécifié sur la ligne de commande du noyau via @option{root}.  @var{mapped-devices} est une liste de correspondances de périphériques à réaliser avant de monter les @var{file-systems}.

note: type: deffn
en: @var{qemu-networking?} and @var{volatile-root?} behaves as in @code{raw-initrd}.
fr: @var{qemu-networking?} et @var{volatile-root?} se comportent comme pour @code{raw-initrd}.

note: type: deffn
en: The initrd is automatically populated with all the kernel modules necessary for @var{file-systems} and for the given options.  Additional kernel modules can be listed in @var{linux-modules}.  They will be added to the initrd, and loaded at boot time in the order in which they appear.
fr: L'initrd est automatiquement remplie avec tous les modules du noyau requis pour @var{file-systems} et pour les options données.  On peut lister des modules supplémentaires dans @var{linux-modules}.  Ils seront ajoutés à l'initrd et chargés au démarrage dans l'ordre dans lequel ils apparaissent.

note: type: Plain text
en: Needless to say, the initrds we produce and use embed a statically-linked Guile, and the initialization program is a Guile program.  That gives a lot of flexibility.  The @code{expression->initrd} procedure builds such an initrd, given the program to run in that initrd.
fr: Inutile de le dire, les initrds que nous produisons et utilisons incluent une version de Guile liée statiquement, et le programme d'initialisation est un programme Guile.  Cela donne beaucoup de flexibilité.  La procédure @code{expression->initrd} construit un tel initrd, étant donné le programme à lancer dans cet initrd.

note: type: deffn
en: {Scheme Procedure} expression->initrd @var{exp} @
fr: {Procédure Scheme} expression->initrd @var{exp} @

note: type: deffn
en: [#:guile %guile-static-stripped] [#:name "guile-initrd"] Return as a file-like object a Linux initrd (a gzipped cpio archive)  containing @var{guile} and that evaluates @var{exp}, a G-expression, upon booting.  All the derivations referenced by @var{exp} are automatically copied to the initrd.
fr: [#:guile %guile-static-stripped] [#:name "guile-initrd"]
    Renvoie un objet simili-fichier contenant un initrd Linux (une archive cpio compressée avec gzip) contenant @var{guile} et qui évalue @var{exp}, une G-expression, au démarrage.  Toutes les dérivations référencées par @var{exp} sont automatiquement copiées dans l'initrd.

note: type: cindex
en: boot loader
fr: chargeur d'amorçage

note: type: Plain text
en: The operating system supports multiple bootloaders.  The bootloader is configured using @code{bootloader-configuration} declaration.  All the fields of this structure are bootloader agnostic except for one field, @code{bootloader} that indicates the bootloader to be configured and installed.
fr: Le système d'exploitation supporte plusieurs chargeurs d'amorçage.  La configuration du chargeur d'amorçage se fait avec la déclaration @code{bootloader-configuration}.  Tous les champs de cette structure sont indépendants du chargeur d'amorçage sauf un, @code{bootloader} qui indique le chargeur d'amorçage à configurer et à installer.

note: type: Plain text
en: Some of the bootloaders do not honor every field of @code{bootloader-configuration}.  For instance, the extlinux bootloader does not support themes and thus ignores the @code{theme} field.
fr: Certains chargeurs d'amorçage ne prennent pas en compte tous les champs de @code{bootloader-configuration}.  Par exemple, le chargeur d'amorçage extlinux ne supporte pas les thèmes et ignore donc le champ @code{theme}.

note: type: deftp
en: {Data Type} bootloader-configuration
fr: {Type de données} bootloader-configuration

note: type: deftp
en: The type of a bootloader configuration declaration.
fr: Le type d'une déclaration de configuration de chargeur d'amorçage.

note: type: cindex
en: EFI, bootloader
fr: EFI, chargeur d'amorçage

note: type: cindex
en: UEFI, bootloader
fr: UEFI, chargeur d'amorçage

note: type: cindex
en: BIOS, bootloader
fr: BIOS, chargeur d'amorçage

note: type: table
en: The bootloader to use, as a @code{bootloader} object.  For now @code{grub-bootloader}, @code{grub-efi-bootloader}, @code{grub-efi-removable-bootloader}, @code{grub-efi-netboot-bootloader}, @code{grub-efi-netboot-removable-bootloader}, @code{extlinux-bootloader} and @code{u-boot-bootloader} are supported.
fr: Le chargeur d'amorçage à utiliser, en tant qu'objet @code{bootloader}.  Pour l'instant @code{grub-bootloader}, @code{grub-efi-bootloader}, @code{grub-efi-removable-bootloader}, @code{gru-efi-netboot-bootloader}, @code{grub-efi-netboot-removable-bootloader}, @code{extlinux-bootloader} et @code{u-boot-bootloader} sont pris en charge.

note: type: cindex
en: ARM, bootloaders
fr: ARM, chargeurs d'amorçage

note: type: cindex
en: AArch64, bootloaders
fr: AArch64, chargeurs d'amorçage

note: type: table
en: Available bootloaders are described in @code{(gnu bootloader @dots{})} modules.  In particular, @code{(gnu bootloader u-boot)} contains definitions of bootloaders for a wide range of ARM and AArch64 systems, using the @uref{https://www.denx.de/wiki/U-Boot/, U-Boot bootloader}.
fr: Les chargeurs d'amorçage disponibles sont décrits dans les modules @code{(gnu bootloader @dots{})}.  En particulier, @code{(gnu bootloader u-boot)} contient des définitions de chargeurs d'amorçage pour une large gamme de systèmes ARM et AArch, à l'aide du @uref{https://www.denx.de/wiki/U-Boot/, chargeur d'amorçage U-Boot}.

note: type: table
en: @code{grub-bootloader} allows you to boot in particular Intel-based machines in ``legacy'' BIOS mode.
fr: @code{grub-bootloader} vous permet de démarrer en particulier sur des machines Intel en mode BIOS « legacy ».

note: type: table
en: @code{grub-efi-bootloader} allows to boot on modern systems using the @dfn{Unified Extensible Firmware Interface} (UEFI).  This is what you should use if the installation image contains a @file{/sys/firmware/efi} directory when you boot it on your system.
fr: @code{grub-efi-bootloader} permet de démarrer sur un système moderne qui utilise l'UEFI (@dfn{Unified Extensible Firmware Interface}).  C'est ce que vous devriez utiliser si l'image d'installation contient un répertoire @file{/sys/firmware/efi} lorsque vous démarrez dessus sur votre machine.

note: type: table
en: @code{grub-efi-removable-bootloader} allows you to boot your system from removable media by writing the GRUB file to the UEFI-specification location of @file{/EFI/BOOT/BOOTX64.efi} of the boot directory, usually @file{/boot/efi}.  This is also useful for some UEFI firmwares that ``forget'' their configuration from their non-volatile storage. Like @code{grub-efi-bootloader}, this can only be used if the @file{/sys/firmware/efi} directory is available.
fr: @code{grub-efi-removable-bootloader} vous permet de démarrer votre système à partir d'un média amovible en écrivant le fichier GRUB à l'emplacement spécifié par UEFI @file{/EFI/BOOT/BOOTX64.efi} du répertoire de démarrage, typiquement @file{/boot/efi}. C'est aussi utile pour certains micrologiciels UEFI qui « oublient » la configuration de leur stockage non-volatile. Comme pour @code{grub-efi-bootloader}, cela peut aussi être utilisé si le répertoire @file{/sys/firmware/efi} est disponible.

note: type: quotation
en: This @emph{will} overwrite the GRUB file from any other operating systems that also place their GRUB file in the UEFI-specification location; making them unbootable.
fr: Cela @emph{remplacera} le fichier GRUB des autres systèmes d'exploitation qui placent aussi un fichier GRUB dans l'emplacement spécifié par UEFI. Cela les rends impossible à démarrer.

note: type: table
en: @code{grub-efi-netboot-bootloader} allows you to boot your system over network through TFTP@.  In combination with an NFS root file system this allows you to build a diskless Guix system.
fr: @code{grub-efi-netboot-bootloader} vous permet de démarrer votre système via le réseau avec TFTP@.  En plus d'un système de fichier racine NFS, cela vous permet de démarrer un système Guix sans disque.

note: type: table
en: The installation of the @code{grub-efi-netboot-bootloader} generates the content of the TFTP root directory at @code{targets} (@pxref{Bootloader Configuration, @code{targets}}) below the sub-directory @file{efi/Guix}, to be served by a TFTP server.  You may want to mount your TFTP server directories onto the @code{targets} to move the required files to the TFTP server automatically during installation.
fr: L'installation de @code{ggrub-efi-netboot-bootloader} génère le contenu du répertoire racine TFTP sur @code{targets} (@pxref{Bootloader Configuration, @code{targets}}) sous le répertoire @file{efi/Guix}, qui sera servi par un serveur TFTP.  Vous pouvez maintenant monter les répertoires du serveur TFTP directement sur @code{targets} pour déplacer les fichiers requis vers le serveur TFTP automatiquement pendant l'installation.

note: type: table
en: If you plan to use an NFS root file system as well (actually if you mount the store from an NFS share), then the TFTP server needs to serve the file @file{/boot/grub/grub.cfg} and other files from the store (like GRUBs background image, the kernel (@pxref{operating-system Reference, @code{kernel}}) and the initrd (@pxref{operating-system Reference, @code{initrd}})), too.  All these files from the store will be accessed by GRUB through TFTP with their normal store path, for example as @file{tftp://tftp-server/gnu/store/…-initrd/initrd.cpio.gz}.
fr: Si vous voulez aussi utiliser un système de fichier racine NFS (en fait si vous montez le dépôt depuis un partage NFS), alors le serveur TFTP doit aussi servir le fichier @file{/boot/grub/grub.cfg} et d'autres fichiers à partir du dépôt (comme l'image de fond de GRUB, le noyau  (@pxref{operating-system Reference, @code{kernel}}) et l'initrd (@pxref{operating-system Reference, @code{initrd}})).  Tous ces fichiers du dépôt seront accessibles pour GRUB à travers TFTP avec leurs chemins normaux, par exemple @file{tftp://tftp-server/gnu/store/…-initrd/initrd.cpio.gz}.

note: type: table
en: Two symlinks are created to make this possible.  For each target in the @code{targets} field, the first symlink is @samp{target}@file{/efi/Guix/boot/grub/grub.cfg} pointing to @file{../../../boot/grub/grub.cfg}, where @samp{target} may be @file{/boot}.  In this case the link is not leaving the served TFTP root directory, but otherwise it does.  The second link is @samp{target}@file{/gnu/store} and points to @file{../gnu/store}.  This link is leaving the served TFTP root directory.
fr: Deux liens symboliques sont créés pour rendre cela possible.  Pour chaque cible du champ @code{targets}, le premier lien est @samp{target}@file{/efi/Guix/boot/grub/grub.cfg} pointant vers @file{../../../boot/grub/grub.cfg}, où @samp{target} peut être @file{/boot}.  Dans ce cas le lien ne quitte pas le répertoire racine du serveur TFTP.  Le second lien est @samp{target}@file{/gnu/store} qui pointe vers @file{../gnu/store}.  Ce lien est en dehors du répertoire racine du serveur TFTP.

note: type: table
en: The assumption behind all this is that you have an NFS server exporting the root file system for your Guix system, and additionally a TFTP server exporting your @code{targets} directories—usually a single @file{/boot}—from that same root file system for your Guix system.  In this constellation the symlinks will work.
fr: L'hypothèse derrière tout ceci est que vous avez un serveur NFS qui exporte le système de fichiers racine de votre système Guix, et en plus, un serveur TFTP qui exporte vos répertoires @code{targets} — habituellement @file{/boot} uniquement — à partir du même système de fichiers racine que votre système Guix.  Dans ce cas les liens symboliques vont fonctionner.

note: type: table
en: For other constellations you will have to program your own bootloader installer, which then takes care to make necessary files from the store accessible through TFTP, for example by copying them into the TFTP root directory for your @code{targets}.
fr: Pour d'autres cas vous devrez programmer votre propre installateur de chargeur d'amorçage qui rende les fichiers nécessaires du dépôt disponibles à travers TFTP, par exemple en les copiant vers la racine du répertoire de TFTP pour vos @code{targets}.

note: type: table
en: It is important to note that symlinks pointing outside the TFTP root directory may need to be allowed in the configuration of your TFTP server.  Further the store link exposes the whole store through TFTP@.  Both points need to be considered carefully for security aspects.  It is advised to disable any TFTP write access!
fr: Il est important de remarquer que les liens symboliques pointant hors du répertoire racine de TFTP peuvent ne pas être permis par dans configuration de votre serveur TFTP@.  De plus le lien vers le dépôt expose la totalité de celui-ci à travers TFTP.  Ces deux points sont à prendre en compte pour les aspects de sécurité !

note: type: table
en: Please note, that this bootloader will not modify the ‘UEFI Boot Manager’ of the system.
fr: Remarquez que ce chargeur d'amorçage ne modifiera pas le « gestionnaire de démarrage UEFI » du système.

note: type: table
en: Beside the @code{grub-efi-netboot-bootloader}, the already mentioned TFTP and NFS servers, you also need a properly configured DHCP server to make the booting over netboot possible.  For all this we can currently only recommend you to look for instructions about @acronym{PXE, Preboot eXecution Environment}.
fr: En dehors de @code{grub-efi-netboot-bootloader}, des serveurs TFTP et NFS déjà mentionnés, vous pouvez utiliser un serveur DHCP correctement configuré pour permettre le démarrage réseau.  Pour cela nous ne pouvons que vous recommander de regarder les instructions sur @acronym{PXE, Preboot eXecution Environment}.

note: type: table
en: If a local EFI System Partition (ESP) or a similar partition with a FAT file system is mounted in @code{targets}, then symlinks cannot be created.  In this case everything will be prepared for booting from local storage, matching the behavior of @code{grub-efi-bootloader}, with the difference that all GRUB binaries are copied to @code{targets}, necessary for booting over the network.
fr: Si une partition système EFI (ESP) ou une partition similaire avec un système de fichiers FAT est montée dans @code{targets}, alors le liens symboliques ne peuvent pas être créés. Dans ce cas tout sera préparé pour le démarrage à partir du stockage local, de la même manière que @code{grub-efi-bootloader}, à la différence que tous les binaires GRUB sont copiés dans @code{targets}, ce qui est nécessaire pour démarrer depuis le réseau.

note: type: vindex
en: grub-efi-netboot-removable-bootloader
fr: grub-efi-netboot-emovable-bootloader

note: type: table
en: @code{grub-efi-netboot-removable-bootloader} is identical to @code{grub-efi-netboot-bootloader} with the exception that the sub-directory @file{efi/boot} will be used instead of @file{efi/Guix} to comply with the UEFI specification for removable media.
fr: @code{grub-efi-netboot-removable-bootloader} est identique à @code{grub-efi-netboot-bootloader} en dehors du fait que le sous-répertoire @file{efi/boot} sera utilisé au lieu de @file{efi/Guix} pour se conformer aux spécifications UEFI pour les média amovibles.

note: type: table
en: This is a list of strings denoting the targets onto which to install the bootloader.
fr: C'est une liste de chaînes qui dénotent les cibles sur lesquelles installer le chargeur d'amorçage.

note: type: table
en: The interpretation of targets depends on the bootloader in question.  For @code{grub-bootloader}, for example, they should be device names understood by the bootloader @command{installer} command, such as @code{/dev/sda} or @code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU GRUB Manual}).  For @code{grub-efi-bootloader} and @code{grub-efi-removable-bootloader} they should be mount points of the EFI file system, usually @file{/boot/efi}.  For @code{grub-efi-netboot-bootloader}, @code{targets} should be the mount points corresponding to TFTP root directories served by your TFTP server.
fr: L'interprétation des cibles dépend du chargeur d'amorçage en question.  Pour @code{grub-bootloader} par exemple, cela devrait être le nom des périphériques compris par la commande @command{installer} du chargeur d'amorçage, comme @code{/dev/sda} ou @code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU GRUB Manual}).  Pour @code{grub-efi-bootloader} et @code{grub-efi-removable-bootloader}, cela devrait être les points de montage des systèmes de fichiers EFI, typiquement @file{/boot/efi}.  Pour @code{grub-efi-netboot-bootloader}, @code{targets} doit contenir les points de montage correspondant aux répertoires racines de TFTP sur votre serveur TFTP.

note: type: item
en: @code{menu-entries} (default: @code{()})
fr: @code{menu-entries} (par défaut : @code{()})

note: type: table
en: A possibly empty list of @code{menu-entry} objects (see below), denoting entries to appear in the bootloader menu, in addition to the current system entry and the entry pointing to previous system generations.
fr: Une liste éventuellement vide d'objets @code{menu-entry} (voir plus bas), dénotant les entrées qui doivent apparaître dans le menu du chargeur d'amorçage, en plus de l'entrée pour le système actuel et l'entrée pointant vers les générations précédentes.

note: type: item
en: @code{default-entry} (default: @code{0})
fr: @code{default-entry} (par défaut : @code{0})

note: type: table
en: The index of the default boot menu entry.  Index 0 is for the entry of the current system.
fr: L'index de l'entrée du menu de démarrage par défaut.  L'index 0 correspond au système actuel.

note: type: item
en: @code{timeout} (default: @code{5})
fr: @code{timeout} (par défaut : @code{5})

note: type: table
en: The number of seconds to wait for keyboard input before booting.  Set to 0 to boot immediately, and to -1 to wait indefinitely.
fr: Le nombre de secondes à attendre une entrée clavier avant de démarrer.  Indiquez 0 pour démarre immédiatement, et -1 pour attendre indéfiniment.

note: type: cindex
en: keyboard layout, for the bootloader
fr: disposition du clavier, pour le chargeur d'amorçage

note: type: table
en: If this is @code{#f}, the bootloader's menu (if any) uses the default keyboard layout, usually US@tie{}English (``qwerty'').
fr: Si c'est @code{#f}, le menu du chargeur d'amorçage (s'il y en a un) utilise la disposition du clavier par défaut, normalement pour l'anglais américain (« qwerty »).

note: type: table
en: Otherwise, this must be a @code{keyboard-layout} object (@pxref{Keyboard Layout}).
fr: Sinon, cela doit être un objet @code{keyboard-layout} (@pxref{Keyboard Layout}).

note: type: quotation
en: This option is currently ignored by bootloaders other than @code{grub} and @code{grub-efi}.
fr: Cette option est actuellement ignorée par les chargeurs d'amorçage autre que @code{grub} et @code{grub-efi}.

note: type: item
en: @code{theme} (default: @var{#f})
fr: @code{theme} (par défaut : @var{#f})

note: type: table
en: The bootloader theme object describing the theme to use.  If no theme is provided, some bootloaders might use a default theme, that's true for GRUB.
fr: L'objet de thème du chargeur d'amorçage décrivant le thème utilisé.  Si aucun thème n'est fournit, certains chargeurs d'amorçage peuvent utiliser un thème par défaut, c'est le cas de GRUB.

note: type: item
en: @code{terminal-outputs} (default: @code{'(gfxterm)})
fr: @code{terminal-outputs} (par défaut : @code{'(gfxterm)})

note: type: table
en: The output terminals used for the bootloader boot menu, as a list of symbols.  GRUB accepts the values: @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{gfxterm}, @code{vga_text}, @code{mda_text}, @code{morse}, and @code{pkmodem}.  This field corresponds to the GRUB variable @code{GRUB_TERMINAL_OUTPUT} (@pxref{Simple configuration,,, grub,GNU GRUB manual}).
fr: Les terminaux de sortie utilisés par le menu de démarrage du chargeur d'amorçage, en tant que liste de symboles.  GRUB accepte les valeurs @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{gfxterm}, @code{vga_text}, @code{mda_text}, @code{morse} et @code{pkmodem}.  Ce champ correspond à la variable GRUB @code{GRUB_TERMINAL_OUTPUT} (@pxref{Simple configuration,,, grub,GNU GRUB manual}).

note: type: item
en: @code{terminal-inputs} (default: @code{'()})
fr: @code{terminal-inputs} (par défaut : @code{'()})

note: type: table
en: The input terminals used for the bootloader boot menu, as a list of symbols.  For GRUB, the default is the native platform terminal as determined at run-time.  GRUB accepts the values: @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{at_keyboard}, and @code{usb_keyboard}.  This field corresponds to the GRUB variable @code{GRUB_TERMINAL_INPUT} (@pxref{Simple configuration,,, grub,GNU GRUB manual}).
fr: Les terminaux d'entrée utilisés par le menu de démarrage du chargeur d'amorçage, en tant que liste de symboles.  Pour GRUB, la valeur par défaut est le terminal natif de la plate-forme déterminé à l'exécution.  GRUB accepte les valeurs @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{at_keyboard} et @code{usb_keyboard}.  Ce champ correspond à la variable GRUB @code{GRUB_TERMINAL_INPUT} (@pxref{Simple configuration,,, grub,GNU GRUB manual}).

note: type: item
en: @code{serial-unit} (default: @code{#f})
fr: @code{serial-unit} (par défaut : @code{#f})

note: type: table
en: The serial unit used by the bootloader, as an integer from 0 to 3.  For GRUB, it is chosen at run-time; currently GRUB chooses 0, which corresponds to COM1 (@pxref{Serial terminal,,, grub,GNU GRUB manual}).
fr: L'unitié série utilisée par le chargeur d'amorçage, en tant qu'entier entre 0 et 3.  Pour GRUB, il est choisi à l'exécution ; actuellement GRUB choisi 0, ce qui correspond à COM1 (@pxref{Serial terminal,,, grub,GNU GRUB manual}).

note: type: item
en: @code{serial-speed} (default: @code{#f})
fr: @code{serial-speed} (par défaut : @code{#f})

note: type: table
en: The speed of the serial interface, as an integer.  For GRUB, the default value is chosen at run-time; currently GRUB chooses 9600@tie{}bps (@pxref{Serial terminal,,, grub,GNU GRUB manual}).
fr: La vitesse de l'interface série, en tant qu'entier.  Pour GRUB, la valeur par défaut est choisie à l'exécution ; actuellement GRUB choisi 9600@tie{}bps (@pxref{Serial terminal,,, grub,GNU GRUB manual}).

note: type: item
en: @code{device-tree-support?} (default: @code{#t})
fr: @code{device-tree-support?} (par défaut : @code{#t})

note: type: table
en: Whether to support Linux @uref{https://en.wikipedia.org/wiki/Devicetree, device tree} files loading.
fr: Indique s'il faut prendre en charge le chargement des fichiers @uref{https://en.wikipedia.org/wiki/Devicetree, device tree} de Linux.

note: type: table
en: This option in enabled by default.  In some cases involving the @code{u-boot} bootloader, where the device tree has already been loaded in RAM, it can be handy to disable the option by setting it to @code{#f}.
fr: Cette option est activée par défaut. Dans certains cas qui impliquent le chargeur d'amorçage @code{u-boot}, où l'arborescence de l'appareil est déjà chargée en RAM, il peut être pratique de désactiver cette option en indiquant @code{#f}.

note: type: cindex
en: boot menu
fr: menu de démarrage

note: type: Plain text
en: Should you want to list additional boot menu entries @i{via} the @code{menu-entries} field above, you will need to create them with the @code{menu-entry} form.  For example, imagine you want to be able to boot another distro (hard to imagine!), you can define a menu entry along these lines:
fr: Si vous voulez lister des entrées du menu de démarrage supplémentaires via le champ @code{menu-entries} ci-dessus, vous devrez les créer avec la forme @code{menu-entry}.  Par exemple, imaginons que vous souhaitiez pouvoir démarrer sur une autre distro (c'est difficile à concevoir !), vous pourriez alors définir une entrée du menu comme ceci :

note: type: lisp
en: (menu-entry
      (label "The Other Distro")
      (linux "/boot/old/vmlinux-2.6.32")
      (linux-arguments '("root=/dev/sda2"))
      (initrd "/boot/old/initrd"))
fr: (menu-entry
      (label "L'autre distro")
      (linux "/boot/old/vmlinux-2.6.32")
      (linux-arguments '("root=/dev/sda2"))
      (initrd "/boot/old/initrd"))

note: type: Plain text
en: Details below.
fr: Les détails suivent.

note: type: deftp
en: {Data Type} menu-entry
fr: {Type de données} menu-entry

note: type: deftp
en: The type of an entry in the bootloader menu.
fr: Le type d'une entrée dans le menu du chargeur d'amorçage.

note: type: table
en: The label to show in the menu---e.g., @code{"GNU"}.
fr: L'étiquette à montrer dans le menu — p.@: ex.@: @code{"GNU"}.

note: type: item
en: @code{linux} (default: @code{#f})
fr: @code{linux} (par défaut : @code{#f})

note: type: table
en: The Linux kernel image to boot, for example:
fr: L'image du noyau Linux à démarrer, par exemple :

note: type: table
en: For GRUB, it is also possible to specify a device explicitly in the file path using GRUB's device naming convention (@pxref{Naming convention,,, grub, GNU GRUB manual}), for example:
fr: Pour GRUB, il est aussi possible de spécifier un périphérique explicitement dans le chemin de fichier avec la convention de nommage de GRUB (@pxref{Naming convention,,, grub, GNU GRUB manual}), par exemple :

note: type: table
en: If the device is specified explicitly as above, then the @code{device} field is ignored entirely.
fr: Si le périphérique est spécifié explicitement comme au-dessus, le champ @code{device} est complètement ignoré.

note: type: item
en: @code{linux-arguments} (default: @code{()})
fr: @code{linux-arguments} (par défaut : @code{()})

note: type: table
en: The list of extra Linux kernel command-line arguments---e.g., @code{("console=ttyS0")}.
fr: La liste des arguments de la ligne de commande du noyau supplémentaires — p.@: ex.@: @code{("console=ttyS0")}.

note: type: item
en: @code{initrd} (default: @code{#f})
fr: @code{initrd} (par défaut : @code{#f})

note: type: table
en: A G-Expression or string denoting the file name of the initial RAM disk to use (@pxref{G-Expressions}).
fr: Une G-expression ou une chaîne dénotant le nom de fichier du disque de RAM initial à utiliser (@pxref{G-Expressions}).

note: type: table
en: The device where the kernel and initrd are to be found---i.e., for GRUB, @dfn{root} for this menu entry (@pxref{root,,, grub, GNU GRUB manual}).
fr: Le périphérique où le noyau et l'initrd se trouvent — c.-à-d.@: pour GRUB, l'option @dfn{root} de cette entrée de menu (@pxref{root,,, grub, GNU GRUB manual}).

note: type: table
en: This may be a file system label (a string), a file system UUID (a bytevector, @pxref{File Systems}), or @code{#f}, in which case the bootloader will search the device containing the file specified by the @code{linux} field (@pxref{search,,, grub, GNU GRUB manual}).  It must @emph{not} be an OS device name such as @file{/dev/sda1}.
fr: Cela peut être une étiquette de système de fichiers (une chaîne), un UUID de système de fichiers (un vecteur d'octets, @pxref{File Systems}) ou @code{#f}, auquel cas le chargeur d'amorçage recherchera le périphérique contenant le fichier spécifié par le champ @code{linux} (@pxref{search,,, grub, GNU GRUB manual}).  Cela ne doit @emph{pas} être un nom de périphérique donné par l'OS comme @file{/dev/sda1}.

note: type: item
en: @code{multiboot-kernel} (default: @code{#f})
fr: @code{multiboot-kernel} (par défaut : @code{#f})

note: type: table
en: The kernel to boot in Multiboot-mode (@pxref{multiboot,,, grub, GNU GRUB manual}).  When this field is set, a Multiboot menu-entry is generated.  For example:
fr: Le noyau à démarrer en mode Multiboot (@pxref{multiboot,,, grub, GNU GRUB manual}).  Lorsque ce champ est spécifié, une entrée de menu Multiboot est générée.  Par exemple :

note: type: item
en: @code{multiboot-arguments} (default: @code{()})
fr: @code{multiboot-arguments} (par défaut : @code{()})

note: type: table
en: The list of extra command-line arguments for the multiboot-kernel.
fr: Liste d'arguments de la ligne de commande supplémentaires pour le multiboot-kernel.

note: type: item
en: @code{multiboot-modules} (default: @code{()})
fr: @code{multiboot-modules} (par défaut : @code{()})

note: type: table
en: The list of commands for loading Multiboot modules.  For example:
fr: Liste de commandes pour charger les modules Multiboot.  Par exemple :

note: type: item
en: @code{chain-loader} (default: @code{#f})
fr: @code{chain-loader} (par défaut : @code{#f})

note: type: table
en: A string that can be accepted by @code{grub}'s @code{chainloader} directive. This has no effect if either @code{linux} or @code{multiboot-kernel} fields are specified. The following is an example of chainloading a different GNU/Linux system.
fr: Une chaine qui peut être acceptée par la directive @code{chainloader} de @code{grub}. Cela n'a aucun effet si le champ @code{linux} ou @code{multiboot-kernel} est renseigné. Voici un exemple de chargement chainé d'un autre système GNU/Linux.

note: type: Plain text
en: For now only GRUB has theme support.  GRUB themes are created using the @code{grub-theme} form, which is not fully documented yet.
fr: Pour l'instant seul GRUB prend en charge les thèmes.  On crée un thème GRUB avec la forme @code{grub-theme}, qui n'est pas encore complètement documentée.

note: type: deftp
en: {Data Type} grub-theme
fr: {Type de données} grub-theme

note: type: deftp
en: Data type representing the configuration of the GRUB theme.
fr: Type de données représentant la configuration du thème GRUB.

note: type: item
en: @code{gfxmode} (default: @code{'("auto")})
fr: @code{gfxmode} (par défaut : @code{'("auto")})

note: type: table
en: The GRUB @code{gfxmode} to set (a list of screen resolution strings, @pxref{gfxmode,,, grub, GNU GRUB manual}).
fr: Le @code{gfxmode} de GRUB à utiliser (une liste de chaines de résolution d'écran, @pxref{gfxmode,,, grub, GNU GRUB manual}).

note: type: deffn
en: {Scheme Procedure} grub-theme
fr: {Procédure Scheme} grub-theme

note: type: deffn
en: Return the default GRUB theme used by the operating system if no @code{theme} field is specified in @code{bootloader-configuration} record.
fr: Renvoie le thème par défaut de GRUB utilisé par le système d'exploitation si aucun champ @code{theme} n'est spécifié dans l'enregistrement @code{bootloader-configuration}.

note: type: deffn
en: It comes with a fancy background image displaying the GNU and Guix logos.
fr: Il contient une image de fond sympathique avec les logos de GNU et de Guix.

note: type: Plain text
en: For example, to override the default resolution, you may use something like
fr: Par exemple, pour changer la résolution par défaut, vous pouvez utiliser quelque chose comme

note: type: section
en: Invoking @command{guix system}
fr: Invoquer @command{guix system}

note: type: Plain text
en: Once you have written an operating system declaration as seen in the previous section, it can be @dfn{instantiated} using the @command{guix system} command.  The synopsis is:
fr: Une fois que vous avez écrit une déclaration de système d'exploitation comme nous l'avons vu dans les sections précédentes, elle peut être instanciée avec la commande @command{guix system}.  Voici le résumé de la commande :

note: type: Plain text
en: @var{file} must be the name of a file containing an @code{operating-system} declaration.  @var{action} specifies how the operating system is instantiated.  Currently the following values are supported:
fr: @var{file} doit être le nom d'un fichier contenant une déclaration @code{operating-system}.  @var{action} spécifie comment le système d'exploitation est instancié.  Actuellement les valeurs suivantes sont supportées :

note: type: table
en: Display available service type definitions that match the given regular expressions, sorted by relevance:
fr: Affiche les définitions des types de services disponibles qui correspondent aux expressions régulières données, triées par pertinence :

note: type: table
en: As for @command{guix package --search}, the result is written in @code{recutils} format, which makes it easy to filter the output (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual}).
fr: Comme pour @command{guix package --search}, le résultat est écrit au format @code{recutils}, ce qui rend facile le filtrage de la sortie (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual}).

note: type: cindex
en: service type definition, editing
fr: définition des types de service, modification

note: type: cindex
en: editing, service type definition
fr: modifications, des définitions de services

note: type: table
en: Edit or view the definition of the given service types.
fr: Modifier ou visualiser la définition d'un type de service donné.

note: type: table
en: For example, the command below opens your editor, as specified by the @env{EDITOR} environment variable, on the definition of the @code{openssh} service type:
fr: Par exemple, la commande plus bas ouvre votre éditeur, spécifié par la variable d'environnement @env{EDITOR}, sur la définition du type de service @code{openssh} :

note: type: table
en: Build the operating system described in @var{file}, activate it, and switch to it@footnote{This action (and the related actions @code{switch-generation} and @code{roll-back}) are usable only on systems already running Guix System.}.
fr: Construit le système d'exploitation décrit dans @var{file}, l'active et passe dessus@footnote{Cette action (et les action liées que sont @code{switch-generation} et @code{roll-back}) ne sont utilisables que sur les systèmes sous Guix System.}.

note: type: quotation
en: It is highly recommended to run @command{guix pull} once before you run @command{guix system reconfigure} for the first time (@pxref{Invoking guix pull}).  Failing to do that you would see an older version of Guix once @command{reconfigure} has completed.
fr: Il est grandement recommandé de lancer @command{guix pull} une fois avant de lancer @command{guix system reconfigure} pour la première fois (@pxref{Invoking guix pull}).  Sans cela, vous verriez une version plus ancienne de Guix une fois @command{reconfigure} terminé.

note: type: table
en: This effects all the configuration specified in @var{file}: user accounts, system services, global package list, setuid programs, etc.  The command starts system services specified in @var{file} that are not currently running; if a service is currently running this command will arrange for it to be upgraded the next time it is stopped (e.g.@: by @code{herd stop X} or @code{herd restart X}).
fr: Cela met en application toute la configuration spécifiée dans @var{file} : les comptes utilisateurs, les services du système, la liste globale des paquets, les programmes setuid, etc.  La commande démarre les services systèmes spécifiés dans @var{file} qui ne sont pas actuellement lancés ; si un service est actuellement exécuté cette commande s'arrange pour qu'il soit mis à jour la prochaine fois qu'il est stoppé (p.@: ex@: par @code{herd stop X} ou @code{herd restart X}).

note: type: table
en: This command creates a new generation whose number is one greater than the current generation (as reported by @command{guix system list-generations}).  If that generation already exists, it will be overwritten.  This behavior mirrors that of @command{guix package} (@pxref{Invoking guix package}).
fr: Cette commande crée une nouvelle génération dont le numéro est un de plus que la génération actuelle (rapportée par @command{guix system list-generations}).  Si cette génération existe déjà, elle sera réécrite.  Ce comportement correspond à celui de @command{guix package} (@pxref{Invoking guix package}).

note: type: table
en: It also adds a bootloader menu entry for the new OS configuration, ---unless @option{--no-bootloader} is passed.  For GRUB, it moves entries for older configurations to a submenu, allowing you to choose an older system generation at boot time should you need it.
fr: Elle ajoute aussi une entrée de menu du chargeur d'amorçage pour la nouvelle configuration, à moins que @option{--no-bootloader} ne soit passé.  Pour GRUB, elle déplace les entrées pour les anciennes configurations dans un sous-menu, ce qui vous permet de choisir une ancienne génération au démarrage si vous en avez besoin.

note: type: cindex
en: provenance tracking, of the operating system
fr: suivi de provenance, pour le système d'exploitation

note: type: table
en: Upon completion, the new system is deployed under @file{/run/current-system}.  This directory contains @dfn{provenance meta-data}: the list of channels in use (@pxref{Channels}) and @var{file} itself, when available.  You can view it by running:
fr: À la fin, le nouveau système d'exploitation est déployé dans @file{/run/current-system}.  Ce répertoire contient les @dfn{métadonnées de provenance} : la liste des canaux utilisés (@pxref{Channels}) et @var{fichier} lui-même, s'il est disponible.  Vous pouvez les voir avec :

note: type: table
en: This information is useful should you later want to inspect how this particular generation was built.  In fact, assuming @var{file} is self-contained, you can later rebuild generation @var{n} of your operating system with:
fr: Cette information est utile si vous voulez plus tard inspecter comment une génération particulière a été construite.  En fait, en supposant que @var{file} est auto-contenu, vous pouvez reconstruire la génération @var{n} de votre système d'exploitation avec :

note: type: table
en: You can think of it as some sort of built-in version control! Your system is not just a binary artifact: @emph{it carries its own source}.  @xref{Service Reference, @code{provenance-service-type}}, for more information on provenance tracking.
fr: Vous pouvez considérer cela comme une sorte de contrôle de version intégré !  Votre système n'est pas seulement un artéfact binaire : @emph{il contient ses propres sources}.  @xref{Service Reference, @code{provenance-service-type}}, pour plus d'informations sur le suivi de provenance.

note: type: table
en: By default, @command{reconfigure} @emph{prevents you from downgrading your system}, which could (re)introduce security vulnerabilities and also cause problems with ``stateful'' services such as database management systems.  You can override that behavior by passing @option{--allow-downgrades}.
fr: Par défaut, @command{reconfigure} @emph{vous empêche de faire revenir en arrière votre système}, ce qui pourrait (ré)introduire des vulnérabilités de sécurité et cause des problèmes avec les services « avec état » comme les systèmes de gestion de bases de données.  Vous pouvez contrôler ce comportement en passant @option{--allow-downgrades}.

note: type: table
en: Switch to an existing system generation.  This action atomically switches the system profile to the specified system generation.  It also rearranges the system's existing bootloader menu entries.  It makes the menu entry for the specified system generation the default, and it moves the entries for the other generations to a submenu, if supported by the bootloader being used.  The next time the system boots, it will use the specified system generation.
fr: Passe à une génération existante du système.  Cette action change automatiquement le profil système vers la génération spécifiée.  Elle réarrange aussi les entrées existantes du menu du chargeur d'amorçage du système.  Elle fait de l'entrée du menu pour la génération spécifiée l'entrée par défaut et déplace les entrées pour les autres générations dans un sous-menu, si cela est pris en charge par le chargeur d'amorçage utilisé.  Lors du prochain démarrage du système, la génération du système spécifiée sera utilisée.

note: type: table
en: The bootloader itself is not being reinstalled when using this command.  Thus, the installed bootloader is used with an updated configuration file.
fr: Le chargeur d'amorçage lui-même n'est pas réinstallé avec cette commande.  Ainsi, le chargeur d'amorçage est utilisé avec un fichier de configuration plus à jour.

note: type: table
en: The target generation can be specified explicitly by its generation number.  For example, the following invocation would switch to system generation 7:
fr: La génération cible peut être spécifiée explicitement par son numéro de génération.  Par exemple, l'invocation suivante passerait à la génération 7 du système :

note: type: table
en: The target generation can also be specified relative to the current generation with the form @code{+N} or @code{-N}, where @code{+3} means ``3 generations ahead of the current generation,'' and @code{-1} means ``1 generation prior to the current generation.'' When specifying a negative value such as @code{-1}, you must precede it with @code{--} to prevent it from being parsed as an option.  For example:
fr: La génération cible peut aussi être spécifiée relativement à la génération actuelle avec la forme @code{+N} ou @code{-N}, où @code{+3} signifie « trois générations après la génération actuelle » et @code{-1} signifie « une génération précédent la génération actuelle ».  Lorsque vous spécifiez un nombre négatif comme @code{-1}, il doit être précédé de @code{--} pour éviter qu'il ne soit compris comme une option.  Par exemple :

note: type: table
en: Currently, the effect of invoking this action is @emph{only} to switch the system profile to an existing generation and rearrange the bootloader menu entries.  To actually start using the target system generation, you must reboot after running this action.  In the future, it will be updated to do the same things as @command{reconfigure}, like activating and deactivating services.
fr: Actuellement, l'effet de l'invocation de cette action est @emph{uniquement} de passer au profil du système vers une autre génération existante et de réarranger le menu du chargeur d'amorçage. Pour vraiment commencer à utiliser la génération spécifiée, vous devez redémarrer après avoir lancé cette action.  Dans le futur, elle sera corrigée pour faire la même chose que @command{reconfigure}, comme réactiver et désactiver les services.

note: type: table
en: This action will fail if the specified generation does not exist.
fr: Cette action échouera si la génération spécifiée n'existe pas.

note: type: table
en: Switch to the preceding system generation.  The next time the system boots, it will use the preceding system generation.  This is the inverse of @command{reconfigure}, and it is exactly the same as invoking @command{switch-generation} with an argument of @code{-1}.
fr: Passe à la génération précédente du système.  Au prochain démarrage, la génération précédente sera utilisée.  C'est le contraire de @command{reconfigure}, et c'est exactement comme invoquer @command{switch-generation} avec pour argument @code{-1}.

note: type: table
en: Currently, as with @command{switch-generation}, you must reboot after running this action to actually start using the preceding system generation.
fr: Actuellement, comme pour @command{switch-generation}, vous devez redémarrer après avoir lancé cette action pour vraiment démarrer sur la génération précédente du système.

note: type: cindex
en: deleting system generations
fr: supprimer des générations du système

note: type: cindex
en: saving space
fr: gagner de la place

note: type: table
en: Delete system generations, making them candidates for garbage collection (@pxref{Invoking guix gc}, for information on how to run the ``garbage collector'').
fr: Supprimer des générations du système, ce qui les rend disponibles pour le ramasse-miettes (@pxref{Invoking guix gc}, pour des informations sur la manière de lancer le « ramasse-miettes »).

note: type: table
en: This works in the same way as @samp{guix package --delete-generations} (@pxref{Invoking guix package, @option{--delete-generations}}).  With no arguments, all system generations but the current one are deleted:
fr: Cela fonctionne comme pour @samp{guix package --delete-generations} (@pxref{Invoking guix package, @code{--delete-generations}}).  Avec aucun argument, toutes les générations du système sauf la génération actuelle sont supprimées :

note: type: table
en: You can also select the generations you want to delete.  The example below deletes all the system generations that are more than two months old:
fr: Vous pouvez aussi choisir les générations que vous voulez supprimer.  L'exemple plus bas supprime toutes les génération du système plus vieilles que deux mois :

note: type: table
en: Running this command automatically reinstalls the bootloader with an updated list of menu entries---e.g., the ``old generations'' sub-menu in GRUB no longer lists the generations that have been deleted.
fr: Lancer cette commande réinstalle automatiquement le chargeur d'amorçage avec une liste à jour d'entrées de menu — p.@: ex.@: le sous-menu « anciennes générations » dans GRUB ne liste plus les générations qui ont été supprimées.

note: type: table
en: Build the derivation of the operating system, which includes all the configuration files and programs needed to boot and run the system.  This action does not actually install anything.
fr: Construit la dérivation du système d'exploitation, ce qui comprend tous les fichiers de configuration et les programmes requis pour démarrer et lancer le système.  Cette action n'installe rien.

note: type: table
en: Populate the given directory with all the files necessary to run the operating system specified in @var{file}.  This is useful for first-time installations of Guix System.  For instance:
fr: Rempli le répertoire donné avec tous les fichiers nécessaires à lancer le système d'exploitation spécifié dans @var{file}.  C'est utile pour la première installation de Guix System.  Par exemple :

note: type: table
en: copies to @file{/mnt} all the store items required by the configuration specified in @file{my-os-config.scm}.  This includes configuration files, packages, and so on.  It also creates other essential files needed for the system to operate correctly---e.g., the @file{/etc}, @file{/var}, and @file{/run} directories, and the @file{/bin/sh} file.
fr: copie tous les éléments du dépôt requis par la configuration spécifiée dans @file{my-os-config.scm} dans @file{/mnt}.  Cela comprend les fichiers de configuration, les paquets, etc.  Elle crée aussi d'autres fichiers essentiels requis pour que le système fonctionne correctement — p.@: ex.@: les répertoires @file{/etc}, @file{/var} et @file{/run} et le fichier @file{/bin/sh}.

note: type: table
en: This command also installs bootloader on the targets specified in @file{my-os-config}, unless the @option{--no-bootloader} option was passed.
fr: Cette commande installe aussi le chargeur d'amorçage sur les cibles spécifiées dans @file{my-os-config}, à moins que l'option @option{--no-bootloader} ne soit passée.

note: type: cindex
en: virtual machine
fr: machine virtuelle

note: type: table
en: Build a virtual machine (VM) that contains the operating system declared in @var{file}, and return a script to run that VM.
fr: Construit une machine virtuelle (VM) qui contient le système d'exploitation déclaré dans @var{file} et renvoie un script pour lancer cette VM.

note: type: quotation
en: The @code{vm} action and others below can use KVM support in the Linux-libre kernel.  Specifically, if the machine has hardware virtualization support, the corresponding KVM kernel module should be loaded, and the @file{/dev/kvm} device node must exist and be readable and writable by the user and by the build users of the daemon (@pxref{Build Environment Setup}).
fr: Les actions @code{vm} et les autres plus bas peuvent utiliser la prise en charge KVM du noyau Linux-libre.  Plus spécifiquement, si la machine prend en charge la virtualisation matérielle, le module noyau KVM correspondant devrait être chargé, et le nœud de périphérique @file{/dev/kvm} devrait exister et être lisible et inscriptible pour l'utilisateur et pour les utilisateurs de construction du démon (@pxref{Build Environment Setup}).

note: type: table
en: Arguments given to the script are passed to QEMU as in the example below, which enables networking and requests 1@tie{}GiB of RAM for the emulated machine:
fr: Les arguments passés au script sont passés à QEMU comme dans l'exemple ci-dessous, qui active le réseau et demande 1@tie{}Go de RAM pour la machine émulée :

note: type: table
en: It's possible to combine the two steps into one:
fr: Il est possible de combiner les deux étapes en une :

note: type: table
en: The VM shares its store with the host system.
fr: La VM partage sont dépôt avec le système hôte.

note: type: table
en: By default, the root file system of the VM is mounted volatile; the @option{--persistent} option can be provided to make it persistent instead.  In that case, the VM disk-image file will be copied from the store to the @env{TMPDIR} directory to make it writable.
fr: Par défaut, le système de fichiers racine de la VM sera monté de manière volatile ; l'option @option{--persistent} peut être fournie pour le rendre persistent à la place. Dans ce cas, le fichier d'image disque VM sera copiée à partir du dépôt vert le répertoire @env{TMPDIR} pour le rendre inscriptible.

note: type: table
en: Additional file systems can be shared between the host and the VM using the @option{--share} and @option{--expose} command-line options: the former specifies a directory to be shared with write access, while the latter provides read-only access to the shared directory.
fr: Vous pouvez partager des fichiers supplémentaires entre l'hôte et la VM avec les options en ligne de commande @option{--share} et @option{--expose} : la première spécifie un répertoire à partager avec accès en écriture, tandis que le deuxième fournit un accès en lecture-seule au répertoire partagé.

note: type: table
en: The example below creates a VM in which the user's home directory is accessible read-only, and where the @file{/exchange} directory is a read-write mapping of @file{$HOME/tmp} on the host:
fr: L'exemple ci-dessous crée une VM dans laquelle le répertoire personnel de l'utilisateur est accessible en lecture-seule, et où le répertoire @file{/exchange} est une correspondance en lecture-écriture à @file{$HOME/tmp} sur l'hôte :

note: type: table
en: On GNU/Linux, the default is to boot directly to the kernel; this has the advantage of requiring only a very tiny root disk image since the store of the host can then be mounted.
fr: Sur GNU/Linux, le comportement par défaut consiste à démarrer directement sur le noyau ; cela a l'avantage de n'avoir besoin que d'une toute petite image disque puisque le dépôt de l'hôte peut ensuite être monté.

note: type: table
en: The @option{--full-boot} option forces a complete boot sequence, starting with the bootloader.  This requires more disk space since a root image containing at least the kernel, initrd, and bootloader data files must be created.
fr: L'option @option{--full-boot} force une séquence de démarrage complète, en commençant par le chargeur d'amorçage.  Cela requiert plus d'espace disque puisqu'une image racine contenant au moins le noyau, l'initrd et les fichiers de données du chargeur d'amorçage doit être créé.

note: type: table
en: The @option{--image-size} option can be used to specify the size of the image.
fr: On peut utiliser l'option @option{--image-size} pour spécifier la taille de l'image.

note: type: table
en: The @option{--no-graphic} option will instruct @command{guix system} to spawn a headless VM that will use the invoking tty for IO.  Among other things, this enables copy-pasting, and scrollback.  Use the @kbd{ctrl-a} prefix to issue QEMU commands; e.g. @kbd{ctrl-a h} prints a help, @kbd{ctrl-a x} quits the VM, and @kbd{ctrl-a c} switches between the QEMU monitor and the VM.
fr: L'option @option{--no-graphic} demandera à @command{guix system} de créer une VM sans interface qui utilisera le tty qui l'invoque pour ses entrées-sorties. Entre autres, cela active le copier-coller et le défilement. Utilisez le préfixe @kbd{ctrl-a} pour lancer des commandes QEMU ; p.@: ex.@: @kbd{ctrl-a h} affiche l'aide, @kbd{ctrl-a x} quitte la VM et @kbd{ctrl-a c} alterne entre le moniteur QEMU et la VM.

note: type: cindex
en: System images, creation in various formats
fr: Images système, création en divers formats

note: type: cindex
en: Creating system images in various formats
fr: Créer des images systèmes sous différents formats

note: type: cindex
en: image, creating disk images
fr: image, créer des images disques

note: type: table
en: The @code{image} command can produce various image types.  The image type can be selected using the @option{--image-type} option.  It defaults to @code{efi-raw}.  When its value is @code{iso9660}, the @option{--label} option can be used to specify a volume ID with @code{image}.  By default, the root file system of a disk image is mounted non-volatile; the @option{--volatile} option can be provided to make it volatile instead.  When using @code{image}, the bootloader installed on the generated image is taken from the provided @code{operating-system} definition.  The following example demonstrates how to generate an image that uses the @code{grub-efi-bootloader} bootloader and boot it with QEMU:
fr: La commande @code{image} peut produire divers types d'images.  Vous pouvez choisir le type d'image en utilisant l'option @option{--image-type}.  Sa valeur par défaut est @code{efi-raw}.  Lorsque sa valeur est @code{iso9660}, vous pouvez utiliser l'option @option{--label} pour spécifier un identifiant de volume avec @code{image}.  Par défaut, le système de fichiers racine d'une image disque est montée en non-volatile ; vous pouvez fournir l'option @option{--volatile} pour la rendre volatile.  Si vous utilisez @code{image}, le chargeur d'amorçage installé sur l'image générée est celui de la définition @code{operating-system} fournie.  L'exemple suivant montre comment générer une image qui utilise le chargeur d'amorçage @code{grub-efi-bootloader} et la démarrer avec QEMU :

note: type: table
en: When using the @code{efi-raw} image type, a raw disk image is produced; it can be copied as is to a USB stick, for instance.  Assuming @code{/dev/sdc} is the device corresponding to a USB stick, one can copy the image to it using the following command:
fr: Lorsque vous utilisez le type d'image @code{efi-raw}, une image disque brute est produite ; elle peut être copiée telle quelle sur un périphérique USB par exemple.  En supposant que @code{/dev/sdc} est le périphérique correspondant à une clé USB, on peut copier l'image dessus avec la commande suivante :

note: type: table
en: The @code{--list-image-types} command lists all the available image types.
fr: La commande @code{--list-image-types} liste tous les types d'images disponibles.

note: type: cindex
en: creating virtual machine images
fr: créer des images de machines virtuelles

note: type: table
en: When using the @code{qcow2} image type, the returned image is in qcow2 format, which the QEMU emulator can efficiently use. @xref{Running Guix in a VM}, for more information on how to run the image in a virtual machine.  The @code{grub-bootloader} bootloader is always used independently of what is declared in the @code{operating-system} file passed as argument.  This is to make it easier to work with QEMU, which uses the SeaBIOS BIOS by default, expecting a bootloader to be installed in the Master Boot Record (MBR).
fr: Lorsque vous utilisez le type d'image @code{qcow2}, l'image renvoyée est au format qcow2, que l'émulateur QEMU peut utiliser efficacement.  @xref{Running Guix in a VM}, pour plus d'information sur la manière de lancer l'image dans une machine virtuelle.  Le chargeur d'amorçage @code{grub-bootloader} est toujours utilisé quelque soit celui déclaré dans le fichier @code{operating-system} passé en argument.  Cela facilite l'utilisation de QEMU, qui utilise le BIOS SeaBIOS par défaut, et s'attend à un chargeur d'amorçage installé dans le Master Boot Record (MBR).

note: type: cindex
en: docker-image, creating docker images
fr: docker-image, créer des images docker

note: type: table
en: When using the @code{docker} image type, a Docker image is produced.  Guix builds the image from scratch, not from a pre-existing Docker base image.  As a result, it contains @emph{exactly} what you define in the operating system configuration file.  You can then load the image and launch a Docker container using commands like the following:
fr: En utilisant le type d'image @code{docker}, on produit une image Docker.  Guix construit l'image de zéro, et non à partir d'une image Docker de base pré-existante.  En conséquence, elle contient @emph{exactly} ce que vous avez défini dans le fichier de configuration du système.  Vous pouvez ensuite charger l'image et lancer un conteneur Docker avec des commande comme :

note: type: table
en: This command starts a new Docker container from the specified image.  It will boot the Guix system in the usual manner, which means it will start any services you have defined in the operating system configuration.  You can get an interactive shell running in the container using @command{docker exec}:
fr: Cette commande démarre un nouveau conteneur Docker à partir de l'image spécifiée.  Il démarrera le système Guix de la manière habituelle, ce qui signifie qu'il démarrera tous les services que vous avez définis dans la configuration du système d'exploitation.  Vous pouvez obtenir un shell interactif dans le conteneur en utilisant @command{docker exec} :

note: type: table
en: Depending on what you run in the Docker container, it may be necessary to give the container additional permissions.  For example, if you intend to build software using Guix inside of the Docker container, you may need to pass the @option{--privileged} option to @code{docker create}.
fr: En fonction de ce que vous lancez dans le conteneur Docker, il peut être nécessaire de donner des permissions supplémentaires au conteneur.  Par exemple, si vous voulez construire des paquets avec Guix dans le conteneur Docker, vous devriez passer @option{--privileged} à @code{docker create}.

note: type: table
en: Last, the @option{--network} option applies to @command{guix system docker-image}: it produces an image where network is supposedly shared with the host, and thus without services like nscd or NetworkManager.
fr: Enfin, l'option @option{--network} s'applique à @command{guix system docker-image} : elle produit une image où le réseau est partagé avec l'hôte, et donc sans services comme nscd ou NetworkManager.

note: type: table
en: Return a script to run the operating system declared in @var{file} within a container.  Containers are a set of lightweight isolation mechanisms provided by the kernel Linux-libre.  Containers are substantially less resource-demanding than full virtual machines since the kernel, shared objects, and other resources can be shared with the host system; this also means they provide thinner isolation.
fr: Renvoie un script qui lance le système d'exploitation déclaré dans @var{file} dans un conteneur.  Les conteneurs sont un ensemble de mécanismes d'isolation légers fournis par le noyau Linux-libre.  Les conteneurs sont substantiellement moins gourmands en ressources que les machines virtuelles complètes car le noyau, les objets partagés et d'autres ressources peuvent être partagés avec le système hôte ; cela signifie aussi une isolation moins complète.

note: type: table
en: Currently, the script must be run as root in order to support more than a single user and group.  The container shares its store with the host system.
fr: Actuellement, le script doit être lancé en root pour pouvoir supporter plus d'un utilisateur et d'un groupe.  Le conteneur partage son dépôt avec le système hôte.

note: type: table
en: As with the @code{vm} action (@pxref{guix system vm}), additional file systems to be shared between the host and container can be specified using the @option{--share} and @option{--expose} options:
fr: Comme avec l'action @code{vm} (@pxref{guix system vm}), des systèmes de fichiers supplémentaires peuvent être partagés entre l'hôte et le conteneur avec les options @option{--share} et @option{--expose} :

note: type: table
en: The @option{--share} and @option{--expose} options can also be passed to the generated script to bind-mount additional directories into the container.
fr: Les options @option{--share} et @option{--expose} peuvent aussi être passées au script généré pour effectuer un montage lié de répertoires supplémentaires dans le conteneur.

note: type: quotation
en: This option requires Linux-libre 3.19 or newer.
fr: Cette option requiert Linux-libre ou supérieur.

note: type: Plain text
en: @var{options} can contain any of the common build options (@pxref{Common Build Options}).  In addition, @var{options} can contain one of the following:
fr: @var{options} peut contenir n'importe quelle option commune de construction (@pxref{Common Build Options}).  En plus, @var{options} peut contenir l'une de ces options :

note: type: table
en: Consider the operating-system @var{expr} evaluates to.  This is an alternative to specifying a file which evaluates to an operating system.  This is used to generate the Guix system installer @pxref{Building the Installation Image}).
fr: Considère le système d'exploitation en lequel s'évalue @var{expr}.  C'est une alternative à la spécification d'un fichier qui s'évalue en un système d'exploitation.  C'est utilisé pour générer l'installateur du système Guix (@pxref{Building the Installation Image}).

note: type: table
en: Attempt to build for @var{system} instead of the host system type.  This works as per @command{guix build} (@pxref{Invoking guix build}).
fr: Essaye de construire pour @var{system} au lieu du type du système hôte.  Cela fonction comme pour @command{guix build} (@pxref{Invoking guix build}).

note: type: table
en: Return the derivation file name of the given operating system without building anything.
fr: Renvoie le nom du fichier de dérivation du système d'exploitation donné sans rien construire.

note: type: table
en: As discussed above, @command{guix system init} and @command{guix system reconfigure} always save provenance information @i{via} a dedicated service (@pxref{Service Reference, @code{provenance-service-type}}).  However, other commands don't do that by default.  If you wish to, say, create a virtual machine image that contains provenance information, you can run:
fr: Comme nous en avons parlé précédemment, @command{guix system init} et @command{guix system reconfigure} enregistrent toujours les informations de provenance via un service dédié (@pxref{Service Reference, @code{provenance-service-type}}).  Cependant, d'autres commande ne le font pas par défaut.  Si vous voulez, disons, créer une image de machine virtuelle contenant les informations de provenance, vous pouvez lancer :

note: type: table
en: That way, the resulting image will effectively ``embed its own source'' in the form of meta-data in @file{/run/current-system}.  With that information, one can rebuild the image to make sure it really contains what it pretends to contain; or they could use that to derive a variant of the image.
fr: De cette façon, l'image qui en résulte va effectivement « intégrer sa propre source » sous la forme de méta-données dans @file{/run/current-system}.  Avec cette information, on peut reconstruire l'image pour s'assurer qu'elle contient vraiment ce qu'elle prétend contenir ; ou on peut utiliser ça pour dériver une variante de l'image.

note: type: table
en: For the @code{image} action, create an image with given @var{type}.
fr: Pour l'action @code{image}, crée une image du @var{type} donné.

note: type: table
en: When this option is omitted, @command{guix system} uses the @code{efi-raw} image type.
fr: Lorsque cette option est omise, @command{guix system} utilise le type d'image @code{efi-raw}.

note: type: cindex
en: ISO-9660 format
fr: Format ISO-9660

note: type: cindex
en: CD image format
fr: Format d'image de CD

note: type: cindex
en: DVD image format
fr: Format d'image de DVD

note: type: table
en: @option{--image-type=iso9660} produces an ISO-9660 image, suitable for burning on CDs and DVDs.
fr: @option{--image-type=iso9660} produit une image ISO-9660, qu'il est possible de graver sur un CD ou un DVD.

note: type: table
en: For the @code{image} action, create an image of the given @var{size}.  @var{size} may be a number of bytes, or it may include a unit as a suffix (@pxref{Block size, size specifications,, coreutils, GNU Coreutils}).
fr: Pour l'action @code{image}, crée une image de la taille donnée @var{size}.  @var{size} peut être un nombre d'octets ou contenir un suffixe d'unité (@pxref{Block size, size specifications,, coreutils, GNU Coreutils}).

note: type: table
en: When this option is omitted, @command{guix system} computes an estimate of the image size as a function of the size of the system declared in @var{file}.
fr: Lorsque cette option est omise, @command{guix system} calcule une estimation de la taille de l'image en fonction de la taille du système déclaré dans @var{file}.

note: type: table
en: For the @code{container} action, allow containers to access the host network, that is, do not create a network namespace.
fr: Pour l'action @code{container}, permet aux conteneurs d'accéder au réseau de l'hôte, c'est-à-dire, ne crée pas d'espace de nom réseau.

note: type: table
en: Skip pre-installation safety checks.
fr: Passe les vérifications de sécurité avant l'installation.

note: type: table
en: By default, @command{guix system init} and @command{guix system reconfigure} perform safety checks: they make sure the file systems that appear in the @code{operating-system} declaration actually exist (@pxref{File Systems}), and that any Linux kernel modules that may be needed at boot time are listed in @code{initrd-modules} (@pxref{Initial RAM Disk}).  Passing this option skips these tests altogether.
fr: Par défaut, @command{guix system init} et @command{guix system reconfigure} effectuent des vérifications de sécurité : ils s'assurent que les systèmes de fichiers qui apparaissent dans la déclaration @code{operating-system} existent vraiment (@pxref{File Systems}) et que les modules de noyau Linux qui peuvent être requis au démarrage sont listés dans @code{initrd-modules} (@pxref{Initial RAM Disk}).  Passer cette option saute ces vérifications complètement.

note: type: table
en: Instruct @command{guix system reconfigure} to allow system downgrades.
fr: Dit à @command{guix system reconfigure} de permettre le retour en arrière du système.

note: type: table
en: By default, @command{reconfigure} prevents you from downgrading your system.  It achieves that by comparing the provenance info of your system (shown by @command{guix system describe}) with that of your @command{guix} command (shown by @command{guix describe}).  If the commits for @command{guix} are not descendants of those used for your system, @command{guix system reconfigure} errors out.  Passing @option{--allow-downgrades} allows you to bypass these checks.
fr: Par défaut, @command{reconfigure} vous empêche de faire revenir votre système en arrière.  Il fait cela en comparant les informations de provenance de votre système (décrites par @command{guix system describe}) avec celles de la commande @command{guix} (décrites par @command{guix describe}).  Si les commits de @command{guix} ne descendent pas de ceux utilisés pour votre système, @command{guix system reconfigure} renvoie une erreur.  Passer @option{--allow-downgrades} vous permet de passer ces tests.

note: type: cindex
en: on-error strategy
fr: stratégie on-error

note: type: cindex
en: error strategy
fr: stratégie en cas d'erreur

note: type: table
en: Apply @var{strategy} when an error occurs when reading @var{file}.  @var{strategy} may be one of the following:
fr: Applique @var{strategy} lorsqu'une erreur arrive lors de la lecture de @var{file}.  @var{strategy} peut être l'une des valeurs suivantes :

note: type: table
en: Report the error concisely and exit.  This is the default strategy.
fr: Rapporte l'erreur de manière concise et quitte.  C'est la stratégie par défaut.

note: type: table
en: Likewise, but also display a backtrace.
fr: Pareil, mais affiche aussi une trace de débogage.

note: type: table
en: Report the error and enter Guile's debugger.  From there, you can run commands such as @code{,bt} to get a backtrace, @code{,locals} to display local variable values, and more generally inspect the state of the program.  @xref{Debug Commands,,, guile, GNU Guile Reference Manual}, for a list of available debugging commands.
fr: Rapporte l'erreur et entre dans le débogueur Guile.  À partir de là, vous pouvez lancer des commandes comme @code{,bt} pour obtenir une trace de débogage, @code{,locals} pour afficher les valeurs des variables locales et plus généralement inspecter l'état du programme.  @xref{Debug Commands,,, guile, GNU Guile Reference Manual}, pour une liste de commandes de débogage disponibles.

note: type: Plain text
en: Once you have built, configured, re-configured, and re-re-configured your Guix installation, you may find it useful to list the operating system generations available on disk---and that you can choose from the bootloader boot menu:
fr: Une fois que vous avez construit, re-configuré et re-re-configuré votre installation Guix, vous pourriez trouver utile de lister les générations du système disponibles sur le disque — et que vous pouvez choisir dans le menu du chargeur d'amorçage :

note: type: table
en: Describe the running system generation: its file name, the kernel and bootloader used, etc., as well as provenance information when available.
fr: Décrit la génération du système lancé : son nom de fichier, son noyau et chargeur d'amorçage utilisé, etc, ainsi que les informations de provenance si elles sont disponibles.

note: type: table
en: The @code{--list-installed} flag is available, with the same syntax that is used in @command{guix package --list-installed} (@pxref{Invoking guix package}).  When the flag is used, the description will include a list of packages that are currently installed in the system profile, with optional filtering based on a regular expression.
fr: le drapeau @code{--list-intalled} est disponible, avec la même syntaxe que celui utilisé dans @command{guix package --list-installed} (@pxref{Invoking guix package}). Lorsque le drapeau est utilisé, la description incluera une liste des paquets qui sont actuellement installés dans le profil du système, avec un filtre facultatif sur une expression régulière.

note: type: quotation
en: The @emph{running} system generation---referred to by @file{/run/current-system}---is not necessarily the @emph{current} system generation---referred to by @file{/var/guix/profiles/system}: it differs when, for instance, you chose from the bootloader menu to boot an older generation.
fr: La génération du système @emph{en cours} --- référencé par @file{/run/current-system} --- n'est pas nécessairement la génération @emph{actuelle} du système --- référencée par @file{/var/guix/profiles/system} : elles sont différentes si par exemple, vous choisissez dans le menu du chargeur d'amorçage de démarrer une ancienne génération.

note: type: quotation
en: It can also differ from the @emph{booted} system generation---referred to by @file{/run/booted-system}---for instance because you reconfigured the system in the meantime.
fr: Elles peuvent aussi être différentes de la génération du système @emph{démarrée} --- référencée par @file{/run/booted-system} --- par exemple parce que vous avez reconfiguré le système entre temps.

note: type: table
en: List a summary of each generation of the operating system available on disk, in a human-readable way.  This is similar to the @option{--list-generations} option of @command{guix package} (@pxref{Invoking guix package}).
fr: Affiche un résumé de chaque génération du système d'exploitation disponible sur le disque, dans un format lisible pour un humain.  C'est similaire à l'option @option{--list-generations} de @command{guix package} (@pxref{Invoking guix package}).

note: type: table
en: Optionally, one can specify a pattern, with the same syntax that is used in @command{guix package --list-generations}, to restrict the list of generations displayed.  For instance, the following command displays generations that are up to 10 days old:
fr: Éventuellement, on peut spécifier un motif, avec la même syntaxe utilisée pour @command{guix package --list-generations}, pour restreindre la liste des générations affichées.  Par exemple, la commande suivante affiche les générations de moins de 10 jours :

note: type: table
en: The @code{--list-installed} flag may also be specified, with the same syntax that is used in @command{guix package --list-installed}.  This may be helpful if trying to determine when a package was added to the system.
fr: Le drapeau @code{--list-installed} peut aussi être spécifié, avec la même syntaxe que celle utilisée dans @command{guix package --list-installed}. Cela peut être utile si vous essayez de déterminer si un paquet a été ajouté au système.

note: type: Plain text
en: The @command{guix system} command has even more to offer! The following sub-commands allow you to visualize how your system services relate to each other:
fr: La commande @command{guix system} a même plus à proposer ! Les sous-commandes suivantes vous permettent de visualiser comme vos services systèmes sont liés les uns aux autres :

note: type: table
en: Emit to standard output the @dfn{service extension graph} of the operating system defined in @var{file} (@pxref{Service Composition}, for more information on service extensions).  By default the output is in Dot/Graphviz format, but you can choose a different format with @option{--graph-backend}, as with @command{guix graph} (@pxref{Invoking guix graph, @option{--backend}}):
fr: Émettre vers la sortie standard le @dfn{graphe d'extension de service} du système d'exploitation défini dans @var{file} (@pxref{Service Composition}, pour plus d'informations sur les extensions de service). Par défaut, le format de sortie est le format Dot/Graphviz, mais vous pouvez choisir un autre format avec @option{--graph-backend}, comme avec @command{guix graph} (@pxref{Invoking guix graph, @option{--backend}}) :

note: type: table
en: The command:
fr: La commande :

note: type: table
en: shows the extension relations among services.
fr: montre les relations d'extension entre les services.

note: type: quotation
en: The @command{dot} program is provided by the @code{graphviz} package.
fr: Le programme @command{dot} est fournit par le paquet @code{graphviz}.

note: type: table
en: Emit to standard output the @dfn{dependency graph} of shepherd services of the operating system defined in @var{file}.  @xref{Shepherd Services}, for more information and for an example graph.
fr: Affiche le @dfn{graphe de dépendance} des services shepherd du système d'exploitation défini dans @var{file} sur la sortie standard.  @xref{Shepherd Services}, pour plus d'informations et un exemple de graphe.

note: type: table
en: Again, the default output format is Dot/Graphviz, but you can pass @option{--graph-backend} to select a different one.
fr: Encore une fois, le format de sortie par défaut est Dot/Graphviz, mais vous pouvez passer @option{--graph-backend} pour en choisir un autre.

note: type: section
en: Invoking @command{guix deploy}
fr: Invoquer @command{guix deploy}

note: type: Plain text
en: We've already seen @code{operating-system} declarations used to manage a machine's configuration locally.  Suppose you need to configure multiple machines, though---perhaps you're managing a service on the web that's comprised of several servers.  @command{guix deploy} enables you to use those same @code{operating-system} declarations to manage multiple remote hosts at once as a logical ``deployment''.
fr: Nous avons déjà vu les déclarations de @code{operating-system} utilisées pour gérer la configuration d'une machine localement.  Supposez que vous ayez besoin de configurer plusieurs machines --- peut-être que vous gérez un service web comprenant plusieurs serveurs.  @command{guix deploy} vous permet d'utiliser les mêmes déclarations de systèmes d'exploitation pour gérer plusieurs hôtes distants en même temps dans le même « déploiement » logique.

note: type: quotation
en: The functionality described in this section is still under development and is subject to change.  Get in touch with us on @email{guix-devel@@gnu.org}!
fr: La fonctionnalité décrite dans cette section est toujours en cours de développement et est sujette à changement.  Contactez-nous sur @email{guix-devel@@gnu.org} !

note: type: example
en: guix deploy @var{file}
fr: guix deploy @var{fichier}

note: type: Plain text
en: Such an invocation will deploy the machines that the code within @var{file} evaluates to.  As an example, @var{file} might contain a definition like this:
fr: Une telle invocation déploiera les machines en lesquelles le code de @var{fichier} s'évalue.  Par exemple, @var{fichier} peut contenir une définition comme celle-ci :

note: type: lisp
en: ;; This is a Guix deployment of a "bare bones" setup, with
    ;; no X11 display server, to a machine with an SSH daemon
    ;; listening on localhost:2222. A configuration such as this
    ;; may be appropriate for virtual machine with ports
    ;; forwarded to the host's loopback interface.
fr: ;; Ceci est le déploiement Guix d'un système « minimal » sans
    ;; serveur d'affichage X11, vers une machine dont le démon SSH
    ;; écoute sur localhost:2222. Une configuration comme celle-ci
    ;; est appropriée pour les machines virtuelles dont les ports sont relayés
    ;; vers l'interface de bouclage de l'hôte.

note: type: lisp
en: (define %system
      (operating-system
       (host-name "gnu-deployed")
       (timezone "Etc/UTC")
       (bootloader (bootloader-configuration
                    (bootloader grub-bootloader)
                    (targets '("/dev/vda"))
                    (terminal-outputs '(console))))
       (file-systems (cons (file-system
                            (mount-point "/")
                            (device "/dev/vda1")
                            (type "ext4"))
                           %base-file-systems))
       (services
        (append (list (service dhcp-client-service-type)
                      (service openssh-service-type
                               (openssh-configuration
                                (permit-root-login #t)
                                (allow-empty-passwords? #t))))
                %base-services))))
fr: (define %system
      (operating-system
       (host-name "gnu-deployed")
       (timezone "Etc/UTC")
       (bootloader (bootloader-configuration
                    (bootloader grub-bootloader)
                    (target '("/dev/vda"))
                    (terminal-outputs '(console))))
       (file-systems (cons (file-system
                            (mount-point "/")
                            (device "/dev/vda1")
                            (type "ext4"))
                           %base-file-systems))
       (services
        (append (list (service dhcp-client-service-type)
                      (service openssh-service-type
                               (openssh-configuration
                                (permit-root-login #t)
                                (allow-empty-passwords? #t))))
                %base-services))))

note: type: Plain text
en: The file should evaluate to a list of @var{machine} objects.  This example, upon being deployed, will create a new generation on the remote system realizing the @code{operating-system} declaration @code{%system}.  @code{environment} and @code{configuration} specify how the machine should be provisioned---that is, how the computing resources should be created and managed.  The above example does not create any resources, as a @code{'managed-host} is a machine that is already running the Guix system and available over the network.  This is a particularly simple case; a more complex deployment may involve, for example, starting virtual machines through a Virtual Private Server (VPS) provider.  In such a case, a different @var{environment} type would be used.
fr: Le fichier devrait s'évaluer en une liste d'objets @var{machine}.  Cet exemple, lors du déploiement, créera une nouvelle génération sur le système distant en réalisant la déclaration @code{operating-system} @code{%system}.  @code{environment} et @code{configuration} spécifient comme la machine devrait être provisionnée --- c.-à-d.@: comment les ressources sont créées et gérées.  L'exemple ci-dessus ne crée aucune ressource, car un @code{'managed-host} est une machine qui fait déjà tourner le système Guix et est disponible sur le réseau.  Cela est un cas particulièrement simple ; un déploiement plus complexe pourrait impliquer, par exemple, le démarrage de machines virtuels chez un fournisseur de serveurs privés virtuels (VPS).  Dans ce cas, une type d'@var{environnement} différent devrait être utilisé.

note: type: Plain text
en: Do note that you first need to generate a key pair on the coordinator machine to allow the daemon to export signed archives of files from the store (@pxref{Invoking guix archive}), though this step is automatic on Guix System:
fr: Prenez note que vous devez d'abord générer une paire de clés sur la machine coordinatrice pour permettre au démon d'exporter les archives signées des fichiers du dépôt (@pxref{Invoking guix archive}), bien que cette étape soit automatique sur Guix System :

note: type: Plain text
en: Each target machine must authorize the key of the master machine so that it accepts store items it receives from the coordinator:
fr: Chaque machine cible doit autoriser la clé de la machine maître afin qu'elle accepte les objets de stockage qu'elle reçoit du coordinateur :

note: type: Plain text
en: @code{user}, in this example, specifies the name of the user account to log in as to perform the deployment.  Its default value is @code{root}, but root login over SSH may be forbidden in some cases.  To work around this, @command{guix deploy} can log in as an unprivileged user and employ @code{sudo} to escalate privileges.  This will only work if @code{sudo} is currently installed on the remote and can be invoked non-interactively as @code{user}.  That is, the line in @code{sudoers} granting @code{user} the ability to use @code{sudo} must contain the @code{NOPASSWD} tag.  This can be accomplished with the following operating system configuration snippet:
fr: @code{user}, dans cet exemple, spécifie le nom du compte utilisateur à utiliser pour se connecter lors du déploiement.  Sa valeur par défaut est @code{root}, mais la connexion SSH en root peut être interdite dans certains cas.  Pour contourner cela, @command{guix deploy} peut se connecter en tant qu'utilisateur non-privilégié et utiliser @code{sudo} pour récupérer les privilèges.  Cela ne fonctionnera que si @code{sudo} est actuellement installé sur la machine distante et peut être invoqué de manière non interactive par @code{user}.  C'est-à-dire que la ligne @code{sudoers} permettant à @code{user} d'utiliser @code{sudo} doit contenir l'attribut @code{NOPASSWD}.  Cela peut se faire avec le bout de configuration du système d'exploitation suivant :

note: type: lisp
en: (use-modules ...
                 (gnu system))               ;for %sudoers-specification
fr: (use-modules ...
                 (gnu system))               ;pour %sudoers-specification

note: type: Plain text
en: For more information regarding the format of the @file{sudoers} file, consult @command{man sudoers}.
fr: Pour plus d'informations sur le format du fichier @file{sudoers}, consultez @command{man sudoers}.

note: type: Plain text
en: Once you've deployed a system on a set of machines, you may find it useful to run a command on all of them.  The @option{--execute} or @option{-x} option lets you do that; the example below runs @command{uname -a} on all the machines listed in the deployment file:
fr: Une fois que vous avez déployé un système sur un ensemble de machines, vous trouverez utile de lancer une commande sur chacune. Les options @option{--execute} ou @option{-x} vous le permet. L'exemple ci-dessous lance @command{uname -a} sur toutes les machines listées dans le fichier de déploiement :

note: type: example
en: guix deploy @var{file} -x -- uname -a
fr: guix deploy @var{fichier} -x -- uname -a

note: type: Plain text
en: One thing you may often need to do after deployment is restart specific services on all the machines, which you can do like so:
fr: Ce que vous devrez souvent faire après un déploiement est de redémarrer les services spécifiques sur toutes les machines, ce qui peut se faire de cette manière :

note: type: Plain text
en: The @command{guix deploy -x} command returns zero if and only if the command succeeded on all the machines.
fr: La commande @command{guix deploy -x} renvoie zéro si et seulement si la commande réussi sur toutes les machines.

note: type: Plain text
en: Below are the data types you need to know about when writing a deployment file.
fr: Voici les types de données que vous devrez connaitre pour écrire un fichier de déploiement.

note: type: deftp
en: {Data Type} machine
fr: {Type de données} machine

note: type: deftp
en: This is the data type representing a single machine in a heterogeneous Guix deployment.
fr: C'est le type de données représentant une seule machine dans un déploiement Guix hétérogène.

note: type: table
en: The object of the operating system configuration to deploy.
fr: L'objet de la configuration du système d'exploitation à déployer.

note: type: table
en: An @code{environment-type} describing how the machine should be provisioned.
fr: Un @code{environment-type} décrit comment la machine est provisionnée.

note: type: item
en: @code{configuration} (default: @code{#f})
fr: @code{configuration} (par défaut : @code{#f})

note: type: table
en: An object describing the configuration for the machine's @code{environment}.  If the @code{environment} has a default configuration, @code{#f} may be used.  If @code{#f} is used for an environment with no default configuration, however, an error will be thrown.
fr: Un objet décrivant la configuration de l'environnement de la machine.  Si l'objet @code{environment} a une configuration par défaut, vous pouvez utiliser @code{#f}.  Si vous utilisez @code{#f} mais que l'environnement n'a pas de configuration par défaut, une erreur sera renvoyée.

note: type: deftp
en: {Data Type} machine-ssh-configuration
fr: {Type de données} machine-ssh-configuration

note: type: deftp
en: This is the data type representing the SSH client parameters for a machine with an @code{environment} of @code{managed-host-environment-type}.
fr: C'est le type de données représentant les paramètres du client SSH pour une machine qui a pour @code{environment} @code{managed-host-environment-type}.

note: type: item
en: @code{build-locally?} (default: @code{#t})
fr: @code{build-locally?} (par défaut : @code{#t})

note: type: table
en: If false, system derivations will be built on the machine being deployed to.
fr: Si la valeur est fausse, les dérivations du système seront construites sur la machine qui est déployée.

note: type: table
en: The system type describing the architecture of the machine being deployed to---e.g., @code{"x86_64-linux"}.
fr: Le type de système décrivant l'architecture de la machine déployée pour---par exemple, @code{"x86_64-linux"}.

note: type: item
en: @code{authorize?} (default: @code{#t})
fr: @code{authorize?} (par défaut : @code{#t})

note: type: table
en: If true, the coordinator's signing key will be added to the remote's ACL keyring.
fr: Si la valeur est vraie, la clé de signature du coordinateur sera ajoutée au porteclé des ACL de la machine distante.

note: type: item
en: @code{identity} (default: @code{#f})
fr: @code{identity} (par défaut : @code{#f})

note: type: table
en: If specified, the path to the SSH private key to use to authenticate with the remote host.
fr: Si spécifié, le chemin d'accès à la clé privée SSH à utiliser pour s'authentifier auprès de l'hôte distant.

note: type: item
en: @code{host-key} (default: @code{#f})
fr: @code{host-key} (par défaut : @code{#f})

note: type: table
en: This should be the SSH host key of the machine, which looks like this:
fr: Cela devrait être la clé de l'hôte SSH de la machine, qui ressemble à cela :

note: type: table
en: When @code{host-key} is @code{#f}, the server is authenticated against the @file{~/.ssh/known_hosts} file, just like the OpenSSH @command{ssh} client does.
fr: Quand @code{host-key} est @code{#f}, le serveur est authentifié avec le fichier @file{~/.ssh/known_hosts}, exactement comme le ferait le client @command{ssh} OpenSSH.

note: type: item
en: @code{allow-downgrades?} (default: @code{#f})
fr: @code{allow-downgrades?} (par défaut : @code{#f})

note: type: table
en: Whether to allow potential downgrades.
fr: Autoriser ou non d'éventuels déclassements.

note: type: table
en: Like @command{guix system reconfigure}, @command{guix deploy} compares the channel commits currently deployed on the remote host (as returned by @command{guix system describe}) to those currently in use (as returned by @command{guix describe}) to determine whether commits currently in use are descendants of those deployed.  When this is not the case and @code{allow-downgrades?} is false, it raises an error.  This ensures you do not accidentally downgrade remote machines.
fr: Comme @command{guix sysetm reconfigure}, @command{guix deploy} compare les commits du canal actuellement déployé sur l'hôte distant (renvoyé par @command{guix system describe}) à ceux utilisés (renvoyés par @command{guix describe}) pour déterminer si les commits actuellement utilisés descendent de ceux déployés.  Lorsque ce n'est pas le cas et que @code{allow-downgrades?} est faux, cela lève une erreur.  Cela permet de s'assurer que vous ne déployez pas accidentellement une version plus ancienne version les machines distantes.

note: type: item
en: @code{safety-checks?} (default: @code{#t})
fr: @code{safety-checks?} (par défaut : @code{#t})

note: type: table
en: Whether to perform ``safety checks'' before deployment.  This includes verifying that devices and file systems referred to in the operating system configuration actually exist on the target machine, and making sure that Linux modules required to access storage devices at boot time are listed in the @code{initrd-modules} field of the operating system.
fr: Indique s'il faut lancer des « vérifications de cohérence » avant le déploiement. Cela comprend la vérification que les périphériques et les systèmes de fichiers référencés dans la configuration du système d'exploitation existent vraiment sur la machine cible, et la vérification que les modules Linux nécessaires à l'accès aux périphériques de stockage au démarrage se trouvent dans le champ @code{initrd-modules} du système d'exploitation.

note: type: table
en: These safety checks ensure that you do not inadvertently deploy a system that would fail to boot.  Be careful before turning them off!
fr: Ces vérification s'assurent que vous ne déployez pas par inadvertance un système qui ne pourra pas démarrer. Soyez prudent avant de les désactiver !

note: type: deftp
en: {Data Type} digital-ocean-configuration
fr: {Type de données} digital-ocean-configuration

note: type: deftp
en: This is the data type describing the Droplet that should be created for a machine with an @code{environment} of @code{digital-ocean-environment-type}.
fr: C'est le type de données décrivant le Droplet qui devrait être créé pour une machine avec un @code{environment} valant @code{digital-ocean-environment-type}.

note: type: table
en: The path to the SSH private key to use to authenticate with the remote host.  In the future, this field may not exist.
fr: Le chemin vers la clé SSH privée à utiliser pour s'authentifier avec l'hôte distant.  Dans le futur, le champ pourrait ne plus exister.

note: type: table
en: A list of string ``tags'' that uniquely identify the machine.  Must be given such that no two machines in the deployment have the same set of tags.
fr: Une liste « d'attributs » qui identifient la machine de manière unique.  Il faut faire attention à ce que deux machine du déploiement n'aient pas le même ensemble d'attributs.

note: type: table
en: A Digital Ocean region slug, such as @code{"nyc3"}.
fr: Le nom d'une région de Digital Ocean, comme @code{"nyc3"}.

note: type: table
en: A Digital Ocean size slug, such as @code{"s-1vcpu-1gb"}
fr: Le nom d'une taille de Digital Ocean, comme @code{"s-1vcpu-1gb"}

note: type: table
en: Whether or not the droplet should be created with IPv6 networking.
fr: Indique s'il faut créer une IPv6 pour le droplet.

note: type: section
en: Running Guix in a Virtual Machine
fr: Exécuter Guix sur une machine virtuelle

note: type: Plain text
en: To run Guix in a virtual machine (VM), one can use the pre-built Guix VM image distributed at @url{@value{BASE-URL}/guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2}.  This image is a compressed image in QCOW format.  You can pass it to an emulator such as @uref{https://qemu.org/, QEMU} (see below for details).
fr: Pour exécuter Guix dans une machine virtuelle (VM), on peut soit utiliser l'image de VM Guix pré-construite sur @indicateurl{@value{BASE-URL}/guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2} .  Cette image est une image compressée au format QCOW.  Vous devrez la passer à un émulateur comme @uref{https://qemu.org/, QEMU} (voir plus bas pour des détails).

note: type: Plain text
en: This image boots the Xfce graphical environment and it contains some commonly used tools.  You can install more software in the image by running @command{guix package} in a terminal (@pxref{Invoking guix package}).  You can also reconfigure the system based on its initial configuration file available as @file{/run/current-system/configuration.scm} (@pxref{Using the Configuration System}).
fr: Cette image démarre l'environnement graphique Xfce et contient certains outils couramment utilisés.  Vous pouvez installer plus de logiciels sur l'image en lançant @command{guix package} dans un terminal (@pxref{Invoking guix package}).  Vous pouvez aussi reconfigurer le système à partir de son fichier de configuration initiale disponible dans @file{/run/current-system/configuration.scm} (@pxref{Using the Configuration System}).

note: type: Plain text
en: Instead of using this pre-built image, one can also build their own image using @command{guix system image} (@pxref{Invoking guix system}).
fr: Au lieu d'utiliser cette image pré-construite, on peut construire sa propre image avec @command{guix system image} (@pxref{Invoking guix system}).

note: type: Plain text
en: If you built your own image, you must copy it out of the store (@pxref{The Store}) and give yourself permission to write to the copy before you can use it.  When invoking QEMU, you must choose a system emulator that is suitable for your hardware platform.  Here is a minimal QEMU invocation that will boot the result of @command{guix system image -t qcow2} on x86_64 hardware:
fr: Si vous construisez votre propre image, vous devez la copier en dehors du dépôt (@pxref{The Store}) et vous donner la permission d'écrire sur la copie avant de pouvoir l'utiliser.  Lorsque vous invoquez QEMU, vous devez choisir un émulateur système correspondant à votre plate-forme matérielle.  Voici une invocation minimale de QEMU qui démarrera le résultat de @command{guix system image -t qcow2} sur un matériel x8_64 :

note: type: Plain text
en: Here is what each of these options means:
fr: Voici la signification de ces options :

note: type: table
en: This specifies the hardware platform to emulate.  This should match the host.
fr: Cela spécifie la plate-forme matérielle à émuler.  Elle doit correspondre à l'hôte.

note: type: table
en: Enable the unprivileged user-mode network stack.  The guest OS can access the host but not vice versa.  This is the simplest way to get the guest OS online.  @code{model} specifies which network device to emulate: @code{virtio-net-pci} is a special device made for virtualized operating systems and recommended for most uses.  Assuming your hardware platform is x86_64, you can get a list of available NIC models by running @command{qemu-system-x86_64 -nic model=help}.
fr: Active la pile réseau en mode utilisateur non privilégié.  Le système invité peut accéder à l'hôte mais pas l'inverse.  C'est la manière la plus simple de mettre le système en ligne.  @code{model} spécifie le périphérique réseau à émuler : @code{virtio-net-pci} est un périphérique spécial conçu pour les systèmes d'exploitation virtualisés et recommandés dans la plupart des cas.  En supposant que votre plateforme matérielle est x86_64, vous pouvez récupérer une liste des modèles d'interfaces réseaux en lançant @command{qemu-system-x86_64 -nic model=help}.

note: type: table
en: If your system has hardware virtualization extensions, enabling the virtual machine support (KVM) of the Linux kernel will make things run faster.
fr: Si votre système a des extensions de virtualisation matérielle, activer le support des machines virtuelles de Linux (KVM) accélérera les choses.

note: type: table
en: RAM available to the guest OS, in mebibytes.  Defaults to 128@tie{}MiB, which may be insufficient for some operations.
fr: RAM disponible sur l'OS émulé, en mébioctets.  La valeur par défaut est 128@tie{}Mo, ce qui peut ne pas suffire pour certaines opérations.

note: type: table
en: Create a @code{virtio-blk} drive called ``myhd''.  @code{virtio-blk} is a ``paravirtualization'' mechanism for block devices that allows QEMU to achieve better performance than if it were emulating a complete disk drive.  See the QEMU and KVM documentation for more info.
fr: Crée un lecteur @code{virtio-blk} nommé « myhd ».  @code{virtio-blk} est un mécanisme de « paravirtualisation » pour les périphériques blocs qui permet à QEMU d'avoir de meilleures performances que s'il émulait un disque complet.  Voir la documentation de QEMU et KVM pour plus d'info.

note: type: table
en: Use our QCOW image, the @file{guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2} file, as the backing store of the ``myhd'' drive.
fr: Utilise notre image QCOW, le fichier @file{/tmp/qemu-image}, comme stockage pour le lecteur « myhd ».

note: type: Plain text
en: The default @command{run-vm.sh} script that is returned by an invocation of @command{guix system vm} does not add a @command{-nic user} flag by default.  To get network access from within the vm add the @code{(dhcp-client-service)} to your system definition and start the VM using @command{$(guix system vm config.scm) -nic user}.  An important caveat of using @command{-nic user} for networking is that @command{ping} will not work, because it uses the ICMP protocol.  You'll have to use a different command to check for network connectivity, for example @command{guix download}.
fr: Le script @command{run-vm.sh} par défaut renvoyé par une invocation de @command{guix system vm} n'ajoute pas le drapeau @command{-nic user} par défaut.  Pour avoir accès au réseau dans la vm, ajoutez le @code{(dhcp-client-service)} à votre définition et démarrez la VM avec @command{$(guix system vm config.scm) -nic user}.  Un problème important avec @command{-nic user} pour le réseau, est que @command{ping} ne fonctionnera pas, car il utilise le protocole ICMP.  Vous devrez utiliser une autre commande pour vérifier la connectivité réseau, par exemple @command{guix download}.

note: type: subsection
en: Connecting Through SSH
fr: Se connecter par SSH

note: type: Plain text
en: To enable SSH inside a VM you need to add an SSH server like @code{openssh-service-type} to your VM (@pxref{Networking Services, @code{openssh-service-type}}).  In addition you need to forward the SSH port, 22 by default, to the host.  You can do this with
fr: Pour activer SSH dans une VM vous devez ajouter un serveur SSH comme @code{opennssh-service-type} à votre VM (@pxref{Networking Services, @code{openssh-service-type}}).  En plus vous devez transférer le port 22, par défaut, à l'hôte.  Vous pouvez faire cela avec

note: type: Plain text
en: To connect to the VM you can run
fr: Pour vous connecter à la VM vous pouvez lancer

note: type: Plain text
en: The @command{-p} tells @command{ssh} the port you want to connect to.  @command{-o UserKnownHostsFile=/dev/null} prevents @command{ssh} from complaining every time you modify your @command{config.scm} file and the @command{-o StrictHostKeyChecking=no} prevents you from having to allow a connection to an unknown host every time you connect.
fr: Le @command{-p} donne le port auquel vous voulez vous connecter à @command{ssh}, @command{-o UserKnownHostsFile=/dev/null} évite que @command{ssh} ne se plaigne à chaque fois que vous modifiez le fichier @command{config.scm} et @command{-o StrictHostKeyChecking=no} évite que vous n'ayez à autoriser une connexion à un hôte inconnu à chaque fois que vous vous connectez.

note: type: quotation
en: If you find the above @samp{hostfwd} example not to be working (e.g., your SSH client hangs attempting to connect to the mapped port of your VM), make sure that your Guix System VM has networking support, such as by using the @code{dhcp-client-service-type} service type.
fr: Si le @samp{hostfwd} d'exemple ci-dessus ne marche pas chez vous (ex : si votre client SSH reste bloqué en attente de connexion vers le port lié de votre VM), assurez-vous que votre VM Guix System prend bien en charge le réseau, en utilisant par exemple le type de service @code{dhcp-client-service-type}.

note: type: subsection
en: Using @command{virt-viewer} with Spice
fr: Utiliser @command{virt-viewer} avec Spice

note: type: Plain text
en: As an alternative to the default @command{qemu} graphical client you can use the @command{remote-viewer} from the @command{virt-viewer} package.  To connect pass the @command{-spice port=5930,disable-ticketing} flag to @command{qemu}.  See previous section for further information on how to do this.
fr: Alternativement au client graphique @command{qemu} par défaut vous pouvez utiliser @command{remote-viewer} du paquet @command{virt-viewer}.  Pour vous connecter, passez le drapeau @command{-spice port=5930,disable-ticketing} à @command{qemu}.  Voir les sections précédentes pour plus d'informations sur comment faire cela.

note: type: Plain text
en: Spice also allows you to do some nice stuff like share your clipboard with your VM@.  To enable that you'll also have to pass the following flags to @command{qemu}:
fr: Spice a aussi de chouettes fonctionnalités comme le partage de votre presse-papier avec la VM@.  Pour activer cela vous devrez aussi passer les drapeaux suivants à @command{qemu} :

note: type: Plain text
en: You'll also need to add the @code{(spice-vdagent-service)} to your system definition (@pxref{Miscellaneous Services, Spice service}).
fr: Vous devrez également ajouter le @code{(spice-vdagent-service)} à la définition de votre système (@pxref{Miscellaneous Services, Spice service}).

note: type: Plain text
en: The previous sections show the available services and how one can combine them in an @code{operating-system} declaration.  But how do we define them in the first place? And what is a service anyway?
fr: Les sections précédentes montrent les services disponibles et comment on peut les combiner dans une déclaration @code{operating-system}.  Mais, déjà, comment les définir ?  Et qu'est-ce qu'un service au fait ?

note: type: cindex
en: daemons
fr: démons

note: type: Plain text
en: Here we define a @dfn{service} as, broadly, something that extends the functionality of the operating system.  Often a service is a process---a @dfn{daemon}---started when the system boots: a secure shell server, a Web server, the Guix build daemon, etc.  Sometimes a service is a daemon whose execution can be triggered by another daemon---e.g., an FTP server started by @command{inetd} or a D-Bus service activated by @command{dbus-daemon}.  Occasionally, a service does not map to a daemon.  For instance, the ``account'' service collects user accounts and makes sure they exist when the system runs; the ``udev'' service collects device management rules and makes them available to the eudev daemon; the @file{/etc} service populates the @file{/etc} directory of the system.
fr: Ici nous définissons un @dfn{service} comme étant, assez largement, quelque chose qui étend la fonctionnalité d'un système d'exploitation.  Souvent un service est un processus — un @dfn{démon} — démarré lorsque le système démarre : un serveur ssh, un serveur web, le démon de construction de Guix, etc.  Parfois un service est un démon dont l'exécution peut être déclenchée par un autre démon — p.@: ex.@: un serveur FTP démarré par @command{inetd} ou un service D-Bus activé par @command{dbus-daemon}.  Parfois, un service ne correspond pas à un démon.  Par exemple, le service « de comptes » récupère la liste des comptes utilisateurs et s'assure qu'ils existent bien lorsque le système est lancé ; le service « udev » récupère les règles de gestion des périphériques et les rend disponible au démon eudev ; le service @file{/etc} rempli le répertoire @file{/etc} du système.

note: type: cindex
en: service extensions
fr: extensions de service

note: type: Plain text
en: Guix system services are connected by @dfn{extensions}.  For instance, the secure shell service @emph{extends} the Shepherd---the initialization system, running as PID@tie{}1---by giving it the command lines to start and stop the secure shell daemon (@pxref{Networking Services, @code{openssh-service-type}}); the UPower service extends the D-Bus service by passing it its @file{.service} specification, and extends the udev service by passing it device management rules (@pxref{Desktop Services, @code{upower-service}}); the Guix daemon service extends the Shepherd by passing it the command lines to start and stop the daemon, and extends the account service by passing it a list of required build user accounts (@pxref{Base Services}).
fr: Les services de Guix sont connectés par des @dfn{extensions}.  Par exemple, le service ssh @dfn{étend} le Shepherd — le système d'initialisation de GuixSD, qui tourne en tant que PID@tie{}1 — en lui donnant les lignes de commande pour démarrer et arrêter le démon ssh (@pxref{Networking Services, @code{lsh-service}}) ; le service UPower étend le service D-Bus en lui passant sa spécification @file{.service} et étend le service udev en lui passant des règles de gestion de périphériques (@pxref{Desktop Services, @code{upower-service}}) ; le démon Guix étend le Shepherd en lui passant les lignes de commande pour démarrer et arrêter le démon et étend le service de comptes en lui passant une liste des comptes utilisateurs de constructions requis (@pxref{Base Services}).

note: type: Plain text
en: All in all, services and their ``extends'' relations form a directed acyclic graph (DAG).  If we represent services as boxes and extensions as arrows, a typical system might provide something like this:
fr: En définitive, les services et leurs relation « d'extensions » forment un graphe orienté acyclique (DAG).  Si nous représentons les services comme des boîtes et les extensions comme des flèches, un système typique pourrait fournir quelque chose comme cela :

note: type: Plain text
en: @image{images/service-graph,,5in,Typical service extension graph.}
fr: @image{images/service-graph,,5in,Graphe d'extension des services typique.}

note: type: cindex
en: system service
fr: service système

note: type: Plain text
en: At the bottom, we see the @dfn{system service}, which produces the directory containing everything to run and boot the system, as returned by the @command{guix system build} command.  @xref{Service Reference}, to learn about the other service types shown here.  @xref{system-extension-graph, the @command{guix system extension-graph} command}, for information on how to generate this representation for a particular operating system definition.
fr: En bas, on voit le @dfn{service système} qui produit le répertoire contenant tout et lançant et démarrant le système, renvoyé par la commande @command{guix system build}.  @xref{Service Reference}, pour apprendre les autres types de services montrés ici.  @xref{system-extension-graph, the @command{guix system extension-graph} command}, pour plus d'informations sur la manière de générer cette représentation pour une définition de système d'exploitation particulière.

note: type: cindex
en: service types
fr: types de services

note: type: Plain text
en: Technically, developers can define @dfn{service types} to express these relations.  There can be any number of services of a given type on the system---for instance, a system running two instances of the GNU secure shell server (lsh) has two instances of @code{lsh-service-type}, with different parameters.
fr: Techniquement, on peut définir des @dfn{types de services} pour exprimer ces relations.  Il peut y avoir n'importe quel quantité de services d'un type donné sur le système — par exemple, un système sur lequel tournent deux instances du serveur ssh de GNU (lsh) a deux instance de @var{lsh-service-type}, avec des paramètres différents.

note: type: Plain text
en: The following section describes the programming interface for service types and services.
fr: La section suivante décrit l'interface de programmation des types de services et des services.

note: type: Plain text
en: A @dfn{service type} is a node in the DAG described above.  Let us start with a simple example, the service type for the Guix build daemon (@pxref{Invoking guix-daemon}):
fr: Un @dfn{type de service} est un nœud dans le DAG décrit plus haut.  Commençons avec un exemple simple, le type de service pour le démon de construction de Guix (@pxref{Invoking guix-daemon}) :

note: type: Plain text
en: It defines three things:
fr: Il définit trois choses :

note: type: enumerate
en: A name, whose sole purpose is to make inspection and debugging easier.
fr: Un nom, dont le seul but de rendre l'inspection et le débogage plus faciles.

note: type: enumerate
en: A list of @dfn{service extensions}, where each extension designates the target service type and a procedure that, given the parameters of the service, returns a list of objects to extend the service of that type.
fr: Une liste d'@dfn{extensions de services}, où chaque extension désigne le type de service cible et une procédure qui, étant donné les paramètres du service, renvoie une liste d'objets pour étendre le service de ce type.

note: type: enumerate
en: Every service type has at least one service extension.  The only exception is the @dfn{boot service type}, which is the ultimate service.
fr: Chaque type de service a au moins une extension de service.  La seule exception est le @dfn{type de service boot}, qui est le service ultime.

note: type: enumerate
en: Optionally, a default value for instances of this type.
fr: Éventuellement, une valeur par défaut pour les instances de ce type.

note: type: Plain text
en: In this example, @code{guix-service-type} extends three services:
fr: Dans cet exemple, @var{guix-service-type} étend trois services :

note: type: table
en: The @code{guix-shepherd-service} procedure defines how the Shepherd service is extended.  Namely, it returns a @code{<shepherd-service>} object that defines how @command{guix-daemon} is started and stopped (@pxref{Shepherd Services}).
fr: La procédure @var{guix-shepherd-service} définit comment le service du Shepherd est étendu.  En fait, elle renvoie un objet @code{<shepherd-service>} qui définit comment @command{guix-daemon} est démarré et stoppé (@pxref{Shepherd Services}).

note: type: table
en: This extension for this service is computed by @code{guix-accounts}, which returns a list of @code{user-group} and @code{user-account} objects representing the build user accounts (@pxref{Invoking guix-daemon}).
fr: Cette extension pour ce service est calculée par @var{guix-accounts}, qui renvoie une liste d'objets @code{user-group} et @code{user-account} représentant les comptes des utilisateurs de construction (@pxref{Invoking guix-daemon}).

note: type: table
en: Here @code{guix-activation} is a procedure that returns a gexp, which is a code snippet to run at ``activation time''---e.g., when the service is booted.
fr: Ici, @var{guix-activation} est une procédure qui renvoie une gexp, qui est un bout de code qui s'exécute au moment de l'activation — p.@: ex.@: lorsque le service est démarré.

note: type: Plain text
en: A service of this type is instantiated like this:
fr: Un service de ce type est instancié de cette manière :

note: type: Plain text
en: The second argument to the @code{service} form is a value representing the parameters of this specific service instance.  @xref{guix-configuration-type, @code{guix-configuration}}, for information about the @code{guix-configuration} data type.  When the value is omitted, the default value specified by @code{guix-service-type} is used:
fr: Le deuxième argument de la forme @code{service} est une valeur représentant les paramètres de cet instance spécifique du service.  @xref{guix-configuration-type, @code{guix-configuration}}, pour plus d'informations sur le type de données @code{guix-configuration}.  Lorsque la valeur est omise, la valeur par défaut spécifiée par @code{guix-service-type} est utilisée :

note: type: Plain text
en: @code{guix-service-type} is quite simple because it extends other services but is not extensible itself.
fr: @var{guix-service-type} est très simple car il étend d'autres services mais ne peut pas être étendu.

note: type: Plain text
en: The service type for an @emph{extensible} service looks like this:
fr: Le type de service pour un service @emph{extensible} ressemble à ceci :

note: type: lisp
en:                 (compose concatenate)       ;concatenate the list of rules
                    (extend (lambda (config rules)
                              (match config
                                (($ <udev-configuration> udev initial-rules)
                                 (udev-configuration
                                  (udev udev)   ;the udev package to use
                                  (rules (append initial-rules rules)))))))))
fr:                 (compose concatenate)       ; concatène la liste des règles
                    (extend (lambda (config rules)
                              (match config
                                (($ <udev-configuration> udev initial-rules)
                                 (udev-configuration
                                  (udev udev)   ; le paquet udev à utiliser
                                  (rules (append initial-rules rules)))))))))

note: type: Plain text
en: This is the service type for the @uref{https://wiki.gentoo.org/wiki/Project:Eudev, eudev device management daemon}.  Compared to the previous example, in addition to an extension of @code{shepherd-root-service-type}, we see two new fields:
fr: C'est le type de service pour le @uref{https://wiki.gentoo.org/wiki/Project:Eudev, le démon de gestion des périphériques eudev}.  Comparé à l'exemple précédent, en plus d'une extension de @var{shepherd-root-service-type}, on trouve deux nouveaux champs :

note: type: table
en: This is the procedure to @dfn{compose} the list of extensions to services of this type.
fr: C'est la procédure pour @dfn{composer} la liste des extensions de services de ce type.

note: type: table
en: Services can extend the udev service by passing it lists of rules; we compose those extensions simply by concatenating them.
fr: Les services peuvent étendre le service udev en lui passant des listes de règles ; on compose ces extensions simplement en les concaténant.

note: type: table
en: This procedure defines how the value of the service is @dfn{extended} with the composition of the extensions.
fr: Cette procédure définie comme la valeur du service est @dfn{étendue} avec la composition des extensions.

note: type: table
en: Udev extensions are composed into a list of rules, but the udev service value is itself a @code{<udev-configuration>} record.  So here, we extend that record by appending the list of rules it contains to the list of contributed rules.
fr: Les extensions Udev sont composés en une liste de règles, mais la valeur du service udev est elle-même un enregistrement @code{<udev-configuration>}.  Donc ici, nous étendons cet enregistrement en ajoutant la liste des règle contribuées à la liste des règles qu'il contient déjà.

note: type: table
en: This is a string giving an overview of the service type.  The string can contain Texinfo markup (@pxref{Overview,,, texinfo, GNU Texinfo}).  The @command{guix system search} command searches these strings and displays them (@pxref{Invoking guix system}).
fr: C'est une chaîne donnant un aperçu du type de service.  Elle peut contenir du balisage Texinfo (@pxref{Overview,,, texinfo, GNU Texinfo}).  La commande @command{guix system search} permet de rechercher dans ces chaînes et de les afficher (@pxref{Invoking guix system}).

note: type: Plain text
en: There can be only one instance of an extensible service type such as @code{udev-service-type}.  If there were more, the @code{service-extension} specifications would be ambiguous.
fr: Il ne peut y avoir qu'une instance d'un type de service extensible comme @var{udev-service-type}.  S'il y en avait plus, les spécification @code{service-extension} seraient ambiguës.

note: type: Plain text
en: Still here? The next section provides a reference of the programming interface for services.
fr: Toujours ici ? La section suivante fournit une référence de l'interface de programmation des services.

note: type: Plain text
en: We have seen an overview of service types (@pxref{Service Types and Services}).  This section provides a reference on how to manipulate services and service types.  This interface is provided by the @code{(gnu services)} module.
fr: Nous avons vu un résumé des types de services (@pxref{Service Types and Services}).  Cette section fournit une référence sur la manière de manipuler les services et les types de services.  Cette interface est fournie par le module @code{(gnu services)}.

note: type: deffn
en: {Scheme Procedure} service @var{type} [@var{value}]
fr: {Procédure Scheme} service @var{type} [@var{value}]

note: type: deffn
en: Return a new service of @var{type}, a @code{<service-type>} object (see below).  @var{value} can be any object; it represents the parameters of this particular service instance.
fr: Renvoie un nouveau service de type @var{type}, un objet @code{<service-type>} (voir plus bas).  @var{value}peut être n'importe quel objet ; il représente les paramètres de cette instance particulière de service.

note: type: deffn
en: When @var{value} is omitted, the default value specified by @var{type} is used; if @var{type} does not specify a default value, an error is raised.
fr: Lorsque @var{value} est omise, la valeur par défaut spécifiée par @var{type} est utilisée ; si @var{type} ne spécifie pas de valeur par défaut, une erreur est levée.

note: type: deffn
en: For instance, this:
fr: Par exemple ceci :

note: type: deffn
en: is equivalent to this:
fr: est équivalent à ceci :

note: type: deffn
en: In both cases the result is an instance of @code{openssh-service-type} with the default configuration.
fr: Dans les deux cas le résultat est une instance de @code{openssh-service-type} avec la configuration par défaut.

note: type: deffn
en: {Scheme Procedure} service? @var{obj}
fr: {Procédure Scheme} service? @var{obj}

note: type: deffn
en: Return true if @var{obj} is a service.
fr: Renvoie vrai si @var{obj} est un service.

note: type: deffn
en: {Scheme Procedure} service-kind @var{service}
fr: {Procédure Scheme} service-kind @var{service}

note: type: deffn
en: Return the type of @var{service}---i.e., a @code{<service-type>} object.
fr: Renvoie le type de @var{service} — c.-à-d.@: un objet @code{<service-type>}.

note: type: deffn
en: {Scheme Procedure} service-value @var{service}
fr: {Procédure Scheme} service-value @var{service}

note: type: deffn
en: Return the value associated with @var{service}.  It represents its parameters.
fr: Renvoie la valeur associée à @var{service}.  Elle représente ses paramètres.

note: type: Plain text
en: Here is an example of how a service is created and manipulated:
fr: Voici un exemple de la manière dont un service est créé et manipulé :

note: type: Plain text
en: The @code{modify-services} form provides a handy way to change the parameters of some of the services of a list such as @code{%base-services} (@pxref{Base Services, @code{%base-services}}).  It evaluates to a list of services.  Of course, you could always use standard list combinators such as @code{map} and @code{fold} to do that (@pxref{SRFI-1, List Library,, guile, GNU Guile Reference Manual}); @code{modify-services} simply provides a more concise form for this common pattern.
fr: La forme @code{modify-services} fournit une manière pratique de modifier les paramètres de certains services d'une liste comme @var{%base-services} (@pxref{Base Services, @code{%base-services}}).  Elle s'évalue en une liste de services.  Bien sûr, vous pouvez toujours utiliser les combinateurs de liste standards comme @code{map} et @code{fold} pour cela (@pxref{SRFI-1, List Library,, guile, GNU Guile Reference Manual}) ; @code{modify-services} fournit simplement une manière plus concise pour ce besoin commun.

note: type: deffn
en: {Scheme Syntax} modify-services @var{services} @
fr: {Syntaxe Scheme} modify-services @var{services} @

note: type: deffn
en: Modify the services listed in @var{services} according to the given clauses.  Each clause has the form:
fr: Modifie les services listés dans @var{services} en fonction des clauses données.  Chaque clause à la forme :

note: type: deffn
en: where @var{type} is a service type---e.g., @code{guix-service-type}---and @var{variable} is an identifier that is bound within the @var{body} to the service parameters---e.g., a @code{guix-configuration} instance---of the original service of that @var{type}.
fr: où @var{type} est un type de service — p.@: ex.@: @code{guix-service-type} — et @var{variable} est un identifiant lié dans @var{body} aux paramètres du service — p.@: ex.@: une instance de @code{guix-configuration} — du service original de ce @var{type}.

note: type: deffn
en: The @var{body} should evaluate to the new service parameters, which will be used to configure the new service.  This new service will replace the original in the resulting list.  Because a service's service parameters are created using @code{define-record-type*}, you can write a succinct @var{body} that evaluates to the new service parameters by using the @code{inherit} feature that @code{define-record-type*} provides.
fr: La variable @var{body} devrait s'évaluer en de nouveaux paramètres de service, qui seront utilisés pour configurer le nouveau service.  Ce nouveau service remplacera l'original dans la liste qui en résulte.  Comme les paramètres d'un service sont créés avec @code{define-record-type*}, vous pouvez écrire un @var{body} court qui s'évalue en de nouveaux paramètres pour le services en utilisant @code{inherit}, fourni par @code{define-record-type*}.

note: type: deffn
en: Clauses can also have the following form:
fr: Les clauses peuvent aussi avoir les formes suivantes :

note: type: deffn
en: Such a clause removes all services of the given @var{type} from @var{services}.
fr: Cette clause supprime tous les services du @var{type} donné de @var{services}.

note: type: deffn
en: @xref{Using the Configuration System}, for example usage.
fr: @xref{Using the Configuration System} pour des exemples d'utilisation.

note: type: Plain text
en: Next comes the programming interface for service types.  This is something you want to know when writing new service definitions, but not necessarily when simply looking for ways to customize your @code{operating-system} declaration.
fr: Suit l'interface de programmation des types de services.  Vous devrez la connaître pour écrire de nouvelles définitions de services, mais pas forcément lorsque vous cherchez des manières simples de personnaliser votre déclaration @code{operating-system}.

note: type: deftp
en: {Data Type} service-type
fr: {Type de données} service-type

note: type: cindex
en: service type
fr: type de service

note: type: deftp
en: This is the representation of a @dfn{service type} (@pxref{Service Types and Services}).
fr: C'est la représentation d'un @dfn{type de service} (@pxref{Service Types and Services}).

note: type: table
en: This is a symbol, used only to simplify inspection and debugging.
fr: C'est un symbole, utilisé seulement pour simplifier l'inspection et le débogage.

note: type: table
en: A non-empty list of @code{<service-extension>} objects (see below).
fr: Une liste non-vide d'objets @code{<service-extension>} (voir plus bas).

note: type: item
en: @code{compose} (default: @code{#f})
fr: @code{compose} (par défaut : @code{#f})

note: type: table
en: If this is @code{#f}, then the service type denotes services that cannot be extended---i.e., services that do not receive ``values'' from other services.
fr: S'il s'agit de @code{#f}, le type de service dénote des services qui ne peuvent pas être étendus — c.-à-d.@: qui ne reçoivent pas de « valeurs » d'autres services.

note: type: table
en: Otherwise, it must be a one-argument procedure.  The procedure is called by @code{fold-services} and is passed a list of values collected from extensions.  It may return any single value.
fr: Sinon, ce doit être une procédure à un argument.  La procédure est appelée par @code{fold-services} et on lui passe une liste de valeurs collectées par les extensions.  Elle peut renvoyer n'importe quelle valeur simple.

note: type: item
en: @code{extend} (default: @code{#f})
fr: @code{extend} (par défaut : @code{#f})

note: type: table
en: If this is @code{#f}, services of this type cannot be extended.
fr: Si la valeur est @code{#f}, les services de ce type ne peuvent pas être étendus.

note: type: table
en: Otherwise, it must be a two-argument procedure: @code{fold-services} calls it, passing it the initial value of the service as the first argument and the result of applying @code{compose} to the extension values as the second argument.  It must return a value that is a valid parameter value for the service instance.
fr: Sinon, il doit s'agir 'une procédure à deux arguments : @code{fold-services} l'appelle et lui passe la valeur initiale du service comme premier argument et le résultat de l'application de @code{compose} sur les valeurs d'extension en second argument.  Elle doit renvoyer une valeur qui est une valeur de paramètre valide pour l'instance du service.

note: type: table
en: This is a string, possibly using Texinfo markup, describing in a couple of sentences what the service is about.  This string allows users to find about the service through @command{guix system search} (@pxref{Invoking guix system}).
fr: C'est une chaine, éventuellement avec de la syntaxe Texinfo, décrivant une quelques phrases ce que le service fait.  Cette chaine permet aux utilisateurs de trouver le service à travers @command{guix system search} (@pxref{Invoking guix system}).

note: type: item
en: @code{default-value} (default: @code{&no-default-value})
fr: @code{default-value} (par défaut : @code{&no-default-value})

note: type: table
en: The default value associated for instances of this service type.  This allows users to use the @code{service} form without its second argument:
fr: La valeur par défaut associée aux instances de ce type de service.  Cela permet d'utiliser la forme @code{service} sans son second argument :

note: type: table
en: The returned service in this case has the default value specified by @var{type}.
fr: Le service renvoyé dans ce cas a la valeur par défaut spécifiée par @var{type}.

note: type: deftp
en: @xref{Service Types and Services}, for examples.
fr: @xref{Service Types and Services}, pour des exemples.

note: type: deffn
en: {Scheme Procedure} service-extension @var{target-type} @
fr: {Procédure Scheme} service-extension @var{target-type} @

note: type: deffn
en: @var{compute} Return a new extension for services of type @var{target-type}.  @var{compute} must be a one-argument procedure: @code{fold-services} calls it, passing it the value associated with the service that provides the extension; it must return a valid value for the target service.
fr: @var{compute}
    Renvoie une nouvelle extension pour les services de type @var{target-type}.  @var{compute} doit être une procédure à un argument : @code{fold-services} l'appelle et lui passe la valeur associée au service qui fournit cette extension ; elle doit renvoyer une valeur valide pour le service cible.

note: type: deffn
en: {Scheme Procedure} service-extension? @var{obj}
fr: {Procédure Scheme} service-extension? @var{obj}

note: type: deffn
en: Return true if @var{obj} is a service extension.
fr: Renvoie vrai si @var{obj} est une extension de service.

note: type: Plain text
en: Occasionally, you might want to simply extend an existing service.  This involves creating a new service type and specifying the extension of interest, which can be verbose; the @code{simple-service} procedure provides a shorthand for this.
fr: Parfois, vous voudrez simplement étendre un service existant.  Cela implique de créer un nouveau type de service et de spécifier l'extension qui vous intéresse, ce qui peut être assez verbeux ; la procédure @code{simple-service} fournit un raccourci pour ce cas.

note: type: deffn
en: {Scheme Procedure} simple-service @var{name} @var{target} @var{value}
fr: {Procédure Scheme} simple-service @var{name} @var{target} @var{value}

note: type: deffn
en: Return a service that extends @var{target} with @var{value}.  This works by creating a singleton service type @var{name}, of which the returned service is an instance.
fr: Renvoie un service qui étend @var{target} avec @var{value}.  Cela fonctionne en créant un type de service singleton @var{name}, dont le service renvoyé est une instance.

note: type: deffn
en: For example, this extends mcron (@pxref{Scheduled Job Execution}) with an additional job:
fr: Par exemple, cela étend mcron (@pxref{Scheduled Job Execution}) avec une tâche supplémentaire :

note: type: Plain text
en: At the core of the service abstraction lies the @code{fold-services} procedure, which is responsible for ``compiling'' a list of services down to a single directory that contains everything needed to boot and run the system---the directory shown by the @command{guix system build} command (@pxref{Invoking guix system}).  In essence, it propagates service extensions down the service graph, updating each node parameters on the way, until it reaches the root node.
fr: Au cœur de l'abstraction des services se cache la procédure @code{fold-services}, responsable de la « compilation » d'une liste de services en un répertoire unique qui contient tout ce qui est nécessaire au démarrage et à l'exécution du système — le répertoire indiqué par la commande @command{guix system build} (@pxref{Invoking guix system}).  En soit, elle propage les extensions des services le long du graphe des services, en mettant à jour chaque paramètre des nœuds sur son chemin, jusqu'à atteindre le nœud racine.

note: type: deffn
en: {Scheme Procedure} fold-services @var{services} @
fr: {Procédure Scheme} fold-services @var{services} @

note: type: deffn
en: [#:target-type @var{system-service-type}] Fold @var{services} by propagating their extensions down to the root of type @var{target-type}; return the root service adjusted accordingly.
fr: [#:target-type @var{system-service-type}]
    Replie @var{services} en propageant leurs extensions jusqu'à la racine de type @var{target-type} ; renvoie le service racine ajusté de cette manière.

note: type: Plain text
en: Lastly, the @code{(gnu services)} module also defines several essential service types, some of which are listed below.
fr: Enfin, le module @code{(gnu services)} définie aussi divers types de services essentiels, dont certains sont listés ci-dessous.

note: type: defvr
en: {Scheme Variable} system-service-type
fr: {Variable Scheme} system-service-type

note: type: defvr
en: This is the root of the service graph.  It produces the system directory as returned by the @command{guix system build} command.
fr: C'est la racine du graphe des services.  Il produit le répertoire du système renvoyé par la commande @command{guix system build}.

note: type: defvr
en: {Scheme Variable} boot-service-type
fr: {Variable Scheme} boot-service-type

note: type: defvr
en: The type of the ``boot service'', which produces the @dfn{boot script}.  The boot script is what the initial RAM disk runs when booting.
fr: Le type du service « boot », qui produit le @dfn{script de démarrage}.  Le script de démarrage est ce que le disque de RAM initial lance au démarrage.

note: type: defvr
en: {Scheme Variable} etc-service-type
fr: {Variable Scheme} etc-service-type

note: type: defvr
en: The type of the @file{/etc} service.  This service is used to create files under @file{/etc} and can be extended by passing it name/file tuples such as:
fr: Le type du service @file{/etc}.  Ce service est utilisé pour créer des fichiers dans @file{/etc} et peut être étendu en lui passant des tuples nom/fichier comme ceci :

note: type: lisp
en: (list `("issue" ,(plain-file "issue" "Welcome!\n")))
fr: (list `("issue" ,(plain-file "issue" "Bienvenue !\n")))

note: type: defvr
en: In this example, the effect would be to add an @file{/etc/issue} file pointing to the given file.
fr: Dans cet exemple, l'effet serait d'ajouter un fichier @file{/etc/issue} pointant vers le fichier donné.

note: type: defvr
en: {Scheme Variable} setuid-program-service-type
fr: {Variable Scheme} setuid-program-service-type

note: type: defvr
en: Type for the ``setuid-program service''.  This service collects lists of executable file names, passed as gexps, and adds them to the set of setuid and setgid programs on the system (@pxref{Setuid Programs}).
fr: Le type du « service setuid ».  Ce service récupère des listes de noms de fichiers exécutables, passés en tant que gexps, et les ajoute à l'ensemble des programmes setuid et setgid root sur le système (@pxref{Setuid Programs}).

note: type: defvr
en: {Scheme Variable} profile-service-type
fr: {Variable Scheme} profile-service-type

note: type: defvr
en: Type of the service that populates the @dfn{system profile}---i.e., the programs under @file{/run/current-system/profile}.  Other services can extend it by passing it lists of packages to add to the system profile.
fr: De type du service qui rempli le @dfn{profil du système} — c.-à-d.@: les programmes dans @file{/run/current-system/profile}.  Les autres services peuvent l'étendre en lui passant des listes de paquets à ajouter au profil du système.

note: type: defvr
en: {Scheme Variable} provenance-service-type
fr: {Variable Scheme} provenance-service-type

note: type: defvr
en: This is the type of the service that records @dfn{provenance meta-data} in the system itself.  It creates several files under @file{/run/current-system}:
fr: C'est le type de service qui enregistre les @dfn{métadonnées de provenance} dans le système lui-même.  Il crée plusieurs fichiers dans @file{/run/current-system} :

note: type: table
en: This is a ``channel file'' that can be passed to @command{guix pull -C} or @command{guix time-machine -C}, and which describes the channels used to build the system, if that information was available (@pxref{Channels}).
fr: C'est un « fichier de canaux » qui peut être passé à @command{guix pull -C} ou @command{guix time-machine -C}, et qui décrit les canaux utilisés pour construire le système, si cette information était disponible (@pxref{Channels}).

note: type: table
en: This is the file that was passed as the value for this @code{provenance-service-type} service.  By default, @command{guix system reconfigure} automatically passes the OS configuration file it received on the command line.
fr: C'est le fichier qui était passé en argument à ce service @code{provenance-service-type}.  Par défaut, @command{guix system reconfigure} passe automatiquement le fichier de configuration du système qu'il a reçu en argument de la ligne de commande.

note: type: table
en: This contains the same information as the two other files but in a format that is more readily processable.
fr: Cela contient la même information que les deux autres fichiers mais dans un format plus facile à traiter automatiquement.

note: type: defvr
en: In general, these two pieces of information (channels and configuration file) are enough to reproduce the operating system ``from source''.
fr: En général, ces deux informations (les canaux et le fichier de configuration) sont suffisants pour reproduire le système d'exploitation « depuis les sources ».

note: type: quotation
en: Caveats
fr: Limites

note: type: quotation
en: This information is necessary to rebuild your operating system, but it is not always sufficient.  In particular, @file{configuration.scm} itself is insufficient if it is not self-contained---if it refers to external Guile modules or to extra files.  If you want @file{configuration.scm} to be self-contained, we recommend that modules or files it refers to be part of a channel.
fr: Cette information est nécessaire pour reconstruire votre système d'exploitation, mais elle n'est pas suffisante.  En particulier, @file{configuration.scm} lui-même n'est pas suffisant s'il n'est pas auto-contenu --- s'il référence des modules Guile externes ou des fichiers supplémentaires.  Si vous voulez que @file{configuration.scm} soit auto-contenu, nous vous recommandons de faire en sorte que les modules et les fichiers auxquels il fait référence se trouvent dans un canal.

note: type: quotation
en: Besides, provenance meta-data is ``silent'' in the sense that it does not change the bits contained in your system, @emph{except for the meta-data bits themselves}.  Two different OS configurations or sets of channels can lead to the same system, bit-for-bit; when @code{provenance-service-type} is used, these two systems will have different meta-data and thus different store file names, which makes comparison less trivial.
fr: De plus, les métadonnées de provenance sont « silencieuses » dans le sens où elles ne changent pas les bits contenus dans votre système, @emph{en dehors des bits des métadonnées elles-mêmes}.  Deux configuration de système différents ou des ensembles de canaux différents peuvent créer le même système, bit-à-bit, mais lorsque @code{provenance-service-type} est utilisé ces deux systèmes auront des métadonnées différentes et donc des noms de fichiers dans le dépôt différents, ce qui rend la comparaison plus difficile.

note: type: defvr
en: This service is automatically added to your operating system configuration when you use @command{guix system reconfigure}, @command{guix system init}, or @command{guix deploy}.
fr: Ce service est automatiquement ajouté à la configuration de votre système d'exploitation quand vous utilisez @command{guix system reconfigure}, @command{guix system init} et @command{guix deploy}.

note: type: defvr
en: {Scheme Variable} linux-loadable-module-service-type
fr: {Variable Scheme} linux-loadable-module-service-type

note: type: defvr
en: Type of the service that collects lists of packages containing kernel-loadable modules, and adds them to the set of kernel-loadable modules.
fr: Type du service qui récolte les listes de paquets contenant les modules chargeables par le noyau, et les ajoute à l'ensemble des modules chargeables par le noyau.

note: type: defvr
en: This service type is intended to be extended by other service types, such as below:
fr: Ce type de service est conçu pour être étendu par d'autres types de services, comme ceci :

note: type: defvr
en: This does not actually load modules at bootup, only adds it to the kernel profile so that it @emph{can} be loaded by other means.
fr: Ce service ne charge pas les modules au démarrage, il ne fait que les ajouter au profil du noyau pour qu'ils @emph{puissent} être chargés par d'autres moyens.

note: type: cindex
en: shepherd services
fr: services shepherd

note: type: cindex
en: init system
fr: système d'init

note: type: Plain text
en: The @code{(gnu services shepherd)} module provides a way to define services managed by the GNU@tie{}Shepherd, which is the initialization system---the first process that is started when the system boots, also known as PID@tie{}1 (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual}).
fr: Le module @code{(gnu services shepherd)} fournit une manière de définir les services gérés par le GNU@tie{}Shepherd, qui est le système d'initialisation — le premier processus démarré lorsque le système démarre, aussi connu comme étant le PID@tie{}1 (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual}).

note: type: Plain text
en: Services in the Shepherd can depend on each other.  For instance, the SSH daemon may need to be started after the syslog daemon has been started, which in turn can only happen once all the file systems have been mounted.  The simple operating system defined earlier (@pxref{Using the Configuration System}) results in a service graph like this:
fr: Les services dans le Shepherd peuvent dépendre les uns des autres.  Par exemple, le démon SSH peut avoir besoin d'être démarré après le démon syslog, qui à son tour doit être démarré après le montage des systèmes de fichiers.  Le système d'exploitation simple déclaré précédemment (@pxref{Using the Configuration System}) crée un graphe de service comme ceci :

note: type: Plain text
en: @image{images/shepherd-graph,,5in,Typical shepherd service graph.}
fr: @image{images/shepherd-graph,,5in,Graphe de service typique du shepherd.}

note: type: Plain text
en: You can actually generate such a graph for any operating system definition using the @command{guix system shepherd-graph} command (@pxref{system-shepherd-graph, @command{guix system shepherd-graph}}).
fr: Vous pouvez générer un tel graphe pour n'importe quelle définition de système d'exploitation avec la commande @command{guix system shepherd-graph} (@pxref{system-shepherd-graph, @command{guix system shepherd-graph}}).

note: type: Plain text
en: The @code{%shepherd-root-service} is a service object representing PID@tie{}1, of type @code{shepherd-root-service-type}; it can be extended by passing it lists of @code{<shepherd-service>} objects.
fr: La variable @var{%shepherd-root-service} est un objet de service représentant le PID@tie{}1, de type @var{shepherd-root-service-type} ; il peut être étendu en lui passant des listes d'objets @code{<shepherd-service>}.

note: type: deftp
en: {Data Type} shepherd-service
fr: {Type de données} shepherd-service

note: type: deftp
en: The data type representing a service managed by the Shepherd.
fr: Le type de données représentant un service géré par le Shepherd.

note: type: table
en: This is a list of symbols denoting what the service provides.
fr: C'est une liste de symboles dénotant ce que le service fournit.

note: type: table
en: These are the names that may be passed to @command{herd start}, @command{herd status}, and similar commands (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual}).  @xref{Slots of services, the @code{provides} slot,, shepherd, The GNU Shepherd Manual}, for details.
fr: Ce sont les noms qui peuvent être passés à @command{herd start}, @command{herd status} et les commandes similaires (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual}).  @xref{Slots of services, the @code{provides} slot,, shepherd, The GNU Shepherd Manual}, pour plus de détails.

note: type: item
en: @code{requirement} (default: @code{'()})
fr: @code{requirement} (par défaut : @code{'()})

note: type: table
en: List of symbols denoting the Shepherd services this one depends on.
fr: Liste de symboles dénotant les services du Shepherd dont celui-ci dépend.

note: type: cindex
en: one-shot services, for the Shepherd
fr: services ponctuels, pour le Shepherd

note: type: table
en: Whether this service is @dfn{one-shot}.  One-shot services stop immediately after their @code{start} action has completed.  @xref{Slots of services,,, shepherd, The GNU Shepherd Manual}, for more info.
fr: Indique si ce service est @dfn{ponctuel}.  Les services ponctuels s'arrêtent immédiatement à la fin de leur action @code{start}.  @xref{Slots of services,,, shepherd, The GNU Shepherd Manual}, pour plus d'infos.

note: type: item
en: @code{respawn?} (default: @code{#t})
fr: @code{respawn?} (par défaut : @code{#t})

note: type: table
en: Whether to restart the service when it stops, for instance when the underlying process dies.
fr: Indique s'il faut redémarrer le service lorsqu'il s'arrête, par exemple si le processus sous-jacent meurt.

note: type: itemx
en: @code{stop} (default: @code{#~(const #f)})
fr: @code{stop} (par défaut : @code{#~(const #f)})

note: type: table
en: The @code{start} and @code{stop} fields refer to the Shepherd's facilities to start and stop processes (@pxref{Service De- and Constructors,,, shepherd, The GNU Shepherd Manual}).  They are given as G-expressions that get expanded in the Shepherd configuration file (@pxref{G-Expressions}).
fr: Les champs @code{start} et @code{stop} se réfèrent à la capacité du Shepherd de démarrer et d'arrêter des processus (@pxref{Service De- and Constructors,,, shepherd, The GNU Shepherd Manual}).  Ils sont donnés comme des G-expressions qui sont étendues dans le fichier de configuration du Shepherd (@pxref{G-Expressions}).

note: type: item
en: @code{actions} (default: @code{'()})
fr: @code{actions} (par défaut : @code{'()})

note: type: cindex
en: actions, of Shepherd services
fr: action, des services Shepherd

note: type: table
en: This is a list of @code{shepherd-action} objects (see below) defining @dfn{actions} supported by the service, in addition to the standard @code{start} and @code{stop} actions.  Actions listed here become available as @command{herd} sub-commands:
fr: C'est une liste d'objets @code{shepherd-action} (voir plus bas) définissant des @dfn{actions} supportées par le service, en plus des actions @code{start} et @code{stop} standards.  Les actions listées ici sont disponibles en tant que sous-commande de @command{herd} :

note: type: item
en: @code{auto-start?} (default: @code{#t})
fr: @code{auto-start?} (par défaut : @code{#t})

note: type: table
en: Whether this service should be started automatically by the Shepherd.  If it is @code{#f} the service has to be started manually with @code{herd start}.
fr: Indique si ce service doit être démarré automatiquement par le Shepherd.  Si la valeur est @code{#f}, le service doit être démarré manuellement avec @code{herd start}.

note: type: table
en: A documentation string, as shown when running:
fr: Une chaîne de documentation, montrée lorsqu'on lance :

note: type: table
en: where @var{service-name} is one of the symbols in @code{provision} (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual}).
fr: où @var{service-name} est l'un des symboles dans @var{provision} (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual}).

note: type: table
en: This is the list of modules that must be in scope when @code{start} and @code{stop} are evaluated.
fr: C'est la liste des modules qui doivent être dans le contexte lorsque @code{start} et @code{stop} sont évalués.

note: type: Plain text
en: The example below defines a Shepherd service that spawns @command{syslogd}, the system logger from the GNU Networking Utilities (@pxref{syslogd invocation, @command{syslogd},, inetutils, GNU Inetutils}):
fr: L'exemple ci-dessous défini un service Shepherd qui lance @command{syslogd}, le démon de journalisation du système des utilitaires réseau de GNU (@pxref{syslogd invocation, @command{syslogd},, inetutils, GNU Inetutils}) :

note: type: Plain text
en: Key elements in this example are the @code{start} and @code{stop} fields: they are @dfn{staged} code snippets that use the @code{make-forkexec-constructor} procedure provided by the Shepherd and its dual, @code{make-kill-destructor} (@pxref{Service De- and Constructors,,, shepherd, The GNU Shepherd Manual}).  The @code{start} field will have @command{shepherd} spawn @command{syslogd} with the given option; note that we pass @code{config} after @option{--rcfile}, which is a configuration file declared above (contents of this file are omitted).  Likewise, the @code{stop} field tells how this service is to be stopped; in this case, it is stopped by making the @code{kill} system call on its PID@.  Code staging is achieved using G-expressions: @code{#~} stages code, while @code{#$} ``escapes'' back to host code (@pxref{G-Expressions}).
fr: Les éléments clés de cet exemple sont les champs @code{start} et @code{stop} : ce sont des bouts de code @dfn{échelonné} qui utilisent la procédure @code{make-forkexec-constructor} fournie par le Shepherd et son dual, @code{make-kill-destructor} (@pxref{Service De- and Constructors,,, shepherd, The GNU Shepherd Manual}). Le champ @code{start} fera créer un @command{syslogd} au @command{shepherd} avec les options données. Remarquez que nous passons @code{config} après @option{--rcfile}, qui est un fichier de configuration déclaré plus haut (le contenu de ce fichier a été omis). De même, le champ @code{stop} décrit comment ce service sera arrêté. Dans ce cas, il est arrêté par l'appel système @code{kill} sur son PID@. Le code est échelonné par des G-expressions : @code{#~} échelonne le code, tandis que @code{#$} « descend » vers le code hôte (@pxref{G-Expressions}).

note: type: deftp
en: {Data Type} shepherd-action
fr: {Type de données} shepherd-action

note: type: deftp
en: This is the data type that defines additional actions implemented by a Shepherd service (see above).
fr: C'est le type de données qui définie des actions supplémentaires implémentées par un service Shepherd (voir au-dessus).

note: type: table
en: Symbol naming the action.
fr: Symbole nommant l'action.

note: type: table
en: This is a documentation string for the action.  It can be viewed by running:
fr: C'est une chaîne de documentation pour l'action.  Elle peut être consultée avec :

note: type: table
en: This should be a gexp that evaluates to a procedure of at least one argument, which is the ``running value'' of the service (@pxref{Slots of services,,, shepherd, The GNU Shepherd Manual}).
fr: Cela devrait être une gexp qui s'évalue en une procédure à au moins un argument, la « valeur de lancement » du service (@pxref{Slots of services,,, shepherd, The GNU Shepherd Manual}).

note: type: deftp
en: The following example defines an action called @code{say-hello} that kindly greets the user:
fr: L'exemple suivant définie une action nommée @code{dire-bonjour} qui salue amicalement l'utilisateur :

note: type: lisp
en: (shepherd-action
      (name 'say-hello)
      (documentation "Say hi!")
      (procedure #~(lambda (running . args)
                     (format #t "Hello, friend! arguments: ~s\n"
                             args)
                     #t)))
fr: (shepherd-action
      (name 'dire-bonjour)
      (documentation "Dit salut !")
      (procedure #~(lambda (running . args)
                     (format #t "Salut, l'ami ! arguments : ~s\n"
                             args)
                     #t)))

note: type: deftp
en: Assuming this action is added to the @code{example} service, then you can do:
fr: En supposant que cette action est ajoutée dans le service @code{example}, vous pouvez écrire :

note: type: example
en: # herd say-hello example
    Hello, friend! arguments: ()
    # herd say-hello example a b c
    Hello, friend! arguments: ("a" "b" "c")
fr: # herd dire-bonjour example
    Salut, l'ami ! arguments : ()
    # herd dire-bonjour example a b c
    Salut, l'ami ! arguments : ("a" "b" "c")

note: type: deftp
en: This, as you can see, is a fairly sophisticated way to say hello.  @xref{Service Convenience,,, shepherd, The GNU Shepherd Manual}, for more info on actions.
fr: Comme vous pouvez le voir, c'est une manière assez sophistiquée de dire bonjour.  @xref{Service Convenience,,, shepherd, The GNU Shepherd Manual}, pour plus d'informations sur les actions.

note: type: cindex
en: configuration file, of Shepherd services
fr: fichier de configuration, des services Shepherd

note: type: deffn
en: {Scheme Procedure} shepherd-configuration-action
fr: {Procédure Scheme} shepherd-configuration-action

note: type: deffn
en: Return a @code{configuration} action to display @var{file}, which should be the name of the service's configuration file.
fr: Renvoie une action @code{configuration} pour afficher @var{file}, qui devrait être le nom du fichier de configuration du service.

note: type: deffn
en: It can be useful to equip services with that action.  For example, the service for the Tor anonymous router (@pxref{Networking Services, @code{tor-service-type}}) is defined roughly like this:
fr: Il peut être utile d'équiper les services avec cette action. Par exemple, le service pour le routeur anonyme Tor (@pxref{Networking Services, @code{tor-service-type}}) est défini globalement de cette façon :

note: type: deffn
en: Thanks to this action, administrators can inspect the configuration file passed to @command{tor} with this shell command:
fr: Grâce à cette action, la personne administrant le système peut inspecter le fichier de configuration passé à @command{tor} avec cette commande shell :

note: type: deffn
en: This can come in as a handy debugging tool!
fr: Cela peut être pratique pour déboguer !

note: type: defvr
en: {Scheme Variable} shepherd-root-service-type
fr: {Variable Scheme} shepherd-root-service-type

note: type: defvr
en: The service type for the Shepherd ``root service''---i.e., PID@tie{}1.
fr: Le type de service pour le « service racine » du Shepherd — c.-à-d.@: le PID@tie{}1.

note: type: defvr
en: This is the service type that extensions target when they want to create shepherd services (@pxref{Service Types and Services}, for an example).  Each extension must pass a list of @code{<shepherd-service>}.  Its value must be a @code{shepherd-configuration}, as described below.
fr: C'est le type de service que les extensions ciblent lorsqu'elles veulent créer un service shepherd (@pxref{Service Types and Services}, pour un exemple).  Chaque extension doit passer une liste de @code{<shepherd-service>}. Sa valeur doit être un @code{shepherd-configuration}, décrit plus bas.

note: type: deftp
en: {Data Type} shepherd-configuration
fr: {Type de données} shepherd-configuration

note: type: deftp
en: This data type represents the Shepherd's configuration.
fr: Ce type de données représente la configuration du Shepherd.

note: type: item
en: shepherd (default: @code{shepherd})
fr: shepherd (par défaut : @code{shepherd})

note: type: table
en: The Shepherd package to use.
fr: Le paquet Shepherd à utiliser.

note: type: item
en: services (default: @code{'()})
fr: services (par défaut : @code{'()})

note: type: table
en: A list of @code{<shepherd-service>} to start.  You should probably use the service extension mechanism instead (@pxref{Shepherd Services}).
fr: Une liste de @code{<shepherd-service>} à démarrer. Vous devriez probablement utiliser le mécanisme d'extensions des services à la place (@pxref{Shepherd Services}).

note: type: Plain text
en: The following example specifies the Shepherd package for the operating system:
fr: L'exemple suivant spécifie le paquet Shepherd pour le système d'exploitation :

note: type: lisp
en: (operating-system
      ;; ...
      (services (append (list openssh-service-type))
                ;; ...
                %desktop-services)
      ;; ...
      ;; Use own Shepherd package.
      (essential-services
       (modify-services (operating-system-default-essential-services
                         this-operating-system)
         (shepherd-root-service-type config => (shepherd-configuration
                                                (inherit config)
                                                (shepherd my-shepherd))))))
fr: (operating-system
      ;; ...
      (services (append (list openssh-service-type))
                ;; ...
                %desktop-services)
      ;; ...
      ;; Utiliser notre propre paquet Shepherd.
      (essential-services
       (modify-services (operating-system-default-essential-services
                         this-operating-system)
         (shepherd-root-service-type config => (shepherd-configuration
                                                (inherit config)
                                                (shepherd my-shepherd))))))

note: type: defvr
en: {Scheme Variable} %shepherd-root-service
fr: {Variable Scheme} %shepherd-root-service

note: type: defvr
en: This service represents PID@tie{}1.
fr: Ce service représente le PID@tie{}1.

note: type: cindex
en: complex configurations
fr: configurations complexes

note: type: Plain text
en: Some programs might have rather complex configuration files or formats, and to make it easier to create Scheme bindings for these configuration files, you can use the utilities defined in the @code{(gnu services configuration)} module.
fr: Certains programmes peuvent avoir des fichiers ou des formats de configuration complexes, et pour rendre plus simple la création de liaisons Scheme pour ces fichiers de configuration, vous pouvez utiliser les fonction auxiliaires définies dans le modules @code{(gnu services configuration)}.

note: type: Plain text
en: The main utility is the @code{define-configuration} macro, which you will use to define a Scheme record type (@pxref{Record Overview,,, guile, GNU Guile Reference Manual}).  The Scheme record will be serialized to a configuration file by using @dfn{serializers}, which are procedures that take some kind of Scheme value and returns a G-expression (@pxref{G-Expressions}), which should, once serialized to the disk, return a string.  More details are listed below.
fr: L'utilitaire principal est la macro @code{define-configuration}, que vous utiliserez pour définir un type d'enregistrement Scheme (@pxref{Record Overview,,, guile, GNU Guile Reference Manual}). L'enregistrement Scheme sera sérialisé en un fichier de configuration par des @dfn{sérialiseurs}, qui sont des procédures qui prennent une valeur Scheme et renvoient une G-expression (@pxref{G-Expressions}), ce qui devrait, une fois sérialisé sur le disque, renvoyer une chaine. Plus de détails se trouvent plus bas.

note: type: deffn
en: {Scheme Syntax} define-configuration @var{name} @var{clause1} @
fr: {Syntaxe Scheme} define-configuration @var{nom} @var{clause1} @

note: type: deffn
en: @var{clause2} ...  Create a record type named @code{@var{name}} that contains the fields found in the clauses.
fr: @var{clause2} ...
    Crée un type d'enregistrement nommé @code{@var{nom}} qui contient les champs qui se trouvent dans les clauses.

note: type: deffn
en: A clause can have one of the following forms:
fr: Une clause peut avoir l'une des formes suivantes :

note: type: example
en: (@var{field-name}
     (@var{type} @var{default-value})
     @var{documentation})
fr: (@var{nom-du-champ}
     (@var{type} @var{valeur-par-défaut})
     @var{documentation})

note: type: example
en: (@var{field-name}
     (@var{type} @var{default-value})
     @var{documentation}
     @var{serializer})
fr: (@var{nom-du-champ}
     (@var{type} @var{valeur-par-défaut})
     @var{documentation}
     @var{sérialiseur})

note: type: example
en: (@var{field-name}
     (@var{type})
     @var{documentation})
fr: (@var{nom-du-champ}
     (@var{type})
     @var{documentation})

note: type: example
en: (@var{field-name}
     (@var{type})
     @var{documentation}
     @var{serializer})
fr: (@var{nom-du-champ}
     (@var{type})
     @var{documentation}
     @var{sérialiseur})

note: type: deffn
en: @var{field-name} is an identifier that denotes the name of the field in the generated record.
fr: @var{nom-du-champ} est un identifiant qui dénote le nom du champ dans l'enregistrement généré.

note: type: deffn
en: @var{type} is the type of the value corresponding to @var{field-name}; since Guile is untyped, a predicate procedure---@code{@var{type}?}---will be called on the value corresponding to the field to ensure that the value is of the correct type.  This means that if say, @var{type} is @code{package}, then a procedure named @code{package?} will be applied on the value to make sure that it is indeed a @code{<package>} object.
fr: @var{type} est le type de valeur correspondant à @var{nom-du-champ} ; comme Guile n'est pas typé, une procédure de prédicat --- @code{@var{type}?} --- sera appelée avec la valeur correspondant au champ pour s'assurer que la valeur est du type correct. Cela signifie que si @var{type} est @code{package}, alors une procédure nommée @code{package?} sera appliquée sur la valeur pour s'assurer que c'est bien un objet @code{<package>}.

note: type: deffn
en: @var{default-value} is the default value corresponding to the field; if none is specified, the user is forced to provide a value when creating an object of the record type.
fr: @var{valeur-par-défaut} est la valeur par défaut correspondant au champ ; si aucune n'est spécifiée, l'utilisateur ou l'utilisatrice doit fournir une valeur à la création d'un objet de ce type d'enregistrement.

note: type: deffn
en: @var{documentation} is a string formatted with Texinfo syntax which should provide a description of what setting this field does.
fr: @var{documentation} est une chaine formatée avec la syntaxe de Texinfo qui fournit une description de ce que ce champ de configuration signifie.

note: type: deffn
en: @var{serializer} is the name of a procedure which takes two arguments, the first is the name of the field, and the second is the value corresponding to the field.  The procedure should return a string or G-expression (@pxref{G-Expressions}) that represents the content that will be serialized to the configuration file.  If none is specified, a procedure of the name @code{serialize-@var{type}} will be used.
fr: @var{sérialiseur} est le nom d'une procédure qui prend deux arguments, le premier est le nom du champ, et le second est la valeur correspondant au champ. La procédure devrait renvoyer une chaine ou une G-expression (@pxref{G-Expressions}) qui représente le contenu qui sera sérialisé dans le fichier de configuration. Si aucun n'est spécifié, une procédure nommée @code{serialize-@var{type}} sera utilisée.

note: type: deffn
en: A simple serializer procedure could look like this:
fr: Une simple procédure de sérialisation pourrait ressembler à ceci :

note: type: deffn
en: In some cases multiple different configuration records might be defined in the same file, but their serializers for the same type might have to be different, because they have different configuration formats.  For example, the @code{serialize-boolean} procedure for the Getmail service would have to be different from the one for the Transmission service.  To make it easier to deal with this situation, one can specify a serializer prefix by using the @code{prefix} literal in the @code{define-configuration} form.  This means that one doesn't have to manually specify a custom @var{serializer} for every field.
fr: Dans certains cas plusieurs enregistrements de configuration différents peuvent être définis dans le même fichier, mais leurs sérialiseurs pour le même type peuvent devoir être différents, à cause de formats de configuration différents. Par exemple, la procédure @code{serialize-boolean} pour le service Getmail doit être différente de celle pour le service Transmission. Pour faciliter cette situation, on peut spécifier un préfixe pour sérialiseur en utilisant le littéral @code{prefix} dans la forme @code{define-configuration}. Cela signifie qu'on n'a pas à spécifier manuellement un @var{sérialiseur} personnalisé pour chaque champ.

note: type: lisp
en: (define (foo-serialize-string field-name value)
      @dots{})
fr: (define (toto-serialize-string field-name value)
      @dots{})

note: type: lisp
en: (define (bar-serialize-string field-name value)
      @dots{})
fr: (define (titi-serialize-string field-name value)
      @dots{})

note: type: lisp
en: (define-configuration foo-configuration
      (label
       (string)
       "The name of label.")
      (prefix foo-))
fr: (define-configuration toto-configuration
      (label
       (string)
       "Le nom de l'étiquette.")
      (prefix toto-))

note: type: lisp
en: (define-configuration bar-configuration
      (ip-address
       (string)
       "The IPv4 address for this device.")
      (prefix bar-))
fr: (define-configuration titi-configuration
      (ip-address
       (string)
       "L'adresse IPv4 de cet appareil.")
      (prefix titi-))

note: type: deffn
en: However, in some cases you might not want to serialize any of the values of the record, to do this, you can use the @code{no-serialization} literal.  There is also the @code{define-configuration/no-serialization} macro which is a shorthand of this.
fr: Cependant, dans certains cas vous ne voudrez pas sérialiser les valeurs de l'enregistrement. Pour cela, vous pouvez utiliser le littéral @code{no-serialization}. Il y a aussi la macro @code{define-configuration/no-serialization} qui est un raccourci.

note: type: lisp
en: ;; Nothing will be serialized to disk.
    (define-configuration foo-configuration
      (field
       (string "test")
       "Some documentation.")
      (no-serialization))
fr: ;; Rien ne sera sérialisé sur le disque.
    (define-configuration toto-configuration
      (field
       (string "test")
       "De la documentation.")
      (no-serialization))

note: type: lisp
en: ;; The same thing as above.
    (define-configuration/no-serialization bar-configuration
      (field
       (string "test")
       "Some documentation."))
fr: ;; Comme au-dessus.
    (define-configuration/no-serialization titi-configuration
      (field
       (string "test")
       "De la documentation."))

note: type: deffn
en: {Scheme Syntax} define-maybe @var{type}
fr: {Syntaxe Scheme} define-maybe @var{type}

note: type: deffn
en: Sometimes a field should not be serialized if the user doesn’t specify a value.  To achieve this, you can use the @code{define-maybe} macro to define a ``maybe type''; if the value of a maybe type is left unset, or is set to the @code{%unset-value} value, then it will not be serialized.
fr: Parfois un champ ne devrait pas être sérialisé si l'utilisateur ou l'utilisatrice de spécifie par de valeur. Pour cela, vous pouvez utiliser la macro @code{define-maybe} pour définir un « type peut-être » ; si la valeur d'un type peut-être n'est pas spécifiée, ou est indiquée à @code{%unset-value}, elle n'est pas sérialisée.

note: type: deffn
en: When defining a ``maybe type'', the corresponding serializer for the regular type will be used by default.  For example, a field of type @code{maybe-string} will be serialized using the @code{serialize-string} procedure by default, you can of course change this by specifying a custom serializer procedure.  Likewise, the type of the value would have to be a string, or left unspecified.
fr: Lorsque vous définissez un « type peut-être », le sérialiseur correspondant au type normal sera utilisé par défaut. Par exemple, un champ de type @code{maybe-string} sera sérialisé avec la procédure @code{serialize-string} par défaut, vous pouvez évidemment changer cela en spécifiant une procédure de sérialisation personnalisée. De la même manière, le type de la valeur doit être une chaine, ou la valeur doit rester non spécifiée.

note: type: lisp
en: (define-configuration baz-configuration
      (name
       ;; If set to a string, the `serialize-string' procedure will be used
       ;; to serialize the string.  Otherwise this field is not serialized.
       maybe-string
       "The name of this module."))
fr: (define-configuration tata-configuration
      (name
       ;; Si c'est une chaine, la procédure « serialize-string » sera utilisée
       ;; pour sérialiser la chaine.  Sinon ce champ n'est pas sérialisé
       maybe-string
       "Le nom de ce module."))

note: type: deffn
en: Like with @code{define-configuration}, one can set a prefix for the serializer name by using the @code{prefix} literal.
fr: Comme avec @code{define-configuration}, on peut indiquer un préfixe pour le nom de sérialiseur en utilisant le littéral @code{prefix}.

note: type: lisp
en: (define-maybe integer
      (prefix baz-))
fr: (define-maybe integer
      (prefix tata-))

note: type: lisp
en: (define (baz-serialize-integer field-name value)
      @dots{})
fr: (define (tata-serialize-integer field-name value)
      @dots{})

note: type: deffn
en: There is also the @code{no-serialization} literal, which when set means that no serializer will be defined for the ``maybe type'', regardless of whether its value is set or not.  @code{define-maybe/no-serialization} is a shorthand for specifying the @code{no-serialization} literal.
fr: Il y a aussi le littéral @code{no-serialization}, qui s'il est utilisé indique qu'aucun sérialiseur ne sera défini pour le « type peut-être », indépendamment de si la valeur est indiquée ou non. @code{define-maybe/no-serialization} est un raccourci pour spécifier le littéral @code{no-serialization}.

note: type: deffn
en: (Scheme Procedure) maybe-value-set? @var{value}
fr: {Procédure Scheme} maybe-value-set? @var{valeur}

note: type: deffn
en: Predicate to check whether a user explicitly specified the value of a maybe field.
fr: Prédicat pour vérifier si l'utilisateur ou l'utilisatrice a spécifié la valeur d'un champ peut-être.

note: type: deffn
en: {Scheme Procedure} serialize-configuration @var{configuration} @
fr: {Procédure Scheme} serialize-configuration @var{configuration} @

note: type: deffn
en: @var{fields} Return a G-expression that contains the values corresponding to the @var{fields} of @var{configuration}, a record that has been generated by @code{define-configuration}.  The G-expression can then be serialized to disk by using something like @code{mixed-text-file}.
fr: @var{champs}
    Renvoie une G-expression qui contient les valeurs correspondant aux @var{champs} de @var{configuration}, un enregistrement qui a été généré par @code{define-configuration}. La G-expression peut ensuite être sérialisée vers le disque en utilisant par exemple @code{mixed-text-file}.

note: type: deffn
en: {Scheme Procedure} empty-serializer @var{field-name} @var{value}
fr: {Procédure Scheme} empty-serializer @var{champ-de-nom} @var{valeur}

note: type: deffn
en: A serializer that just returns an empty string.  The @code{serialize-package} procedure is an alias for this.
fr: Un sérialiseur qui renvoie juste une chaine vide. La procédure @code{serialize-package} est un alias pour cette procédure.

note: type: Plain text
en: Once you have defined a configuration record, you will most likely also want to document it so that other people know to use it.  To help with that, there are two procedures, both of which are documented below.
fr: Une fois que vous avez défini un enregistrement de configuration, vous voudrez aussi sans doute le documenter pour que d'autres personnes sachent comment l'utiliser. Pour vous aider, il y a deux procédure qui sont documentées plus bas.

note: type: deffn
en: {Scheme Procedure} generate-documentation @var{documentation} @
fr: {Procédure Scheme} generate-documentation @var{documentation} @

note: type: deffn
en: @var{documentation-name} Generate a Texinfo fragment from the docstrings in @var{documentation}, a list of @code{(@var{label} @var{fields} @var{sub-documentation} ...)}.  @var{label} should be a symbol and should be the name of the configuration record.  @var{fields} should be a list of all the fields available for the configuration record.
fr: @var{documentation-name}
    Génère un fragment Texinfo à partir de docstrings dans @var{documentation}, une liste de @code{(@var{étiquette} @var{champs} @var{sous-documentation} …)}. @var{étiquette} devrait être un symbole et devrait être le nom de l'enregistrement de configuration. @var{champs} devrait être une liste de tous les champs disponibles pour l'enregistrement de configuration.

note: type: deffn
en: @var{sub-documentation} is a @code{(@var{field-name} @var{configuration-name})} tuple.  @var{field-name} is the name of the field which takes another configuration record as its value, and @var{configuration-name} is the name of that configuration record.
fr: @var{sous-documentation} est un tuple @code{(@var{nom-de-champ} @var{nom-de-configuration})}. @var{nom-de-champ} est le nom du champ qui prend un autre enregistrement de configuration comme valeur, et @var{nom-de-configuration} est le nom de cet enregistrement de configuration.

note: type: deffn
en: @var{sub-documentation} is only needed if there are nested configuration records.  For example, the @code{getmail-configuration} record (@pxref{Mail Services}) accepts a @code{getmail-configuration-file} record in one of its @code{rcfile} field, therefore documentation for @code{getmail-configuration-file} is nested in @code{getmail-configuration}.
fr: @var{sous-documentation} n'est requis que s'il y a des enregistrements de configuration imbriqués. Par exemple, l'enregistrement @code{getmail-configuration} (@pxref{Mail Services}) accepte un enregistrement @code{getmail-configuration-file} dans l'un de ses champs @code{rcfile}, donc la documentation de @code{getmail-configuration-file} est imbriquée dans @code{getmail-configuration}.

note: type: deffn
en: @var{documentation-name} should be a symbol and should be the name of the configuration record.
fr: @var{nom-de-documentation} devrait être un symbole et devrait être le nom de l'enregistrement de configuration.

note: type: deffn
en: {Scheme Procedure} configuration->documentation
fr: {Procédure Scheme} configuration->documentation

note: type: deffn
en: @var{configuration-symbol} Take @var{configuration-symbol}, the symbol corresponding to the name used when defining a configuration record with @code{define-configuration}, and print the Texinfo documentation of its fields.  This is useful if there aren’t any nested configuration records since it only prints the documentation for the top-level fields.
fr: @var{configuration-symbol}
    Prend @var{configuration-symbol}, le symbole correspondant au nom utilisé pour définir un enregistrement de configuration avec @code{define-configuration}, et affiche la documentation Texinfo pour ses champs. Cette procédure est utile s'il n'y a pas d'enregistrement de configuration imbriqué car elle n'affiche que la documentation des champs de plus haut niveau.

note: type: Plain text
en: As of right now, there is no automated way to generate documentation for configuration records and put them in the manual.  Instead, every time you make a change to the docstrings of a configuration record, you have to manually call @code{generate-documentation} or @code{configuration->documentation}, and paste the output into the @file{doc/guix.texi} file.
fr: Actuellement, il n'y a pas de manière automatique de générer la documentation pour les enregistrements de configuration et les ajouter au manuel. Au lieu de cela, chaque fois que vous faites un changement dans les docstrings d'un enregistrement de configuration, vous devez appeler manuellement @code{generate-documentation} ou @code{configuration->documentation} et coller la sortie dans le fichier @file{doc/guix.texi}.

note: type: Plain text
en: Below is an example of a record type created using @code{define-configuration} and friends.
fr: Ci-dessous se trouve un exemple d'un type d'enregistrement créé avec @code{define-configuration} et compagnie.

note: type: lisp
en: ;; Turn field names, which are Scheme symbols into strings
    (define (uglify-field-name field-name)
      (let ((str (symbol->string field-name)))
        ;; field? -> is-field
        (if (string-suffix? "?" str)
            (string-append "is-" (string-drop-right str 1))
            str)))
fr: ;; Transforme les noms de champs, qui sont des symboles Scheme, en chaines
    (define (uglify-field-name field-name)
      (let ((str (symbol->string field-name)))
        ;; field? -> is-field
        (if (string-suffix? "?" str)
            (string-append "is-" (string-drop-right str 1))
            str)))

note: type: lisp
en: (define-configuration contact-configuration
      (name
       (string)
       "The name of the contact."
       serialize-contact-name)
      (phone-number
       maybe-integer
       "The person's phone number.")
      (email
       maybe-string
       "The person's email address.")
      (married?
       (boolean)
       "Whether the person is married."))
fr: (define-configuration contact-configuration
      (name
       (string)
       "Le nom du contact."
       serialize-contact-name)
      (phone-number
       maybe-integer
       "Le numéro de téléphone de la personne.")
      (email
       maybe-string
       "L'adresse de courriel de la personne.")
      (married?
       (boolean)
       "Indique si la personne est mariée."))

note: type: lisp
en: (define-configuration contacts-list-configuration
      (name
       (string)
       "The name of the owner of this contact list.")
      (email
       (string)
       "The owner's email address.")
      (contacts
       (list-of-contact-configurations '())
       "A list of @@code@{contact-configuation@} records which contain
    information about all your contacts."))
fr: (define-configuration contacts-list-configuration
      (name
       (string)
       "Le nom du propriétaire de cette liste de contacts.")
      (email
       (string)
       "L'adresse de courriel du propriétaire.")
      (contacts
       (list-of-contact-configurations '())
       "Une liste d'enregistrements @@code@{contact-configuation@} qui contiennent
    des informations sur tous vos contacts."))

note: type: Plain text
en: A contacts list configuration could then be created like this:
fr: Une configuration de liste de contacts pourrait alors être créée de cette manière :

note: type: Plain text
en: After serializing the configuration to disk, the resulting file would look like this:
fr: Après la sérialisation de la configuration sur le disque, le fichier qui en résulte ressemble à ceci :

note: type: cindex
en: home configuration
fr: configuration du dossier personnel

note: type: Plain text
en: Guix supports declarative configuration of @dfn{home environments} by utilizing the configuration mechanism described in the previous chapter (@pxref{Defining Services}), but for user's dotfiles and packages.  It works both on Guix System and foreign distros and allows users to declare all the packages and services that should be installed and configured for the user.  Once a user has written a file containing @code{home-environment} record, such a configuration can be @dfn{instantiated} by an unprivileged user with the @command{guix home} command (@pxref{Invoking guix home}).
fr: Guix prend en charge la configuration déclarative des @dfn{environnement personnels} en utilisant le mécanisme de configuration décrit au chapitre précédent (@pxref{Defining Services}), mais pour les paquets et les fichiers de configuration des utilisateurs et utilisatrices. Cela fonctionne aussi bien sur le système Guix que sur les distributions externes et vous permet de déclarer tous les paquets et services qui devraient être installés et configurés. Une fois que vous avez écrit un fichier contenant un enregistrement @code{home-environment}, cette configuration peut être @dfn{instanciée} par un utilisateur ou une utilisatrice non privilégié·e avec la commande @command{guix home} (@pxref{Invoking guix home}).

note: type: Plain text
en: The user's home environment usually consists of three basic parts: software, configuration, and state.  Software in mainstream distros are usually installed system-wide, but with GNU Guix most software packages can be installed on a per-user basis without needing root privileges, and are thus considered part of the user’s @dfn{home environment}.  Packages on their own are not very useful in many cases, because often they require some additional configuration, usually config files that reside in @env{XDG_CONFIG_HOME} (@file{~/.config} by default) or other directories.  Everything else can be considered state, like media files, application databases, and logs.
fr: Votre environnement personnel consiste en général de trois parties : les logiciels, la configuration et l'état. Dans les distributions populaires, les logiciels sont habituellement installés au niveau du système, mais avec GNU Guix, la plupart des paquets peuvent être installés indépendamment par chaque utilisateur et utilisatrice sans nécessiter de privilèges root, et font donc partie de votre @dfn{environnement personnel}. Les paquets seuls ne sont généralement pas très utiles car ils nécessitent de la configuration supplémentaire, typiquement dans des fichiers de configuration dans @env{XDG_CONFIG_HOME} (@file{~/.config} par défaut) ou d'autres répertoires. Tout le reste peut être considéré comme faisant partie de l'état, comme les fichiers multimédia, les bases de données des applications et les journaux.

note: type: Plain text
en: Using Guix for managing home environments provides a number of advantages:
fr: Utiliser Guix pour gérer votre environnement personnel apporte de nombreux avantages :

note: type: item
en: All software can be configured in one language (Guile Scheme),
fr: Tous vos logiciels peuvent être configurés en un unique langage (Guile Scheme),

note: type: itemize
en: this gives users the ability to share values between configurations of different programs.
fr: cela vous donne la possibilité de partager des valeurs entre les configurations de plusieurs programmes.

note: type: item
en: A well-defined home environment is self-contained and can be
fr: Un environnement personnel bien défini est auto-contenu et peut

note: type: itemize
en: created in a declarative and reproducible way---there is no need to grab external binaries or manually edit some configuration file.
fr: être créé de manière déclarative et reproductible — pas besoin de récupérer des binaires externes ou de modifier des fichiers de configuration.

note: type: item
en: After every @command{guix home reconfigure} invocation, a new home
fr: Après chaque @command{guix home reconfigure}, une nouvelle génération de

note: type: itemize
en: environment generation will be created.  This means that users can rollback to a previous home environment generation so they don’t have to worry about breaking their configuration.
fr: l'environnement personnel sera créée. Cela signifie que vous pouvez revenir à une génération précédente de votre environnement personnel et que vous n'avez pas à craindre de casser votre configuration.

note: type: item
en: It is possible to manage stateful data with Guix Home, this
fr: Il est possible de gérer les données avec état avec Guix Home,

note: type: itemize
en: includes the ability to automatically clone Git repositories on the initial setup of the machine, and periodically running commands like @command{rsync} to sync data with another host.  This functionality is still in an experimental stage, though.
fr: ce qui inclut la possibilité de cloner automatiquement des dépôts Git lors de la première configuration de la machine, et de lancer régulièrement des commandes comme @command{rsync} pour synchroniser vos données entre vos hôtes. Cette fonctionnalité est cependant toujours expérimentale.

note: type: section
en: Declaring the Home Environment
fr: Déclarer l'environnement personnel

note: type: menuentry
en: Customizing your Home.
fr: Personnaliser votre dossier personnel.

note: type: section
en: Configuring the Shell
fr: Configurer le shell

note: type: menuentry
en: Enabling home environment.
fr: Activer l'environnement personnel.

note: type: section
en: Home Services
fr: Services du dossier personnel

note: type: menuentry
en: Specifying home services.
fr: Spécifier les services du dossier personnel.

note: type: menuentry
en: Instantiating a home configuration.
fr: Instancier une configuration du dossier personnel.

note: type: Plain text
en: The home environment is configured by providing a @code{home-environment} declaration in a file that can be passed to the @command{guix home} command (@pxref{Invoking guix home}).  The easiest way to get started is by generating an initial configuration with @command{guix home import}:
fr: L'environnement personnel est configuré en fournissant une déclaration @code{home-environment} dans un fichier qui peut être passé à la commande @command{guix home} (@pxref{Invoking guix home}). Le plus facile pour commencer est de générer une configuration initiale avec @command{guix home import} :

note: type: Plain text
en: The @command{guix home import} command reads some of the ``dot files'' such as @file{~/.bashrc} found in your home directory and copies them to the given directory, @file{~/src/guix-config} in this case; it also reads the contents of your profile, @file{~/.guix-profile}, and, based on that, it populates @file{~/src/guix-config/home-configuration.scm} with a Home configuration that resembles your current configuration.
fr: La commande @command{guix home import} lit certains « dot files » comme @file{~/.bashrc} qui se trouvent dans votre dossier personnel et les copie dans le dossier donné, @file{~/src/guix-config} dans notre exemple. Il lit aussi le contenu de votre profil, @file{~/.guix-profile}, et, en fonction de cela, il rempli @file{~/src/guix-config/home-configuration.scm} avec une configuration du dossier personnel qui ressemble à votre configuration actuelle.

note: type: Plain text
en: A simple setup can include Bash and a custom text configuration, like in the example below.  Don't be afraid to declare home environment parts, which overlaps with your current dot files: before installing any configuration files, Guix Home will back up existing config files to a separate place in the home directory.
fr: Une configuration simple peut inclure par exemple Bash et une configuration textuelle personnalisée, comme dans l'exemple ci-dessous. N'ayez pas peur de déclarer des parties de votre environnement personnel qui correspondent à des fichiers de configuration existants : avant d'installer les fichiers de configuration, Guix Home créera une sauvegarde des fichiers existants à un emplacement distinct de votre dossier personnel.

note: type: quotation
en: It is highly recommended that you manage your shell or shells with Guix Home, because it will make sure that all the necessary scripts are sourced by the shell configuration file.  Otherwise you will need to do it manually. (@pxref{Configuring the Shell}).
fr: Il est fortement recommandé de gérer votre shell avec Guix Home, car il s'assurera que tous les scripts nécessaires seront sourcés par le fichier de configuration du shell. Sinon, vous devrez le faire manuellement. (@pxref{Configuring the Shell}).

note: type: Plain text
en: The @code{packages} field should be self-explanatory, it will install the list of packages into the user's profile.  The most important field is @code{services}, it contains a list of @dfn{home services}, which are the basic building blocks of a home environment.
fr: Le champ @code{packages} devrait être évident, il installera la liste des paquets dans votre profil. Le champ le plus important est @code{services}, qui contient une liste de @dfn{services personnels}, qui sont les blocs de base d'un environnement personnel.

note: type: Plain text
en: There is no daemon (at least not necessarily) related to a home service, a home service is just an element that is used to declare part of home environment and extend other parts of it.  The extension mechanism discussed in the previous chapter (@pxref{Defining Services}) should not be confused with Shepherd services (@pxref{Shepherd Services}).  Using this extension mechanism and some Scheme code that glues things together gives the user the freedom to declare their own, very custom, home environments.
fr: Il n'y a pas de démon (en tout cas pas nécessairement) lié à un service personnel, un service personnel est seulement un élément qui est utilisé pour déclarer une partie de l'environnement personnel et en étendre d'autres parties. Le mécanisme d'extension présenté dans le chapitre précédent (@pxref{Defining Services}) ne doit pas être confondu avec les services Shepherd (@pxref{Shepherd Services}). L'utilisation de ce mécanisme d'extension et de code Scheme autour vous donne la liberté de déclarer votre propre environnement personnel, hautement personnalisé.

note: type: cindex
en: container, for @command{guix home}
fr: conteneur, pour @command{guix home}

note: type: Plain text
en: Once the configuration looks good, you can first test it in a throw-away ``container'':
fr: Une fois que la configuration a l'air bonne, vous pouvez d'abord la tester dans un « conteneur » jetable :

note: type: Plain text
en: The command above spawns a shell where your home environment is running.  The shell runs in a container, meaning it's isolated from the rest of the system, so it's a good way to try out your configuration---you can see if configuration bits are missing or misbehaving, if daemons get started, and so on.  Once you exit that shell, you're back to the prompt of your original shell ``in the real world''.
fr: La commande ci-dessus démarre un shell où votre environnement personnel est lancé. Le shell tourne dans un conteneur, ce qui signifie qu'il est isolé du reste du système, donc c'est un bon moyen d'essayer votre configuration --- vous pouvez vérifier s'il manque des bouts de configuration ou si elle ne se comporte pas correctement, si les démons sont démarrés, etc. Une fois que vous quittez ce shell, vous retournez à l'invite de commande de votre shell de départ « dans le monde réel ».

note: type: Plain text
en: Once you have a configuration file that suits your needs, you can reconfigure your home by running:
fr: Une fois que votre configuration correspond à vos besoins, vous pouvez reconfigurer votre dossier personnel en exécutant :

note: type: Plain text
en: This ``builds'' your home environment and creates @file{~/.guix-home} pointing to it.  Voilà!
fr: Cette commande « construit » votre environnement personnel et crée un lien @file{~/.guix-home} qui pointe dessus. Et voilà !

note: type: quotation
en: Make sure the operating system has elogind, systemd, or a similar mechanism to create the XDG run-time directory and has the @env{XDG_RUNTIME_DIR} variable set.  Failing that, the @file{on-first-login} script will not execute anything, and processes like user Shepherd and its descendants will not start.
fr: Assurez-vous que votre système d'exploitation a elogind, systemd ou un mécanisme similaire pour créer les répertoires XDG à l'exécution et défini la variable @env{XDG_RUNTIME_DIR}. Autrement, le script @file{on-first-login} ne sera pas exécuté et les processus comme le Shepherd utilisateur et ses descendants ne démarreront pas.

note: type: Plain text
en: This section is safe to skip if your shell or shells are managed by Guix Home.  Otherwise, read it carefully.
fr: Vous pouvez sauter cette section sans problème si votre shell ou vos shells sont gérés par Guix Home. Sinon, lisez-la avec attention.

note: type: Plain text
en: There are a few scripts that must be evaluated by a login shell to activate the home environment.  The shell startup files only read by login shells often have @code{profile} suffix.  For more information about login shells see @ref{Invoking Bash,,, bash, The GNU Bash Reference Manual} and see @ref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}.
fr: Il y a quelques scripts qui doivent être évalués par un shell de connexion pour activer l'environnement personnel. Les fichiers de démarrage du shell lus par les shells de connexion ont souvent le suffixe @code{profile}. Pour plus d'information sur les shells de connexion, voir @ref{Invoking Bash,,, bash, The GNU Bash Reference Manual} et voir @ref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}.

note: type: Plain text
en: The first script that needs to be sourced is @file{setup-environment}, which sets all the necessary environment variables (including variables declared by the user) and the second one is @file{on-first-login}, which starts Shepherd for the current user and performs actions declared by other home services that extends @code{home-run-on-first-login-service-type}.
fr: Le premier script qui a besoin d'être sourcé est @file{setup-environment}, qui initialise toutes les variables d'environnement nécessaires (dont les variables que vous avez déclarées) et le second est @file{on-first-login}, qui démarre Shepherd pour l'utilisateur actuel et effectue les action déclarées par les autres services personnels qui étendent @code{home-run-on-first-login-service-type}.

note: type: Plain text
en: Guix Home will always create @file{~/.profile}, which contains the following lines:
fr: Guix Home créera toujours @file{~/.profile}, qui contient les lignes suivantes :

note: type: Plain text
en: This makes POSIX compliant login shells activate the home environment.  However, in most cases this file won't be read by most modern shells, because they are run in non POSIX mode by default and have their own @file{*profile} startup files.  For example Bash will prefer @file{~/.bash_profile} in case it exists and only if it doesn't will it fallback to @file{~/.profile}.  Zsh (if no additional options are specified) will ignore @file{~/.profile}, even if @file{~/.zprofile} doesn't exist.
fr: Cela fait activer l'environnement personnel sur les shell POSIX. Cependant, dans la plupart des cas ce fichier ne sera pas lu par les shells les plus modernes, parce qu'ils sont lancés en mode non POSIX par défaut et qu'ils ont leur propre fichiers de démarrage @file{*profile}. Par exemple Bash préfèrera @file{~/.bash_profile} s'il existe et n'utilisera @file{~/.profile} que s'il n'existe pas. Zsh (sans option supplémentaire) ignorera @file{~/.profile} même si @file{~/.zprofile} n'existe pas.

note: type: Plain text
en: To make your shell respect @file{~/.profile}, add @code{. ~/.profile} or @code{source ~/.profile} to the startup file for the login shell.  In case of Bash, it is @file{~/.bash_profile}, and in case of Zsh, it is @file{~/.zprofile}.
fr: Pour que votre shell respecte @file{~/.profile}, ajoutez @code{. ~/.profile} ou @code{source ~/.profile} au fichier de démarrage pour le shell de connexion. Dans le cas d eBash, c'est @file{~/.bash_profile}, et dans le cas de Zsh, c'est @file{~/.zprofile}.

note: type: quotation
en: This step is only required if your shell is @emph{not} managed by Guix Home.  Otherwise, everything will be done automatically.
fr: Cette étape n'est requise que si votre shell n'est @emph{pas} géré par Guix HOME. Sinon, tout sera déjà fait automatiquement.

note: type: cindex
en: home services
fr: services personnels

note: type: Plain text
en: A @dfn{home service} is not necessarily something that has a daemon and is managed by Shepherd (@pxref{Jump Start,,, shepherd, The GNU Shepherd Manual}), in most cases it doesn't.  It's a simple building block of the home environment, often declaring a set of packages to be installed in the home environment profile, a set of config files to be symlinked into @env{XDG_CONFIG_HOME} (@file{~/.config} by default), and environment variables to be set by a login shell.
fr: Un @dfn{service personnel} ne correspond pas forcément à un démon géré par le Shepherd (@pxref{Jump Start,,, shepherd, The GNU Shepherd Manual}), dans la plupart des cas ce n'est pas le cas. C'est un simple bloc de construction de l'environnement personnel, souvent déclaré comme une ensemble de paquets à installer dans le profil de l'environnement personnel, un ensemble de fichiers de configuration vers lesquels créer des liens symboliques dans @env{XDG_CONFIG_HOME} (@file{~/.config} par défaut) et des variables d'environnement à initialiser dans un shell de connexion.

note: type: Plain text
en: There is a service extension mechanism (@pxref{Service Composition})  which allows home services to extend other home services and utilize capabilities they provide; for example: declare mcron jobs (@pxref{Top,,, mcron, GNU@tie{}Mcron}) by extending @ref{Mcron Home Service}; declare daemons by extending @ref{Shepherd Home Service}; add commands, which will be invoked on by the Bash by extending @ref{Shells Home Services, @code{home-bash-service-type}}.
fr: Il y a un mécanisme d'extension de services (@pxref{Service Composition}) qui permet aux services personnels d'étendre les autres services personnels et d'utiliser leurs fonctionnalités ; par exemple : déclarer des tâches mcron (@pxref{Top,,, mcron, GNU@tie{}Mcron}) en étendant @ref{Mcron Home Service} ; déclarer des démons en étendant @ref{Shepherd Home Service} ; ajouter des commandes qui seront invoquées par Bash en étendant @ref{Shells Home Services, @code{home-bash-service-type}}.

note: type: Plain text
en: A good way to discover available home services is using the @command{guix home search} command (@pxref{Invoking guix home}).  After the required home services are found, include its module with the @code{use-modules} form (@pxref{use-modules,, Using Guile Modules, guile, The GNU Guile Reference Manual}), or the @code{#:use-modules} directive (@pxref{define-module,, Creating Guile Modules, guile, The GNU Guile Reference Manual}) and declare a home service using the @code{service} function, or extend a service type by declaring a new service with the @code{simple-service} procedure from @code{(gnu services)}.
fr: Une bonne manière de découvrir les services personnels disponibles est d'utiliser la commande @command{guix home search} (@pxref{Invoking guix home}). Après avoir trouvé les services personnels requis, ajoutez son module avec la forme @code{use-modules} (@pxref{use-modules,, Using Guile Modules, guile, The GNU Guile Reference Manual}), ou la directive  @code{#:use-modules} (@pxref{define-module,, Creating Guile Modules, guile, The GNU Guile Reference Manual}) et déclarez un service personnels avec la fonction @code{service}, ou étendez un type de service en déclarant un nouveau service avec la procédure @code{simple-service} de @code{(gnu services)}.

note: type: subsection
en: Essential Home Services
fr: Services personnels essentiels

note: type: menuentry
en: Environment variables, packages, on-* scripts.
fr: Une liste de variables d'environnement, de paquets et de scripts on-*.

note: type: menuentry
en: Shells: Shells Home Services
fr: Shells : Services shells personnels

note: type: menuentry
en: POSIX shells, Bash, Zsh.
fr: Shells POSIX, Bash, Zsh.

note: type: menuentry
en: Mcron: Mcron Home Service
fr: Mcron : Service personnel Mcron

note: type: menuentry
en: Scheduled User's Job Execution.
fr: Exécution de tâches planifiées par utilisateur.

note: type: menuentry
en: Power Management: Power Management Home Services
fr: Gestion de l'énergie : Services personnels de gestion de l'énergie

note: type: menuentry
en: Services for battery power.
fr: Services pour la batterie.

note: type: menuentry
en: Shepherd: Shepherd Home Service
fr: Shepherd : Service Shepherd personnel

note: type: menuentry
en: Managing User's Daemons.
fr: Gérer les démons utilisateurs.

note: type: menuentry
en: SSH: Secure Shell
fr: SSH : Shell sécurisé

note: type: menuentry
en: Setting up the secure shell client.
fr: Configurer le client de shell sécurisé.

note: type: menuentry
en: Desktop: Desktop Home Services
fr: Bureau : Services personnels pour ordinateur de bureau

note: type: menuentry
en: Services for graphical environments.
fr: Service pour les environnements graphiques.

note: type: menuentry
en: Guix: Guix Home Services
fr: Guix : Services personnels Guix

note: type: menuentry
en: Services for Guix.
fr: Services pour Guix.

note: type: Plain text
en: There are a few essential home services defined in @code{(gnu services)}, they are mostly for internal use and are required to build a home environment, but some of them will be useful for the end user.
fr: Il y a quelques services essentiels définis dans @code{(gnu services)}, ils sont surtout utilisés en interne et sont requis pour construire un environnement personnel, mais certains vous seront utiles.

note: type: cindex
en: environment variables
fr: variables d'environment

note: type: defvr
en: {Scheme Variable} home-environment-variables-service-type
fr: {Variable Scheme} home-environment-variables-service-type

note: type: defvr
en: The service of this type will be instantiated by every home environment automatically by default, there is no need to define it, but someone may want to extend it with a list of pairs to set some environment variables.
fr: Le service de ce type sera instancié par chaque environnement personnel automatiquement par défaut, il n'y a pas besoin de le définir, mais vous voudrez peut-être l'étendre avec une liste de paires pour initialiser certaines variables d'environnement.

note: type: lisp
en: (list ("ENV_VAR1" . "value1")
          ("ENV_VAR2" . "value2"))
fr: (list ("ENV_VAR1" . "valeur1")
          ("ENV_VAR2" . "valeur2"))

note: type: defvr
en: The easiest way to extend a service type, without defining a new service type is to use the @code{simple-service} helper from @code{(gnu services)}.
fr: Le plus simple pour étendre un type de service, sans définir un nouveau type de service est d'utiliser la fonction @code{simple-service} de @code{(gnu services)}.

note: type: lisp
en: (simple-service 'some-useful-env-vars-service
    		home-environment-variables-service-type
    		`(("LESSHISTFILE" . "$XDG_CACHE_HOME/.lesshst")
                      ("SHELL" . ,(file-append zsh "/bin/zsh"))
                      ("USELESS_VAR" . #f)
                      ("_JAVA_AWT_WM_NONREPARENTING" . #t)))
fr: (simple-service 'un-service-de-variables-utiles
    		home-environment-variables-service-type
    		`(("LESSHISTFILE" . "$XDG_CACHE_HOME/.lesshst")
                      ("SHELL" . ,(file-append zsh "/bin/zsh"))
                      ("USELESS_VAR" . #f)
                      ("_JAVA_AWT_WM_NONREPARENTING" . #t)))

note: type: defvr
en: If you include such a service in you home environment definition, it will add the following content to the @file{setup-environment} script (which is expected to be sourced by the login shell):
fr: Si vous incluez un tel service dans votre définition d'environnement personnel, il ajoutera le contenu suivant au script @file{setup-environment} (qui doit être sourcé par le shell de connexion) :

note: type: quotation
en: Make sure that module @code{(gnu packages shells)} is imported with @code{use-modules} or any other way, this namespace contains the definition of the @code{zsh} package, which is used in the example above.
fr: Assurez-vous que le module @code{(gnu packages shells)} est importé avec @code{use-modules} ou d'une autre façon ; cet espace de nom contient la définition du paquet @code{zsh}, utilisé dans l'exemple précédent.

note: type: defvr
en: The association list (@pxref{Association Lists, alists, Association Lists, guile, The GNU Guile Reference manual}) is a data structure containing key-value pairs, for @code{home-environment-variables-service-type} the key is always a string, the value can be a string, string-valued gexp (@pxref{G-Expressions}), file-like object (@pxref{G-Expressions, file-like object}) or boolean.  For gexps, the variable will be set to the value of the gexp; for file-like objects, it will be set to the path of the file in the store (@pxref{The Store}); for @code{#t}, it will export the variable without any value; and for @code{#f}, it will omit variable.
fr: La liste d'association (@pxref{Association Lists, alists, Association Lists, guile, le manuel de référence de Guile}) est une structure de données contenant des paires de clé-valeurs. Pour @code{home-environment-variables-service-type} la clé est toujours une chaine, la valeur peut être une chaine, une gexp s'évaluant en une chaine (@pxref{G-Expressions}), un objet simili-fichier (@pxref{G-Expressions, file-like object}) ou un booléen. Pour les gexps, la variable sera initialisée à la valeur de la gexp ; pour les objets simili-fichiers, elle sera initialisée au chemin du fichier dans le dépôt (@pxref{The Store}) ; pour @code{#t}, la variable sera exportée sans valeur et pour @code{#f}, la variable sera omise.

note: type: defvr
en: {Scheme Variable} home-profile-service-type
fr: {Variable Scheme} home-profile-service-type

note: type: defvr
en: The service of this type will be instantiated by every home environment automatically, there is no need to define it, but you may want to extend it with a list of packages if you want to install additional packages into your profile.  Other services, which need to make some programs available to the user will also extend this service type.
fr: Le service de ce type sera instancié par chaque environnement personnel automatiquement, il n'y a pas besoin de le définir, mais vous pouvez l'étendre avec une liste de paquets si vous voulez installer des paquets supplémentaires dans votre profil. D'autres services, qui ont besoin de rendre certains programmes disponible à l'utilisateur ou l'utilisatrice étendront aussi ce type de service.

note: type: defvr
en: The extension value is just a list of packages:
fr: La valeur d'extension est simplement une liste de paquets :

note: type: defvr
en: The same approach as @code{simple-service} (@pxref{Service Reference, simple-service}) for @code{home-environment-variables-service-type} can be used here, too.  Make sure that modules containing the specified packages are imported with @code{use-modules}.  To find a package or information about its module use @command{guix search} (@pxref{Invoking guix package}).  Alternatively, @code{specification->package} can be used to get the package record from string without importing related module.
fr: Vous pouvez utiliser la même approche avec @code{simple-service} (@pxref{Service Reference, simple-service}) que pour  @code{home-environment-variables-service-type} . Assurez-vous que les modules contenant les paquets spécifiés sont importés avec @code{use-modules}. Pour trouver un paquet ou des informations à propos de son module utilisez @command{guix search} @pxref{Invoking guix package}). Autrement, vous pouvez utiliser @code{specification->package} pour récupérer l'enregistrement de paquet à partir d'une chaine sans importer le module correspondant.

note: type: Plain text
en: There are few more essential services, but users are not expected to extend them.
fr: Il y a quelques autres services essentiels, mais vous n'avez pas besoin de les étendre.

note: type: defvr
en: {Scheme Variable} home-service-type
fr: {Variable Scheme} home-service-type

note: type: defvr
en: The root of home services DAG, it generates a folder, which later will be symlinked to @file{~/.guix-home}, it contains configurations, profile with binaries and libraries, and some necessary scripts to glue things together.
fr: La racine du graphe des services personnels, elle génère un dossier qui sera plus tard lié à partir de @file{~/.guix-home}, il contient les configurations, le profil avec les binaires et les bibliothèques et certains scripts nécessaires pour tout faire fonctionner ensemble.

note: type: defvr
en: {Scheme Variable} home-run-on-first-login-service-type
fr: {Variable Scheme} home-run-on-first-login-service-type

note: type: defvr
en: The service of this type generates a Guile script, which is expected to be executed by the login shell.  It is only executed if the special flag file inside @env{XDG_RUNTIME_DIR} hasn't been created, this prevents redundant executions of the script if multiple login shells are spawned.
fr: Le service de ce type génère un script Guile qui devrait être lancé par le shell de connexion. Il n'est exécuté que si le fichier spécial dans @env{XDG_RUNTIME_DIR} n'a pas été créé, ce qui évite les exécutions supplémentaires de ce script si plusieurs shells de connexion sont ouverts.

note: type: defvr
en: It can be extended with a gexp.  However, to autostart an application, users @emph{should not} use this service, in most cases it's better to extend @code{home-shepherd-service-type} with a Shepherd service (@pxref{Shepherd Services}), or extend the shell's startup file with the required command using the appropriate service type.
fr: Il peut être étendu avec une gexp. Cependant, pour démarrer une application automatiquement, vous ne @emph{devriez pas} utiliser ce service, dans la plupart des cas il vaut mieux étendre @code{home-shepherd-service-type} avec un service Shepherd (@pxref{Shepherd Services}), ou en étendant le fichier de démarrage de shell avec la commande requise en utilisant le type de service approprié.

note: type: defvr
en: {Scheme Variable} home-files-service-type
fr: {Variable Scheme} home-files-service-type

note: type: defvr
en: The service of this type allows to specify a list of files, which will go to @file{~/.guix-home/files}, usually this directory contains configuration files (to be more precise it contains symlinks to files in @file{/gnu/store}), which should be placed in @file{$XDG_CONFIG_DIR} or in rare cases in @file{$HOME}.  It accepts extension values in the following format:
fr: Le service de ce type permet de spécifier une liste de fichiers, qui iront dans @file{~/.guix-home/files}. Ce répertoire contient généralement des fichiers de configuration (pour être plus précis, il contient des liens symboliques vers des fichiers de @file{/gnu/store}) qui devraient être placés dans @file{$XDG_CONFIG_DIR} ou dans de rares cas dans @file{$HOME}. Il accepte des valeurs d'extension de cette forme :

note: type: defvr
en: Each nested list contains two values: a subdirectory and file-like object.  After building a home environment @file{~/.guix-home/files} will be populated with apropiate content and all nested directories will be created accordingly, however, those files won't go any further until some other service will do it.  By default a @code{home-symlink-manager-service-type}, which creates necessary symlinks in home folder to files from @file{~/.guix-home/files} and backs up already existing, but clashing configs and other things, is a part of essential home services (enabled by default), but it's possible to use alternative services to implement more advanced use cases like read-only home.  Feel free to experiment and share your results.
fr: Chaque liste imbriquée contient deux valeurs : un sous-répertoire et un objet simili-fichier. Après la construction d'un environnement personnel @file{~/.guix-home/files} contiendra le contenu approprié et tous les répertoires imbriqués seront créés en fonction. Cependant, ces fichiers n'iront nul part ailleurs à moins qu'un autre service s'en occupe. Par défaut un service @code{home-symlink-manager-service-type}, qui crée les liens symboliques nécessaires vers les fichiers de @file{~/.guix-home/files} et sauvegarde les fichiers existants en conflit et d'autres choses, fait partie des services personnels essentiels (activés par défaut), mais il est possible d'utiliser des services alternatifs pour implémenter des cas d'usage plus avancés comme un dossier personnel en lecture-seule. Expérimentez et partagez vos trouvailles.

note: type: defvr
en: {Scheme Variable} home-xdg-configuration-files-service-type
fr: {Variable Scheme} home-configuration-files-service-type

note: type: defvr
en: The service is very similiar to @code{home-files-service-type} (and actually extends it), but used for defining files, which will go to @file{~/.guix-home/files/.config}, which will be symlinked to @file{$XDG_CONFIG_DIR} by @code{home-symlink-manager-service-type} (for example) during activation.  It accepts extension values in the following format:
fr: Le service est très semblable au service @code{home-files-service-type} (et l'étend en fait), mais il est utilisé pour définir des fichiers qui iront dans @file{~/.guix-home/files/.config}, et qui seront liés symboliquement dans @file{$XDG_CONFIG_DIR} par @code{home-symlink-manager-service-type} (par exemple) à l'activation. Il accepte des valeurs d'extension dans ce format :

note: type: lisp
en: `(("sway/config" ,sway-file-like-object)
      ;; -> ~/.guix-home/files/.config/sway/config
      ;; -> $XDG_CONFIG_DIR/sway/config (by symlink-manager)
      ("tmux/tmux.conf" ,(local-file "./tmux.conf")))
fr: `(("sway/config" ,sway-file-like-object)
      ;; -> ~/.guix-home/files/.config/sway/config
      ;; -> $XDG_CONFIG_DIR/sway/config (par symlink-manager)
      ("tmux/tmux.conf" ,(local-file "./tmux.conf")))

note: type: defvr
en: {Scheme Variable} home-activation-service-type
fr: {Variable Scheme} home-activation-service-type

note: type: defvr
en: The service of this type generates a guile script, which runs on every @command{guix home reconfigure} invocation or any other action, which leads to the activation of the home environment.
fr: Le service de ce type génère un script guile qui est lancé à chaque invocation de @command{guix home reconfigure} ou n'importe quelle autre action qui active l'environnement personnel.

note: type: defvr
en: {Scheme Variable} home-symlink-manager-service-type
fr: {Variable Scheme} home-symlink-manager-service-type

note: type: defvr
en: The service of this type generates a guile script, which will be executed during activation of home environment, and do a few following steps:
fr: Le service de ce type génère un script guile qui sera exécuté à l'activation de l'environnement personnel, et effectuera les actions suivantes :

note: type: enumerate
en: Reads the content of @file{files/} directory of current and pending home environments.
fr: Lire le contenu du répertoire @file{files/} des environnements personnels actuels et en attente.

note: type: enumerate
en: Cleans up all symlinks created by symlink-manager on previous activation.  Also, sub-directories, which become empty also will be cleaned up.
fr: Nettoyer tous les liens symboliques créés par symlink-manager à l'activation précédente. En plus, les sous-répertoires qui deviennent vides seront aussi nettoyés.

note: type: enumerate
en: Creates new symlinks the following way: It looks @file{files/} directory (usually defined with @code{home-files-service-type}, @code{home-xdg-configuration-files-service-type} and maybe some others), takes the files from @file{files/.config/} subdirectory and put respective links in @env{XDG_CONFIG_DIR}.  For example symlink for @file{files/.config/sway/config} will end up in @file{$XDG_CONFIG_DIR/sway/config}.  The rest files in @file{files/} outside of @file{files/.config/} subdirectory will be treated slightly different: symlink will just go to @file{$HOME}.  @file{files/.some-program/config} will end up in @file{$HOME/.some-program/config}.
fr: Créer de nouveaux liens symboliques de cette façon : il cherche dans le répertoire @file{files/} (normalement défini avec  @code{home-files-service-type}, @code{home-xdg-configuration-files-service-type} et éventuellement d'autres), prend les fichiers du sous-répertoire @file{files/.config/} et place des liens symboliques correspondant dans @env{XDG_CONFIG_DIR}. Par exemple le lien symbolique pour @file{files/.config/sway/config} se retrouvera dans @file{$XDG_CONFIG_DIR/sway/config}. Le reste des fichiers de @file{files/} en dehors du sous-répertoire @file{files/.config/} seront traités un peu différemment : un lien symbolique sera créé dans @file{$HOME}. @file{files/.un-programme/config} se retrouvera dans @file{$HOME/.un-programme/config}.

note: type: enumerate
en: If some sub-directories are missing, they will be created.
fr: Si certains sous-répertoires sont absents, ils seront créés.

note: type: enumerate
en: If there is a clashing files on the way, they will be backed up.
fr: Si des fichiers sont en conflit, ils seront sauvegardés.

note: type: defvr
en: symlink-manager is a part of essential home services and is enabled and used by default.
fr: symlink-manager fait partie des services personnels essentiels et est activé et utilisé par défaut.

note: type: node
en: Shells Home Services
fr: Services shells personnels

note: type: cindex
en: login shell
fr: shell de connexion

note: type: cindex
en: interactive shell
fr: shell interactif

note: type: Plain text
en: Shells play a quite important role in the environment initialization process, you can configure them manually as described in section @ref{Configuring the Shell}, but the recommended way is to use home services listed below.  It's both easier and more reliable.
fr: Les shells jouent un rôle important dans le processus d'initialisation de l'environnement, et vous pouvez les configurer manuellement comme décrit dans la section @ref{Configuring the Shell}, mais il est recommandé d'utiliser les services personnels listés plus bas. C'est à la fois plus facile et plus fiable.

note: type: Plain text
en: Each home environment instantiates @code{home-shell-profile-service-type}, which creates a @file{~/.profile} startup file for all POSIX-compatible shells.  This file contains all the necessary steps to properly initialize the environment, but many modern shells like Bash or Zsh prefer their own startup files, that's why the respective home services (@code{home-bash-service-type} and @code{home-zsh-service-type}) ensure that @file{~/.profile} is sourced by @file{~/.bash_profile} and @file{~/.zprofile}, respectively.
fr: Chaque environnement personnel instancie @code{home-shell-profile-service-type}, qui crée un fichier de démarrage @file{~/.profile} pour tous les shell POSIX. Ce fichier content toutes les étapes nécessaires à l'initialisation de l'environnement, mais de nombreux shells modernes comme Bash ou Zsh préfèrent leur propres fichiers de démarrage, c'est pourquoi les services personnels correspondants (@code{home-bash-service-type} et @code{home-zsh-service-type}) s'assurent que @file{~/.profile} est sourcé par @file{~/.bash_profile} et @file{~/.zprofile}, respectivement.

note: type: subsubheading
en: Shell Profile Service
fr: Service de profil du shell

note: type: deftp
en: {Data Type} home-shell-profile-configuration
fr: {Type de données} home-shell-profile-configuration

note: type: deftp
en: Available @code{home-shell-profile-configuration} fields are:
fr: Les champs de @code{home-shell-profile-configuration} disponibles sont :

note: type: item
en: @code{profile} (default: @code{()}) (type: text-config)
fr: @code{profile} (par défaut : @code{()}) (type : text-config)

note: type: table
en: @code{home-shell-profile} is instantiated automatically by @code{home-environment}, DO NOT create this service manually, it can only be extended.  @code{profile} is a list of file-like objects, which will go to @file{~/.profile}.  By default @file{~/.profile} contains the initialization code which must be evaluated by the login shell to make home-environment's profile available to the user, but other commands can be added to the file if it is really necessary.  In most cases shell's configuration files are preferred places for user's customizations.  Extend home-shell-profile service only if you really know what you do.
fr: @code{home-shell-profile} est instancié automatiquement par @code{home-environment}, NE créez PAS ce service manuellement, il ne peut qu'être étendu. @code{profile} est une liste d'objets simili-fichiers, qui iront dans @file{~/.profile}. Par défaut @file{~/.profile} contient le code d'initialisation, qui doit être évalué par le shell de connexion pour rendre le profil de l'environnement personnel disponible, mais vous pouvez ajouter d'autres commandes au fichier si c'est vraiment nécessaire. Dans la plupart des cas les personnalisations devraient aller dans les fichiers de configuration de votre shell. Étendez le service home-shell-profile qui si vous savez vraiment ce que vous faites.

note: type: subsubheading
en: Bash Home Service
fr: Services personnel Bash

note: type: deftp
en: {Data Type} home-bash-configuration
fr: {Type de données} home-bash-configuration

note: type: deftp
en: Available @code{home-bash-configuration} fields are:
fr: Les champs de @code{home-bash-configuration} disponibles sont :

note: type: item
en: @code{package} (default: @code{bash}) (type: package)
fr: @code{package} (par défaut : @code{bash}) (type : paquet)

note: type: table
en: The Bash package to use.
fr: Le paquet Bash à utiliser.

note: type: item
en: @code{guix-defaults?} (default: @code{#t}) (type: boolean)
fr: @code{guix-defaults?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Add sane defaults like reading @file{/etc/bashrc} and coloring the output of @command{ls} to the top of the @file{.bashrc} file.
fr: Ajoute des instructions par défaut correctes comme la lecture de @file{/etc/bashrc} et la coloration de la sortie de @command{ls} au début du fichier @file{.bashrc}.

note: type: item
en: @code{environment-variables} (default: @code{()}) (type: alist)
fr: @code{environment-variables} (par défaut : @code{()}) (type : liste d'association)

note: type: table
en: Association list of environment variables to set for the Bash session.  The rules for the @code{home-environment-variables-service-type} apply here (@pxref{Essential Home Services}).  The contents of this field will be added after the contents of the @code{bash-profile} field.
fr: Liste d'association de variables d'environnement à initialiser dans la session Bash. Les règles de @code{home-environment-variables-service-type} s'appliquent ici (@pxref{Essential Home Services}). Le contenu de ce champ sera ajouté après le contenu du champ @code{bash-profile}.

note: type: item
en: @code{aliases} (default: @code{()}) (type: alist)
fr: @code{aliases} (par défaut : @code{()}) (type : liste d'association)

note: type: table
en: Association list of aliases to set for the Bash session.  The aliases will be defined after the contents of the @code{bashrc} field has been put in the @file{.bashrc} file.  The alias will automatically be quoted, so something like this:
fr: Liste d'association d'alias à initialiser pour la session Bash. Les alias seront définis après le contenu du champ @code{bashrc} dans le fichier @file{.bashrc}. Les alias seront automatiquement encadrés de guillemets, pour que ceci :

note: type: table
en: turns into
fr: devienne

note: type: item
en: @code{bash-profile} (default: @code{()}) (type: text-config)
fr: @code{bash-profile} (par défaut : @code{()}) (type : text-config)

note: type: table
en: List of file-like objects, which will be added to @file{.bash_profile}.  Used for executing user's commands at start of login shell (In most cases the shell started on tty just after login).  @file{.bash_login} won't be ever read, because @file{.bash_profile} always present.
fr: Liste d'objets simili-fichiers qui seront ajoutés à @file{.bash_profile}. C'est utilisé pour exécuter des commandes au démarrage d'un shell de connexion (dans la plupart des cas le shell qui démarre sur un tty après la connexion). @file{.bash_login} ne sera jamais lu parce que @file{.bash_profile} est toujours présent.

note: type: item
en: @code{bashrc} (default: @code{()}) (type: text-config)
fr: @code{bashrc} (par défaut : @code{()}) (type : text-config)

note: type: table
en: List of file-like objects, which will be added to @file{.bashrc}.  Used for executing user's commands at start of interactive shell (The shell for interactive usage started by typing @code{bash} or by terminal app or any other program).
fr: Liste d'objets simili-fichiers qui seront ajoutés à @file{.bashrc}. C'est utilisé pour exécuter des commandes au lancement d'un shell interactif (le shell utilisé de manière interactive, démarré en tapant @code{bash} ou par votre application de terminal ou tout autre programme).

note: type: item
en: @code{bash-logout} (default: @code{()}) (type: text-config)
fr: @code{bash-logout} (par défaut : @code{()}) (type : text-config)

note: type: table
en: List of file-like objects, which will be added to @file{.bash_logout}.  Used for executing user's commands at the exit of login shell.  It won't be read in some cases (if the shell terminates by exec'ing another process for example).
fr: Liste d'objets simili-fichiers qui seront ajoutés à @file{.bash_logout}. C'est utilisé pour exécuter des commandes à la sortie d'un shell de connexion. Il ne sera pas lu dans certains cas (si le shell termine en utilisant exec sur un autre processus par exemple).

note: type: Plain text
en: You can extend the Bash service by using the @code{home-bash-extension} configuration record, whose fields must mirror that of @code{home-bash-configuration} (@pxref{home-bash-configuration}).  The contents of the extensions will be added to the end of the corresponding Bash configuration files (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}.
fr: Vous pouvez étendre le service Bash en utilisant un enregistrement de configuration @code{home-bash-extension}, dont les champs correspondent à ceux de @code{home-bash-configuration} (@pxref{home-bash-configuration}). Le contenu des extensions seront ajoutées à la fin des fichiers de configuration Bash correspondants (@pxref{Bash Startup Files,,, bash, le manuel de référence de Bash}.

note: type: Plain text
en: For example, here is how you would define a service that extends the Bash service such that @file{~/.bash_profile} defines an additional environment variable, @env{PS1}:
fr: Par exemple, voici comment définir un service qui étend le service Bash de sorte que @file{~/.bash_profile} définisse une variable d'environnement supplémentaire, @env{PS1} :

note: type: Plain text
en: You would then add @code{bash-fancy-prompt-service} to the list in the @code{services} field of your @code{home-environment}.  The reference of @code{home-bash-extension} follows.
fr: Vous ajouterez ensuite @code{bash-fancy-prompt-service} à la liste dans le champ @code{services} de votre @code{home-environment}. Voici la documentation de référence pour @code{home-bash-extension}.

note: type: deftp
en: {Data Type} home-bash-extension
fr: {Type de données} home-bash-extension

note: type: deftp
en: Available @code{home-bash-extension} fields are:
fr: Les champs de @code{home-bash-extension} disponibles sont :

note: type: table
en: Additional environment variables to set.  These will be combined with the environment variables from other extensions and the base service to form one coherent block of environment variables.
fr: Variables d'environnement supplémentaires à définir. Elles seront combinées aux variables d'environnement des autres extensions et du service de base pour former un bloc cohérent de variables d'environnement.

note: type: table
en: Additional aliases to set.  These will be combined with the aliases from other extensions and the base service.
fr: Alias supplémentaires à définir. Ils seront combinés aux alias des autres extensions et du service de base.

note: type: table
en: Additional text blocks to add to @file{.bash_profile}, which will be combined with text blocks from other extensions and the base service.
fr: Blocs de texte supplémentaires à ajouter à @file{.bash_profile}, qui seront combinés avec les blocs de texte des autres extensions et du service de base.

note: type: table
en: Additional text blocks to add to @file{.bashrc}, which will be combined with text blocks from other extensions and the base service.
fr: Blocs de texte supplémentaires à ajouter à @file{.bashrc}, qui seront combinés avec les blocs de texte des autres extensions et du service de base.

note: type: table
en: Additional text blocks to add to @file{.bash_logout}, which will be combined with text blocks from other extensions and the base service.
fr: Blocs de texte supplémentaires à ajouter à @file{.bash_logout}, qui seront combinés avec les blocs de texte des autres extensions et du service de base.

note: type: subsubheading
en: Zsh Home Service
fr: Services personnel Zsh

note: type: deftp
en: {Data Type} home-zsh-configuration
fr: {Type de données} home-zsh-configuration

note: type: deftp
en: Available @code{home-zsh-configuration} fields are:
fr: Les champs de @code{home-zsh-configuration} disponibles sont :

note: type: item
en: @code{package} (default: @code{zsh}) (type: package)
fr: @code{package} (par défaut : @code{zsh}) (type : paquet)

note: type: table
en: The Zsh package to use.
fr: Le paquet Zsh à utiliser.

note: type: item
en: @code{xdg-flavor?} (default: @code{#t}) (type: boolean)
fr: @code{xdg-flavor?} (par défaut : @code{#t}) (type : booléen)

note: type: table
en: Place all the configs to @file{$XDG_CONFIG_HOME/zsh}.  Makes @file{~/.zshenv} to set @env{ZDOTDIR} to @file{$XDG_CONFIG_HOME/zsh}.  Shell startup process will continue with @file{$XDG_CONFIG_HOME/zsh/.zshenv}.
fr: Place tous les fichiers de configuration dans @file{$XDG_CONFIG_HOME/zsh}. Cela fait initialiser @env{ZDOTDIR} à @file{$XDG_CONFIG_HOME/zsh} dans @file{~/.zshenv}. Le processus de démarrage du shell continuera avec @file{$XDG_CONFIG_HOME/zsh/.zshenv}.

note: type: table
en: Association list of environment variables to set for the Zsh session.
fr: Une liste d'association de variables d'environnement à initialiser dans la session Zsh.

note: type: item
en: @code{zshenv} (default: @code{()}) (type: text-config)
fr: @code{zshenv} (par défaut : @code{()}) (type : text-config)

note: type: table
en: List of file-like objects, which will be added to @file{.zshenv}.  Used for setting user's shell environment variables.  Must not contain commands assuming the presence of tty or producing output.  Will be read always.  Will be read before any other file in @env{ZDOTDIR}.
fr: Liste d'objets simili-fichiers qui seront ajoutés à @file{.zshenv}. C'est utilisé pour initialiser les variables d'environnement du shell. Elle ne doit pas contenir de commande qui suppose la présence d'un tty ou qui produise une sortie. Cela sera toujours lu, et toujours avant tout autre fichiers dans @env{ZDOTDIR}.

note: type: item
en: @code{zprofile} (default: @code{()}) (type: text-config)
fr: @code{zprofile} (par défaut : @code{()}) (type : text-config)

note: type: table
en: List of file-like objects, which will be added to @file{.zprofile}.  Used for executing user's commands at start of login shell (In most cases the shell started on tty just after login).  Will be read before @file{.zlogin}.
fr: Liste d'objets simili-fichiers qui seront ajoutés à @file{.zprofile}. C'est utilisé pour exécuter des commandes au démarrage d'un shell de connexion (dans la plupart des cas le shell démarré sur un tty après la connexion). Elle sera lue avant @file{.zlogin}.

note: type: item
en: @code{zshrc} (default: @code{()}) (type: text-config)
fr: @code{zshrc} (par défaut : @code{()}) (type : text-config)

note: type: table
en: List of file-like objects, which will be added to @file{.zshrc}.  Used for executing user's commands at start of interactive shell (The shell for interactive usage started by typing @code{zsh} or by terminal app or any other program).
fr: Liste d'objets simili-fichiers qui seront ajoutés à @file{.zshrc}. C'est utilisé pour exécuter des commandes au démarrage d'un shell interactif (le shell utilisé de manière interactive démarré en tapant @code{zsh} ou par votre application de terminal ou toute autre application).

note: type: item
en: @code{zlogin} (default: @code{()}) (type: text-config)
fr: @code{zlogin} (par défaut : @code{()}) (type : text-config)

note: type: table
en: List of file-like objects, which will be added to @file{.zlogin}.  Used for executing user's commands at the end of starting process of login shell.
fr: Liste d'objets simili-fichiers qui seront ajoutés à @file{.zlogin}. C'est utilisé pour exécuter des commandes à la fin du processus de démarrage du shell de connexion.

note: type: item
en: @code{zlogout} (default: @code{()}) (type: text-config)
fr: @code{zlogout} (par défaut : @code{()}) (type : text-config)

note: type: table
en: List of file-like objects, which will be added to @file{.zlogout}.  Used for executing user's commands at the exit of login shell.  It won't be read in some cases (if the shell terminates by exec'ing another process for example).
fr: Liste d'objets simili-fichiers qui seront ajoutés à @file{.zlogout}. C'est utilisé pour exécuter des commandes à la sortie d'un shell de connexion. Elle ne sera pas lue dans certains cas (si le shell termine après avoir utilisé exec sur un autre processus par exemple).

note: type: node
en: Mcron Home Service
fr: Service personnel Mcron

note: type: subsection
en: Scheduled User's Job Execution
fr: Exécution de tâches planifiées personnelles

note: type: Plain text
en: The @code{(gnu home services mcron)} module provides an interface to GNU@tie{}mcron, a daemon to run jobs at scheduled times (@pxref{Top,,, mcron, GNU@tie{}mcron}).  The information about system's mcron is applicable here (@pxref{Scheduled Job Execution}), the only difference for home services is that they have to be declared in a @code{home-environment} record instead of an @code{operating-system} record.
fr: Le module @code{(gnu home services mcron)} fournit une interface pour GNU@tie{}mcron, un démon qui lance des tâches planifiées (@pxref{Top,,, mcron, GNU@tie{}mcron}).  Les informations sur le mcron du système s'appliquent ici aussi (@pxref{Scheduled Job Execution}), la seule différence pour les services personnels et qu'ils doivent être déclarés dans un enregistrement @code{home-environment} au lieu d'un enregistrement @code{operating-system}.

note: type: defvr
en: {Scheme Variable} home-mcron-service-type
fr: {Variable Scheme} home-mcron-service-type

note: type: defvr
en: This is the type of the @code{mcron} home service, whose value is an @code{home-mcron-configuration} object.  It allows to manage scheduled tasks.
fr: C'est le type du service personnel @code{mcron}, dont la valeur est un objet @code{home-mcron-configuration}. Il permet de gérer des tâches planifiées.

note: type: deftp
en: {Data Type} home-mcron-configuration
fr: {Type de données} home-mcron-configuration

note: type: deftp
en: Available @code{home-mcron-configuration} fields are:
fr: Les champs de @code{home-mcron-configuration} disponibles sont :

note: type: subsection
en: Power Management Home Services
fr: Services personnels de gestion de l'énergie

note: type: cindex
en: power management
fr: gestion de l'énergie

note: type: Plain text
en: The @code{(gnu home services pm)} module provides home services pertaining to battery power.
fr: Le module @code{(gnu home services pm)} fournit des services personnels pour la gestion de la batterie.

note: type: defvr
en: {Scheme Variable} home-batsignal-service-type
fr: {Variable Scheme} home-batsignal-service-type

note: type: defvr
en: Service for @code{batsignal}, a program that monitors battery levels and warns the user through desktop notifications when their battery is getting low.  You can also configure a command to be run when the battery level passes a point deemed ``dangerous''.  This service is configured with the @code{home-batsignal-configuration} record.
fr: Service pour @code{batsignal}, un programme un surveille le niveau de batterie et vous averti à travers des notifications du bureau lorsque la batterie est presque vide. Vous pouvez aussi configurer une commande à lancer lorsque le niveau de batterie descend en dessous d'un seuil « dangereux ». Ce service est configuré avec l'enregistrement @code{home-batsignal-configuration}.

note: type: deftp
en: {Data Type} home-batsignal-configuration
fr: {Type de données} home-batsignal-configuration

note: type: deftp
en: Data type representing the configuration for batsignal.
fr: Type données qui représente la configuration de batsignal.

note: type: item
en: @code{warning-level} (default: @code{15})
fr: @code{warning-level} (par défaut : @code{15})

note: type: table
en: The battery level to send a warning message at.
fr: Le niveau de batterie auquel envoyer un message d'avertissement.

note: type: item
en: @code{warning-message} (default: @code{#f})
fr: @code{warning-message} (par défaut : @code{#f})

note: type: table
en: The message to send as a notification when the battery level reaches the @code{warning-level}.  Setting to @code{#f} uses the default message.
fr: Le message à envoyer dans une notification lorsque le niveau de batterie atteint le @code{warning-level}. Indiquer @code{#f} utilise le message par défaut.

note: type: item
en: @code{critical-level} (default: @code{5})
fr: @code{critical-level} (par défaut : @code{5})

note: type: table
en: The battery level to send a critical message at.
fr: Le niveau de batterie auquel envoyer un message critique.

note: type: item
en: @code{critical-message} (default: @code{#f})
fr: @code{critical-message} (par défaut : @code{#f})

note: type: table
en: The message to send as a notification when the battery level reaches the @code{critical-level}.  Setting to @code{#f} uses the default message.
fr: Le message à envoyer dans une notification lorsque le niveau de batterie atteint le @code{critical-level}. Indiquer @code{#f} utilise le message par défaut.

note: type: item
en: @code{danger-level} (default: @code{2})
fr: @code{danger-level} (par défaut : @code{2})

note: type: table
en: The battery level to run the @code{danger-command} at.
fr: Le niveau de batterie auquel lancer la @code{danger-command}.

note: type: item
en: @code{danger-command} (default: @code{#f})
fr: @code{danger-command} (par défaut : @code{#f})

note: type: table
en: The command to run when the battery level reaches the @code{danger-level}.  Setting to @code{#f} disables running the command entirely.
fr: La commande à lancer lorsque le niveau de batterie atteint le @code{danger-level}. Indiquer @code{#f} désactive complètement l'exécution de la commande.

note: type: item
en: @code{full-level} (default: @code{#f})
fr: @code{full-level} (par défaut : @code{#f})

note: type: table
en: The battery level to send a full message at.  Setting to @code{#f} disables sending the full message entirely.
fr: Le niveau de batterie auquel envoyer le message de plein. Indiquer @code{#f} désactive l'envoie du message de plein.

note: type: item
en: @code{full-message} (default: @code{#f})
fr: @code{full-message} (par défaut : @code{#f})

note: type: table
en: The message to send as a notification when the battery level reaches the @code{full-level}.  Setting to @code{#f} uses the default message.
fr: Le message à envoyer dans une notification lorsque le niveau de batterie atteint le @code{full-level}. Indiquer @code{#f} utiliser le message par défaut.

note: type: item
en: @code{batteries} (default: @code{'()})
fr: @code{batteries} (par défaut : @code{'()})

note: type: table
en: The batteries to monitor.  Setting to @code{'()} tries to find batteries automatically.
fr: Les batteries à surveiller. Indiquer @code{'()} essaye de trouver les batteries automatiquement.

note: type: item
en: @code{poll-delay} (default: @code{60})
fr: @code{poll-delay} (par défaut : @code{60})

note: type: table
en: The time in seconds to wait before checking the batteries again.
fr: Le temps d'attente en secondes avant de revérifier la batterie.

note: type: item
en: @code{icon} (default: @code{#f})
fr: @code{icon} (par défaut : @code{#f})

note: type: table
en: A file-like object to use as the icon for battery notifications.  Setting to @code{#f} disables notification icons entirely.
fr: Un objet simili-fichier à utiliser comme icône pour les notifications de la batterie. Indiquer @code{#f} désactive complètement l'icône de notification.

note: type: item
en: @code{notifications?} (default: @code{#t})
fr: @code{notifications?} (par défaut : @code{#t})

note: type: table
en: Whether to send any notifications.
fr: S'il faut envoyer des notifications.

note: type: item
en: @code{notifications-expire?} (default: @code{#f})
fr: @code{notifications-expire?} (par défaut : @code{#f})

note: type: table
en: Whether notifications sent expire after a time.
fr: Indique si les notifications envoyées expirent après un certain temps.

note: type: item
en: @code{notification-command} (default: @code{#f})
fr: @code{notification-command} (par défaut : @code{#f})

note: type: table
en: Command to use to send messages.  Setting to @code{#f} sends a notification through @code{libnotify}.
fr: Commande à utiliser pour envoyer les messages. Indiquer @code{#f} envoie une notification à travers @code{libnotify}.

note: type: item
en: @code{ignore-missing?} (default: @code{#f})
fr: @code{ignore-missing?} (par défaut : @code{#f})

note: type: table
en: Whether to ignore missing battery errors.
fr: Indique s'il faut ignorer les erreurs de batterie manquante.

note: type: node
en: Shepherd Home Service
fr: Service Shepherd personnel

note: type: subsection
en: Managing User Daemons
fr: Gérer les démons personnels

note: type: cindex
en: shepherd services, for users
fr: services shepherd, pour les utilisateurs et utilisatrices

note: type: Plain text
en: The @code{(gnu home services shepherd)} module supports the definitions of per-user Shepherd services (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual}).  You extend @code{home-shepherd-service-type} with new services; Guix Home then takes care of starting the @code{shepherd} daemon for you when you log in, which in turns starts the services you asked for.
fr: Le module @code{(gnu home services shepherd)} prend en charge la définition de services Shepherd par utilisateur (@pxref{Introduction,,, shepherd, le manuel de GNU Shepherd}). Vous pouvez étendre @code{home-shepherd-service-type} avec de nouveaux services ; Guix Home se chargera ensuite de démarrer le démon @code{shepherd} pour vous à la connexion, ce qui démarrera ensuite les services que vous avez demandés.

note: type: defvr
en: {Scheme Variable} home-shepherd-service-type
fr: {Variable Scheme} home-shepherd-service-type

note: type: defvr
en: The service type for the userland Shepherd, which allows one to manage long-running processes or one-shot tasks.  User's Shepherd is not an init process (PID 1), but almost all other information described in (@pxref{Shepherd Services}) is applicable here too.
fr: Le type de service pour le shepherd en espace utilisateur, qui vous permet de gérer les processus longs ou les tâches uniques. Le shepherd personnel n'est pas un processus d'init (PID 1), mais presque toutes les information décrites dans @ref{Shepherd Services} sont applicables ici aussi.

note: type: defvr
en: This is the service type that extensions target when they want to create shepherd services (@pxref{Service Types and Services}, for an example).  Each extension must pass a list of @code{<shepherd-service>}.  Its value must be a @code{home-shepherd-configuration}, as described below.
fr: C'est le type de service que les extensions ciblent lorsqu'elles veulent créer un service shepherd (@pxref{Service Types and Services}, pour un exemple).  Chaque extension doit passer une liste de @code{<shepherd-service>}. Sa valeur doit être un @code{home-shepherd-configuration}, décrit plus bas.

note: type: deftp
en: {Data Type} home-shepherd-configuration
fr: {Type de données} home-shepherd-configuration

note: type: item
en: auto-start? (default: @code{#t})
fr: auto-start? (par défaut : @code{#t})

note: type: table
en: Whether or not to start Shepherd on first login.
fr: Indique s'il faut lancer le Shepherd à la première connexion.

note: type: subsection
en: Secure Shell
fr: Shell sécurisé

note: type: cindex
en: secure shell client, configuration
fr: client de shell sécurisé, configuration

note: type: cindex
en: SSH client, configuration
fr: client SSH, configuration

note: type: Plain text
en: The @uref{https://www.openssh.com, OpenSSH package} includes a client, the @command{ssh} command, that allows you to connect to remote machines using the @acronym{SSH, secure shell} protocol.  With the @code{(gnu home services ssh)} module, you can set up OpenSSH so that it works in a predictable fashion, almost independently of state on the local machine.  To do that, you instantiate @code{home-openssh-service-type} in your Home configuration, as explained below.
fr: Le @uref{https://www.openssh.com, paquet OpenSSH} contient un client, la commande @command{ssh}, qui vous permet de vous connecter à des machines distantes avec le protocole @acronym{SSH, shell sécurisé}. Avec le module @code{(gnu home services ssh)}, vous pouvez configurer OpenSSH pour qu'il fonctionne de manière prédictible, presque indépendamment de l'état de la machine locale. Pour cela, vous devez instancier @code{home-openssh-service-type} dans votre configuration personnelle, comme expliqué plus bas.

note: type: defvr
en: {Scheme Variable} home-openssh-service-type
fr: {Variable Scheme} home-openssh-service-type

note: type: defvr
en: This is the type of the service to set up the OpenSSH client.  It takes care of several things:
fr: C'est le type de service pour configurer le client OpenSSH. Il a les fonctionnalités suivantes :

note: type: itemize
en: providing a @file{~/.ssh/config} file based on your configuration so that @command{ssh} knows about hosts you regularly connect to and their associated parameters;
fr: fournir un fichier @file{~/.ssh/config} basé sur votre configuration pour que @command{ssh} connaisse les hôtes auxquels vous vous connectez régulièrement et leurs paramètres associés ;

note: type: itemize
en: providing a @file{~/.ssh/authorized_keys}, which lists public keys that the local SSH server, @command{sshd}, may accept to connect to this user account;
fr: fournir un @file{~/.ssh/authorized_keys}, qui liste les clés publiques que le serveur SSH local, @command{sshd}, peut accepter pour se connecter à ce compte utilisateur ;

note: type: itemize
en: optionally providing a @file{~/.ssh/known_hosts} file so that @file{ssh} can authenticate hosts you connect to.
fr: éventuellement fournir un fichier @file{~/.ssh/known_hosts} pour que @file{ssh} puisse authentifier les hôtes auxquels vous vous connectez.

note: type: defvr
en: Here is an example of a service and its configuration that you could add to the @code{services} field of your @code{home-environment}:
fr: Voici un exemple de service et sa configuration que vous pouvez ajouter au champ @code{services} de votre @code{home-environment} :

note: type: defvr
en: The example above lists two hosts and their parameters.  For instance, running @command{ssh chbouib} will automatically connect to @code{chbouib.example.org} on port 10022, logging in as user @samp{supercharlie}.  Further, it marks the public key in @file{alice.pub} as authorized for incoming connections.
fr: L'exemple au-dessus liste deux hôtes et leurs paramètres. Par exemple, lancer @command{ssh chbouib} se connectera automatiquement à @code{chbouib.example.org} sur le port 10022, en se connectant en tant que @samp{supercharlie}. En plus, il marque la clé publique dans @file{alice.pub} comme autorisée pour les connexions entrantes.

note: type: defvr
en: The value associated with a @code{home-openssh-service-type} instance must be a @code{home-openssh-configuration} record, as describe below.
fr: La valeur associée à une instance de @code{home-openssh-service-type} doit être un enregistrement @code{home-openssh-configuration}, décrit ci-dessous.

note: type: deftp
en: {Data Type} home-openssh-configuration
fr: {Type de données} home-openssh-configuration

note: type: deftp
en: This is the datatype representing the OpenSSH client and server configuration in one's home environment.  It contains the following fields:
fr: C'est le type de données représentant la configuration du client et du serveur OpenSSH dans l'environnement personnel.  Il possède les champs suivants :

note: type: item
en: @code{hosts} (default: @code{'()})
fr: @code{hosts} (par défaut : @code{'()})

note: type: table
en: A list of @code{openssh-host} records specifying host names and associated connection parameters (see below).  This host list goes into @file{~/.ssh/config}, which @command{ssh} reads at startup.
fr: Une liste d'enregistrements @code{openssh-host} qui spécifient les noms d'hôte et les paramètres de connexion associés (voir plus bas). Cet liste d'hôtes va dans @file{~/.ssh/config}, que @command{ssh} lit au démarrage.

note: type: item
en: @code{known-hosts} (default: @code{*unspecified*})
fr: @code{known-hosts} (par défaut : @code{*unspecified*})

note: type: table
en: This must be either:
fr: Cela doit être soit :

note: type: itemize
en: @code{*unspecified*}, in which case @code{home-openssh-service-type} leaves it up to @command{ssh} and to the user to maintain the list of known hosts at @file{~/.ssh/known_hosts}, or
fr: @code{*unspecified*}, auquel cas @code{home-openssh-service-type} laisse à @command{ssh} et à l'utilisateur le soit de maintenir la liste des hôtes connus dans @file{~/.ssh/known_hosts}, ou

note: type: itemize
en: a list of file-like objects, in which case those are concatenated and emitted as @file{~/.ssh/known_hosts}.
fr: une liste d'objets simili-fichiers, auquel cas ils sont concaténés et émis dans @file{~/.ssh/known_hosts}.

note: type: table
en: The @file{~/.ssh/known_hosts} contains a list of host name/host key pairs that allow @command{ssh} to authenticate hosts you connect to and to detect possible impersonation attacks.  By default, @command{ssh} updates it in a @dfn{TOFU, trust-on-first-use} fashion, meaning that it records the host's key in that file the first time you connect to it.  This behavior is preserved when @code{known-hosts} is set to @code{*unspecified*}.
fr: Le fichier @file{~/.ssh/known_hosts} contient une liste de paires de nom d'hôte et de clé d'hôte qui permet à @command{ssh} d'authentifier les hôtes auxquels vous vous connectez et de détecter de potentielles attaques par usurpation. Par défaut, @command{ssh} la met à jour sur la base du principe @dfn{TOFU, confiance à la première utilisation}, ce qui signifie qu'il enregistre la clé d'hôte dans ce fichier la première fois que vous vous connectez. Ce comportement est préservé si @code{known-hosts} est indiqué à @code{*unspecified*}.

note: type: table
en: If you instead provide a list of host keys upfront in the @code{known-hosts} field, your configuration becomes self-contained and stateless: it can be replicated elsewhere or at another point in time.  Preparing this list can be relatively tedious though, which is why @code{*unspecified*} is kept as a default.
fr: Si vous fournissez à la place une liste de clés d'hôtes dès le départ dans le champ @code{known-hosts}, votre configuration devient auto-contenue et sans état : elle peut être répliquée ailleurs ou à un autre moment. Préparer cette liste peut être plutôt compliqué cependant, c'est pourquoi @code{*unspecified*} reste la valeur par défaut.

note: type: table
en: This must be a list of file-like objects, each of which containing an SSH public key that should be authorized to connect to this machine.
fr: Cela doit être une liste d'objet simili-fichiers, chacun contenant une clé publique SSH qui devrait être autorisée à se connecter à cette machine.

note: type: table
en: Concretely, these files are concatenated and made available as @file{~/.ssh/authorized_keys}.  If an OpenSSH server, @command{sshd}, is running on this machine, then it @emph{may} take this file into account: this is what @command{sshd} does by default, but be aware that it can also be configured to ignore it.
fr: Concrètement, ces fichiers sont concaténés et rendus disponibles dans @file{~/.ssh/authorized_keys}. Si un serveur OpenSSH, @command{sshd}, est lancé sur cette machine, alors il @emph{peut} prendre ce fichier en compte : c'est ce que @command{sshd} fait par défaut, mais soyez conscient qu'il peut aussi être configuré pour l'ignorer.

note: type: deftp
en: {Data Type} openssh-host
fr: {Type de données} openssh-host

note: type: deftp
en: Available @code{openssh-host} fields are:
fr: Les champs de @code{openssh-host} disponibles sont :

note: type: table
en: Name of this host declaration.
fr: Nom de cette déclaration d'hôte.

note: type: item
en: @code{host-name} (type: maybe-string)
fr: @code{host-name} (type : peut-être-chaine)

note: type: table
en: Host name---e.g., @code{"foo.example.org"} or @code{"192.168.1.2"}.
fr: Nom d'hôte --- p.@: ex.@: @code{"toto.exemple.org"} ou @code{"192.168.1.2"}.

note: type: item
en: @code{address-family} (type: address-family)
fr: @code{address-family} (type : address-family)

note: type: table
en: Address family to use when connecting to this host: one of @code{AF_INET} (for IPv4 only), @code{AF_INET6} (for IPv6 only), or @code{*unspecified*} (allowing any address family).
fr: Famille d'adresse à utiliser pour se connecter à l'hôte : soit @code{AF_INET} (pour IPv4 uniquement), @code{AF_INET6} (pour IPv6 uniquement), ou @code{*unspecified*} (pour permettre n'importe quelle famille d'adresse).

note: type: item
en: @code{identity-file} (type: maybe-string)
fr: @code{identity-file} (type : peut-être-chaine)

note: type: table
en: The identity file to use---e.g., @code{"/home/charlie/.ssh/id_ed25519"}.
fr: Le fichier d'identité à utiliser --- p.@: ex.@: @code{"/home/charlie/.ssh/id_ed25519"}.

note: type: item
en: @code{port} (type: maybe-natural-number)
fr: @code{port} (type : peut-être-entier-naturel)

note: type: table
en: TCP port number to connect to.
fr: Numéro de port TCP sur lequel se connecter.

note: type: item
en: @code{user} (type: maybe-string)
fr: @code{user} (type : peut-être-chaine)

note: type: table
en: User name on the remote host.
fr: Le nom d'utilisateur sur la machine distante.

note: type: item
en: @code{forward-x11?} (default: @code{#f}) (type: boolean)
fr: @code{forward-x11?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether to forward remote client connections to the local X11 graphical display.
fr: Indique s'il faut relayer les connexions clientes distantes vers l'affichage graphique X11 local.

note: type: item
en: @code{forward-x11-trusted?} (default: @code{#f}) (type: boolean)
fr: @code{forward-x11-trusted?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether remote X11 clients have full access to the original X11 graphical display.
fr: Indique si les client X11 distants ont l'accès complet à l'affichage graphique X11 original.

note: type: item
en: @code{forward-agent?} (default: @code{#f}) (type: boolean)
fr: @code{forward-agent?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether the authentication agent (if any) is forwarded to the remote machine.
fr: Indique si l'agent d'authentification (s'il y en a un) est relayé vers la machine distante.

note: type: item
en: @code{compression?} (default: @code{#f}) (type: boolean)
fr: @code{compression?} (par défaut : @code{#f}) (type : booléen)

note: type: table
en: Whether to compress data in transit.
fr: Indique s'il faut compresser les données en transit.

note: type: item
en: @code{proxy-command} (type: maybe-string)
fr: @code{proxy-command} (type : peut-être-chaine)

note: type: table
en: The command to use to connect to the server.  As an example, a command to connect via an HTTP proxy at 192.0.2.0 would be: @code{"nc -X connect -x 192.0.2.0:8080 %h %p"}.
fr: La commande à utiliser pour se connecter au serveur. Par exemple, une commande pour se connecter via un mandataire HTTP sur 192.0.2.0 serait : @code{"nc -X connect -x 192.0.2.0:8080 %h %p"}.

note: type: item
en: @code{host-key-algorithms} (type: maybe-string-list)
fr: @code{host-key-algorithms} (type : peut-être-liste-de-chaine)

note: type: table
en: The list of accepted host key algorithms---e.g., @code{'("ssh-ed25519")}.
fr: La liste des algorithmes de clé hôtes acceptées --- p.@: ex.@: @code{'("ssh-ed25519")}.

note: type: item
en: @code{accepted-key-types} (type: maybe-string-list)
fr: @code{accepted-key-types} (type : peut-être-liste-de-chaine)

note: type: table
en: The list of accepted user public key types.
fr: La liste des types de clés publiques utilisatrices acceptées.

note: type: item
en: @code{extra-content} (default: @code{""}) (type: raw-configuration-string)
fr: @code{extra-content} (par défaut : @code{""}) (type : raw-configuration-string)

note: type: table
en: Extra content appended as-is to this @code{Host} block in @file{~/.ssh/config}.
fr: Contenu supplémentaire ajouté tel-quel à la fin de ce block @code{Host} dans @file{~/.ssh/config}.

note: type: subsection
en: Desktop Home Services
fr: Services personnels pour ordinateur de bureau

note: type: Plain text
en: The @code{(gnu home services desktop)} module provides services that you may find useful on ``desktop'' systems running a graphical user environment such as Xorg.
fr: Le module @code{(gnu home services desktop)} fournit des services que vous trouverez pratique sur un système « de bureau » possédant un environnement utilisateur graphique comme Xorg.

note: type: defvr
en: {Scheme Variable} home-redshift-service-type
fr: {Variable Scheme} home-redshift-service-type

note: type: defvr
en: This is the service type for @uref{https://github.com/jonls/redshift, Redshift}, a program that adjusts the display color temperature according to the time of day.  Its associated value must be a @code{home-redshift-configuration} record, as shown below.
fr: Il s'agit du type de service pour @uref{https://github.com/jonls/redshift, Redshift}, un programme qui ajuste la température des couleurs de l'affichage suivant l'heure de la journée. Sa valeur associée doit être un @code{home-redshift-configuration} comme indiqué ci-dessous.

note: type: defvr
en: A typical configuration, where we manually specify the latitude and longitude, might look like this:
fr: Une configuration typique, où nous spécifions la latitude et la longitude manuellement, ressemblerait à ceci :

note: type: lisp
en: (service home-redshift-service-type
             (home-redshift-configuration
              (location-provider 'manual)
              (latitude 35.81)    ;northern hemisphere
              (longitude -0.80))) ;west of Greenwich
fr: (service home-redshift-service-type
             (home-redshift-configuration
              (location-provider 'manual)
              (latitude 35.81)    ;hémisphère nord
              (longitude -0.80))) ;ouest de Greenwich

note: type: deftp
en: {Data Type} home-redshift-configuration
fr: {Type de données} home-redshift-configuration

note: type: deftp
en: Available @code{home-redshift-configuration} fields are:
fr: Les champs de @code{home-redshift-configuration} disponibles sont :

note: type: item
en: @code{redshift} (default: @code{redshift}) (type: file-like)
fr: @code{redshift} (par défaut : @code{redshift}) (type : simili-fichier)

note: type: table
en: Redshift package to use.
fr: Le paquet Redshift à utiliser.

note: type: item
en: @code{location-provider} (default: @code{geoclue2}) (type: symbol)
fr: @code{location-provider} (par défaut : @code{geoclue2}) (type : symbol)

note: type: table
en: Geolocation provider---@code{'manual} or @code{'geoclue2}.  In the former case, you must also specify the @code{latitude} and @code{longitude} fields so Redshift can determine daytime at your place.  In the latter case, the Geoclue system service must be running; it will be queried for location information.
fr: Fournisseur de géolocalisation --- @code{'manual} ou @code{'geoclue2}. Dans le premier cas, vous devez aussi spécifier les champs @code{latitude} et @code{longitude} pour que Redshift puisse déterminer les heures de jour et de nuit là où vous vous trouve. Dans le deuxième cas, le service système Geoclue doit être lancé ; Redshift lui demandera les informations de localisation.

note: type: item
en: @code{adjustment-method} (default: @code{randr}) (type: symbol)
fr: @code{adjustment-method} (par défaut : @code{randr}) (type : symbol)

note: type: table
en: Color adjustment method.
fr: Méthode d'ajustement des couleurs.

note: type: item
en: @code{daytime-temperature} (default: @code{6500}) (type: integer)
fr: @code{daytime-temperature} (par défaut : @code{6500}) (type : integer)

note: type: table
en: Daytime color temperature (kelvins).
fr: Température des couleurs pour le jour (en kelvins).

note: type: item
en: @code{nighttime-temperature} (default: @code{4500}) (type: integer)
fr: @code{nighttime-temperature} (par défaut : @code{4500}) (type : entier)

note: type: table
en: Nighttime color temperature (kelvins).
fr: Température des couleurs pour la nuit (en kelvins).

note: type: item
en: @code{daytime-brightness} (type: maybe-inexact-number)
fr: @code{daytime-brightness} (type : peut-être-nombre-inexact)

note: type: table
en: Daytime screen brightness, between 0.1 and 1.0, or left unspecified.
fr: Luminosité de l'écran en journée, entre 0.1 et 1.0, ou non spécifiée.

note: type: item
en: @code{nighttime-brightness} (type: maybe-inexact-number)
fr: @code{nighttime-brightness} (type : peut-être-nombre-inexact)

note: type: table
en: Nighttime screen brightness, between 0.1 and 1.0, or left unspecified.
fr: Luminosité de l'écran la nuit, entre 0.1 et 1.0, ou non spécifiée.

note: type: item
en: @code{latitude} (type: maybe-inexact-number)
fr: @code{latitude} (type : peut-être-nombre-inexact)

note: type: table
en: Latitude, when @code{location-provider} is @code{'manual}.
fr: Latitude, lorsque @code{location-provider} est @code{'manual}.

note: type: item
en: @code{longitude} (type: maybe-inexact-number)
fr: @code{longitude} (type : peut-être-nombre-inexact)

note: type: table
en: Longitude, when @code{location-provider} is @code{'manual}.
fr: Longitude, lorsque @code{location-provider} est @code{'manual}.

note: type: item
en: @code{dawn-time} (type: maybe-string)
fr: @code{dawn-time} (type : peut-être-chaine)

note: type: table
en: Custom time for the transition from night to day in the morning---@code{"HH:MM"} format.  When specified, solar elevation is not used to determine the daytime/nighttime period.
fr: Heure personnalisée de transition entre la nuit et le jour le matin --- au format @code{"HH:MM"}. Lorsque la valeur est spécifiée, l'élévation du soleil n'est pas utilisée pour déterminer le cycle jour-nuit.

note: type: item
en: @code{dusk-time} (type: maybe-string)
fr: @code{dusk-time} (type : peut-être-chaine)

note: type: table
en: Likewise, custom time for the transition from day to night in the evening.
fr: De même, heure personnalisée pour la transition entre le jour et la nuit en soirée.

note: type: table
en: Extra content appended as-is to the Redshift configuration file.  Run @command{man redshift} for more information about the configuration file format.
fr: Contenu supplémentaire ajouté tel quel à la fin du fichier de configuration de Redshift.  Lancez @command{man redshift} pour plus d'informations sur le format du fichier de configuration.

note: type: defvr
en: {Scheme Variable} home-dbus-service-type
fr: {Variable Scheme} home-dbus-service-type

note: type: defvr
en: This is the service type for running a session-specific D-Bus, for unprivileged applications that require D-Bus to be running.
fr: C'est le type de service pour lancer un D-Bus spécifique à la session, pour les applications non privilégiées qui nécessitent que D-Bus soit lancé.

note: type: deftp
en: {Data Type} home-dbus-configuration
fr: {Type de données} home-dbus-configuration

note: type: deftp
en: The configuration record for @code{home-dbus-service-type}.
fr: L'enregistrement de configuration pour @code{home-dbus-service-type}.

note: type: item
en: @code{dbus} (default: @code{dbus})
fr: @code{dbus} (par défaut : @code{dbus})

note: type: table
en: The package providing the @code{/bin/dbus-daemon} command.
fr: Le paquet qui fournit la commande @code{/bin/dbus-daemon}.

note: type: subsection
en: Guix Home Services
fr: Services personnels Guix

note: type: Plain text
en: The @code{(gnu home services guix)} module provides services for user-specific Guix configuration.
fr: Le module @code{(gnu home services guix)} fournit des services pour la configuration de Guix de l'utilisateur ou utilisatrice.

note: type: defvr
en: {Scheme Variable} home-channels-service-type
fr: {Variable Scheme} home-channels-service-type

note: type: defvr
en: This is the service type for managing @file{$XDG_CONFIG_HOME/guix/channels.scm}, the file that controls the channels received on @command{guix pull} (@pxref{Channels}).  Its associated value is a list of @code{channel} records, defined in the @code{(guix channels)} module.
fr: C'est le type de service qui gère @file{$XDG_CONFIG_HOME/guix/channels.scm}, le fichier qui contrôle les canaux reçus par @command{guix pull} (@pxref{Channels}).  Sa valeur associée est une liste d'enregistrements @code{channel}, définis dans le module @code{(guix channels)}.

note: type: defvr
en: Generally, it is better to extend this service than to directly configure it, as its default value is the default guix channel(s)  defined by @code{%default-channels}.  If you configure this service directly, be sure to include a guix channel.  @xref{Specifying Additional Channels} and @ref{Using a Custom Guix Channel} for more details.
fr: En général il vaut mieux étendre ce service que de le configurer directement, car sa valeur par défaut est le canal guix par défaut défini par @code{%default-channels}. Si vous configurez ce service directement, assurez-vous d'inclure un canal guix. @xref{Specifying Additional Channels} et @ref{Using a Custom Guix Channel} pour plus de détails.

note: type: defvr
en: A typical extension for adding a channel might look like this:
fr: Une extension typique pour ajouter un canal ressemblerait à ceci :

note: type: section
en: Invoking @command{guix home}
fr: Invoquer @command{guix home}

note: type: Plain text
en: Once you have written a home environment declaration (@pxref{Declaring the Home Environment,,,,}, it can be @dfn{instantiated} using the @command{guix home} command.  The synopsis is:
fr: Une fois que vous avez écrit une déclaration d'environnement personnel (@pxref{Declaring the Home Environment,,,,}), elle peut être @dfn{instanciée} avec la commande @command{guix home}.  Voici le résumé de la commande :

note: type: Plain text
en: @var{file} must be the name of a file containing a @code{home-environment} declaration.  @var{action} specifies how the home environment is instantiated, but there are few auxiliary actions which don't instantiate it.  Currently the following values are supported:
fr: @var{file} doit être le nom d'un fichier contenant une déclaration @code{home-environment}.  @var{action} spécifie comment l'environnement personnel est instancié, mais il y a quelques actions supplémentaires qui ne l'instancient pas.  Actuellement les valeurs suivantes sont prises en charge :

note: type: table
en: Display available home service type definitions that match the given regular expressions, sorted by relevance:
fr: Affiche les définitions des types de services personnels disponibles qui correspondent aux expressions régulières données, triées par pertinence :

note: type: table
en: As for @command{guix search}, the result is written in @code{recutils} format, which makes it easy to filter the output (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual}).
fr: Comme pour @command{guix search}, le résultat est écrit au format @code{recutils}, ce qui rend facile le filtrage de la sortie (@pxref{Top, GNU recutils databases,, recutils, GNU recutils manual}).

note: type: table
en: Spawn a shell in an isolated environment---a @dfn{container}---containing your home as specified by @var{file}.
fr: Démarre un shell dans un environnement isolé --- un @dfn{conteneur} --- contenant votre dossier personnel spécifié par @var{file}.

note: type: table
en: For example, this is how you would start an interactive shell in a container with your home:
fr: Par exemple, voici comment vous pouvez démarrer un shell interactif dans un conteneur avec votre dossier personnel :

note: type: table
en: This is a throw-away container where you can lightheartedly fiddle with files; any changes made within the container, any process started---all this disappears as soon as you exit that shell.
fr: C'est un conteneur jetable où vous pouvez gaiement jouer avec vos fichiers ; les changements effectués dans le conteneur et tous les processus qui y sont démarrés disparaissent aussitôt que vous sortez de ce shell.

note: type: table
en: As with @command{guix shell}, several options control that container:
fr: Comme pour @command{guix shell}, plusieurs options contrôlent ce conteneur :

note: type: table
en: Enable networking within the container (it is disabled by default).
fr: Active le réseau dans le conteneur (il est désactivé par défaut).

note: type: table
en: As with @command{guix shell}, make directory @var{source} of the host system available as @var{target} inside the container---read-only if you pass @option{--expose}, and writable if you pass @option{--share} (@pxref{Invoking guix shell, @option{--expose} and @option{--share}}).
fr: Comme pour @command{guix shell}, rend le répertoire @var{source} du système hôte disponible en tant que @var{target} dans le conteneur --- en lecture-seule si vous utilisez @option{--expose}, et inscriptible si vous utilisez @option{--share} (@pxref{Invoking guix shell, @option{--expose} et @option{--share}}).

note: type: table
en: Additionally, you can run a command in that container, instead of spawning an interactive shell.  For instance, here is how you would check which Shepherd services are started in a throw-away home container:
fr: En plus, vous pouvez lancer une commande dans ce conteneur, au lieu de démarrer un shell interactif. Par exemple, voici comment vérifier que les service Shepherd sont démarrés dans un conteneur personnel jetable :

note: type: table
en: The command to run in the container must come after @code{--} (double hyphen).
fr: La commande à lancer dans le conteneur doit être indiquée après @code{--} (double tirets).

note: type: table
en: Edit or view the definition of the given Home service types.
fr: Modifier ou visualiser la définition des types de services personnels donnés.

note: type: table
en: For example, the command below opens your editor, as specified by the @env{EDITOR} environment variable, on the definition of the @code{home-mcron} service type:
fr: Par exemple, la commande plus bas ouvre votre éditeur, spécifié par la variable d'environnement @env{EDITOR}, sur la définition du type de service @code{home-mcron} :

note: type: table
en: Build the home environment described in @var{file}, and switch to it.  Switching means that the activation script will be evaluated and (in basic scenario) symlinks to configuration files generated from @code{home-environment} declaration will be created in @file{~}.  If the file with the same path already exists in home folder it will be moved to @file{~/@var{timestamp}-guix-home-legacy-configs-backup}, where @var{timestamp} is a current UNIX epoch time.
fr: Construit l'environnement personnel décrit dans @var{file} et y bascule. Le basculement signifie que le script d'activation sera évalué et (dans le scénario de base) les liens symboliques vers les fichiers de configuration générés dans la déclaration @code{home-environment} seront créés dans @file{~}. Si un fichier avec le même chemin existe dans le répertoire personnel il sera déplacé vers @file{~/@var{horodatage}-guix-home-legacy-confis-backup}, où @var{horodatage} est l'epoch UNIX actuelle.

note: type: quotation
en: It is highly recommended to run @command{guix pull} once before you run @command{guix home reconfigure} for the first time (@pxref{Invoking guix pull}).
fr: Il est grandement recommandé de lancer @command{guix pull} une fois avant de lancer @command{guix home reconfigure} pour la première fois (@pxref{Invoking guix pull}).

note: type: table
en: This effects all the configuration specified in @var{file}.  The command starts Shepherd services specified in @var{file} that are not currently running; if a service is currently running, this command will arrange for it to be upgraded the next time it is stopped (e.g.@: by @code{herd stop @var{service}} or @code{herd restart @var{service}}).
fr: Cela met en application toute la configuration spécifiée dans @var{file}.  La commande démarre les services Shepherd spécifiés dans @var{file} qui ne sont pas actuellement lancés ; si un service est actuellement exécuté cette commande s'arrange pour qu'il soit mis à jour la prochaine fois qu'il est stoppé (p.@: ex@: par @code{herd stop @var{service}} ou @code{herd restart @var{service}}).

note: type: table
en: This command creates a new generation whose number is one greater than the current generation (as reported by @command{guix home list-generations}).  If that generation already exists, it will be overwritten.  This behavior mirrors that of @command{guix package} (@pxref{Invoking guix package}).
fr: Cette commande crée une nouvelle génération dont le numéro est un de plus que la génération actuelle (rapportée par @command{guix home list-generations}).  Si cette génération existe déjà, elle sera réécrite.  Ce comportement correspond à celui de @command{guix package} (@pxref{Invoking guix package}).

note: type: cindex
en: provenance tracking, of the home environment
fr: suivi de provenance, pour l'environnement personnel

note: type: table
en: Upon completion, the new home is deployed under @file{~/.guix-home}.  This directory contains @dfn{provenance meta-data}: the list of channels in use (@pxref{Channels}) and @var{file} itself, when available.  You can view the provenance information by running:
fr: À la fin, le nouveau dossier personel est déployé dans @file{~/.guix-home}.  Ce répertoire contient les @dfn{métadonnées de provenance} : la liste des canaux utilisés (@pxref{Channels}) et le @var{fichier} lui-même, s'il est disponible.  Vous pouvez voir les informations de provenance avec :

note: type: table
en: This information is useful should you later want to inspect how this particular generation was built.  In fact, assuming @var{file} is self-contained, you can later rebuild generation @var{n} of your home environment with:
fr: Cette information est utile si vous voulez plus tard inspecter comment une génération particulière a été construite.  En fait, en supposant que @var{file} est auto-contenu, vous pouvez reconstruire la génération @var{n} de votre environnement personnel avec :

note: type: table
en: You can think of it as some sort of built-in version control! Your home is not just a binary artifact: @emph{it carries its own source}.
fr: Vous pouvez considérer cela comme une sorte de contrôle de version intégré ! Votre dossier personnel n'est pas seulement un artefact binaire : @emph{il contient ses propres sources}.

note: type: cindex
en: home generations
fr: générations du dossier personnel

note: type: table
en: Switch to an existing home generation.  This action atomically switches the home profile to the specified home generation.
fr: Bascule à une génération du dossier personnel existante. Cette action bascule de manière atomique à la génération du dossier personnel spécifiée.

note: type: table
en: The target generation can be specified explicitly by its generation number.  For example, the following invocation would switch to home generation 7:
fr: La génération cible peut être spécifiée explicitement par son numéro de génération.  Par exemple, l'invocation suivante passerait à la génération 7 du dossier personnel :

note: type: table
en: Switch to the preceding home generation.  This is the inverse of @command{reconfigure}, and it is exactly the same as invoking @command{switch-generation} with an argument of @code{-1}.
fr: Passe à la génération précédente du dossier personnel.  C'est le contraire de @command{reconfigure}, et c'est exactement comme invoquer @command{switch-generation} avec pour argument @code{-1}.

note: type: cindex
en: deleting home generations
fr: supprimer des générations du dossier personnel

note: type: table
en: Delete home generations, making them candidates for garbage collection (@pxref{Invoking guix gc}, for information on how to run the ``garbage collector'').
fr: Supprimer des générations du dossier personnel, ce qui les rend disponibles pour le ramasse-miettes (@pxref{Invoking guix gc}, pour des informations sur la manière de lancer le « ramasse-miettes »).

note: type: table
en: This works in the same way as @samp{guix package --delete-generations} (@pxref{Invoking guix package, @option{--delete-generations}}).  With no arguments, all home generations but the current one are deleted:
fr: Cela fonctionne comme pour @samp{guix package --delete-generations} (@pxref{Invoking guix package, @code{--delete-generations}}).  Avec aucun argument, toutes les générations du dossier personnel sauf la génération actuelle sont supprimées :

note: type: table
en: You can also select the generations you want to delete.  The example below deletes all the home generations that are more than two months old:
fr: Vous pouvez aussi choisir les générations que vous voulez supprimer.  L'exemple plus bas supprime toutes les génération du dossier personnel plus vieilles que deux mois :

note: type: table
en: Build the derivation of the home environment, which includes all the configuration files and programs needed.  This action does not actually install anything.
fr: Construit la dérivation de l'environnement personnel, ce qui comprend tous les fichiers de configuration et les programmes requis.  Cette action n'installe rien.

note: type: table
en: Describe the current home generation: its file name, as well as provenance information when available.
fr: Décrit la génération du dossier personnel actuel : son nom de fichier, ainsi que les informations de provenance si elles sont disponibles.

note: type: table
en: To show installed packages in the current home generation's profile, the @code{--list-installed} flag is provided, with the same syntax that is used in @command{guix package --list-installed} (@pxref{Invoking guix package}).  For instance, the following command shows a table of all the packages with ``emacs'' in their name that are installed in the current home generation's profile:
fr: Pour afficher les paquets installés dans le profil de la génération actuelle du dossier personnel, le drapeau @code{--list-intalled} est proposé, avec la même syntaxe que celle utilisée pour @command{guix package --list-installed} (@pxref{Invoking guix package}). Par exemple, la commande suivante affiche un tableau de tous les paquets avec « emacs » dans leur nom qui sont installés dans la génération actuelle du profil du dossier personnel :

note: type: table
en: List a summary of each generation of the home environment available on disk, in a human-readable way.  This is similar to the @option{--list-generations} option of @command{guix package} (@pxref{Invoking guix package}).
fr: Affiche un résumé de chaque génération de l'environnement personnel disponible sur le disque, dans un format lisible pour un humain.  C'est similaire à l'option @option{--list-generations} de @command{guix package} (@pxref{Invoking guix package}).

note: type: table
en: The @code{--list-installed} flag may also be specified, with the same syntax that is used in @command{guix home describe}.  This may be helpful if trying to determine when a package was added to the home profile.
fr: Le drapeau @code{--list-installed} peut aussi être spécifié, avec la même syntaxe que celle utilisée dans @command{guix home describe}. Cela peut être utile si vous essayez de déterminer si un paquet a été ajouté au profil personnel.

note: type: table
en: Generate a @dfn{home environment} from the packages in the default profile and configuration files found in the user's home directory.  The configuration files will be copied to the specified directory, and a @file{home-configuration.scm} will be populated with the home environment.  Note that not every home service that exists is supported (@pxref{Home Services}).
fr: Génère un @dfn{environnement personnel} à partir des paquets du profil par défaut et des fichiers de configuration qui se trouvent dans votre répertoire personnel. Les fichiers de configuration sont copiés vers le répertoire donné, et un fichier @file{home-configuration.scm} sera rempli avec l'environnement personnel. Remarquez que les services personnels existants ne sont pas tous pris en charge (@pxref{Home Services}).

note: type: example
en: $ guix home import ~/guix-config
    guix home: '/home/alice/guix-config' populated with all the Home configuration files
fr: $ guix home import ~/guix-config
    guix home: « /home/alice/guix-config » rempli avec tous les fichiers de configuration du dossier personnel

note: type: Plain text
en: And there's more! @command{guix home} also provides the following sub-commands to visualize how the services of your home environment relate to one another:
fr: Et plus encore ! @command{guix home} fournit aussi les sous-commandes suivantes pour visualiser la manière dont les services de votre environnement personnel sont liés les uns aux autres :

note: type: cindex
en: service extension graph, of a home environment
fr: graphe d'extension des services, pour l'environnement personnel

note: type: table
en: Emit to standard output the @dfn{service extension graph} of the home environment defined in @var{file} (@pxref{Service Composition}, for more information on service extensions).  By default the output is in Dot/Graphviz format, but you can choose a different format with @option{--graph-backend}, as with @command{guix graph} (@pxref{Invoking guix graph, @option{--backend}}):
fr: Émettre vers la sortie standard le @dfn{graphe d'extension de service} de l'environnement personnel défini dans @var{file} (@pxref{Service Composition}, pour plus d'informations sur les extensions de service). Par défaut, le format de sortie est le format Dot/Graphviz, mais vous pouvez choisir un autre format avec @option{--graph-backend}, comme avec @command{guix graph} (@pxref{Invoking guix graph, @option{--backend}}) :

note: type: cindex
en: Shepherd dependency graph, for a home environment
fr: Graphe de dépendance du Shepherd, pour l'environnement personnel

note: type: table
en: Emit to standard output the @dfn{dependency graph} of shepherd services of the home environment defined in @var{file}.  @xref{Shepherd Services}, for more information and for an example graph.
fr: Affiche le @dfn{graphe de dépendance} des services shepherd de l'environnement personnel défini dans @var{file} sur la sortie standard.  @xref{Shepherd Services}, pour plus d'informations et un exemple de graphe.

note: type: table
en: Consider the home-environment @var{expr} evaluates to.  This is an alternative to specifying a file which evaluates to a home environment.
fr: Considère l'environnement personnel en lequel s'évalue @var{expr}.  C'est une alternative à la spécification d'un fichier qui s'évalue en un environnement personnel.

note: type: table
en: Instruct @command{guix home reconfigure} to allow system downgrades.
fr: Dit à @command{guix home reconfigure} de permettre le retour en arrière du système.

note: type: table
en: Just like @command{guix system}, @command{guix home reconfigure}, by default, prevents you from downgrading your home to older or unrelated revisions compared to the channel revisions that were used to deploy it---those shown by @command{guix home describe}.  Using @option{--allow-downgrades} allows you to bypass that check, at the risk of downgrading your home---be careful!
fr: Comme pour @command{guix system}, @command{guix home reconfigure}, par défaut, vous empêche de faire revenir votre dossier personnel à une révision plus vieille ou non liée par rapport aux révisions des canaux utilisés pour le déployer --- cette information est affichée par @command{guix home describe}. Avec @option{--allow-downgrades}, vous pouvez outrepasser cette vérification, au risque de faire revenir votre dossier personnel en arrière --- faites attention !

note: type: cindex
en: documentation, searching for
fr: documentation, recherche

note: type: cindex
en: searching for documentation
fr: chercher de la documentation

note: type: cindex
en: Info, documentation format
fr: Info, format de documentation

note: type: cindex
en: man pages
fr: man, pages de manuel

note: type: cindex
en: manual pages
fr: pages de manuel

note: type: Plain text
en: In most cases packages installed with Guix come with documentation.  There are two main documentation formats: ``Info'', a browsable hypertext format used for GNU software, and ``manual pages'' (or ``man pages''), the linear documentation format traditionally found on Unix.  Info manuals are accessed with the @command{info} command or with Emacs, and man pages are accessed using @command{man}.
fr: Dans la plupart des cas les paquets installés avec Guix ont une documentation.  Il y a deux formats de documentation principaux : « Info », un format hypertexte navigable utilisé par les logiciels GNU et les « pages de manuel » (ou « pages de man »), le format de documentation linéaire traditionnel chez Unix.  Les manuels Info sont disponibles via la commande @command{info} ou avec Emacs, et les pages de man sont accessibles via la commande @command{man}.

note: type: Plain text
en: You can look for documentation of software installed on your system by keyword.  For example, the following command searches for information about ``TLS'' in Info manuals:
fr: Vous pouvez chercher de la documentation pour les logiciels installés sur votre système par mot-clef.  Par exemple, la commande suivante recherche des informations sur « TLS » dans les manuels Info :

note: type: Plain text
en: The command below searches for the same keyword in man pages@footnote{The database searched by @command{man -k} is only created in profiles that contain the @code{man-db} package.}:
fr: La commande ci-dessous recherche le même mot-clé dans les pages de manuel@footnote{La base de donnée parcourue par @command{man -k} est uniquement créée dans les profils qui contiennent le paquet @code{man-db}.} :

note: type: Plain text
en: These searches are purely local to your computer so you have the guarantee that documentation you find corresponds to what you have actually installed, you can access it off-line, and your privacy is respected.
fr: Ces recherches sont purement locales à votre ordinateur donc vous savez que la documentation trouvée correspond à ce qui est effectivement installé, vous pouvez y accéder hors ligne et votre vie privée est préservée.

note: type: Plain text
en: Once you have these results, you can view the relevant documentation by running, say:
fr: Une fois que vous avez ces résultats, vous pouvez visualiser la documentation appropriée avec, disons :

note: type: Plain text
en: or:
fr: ou :

note: type: Plain text
en: Info manuals contain sections and indices as well as hyperlinks like those found in Web pages.  The @command{info} reader (@pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}) and its Emacs counterpart (@pxref{Misc Help,,, emacs, The GNU Emacs Manual}) provide intuitive key bindings to navigate manuals.  @xref{Getting Started,,, info, Info: An Introduction}, for an introduction to Info navigation.
fr: Les manuels Info contiennent des sections et des indexs ainsi que des hyperliens comme ce qu'on trouve sur les pages Web.  Le lecteur @command{info} (@pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}) et sa contre-partie dans Emacs (@pxref{Misc Help,,, emacs, The GNU Emacs Manual}) fournissent des raccourcis claviers intuitifs pour naviguer dans les manuels  @xref{Getting Started,,, info, Info: An Introduction} pour trouver une introduction sur la navigation dans info.

note: type: Plain text
en: The packages and systems built by Guix are intended, like most computer programs, to run on a CPU with a specific instruction set, and under a specific operating system.  Those programs are often also targeting a specific kernel and system library.  Those constraints are captured by Guix in @code{platform} records.
fr: Les paquets et les systèmes construit par Guix sont conçus, comme la plupart des programmes informatiques, pour tourner sur un CPU avec un jeu d'instructions spécifique, et sous un système d'exploitation particulier. Ces programmes ciblent le plus souvent aussi un noyau et une bibliothèque système particulière. Ces contraintes sont reflétées par Guix dans les enregistrements @code{platform}.

note: type: section
en: @code{platform} Reference
fr: Référence de @code{platform}

note: type: Plain text
en: The @code{platform} data type describes a @dfn{platform}: an @acronym{ISA, instruction set architecture}, combined with an operating system and possibly additional system-wide settings such as the @acronym{ABI, application binary interface}.
fr: Le type de données @code{platform} décrit une @dfn{plateforme} : un @acronym{ISA, jeu d'instructions architectural (en anglais @i{instruction set architecture})} combiné avec un système d'exploitation et éventuellement des paramètres systèmes supplémentaires comme l'@acronym{ABI, interface binaire applicative (en anglais @i{application binary interface})}.

note: type: deftp
en: {Data Type} platform
fr: {Type de données} platform

note: type: deftp
en: This is the data type representing a platform.
fr: C'est le type de donnée représentant une plateforme.

note: type: table
en: This field specifies the platform's GNU triplet as a string (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf}).
fr: Ce champ spécifie le triplet GNU de la plateforme en une chaine (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf}).

note: type: table
en: This string is the system type as it is known to Guix and passed, for instance, to the @option{--system} option of most commands.
fr: Cette chaine est le type de système connu par Guix et passé, par exemple, à l'option @option{--system} de la plupart des commandes.

note: type: table
en: It usually has the form @code{"@var{cpu}-@var{kernel}"}, where @var{cpu} is the target CPU and @var{kernel} the target operating system kernel.
fr: Elle a le plus souvent la forme @code{"@var{cpu}-@var{noyau}"}, où @var{cpu} est le CPU cible et @var{noyau} est le noyau du système d'exploitation cible.

note: type: table
en: It can be for instance @code{"aarch64-linux"} or @code{"armhf-linux"}.  You will encounter system types when you perform native builds (@pxref{Native Builds}).
fr: Elle peut être par exemple @code{"aarch64-linux"} ou @code{"armhf-linux"}. Vous rencontrerez ces types de systèmes en effectuant des constructions natives (@pxref{Native Builds}).

note: type: item
en: @code{linux-architecture} (default: @code{#false})
fr: @code{linux-architecture} (par défaut : @code{#false})

note: type: table
en: This optional string field is only relevant if the kernel is Linux.  In that case, it corresponds to the ARCH variable used when building Linux, @code{"mips"} for instance.
fr: Cette chaine facultative n'est pertinente que si le noyau est Linux. Dans ce cas, elle correspond à la variable ARCH utilisée lors de la construction de Linux, @code{"mips"} par exemple.

note: type: table
en: This field is the name of the GNU C Library dynamic linker for the corresponding system, as a string.  It can be @code{"/lib/ld-linux-armhf.so.3"}.
fr: Ce champ est le nom de l'éditeur des liens dynamique de la bibliothèque C de GNU pour le système correspondant, en une chaine. Elle peut être @code{"/lib/ld-linux-armhf.so.3"}.

note: type: Plain text
en: The @code{(guix platforms @dots{})} modules export the following variables, each of which is bound to a @code{platform} record.
fr: Les modules @code{(guix platforms @dots{})} exportent les variables suivantes, chacune d'entre elle étant liée à un enregistrement @code{platform}.

note: type: defvr
en: {Scheme Variable} armv7-linux
fr: {Variable Scheme} armv7-linux

note: type: defvr
en: Platform targeting ARM v7 CPU running GNU/Linux.
fr: Une plateforme ciblant un CPU ARM v7 tournant sous GNU/Linux.

note: type: defvr
en: {Scheme Variable} aarch64-linux
fr: {Variable Scheme} aarch64-linux

note: type: defvr
en: Platform targeting ARM v8 CPU running GNU/Linux.
fr: Une plateforme ciblant un CPU ARM v8 tournant sous GNU/Linux.

note: type: defvr
en: {Scheme Variable} mips64-linux
fr: {Variable Scheme} mips64-linux

note: type: defvr
en: Platform targeting MIPS little-endian 64-bit CPU running GNU/Linux.
fr: Une plateforme ciblant un CPU MIPS petit-boutiste 64-bits tournant sous GNU/Linux.

note: type: defvr
en: {Scheme Variable} powerpc-linux
fr: {Variable Scheme} powerpc-linux

note: type: defvr
en: Platform targeting PowerPC big-endian 32-bit CPU running GNU/Linux.
fr: Une plateforme ciblant un CPU PowerPC grand-boutiste 32-bits tournant sous GNU/Linux.

note: type: defvr
en: {Scheme Variable} powerpc64le-linux
fr: {Variable Scheme} powerpc64le-linux

note: type: defvr
en: Platform targeting PowerPC little-endian 64-bit CPU running GNU/Linux.
fr: Une plateforme ciblant un CPU PowerPC petit-boutiste 64-bits tournant sous GNU/Linux.

note: type: defvr
en: {Scheme Variable} riscv64-linux
fr: {Variable Scheme} riscv64-linux

note: type: defvr
en: Platform targeting RISC-V 64-bit CPU running GNU/Linux.
fr: Une plateforme ciblant un CPU RISC-V 64-bits tournant sous GNU/Linux.

note: type: defvr
en: {Scheme Variable} i686-linux
fr: {Variable Scheme} i686-linux

note: type: defvr
en: Platform targeting x86 CPU running GNU/Linux.
fr: Une plateforme ciblant un CPU x86 tournant sous GNU/Linux.

note: type: defvr
en: {Scheme Variable} x86_64-linux
fr: {Variable Scheme} x86_64-linux

note: type: defvr
en: Platform targeting x86 64-bit CPU running GNU/Linux.
fr: Une plateforme ciblant un CPU x86 64-bits tournant sous GNU/Linux.

note: type: defvr
en: {Scheme Variable} i686-mingw
fr: {Variable Scheme} i686-mingw

note: type: defvr
en: Platform targeting x86 CPU running Windows, with run-time support from MinGW.
fr: Une plateforme ciblant un CPU x86 tournant sous Windows, avec la prise en charge à l'exécution de MinGW.

note: type: defvr
en: {Scheme Variable} x86_64-mingw
fr: {Variable Scheme} x86_64-mingw

note: type: defvr
en: Platform targeting x86 64-bit CPU running Windows, with run-time support from MinGW.
fr: Une plateforme ciblant un CPU x86 64-bits tournant sous Windows, avec la prise en charge à l'exécution de MinGW.

note: type: defvr
en: {Scheme Variable} i586-gnu
fr: {Variable Scheme} i586-gnu

note: type: defvr
en: Platform targeting x86 CPU running GNU/Hurd (also referred to as ``GNU'').
fr: Une plateforme ciblant un CPU x86 tournant sous GNU/Hurd (aussi appelé « GNU »).

note: type: chapter
en: Creating System Images
fr: Créer des images systèmes

note: type: cindex
en: system images
fr: images systèmes

note: type: Plain text
en: When it comes to installing Guix System for the first time on a new machine, you can basically proceed in three different ways.  The first one is to use an existing operating system on the machine to run the @command{guix system init} command (@pxref{Invoking guix system}).  The second one, is to produce an installation image (@pxref{Building the Installation Image}). This is a bootable system which role is to eventually run @command{guix system init}.  Finally, the third option would be to produce an image that is a direct instantiation of the system you wish to run.  That image can then be copied on a bootable device such as an USB drive or a memory card.  The target machine would then directly boot from it, without any kind of installation procedure.
fr: Lorsque vient le moment d'installer Guix System pour la première fois sur une nouvelle machine, vous pouvez globalement procéder de trois manières différentes. La première manière est d'utiliser un système d'exploitation existant sur une machine pour lancer la commande @command{guix system init} (@pxref{Invoking guix system}). La seconde consiste à produire une image d'installation (@pxref{Building the Installation Image}). C'est un système amorçable dont le rôle est de lancer @command{guix system init}. Enfin, la troisième possibilité est de produire une image qui est une instanciation directe du système que vous voulez exécuter. Cette image peut ensuite être copiée sur un périphérique amorçable comme un périphérique USB ou une carte mémoire. La machine cible démarrerait alors directement dessus, sans aucune procédure d'installation.

note: type: Plain text
en: The @command{guix system image} command is able to turn an operating system definition into a bootable image.  This command supports different image types, such as @code{efi-raw}, @code{iso9660} and @code{docker}.  Any modern @code{x86_64} machine will probably be able to boot from an @code{iso9660} image.  However, there are a few machines out there that require specific image types.  Those machines, in general using @code{ARM} processors, may expect specific partitions at specific offsets.
fr: La commande @command{guix system image} peut transformer une définition de système d'exploitation en une image amorçable. Cette commande prend en charge différents types d'images, comme @code{efi-raw}, @code{iso9660} et @code{docker}. Toute machine @code{x86_64} récente sera sans doute capable de démarrer à partir d'une image @code{iso9660}. Cependant, il y a quelques machines qui nécessitent un type d'image spécifique. Ces machine, en général sous un processeur @code{ARM}, peuvent s'attendre à des partitions spécifiques à certaines positions particulières.

note: type: Plain text
en: This chapter explains how to define customized system images and how to turn them into actual bootable images.
fr: Ce chapitre explique comment définir des images systèmes personnalisées et comment les transformer en images amorçables.

note: type: section
en: @code{image} Reference
fr: Référence de @code{image}

note: type: Plain text
en: The @code{image} record, described right after, allows you to define a customized bootable system image.
fr: L'enregistrement @code{image}, décrit juste après, vous permet de définir une image système amorçable personnalisée.

note: type: deftp
en: {Data Type} image
fr: {Type de données} image

note: type: deftp
en: This is the data type representing a system image.
fr: C'est le type de donnée représentant une image système.

note: type: item
en: @code{name} (default: @code{#false})
fr: @code{name} (par défaut : @code{#false})

note: type: table
en: The image name as a symbol, @code{'my-iso9660} for instance.  The name is optional and it defaults to @code{#false}.
fr: Le nom de l'image en tant que symbole, @code{'my-iso9660} par exemple. Le nom est facultatif et vaut @code{#false} par défaut.

note: type: table
en: The image format as a symbol.  The following formats are supported:
fr: Le format d'image en tant que symbole. Les formats suivants sont pris en charge :

note: type: item
en: @code{disk-image}, a raw disk image composed of one or multiple
fr: @code{disk-image}, une image disque brute composée d'une ou plusieurs

note: type: item
en: @code{compressed-qcow2}, a compressed qcow2 image composed of
fr: @code{compressed-qcow2}, une image qcow2 compressée composée

note: type: itemize
en: one or multiple partitions.
fr: d'une ou plusieurs partitions.

note: type: item
en: @code{docker}, a Docker image.
fr: @code{docker}, une image Docker.

note: type: item
en: @code{iso9660}, an ISO-9660 image.
fr: @code{iso9660}, une image ISO-9660.

note: type: item
en: @code{tarball}, a tar.gz image archive.
fr: @code{tarball}, une archive d'image en tar.gz.

note: type: item
en: @code{wsl2}, a WSL2 image.
fr: @code{wsl2}, une image WSL2.

note: type: item
en: @code{platform} (default: @code{#false})
fr: @code{platform} (par défaut : @code{#false})

note: type: table
en: The @code{platform} record the image is targeting (@pxref{Platforms}), @code{aarch64-linux} for instance.  By default, this field is set to @code{#false} and the image will target the host platform.
fr: L'enregistrement @code{platform} que l'image cible (@pxref{Platforms}), par exemple @code{aarch64-linux}. Par défaut, ce champ est à @code{#false} et l'image ciblera la plateforme de l'hôte.

note: type: item
en: @code{size} (default: @code{'guess})
fr: @code{size} (par défaut : @code{'guess})

note: type: table
en: The image size in bytes or @code{'guess}.  The @code{'guess} symbol, which is the default, means that the image size will be inferred based on the image content.
fr: La taille de l'image en octets ou @code{'guess}. Le symbole @code{'guess}, qui est utilisé par défaut, signifie que la taille de l'image sera inférée à partir de son contenu.

note: type: table
en: The image's @code{operating-system} record that is instanciated.
fr: L'enregistrement @code{operating-system} à instancier dans l'image.

note: type: item
en: @code{partition-table-type} (default: @code{'mbr})
fr: @code{partition-table-type} (par défaut : @code{'mbr})

note: type: table
en: The image partition table type as a symbol.  Possible values are @code{'mbr} and @code{'gpt}.  It default to @code{'mbr}.
fr: Le type de table des partitions de l'image en tant que symbole. Les valeurs possibles sont @code{'mbr} et @code{'gbt}. La valeur par défaut est @code{'mbr}.

note: type: item
en: @code{partitions} (default: @code{'()})
fr: @code{partitions} (par défaut : @code{'()})

note: type: table
en: The image partitions as a list of @code{partition} records (@pxref{partition Reference}).
fr: Les partitions de l'image en tant que liste d'enregistrements @code{partition} (@pxref{partition Reference}).

note: type: item
en: @code{compression?} (default: @code{#true})
fr: @code{compression?} (par défaut : @code{#true})

note: type: table
en: Whether the image content should be compressed, as a boolean.  It defaults to @code{#true} and only applies to @code{'iso9660} image formats.
fr: Indique si le contenu de l'image doit être compressé, en tant que booléen. Sa valeur par défaut est @code{#true} et ne s'applique qu'aux formats d'image @code{'iso9660}.

note: type: item
en: @code{volatile-root?} (default: @code{#true})
fr: @code{volatil-root?} (par défaut : @code{#true})

note: type: table
en: Whether the image root partition should be made volatile, as a boolean.
fr: Indique si la partition racine de l'image devrait être volatile, en tant que booléen.

note: type: table
en: This is achieved by using a RAM backed file system (overlayfs) that is mounted on top of the root partition by the initrd.  It defaults to @code{#true}.  When set to @code{#false}, the image root partition is mounted as read-write partition by the initrd.
fr: Cela se fait en utilisant un système de fichiers en RAM (overlayfs) monté sur la partition racine par l'initrd. Sa valeur par défaut est @code{#true}. Lorsque la valeur est @code{#false}, la partition racine de l'image est montée en lecture-écriture par l'initrd.

note: type: item
en: @code{shared-store?} (default: @code{#false})
fr: @code{shared-store?} (par défaut : @code{#false})

note: type: table
en: Whether the image's store should be shared with the host system, as a boolean.  This can be useful when creating images dedicated to virtual machines.  When set to @code{#false}, which is the default, the image's @code{operating-system} closure is copied to the image.  Otherwise, when set to @code{#true}, it is assumed that the host store will be made available at boot, using a @code{9p} mount for instance.
fr: Indique si le dépôt de l'image devrait être partagé avec le système hôte, en tant que booléen. Cela peut être utile si vous créez des images dédiées à des machines virtuelles. Lorsque la valeur est @code{#false}, ce qui est la valeur par défaut, la clôture du @code{operating-system} de l'image est copiée dans l'image. Sinon, lorsque la valeur est @code{#true}, le dépôt de l'hôte est censé être disponible au démarrage avec un montage @code{9p} par exemple.

note: type: item
en: @code{shared-network?} (default: @code{#false})
fr: @code{shared-network?} (par défaut : @code{#false})

note: type: table
en: Whether to use the host network interfaces within the image, as a boolean.  This is only used for the @code{'docker} image format.  It defaults to @code{#false}.
fr: Indique s'il faut utiliser les interfaces réseaux de l'hôte dans l'image, en tant que booléen. C'est utilisé uniquement pour le format d'image @code{'docker}. Sa valeur par défaut est @code{#false}.

note: type: item
en: @code{substitutable?} (default: @code{#true})
fr: @code{substitutable?} (par défaut : @code{#true})

note: type: table
en: Whether the image derivation should be substitutable, as a boolean.  It defaults to @code{true}.
fr: Indique si la dérivation de l'image devrait être substituable, en tant que booléen. Sa valeur par défaut est @code{#true}.

note: type: node
en: partition Reference
fr: référence de partition

note: type: subsection
en: @code{partition} Reference
fr: Référence de @code{partition}

note: type: Plain text
en: In @code{image} record may contain some partitions.
fr: L'enregistrement @code{image} peut contenir des partitions.

note: type: deftp
en: {Data Type} partition
fr: {Type de données} partition

note: type: deftp
en: This is the data type representing an image partition.
fr: C'est le type de donnée représentant une partition d'image.

note: type: table
en: The partition size in bytes or @code{'guess}.  The @code{'guess} symbol, which is the default, means that the partition size will be inferred based on the partition content.
fr: La taille de la partition en octets ou @code{'guess}. Le symbole @code{'guess}, qui est la valeur par défaut, signifie que la taille de la partition sera inférée en fonction de son contenu.

note: type: item
en: @code{offset} (default: @code{0})
fr: @code{offset} (par défaut : @code{0})

note: type: table
en: The partition's start offset in bytes, relative to the image start or the previous partition end.  It defaults to @code{0} which means that there is no offset applied.
fr: La position du début de la partition en octets, relativement au début de l'image ou de la fin de la partition précédente. Sa valeur par défaut est @code{0} ce qui signifie qu'aucun décalage n'est appliqué.

note: type: item
en: @code{file-system} (default: @code{"ext4"})
fr: @code{file-system} (par défaut : @code{"ext4"})

note: type: table
en: The partition file system as a string, defaulting to @code{"ext4"}.  The supported values are @code{"vfat"}, @code{"fat16"}, @code{"fat32"} and @code{"ext4"}.
fr: Le système de fichiers de la partition en tant que chaine, par défaut @code{"ext4"}. Les valeurs prises en charge sont @code{"vfat"}, @code{"fat16"}, @code{"fat32"} et @code{"ext4"}.

note: type: item
en: @code{file-system-options} (default: @code{'()})
fr: @code{file-system-options} (par défaut : @code{'()})

note: type: table
en: The partition file system creation options that should be passed to the partition creation tool, as a list of strings.  This is only supported when creating @code{"ext4"} partitions.
fr: Les options de création du système de fichiers de la partition qui seront passées à l'outil de création de partition, en tant que liste de chaines. Ce n'est pris en charge que pour créer des partitions @code{"ext4"}.

note: type: table
en: See the @code{"extended-options"} man page section of the @code{"mke2fs"} tool for a more complete reference.
fr: Voir la section @code{"extended-options"} dans la page de manuel de l'outil @code{"mke2fs"} pour une référence plus complète.

note: type: table
en: The partition label as a mandatory string, @code{"my-root"} for instance.
fr: L'étiquette de la partition en tant que chaine obligatoire, par exemple @code{"ma-racine"}.

note: type: item
en: @code{uuid} (default: @code{#false})
fr: @code{uuid} (par défaut : @code{#false})

note: type: table
en: The partition UUID as an @code{uuid} record (@pxref{File Systems}).  By default it is @code{#false}, which means that the partition creation tool will attribute a random UUID to the partition.
fr: L'UUID de la partition en tant qu'enregistrement @code{uuid} (@pxref{File Systems}). Sa valeur par défaut est @code{#false}, ce qui signifie que l'outil de création de partition attribuera un UUID aléatoire à la partition.

note: type: table
en: The partition flags as a list of symbols.  Possible values are @code{'boot} and @code{'esp}.  The @code{'boot} flags should be set if you want to boot from this partition.  Exactly one partition should have this flag set, usually the root one. The @code{'esp} flag identifies a UEFI System Partition.
fr: Les drapeaux de la partition en tant que liste de symboles. Les valeurs possibles sont @code{'boot} et @code{'esp}. Le drapeau @code{'boot} devrait être indiqué si vous voulez démarrer sur cette partition. Exactement une partition devrait avoir ce drapeau, typiquement la partition racine. Le drapeau @code{'esp} identifie une partition système pour UEFI.

note: type: item
en: @code{initializer} (default: @code{#false})
fr: @code{initializer} (par défaut : @code{#false})

note: type: table
en: The partition initializer procedure as a gexp.  This procedure is called to populate a partition.  If no initializer is passed, the @code{initialize-root-partition} procedure from the @code{(gnu build image)} module is used.
fr: La procédure d'initialisation de la partition en tant que gexp. Cette procédure est appelée pour remplir la partition. Si aucune procédure n'est passée, la procédure @code{initialize-root-partition} du module @code{(gnu build image)} sera utilisée.

note: type: Plain text
en: Let's say you would like to create an MBR image with three distinct partitions:
fr: Imaginons que vous vouliez créer une image MBR avec trois partitions distinctes :

note: type: item
en: The @acronym{ESP, EFI System Partition}, a partition of
fr: L'@acronym{ESP, partition système EFI}, une partition de

note: type: itemize
en: 40@tie{}MiB at offset 1024@tie{}KiB with a vfat file system.
fr: 40@tie{}Mio à la position 1024@tie{}Kio avec un système de fichiers vfat.

note: type: item
en: an ext4 partition of 50@tie{}MiB data file, and labeled ``data''.
fr: une partition ext4 de 50@tie{}Mio de données, et étiquetée « données ».

note: type: item
en: an ext4 bootable partition containing the @code{%simple-os}
fr: une partition amorçable ext4 contenant le système d'exploitation

note: type: itemize
en: operating-system.
fr: @code{%simple-os}.

note: type: Plain text
en: You would then write the following image definition in a @code{my-image.scm} file for instance.
fr: Vous écririez ensuite la définition d'image suivante dans un fichier @code{mon-image.scm} par exemple.

note: type: lisp
en: (define MiB (expt 2 20))
fr: (define Mio (expt 2 20))

note: type: lisp
en: (image
     (format 'disk-image)
     (operating-system %simple-os)
     (partitions
      (list
       (partition
        (size (* 40 MiB))
        (offset (* 1024 1024))
        (label "GNU-ESP")
        (file-system "vfat")
        (flags '(esp))
        (initializer (gexp initialize-efi-partition)))
       (partition
        (size (* 50 MiB))
        (label "DATA")
        (file-system "ext4")
        (initializer #~(lambda* (root . rest)
                         (mkdir root)
                         (call-with-output-file
                             (string-append root "/data")
                           (lambda (port)
                             (format port "my-data"))))))
       (partition
        (size 'guess)
        (label root-label)
        (file-system "ext4")
        (flags '(boot))
        (initializer (gexp initialize-root-partition))))))
fr: (image
     (format 'disk-image)
     (operating-system %simple-os)
     (partitions
      (list
       (partition
        (size (* 40 Mio))
        (offset (* 1024 1024))
        (label "GNU-ESP")
        (file-system "vfat")
        (flags '(esp))
        (initializer (gexp initialize-efi-partition)))
       (partition
        (size (* 50 Mio))
        (label "DATA")
        (file-system "ext4")
        (initializer #~(lambda* (root . rest)
                         (mkdir root)
                         (call-with-output-file
                             (string-append root "/data")
                           (lambda (port)
                             (format port "my-data"))))))
       (partition
        (size 'guess)
        (label root-label)
        (file-system "ext4")
        (flags '(boot))
        (initializer (gexp initialize-root-partition))))))

note: type: Plain text
en: Note that the first and third partitions use generic initializers procedures, initialize-efi-partition and initialize-root-partition respectively.  The initialize-efi-partition installs a GRUB EFI loader that is loading the GRUB bootloader located in the root partition.  The initialize-root-partition instantiates a complete system as defined by the @code{%simple-os} operating-system.
fr: Remarquez que la première et la troisième partition utilisent les procédure d'initialisation par défaut, respectivement initialize-efi-partition et initialize-root-partition. Initialize-efi-partition installe un chargeur EFI GRUB qui charge le chargeur d'amorçage GRUB situé sur la partition racine. Initialize-root-partition instancie un système complet défini par le système d'exploitation @code{%simple-os}.

note: type: Plain text
en: You can now run:
fr: Vous pouvez maintenant lancer :

note: type: example
en: guix system image my-image.scm
fr: guix system image mon-image.scm

note: type: Plain text
en: to instantiate the @code{image} definition.  That produces a disk image which has the expected structure:
fr: pour instancier la définition de l'@code{image}. Cela produit une image disque qui a la structure attendue :

note: type: example
en: $ parted $(guix system image my-image.scm) print
    @dots{}
    Model:  (file)
    Disk /gnu/store/yhylv1bp5b2ypb97pd3bbhz6jk5nbhxw-disk-image: 1714MB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags:
fr: $ parted $(guix system image mon-image.scm) print
    @dots{}
    Model:  (file)
    Disk /gnu/store/yhylv1bp5b2ypb97pd3bbhz6jk5nbhxw-disk-image: 1714MB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags:

note: type: Plain text
en: The size of the @code{boot} partition has been inferred to @code{1619MB} so that it is large enough to host the @code{%simple-os} operating-system.
fr: La taille de la partition @code{boot} a été inférée à @code{1619 Mo} pour qu'elle soit assez grande pour héberger le système d'exploitation @code{%simple-os}.

note: type: Plain text
en: You can also use existing @code{image} record definitions and inherit from them to simplify the @code{image} definition.  The @code{(gnu system image)} module provides the following @code{image} definition variables.
fr: Vous pouvez aussi utiliser les définitions d'enregistrements @code{image} existantes et hériter d'elles pour simplifier la définition de l'@code{image}. Le module @code{(gnu system image)} fournit les variables de définition d'@code{image} suivantes.

note: type: defvr
en: {Scheme Variable} efi-disk-image
fr: {Variable Scheme} efi-disk-image

note: type: defvr
en: A MBR disk-image composed of two partitions: a 64 bits ESP partition and a ROOT boot partition.  This image can be used on most @code{x86_64} and @code{i686} machines, supporting BIOS or UEFI booting.
fr: Une image disque MBR composée de deux partitions : une partition ESP 64 bits et une partition racine de démarrage. Cette image peut être utilisée sur la plupart des machines @code{x86_64} et @code{i686} qui prennent en charge l'amorçage via le BIOS ou l'UEFI.

note: type: defvr
en: {Scheme Variable} efi32-disk-image
fr: {Variable Scheme} efi32-disk-image

note: type: defvr
en: Same as @code{efi-disk-image} but with a 32 bits EFI partition.
fr: Comme @code{efi-disk-image} mais avec une partition EFI 32 bits.

note: type: defvr
en: {Scheme Variable} iso9660-image
fr: {Variable Scheme} iso9660-image

note: type: defvr
en: An ISO-9660 image composed of a single bootable partition.  This image can also be used on most @code{x86_64} and @code{i686} machines.
fr: Une image ISO-9660 composée d'une seule partition amorçable. Cette image peut être utilisée sur la plupart des machine @code{x86_64} et @code{i686}.

note: type: defvr
en: {Scheme Variable} docker-image
fr: {Variable Scheme} docker-image

note: type: defvr
en: A Docker image that can be used to spawn a Docker container.
fr: Une image Docker qui peut être utilisée pour démarrer un conteneur Docker.

note: type: Plain text
en: Using the @code{efi-disk-image} we can simplify our previous @code{image} declaration this way:
fr: En utilisant @code{efi-disk-image} nous pouvons simplifier notre précédente déclaration d'@code{image} de cette manière :

note: type: lisp
en: (define data
      (partition
       (size (* 50 MiB))
       (label "DATA")
       (file-system "ext4")
       (initializer #~(lambda* (root . rest)
                        (mkdir root)
                        (call-with-output-file
                            (string-append root "/data")
                          (lambda (port)
                            (format port "my-data")))))))
fr: (define data
      (partition
       (size (* 50 Mio))
       (label "DATA")
       (file-system "ext4")
       (initializer #~(lambda* (root . rest)
                        (mkdir root)
                        (call-with-output-file
                            (string-append root "/data")
                          (lambda (port)
                            (format port "my-data")))))))

note: type: Plain text
en: This will give the exact same @code{image} instantiation but the @code{image} declaration is simpler.
fr: Cela donnera exactement la même instanciation d'@code{image} mas la déclaration de l'@code{image} est plus simple.

note: type: Plain text
en: The @command{guix system image} command can, as we saw above, take a file containing an @code{image} declaration as argument and produce an actual disk image from it.  The same command can also handle a file containing an @code{operating-system} declaration as argument.  In that case, how is the @code{operating-system} turned into an image?
fr: La commande @command{guix system image} peut, comme nous l'avons vu plus haut, prendre un fichier contenant une déclaration d'@code{image} comme argument et produire une image disque à partir de celui-ci. Cette même commande peut aussi gérer un fichier contenant une déclaration @code{operating-system} comme argument. Dans ce cas, comment un @code{operating-system} est-il transformé en une image ?

note: type: Plain text
en: That's where the @code{image-type} record intervenes.  This record defines how to transform an @code{operating-system} record into an @code{image} record.
fr: C'est là que l'enregistrement @code{image-type} intervient. Cet enregistrement définit comment transformer un enregistrement @code{operating-system} en un enregistrement @code{image}.

note: type: deftp
en: {Data Type} image-type
fr: {Type de données} image-type

note: type: deftp
en: This is the data type representing an image-type.
fr: C'est le type de donnée représentant un type d'image.

note: type: table
en: The image-type name as a mandatory symbol, @code{'efi32-raw} for instance.
fr: Le nom du type d'image, en tant que symbole obligatoire, par exemple @code{'efi32-raw}.

note: type: table
en: The image-type constructor, as a mandatory procedure that takes an @code{operating-system} record as argument and returns an @code{image} record.
fr: Le constructeur du type d'image, en tant que procédure obligatoire qui prend un enregistrement @code{operating-system} comme argument et renvoie un enregistrement @code{image}.

note: type: Plain text
en: There are several @code{image-type} records provided by the @code{(gnu system image)} and the @code{(gnu system images @dots{})} modules.
fr: Il y a plusieurs enregistrements @code{image-type} fournis par les modules @code{(gnu system image)} et @code{(gnu system images @dots{})}.

note: type: defvr
en: {Scheme Variable} efi-raw-image-type
fr: {Variable Scheme} efi-raw-image-type

note: type: defvr
en: Build an image based on the @code{efi-disk-image} image.
fr: Construit une image basée sur l'image @code{efi-disk-image}.

note: type: defvr
en: {Scheme Variable} efi32-raw-image-type
fr: {Variable Scheme} efi32-raw-image-type

note: type: defvr
en: Build an image based on the @code{efi32-disk-image} image.
fr: Construit une image basée sur l'image @code{efi32-disk-image}.

note: type: defvr
en: {Scheme Variable} qcow2-image-type
fr: {Variable Scheme} qcow2-image-type

note: type: defvr
en: Build an image based on the @code{efi-disk-image} image but with the @code{compressed-qcow2} image format.
fr: Construit une image basée sur l'image @code{efi-disk-image} mais avec le format d'image @code{compressed-qcow2}.

note: type: defvr
en: {Scheme Variable} iso-image-type
fr: {Variable Scheme} iso-image-type

note: type: defvr
en: Build a compressed image based on the @code{iso9660-image} image.
fr: Construit une image compressée basée sur l'image @code{iso9660-image}.

note: type: defvr
en: {Scheme Variable} uncompressed-iso-image-type
fr: {Variable Scheme} uncompressed-iso-image-type

note: type: defvr
en: Build an image based on the @code{iso9660-image} image but with the @code{compression?} field set to @code{#false}.
fr: Construit une image basée sur l'image @code{iso9660-image} mais avec le champ @code{compression?} à @code{#false}.

note: type: defvr
en: {Scheme Variable} docker-image-type
fr: {Variable Scheme} docker-image-type

note: type: defvr
en: Build an image based on the @code{docker-image} image.
fr: Construit une image basée sur limage @code{docker-image}.

note: type: defvr
en: {Scheme Variable} raw-with-offset-image-type
fr: {Variable Scheme} raw-with-offset-image-type

note: type: defvr
en: Build an MBR image with a single partition starting at a @code{1024KiB} offset.  This is useful to leave some room to install a bootloader in the post-MBR gap.
fr: Construit une image MBR avec une seule partition commençant à l'adresse @code{1024 Kio}. C'est utile pour laisser la place pour installer un chargeur d'amorçage dans l'intervalle post-MBR.

note: type: defvr
en: {Scheme Variable} pinebook-pro-image-type
fr: {Variable Scheme} pinebook-pro-image-type

note: type: defvr
en: Build an image that is targeting the Pinebook Pro machine.  The MBR image contains a single partition starting at a @code{9MiB} offset.  The @code{u-boot-pinebook-pro-rk3399-bootloader} bootloader will be installed in this gap.
fr: Construit une image qui cible la machine Pinebook Pro. L'image MBR contient une seule partition commençant à l'adresse @code{9 Mio}. Le chargeur d'amorçage @code{u-boot-pinebook-pro-rk3399-bootloader} sera installé dans l'intervalle.

note: type: defvr
en: {Scheme Variable} rock64-image-type
fr: {Variable Scheme} rock64-image-type

note: type: defvr
en: Build an image that is targeting the Rock64 machine.  The MBR image contains a single partition starting at a @code{16MiB} offset.  The @code{u-boot-rock64-rk3328-bootloader} bootloader will be installed in this gap.
fr: Construit une image qui cible la machine Rock64. L'image MBR contient une seule partition commençant à l'adresse @code{16 Mio}. Le chargeur d'amorçage @code{u-boot-rock64-rk3328-bootloader} sera installé dans l'intervalle.

note: type: defvr
en: {Scheme Variable} novena-image-type
fr: {Variable Scheme} novena-image-type

note: type: defvr
en: Build an image that is targeting the Novena machine.  It has the same characteristics as @code{raw-with-offset-image-type}.
fr: Construit une image qui cible la machine Novena. Elle a les mêmes caractéristiques que @code{raw-with-offset-image-type}.

note: type: defvr
en: {Scheme Variable} pine64-image-type
fr: {Variable Scheme} pine64-image-type

note: type: defvr
en: Build an image that is targeting the Pine64 machine.  It has the same characteristics as @code{raw-with-offset-image-type}.
fr: Construit une image qui cible la machine Pine64. Elle a les mêmes caractéristiques que @code{raw-with-offset-image-type}.

note: type: defvr
en: {Scheme Variable} hurd-image-type
fr: {Variable Scheme} hurd-image-type

note: type: defvr
en: Build an image that is targeting a @code{i386} machine running the Hurd kernel.  The MBR image contains a single ext2 partitions with specific @code{file-system-options} flags.
fr: Construit une image qui cible une machine @code{i386} qui exécute le noyau Hurd. L'image MBR contient une seule partition ext2 avec des drapeaux @code{file-system-options} spécifiques.

note: type: defvr
en: {Scheme Variable} hurd-qcow2-image-type
fr: {Variable Scheme} hurd-qcow2-image-type

note: type: defvr
en: Build an image similar to the one built by the @code{hurd-image-type} but with the @code{format} set to @code{'compressed-qcow2}.
fr: Construit une image similaire à celle construit par @code{hurd-image-type} mais avec le @code{format} @code{'compressed-qcow2}.

note: type: defvr
en: {Scheme Variable} wsl2-image-type
fr: {Variable Scheme} wsl2-image-type

note: type: defvr
en: Build an image for the @acronym{WSL2, Windows Subsystem for Linux 2}.  It can be imported by running:
fr: Construit une image pour le @acronym{WSL2, sous-système Linux de Windows 2}. Elle peut être importée en exécutant :

note: type: Plain text
en: So, if we get back to the @code{guix system image} command taking an @code{operating-system} declaration as argument.  By default, the @code{efi-raw-image-type} is used to turn the provided @code{operating-system} into an actual bootable image.
fr: Donc, revenons à la commande @code{guix system image} qui prend une déclaration @code{operating-system} comme argument. Par défaut, @code{efi-raw-image-type} est utilisé pour transformer l'@code{operating-system} fourni en une image amorçable.

note: type: Plain text
en: To use a different @code{image-type}, the @code{--image-type} option can be used.  The @code{--list-image-types} option will list all the supported image types.  It turns out to be a textual listing of all the @code{image-types} variables described just above (@pxref{Invoking guix system}).
fr: Pour utiliser un @code{image-type} différent, vous pouvez utiliser l'option @code{--image-type}. L'option @code{--list-image-types} listera tous les types d'images pris en charge. C'est une liste textuelle de toutes les variables @code{image-type} décrites plus haut (@pxref{Invoking guix system}).

note: type: Plain text
en: Let's take the example of the Pine64, an ARM based machine.  To be able to produce an image targeting this board, we need the following elements:
fr: Prenons l'exemple du Pine64, une machine ARM. Pour pouvoir produire une image ciblant cette carte, nous avons besoin des éléments suivants :

note: type: item
en: An @code{operating-system} record containing at least
fr: Un enregistrement @code{operating-system} contenant au moins

note: type: itemize
en: an appropriate kernel (@code{linux-libre-arm64-generic}) and bootloader @code{u-boot-pine64-lts-bootloader}) for the Pine64.
fr: un noyau approprié (@code{linux-libre-arm64-generic}) et un chargeur d'amorçage (@code{u-boot-pine64-lts-bootloader}) pour le Pine64.

note: type: item
en: Possibly, an @code{image-type} record providing a way to
fr: Éventuellement, un enregistrement @code{image-type} fournissant une manière de

note: type: itemize
en: turn an @code{operating-system} record to an @code{image} record suitable for the Pine64.
fr: transformer l'enregistrement @code{operating-system} en un enregistrement @code{image} approprié pour le Pine64.

note: type: item
en: An actual @code{image} that can be instantiated with the
fr: Une @code{image} qui peut être instanciée avec

note: type: itemize
en: @command{guix system image} command.
fr: la commande @command{guix system image}.

note: type: Plain text
en: The @code{(gnu system images pine64)} module provides all those elements: @code{pine64-barebones-os}, @code{pine64-image-type} and @code{pine64-barebones-raw-image} respectively.
fr: Le module @code{(gnu system images pine64)} fournit tous ces éléments : @code{pine64-barebones-os}, @code{pine64-image-type} et @code{pine64-barebones-raw-image}, respectivement.

note: type: Plain text
en: The module returns the @code{pine64-barebones-raw-image} in order for users to be able to run:
fr: Le module renvoie @code{pine64-barebones-raw-image} pour pouvoir exécuter :

note: type: Plain text
en: Now, thanks to the @code{pine64-image-type} record declaring the @code{'pine64-raw} @code{image-type}, one could also prepare a @code{my-pine.scm} file with the following content:
fr: Maintenant, grâce à l'enregistrement @code{pine64-image-type} qui déclare l'@code{image-type} @code{'pine64-raw}, on peut aussi préparer un fichier @code{my-pine.scm} avec le contenu suivant :

note: type: Plain text
en: to customize the @code{pine64-barebones-os}, and run:
fr: pour personnaliser le @code{pine64-barebones-os}, puis lancer :

note: type: Plain text
en: Note that there are other modules in the @code{gnu/system/images} directory targeting @code{Novena}, @code{Pine64}, @code{PinebookPro} and @code{Rock64} machines.
fr: Remarquez qu'il y a d'autres modules dans le répertoire @code{gnu/system/images} qui ciblent les machines @code{Novena}, @code{Pine64}, @code{PinebookPro} et @code{Rock64}.

note: type: cindex
en: debugging files
fr: fichiers de débogage

note: type: Plain text
en: Program binaries, as produced by the GCC compilers for instance, are typically written in the ELF format, with a section containing @dfn{debugging information}.  Debugging information is what allows the debugger, GDB, to map binary code to source code; it is required to debug a compiled program in good conditions.
fr: Les binaires des programmes, produits par les compilateurs GCC par exemple, sont typiquement écrits au format ELF, avec une section contenant des @dfn{informations de débogage}.  Les informations de débogage sont ce qui permet au débogueur, GDB, de relier le code binaire et le code source ; elles sont requises pour déboguer un programme compilé dans de bonnes conditions.

note: type: Plain text
en: This chapter explains how to use separate debug info when packages provide it, and how to rebuild packages with debug info when it's missing.
fr: Ce chapitre explique comme utiliser les information de débogages séparées quand un paquet ne les fournit pas, et comme reconstruire un paquet avec les informations de débogage manquantes.

note: type: Plain text
en: The problem with debugging information is that is takes up a fair amount of disk space.  For example, debugging information for the GNU C Library weighs in at more than 60 MiB@.  Thus, as a user, keeping all the debugging info of all the installed programs is usually not an option.  Yet, space savings should not come at the cost of an impediment to debugging---especially in the GNU system, which should make it easier for users to exert their computing freedom (@pxref{GNU Distribution}).
fr: Le problème avec les informations de débogage est qu'elles prennent pas mal de place sur le disque. Par exemple, les informations de débogage de la bibliothèque C de GNU prend plus de 60 Mo. Ainsi, en tant qu'utilisateur, garder toutes les informations de débogage de tous les programmes installés n'est souvent pas une possibilité. Cependant, l'économie d'espace ne devrait pas empêcher le débogage — en particulier, dans le système GNU, qui devrait faciliter pour ses utilisateurs l'exercice de leurs libertés (@pxref{Distribution GNU}).

note: type: Plain text
en: Thankfully, the GNU Binary Utilities (Binutils) and GDB provide a mechanism that allows users to get the best of both worlds: debugging information can be stripped from the binaries and stored in separate files.  GDB is then able to load debugging information from those files, when they are available (@pxref{Separate Debug Files,,, gdb, Debugging with GDB}).
fr: Heureusement, les utilitaires binaires de GNU (Binutils) et GDB fournissent un mécanisme qui permet aux utilisateurs d'avoir le meilleur des deux mondes : les informations de débogage peuvent être nettoyées des binaires et stockées dans des fichiers séparés.  GDB peut ensuite charger les informations de débogage depuis ces fichiers, lorsqu'elles sont disponibles (@pxref{Separate Debug Files,,, gdb, Debugging with GDB}).

note: type: Plain text
en: The GNU distribution takes advantage of this by storing debugging information in the @code{lib/debug} sub-directory of a separate package output unimaginatively called @code{debug} (@pxref{Packages with Multiple Outputs}).  Users can choose to install the @code{debug} output of a package when they need it.  For instance, the following command installs the debugging information for the GNU C Library and for GNU Guile:
fr: La distribution GNU se sert de cela pour stocker les informations de débogage dans le sous-répertoire @code{lib/debug} d'une sortie séparée du paquet appelée sans grande imagination @code{debug} (@pxref{Packages with Multiple Outputs}).  Les utilisateurs peuvent choisir d'installer la sortie @code{debug} d'un paquet lorsqu'ils en ont besoin.  Par exemple, la commande suivante installe les informations de débogage pour la bibliothèque C de GNU et pour GNU Guile :

note: type: Plain text
en: GDB must then be told to look for debug files in the user's profile, by setting the @code{debug-file-directory} variable (consider setting it from the @file{~/.gdbinit} file, @pxref{Startup,,, gdb, Debugging with GDB}):
fr: On doit ensuite dire à GDB de chercher les fichiers de débogage dans le profil de l'utilisateur, en remplissant la variable @code{debug-file-directory} (vous pourriez aussi l'instancier depuis le fichier @file{~/.gdbinit}, @pxref{Startup,,, gdb, Debugging with GDB}) :

note: type: Plain text
en: From there on, GDB will pick up debugging information from the @file{.debug} files under @file{~/.guix-profile/lib/debug}.
fr: À partir de là, GDB récuperera les informations de débogage des fichiers @file{.debug} sous @file{~/.guix-profile/lib/debug}.

note: type: Plain text
en: Below is an alternative GDB script which is useful when working with other profiles.  It takes advantage of the optional Guile integration in GDB.  This snippet is included by default on Guix System in the @file{~/.gdbinit} file.
fr: Voici un script GDB alternatif qui est utile pour travailler avec d'autres profils. Il s'appuie sur l'intégration Guile facultative dans GDB. Ce bout de code est inclus par défaut sur le système Guix dans le fichier @file{~/.gdbinit}.

note: type: Plain text
en: In addition, you will most likely want GDB to be able to show the source code being debugged.  To do that, you will have to unpack the source code of the package of interest (obtained with @code{guix build --source}, @pxref{Invoking guix build}), and to point GDB to that source directory using the @code{directory} command (@pxref{Source Path, @code{directory},, gdb, Debugging with GDB}).
fr: EN plus, vous voudrez sans doute que GDB puisse montrer le code source débogué.  Pour cela, vous devrez désarchiver le code source du paquet qui vous intéresse (obtenu via @code{guix build --source}, @pxref{Invoking guix build}) et pointer GDB vers ce répertoire des sources avec la commande @code{directory} (@pxref{Source Path, @code{directory},, gdb, Debugging with GDB}).

note: type: Plain text
en: The @code{debug} output mechanism in Guix is implemented by the @code{gnu-build-system} (@pxref{Build Systems}).  Currently, it is opt-in---debugging information is available only for the packages with definitions explicitly declaring a @code{debug} output.  To check whether a package has a @code{debug} output, use @command{guix package --list-available} (@pxref{Invoking guix package}).
fr: Le mécanisme de sortie @code{debug} dans Guix est implémenté par le @code{gnu-build-system} (@pxref{Build Systems}).  Actuellement, ce n'est pas obligatoire — les informations de débogage sont disponibles uniquement si les définitions déclarent explicitement une sortie @code{debug}.  Cela pourrait être modifié tout en permettant aux paquets de s'en passer dans le futur si nos serveurs de construction peuvent tenir la charge.  Pour vérifier si un paquet a une sortie @code{debug}, utilisez @command{guix package --list-available} (@pxref{Invoquer guix package}).

note: type: Plain text
en: Read on for how to deal with packages lacking a @code{debug} output.
fr: Continuez à lire pour apprendre comment gérer les paquets qui n'ont pas de sortie @code{debug}.

note: type: Plain text
en: As we saw above, some packages, but not all, provide debugging info in a @code{debug} output.  What can you do when debugging info is missing? The @option{--with-debug-info} option provides a solution to that: it allows you to rebuild the package(s) for which debugging info is missing---and only those---and to graft those onto the application you're debugging.  Thus, while it's not as fast as installing a @code{debug} output, it is relatively inexpensive.
fr: Comme nous l'avons montré, certains paquets, mais pas tous, fournissent des informations de débogage dans une sortie @code{debug}.  Que faire lorsque les informations de débogage sont manquantes ?  L'option @option{--with-debug-info} fournit une solution à cela : il vous permet de reconstruire les paquets pour lesquels les informations de débogages sont manquantes --- et seulement ceux-là --- et les greffe sur les applications que vous déboguez.  Ainsi, bien que ce ne soit pas aussi rapide qu'installer la sortie @code{debug}, ça demande relativement peu de choses.

note: type: Plain text
en: Let's illustrate that.  Suppose you're experiencing a bug in Inkscape and would like to see what's going on in GLib, a library that's deep down in its dependency graph.  As it turns out, GLib does not have a @code{debug} output and the backtrace GDB shows is all sadness:
fr: Illustrons cela.  Supposons que vous rencontriez un bogue dans Inkscape et que vous souhaitiez voir ce qui se passe dans GLib, une bibliothèque assez loin dans le graphe de dépendances.  Il se trouve que GLib n'a pas de sortie @code{debug} et la trace de débogage de GDB est toute triste :

note: type: Plain text
en: To address that, you install Inkscape linked against a variant GLib that contains debug info:
fr: Pour corriger cela, vous installez Inkscape lié à une variante de GLib qui contient les informations de débogage :

note: type: Plain text
en: This time, debugging will be a whole lot nicer:
fr: Cette fois-ci, le débogage a bien plus d'informations :

note: type: Plain text
en: Much better!
fr: Bien mieux !

note: type: Plain text
en: Note that there can be packages for which @option{--with-debug-info} will not have the desired effect.  @xref{Package Transformation Options, @option{--with-debug-info}}, for more information.
fr: Remarquez qu'il y a des paquets pour lesquels @option{--with-debug-info} n'a pas l'effet désiré.  @xref{Package Transformation Options, @option{--with-debug-info}}, pour plus d'informations.

note: type: chapter
en: Using @TeX{} and @LaTeX{}
fr: Utiliser @TeX{} et @LaTeX{}

note: type: cindex
en: @TeX{} packages
fr: paquets @TeX{}

note: type: cindex
en: @LaTeX{} packages
fr: paquets @LaTeX{}

note: type: Plain text
en: Guix provides packages for the @TeX{}, @LaTeX{}, ConTeXt, LuaTeX, and related typesetting systems, taken from the @uref{https://www.tug.org/texlive/, @TeX{} Live distribution}.  However, because @TeX{} Live is so huge and because finding your way in this maze is tricky, we thought that you, dear user, would welcome guidance on how to deploy the relevant packages so you can compile your @TeX{} and @LaTeX{} documents.
fr: Guix fournit des paquets pour les systèmes de composition @TeX{}, @LaTeX{}, ConTeXt, LuaTeX etc, qui font parti de la @uref{https://www.tug.org/texlive/, distribution @TeX{} Live}. Cependant, comme @TeX{} Live est énorme et comme s'y retrouver est difficile, nous pensons que vous, chère utilisatrice, cher utilisateur, apprécierez un peu d'aide sur la manière de déployer les paquets utiles pour que vous puissiez compiler vos documents @TeX{} et @LaTeX{}.

note: type: Plain text
en: @TeX{} Live currently comes in two flavors in Guix:
fr: @TeX{} Live est actuellement proposé dans deux variantes dans Guix :

note: type: itemize
en: The ``monolithic'' @code{texlive} package: it comes with @emph{every single @TeX{} Live package} (more than 7,000 of them), but it is huge (more than 4@tie{}GiB for a single package!).
fr: Le paquet @code{texlive} « monolithique » : il possède @emph{tous les paquets @TeX{} Live} (plus de 7 000), mais il est énorme (plus de 4@tie{}Gio pour un seul paquet !).

note: type: itemize
en: The ``modular'' @code{texlive-} packages: you install @code{texlive-base}, which provides core functionality and the main commands---@command{pdflatex}, @command{dvips}, @command{luatex}, @command{mf}, etc.---together with individual packages that provide just the features you need---@code{texlive-listings} for the @code{listings} package, @code{texlive-hyperref} for @code{hyperref}, @code{texlive-beamer} for Beamer, @code{texlive-pgf} for PGF/TikZ, and so on.
fr: Les paquets @code{texlive-} « modulaires » : vous installez @code{texlive-base}, qui fournit les fonctionnalités de base et les commandes principales --- @command{pdflatex}, @command{dvips}, @command{luatex}, @command{mf}, etc. --- avec les paquets individuels qui fournissent juste les fonctionnalités dont vous avez besoin --- @code{texlive-listings} pour le paquet @code{listings}, @code{texlive-hyperref} pour @code{hyperref}, @code{texlive-beamer} pour Beamer, @code{texlive-pgf} pour PGF/TikZ, etc.

note: type: Plain text
en: We recommend using the modular package set because it is much less resource-hungry.  To build your documents, you would use commands such as:
fr: Nous recommandons d'utiliser l'ensemble de paquets modulaires car il demande beaucoup moins de ressources. Pour construire vos documents, vous utiliserez des commandes comme :

note: type: Plain text
en: You can quickly end up with unreasonably long command lines though.  The solution is to instead write a manifest, for example like this one:
fr: Vous pouvez rapidement vous retrouver avec des commandes assez longues cependant. La solution est d'écrire un manifeste à la place, par exemple comme celui-ci :

note: type: lisp
en:    ;; Additional fonts.
       "texlive-cm-super" "texlive-amsfonts"
       "texlive-times" "texlive-helvetic" "texlive-courier"))
fr:    ;; Polices supplémentaires.
       "texlive-cm-super" "texlive-amsfonts"
       "texlive-times" "texlive-helvetic" "texlive-courier"))

note: type: Plain text
en: You can then pass it to any command with the @option{-m} option:
fr: Vous pouvez ensuite le passer à n'importe quelle commande avec l'option @option{-m} :

note: type: Plain text
en: @xref{Writing Manifests}, for more on manifests.  In the future, we plan to provide packages for @TeX{} Live @dfn{collections}---``meta-packages'' such as @code{fontsrecommended}, @code{humanities}, or @code{langarabic} that provide the set of packages needed in this particular domain.  That will allow you to list fewer packages.
fr: @xref{Writing Manifests}, pour plus d'informations sur les manifestes. Dans le futur, nous prévoyons de fournir des paquets pour les @dfn{collections} de @TeX{} Live --- des « méta-paquets » comme @code{fontsrecommended}, @code{humanities} ou @code{langarabic} qui fournissent l'ensemble de paquets requis dans ce domaine spécifique. Cela vous permettra de lister moins de paquets.

note: type: Plain text
en: The main difficulty here is that using the modular package set forces you to select precisely the packages that you need.  You can use @command{guix search}, but finding the right package can prove to be tedious.  When a package is missing, @command{pdflatex} and similar commands fail with an obscure message along the lines of:
fr: La principale difficulté ici est qu'utiliser l'ensemble de paquets modulaires vous force à choisir précisément les paquets dont vous avez besoin. Vous pouvez utiliser @command{guix search}, mais trouver le bon paquet peut être compliqué. Lorsqu'un paquet manque, @command{pdflatex} et les commandes similaires échouent avec une message obscur de ce type :

note: type: Plain text
en: or, for a missing font:
fr: ou, pour une police manquante :

note: type: Plain text
en: How do you determine what the missing package is? In the first case, you'll find the answer by running:
fr: Comment déterminer le paquet manquant ? Dans le premier cas, vous trouverez la réponse avec :

note: type: Plain text
en: In the second case, @command{guix search} turns up nothing.  Instead, you can search the @TeX{} Live package database using the @command{tlmgr} command:
fr: Dans le second cas, @command{guix search} ne renvoie rien. À la place, vous pouvez chercher dans la base de données des paquets @TeX{} Live avec la commande @command{tlmgh} :

note: type: Plain text
en: The file is available in the @TeX{} Live @code{helvetic} package, which is known in Guix as @code{texlive-helvetic}.  Quite a ride, but we found it!
fr: Le fichier est disponible dans le paquet @TeX{} Live @code{helvetic}, qui est connu dans Guix sous le nom @code{texlive-helvetic}. Quelle aventure !

note: type: Plain text
en: There is one important limitation though: Guix currently provides a subset of the @TeX{} Live packages.  If you stumble upon a missing package, you can try and import it (@pxref{Invoking guix import}):
fr: Il y a une autre limite importante cependant : Guix fournit actuellement un sous-ensemble des paquets @TeX{} Live. Si vous trouvez un paquet manquant, vous pouvez essayer de l'importer (@pxref{Invoking guix import}) :

note: type: example
en: guix import texlive @var{package}
fr: guix import texlive @var{paquet}

note: type: quotation
en: @TeX{} Live packaging is still very much work in progress, but you can help! @xref{Contributing}, for more information.
fr: La gestion des paquets @TeX{} Live est encore en chantier, mais vous pouvez nous aider ! @xref{Contributing}, pour plus d'informations.

note: type: cindex
en: security updates
fr: mises à jour de sécurité

note: type: Plain text
en: Occasionally, important security vulnerabilities are discovered in software packages and must be patched.  Guix developers try hard to keep track of known vulnerabilities and to apply fixes as soon as possible in the @code{master} branch of Guix (we do not yet provide a ``stable'' branch containing only security updates).  The @command{guix lint} tool helps developers find out about vulnerable versions of software packages in the distribution:
fr: Parfois, des vulnérabilités importantes sont découvertes dans les paquets logiciels et doivent être corrigées.  Les développeur·euses de Guix essayent de suivre les vulnérabilités connues et d'appliquer des correctifs aussi vite que possible dans la branche @code{master} de Guix (nous n'avons pas encore de branche « stable » contenant seulement des mises à jour de sécurité).  L'outil @command{guix lint} aide à trouver les versions vulnérables des paquets logiciels dans la distribution :

note: type: smallexample
en: $ guix lint -c cve
    gnu/packages/base.scm:652:2: glibc@@2.21: probably vulnerable to CVE-2015-1781, CVE-2015-7547
    gnu/packages/gcc.scm:334:2: gcc@@4.9.3: probably vulnerable to CVE-2015-5276
    gnu/packages/image.scm:312:2: openjpeg@@2.1.0: probably vulnerable to CVE-2016-1923, CVE-2016-1924
    @dots{}
fr: $ guix lint -c cve
    gnu/packages/base.scm:652:2 : glibc@@2.21 : probablement vulnérable à CVE-2015-1781, CVE-2015-7547
    gnu/packages/gcc.scm:334:2 : gcc@@4.9.3 : probablement vulnérable à CVE-2015-5276
    gnu/packages/image.scm:312:2 : openjpeg@@2.1.0 : probablement vulnérable à CVE-2016-1923, CVE-2016-1924
    @dots{}

note: type: Plain text
en: @xref{Invoking guix lint}, for more information.
fr: @xref{Invoking guix lint}, pour plus d'informations.

note: type: Plain text
en: Guix follows a functional package management discipline (@pxref{Introduction}), which implies that, when a package is changed, @emph{every package that depends on it} must be rebuilt.  This can significantly slow down the deployment of fixes in core packages such as libc or Bash, since basically the whole distribution would need to be rebuilt.  Using pre-built binaries helps (@pxref{Substitutes}), but deployment may still take more time than desired.
fr: Guix suit une discipline de gestion de paquets fonctionnelle (@pxref{Introduction}), ce qui implique que lorsqu'un paquet change, @emph{tous les paquets qui en dépendent} doivent être reconstruits. Cela peut grandement ralentir le déploiement de corrections dans les paquets du cœur comme libc ou bash comme presque toute la distribution aurait besoin d'être reconstruite. Cela aide d'utiliser des binaires pré-construits (@pxref{Substituts}), mais le déploiement peut toujours prendre plus de temps de souhaité.

note: type: cindex
en: grafts
fr: greffes

note: type: Plain text
en: To address this, Guix implements @dfn{grafts}, a mechanism that allows for fast deployment of critical updates without the costs associated with a whole-distribution rebuild.  The idea is to rebuild only the package that needs to be patched, and then to ``graft'' it onto packages explicitly installed by the user and that were previously referring to the original package.  The cost of grafting is typically very low, and order of magnitudes lower than a full rebuild of the dependency chain.
fr: Pour corriger cela, Guix implémente les @dfn{greffes}, un mécanisme qui permet un déploiement rapide des mises à jour de sécurité critiques sans le coût associé à une reconstruction complète de la distribution.  L'idée est de reconstruire uniquement le paquet qui doit être corrigé puis de le « greffer » sur les paquets qui sont explicitement installés par l'utilisateur et qui se référaient avant au paquet d'origine.  Le coût d'une greffe est typiquement très bas, et plusieurs ordres de grandeurs moins élevé que de reconstruire tout la chaîne de dépendance.

note: type: cindex
en: replacements of packages, for grafts
fr: remplacement de paquet, pour les greffes

note: type: Plain text
en: For instance, suppose a security update needs to be applied to Bash.  Guix developers will provide a package definition for the ``fixed'' Bash, say @code{bash-fixed}, in the usual way (@pxref{Defining Packages}).  Then, the original package definition is augmented with a @code{replacement} field pointing to the package containing the bug fix:
fr: Par exemple, supposons qu'une mise à jour de sécurité doive être appliquée à Bash.  Les développeurs de Guix fourniront une définition de paquet pour le Bash « corrigé », disons @var{bash-fixed}, de la manière habituelle (@pxref{Defining Packages}).  Ensuite, la définition originale du paquet est augmentée avec un champ @code{replacement} qui pointe vers le paquet contenant la correction :

note: type: Plain text
en: From there on, any package depending directly or indirectly on Bash---as reported by @command{guix gc --requisites} (@pxref{Invoking guix gc})---that is installed is automatically ``rewritten'' to refer to @code{bash-fixed} instead of @code{bash}.  This grafting process takes time proportional to the size of the package, usually less than a minute for an ``average'' package on a recent machine.  Grafting is recursive: when an indirect dependency requires grafting, then grafting ``propagates'' up to the package that the user is installing.
fr: À partir de maintenant, tout paquet dépendant directement ou indirectement de Bash — rapporté par @command{guix gc --requisites} (@pxref{Invoking guix gc}) — installé est automatiquement « réécrit » pour se référer à @var{bash-fixed} au lieu de @var{bash}.  Ce processus de greffe prend du temps en proportion de la taille du paquet, typiquement moins d'une minute pour un paquet de taille « moyenne » sur une machine récente.  La greffe est récursive : lorsqu'une dépendance indirecte a besoin d'être greffée, la greffe se « propage » jusqu'au paquet que l'utilisateur installe.

note: type: Plain text
en: Currently, the length of the name and version of the graft and that of the package it replaces (@code{bash-fixed} and @code{bash} in the example above) must be equal.  This restriction mostly comes from the fact that grafting works by patching files, including binary files, directly.  Other restrictions may apply: for instance, when adding a graft to a package providing a shared library, the original shared library and its replacement must have the same @code{SONAME} and be binary-compatible.
fr: Actuellement la longueur du nom et la version de la greffe et du paquet qu'il remplace (@var{bash-fixed} et @var{bash} dans l'exemple ci-dessus) doivent être identiques.  Cette restriction vient surtout du fait que la greffe fonctionne en corrigeant les fichiers, dont des fichiers binaires, directement.  D'autres restrictions peuvent apparaître : par exemple, si vous ajoutez une greffe à un paquet fournissant une bibliothèque partagée, la bibliothèque partagée originale et son remplacement doivent avoir le même @code{SONAME} et être compatibles au niveau binaire.

note: type: Plain text
en: The @option{--no-grafts} command-line option allows you to forcefully avoid grafting (@pxref{Common Build Options, @option{--no-grafts}}).  Thus, the command:
fr: L'option en ligne de commande @option{--no-grafts} vous permet d'éviter les greffes (@pxref{Common Build Options, @option{--no-grafts}}).  Donc la commande :

note: type: Plain text
en: returns the store file name of the original Bash, whereas:
fr: renvoie le nom de fichier dans les dépôt du Bash original, alors que :

note: type: Plain text
en: returns the store file name of the ``fixed'', replacement Bash.  This allows you to distinguish between the two variants of Bash.
fr: renvoie le nom de fichier du Bash « corrigé » de remplacement.  Cela vous permet de distinguer les deux variantes de Bash.

note: type: Plain text
en: To verify which Bash your whole profile refers to, you can run (@pxref{Invoking guix gc}):
fr: Pour vérifier à quel Bash votre profil se réfère, vous pouvez lancer (@pxref{Invoking guix gc}) :

note: type: Plain text
en: @dots{} and compare the store file names that you get with those above.  Likewise for a complete Guix system generation:
fr: @dots{} et comparer les noms de fichiers que vous obtenez avec ceux du dessus.  De la même manière pour une génération du système Guix :

note: type: Plain text
en: Lastly, to check which Bash running processes are using, you can use the @command{lsof} command:
fr: Enfin, pour vérifier quelles processus Bash lancés vous utilisez, vous pouvez utiliser la commande @command{lsof} :

note: type: cindex
en: bootstrapping
fr: bootstrap

note: type: Plain text
en: Bootstrapping in our context refers to how the distribution gets built ``from nothing''.  Remember that the build environment of a derivation contains nothing but its declared inputs (@pxref{Introduction}).  So there's an obvious chicken-and-egg problem: how does the first package get built? How does the first compiler get compiled?
fr: Dans notre contexte, le bootstrap se réfère à la manière dont la distribution est construite « à partir de rien ».  Rappelez-vous que l'environnement de construction d'une dérivation ne contient rien d'autre que les entrées déclarées (@pxref{Introduction}).  Donc il y a un problème évident de poule et d'œuf : comment le premier paquet est-il construit ?  Comment le premier compilateur est-il construit ?

note: type: Plain text
en: It is tempting to think of this question as one that only die-hard hackers may care about.  However, while the answer to that question is technical in nature, its implications are wide-ranging.  How the distribution is bootstrapped defines the extent to which we, as individuals and as a collective of users and hackers, can trust the software we run.  It is a central concern from the standpoint of @emph{security} and from a @emph{user freedom} viewpoint.
fr: Il est tentant de penser que seuls les bidouilleurs les plus enthousiastes se soucient de cette question. Cependant, bien que la réponse à cette question soit technique par nature, ses implications sont très vastes. La manière dont une distribution est amorcée définie l'étendue de ce que nous, individuellement et collectivement en tant qu'utilisateurs, utilisatrices, bidouilleuses et bidouilleurs, pouvons faire confiance aux logiciels que nous lançons. C'est une préoccupation centrale du point de vue de la @emph{sécurité} et de @emph{liberté des utilisateurs}.

note: type: cindex
en: bootstrap binaries
fr: binaires de bootstrap

note: type: Plain text
en: The GNU system is primarily made of C code, with libc at its core.  The GNU build system itself assumes the availability of a Bourne shell and command-line tools provided by GNU Coreutils, Awk, Findutils, `sed', and `grep'.  Furthermore, build programs---programs that run @code{./configure}, @code{make}, etc.---are written in Guile Scheme (@pxref{Derivations}).  Consequently, to be able to build anything at all, from scratch, Guix relies on pre-built binaries of Guile, GCC, Binutils, libc, and the other packages mentioned above---the @dfn{bootstrap binaries}.
fr: Le système GNU est surtout fait de code C, avec la libc en son cœur.  Le système de construction GNU lui-même suppose la disponibilité d'un shell Bourne et d'outils en ligne de commande fournis par GNU Coreutils, Awk, Findutils, sed et grep.  En plus, les programmes de construction — les programmes qui exécutent @code{./configure}, @code{make} etc — sont écrits en Guile Scheme (@pxref{Derivations}).  En conséquence, pour pouvoir construire quoi que ce soit, de zéro, Guix a besoin de binaire pré-construits de Guile, GCC, Binutils, la libc et des autres paquets mentionnés plus haut — les @dfn{binaires de bootstrap}.

note: type: Plain text
en: These bootstrap binaries are ``taken for granted'', though we can also re-create them if needed (@pxref{Preparing to Use the Bootstrap Binaries}).
fr: Ces binaires de bootstrap sont pris comme des acquis, bien qu'on puisse les recréer (ça arrive plus tard) si besoin (@pxref{Preparing to Use the Bootstrap Binaries}).

note: type: section
en: The Reduced Binary Seed Bootstrap
fr: Le bootstrap avec les sources binaires réduites

note: type: Plain text
en: Guix---like other GNU/Linux distributions---is traditionally bootstrapped from a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the GNU C Library (@pxref{Bootstrapping}).  Usually, these bootstrap binaries are ``taken for granted.''
fr: Guix --- comme les autres distributions GNU/Linux --- est traditionnellement bootstrappé à partir d'un ensemble de binaires de boostrap : Bourne shell, des outils en ligne de commande fournis par GNU Coreutils, Awk, Findutils, « sed » et « grep » et Guile, GCC, Binutils et la bibliothèque C de NU (@pxref{Bootstrapping}).  Habituellement, ces binaires de bootstrap sont « pris pour acquis ».

note: type: Plain text
en: Taking the bootstrap binaries for granted means that we consider them to be a correct and trustworthy ``seed'' for building the complete system.  Therein lies a problem: the combined size of these bootstrap binaries is about 250MB (@pxref{Bootstrappable Builds,,, mes, GNU Mes}).  Auditing or even inspecting these is next to impossible.
fr: Prendre les binaires de bootstrap pour acquis signifie que nous les considérons comme des « sources » corrects et de confiance pour la construction d'un système complet.  Là se trouve le problème : la taille de ces binaires de bootstrap est d'environ 250 Mo (@pxref{Bootstrappable Builds,,, mes, GNU Mes}).  Auditer ou même inspecter ces binaires est presque impossible.

note: type: Plain text
en: For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source Bootstrap'' and while we are working towards that goal it would be hyperbole to use that term for what we do now.}.
fr: Pour @code{i686-linux} et @code{x86_64-linux}, Guix propose maintenant un bootstrap avec « source binaire réduite » @footnote{On aimerait pouvoir dire « Bootstrap Source Complet » et même si on travail vers ce but, utiliser ce terme serait une hyperbole pour ce qu'on fait actuellement.}.

note: type: Plain text
en: The Reduced Binary Seed bootstrap removes the most critical tools---from a trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C Library are replaced by: @code{bootstrap-mescc-tools} (a tiny assembler and linker) and @code{bootstrap-mes} (a small Scheme Interpreter and a C compiler written in Scheme and the Mes C Library, built for TinyCC and for GCC).
fr: Le bootstrap avec les sources binaires réduites supprime les outils les plus critiques --- du point de vue de la confiance --- des binaires de bootstrap : GCC, Binutils et la bibliothèque C de GNU sont remplacées par : @code{bootstrap-mescc-tools} (un petit assembleur et éditeur des liens) et @code{bootstrap-mes} (un petit interpréteur Scheme et un compilateur C écrit en Scheme et la bibliothèque C de Mes, construite pour TinyCC et pour GCC).

note: type: Plain text
en: Using these new binary seeds the ``missing'' Binutils, GCC, and the GNU C Library are built from source.  From here on the more traditional bootstrap process resumes.  This approach has reduced the bootstrap binaries in size to about 145MB in Guix v1.1.
fr: À partir de ces nouvelles sources binaires, les Binutils, GCC et la bibliothèque C de GNU sont construits à partir des sources.  À partir de là, les processus de bootstrap plus traditionnel continue.  Cette approche a réduit la taille des binaires de bootstrap à environ 145 Mo dans Guix v1.1.

note: type: Plain text
en: The next step that Guix has taken is to replace the shell and all its utilities with implementations in Guile Scheme, the @emph{Scheme-only bootstrap}.  Gash (@pxref{Gash,,, gash, The Gash manual}) is a POSIX-compatible shell that replaces Bash, and it comes with Gash Utils which has minimalist replacements for Awk, the GNU Core Utilities, Grep, Gzip, Sed, and Tar.  The rest of the bootstrap binary seeds that were removed are now built from source.
fr: La prochaine étape qui Guix prépare est de remplacer le shell et tous ses utilitaires avec des implémentations en Guile Scheme, le @emph{bootstrap Scheme-seulement}.  Gash (@pxref{Gash,,, gash, The Gash manual}) est un shell compatible avec POSIX qui remplace Bash, et il propose Gash Utils qui a des remplaçants minimalistes pour Awk, les utilitaires GNu Core Utilities, Grep, Gzip, Sed et Tar.  Le reste des binaires de bootstrap que nous avons enlevés sont maintenant construits à partir des sources.

note: type: Plain text
en: Building the GNU System from source is currently only possible by adding some historical GNU packages as intermediate steps@footnote{Packages such as @code{gcc-2.95.3}, @code{binutils-2.14}, @code{glibc-2.2.5}, @code{gzip-1.2.4}, @code{tar-1.22}, and some others.  For details, see @file{gnu/packages/commencement.scm}.}.  As Gash and Gash Utils mature, and GNU packages become more bootstrappable again (e.g., new releases of GNU Sed will also ship as gzipped tarballs again, as alternative to the hard to bootstrap @code{xz}-compression), this set of added packages can hopefully be reduced again.
fr: Construire le Système GNU à partir des sources est actuellement seulement possible en ajoutant certains paquets GNU historiques en tant qu'étapes intermédiaires@footnote{Les paquets comme @code{gcc-2.95.3}, @code{binutils-2.14}, @code{glicb-2.2.5}, @code{gzip-1.2.4}, @code{tar-1.22} et certains autres.  Pour les détails, voir @file{gnu/packages/commencement.scm}.}.  Tandis que Gash et Gash Utils avancent, et que les paquets GNU deviennent de nouveau plus bootstrappables (p.@: ex.@: les nouvelles versions de GNU Sed proposeront de nouveau des archives gzip, en alternative à la compression @code{xz} difficile à boostrapper), on espère pouvoir réduire de nouveau cet ensemble de paquets supplémentaires.

note: type: Plain text
en: The graph below shows the resulting dependency graph for @code{gcc-core-mesboot0}, the bootstrap compiler used for the traditional bootstrap of the rest of the Guix System.
fr: Le graphe ci-dessous montre le graphe de dépendance résultant pour @code{gcc-core-mesboot}, le compilateur de bootstrap utilisé pour le bootstrap traditionnel du reste du système Guix.

note: type: Plain text
en: @image{images/gcc-core-mesboot0-graph,6in,,Dependency graph of gcc-core-mesboot0}
fr: @image{images/gcc-core-mesboot0-graph,6in,,Graphe de dépendance de gcc-core-mesboot0}

note: type: Plain text
en: The only significant binary bootstrap seeds that remain@footnote{ Ignoring the 68KB @code{mescc-tools}; that will be removed later, together with @code{mes}.} are a Scheme interpreter and a Scheme compiler: GNU Mes and GNU Guile@footnote{Not shown in this graph are the static binaries for @file{bash}, @code{tar}, and @code{xz} that are used to get Guile running.}.
fr: La seule source binaire restant@footnote{En ignorant @code{mescc-tools} qui fait 68 Ko ; qui sera supprimée plus tard, avec @code{mes}.} sont un interpréteur Scheme et un compilateur Scheme : GNU Mes et GNU Guile@footnote{Ce graphe ne montre pas les binaires statiques pour @file{bash}, @code{tar} et @code{xz} utilisés pour pouvoir lancer Guile.}.

note: type: Plain text
en: This further reduction has brought down the size of the binary seed to about 60MB for @code{i686-linux} and @code{x86_64-linux}.
fr: Cette réduction supplémentaire a réduit la taille du bootstrap à environ 60 Mo pour @code{i686-linux} et @code{x86_64-linux}.

note: type: Plain text
en: Work is ongoing to remove all binary blobs from our free software bootstrap stack, working towards a Full Source Bootstrap.  Also ongoing is work to bring these bootstraps to the @code{arm-linux} and @code{aarch64-linux} architectures and to the Hurd.
fr: Le travail continue pour supprimer tous les blobs binaires de notre pile de bootstrap libre, en essayant d'atteindre un bootstrap complet par les sources.  Le travail continue aussi pour apporter ces bootstraps aux architectures @code{arm-linux} et @code{aarch64-linux} et au Hurd.

note: type: Plain text
en: If you are interested, join us on @samp{#bootstrappable} on the Freenode IRC network or discuss on @email{bug-mes@@gnu.org} or @email{gash-devel@@nongnu.org}.
fr: Si vous êtes intéressé·e, rejoignez-nous sur @samp{#bootstrappable} sur le réseau IRC Freenode our discutez-en sur @email{bug-mes@@gnu.org} ou @email{gash-devel@@nongnu.org}.

note: type: Plain text
en: @image{images/bootstrap-graph,6in,,Dependency graph of the early bootstrap derivations}
fr: @image{images/bootstrap-graph,6in,,Graphe de dépendance des premières dérivations de bootstrap}

note: type: Plain text
en: The figure above shows the very beginning of the dependency graph of the distribution, corresponding to the package definitions of the @code{(gnu packages bootstrap)} module.  A similar figure can be generated with @command{guix graph} (@pxref{Invoking guix graph}), along the lines of:
fr: La figure ci-dessus montre le tout début du graphe de dépendances de la distribution, correspondant aux définitions des paquets du module @code{(gnu packages bootstrap)}.  Une figure similaire peut être générée avec @command{guix graph} (@pxref{Invoking guix graph}),  de cette manière :

note: type: Plain text
en: or, for the further Reduced Binary Seed bootstrap
fr: ou, pour le bootstrap avec les sources binaires plus réduites

note: type: Plain text
en: At this level of detail, things are slightly complex.  First, Guile itself consists of an ELF executable, along with many source and compiled Scheme files that are dynamically loaded when it runs.  This gets stored in the @file{guile-2.0.7.tar.xz} tarball shown in this graph.  This tarball is part of Guix's ``source'' distribution, and gets inserted into the store with @code{add-to-store} (@pxref{The Store}).
fr: À ce niveau de détails, les choses sont légèrement complexes.  Tout d'abord, Guile lui-même consiste en an exécutable ELF, avec plusieurs fichiers Scheme sources et compilés qui sont chargés dynamiquement quand il est exécuté.  Cela est stocké dans l'archive @file{guile-2.0.7.tar.xz} montrée dans ce graphe.  Cette archive fait parti de la distribution « source » de Guix, et est insérée dans le dépôt avec @code{add-to-store} (@pxref{The Store}).

note: type: Plain text
en: But how do we write a derivation that unpacks this tarball and adds it to the store? To solve this problem, the @code{guile-bootstrap-2.0.drv} derivation---the first one that gets built---uses @code{bash} as its builder, which runs @code{build-bootstrap-guile.sh}, which in turn calls @code{tar} to unpack the tarball.  Thus, @file{bash}, @file{tar}, @file{xz}, and @file{mkdir} are statically-linked binaries, also part of the Guix source distribution, whose sole purpose is to allow the Guile tarball to be unpacked.
fr: Mais comment écrire une dérivation qui décompresse cette archive et l'ajoute au dépôt ?  Pour résoudre ce problème, la dérivation @code{guile-bootstrap-2.0.drv} — la première qui est construite — utilise @code{bash} comme constructeur, qui lance @code{build-bootstrap-guile.sh}, qui à son tour appelle @code{tar} pour décompresser l'archive.  Ainsi, @file{bash}, @file{tar}, @file{xz} et @file{mkdir} sont des binaires liés statiquement, qui font aussi partie de la distribution source de Guix, dont le seul but est de permettre à l'archive de Guile d'être décompressée.

note: type: Plain text
en: Once @code{guile-bootstrap-2.0.drv} is built, we have a functioning Guile that can be used to run subsequent build programs.  Its first task is to download tarballs containing the other pre-built binaries---this is what the @file{.tar.xz.drv} derivations do.  Guix modules such as @code{ftp-client.scm} are used for this purpose.  The @code{module-import.drv} derivations import those modules in a directory in the store, using the original layout.  The @code{module-import-compiled.drv} derivations compile those modules, and write them in an output directory with the right layout.  This corresponds to the @code{#:modules} argument of @code{build-expression->derivation} (@pxref{Derivations}).
fr: Une fois que @code{guile-bootstrap-2.0.drv} est construit, nous avons un Guile fonctionnel qui peut être utilisé pour exécuter les programmes de construction suivants.  Sa première tâche consiste à télécharger les archives contenant les autres binaires pré-construits — c'est ce que la dérivation @code{.tar.xz.drv} accomplit.  Les modules Guix comme @code{ftp-client.scm} sont utilisés pour cela.  Les dérivations @code{module-import.drv} importent ces modules dans un répertoire dans le dépôt, en utilisant la disposition d'origine.  Les dérivations @code{module-import-compiled.drv} compilent ces modules, et les écrivent dans un répertoire de sortie avec le bon agencement.  Cela correspond à l'argument @code{#:modules} de @code{build-expression->derivation} (@pxref{Derivations}).

note: type: Plain text
en: Finally, the various tarballs are unpacked by the derivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, or @code{bootstrap-mes-0.drv} and @code{bootstrap-mescc-tools-0.drv}, at which point we have a working C tool chain.
fr: Enfin, les diverses archives sont décompressées par les dérivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, ou @code{bootstrap-mes-0.drv} et @code{bootstrap-mescc-tools-0.drv}, à ce stade, nous avons une chaîne d'outils C qui fonctionne.

note: type: unnumberedsec
en: Building the Build Tools
fr: Construire les outils de construction

note: type: Plain text
en: Bootstrapping is complete when we have a full tool chain that does not depend on the pre-built bootstrap tools discussed above.  This no-dependency requirement is verified by checking whether the files of the final tool chain contain references to the @file{/gnu/store} directories of the bootstrap inputs.  The process that leads to this ``final'' tool chain is described by the package definitions found in the @code{(gnu packages commencement)} module.
fr: Le bootstrap est complet lorsque nous avons une chaîne d'outils complète qui ne dépend pas des outils de bootstrap pré-construits dont on vient de parler.  Ce pré-requis d'indépendance est vérifié en s'assurant que les fichiers de la chaîne d'outil finale ne contiennent pas de référence vers les répertoires @file{/gnu/store} des entrées de bootstrap.  Le processus qui mène à cette chaîne d'outils « finale » est décrit par les définitions de paquets qui se trouvent dans le module @code{(gnu packages commencement)}.

note: type: Plain text
en: The @command{guix graph} command allows us to ``zoom out'' compared to the graph above, by looking at the level of package objects instead of individual derivations---remember that a package may translate to several derivations, typically one derivation to download its source, one to build the Guile modules it needs, and one to actually build the package from source.  The command:
fr: La commande @command{guix graph} nous permet de « dézoomer » comparé au graphe précédent, en regardant au niveau des objets de paquets plutôt que des dérivations individuelles — rappelez-vous qu'un paquet peut se traduire en plusieurs dérivations, typiquement une dérivation pour télécharger ses sources, une pour les modules Guile dont il a besoin et une pour effectivement compiler le paquet depuis les sources.  La commande :

note: type: example
en: guix graph -t bag \
      -e '(@@@@ (gnu packages commencement)
              glibc-final-with-bootstrap-bash)' | xdot -
fr: guix graph -t bag \
      -e '(@@@@ (gnu packages commencement)
              glibc-final-with-bootstrap-bash)' | dot -Tps > t.ps

note: type: Plain text
en: displays the dependency graph leading to the ``final'' C library@footnote{You may notice the @code{glibc-intermediate} label, suggesting that it is not @emph{quite} final, but as a good approximation, we will consider it final.}, depicted below.
fr: produit le graphe de dépendances qui mène à la bibliothèque C « finale »@footnote{Vous remarquerez qu'elle s'appelle @code{glibc-intermediate}, ce qui suggère qu'elle n'est pas @emph{tout à fait} finale, mais c'est une bonne approximation tout de même.}, représentée ci-dessous.

note: type: Plain text
en: @image{images/bootstrap-packages,6in,,Dependency graph of the early packages}
fr: @image{images/bootstrap-packages,6in,,Graphe de dépendance des premiers paquets}

note: type: Plain text
en: The first tool that gets built with the bootstrap binaries is GNU@tie{}Make---noted @code{make-boot0} above---which is a prerequisite for all the following packages.  From there Findutils and Diffutils get built.
fr: Le premier outil construit avec les binaires de bootstrap est GNU@tie{}Make — appelé @code{make-boot0} ci-dessus — qui est un prérequis de tous les paquets suivants .  Ensuite, Findutils et Diffutils sont construits.

note: type: Plain text
en: Then come the first-stage Binutils and GCC, built as pseudo cross tools---i.e., with @option{--target} equal to @option{--host}.  They are used to build libc.  Thanks to this cross-build trick, this libc is guaranteed not to hold any reference to the initial tool chain.
fr: Ensuite vient la première passe de Binutils et GCC, construits comme des pseudo outils croisés — c.-à-d.@: dont @option{--target} est égal à @code{--host}.  Ils sont utilisés pour construire la libc.  Grâce à cette astuce de compilation croisée, cette libc est garantie de ne contenir aucune référence à la chaîne d'outils initiale.

note: type: Plain text
en: From there the final Binutils and GCC (not shown above) are built.  GCC uses @command{ld} from the final Binutils, and links programs against the just-built libc.  This tool chain is used to build the other packages used by Guix and by the GNU Build System: Guile, Bash, Coreutils, etc.
fr: À partir de là, les Bintulis  finaux et GCC (non visibles ci-dessus) sont construits.  GCC utilise @command{ld} du Binutils final et lie les programme avec la libc qui vient d'être construite.  Cette chaîne d'outils est utilisée pour construire les autres paquets utilisés par Guix et par le système de construction de GNU : Guile, Bash, Coreutils, etc.

note: type: Plain text
en: And voilà! At this point we have the complete set of build tools that the GNU Build System expects.  These are in the @code{%final-inputs} variable of the @code{(gnu packages commencement)} module, and are implicitly used by any package that uses @code{gnu-build-system} (@pxref{Build Systems, @code{gnu-build-system}}).
fr: Et voilà !  À partir de là nous avons l'ensemble complet des outils auxquels s'attend le système de construction GNU.  Ils sont dans la variable @code{%final-inputs} du module @code{(gnu packages commencement)} et sont implicitement utilisés par tous les paquets qui utilisent le @code{gnu-build-system} (@pxref{Build Systems, @code{gnu-build-system}}).

note: type: unnumberedsec
en: Building the Bootstrap Binaries
fr: Construire les binaires de bootstrap

note: type: Plain text
en: Because the final tool chain does not depend on the bootstrap binaries, those rarely need to be updated.  Nevertheless, it is useful to have an automated way to produce them, should an update occur, and this is what the @code{(gnu packages make-bootstrap)} module provides.
fr: Comme la chaîne d'outils finale ne dépend pas des binaires de bootstrap, ils ont rarement besoin d'être mis à jour.  Cependant, il est utile d'avoir une manière de faire cela automatiquement, dans le cas d'une mise à jour et c'est ce que le module @code{(gnu packages make-bootstrap)} fournit.

note: type: Plain text
en: The following command builds the tarballs containing the bootstrap binaries (Binutils, GCC, glibc, for the traditional bootstrap and linux-libre-headers, bootstrap-mescc-tools, bootstrap-mes for the Reduced Binary Seed bootstrap, and Guile, and a tarball containing a mixture of Coreutils and other basic command-line tools):
fr: La commande suivante construit les archives contenant les binaires bootstrap (Binutils, GCC, glibc, pour le bootstrap traditionnel et les linux-libre-headers, bootstrap-mescc-tools, bootstrap-mes pour le bootstrap Reduced Binary Seed, et Guile, et une archive contenant un mélange de Coreutils et d'autres outils de base de la ligne de commande) :

note: type: Plain text
en: The generated tarballs are those that should be referred to in the @code{(gnu packages bootstrap)} module mentioned at the beginning of this section.
fr: Les archives générées sont celles qui devraient être référencées dans le module @code{(gnu packages bootstrap)} au début de cette section.

note: type: Plain text
en: Still here? Then perhaps by now you've started to wonder: when do we reach a fixed point? That is an interesting question! The answer is unknown, but if you would like to investigate further (and have significant computational and storage resources to do so), then let us know.
fr: Vous êtes toujours là ? Alors peut-être que maintenant vous vous demandez, quand est-ce qu'on atteint un point fixe ? C'est une question intéressante ! La réponse est inconnue, mais si vous voulez enquêter plus profondément (et que vous avez les ressources en puissance de calcul et en capacité de stockage pour cela), dites-le nous.

note: type: unnumberedsec
en: Reducing the Set of Bootstrap Binaries
fr: Réduire l'ensemble des binaires de bootstrap

note: type: Plain text
en: Our traditional bootstrap includes GCC, GNU Libc, Guile, etc.  That's a lot of binary code! Why is that a problem? It's a problem because these big chunks of binary code are practically non-auditable, which makes it hard to establish what source code produced them.  Every unauditable binary also leaves us vulnerable to compiler backdoors as described by Ken Thompson in the 1984 paper @emph{Reflections on Trusting Trust}.
fr: Nos binaires de bootstrap incluent actuellement  GCC, GNU Libc, Guile, etc.  C'est beaucoup de code binaire !  Pourquoi est-ce un problème ?  C'est un problème parce que ces gros morceaux de code binaire sont en pratique impossibles à auditer, ce qui fait qu'il est difficile d'établir quel code source les a produit.  Chaque binaire non vérifiable nous rend également vulnérables aux portes dérobées des compilateurs, comme le décrit Ken Thompson dans le document @emph{Reflections on Trusting Trust} de 1984.

note: type: Plain text
en: This is mitigated by the fact that our bootstrap binaries were generated from an earlier Guix revision.  Nevertheless it lacks the level of transparency that we get in the rest of the package dependency graph, where Guix always gives us a source-to-binary mapping.  Thus, our goal is to reduce the set of bootstrap binaries to the bare minimum.
fr: Cela est rendu moins inquiétant par le fait que les binaires de bootstrap ont été générés par une révision antérieure de Guix.  Cependant, il leur manque le niveau de transparence que l'on obtient avec le reste des paquets du graphe de dépendance, où Guix nous donne toujours une correspondance source-binaire.  Ainsi, notre but est de réduire l'ensemble des binaires de bootstrap au minimum.

note: type: Plain text
en: The @uref{https://bootstrappable.org, Bootstrappable.org web site} lists on-going projects to do that.  One of these is about replacing the bootstrap GCC with a sequence of assemblers, interpreters, and compilers of increasing complexity, which could be built from source starting from a simple and auditable assembler.
fr: Le @uref{http://bootstrappable.org, site web Bootstrappable.org} liste les projets en cours à ce sujet.  L'un d'entre eux parle de remplacer le GCC de bootstrap par une série d'assembleurs, d'interpréteurs et de compilateurs d'une complexité croissante, qui pourraient être construits à partir des sources à partir d'un assembleur simple et auditable.  Votre aide est (bien sûr !) la bienvenue.

note: type: Plain text
en: Our first major achievement is the replacement of of GCC, the GNU C Library and Binutils by MesCC-Tools (a simple hex linker and macro assembler) and Mes (@pxref{Top, GNU Mes Reference Manual,, mes, GNU Mes}, a Scheme interpreter and C compiler in Scheme).  Neither MesCC-Tools nor Mes can be fully bootstrapped yet and thus we inject them as binary seeds.  We call this the Reduced Binary Seed bootstrap, as it has halved the size of our bootstrap binaries! Also, it has eliminated the C compiler binary; i686-linux and x86_64-linux Guix packages are now bootstrapped without any binary C compiler.
fr: Notre premier grand succès est le remplacement de GCC, de la bibliothèque C de GNU et de Binutils par MesCC-Tools (un éditeur de lien hexadécimal et un macro assembleur) et Mes (@pxref{Top, GNU Mes Reference Manual,, mes, GNU Mes}, un interpréteur Scheme et un compilateur C écrit en Scheme).  Ni MesCC-Tools ni Mes ne peuvent encore être bootstrappés et donc nous les injectons comme des sources binaires.  Nous appelons cela le bootstrap avec les sources binaires réduites, comme cela a réduit de moitié la taille de nous binaires de bootstrap !  Aussi, cela a éliminé le compilateur C binaire ; les paquets i686-linux et x86_64-linux de Guix sont maintenant bootstrappé sans aucun compilateur C binaire.

note: type: Plain text
en: Work is ongoing to make MesCC-Tools and Mes fully bootstrappable and we are also looking at any other bootstrap binaries.  Your help is welcome!
fr: Le travail continue pour rendre MesCC-Tools et Mes complètement bootstrappables et nous cherchons aussi comment remplacer tout autre binaire de bootstrap.  votre aide est la bienvenue !

note: type: chapter
en: Porting to a New Platform
fr: Porter vers une nouvelle plateforme

note: type: Plain text
en: As discussed above, the GNU distribution is self-contained, and self-containment is achieved by relying on pre-built ``bootstrap binaries'' (@pxref{Bootstrapping}).  These binaries are specific to an operating system kernel, CPU architecture, and application binary interface (ABI).  Thus, to port the distribution to a platform that is not yet supported, one must build those bootstrap binaries, and update the @code{(gnu packages bootstrap)} module to use them on that platform.
fr: Comme nous en avons discuté plus haut, la distribution GNU est auto-contenue, et cela est possible en se basant sur des « binaires de bootstrap » pré-construits (@pxref{Bootstrapping}).  Ces binaires sont spécifiques au noyau de système d'exploitation, à l'architecture CPU et à l'interface applicative binaire (ABI).  Ainsi, pour porter la distribution sur une plateforme qui n'est pas encore supportée, on doit construire ces binaires de bootstrap et mettre à jour le module @code{(gnu packages bootstrap)} pour les utiliser sur cette plateforme.

note: type: Plain text
en: Fortunately, Guix can @emph{cross compile} those bootstrap binaries.  When everything goes well, and assuming the GNU tool chain supports the target platform, this can be as simple as running a command like this one:
fr: Heureusement, Guix peut effectuer une @emph{compilation croisée} de ces binaires de bootstrap.  Lorsque tout va bien, et en supposant que la chaîne d'outils GNU supporte la plateforme cible, cela peut être aussi simple que de lancer une commande comme ceci :

note: type: Plain text
en: For this to work, it is first required to register a new platform as defined in the @code{(guix platform)} module.  A platform is making the connection between a GNU triplet (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf}), the equivalent @var{system} in Nix notation, the name of the @var{glibc-dynamic-linker}, and the corresponding Linux architecture name if applicable (@pxref{Platforms}).
fr: Pour que cela fonctionne, vous devez d'abord enregistrer une nouvelle plateforme définie dans le module @code{(guix platform)}. Une plateforme connecte un triplet GNU (@pxref{Specifying Target Triplets, GNU configuration triplets,, autoconf, Autoconf}), l'équivalent du @var{système} en notation Nix, le nom du @var{glibc-dynamic-linker} et le nom de l'architecture Linux correspondante si applicable (@pxref{Platforms})..

note: type: Plain text
en: Once the bootstrap tarball are built, the @code{(gnu packages bootstrap)} module needs to be updated to refer to these binaries on the target platform.  That is, the hashes and URLs of the bootstrap tarballs for the new platform must be added alongside those of the currently supported platforms.  The bootstrap Guile tarball is treated specially: it is expected to be available locally, and @file{gnu/local.mk} has rules to download it for the supported architectures; a rule for the new platform must be added as well.
fr: Une fois que les archives de bootstrap sont construites, le module @code{(gnu packages bootstrap)} doit être mis à jour pour se référer à ces binaires sur la plateforme cible.  C'est à dire que les hashs et les URL des archives de bootstrap pour la nouvelle plateforme doivent être ajoutés avec ceux des plateformes actuellement supportées.  L'archive de bootstrap de Guile est traitée séparément : elle doit être disponible localement, et @file{gnu/local.mk} a une règle pour la télécharger pour les architectures supportées ; vous devez également ajouter une règle pour la nouvelle plateforme.

note: type: Plain text
en: In practice, there may be some complications.  First, it may be that the extended GNU triplet that specifies an ABI (like the @code{eabi} suffix above) is not recognized by all the GNU tools.  Typically, glibc recognizes some of these, whereas GCC uses an extra @option{--with-abi} configure flag (see @code{gcc.scm} for examples of how to handle this).  Second, some of the required packages could fail to build for that platform.  Lastly, the generated binaries could be broken for some reason.
fr: En pratique, il peut y avoir des complications.  Déjà, il se peut que le triplet GNU étendu qui spécifie l'ABI (comme le suffixe @code{eabi} ci-dessus) ne soit pas reconnu par tous les outils GNU.  Typiquement, la glibc en reconnait certains, alors que GCC utilise un drapeau de configuration @option{--with-abi} supplémentaire (voir @code{gcc.scm} pour trouver des exemples où ce cas est géré).  Ensuite, certains des paquets requis pourraient échouer à se construire pour cette plateforme.  Enfin, les binaires générés pourraient être cassé pour une raison ou une autre.

note: type: include
en: contributing.texi
fr: contributing.fr.texi

note: type: Plain text
en: Guix is based on the @uref{https://nixos.org/nix/, Nix package manager}, which was designed and implemented by Eelco Dolstra, with contributions from other people (see the @file{nix/AUTHORS} file in Guix).  Nix pioneered functional package management, and promoted unprecedented features, such as transactional package upgrades and rollbacks, per-user profiles, and referentially transparent build processes.  Without this work, Guix would not exist.
fr: Guix se base sur le @uref{https://nixos.org/nix/ gestionnaire de paquets Nix} conçu et implémenté par Eelco Dolstra, avec des contributions d'autres personnes (voir le fichier @file{nix/AUTHORS} dans Guix).  Nix a inventé la gestion de paquet fonctionnelle et promu des fonctionnalités sans précédents comme les mises à jour de paquets transactionnelles et les retours en arrière, les profils par utilisateurs et les processus de constructions transparents pour les références.  Sans ce travail, Guix n'existerait pas.

note: type: Plain text
en: The Nix-based software distributions, Nixpkgs and NixOS, have also been an inspiration for Guix.
fr: Les distributions logicielles basées sur Nix, Nixpkgs et NixOS, ont aussi été une inspiration pour Guix.

note: type: Plain text
en: GNU@tie{}Guix itself is a collective work with contributions from a number of people.  See the @file{AUTHORS} file in Guix for more information on these fine people.  The @file{THANKS} file lists people who have helped by reporting bugs, taking care of the infrastructure, providing artwork and themes, making suggestions, and more---thank you!
fr: GNU@tie{}Guix lui-même est un travail collectif avec des contributions d'un grand nombre de personnes.  Voyez le fichier @file{AUTHORS} dans Guix pour plus d'information sur ces personnes de qualité.  Le fichier @file{THANKS} liste les personnes qui ont aidé en rapportant des bogues, en prenant soin de l'infrastructure, en fournissant des images et des thèmes, en faisant des suggestions et bien plus. Merci !

note: type: cindex
en: license, GNU Free Documentation License
fr: licence, GNU Free Documentation License
