diff options
Diffstat (limited to 'doc/guix.fr.texi')
| -rw-r--r-- | doc/guix.fr.texi | 26504 |
1 files changed, 0 insertions, 26504 deletions
diff --git a/doc/guix.fr.texi b/doc/guix.fr.texi deleted file mode 100644 index d961625d728..00000000000 --- a/doc/guix.fr.texi +++ /dev/null | |||
| @@ -1,26504 +0,0 @@ | |||
| 1 | \input texinfo | ||
| 2 | @c =========================================================================== | ||
| 3 | @c | ||
| 4 | @c This file was generated with po4a. Translate the source file. | ||
| 5 | @c | ||
| 6 | @c =========================================================================== | ||
| 7 | @c -*-texinfo-*- | ||
| 8 | |||
| 9 | @c %**start of header | ||
| 10 | @setfilename guix.fr.info | ||
| 11 | @documentencoding UTF-8 | ||
| 12 | @documentlanguage fr | ||
| 13 | @frenchspacing on | ||
| 14 | @settitle Manuel de référence de GNU Guix | ||
| 15 | @c %**end of header | ||
| 16 | |||
| 17 | @include version-fr.texi | ||
| 18 | |||
| 19 | @c Identifier of the OpenPGP key used to sign tarballs and such. | ||
| 20 | @set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5 | ||
| 21 | @set KEY-SERVER pool.sks-keyservers.net | ||
| 22 | |||
| 23 | @c The official substitute server used by default. | ||
| 24 | @set SUBSTITUTE-SERVER ci.guix.fr.info | ||
| 25 | |||
| 26 | @copying | ||
| 27 | Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 | ||
| 28 | Ludovic Courtès@* Copyright @copyright{} 2013, 2014, 2016 Andreas Enge@* | ||
| 29 | Copyright @copyright{} 2013 Nikita Karetnikov@* Copyright @copyright{} 2014, | ||
| 30 | 2015, 2016 Alex Kost@* Copyright @copyright{} 2015, 2016 Mathieu Lirzin@* | ||
| 31 | Copyright @copyright{} 2014 Pierre-Antoine Rault@* Copyright @copyright{} | ||
| 32 | 2015 Taylan Ulrich Bayırlı/Kammer@* Copyright @copyright{} 2015, 2016, 2017 | ||
| 33 | Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo | ||
| 34 | Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} | ||
| 35 | 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018, | ||
| 36 | 2019 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* | ||
| 37 | Copyright @copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017, | ||
| 38 | 2018, 2019 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* | ||
| 39 | Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, | ||
| 40 | 2017, 2018, 2019 Christopher Baines@* Copyright @copyright{} 2017, 2018 | ||
| 41 | Clément Lassieur@* Copyright @copyright{} 2017, 2018 Mathieu Othacehe@* | ||
| 42 | Copyright @copyright{} 2017 Federico Beffa@* Copyright @copyright{} 2017, | ||
| 43 | 2018 Carlo Zancanaro@* Copyright @copyright{} 2017 Thomas Danckaert@* | ||
| 44 | Copyright @copyright{} 2017 humanitiesNerd@* Copyright @copyright{} 2017 | ||
| 45 | Christopher Allan Webber@* Copyright @copyright{} 2017, 2018 Marius Bakke@* | ||
| 46 | Copyright @copyright{} 2017 Hartmut Goebel@* Copyright @copyright{} 2017 | ||
| 47 | Maxim Cournoyer@* Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@* | ||
| 48 | Copyright @copyright{} 2017 George Clemmer@* Copyright @copyright{} 2017 | ||
| 49 | Andy Wingo@* Copyright @copyright{} 2017, 2018, 2019 Arun Isaac@* Copyright | ||
| 50 | @copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* | ||
| 51 | Copyright @copyright{} 2018 Oleg Pykhalov@* Copyright @copyright{} 2018 Mike | ||
| 52 | Gerwitz@* Copyright @copyright{} 2018 Pierre-Antoine Rouby@* Copyright | ||
| 53 | @copyright{} 2018 Gábor Boskovits@* Copyright @copyright{} 2018 Florian | ||
| 54 | Pelz@* Copyright @copyright{} 2018 Laura Lazzati@* Copyright @copyright{} | ||
| 55 | 2018 Alex Vong@* | ||
| 56 | |||
| 57 | Vous avez la permission de copier, distribuer ou modifier ce document sous | ||
| 58 | les termes de la Licence GNU Free Documentation, version 1.3 ou toute | ||
| 59 | version ultérieure publiée par la Free Software Foundation ; sans section | ||
| 60 | invariante, texte de couverture et sans texte de quatrième de couverture. | ||
| 61 | Une copie de la licence est incluse dans la section intitulée « GNU Free | ||
| 62 | Documentation License ». | ||
| 63 | @end copying | ||
| 64 | |||
| 65 | @dircategory Administration système | ||
| 66 | @direntry | ||
| 67 | * Guix: (guix.fr). Gérer les logiciels installés et la | ||
| 68 | configuration du système. | ||
| 69 | * guix package : (guix.fr)Invoquer guix package. Installer, supprimer et | ||
| 70 | mettre à jour des | ||
| 71 | paquets. | ||
| 72 | * guix gc : (guix.fr)Invoquer guix gc. Récupérer de l'espace disque | ||
| 73 | inutilisé. | ||
| 74 | * guix pull : (guix.fr)Invoquer guix pull. Mettre à jour la liste des | ||
| 75 | paquets disponibles. | ||
| 76 | * guix system : (guix.fr)Invoquer guix system. Gérer la configuration du | ||
| 77 | système d'exploitation. | ||
| 78 | @end direntry | ||
| 79 | |||
| 80 | @dircategory Développement logiciel | ||
| 81 | @direntry | ||
| 82 | * guix environment : (guix.fr)Invoquer guix environment. Construire des | ||
| 83 | environnements | ||
| 84 | de construction | ||
| 85 | avec Guix. | ||
| 86 | * guix build : (guix.fr)Invoquer guix build. Construire des paquets. | ||
| 87 | * guix pack : (guix.fr) Invoquer guix pack. Créer des lots binaires. | ||
| 88 | @end direntry | ||
| 89 | |||
| 90 | @titlepage | ||
| 91 | @title Manuel de référence de GNU Guix | ||
| 92 | @subtitle Utiliser le gestionnaire de paquet fonctionnel GNU Guix | ||
| 93 | @author Les développeurs de GNU Guix | ||
| 94 | |||
| 95 | @page | ||
| 96 | @vskip 0pt plus 1filll | ||
| 97 | Édition @value{EDITION} @* @value{UPDATED} @* | ||
| 98 | |||
| 99 | @insertcopying | ||
| 100 | @end titlepage | ||
| 101 | |||
| 102 | @contents | ||
| 103 | |||
| 104 | @c ********************************************************************* | ||
| 105 | @node Top | ||
| 106 | @top GNU Guix | ||
| 107 | |||
| 108 | Cette documentation décrit GNU Guix version @value{VERSION}, un outil de | ||
| 109 | gestion de paquets fonctionnel écrit pour le système GNU@. | ||
| 110 | |||
| 111 | @c TRANSLATORS: You can replace the following paragraph with information on | ||
| 112 | @c how to join your own translation team and how to report issues with the | ||
| 113 | @c translation. | ||
| 114 | Ce manuel est aussi disponible en anglais (@pxref{Top,,, guix, GNU Guix | ||
| 115 | Reference Manual}) et en allemand (@pxref{Top,,, guix.de, Referenzhandbuch | ||
| 116 | zu GNU Guix}). Si vous souhaitez nous aider à traduire ce manuel en | ||
| 117 | français, vous pouvez nous rejoindre sur le | ||
| 118 | @uref{https://translationproject.org/domain/guix-manual.html, projet de | ||
| 119 | traduction} et sur la liste de diffusion | ||
| 120 | @uref{https://listes.traduc.org/mailman/listinfo/traduc/, | ||
| 121 | traduc@@traduc.org}. | ||
| 122 | |||
| 123 | @menu | ||
| 124 | * Introduction:: Qu'est-ce que Guix ? | ||
| 125 | * Installation:: Installer Guix. | ||
| 126 | * Installation du système:: Installer le système d'exploitation complet. | ||
| 127 | * Gestion de paquets:: Installation des paquets, mises à jour, etc. | ||
| 128 | * Développement:: Développement logiciel simplifié par Guix. | ||
| 129 | * Interface de programmation:: Utiliser Guix en Scheme. | ||
| 130 | * Utilitaires:: Commandes de gestion de paquets. | ||
| 131 | * Configuration système:: Configurer le système d'exploitation. | ||
| 132 | * Documentation:: Visualiser les manuels d'utilisateur des | ||
| 133 | logiciels. | ||
| 134 | * Installer les fichiers de débogage:: Nourrir le débogueur. | ||
| 135 | * Mises à jour de sécurité:: Déployer des correctifs de sécurité | ||
| 136 | rapidement. | ||
| 137 | * Bootstrapping:: GNU/Linux depuis zéro. | ||
| 138 | * Porter:: Cibler une autre plateforme ou un autre noyau. | ||
| 139 | * Contribuer:: Nous avons besoin de votre aide ! | ||
| 140 | |||
| 141 | * Remerciements:: Merci ! | ||
| 142 | * La licence GNU Free Documentation:: La licence de ce manuel. | ||
| 143 | * Index des concepts:: Les concepts. | ||
| 144 | * Index de programmation:: Types de données, fonctions et variables. | ||
| 145 | |||
| 146 | @detailmenu | ||
| 147 | --- Liste détaillée des nœuds --- | ||
| 148 | |||
| 149 | |||
| 150 | |||
| 151 | Introduction | ||
| 152 | |||
| 153 | |||
| 154 | |||
| 155 | * Gérer ses logiciels avec Guix:: Ce qui est spécial. | ||
| 156 | * Distribution GNU:: Les paquets et les outils. | ||
| 157 | |||
| 158 | Installation | ||
| 159 | |||
| 160 | |||
| 161 | |||
| 162 | * Installation binaire:: Commencer à utiliser Guix en un rien de temps | ||
| 163 | ! | ||
| 164 | * Prérequis:: Logiciels requis pour construire et lancer | ||
| 165 | Guix. | ||
| 166 | * Lancer la suite de tests:: Tester Guix. | ||
| 167 | * Paramétrer le démon:: Préparer l'environnement du démon de | ||
| 168 | construction. | ||
| 169 | * Invoquer guix-daemon:: Lancer le démon de construction. | ||
| 170 | * Réglages applicatifs:: Réglages spécifiques pour les application. | ||
| 171 | |||
| 172 | Paramétrer le démon | ||
| 173 | |||
| 174 | |||
| 175 | |||
| 176 | * Réglages de l'environnement de construction:: Préparer l'environnement | ||
| 177 | de construction isolé. | ||
| 178 | * Réglages du délestage du démon:: Envoyer des constructions à des | ||
| 179 | machines distantes. | ||
| 180 | * Support de SELinux:: Utiliser une politique SELinux pour le démon. | ||
| 181 | |||
| 182 | Installation du système | ||
| 183 | |||
| 184 | |||
| 185 | |||
| 186 | * Limitations:: Ce à quoi vous attendre. | ||
| 187 | * Considérations matérielles:: Matériel supporté. | ||
| 188 | * Installation depuis une clef USB ou un DVD:: Préparer le média | ||
| 189 | d'installation. | ||
| 190 | * Préparer l'installation:: Réseau, partitionnement, etc. | ||
| 191 | * Installation graphique guidée:: Installation graphique facile. | ||
| 192 | * Installation manuelle:: Installation manuelle pour les sorciers. | ||
| 193 | * Après l'installation du système:: Une fois que l'installation a | ||
| 194 | réussi. | ||
| 195 | * Installer Guix dans une VM:: Jouer avec le système Guix. | ||
| 196 | * Construire l'image d'installation:: D'où vient tout cela. | ||
| 197 | |||
| 198 | Installation manuelle | ||
| 199 | |||
| 200 | |||
| 201 | |||
| 202 | * Disposition du clavier réseau et partitionnement:: Paramètres initiaux. | ||
| 203 | * Effectuer l'installation:: Installer. | ||
| 204 | |||
| 205 | Gestion de paquets | ||
| 206 | |||
| 207 | |||
| 208 | |||
| 209 | * Fonctionnalités:: Comment Guix va rendre votre vie plus heureuse. | ||
| 210 | * Invoquer guix package:: Installation, suppression, etc.@: de paquets. | ||
| 211 | * Substituts:: Télécharger des binaire déjà construits. | ||
| 212 | * Des paquets avec plusieurs résultats:: Un seul paquet source, plusieurs | ||
| 213 | résultats. | ||
| 214 | * Invoquer guix gc:: Lancer le ramasse-miettes. | ||
| 215 | * Invoquer guix pull:: Récupérer la dernière version de Guix et de | ||
| 216 | la distribution. | ||
| 217 | * Canaux:: Personnaliser la collection des paquets. | ||
| 218 | * Inférieurs:: Interagir avec une autre révision de Guix. | ||
| 219 | * Invoquer guix describe:: Affiche des informations sur la révision Guix | ||
| 220 | actuelle. | ||
| 221 | * Invoquer guix archive:: Exporter et importer des fichiers du dépôt. | ||
| 222 | |||
| 223 | Substituts | ||
| 224 | |||
| 225 | |||
| 226 | |||
| 227 | * Serveur de substituts officiel:: Une source particulière de substituts. | ||
| 228 | * Autoriser un serveur de substituts:: Comment activer ou désactiver les | ||
| 229 | substituts. | ||
| 230 | * Authentification des substituts:: Comment Guix vérifie les substituts. | ||
| 231 | * Paramètres de serveur mandataire:: Comment récupérer des substituts à | ||
| 232 | travers un serveur mandataire. | ||
| 233 | * Échec de substitution:: Qu'arrive-t-il quand la substitution échoue. | ||
| 234 | * De la confiance en des binaires:: Comment pouvez-vous avoir confiance en | ||
| 235 | un paquet binaire ? | ||
| 236 | |||
| 237 | Développement | ||
| 238 | |||
| 239 | |||
| 240 | |||
| 241 | * Invoquer guix environment:: Mettre en place des environnements de | ||
| 242 | développement. | ||
| 243 | * Invoquer guix pack:: Créer des lots de logiciels. | ||
| 244 | |||
| 245 | Interface de programmation | ||
| 246 | |||
| 247 | |||
| 248 | |||
| 249 | * Modules de paquets:: Les paquets du point de vu du programmeur. | ||
| 250 | * Définition des paquets:: Définir de nouveaux paquets. | ||
| 251 | * Systèmes de construction:: Spécifier comment construire les paquets. | ||
| 252 | * Le dépôt:: Manipuler le dépôt de paquets. | ||
| 253 | * Dérivations:: Interface de bas-niveau avec les dérivations | ||
| 254 | de paquets. | ||
| 255 | * La monade du dépôt:: Interface purement fonctionnelle avec le | ||
| 256 | dépôt. | ||
| 257 | * G-Expressions:: Manipuler les expressions de construction. | ||
| 258 | * Invoquer guix repl:: S'amuser avec Guix de manière interactive. | ||
| 259 | |||
| 260 | Définition des paquets | ||
| 261 | |||
| 262 | |||
| 263 | |||
| 264 | * Référence des paquets:: Le type de donnée des paquets. | ||
| 265 | * Référence des origines:: Le type de données d'origine. | ||
| 266 | |||
| 267 | Utilitaires | ||
| 268 | |||
| 269 | |||
| 270 | |||
| 271 | * Invoquer guix build:: Construire des paquets depuis la ligne de | ||
| 272 | commande. | ||
| 273 | * Invoquer guix edit:: Modifier les définitions de paquets. | ||
| 274 | * Invoquer guix download:: Télécharger un fichier et afficher son hash. | ||
| 275 | * Invoquer guix hash:: Calculer le hash cryptographique d'un fichier. | ||
| 276 | * Invoquer guix import:: Importer des définitions de paquets. | ||
| 277 | * Invoquer guix refresh:: Mettre à jour les définitions de paquets. | ||
| 278 | * Invoquer guix lint:: Trouver des erreurs dans les définitions de | ||
| 279 | paquets. | ||
| 280 | * Invoquer guix size:: Profiler l'utilisation du disque. | ||
| 281 | * Invoquer guix graph:: Visualiser le graphe des paquets. | ||
| 282 | * Invoquer guix publish:: Partager des substituts. | ||
| 283 | * Invoquer guix challenge:: Défier les serveurs de substituts. | ||
| 284 | * Invoquer guix copy:: Copier vers et depuis un dépôt distant. | ||
| 285 | * Invoquer guix container:: Isolation de processus. | ||
| 286 | * Invoquer guix weather:: Mesurer la disponibilité des substituts. | ||
| 287 | * Invoquer guix processes:: Lister les processus clients. | ||
| 288 | |||
| 289 | Invoquer @command{guix build} | ||
| 290 | |||
| 291 | |||
| 292 | |||
| 293 | * Options de construction communes:: Options de construction pour la | ||
| 294 | plupart des commandes. | ||
| 295 | * Options de transformation de paquets:: Créer des variantes de paquets. | ||
| 296 | * Options de construction supplémentaires:: Options spécifiques à « | ||
| 297 | guix build ». | ||
| 298 | * Débogage des échecs de construction:: La vie d'un empaqueteur. | ||
| 299 | |||
| 300 | Configuration système | ||
| 301 | |||
| 302 | |||
| 303 | |||
| 304 | * Utiliser le système de configuration:: Personnaliser votre système | ||
| 305 | GNU@. | ||
| 306 | * Référence de système d'exploitation:: Détail sur la déclaration de | ||
| 307 | système d'exploitation. | ||
| 308 | * Systèmes de fichiers:: Configurer les montages de systèmes de | ||
| 309 | fichiers. | ||
| 310 | * Périphériques mappés:: Gestion des périphériques de bloc. | ||
| 311 | * Comptes utilisateurs:: Spécifier des comptes utilisateurs. | ||
| 312 | * Disposition du clavier:: La manière dont le système interprète les | ||
| 313 | touches du clavier. | ||
| 314 | * Régionalisation:: Paramétrer la langue et les conventions | ||
| 315 | culturelles. | ||
| 316 | * Services:: Spécifier les services du système. | ||
| 317 | * Programmes setuid:: Programmes tournant avec les privilèges root. | ||
| 318 | * Certificats X.509:: Authentifier les serveurs HTTPS@. | ||
| 319 | * Name Service Switch:: Configurer le « name service switch » de la | ||
| 320 | libc. | ||
| 321 | * Disque de RAM initial:: Démarrage de Linux-Libre. | ||
| 322 | * Configuration du chargeur d'amorçage:: Configurer le chargeur | ||
| 323 | d'amorçage. | ||
| 324 | * Invoquer guix system:: Instantier une configuration du système. | ||
| 325 | * Lancer Guix dans une VM:: Comment lancer Guix dans une machine virtuelle. | ||
| 326 | * Définir des services:: Ajouter de nouvelles définitions de services. | ||
| 327 | |||
| 328 | Services | ||
| 329 | |||
| 330 | |||
| 331 | |||
| 332 | * Services de base:: Services systèmes essentiels. | ||
| 333 | * Exécution de tâches planifiées:: Le service mcron. | ||
| 334 | * Rotation des journaux:: Le service rottlog. | ||
| 335 | * Services réseau:: Paramètres réseau, démon SSH, etc. | ||
| 336 | * Système de fenêtrage X:: Affichage graphique. | ||
| 337 | * Services d'impression:: Support pour les imprimantes locales et | ||
| 338 | distantes. | ||
| 339 | * Services de bureaux:: D-Bus et les services de bureaux. | ||
| 340 | * Services de son:: Services ALSA et Pulseaudio. | ||
| 341 | * Services de bases de données:: Bases SQL, clefs-valeurs, etc. | ||
| 342 | * Services de courriels:: IMAP, POP3, SMTP, et tout ça. | ||
| 343 | * Services de messagerie:: Services de messagerie. | ||
| 344 | * Services de téléphonie:: Services de téléphonie. | ||
| 345 | * Services de surveillance:: Services de surveillance. | ||
| 346 | * Services Kerberos:: Services Kerberos. | ||
| 347 | * Services web:: Services web. | ||
| 348 | * Services de certificats:: Certificats TLS via Let's Encrypt. | ||
| 349 | * Services DNS:: Démons DNS@. | ||
| 350 | * Services VPN:: Démons VPN. | ||
| 351 | * Système de fichiers en réseau:: Services liés à NFS@. | ||
| 352 | * Intégration continue:: Le service Cuirass. | ||
| 353 | * Services de gestion de l'énergie:: Augmenter la durée de vie de la | ||
| 354 | batterie. | ||
| 355 | * Services audio:: MPD@. | ||
| 356 | * Services de virtualisation:: Services de virtualisation. | ||
| 357 | * Services de contrôle de version:: Fournit des accès distants à des | ||
| 358 | dépôts Git. | ||
| 359 | * Services de jeu:: Serveurs de jeu. | ||
| 360 | * Services divers:: D'autres services. | ||
| 361 | |||
| 362 | Définir des services | ||
| 363 | |||
| 364 | |||
| 365 | |||
| 366 | * Composition de services:: Le modèle de composition des services. | ||
| 367 | * Types service et services:: Types et services. | ||
| 368 | * Référence de service:: Référence de l'API@. | ||
| 369 | * Services Shepherd:: Un type de service particulier. | ||
| 370 | |||
| 371 | @end detailmenu | ||
| 372 | @end menu | ||
| 373 | |||
| 374 | @c ********************************************************************* | ||
| 375 | @node Introduction | ||
| 376 | @chapter Introduction | ||
| 377 | |||
| 378 | @cindex but | ||
| 379 | GNU Guix@footnote{« Guix » se prononce comme « geeks » (en prononçant le | ||
| 380 | « s »), ou « ɡiːks » dans l'alphabet phonétique international (API).} est un | ||
| 381 | outil de gestion de paquets et une distribution pour le système GNU@. Guix | ||
| 382 | facilite pour les utilisateurs non privilégiés l'installation, la mise à | ||
| 383 | jour et la suppression de paquets, la restauration à un ensemble de paquets | ||
| 384 | précédent, la construction de paquets depuis les sources et plus | ||
| 385 | généralement aide à la création et à la maintenance d'environnements | ||
| 386 | logiciels. | ||
| 387 | |||
| 388 | @cindex Système Guix | ||
| 389 | @cindex GuixSD, maintenant le système Guix | ||
| 390 | @cindex Distribution Système Guix, maintenant le système Guix | ||
| 391 | Vous pouvez installer GNU@tie{}Guix sur un système GNU/Linux existant pour | ||
| 392 | compléter les outils disponibles sans interférence (@pxref{Installation}) ou | ||
| 393 | vous pouvez l'utiliser comme distribution système indépendante, @dfn{Guix | ||
| 394 | System}@footnote{Nous appelions le système Guix « la distribution système | ||
| 395 | Guix » ou « GuixSD ». nous considérons maintenant qu'il est plus pertinent | ||
| 396 | de regrouper tout sous la bannière de « Guix » comme, après tout, Guix | ||
| 397 | System est directement disponible sous la commande @command{guix system}, | ||
| 398 | meme si vous utilisez une autre distro en dessous !}. @xref{Distribution GNU}. | ||
| 399 | |||
| 400 | @menu | ||
| 401 | * Gérer ses logiciels avec Guix:: Ce qui est spécial. | ||
| 402 | * Distribution GNU:: Les paquets et les outils. | ||
| 403 | @end menu | ||
| 404 | |||
| 405 | @node Gérer ses logiciels avec Guix | ||
| 406 | @section Gérer ses logiciels avec Guix | ||
| 407 | |||
| 408 | @cindex interfaces utilisateurs | ||
| 409 | Guix fournit une interface de gestion des paquets par la ligne de commande | ||
| 410 | (@pxref{Gestion de paquets}), des outils pour aider au développement | ||
| 411 | logiciel (@pxref{Développement}), des utilitaires en ligne de commande pour | ||
| 412 | des utilisations plus avancées (@pxref{Utilitaires}) ainsi que des interfaces | ||
| 413 | de programmation Scheme (@pxref{Interface de programmation}). | ||
| 414 | @cindex démon de construction | ||
| 415 | Son @dfn{démon de construction} est responsable de la construction des | ||
| 416 | paquets pour les utilisateurs (@pxref{Paramétrer le démon}) et du | ||
| 417 | téléchargement des binaires pré-construits depuis les sources autorisées | ||
| 418 | (@pxref{Substituts}). | ||
| 419 | |||
| 420 | @cindex extensibilité de la distribution | ||
| 421 | @cindex personnalisation, des paquets | ||
| 422 | Guix contient de nombreuses définitions de paquet GNU et non-GNU qui | ||
| 423 | respectent tous les @uref{https://www.gnu.org/philosophy/free-sw.fr.html, | ||
| 424 | libertés de l'utilisateur}. Il est @emph{extensible} : les utilisateurs | ||
| 425 | peuvent écrire leurs propres définitions de paquets (@pxref{Définition des paquets}) et les rendre disponibles dans des modules de paquets | ||
| 426 | indépendants (@pxref{Modules de paquets}). Il est aussi | ||
| 427 | @emph{personnalisable} : les utilisateurs peuvent @emph{dériver} des | ||
| 428 | définitions de paquets spécialisées à partir de définitions existantes, même | ||
| 429 | depuis la ligne de commande (@pxref{Options de transformation de paquets}). | ||
| 430 | |||
| 431 | @cindex gestion de paquet fonctionnelle | ||
| 432 | @cindex isolation | ||
| 433 | Sous le capot, Guix implémente la discipline de @dfn{gestion de paquet | ||
| 434 | fonctionnel} inventé par Nix (@pxref{Remerciements}). Dans Guix le | ||
| 435 | processus de construction et d'installation des paquets est vu comme une | ||
| 436 | @emph{fonction} dans le sens mathématique du terme. Cette fonction a des | ||
| 437 | entrées (comme des scripts de construction, un compilateur et des | ||
| 438 | bibliothèques) et renvoie un paquet installé. En tant que fonction pure, | ||
| 439 | son résultat ne dépend que de ses entrées. Par exemple, il ne peut pas | ||
| 440 | faire référence à des logiciels ou des scripts qui n'ont pas été | ||
| 441 | explicitement passés en entrée. Une fonction de construction produit | ||
| 442 | toujours le même résultat quand on lui donne le même ensemble d'entrée. | ||
| 443 | Elle ne peut pas modifier l'environnement du système en cours d'exécution | ||
| 444 | d'aucune manière ; par exemple elle ne peut pas créer, modifier ou supprimer | ||
| 445 | des fichiers en dehors de ses répertoires de construction et | ||
| 446 | d'installation. Ce résultat s'obtient en lançant les processus de | ||
| 447 | construction dans des environnements isolés (ou des @dfn{conteneurs}) où | ||
| 448 | seules les entrées explicites sont visibles. | ||
| 449 | |||
| 450 | @cindex dépôt | ||
| 451 | Le résultat des fonctions de construction de paquets est mis en @dfn{cache} | ||
| 452 | dans le système de fichier, dans répertoire spécial appelé le @dfn{dépôt} | ||
| 453 | (@pxref{Le dépôt}). Chaque paquet est installé dans son répertoire propre | ||
| 454 | dans le dépôt — par défaut dans @file{/gnu/store}. Le nom du répertoire | ||
| 455 | contient un hash de toutes les entrées utilisées pour construire le paquet ; | ||
| 456 | ainsi, changer une entrée donnera un nom de répertoire différent. | ||
| 457 | |||
| 458 | Cette approche est le fondement des fonctionnalités les plus importante de | ||
| 459 | Guix : le support des mises à jour des paquets et des retours en arrière | ||
| 460 | transactionnels, l'installation différenciée par utilisateur et le ramassage | ||
| 461 | de miettes pour les paquets (@pxref{Fonctionnalités}). | ||
| 462 | |||
| 463 | |||
| 464 | @node Distribution GNU | ||
| 465 | @section Distribution GNU | ||
| 466 | |||
| 467 | @cindex Système Guix | ||
| 468 | Guix fournit aussi une distribution du système GNU contenant uniquement des | ||
| 469 | logiciels libres@footnote{Le terme « libre » se réfère ici bien sûr à | ||
| 470 | @url{http://www.gnu.org/philosophy/free-sw.fr.html,la liberté offerte à | ||
| 471 | l'utilisateur de ces logiciels}.}. On peut installer la distribution | ||
| 472 | elle-même (@pxref{Installation du système}), mais on peut aussi installer Guix | ||
| 473 | comme gestionnaire de paquets par dessus un système GNU/Linux déjà installé | ||
| 474 | (@pxref{Installation}). Pour distinguer ces deux cas, on appelle la | ||
| 475 | distribution autonome le « système Guix » ou Guix@tie{}System. | ||
| 476 | |||
| 477 | La distribution fournit les paquets cœur de GNU comme la GNU libc, GCC et | ||
| 478 | Binutils, ainsi que de nombreuses applications GNU et non-GNU. La liste | ||
| 479 | complète des paquets disponibles se trouve | ||
| 480 | @url{http://www.gnu.org/software/guix/packages,en ligne} ou en lançant | ||
| 481 | @command{guix package} (@pxref{Invoquer guix package}) : | ||
| 482 | |||
| 483 | @example | ||
| 484 | guix package --list-available | ||
| 485 | @end example | ||
| 486 | |||
| 487 | Notre but est de fournir une distribution logicielle entièrement libre de | ||
| 488 | GNU/Linux et d'autres variantes de GNU, en se concentrant sur la promotion | ||
| 489 | et l'intégration étroite des composants GNU en insistant sur les programmes | ||
| 490 | et les outils qui aident l'utilisateur à exercer ses libertés. | ||
| 491 | |||
| 492 | Les paquets sont actuellement disponibles pour les plateformes suivantes : | ||
| 493 | |||
| 494 | @table @code | ||
| 495 | |||
| 496 | @item x86_64-linux | ||
| 497 | l'architecture Intel et AMD @code{x86_64} avec le noyau Linux-libre ; | ||
| 498 | |||
| 499 | @item i686-linux | ||
| 500 | l'architecture Intel 32-bits (IA32) avec le noyau Linux-libre ; | ||
| 501 | |||
| 502 | @item armhf-linux | ||
| 503 | l'architecture ARMv7-A avec gestion des flottants matérielle, Thumb-2 et | ||
| 504 | NEON, avec l'interface binaire applicative (ABI) EABI hard-float et le noyau | ||
| 505 | Linux-libre ; | ||
| 506 | |||
| 507 | @item aarch64-linux | ||
| 508 | les processeurs ARMv8-A 64-bits en little-endian avec le noyau Linux-libre. | ||
| 509 | Le support est actuellement expérimental et limité. @xref{Contribuer}, | ||
| 510 | pour savoir comment aider ! | ||
| 511 | |||
| 512 | @item mips64el-linux | ||
| 513 | les processeurs MIPS 64-bits little-endian, spécifiquement la série | ||
| 514 | Loongson, ABI n32, avec le noyau Linux-libre. | ||
| 515 | |||
| 516 | @end table | ||
| 517 | |||
| 518 | Avec Guix@tie{}System, vous @emph{déclarez} tous les aspects de la | ||
| 519 | configuration du système d'exploitation et guix s'occupe d'instancier la | ||
| 520 | configuration de manière transactionnelle, reproductible et sans état | ||
| 521 | (@pxref{Configuration système}). Guix System utilise le noyau Linux-libre, | ||
| 522 | le système d'initialisation Shepherd (@pxref{Introduction,,, shepherd, The | ||
| 523 | GNU Shepherd Manual}), les outils GNU et la chaîne d'outils familière ainsi | ||
| 524 | que l'environnement graphique et les services systèmes de votre choix. | ||
| 525 | |||
| 526 | Guix System est disponible sur toutes les plateformes ci-dessus à part | ||
| 527 | @code{mips64el-linux}. | ||
| 528 | |||
| 529 | @noindent | ||
| 530 | Pour des informations sur comment porter vers d'autres architectures et | ||
| 531 | d'autres noyau, @pxref{Porter}. | ||
| 532 | |||
| 533 | La construction de cette distribution est un effort collaboratif et nous | ||
| 534 | vous invitons à nous rejoindre ! @xref{Contribuer}, pour des informations | ||
| 535 | sur la manière de nous aider. | ||
| 536 | |||
| 537 | |||
| 538 | @c ********************************************************************* | ||
| 539 | @node Installation | ||
| 540 | @chapter Installation | ||
| 541 | |||
| 542 | @cindex installer Guix | ||
| 543 | |||
| 544 | @quotation Remarque | ||
| 545 | Nous vous recommandons d'utiliser ce | ||
| 546 | @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, | ||
| 547 | script shell d'installation} pour installer Guix sur un système GNU/Linux | ||
| 548 | fonctionnel, que nous appelons une @dfn{distro externe}@footnote{Cette | ||
| 549 | section s'occupe de l'installation du gestionnaire de paquet, ce qui peut se | ||
| 550 | faire sur un système GNU/Linux existant. Si vous voulez plutôt installer le | ||
| 551 | système d'exploitation GNU complet, @pxref{Installation du système}.}. Le | ||
| 552 | script automatise le téléchargement, l'installation et la configuration | ||
| 553 | initiale de Guix. Vous devez l'exécuter en tant qu'utilisateur root. | ||
| 554 | @end quotation | ||
| 555 | |||
| 556 | @cindex distro externe | ||
| 557 | @cindex répertoires liés aux distro externes | ||
| 558 | Lorsqu'il est installé sur une distro externe, GNU@tie{}Guix complète les | ||
| 559 | outils disponibles sans interférence. Ses données se trouvent exclusivement | ||
| 560 | dans deux répertoires, typiquement @file{/gnu/store} et @file{/var/guix} ; | ||
| 561 | les autres fichiers de votre système comme @file{/etc} sont laissés intacts. | ||
| 562 | |||
| 563 | Une fois installé, Guix peut être mis à jour en lançant @command{guix pull} | ||
| 564 | (@pxref{Invoquer guix pull}). | ||
| 565 | |||
| 566 | Si vous préférez effectuer les étapes d'installation manuellement ou si vous | ||
| 567 | voulez les personnaliser, vous trouverez les sections suivantes utile. | ||
| 568 | Elles décrivent les prérequis logiciels pour Guix, ainsi que la manière de | ||
| 569 | l'installer manuellement et de se préparer à l'utiliser. | ||
| 570 | |||
| 571 | @menu | ||
| 572 | * Installation binaire:: Commencer à utiliser Guix en un rien de temps | ||
| 573 | ! | ||
| 574 | * Prérequis:: Logiciels requis pour construire et lancer | ||
| 575 | Guix. | ||
| 576 | * Lancer la suite de tests:: Tester Guix. | ||
| 577 | * Paramétrer le démon:: Préparer l'environnement du démon de | ||
| 578 | construction. | ||
| 579 | * Invoquer guix-daemon:: Lancer le démon de construction. | ||
| 580 | * Réglages applicatifs:: Réglages spécifiques pour les application. | ||
| 581 | @end menu | ||
| 582 | |||
| 583 | @node Installation binaire | ||
| 584 | @section Installation binaire | ||
| 585 | |||
| 586 | @cindex installer Guix depuis les binaires | ||
| 587 | @cindex script d'installation | ||
| 588 | Cette section décrit comment installer Guix sur un système quelconque depuis | ||
| 589 | un archive autonome qui fournit les binaires pour Guix et toutes ses | ||
| 590 | dépendances. C'est souvent plus rapide que d'installer depuis les sources, | ||
| 591 | ce qui est décrit dans les sections suivantes. Le seul prérequis est | ||
| 592 | d'avoir GNU@tie{}tar et Xz. | ||
| 593 | |||
| 594 | L'installation se comme ceci : | ||
| 595 | |||
| 596 | @enumerate | ||
| 597 | @item | ||
| 598 | @cindex téléchargement du Guix binaire | ||
| 599 | Téléchargez l'archive binaire depuis | ||
| 600 | @indicateurl{https://alpha.gnu.org/gnu/guix/guix-binary-@value{VERSION}.@var{système}.tar.xz}, | ||
| 601 | où @var{système} est @code{x86_64-linux} pour une machine @code{x86_64} sur | ||
| 602 | laquelle tourne déjà le noyau Linux, etc. | ||
| 603 | |||
| 604 | @c The following is somewhat duplicated in ``System Installation''. | ||
| 605 | Assurez-vous de télécharger le fichier @file{.sig} associé et de vérifier | ||
| 606 | l'authenticité de l'archive avec, comme ceci : | ||
| 607 | |||
| 608 | @example | ||
| 609 | $ wget https://alpha.gnu.org/gnu/guix/guix-binary-@value{VERSION}.@var{système}.tar.xz.sig | ||
| 610 | $ gpg --verify guix-binary-@value{VERSION}.@var{système}.tar.xz.sig | ||
| 611 | @end example | ||
| 612 | |||
| 613 | Si cette commande échoue parce que vous n'avez pas la clef publique requise, | ||
| 614 | lancez cette commande pour l'importer : | ||
| 615 | |||
| 616 | @example | ||
| 617 | $ gpg --keyserver @value{KEY-SERVER} \ | ||
| 618 | --recv-keys @value{OPENPGP-SIGNING-KEY-ID} | ||
| 619 | @end example | ||
| 620 | |||
| 621 | @noindent | ||
| 622 | @c end authentication part | ||
| 623 | et relancez la commande @code{gpg --verify}. | ||
| 624 | |||
| 625 | @item | ||
| 626 | Maintenant, vous devez devenir l'utilisateur @code{root}. En fonction de | ||
| 627 | votre distribution, vous devrez lancer @code{su -} ou @code{sudo -i}. En | ||
| 628 | tant que @code{root}, lancez : | ||
| 629 | |||
| 630 | @example | ||
| 631 | # cd /tmp | ||
| 632 | # tar --warning=no-timestamp -xf \ | ||
| 633 | guix-binary-@value{VERSION}.@var{système}.tar.xz | ||
| 634 | # mv var/guix /var/ && mv gnu / | ||
| 635 | @end example | ||
| 636 | |||
| 637 | Cela crée @file{/gnu/store} (@pxref{Le dépôt}) and @file{/var/guix}. Ce | ||
| 638 | deuxième dossier contient un profil prêt à être utilisé pour @code{root} | ||
| 639 | (voir les étapes suivantes). | ||
| 640 | |||
| 641 | Ne décompressez @emph{pas} l'archive sur un système Guix lancé car cela | ||
| 642 | écraserait ses propres fichiers essentiels. | ||
| 643 | |||
| 644 | L'option @code{--warning=no-timestamp} s'assure que GNU@tie{}tar ne produise | ||
| 645 | pas d'avertissement disant que « l'horodatage est trop vieux pour être | ||
| 646 | plausible » (ces avertissements étaient produits par GNU@tie{}tar 1.26 et | ||
| 647 | précédents ; les versions récentes n'ont pas ce problème). Cela vient du | ||
| 648 | fait que les fichiers de l'archive ont pour date de modification zéro (ce | ||
| 649 | qui signifie le 1er janvier 1970). C'est fait exprès pour s'assurer que le | ||
| 650 | contenu de l'archive ne dépende pas de la date de création, ce qui la rend | ||
| 651 | reproductible. | ||
| 652 | |||
| 653 | @item | ||
| 654 | Rendez le profil disponible sous @file{~root/.config/guix/current}, qui est | ||
| 655 | l'emplacement où @command{guix pull} installera les mises à jour | ||
| 656 | (@pxref{Invoquer guix pull}) : | ||
| 657 | |||
| 658 | @example | ||
| 659 | # mkdir -p ~root/.config/guix | ||
| 660 | # ln -sf /var/guix/profiles/per-user/root/current-guix \ | ||
| 661 | ~root/.config/guix/current | ||
| 662 | @end example | ||
| 663 | |||
| 664 | Sourcez @file{etc/profile} pour augmenter @code{PATH} et les autres | ||
| 665 | variables d'environnement nécessaires : | ||
| 666 | |||
| 667 | @example | ||
| 668 | # GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \ | ||
| 669 | source $GUIX_PROFILE/etc/profile | ||
| 670 | @end example | ||
| 671 | |||
| 672 | @item | ||
| 673 | Créez le groupe et les comptes utilisateurs pour les utilisateurs de | ||
| 674 | construction comme expliqué plus loin (@pxref{Réglages de l'environnement de construction}). | ||
| 675 | |||
| 676 | @item | ||
| 677 | Lancez le démon et paramétrez-le pour démarrer automatiquement au démarrage. | ||
| 678 | |||
| 679 | Si votre distribution hôte utilise le système d'initialisation systemd, cela | ||
| 680 | peut se faire avec ces commandes : | ||
| 681 | |||
| 682 | @c Versions of systemd that supported symlinked service files are not | ||
| 683 | @c yet widely deployed, so we should suggest that users copy the service | ||
| 684 | @c files into place. | ||
| 685 | @c | ||
| 686 | @c See this thread for more information: | ||
| 687 | @c http://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html | ||
| 688 | |||
| 689 | @example | ||
| 690 | # cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \ | ||
| 691 | /etc/systemd/system/ | ||
| 692 | # systemctl start guix-daemon && systemctl enable guix-daemon | ||
| 693 | @end example | ||
| 694 | |||
| 695 | Si votre distribution hôte utilise le système d'initialisation Upstart : | ||
| 696 | |||
| 697 | @example | ||
| 698 | # initctl reload-configuration | ||
| 699 | # cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \ | ||
| 700 | /etc/init/ | ||
| 701 | # start guix-daemon | ||
| 702 | @end example | ||
| 703 | |||
| 704 | Sinon, vous pouvez toujours démarrer le démon manuellement avec : | ||
| 705 | |||
| 706 | @example | ||
| 707 | # ~root/.config/guix/current/bin/guix-daemon \ | ||
| 708 | --build-users-group=guixbuild | ||
| 709 | @end example | ||
| 710 | |||
| 711 | @item | ||
| 712 | Rendez la commande @command{guix} disponible pour les autres utilisateurs | ||
| 713 | sur la machine, par exemple avec : | ||
| 714 | |||
| 715 | @example | ||
| 716 | # mkdir -p /usr/local/bin | ||
| 717 | # cd /usr/local/bin | ||
| 718 | # ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix | ||
| 719 | @end example | ||
| 720 | |||
| 721 | C'est aussi une bonne idée de rendre la version Info de ce manuel disponible | ||
| 722 | ici : | ||
| 723 | |||
| 724 | @example | ||
| 725 | # mkdir -p /usr/local/share/info | ||
| 726 | # cd /usr/local/share/info | ||
| 727 | # for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ; | ||
| 728 | do ln -s $i ; done | ||
| 729 | @end example | ||
| 730 | |||
| 731 | Comme cela, en supposant que @file{/usr/local/share/info} est dans le chemin | ||
| 732 | de recherche, lancer @command{info guix} ouvrira ce manuel (@pxref{Other | ||
| 733 | Info Directories,,, texinfo, GNU Texinfo}, pour plus de détails sur comment | ||
| 734 | changer le chemin de recherche de Info). | ||
| 735 | |||
| 736 | @item | ||
| 737 | @cindex substituts, autorisations | ||
| 738 | Pour utiliser les substituts de @code{@value{SUBSTITUTE-SERVER}} ou l'un de | ||
| 739 | ses miroirs (@pxref{Substituts}), autorisez-les : | ||
| 740 | |||
| 741 | @example | ||
| 742 | # guix archive --authorize < \ | ||
| 743 | ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER}.pub | ||
| 744 | @end example | ||
| 745 | |||
| 746 | @item | ||
| 747 | Chaque utilisateur peut avoir besoin d'effectuer des étapes supplémentaires | ||
| 748 | pour que leur environnement Guix soit prêt à être utilisé, | ||
| 749 | @pxref{Réglages applicatifs}. | ||
| 750 | @end enumerate | ||
| 751 | |||
| 752 | Voilà, l'installation est terminée ! | ||
| 753 | |||
| 754 | Vous pouvez confirmer que Guix fonctionne en installant un paquet d'exemple | ||
| 755 | dans le profil de root : | ||
| 756 | |||
| 757 | @example | ||
| 758 | # guix package -i hello | ||
| 759 | @end example | ||
| 760 | |||
| 761 | Le paquet @code{guix} doit rester disponible dans le profil de @code{root} | ||
| 762 | ou il pourrait être sujet au ramassage de miettes — dans ce cas vous vous | ||
| 763 | retrouveriez gravement handicapé par l'absence de la commande | ||
| 764 | @command{guix}. En d'autres termes, ne supprimez pas @code{guix} en lançant | ||
| 765 | @code{guix package -r guix}. | ||
| 766 | |||
| 767 | L'archive d'installation binaire peut être (re)produite et vérifiée | ||
| 768 | simplement en lançant la commande suivante dans l'arborescence des sources | ||
| 769 | de Guix : | ||
| 770 | |||
| 771 | @example | ||
| 772 | make guix-binary.@var{system}.tar.xz | ||
| 773 | @end example | ||
| 774 | |||
| 775 | @noindent | ||
| 776 | …@: ce qui à son tour lance : | ||
| 777 | |||
| 778 | @example | ||
| 779 | guix pack -s @var{system} --localstatedir \ | ||
| 780 | --profile-name=current-guix guix | ||
| 781 | @end example | ||
| 782 | |||
| 783 | @xref{Invoquer guix pack}, pour plus d'info sur cet outil pratique. | ||
| 784 | |||
| 785 | @node Prérequis | ||
| 786 | @section Prérequis | ||
| 787 | |||
| 788 | Cette section dresse la liste des prérequis pour la construction de Guix | ||
| 789 | depuis les sources. La procédure de construction pour Guix est la même que | ||
| 790 | pour les autres logiciels GNU, et n'est pas expliquée ici. Regardez les | ||
| 791 | fichiers @file{README} et @file{INSTALL} dans l'arborescence des sources de | ||
| 792 | Guix pour plus de détails. | ||
| 793 | |||
| 794 | @cindex site officiel | ||
| 795 | GNU Guix est disponible au téléchargement depuis son site web sur | ||
| 796 | @url{http://www.gnu.org/software/guix/}. | ||
| 797 | |||
| 798 | GNU Guix dépend des paquets suivants : | ||
| 799 | |||
| 800 | @itemize | ||
| 801 | @item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.2.x, | ||
| 802 | @item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version | ||
| 803 | 0.1.0 ou supérieure, | ||
| 804 | @item | ||
| 805 | @uref{http://gnutls.org/, GnuTLS}, en particulier ses liaisons Guile | ||
| 806 | (@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,, | ||
| 807 | gnutls-guile, GnuTLS-Guile}), | ||
| 808 | @item | ||
| 809 | @uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, | ||
| 810 | version 0.1.0 ou supérieure, | ||
| 811 | @item | ||
| 812 | @c FIXME: Specify a version number once a release has been made. | ||
| 813 | @uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, d'août 2017 ou | ||
| 814 | ultérieur, | ||
| 815 | @item @uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON}, | ||
| 816 | @item @url{http://zlib.net, zlib}, | ||
| 817 | @item @url{http://www.gnu.org/software/make/, GNU Make}. | ||
| 818 | @end itemize | ||
| 819 | |||
| 820 | Les dépendances suivantes sont facultatives : | ||
| 821 | |||
| 822 | @itemize | ||
| 823 | @item | ||
| 824 | @c Note: We need at least 0.10.2 for 'channel-send-eof'. | ||
| 825 | Le support pour la décharge de construction (@pxref{Réglages du délestage du démon}) | ||
| 826 | et @command{guix copy} (@pxref{Invoquer guix copy}) dépend de | ||
| 827 | @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, version | ||
| 828 | 0.10.2 ou ultérieure. | ||
| 829 | |||
| 830 | @item | ||
| 831 | Lorsque @url{http://www.bzip.org, libbz2} est disponible, | ||
| 832 | @command{guix-daemon} peut l'utiliser pour compresser les journaux de | ||
| 833 | construction. | ||
| 834 | @end itemize | ||
| 835 | |||
| 836 | À moins que @code{--disable-daemon} ne soit passé à @command{configure}, les | ||
| 837 | paquets suivants sont aussi requis : | ||
| 838 | |||
| 839 | @itemize | ||
| 840 | @item @url{http://gnupg.org/, GNU libgcrypt}, | ||
| 841 | @item @url{http://sqlite.org, SQLite 3}, | ||
| 842 | @item @url{http://gcc.gnu.org, GCC's g++}, avec le support pour le | ||
| 843 | standard C++11. | ||
| 844 | @end itemize | ||
| 845 | |||
| 846 | @cindex répertoire d'état | ||
| 847 | Lorsque vous configurez Guix sur un système qui a déjà une installation de | ||
| 848 | Guix, assurez-vous de spécifier le même répertoire d'état que l'installation | ||
| 849 | existante avec l'option @code{--localstatedir} du script @command{configure} | ||
| 850 | (@pxref{Directory Variables, @code{localstatedir},, standards, GNU Coding | ||
| 851 | Standards}). Le script @command{configure} vous protège des mauvaises | ||
| 852 | configurations involontaires de @var{localstatedir} pour éviter que vous ne | ||
| 853 | corrompiez votre dépôt (@pxref{Le dépôt}). | ||
| 854 | |||
| 855 | @cindex Nix, compatibilité | ||
| 856 | Lorsque vous avez une installation fonctionnelle du | ||
| 857 | @url{http://nixos.org/nix/, gestionnaire de paquets Nix}, vous pouvez | ||
| 858 | configurer Guix avec @code{--disable-daemon}. Dan ce cas, Nix remplace les | ||
| 859 | trois dépendances au dessus. | ||
| 860 | |||
| 861 | Guix est compatible avec Nix, donc il est possible de partager le même dépôt | ||
| 862 | entre les deux. Pour cela, vous devez passer à @command{configure} non | ||
| 863 | seulement la même valeur de @code{--with-store-dir} mais aussi la même | ||
| 864 | valeur de @code{--localstatedir}. Cette dernière est nécessaires car elle | ||
| 865 | spécifie l'emplacement de la base de données qui stocke les métadonnées sur | ||
| 866 | le dépôt, entre autres choses. Les valeurs par défaut pour Nix sont | ||
| 867 | @code{--with-store-dir=/nix/store} et @code{--localstatedir=/nix/var}. | ||
| 868 | Remarquez que @code{--disable-daemon} n'est pas requis si votre but est de | ||
| 869 | partager le dépôt avec Nix. | ||
| 870 | |||
| 871 | @node Lancer la suite de tests | ||
| 872 | @section Lancer la suite de tests | ||
| 873 | |||
| 874 | @cindex suite de tests | ||
| 875 | Après avoir lancé @command{configure} et @code{make} correctement, c'est une | ||
| 876 | bonne idée de lancer la suite de tests. Elle peut aider à trouver des | ||
| 877 | erreurs avec la configuration ou l'environnement, ou des bogues dans Guix | ||
| 878 | lui-même — et vraiment, rapporter des échecs de tests est une bonne manière | ||
| 879 | d'aider à améliorer le logiciel. Pour lancer la suite de tests, tapez : | ||
| 880 | |||
| 881 | @example | ||
| 882 | make check | ||
| 883 | @end example | ||
| 884 | |||
| 885 | Les cas de tests peuvent être lancés en parallèle : vous pouvez utiliser | ||
| 886 | l'option @code{-j} de GNU@tie{}make pour accélérer les choses. Le premier | ||
| 887 | lancement peut prendre plusieurs minutes sur une machine récente ; les | ||
| 888 | lancements suivants seront plus rapides car le dépôt créé pour les tests | ||
| 889 | aura déjà plusieurs choses en cache. | ||
| 890 | |||
| 891 | Il est aussi possible de lancer un sous-ensemble des tests en définissant la | ||
| 892 | variable makefile @code{TESTS} comme dans cet exemple : | ||
| 893 | |||
| 894 | @example | ||
| 895 | make check TESTS="tests/store.scm tests/cpio.scm" | ||
| 896 | @end example | ||
| 897 | |||
| 898 | Par défaut, les résultats des tests sont affichés au niveau du fichier. | ||
| 899 | Pour voir les détails de chaque cas de test individuel, il est possible de | ||
| 900 | définir la variable makefile @code{SCM_LOG_DRIVER_FLAGS} comme dans cet | ||
| 901 | exemple : | ||
| 902 | |||
| 903 | @example | ||
| 904 | make check TESTS="tests/base64.scm" SCM_LOG_DRIVER_FLAGS="--brief=no" | ||
| 905 | @end example | ||
| 906 | |||
| 907 | Après un échec, envoyez un courriel à @email{bug-guix@@gnu.org} et attachez | ||
| 908 | le fichier @file{test-suite.log}. Précisez la version de Guix utilisée | ||
| 909 | ainsi que les numéros de version de ses dépendances (@pxref{Prérequis}) | ||
| 910 | dans votre message. | ||
| 911 | |||
| 912 | Guix possède aussi une suite de tests de systèmes complets qui test des | ||
| 913 | instances complètes du système Guix. Elle ne peut être lancée qui sur un | ||
| 914 | système où Guix est déjà installé, avec : | ||
| 915 | |||
| 916 | @example | ||
| 917 | make check-system | ||
| 918 | @end example | ||
| 919 | |||
| 920 | @noindent | ||
| 921 | ou, de nouveau, en définissant @code{TESTS} pour choisir un sous-ensemble | ||
| 922 | des tests à lancer : | ||
| 923 | |||
| 924 | @example | ||
| 925 | make check-system TESTS="basic mcron" | ||
| 926 | @end example | ||
| 927 | |||
| 928 | Ces tests systèmes sont définis dans les modules @code{(gnu tests | ||
| 929 | @dots{})}. Ils fonctionnent en lançant les systèmes d'exploitation sous test | ||
| 930 | avec une instrumentation légère dans une machine virtuelle (VM). Ils | ||
| 931 | peuvent être intenses en terme de calculs ou plutôt rapides en fonction de | ||
| 932 | la disponibilité des substituts de leurs dépendances (@pxref{Substituts}). | ||
| 933 | Certains requièrent beaucoup d'espace disque pour contenir les images des | ||
| 934 | VM@. | ||
| 935 | |||
| 936 | De nouveau, en cas d'échec, envoyez tous les détails à | ||
| 937 | @email{bug-guix@@gnu.org}. | ||
| 938 | |||
| 939 | @node Paramétrer le démon | ||
| 940 | @section Paramétrer le démon | ||
| 941 | |||
| 942 | @cindex démon | ||
| 943 | Les opérations comme la construction d'un paquet ou le lancement du | ||
| 944 | ramasse-miettes sont toutes effectuées par un processus spécialisé, le | ||
| 945 | @dfn{démon de construction}, pour le compte des clients. Seul le démon peut | ||
| 946 | accéder au dépôt et à sa base de données associée. Ainsi, toute opération | ||
| 947 | manipulant le dépôt passe par le démon. Par exemple, les outils en ligne de | ||
| 948 | commande comme @command{guix package} et @command{guix build} communiquent | ||
| 949 | avec le démon (@i{via} des appels de procédures distantes) pour lui dire | ||
| 950 | quoi faire. | ||
| 951 | |||
| 952 | Les sections suivantes expliquent comment préparer l'environnement du démon | ||
| 953 | de construction. Voir aussi @ref{Substituts} pour apprendre comment | ||
| 954 | permettre le téléchargement de binaires pré-construits. | ||
| 955 | |||
| 956 | @menu | ||
| 957 | * Réglages de l'environnement de construction:: Préparer l'environnement | ||
| 958 | de construction isolé. | ||
| 959 | * Réglages du délestage du démon:: Envoyer des constructions à des | ||
| 960 | machines distantes. | ||
| 961 | * Support de SELinux:: Utiliser une politique SELinux pour le démon. | ||
| 962 | @end menu | ||
| 963 | |||
| 964 | @node Réglages de l'environnement de construction | ||
| 965 | @subsection Réglages de l'environnement de construction | ||
| 966 | |||
| 967 | @cindex environnement de construction | ||
| 968 | Dans une installation standard multi-utilisateurs, Guix et son démon — le | ||
| 969 | programme @command{guix-daemon} — sont installé par l'administrateur système | ||
| 970 | ; @file{/gnu/store} appartient à @code{root} et @command{guix-daemon} est | ||
| 971 | lancé en @code{root}. Les utilisateurs non-privilégiés peuvent utiliser les | ||
| 972 | outils Guix pour construire des paquets ou accéder au dépôt et le démon le | ||
| 973 | fera pour leur compte en s'assurant que le dépôt garde un état cohérent et | ||
| 974 | permet le partage des paquets déjà construits entre les utilisateurs. | ||
| 975 | |||
| 976 | @cindex utilisateurs de construction | ||
| 977 | Alors que @command{guix-daemon} tourne en @code{root}, vous n'avez pas | ||
| 978 | forcément envie que les processus de construction de paquets tournent aussi | ||
| 979 | en @code{root}, pour des raisons de sécurité évidentes. Pour éviter cela, | ||
| 980 | vous devriez créer une réserve spéciale d'@dfn{utilisateurs de construction} | ||
| 981 | que les processus de construction démarrés par le démon utiliseront. Ces | ||
| 982 | utilisateurs de construction n'ont pas besoin d'un shell ou d'un répertoire | ||
| 983 | personnel ; ils seront seulement utilisés quand le démon délaissera ses | ||
| 984 | privilèges @code{root} dans les processus de construction. En ayant | ||
| 985 | plusieurs de ces utilisateurs, vous permettez au démon de lancer des | ||
| 986 | processus de construction distincts sous des UID différent, ce qui garanti | ||
| 987 | qu'aucune interférence n'ait lieu entre les uns et les autres — une | ||
| 988 | fonctionnalité essentielle puisque les constructions sont supposées être des | ||
| 989 | fonctions pures (@pxref{Introduction}). | ||
| 990 | |||
| 991 | Sur un système GNU/Linux, on peut créer une réserve d'utilisateurs de | ||
| 992 | construction comme ceci (avec la syntaxe Bash et les commandes | ||
| 993 | @code{shadow}) : | ||
| 994 | |||
| 995 | @c See http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00239.html | ||
| 996 | @c for why `-G' is needed. | ||
| 997 | @example | ||
| 998 | # groupadd --system guixbuild | ||
| 999 | # for i in `seq -w 1 10`; | ||
| 1000 | do | ||
| 1001 | useradd -g guixbuild -G guixbuild \ | ||
| 1002 | -d /var/empty -s `which nologin` \ | ||
| 1003 | -c "Utilisateur de construction Guix $i" --system \ | ||
| 1004 | guixbuilder$i; | ||
| 1005 | done | ||
| 1006 | @end example | ||
| 1007 | |||
| 1008 | @noindent | ||
| 1009 | Le nombre d'utilisateurs de construction détermine le nombre de tâches de | ||
| 1010 | constructions qui peuvent tourner en parallèle, tel que spécifié par | ||
| 1011 | l'option @option{--max-jobs} (@pxref{Invoquer guix-daemon, | ||
| 1012 | @option{--max-jobs}}). Pour utiliser @command{guix system vm} et les | ||
| 1013 | commandes liées, vous devrez ajouter les utilisateurs de construction au | ||
| 1014 | groupe @code{kvm} pour qu'ils puissent accéder à @file{/dev/kvm} avec | ||
| 1015 | @code{-G guixbuild,kvm} plutôt que @code{-G guixbuild} (@pxref{Invoquer guix system}). | ||
| 1016 | |||
| 1017 | Le programme @code{guix-daemon} peut ensuite être lancé en @code{root} avec | ||
| 1018 | la commande suivante@footnote{Si votre machine utilise le système | ||
| 1019 | d'initialisation systemd, copiez le fichier | ||
| 1020 | @file{@var{prefix}/lib/systemd/system/guix-daemon.service} dans | ||
| 1021 | @file{/etc/systemd/system} pour vous assurer que @command{guix-daemon} est | ||
| 1022 | démarré automatiquement. De même, si votre machine utilise le système | ||
| 1023 | d'initialisation Upstart, copiez le fichier | ||
| 1024 | @file{@var{prefix}/lib/upstart/system/guix-daemon.conf} dans | ||
| 1025 | @file{/etc/init}.} : | ||
| 1026 | |||
| 1027 | @example | ||
| 1028 | # guix-daemon --build-users-group=guixbuild | ||
| 1029 | @end example | ||
| 1030 | |||
| 1031 | @cindex chroot | ||
| 1032 | @noindent | ||
| 1033 | De cette façon, le démon démarre les processus de construction dans un | ||
| 1034 | chroot, sous un des utilisateurs @code{guixbuilder}. Sur GNU/Linux par | ||
| 1035 | défaut, l'environnement chroot ne contient rien d'autre que : | ||
| 1036 | |||
| 1037 | @c Keep this list in sync with libstore/build.cc! ----------------------- | ||
| 1038 | @itemize | ||
| 1039 | @item | ||
| 1040 | un répertoire @code{/dev} minimal, créé presque indépendamment du | ||
| 1041 | @code{/dev} de l'hôte@footnote{« presque », parce que même si l'ensemble des | ||
| 1042 | fichiers qui apparaissent dans le @code{/dev} du chroot sont déterminés à | ||
| 1043 | l'avance, la plupart de ces fichiers ne peut pas être créée si l'hôte ne les | ||
| 1044 | a pas.} ; | ||
| 1045 | |||
| 1046 | @item | ||
| 1047 | le répertoire @code{/proc} ; il ne montre que les processus du conteneur car | ||
| 1048 | on utilise une espace de nom séparé pour les PID ; | ||
| 1049 | |||
| 1050 | @item | ||
| 1051 | @file{/etc/passwd} avec une entrée pour l'utilisateur actuel et une entrée | ||
| 1052 | pour l'utilisateur @file{nobody} ; | ||
| 1053 | |||
| 1054 | @item | ||
| 1055 | @file{/etc/group} avec une entrée pour le groupe de l'utilisateur ; | ||
| 1056 | |||
| 1057 | @item | ||
| 1058 | @file{/etc/hosts} avec une entrée qui fait correspondre @code{localhost} à | ||
| 1059 | @code{127.0.0.1} ; | ||
| 1060 | |||
| 1061 | @item | ||
| 1062 | un répertoire @file{/tmp} inscriptible. | ||
| 1063 | @end itemize | ||
| 1064 | |||
| 1065 | Vous pouvez influencer le répertoire où le démon stocke les arbres de | ||
| 1066 | construction @i{via} la variable d'environnement @code{TMPDIR}. Cependant, | ||
| 1067 | l'arbre de construction dans le chroot sera toujours appelé | ||
| 1068 | @file{/tmp/guix-build-@var{nom}.drv-0}, où @var{nom} est le nom de la | ||
| 1069 | dérivation — p.@: ex.@: @code{coreutils-8.24}. De cette façon, la valeur de | ||
| 1070 | @code{TMPDIR} ne fuite pas à l'intérieur des environnements de construction, | ||
| 1071 | ce qui évite des différences lorsque le processus de construction retient le | ||
| 1072 | nom de leur répertoire de construction. | ||
| 1073 | |||
| 1074 | @vindex http_proxy | ||
| 1075 | Le démon tient aussi compte de la variable d'environnement @code{http_proxy} | ||
| 1076 | pour ses téléchargements HTTP, que ce soit pour les dérivations à sortie | ||
| 1077 | fixes (@pxref{Dérivations}) ou pour les substituts (@pxref{Substituts}). | ||
| 1078 | |||
| 1079 | Si vous installez Guix en tant qu'utilisateur non-privilégié, il est | ||
| 1080 | toujours possible de lancer @command{guix-daemon} si vous passez | ||
| 1081 | @code{--disable-chroot}. Cependant, les processus de construction ne seront | ||
| 1082 | pas isolés les uns des autres ni du reste du système. Ainsi les processus | ||
| 1083 | de construction peuvent interférer les uns avec les autres, et peuvent | ||
| 1084 | accéder à des programmes, des bibliothèques et d'autres fichiers présents | ||
| 1085 | sur le système — ce qui rend plus difficile de les voir comme des fonctions | ||
| 1086 | @emph{pures}. | ||
| 1087 | |||
| 1088 | |||
| 1089 | @node Réglages du délestage du démon | ||
| 1090 | @subsection Utiliser le dispositif de déchargement | ||
| 1091 | |||
| 1092 | @cindex déchargement | ||
| 1093 | @cindex crochet de construction | ||
| 1094 | Si vous le souhaitez, le démon de construction peut @dfn{décharger} des | ||
| 1095 | constructions de dérivations sur d'autres machines Guix avec le @dfn{crochet | ||
| 1096 | de construction} @code{offload}@footnote{Cette fonctionnalité n'est | ||
| 1097 | disponible que si @uref{https://github.com/artyom-poptsov/guile-ssh, | ||
| 1098 | Guile-SSH} est présent.}. Lorsque cette fonctionnalité est activée, Guix | ||
| 1099 | lit une liste de machines de constructions spécifiée par l'utilisateur dans | ||
| 1100 | @file{/etc/guix/machines.scm} ; à chaque fois qu'une construction est | ||
| 1101 | demandée, par exemple par @code{guix build}, le démon essaie de la décharger | ||
| 1102 | sur une des machines qui satisfont les contraintes de la dérivation, en | ||
| 1103 | particulier le type de système, p.@: ex.@: @file{x86_64-linux}. Les | ||
| 1104 | prérequis manquants pour la construction sont copiés par SSH sur la machine | ||
| 1105 | de construction qui procède ensuite à la construction ; si elle réussi, les | ||
| 1106 | sorties de la construction sont copiés vers la machine de départ. | ||
| 1107 | |||
| 1108 | Le fichier @file{/etc/guix/machines.scm} ressemble typiquement à cela : | ||
| 1109 | |||
| 1110 | @example | ||
| 1111 | (list (build-machine | ||
| 1112 | (name "eightysix.example.org") | ||
| 1113 | (system "x86_64-linux") | ||
| 1114 | (host-key "ssh-ed25519 AAAAC3Nza@dots{}") | ||
| 1115 | (user "bob") | ||
| 1116 | (speed 2.)) ;très rapide ! | ||
| 1117 | |||
| 1118 | (build-machine | ||
| 1119 | (name "meeps.example.org") | ||
| 1120 | (system "mips64el-linux") | ||
| 1121 | (host-key "ssh-rsa AAAAB3Nza@dots{}") | ||
| 1122 | (user "alice") | ||
| 1123 | (private-key | ||
| 1124 | (string-append (getenv "HOME") | ||
| 1125 | "/.ssh/identity-for-guix")))) | ||
| 1126 | @end example | ||
| 1127 | |||
| 1128 | @noindent | ||
| 1129 | Dans l'exemple ci-dessus nous spécifions une liste de deux machines de | ||
| 1130 | construction, une pour l'architecture @code{x86_64} et une pour | ||
| 1131 | l'architecture @code{mips64el}. | ||
| 1132 | |||
| 1133 | En fait, ce fichier est — et ça ne devrait pas vous surprendre ! — un | ||
| 1134 | fichier Scheme qui est évalué au démarrage du crochet @code{offload}. Sa | ||
| 1135 | valeur de retour doit être une liste d'objets @code{build-machine}. Même si | ||
| 1136 | cet exemple montre une liste fixée de machines de construction, on pourrait | ||
| 1137 | imaginer par exemple utiliser DNS-SD pour renvoyer une liste de machines de | ||
| 1138 | constructions potentielles découvertes sur le réseau local | ||
| 1139 | (@pxref{Introduction, Guile-Avahi,, guile-avahi, Using Avahi in Guile Scheme | ||
| 1140 | Programs}). Le type de données @code{build-machine} est détaillé plus bas. | ||
| 1141 | |||
| 1142 | @deftp {Type de données} build-machine | ||
| 1143 | Ce type de données représente les machines de construction sur lesquelles le | ||
| 1144 | démon peut décharger des constructions. Les champs importants sont : | ||
| 1145 | |||
| 1146 | @table @code | ||
| 1147 | |||
| 1148 | @item name | ||
| 1149 | Le nom d'hôte de la machine distante. | ||
| 1150 | |||
| 1151 | @item system | ||
| 1152 | Le type de système de la machine distante, p.@: ex.@: @code{"x86_64-linux"}. | ||
| 1153 | |||
| 1154 | @item user | ||
| 1155 | Le compte utilisateur à utiliser lors de la connexion à la machine distante | ||
| 1156 | par SSH@. Remarquez que la paire de clef SSH ne doit @emph{pas} être | ||
| 1157 | protégée par mot de passe pour permettre des connexions non-interactives. | ||
| 1158 | |||
| 1159 | @item host-key | ||
| 1160 | Cela doit être la @dfn{clef d'hôte SSH publique} de la machine au format | ||
| 1161 | OpenSSH@. Elle est utilisée pour authentifier la machine lors de la | ||
| 1162 | connexion. C'est une longue chaîne qui ressemble à cela : | ||
| 1163 | |||
| 1164 | @example | ||
| 1165 | ssh-ed25519 AAAAC3NzaC@dots{}mde+UhL hint@@example.org | ||
| 1166 | @end example | ||
| 1167 | |||
| 1168 | Si la machine utilise le démon OpenSSH, @command{sshd}, la clef d'hôte se | ||
| 1169 | trouve dans un fichier comme @file{/etc/ssh/ssh_host_ed25519_key.pub}. | ||
| 1170 | |||
| 1171 | Si la machine utilise le démon SSH de GNU@tie{}lsh, la clef d'hôte est dans | ||
| 1172 | @file{/etc/lsh/host-key.pub} ou un fichier similaire. Elle peut être | ||
| 1173 | convertie au format OpenSSH avec @command{lsh-export-key} | ||
| 1174 | (@pxref{Converting keys,,, lsh, LSH Manual}) : | ||
| 1175 | |||
| 1176 | @example | ||
| 1177 | $ lsh-export-key --openssh < /etc/lsh/host-key.pub | ||
| 1178 | ssh-rsa AAAAB3NzaC1yc2EAAAAEOp8FoQAAAQEAs1eB46LV@dots{} | ||
| 1179 | @end example | ||
| 1180 | |||
| 1181 | @end table | ||
| 1182 | |||
| 1183 | Il y a un certain nombre de champs facultatifs que vous pouvez remplir : | ||
| 1184 | |||
| 1185 | @table @asis | ||
| 1186 | |||
| 1187 | @item @code{port} (par défaut : @code{22}) | ||
| 1188 | Numéro de port du serveur SSH sur la machine. | ||
| 1189 | |||
| 1190 | @item @code{private-key} (par défaut : @file{~root/.ssh/id_rsa}) | ||
| 1191 | Le fichier de clef privée SSH à utiliser lors de la connexion à la machine, | ||
| 1192 | au format OpenSSH@. Cette clef ne doit pas être protégée par phrase de | ||
| 1193 | passe. | ||
| 1194 | |||
| 1195 | Remarquez que la valeur par défaut est la clef privée @emph{du compte | ||
| 1196 | root}. Assurez-vous qu'elle existe si vous utilisez la valeur par défaut. | ||
| 1197 | |||
| 1198 | @item @code{compression} (par défaut : @code{"zlib@@openssh.com,zlib"}) | ||
| 1199 | @itemx @code{compression-level} (par défaut : @code{3}) | ||
| 1200 | Les méthodes de compression au niveau SSH et le niveau de compression | ||
| 1201 | demandé. | ||
| 1202 | |||
| 1203 | Remarquez que le déchargement utilise la compression SSH pour réduire la | ||
| 1204 | bande passante utilisée lors du transfert vers et depuis les machines de | ||
| 1205 | construction. | ||
| 1206 | |||
| 1207 | @item @code{daemon-socket} (par défaut : @code{"/var/guix/daemon-socket/socket"}) | ||
| 1208 | Le nom de fichier du socket Unix-domain sur lequel @command{guix-daemon} | ||
| 1209 | écoute sur cette machine. | ||
| 1210 | |||
| 1211 | @item @code{parallel-builds} (par défaut : @code{1}) | ||
| 1212 | Le nombre de constructions qui peuvent tourner simultanément sur la machine. | ||
| 1213 | |||
| 1214 | @item @code{speed} (par défaut : @code{1.0}) | ||
| 1215 | Un « facteur de vitesse relatif ». L'ordonnanceur des constructions tendra | ||
| 1216 | à préférer les machines avec un plus grand facteur de vitesse. | ||
| 1217 | |||
| 1218 | @item @code{features} (par défaut : @code{'()}) | ||
| 1219 | Une liste de chaînes qui contient les fonctionnalités spécifiques supportées | ||
| 1220 | par la machine. Un exemple est @code{"kvm"} pour les machines qui ont le | ||
| 1221 | module Linux KVM et le support matériel correspondant. Les dérivations | ||
| 1222 | peuvent demander des fonctionnalités par leur nom et seront orchestrées sur | ||
| 1223 | les machines de construction correspondantes. | ||
| 1224 | |||
| 1225 | @end table | ||
| 1226 | @end deftp | ||
| 1227 | |||
| 1228 | La commande @code{guix} doit être dans le chemin de recherche des machines | ||
| 1229 | de construction. Vous pouvez vérifier si c'est le cas en lançant : | ||
| 1230 | |||
| 1231 | @example | ||
| 1232 | ssh build-machine guix repl --version | ||
| 1233 | @end example | ||
| 1234 | |||
| 1235 | Il reste une dernière chose à faire maintenant que @file{machines.scm} est | ||
| 1236 | en place. Comme expliqué ci-dessus, lors du déchargement les fichiers sont | ||
| 1237 | transférés entre les dépôts des machines. Pour que cela fonctionne, vous | ||
| 1238 | devez d'abord générer une paire de clef sur chaque machine pour permettre au | ||
| 1239 | démon d'exporter des archives signées des fichiers de son dépôt | ||
| 1240 | (@pxref{Invoquer guix archive}) : | ||
| 1241 | |||
| 1242 | @example | ||
| 1243 | # guix archive --generate-key | ||
| 1244 | @end example | ||
| 1245 | |||
| 1246 | @noindent | ||
| 1247 | Chaque machine de construction doit autoriser la clef de la machine | ||
| 1248 | maîtresse pour qu'ils acceptent les éléments de dépôt de celle-ci : | ||
| 1249 | |||
| 1250 | @example | ||
| 1251 | # guix archive --authorize < master-public-key.txt | ||
| 1252 | @end example | ||
| 1253 | |||
| 1254 | @noindent | ||
| 1255 | De même, la machine maîtresse doit autoriser les clefs de chaque machine de | ||
| 1256 | construction. | ||
| 1257 | |||
| 1258 | Toute cette histoire de clefs permet d'exprimer la confiance mutuelle | ||
| 1259 | deux-à-deux entre le maître et les machines de construction. Concrètement, | ||
| 1260 | lorsque le maître reçoit des fichiers d'une machine de construction (et | ||
| 1261 | vice-versa), son démon de construction s'assure qu'ils sont authentiques, | ||
| 1262 | n'ont pas été modifiés par un tiers et qu'il sont signés par un clef | ||
| 1263 | autorisée. | ||
| 1264 | |||
| 1265 | @cindex test du déchargement | ||
| 1266 | Pour tester que votre paramétrage fonctionne, lancez cette commande sur le | ||
| 1267 | nœud maître : | ||
| 1268 | |||
| 1269 | @example | ||
| 1270 | # guix offload test | ||
| 1271 | @end example | ||
| 1272 | |||
| 1273 | Cela essaiera de se connecter à toutes les machines de construction | ||
| 1274 | spécifiées dans @file{/etc/guix/machines.scm}, s'assurera que Guile et les | ||
| 1275 | modules Guix sont disponibles sur toutes les machines et tentera d'exporter | ||
| 1276 | vers la machine et d'importer depuis elle, et rapportera toute erreur | ||
| 1277 | survenu pendant le processus. | ||
| 1278 | |||
| 1279 | Si vous souhaitez tester un fichier de machines différent, spécifiez-le sur | ||
| 1280 | la ligne de commande : | ||
| 1281 | |||
| 1282 | @example | ||
| 1283 | # guix offload test machines-qualif.scm | ||
| 1284 | @end example | ||
| 1285 | |||
| 1286 | Enfin, vous pouvez tester un sous-ensemble de machines dont le nom | ||
| 1287 | correspond à une expression rationnelle comme ceci : | ||
| 1288 | |||
| 1289 | @example | ||
| 1290 | # guix offload test machines.scm '\.gnu\.org$' | ||
| 1291 | @end example | ||
| 1292 | |||
| 1293 | @cindex statut du déchargement | ||
| 1294 | Pour afficher la charge actuelle de tous les hôtes de construction, lancez | ||
| 1295 | cette commande sur le nœud principal : | ||
| 1296 | |||
| 1297 | @example | ||
| 1298 | # guix offload status | ||
| 1299 | @end example | ||
| 1300 | |||
| 1301 | |||
| 1302 | @node Support de SELinux | ||
| 1303 | @subsection Support de SELinux | ||
| 1304 | |||
| 1305 | @cindex SELinux, politique du démon | ||
| 1306 | @cindex contrôle d'accès obligatoire, SELinux | ||
| 1307 | @cindex sécurité, guix-daemon | ||
| 1308 | Guix inclus un fichier de politique SELinux dans @file{etc/guix-daemon.cil} | ||
| 1309 | qui peut être installé sur un système où SELinux est activé pour que les | ||
| 1310 | fichiers Guix soient étiquetés et pour spécifier le comportement attendu du | ||
| 1311 | démon. Comme Guix System ne fournit pas de politique SELinux de base, la | ||
| 1312 | politique du démon ne peut pas être utilisée sur le système Guix. | ||
| 1313 | |||
| 1314 | @subsubsection Installer la politique SELinux | ||
| 1315 | @cindex SELinux, installation de la politique | ||
| 1316 | Pour installer la politique, lancez cette commande en root : | ||
| 1317 | |||
| 1318 | @example | ||
| 1319 | semodule -i etc/guix-daemon.cil | ||
| 1320 | @end example | ||
| 1321 | |||
| 1322 | Puis ré-étiquetez le système de fichier avec @code{restorecon} ou par un | ||
| 1323 | mécanisme différent fournit par votre système. | ||
| 1324 | |||
| 1325 | Une fois la politique installée, le système de fichier ré-étiqueté et le | ||
| 1326 | démon redémarré, il devrait être lancé dans le contexte | ||
| 1327 | @code{guix_daemon_t}. Vous pouvez le confirmer avec la commande suivante : | ||
| 1328 | |||
| 1329 | @example | ||
| 1330 | ps -Zax | grep guix-daemon | ||
| 1331 | @end example | ||
| 1332 | |||
| 1333 | Surveillez les fichiers journaux de SELinux pendant que vous lancez une | ||
| 1334 | commande comme @code{guix build hello} pour vous convaincre que SELniux | ||
| 1335 | permet toutes les opérations nécessaires. | ||
| 1336 | |||
| 1337 | @subsubsection Limitations | ||
| 1338 | @cindex SELinux, limites | ||
| 1339 | |||
| 1340 | La politique n'est pas parfaite. Voici une liste de limitations et de | ||
| 1341 | bizarreries qui vous devriez prendre en compte avant de déployer la | ||
| 1342 | politique SELinux fournie pour le démon Guix. | ||
| 1343 | |||
| 1344 | @enumerate | ||
| 1345 | @item | ||
| 1346 | @code{guix_daemon_socket_t} n'est pas vraiment utilisé. Aucune des | ||
| 1347 | opérations sur les sockets n'impliquent de contextes qui ont quoi que ce | ||
| 1348 | soit à voir avec @code{guix_daemon_socket_t}. Ça ne fait pas de mal d'avoir | ||
| 1349 | une étiquette inutilisée, mais il serait préférable de définir des règles | ||
| 1350 | sur les sockets uniquement pour cette étiquette. | ||
| 1351 | |||
| 1352 | @item | ||
| 1353 | @code{guix gc} ne peut pas accéder à n'importe quel lien vers les profils. | ||
| 1354 | Par conception, l'étiquette de fichier de la destination d'un lien | ||
| 1355 | symbolique est indépendant de l'étiquette du lien lui-même. Bien que tous | ||
| 1356 | les profils sous $localstatedir aient une étiquette, les liens vers ces | ||
| 1357 | profils héritent de l'étiquette du répertoire dans lequel ils se trouvent. | ||
| 1358 | Pour les liens dans le répertoire personnel cela sera @code{user_home_t}. | ||
| 1359 | Mais pour les liens du répertoire personnel de l'utilisateur root, ou | ||
| 1360 | @file{/tmp}, ou du répertoire de travail du serveur HTTP, etc, cela ne | ||
| 1361 | fonctionnera pas. SELinux empêcherait @code{guix gc} de lire et de suivre | ||
| 1362 | ces liens. | ||
| 1363 | |||
| 1364 | @item | ||
| 1365 | La fonctionnalité du démon d'écouter des connexions TCP pourrait ne plus | ||
| 1366 | fonctionner. Cela demande des règles supplémentaires car SELinux traite les | ||
| 1367 | sockets réseau différemment des fichiers. | ||
| 1368 | |||
| 1369 | @item | ||
| 1370 | Actuellement tous les fichiers qui correspondent à l'expression rationnelle | ||
| 1371 | @code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} reçoivent l'étiquette | ||
| 1372 | @code{guix_daemon_exec_t} ; cela signifie que @emph{tout} fichier avec ce | ||
| 1373 | nom dans n'importe quel profil serait autorisé à se lancer dans le domaine | ||
| 1374 | @code{guix_daemon_t}. Ce n'est pas idéal. Un attaquant pourrait construire | ||
| 1375 | un paquet qui fournit cet exécutable et convaincre un utilisateur de | ||
| 1376 | l'installer et de le lancer, ce qui l'élève dans le domaine | ||
| 1377 | @code{guix_daemon_t}. À ce moment SELinux ne pourrait pas l'empêcher | ||
| 1378 | d'accéder à des fichiers autorisés pour les processus de ce domaine. | ||
| 1379 | |||
| 1380 | Nous pourrions générer une politique bien plus restrictive à l'installation, | ||
| 1381 | pour que seuls les noms de fichiers @emph{exacts} de l'exécutable | ||
| 1382 | @code{guix-daemon} actuellement installé soit étiqueté avec | ||
| 1383 | @code{guix_daemon_exec_t}, plutôt que d'utiliser une expression rationnelle | ||
| 1384 | plus large. L'inconvénient c'est que root devrait installer ou mettre à | ||
| 1385 | jour la politique à l'installation à chaque fois que le paquet Guix qui | ||
| 1386 | fournit l'exécutable @code{guix-daemon} effectivement exécuté est mis à | ||
| 1387 | jour. | ||
| 1388 | @end enumerate | ||
| 1389 | |||
| 1390 | @node Invoquer guix-daemon | ||
| 1391 | @section Invoquer @command{guix-daemon} | ||
| 1392 | |||
| 1393 | Le programme @command{guix-daemon} implémente toutes les fonctionnalités | ||
| 1394 | d'accès au dépôt. Cela inclus le lancement des processus de construction, | ||
| 1395 | le lancement du ramasse-miettes, la demande de disponibilité des résultats | ||
| 1396 | de construction, etc. Il tourne normalement en @code{root} comme ceci : | ||
| 1397 | |||
| 1398 | @example | ||
| 1399 | # guix-daemon --build-users-group=guixbuild | ||
| 1400 | @end example | ||
| 1401 | |||
| 1402 | @noindent | ||
| 1403 | Pour des détails sur son paramétrage, @pxref{Paramétrer le démon}. | ||
| 1404 | |||
| 1405 | @cindex chroot | ||
| 1406 | @cindex conteneur, environnement de construction | ||
| 1407 | @cindex environnement de construction | ||
| 1408 | @cindex constructions reproductibles | ||
| 1409 | Par défaut, @command{guix-daemon} lance les processus de construction sous | ||
| 1410 | différents UID récupérés depuis le groupe de construction spécifié avec | ||
| 1411 | @code{--build-users-group}. En plus, chaque processus de construction est | ||
| 1412 | lancé dans un environnement chroot qui ne contient que le sous-ensemble du | ||
| 1413 | dépôt dont le processus de construction dépend, tel que spécifié par sa | ||
| 1414 | dérivation (@pxref{Interface de programmation, dérivation}), plus un | ||
| 1415 | ensemble de répertoires systèmes spécifiques. Par défaut ce dernier | ||
| 1416 | contient @file{/dev} et @file{/dev/pts}. De plus, sous GNU/Linux, | ||
| 1417 | l'environnement de construction est un @dfn{conteneur} : en plus d'avoir sa | ||
| 1418 | propre arborescence du système de fichier, elle a un espace de montage | ||
| 1419 | séparé, son propre espace de PID, son espace de réseau, etc. Cela aide à | ||
| 1420 | obtenir des constructions reproductibles (@pxref{Fonctionnalités}). | ||
| 1421 | |||
| 1422 | Lorsque le démon effectue une construction pour le compte de l'utilisateur, | ||
| 1423 | il crée un répertoire sous @file{/tmp} ou sous le répertoire spécifié par sa | ||
| 1424 | variable d'environnement @code{TMPDIR}. Ce répertoire est partagé avec le | ||
| 1425 | conteneur pendant la durée de la construction, bien que dans le conteneur, | ||
| 1426 | l'arborescence de construction est toujours appelée | ||
| 1427 | @file{/tmp/guix-build-@var{name}.drv-0}. | ||
| 1428 | |||
| 1429 | Le répertoire de construction est automatiquement supprimé à la fin, à moins | ||
| 1430 | que la construction n'ait échoué et que le client ait spécifié | ||
| 1431 | @option{--keep-failed} (@pxref{Invoquer guix build, | ||
| 1432 | @option{--keep-failed}}). | ||
| 1433 | |||
| 1434 | Le démon écoute les connexions et démarre un sous-processus pour chaque | ||
| 1435 | session démarrée par un client (l'une des sous-commandes de | ||
| 1436 | @command{guix}). La commande @command{guix processes} vous permet d'obtenir | ||
| 1437 | un aperçu de l'activité sur votre système en affichant chaque session et | ||
| 1438 | client actif. @xref{Invoquer guix processes} pour plus d'informations. | ||
| 1439 | |||
| 1440 | Les options en ligne de commande suivantes sont disponibles : | ||
| 1441 | |||
| 1442 | @table @code | ||
| 1443 | @item --build-users-group=@var{groupe} | ||
| 1444 | Prendre les utilisateurs de @var{group} pour lancer les processus de | ||
| 1445 | construction (@pxref{Paramétrer le démon, utilisateurs de construction}). | ||
| 1446 | |||
| 1447 | @item --no-substitutes | ||
| 1448 | @cindex substituts | ||
| 1449 | Ne pas utiliser de substitut pour les résultats de la construction. | ||
| 1450 | C'est-à-dire, toujours construire localement plutôt que de permettre le | ||
| 1451 | téléchargement de binaires pré-construits (@pxref{Substituts}). | ||
| 1452 | |||
| 1453 | Lorsque le démon tourne avec @code{--no-substitutes}, les clients peuvent | ||
| 1454 | toujours activer explicitement la substitution @i{via} l'appel de procédure | ||
| 1455 | distante @code{set-build-options} (@pxref{Le dépôt}). | ||
| 1456 | |||
| 1457 | @item --substitute-urls=@var{urls} | ||
| 1458 | @anchor{daemon-substitute-urls} | ||
| 1459 | Considérer @var{urls} comme la liste séparée par des espaces des URL des | ||
| 1460 | sources de substituts par défaut. Lorsque cette option est omise, | ||
| 1461 | @indicateurl{https://@value{SUBSTITUTE-SERVER}} est utilisé. | ||
| 1462 | |||
| 1463 | Cela signifie que les substituts sont téléchargés depuis les @var{urls}, | ||
| 1464 | tant qu'ils sont signés par une signature de confiance (@pxref{Substituts}). | ||
| 1465 | |||
| 1466 | @cindex crochet de construction | ||
| 1467 | @item --no-build-hook | ||
| 1468 | Ne pas utiliser le @dfn{crochet de construction}. | ||
| 1469 | |||
| 1470 | Le crochet de construction est un programme d'aide qui le démon peut | ||
| 1471 | démarrer et auquel soumettre les requêtes de construction. Ce mécanisme est | ||
| 1472 | utilisé pour décharger les constructions à d'autres machines (@pxref{Réglages du délestage du démon}). | ||
| 1473 | |||
| 1474 | @item --cache-failures | ||
| 1475 | Mettre les échecs de construction en cache. Par défaut, seules les | ||
| 1476 | constructions réussies sont mises en cache. | ||
| 1477 | |||
| 1478 | Lorsque cette option est utilisée, @command{guix gc --list-failures} peut | ||
| 1479 | être utilisé pour demander l'ensemble des éléments du dépôt marqués comme | ||
| 1480 | échoués ; @command{guix gc --clear-failures} vide la liste des éléments | ||
| 1481 | aillant échoué. @xref{Invoquer guix gc}. | ||
| 1482 | |||
| 1483 | @item --cores=@var{n} | ||
| 1484 | @itemx -c @var{n} | ||
| 1485 | Utiliser @var{n} cœurs CPU pour construire chaque dérivation ; @code{0} | ||
| 1486 | signifie autant que possible. | ||
| 1487 | |||
| 1488 | La valeur par défaut est @code{0}, mais elle peut être modifiée par les | ||
| 1489 | clients comme avec l'option @code{--cores} de @command{guix build} | ||
| 1490 | (@pxref{Invoquer guix build}). | ||
| 1491 | |||
| 1492 | L'effet est de définir la variable d'environnement @code{NIX_BUILD_CORES} | ||
| 1493 | dans le processus de construction, qui peut ensuite l'utiliser pour | ||
| 1494 | exploiter le parallélisme en interne — par exemple en lançant @code{make | ||
| 1495 | -j$NIX_BUILD_CORES}. | ||
| 1496 | |||
| 1497 | @item --max-jobs=@var{n} | ||
| 1498 | @itemx -M @var{n} | ||
| 1499 | Permettre au plus @var{n} travaux de construction en parallèle. La valeur | ||
| 1500 | par défaut est @code{1}. La mettre à @code{0} signifie qu'aucune | ||
| 1501 | construction ne sera effectuée localement ; à la place, le démon déchargera | ||
| 1502 | les constructions (@pxref{Réglages du délestage du démon}) ou échouera. | ||
| 1503 | |||
| 1504 | @item --max-silent-time=@var{secondes} | ||
| 1505 | Lorsque le processus de construction ou de substitution restent silencieux | ||
| 1506 | pendant plus de @var{secondes}, le terminer et rapporter une erreur de | ||
| 1507 | construction. | ||
| 1508 | |||
| 1509 | La valeur par défaut est @code{0}, ce qui désactive le délai. | ||
| 1510 | |||
| 1511 | La valeur spécifiée ici peut être modifiée par les clients (@pxref{Options de construction communes, @code{--max-silent-time}}). | ||
| 1512 | |||
| 1513 | @item --timeout=@var{secondes} | ||
| 1514 | De même, lorsque le processus de construction ou de substitution dure plus | ||
| 1515 | de @var{secondes}, le terminer et rapporter une erreur de construction. | ||
| 1516 | |||
| 1517 | La valeur par défaut est @code{0}, ce qui désactive le délai. | ||
| 1518 | |||
| 1519 | La valeur spécifiée ici peut être modifiée par les clients (@pxref{Options de construction communes, @code{--timeout}}). | ||
| 1520 | |||
| 1521 | @item --rounds=@var{N} | ||
| 1522 | Construire chaque dérivations @var{N} fois à la suite, et lever une erreur | ||
| 1523 | si les résultats de construction consécutifs ne sont pas identiques | ||
| 1524 | bit-à-bit. Remarquez que ce paramètre peut être modifié par les clients | ||
| 1525 | comme @command{guix build} (@pxref{Invoquer guix build}). | ||
| 1526 | |||
| 1527 | Lorsqu'utilisé avec @option{--keep-failed}, la sortie différente est gardée | ||
| 1528 | dans le dépôt sous @file{/gnu/store/@dots{}-check}. Cela rend plus facile | ||
| 1529 | l'étude des différences entre les deux résultats. | ||
| 1530 | |||
| 1531 | @item --debug | ||
| 1532 | Produire une sortie de débogage. | ||
| 1533 | |||
| 1534 | Cela est utile pour déboguer des problèmes de démarrage du démon, mais | ||
| 1535 | ensuite elle peut être modifiée par les clients, par exemple par l'option | ||
| 1536 | @code{--verbosity} de @command{guix build} (@pxref{Invoquer guix build}). | ||
| 1537 | |||
| 1538 | @item --chroot-directory=@var{rép} | ||
| 1539 | Ajouter @var{rép} au chroot de construction. | ||
| 1540 | |||
| 1541 | Cela peut changer le résultat d'un processus de construction — par exemple | ||
| 1542 | s'il utilise une dépendance facultative trouvée dans @var{rép} lorsqu'elle | ||
| 1543 | est disponible ou pas sinon. Pour cette raison, il n'est pas recommandé | ||
| 1544 | d'utiliser cette option. À la place, assurez-vous que chaque dérivation | ||
| 1545 | déclare toutes les entrées dont elle a besoin. | ||
| 1546 | |||
| 1547 | @item --disable-chroot | ||
| 1548 | Désactive les constructions dans un chroot. | ||
| 1549 | |||
| 1550 | Utiliser cette option n'est pas recommandé car, de nouveau, elle permet aux | ||
| 1551 | processus de construction d'accéder à des dépendances non déclarées. Elle | ||
| 1552 | est nécessaire cependant lorsque @command{guix-daemon} tourne en tant | ||
| 1553 | qu'utilisateur non privilégié. | ||
| 1554 | |||
| 1555 | @item --log-compression=@var{type} | ||
| 1556 | Compresser les journaux de construction suivant le @var{type}, parmi | ||
| 1557 | @code{gzip}, @code{bzip2} ou @code{none}. | ||
| 1558 | |||
| 1559 | À moins que @code{--lose-logs} ne soit utilisé, tous les journaux de | ||
| 1560 | construction sont gardés dans @var{localstatedir}. Pour gagner de la place, | ||
| 1561 | le démon les compresse automatiquement avec bzip2 par défaut. | ||
| 1562 | |||
| 1563 | @item --disable-deduplication | ||
| 1564 | @cindex déduplication | ||
| 1565 | Désactiver la « déduplication » automatique des fichiers dans le dépôt. | ||
| 1566 | |||
| 1567 | Par défaut, les fichiers ajoutés au dépôt sont automatiquement « dédupliqués | ||
| 1568 | » : si un nouveau fichier est identique à un autre fichier trouvé dans le | ||
| 1569 | dépôt, le démon en fait un lien en dur vers l'autre fichier. Cela réduit | ||
| 1570 | considérablement l'utilisation de l'espace disque au prix d'une charge en | ||
| 1571 | entrée/sortie plus grande à la fin d'un processus de construction. Cette | ||
| 1572 | option désactive cette optimisation. | ||
| 1573 | |||
| 1574 | @item --gc-keep-outputs[=yes|no] | ||
| 1575 | Dire si le ramasse-miettes (GC) doit garder les sorties des dérivations | ||
| 1576 | utilisées. | ||
| 1577 | |||
| 1578 | @cindex racines du GC | ||
| 1579 | @cindex racines du ramasse-miettes | ||
| 1580 | Lorsqu'elle est à « yes », le GC gardera les sorties de toutes les | ||
| 1581 | dérivations — les fichiers @code{.drv} — accessibles dans le dépôt. La | ||
| 1582 | valeur par défaut est « no », ce qui signifie que les sorties des | ||
| 1583 | dérivations ne sont gardées que si elles sont accessibles à partir d'une | ||
| 1584 | racine du GC. @xref{Invoquer guix gc} pour plus d'informations sur les | ||
| 1585 | racines du GC. | ||
| 1586 | |||
| 1587 | @item --gc-keep-derivations[=yes|no] | ||
| 1588 | Dire si le ramasse-miettes (GC) doit garder les dérivations correspondant à | ||
| 1589 | des sorties utilisées. | ||
| 1590 | |||
| 1591 | Lorsqu'elle est à « yes », comme c'est le cas par défaut, le GC garde les | ||
| 1592 | dérivations — c.-à-d.@: les fichiers @file{.drv} — tant qu'au moins une de | ||
| 1593 | leurs sorties est utilisée. Cela permet aux utilisateurs de garder une | ||
| 1594 | trace de l'origine des éléments du dépôt. Le mettre à « no » préserve un | ||
| 1595 | peu d'espace disque. | ||
| 1596 | |||
| 1597 | De cette manière, avec @code{--gc-keep-derivations} à « yes », | ||
| 1598 | l'accessibilité des sorties s'étend des sorties aux dérivations et avec | ||
| 1599 | @code{--gc-keep-outputs} à « yes », elle s'étend des dérivations aux | ||
| 1600 | sorties. Quand les deux options sont à « yes », le GC gardera tous les | ||
| 1601 | prérequis de construction (les sources, le compilateur, les bibliothèques, | ||
| 1602 | et les autres outils de construction) des objets accessibles dans le dépôt, | ||
| 1603 | indépendamment du fait qu'ils soient ou non accessibles depuis une racine du | ||
| 1604 | GC. Cela est pratique pour les développeurs car ça leur fait gagner du | ||
| 1605 | temps de reconstruction et de téléchargement. | ||
| 1606 | |||
| 1607 | @item --impersonate-linux-2.6 | ||
| 1608 | Sur les système basés sur Linux, se faire passer pour Linux 2.6. Cela | ||
| 1609 | signifie que l'appel système du noyau @code{uname} rapportera 2.6 comme | ||
| 1610 | numéro de version. | ||
| 1611 | |||
| 1612 | Cela peut être utile pour construire des programmes qui dépendent | ||
| 1613 | (généralement sans fondement) du numéro de version du noyau. | ||
| 1614 | |||
| 1615 | @item --lose-logs | ||
| 1616 | Ne pas garder les journaux de construction. Par défaut ils sont gardés dans | ||
| 1617 | @code{@var{localstatedir}/guix/log}. | ||
| 1618 | |||
| 1619 | @item --system=@var{système} | ||
| 1620 | Supposer que @var{système} est le type de système actuel. Par défaut c'est | ||
| 1621 | la paire architecture-noyau trouvée à la configuration, comme | ||
| 1622 | @code{x86_64-linux}. | ||
| 1623 | |||
| 1624 | @item --listen=@var{extrémité} | ||
| 1625 | Écouter les connexions sur @var{extrémité}. @var{extrémité} est interprété | ||
| 1626 | comme un nom de fichier d'un socket Unix-domain s'il commence par @code{/} | ||
| 1627 | (barre oblique). Sinon, @var{extrémité} est interprété comme un nom de | ||
| 1628 | domaine ou d'hôte et un port sur lequel écouter. Voici quelques exemples : | ||
| 1629 | |||
| 1630 | @table @code | ||
| 1631 | @item --listen=/gnu/var/daemon | ||
| 1632 | Écouter les connexions sur le socket Unix-domain @file{/gnu/var/daemon} en | ||
| 1633 | le créant si besoin. | ||
| 1634 | |||
| 1635 | @item --listen=localhost | ||
| 1636 | @cindex démon, accès distant | ||
| 1637 | @cindex accès distant au démon | ||
| 1638 | @cindex démon, paramètres de grappes | ||
| 1639 | @cindex grappes, paramètres du démon | ||
| 1640 | Écouter les connexions TCP sur l'interface réseau correspondant à | ||
| 1641 | @code{localhost} sur le port 44146. | ||
| 1642 | |||
| 1643 | @item --listen=128.0.0.42:1234 | ||
| 1644 | Écouter les connexions TCP sur l'interface réseau correspondant à | ||
| 1645 | @code{128.0.0.42} sur le port 1234. | ||
| 1646 | @end table | ||
| 1647 | |||
| 1648 | Cette option peut être répétée plusieurs fois, auquel cas | ||
| 1649 | @command{guix-daemon} accepte des connexions sur toutes les extrémités | ||
| 1650 | spécifiées. Les utilisateurs peuvent dire aux commandes clientes à quelle | ||
| 1651 | extrémité se connecter en paramétrant la variable d'environnement | ||
| 1652 | @code{GUIX_DAEMON_SOCKET} (@pxref{Le dépôt, @code{GUIX_DAEMON_SOCKET}}). | ||
| 1653 | |||
| 1654 | @quotation Remarque | ||
| 1655 | Le protocole du démon est @emph{non authentifié et non chiffré}. Utiliser | ||
| 1656 | @code{--listen=@var{host}} est adapté sur des réseaux locaux, comme pour des | ||
| 1657 | grappes de serveurs, où seuls des nœuds de confiance peuvent se connecter au | ||
| 1658 | démon de construction. Dans les autres cas où l'accès à distance au démon | ||
| 1659 | est requis, nous conseillons d'utiliser un socket Unix-domain avec SSH@. | ||
| 1660 | @end quotation | ||
| 1661 | |||
| 1662 | Lorsque @code{--listen} est omis, @command{guix-daemon} écoute les | ||
| 1663 | connexions sur le socket Unix-domain situé à | ||
| 1664 | @file{@var{localstatedir}/guix/daemon-socket/socket}. | ||
| 1665 | @end table | ||
| 1666 | |||
| 1667 | |||
| 1668 | @node Réglages applicatifs | ||
| 1669 | @section Réglages applicatifs | ||
| 1670 | |||
| 1671 | @cindex distro externe | ||
| 1672 | Lorsque vous utilisez Guix par dessus une distribution GNU/Linux qui n'est | ||
| 1673 | pas Guix System — ce qu'on appelle une @dfn{distro externe} — quelques | ||
| 1674 | étapes supplémentaires sont requises pour que tout soit en place. En voici | ||
| 1675 | certaines. | ||
| 1676 | |||
| 1677 | @subsection Régionalisation | ||
| 1678 | |||
| 1679 | @anchor{locales-and-locpath} | ||
| 1680 | @cindex régionalisation, en dehors de Guix System | ||
| 1681 | @vindex LOCPATH | ||
| 1682 | @vindex GUIX_LOCPATH | ||
| 1683 | Les paquets installés @i{via} Guix n'utiliseront pas les données de | ||
| 1684 | régionalisation du système hôte. À la place, vous devrez d'abord installer | ||
| 1685 | l'un des paquets linguistiques disponibles dans Guix puis définir la | ||
| 1686 | variable d'environnement @code{GUIX_LOCPATH} : | ||
| 1687 | |||
| 1688 | @example | ||
| 1689 | $ guix package -i glibc-locales | ||
| 1690 | $ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale | ||
| 1691 | @end example | ||
| 1692 | |||
| 1693 | Remarquez que le paquet @code{glibc-locales} contient les données pour tous | ||
| 1694 | les environnement linguistiques supportés par la GNU@tie{}libc et pèse | ||
| 1695 | environ 110@tie{}Mo. Autrement, les @code{glibc-utf8-locales} est plus | ||
| 1696 | petit mais limité à quelques environnements UTF-8. | ||
| 1697 | |||
| 1698 | La variable @code{GUIX_LOCPATH} joue un rôle similaire à @code{LOCPATH} | ||
| 1699 | (@pxref{Locale Names, @code{LOCPATH},, libc, The GNU C Library Reference | ||
| 1700 | Manual}). Il y a deux différences importantes cependant : | ||
| 1701 | |||
| 1702 | @enumerate | ||
| 1703 | @item | ||
| 1704 | @code{GUIX_LOCPATH} n'est compris que par la libc dans Guix et pas par la | ||
| 1705 | libc fournie par les distros externes. Ainsi, utiliser @code{GUIX_LOCPATH} | ||
| 1706 | vous permet de vous assurer que les programmes de la distro externe ne | ||
| 1707 | chargeront pas de données linguistiques incompatibles. | ||
| 1708 | |||
| 1709 | @item | ||
| 1710 | La libc ajoute un suffixe @code{/X.Y} à chaque entrée de | ||
| 1711 | @code{GUIX_LOCPATH}, où @code{X.Y} est la version de la libc — p.@: ex.@: | ||
| 1712 | @code{2.22}. Cela signifie que, si votre profile Guix contient un mélange | ||
| 1713 | de programmes liés avec des versions différentes de la libc, chaque version | ||
| 1714 | de la libc essaiera de charger les environnements linguistiques dans le bon | ||
| 1715 | format. | ||
| 1716 | @end enumerate | ||
| 1717 | |||
| 1718 | Cela est important car le format des données linguistiques utilisés par | ||
| 1719 | différentes version de la libc peuvent être incompatibles. | ||
| 1720 | |||
| 1721 | @subsection Name Service Switch | ||
| 1722 | |||
| 1723 | @cindex name service switch, glibc | ||
| 1724 | @cindex NSS (name service switch), glibc | ||
| 1725 | @cindex nscd (name service caching daemon) | ||
| 1726 | @cindex name service caching daemon (nscd) | ||
| 1727 | Lorsque vous utilisez Guix sur une distro externe, nous @emph{recommandons | ||
| 1728 | fortement} que ce système fasse tourner le @dfn{démon de cache de service de | ||
| 1729 | noms} de la bibliothèque C de GNU, @command{nscd}, qui devrait écouter sur | ||
| 1730 | le socket @file{/var/run/nscd/socket}. Sans cela, les applications | ||
| 1731 | installées avec Guix peuvent échouer à résoudre des noms d'hôtes ou | ||
| 1732 | d'utilisateurs, ou même planter. Les paragraphes suivants expliquent | ||
| 1733 | pourquoi. | ||
| 1734 | |||
| 1735 | @cindex @file{nsswitch.conf} | ||
| 1736 | La bibliothèque C de GNU implémente un @dfn{name service switch} (NSS), qui | ||
| 1737 | est un mécanisme d'extension pour les « résolutions de noms » en général : | ||
| 1738 | résolution de nom d'hôte, de compte utilisateur et plus (@pxref{Name Service Switch,,, libc, The GNU C Library Reference Manual}). | ||
| 1739 | |||
| 1740 | @cindex Network information service (NIS) | ||
| 1741 | @cindex NIS (Network information service) | ||
| 1742 | Comme il est extensible, NSS supporte des @dfn{greffons} qui fournissent une | ||
| 1743 | nouvelle implémentation de résolution de nom : par exemple le greffon | ||
| 1744 | @code{nss-mdns} permet la résolution de noms d'hôtes en @code{.local}, le | ||
| 1745 | greffon @code{nis} permet la résolution de comptes utilisateurs avec le | ||
| 1746 | Network Information Service (NIS), etc. Ces « services de recherches » | ||
| 1747 | supplémentaires sont configurés au niveau du système dans | ||
| 1748 | @file{/etc/nsswitch.conf}, et tous les programmes qui tournent sur ce | ||
| 1749 | système honorent ces paramètres (@pxref{NSS Configuration File,,, libc, The | ||
| 1750 | GNU C Reference Manual}) | ||
| 1751 | |||
| 1752 | Lorsqu'ils essayent d'effectuer une résolution de nom — par exemple en | ||
| 1753 | appelant la fonction @code{getaddrinfo} en C — les applications essayent | ||
| 1754 | d'abord de se connecter au nscd ; en cas de réussite, nscd effectue la | ||
| 1755 | résolution de nom pour eux. Si le nscd ne tourne pas, alors ils effectuent | ||
| 1756 | la résolution eux-mêmes, en changeant les service de résolution dans leur | ||
| 1757 | propre espace d'adressage et en le lançant. Ce services de résolution de | ||
| 1758 | noms — les fichiers @file{libnns_*.so} — sont @code{dlopen}és mais ils | ||
| 1759 | peuvent provenir de la bibliothèque C du système, plutôt que de la | ||
| 1760 | bibliothèque C à laquelle l'application est liée (la bibliothèque C de | ||
| 1761 | Guix). | ||
| 1762 | |||
| 1763 | Et c'est là que se trouve le problème : si votre application est liée à la | ||
| 1764 | bibliothèque C de Guix (disons, glibc-2.24) et essaye de charger les | ||
| 1765 | greffons NSS d'une autre bibliothèque C (disons, @code{libnss_mdns.so} pour | ||
| 1766 | glibc-2.22), il est très probable qu'elle plante ou que sa résolution de nom | ||
| 1767 | échoue de manière inattendue. | ||
| 1768 | |||
| 1769 | Lancer @command{nscd} sur le système, entre autres avantages, élimine ce | ||
| 1770 | problème d'incompatibilité binaire car ces fichiers @code{libnss_*.so} sont | ||
| 1771 | chargés par le processus @command{nscd}, pas par l'application elle-même. | ||
| 1772 | |||
| 1773 | @subsection Polices X11 | ||
| 1774 | |||
| 1775 | @cindex polices | ||
| 1776 | La majorité des applications graphiques utilisent fontconfig pour trouver et | ||
| 1777 | charger les police et effectuer le rendu côté client X11. Le paquet | ||
| 1778 | @code{fontconfig} dans Guix cherche les polices dans | ||
| 1779 | @file{$HOME/.guix-profile} par défaut. Ainsi, pour permettre aux | ||
| 1780 | applications graphiques installées avec Guix d'afficher des polices, vous | ||
| 1781 | devez aussi installer des polices avec Guix. Les paquets de polices | ||
| 1782 | essentiels sont @code{gs-fonts}, @code{font-dejavu} et | ||
| 1783 | @code{font-gnu-freefont-ttf}. | ||
| 1784 | |||
| 1785 | Pour afficher des textes écrits en chinois, en japonais ou en coréen dans | ||
| 1786 | les applications graphiques, installez @code{font-adobe-source-han-sans} ou | ||
| 1787 | @code{font-wqy-zenhei}. Le premier a plusieurs sorties, une par famille de | ||
| 1788 | langue (@pxref{Des paquets avec plusieurs résultats}). Par exemple, la commande | ||
| 1789 | suivante installe les polices pour le chinois : | ||
| 1790 | |||
| 1791 | @example | ||
| 1792 | guix package -i font-adobe-source-han-sans:cn | ||
| 1793 | @end example | ||
| 1794 | |||
| 1795 | @cindex @code{xterm} | ||
| 1796 | Les vieux programmes comme @command{xterm} n'utilisent pas fontconfig et | ||
| 1797 | s'appuient sur le rendu du côté du serveur. Ces programmes ont besoin de | ||
| 1798 | spécifier le nom complet de la police en utilisant XLFD (X Logical Font | ||
| 1799 | Description), comme ceci : | ||
| 1800 | |||
| 1801 | @example | ||
| 1802 | -*-dejavu sans-medium-r-normal-*-*-100-*-*-*-*-*-1 | ||
| 1803 | @end example | ||
| 1804 | |||
| 1805 | Pour pouvoir utiliser ces noms complets avec les polices TrueType installées | ||
| 1806 | dans votre profil Guix, vous devez étendre le chemin des polices du serveur | ||
| 1807 | X : | ||
| 1808 | |||
| 1809 | @c Note: 'xset' does not accept symlinks so the trick below arranges to | ||
| 1810 | @c get at the real directory. See <https://bugs.gnu.org/30655>. | ||
| 1811 | @example | ||
| 1812 | xset +fp $(dirname $(readlink -f ~/.guix-profile/share/fonts/truetype/fonts.dir)) | ||
| 1813 | @end example | ||
| 1814 | |||
| 1815 | @cindex @code{xlsfonts} | ||
| 1816 | Ensuite, vous pouvez lancer @code{xlsfonts} (du paquet @code{xlsfonts}) pour | ||
| 1817 | vous assurer que vos polices TrueType y sont listées. | ||
| 1818 | |||
| 1819 | @cindex @code{fc-cache} | ||
| 1820 | @cindex cache de polices | ||
| 1821 | Après l'installation des polices vous devrez peut-être rafraîchir le cache | ||
| 1822 | des polices pour pouvoir les utiliser dans les applications. Ça s'applique | ||
| 1823 | aussi lorsque les applications installées avec Guix n'ont pas l'air de | ||
| 1824 | trouver les polices. Pour forcer la reconstruction du cache de polices | ||
| 1825 | lancez @code{fc-cache -f}. La commande @code{fc-cache} est fournie par le | ||
| 1826 | paquet @code{fontconfig}. | ||
| 1827 | |||
| 1828 | @subsection Certificats X.509 | ||
| 1829 | |||
| 1830 | @cindex @code{nss-certs} | ||
| 1831 | Le paquet @code{nss-certs} fournit les certificats X.509 qui permettent aux | ||
| 1832 | programmes d'authentifier les serveurs web par HTTPS@. | ||
| 1833 | |||
| 1834 | Lorsque vous utilisez Guix sur une distribution externe, vous pouvez | ||
| 1835 | installer ce paquet et définir les variables d'environnement adéquates pour | ||
| 1836 | que les paquets sachent où trouver les certificats. @xref{Certificats X.509}, pour des informations détaillées. | ||
| 1837 | |||
| 1838 | @subsection Paquets emacs | ||
| 1839 | |||
| 1840 | @cindex @code{emacs} | ||
| 1841 | Lorsque vous installez les paquets Emacs avec Guix, les fichiers elisp | ||
| 1842 | peuvent être placés soit dans | ||
| 1843 | @file{$HOME/.guix-profile/share/emacs/site-lisp/} soit dans des | ||
| 1844 | sous-répertoires de | ||
| 1845 | @file{$HOME/.guix-profile/share/emacs/site-lisp/guix.d/}. Ce dernier existe | ||
| 1846 | car il existe potentiellement des milliers de paquets Emacs et stocker leurs | ||
| 1847 | fichiers dans un seul répertoire peut ne pas être fiable (à cause de | ||
| 1848 | conflits de noms). Donc on pense qu'utiliser un répertoire séparé est une | ||
| 1849 | bonne idée. C'est très similaire à la manière dont le système de paquet | ||
| 1850 | d'Emacs organise la structure de fichiers (@pxref{Package Files,,, emacs, | ||
| 1851 | The GNU Emacs Manual}). | ||
| 1852 | |||
| 1853 | Par défaut, Emacs (installé avec Guix) « sait » où ces paquets ce trouvent, | ||
| 1854 | donc vous n'avez pas besoin de le configurer. Si, pour quelque raison que | ||
| 1855 | ce soit, vous souhaitez éviter de charger automatiquement les paquets Emacs | ||
| 1856 | installés avec Guix, vous pouvez le faire en lançant Emacs avec l'option | ||
| 1857 | @code{--no-site-file} (@pxref{Init File,,, emacs, The GNU Emacs Manual}). | ||
| 1858 | |||
| 1859 | @subsection La chaîne d'outils GCC | ||
| 1860 | |||
| 1861 | @cindex GCC | ||
| 1862 | @cindex ld-wrapper | ||
| 1863 | |||
| 1864 | Guix offre des paquets de compilateurs individuels comme @code{gcc} mais si | ||
| 1865 | vous avez besoin d'une chaîne de compilation complète pour compiler et lier | ||
| 1866 | du code source, vous avez en fait besoin du paquet @code{gcc-toolchain}. Ce | ||
| 1867 | paquet fournit une chaîne d'outils GCC pour le développement C/C++, dont GCC | ||
| 1868 | lui-même, la bibliothèque C de GNU (les en-têtes et les binaires, plus les | ||
| 1869 | symboles de débogage dans la sortie @code{debug}), Binutils et une enveloppe | ||
| 1870 | pour l'éditeur de liens. | ||
| 1871 | |||
| 1872 | Le rôle de l'enveloppe est d'inspecter les paramètres @code{-L} et @code{-l} | ||
| 1873 | passés à l'éditeur de liens, d'ajouter des arguments @code{-rpath} | ||
| 1874 | correspondants et d'invoquer le véritable éditeur de liens avec ce nouvel | ||
| 1875 | ensemble d'arguments. Vous pouvez dire à l'enveloppe de refuser de lier les | ||
| 1876 | programmes à des bibliothèques en dehors du dépôt en paramétrant la variable | ||
| 1877 | d'environnement @code{GUIX_LD_WRAPPER_ALLOW_IMPURITIES} sur @code{no}. | ||
| 1878 | |||
| 1879 | @c TODO What else? | ||
| 1880 | |||
| 1881 | @c ********************************************************************* | ||
| 1882 | @node Installation du système | ||
| 1883 | @chapter Installation du système | ||
| 1884 | |||
| 1885 | @cindex installer Guix System | ||
| 1886 | @cindex Guix System, installation | ||
| 1887 | Cette section explique comment installer Guix System sur une machine. Guix, | ||
| 1888 | en tant que gestionnaire de paquets, peut aussi être installé sur un système | ||
| 1889 | GNU/Linux déjà installé, @pxref{Installation}. | ||
| 1890 | |||
| 1891 | @ifinfo | ||
| 1892 | @quotation Remarque | ||
| 1893 | @c This paragraph is for people reading this from tty2 of the | ||
| 1894 | @c installation image. | ||
| 1895 | Vous lisez cette documentation avec un lecteur Info. Pour des détails sur | ||
| 1896 | son utilisation, appuyez sur la touche @key{ENTRÉE} (« Entrée » ou « à la | ||
| 1897 | ligne ») sur le lien suivant : @pxref{Top, Info reader,, info-stnd, | ||
| 1898 | Stand-alone GNU Info}. Appuyez ensuite sur @kbd{l} pour revenir ici. | ||
| 1899 | |||
| 1900 | Autrement, lancez @command{info info} dans un autre tty pour garder ce | ||
| 1901 | manuel ouvert. | ||
| 1902 | @end quotation | ||
| 1903 | @end ifinfo | ||
| 1904 | |||
| 1905 | @menu | ||
| 1906 | * Limitations:: Ce à quoi vous attendre. | ||
| 1907 | * Considérations matérielles:: Matériel supporté. | ||
| 1908 | * Installation depuis une clef USB ou un DVD:: Préparer le média | ||
| 1909 | d'installation. | ||
| 1910 | * Préparer l'installation:: Réseau, partitionnement, etc. | ||
| 1911 | * Installation graphique guidée:: Installation graphique facile. | ||
| 1912 | * Installation manuelle:: Installation manuelle pour les sorciers. | ||
| 1913 | * Après l'installation du système:: Une fois que l'installation a | ||
| 1914 | réussi. | ||
| 1915 | * Installer Guix dans une VM:: Jouer avec le système Guix. | ||
| 1916 | * Construire l'image d'installation:: D'où vient tout cela. | ||
| 1917 | @end menu | ||
| 1918 | |||
| 1919 | @node Limitations | ||
| 1920 | @section Limitations | ||
| 1921 | |||
| 1922 | We consider Guix System to be ready for a wide range of ``desktop'' and | ||
| 1923 | server use cases. The reliability guarantees it provides---transactional | ||
| 1924 | upgrades and rollbacks, reproducibility---make it a solid foundation. | ||
| 1925 | |||
| 1926 | Nevertheless, before you proceed with the installation, be aware of the | ||
| 1927 | following noteworthy limitations applicable to version @value{VERSION}: | ||
| 1928 | |||
| 1929 | @itemize | ||
| 1930 | @item | ||
| 1931 | LVM (gestionnaire de volumes logiques) n'est pas supporté. | ||
| 1932 | |||
| 1933 | @item | ||
| 1934 | De plus en plus de services systèmes sont fournis (@pxref{Services}) mais | ||
| 1935 | certains manquent toujours cruellement. | ||
| 1936 | |||
| 1937 | @item | ||
| 1938 | GNOME, Xfce, LXDE, and Enlightenment are available (@pxref{Services de bureaux}), as well as a number of X11 window managers. However, KDE is | ||
| 1939 | currently missing. | ||
| 1940 | @end itemize | ||
| 1941 | |||
| 1942 | More than a disclaimer, this is an invitation to report issues (and success | ||
| 1943 | stories!), and to join us in improving it. @xref{Contribuer}, for more | ||
| 1944 | info. | ||
| 1945 | |||
| 1946 | |||
| 1947 | @node Considérations matérielles | ||
| 1948 | @section Considérations matérielles | ||
| 1949 | |||
| 1950 | @cindex prise en charge du matériel sur Guix System | ||
| 1951 | GNU@tie{}Guix se concentre sur le respect des libertés de ses utilisateurs. | ||
| 1952 | Il est construit autour du noyau Linux-libre, ce qui signifie que seuls les | ||
| 1953 | matériels pour lesquels des pilotes logiciels et des microgiciels libres | ||
| 1954 | sont disponibles sont pris en charge. De nos jours, une grande gamme de | ||
| 1955 | matériel qu'on peut acheter est prise en charge par GNU/Linux-libre — des | ||
| 1956 | claviers aux cartes graphiques en passant par les scanners et les | ||
| 1957 | contrôleurs Ethernet. Malheureusement, il reste des produit dont les | ||
| 1958 | fabricants refusent de laisser le contrôle aux utilisateurs sur leur propre | ||
| 1959 | utilisation de l'ordinateur, et ces matériels ne sont pas pris en charge par | ||
| 1960 | Guix System. | ||
| 1961 | |||
| 1962 | @cindex WiFi, support matériel | ||
| 1963 | One of the main areas where free drivers or firmware are lacking is WiFi | ||
| 1964 | devices. WiFi devices known to work include those using Atheros chips | ||
| 1965 | (AR9271 and AR7010), which corresponds to the @code{ath9k} Linux-libre | ||
| 1966 | driver, and those using Broadcom/AirForce chips (BCM43xx with Wireless-Core | ||
| 1967 | Revision 5), which corresponds to the @code{b43-open} Linux-libre driver. | ||
| 1968 | Free firmware exists for both and is available out-of-the-box on Guix | ||
| 1969 | System, as part of @code{%base-firmware} (@pxref{Référence de système d'exploitation, | ||
| 1970 | @code{firmware}}). | ||
| 1971 | |||
| 1972 | @cindex RYF, Respects Your Freedom | ||
| 1973 | La @uref{https://www.fsf.org/, Free Software Foundation} a un programme de | ||
| 1974 | certification nommé @uref{https://www.fsf.org/ryf, @dfn{Respects Your | ||
| 1975 | Freedom}} (RYF), pour les produits matériels qui respectent votre liberté et | ||
| 1976 | votre vie privée en s'assurant que vous avez le contrôle sur l'appareil. | ||
| 1977 | Nous vous encourageons à vérifier la liste des appareils certifiés par RYF. | ||
| 1978 | |||
| 1979 | Une autre ressource utile est le site web @uref{https://www.h-node.org/, | ||
| 1980 | H-Node}. Il contient un catalogue d'appareils avec des informations sur | ||
| 1981 | leur support dans GNU/Linux. | ||
| 1982 | |||
| 1983 | |||
| 1984 | @node Installation depuis une clef USB ou un DVD | ||
| 1985 | @section Installation depuis une clef USB ou un DVD | ||
| 1986 | |||
| 1987 | Une image d'installation ISO-9660 téléchargeable depuis | ||
| 1988 | @indicateurl{https://alpha.gnu.org/gnu/guix/guix-system-install-@value{VERSION}.@var{système}.iso.xz} | ||
| 1989 | peut être écrite sur une clef USB ou gravée sur un DVD, où @var{système} est | ||
| 1990 | l'une de ces valeurs : | ||
| 1991 | |||
| 1992 | @table @code | ||
| 1993 | @item x86_64-linux | ||
| 1994 | pour un système GNU/Linux sur un CPU compatible Intel/AMD 64-bits ; | ||
| 1995 | |||
| 1996 | @item i686-linux | ||
| 1997 | pour un système GNU/Linux sur un CPU compatible Intel 32-bits ; | ||
| 1998 | @end table | ||
| 1999 | |||
| 2000 | @c start duplication of authentication part from ``Binary Installation'' | ||
| 2001 | Assurez-vous de télécharger les fichiers @file{.sig} associés et de vérifier | ||
| 2002 | l'authenticité de l'image avec, de cette manière : | ||
| 2003 | |||
| 2004 | @example | ||
| 2005 | $ wget https://alpha.gnu.org/gnu/guix/guix-system-install-@value{VERSION}.@var{system}.iso.xz.sig | ||
| 2006 | $ gpg --verify guix-system-install-@value{VERSION}.@var{system}.iso.xz.sig | ||
| 2007 | @end example | ||
| 2008 | |||
| 2009 | Si cette commande échoue parce que vous n'avez pas la clef publique requise, | ||
| 2010 | lancez cette commande pour l'importer : | ||
| 2011 | |||
| 2012 | @example | ||
| 2013 | $ gpg --keyserver @value{KEY-SERVER} \ | ||
| 2014 | --recv-keys @value{OPENPGP-SIGNING-KEY-ID} | ||
| 2015 | @end example | ||
| 2016 | |||
| 2017 | @noindent | ||
| 2018 | @c end duplication | ||
| 2019 | et relancez la commande @code{gpg --verify}. | ||
| 2020 | |||
| 2021 | Cette image contient les outils nécessaires à l'installation. Elle est | ||
| 2022 | faite pour être copiée @emph{telle quelle} sur une clef USB assez grosse ou | ||
| 2023 | un DVD. | ||
| 2024 | |||
| 2025 | @unnumberedsubsec Copie sur une clef USB | ||
| 2026 | |||
| 2027 | Pour copier l'image sur une clef USB, suivez ces étapes : | ||
| 2028 | |||
| 2029 | @enumerate | ||
| 2030 | @item | ||
| 2031 | Décompressez l'image avec la commande @command{xz} : | ||
| 2032 | |||
| 2033 | @example | ||
| 2034 | xz -d guix-system-install-@value{VERSION}.@var{système}.iso.xz | ||
| 2035 | @end example | ||
| 2036 | |||
| 2037 | @item | ||
| 2038 | Insérez la clef USB de 1@tie{}Gio ou plus dans votre machine et déterminez | ||
| 2039 | son nom d'appareil. En supposant que la clef usb est connue sous le nom de | ||
| 2040 | @file{/dev/sdX}, copiez l'image avec : | ||
| 2041 | |||
| 2042 | @example | ||
| 2043 | dd if=guix-system-install-@value{VERSION}.@var{système}.iso of=/dev/sdX | ||
| 2044 | sync | ||
| 2045 | @end example | ||
| 2046 | |||
| 2047 | Accéder à @file{/dev/sdX} requiert généralement les privilèges | ||
| 2048 | super-utilisateur. | ||
| 2049 | @end enumerate | ||
| 2050 | |||
| 2051 | @unnumberedsubsec Graver sur un DVD | ||
| 2052 | |||
| 2053 | Pour copier l'image sur un DVD, suivez ces étapes : | ||
| 2054 | |||
| 2055 | @enumerate | ||
| 2056 | @item | ||
| 2057 | Décompressez l'image avec la commande @command{xz} : | ||
| 2058 | |||
| 2059 | @example | ||
| 2060 | xz -d guix-system-install-@value{VERSION}.@var{système}.iso.xz | ||
| 2061 | @end example | ||
| 2062 | |||
| 2063 | @item | ||
| 2064 | Insérez un DVD vierge dans votre machine et déterminez son nom d'appareil. | ||
| 2065 | En supposant que le DVD soit connu sont le nom de @file{/dev/srX}, copiez | ||
| 2066 | l'image avec : | ||
| 2067 | |||
| 2068 | @example | ||
| 2069 | growisofs -dvd-compat -Z /dev/srX=guix-system-install-@value{VERSION}.@var{système}.iso | ||
| 2070 | @end example | ||
| 2071 | |||
| 2072 | Accéder à @file{/dev/srX} requiert généralement les privilèges | ||
| 2073 | super-utilisateur. | ||
| 2074 | @end enumerate | ||
| 2075 | |||
| 2076 | @unnumberedsubsec Démarrage | ||
| 2077 | |||
| 2078 | Une fois que c'est fait, vous devriez pouvoir redémarrer le système et | ||
| 2079 | démarrer depuis la clef USB ou le DVD. Pour cela, vous devrez généralement | ||
| 2080 | entrer dans le menu de démarrage BIOS ou UEFI, où vous pourrez choisir de | ||
| 2081 | démarrer sur la clef USB. | ||
| 2082 | |||
| 2083 | @xref{Installer Guix dans une VM}, si, à la place, vous souhaitez installer | ||
| 2084 | Guix System dans une machine virtuelle (VM). | ||
| 2085 | |||
| 2086 | |||
| 2087 | @node Préparer l'installation | ||
| 2088 | @section Préparer l'installation | ||
| 2089 | |||
| 2090 | Une fois que vous avez démarré, vous pouvez utiliser l'installateur | ||
| 2091 | graphique, qui rend facile la prise en main (@pxref{Installation graphique guidée}). Autrement, si vous êtes déjà familier avec GNU/Linux et que | ||
| 2092 | vous voulez plus de contrôle que ce que l'installateur graphique ne fournit, | ||
| 2093 | vous pouvez choisir le processus d'installation « manuel » (@pxref{Installation manuelle}). | ||
| 2094 | |||
| 2095 | L'installateur graphique est disponible sur le TTY1. Vous pouvez obtenir | ||
| 2096 | des shells root sur les TTY 3 à 6 en tapant @kbd{ctrl-alt-f3}, | ||
| 2097 | @kbd{ctrl-alt-f4} etc. Le TTY2 affiche cette documentation que vous pouvez | ||
| 2098 | atteindre avec @kbd{ctrl-alt-f2}. On peut naviguer dans la documentation | ||
| 2099 | avec les commandes du lecteur Info (@pxref{Top,,, info-stnd, Stand-alone GNU | ||
| 2100 | Info}). Le démon de souris GPM tourne sur le système d'installation, ce qui | ||
| 2101 | vous permet de sélectionner du texte avec le bouton gauche de la souris et | ||
| 2102 | de le coller en appuyant sur la molette. | ||
| 2103 | |||
| 2104 | @quotation Remarque | ||
| 2105 | L'installation nécessite un accès au réseau pour que les dépendances | ||
| 2106 | manquantes de votre configuration système puissent être téléchargées. Voyez | ||
| 2107 | la section « réseau » plus bas. | ||
| 2108 | @end quotation | ||
| 2109 | |||
| 2110 | @node Installation graphique guidée | ||
| 2111 | @section Installation graphique guidée | ||
| 2112 | |||
| 2113 | L'installateur graphique est une interface utilisateur en mode texte. Il | ||
| 2114 | vous guidera, avec des boîtes de dialogue, le long des étapes requises pour | ||
| 2115 | installer GNU@tie{}Guix System. | ||
| 2116 | |||
| 2117 | La première boîte de dialogue vous permet de paramétrer le système comme | ||
| 2118 | vous le souhaitez pendant l'installation : vous pouvez choisir la langue, la | ||
| 2119 | disposition du clavier et paramétrer le réseau, qui sera utilisé pendant | ||
| 2120 | l'installation. L'image ci-dessous montre le dialogue pour le réseau. | ||
| 2121 | |||
| 2122 | @image{images/installer-network,5in,, paramétrage du réseau avec | ||
| 2123 | l'installateur graphique} | ||
| 2124 | |||
| 2125 | Les étapes suivantes vous permettent de partitionner votre disque dur, comme | ||
| 2126 | le montre l'image ci-dessous, de choisir si vous voulez ou non utiliser des | ||
| 2127 | systèmes de fichiers chiffrés, de saisir le nom d'hôte et le mot de passe | ||
| 2128 | root et de créer un compte supplémentaire, entre autres choses. | ||
| 2129 | |||
| 2130 | @image{images/installer-partitions,5in,, partitionnement du disque avec | ||
| 2131 | l'installateur graphique} | ||
| 2132 | |||
| 2133 | Remarquez que, à tout moment, l'installateur vous permet de sortir de | ||
| 2134 | l'étape d'installation actuelle et de recommencer une étape précédente, | ||
| 2135 | comme le montre l'image ci-dessous. | ||
| 2136 | |||
| 2137 | @image{images/installer-resume,5in,, reprise du processus d'installation} | ||
| 2138 | |||
| 2139 | Une fois que vous avez fini, l'installateur produit une configuration de | ||
| 2140 | système d'exploitation et vous la montre (@pxref{Utiliser le système de configuration}). À ce moment, vous pouvez appuyer sur « OK » et l'installation | ||
| 2141 | continuera. Lorsqu'elle aura réussi, vous pourrez redémarrer sur le nouveau | ||
| 2142 | système et vous amuser. @xref{Après l'installation du système}, pour la suite des | ||
| 2143 | festivités ! | ||
| 2144 | |||
| 2145 | |||
| 2146 | @node Installation manuelle | ||
| 2147 | @section Installation manuelle | ||
| 2148 | |||
| 2149 | Cette section décrit comme vous pourriez installe « manuellement » | ||
| 2150 | GNU@tie{}Guix System sur votre machine. Cette option nécessite que vous | ||
| 2151 | soyez familier avec GNU/Linux, le shell et avec les outils d'administration | ||
| 2152 | usuels. Si vous pensez que ce n'est pas pour vous, pensez à utiliser | ||
| 2153 | l'installateur graphique (@pxref{Installation graphique guidée}). | ||
| 2154 | |||
| 2155 | Le système d'installation fournit des shells root sur les TTY 3 à 6 ; | ||
| 2156 | appuyez sur @kbd{ctrl-alt-f3}, @kbd{ctrl-alt-f4} etc pour y accéder. Il | ||
| 2157 | inclus plusieurs outils usuels pour requis pour cette tâche. Mais c'est | ||
| 2158 | aussi un système Guix complet, ce qui signifie que vous pouvez installer des | ||
| 2159 | paquets supplémentaires si vous en avez besoin, avec @command{guix package} | ||
| 2160 | (@pxref{Invoquer guix package}). | ||
| 2161 | |||
| 2162 | @menu | ||
| 2163 | * Disposition du clavier réseau et partitionnement:: Paramètres initiaux. | ||
| 2164 | * Effectuer l'installation:: Installer. | ||
| 2165 | @end menu | ||
| 2166 | |||
| 2167 | @node Disposition du clavier réseau et partitionnement | ||
| 2168 | @subsection Disposition du clavier réseau et partitionnement | ||
| 2169 | |||
| 2170 | Avant que vous ne puissiez installer le système, vous voudrez sans doute | ||
| 2171 | ajuster la disposition du clavier, paramétrer le réseau et partitionner le | ||
| 2172 | disque dur cible. Cette section vous guidera à travers tout cela. | ||
| 2173 | |||
| 2174 | @subsubsection Disposition du clavier | ||
| 2175 | |||
| 2176 | @cindex disposition du clavier | ||
| 2177 | L'image d'installation utilise la disposition clavier qwerty (US). Si vous | ||
| 2178 | voulez la changer, vous pouvez utiliser la commande @command{loadkeys}. Par | ||
| 2179 | exemple, la commande suivante sélectionne la disposition Dvorak : | ||
| 2180 | |||
| 2181 | @example | ||
| 2182 | loadkeys dvorak | ||
| 2183 | @end example | ||
| 2184 | |||
| 2185 | Consultez les fichiers dans @file{/run/current-system/profile/share/keymaps} | ||
| 2186 | pour trouver une liste des dispositions disponibles. Lancez @command{man | ||
| 2187 | loadkey} pour plus d'informations. | ||
| 2188 | |||
| 2189 | @subsubsection Réseau | ||
| 2190 | |||
| 2191 | Lancez la commande suivante pour voir comment vos interfaces réseau sont | ||
| 2192 | appelées : | ||
| 2193 | |||
| 2194 | @example | ||
| 2195 | ifconfig -a | ||
| 2196 | @end example | ||
| 2197 | |||
| 2198 | @noindent | ||
| 2199 | @dots{} ou, avec la commande spécifique à GNU/Linux @command{ip} : | ||
| 2200 | |||
| 2201 | @example | ||
| 2202 | ip a | ||
| 2203 | @end example | ||
| 2204 | |||
| 2205 | @c http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c#n20 | ||
| 2206 | Les interfaces filaires ont un nom qui commence par @samp{e} ; par exemple, | ||
| 2207 | l'interface qui correspond au premier contrôleur Ethernet sur la carte mère | ||
| 2208 | est appelé @samp{eno1}. Les interfaces sans-fil ont un nom qui commence par | ||
| 2209 | @samp{w}, comme @samp{w1p2s0}. | ||
| 2210 | |||
| 2211 | @table @asis | ||
| 2212 | @item Connexion filaire | ||
| 2213 | Pour configure une connexion filaire, lancez la commande suivante, en | ||
| 2214 | remplaçant @var{interface} par le nom de l'interface filaire que vous voulez | ||
| 2215 | utiliser. | ||
| 2216 | |||
| 2217 | @example | ||
| 2218 | ifconfig @var{interface} up | ||
| 2219 | @end example | ||
| 2220 | |||
| 2221 | @item Connexion sans-fil | ||
| 2222 | @cindex sans-fil | ||
| 2223 | @cindex WiFi | ||
| 2224 | Pour configurer le réseau sans-fil, vous pouvez créer un fichier de | ||
| 2225 | configuration pour l'outil de configuration @command{wpa_supplicant} (son | ||
| 2226 | emplacement importe peu) avec l'un des éditeurs de texte disponibles comme | ||
| 2227 | @command{nano} : | ||
| 2228 | |||
| 2229 | @example | ||
| 2230 | nano wpa_supplicant.conf | ||
| 2231 | @end example | ||
| 2232 | |||
| 2233 | Par exemple, la déclaration qui suit peut aller dans ce fichier et | ||
| 2234 | fonctionnera pour plusieurs réseaux sans-fil, si vous donnez le vrai SSID et | ||
| 2235 | la phrase de passe pour le réseau auquel vous vous connectez : | ||
| 2236 | |||
| 2237 | @example | ||
| 2238 | network=@{ | ||
| 2239 | ssid="@var{mon-ssid}" | ||
| 2240 | key_mgmt=WPA-PSK | ||
| 2241 | psk="la phrase de passe secrète du réseau" | ||
| 2242 | @} | ||
| 2243 | @end example | ||
| 2244 | |||
| 2245 | Démarrez le service sans-fil et lancez-le en tache de fond avec la commande | ||
| 2246 | suivante (en remplaçant @var{interface} par le nom de l'interface réseau que | ||
| 2247 | vous voulez utiliser) : | ||
| 2248 | |||
| 2249 | @example | ||
| 2250 | wpa_supplicant -c wpa_supplicant.conf -i @var{interface} -B | ||
| 2251 | @end example | ||
| 2252 | |||
| 2253 | Lancez @command{man wpa_supplicant} pour plus d'informations. | ||
| 2254 | @end table | ||
| 2255 | |||
| 2256 | @cindex DHCP | ||
| 2257 | À partir de ce moment, vous avez besoin d'une adresse IP. Sur les réseaux | ||
| 2258 | où les IP sont automatiquement attribuée par DHCP, vous pouvez lancer : | ||
| 2259 | |||
| 2260 | @example | ||
| 2261 | dhclient -v @var{interface} | ||
| 2262 | @end example | ||
| 2263 | |||
| 2264 | Essayez de pinger un serveur pour voir si le réseau fonctionne : | ||
| 2265 | |||
| 2266 | @example | ||
| 2267 | ping -c 3 gnu.org | ||
| 2268 | @end example | ||
| 2269 | |||
| 2270 | Mettre en place un accès réseau est presque toujours une nécessité parce que | ||
| 2271 | l'image ne contient pas tous les logiciels et les outils dont vous pourriez | ||
| 2272 | avoir besoin. | ||
| 2273 | |||
| 2274 | @cindex installer par SSH | ||
| 2275 | Si vous le souhaitez, vous pouvez continuer l'installation à distance en | ||
| 2276 | démarrant un serveur SSH : | ||
| 2277 | |||
| 2278 | @example | ||
| 2279 | herd start ssh-daemon | ||
| 2280 | @end example | ||
| 2281 | |||
| 2282 | Assurez-vous soit de définir un mot de passe avec @command{passwd}, soit de | ||
| 2283 | configurer l'authentification par clef OpenSSH avant de vous connecter. | ||
| 2284 | |||
| 2285 | @subsubsection Partitionnement | ||
| 2286 | |||
| 2287 | À moins que vous ne l'ayez déjà fait, l'étape suivante consiste à | ||
| 2288 | partitionner le disque puis à formater les partitions cibles. | ||
| 2289 | |||
| 2290 | L'image d'installation inclus plusieurs outils de partitionnement, dont | ||
| 2291 | Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), | ||
| 2292 | @command{fdisk}, et @command{cfdisk}. Lancez-en un et paramétrez votre | ||
| 2293 | disque avec le partitionnement qui vous convient : | ||
| 2294 | |||
| 2295 | @example | ||
| 2296 | cfdisk | ||
| 2297 | @end example | ||
| 2298 | |||
| 2299 | Si votre disque utilise le format des tables de partitions GUID (GPT) et que | ||
| 2300 | vous souhaitez installer un GRUB pour système BIOS (c'est le cas par | ||
| 2301 | défaut), assurez-vous de créer qu'une partition de démarrage BIOS soit bien | ||
| 2302 | disponible (@pxref{BIOS installation,,, grub, GNU GRUB manual}). | ||
| 2303 | |||
| 2304 | @cindex EFI, installation | ||
| 2305 | @cindex UEFI, installation | ||
| 2306 | @cindex ESP, partition système EFI | ||
| 2307 | Si vous souhaitez à la place utilise GRUB pour système EFI, vous devrez | ||
| 2308 | avoir une @dfn{partition système EFI} (ESP) en FAT32. Cette partition peut | ||
| 2309 | être montée dans @file{/boot/efi} par exemple et doit avoir le drapeau | ||
| 2310 | @code{esp}. P.@: ex.@: pour @command{parted} : | ||
| 2311 | |||
| 2312 | @example | ||
| 2313 | parted /dev/sda set 1 esp on | ||
| 2314 | @end example | ||
| 2315 | |||
| 2316 | @quotation Remarque | ||
| 2317 | @vindex grub-bootloader | ||
| 2318 | @vindex grub-efi-bootloader | ||
| 2319 | Vous n'êtes pas sûr de savoir si vous devez utiliser un GRUB EFI ou BIOS ? | ||
| 2320 | Si le répertoire @file{/sys/firmware/efi} existe sur l'image d'installation, | ||
| 2321 | vous devriez probablement effectuer une installation EFI, avec | ||
| 2322 | @code{grub-efi-bootloader}. Sinon, vous devriez utiliser le GRUB en BIOS, | ||
| 2323 | @code{grub-bootloader}. @xref{Configuration du chargeur d'amorçage} pour plus | ||
| 2324 | d'information sur le chargeur d'amorçage. | ||
| 2325 | @end quotation | ||
| 2326 | |||
| 2327 | Une fois que vous avez fini le partitionnement du disque dur cible, vous | ||
| 2328 | devez créer un système de fichier sur les partitions@footnote{Actuellement | ||
| 2329 | Guix System ne supporte que les systèmes de fichiers ext4 et btrfs. En | ||
| 2330 | particulier, le code qui lit les UUID des systèmes de fichiers et les | ||
| 2331 | étiquettes ne fonctionne que pour ces types de systèmes de fichiers.}. Pour | ||
| 2332 | l'ESP, si vous en avez une et en supposant que ce soit @file{/dev/sda1}, | ||
| 2333 | lancez : | ||
| 2334 | |||
| 2335 | @example | ||
| 2336 | mkfs.fat -F32 /dev/sda1 | ||
| 2337 | @end example | ||
| 2338 | |||
| 2339 | Préférez assigner une étiquette au système de fichier pour que vous puissiez | ||
| 2340 | vous y référer de manière fiable dans la déclaration @code{file-system} | ||
| 2341 | (@pxref{Systèmes de fichiers}). On le fait habituellement avec l'option @code{-L} | ||
| 2342 | de @command{mkfs.ext4} et des commandes liées. Donc, en supposant que la | ||
| 2343 | partition racine soit sur @file{/dev/sda2}, on peut créer un système de | ||
| 2344 | fichier avec pour étiquette @code{my-root} avec : | ||
| 2345 | |||
| 2346 | @example | ||
| 2347 | mkfs.ext4 -L my-root /dev/sda2 | ||
| 2348 | @end example | ||
| 2349 | |||
| 2350 | @cindex chiffrement du disque | ||
| 2351 | Si vous voulez plutôt chiffrer la partition racine, vous pouvez utiliser les | ||
| 2352 | utilitaires Cryptsetup et LUKS pour cela (voir @inlinefmtifelse{html, | ||
| 2353 | @uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}}, | ||
| 2354 | @code{man cryptsetup}} pour plus d'informations). En supposant que vous | ||
| 2355 | voulez stocker la partition racine sur @file{/dev/sda2}, la séquence de | ||
| 2356 | commandes suivante vous mènerait à ce résultat : | ||
| 2357 | |||
| 2358 | @example | ||
| 2359 | cryptsetup luksFormat /dev/sda2 | ||
| 2360 | cryptsetup open --type luks /dev/sda2 my-partition | ||
| 2361 | mkfs.ext4 -L my-root /dev/mapper/my-partition | ||
| 2362 | @end example | ||
| 2363 | |||
| 2364 | Une fois cela effectué, montez le système de fichier cible dans @file{/mnt} | ||
| 2365 | avec une commande comme (de nouveau, en supposant que @code{my-root} est | ||
| 2366 | l'étiquette du système de fichiers racine) : | ||
| 2367 | |||
| 2368 | @example | ||
| 2369 | mount LABEL=my-root /mnt | ||
| 2370 | @end example | ||
| 2371 | |||
| 2372 | Montez aussi tous les systèmes de fichiers que vous voudriez utiliser sur le | ||
| 2373 | système cible relativement à ce chemin. Si vous avez choisi d'avoir un | ||
| 2374 | @file{/boot/efi} comme point de montage EFI par exemple, montez-la sur | ||
| 2375 | @file{/mnt/boot/efi} maintenant pour qu'elle puisse être trouvée par | ||
| 2376 | @code{guix system init} ensuite. | ||
| 2377 | |||
| 2378 | Enfin, si vous souhaitez utiliser une ou plusieurs partitions de swap | ||
| 2379 | (@pxref{Memory Concepts, swap space,, libc, The GNU C Library Reference | ||
| 2380 | Manual}), assurez-vous de les initialiser avec @command{mkswap}. En | ||
| 2381 | supposant que vous avez une partition de swap sur @file{/dev/sda3}, vous | ||
| 2382 | pouvez lancer : | ||
| 2383 | |||
| 2384 | @example | ||
| 2385 | mkswap /dev/sda3 | ||
| 2386 | swapon /dev/sda3 | ||
| 2387 | @end example | ||
| 2388 | |||
| 2389 | Autrement, vous pouvez utiliser un fichier de swap. Par exemple, en | ||
| 2390 | supposant que dans le nouveau système vous voulez utiliser le fichier | ||
| 2391 | @file{/swapfile} comme fichier de swap, vous lanceriez@footnote{Cet exemple | ||
| 2392 | fonctionnera sur plusieurs types de systèmes de fichiers (p.@: ex.@: ext4). | ||
| 2393 | Cependant, pour les systèmes de fichiers qui utilisent la copie sur écriture | ||
| 2394 | (COW) comme btrfs, les étapes requises peuvent varier. Pour plus de | ||
| 2395 | détails, regardez les pages de manuel de @command{mkswap} et | ||
| 2396 | @command{swapon}.} : | ||
| 2397 | |||
| 2398 | @example | ||
| 2399 | # Cela représente 10 Gio d'espace d'échange. Ajustez « count » pour changer la taille. | ||
| 2400 | dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=10240 | ||
| 2401 | # Par sécurité, laissez le fichier en lecture et en écriture uniquement pour root. | ||
| 2402 | chmod 600 /mnt/swapfile | ||
| 2403 | mkswap /mnt/swapfile | ||
| 2404 | swapon /mnt/swapfile | ||
| 2405 | @end example | ||
| 2406 | |||
| 2407 | Remarquez que si vous avez chiffré la partition racine et créé un fichier | ||
| 2408 | d'échange dans son système de fichier comme décrit ci-dessus, alors le | ||
| 2409 | chiffrement protégera aussi le fichier d'échange, comme n'importe quel | ||
| 2410 | fichier de ce système de fichiers. | ||
| 2411 | |||
| 2412 | @node Effectuer l'installation | ||
| 2413 | @subsection Effectuer l'installation | ||
| 2414 | |||
| 2415 | Lorsque la partition cible est prête et que les autres partitions sont | ||
| 2416 | montées, on est prêt à commencer l'installation. Commencez par : | ||
| 2417 | |||
| 2418 | @example | ||
| 2419 | herd start cow-store /mnt | ||
| 2420 | @end example | ||
| 2421 | |||
| 2422 | Cela rend @file{/gnu/store} capable de faire de la copie sur écriture, de | ||
| 2423 | sorte que les paquets ajoutés pendant l'installation sont écrits sur le | ||
| 2424 | disque cible sur @file{/mnt} plutôt que gardés en mémoire. Cela est | ||
| 2425 | nécessaire parce que la première phase de la commande @command{guix system | ||
| 2426 | init} (voir plus bas) implique de télécharger ou de construire des éléments | ||
| 2427 | de @file{/gnu/store} qui est initialement un système de fichiers en mémoire. | ||
| 2428 | |||
| 2429 | Ensuite, vous devrez modifier un fichier et fournir la déclaration du | ||
| 2430 | système à installer. Pour cela, le système d'installation propose trois | ||
| 2431 | éditeurs de texte. Nous recommandons GNU nano (@pxref{Top,,, nano, GNU nano | ||
| 2432 | Manual}), qui supporte la coloration syntaxique la correspondance de | ||
| 2433 | parenthèses ; les autres éditeurs sont GNU Zile (un clone d'Emacs) et nvi | ||
| 2434 | (un clone de l'éditeur @command{vi} original de BSD). Nous recommandons | ||
| 2435 | vivement de stocker ce fichier sur le système de fichier racine cible, | ||
| 2436 | disons en tant que @file{/mnt/etc/config.scm}. Sinon, vous perdrez votre | ||
| 2437 | fichier de configuration une fois que vous aurez redémarré sur votre nouveau | ||
| 2438 | système. | ||
| 2439 | |||
| 2440 | @xref{Utiliser le système de configuration}, pour un aperçu de comment créer votre | ||
| 2441 | fichier de configuration. Les exemples de configuration dont on parle dans | ||
| 2442 | cette section sont disponibles dans @file{/etc/configuration} sur l'image | ||
| 2443 | d'installation. Ainsi, pour commencer avec une configuration du système qui | ||
| 2444 | fournit un serveur d'affichage graphique (un système de « bureau »), vous | ||
| 2445 | pouvez lancer ce qui suit : | ||
| 2446 | |||
| 2447 | @example | ||
| 2448 | # mkdir /mnt/etc | ||
| 2449 | # cp /etc/configuration/desktop.scm /mnt/etc/config.scm | ||
| 2450 | # nano /mnt/etc/config.scm | ||
| 2451 | @end example | ||
| 2452 | |||
| 2453 | Vous devriez faire attention à ce que contient votre fichier de | ||
| 2454 | configuration, en particulier : | ||
| 2455 | |||
| 2456 | @itemize | ||
| 2457 | @item | ||
| 2458 | Assurez-vous que la forme @code{bootloader-configuration} se réfère à la | ||
| 2459 | cible où vous voulez installer GRUB. Elle devrait aussi mentionner | ||
| 2460 | @code{grub-bootloader} si vous installer GRUB en mode BIOS (ou « legacy ») | ||
| 2461 | ou @code{grub-efi-bootloader} pour les système UEFI plus récents. Pour les | ||
| 2462 | anciens systèmes, le champs @code{target} contient un périphérique comme | ||
| 2463 | @code{/dev/sda} ; pour les systèmes UEFI il contient un chemin vers une | ||
| 2464 | partition EFI montée, comme @code{/boot/efi}, et assurez-vous bien que ce | ||
| 2465 | chemin est monté et qu'il y a une entrée @code{file-system} dans votre | ||
| 2466 | configuration. | ||
| 2467 | |||
| 2468 | @item | ||
| 2469 | Assurez-vous que les étiquettes de vos systèmes de fichiers correspondent | ||
| 2470 | aux valeurs de leur champs @code{device} dans votre configuration | ||
| 2471 | @code{file-system}, en supposant que la configuration @code{file-system} | ||
| 2472 | utilise la procédure @code{file-system-label} dans son champ @code{device}. | ||
| 2473 | |||
| 2474 | @item | ||
| 2475 | Si vous avez des partitions RAID ou chiffrées, assurez-vous d'ajouter un | ||
| 2476 | champ @code{mapped-device} pour les décrire (@pxref{Périphériques mappés}). | ||
| 2477 | @end itemize | ||
| 2478 | |||
| 2479 | Une fois que vous avez fini les préparatifs sur le fichier de configuration, | ||
| 2480 | le nouveau système peut être initialisé (rappelez-vous que le système de | ||
| 2481 | fichiers racine cible est dans @file{/mnt}) : | ||
| 2482 | |||
| 2483 | @example | ||
| 2484 | guix system init /mnt/etc/config.scm /mnt | ||
| 2485 | @end example | ||
| 2486 | |||
| 2487 | @noindent | ||
| 2488 | Cela copie tous les fichiers nécessaires et installe GRUB sur | ||
| 2489 | @file{/dev/sdX} à moins que vous ne passiez l'option | ||
| 2490 | @option{--no-bootloader}. Pour plus d'informations, @pxref{Invoquer guix system}. Cette commande peut engendrer des téléchargements ou des | ||
| 2491 | constructions pour les paquets manquants, ce qui peut prendre du temps. | ||
| 2492 | |||
| 2493 | Une fois que cette commande a terminé — et on l'espère réussi ! — vous | ||
| 2494 | pouvez lancer @command{reboot} et démarrer sur votre nouveau système. Le | ||
| 2495 | mot de passe @code{root} est d'abord vide ; les mots de passe des autres | ||
| 2496 | utilisateurs doivent être initialisés avec la commande @command{passwd} en | ||
| 2497 | tant que @code{root}, à mois que votre configuration ne spécifie autre chose | ||
| 2498 | (@pxref{user-account-password, mot de passe des comptes utilisateurs}). | ||
| 2499 | @xref{Après l'installation du système}, pour la suite ! | ||
| 2500 | |||
| 2501 | |||
| 2502 | @node Après l'installation du système | ||
| 2503 | @section Après l'installation du système | ||
| 2504 | |||
| 2505 | Bravo ! Vous avez maintenant redémarré sur votre système Guix ! À partir | ||
| 2506 | de maintenant, vous pouvez mettre à jour le système quand vous voudrez, avec | ||
| 2507 | : | ||
| 2508 | |||
| 2509 | @example | ||
| 2510 | guix pull | ||
| 2511 | sudo guix system reconfigure /etc/config.scm | ||
| 2512 | @end example | ||
| 2513 | |||
| 2514 | @noindent | ||
| 2515 | Cela crée une nouvelle génération du système avec les derniers paquets et | ||
| 2516 | services (@pxref{Invoquer guix system}). Nous vous recommandons de le faire | ||
| 2517 | régulièrement pour que votre système inclue les dernières misse à jour de | ||
| 2518 | sécurité (@pxref{Mises à jour de sécurité}). | ||
| 2519 | |||
| 2520 | @c See <https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00268.html>. | ||
| 2521 | @quotation Remarque | ||
| 2522 | @cindex sudo vs.@: @command{guix pull} | ||
| 2523 | Remarquez que @command{sudo guix} exécute la commande @command{guix} de | ||
| 2524 | votre utilisateur et @emph{non} celle de root, parce que @command{sudo} ne | ||
| 2525 | change pas @code{PATH}. Pour utiliser explicitement le @command{guix} de | ||
| 2526 | root, tapez @command{sudo -i guix @dots{}}. | ||
| 2527 | @end quotation | ||
| 2528 | |||
| 2529 | Rejoignez-nous sur @code{#guix} sur le réseau IRC Freenode ou sur | ||
| 2530 | @file{guix-devel@@gnu.org} pour partager votre expérience ! | ||
| 2531 | |||
| 2532 | |||
| 2533 | @node Installer Guix dans une VM | ||
| 2534 | @section Installer Guix sur une machine virtuelle | ||
| 2535 | |||
| 2536 | @cindex machine virtuelle, installation de Guix System | ||
| 2537 | @cindex serveur privé virtuel (VPS) | ||
| 2538 | @cindex VPS (serveur privé virtuel) | ||
| 2539 | Si vous souhaitez installer Guix System sur une machine virtuelle (VM) ou un | ||
| 2540 | serveur privé virtuel (VPS) plutôt que sur votre machine chérie, cette | ||
| 2541 | section est faite pour vous. | ||
| 2542 | |||
| 2543 | Pour démarrer une VM @uref{http://qemu.org/,QEMU} pour installer Guix System | ||
| 2544 | sur une image disque, suivez ces étapes : | ||
| 2545 | |||
| 2546 | @enumerate | ||
| 2547 | @item | ||
| 2548 | Tout d'abord récupérez et décompressez l'image d'installation du système | ||
| 2549 | Guix comme décrit précédemment (@pxref{Installation depuis une clef USB ou un DVD}). | ||
| 2550 | |||
| 2551 | @item | ||
| 2552 | Créez une image disque qui contiendra le système installé. Pour créer une | ||
| 2553 | image qcow2, utilise la commande @command{qemu-img} : | ||
| 2554 | |||
| 2555 | @example | ||
| 2556 | qemu-img create -f qcow2 guixsd.img 50G | ||
| 2557 | @end example | ||
| 2558 | |||
| 2559 | Le fichier qui en résulte sera bien plus petit que les 50 Go (habituellement | ||
| 2560 | moins de 1 Mo) mais il grossira au fur et à mesure que le stockage virtuel | ||
| 2561 | grossira. | ||
| 2562 | |||
| 2563 | @item | ||
| 2564 | Démarrez l'image d'installation USB dans une VM : | ||
| 2565 | |||
| 2566 | @example | ||
| 2567 | qemu-system-x86_64 -m 1024 -smp 1 \ | ||
| 2568 | -net user -net nic,model=virtio -boot menu=on \ | ||
| 2569 | -drive file=guix-system-install-@value{VERSION}.@var{système}.iso \ | ||
| 2570 | -drive file=guixsd.img | ||
| 2571 | @end example | ||
| 2572 | |||
| 2573 | L'ordre des périphérique est important. | ||
| 2574 | |||
| 2575 | Dans la console de la VM, appuyez rapidement sur @kbd{F12} pour entrer dans | ||
| 2576 | le menu de démarrage. Ensuite appuyez sur @kbd{2} et la touche @kbd{Entrée} | ||
| 2577 | pour valider votre choix. | ||
| 2578 | |||
| 2579 | @item | ||
| 2580 | Vous êtes maintenant root dans la VM, continuez en suivant la procédure | ||
| 2581 | d'installation. @xref{Préparer l'installation}, et suivez les | ||
| 2582 | instructions. | ||
| 2583 | @end enumerate | ||
| 2584 | |||
| 2585 | Une fois l'installation terminée, vous pouvez démarrer le système dans votre | ||
| 2586 | image @file{guixsd.img}. @xref{Lancer Guix dans une VM}, pour une manière de | ||
| 2587 | faire. | ||
| 2588 | |||
| 2589 | @node Construire l'image d'installation | ||
| 2590 | @section Construire l'image d'installation | ||
| 2591 | |||
| 2592 | @cindex image d'installation | ||
| 2593 | L'image d'installation décrite plus haut a été construite avec la commande | ||
| 2594 | @command{guix system}, plus précisément : | ||
| 2595 | |||
| 2596 | @example | ||
| 2597 | guix system disk-image --file-system-type=iso9660 \ | ||
| 2598 | gnu/system/install.scm | ||
| 2599 | @end example | ||
| 2600 | |||
| 2601 | Regardez le fichier @file{gnu/system/install.scm} dans l'arborescence des | ||
| 2602 | sources et regardez aussi @ref{Invoquer guix system} pour plus | ||
| 2603 | d'informations sur l'image d'installation. | ||
| 2604 | |||
| 2605 | @section Construire l'image d'installation pour les cartes ARM | ||
| 2606 | |||
| 2607 | De nombreuses cartes ARM requièrent une variante spécifique du chargeur | ||
| 2608 | d'amorçage @uref{http://www.denx.de/wiki/U-Boot/, U-Boot}. | ||
| 2609 | |||
| 2610 | Si vous construisez une image disque et que le chargeur d'amorçage n'est pas | ||
| 2611 | disponible autrement (sur un autre périphérique d'amorçage etc), il est | ||
| 2612 | recommandé de construire une image qui inclus le chargeur d'amorçage, plus | ||
| 2613 | précisément : | ||
| 2614 | |||
| 2615 | @example | ||
| 2616 | guix system disk-image --system=armhf-linux -e '((@@ (gnu system install) os-with-u-boot) (@@ (gnu system install) installation-os) "A20-OLinuXino-Lime2")' | ||
| 2617 | @end example | ||
| 2618 | |||
| 2619 | @code{A20-OLinuXino-Lime2} est le nom de la carte. Si vous spécifiez une | ||
| 2620 | carte invalide, une liste de cartes possibles sera affichée. | ||
| 2621 | |||
| 2622 | @c ********************************************************************* | ||
| 2623 | @node Gestion de paquets | ||
| 2624 | @chapter Gestion de paquets | ||
| 2625 | |||
| 2626 | @cindex paquets | ||
| 2627 | Le but de GNU Guix est de permettre à ses utilisateurs d'installer, mettre à | ||
| 2628 | jour et supprimer facilement des paquets logiciels sans devoir connaître | ||
| 2629 | leur procédure de construction ou leurs dépendances. Guix va aussi plus | ||
| 2630 | loin que ces fonctionnalités évidentes. | ||
| 2631 | |||
| 2632 | Ce chapitre décrit les principales fonctionnalités de Guix, ainsi que des | ||
| 2633 | outils de gestion des paquets qu'il fournit. En plus de l'interface en | ||
| 2634 | ligne de commande décrite en dessous de (@pxref{Invoquer guix package, | ||
| 2635 | @code{guix package}}), vous pouvez aussi utiliser l'interface Emacs-Guix | ||
| 2636 | (@pxref{Top,,, emacs-guix, Le manuel de référence de emacs-guix}), après | ||
| 2637 | avoir installé le paquet @code{emacs-guix} (lancez la commande @kbd{M-x | ||
| 2638 | guix-help} pour le démarrer) : | ||
| 2639 | |||
| 2640 | @example | ||
| 2641 | guix package -i emacs-guix | ||
| 2642 | @end example | ||
| 2643 | |||
| 2644 | @menu | ||
| 2645 | * Fonctionnalités:: Comment Guix va rendre votre vie plus heureuse. | ||
| 2646 | * Invoquer guix package:: Installation, suppression, etc.@: de paquets. | ||
| 2647 | * Substituts:: Télécharger des binaire déjà construits. | ||
| 2648 | * Des paquets avec plusieurs résultats:: Un seul paquet source, plusieurs | ||
| 2649 | résultats. | ||
| 2650 | * Invoquer guix gc:: Lancer le ramasse-miettes. | ||
| 2651 | * Invoquer guix pull:: Récupérer la dernière version de Guix et de | ||
| 2652 | la distribution. | ||
| 2653 | * Canaux:: Personnaliser la collection des paquets. | ||
| 2654 | * Inférieurs:: Interagir avec une autre révision de Guix. | ||
| 2655 | * Invoquer guix describe:: Affiche des informations sur la révision Guix | ||
| 2656 | actuelle. | ||
| 2657 | * Invoquer guix archive:: Exporter et importer des fichiers du dépôt. | ||
| 2658 | @end menu | ||
| 2659 | |||
| 2660 | @node Fonctionnalités | ||
| 2661 | @section Fonctionnalités | ||
| 2662 | |||
| 2663 | Lorsque vous utilisez Guix, chaque paquet arrive dans @dfn{dépôt des | ||
| 2664 | paquets}, dans son propre répertoire — quelque chose comme | ||
| 2665 | @file{/gnu/store/xxx-paquet-1.2}, où @code{xxx} est une chaîne en base32. | ||
| 2666 | |||
| 2667 | Plutôt que de se rapporter à ces répertoires, les utilisateurs ont leur | ||
| 2668 | propre @dfn{profil} qui pointe vers les paquets qu'ils veulent vraiment | ||
| 2669 | utiliser. Ces profils sont stockés dans le répertoire personnel de chaque | ||
| 2670 | utilisateur dans @code{$HOME/.guix-profile}. | ||
| 2671 | |||
| 2672 | Par exemple, @code{alice} installe GCC 4.7.2. Il en résulte que | ||
| 2673 | @file{/home/alice/.guix-profile/bin/gcc} pointe vers | ||
| 2674 | @file{/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}. Maintenant, sur la même | ||
| 2675 | machine, @code{bob} a déjà installé GCC 4.8.0. Le profil de @code{bob} | ||
| 2676 | continue simplement de pointer vers | ||
| 2677 | @file{/gnu/store/@dots{}-gcc-4.8.0/bin/gcc} — c.-à-d.@: les deux versions de | ||
| 2678 | GCC coexistent surs le même système sans aucune interférence. | ||
| 2679 | |||
| 2680 | La commande @command{guix package} est l'outil central pour gérer les | ||
| 2681 | paquets (@pxref{Invoquer guix package}). Il opère sur les profils | ||
| 2682 | utilisateurs et peut être utilisé avec les @emph{privilèges utilisateurs | ||
| 2683 | normaux}. | ||
| 2684 | |||
| 2685 | @cindex transactions | ||
| 2686 | La commande fournit les opérations évidentes d'installation, de suppression | ||
| 2687 | et de mise à jour. Chaque invocation est en fait une @emph{transaction} : | ||
| 2688 | soit l'opération demandée réussi, soit rien ne se passe. Ainsi, si le | ||
| 2689 | processus @command{guix package} est terminé pendant la transaction ou si | ||
| 2690 | une panne de courant arrive pendant la transaction, le profil de | ||
| 2691 | l'utilisateur reste dans son état précédent et reste utilisable. | ||
| 2692 | |||
| 2693 | En plus, il est possible @emph{d'annuler} toute transaction sur les | ||
| 2694 | paquets. Donc si par exemple un mise à jour installe une nouvelle version | ||
| 2695 | d'un paquet qui révèle un bogue sérieux, vous pouvez revenir en arrière à | ||
| 2696 | l'instance précédente de votre profil que vous saviez bien fonctionner. De | ||
| 2697 | même, la configuration globale du système dans Guix est sujette aux mises à | ||
| 2698 | jour transactionnelles et aux annulations (@pxref{Utiliser le système de configuration}). | ||
| 2699 | |||
| 2700 | Tous les paquets du dépôt des paquets peut être @emph{glané}. Guix peut | ||
| 2701 | déterminer quels paquets sont toujours référencés par les profils des | ||
| 2702 | utilisateurs et supprimer ceux qui ne sont plus référencés de manière | ||
| 2703 | prouvable (@pxref{Invoquer guix gc}). Les utilisateurs peuvent toujours | ||
| 2704 | explicitement supprimer les anciennes générations de leur profil pour que | ||
| 2705 | les paquets auxquels elles faisaient référence puissent être glanés. | ||
| 2706 | |||
| 2707 | @cindex reproductibilité | ||
| 2708 | @cindex constructions reproductibles | ||
| 2709 | Guix prend une approche @dfn{purement fonctionnelle} de la gestion de | ||
| 2710 | paquets, telle que décrite dans l'introduction (@pxref{Introduction}). | ||
| 2711 | Chaque nom de répertoire de paquet dans @file{/gnu/store} contient un hash | ||
| 2712 | de toutes les entrées qui ont été utilisées pendant la construction de ce | ||
| 2713 | paquet — le compilateur, les bibliothèques, les scripts de construction, | ||
| 2714 | etc. Cette correspondance directe permet aux utilisateurs de s'assurer que | ||
| 2715 | l'installation d'un paquet donné correspond à l'état actuel de leur | ||
| 2716 | distribution. Elle aide aussi à maximiser la @dfn{reproductibilité} : grâce | ||
| 2717 | aux environnements de construction utilisés, une construction donnée à de | ||
| 2718 | forte chances de donner des fichiers identiques bit-à-bit lorsqu'elle est | ||
| 2719 | effectuée sur des machines différents (@pxref{Invoquer guix-daemon, | ||
| 2720 | container}). | ||
| 2721 | |||
| 2722 | @cindex substituts | ||
| 2723 | Ce fondement permet à Guix de supporter le @dfn{déploiement transparent de | ||
| 2724 | binaire ou source}. Lorsqu'une binaire pré-construit pour une entrée de | ||
| 2725 | @file{/gnu/store} est disponible depuis une source externe (un | ||
| 2726 | @dfn{substitut}), Guix le télécharge simplement et le décompresse ; sinon, | ||
| 2727 | il construit le paquet depuis les sources localement (@pxref{Substituts}). | ||
| 2728 | Comme les résultats des constructions sont généralement reproductibles au | ||
| 2729 | bit près, si vous n'avez pas besoin de faire confiance aux serveurs qui | ||
| 2730 | fournissent les substituts : vous pouvez forcer une construction locale et | ||
| 2731 | @emph{défier} les fournisseurs (@pxref{Invoquer guix challenge}). | ||
| 2732 | |||
| 2733 | Le contrôle de l'environnement de construction est aussi une fonctionnalité | ||
| 2734 | utile pour les développeurs. La commande @command{guix environment} permet | ||
| 2735 | aux développeurs d'un paquet de mettre en place rapidement le bon | ||
| 2736 | environnement de développement pour leur paquet, sans avoir à installer | ||
| 2737 | manuellement les dépendances du paquet dans leur profil (@pxref{Invoquer guix environment}). | ||
| 2738 | |||
| 2739 | @cindex réplication, des environnements logiciels | ||
| 2740 | @cindex suivi de la provenance, des artefacts logiciels | ||
| 2741 | La totalité de Guix et des définitions de paquets sont placés sous contrôle | ||
| 2742 | de version, et @command{guix pull} vous permet de « voyager dans le temps » | ||
| 2743 | de l'historique de Guix lui-même (@pxref{Invoquer guix pull}). Cela est | ||
| 2744 | rend possible la réplication d'une instance Guix sur une machine différente | ||
| 2745 | ou plus tard, ce qui vous permet de @emph{répliquer des environnements | ||
| 2746 | logiciels complets}, tout en garantissant un @dfn{suivi de provenance} | ||
| 2747 | précis des logiciels. | ||
| 2748 | |||
| 2749 | @node Invoquer guix package | ||
| 2750 | @section Invoquer @command{guix package} | ||
| 2751 | |||
| 2752 | @cindex installer des paquets | ||
| 2753 | @cindex supprimer des paquets | ||
| 2754 | @cindex installation de paquets | ||
| 2755 | @cindex suppression de paquets | ||
| 2756 | La commande @command{guix package} est l'outil qui permet d'installer, | ||
| 2757 | mettre à jour et supprimer les paquets ainsi que de revenir à une | ||
| 2758 | configuration précédente. Elle n'opère que dans le profil de l'utilisateur | ||
| 2759 | et fonctionne avec les privilèges utilisateurs normaux | ||
| 2760 | (@pxref{Fonctionnalités}). Sa syntaxe est : | ||
| 2761 | |||
| 2762 | @example | ||
| 2763 | guix package @var{options} | ||
| 2764 | @end example | ||
| 2765 | @cindex transactions | ||
| 2766 | @var{options} spécifie d'abord les opérations à effectuer pendant la | ||
| 2767 | transaction. À la fin, une nouvelle génération du profil est créée mais les | ||
| 2768 | @dfn{générations} précédentes du profil restent disponibles si l'utilisateur | ||
| 2769 | souhaite y revenir. | ||
| 2770 | |||
| 2771 | Par exemple, pour supprimer @code{lua} et installer @code{guile} et | ||
| 2772 | @code{guile-cairo} en une seule transaction : | ||
| 2773 | |||
| 2774 | @example | ||
| 2775 | guix package -r lua -i guile guile-cairo | ||
| 2776 | @end example | ||
| 2777 | |||
| 2778 | @command{guix package} supporte aussi une @dfn{approche déclarative} où | ||
| 2779 | l'utilisateur spécifie l'ensemble exact des paquets qui doivent être | ||
| 2780 | disponibles le passe @i{via} l'option @option{--manifest} | ||
| 2781 | (@pxref{profile-manifest, @option{--manifest}}). | ||
| 2782 | |||
| 2783 | @cindex profil | ||
| 2784 | Pour chaque utilisateur, un lien symbolique vers le profil par défaut de cet | ||
| 2785 | utilisateur est automatiquement créé dans @file{$HOME/.guix-profile}. Ce | ||
| 2786 | lien symbolique pointe toujours vers la génération actuelle du profil par | ||
| 2787 | défaut de l'utilisateur. Ainsi, les utilisateurs peuvent ajouter | ||
| 2788 | @file{$HOME/.guix-profile/bin} à leur variable d'environnement @code{PATH} | ||
| 2789 | etc. | ||
| 2790 | @cindex chemins de recherche | ||
| 2791 | Si vous n'utilisez pas la distribution système Guix, vous devriez ajouter | ||
| 2792 | les lignes suivantes à votre @file{~/.bash_profile} (@pxref{Bash Startup | ||
| 2793 | Files,,, bash, The GNU Bash Reference Manual}) pour que les shells créés | ||
| 2794 | ensuite aient les bonnes définitions des variables d'environnement : | ||
| 2795 | |||
| 2796 | @example | ||
| 2797 | GUIX_PROFILE="$HOME/.guix-profile" ; \ | ||
| 2798 | source "$HOME/.guix-profile/etc/profile" | ||
| 2799 | @end example | ||
| 2800 | |||
| 2801 | Dans un environnement multi-utilisateur, les profils utilisateurs sont | ||
| 2802 | stockés comme une @dfn{racine du ramasse-miettes}, vers laquelle pointe | ||
| 2803 | @file{$HOME/.guix-profile} (@pxref{Invoquer guix gc}). Ce répertoire est | ||
| 2804 | normalement | ||
| 2805 | @code{@var{localstatedir}/guix/profiles/per-user/@var{utilisateur}}, où | ||
| 2806 | @var{localstatedir} est la valeur passée à @code{configure} avec | ||
| 2807 | @code{--localstatedir} et @var{utilisateur} le nom d'utilisateur. Le | ||
| 2808 | répertoire @file{per-user} est créé lorsque @command{guix-daemon} est | ||
| 2809 | démarré et sous-répertoire @var{utilisateur} est créé par @command{guix | ||
| 2810 | package}. | ||
| 2811 | |||
| 2812 | Les @var{options} peuvent être les suivante : | ||
| 2813 | |||
| 2814 | @table @code | ||
| 2815 | |||
| 2816 | @item --install=@var{paquet} @dots{} | ||
| 2817 | @itemx -i @var{paquet} @dots{} | ||
| 2818 | Installer les @var{paquet}s spécifiés. | ||
| 2819 | |||
| 2820 | Chaque @var{paquet} peut spécifier soit un simple nom de paquet, comme | ||
| 2821 | @code{guile} ou un nom de paquet suivi d'un arobase et d'un numéro de | ||
| 2822 | version, comme @code{guile@@1.8.8} ou simplement @code{guile@@1.8} (dans ce | ||
| 2823 | dernier cas, la version la plus récente commençant par @code{1.8} est | ||
| 2824 | utilisée). | ||
| 2825 | |||
| 2826 | Si aucun numéro de version n'est spécifié, la version la plus récente | ||
| 2827 | disponible est choisie. En plus, @var{paquet} peut contenir un deux-points, | ||
| 2828 | suivi du nom d'une des sorties du paquet, comme dans @code{gcc:doc} ou | ||
| 2829 | @code{binutils@@2.22:lib} (@pxref{Des paquets avec plusieurs résultats}). Des | ||
| 2830 | paquets avec un nom correspondant et (éventuellement une version) sont | ||
| 2831 | recherchés dans les modules de la distribution GNU (@pxref{Modules de paquets}). | ||
| 2832 | |||
| 2833 | @cindex entrées propagées | ||
| 2834 | Parfois les paquets ont des @dfn{entrées propagées} : ce sont des | ||
| 2835 | dépendances qui sont installées automatiquement avec le paquet demandé | ||
| 2836 | (@pxref{package-propagated-inputs, @code{propagated-inputs} in | ||
| 2837 | @code{package} objects} pour plus d'informations sur les entrées propagées | ||
| 2838 | dans les définitions des paquets). | ||
| 2839 | |||
| 2840 | @anchor{package-cmd-propagated-inputs} | ||
| 2841 | Un exemple est la bibliothèque MPC de GNU : ses fichiers d'en-tête C se | ||
| 2842 | réfèrent à ceux de la bibliothèque MPFR de GNU, qui se réfèrent en retour à | ||
| 2843 | ceux de la bibliothèque GMP. Ainsi, lorsqu'on installe MPC, les | ||
| 2844 | bibliothèques MPFR et GMP sont aussi installées dans le profil ; supprimer | ||
| 2845 | MPC supprimera aussi MPFR et GMP — à moins qu'ils n'aient été aussi | ||
| 2846 | installés explicitement par l'utilisateur. | ||
| 2847 | |||
| 2848 | D'autre part, les paquets dépendent parfois de la définition de variables | ||
| 2849 | d'environnement pour leur chemin de recherche (voir les explications sur | ||
| 2850 | @code{--search-paths} plus bas). Toute définition de variable | ||
| 2851 | d'environnement manquante ou possiblement incorrecte est rapportée ici. | ||
| 2852 | |||
| 2853 | @item --install-from-expression=@var{exp} | ||
| 2854 | @itemx -e @var{exp} | ||
| 2855 | Installer le paquet évalué par @var{exp} | ||
| 2856 | |||
| 2857 | @var{exp} doit être une expression Scheme qui s'évalue en un objet | ||
| 2858 | @code{<package>}. Cette option est notamment utile pour distinguer les | ||
| 2859 | variantes d'un paquet avec le même nom, avec des expressions comme @code{(@@ | ||
| 2860 | (gnu packages base) guile-final)}. | ||
| 2861 | |||
| 2862 | Remarquez que cette option installe la première sortie du paquet, ce qui | ||
| 2863 | peut être insuffisant lorsque vous avez besoin d'une sortie spécifique d'un | ||
| 2864 | paquet à plusieurs sorties. | ||
| 2865 | |||
| 2866 | @item --install-from-file=@var{fichier} | ||
| 2867 | @itemx -f @var{fichier} | ||
| 2868 | Installer le paquet évalué par le code dans le @var{fichier}. | ||
| 2869 | |||
| 2870 | Par exemple, @var{fichier} peut contenir une définition comme celle-ci | ||
| 2871 | (@pxref{Définition des paquets}) : | ||
| 2872 | |||
| 2873 | @example | ||
| 2874 | @verbatiminclude package-hello.scm | ||
| 2875 | @end example | ||
| 2876 | |||
| 2877 | Les développeurs peuvent trouver utile d'inclure un tel fichier | ||
| 2878 | @file{guix.scm} à la racine de l'arborescence des sources de leur projet qui | ||
| 2879 | pourrait être utilisé pour tester des versions de développement et créer des | ||
| 2880 | environnements de développement reproductibles (@pxref{Invoquer guix environment}). | ||
| 2881 | |||
| 2882 | @item --remove=@var{paquet} @dots{} | ||
| 2883 | @itemx -r @var{paquet} @dots{} | ||
| 2884 | Supprimer les @var{paquet}s spécifiés. | ||
| 2885 | |||
| 2886 | Comme pour @code{--install}, chaque @var{paquet} peut spécifier un numéro de | ||
| 2887 | version ou un nom de sortie en plus du nom du paquet. Par exemple, @code{-r | ||
| 2888 | glibc:debug} supprimerait la sortie @code{debug} de @code{glibc}. | ||
| 2889 | |||
| 2890 | @item --upgrade[=@var{regexp} @dots{}] | ||
| 2891 | @itemx -u [@var{regexp} @dots{}] | ||
| 2892 | @cindex mettre à jour des paquets | ||
| 2893 | Mettre à jour tous les paquets installés. Si une @var{regexp} ou plus est | ||
| 2894 | spécifiée, la mise à jour n'installera que les paquets dont le nom | ||
| 2895 | correspond à @var{regexp}. Voyez aussi l'option @code{--do-not-upgrade} en | ||
| 2896 | dessous. | ||
| 2897 | |||
| 2898 | Remarquez que cela met à jour vers la dernière version des paquets trouvée | ||
| 2899 | dans la distribution actuellement installée. Pour mettre à jour votre | ||
| 2900 | distribution, vous devriez lancer régulièrement @command{guix pull} | ||
| 2901 | (@pxref{Invoquer guix pull}). | ||
| 2902 | |||
| 2903 | @item --do-not-upgrade[=@var{regexp} @dots{}] | ||
| 2904 | Lorsqu'elle est utilisée avec l'option @code{--upgrade}, ne @emph{pas} | ||
| 2905 | mettre à jour les paquets dont le nom correspond à @var{regexp}. Par | ||
| 2906 | exemple, pour mettre à jour tous les paquets du profil actuel à l'exception | ||
| 2907 | de ceux qui contiennent la chaîne « emacs » : | ||
| 2908 | |||
| 2909 | @example | ||
| 2910 | $ guix package --upgrade . --do-not-upgrade emacs | ||
| 2911 | @end example | ||
| 2912 | |||
| 2913 | @item @anchor{profile-manifest}--manifest=@var{fichier} | ||
| 2914 | @itemx -m @var{fichier} | ||
| 2915 | @cindex déclaration de profil | ||
| 2916 | @cindex manifest de profil | ||
| 2917 | Créer une nouvelle génération du profil depuis l'objet manifeste renvoyé par | ||
| 2918 | le code Scheme dans @var{fichier}. | ||
| 2919 | |||
| 2920 | Cela vous permet de @emph{déclarer} le contenu du profil plutôt que de le | ||
| 2921 | construire avec une série de @code{--install} et de commandes similaires. | ||
| 2922 | L'avantage étant que le @var{fichier} peut être placé sous contrôle de | ||
| 2923 | version, copié vers d'autres machines pour reproduire le même profil, etc. | ||
| 2924 | |||
| 2925 | @c FIXME: Add reference to (guix profile) documentation when available. | ||
| 2926 | @var{fichier} doit retourner un objet @dfn{manifest} qui est en gros une | ||
| 2927 | liste de paquets : | ||
| 2928 | |||
| 2929 | @findex packages->manifest | ||
| 2930 | @example | ||
| 2931 | (use-package-modules guile emacs) | ||
| 2932 | |||
| 2933 | (packages->manifest | ||
| 2934 | (list emacs | ||
| 2935 | guile-2.0 | ||
| 2936 | ;; Utiliser une sortie spécifique d'un paquet. | ||
| 2937 | (list guile-2.0 "debug"))) | ||
| 2938 | @end example | ||
| 2939 | |||
| 2940 | @findex specifications->manifest | ||
| 2941 | Dans cet exemple on doit savoir quels modules définissent les variables | ||
| 2942 | @code{emacs} et @code{guile-2.0} pour fournir la bonne ligne | ||
| 2943 | @code{use-package-modules} ce qui peut être embêtant. On peut à la place | ||
| 2944 | fournir des spécifications de paquets normales et laisser | ||
| 2945 | @code{specifications->manifest} rechercher les objets de paquets | ||
| 2946 | correspondants, comme ceci : | ||
| 2947 | |||
| 2948 | @example | ||
| 2949 | (specifications->manifest | ||
| 2950 | '("emacs" "guile@@2.2" "guile@@2.2:debug")) | ||
| 2951 | @end example | ||
| 2952 | |||
| 2953 | @item --roll-back | ||
| 2954 | @cindex revenir en arrière | ||
| 2955 | @cindex défaire des transactions | ||
| 2956 | @cindex transactions, défaire | ||
| 2957 | Revenir à la @dfn{génération} précédente du profil c.-à-d.@: défaire la | ||
| 2958 | dernière transaction. | ||
| 2959 | |||
| 2960 | Lorsqu'elle est combinée avec des options comme @code{--install}, cette | ||
| 2961 | option revient en arrière avant toute autre action. | ||
| 2962 | |||
| 2963 | Lorsque vous revenez de la première génération qui contient des fichiers, le | ||
| 2964 | profil pointera vers la @dfn{zéroième génération} qui ne contient aucun | ||
| 2965 | fichier en dehors de ses propres métadonnées. | ||
| 2966 | |||
| 2967 | Après être revenu en arrière, l'installation, la suppression et la mise à | ||
| 2968 | jour de paquets réécrit les futures générations précédentes. Ainsi, | ||
| 2969 | l'historique des générations dans un profil est toujours linéaire. | ||
| 2970 | |||
| 2971 | @item --switch-generation=@var{motif} | ||
| 2972 | @itemx -S @var{motif} | ||
| 2973 | @cindex générations | ||
| 2974 | Basculer vers une génération particulière définie par le @var{motif}. | ||
| 2975 | |||
| 2976 | Le @var{motif} peut être soit un numéro de génération soit un nombre précédé | ||
| 2977 | de « + » ou « - ». Ce dernier signifie : se déplacer en avant ou en arrière | ||
| 2978 | d'un nombre donné de générations. Par exemple, si vous voulez retourner à | ||
| 2979 | la dernière génération après @code{--roll-back}, utilisez | ||
| 2980 | @code{--switch-generation=+1}. | ||
| 2981 | |||
| 2982 | La différence entre @code{--roll-back} et @code{--switch-generation=-1} est | ||
| 2983 | que @code{--switch-generation} ne vous amènera pas à la zéroième génération, | ||
| 2984 | donc si la génération demandée n'existe pas la génération actuelle ne | ||
| 2985 | changera pas. | ||
| 2986 | |||
| 2987 | @item --search-paths[=@var{genre}] | ||
| 2988 | @cindex chemins de recherche | ||
| 2989 | Rapporter les définitions des variables d'environnement dans la syntaxe Bash | ||
| 2990 | qui peuvent être requises pour utiliser l'ensemble des paquets installés. | ||
| 2991 | Ces variables d'environnement sont utilisées pour spécifier les @dfn{chemins | ||
| 2992 | de recherche} de fichiers utilisés par les paquets installés. | ||
| 2993 | |||
| 2994 | Par exemple, GCC a besoin des variables d'environnement @code{CPATH} et | ||
| 2995 | @code{LIBRARY_PATH} pour trouver les en-têtes et les bibliothèques dans le | ||
| 2996 | profil de l'utilisateur (@pxref{Environment Variables,,, gcc, Using the GNU | ||
| 2997 | Compiler Collection (GCC)}). Si GCC et, disons, la bibliothèque C sont | ||
| 2998 | installés dans le profil, alors @code{--search-paths} suggérera | ||
| 2999 | d'initialiser ces variables à @code{@var{profil}/include} et | ||
| 3000 | @code{@var{profil}/lib}, respectivement. | ||
| 3001 | |||
| 3002 | Le cas d'utilisation typique est de définir ces variables d'environnement | ||
| 3003 | dans le shell : | ||
| 3004 | |||
| 3005 | @example | ||
| 3006 | $ eval `guix package --search-paths` | ||
| 3007 | @end example | ||
| 3008 | |||
| 3009 | @var{genre} peut être l'une des valeurs @code{exact}, @code{prefix} ou | ||
| 3010 | @code{suffix}, ce qui signifie que les définitions des variables | ||
| 3011 | d'environnement retournées seront soit les paramètres exactes, ou placés | ||
| 3012 | avant ou après la valeur actuelle de ces paramètres. Lorsqu'il est omis, | ||
| 3013 | @var{genre} a pour valeur par défaut @code{exact}. | ||
| 3014 | |||
| 3015 | Cette option peut aussi être utilisé pour calculer les chemins de recherche | ||
| 3016 | @emph{combinés} de plusieurs profils. Regardez cet exemple : | ||
| 3017 | |||
| 3018 | @example | ||
| 3019 | $ guix package -p foo -i guile | ||
| 3020 | $ guix package -p bar -i guile-json | ||
| 3021 | $ guix package -p foo -p bar --search-paths | ||
| 3022 | @end example | ||
| 3023 | |||
| 3024 | La dernière commande ci-dessus montre la variable @code{GUILE_LOAD_PATH} | ||
| 3025 | bien que, pris individuellement, ni @file{foo} ni @file{bar} n'auraient | ||
| 3026 | donné cette recommandation. | ||
| 3027 | |||
| 3028 | |||
| 3029 | @item --profile=@var{profil} | ||
| 3030 | @itemx -p @var{profil} | ||
| 3031 | Utiliser le @var{profil} à la place du profil par défaut de l'utilisateur. | ||
| 3032 | |||
| 3033 | @cindex collisions, dans un profil | ||
| 3034 | @cindex faire des collisions de paquets dans des profils | ||
| 3035 | @cindex profil, collisions | ||
| 3036 | @item --allow-collisions | ||
| 3037 | Permettre des collisions de paquets dans le nouveau profil. À utiliser à | ||
| 3038 | vos risques et périls ! | ||
| 3039 | |||
| 3040 | Par défaut, @command{guix package} rapporte les @dfn{collisions} dans le | ||
| 3041 | profil comme des erreurs. Les collisions ont lieu quand deux version ou | ||
| 3042 | variantes d'un paquet donné se retrouvent dans le profil. | ||
| 3043 | |||
| 3044 | @item --bootstrap | ||
| 3045 | Utiliser le programme d'amorçage Guile pour compiler le profil. Cette | ||
| 3046 | option n'est utile que pour les développeurs de la distribution. | ||
| 3047 | |||
| 3048 | @end table | ||
| 3049 | |||
| 3050 | En plus de ces actions, @command{guix package} supporte les options | ||
| 3051 | suivantes pour demander l'état actuel d'un profil ou la disponibilité des | ||
| 3052 | paquets : | ||
| 3053 | |||
| 3054 | @table @option | ||
| 3055 | |||
| 3056 | @item --search=@var{regexp} | ||
| 3057 | @itemx -s @var{regexp} | ||
| 3058 | @cindex chercher des paquets | ||
| 3059 | Lister les paquets disponibles dont le nom, le synopsis ou la description | ||
| 3060 | correspondent à la @var{regexp} (en étant insensible à la casse), triés par | ||
| 3061 | pertinence. Afficher toutes les métadonnées des paquets correspondants au | ||
| 3062 | format @code{recutils} (@pxref{Top, GNU recutils databases,, recutils, GNU | ||
| 3063 | recutils manual}). | ||
| 3064 | |||
| 3065 | Cela permet à des champs spécifiques d'être extraits avec la commande | ||
| 3066 | @command{recsel}, par exemple : | ||
| 3067 | |||
| 3068 | @example | ||
| 3069 | $ guix package -s malloc | recsel -p name,version,relevance | ||
| 3070 | name: jemalloc | ||
| 3071 | version: 4.5.0 | ||
| 3072 | relevance: 6 | ||
| 3073 | |||
| 3074 | name: glibc | ||
| 3075 | version: 2.25 | ||
| 3076 | relevance: 1 | ||
| 3077 | |||
| 3078 | name: libgc | ||
| 3079 | version: 7.6.0 | ||
| 3080 | relevance: 1 | ||
| 3081 | @end example | ||
| 3082 | |||
| 3083 | De manière similaire, pour montrer le nom de tous les paquets disponibles | ||
| 3084 | sous license GNU@tie{}LGPL version 3 : | ||
| 3085 | |||
| 3086 | @example | ||
| 3087 | $ guix package -s "" | recsel -p name -e 'license ~ "LGPL 3"' | ||
| 3088 | name: elfutils | ||
| 3089 | |||
| 3090 | name: gmp | ||
| 3091 | @dots{} | ||
| 3092 | @end example | ||
| 3093 | |||
| 3094 | Il est aussi possible de raffiner les résultats de la recherche avec | ||
| 3095 | plusieurs options @code{-s}. Par exemple, la commande suivante renvoie la | ||
| 3096 | liste des jeux de plateau : | ||
| 3097 | |||
| 3098 | @example | ||
| 3099 | $ guix package -s '\<board\>' -s game | recsel -p name | ||
| 3100 | name: gnubg | ||
| 3101 | @dots{} | ||
| 3102 | @end example | ||
| 3103 | |||
| 3104 | Si on avait oublié @code{-s game}, on aurait aussi eu les paquets logiciels | ||
| 3105 | qui s'occupent de circuits imprimés (en anglais : circuit board) ; supprimer | ||
| 3106 | les chevrons autour de @code{board} aurait aussi ajouté les paquets qui | ||
| 3107 | parlent de clavier (en anglais : key@emph{board}). | ||
| 3108 | |||
| 3109 | Et maintenant un exemple plus élaboré. La commande suivante recherche les | ||
| 3110 | bibliothèques cryptographiques, retire les bibliothèques Haskell, Perl, | ||
| 3111 | Python et Ruby et affiche le nom et le synopsis des paquets correspondants : | ||
| 3112 | |||
| 3113 | @example | ||
| 3114 | $ guix package -s crypto -s library | \ | ||
| 3115 | recsel -e '! (name ~ "^(ghc|perl|python|ruby)")' -p name,synopsis | ||
| 3116 | @end example | ||
| 3117 | |||
| 3118 | @noindent | ||
| 3119 | @xref{Selection Expressions,,, recutils, GNU recutils manual} pour plus | ||
| 3120 | d'information sur les @dfn{expressions de sélection} pour @code{recsel -e}. | ||
| 3121 | |||
| 3122 | @item --show=@var{paquet} | ||
| 3123 | Afficher les détails du @var{paquet} dans la liste des paquets disponibles, | ||
| 3124 | au format @code{recutils} (@pxref{Top, GNU recutils databases,, recutils, | ||
| 3125 | GNU recutils manual}). | ||
| 3126 | |||
| 3127 | @example | ||
| 3128 | $ guix package --show=python | recsel -p name,version | ||
| 3129 | name: python | ||
| 3130 | version: 2.7.6 | ||
| 3131 | |||
| 3132 | name: python | ||
| 3133 | version: 3.3.5 | ||
| 3134 | @end example | ||
| 3135 | |||
| 3136 | Vous pouvez aussi spécifier le nom complet d'un paquet pour n'avoir que les | ||
| 3137 | détails concernant une version spécifique : | ||
| 3138 | @example | ||
| 3139 | $ guix package --show=python@@3.4 | recsel -p name,version | ||
| 3140 | name: python | ||
| 3141 | version: 3.4.3 | ||
| 3142 | @end example | ||
| 3143 | |||
| 3144 | |||
| 3145 | |||
| 3146 | @item --list-installed[=@var{regexp}] | ||
| 3147 | @itemx -I [@var{regexp}] | ||
| 3148 | Liste les paquets actuellement installés dans le profil spécifié, avec les | ||
| 3149 | paquets les plus récemment installés en dernier. Lorsque @var{regexp} est | ||
| 3150 | spécifié, liste uniquement les paquets installés dont le nom correspond à | ||
| 3151 | @var{regexp}. | ||
| 3152 | |||
| 3153 | Pour chaque paquet installé, affiche les éléments suivants, séparés par des | ||
| 3154 | tabulations : le nom du paquet, sa version, la partie du paquet qui est | ||
| 3155 | installé (par exemple, @code{out} pour la sortie par défaut, @code{include} | ||
| 3156 | pour ses en-têtes, etc) et le chemin du paquet dans le dépôt. | ||
| 3157 | |||
| 3158 | @item --list-available[=@var{regexp}] | ||
| 3159 | @itemx -A [@var{regexp}] | ||
| 3160 | Lister les paquets actuellement disponibles dans la distribution pour ce | ||
| 3161 | système (@pxref{Distribution GNU}). Lorsque @var{regexp} est spécifié, | ||
| 3162 | liste uniquement les paquets dont le nom correspond à @var{regexp}. | ||
| 3163 | |||
| 3164 | Pour chaque paquet, affiche les éléments suivants séparés par des | ||
| 3165 | tabulations : son nom, sa version, les parties du paquet (@pxref{Des paquets avec plusieurs résultats}), et l'emplacement de sa définition. | ||
| 3166 | |||
| 3167 | @item --list-generations[=@var{motif}] | ||
| 3168 | @itemx -l [@var{motif}] | ||
| 3169 | @cindex générations | ||
| 3170 | Renvoyer la liste des générations avec leur date de création ; pour chaque | ||
| 3171 | génération, montre les paquets installés avec les paquets installés les plus | ||
| 3172 | récemment en dernier. Remarquez que la zéroième génération n'est jamais | ||
| 3173 | montrée. | ||
| 3174 | |||
| 3175 | Pour chaque paquet installé, afficher les éléments suivants, séparés par des | ||
| 3176 | tabulations : le nom du paquet, sa version, la partie du paquet qui a été | ||
| 3177 | installée (@pxref{Des paquets avec plusieurs résultats}), et l'emplacement du | ||
| 3178 | paquet dans le dépôt. | ||
| 3179 | |||
| 3180 | Lorsque @var{motif} est utilisé, la commande ne renvoie que les générations | ||
| 3181 | correspondantes. Les motifs valides sont : | ||
| 3182 | |||
| 3183 | @itemize | ||
| 3184 | @item @emph{Des entiers et des entiers séparés par des virgules}. Les deux motifs correspondent | ||
| 3185 | à des numéros de version. Par exemple, @code{--list-generations=1} renvoie | ||
| 3186 | la première. | ||
| 3187 | |||
| 3188 | Et @code{--list-generations=1,8,2} renvoie les trois générations dans | ||
| 3189 | l'ordre spécifié. Aucune espace ni virgule surnuméraire n'est permise. | ||
| 3190 | |||
| 3191 | @item @emph{Des intervalles}. @code{--list-generations=2..9} affiche les | ||
| 3192 | générations demandées et tout ce qui se trouvent entre elles. Remarquez que | ||
| 3193 | le début d'un intervalle doit être plus petit que sa fin. | ||
| 3194 | |||
| 3195 | Il est aussi possible d'omettre le numéro final. Par exemple, | ||
| 3196 | @code{--list-generations=2..} renvoie toutes les générations à partir de la | ||
| 3197 | deuxième. | ||
| 3198 | |||
| 3199 | @item @emph{Des durées}. Vous pouvez aussi récupérer les derniers @emph{N}@tie{}jours, semaines, | ||
| 3200 | ou moins en passant un entier avec la première lettre de la durée (en | ||
| 3201 | anglais : d, w ou m). Par exemple @code{--list-generations=20d} liste les | ||
| 3202 | générations qui sont âgées d'au plus 20 jours. | ||
| 3203 | @end itemize | ||
| 3204 | |||
| 3205 | @item --delete-generations[=@var{motif}] | ||
| 3206 | @itemx -d [@var{motif}] | ||
| 3207 | Lorsque @var{motif} est omis, supprimer toutes les générations en dehors de | ||
| 3208 | l'actuelle. | ||
| 3209 | |||
| 3210 | Cette commande accepte les même motifs que @option{--list-generations}. | ||
| 3211 | Lorsque @var{motif} est spécifié, supprimer les générations correspondante. | ||
| 3212 | Lorsque @var{motif} spécifie une durée, les générations @emph{plus vieilles} | ||
| 3213 | que la durée spécifiée correspondent. Par exemple | ||
| 3214 | @code{--delete-generations=1m} supprime les générations vieilles de plus | ||
| 3215 | d'un mois. | ||
| 3216 | |||
| 3217 | Si la génération actuelle correspond, elle n'est @emph{pas} supprimée. La | ||
| 3218 | zéroième génération n'est elle non plus jamais supprimée. | ||
| 3219 | |||
| 3220 | Remarquez que supprimer des générations empêche de revenir en arrière vers | ||
| 3221 | elles. Ainsi, cette commande doit être utilisée avec précaution. | ||
| 3222 | |||
| 3223 | @end table | ||
| 3224 | |||
| 3225 | Enfin, comme @command{guix package} peut démarrer des processus de | ||
| 3226 | construction, elle supporte les options de construction communes | ||
| 3227 | (@pxref{Options de construction communes}). Elle supporte aussi les options de | ||
| 3228 | transformation de paquets comme @option{--with-source} (@pxref{Options de transformation de paquets}). Cependant, remarquez que les transformations de | ||
| 3229 | paquets sont perdues à la mise à jour ; pour les préserver à travers les | ||
| 3230 | mises à jours, vous devriez définir vos propres variantes des paquets dans | ||
| 3231 | une module Guile et l'ajouter à @code{GUIX_PACKAGE_PATH} (@pxref{Définition des paquets}). | ||
| 3232 | |||
| 3233 | @node Substituts | ||
| 3234 | @section Substituts | ||
| 3235 | |||
| 3236 | @cindex substituts | ||
| 3237 | @cindex binaires pré-construits | ||
| 3238 | Guix gère le déploiement depuis des binaires ou des sources de manière | ||
| 3239 | transparente ce qui signifie qu'il peut aussi bien construire localement que | ||
| 3240 | télécharger des éléments pré-construits depuis un serveur ou les deux. Nous | ||
| 3241 | appelons ces éléments pré-construits des @dfn{substituts} — ils se | ||
| 3242 | substituent aux résultats des constructions locales. Dans la plupart des | ||
| 3243 | cas, télécharger un substitut est bien plus rapide que de construire les | ||
| 3244 | choses localement. | ||
| 3245 | |||
| 3246 | Les substituts peuvent être tout ce qui résulte d'une construction de | ||
| 3247 | dérivation (@pxref{Dérivations}). Bien sûr dans le cas général, il s'agit | ||
| 3248 | de paquets binaires pré-construits, mais les archives des sources par | ||
| 3249 | exemple résultent aussi de la construction d'une dérivation qui peut aussi | ||
| 3250 | être disponible en tant que substitut. | ||
| 3251 | |||
| 3252 | @menu | ||
| 3253 | * Serveur de substituts officiel:: Une source particulière de substituts. | ||
| 3254 | * Autoriser un serveur de substituts:: Comment activer ou désactiver les | ||
| 3255 | substituts. | ||
| 3256 | * Authentification des substituts:: Comment Guix vérifie les substituts. | ||
| 3257 | * Paramètres de serveur mandataire:: Comment récupérer des substituts à | ||
| 3258 | travers un serveur mandataire. | ||
| 3259 | * Échec de substitution:: Qu'arrive-t-il quand la substitution échoue. | ||
| 3260 | * De la confiance en des binaires:: Comment pouvez-vous avoir confiance en | ||
| 3261 | un paquet binaire ? | ||
| 3262 | @end menu | ||
| 3263 | |||
| 3264 | @node Serveur de substituts officiel | ||
| 3265 | @subsection Serveur de substituts officiel | ||
| 3266 | |||
| 3267 | @cindex hydra | ||
| 3268 | @cindex ferme de construction | ||
| 3269 | Le serveur @code{@value{SUBSTITUTE-SERVER}} est une interface à la ferme de | ||
| 3270 | construction officielle qui construit des paquets pour Guix continuellement | ||
| 3271 | pour certaines architectures et les rend disponibles en tant que | ||
| 3272 | substituts. C'est la source par défaut des substituts ; elle peut être | ||
| 3273 | modifiée en passant l'option @option{--substitute-urls} soit à | ||
| 3274 | @command{guix-daemon} (@pxref{daemon-substitute-urls,, @code{guix-daemon | ||
| 3275 | --substitute-urls}}) soit aux outils clients comme @command{guix package} | ||
| 3276 | (@pxref{client-substitute-urls,, client @option{--substitute-urls} option}). | ||
| 3277 | |||
| 3278 | Les URL des substituts peuvent être soit en HTTP soit en HTTPS. Le HTTPS | ||
| 3279 | est recommandé parce que les communications sont chiffrées ; à l'inverse | ||
| 3280 | HTTP rend les communications visibles pour un espion qui peut utiliser les | ||
| 3281 | informations accumulées sur vous pour déterminer par exemple si votre | ||
| 3282 | système a des vulnérabilités de sécurités non corrigées. | ||
| 3283 | |||
| 3284 | Les substituts de la ferme de construction officielle sont activés par | ||
| 3285 | défaut dans la distribution système Guix (@pxref{Distribution GNU}). | ||
| 3286 | Cependant, ils sont désactivés par défaut lorsque vous utilisez Guix sur une | ||
| 3287 | distribution externe, à moins que vous ne les ayez explicitement activés via | ||
| 3288 | l'une des étapes d'installation recommandées (@pxref{Installation}). Les | ||
| 3289 | paragraphes suivants décrivent comment activer ou désactiver les substituts | ||
| 3290 | de la ferme de construction ; la même procédure peut être utilisée pour | ||
| 3291 | activer les substituts de n'importe quel autre serveur de substituts. | ||
| 3292 | |||
| 3293 | @node Autoriser un serveur de substituts | ||
| 3294 | @subsection Autoriser un serveur de substituts | ||
| 3295 | |||
| 3296 | @cindex sécurité | ||
| 3297 | @cindex substituts, autorisations | ||
| 3298 | @cindex liste de contrôle d'accès (ACL), pour les substituts | ||
| 3299 | @cindex ACL (liste de contrôle d'accès), pour les substituts | ||
| 3300 | Pour permettre à Guix de télécharger les substituts depuis | ||
| 3301 | @code{@value{SUBSTITUTE-SERVER}} ou un miroir, vous devez ajouter sa clef | ||
| 3302 | publique à la liste de contrôle d'accès (ACL) des imports d'archives, avec | ||
| 3303 | la commande @command{guix archive} (@pxref{Invoquer guix archive}). Cela | ||
| 3304 | implique que vous faîtes confiance à @code{@value{SUBSTITUTE-SERVER}} pour | ||
| 3305 | ne pas être compromis et vous servir des substituts authentiques. | ||
| 3306 | |||
| 3307 | La clef publique pour @code{@value{SUBSTITUTE-SERVER}} est installée avec | ||
| 3308 | Guix, dans @code{@var{préfixe}/share/guix/@value{SUBSTITUTE-SERVER}.pub}, où | ||
| 3309 | @var{préfixe} est le préfixe d'installation de Guix. Si vous avez installé | ||
| 3310 | Guix depuis les sources, assurez-vous d'avoir vérifié la signature GPG de | ||
| 3311 | @file{guix-@value{VERSION}.tar.gz} qui contient ce fichier de clef | ||
| 3312 | publique. Ensuite vous pouvez lancer quelque chose comme ceci : | ||
| 3313 | |||
| 3314 | @example | ||
| 3315 | # guix archive --authorize < @var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub | ||
| 3316 | @end example | ||
| 3317 | |||
| 3318 | @quotation Remarque | ||
| 3319 | De même, le fichier @file{hydra.gnu.org.pub} contient la clef publique d'une | ||
| 3320 | ferme de construction indépendante qui appartient aussi au projet, | ||
| 3321 | disponible sur @indicateurl{https://mirror.hydra.gnu.org}. | ||
| 3322 | @end quotation | ||
| 3323 | |||
| 3324 | Une fois que cela est en place, la sortie d'une commande comme @code{guix | ||
| 3325 | build} devrait changer de quelque chose comme : | ||
| 3326 | |||
| 3327 | @example | ||
| 3328 | $ guix build emacs --dry-run | ||
| 3329 | Les dérivations suivantes seraient construites : | ||
| 3330 | /gnu/store/yr7bnx8xwcayd6j95r2clmkdl1qh688w-emacs-24.3.drv | ||
| 3331 | /gnu/store/x8qsh1hlhgjx6cwsjyvybnfv2i37z23w-dbus-1.6.4.tar.gz.drv | ||
| 3332 | /gnu/store/1ixwp12fl950d15h2cj11c73733jay0z-alsa-lib-1.0.27.1.tar.bz2.drv | ||
| 3333 | /gnu/store/nlma1pw0p603fpfiqy7kn4zm105r5dmw-util-linux-2.21.drv | ||
| 3334 | @dots{} | ||
| 3335 | @end example | ||
| 3336 | |||
| 3337 | @noindent | ||
| 3338 | à quelque chose comme : | ||
| 3339 | |||
| 3340 | @example | ||
| 3341 | $ guix build emacs --dry-run | ||
| 3342 | 112.3 Mo seraient téléchargés : | ||
| 3343 | /gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3 | ||
| 3344 | /gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d | ||
| 3345 | /gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16 | ||
| 3346 | /gnu/store/7zdhgp0n1518lvfn8mb96sxqfmvqrl7v-libxrender-0.9.7 | ||
| 3347 | @dots{} | ||
| 3348 | @end example | ||
| 3349 | |||
| 3350 | @noindent | ||
| 3351 | Cela indique que les substituts de @code{@value{SUBSTITUTE-SERVER}} sont | ||
| 3352 | utilisables et seront téléchargés, si possible, pour les futures | ||
| 3353 | constructions. | ||
| 3354 | |||
| 3355 | @cindex substituts, comment les désactiver | ||
| 3356 | Le mécanisme de substitution peut être désactivé globalement en lançant | ||
| 3357 | @code{guix-daemon} avec @code{--no-substitutes} (@pxref{Invoquer guix-daemon}). Il peut aussi être désactivé temporairement en passant | ||
| 3358 | l'option @code{--no-substitutes} à @command{guix package}, @command{guix | ||
| 3359 | build} et aux autres outils en ligne de commande. | ||
| 3360 | |||
| 3361 | @node Authentification des substituts | ||
| 3362 | @subsection Authentification des substituts | ||
| 3363 | |||
| 3364 | @cindex signatures numériques | ||
| 3365 | Guix détecte et lève une erreur lorsqu'il essaye d'utiliser un substituts | ||
| 3366 | qui a été modifié. De même, il ignore les substituts qui ne sont pas signés | ||
| 3367 | ou qui ne sont pas signés par l'une des clefs listés dans l'ACL. | ||
| 3368 | |||
| 3369 | Il y a une exception cependant : si un serveur non autorisé fournit des | ||
| 3370 | substituts qui sont @emph{identiques bit-à-bit} à ceux fournis par un | ||
| 3371 | serveur autorisé, alors le serveur non autorisé devient disponible pour les | ||
| 3372 | téléchargements. Par exemple en supposant qu'on a choisi deux serveurs de | ||
| 3373 | substituts avec cette option : | ||
| 3374 | |||
| 3375 | @example | ||
| 3376 | --substitute-urls="https://a.example.org https://b.example.org" | ||
| 3377 | @end example | ||
| 3378 | |||
| 3379 | @noindent | ||
| 3380 | @cindex constructions reproductibles | ||
| 3381 | Si l'ACL contient uniquement la clef de @code{b.example.org}, et si | ||
| 3382 | @code{a.example.org} sert @emph{exactement les mêmes} substituts, alors Guix | ||
| 3383 | téléchargera les substituts de @code{a.example.org} parce qu'il vient en | ||
| 3384 | premier dans la liste et peut être considéré comme un miroir de | ||
| 3385 | @code{b.example.org}. En pratique, des machines de constructions produisent | ||
| 3386 | souvent les mêmes binaires grâce à des construction reproductibles au bit | ||
| 3387 | près (voir plus bas). | ||
| 3388 | |||
| 3389 | Lorsque vous utilisez HTTPS, le certificat X.509 du serveur n'est @emph{pas} | ||
| 3390 | validé (en d'autre termes, le serveur n'est pas authentifié), contrairement | ||
| 3391 | à ce que des clients HTTPS comme des navigateurs web font habituellement. | ||
| 3392 | Cela est dû au fait que Guix authentifie les informations sur les substituts | ||
| 3393 | eux-mêmes, comme expliqué plus haut, ce dont on se soucie réellement (alors | ||
| 3394 | que les certificats X.509 authentifie la relation entre nom de domaine et | ||
| 3395 | clef publique). | ||
| 3396 | |||
| 3397 | @node Paramètres de serveur mandataire | ||
| 3398 | @subsection Paramètres de serveur mandataire | ||
| 3399 | |||
| 3400 | @vindex http_proxy | ||
| 3401 | Les substituts sont téléchargés par HTTP ou HTTPS. La variable | ||
| 3402 | d'environnement @code{http_proxy} peut être initialisée dans l'environnement | ||
| 3403 | de @command{guix-daemon} et est respectée pour le téléchargement des | ||
| 3404 | substituts. Remarquez que la valeur de @code{http_proxy} dans | ||
| 3405 | l'environnement où tournent @command{guix build}, @command{guix package} et | ||
| 3406 | les autres clients n'a @emph{absolument aucun effet}. | ||
| 3407 | |||
| 3408 | @node Échec de substitution | ||
| 3409 | @subsection Échec de substitution | ||
| 3410 | |||
| 3411 | Même lorsqu'un substitut pour une dérivation est disponible, la substitution | ||
| 3412 | échoue parfois. Cela peut arriver pour plusieurs raisons : le serveur de | ||
| 3413 | substitut peut être hors ligne, le substitut a récemment été supprimé du | ||
| 3414 | serveur, la connexion peut avoir été interrompue, etc. | ||
| 3415 | |||
| 3416 | Lorsque les substituts sont activés et qu'un substitut pour une dérivation | ||
| 3417 | est disponible, mais que la tentative de substitution échoue, Guix essaiera | ||
| 3418 | de construire la dérivation localement si @code{--fallback} a été passé en | ||
| 3419 | argument (@pxref{option de repli,, common build option @code{--fallback}}). | ||
| 3420 | Plus spécifiquement, si cet option n'a pas été passée en argument, alors | ||
| 3421 | aucune construction locale n'est effectuée et la dérivation est considérée | ||
| 3422 | comme étant en échec. Cependant, si @code{--fallback} est passé en argument, | ||
| 3423 | alors Guix essaiera de construire la dérivation localement et l'échec ou le | ||
| 3424 | succès de la dérivation dépend de l'échec ou du succès de la construction | ||
| 3425 | locale. Remarquez que lorsque les substituts sont désactivés ou qu'aucun | ||
| 3426 | substitut n'est disponible pour la dérivation en question, une construction | ||
| 3427 | locale sera @emph{toujours} effectuée, indépendamment du fait que l'argument | ||
| 3428 | @code{--fallback} ait été ou non passé. | ||
| 3429 | |||
| 3430 | Pour se donner une idée du nombre de substituts disponibles maintenant, vous | ||
| 3431 | pouvez essayer de lancer la commande @command{guix weather} (@pxref{Invoquer guix weather}). Cette command fournit des statistiques sur les substituts | ||
| 3432 | fournis par un serveur. | ||
| 3433 | |||
| 3434 | @node De la confiance en des binaires | ||
| 3435 | @subsection De la confiance en des binaires | ||
| 3436 | |||
| 3437 | @cindex confiance, en des binaires pré-construits | ||
| 3438 | De nos jours, le contrôle individuel sur son utilisation propre de | ||
| 3439 | l'informatique est à la merci d'institutions, de sociétés et de groupes avec | ||
| 3440 | assez de pouvoir et de détermination pour contourner les infrastructures | ||
| 3441 | informatiques et exploiter leurs faiblesses. Bien qu'utiliser les | ||
| 3442 | substituts de @code{@value{SUBSTITUTE-SERVER}} soit pratique, nous | ||
| 3443 | encourageons les utilisateurs à construire aussi par eux-mêmes, voir à faire | ||
| 3444 | tourner leur propre ferme de construction, pour que | ||
| 3445 | @code{@value{SUBSTITUTE-SERVER}} devienne une cible moins intéressante. Une | ||
| 3446 | façon d'aider est de publier les logiciels que vous construisez avec | ||
| 3447 | @command{guix publish} pour que les autres aient plus de choix de serveurs | ||
| 3448 | où télécharger les substituts (@pxref{Invoquer guix publish}). | ||
| 3449 | |||
| 3450 | Guix possède les fondations pour maximiser la reproductibilité logicielle | ||
| 3451 | (@pxref{Fonctionnalités}). Dans la plupart des cas, des constructions | ||
| 3452 | indépendantes d'un paquet donnée ou d'une dérivation devrait donner des | ||
| 3453 | résultats identiques au bit près. Ainsi, à travers un ensemble de | ||
| 3454 | constructions de paquets indépendantes il est possible de renforcer | ||
| 3455 | l'intégrité du système. La commande @command{guix challenge} a pour but | ||
| 3456 | d'aider les utilisateurs à tester les serveurs de substituts et à aider les | ||
| 3457 | développeurs à trouver les constructions de paquets non-déterministes | ||
| 3458 | (@pxref{Invoquer guix challenge}). De même, l'option @option{--check} de | ||
| 3459 | @command{guix build} permet aux utilisateurs de vérifier si les substituts | ||
| 3460 | précédemment installés sont authentiques en les reconstruisant localement | ||
| 3461 | (@pxref{vérification de la construction, @command{guix build --check}}). | ||
| 3462 | |||
| 3463 | Dans le futur, nous aimerions que Guix puisse publier et recevoir des | ||
| 3464 | binaires d'autres utilisateurs, d'une manière pair-à-pair. Si vous voulez | ||
| 3465 | discuter de ce projet, rejoignez-nous sur @email{guix-devel@@gnu.org}. | ||
| 3466 | |||
| 3467 | @node Des paquets avec plusieurs résultats | ||
| 3468 | @section Des paquets avec plusieurs résultats | ||
| 3469 | |||
| 3470 | @cindex paquets avec plusieurs résultats | ||
| 3471 | @cindex sorties de paquets | ||
| 3472 | @cindex sorties | ||
| 3473 | |||
| 3474 | Souvent, les paquets définis dans Guix ont une seule @dfn{sortie} — | ||
| 3475 | c.-à-d.@: que le paquet source conduit à exactement un répertoire dans le | ||
| 3476 | dépôt. Lorsque vous lancez @command{guix package -i glibc}, vous installez | ||
| 3477 | la sortie par défaut du paquet GNU libc ; la sortie par défaut est appelée | ||
| 3478 | @code{out} mais son nom peut être omis comme le montre cette commande. Dans | ||
| 3479 | ce cas particuliers, la sortie par défaut de @code{glibc} contient tous les | ||
| 3480 | fichiers d'en-tête C, les bibliothèques partagées, les bibliothèques | ||
| 3481 | statiques, la documentation Info et les autres fichiers de support. | ||
| 3482 | |||
| 3483 | Parfois il est plus approprié de séparer les divers types de fichiers | ||
| 3484 | produits par un même paquet source en plusieurs sorties. Par exemple, la | ||
| 3485 | bibliothèque C GLib (utilisée par GTK+ et des paquets associés) installe | ||
| 3486 | plus de 20 Mo de documentation de référence dans des pages HTML. Pour | ||
| 3487 | préserver l'espace disque des utilisateurs qui n'en ont pas besoin, la | ||
| 3488 | documentation va dans une sortie séparée nommée @code{doc}. Pour installer | ||
| 3489 | la sortie principale de GLib, qui contient tout sauf la documentation, on | ||
| 3490 | devrait lancer : | ||
| 3491 | |||
| 3492 | @example | ||
| 3493 | guix package -i glib | ||
| 3494 | @end example | ||
| 3495 | |||
| 3496 | @cindex documentation | ||
| 3497 | La commande pour installer la documentation est : | ||
| 3498 | |||
| 3499 | @example | ||
| 3500 | guix package -i glib:doc | ||
| 3501 | @end example | ||
| 3502 | |||
| 3503 | Certains paquets installent des programmes avec des « empreintes dépendances | ||
| 3504 | » différentes. Par exemple le paquet WordNet installe à la fois les outils | ||
| 3505 | en ligne de commande et les interfaces graphiques (GUI). La première ne | ||
| 3506 | dépend que de la bibliothèque C, alors que cette dernière dépend de Tcl/Tk | ||
| 3507 | et des bibliothèques X sous-jacentes. Dans ce cas, nous laissons les outils | ||
| 3508 | en ligne de commande dans la sortie par défaut et l'interface graphique dans | ||
| 3509 | une sortie séparée. Cela permet aux utilisateurs qui n'ont pas besoin | ||
| 3510 | d'interface graphique de gagner de la place. La commande @command{guix | ||
| 3511 | size} peut aider à trouver ces situations (@pxref{Invoquer guix size}). @command{guix graph} peut aussi être utile (@pxref{Invoquer guix graph}). | ||
| 3512 | |||
| 3513 | Il y a plusieurs paquets à sorties multiples dans la distribution GNU. | ||
| 3514 | D'autres noms de sorties conventionnels sont @code{lib} pour les | ||
| 3515 | bibliothèques et éventuellement les fichiers d'en-tête, @code{bin} pour les | ||
| 3516 | programmes indépendants et @code{debug} pour les informations de débogage | ||
| 3517 | (@pxref{Installer les fichiers de débogage}). Les sorties d'un paquet sont listés | ||
| 3518 | dans la troisième colonne de la sortie de @command{guix package | ||
| 3519 | --list-available} (@pxref{Invoquer guix package}). | ||
| 3520 | |||
| 3521 | |||
| 3522 | @node Invoquer guix gc | ||
| 3523 | @section Invoquer @command{guix gc} | ||
| 3524 | |||
| 3525 | @cindex ramasse-miettes | ||
| 3526 | @cindex espace disque | ||
| 3527 | Les paquets qui sont installés mais pas utilisés peuvent être @dfn{glanés}. | ||
| 3528 | La commande @command{guix gc} permet aux utilisateurs de lancer | ||
| 3529 | explicitement le ramasse-miettes pour récupérer de l'espace dans le | ||
| 3530 | répertoire @file{/gnu/store}. C'est la @emph{seule} manière de supprimer | ||
| 3531 | des fichiers de @file{/gnu/store} — supprimer des fichiers ou des | ||
| 3532 | répertoires à la main peut le casser de manière impossible à réparer ! | ||
| 3533 | |||
| 3534 | @cindex racines du GC | ||
| 3535 | @cindex racines du ramasse-miettes | ||
| 3536 | Le ramasse-miettes a un ensemble de @dfn{racines} connues : tout fichier | ||
| 3537 | dans @file{/gnu/store} atteignable depuis une racine est considéré comme | ||
| 3538 | @dfn{utilisé} et ne peut pas être supprimé ; tous les autres fichiers sont | ||
| 3539 | considérés comme @dfn{inutilisés} et peuvent être supprimés. L'ensemble des | ||
| 3540 | racines du ramasse-miettes (ou « racines du GC » pour faire court) inclue | ||
| 3541 | les profils par défaut des utilisateurs ; par défaut les liens symboliques | ||
| 3542 | sous @file{/var/guix/gcroots} représentent ces racines du GC. De nouvelles | ||
| 3543 | racines du GC peuvent être ajoutées avec la @command{guix build -- root} par | ||
| 3544 | exemple (@pxref{Invoquer guix build}). La commande @command{guix gc | ||
| 3545 | --list-roots} permet de les lister. | ||
| 3546 | |||
| 3547 | Avant de lancer @code{guix gc --collect-garbage} pour faire de la place, | ||
| 3548 | c'est souvent utile de supprimer les anciennes génération des profils | ||
| 3549 | utilisateurs ; de cette façon les anciennes constructions de paquets | ||
| 3550 | référencées par ces générations peuvent être glanées. Cela se fait en | ||
| 3551 | lançant @code{guix package --delete-generations} (@pxref{Invoquer guix package}). | ||
| 3552 | |||
| 3553 | Nous recommandons de lancer le ramasse-miettes régulièrement ou lorsque vous | ||
| 3554 | avez besoin d'espace disque. Par exemple pour garantir qu'au moins | ||
| 3555 | 5@tie{}Go d'espace reste libre sur votre disque, lancez simplement : | ||
| 3556 | |||
| 3557 | @example | ||
| 3558 | guix gc -F 5G | ||
| 3559 | @end example | ||
| 3560 | |||
| 3561 | Il est parfaitement possible de le lancer comme une tâche périodique | ||
| 3562 | non-interactive (@pxref{Exécution de tâches planifiées} pour apprendre comment | ||
| 3563 | paramétrer une telle tâche). Lancer @command{guix gc} sans argument | ||
| 3564 | ramassera autant de miettes que possible mais ça n'est pas le plus pratique | ||
| 3565 | : vous pourriez vous retrouver à reconstruire ou re-télécharger des | ||
| 3566 | logiciels « inutilisés » du point de vu du GC mais qui sont nécessaires pour | ||
| 3567 | construire d'autres logiciels — p.@: ex.@: la chaîne de compilation. | ||
| 3568 | |||
| 3569 | La command @command{guix gc} a trois modes d'opération : il peut être | ||
| 3570 | utilisé pour glaner des fichiers inutilisés (par défaut), pour supprimer des | ||
| 3571 | fichiers spécifiques (l'option @code{--delete}), pour afficher des | ||
| 3572 | informations sur le ramasse-miettes ou pour des requêtes plus avancées. Les | ||
| 3573 | options du ramasse-miettes sont : | ||
| 3574 | |||
| 3575 | @table @code | ||
| 3576 | @item --collect-garbage[=@var{min}] | ||
| 3577 | @itemx -C [@var{min}] | ||
| 3578 | Ramasse les miettes — c.-à-d.@: les fichiers inaccessibles de | ||
| 3579 | @file{/gnu/store} et ses sous-répertoires. C'est l'opération par défaut | ||
| 3580 | lorsqu'aucune option n'est spécifiée. | ||
| 3581 | |||
| 3582 | Lorsque @var{min} est donné, s'arrêter une fois que @var{min} octets ont été | ||
| 3583 | collectés. @var{min} pour être un nombre d'octets ou inclure un suffixe | ||
| 3584 | d'unité, comme @code{MiB} pour mébioctet et @code{GB} pour gigaoctet | ||
| 3585 | (@pxref{Block size, size specifications,, coreutils, GNU Coreutils}). | ||
| 3586 | |||
| 3587 | Lorsque @var{min} est omis, tout glaner. | ||
| 3588 | |||
| 3589 | @item --free-space=@var{libre} | ||
| 3590 | @itemx -F @var{libre} | ||
| 3591 | Glaner jusqu'à ce que @var{libre} espace soit disponible dans | ||
| 3592 | @file{/gnu/store} si possible ; @var{libre} est une quantité de stockage | ||
| 3593 | comme @code{500MiB} comme décrit ci-dessus. | ||
| 3594 | |||
| 3595 | Lorsque @var{libre} ou plus est disponible dans @file{/gnu/store} ne rien | ||
| 3596 | faire et s'arrêter immédiatement. | ||
| 3597 | |||
| 3598 | @item --delete-generations[=@var{durée}] | ||
| 3599 | @itemx -d [@var{durée}] | ||
| 3600 | Avant de commencer le glanage, supprimer toutes les générations plus vielles | ||
| 3601 | que @var{durée}, pour tous les profils utilisateurs ; lorsque cela est lancé | ||
| 3602 | en root, cela s'applique à tous les profils @emph{de tous les utilisateurs}. | ||
| 3603 | |||
| 3604 | Par exemple, cette commande supprime toutes les générations de tous vos | ||
| 3605 | profils plus vieilles que 2 mois (sauf s'il s'agit de la génération | ||
| 3606 | actuelle) puis libère de l'espace jusqu'à atteindre au moins 10 Go d'espace | ||
| 3607 | libre : | ||
| 3608 | |||
| 3609 | @example | ||
| 3610 | guix gc -d 2m -F 10G | ||
| 3611 | @end example | ||
| 3612 | |||
| 3613 | @item --delete | ||
| 3614 | @itemx -D | ||
| 3615 | Essayer de supprimer tous les fichiers et les répertoires du dépôt spécifiés | ||
| 3616 | en argument. Cela échoue si certains des fichiers ne sont pas dans le dépôt | ||
| 3617 | ou s'ils sont toujours utilisés. | ||
| 3618 | |||
| 3619 | @item --list-failures | ||
| 3620 | Lister les éléments du dépôt qui correspondent à des échecs de construction. | ||
| 3621 | |||
| 3622 | Cela n'affiche rien à moins que le démon n'ait été démarré avec | ||
| 3623 | @option{--cache-failures} (@pxref{Invoquer guix-daemon, | ||
| 3624 | @option{--cache-failures}}). | ||
| 3625 | |||
| 3626 | @item --list-roots | ||
| 3627 | Lister les racines du GC appartenant à l'utilisateur ; lorsque la commande | ||
| 3628 | est lancée en root, lister @emph{toutes} les racines du GC. | ||
| 3629 | |||
| 3630 | @item --clear-failures | ||
| 3631 | Supprimer les éléments du dépôt spécifiés du cache des constructions | ||
| 3632 | échouées. | ||
| 3633 | |||
| 3634 | De nouveau, cette option ne fait de sens que lorsque le démon est démarré | ||
| 3635 | avec @option{--cache-failures}. Autrement elle ne fait rien. | ||
| 3636 | |||
| 3637 | @item --list-dead | ||
| 3638 | Montrer la liste des fichiers et des répertoires inutilisés encore présents | ||
| 3639 | dans le dépôt — c.-à-d.@: les fichiers et les répertoires qui ne sont plus | ||
| 3640 | atteignables par aucune racine. | ||
| 3641 | |||
| 3642 | @item --list-live | ||
| 3643 | Montrer la liste des fichiers et des répertoires du dépôt utilisés. | ||
| 3644 | |||
| 3645 | @end table | ||
| 3646 | |||
| 3647 | En plus, les références entre les fichiers existants du dépôt peuvent être | ||
| 3648 | demandés : | ||
| 3649 | |||
| 3650 | @table @code | ||
| 3651 | |||
| 3652 | @item --references | ||
| 3653 | @itemx --referrers | ||
| 3654 | @cindex dépendances des paquets | ||
| 3655 | Lister les références (respectivement les référents) des fichiers du dépôt | ||
| 3656 | en argument. | ||
| 3657 | |||
| 3658 | @item --requisites | ||
| 3659 | @itemx -R | ||
| 3660 | @cindex closure | ||
| 3661 | Lister les prérequis des fichiers du dépôt passés en argument. Les | ||
| 3662 | prérequis sont le fichier du dépôt lui-même, leur références et les | ||
| 3663 | références de ces références, récursivement. En d'autre termes, la liste | ||
| 3664 | retournée est la @dfn{closure transitive} des fichiers du dépôt. | ||
| 3665 | |||
| 3666 | @xref{Invoquer guix size} pour un outil pour surveiller la taille de la | ||
| 3667 | closure d'un élément. @xref{Invoquer guix graph} pour un outil pour | ||
| 3668 | visualiser le graphe des références. | ||
| 3669 | |||
| 3670 | @item --derivers | ||
| 3671 | @cindex dérivation | ||
| 3672 | Renvoie les dérivations menant aux éléments du dépôt donnés | ||
| 3673 | (@pxref{Dérivations}). | ||
| 3674 | |||
| 3675 | Par exemple cette commande : | ||
| 3676 | |||
| 3677 | @example | ||
| 3678 | guix gc --derivers `guix package -I ^emacs$ | cut -f4` | ||
| 3679 | @end example | ||
| 3680 | |||
| 3681 | @noindent | ||
| 3682 | renvoie les fichiers @file{.drv} menant au paquet @code{emacs} installé dans | ||
| 3683 | votre profil. | ||
| 3684 | |||
| 3685 | Remarquez qu'il peut n'y avoir aucun fichier @file{.drv} par exemple quand | ||
| 3686 | ces fichiers ont été glanés. Il peut aussi y avoir plus d'un fichier | ||
| 3687 | @file{.drv} correspondant à cause de dérivations à sortie fixées. | ||
| 3688 | @end table | ||
| 3689 | |||
| 3690 | Enfin, les options suivantes vous permettent de vérifier l'intégrité du | ||
| 3691 | dépôt et de contrôler l'utilisation du disque. | ||
| 3692 | |||
| 3693 | @table @option | ||
| 3694 | |||
| 3695 | @item --verify[=@var{options}] | ||
| 3696 | @cindex intégrité, du dépôt | ||
| 3697 | @cindex vérification d'intégrité | ||
| 3698 | Vérifier l'intégrité du dépôt. | ||
| 3699 | |||
| 3700 | Par défaut, s'assurer que tous les éléments du dépôt marqués comme valides | ||
| 3701 | dans la base de données du démon existent bien dans @file{/gnu/store}. | ||
| 3702 | |||
| 3703 | Lorsqu'elle est fournie, l'@var{option} doit être une liste séparée par des | ||
| 3704 | virgule de l'un ou plus parmi @code{contents} et @code{repair}. | ||
| 3705 | |||
| 3706 | Lorsque vous passez @option{--verify=contents}, le démon calcul le hash du | ||
| 3707 | contenu de chaque élément du dépôt et le compare au hash de sa base de | ||
| 3708 | données. Les différences de hash sont rapportées comme des corruptions de | ||
| 3709 | données. Comme elle traverse @emph{tous les fichiers du dépôt}, cette | ||
| 3710 | commande peut prendre très longtemps pour terminer, surtout sur un système | ||
| 3711 | avec un disque lent. | ||
| 3712 | |||
| 3713 | @cindex réparer le dépôt | ||
| 3714 | @cindex corruption, récupérer de | ||
| 3715 | Utiliser @option{--verify=repair} ou @option{--verify=contents,repair} fait | ||
| 3716 | que le démon essaie de réparer les objets du dépôt corrompus en récupérant | ||
| 3717 | leurs substituts (@pxref{Substituts}). Comme la réparation n'est pas | ||
| 3718 | atomique et donc potentiellement dangereuse, elle n'est disponible que pour | ||
| 3719 | l'administrateur système. Une alternative plus légère lorsque vous | ||
| 3720 | connaissez exactement quelle entrée est corrompue consiste à lancer | ||
| 3721 | @command{guix build --repair} (@pxref{Invoquer guix build}). | ||
| 3722 | |||
| 3723 | @item --optimize | ||
| 3724 | @cindex déduplication | ||
| 3725 | Optimiser le dépôt en liant en dur les fichiers identiques — c'est la | ||
| 3726 | @dfn{déduplication}. | ||
| 3727 | |||
| 3728 | Le démon effectue une déduplication à chaque construction réussie ou import | ||
| 3729 | d'archive à moins qu'il n'ait été démarré avec | ||
| 3730 | @code{--disable-deduplication} (@pxref{Invoquer guix-daemon, | ||
| 3731 | @code{--disable-deduplication}}). Ainsi, cette option est surtout utile | ||
| 3732 | lorsque le démon tourne avec @code{--disable-deduplication}. | ||
| 3733 | |||
| 3734 | @end table | ||
| 3735 | |||
| 3736 | @node Invoquer guix pull | ||
| 3737 | @section Invoquer @command{guix pull} | ||
| 3738 | |||
| 3739 | @cindex mettre à niveau Guix | ||
| 3740 | @cindex mettre à jour Guix | ||
| 3741 | @cindex @command{guix pull} | ||
| 3742 | @cindex pull | ||
| 3743 | Les paquets sont installés ou mis à jour vers la dernière version disponible | ||
| 3744 | dans la distribution actuellement disponible sur votre machine locale. Pour | ||
| 3745 | mettre à jour cette distribution, en même temps que les outils Guix, vous | ||
| 3746 | devez lancer @command{guix pull} ; la commande télécharge le dernier code | ||
| 3747 | source de Guix et des descriptions de paquets et le déploie. Le code source | ||
| 3748 | est téléchargé depuis un dépôt @uref{https://git-scm.com, Git}, par défaut | ||
| 3749 | le dépôt officiel de GNU@tie{}Guix, bien que cela puisse être personnalisé. | ||
| 3750 | |||
| 3751 | À la fin, @command{guix package} utilisera les paquets et les versions des | ||
| 3752 | paquets de la copie de Guix tout juste récupérée. Non seulement ça, mais | ||
| 3753 | toutes les commandes Guix et les modules Scheme seront aussi récupérés | ||
| 3754 | depuis la dernière version. Les nouvelles sous-commandes de @command{guix} | ||
| 3755 | ajoutés par la mise à jour sont aussi maintenant disponibles. | ||
| 3756 | |||
| 3757 | Chaque utilisateur peut mettre à jour sa copie de Guix avec @command{guix | ||
| 3758 | pull} et l'effet est limité à l'utilisateur qui a lancé @command{guix | ||
| 3759 | pull}. Par exemple, lorsque l'utilisateur @code{root} lance @command{guix | ||
| 3760 | pull}, cela n'a pas d'effet sur la version de Guix que vois @code{alice} et | ||
| 3761 | vice-versa. | ||
| 3762 | |||
| 3763 | Le résultat après avoir lancé @command{guix pull} est un @dfn{profil} | ||
| 3764 | disponible sous @file{~/.config/guix/current} contenant la dernière version | ||
| 3765 | de Guix. Ainsi, assurez-vous de l'ajouter au début de votre chemin de | ||
| 3766 | recherche pour que vous utilisiez la dernière version. Le même conseil | ||
| 3767 | s'applique au manuel Info (@pxref{Documentation}) : | ||
| 3768 | |||
| 3769 | @example | ||
| 3770 | export PATH="$HOME/.config/guix/current/bin:$PATH" | ||
| 3771 | export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH" | ||
| 3772 | @end example | ||
| 3773 | |||
| 3774 | L'option @code{--list-generations} ou @code{-l} liste les anciennes | ||
| 3775 | générations produites par @command{guix pull}, avec des détails sur leur | ||
| 3776 | origine : | ||
| 3777 | |||
| 3778 | @example | ||
| 3779 | $ guix pull -l | ||
| 3780 | Génération 1 10 juin 2018 00:18:18 | ||
| 3781 | guix 65956ad | ||
| 3782 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | ||
| 3783 | branche : origin/master | ||
| 3784 | commit : 65956ad3526ba09e1f7a40722c96c6ef7c0936fe | ||
| 3785 | |||
| 3786 | Génération 2 11 juin 2018 11:02:49 | ||
| 3787 | guix e0cc7f6 | ||
| 3788 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | ||
| 3789 | branche : origin/master | ||
| 3790 | commit : e0cc7f669bec22c37481dd03a7941c7d11a64f1d | ||
| 3791 | 2 nouveaux paquets : keepalived, libnfnetlink | ||
| 3792 | 6 paquets mis à jour : emacs-nix-mode@@2.0.4, | ||
| 3793 | guile2.0-guix@@0.14.0-12.77a1aac, guix@@0.14.0-12.77a1aac, | ||
| 3794 | heimdal@@7.5.0, milkytracker@@1.02.00, nix@@2.0.4 | ||
| 3795 | |||
| 3796 | Génération 3 13 juin 2018 23:31:07 (actuelle) | ||
| 3797 | guix 844cc1c | ||
| 3798 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | ||
| 3799 | branche : origin/master | ||
| 3800 | commit : 844cc1c8f394f03b404c5bb3aee086922373490c | ||
| 3801 | 28 nouveaux paquets : emacs-helm-ls-git, emacs-helm-mu, @dots{} | ||
| 3802 | 69 paquets mis à jour : borg@@1.1.6, cheese@@3.28.0, @dots{} | ||
| 3803 | @end example | ||
| 3804 | |||
| 3805 | @xref{Invoquer guix describe, @command{guix describe}}, pour d'autres | ||
| 3806 | manières de décrire le statut actuel de Guix. | ||
| 3807 | |||
| 3808 | Ce profil @code{~/.config/guix/current} fonctionne comme les autres profils | ||
| 3809 | créés par @command{guix package} (@pxref{Invoquer guix package}). | ||
| 3810 | C'est-à-dire que vous pouvez lister les générations, revenir en arrière à | ||
| 3811 | une génération précédente — c.-à-d.@: la version de Guix précédente — etc : | ||
| 3812 | |||
| 3813 | @example | ||
| 3814 | $ guix package -p ~/.config/guix/current --roll-back | ||
| 3815 | passé de la génération 3 à 2 | ||
| 3816 | $ guix package -p ~/.config/guix/current --delete-generations=1 | ||
| 3817 | suppression de /var/guix/profiles/per-user/charlie/current-guix-1-link | ||
| 3818 | @end example | ||
| 3819 | |||
| 3820 | La commande @command{guix pull} est typiquement invoquée sans arguments mais | ||
| 3821 | il supporte les options suivantes : | ||
| 3822 | |||
| 3823 | @table @code | ||
| 3824 | @item --url=@var{url} | ||
| 3825 | @itemx --commit=@var{commit} | ||
| 3826 | @itemx --branch=@var{branche} | ||
| 3827 | Download code for the @code{guix} channel from the specified @var{url}, at | ||
| 3828 | the given @var{commit} (a valid Git commit ID represented as a hexadecimal | ||
| 3829 | string), or @var{branch}. | ||
| 3830 | |||
| 3831 | @cindex @file{channels.scm}, fichier de configuration | ||
| 3832 | @cindex fichier de configuration pour les canaux | ||
| 3833 | Ces options sont fournies pour votre confort, mais vous pouvez aussi | ||
| 3834 | spécifier votre configuration dans le fichier | ||
| 3835 | @file{~/.config/guix/channels.scm} ou en utilisant l'option | ||
| 3836 | @option{--channels} (voir plus bas). | ||
| 3837 | |||
| 3838 | @item --channels=@var{file} | ||
| 3839 | @itemx -C @var{file} | ||
| 3840 | Lit la liste des canaux dans @var{file} plutôt que dans | ||
| 3841 | @file{~/.config/guix/channels.scm}. @var{file} doit contenir un code Scheme | ||
| 3842 | qui s'évalue en une liste d'objets de canaux. @xref{Canaux} pour plus | ||
| 3843 | d'informations. | ||
| 3844 | |||
| 3845 | @item --list-generations[=@var{motif}] | ||
| 3846 | @itemx -l [@var{motif}] | ||
| 3847 | Liste toutes les générations de @file{~/.config/guix/current} ou, si | ||
| 3848 | @var{motif} est fournit, le sous-ensemble des générations qui correspondent | ||
| 3849 | à @var{motif}. La syntaxe de @var{motif} est la même qu'avec @code{guix | ||
| 3850 | package --list-generations} (@pxref{Invoquer guix package}). | ||
| 3851 | |||
| 3852 | @xref{Invoquer guix describe}, pour une manière d'afficher des informations | ||
| 3853 | sur la génération actuelle uniquement. | ||
| 3854 | |||
| 3855 | @item --profile=@var{profil} | ||
| 3856 | @itemx -p @var{profil} | ||
| 3857 | Utiliser le @var{profil} à la place de @file{~/.config/guix/current}. | ||
| 3858 | |||
| 3859 | @item --dry-run | ||
| 3860 | @itemx -n | ||
| 3861 | Montrer quels commits des canaux seraient utilisés et ce qui serait | ||
| 3862 | construit ou substitué mais ne pas le faire vraiment. | ||
| 3863 | |||
| 3864 | @item --system=@var{système} | ||
| 3865 | @itemx -s @var{système} | ||
| 3866 | Tenter de construire pour le @var{système} — p.@: ex.@: @code{i686-linux} — | ||
| 3867 | plutôt que pour le type de système de l'hôte de construction. | ||
| 3868 | |||
| 3869 | @item --verbose | ||
| 3870 | Produire une sortie verbeuse, en écrivant les journaux de construction sur | ||
| 3871 | la sortie d'erreur standard. | ||
| 3872 | |||
| 3873 | @item --bootstrap | ||
| 3874 | Utiliser le programme d'amorçage Guile pour construire la dernière version | ||
| 3875 | de Guix. Cette option n'est utile que pour les développeurs de Guix. | ||
| 3876 | @end table | ||
| 3877 | |||
| 3878 | Le mécanisme de @dfn{canaux} vous permet de dire à @command{guix pull} quels | ||
| 3879 | répertoires et branches récupérer, ainsi que les dépôts | ||
| 3880 | @emph{supplémentaires} contenant des modules de paquets qui devraient être | ||
| 3881 | déployés. @xref{Canaux} pour plus d'information. | ||
| 3882 | |||
| 3883 | En plus, @command{guix pull} supporte toutes les options de construction | ||
| 3884 | communes (@pxref{Options de construction communes}). | ||
| 3885 | |||
| 3886 | @node Canaux | ||
| 3887 | @section Canaux | ||
| 3888 | |||
| 3889 | @cindex canaux | ||
| 3890 | @cindex @file{channels.scm}, fichier de configuration | ||
| 3891 | @cindex fichier de configuration pour les canaux | ||
| 3892 | @cindex @command{guix pull}, fichier de configuration | ||
| 3893 | @cindex configuration de @command{guix pull} | ||
| 3894 | Guix et sa collection de paquets sont mis à jour en lançant @command{guix | ||
| 3895 | pull} (@pxref{Invoquer guix pull}). Par défaut @command{guix pull} | ||
| 3896 | télécharge et déploie Guix lui-même depuis le dépôt officiel de | ||
| 3897 | GNU@tie{}Guix. Cela peut être personnalisé en définissant des @dfn{canaux} | ||
| 3898 | dans le fichier @file{~/.config/guix/channels.scm}. Un canal spécifie l'URL | ||
| 3899 | et la branche d'un répertoire Git à déployer et on peut demander à | ||
| 3900 | @command{guix pull} de récupérer un ou plusieurs canaux. En d'autres | ||
| 3901 | termes, les canaux peuvent être utilisés pour personnaliser et pour | ||
| 3902 | @emph{étendre} Guix, comme on le verra plus bas. | ||
| 3903 | |||
| 3904 | @subsection Utiliser un canal Guix personnalisé | ||
| 3905 | |||
| 3906 | Le canal nommé @code{guix} spécifie où Guix lui-même — ses outils en ligne | ||
| 3907 | de commande ainsi que sa collection de paquets — sera téléchargé. Par | ||
| 3908 | exemple, supposons que vous voulez effectuer les mises à jour depuis votre | ||
| 3909 | propre copie du dépôt Guix sur @code{example.org}, et plus particulièrement | ||
| 3910 | depuis la branche @code{super-hacks}. Vous pouvez écrire cette | ||
| 3911 | spécification dans @code{~/.config/guix/channels.scm} : | ||
| 3912 | |||
| 3913 | @lisp | ||
| 3914 | ;; Dit à « guix pull » d'utiliser mon propre dépôt. | ||
| 3915 | (list (channel | ||
| 3916 | (name 'guix) | ||
| 3917 | (url "https://example.org/my-guix.git") | ||
| 3918 | (branch "super-hacks"))) | ||
| 3919 | @end lisp | ||
| 3920 | |||
| 3921 | @noindent | ||
| 3922 | Maintenant, @command{guix pull} récupérera le code depuis la branche | ||
| 3923 | @code{super-hacks} du dépôt sur @code{example.org}. | ||
| 3924 | |||
| 3925 | @subsection Spécifier des canaux supplémentaires | ||
| 3926 | |||
| 3927 | @cindex étendre la collection de paquets (canaux) | ||
| 3928 | @cindex paquets personnels (canaux) | ||
| 3929 | @cindex canaux, pour des paquets personnels | ||
| 3930 | Vous pouvez aussi spécifier des @emph{canaux supplémentaires} à récupérer. | ||
| 3931 | Disons que vous avez un ensemble de paquets personnels ou de variantes | ||
| 3932 | personnalisées qu'il ne vaudrait pas le coup de contribuer au projet Guix, | ||
| 3933 | mais que vous voudriez pouvoir utiliser de manière transparente sur la ligne | ||
| 3934 | de commande. Vous écririez d'abord des modules contenant ces définitions de | ||
| 3935 | paquets (@pxref{Modules de paquets}), en les maintenant dans un dépôt Git, puis | ||
| 3936 | vous ou n'importe qui d'autre pourrait l'utiliser comme un canal | ||
| 3937 | supplémentaire où trouver ces paquets. Sympa, non ? | ||
| 3938 | |||
| 3939 | @c What follows stems from discussions at | ||
| 3940 | @c <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22629#134> as well as | ||
| 3941 | @c earlier discussions on guix-devel@gnu.org. | ||
| 3942 | @quotation Attention | ||
| 3943 | Avant que vous, cher utilisateur, ne vous exclamiez « Oh mais c'est | ||
| 3944 | @emph{super génial} ! » et que vous ne publiez vos canaux personnels | ||
| 3945 | publiquement, nous voudrions vous donner quelques avertissements : | ||
| 3946 | |||
| 3947 | @itemize | ||
| 3948 | @item | ||
| 3949 | Avant de publier un canal, envisagez de contribuer vos définitions de | ||
| 3950 | paquets dans Guix (@pxref{Contribuer}). Guix en tant que projet est | ||
| 3951 | ouvert à tous les logiciels libres de toutes sortes, et les paquets dans | ||
| 3952 | Guix sont déjà disponibles à tous les utilisateurs de Guix et bénéficient | ||
| 3953 | des processus d'assurance qualité du projet. | ||
| 3954 | |||
| 3955 | @item | ||
| 3956 | Lorsque vous maintenez des définitions de paquets en dehors de Guix, nous, | ||
| 3957 | les développeurs de Guix, considérons que @emph{la charge de la | ||
| 3958 | compatibilité vous incombe}. Rappelez-vous que les modules de paquets et | ||
| 3959 | les définitions de paquets ne sont que du code Scheme qui utilise diverses | ||
| 3960 | interfaces de programmation (API). Nous souhaitons rester libres de changer | ||
| 3961 | ces API pour continuer à améliorer Guix, éventuellement d'une manière qui | ||
| 3962 | casse votre canal. Nous ne changeons jamais l'API gratuitement, mais nous | ||
| 3963 | ne nous engageons @emph{pas} à geler les API non plus. | ||
| 3964 | |||
| 3965 | @item | ||
| 3966 | Corollaire : si vous utilisez un canal externe et que le canal est cassé, | ||
| 3967 | merci de @emph{rapporter le problème à l'auteur du canal}, pas au projet | ||
| 3968 | Guix. | ||
| 3969 | @end itemize | ||
| 3970 | |||
| 3971 | Vous avez été prévenus ! Maintenant, nous pensons que des canaux externes | ||
| 3972 | sont une manière pratique d'exercer votre liberté pour augmenter la | ||
| 3973 | collection de paquets de Guix et de partager vos améliorations, qui sont les | ||
| 3974 | principes de bases du @uref{https://www.gnu.org/philosophy/free-sw.html, | ||
| 3975 | logiciel libre}. Contactez-nous par courriel sur | ||
| 3976 | @email{guix-devel@@gnu.org} si vous souhaitez discuter à ce propos. | ||
| 3977 | @end quotation | ||
| 3978 | |||
| 3979 | Pour utiliser un canal, écrivez dans @code{~/.config/guix/channels.scm} pour | ||
| 3980 | dire à @command{guix pull} de récupérer votre canal personnel @emph{en plus} | ||
| 3981 | des canaux par défaut de Guix : | ||
| 3982 | |||
| 3983 | @vindex %default-channels | ||
| 3984 | @lisp | ||
| 3985 | ;; Ajouter mes paquets personnels à ceux fournis par Guix. | ||
| 3986 | (cons (channel | ||
| 3987 | (name 'my-personal-packages) | ||
| 3988 | (url "https://example.org/personal-packages.git")) | ||
| 3989 | %default-channels) | ||
| 3990 | @end lisp | ||
| 3991 | |||
| 3992 | @noindent | ||
| 3993 | Remarquez que le bout de code au-dessus est (comme toujours !)@: du code | ||
| 3994 | Scheme ; nous utilisons @code{cons} pour ajouter un canal à la liste des | ||
| 3995 | canaux que la variable @code{%default-channels} représente (@pxref{Pairs, | ||
| 3996 | @code{cons} and lists,, guile, GNU Guile Reference Manual}). Avec ce | ||
| 3997 | fichier en place, @command{guix pull} construit non seulement Guix mais | ||
| 3998 | aussi les modules de paquets de votre propre dépôt. Le résultat dans | ||
| 3999 | @file{~/.config/guix/current} est l'union de Guix et de vos propres modules | ||
| 4000 | de paquets : | ||
| 4001 | |||
| 4002 | @example | ||
| 4003 | $ guix pull --list-generations | ||
| 4004 | @dots{} | ||
| 4005 | Génération 19 Aug 27 2018 16:20:48 | ||
| 4006 | guix d894ab8 | ||
| 4007 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | ||
| 4008 | branche : master | ||
| 4009 | commit : d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300 | ||
| 4010 | my-personal-packages dd3df5e | ||
| 4011 | URL du dépôt : https://example.org/personal-packages.git | ||
| 4012 | branche : master | ||
| 4013 | commit : dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb | ||
| 4014 | 11 nouveaux paquets : my-gimp, my-emacs-with-cool-features, @dots{} | ||
| 4015 | 4 paquets mis à jour : emacs-racket-mode@@0.0.2-2.1b78827, @dots{} | ||
| 4016 | @end example | ||
| 4017 | |||
| 4018 | @noindent | ||
| 4019 | La sortie de @command{guix pull} ci-dessus montre que la génération@tie{}19 | ||
| 4020 | contient aussi bien Guix que les paquets du canal | ||
| 4021 | @code{my-personal-packages}. Parmi les nouveaux paquets et les paquets mis | ||
| 4022 | à jour qui sont listés, certains comme @code{my-gimp} et | ||
| 4023 | @code{my-emacs-with-cool-features} peuvent provenir de | ||
| 4024 | @code{my-personal-packages}, tandis que d'autres viennent du canal par | ||
| 4025 | défaut de Guix. | ||
| 4026 | |||
| 4027 | Pour créer un canal, créez un dépôt Git contenant vos propres modules de | ||
| 4028 | paquets et rendez-le disponible. Le dépôt peut contenir tout ce que vous | ||
| 4029 | voulez, mais un canal utile contiendra des modules Guile qui exportent des | ||
| 4030 | paquets. Une fois que vous avez démarré un canal, Guix se comportera comme | ||
| 4031 | si le répertoire de la racine du dépôt Git de ce canal était ajouté au | ||
| 4032 | chemin de chargement de Guile (@pxref{Load Paths,,, guile, GNU Guile | ||
| 4033 | Reference Manual}). Par exemple, si votre canal contient un fichier | ||
| 4034 | @file{mes-paquets/mes-outils.scm} qui définit un module Guile, le module | ||
| 4035 | sera disponible sous le nom de @code{(mes-paquets mes-outils)} et vous | ||
| 4036 | pourrez l'utiliser comme les autres modules (@pxref{Modules,,, guile, GNU | ||
| 4037 | Guile Reference Manual}). | ||
| 4038 | |||
| 4039 | @cindex dépendances, canaux | ||
| 4040 | @cindex métadonnées, canaux | ||
| 4041 | @subsection Déclarer des dépendances de canaux | ||
| 4042 | |||
| 4043 | Les auteurs de canaux peuvent décider d'augmenter une collection de paquets | ||
| 4044 | fournie par d'autres canaux. Ils peuvent déclarer leur canal comme | ||
| 4045 | dépendant d'autres canaux dans le fichier de métadonnées | ||
| 4046 | @file{.guix-channel} qui doit être placé à la racine de dépôt du canal. | ||
| 4047 | |||
| 4048 | Le fichier de métadonnées devrait contenir une S-expression simple comme | ||
| 4049 | cela : | ||
| 4050 | |||
| 4051 | @lisp | ||
| 4052 | (channel | ||
| 4053 | (version 0) | ||
| 4054 | (dependencies | ||
| 4055 | (channel | ||
| 4056 | (name une-collection) | ||
| 4057 | (url "https://exemple.org/premiere-collection.git")) | ||
| 4058 | (channel | ||
| 4059 | (name some-autre-collection) | ||
| 4060 | (url "https://exemple.org/deuxieme-collection.git") | ||
| 4061 | (branch "testing")))) | ||
| 4062 | @end lisp | ||
| 4063 | |||
| 4064 | Dans l'exemple ci-dessus, ce canal est déclaré comme dépendant de deux | ||
| 4065 | autres canaux, qui seront récupérés automatiquement. Les modules fournis | ||
| 4066 | par le canal seront compilés dans un environnement où les modules de tous | ||
| 4067 | les canaux déclarés sont disponibles. | ||
| 4068 | |||
| 4069 | Pour des raisons de fiabilité et de maintenabilité, vous devriez éviter | ||
| 4070 | d'avoir des dépendances sur des canaux que vous ne maîtrisez pas et vous | ||
| 4071 | devriez ajouter le minimum de dépendances possible. | ||
| 4072 | |||
| 4073 | @subsection Répliquer Guix | ||
| 4074 | |||
| 4075 | @cindex épinglage, canaux | ||
| 4076 | @cindex répliquer Guix | ||
| 4077 | @cindex reproductibilité, de Guix | ||
| 4078 | La sortie de @command{guix pull --list-generations} ci-dessus montre | ||
| 4079 | précisément quels commits ont été utilisés pour construire cette instance de | ||
| 4080 | Guix. Nous pouvons donc la répliquer, disons sur une autre machine, en | ||
| 4081 | fournissant une spécification de canal dans | ||
| 4082 | @file{~/.config/guix/channels.scm} qui est « épinglé » à ces commits : | ||
| 4083 | |||
| 4084 | @lisp | ||
| 4085 | ;; Déployer des commits précis de mes canaux préférés. | ||
| 4086 | (list (channel | ||
| 4087 | (name 'guix) | ||
| 4088 | (url "https://git.savannah.gnu.org/git/guix.git") | ||
| 4089 | (commit "d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300")) | ||
| 4090 | (channel | ||
| 4091 | (name 'my-personal-packages) | ||
| 4092 | (url "https://example.org/personal-packages.git") | ||
| 4093 | (branch "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb"))) | ||
| 4094 | @end lisp | ||
| 4095 | |||
| 4096 | La commande @command{guix describe --format=channels} peut même générer | ||
| 4097 | cette liste de canaux directement (@pxref{Invoquer guix describe}). | ||
| 4098 | |||
| 4099 | À ce moment les deux machines font tourner @emph{exactement le même Guix}, | ||
| 4100 | avec l'accès @emph{exactement aux même paquets}. La sortie de @command{guix | ||
| 4101 | build gimp} sur une machine sera exactement la même, au bit près, que la | ||
| 4102 | sortie de la même commande sur l'autre machine. Cela signifie aussi que les | ||
| 4103 | deux machines ont accès à tous les codes sources de Guix, et transitivement, | ||
| 4104 | à tous les codes sources de tous les paquets qu'il définit. | ||
| 4105 | |||
| 4106 | Cela vous donne des super-pouvoirs, ce qui vous permet de suivre la | ||
| 4107 | provenance des artefacts binaires avec un grain très fin et de reproduire | ||
| 4108 | les environnements logiciels à volonté — une sorte de capacité de « | ||
| 4109 | méta-reproductibilité », si vous voulez. @xref{Inférieurs}, pour une autre | ||
| 4110 | manière d'utiliser ces super-pouvoirs. | ||
| 4111 | |||
| 4112 | @node Inférieurs | ||
| 4113 | @section Inférieurs | ||
| 4114 | |||
| 4115 | @c TODO: Remove this once we're more confident about API stability. | ||
| 4116 | @quotation Remarque | ||
| 4117 | La fonctionnalité décrite ici est un « démonstrateur technique » à la | ||
| 4118 | version @value{VERSION}. Ainsi, l'interface est sujette à changements. | ||
| 4119 | @end quotation | ||
| 4120 | |||
| 4121 | @cindex inférieurs | ||
| 4122 | @cindex composition de révisions de Guix | ||
| 4123 | Parfois vous pourriez avoir à mélanger des paquets de votre révision de Guix | ||
| 4124 | avec des paquets disponibles dans une révision différente de Guix. Les | ||
| 4125 | @dfn{inférieurs} de Guix vous permettent d'accomplir cette tâche en | ||
| 4126 | composant différentes versions de Guix de manière arbitraire. | ||
| 4127 | |||
| 4128 | @cindex paquets inférieurs | ||
| 4129 | Techniquement, un « inférieur » est surtout un processus Guix séparé | ||
| 4130 | connecté à votre processus Guix principal à travers un REPL (@pxref{Invoquer guix repl}). Le module @code{(guix inferior)} vous permet de créer des | ||
| 4131 | inférieurs et de communiquer avec eux. Il fournit aussi une interface de | ||
| 4132 | haut-niveau pour naviguer dans les paquets d'un inférieur — @dfn{des paquets | ||
| 4133 | inférieurs} — et les manipuler. | ||
| 4134 | |||
| 4135 | Lorsqu'on les combine avec des canaux (@pxref{Canaux}), les inférieurs | ||
| 4136 | fournissent une manière simple d'interagir avec un révision de Guix | ||
| 4137 | séparée. Par exemple, disons que vous souhaitiez installer dans votre | ||
| 4138 | profil le paquet guile actuel, avec le @code{guile-json} d'une ancienne | ||
| 4139 | révision de Guix — peut-être parce que la nouvelle version de | ||
| 4140 | @code{guile-json} a une API incompatible et que vous voulez lancer du code | ||
| 4141 | avec l'ancienne API. Pour cela, vous pourriez écrire un manifeste à | ||
| 4142 | utiliser avec @code{guix package --manifest} (@pxref{Invoquer guix package}) | ||
| 4143 | ; dans ce manifeste, vous créeriez un inférieur pour l'ancienne révision de | ||
| 4144 | Guix qui vous intéresse et vous chercheriez le paquet @code{guile-json} dans | ||
| 4145 | l'inférieur : | ||
| 4146 | |||
| 4147 | @lisp | ||
| 4148 | (use-modules (guix inferior) (guix channels) | ||
| 4149 | (srfi srfi-1)) ;pour « first » | ||
| 4150 | |||
| 4151 | (define channels | ||
| 4152 | ;; L'ancienne révision depuis laquelle on veut | ||
| 4153 | ;; extraire guile-json. | ||
| 4154 | (list (channel | ||
| 4155 | (name 'guix) | ||
| 4156 | (url "https://git.savannah.gnu.org/git/guix.git") | ||
| 4157 | (commit | ||
| 4158 | "65956ad3526ba09e1f7a40722c96c6ef7c0936fe")))) | ||
| 4159 | |||
| 4160 | (define inferior | ||
| 4161 | ;; Un inférieur représentant la révision ci-dessus. | ||
| 4162 | (inferior-for-channels channels)) | ||
| 4163 | |||
| 4164 | ;; Maintenant on crée un manifeste avec le paquet « guile » actuel | ||
| 4165 | ;; et l'ancien paquet « guile-json ». | ||
| 4166 | (packages->manifest | ||
| 4167 | (list (first (lookup-inferior-packages inferior "guile-json")) | ||
| 4168 | (specification->package "guile"))) | ||
| 4169 | @end lisp | ||
| 4170 | |||
| 4171 | Durant la première exécution, @command{guix package --manifest} pourrait | ||
| 4172 | avoir besoin de construire le canal que vous avez spécifié avant de créer | ||
| 4173 | l'inférieur ; les exécutions suivantes seront bien plus rapides parce que la | ||
| 4174 | révision de Guix sera déjà en cache. | ||
| 4175 | |||
| 4176 | Le module @code{(guix inferior)} fournit les procédures suivantes pour | ||
| 4177 | ouvrir un inférieur : | ||
| 4178 | |||
| 4179 | @deffn {Procédure Scheme} inferior-for-channels @var{channels} @ | ||
| 4180 | [#:cache-directory] [#:ttl] | ||
| 4181 | Renvoie un inférieur pour @var{channels}, une liste de canaux. Elle utilise | ||
| 4182 | le cache dans @var{cache-directory}, où les entrées peuvent être glanées | ||
| 4183 | après @var{ttl} secondes. Cette procédure ouvre une nouvelle connexion au | ||
| 4184 | démon de construction. | ||
| 4185 | |||
| 4186 | Elle a pour effet de bord de construire ou de substituer des binaires pour | ||
| 4187 | @var{channels}, ce qui peut prendre du temps. | ||
| 4188 | @end deffn | ||
| 4189 | |||
| 4190 | @deffn {Procédure Scheme} open-inferior @var{directory} @ | ||
| 4191 | [#:command "bin/guix"] | ||
| 4192 | Ouvre le Guix inférieur dans @var{directory} et lance | ||
| 4193 | @code{@var{directory}/@var{command} repl} ou équivalent. Renvoie @code{#f} | ||
| 4194 | si l'inférieur n'a pas pu être lancé. | ||
| 4195 | @end deffn | ||
| 4196 | |||
| 4197 | @cindex paquets inférieurs | ||
| 4198 | Les procédures listées plus bas vous permettent d'obtenir et de manipuler | ||
| 4199 | des paquets inférieurs. | ||
| 4200 | |||
| 4201 | @deffn {Procédure Scheme} inferior-packages @var{inferior} | ||
| 4202 | Renvoie la liste des paquets connus de l'inférieur @var{inferior}. | ||
| 4203 | @end deffn | ||
| 4204 | |||
| 4205 | @deffn {Procédure Scheme} lookup-inferior-packages @var{inferior} @var{name} @ | ||
| 4206 | [@var{version}] | ||
| 4207 | Renvoie la liste triée des paquets inférieurs qui correspondent à @var{name} | ||
| 4208 | dans @var{inferior}, avec le plus haut numéro de version en premier. Si | ||
| 4209 | @var{version} est vrai, renvoie seulement les paquets avec un numéro de | ||
| 4210 | version préfixé par @var{version}. | ||
| 4211 | @end deffn | ||
| 4212 | |||
| 4213 | @deffn {Procédure Scheme} inferior-package? @var{obj} | ||
| 4214 | Renvoie vrai si @var{obj} est un paquet inférieur. | ||
| 4215 | @end deffn | ||
| 4216 | |||
| 4217 | @deffn {Procédure Scheme} inferior-package-name @var{package} | ||
| 4218 | @deffnx {Procédure Scheme} inferior-package-version @var{package} | ||
| 4219 | @deffnx {Procédure Scheme} inferior-package-synopsis @var{package} | ||
| 4220 | @deffnx {Procédure Scheme} inferior-package-description @var{package} | ||
| 4221 | @deffnx {Procédure Scheme} inferior-package-home-page @var{package} | ||
| 4222 | @deffnx {Procédure Scheme} inferior-package-location @var{package} | ||
| 4223 | @deffnx {Procédure Scheme} inferior-package-inputs @var{package} | ||
| 4224 | @deffnx {Procédure Scheme} inferior-package-native-inputs @var{package} | ||
| 4225 | @deffnx {Procédure Scheme} inferior-package-propagated-inputs @var{package} | ||
| 4226 | @deffnx {Procédure Scheme} inferior-package-transitive-propagated-inputs @var{package} | ||
| 4227 | @deffnx {Procédure Scheme} inferior-package-native-search-paths @var{package} | ||
| 4228 | @deffnx {Procédure Scheme} inferior-package-transitive-native-search-paths @var{package} | ||
| 4229 | @deffnx {Procédure Scheme} inferior-package-search-paths @var{package} | ||
| 4230 | Ces procédures sont la contrepartie des accesseurs des enregistrements de | ||
| 4231 | paquets (@pxref{Référence des paquets}). La plupart fonctionne en effectuant | ||
| 4232 | des requêtes à l'inférieur dont provient @var{package}, donc l'inférieur | ||
| 4233 | doit toujours être disponible lorsque vous appelez ces procédures. | ||
| 4234 | @end deffn | ||
| 4235 | |||
| 4236 | Les paquets inférieurs peuvent être utilisés de manière transparente comme | ||
| 4237 | tout autre paquet ou objet simili-fichier dans des G-expressions | ||
| 4238 | (@pxref{G-Expressions}). Ils sont aussi gérés de manière transparente par | ||
| 4239 | la procédure @code{packages->manifest}, qui est typiquement utilisée dans | ||
| 4240 | des manifestes (@pxref{Invoquer guix package, l'option @option{--manifest} | ||
| 4241 | de @command{guix package}}). Ainsi, vous pouvez insérer un paquet inférieur | ||
| 4242 | à peu près n'importe où vous utiliseriez un paquet normal : dans des | ||
| 4243 | manifestes, dans le champ @code{packages} de votre déclaration | ||
| 4244 | @code{operating-system}, etc. | ||
| 4245 | |||
| 4246 | @node Invoquer guix describe | ||
| 4247 | @section Invoquer @command{guix describe} | ||
| 4248 | |||
| 4249 | @cindex reproductibilité | ||
| 4250 | @cindex répliquer Guix | ||
| 4251 | Souvent vous voudrez répondre à des questions comme « quelle révision de | ||
| 4252 | Guix j'utilise ? » ou « quels canaux est-ce que j'utilise ? ». C'est une | ||
| 4253 | information utile dans de nombreuses situations : si vous voulez | ||
| 4254 | @emph{répliquer} un environnement sur une machine différente ou un compte | ||
| 4255 | utilisateur, si vous voulez rapporter un bogue ou pour déterminer quel | ||
| 4256 | changement dans les canaux que vous utilisez l'a causé ou si vous voulez | ||
| 4257 | enregistrer l'état de votre système pour le reproduire. La commande | ||
| 4258 | @command{guix describe} répond à ces questions. | ||
| 4259 | |||
| 4260 | Lorsqu'elle est lancée depuis un @command{guix} mis à jour avec | ||
| 4261 | @command{guix pull}, @command{guix describe} affiche les canaux qui ont été | ||
| 4262 | construits, avec l'URL de leur dépôt et l'ID de leur commit | ||
| 4263 | (@pxref{Canaux}) : | ||
| 4264 | |||
| 4265 | @example | ||
| 4266 | $ guix describe | ||
| 4267 | Generation 10 03 sep. 2018 17:32:44 (actuelle) | ||
| 4268 | guix e0fa68c | ||
| 4269 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | ||
| 4270 | branche : master | ||
| 4271 | commit : e0fa68c7718fffd33d81af415279d6ddb518f727 | ||
| 4272 | @end example | ||
| 4273 | |||
| 4274 | Si vous connaissez bien le système de contrôle de version Git, cela | ||
| 4275 | ressemble en essence à @command{git describe} ; la sortie est aussi | ||
| 4276 | similaire à celle de @command{guix pull --list-generations}, mais limitée à | ||
| 4277 | la génération actuelle (@pxref{Invoquer guix pull, l'option | ||
| 4278 | @option{--list-generations}}). Comme l'ID de commit de Git ci-dessus se | ||
| 4279 | réfère sans aucune ambiguïté à un instantané de Guix, cette information est | ||
| 4280 | tout ce dont vous avez besoin pour décrire la révision de Guix que vous | ||
| 4281 | utilisez et pour la répliquer. | ||
| 4282 | |||
| 4283 | Pour rendre plus facile la réplication de Guix, @command{guix describe} peut | ||
| 4284 | aussi renvoyer une liste de canaux plutôt que la description lisible par un | ||
| 4285 | humain au-dessus : | ||
| 4286 | |||
| 4287 | @example | ||
| 4288 | $ guix describe -f channels | ||
| 4289 | (list (channel | ||
| 4290 | (name 'guix) | ||
| 4291 | (url "https://git.savannah.gnu.org/git/guix.git") | ||
| 4292 | (commit | ||
| 4293 | "e0fa68c7718fffd33d81af415279d6ddb518f727"))) | ||
| 4294 | @end example | ||
| 4295 | |||
| 4296 | @noindent | ||
| 4297 | Vous pouvez sauvegarder ceci dans un fichier et le donner à @command{guix | ||
| 4298 | pull -C} sur une autre machine ou plus tard, ce qui instantiera | ||
| 4299 | @emph{exactement la même révision de Guix} (@pxref{Invoquer guix pull, | ||
| 4300 | l'option @option{-C}}). À partir de là, comme vous pouvez déployer la même | ||
| 4301 | révision de Guix, vous pouvez aussi bien @emph{répliquer un environnement | ||
| 4302 | logiciel complet}. Nous pensons humblement que c'est @emph{génial}, et nous | ||
| 4303 | espérons que vous aimerez ça aussi ! | ||
| 4304 | |||
| 4305 | Voici les détails des options supportées par @command{guix describe} : | ||
| 4306 | |||
| 4307 | @table @code | ||
| 4308 | @item --format=@var{format} | ||
| 4309 | @itemx -f @var{format} | ||
| 4310 | Produire la sortie dans le @var{format} donné, parmi : | ||
| 4311 | |||
| 4312 | @table @code | ||
| 4313 | @item human | ||
| 4314 | produire une sortie lisible par un humain, | ||
| 4315 | @item canaux | ||
| 4316 | produire une liste de spécifications de canaux qui peut être passée à | ||
| 4317 | @command{guix pull -C} ou installée dans @file{~/.config/guix/channels.scm} | ||
| 4318 | (@pxref{Invoquer guix pull}), | ||
| 4319 | @item json | ||
| 4320 | @cindex JSON | ||
| 4321 | produire une liste de spécifications de canaux dans le format JSON, | ||
| 4322 | @item recutils | ||
| 4323 | produire une liste de spécifications de canaux dans le format Recutils. | ||
| 4324 | @end table | ||
| 4325 | |||
| 4326 | @item --profile=@var{profil} | ||
| 4327 | @itemx -p @var{profil} | ||
| 4328 | Afficher les informations sur le @var{profil}. | ||
| 4329 | @end table | ||
| 4330 | |||
| 4331 | @node Invoquer guix archive | ||
| 4332 | @section Invoquer @command{guix archive} | ||
| 4333 | |||
| 4334 | @cindex @command{guix archive} | ||
| 4335 | @cindex archive | ||
| 4336 | La commande @command{guix archive} permet aux utilisateurs d'@dfn{exporter} | ||
| 4337 | des fichiers du dépôt dans une simple archive puis ensuite de les | ||
| 4338 | @dfn{importer} sur une machine qui fait tourner Guix. En particulier, elle | ||
| 4339 | permet de transférer des fichiers du dépôt d'une machine vers le dépôt d'une | ||
| 4340 | autre machine. | ||
| 4341 | |||
| 4342 | @quotation Remarque | ||
| 4343 | Si vous chercher une manière de produire des archives dans un format adapté | ||
| 4344 | pour des outils autres que Guix, @pxref{Invoquer guix pack}. | ||
| 4345 | @end quotation | ||
| 4346 | |||
| 4347 | @cindex exporter des éléments du dépôt | ||
| 4348 | Pour exporter des fichiers du dépôt comme une archive sur la sortie | ||
| 4349 | standard, lancez : | ||
| 4350 | |||
| 4351 | @example | ||
| 4352 | guix archive --export @var{options} @var{spécifications}... | ||
| 4353 | @end example | ||
| 4354 | |||
| 4355 | @var{spécifications} peut être soit des noms de fichiers soit des | ||
| 4356 | spécifications de paquets, comme pour @command{guix package} | ||
| 4357 | (@pxref{Invoquer guix package}). Par exemple, la commande suivante crée une | ||
| 4358 | archive contenant la sortie @code{gui} du paquet @code{git} et la sortie | ||
| 4359 | principale de @code{emacs} : | ||
| 4360 | |||
| 4361 | @example | ||
| 4362 | guix archive --export git:gui /gnu/store/...-emacs-24.3 > great.nar | ||
| 4363 | @end example | ||
| 4364 | |||
| 4365 | Si les paquets spécifiés ne sont pas déjà construits, @command{guix archive} | ||
| 4366 | les construit automatiquement. Le processus de construction peut être | ||
| 4367 | contrôlé avec les options de construction communes (@pxref{Options de construction communes}). | ||
| 4368 | |||
| 4369 | Pour transférer le paquet @code{emacs} vers une machine connectée en SSH, on | ||
| 4370 | pourrait lancer : | ||
| 4371 | |||
| 4372 | @example | ||
| 4373 | guix archive --export -r emacs | ssh la-machine guix archive --import | ||
| 4374 | @end example | ||
| 4375 | |||
| 4376 | @noindent | ||
| 4377 | De même, on peut transférer un profil utilisateur complet d'une machine à | ||
| 4378 | une autre comme cela : | ||
| 4379 | |||
| 4380 | @example | ||
| 4381 | guix archive --export -r $(readlink -f ~/.guix-profile) | \ | ||
| 4382 | ssh la-machine guix-archive --import | ||
| 4383 | @end example | ||
| 4384 | |||
| 4385 | @noindent | ||
| 4386 | Cependant, remarquez que, dans les deux exemples, le paquet @code{emacs}, le | ||
| 4387 | profil ainsi que toutes leurs dépendances sont transférées (à cause de | ||
| 4388 | @code{-r}), indépendamment du fait qu'ils soient disponibles dans le dépôt | ||
| 4389 | de la machine cible. L'option @code{--missing} peut vous aider à comprendre | ||
| 4390 | les éléments qui manquent dans le dépôt de la machine cible. La commande | ||
| 4391 | @command{guix copy} simplifie et optimise ce processus, c'est donc ce que | ||
| 4392 | vous devriez utiliser dans ce cas (@pxref{Invoquer guix copy}). | ||
| 4393 | |||
| 4394 | @cindex nar, format d'archive | ||
| 4395 | @cindex archive normalisée (nar) | ||
| 4396 | Les archives sont stockées au format « archive normalisé » ou « nar », qui | ||
| 4397 | est comparable dans l'esprit à « tar » mais avec des différences qui le | ||
| 4398 | rendent utilisable pour ce qu'on veut faire. Tout d'abord, au lieu de | ||
| 4399 | stocker toutes les métadonnées Unix de chaque fichier, le format nar ne | ||
| 4400 | mentionne que le type de fichier (normal, répertoire ou lien symbolique) ; | ||
| 4401 | les permissions Unix, le groupe et l'utilisateur ne sont pas mentionnés. | ||
| 4402 | Ensuite, l'ordre dans lequel les entrées de répertoires sont stockés suit | ||
| 4403 | toujours l'ordre des noms de fichier dans l'environnement linguistique C. | ||
| 4404 | Cela rend la production des archives entièrement déterministe. | ||
| 4405 | |||
| 4406 | @c FIXME: Add xref to daemon doc about signatures. | ||
| 4407 | Lors de l'export, le démon signe numériquement le contenu de l'archive et | ||
| 4408 | cette signature est ajoutée à la fin du fichier. Lors de l'import, le démon | ||
| 4409 | vérifie la signature et rejette l'import en cas de signature invalide ou si | ||
| 4410 | la clef de signature n'est pas autorisée. | ||
| 4411 | |||
| 4412 | Les principales options sont : | ||
| 4413 | |||
| 4414 | @table @code | ||
| 4415 | @item --export | ||
| 4416 | Exporter les fichiers ou les paquets du dépôt (voir plus bas). Écrire | ||
| 4417 | l'archive résultante sur la sortie standard. | ||
| 4418 | |||
| 4419 | Les dépendances ne sont @emph{pas} incluses dans la sortie à moins que | ||
| 4420 | @code{--recursive} ne soit passé. | ||
| 4421 | |||
| 4422 | @item -r | ||
| 4423 | @itemx --recursive | ||
| 4424 | En combinaison avec @code{--export}, cette option demande à @command{guix | ||
| 4425 | archive} d'inclure les dépendances des éléments donnés dans l'archive. | ||
| 4426 | Ainsi, l'archive résultante est autonome : elle contient la closure des | ||
| 4427 | éléments du dépôt exportés. | ||
| 4428 | |||
| 4429 | @item --import | ||
| 4430 | Lire une archive depuis l'entrée standard et importer les fichiers inclus | ||
| 4431 | dans le dépôt. Annuler si l'archive a une signature invalide ou si elle est | ||
| 4432 | signée par une clef publique qui ne se trouve pas dans le clefs autorisées | ||
| 4433 | (voir @code{--authorize} plus bas.) | ||
| 4434 | |||
| 4435 | @item --missing | ||
| 4436 | Liste une liste de noms de fichiers du dépôt sur l'entrée standard, un par | ||
| 4437 | ligne, et écrit sur l'entrée standard le sous-ensemble de ces fichiers qui | ||
| 4438 | manquent dans le dépôt. | ||
| 4439 | |||
| 4440 | @item --generate-key[=@var{paramètres}] | ||
| 4441 | @cindex signature, archives | ||
| 4442 | Générer une nouvelle paire de clefs pour le démon. Cela est un prérequis | ||
| 4443 | avant que les archives ne puissent être exportées avec @code{--export}. | ||
| 4444 | Remarquez que cette opération prend généralement du temps parce qu'elle doit | ||
| 4445 | récupère suffisamment d'entropie pour générer la paire de clefs. | ||
| 4446 | |||
| 4447 | La paire de clefs générée est typiquement stockée dans @file{/etc/guix}, | ||
| 4448 | dans @file{signing-key.pub} (clef publique) et @file{signing-key.sec} (clef | ||
| 4449 | privée, qui doit rester secrète). Lorsque @var{paramètres} est omis, une | ||
| 4450 | clef ECDSA utilisant la courbe Ed25519 est générée ou pour les version de | ||
| 4451 | libgcrypt avant 1.6.0, une clef RSA de 4096 bits. Autrement, | ||
| 4452 | @var{paramètres} peut spécifier les paramètres @code{genkey} adaptés pour | ||
| 4453 | libgcrypt (@pxref{General public-key related Functions, | ||
| 4454 | @code{gcry_pk_genkey},, gcrypt, The Libgcrypt Reference Manual}). | ||
| 4455 | |||
| 4456 | @item --authorize | ||
| 4457 | @cindex autorisation, archives | ||
| 4458 | Autoriser les imports signés par la clef publique passée sur l'entrée | ||
| 4459 | standard. La clef publique doit être au « format avancé s-expression » — | ||
| 4460 | c.-à-d.@: le même format que le fichier @file{signing-key.pub}. | ||
| 4461 | |||
| 4462 | La liste des clefs autorisées est gardée dans un fichier modifiable par des | ||
| 4463 | humains dans @file{/etc/guix/acl}. Le fichier contient des | ||
| 4464 | @url{http://people.csail.mit.edu/rivest/Sexp.txt, « s-expressions au format | ||
| 4465 | avancé »} et est structuré comme une liste de contrôle d'accès dans | ||
| 4466 | l'@url{http://theworld.com/~cme/spki.txt, infrastructure à clefs publiques | ||
| 4467 | simple (SPKI)}. | ||
| 4468 | |||
| 4469 | @item --extract=@var{répertoire} | ||
| 4470 | @itemx -x @var{répertoire} | ||
| 4471 | Lit une archive à un seul élément telle que servie par un serveur de | ||
| 4472 | substituts (@pxref{Substituts}) et l'extrait dans @var{répertoire}. C'est | ||
| 4473 | une opération de bas niveau requise seulement dans de rares cas d'usage ; | ||
| 4474 | voir plus loin. | ||
| 4475 | |||
| 4476 | Par exemple, la commande suivante extrait le substitut pour Emacs servi par | ||
| 4477 | @code{@value{SUBSTITUTE-SERVER}} dans @file{/tmp/emacs} : | ||
| 4478 | |||
| 4479 | @example | ||
| 4480 | $ wget -O - \ | ||
| 4481 | https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-emacs-24.5 \ | ||
| 4482 | | bunzip2 | guix archive -x /tmp/emacs | ||
| 4483 | @end example | ||
| 4484 | |||
| 4485 | Les archives à un seul élément sont différentes des archives à plusieurs | ||
| 4486 | éléments produites par @command{guix archive --export} ; elles contiennent | ||
| 4487 | un seul élément du dépôt et elles n'embarquent @emph{pas} de signature. | ||
| 4488 | Ainsi cette opération ne vérifie @emph{pas} de signature et sa sortie | ||
| 4489 | devrait être considérée comme non sûre. | ||
| 4490 | |||
| 4491 | Le but principal de cette opération est de faciliter l'inspection du contenu | ||
| 4492 | des archives venant de serveurs auxquels on ne fait potentiellement pas | ||
| 4493 | confiance. | ||
| 4494 | |||
| 4495 | @end table | ||
| 4496 | |||
| 4497 | |||
| 4498 | @c ********************************************************************* | ||
| 4499 | @node Développement | ||
| 4500 | @chapter Développement | ||
| 4501 | |||
| 4502 | @cindex développement logiciel | ||
| 4503 | Si vous êtes développeur de logiciels, Guix fournit des outils que vous | ||
| 4504 | devriez trouver utiles — indépendamment du langage dans lequel vous | ||
| 4505 | développez. C'est ce dont parle ce chapitre. | ||
| 4506 | |||
| 4507 | La commande @command{guix environment} permet de créer des | ||
| 4508 | @dfn{environnements de développement} confortables contenant toutes les | ||
| 4509 | dépendances et les outils nécessaires pour travailler sur le paquet logiciel | ||
| 4510 | de votre choix. La commande @command{guix pack} vous permet de créer des | ||
| 4511 | @dfn{lots applicatifs} qui peuvent facilement être distribués à des | ||
| 4512 | utilisateurs qui n'utilisent pas Guix. | ||
| 4513 | |||
| 4514 | @menu | ||
| 4515 | * Invoquer guix environment:: Mettre en place des environnements de | ||
| 4516 | développement. | ||
| 4517 | * Invoquer guix pack:: Créer des lots de logiciels. | ||
| 4518 | @end menu | ||
| 4519 | |||
| 4520 | @node Invoquer guix environment | ||
| 4521 | @section Invoquer @command{guix environment} | ||
| 4522 | |||
| 4523 | @cindex environnements de construction reproductibles | ||
| 4524 | @cindex environnement de développement | ||
| 4525 | @cindex @command{guix environment} | ||
| 4526 | @cindex environnement de construction de paquets | ||
| 4527 | Le but de @command{guix environment} est d'assister les hackers dans la | ||
| 4528 | création d'environnements de développement reproductibles sans polluer leur | ||
| 4529 | profil de paquets. L'outil @command{guix environment} prend un ou plusieurs | ||
| 4530 | paquets, construit leurs entrées et crée un environnement shell pour pouvoir | ||
| 4531 | les utiliser. | ||
| 4532 | |||
| 4533 | La syntaxe générale est : | ||
| 4534 | |||
| 4535 | @example | ||
| 4536 | guix environment @var{options} @var{paquet}@dots{} | ||
| 4537 | @end example | ||
| 4538 | |||
| 4539 | L'exemple suivant crée un nouveau shell préparé pour le développement de | ||
| 4540 | GNU@tie{}Guile : | ||
| 4541 | |||
| 4542 | @example | ||
| 4543 | guix environment guile | ||
| 4544 | @end example | ||
| 4545 | |||
| 4546 | Si les dépendances requises ne sont pas déjà construites, @command{guix | ||
| 4547 | environment} les construit automatiquement. L'environnement du nouveau | ||
| 4548 | shell est une version améliorée de l'environnement dans lequel @command{guix | ||
| 4549 | environment} a été lancé. Il contient les chemins de recherche nécessaires | ||
| 4550 | à la construction du paquet donné en plus des variables d'environnement | ||
| 4551 | existantes. Pour créer un environnement « pur », dans lequel les variables | ||
| 4552 | d'environnement de départ ont été nettoyées, utilisez l'option | ||
| 4553 | @code{--pure}@footnote{Les utilisateurs ajoutent parfois à tord des valeurs | ||
| 4554 | supplémentaires dans les variables comme @code{PATH} dans leur | ||
| 4555 | @file{~/.bashrc}. En conséquence, lorsque @code{guix environment} le lance, | ||
| 4556 | Bash peut lire @file{~/.bashrc}, ce qui produit des « impuretés » dans ces | ||
| 4557 | variables d'environnement. C'est une erreur de définir ces variables | ||
| 4558 | d'environnement dans @file{.bashrc} ; à la place, elles devraient être | ||
| 4559 | définie dans @file{.bash_profile}, qui est sourcé uniquement par les shells | ||
| 4560 | de connexion. @xref{Bash Startup Files,,, bash, The GNU Bash Reference | ||
| 4561 | Manual}, pour des détails sur les fichiers de démarrage de Bash.}. | ||
| 4562 | |||
| 4563 | @vindex GUIX_ENVIRONMENT | ||
| 4564 | @command{guix environment} définie la variable @code{GUIX_ENVIRONMENT} dans | ||
| 4565 | le shell qu'il crée ; sa valeur est le nom de fichier du profil de cet | ||
| 4566 | environnement. Cela permet aux utilisateur, disons, de définir un prompt | ||
| 4567 | spécifique pour les environnement de développement dans leur @file{.bashrc} | ||
| 4568 | (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}) : | ||
| 4569 | |||
| 4570 | @example | ||
| 4571 | if [ -n "$GUIX_ENVIRONMENT" ] | ||
| 4572 | then | ||
| 4573 | export PS1="\u@@\h \w [dev]\$ " | ||
| 4574 | fi | ||
| 4575 | @end example | ||
| 4576 | |||
| 4577 | @noindent | ||
| 4578 | …@: ou de naviguer dans le profil : | ||
| 4579 | |||
| 4580 | @example | ||
| 4581 | $ ls "$GUIX_ENVIRONMENT/bin" | ||
| 4582 | @end example | ||
| 4583 | |||
| 4584 | En plus, plus d'un paquet peut être spécifié, auquel cas l'union des entrées | ||
| 4585 | des paquets données est utilisée. Par exemple, la commande ci-dessous crée | ||
| 4586 | un shell où toutes les dépendances de Guile et Emacs sont disponibles : | ||
| 4587 | |||
| 4588 | @example | ||
| 4589 | guix environment guile emacs | ||
| 4590 | @end example | ||
| 4591 | |||
| 4592 | Parfois, une session shell interactive est inutile. On peut invoquer une | ||
| 4593 | commande arbitraire en plaçant le jeton @code{--} pour séparer la commande | ||
| 4594 | du reste des arguments : | ||
| 4595 | |||
| 4596 | @example | ||
| 4597 | guix environment guile -- make -j4 | ||
| 4598 | @end example | ||
| 4599 | |||
| 4600 | Dans d'autres situations, il est plus pratique de spécifier la liste des | ||
| 4601 | paquets requis dans l'environnement. Par exemple, la commande suivante | ||
| 4602 | lance @command{python} dans un environnement contenant Python@tie{}2.7 et | ||
| 4603 | NumPy : | ||
| 4604 | |||
| 4605 | @example | ||
| 4606 | guix environment --ad-hoc python2-numpy python-2.7 -- python | ||
| 4607 | @end example | ||
| 4608 | |||
| 4609 | En plus, on peut vouloir les dépendance d'un paquet et aussi des paquets | ||
| 4610 | supplémentaires qui ne sont pas des dépendances à l'exécution ou à la | ||
| 4611 | construction, mais qui sont utiles au développement tout de même. À cause | ||
| 4612 | de cela, le drapeau @code{--ad-hoc} est positionnel. Les paquets qui | ||
| 4613 | apparaissent avant @code{--ad-hoc} sont interprétés comme les paquets dont | ||
| 4614 | les dépendances seront ajoutées à l'environnement. Les paquets qui | ||
| 4615 | apparaissent après @code{--ad-hoc} sont interprétés comme les paquets à | ||
| 4616 | ajouter à l'environnement directement. Par exemple, la commande suivante | ||
| 4617 | crée un environnement de développement pour Guix avec les paquets Git et | ||
| 4618 | strace en plus : | ||
| 4619 | |||
| 4620 | @example | ||
| 4621 | guix environment guix --ad-hoc git strace | ||
| 4622 | @end example | ||
| 4623 | |||
| 4624 | Parfois il est souhaitable d'isoler l'environnement le plus possible, pour | ||
| 4625 | une pureté et une reproductibilité maximale. En particulier, lorsque vous | ||
| 4626 | utilisez Guix sur une distribution hôte qui n'est pas le système Guix, il | ||
| 4627 | est souhaitable d'éviter l'accès à @file{/usr/bin} et d'autres ressources du | ||
| 4628 | système depuis les environnements de développement. Par exemple, la | ||
| 4629 | commande suivante crée un REPL Guile dans un « conteneur » où seuls le dépôt | ||
| 4630 | et le répertoire de travail actuel sont montés : | ||
| 4631 | |||
| 4632 | @example | ||
| 4633 | guix environment --ad-hoc --container guile -- guile | ||
| 4634 | @end example | ||
| 4635 | |||
| 4636 | @quotation Remarque | ||
| 4637 | L'option @code{--container} requiert Linux-libre 3.19 ou supérieur. | ||
| 4638 | @end quotation | ||
| 4639 | |||
| 4640 | Les options disponibles sont résumées ci-dessous. | ||
| 4641 | |||
| 4642 | @table @code | ||
| 4643 | @item --root=@var{fichier} | ||
| 4644 | @itemx -r @var{fichier} | ||
| 4645 | @cindex environnement persistent | ||
| 4646 | @cindex racine du ramasse-miettes, pour les environnements | ||
| 4647 | Fait de @var{fichier} un lien symbolique vers le profil de cet | ||
| 4648 | environnement, et l'enregistre comme une racine du ramasse-miettes. | ||
| 4649 | |||
| 4650 | C'est utile si vous souhaitez protéger votre environnement du | ||
| 4651 | ramasse-miettes, pour le rendre « persistent ». | ||
| 4652 | |||
| 4653 | Lorsque cette option est omise, l'environnement n'est protégé du | ||
| 4654 | ramasse-miettes que le temps de la session @command{guix environment}. Cela | ||
| 4655 | signifie que la prochaine fois que vous créerez le même environnement, vous | ||
| 4656 | pourriez avoir à reconstruire ou télécharger des paquets. @xref{Invoquer guix gc}, pour plus d'informations sur les racines du GC. | ||
| 4657 | |||
| 4658 | @item --expression=@var{expr} | ||
| 4659 | @itemx -e @var{expr} | ||
| 4660 | Crée un environnement pour le paquet ou la liste de paquets en lesquels | ||
| 4661 | s'évalue @var{expr}. | ||
| 4662 | |||
| 4663 | Par exemple, lancer : | ||
| 4664 | |||
| 4665 | @example | ||
| 4666 | guix environment -e '(@@ (gnu packages maths) petsc-openmpi)' | ||
| 4667 | @end example | ||
| 4668 | |||
| 4669 | démarre un shell avec l'environnement pour cette variante spécifique du | ||
| 4670 | paquet PETSc. | ||
| 4671 | |||
| 4672 | Lancer : | ||
| 4673 | |||
| 4674 | @example | ||
| 4675 | guix environment --ad-hoc -e '(@@ (gnu) %base-packages)' | ||
| 4676 | @end example | ||
| 4677 | |||
| 4678 | démarre un shell où tous les paquets de base du système sont disponibles. | ||
| 4679 | |||
| 4680 | Les commande au-dessus n'utilisent que les sorties par défaut des paquets | ||
| 4681 | donnés. Pour choisir d'autres sorties, on peut spécifier des pairs : | ||
| 4682 | |||
| 4683 | @example | ||
| 4684 | guix environment --ad-hoc -e '(list (@@ (gnu packages bash) bash) "include")' | ||
| 4685 | @end example | ||
| 4686 | |||
| 4687 | @item --load=@var{fichier} | ||
| 4688 | @itemx -l @var{fichier} | ||
| 4689 | Crée un environnement pour le paquet ou la liste de paquets en lesquels | ||
| 4690 | @var{fichier} s'évalue. | ||
| 4691 | |||
| 4692 | Par exemple, @var{fichier} peut contenir une définition comme celle-ci | ||
| 4693 | (@pxref{Définition des paquets}) : | ||
| 4694 | |||
| 4695 | @example | ||
| 4696 | @verbatiminclude environment-gdb.scm | ||
| 4697 | @end example | ||
| 4698 | |||
| 4699 | @item --manifest=@var{fichier} | ||
| 4700 | @itemx -m @var{fichier} | ||
| 4701 | Crée un environnement pour les paquets contenus dans l'objet manifeste | ||
| 4702 | renvoyé par le code Scheme dans @var{fichier}. | ||
| 4703 | |||
| 4704 | C'est similaire à l'option de même nom de @command{guix package} | ||
| 4705 | (@pxref{profile-manifest, @option{--manifest}}) et utilise les même fichiers | ||
| 4706 | manifestes. | ||
| 4707 | |||
| 4708 | @item --ad-hoc | ||
| 4709 | Inclut tous les paquets spécifiés dans l'environnement qui en résulte, comme | ||
| 4710 | si un paquet @i{ad hoc} était spécifié, avec ces paquets comme entrées. | ||
| 4711 | Cette option est utile pour créer un environnement rapidement sans avoir à | ||
| 4712 | écrire une expression de paquet contenant les entrées désirées. | ||
| 4713 | |||
| 4714 | Par exemple la commande : | ||
| 4715 | |||
| 4716 | @example | ||
| 4717 | guix environment --ad-hoc guile guile-sdl -- guile | ||
| 4718 | @end example | ||
| 4719 | |||
| 4720 | lance @command{guile} dans un environnement où Guile et Guile-SDDL sont | ||
| 4721 | disponibles. | ||
| 4722 | |||
| 4723 | Remarquez que cet exemple demande implicitement la sortie par défaut de | ||
| 4724 | @code{guile} et @code{guile-sdl}, mais il est possible de demander une | ||
| 4725 | sortie spécifique — p.@: ex.@: @code{glib:bin} demande la sortie @code{bin} | ||
| 4726 | de @code{glib} (@pxref{Des paquets avec plusieurs résultats}). | ||
| 4727 | |||
| 4728 | Cette option peut être composée avec le comportement par défaut de | ||
| 4729 | @command{guix environment}. Les paquets qui apparaissent avant | ||
| 4730 | @code{--ad-hoc} sont interprétés comme les paquets dont les dépendances | ||
| 4731 | seront ajoutées à l'environnement, le comportement par défaut. Les paquets | ||
| 4732 | qui apparaissent après @code{--ad-hoc} sont interprétés comme les paquets à | ||
| 4733 | ajouter à l'environnement directement. | ||
| 4734 | |||
| 4735 | @item --pure | ||
| 4736 | Nettoie les variables d'environnement existantes lors de la construction du | ||
| 4737 | nouvel environnement, sauf celles spécifiées par @option{--preserve} (voir | ||
| 4738 | ci-dessous). Cela a pour effet de créer un environnement dans lequel les | ||
| 4739 | chemins de recherche ne contiennent que des entrées de paquets. | ||
| 4740 | |||
| 4741 | @item --preserve=@var{regexp} | ||
| 4742 | @itemx -E @var{regexp} | ||
| 4743 | Lorsque vous utilisez @option{--pure}, préserver les variables | ||
| 4744 | d'environnement qui correspondent à @var{regexp} — en d'autres termes, cela | ||
| 4745 | les met en « liste blanche » de variables d'environnement qui doivent être | ||
| 4746 | préservées. Cette option peut être répétée plusieurs fois. | ||
| 4747 | |||
| 4748 | @example | ||
| 4749 | guix environment --pure --preserve=^SLURM --ad-hoc openmpi @dots{} \ | ||
| 4750 | -- mpirun @dots{} | ||
| 4751 | @end example | ||
| 4752 | |||
| 4753 | Cet exemple exécute @command{mpirun} dans un contexte où les seules | ||
| 4754 | variables d'environnement défines sont @code{PATH}, les variables | ||
| 4755 | d'environnement dont le nom commence par @code{SLURM}, ainsi que les | ||
| 4756 | variables « importante » habituelles (@code{HOME}, @code{USER}, etc). | ||
| 4757 | |||
| 4758 | @item --search-paths | ||
| 4759 | Affiche les définitions des variables d'environnement qui composent | ||
| 4760 | l'environnement. | ||
| 4761 | |||
| 4762 | @item --system=@var{système} | ||
| 4763 | @itemx -s @var{système} | ||
| 4764 | Essaye de construire pour @var{système} — p.@: ex.@: @code{i686-linux}. | ||
| 4765 | |||
| 4766 | @item --container | ||
| 4767 | @itemx -C | ||
| 4768 | @cindex conteneur | ||
| 4769 | Lance @var{commande} dans un conteneur isolé. Le répertoire de travail | ||
| 4770 | actuel en dehors du conteneur est monté dans le conteneur. En plus, à moins | ||
| 4771 | de le changer avec @code{--user}, un répertoire personnel fictif est créé | ||
| 4772 | pour correspondre à celui de l'utilisateur actuel et @file{/etc/passwd} est | ||
| 4773 | configuré en conséquence. | ||
| 4774 | |||
| 4775 | Le processus est lancé en tant que l'utilisateur actuel en dehors du | ||
| 4776 | conteneur. Dans le conteneur, il a le même UID et GID que l'utilisateur | ||
| 4777 | actuel, à moins que vous ne passiez @option{--user} (voir ci-dessous). | ||
| 4778 | |||
| 4779 | @item --network | ||
| 4780 | @itemx -N | ||
| 4781 | Pour les conteneurs, partage l'espace de nom du réseau avec le système | ||
| 4782 | hôte. Les conteneurs créés sans cette option n'ont accès qu'à l'interface | ||
| 4783 | de boucle locale. | ||
| 4784 | |||
| 4785 | @item --link-profile | ||
| 4786 | @itemx -P | ||
| 4787 | Pour les conteneurs, lie le profil de l'environnement à | ||
| 4788 | @file{~/.guix-profile} dans le conteneur. C'est équivalent à lance la | ||
| 4789 | commande @command{ln -s $GUIX_ENVIRONMENT ~/.guix-profile} dans le | ||
| 4790 | conteneur. La liaison échouera et annulera l'environnement si le répertoire | ||
| 4791 | existe déjà, ce qui sera sans doute le cas si @command{guix environment} est | ||
| 4792 | invoqué dans le répertoire personnel de l'utilisateur. | ||
| 4793 | |||
| 4794 | Certains paquets sont configurés pour chercher des fichiers de configuration | ||
| 4795 | et des données dans @code{~/.guix-profile}@footnote{Par exemple, le paquet | ||
| 4796 | @code{fontconfig} inspecte @file{~/.guix-profile/share/fonts} pour trouver | ||
| 4797 | des polices supplémentaires.} ; @code{--link-profile} permet à ces | ||
| 4798 | programmes de se comporter comme attendu dans l'environnement. | ||
| 4799 | |||
| 4800 | @item --user=@var{utilisateur} | ||
| 4801 | @itemx -u @var{utilisateur} | ||
| 4802 | Pour les conteneurs, utilise le nom d'utilisateur @var{utilisateur} à la | ||
| 4803 | place de l'utilisateur actuel. L'entrée générée dans @file{/etc/passwd} | ||
| 4804 | dans le conteneur contiendra le nom @var{utilisateur} ; le répertoire | ||
| 4805 | personnel sera @file{/home/@var{utilisateur}} ; et aucune donnée GECOS ne | ||
| 4806 | sera copiée. En plus, l'UID et le GID dans le conteneur seront 1000. | ||
| 4807 | @var{user} n'a pas besoin d'exister sur le système. | ||
| 4808 | |||
| 4809 | En plus, tous les chemins partagés ou exposés (voir @code{--share} et | ||
| 4810 | @code{--expose} respectivement) dont la cible est dans le répertoire | ||
| 4811 | personnel de l'utilisateur seront remontés relativement à | ||
| 4812 | @file{/home/UTILISATEUR} ; cela comprend le montage automatique du | ||
| 4813 | répertoire de travail actuel. | ||
| 4814 | |||
| 4815 | @example | ||
| 4816 | # exposera les chemins comme /home/foo/wd, /home/foo/test et /home/foo/target | ||
| 4817 | cd $HOME/wd | ||
| 4818 | guix environment --container --user=foo \ | ||
| 4819 | --expose=$HOME/test \ | ||
| 4820 | --expose=/tmp/target=$HOME/target | ||
| 4821 | @end example | ||
| 4822 | |||
| 4823 | Bien que cela limite la fuite de l'identité de l'utilisateur à travers le | ||
| 4824 | chemin du répertoire personnel et des champs de l'utilisateur, ce n'est | ||
| 4825 | qu'un composant utile pour une solution d'anonymisation ou de préservation | ||
| 4826 | de la vie privée — pas une solution en elle-même. | ||
| 4827 | |||
| 4828 | @item --expose=@var{source}[=@var{cible}] | ||
| 4829 | Pour les conteneurs, expose le système de fichiers @var{source} du système | ||
| 4830 | hôte comme un système de fichiers en lecture seule @var{cible} dans le | ||
| 4831 | conteneur. Si @var{cible} n'est pas spécifiée, @var{source} est utilisé | ||
| 4832 | comme point de montage dans le conteneur. | ||
| 4833 | |||
| 4834 | L'exemple ci-dessous crée un REPL Guile dans un conteneur dans lequel le | ||
| 4835 | répertoire personnel de l'utilisateur est accessible en lecture-seule via le | ||
| 4836 | répertoire @file{/exchange} : | ||
| 4837 | |||
| 4838 | @example | ||
| 4839 | guix environment --container --expose=$HOME=/exchange --ad-hoc guile -- guile | ||
| 4840 | @end example | ||
| 4841 | |||
| 4842 | @item --share=@var{source}[=@var{cible}] | ||
| 4843 | Pour les conteneurs, partage le système de fichiers @var{source} du système | ||
| 4844 | hôte comme un système de fichiers en lecture-écriture @var{cible} dans le | ||
| 4845 | conteneur. Si @var{cible} n'est pas spécifiée, @var{source} est utilisée | ||
| 4846 | comme point de montage dans le conteneur. | ||
| 4847 | |||
| 4848 | L'exemple ci-dessous crée un REPL Guile dans un conteneur dans lequel le | ||
| 4849 | répertoire personnel de l'utilisateur est accessible en lecture-écriture via | ||
| 4850 | le répertoire @file{/exchange} : | ||
| 4851 | |||
| 4852 | @example | ||
| 4853 | guix environment --container --share=$HOME=/exchange --ad-hoc guile -- guile | ||
| 4854 | @end example | ||
| 4855 | @end table | ||
| 4856 | |||
| 4857 | En plus, @command{guix environment} prend en charge toutes les options de | ||
| 4858 | construction communes prises en charge par @command{guix build} | ||
| 4859 | (@pxref{Options de construction communes}) et toutes les options de transformation de | ||
| 4860 | paquets (@pxref{Options de transformation de paquets}). | ||
| 4861 | |||
| 4862 | @node Invoquer guix pack | ||
| 4863 | @section Invoquer @command{guix pack} | ||
| 4864 | |||
| 4865 | Parfois vous voulez passer un logiciel à des gens qui n'ont pas (encore !) | ||
| 4866 | la chance d'utiliser Guix. Vous leur diriez bien de lancer @command{guix | ||
| 4867 | package -i @var{quelque chose}} mais ce n'est pas possible dans ce cas. | ||
| 4868 | C'est là que @command{guix pack} entre en jeu. | ||
| 4869 | |||
| 4870 | @quotation Remarque | ||
| 4871 | Si vous cherchez comment échanger des binaires entre des machines où Guix | ||
| 4872 | est déjà installé, @pxref{Invoquer guix copy}, @ref{Invoquer guix publish}, | ||
| 4873 | et @ref{Invoquer guix archive}. | ||
| 4874 | @end quotation | ||
| 4875 | |||
| 4876 | @cindex pack | ||
| 4877 | @cindex lot | ||
| 4878 | @cindex lot d'applications | ||
| 4879 | @cindex lot de logiciels | ||
| 4880 | La commande @command{guix pack} crée un @dfn{pack} ou @dfn{lot de logiciels} | ||
| 4881 | : elle crée une archive tar ou un autre type d'archive contenant les | ||
| 4882 | binaires pour le logiciel qui vous intéresse ainsi que ses dépendances. | ||
| 4883 | L'archive qui en résulte peut être utilisée sur toutes les machines qui | ||
| 4884 | n'ont pas Guix et les gens peuvent lancer exactement les mêmes binaires que | ||
| 4885 | ceux que vous avez avec Guix. Le pack lui-même est créé d'une manière | ||
| 4886 | reproductible au bit près, pour que n'importe qui puisse vérifier qu'il | ||
| 4887 | contient bien les résultats que vous prétendez proposer. | ||
| 4888 | |||
| 4889 | Par exemple, pour créer un lot contenant Guile, Emacs, Geiser et toutes | ||
| 4890 | leurs dépendances, vous pouvez lancer : | ||
| 4891 | |||
| 4892 | @example | ||
| 4893 | $ guix pack guile emacs geiser | ||
| 4894 | @dots{} | ||
| 4895 | /gnu/store/@dots{}-pack.tar.gz | ||
| 4896 | @end example | ||
| 4897 | |||
| 4898 | Le résultat ici est une archive tar contenant un répertoire | ||
| 4899 | @file{/gnu/store} avec tous les paquets nécessaires. L'archive qui en | ||
| 4900 | résulte contient un @dfn{profil} avec les trois paquets qui vous intéressent | ||
| 4901 | ; le profil est le même qui celui qui aurait été créé avec @command{guix | ||
| 4902 | package -i}. C'est ce mécanisme qui est utilisé pour créer les archives tar | ||
| 4903 | binaires indépendantes de Guix (@pxref{Installation binaire}). | ||
| 4904 | |||
| 4905 | Les utilisateurs de ce pack devraient lancer | ||
| 4906 | @file{/gnu/store/@dots{}-profile/bin/guile} pour lancer Guile, ce qui n'est | ||
| 4907 | pas très pratique. Pour éviter cela, vous pouvez créer, disons, un lien | ||
| 4908 | symbolique @file{/opt/gnu/bin} vers le profil : | ||
| 4909 | |||
| 4910 | @example | ||
| 4911 | guix pack -S /opt/gnu/bin=bin guile emacs geiser | ||
| 4912 | @end example | ||
| 4913 | |||
| 4914 | @noindent | ||
| 4915 | De cette façon, les utilisateurs peuvent joyeusement taper | ||
| 4916 | @file{/opt/gnu/bin/guile} et profiter. | ||
| 4917 | |||
| 4918 | @cindex binaires repositionnables, avec @command{guix pack} | ||
| 4919 | Et si le destinataire de votre pack n'a pas les privilèges root sur sa | ||
| 4920 | machine, et ne peut donc pas le décompresser dans le système de fichiers | ||
| 4921 | racine ? Dans ce cas, vous pourriez utiliser l'option @code{--relocatable} | ||
| 4922 | (voir plus bas). Cette option produite des @dfn{binaire repositionnables}, | ||
| 4923 | ce qui signifie qu'ils peuvent être placés n'importe où dans l'arborescence | ||
| 4924 | du système de fichiers : dans l'exemple au-dessus, les utilisateurs peuvent | ||
| 4925 | décompresser votre archive dans leur répertoire personnel et lancer | ||
| 4926 | directement @file{./opt/gnu/bin/guile}. | ||
| 4927 | |||
| 4928 | @cindex Docker, construire une image avec guix pack | ||
| 4929 | Autrement, vous pouvez produire un pack au format d'image Docker avec la | ||
| 4930 | commande suivante : | ||
| 4931 | |||
| 4932 | @example | ||
| 4933 | guix pack -f docker guile emacs geiser | ||
| 4934 | @end example | ||
| 4935 | |||
| 4936 | @noindent | ||
| 4937 | Le résultat est une archive tar qui peut être passée à la commande | ||
| 4938 | @command{docker load}. Voir la | ||
| 4939 | @uref{https://docs.docker.com/engine/reference/commandline/load/, | ||
| 4940 | documentation de Docker} pour plus d'informations. | ||
| 4941 | |||
| 4942 | @cindex Singularity, construire une image avec guix pack | ||
| 4943 | @cindex SquashFS, construire une image avec guix pack | ||
| 4944 | Autrement, vous pouvez produire une image SquashFS avec la commande suivante | ||
| 4945 | : | ||
| 4946 | |||
| 4947 | @example | ||
| 4948 | guix pack -f squashfs guile emacs geiser | ||
| 4949 | @end example | ||
| 4950 | |||
| 4951 | @noindent | ||
| 4952 | Le résultat est une image de système de fichiers SquashFS qui peut soit être | ||
| 4953 | montée directement soit être utilisée comme image de conteneur de système de | ||
| 4954 | fichiers avec l'@uref{http://singularity.lbl.gov, environnement d'exécution | ||
| 4955 | conteneurisé Singularity}, avec des commandes comme @command{singularity | ||
| 4956 | shell} ou @command{singularity exec}. | ||
| 4957 | |||
| 4958 | Diverses options en ligne de commande vous permettent de personnaliser votre | ||
| 4959 | pack : | ||
| 4960 | |||
| 4961 | @table @code | ||
| 4962 | @item --format=@var{format} | ||
| 4963 | @itemx -f @var{format} | ||
| 4964 | Produire un pack dans le @var{format} donné. | ||
| 4965 | |||
| 4966 | Les formats disponibles sont : | ||
| 4967 | |||
| 4968 | @table @code | ||
| 4969 | @item tarball | ||
| 4970 | C'est le format par défaut. Il produit une archive tar contenant tous les | ||
| 4971 | binaires et les liens symboliques spécifiés. | ||
| 4972 | |||
| 4973 | @item docker | ||
| 4974 | Cela produit une archive tar qui suit la | ||
| 4975 | @uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md, | ||
| 4976 | spécification des images Docker}. | ||
| 4977 | |||
| 4978 | @item squashfs | ||
| 4979 | Cela produit une image SquashFS contenant tous les binaires et liens | ||
| 4980 | symboliques spécifiés, ainsi que des points de montages vides pour les | ||
| 4981 | systèmes de fichiers virtuels comme procfs. | ||
| 4982 | @end table | ||
| 4983 | |||
| 4984 | @cindex binaires repositionnables | ||
| 4985 | @item --relocatable | ||
| 4986 | @itemx -R | ||
| 4987 | Produire des @dfn{binaires repositionnables} — c.-à-d.@: des binaires que | ||
| 4988 | vous pouvez placer n'importe où dans l'arborescence du système de fichiers | ||
| 4989 | et les lancer à partir de là. | ||
| 4990 | |||
| 4991 | Lorsque vous passez cette option une fois, les binaires qui en résultent | ||
| 4992 | demandent le support des @dfn{espaces de nom utilisateurs} dans le noyau | ||
| 4993 | Linux ; lorsque vous la passez @emph{deux} fois@footnote{Il y a une astuce | ||
| 4994 | pour s'en rappeler : on peut envisager @code{RR}, qui ajoute le support | ||
| 4995 | PRoot, comme étant l'abréviation de « Réellement Repositionnable ». Pas | ||
| 4996 | mal, hein ?}, les binaires repositionnables utilisent PRoot si les espaces | ||
| 4997 | de noms ne sont pas utilisables, et ça fonctionne partout — voir plus bas | ||
| 4998 | pour comprendre les implications. | ||
| 4999 | |||
| 5000 | Par exemple, si vous créez un pack contenant Bash avec : | ||
| 5001 | |||
| 5002 | @example | ||
| 5003 | guix pack -RR -S /mybin=bin bash | ||
| 5004 | @end example | ||
| 5005 | |||
| 5006 | @noindent | ||
| 5007 | …@: vous pouvez copier ce pack sur une machine qui n'a pas Guix et depuis | ||
| 5008 | votre répertoire personnel en tant qu'utilisateur non-privilégié, lancer : | ||
| 5009 | |||
| 5010 | @example | ||
| 5011 | tar xf pack.tar.gz | ||
| 5012 | ./mybin/sh | ||
| 5013 | @end example | ||
| 5014 | |||
| 5015 | @noindent | ||
| 5016 | Dans ce shell, si vous tapez @code{ls /gnu/store}, vous remarquerez que | ||
| 5017 | @file{/gnu/store} apparaît et contient toutes les dépendances de | ||
| 5018 | @code{bash}, même si la machine n'a pas du tout de @file{/gnu/store} ! | ||
| 5019 | C'est sans doute la manière la plus simple de déployer du logiciel construit | ||
| 5020 | avec Guix sur une machine sans Guix. | ||
| 5021 | |||
| 5022 | @quotation Remarque | ||
| 5023 | Par défaut ,les binaires repositionnables s'appuient sur les @dfn{espaces de | ||
| 5024 | noms utilisateurs} du noyau Linux, qui permet à des utilisateurs | ||
| 5025 | non-privilégiés d'effectuer des montages et de changer de racine. Les | ||
| 5026 | anciennes versions de Linux ne le supportait pas et certaines distributions | ||
| 5027 | GNU/Linux le désactive. | ||
| 5028 | |||
| 5029 | Pour produire des binaires repositionnables qui fonctionnent même sans | ||
| 5030 | espace de nom utilisateur, passez @option{--relocatable} ou @option{-R} | ||
| 5031 | @emph{deux fois}. Dans ce cas, les binaires testeront la prise en charge | ||
| 5032 | des espaces de noms utilisateurs et utiliseront PRoot s'ils ne sont pas pris | ||
| 5033 | en charge. | ||
| 5034 | |||
| 5035 | Le programme @uref{https://proot-me.github.io/, PRoot} fournit la prise en | ||
| 5036 | charge nécessaire pour la virtualisation du système de fichier. Il y arrive | ||
| 5037 | en utilisant l'appel système @code{ptrace} sur le programme. Cette approche | ||
| 5038 | a l'avantage de fonctionner sans demander de support spécial de la part du | ||
| 5039 | noyau, mais occasionne un coût supplémentaire en temps pour chaque appel | ||
| 5040 | système effectué. | ||
| 5041 | @end quotation | ||
| 5042 | |||
| 5043 | @item --expression=@var{expr} | ||
| 5044 | @itemx -e @var{expr} | ||
| 5045 | Considérer le paquet évalué par @var{expr}. | ||
| 5046 | |||
| 5047 | Cela a le même but que l'option de même nom de @command{guix build} | ||
| 5048 | (@pxref{Options de construction supplémentaires, @code{--expression} dans @command{guix | ||
| 5049 | build}}). | ||
| 5050 | |||
| 5051 | @item --manifest=@var{fichier} | ||
| 5052 | @itemx -m @var{fichier} | ||
| 5053 | Utiliser les paquets contenus dans l'objet manifeste renvoyé par le code | ||
| 5054 | Scheme dans @var{fichier} | ||
| 5055 | |||
| 5056 | Elle a un but similaire à l'option de même nom dans @command{guix package} | ||
| 5057 | (@pxref{profile-manifest, @option{--manifest}}) et utilise les mêmes | ||
| 5058 | fichiers manifeste. Ils vous permettent de définir une collection de | ||
| 5059 | paquets une fois et de l'utiliser aussi bien pour créer des profils que pour | ||
| 5060 | créer des archives pour des machines qui n'ont pas Guix d'installé. | ||
| 5061 | Remarquez que vous pouvez spécifier @emph{soit} un fichier manifeste, | ||
| 5062 | @emph{soit} une liste de paquet, mais pas les deux. | ||
| 5063 | |||
| 5064 | @item --system=@var{système} | ||
| 5065 | @itemx -s @var{système} | ||
| 5066 | Tenter de construire pour le @var{système} — p.@: ex.@: @code{i686-linux} — | ||
| 5067 | plutôt que pour le type de système de l'hôte de construction. | ||
| 5068 | |||
| 5069 | @item --target=@var{triplet} | ||
| 5070 | @cindex compilation croisée | ||
| 5071 | Effectuer une compilation croisée pour @var{triplet} qui doit être un | ||
| 5072 | triplet GNU valide, comme @code{"mips64el-linux-gnu"} (@pxref{Specifying | ||
| 5073 | target triplets, GNU configuration triplets,, autoconf, Autoconf}). | ||
| 5074 | |||
| 5075 | @item --compression=@var{outil} | ||
| 5076 | @itemx -C @var{outil} | ||
| 5077 | Compresser l'archive résultante avec @var{outil} — l'un des outils parmi | ||
| 5078 | @code{bzip2}, @code{xz}, @code{lzip} ou @code{none} pour aucune compression. | ||
| 5079 | |||
| 5080 | @item --symlink=@var{spec} | ||
| 5081 | @itemx -S @var{spec} | ||
| 5082 | Ajouter les liens symboliques spécifiés par @var{spec} dans le pack. Cette | ||
| 5083 | option peut apparaître plusieurs fois. | ||
| 5084 | |||
| 5085 | @var{spec} a la forme @code{@var{source}=@var{cible}}, où @var{source} est | ||
| 5086 | le lien symbolique qui sera créé et @var{cible} est la cible du lien. | ||
| 5087 | |||
| 5088 | Par exemple, @code{-S /opt/gnu/bin=bin} crée un lien symbolique | ||
| 5089 | @file{/opt/gnu/bin} qui pointe vers le sous-répertoire @file{bin} du profil. | ||
| 5090 | |||
| 5091 | @item --save-provenance | ||
| 5092 | Sauvegarder les informations de provenance des paquets passés sur la ligne | ||
| 5093 | de commande. Les informations de provenance contiennent l'URL et le commit | ||
| 5094 | des canaux utilisés (@pxref{Canaux}). | ||
| 5095 | |||
| 5096 | Les informations de provenance sont sauvegardées dans le fichier | ||
| 5097 | @file{/gnu/store/@dots{}-profile/manifest} du pack, avec les métadonnées de | ||
| 5098 | paquets habituelles — le nom et la version de chaque paquet, leurs entrées | ||
| 5099 | propagées, etc. Ce sont des informations utiles pour le destinataire du | ||
| 5100 | pack, qui sait alors comment le pack a (normalement) été obtenu. | ||
| 5101 | |||
| 5102 | Cette option n'est pas activée par défaut car, comme l'horodatage, les | ||
| 5103 | informations de provenance ne contribuent en rien au processus de | ||
| 5104 | construction. En d'autres termes, il y a une infinité d'URL et d'ID de | ||
| 5105 | commit qui permettent d'obtenir le même pack. Enregistrer de telles | ||
| 5106 | métadonnées « silencieuses » dans la sortie casse donc éventuellement la | ||
| 5107 | propriété de reproductibilité au bit près. | ||
| 5108 | |||
| 5109 | @item --localstatedir | ||
| 5110 | @itemx --profile-name=@var{nom} | ||
| 5111 | Inclus le « répertoire d'état local », @file{/var/guix}, dans le lot qui en | ||
| 5112 | résulte, et notamment le profil | ||
| 5113 | @file{/var/guix/profiles/per-user/root/@var{nom}} — par défaut @var{nom} est | ||
| 5114 | @code{guix-profile}, ce qui correspond à @file{~root/.guix-profile}. | ||
| 5115 | |||
| 5116 | @file{/var/guix} contient la base de données du dépôt (@pxref{Le dépôt}) | ||
| 5117 | ainsi que les racines du ramasse-miettes (@pxref{Invoquer guix gc}). Le | ||
| 5118 | fournir dans le pack signifie que le dépôt et « complet » et gérable par | ||
| 5119 | Guix ; ne pas le fournir dans le pack signifie que le dépôt est « mort » : | ||
| 5120 | aucun élément ne peut être ajouté ni enlevé après l'extraction du pack. | ||
| 5121 | |||
| 5122 | Un cas d'utilisation est l'archive binaire indépendante de Guix | ||
| 5123 | (@pxref{Installation binaire}). | ||
| 5124 | |||
| 5125 | @item --bootstrap | ||
| 5126 | Utiliser les programmes d'amorçage pour construire le pack. Cette option | ||
| 5127 | n'est utile que pour les développeurs de Guix. | ||
| 5128 | @end table | ||
| 5129 | |||
| 5130 | En plus, @command{guix pack} supporte toutes les options de construction | ||
| 5131 | communes (@pxref{Options de construction communes}) et toutes les options de | ||
| 5132 | transformation de paquets (@pxref{Options de transformation de paquets}). | ||
| 5133 | |||
| 5134 | |||
| 5135 | @c ********************************************************************* | ||
| 5136 | @node Interface de programmation | ||
| 5137 | @chapter Interface de programmation | ||
| 5138 | |||
| 5139 | GNU Guix fournit diverses interface de programmation Scheme (API) qui pour | ||
| 5140 | définir, construire et faire des requêtes sur des paquets. La première | ||
| 5141 | interface permet aux utilisateurs d'écrire des définitions de paquets de | ||
| 5142 | haut-niveau. Ces définitions se réfèrent à des concepts de création de | ||
| 5143 | paquets familiers, comme le nom et la version du paquet, son système de | ||
| 5144 | construction et ses dépendances. Ces définitions peuvent ensuite être | ||
| 5145 | transformées en actions concrètes lors de la construction. | ||
| 5146 | |||
| 5147 | Les actions de construction sont effectuées par le démon Guix, pour le | ||
| 5148 | compte des utilisateurs. Dans un environnement standard, le démon possède | ||
| 5149 | les droits en écriture sur le dépôt — le répertoire @file{/gnu/store} — mais | ||
| 5150 | pas les utilisateurs. La configuration recommandée permet aussi au démon | ||
| 5151 | d'effectuer la construction dans des chroots, avec un utilisateur de | ||
| 5152 | construction spécifique pour minimiser les interférences avec le reste du | ||
| 5153 | système. | ||
| 5154 | |||
| 5155 | @cindex dérivation | ||
| 5156 | Il y a des API de plus bas niveau pour interagir avec le démon et le dépôt. | ||
| 5157 | Pour demander au démon d'effectuer une action de construction, les | ||
| 5158 | utilisateurs lui donnent en fait une @dfn{dérivation}. Une dérivation est | ||
| 5159 | une représentation à bas-niveau des actions de construction à entreprendre | ||
| 5160 | et l'environnement dans lequel elles devraient avoir lieu — les dérivations | ||
| 5161 | sont aux définitions de paquets ce que l'assembleur est aux programmes C. | ||
| 5162 | Le terme de « dérivation » vient du fait que les résultats de la | ||
| 5163 | construction en @emph{dérivent}. | ||
| 5164 | |||
| 5165 | Ce chapitre décrit toutes ces API tour à tour, à partir des définitions de | ||
| 5166 | paquets à haut-niveau. | ||
| 5167 | |||
| 5168 | @menu | ||
| 5169 | * Modules de paquets:: Les paquets du point de vu du programmeur. | ||
| 5170 | * Définition des paquets:: Définir de nouveaux paquets. | ||
| 5171 | * Systèmes de construction:: Spécifier comment construire les paquets. | ||
| 5172 | * Le dépôt:: Manipuler le dépôt de paquets. | ||
| 5173 | * Dérivations:: Interface de bas-niveau avec les dérivations | ||
| 5174 | de paquets. | ||
| 5175 | * La monade du dépôt:: Interface purement fonctionnelle avec le | ||
| 5176 | dépôt. | ||
| 5177 | * G-Expressions:: Manipuler les expressions de construction. | ||
| 5178 | * Invoquer guix repl:: S'amuser avec Guix de manière interactive. | ||
| 5179 | @end menu | ||
| 5180 | |||
| 5181 | @node Modules de paquets | ||
| 5182 | @section Modules de paquets | ||
| 5183 | |||
| 5184 | D'un point de vue programmatique, les définitions de paquets de la | ||
| 5185 | distribution GNU sont fournies par des modules Guile dans l'espace de noms | ||
| 5186 | @code{(gnu packages @dots{})}@footnote{Remarquez que les paquets sous | ||
| 5187 | l'espace de nom @code{(gnu packages @dots{})} ne sont pas nécessairement des | ||
| 5188 | « paquets GNU ». Le nom de ce module suit la convention de nommage usuelle | ||
| 5189 | de Guile : @code{gnu} signifie que ces modules sont distribués dans le | ||
| 5190 | système GNU, et @code{packages} identifie les modules qui définissent les | ||
| 5191 | paquets.} (@pxref{Modules, Guile modules,, guile, GNU Guile Reference | ||
| 5192 | Manual}). Par exemple, le module @code{(gnu packages emacs)} exporte une | ||
| 5193 | variable nommée @code{emacs}, qui est liée à un objet @code{<package>} | ||
| 5194 | (@pxref{Définition des paquets}). | ||
| 5195 | |||
| 5196 | L'espace de nom @code{(gnu packages @dots{})} est automatiquement scanné par | ||
| 5197 | les outils en ligne de commande. Par exemple, lorsque vous lancez | ||
| 5198 | @code{guix package -i emacs}, tous les modules @code{(gnu packages @dots{})} | ||
| 5199 | sont scannés jusqu'à en trouver un qui exporte un objet de paquet dont le | ||
| 5200 | nom est @code{emacs}. Cette capacité à chercher des paquets est implémentée | ||
| 5201 | dans le module @code{(gnu packages)}. | ||
| 5202 | |||
| 5203 | @cindex personnalisation, des paquets | ||
| 5204 | @cindex chemin de recherche des modules de paquets | ||
| 5205 | Les utilisateurs peuvent stocker des définitions dans des modules avec des | ||
| 5206 | noms différents — p.@: ex.@: @code{(my-packages emacs)}@footnote{Remarquez | ||
| 5207 | que le nom de fichier et de module doivent être identiques. Par exemple, le | ||
| 5208 | module @code{(my-packages emacs)} doit être stocké dans un fichier | ||
| 5209 | @file{my-packages/emacs.scm} relativement au chemin de chargement spécifié | ||
| 5210 | avec @option{--load-path} ou @code{GUIX_PACKAGE_PATH}. @xref{Modules and | ||
| 5211 | the File System,,, guile, GNU Guile Reference Manual} pour plus de | ||
| 5212 | détails}. Il y a deux manières de rendre ces définitions visibles aux | ||
| 5213 | interfaces utilisateurs : | ||
| 5214 | |||
| 5215 | @enumerate | ||
| 5216 | @item | ||
| 5217 | En ajoutant le répertoire contenant vos modules de paquets au chemin de | ||
| 5218 | recherche avec le drapeau @code{-L} de @command{guix package} et des autres | ||
| 5219 | commandes (@pxref{Options de construction communes}) ou en indiquant la variable | ||
| 5220 | d'environnement @code{GUIX_PACKAGE_PATH} décrite plus bas. | ||
| 5221 | |||
| 5222 | @item | ||
| 5223 | En définissant un @dfn{canal} et en configurant @command{guix pull} pour | ||
| 5224 | qu'il l'utilise. Un canal est essentiellement un dépôt Git contenant des | ||
| 5225 | modules de paquets. @xref{Canaux}, pour plus d'informations sur comment | ||
| 5226 | définir et utiliser des canaux. | ||
| 5227 | @end enumerate | ||
| 5228 | |||
| 5229 | @code{GUIX_PACKAGE_PATH} fonctionne comme les autres variables de chemins de | ||
| 5230 | recherche : | ||
| 5231 | |||
| 5232 | @defvr {Variable d'environnement} GUIX_PACKAGE_PATH | ||
| 5233 | C'est une liste séparée par des deux-points de répertoires dans lesquels | ||
| 5234 | trouver des modules de paquets supplémentaires. Les répertoires listés dans | ||
| 5235 | cette variable sont prioritaires par rapport aux paquets de la distribution. | ||
| 5236 | @end defvr | ||
| 5237 | |||
| 5238 | La distribution est entièrement @dfn{bootstrappée} et @dfn{auto-contenue} : | ||
| 5239 | chaque paquet est construit uniquement à partir d'autres paquets de la | ||
| 5240 | distribution. La racine de ce graphe de dépendance est un petit ensemble de | ||
| 5241 | @dfn{binaires de bootstrap} fournis par le module @code{(gnu packages | ||
| 5242 | bootstrap)}. Pour plus d'informations sur le bootstrap, | ||
| 5243 | @pxref{Bootstrapping}. | ||
| 5244 | |||
| 5245 | @node Définition des paquets | ||
| 5246 | @section Définition des paquets | ||
| 5247 | |||
| 5248 | L'interface de haut-niveau pour les définitions de paquets est implémentée | ||
| 5249 | dans les modules @code{(guix packages)} et @code{(guix build-system)}. Par | ||
| 5250 | exemple, la définition du paquet, ou la @dfn{recette}, du paquet GNU Hello | ||
| 5251 | ressemble à cela : | ||
| 5252 | |||
| 5253 | @example | ||
| 5254 | (define-module (gnu packages hello) | ||
| 5255 | #:use-module (guix packages) | ||
| 5256 | #:use-module (guix download) | ||
| 5257 | #:use-module (guix build-system gnu) | ||
| 5258 | #:use-module (guix licenses) | ||
| 5259 | #:use-module (gnu packages gawk)) | ||
| 5260 | |||
| 5261 | (define-public hello | ||
| 5262 | (package | ||
| 5263 | (name "hello") | ||
| 5264 | (version "2.10") | ||
| 5265 | (source (origin | ||
| 5266 | (method url-fetch) | ||
| 5267 | (uri (string-append "mirror://gnu/hello/hello-" version | ||
| 5268 | ".tar.gz")) | ||
| 5269 | (sha256 | ||
| 5270 | (base32 | ||
| 5271 | "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) | ||
| 5272 | (build-system gnu-build-system) | ||
| 5273 | (arguments '(#:configure-flags '("--enable-silent-rules"))) | ||
| 5274 | (inputs `(("gawk" ,gawk))) | ||
| 5275 | (synopsis "Hello, GNU world: An example GNU package") | ||
| 5276 | (description "Guess what GNU Hello prints!") | ||
| 5277 | (home-page "http://www.gnu.org/software/hello/") | ||
| 5278 | (license gpl3+))) | ||
| 5279 | @end example | ||
| 5280 | |||
| 5281 | @noindent | ||
| 5282 | Sans être un expert Scheme, le lecteur peut comprendre la signification des | ||
| 5283 | différents champs présents. Cette expression lie la variable @code{hello} à | ||
| 5284 | un objet @code{<package>}, qui est essentiellement un enregistrement | ||
| 5285 | (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}). On | ||
| 5286 | peut inspecter cet objet de paquet avec les procédures qui se trouvent dans | ||
| 5287 | le module @code{(guix packages)} ; par exemple, @code{(package-name hello)} | ||
| 5288 | renvoie — oh surprise ! — @code{"hello"}. | ||
| 5289 | |||
| 5290 | Avec un peu de chance, vous pourrez importer tout ou partie de la définition | ||
| 5291 | du paquet qui vous intéresse depuis un autre répertoire avec la commande | ||
| 5292 | @code{guix import} (@pxref{Invoquer guix import}). | ||
| 5293 | |||
| 5294 | Dans l'exemple précédent, @var{hello} est défini dans un module à part, | ||
| 5295 | @code{(gnu packages hello)}. Techniquement, cela n'est pas strictement | ||
| 5296 | nécessaire, mais c'est pratique : tous les paquets définis dans des modules | ||
| 5297 | sous @code{(gnu packages @dots{})} sont automatiquement connus des outils en | ||
| 5298 | ligne de commande (@pxref{Modules de paquets}). | ||
| 5299 | |||
| 5300 | Il y a quelques points à remarquer dans la définition de paquet précédente : | ||
| 5301 | |||
| 5302 | @itemize | ||
| 5303 | @item | ||
| 5304 | Le champ @code{source} du paquet est un objet @code{<origin>} (@pxref{Référence des origines}, pour la référence complète). Ici, on utilise la méthode | ||
| 5305 | @code{url-fetch} de @code{(guix download)}, ce qui signifie que la source | ||
| 5306 | est un fichier à télécharger par FTP ou HTTP. | ||
| 5307 | |||
| 5308 | Le préfixe @code{mirror://gnu} demande à @code{url-fetch} d'utiliser l'un | ||
| 5309 | des miroirs GNU définis dans @code{(guix download)}. | ||
| 5310 | |||
| 5311 | Le champ @code{sha256} spécifie le hash SHA256 attendu pour le fichier | ||
| 5312 | téléchargé. Il est requis et permet à Guix de vérifier l'intégrité du | ||
| 5313 | fichier. La forme @code{(base32 @dots{})} introduit a représentation en | ||
| 5314 | base32 du hash. Vous pouvez obtenir cette information avec @code{guix | ||
| 5315 | download} (@pxref{Invoquer guix download}) et @code{guix hash} | ||
| 5316 | (@pxref{Invoquer guix hash}). | ||
| 5317 | |||
| 5318 | @cindex correctifs | ||
| 5319 | Lorsque cela est requis, la forme @code{origin} peut aussi avec un champ | ||
| 5320 | @code{patches} qui liste les correctifs à appliquer et un champ | ||
| 5321 | @code{snippet} qui donne une expression Scheme pour modifier le code source. | ||
| 5322 | |||
| 5323 | @item | ||
| 5324 | @cindex Système de construction GNU | ||
| 5325 | Le champ @code{build-system} spécifie la procédure pour construire le paquet | ||
| 5326 | (@pxref{Systèmes de construction}). Ici, @var{gnu-build-system} représente le système | ||
| 5327 | de construction GNU familier, où les paquets peuvent être configurés, | ||
| 5328 | construits et installés avec la séquence @code{./configure && make && make | ||
| 5329 | check && make install} habituelle. | ||
| 5330 | |||
| 5331 | @item | ||
| 5332 | Le champ @code{arguments} spécifie des options pour le système de | ||
| 5333 | construction (@pxref{Systèmes de construction}). Ici il est interprété par | ||
| 5334 | @var{gnu-build-system} comme une demande de lancer @file{configure} avec le | ||
| 5335 | drapeau @code{--enable-silent-rules}. | ||
| 5336 | |||
| 5337 | @cindex quote | ||
| 5338 | @cindex quoting | ||
| 5339 | @findex ' | ||
| 5340 | @findex quote | ||
| 5341 | Que sont ces apostrophes (@code{'}) ? C'est de la syntaxe Scheme pour | ||
| 5342 | introduire une liste ; @code{'} est synonyme de la fonction @code{quote}. | ||
| 5343 | @xref{Expression Syntax, quoting,, guile, GNU Guile Reference Manual}, pour | ||
| 5344 | des détails. Ice la valeur du champ @code{arguments} est une liste | ||
| 5345 | d'arguments passés au système de construction plus tard, comme avec | ||
| 5346 | @code{apply} (@pxref{Fly Evaluation, @code{apply},, guile, GNU Guile | ||
| 5347 | Reference Manual}). | ||
| 5348 | |||
| 5349 | La séquence dièse-deux-points (@code{#:}) définie un @dfn{mot-clef} Scheme | ||
| 5350 | (@pxref{Keywords,,, guile, GNU Guile Reference Manual}), et | ||
| 5351 | @code{#:configure-flags} est un mot-clef utilisé pour passer un argument au | ||
| 5352 | système de construction (@pxref{Coding With Keywords,,, guile, GNU Guile | ||
| 5353 | Reference Manual}). | ||
| 5354 | |||
| 5355 | @item | ||
| 5356 | Le champ @code{inputs} spécifie les entrées du processus de construction — | ||
| 5357 | c.-à-d.@: les dépendances à la construction ou à l'exécution du paquet. Ici | ||
| 5358 | on définie une entrée nommée @code{"gawk"} dont la valeur est la variable | ||
| 5359 | @var{gawk} ; @var{gawk} est elle-même liée à un objet @code{<package>}. | ||
| 5360 | |||
| 5361 | @cindex accent grave (quasiquote) | ||
| 5362 | @findex ` | ||
| 5363 | @findex quasiquote | ||
| 5364 | @cindex virgule (unquote) | ||
| 5365 | @findex , | ||
| 5366 | @findex unquote | ||
| 5367 | @findex ,@@ | ||
| 5368 | @findex unquote-splicing | ||
| 5369 | De nouveau, @code{`} (un accent grave, synonyme de la fonction | ||
| 5370 | @code{quasiquote}) nous permet d'introduire une liste littérale dans le | ||
| 5371 | champ @code{inputs}, tandis que @code{,} (une virgule, synonyme de la | ||
| 5372 | fonction @code{unquote}) nous permet d'insérer une valeur dans cette liste | ||
| 5373 | (@pxref{Expression Syntax, unquote,, guile, GNU Guile Reference Manual}). | ||
| 5374 | |||
| 5375 | Remarquez que GCC, Coreutils, Bash et les autres outils essentiels n'ont pas | ||
| 5376 | besoin d'être spécifiés en tant qu'entrées ici. À la place, le | ||
| 5377 | @var{gnu-build-system} est en charge de s'assurer qu'ils sont présents | ||
| 5378 | (@pxref{Systèmes de construction}). | ||
| 5379 | |||
| 5380 | Cependant, toutes les autres dépendances doivent être spécifiées dans le | ||
| 5381 | champ @code{inputs}. Toute dépendance qui ne serait pas spécifiée ici sera | ||
| 5382 | simplement indisponible pour le processus de construction, ce qui peut mener | ||
| 5383 | à un échec de la construction. | ||
| 5384 | @end itemize | ||
| 5385 | |||
| 5386 | @xref{Référence des paquets}, pour une description complète des champs | ||
| 5387 | possibles. | ||
| 5388 | |||
| 5389 | Lorsqu'une définition de paquet est en place, le paquet peut enfin être | ||
| 5390 | construit avec l'outil en ligne de commande @code{guix build} | ||
| 5391 | (@pxref{Invoquer guix build}), pour résoudre les échecs de construction que | ||
| 5392 | vous pourriez rencontrer (@pxref{Débogage des échecs de construction}). Vous pouvez | ||
| 5393 | aisément revenir à la définition du paquet avec la commande @command{guix | ||
| 5394 | edit} (@pxref{Invoquer guix edit}). @xref{Consignes d'empaquetage}, pour plus | ||
| 5395 | d'informations sur la manière de tester des définitions de paquets et | ||
| 5396 | @ref{Invoquer guix lint}, pour des informations sur la manière de vérifier | ||
| 5397 | que la définition respecte les conventions de style. | ||
| 5398 | @vindex GUIX_PACKAGE_PATH | ||
| 5399 | Enfin, @pxref{Canaux} pour des informations sur la manière d'étendre la | ||
| 5400 | distribution en ajoutant vos propres définitions de paquets dans un « canal | ||
| 5401 | ». | ||
| 5402 | |||
| 5403 | Finalement, la mise à jour de la définition du paquet à une nouvelle version | ||
| 5404 | amont peut en partie s'automatiser avec la commande @command{guix refresh} | ||
| 5405 | (@pxref{Invoquer guix refresh}). | ||
| 5406 | |||
| 5407 | Sous le capot, une dérivation qui correspond à un objet @code{<package>} est | ||
| 5408 | d'abord calculé par la procédure @code{package-derivation}. Cette | ||
| 5409 | dérivation est stockée dans un fichier @code{.drv} dans @file{/gnu/store}. | ||
| 5410 | Les actions de construction qu'il prescrit peuvent ensuite être réalisées | ||
| 5411 | par la procédure @code{build-derivation} (@pxref{Le dépôt}). | ||
| 5412 | |||
| 5413 | @deffn {Procédure Scheme} package-derivation @var{store} @var{package} [@var{system}] | ||
| 5414 | Renvoie l'objet @code{<derivation>} du @var{paquet} pour le @var{système} | ||
| 5415 | (@pxref{Dérivations}). | ||
| 5416 | |||
| 5417 | @var{paquet} doit être un objet @code{<package>} valide et @var{système} une | ||
| 5418 | chaîne indiquant le type de système cible — p.ex.@: @code{"x86_64-linux"} | ||
| 5419 | pour un système GNU x86_64 basé sur Linux. @var{dépôt} doit être une | ||
| 5420 | connexion au démon, qui opère sur les dépôt (@pxref{Le dépôt}). | ||
| 5421 | @end deffn | ||
| 5422 | |||
| 5423 | @noindent | ||
| 5424 | @cindex compilation croisée | ||
| 5425 | De manière identique, il est possible de calculer une dérivation qui | ||
| 5426 | effectue une compilation croisée d'un paquet pour un autre système : | ||
| 5427 | |||
| 5428 | @deffn {Procédure Scheme} package-cross-derivation @var{store} @ | ||
| 5429 | @var{paquet} @var{cible} [@var{système}] renvoie l'objet @code{<derivation>} | ||
| 5430 | du @var{paquet} construit depuis @var{système} pour @var{cible}. | ||
| 5431 | |||
| 5432 | @var{cible} doit être un triplet GNU valide indiquant le matériel cible et | ||
| 5433 | le système d'exploitation, comme @code{"mips64el-linux-gnu"} | ||
| 5434 | (@pxref{Configuration Names, GNU configuration triplets,, configure, GNU | ||
| 5435 | Configure and Build System}). | ||
| 5436 | @end deffn | ||
| 5437 | |||
| 5438 | @cindex transformations de paquets | ||
| 5439 | @cindex réécriture d'entrées | ||
| 5440 | @cindex réécriture de l'arbre des dépendances | ||
| 5441 | On peut manipuler les paquets de manière arbitraire. Une transformation | ||
| 5442 | utile est par exemple la @dfn{réécriture d'entrées} où l'arbre des | ||
| 5443 | dépendances d'un paquet est réécrit en replaçant des entrées spécifiques par | ||
| 5444 | d'autres : | ||
| 5445 | |||
| 5446 | @deffn {Procédure Scheme} package-input-rewriting @var{replacements} @ | ||
| 5447 | [@var{nom-réécrit}] Renvoie une procédure qui, lorsqu'on lui donne un | ||
| 5448 | paquet, remplace des dépendances directes et indirectes (mais pas ses | ||
| 5449 | entrées implicites) en fonction de @var{remplacements}. @var{remplacements} | ||
| 5450 | est une liste de paires de paquets ; le premier élément de chaque pair est | ||
| 5451 | le paquet à remplacer, le second son remplaçant. | ||
| 5452 | |||
| 5453 | De manière facultative, @var{nom-réécrit} est une procédure à un argument | ||
| 5454 | qui prend le nom d'un paquet et renvoie son nouveau nom après l'avoir | ||
| 5455 | réécrit. | ||
| 5456 | @end deffn | ||
| 5457 | |||
| 5458 | @noindent | ||
| 5459 | Regardez cet exemple : | ||
| 5460 | |||
| 5461 | @example | ||
| 5462 | (define libressl-instead-of-openssl | ||
| 5463 | ;; Cette procédure remplace OPENSSL par LIBRESSL, | ||
| 5464 | ;; récursivement. | ||
| 5465 | (package-input-rewriting `((,openssl . ,libressl)))) | ||
| 5466 | |||
| 5467 | (define git-with-libressl | ||
| 5468 | (libressl-instead-of-openssl git)) | ||
| 5469 | @end example | ||
| 5470 | |||
| 5471 | @noindent | ||
| 5472 | Ici nous définissons d'abord une procédure de réécriture qui remplace | ||
| 5473 | @var{openssl} par @var{libressl}. Ensuite nous l'utilisons pour définir une | ||
| 5474 | @dfn{variante} du paquet @var{git} qui utilise @var{libressl} plutôt que | ||
| 5475 | @var{openssl}. cela est exactement ce que l'option en ligne de commande | ||
| 5476 | @option{--with-input} fait (@pxref{Options de transformation de paquets, | ||
| 5477 | @option{--with-input}}). | ||
| 5478 | |||
| 5479 | La variante suivante de @code{package-input-rewriting} peut repérer les | ||
| 5480 | paquets à remplacer par nom à la place de leur identité. | ||
| 5481 | |||
| 5482 | @deffn {Procédure Scheme} package-input-rewriting/spec @var{remplacements} | ||
| 5483 | Renvoie une procédure qui, étant donné un paquet, applique les | ||
| 5484 | @var{remplacements} à tous le graphe du paquet (en dehors des entrées | ||
| 5485 | implicites). @var{remplacements} est une liste de paires de spécifications | ||
| 5486 | et de procédures ; chaque spécification est une spécification de paquet | ||
| 5487 | comme @code{"gcc"} ou @code{"guile@@2"}, et chaque procédure prend un paquet | ||
| 5488 | correspondant et renvoie un remplaçant pour ce paquet. | ||
| 5489 | @end deffn | ||
| 5490 | |||
| 5491 | L'exemple ci-dessus pourrait être réécrit de cette manière : | ||
| 5492 | |||
| 5493 | @example | ||
| 5494 | (define libressl-instead-of-openssl | ||
| 5495 | ;; Remplace tous les paquets nommés « openssl » par LibreSSL. | ||
| 5496 | (package-input-rewriting/spec `(("openssl" . ,(const libressl))))) | ||
| 5497 | @end example | ||
| 5498 | |||
| 5499 | Le différence clef est que, cette fois-ci, les paquets correspondent à la | ||
| 5500 | spécification et non à l'identité. En d'autres termes, tout paquet dans le | ||
| 5501 | graphe qui est appelé @code{openssl} sera remplacé. | ||
| 5502 | |||
| 5503 | Une procédure plus générique pour réécrire un graphe de dépendance d'un | ||
| 5504 | paquet est @code{package-mapping} : elle supporte n'importe quel changement | ||
| 5505 | dans les nœuds du graphe. | ||
| 5506 | |||
| 5507 | @deffn {Procédure Scheme} package-mapping @var{proc} [@var{cut?}] | ||
| 5508 | Renvoie une procédure qui, avec un paquet, applique @var{proc} sur tous les | ||
| 5509 | paquets dont il dépend et renvoie le paquet qui en résulte. La procédure | ||
| 5510 | arrête la récursion là où @var{cut?} renvoie vrai pour un paquet donné. | ||
| 5511 | @end deffn | ||
| 5512 | |||
| 5513 | @menu | ||
| 5514 | * Référence des paquets:: Le type de donnée des paquets. | ||
| 5515 | * Référence des origines:: Le type de données d'origine. | ||
| 5516 | @end menu | ||
| 5517 | |||
| 5518 | |||
| 5519 | @node Référence des paquets | ||
| 5520 | @subsection Référence de @code{package} | ||
| 5521 | |||
| 5522 | Cette section résume toutes les options disponibles dans les déclarations | ||
| 5523 | @code{package} (@pxref{Définition des paquets}). | ||
| 5524 | |||
| 5525 | @deftp {Type de données} package | ||
| 5526 | C'est le type de donnée représentant une recette de paquets. | ||
| 5527 | |||
| 5528 | @table @asis | ||
| 5529 | @item @code{name} | ||
| 5530 | Le nom du paquet, comme une chaîne de caractères. | ||
| 5531 | |||
| 5532 | @item @code{version} | ||
| 5533 | La version du paquet, comme une chaîne de caractères. | ||
| 5534 | |||
| 5535 | @item @code{source} | ||
| 5536 | Un objet qui indique comment le code source du paquet devrait être | ||
| 5537 | récupéré. La plupart du temps, c'est un objet @code{origin} qui indique un | ||
| 5538 | fichier récupéré depuis internet (@pxref{Référence des origines}). Il peut aussi | ||
| 5539 | s'agir de tout autre objet ``simili-fichier'' comme un @code{local-file} qui | ||
| 5540 | indique un fichier du système de fichier local (@pxref{G-Expressions, | ||
| 5541 | @code{local-file}}). | ||
| 5542 | |||
| 5543 | @item @code{build-system} | ||
| 5544 | Le système de construction qui devrait être utilisé pour construire le | ||
| 5545 | paquet (@pxref{Systèmes de construction}). | ||
| 5546 | |||
| 5547 | @item @code{arguments} (par défaut : @code{'()}) | ||
| 5548 | Les arguments à passer au système de construction. C'est une liste qui | ||
| 5549 | contient typiquement une séquence de paires de clefs-valeurs. | ||
| 5550 | |||
| 5551 | @item @code{inputs} (par défaut : @code{'()}) | ||
| 5552 | @itemx @code{native-inputs} (par défaut : @code{'()}) | ||
| 5553 | @itemx @code{propagated-inputs} (par défaut : @code{'()}) | ||
| 5554 | @cindex entrées, des paquets | ||
| 5555 | Ces champs listent les dépendances du paquet. Chacune est une liste de | ||
| 5556 | tuples, où chaque tuple a une étiquette pour une entrée (une chaîne de | ||
| 5557 | caractères) comme premier élément, un paquet, une origine ou une dérivation | ||
| 5558 | comme deuxième élément et éventuellement le nom d'une sortie à utiliser qui | ||
| 5559 | est @code{"out"} par défaut (@pxref{Des paquets avec plusieurs résultats}, pour | ||
| 5560 | plus d'informations sur les sorties des paquets). Par exemple, la liste | ||
| 5561 | suivante spécifie trois entrées : | ||
| 5562 | |||
| 5563 | @example | ||
| 5564 | `(("libffi" ,libffi) | ||
| 5565 | ("libunistring" ,libunistring) | ||
| 5566 | ("glib:bin" ,glib "bin")) ;la sortie "bin" de Glib | ||
| 5567 | @end example | ||
| 5568 | |||
| 5569 | @cindex compilation croisée, dépendances des paquets | ||
| 5570 | La distinction entre @code{native-inputs} et @code{inputs} est nécessaire | ||
| 5571 | lorsqu'on considère la compilation croisée. Lors d'une compilation croisée, | ||
| 5572 | les dépendances listées dans @code{inputs} sont construites pour | ||
| 5573 | l'architecture @emph{cible} ; inversement, les dépendances listées dans | ||
| 5574 | @code{native-inputs} sont construites pour l'architecture de la machine de | ||
| 5575 | @emph{construction}. | ||
| 5576 | |||
| 5577 | @code{native-inputs} est typiquement utilisé pour lister les outils requis à | ||
| 5578 | la construction mais pas à l'exécution, comme Autoconf, Automake, | ||
| 5579 | pkg-config, Gettext ou Bison. @command{guix lint} peut rapporter des | ||
| 5580 | erreurs de ce type (@pxref{Invoquer guix lint}). | ||
| 5581 | |||
| 5582 | @anchor{package-propagated-inputs} | ||
| 5583 | Enfin, @code{propagated-inputs} est similaire à @code{inputs}, mais les | ||
| 5584 | paquets spécifiés seront automatiquement installés avec le paquet auquel ils | ||
| 5585 | appartiennent (@pxref{package-cmd-propagated-inputs, @command{guix | ||
| 5586 | package}}, pour des informations sur la manière dont @command{guix package} | ||
| 5587 | traite les entrées propagées). | ||
| 5588 | |||
| 5589 | Par exemple cela est nécessaire lorsque des bibliothèques C/C++ ont besoin | ||
| 5590 | d'en-têtes d'une autre bibliothèque pour être compilé ou lorsqu'un fichier | ||
| 5591 | pkg-config se rapporte à un autre @i{via} son champ @code{Requires}. | ||
| 5592 | |||
| 5593 | Un autre exemple où @code{propagated-inputs} est utile est pour les langages | ||
| 5594 | auxquels il manque un moyen de retenir le chemin de recherche comme c'est le | ||
| 5595 | cas du @code{RUNPATH} des fichiers ELF ; cela comprend Guile, Python, Perl | ||
| 5596 | et plus. Pour s'assurer que les bibliothèques écrites dans ces langages | ||
| 5597 | peuvent trouver le code des bibliothèques dont elles dépendent à | ||
| 5598 | l'exécution, les dépendances à l'exécution doivent être listées dans | ||
| 5599 | @code{propagated-inputs} plutôt que @code{inputs}. | ||
| 5600 | |||
| 5601 | @item @code{outputs} (par défaut : @code{'("out")}) | ||
| 5602 | La liste des noms de sorties du paquet. @xref{Des paquets avec plusieurs résultats}, pour des exemples typiques d'utilisation de sorties | ||
| 5603 | supplémentaires. | ||
| 5604 | |||
| 5605 | @item @code{native-search-paths} (par défaut : @code{'()}) | ||
| 5606 | @itemx @code{search-paths} (par défaut : @code{'()}) | ||
| 5607 | Une liste d'objets @code{search-path-specification} décrivant les variables | ||
| 5608 | d'environnement de recherche de chemins que ce paquet utilise. | ||
| 5609 | |||
| 5610 | @item @code{replacement} (par défaut : @code{#f}) | ||
| 5611 | Ce champ doit être soit @code{#f} soit un objet de paquet qui sera utilisé | ||
| 5612 | comme @dfn{remplaçant} de ce paquet. @xref{Mises à jour de sécurité, grafts}, pour | ||
| 5613 | plus de détails. | ||
| 5614 | |||
| 5615 | @item @code{synopsis} | ||
| 5616 | Une description sur une ligne du paquet. | ||
| 5617 | |||
| 5618 | @item @code{description} | ||
| 5619 | Une description plus détaillée du paquet. | ||
| 5620 | |||
| 5621 | @item @code{license} | ||
| 5622 | @cindex licence, des paquets | ||
| 5623 | La licence du paquet ; une valeur tirée de @code{(guix licenses)} ou une | ||
| 5624 | liste de ces valeurs. | ||
| 5625 | |||
| 5626 | @item @code{home-page} | ||
| 5627 | L'URL de la page d'accueil du paquet, en tant que chaîne de caractères. | ||
| 5628 | |||
| 5629 | @item @code{supported-systems} (par défaut : @var{%supported-systems}) | ||
| 5630 | La liste des systèmes supportés par le paquet, comme des chaînes de | ||
| 5631 | caractères de la forme @code{architecture-noyau}, par exemple | ||
| 5632 | @code{"x86_64-linux"}. | ||
| 5633 | |||
| 5634 | @item @code{maintainers} (par défaut : @code{'()}) | ||
| 5635 | La liste des mainteneurs du paquet, comme des objets @code{maintainer}. | ||
| 5636 | |||
| 5637 | @item @code{location} (par défaut : emplacement de la source de la forme @code{package}) | ||
| 5638 | L'emplacement de la source du paquet. C'est utile de le remplacer lorsqu'on | ||
| 5639 | hérite d'un autre paquet, auquel cas ce champ n'est pas automatiquement | ||
| 5640 | corrigé. | ||
| 5641 | @end table | ||
| 5642 | @end deftp | ||
| 5643 | |||
| 5644 | @deffn {Scheme Syntax} this-package | ||
| 5645 | When used in the @emph{lexical scope} of a package field definition, this | ||
| 5646 | identifier resolves to the package being defined. | ||
| 5647 | |||
| 5648 | The example below shows how to add a package as a native input of itself | ||
| 5649 | when cross-compiling: | ||
| 5650 | |||
| 5651 | @example | ||
| 5652 | (package | ||
| 5653 | (name "guile") | ||
| 5654 | ;; ... | ||
| 5655 | |||
| 5656 | ;; When cross-compiled, Guile, for example, depends on | ||
| 5657 | ;; a native version of itself. Add it here. | ||
| 5658 | (native-inputs (if (%current-target-system) | ||
| 5659 | `(("self" ,this-package)) | ||
| 5660 | '()))) | ||
| 5661 | @end example | ||
| 5662 | |||
| 5663 | It is an error to refer to @code{this-package} outside a package definition. | ||
| 5664 | @end deffn | ||
| 5665 | |||
| 5666 | @node Référence des origines | ||
| 5667 | @subsection Référence de @code{origin} | ||
| 5668 | |||
| 5669 | Cette section résume toutes les options disponibles dans le déclarations | ||
| 5670 | @code{origin} (@pxref{Définition des paquets}). | ||
| 5671 | |||
| 5672 | @deftp {Type de données} origin | ||
| 5673 | C'est le type de donnée qui représente l'origine d'un code source. | ||
| 5674 | |||
| 5675 | @table @asis | ||
| 5676 | @item @code{uri} | ||
| 5677 | Un objet contenant l'URI de la source. Le type d'objet dépend de la | ||
| 5678 | @code{method} (voir plus bas). Par exemple, avec la méthode @var{url-fetch} | ||
| 5679 | de @code{(guix download)}, les valeurs valide d'@code{uri} sont : une URL | ||
| 5680 | représentée par une chaîne de caractères, ou une liste de chaînes de | ||
| 5681 | caractères. | ||
| 5682 | |||
| 5683 | @item @code{method} | ||
| 5684 | Un procédure qui gère l'URI. | ||
| 5685 | |||
| 5686 | Quelques exemples : | ||
| 5687 | |||
| 5688 | @table @asis | ||
| 5689 | @item @var{url-fetch} de @code{(guix download)} | ||
| 5690 | télécharge un fichier depuis l'URL HTTP, HTTPS ou FTP spécifiée dans le | ||
| 5691 | champ @code{uri} ; | ||
| 5692 | |||
| 5693 | @vindex git-fetch | ||
| 5694 | @item @var{git-fetch} de @code{(guix git-download)} | ||
| 5695 | clone le dépôt sous contrôle de version Git et récupère la révision | ||
| 5696 | spécifiée dans le champ @code{uri} en tant qu'objet @code{git-reference} ; | ||
| 5697 | un objet @code{git-reference} ressemble à cela : | ||
| 5698 | |||
| 5699 | @example | ||
| 5700 | (git-reference | ||
| 5701 | (url "git://git.debian.org/git/pkg-shadow/shadow") | ||
| 5702 | (commit "v4.1.5.1")) | ||
| 5703 | @end example | ||
| 5704 | @end table | ||
| 5705 | |||
| 5706 | @item @code{sha256} | ||
| 5707 | Un bytevector contenant le hash SHA-256 de la source. Typiquement la forme | ||
| 5708 | @code{base32} est utilisée ici pour générer le bytevector depuis une chaîne | ||
| 5709 | de caractères en base-32. | ||
| 5710 | |||
| 5711 | Vous pouvez obtenir cette information avec @code{guix download} | ||
| 5712 | (@pxref{Invoquer guix download}) ou @code{guix hash} (@pxref{Invoquer guix hash}). | ||
| 5713 | |||
| 5714 | @item @code{file-name} (par défaut : @code{#f}) | ||
| 5715 | Le nom de fichier à utiliser pour sauvegarder le fichier. Lorsqu'elle est à | ||
| 5716 | @code{#f}, une valeur par défaut raisonnable est utilisée dans la plupart | ||
| 5717 | des cas. Dans le cas où la source est récupérée depuis une URL, le nom de | ||
| 5718 | fichier est celui de l'URL. Pour les sources récupérées depuis un outil de | ||
| 5719 | contrôle de version, il est recommandé de fournir un nom de fichier | ||
| 5720 | explicitement parce que le nom par défaut n'est pas très descriptif. | ||
| 5721 | |||
| 5722 | @item @code{patches} (par défaut : @code{'()}) | ||
| 5723 | Une liste de noms de fichiers, d'origines ou d'objets simili-fichiers | ||
| 5724 | (@pxref{G-Expressions, file-like objects}) qui pointent vers des correctifs | ||
| 5725 | à appliquer sur la source. | ||
| 5726 | |||
| 5727 | Cette liste de correctifs doit être inconditionnelle. En particulier, elle | ||
| 5728 | ne peut pas dépendre des valeurs de @code{%current-system} ou | ||
| 5729 | @code{%current-target-system}. | ||
| 5730 | |||
| 5731 | @item @code{snippet} (par défaut : @code{#f}) | ||
| 5732 | Une G-expression (@pxref{G-Expressions}) ou une S-expression qui sera lancée | ||
| 5733 | dans le répertoire des sources. C'est une manière pratique de modifier la | ||
| 5734 | source, parfois plus qu'un correctif. | ||
| 5735 | |||
| 5736 | @item @code{patch-flags} (par défaut : @code{'("-p1")}) | ||
| 5737 | Une liste de drapeaux à passer à la commande @code{patch}. | ||
| 5738 | |||
| 5739 | @item @code{patch-inputs} (par défaut : @code{#f}) | ||
| 5740 | Paquets d'entrées ou dérivations pour le processus de correction. | ||
| 5741 | Lorsqu'elle est à @code{#f}, l'ensemble d'entrées habituellement nécessaire | ||
| 5742 | pour appliquer des correctifs est fournit, comme GNU@tie{}Patch. | ||
| 5743 | |||
| 5744 | @item @code{modules} (par défaut : @code{'()}) | ||
| 5745 | Une liste de modules Guile qui devraient être chargés pendant le processus | ||
| 5746 | de correction et pendant que le lancement du code du champ @code{snippet}. | ||
| 5747 | |||
| 5748 | @item @code{patch-guile} (par défaut : @code{#f}) | ||
| 5749 | Le paquet Guile à utiliser dans le processus de correction. Lorsqu'elle est | ||
| 5750 | à @code{#f}, une valeur par défaut raisonnable est utilisée. | ||
| 5751 | @end table | ||
| 5752 | @end deftp | ||
| 5753 | |||
| 5754 | |||
| 5755 | @node Systèmes de construction | ||
| 5756 | @section Systèmes de construction | ||
| 5757 | |||
| 5758 | @cindex système de construction | ||
| 5759 | Chaque définition de paquet définie un @dfn{système de construction} et des | ||
| 5760 | arguments pour ce système de construction (@pxref{Définition des paquets}). Ce | ||
| 5761 | champ @code{build-system} représente la procédure de construction du paquet, | ||
| 5762 | ainsi que des dépendances implicites pour cette procédure de construction. | ||
| 5763 | |||
| 5764 | Les systèmes de construction sont des objets | ||
| 5765 | @code{<build-system>}. L'interface pour les créer et les manipuler est | ||
| 5766 | fournie par le module @code{(guix build-system)} et les systèmes de | ||
| 5767 | construction eux-mêmes sont exportés par des modules spécifiques. | ||
| 5768 | |||
| 5769 | @cindex sac (représentation à bas-niveau des paquets) | ||
| 5770 | Sous le capot, les systèmes de construction compilent d'abord des objets | ||
| 5771 | paquets en @dfn{sacs}. Un @dfn{sac} est comme un paquet, mais avec moins de | ||
| 5772 | décoration — en d'autres mots, un sac est une représentation à bas-niveau | ||
| 5773 | d'un paquet, qui inclus toutes les entrées de ce paquet, dont certaines ont | ||
| 5774 | été implicitement ajoutées par le système de construction. Cette | ||
| 5775 | représentation intermédiaire est ensuite compilée en une dérivation | ||
| 5776 | (@pxref{Dérivations}). | ||
| 5777 | |||
| 5778 | Les systèmes de construction acceptent une liste d'@dfn{arguments} | ||
| 5779 | facultatifs. Dans les définitions de paquets, ils sont passés @i{via} le | ||
| 5780 | champ @code{arguments} (@pxref{Définition des paquets}). Ce sont typiquement des | ||
| 5781 | arguments par mot-clef (@pxref{Optional Arguments, keyword arguments in | ||
| 5782 | Guile,, guile, GNU Guile Reference Manual}). La valeur de ces arguments est | ||
| 5783 | habituellement évaluée dans la @dfn{strate de construction} — c.-à-d.@: par | ||
| 5784 | un processus Guile lancé par le démon (@pxref{Dérivations}). | ||
| 5785 | |||
| 5786 | Le système de construction principal est le @var{gnu-build-system} qui | ||
| 5787 | implémente les procédures de construction standard pour les paquets GNU et | ||
| 5788 | de nombreux autres. Il est fournit par le module @code{(guix build-system | ||
| 5789 | gnu)}. | ||
| 5790 | |||
| 5791 | @defvr {Variable Scheme} gnu-build-system | ||
| 5792 | @var{gnu-build-system} représente le système de construction GNU et ses | ||
| 5793 | variantes (@pxref{Configuration, configuration and makefile conventions,, | ||
| 5794 | standards, GNU Coding Standards}). | ||
| 5795 | |||
| 5796 | @cindex phases de construction | ||
| 5797 | En résumé, les paquets qui l'utilisent sont configurés, construits et | ||
| 5798 | installés avec la séquence @code{./configure && make && make check && make | ||
| 5799 | install} habituelle. En pratique, des étapes supplémentaires sont souvent | ||
| 5800 | requises. Toutes ces étapes sont séparées dans des @dfn{phases} | ||
| 5801 | différentes, notamment@footnote{Regardez les modules @code{(guix build | ||
| 5802 | gnu-build-system)} pour plus de détails sur les phases de construction.}: | ||
| 5803 | |||
| 5804 | @table @code | ||
| 5805 | @item unpack | ||
| 5806 | Décompresse l'archive des sources et se déplace dans l'arborescence des | ||
| 5807 | sources fraîchement extraites. Si la source est en fait un répertoire, le | ||
| 5808 | copie dans l'arborescence de construction et entre dans ce répertoire. | ||
| 5809 | |||
| 5810 | @item patch-source-shebangs | ||
| 5811 | Corrige les shebangs (@code{#!}) rencontrés dans les fichiers pour qu'ils se | ||
| 5812 | réfèrent aux bons noms de fichiers. Par exemple, elle change | ||
| 5813 | @code{#!/bin/sh} en @code{#!/gnu/store/@dots{}-bash-4.3/bin/sh}. | ||
| 5814 | |||
| 5815 | @item configure | ||
| 5816 | Lance le script @code{configure} avec un certain nombre d'options par | ||
| 5817 | défaut, comme @code{--prefix=/gnu/store/@dots{}}, ainsi que les options | ||
| 5818 | spécifiées par l'argument @code{#:configure-flags}. | ||
| 5819 | |||
| 5820 | @item build | ||
| 5821 | Lance @code{make} avec la liste des drapeaux spécifiés avec | ||
| 5822 | @code{#:make-flags}. Si l'argument @code{#:parallel-build?} est vrai (par | ||
| 5823 | défaut), construit avec @code{make -j}. | ||
| 5824 | |||
| 5825 | @item check | ||
| 5826 | Lance @code{make check}, ou une autre cible spécifiée par | ||
| 5827 | @code{#:test-target}, à moins que @code{#:tests? #f} ne soit passé. Si | ||
| 5828 | l'argument @code{#:parallel-tests?} est vrai (par défaut), lance @code{make | ||
| 5829 | check -j}. | ||
| 5830 | |||
| 5831 | @item install | ||
| 5832 | Lance @code{make install} avec les drapeaux listés dans @code{#:make-flags}. | ||
| 5833 | |||
| 5834 | @item patch-shebangs | ||
| 5835 | Corrige les shebangs des fichiers exécutables installés. | ||
| 5836 | |||
| 5837 | @item strip | ||
| 5838 | Nettoie les symboles de débogage dans les fichiers ELF (à moins que | ||
| 5839 | @code{#:strip-binaries?} ne soit faux), les copie dans la sortie | ||
| 5840 | @code{debug} lorsqu'elle est disponible (@pxref{Installer les fichiers de débogage}). | ||
| 5841 | @end table | ||
| 5842 | |||
| 5843 | @vindex %standard-phases | ||
| 5844 | Le module du côté du constructeur @code{(guix build gnu-build-system)} | ||
| 5845 | définie @var{%standard-phases} comme la liste par défaut des phases de | ||
| 5846 | construction. @var{%standard-phases} est une liste de paires de symboles | ||
| 5847 | et de procédures, où la procédure implémente la phase en question. | ||
| 5848 | |||
| 5849 | La liste des phases utilisées par un paquet particulier peut être modifiée | ||
| 5850 | avec le paramètre @code{#:phases}. Par exemple, en passant : | ||
| 5851 | |||
| 5852 | @example | ||
| 5853 | #:phases (modify-phases %standard-phases (delete 'configure)) | ||
| 5854 | @end example | ||
| 5855 | |||
| 5856 | signifie que toutes les procédures décrites plus haut seront utilisées, sauf | ||
| 5857 | la phase @code{configure}. | ||
| 5858 | |||
| 5859 | En plus, ce système de construction s'assure que l'environnement « standard | ||
| 5860 | » pour les paquets GNU est disponible. Cela inclus des outils comme GCC, | ||
| 5861 | libc, Coreutils, Bash, Make, Diffutils, grep et sed (voir le module | ||
| 5862 | @code{(guix build-system gnu)} pour une liste complète). Nous les appelons | ||
| 5863 | les @dfn{entrées implicites} d'un paquet parce que la définition du paquet | ||
| 5864 | ne les mentionne pas. | ||
| 5865 | @end defvr | ||
| 5866 | |||
| 5867 | D'autres objets @code{<build-system>} sont définis pour supporter d'autres | ||
| 5868 | conventions et outils utilisés par les paquets de logiciels libres. Ils | ||
| 5869 | héritent de la plupart de @var{gnu-build-system} et diffèrent surtout dans | ||
| 5870 | l'ensemble des entrées implicites ajoutées au processus de construction et | ||
| 5871 | dans la liste des phases exécutées. Certains de ces systèmes de | ||
| 5872 | construction sont listés ci-dessous. | ||
| 5873 | |||
| 5874 | @defvr {Variable Scheme} ant-build-system | ||
| 5875 | Cette variable est exportée par @code{(guix build-system ant)}. Elle | ||
| 5876 | implémente la procédure de construction pour les paquets Java qui peuvent | ||
| 5877 | être construits avec @url{http://ant.apache.org/, l'outil de construction | ||
| 5878 | Ant}. | ||
| 5879 | |||
| 5880 | Elle ajoute à la fois @code{ant} et the @dfn{kit de développement Java} | ||
| 5881 | (JDK) fournit par le paquet @code{icedtea} à l'ensemble des entrées. Des | ||
| 5882 | paquets différents peuvent être spécifiés avec les paramètres @code{#:ant} | ||
| 5883 | et @code{#:jdk} respectivement. | ||
| 5884 | |||
| 5885 | Lorsque le paquet d'origine ne fournit pas de fichier de construction Ant | ||
| 5886 | acceptable, le paramètre @code{#:jar-name} peut être utilisé pour générer un | ||
| 5887 | fichier de construction Ant @file{build.xml} minimal, avec des tâches pour | ||
| 5888 | construire l'archive jar spécifiée. Dans ce cas, le paramètre | ||
| 5889 | @code{#:source-dir} peut être utilisé pour spécifier le sous-répertoire des | ||
| 5890 | sources, par défaut « src ». | ||
| 5891 | |||
| 5892 | Le paramètre @code{#:main-class} peut être utilisé avec le fichier de | ||
| 5893 | construction minimal pour spécifier la classe principale du jar. Cela rend | ||
| 5894 | le fichier jar exécutable. Le paramètre @code{#:test-include} peut être | ||
| 5895 | utilisé pour spécifier la liste des tests junits à lancer. Il vaut par | ||
| 5896 | défaut @code{(list "**/*Test.java")}. Le paramètre @code{#:test-exclude} | ||
| 5897 | peut être utilisé pour désactiver certains tests. Sa valeur par défaut est | ||
| 5898 | @code{(list "**/Abstract*.java")}, parce que les classes abstraites ne | ||
| 5899 | peuvent pas être utilisées comme des tests. | ||
| 5900 | |||
| 5901 | Le paramètre @code{#:build-target} peut être utilisé pour spécifier la tâche | ||
| 5902 | Ant qui devrait être lancée pendant la phase @code{build}. Par défaut la | ||
| 5903 | tâche « jar » sera lancée. | ||
| 5904 | |||
| 5905 | @end defvr | ||
| 5906 | |||
| 5907 | @defvr {Variable Scheme} android-ndk-build-system | ||
| 5908 | @cindex Distribution android | ||
| 5909 | @cindex système de construction Android NDK | ||
| 5910 | Cette variable est exportée par @code{(guix build-system android-ndk)}. | ||
| 5911 | Elle implémente une procédure de construction pour les paquets du NDK | ||
| 5912 | Android (@i{native development kit}) avec des processus de construction | ||
| 5913 | spécifiques à Guix. | ||
| 5914 | |||
| 5915 | Le système de construction suppose que les paquets installent leur interface | ||
| 5916 | publique (les en-têtes) dans un sous-répertoire de « include » de la sortie | ||
| 5917 | « out » et leurs bibliothèques dans le sous-répertoire « lib » de la sortie | ||
| 5918 | « out ». | ||
| 5919 | |||
| 5920 | Il est aussi supposé que l'union de toutes les dépendances d'un paquet n'a | ||
| 5921 | pas de fichiers en conflit. | ||
| 5922 | |||
| 5923 | Pour l'instant, la compilation croisée n'est pas supportées — donc pour | ||
| 5924 | l'instant les bibliothèques et les fichiers d'en-têtes sont supposés être | ||
| 5925 | des outils de l'hôte. | ||
| 5926 | |||
| 5927 | @end defvr | ||
| 5928 | |||
| 5929 | @defvr {Variable Scheme} asdf-build-system/source | ||
| 5930 | @defvrx {Variable Scheme} asdf-build-system/sbcl | ||
| 5931 | @defvrx {Variable Scheme} asdf-build-system/ecl | ||
| 5932 | |||
| 5933 | Ces variables, exportées par @code{(guix build-system asdf)}, implémentent | ||
| 5934 | les procédures de constructions pour les paquets en Common Lisp qui | ||
| 5935 | utilisent @url{https://common-lisp.net/project/asdf/, ``ASDF''}. ASDF est | ||
| 5936 | un dispositif de définition de systèmes pour les programmes et les | ||
| 5937 | bibliothèques en Common Lisp. | ||
| 5938 | |||
| 5939 | Le système @code{asdf-build-system/source} installe les paquets au format | ||
| 5940 | source qui peuvent être chargés avec n'importe quelle implémentation de | ||
| 5941 | common lisp, via ASDF. Les autres, comme @code{asdf-build-system/sbcl}, | ||
| 5942 | installent des binaires au format qu'un implémentation particulière | ||
| 5943 | comprend. Ces systèmes de constructions peuvent aussi être utilisés pour | ||
| 5944 | produire des programmes exécutables ou des images lisp qui contiennent un | ||
| 5945 | ensemble de paquets pré-chargés. | ||
| 5946 | |||
| 5947 | Le système de construction utilise des conventions de nommage. Pour les | ||
| 5948 | paquets binaires, le nom du paquet devrait être préfixé par l'implémentation | ||
| 5949 | lisp, comme @code{sbcl-} pour @code{asdf-build-system/sbcl}. | ||
| 5950 | |||
| 5951 | En plus, le paquet source correspondant devrait étiquetté avec la même | ||
| 5952 | convention que les paquets python (voir @ref{Modules python}), avec le | ||
| 5953 | préfixe @code{cl-}. | ||
| 5954 | |||
| 5955 | Pour les paquets binaires, chaque système devrait être défini comme un | ||
| 5956 | paquet Guix. Si un paquet @code{origine} contient plusieurs systèmes, on | ||
| 5957 | peut créer des variantes du paquet pour construire tous les systèmes. Les | ||
| 5958 | paquets sources, qui utilisent @code{asdf-build-system/source}, peuvent | ||
| 5959 | contenir plusieurs systèmes. | ||
| 5960 | |||
| 5961 | Pour créer des programmes exécutables et des images, les procédures côté | ||
| 5962 | construction @code{build-program} et @code{build-image} peuvent être | ||
| 5963 | utilisées. Elles devraient être appelées dans une phase de construction | ||
| 5964 | après la phase @code{create-symlinks} pour que le système qui vient d'être | ||
| 5965 | construit puisse être utilisé dans l'image créée. @code{build-program} | ||
| 5966 | requiert une liste d'expressions Common Lisp dans l'argument | ||
| 5967 | @code{#:entry-program}. | ||
| 5968 | |||
| 5969 | Si le système n'est pas défini dans son propre fichier @code{.asd} du même | ||
| 5970 | nom, alors le paramètre @code{#:asd-file} devrait être utilisé pour | ||
| 5971 | spécifier dans quel fichier le système est défini. De plus, si le paquet | ||
| 5972 | défini un système pour ses tests dans un fichier séparé, il sera chargé | ||
| 5973 | avant que les tests ne soient lancés s'il est spécifié par le paramètre | ||
| 5974 | @code{#:test-asd-file}. S'il n'est pas spécifié, les fichiers | ||
| 5975 | @code{<system>-tests.asd}, @code{<system>-test.asd}, @code{tests.asd} et | ||
| 5976 | @code{test.asd} seront testés. | ||
| 5977 | |||
| 5978 | Si pour quelque raison que ce soit le paquet doit être nommé d'une manière | ||
| 5979 | différente de ce que la convention de nommage suggère, le paramètre | ||
| 5980 | @code{#:asd-system-name} peut être utilisé pour spécifier le nom du système. | ||
| 5981 | |||
| 5982 | @end defvr | ||
| 5983 | |||
| 5984 | @defvr {Variable Scheme} cargo-build-system | ||
| 5985 | @cindex Langage de programmation Rust | ||
| 5986 | @cindex Cargo (système de construction Rust) | ||
| 5987 | Cette variable est exportée par @code{(guix build-system cargo)}. Elle | ||
| 5988 | supporte les construction de paquets avec Cargo, le système de construction | ||
| 5989 | du @uref{https://www.rust-lang.org, langage de programmation Rust}. | ||
| 5990 | |||
| 5991 | Dans sa phase @code{configure}, ce système de construction remplace les | ||
| 5992 | dépendances spécifiées dans le fichier @file{Cargo.toml} par des paquets | ||
| 5993 | Guix. La phase @code{install} installe les binaires et installe aussi le | ||
| 5994 | code source et le fichier @file{Cargo.toml}. | ||
| 5995 | @end defvr | ||
| 5996 | |||
| 5997 | @cindex Clojure (langage de programmation) | ||
| 5998 | @cindex système de construction Clojure simple | ||
| 5999 | @defvr {Variable Scheme} clojure-build-system | ||
| 6000 | Cette variable est exportée par @code{(guix build-system clojure)}. Elle | ||
| 6001 | implémente une procédure de construction des paquets simple qui utilise le | ||
| 6002 | bon vieux @code{compile} de Clojure. La compilation croisée n'est pas | ||
| 6003 | encore supportée. | ||
| 6004 | |||
| 6005 | Elle ajoute @code{clojure}, @code{icedtea} et @code{zip} à l'ensemble des | ||
| 6006 | entrées. Des paquets différents peuvent être spécifiés avec les paramètres | ||
| 6007 | @code{#:clojure}, @code{#:jdk} et @code{#:zip}. | ||
| 6008 | |||
| 6009 | Une liste de répertoires sources, de répertoires de tests et de noms de jar | ||
| 6010 | peuvent être spécifiés avec les paramètres @code{#:source-dirs}, | ||
| 6011 | @code{#:test-dirs} et @code{#:jar-names}. Le répertoire de construction est | ||
| 6012 | la classe principale peuvent être spécifiés avec les paramètres | ||
| 6013 | @code{#:compile-dir} et @code{#:main-class}. Les autres paramètres sont | ||
| 6014 | documentés plus bas. | ||
| 6015 | |||
| 6016 | Ce système de construction est une extension de @var{ant-build-system}, mais | ||
| 6017 | avec les phases suivantes modifiées : | ||
| 6018 | |||
| 6019 | @table @code | ||
| 6020 | |||
| 6021 | @item build | ||
| 6022 | Cette phase appelle @code{compile} en Clojure pour compiler les fichiers | ||
| 6023 | sources et lance @command{jar} pour créer les fichiers jar à partir des | ||
| 6024 | fichiers sources et des fichiers compilés en suivant la liste d'inclusion et | ||
| 6025 | d'exclusion spécifiées dans @code{#:aot-include} et @code{#:aot-exclude}. | ||
| 6026 | La liste d'exclusion a la priorité sur la liste d'inclusion. Ces listes | ||
| 6027 | consistent en des symboles représentant des bibliothèque Clojure ou le mot | ||
| 6028 | clef spécial @code{#:all}, représentant toutes les bibliothèques Clojure | ||
| 6029 | trouvées dans les répertoires des sources. Le paramètre | ||
| 6030 | @code{#:omit-source?} décide si les sources devraient être incluses dans les | ||
| 6031 | fichiers jar. | ||
| 6032 | |||
| 6033 | @item check | ||
| 6034 | Cette phase lance les tests en suivant les liste d'inclusion et d'exclusion | ||
| 6035 | spécifiées dans @code{#:test-include} et @code{#:test-exclude}. Leur | ||
| 6036 | signification est analogue à celle de @code{#:aot-include} et | ||
| 6037 | @code{#:aot-exclude}, sauf que le mot-clef spécial @code{#:all} signifie | ||
| 6038 | maintenant toutes les bibliothèques Clojure trouvées dans les répertoires de | ||
| 6039 | tests. Le paramètre @code{#:tests?} décide si les tests devraient être | ||
| 6040 | lancés. | ||
| 6041 | |||
| 6042 | @item install | ||
| 6043 | Cette phase installe tous les fichiers jar précédemment construits. | ||
| 6044 | @end table | ||
| 6045 | |||
| 6046 | En dehors de cela, le système de construction contient aussi la phase | ||
| 6047 | suivante : | ||
| 6048 | |||
| 6049 | @table @code | ||
| 6050 | |||
| 6051 | @item install-doc | ||
| 6052 | Cette phase installe tous les fichiers dans le répertoire de plus haut | ||
| 6053 | niveau dont le nom correspond à @var{%doc-regex}. On peut spécifier une | ||
| 6054 | regex différente avec le paramètre @code{#:doc-regex}. Tous les fichiers | ||
| 6055 | (récursivement) dans les répertoires de documentations spécifiés dans | ||
| 6056 | @code{#:doc-dirs} sont aussi installés. | ||
| 6057 | @end table | ||
| 6058 | @end defvr | ||
| 6059 | |||
| 6060 | @defvr {Variable Scheme} cmake-build-system | ||
| 6061 | Cette variable est exportée par @code{(guix build-system cmake)}. Elle | ||
| 6062 | implémente la procédure de construction des paquets qui utilisent | ||
| 6063 | l'@url{http://www.cmake.org, outil de construction CMake}. | ||
| 6064 | |||
| 6065 | Elle ajoute automatiquement le paquet @code{cmake} à l'ensemble des | ||
| 6066 | entrées. Le paquet utilisé peut être spécifié par le paramètre | ||
| 6067 | @code{#:cmake}. | ||
| 6068 | |||
| 6069 | Le paramètre @code{#:configure-flags} est pris comme une liste de drapeaux à | ||
| 6070 | passer à la commande @command{cmake}. Le paramètre @code{#:build-type} | ||
| 6071 | spécifie en termes abstrait les drapeaux passés au compilateur ; sa valeur | ||
| 6072 | par défaut est @code{"RelWithDebInfo"} (ce qui veut dire « mode public avec | ||
| 6073 | les informations de débogage » en plus court), ce qui signifie en gros que | ||
| 6074 | le code sera compilé avec @code{-O2 -g} comme pour les paquets autoconf par | ||
| 6075 | défaut. | ||
| 6076 | @end defvr | ||
| 6077 | |||
| 6078 | @defvr {Variable Scheme} dune-build-system | ||
| 6079 | Cette variable est exportée par @code{(guix build-system dune)}. Elle prend | ||
| 6080 | en charge la construction des paquets qui utilisent | ||
| 6081 | @uref{https://dune.build/, Dune}, un outil de construction pour le langage | ||
| 6082 | de programmation OCaml. Elle est implémentée comme une extension de | ||
| 6083 | @code{ocaml-build-system} décrit plus bas. En tant que tel, les paramètres | ||
| 6084 | @code{#:ocaml} et @code{#:findlib} peuvent être passés à ce système de | ||
| 6085 | construction. | ||
| 6086 | |||
| 6087 | Elle ajoute automatiquement le paquet @code{dune} à l'ensemble des entrées. | ||
| 6088 | Le paquet utilisé peut être spécifié par le paramètre @code{#:dune}. | ||
| 6089 | |||
| 6090 | Il n'y a pas de phase @code{configure} parce que les paquets dune n'ont | ||
| 6091 | habituellement pas besoin d'être configurés. Le paramètre | ||
| 6092 | @code{#:build-flags} est interprété comme une liste de drapeaux pour la | ||
| 6093 | commande @code{dune} pendant la construction. | ||
| 6094 | |||
| 6095 | Le paramètre @code{#:jbuild?} peut être passé pour utiliser la commande | ||
| 6096 | @code{jbuild} à la place de la commande @code{dune} plus récente pour la | ||
| 6097 | construction d'un paquet. Sa valeur par défaut est @code{#f}. | ||
| 6098 | |||
| 6099 | Le paramètre @code{#:package} peut être passé pour spécifié un nom de | ||
| 6100 | paquet, ce qui est utile lorsqu'un paquet contient plusieurs paquets et que | ||
| 6101 | vous voulez n'en construire qu'un. C'est équivalent à passer l'argument | ||
| 6102 | @code{-p} à @code{dune}. | ||
| 6103 | @end defvr | ||
| 6104 | |||
| 6105 | @defvr {Variable Scheme} go-build-system | ||
| 6106 | Cette variable est exportée par @code{(guix build-system go)}. Elle | ||
| 6107 | implémente la procédure pour les paquets Go utilisant les | ||
| 6108 | @url{https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies, | ||
| 6109 | mécanismes de construction Go} standard. | ||
| 6110 | |||
| 6111 | L'utilisateur doit fournir une valeur à la clef @code{#:import-path} et, | ||
| 6112 | dans certains cas, @code{#:unpack-path}. Le | ||
| 6113 | @url{https://golang.org/doc/code.html#ImportPaths, chemin d'import} | ||
| 6114 | correspond au chemin dans le système de fichiers attendu par le script de | ||
| 6115 | construction du paquet et les paquets qui s'y réfèrent et fournit une | ||
| 6116 | manière unique de se référer à un paquet Go. Il est typiquement basé sur | ||
| 6117 | une combinaison de l'URI du code source du paquet et d'une structure | ||
| 6118 | hiérarchique du système de fichier. Dans certains cas, vous devrez extraire | ||
| 6119 | le code source du paquet dans une structure de répertoires différente que | ||
| 6120 | celle indiquée par le chemin d'import et @code{#:unpack-path} devrait être | ||
| 6121 | utilisé dans ces cas-là. | ||
| 6122 | |||
| 6123 | Les paquets qui fournissent des bibliothèques Go devraient installer leur | ||
| 6124 | code source dans la sortie du paquet. La clef @code{#:install-source?}, qui | ||
| 6125 | vaut @code{#t} par défaut, contrôle l'installation du code source. Elle | ||
| 6126 | peut être mise à @code{#f} pour les paquets qui ne fournissent que des | ||
| 6127 | fichiers exécutables. | ||
| 6128 | @end defvr | ||
| 6129 | |||
| 6130 | @defvr {Variable Scheme} glib-or-gtk-build-system | ||
| 6131 | Cette variable est exportée par @code{(guix build-system glib-or-gtk)}. | ||
| 6132 | Elle est conçue pour être utilisée par des paquets qui utilisent GLib ou | ||
| 6133 | GTK+. | ||
| 6134 | |||
| 6135 | Ce système de construction ajoute les deux phases suivantes à celles | ||
| 6136 | définies par @var{gnu-build-system} : | ||
| 6137 | |||
| 6138 | @table @code | ||
| 6139 | @item glib-or-gtk-wrap | ||
| 6140 | La phase @code{glib-or-gtk-wrap} s'assure que les programmes dans | ||
| 6141 | @file{bin/} sont capable de trouver les « schemas » GLib et les | ||
| 6142 | @uref{https://developer.gnome.org/gtk3/stable/gtk-running.html, modules | ||
| 6143 | GTK+}. Ceci est fait en enveloppant les programmes dans des scripts de | ||
| 6144 | lancement qui initialisent correctement les variables d'environnement | ||
| 6145 | @code{XDG_DATA_DIRS} et @code{GTK_PATH}. | ||
| 6146 | |||
| 6147 | Il est possible d'exclure des sorties spécifiques de ce processus | ||
| 6148 | d'enveloppage en listant leur nom dans le paramètre | ||
| 6149 | @code{#:glib-or-gtk-wrap-excluded-outputs}. C'est utile lorsqu'une sortie | ||
| 6150 | est connue pour ne pas contenir de binaires GLib ou GTK+, et où l'enveloppe | ||
| 6151 | ajouterait une dépendance inutile vers GLib et GTK+. | ||
| 6152 | |||
| 6153 | @item glib-or-gtk-compile-schemas | ||
| 6154 | La phase @code{glib-or-gtk-compile-schemas} s'assure que tous les | ||
| 6155 | @uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html, | ||
| 6156 | schémas GSettings} de GLib sont compilés. La compilation est effectuée par | ||
| 6157 | le programme @command{glib-compile-schemas}. Il est fournit par le paquet | ||
| 6158 | @code{glib:bin} qui est automatiquement importé par le système de | ||
| 6159 | construction. Le paquet @code{glib} qui fournit | ||
| 6160 | @command{glib-compile-schemas} peut être spécifié avec le paramètre | ||
| 6161 | @code{#:glib}. | ||
| 6162 | @end table | ||
| 6163 | |||
| 6164 | Ces deux phases sont exécutées après la phase @code{install}. | ||
| 6165 | @end defvr | ||
| 6166 | |||
| 6167 | @defvr {Variable Scheme} guile-build-system | ||
| 6168 | Ce système de construction sert aux paquets Guile qui consistent | ||
| 6169 | exclusivement en code Scheme et qui sont si simple qu'ils n'ont même pas un | ||
| 6170 | makefile, sans parler d'un script @file{configure}. Il compile le code | ||
| 6171 | Scheme en utilisant @command{guild compile} (@pxref{Compilation,,, guile, | ||
| 6172 | GNU Guile Reference Manual}) et installe les fichiers @file{.scm} et | ||
| 6173 | @file{.go} aux bons emplacements. Il installe aussi la documentation. | ||
| 6174 | |||
| 6175 | Ce système de construction supporte la compilation croisée en utilisant | ||
| 6176 | l'option @code{--target} de @command{guild compile}. | ||
| 6177 | |||
| 6178 | Les paquets construits avec @code{guile-build-system} doivent fournir un | ||
| 6179 | paquet Guile dans leur champ @code{native-inputs}. | ||
| 6180 | @end defvr | ||
| 6181 | |||
| 6182 | @defvr {Variable Scheme} minify-build-system | ||
| 6183 | Cette variable est exportée par @code{(guix build-system minify)}. Elle | ||
| 6184 | implémente une procédure de minification pour des paquets JavaScript | ||
| 6185 | simples. | ||
| 6186 | |||
| 6187 | Elle ajoute @code{uglify-js} à l'ensemble des entrées et l'utilise pour | ||
| 6188 | compresser tous les fichiers JavaScript du répertoire @file{src}. Un | ||
| 6189 | minifieur différent peut être spécifié avec le paramètre @code{#:uglify-js} | ||
| 6190 | mais il est attendu que ce paquet écrive le code minifié sur la sortie | ||
| 6191 | standard. | ||
| 6192 | |||
| 6193 | Lorsque les fichiers JavaScript d'entrée ne sont pas situés dans le | ||
| 6194 | répertoire @file{src}, le paramètre @code{#:javascript-files} peut être | ||
| 6195 | utilisé pour spécifier une liste de noms de fichiers à donner au minifieur. | ||
| 6196 | @end defvr | ||
| 6197 | |||
| 6198 | @defvr {Variable Scheme} ocaml-build-system | ||
| 6199 | Cette variable est exportée par @code{(guix build-system ocaml)}. Elle | ||
| 6200 | implémente une procédure de construction pour les paquets | ||
| 6201 | @uref{https://ocaml.org, OCaml} qui consiste à choisir le bon ensemble de | ||
| 6202 | commande à lancer pour chaque paquet. Les paquets OCaml peuvent demander | ||
| 6203 | des commandes diverses pour être construit. Ce système de construction en | ||
| 6204 | essaye certaines. | ||
| 6205 | |||
| 6206 | Lorsqu'un fichier @file{setup.ml} est présent dans le répertoire de plus | ||
| 6207 | haut niveau, elle lancera @code{ocaml setup.ml -configure}, @code{ocaml | ||
| 6208 | setup.ml -build} et @code{ocaml setup.ml -install}. Le système de | ||
| 6209 | construction supposera que ces fichiers ont été générés par | ||
| 6210 | @uref{http://oasis.forge.ocamlcore.org/, OASIS} et prendra soin | ||
| 6211 | d'initialiser le préfixe et d'activer les tests s'ils ne sont pas | ||
| 6212 | désactivés. Vous pouvez passer des drapeaux de configuration et de | ||
| 6213 | construction avec @code{#:configure-flags} et @code{#:build-flags}. La clef | ||
| 6214 | @code{#:test-flags} peut être passée pour changer l'ensemble des drapeaux | ||
| 6215 | utilisés pour activer les tests. La clef @code{#:use-make?} peut être | ||
| 6216 | utilisée pour outrepasser ce système dans les phases de construction et | ||
| 6217 | d'installation. | ||
| 6218 | |||
| 6219 | Lorsque le paquet a un fichier @file{configure}, il est supposé qu'il s'agit | ||
| 6220 | d'un script configure écrit à la main qui demande un format différent de | ||
| 6221 | celui de @code{gnu-build-system}. Vous pouvez ajouter plus de drapeaux avec | ||
| 6222 | la clef @code{#:configure-flags}. | ||
| 6223 | |||
| 6224 | Lorsque le paquet a un fichier @file{Makefile} (ou @code{#:use-make?} vaut | ||
| 6225 | @code{#t}), il sera utilisé et plus de drapeaux peuvent être passés à la | ||
| 6226 | construction et l'installation avec la clef @code{#:make-flags}. | ||
| 6227 | |||
| 6228 | Enfin, certains paquets n'ont pas ces fichiers mais utilisent un emplacement | ||
| 6229 | plus ou moins standard pour leur système de construction. Dans ce cas, le | ||
| 6230 | système de construction lancera @code{ocaml pkg/pkg.ml} ou | ||
| 6231 | @code{pkg/build.ml} et prendra soin de fournir le chemin du module findlib | ||
| 6232 | requis. Des drapeaux supplémentaires peuvent être passés via la clef | ||
| 6233 | @code{#:bulid-flags}. L'installation se fait avec | ||
| 6234 | @command{opam-installer}. Dans ce cas, le paquet @code{opam} doit être | ||
| 6235 | ajouté au champ @code{native-inputs} de la définition du paquet. | ||
| 6236 | |||
| 6237 | Remarquez que la plupart des paquets OCaml supposent qu'ils seront installés | ||
| 6238 | dans le même répertoire qu'OCaml, ce qui n'est pas ce que nous voulons faire | ||
| 6239 | dans Guix. En particulier, ils installeront leurs fichiers @file{.so} dans | ||
| 6240 | leur propre répertoire de module, ce qui est normalement correct puisqu'il | ||
| 6241 | s'agit du répertoire du compilateur OCaml. Dans Guix en revanche, le | ||
| 6242 | bibliothèques ne peuvent pas y être trouvées et on utilise | ||
| 6243 | @code{CAML_LD_LIBRARY_PATH} à la place. Cette variable pointe vers | ||
| 6244 | @file{lib/ocaml/site-lib/stubslibs} et c'est là où les bibliothèques | ||
| 6245 | @file{.so} devraient être installées. | ||
| 6246 | @end defvr | ||
| 6247 | |||
| 6248 | @defvr {Variable Scheme} python-build-system | ||
| 6249 | Cette variable est exportée par @code{(guix build-system python)}. Elle | ||
| 6250 | implémente la procédure de construction plus ou moins standard utilisée pour | ||
| 6251 | les paquets Python, qui consiste à lancer @code{python setup.py build} puis | ||
| 6252 | @code{python setup.py install --prefix=/gnu/store/@dots{}}. | ||
| 6253 | |||
| 6254 | Pour les paquets qui installent des programmes autonomes dans @code{bin/}, | ||
| 6255 | elle prend soin d'envelopper ces binaires pour que leur variable | ||
| 6256 | d'environnement @code{PYTHONPATH} pointe vers toutes les bibliothèques | ||
| 6257 | Python dont ils dépendent. | ||
| 6258 | |||
| 6259 | Le paquet Python utilisé pour effectuer la construction peut être spécifié | ||
| 6260 | avec le paramètre @code{#:python}. C'est une manière utile de forcer un | ||
| 6261 | paquet à être construit avec une version particulière de l'interpréteur | ||
| 6262 | python, ce qui peut être nécessaire si le paquet n'est compatible qu'avec | ||
| 6263 | une version de l'interpréteur. | ||
| 6264 | |||
| 6265 | Par défaut Guix appelle @code{setup.py} sous le contrôle de | ||
| 6266 | @code{setuptools}, comme le fait @command{pip}. Certains paquets ne sont | ||
| 6267 | pas compatibles avec setuptools (et pip), ainsi vous pouvez désactiver cela | ||
| 6268 | en mettant le paramètre @code{#:use-setuptools} à @code{#f}. | ||
| 6269 | @end defvr | ||
| 6270 | |||
| 6271 | @defvr {Variable Scheme} perl-build-system | ||
| 6272 | Cette variable est exportée par @code{(guix build-system perl)}. Elle | ||
| 6273 | implémente la procédure de construction standard des paquets Perl, qui | ||
| 6274 | consiste soit à lancer @code{perl Build.PL --prefix=/gnu/store/@dots{}}, | ||
| 6275 | suivi de @code{Build} et @code{Build install} ; ou à lancer @code{perl | ||
| 6276 | Makefile.PL PREFIX=/gnu/store/@dots{}}, suivi de @code{make} et @code{make | ||
| 6277 | install}, en fonction de la présence de @code{Build.PL} ou | ||
| 6278 | @code{Makefile.PL} dans la distribution du paquet. Le premier a la | ||
| 6279 | préférence si @code{Build.PL} et @code{Makefile.PL} existent tous deux dans | ||
| 6280 | la distribution du paquet. Cette préférence peut être inversée en | ||
| 6281 | spécifiant @code{#t} pour le paramètre @code{#:make-maker?}. | ||
| 6282 | |||
| 6283 | L'invocation initiale de @code{perl Makefile.PL} ou @code{perl Build.PL} | ||
| 6284 | passe les drapeaux spécifiés par le paramètre @code{#:make-maker-flags} ou | ||
| 6285 | @code{#:module-build-flags}, respectivement. | ||
| 6286 | |||
| 6287 | Le paquet Perl utilisé peut être spécifié avec @code{#:perl}. | ||
| 6288 | @end defvr | ||
| 6289 | |||
| 6290 | @defvr {Variable Scheme} r-build-system | ||
| 6291 | Cette variable est exportée par @code{(guix build-system r)}. Elle | ||
| 6292 | implémente la procédure de construction utilisée par les paquets | ||
| 6293 | @uref{http://r-project.org, R} qui consiste à lancer à peine plus que | ||
| 6294 | @code{R CMD INSTALL --library=/gnu/store/@dots{}} dans un environnement où | ||
| 6295 | @code{R_LIBS_SITE} contient les chemins de toutes les entrées R. Les tests | ||
| 6296 | sont lancés après l'installation avec la fonction R | ||
| 6297 | @code{tools::testInstalledPackage}. | ||
| 6298 | @end defvr | ||
| 6299 | |||
| 6300 | @defvr {Variable Scheme} rakudo-build-system | ||
| 6301 | Cette variable est exportée par @code{(guix build-system rakudo)}. Elle | ||
| 6302 | implémente la procédure de construction utilisée par | ||
| 6303 | @uref{https://rakudo.org/, Rakudo} pour les paquets | ||
| 6304 | @uref{https://perl6.org/, Perl6}. Elle installe le paquet dans | ||
| 6305 | @code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} et installe les binaires, | ||
| 6306 | les fichiers de bibliothèques et les ressources, et enveloppe les fichiers | ||
| 6307 | dans le répertoire @code{bin/}. Les tests peuvent être passés en indiquant | ||
| 6308 | @code{#f} au paramètres @code{tests?}. | ||
| 6309 | |||
| 6310 | Le paquet rakudo utilisé peut être spécifié avec @code{rakudo}. Le paquet | ||
| 6311 | perl6-tap-harness utilisé pour les tests peut être spécifié avec | ||
| 6312 | @code{#:prove6} ou supprimé en passant @code{#f} au paramètre | ||
| 6313 | @code{with-prove6?}. Le paquet perl6-zef utilisé pour les tests et | ||
| 6314 | l'installation peut être spécifié avec @code{#:ef} ou supprimé en passant | ||
| 6315 | @code{#f} au paramètre @code{with-zef?}. | ||
| 6316 | @end defvr | ||
| 6317 | |||
| 6318 | @defvr {Variable Scheme} texlive-build-system | ||
| 6319 | Cette variable est exportée par @code{(guix build-system texlive)}. Elle | ||
| 6320 | est utilisée pour construire des paquets TeX en mode batch avec le moteur | ||
| 6321 | spécifié. Le système de construction initialise la variable | ||
| 6322 | @code{TEXINPUTS} pour trouver tous les fichiers source TeX dans ses entrées. | ||
| 6323 | |||
| 6324 | Par défaut, elle lance @code{luatex} sur tous les fichiers qui se terminent | ||
| 6325 | par @code{ins}. Un moteur et un format différent peuvent être spécifiés | ||
| 6326 | avec l'argument @code{#:tex-format}. Plusieurs cibles de constructions | ||
| 6327 | peuvent être indiquées avec l'argument @code{#:build-targets} qui attend une | ||
| 6328 | liste de noms de fichiers. Le système de construction ajoute uniquement | ||
| 6329 | @code{texlive-bin} et @code{texlive-latex-base} (de @code{(gnu packages | ||
| 6330 | tex)} à la liste des entrées. Les deux peuvent être remplacés avec les | ||
| 6331 | arguments @code{#:texlive-bin} et @code{#:texlive-latex-base}, | ||
| 6332 | respectivement. | ||
| 6333 | |||
| 6334 | Le paramètre @code{#:tex-directory} dit au système de construction où | ||
| 6335 | installer les fichiers construit dans l'arbre texmf. | ||
| 6336 | @end defvr | ||
| 6337 | |||
| 6338 | @defvr {Variable Scheme} ruby-build-system | ||
| 6339 | Cette variable est exportée par @code{(guix build-system ruby)}. Elle | ||
| 6340 | implémenter la procédure de construction RubyGems utilisée par les paquets | ||
| 6341 | Ruby qui consiste à lancer @code{gem build} suivi de @code{gem install}. | ||
| 6342 | |||
| 6343 | Le champ @code{source} d'un paquet qui utilise ce système de construction | ||
| 6344 | référence le plus souvent une archive gem, puisque c'est le format utilisé | ||
| 6345 | par les développeurs Ruby quand ils publient leur logiciel. Le système de | ||
| 6346 | construction décompresse l'archive gem, éventuellement en corrigeant les | ||
| 6347 | sources, lance la suite de tests, recompresse la gemme et l'installe. En | ||
| 6348 | plus, des répertoires et des archives peuvent être référencés pour permettre | ||
| 6349 | de construire des gemmes qui n'ont pas été publiées depuis Git ou une | ||
| 6350 | archive de sources traditionnelle. | ||
| 6351 | |||
| 6352 | Le paquet Ruby utilisé peut être spécifié avec le paramètre @code{#:ruby}. | ||
| 6353 | Une liste de drapeaux supplémentaires à passer à la commande @command{gem} | ||
| 6354 | peut être spécifiée avec le paramètre @code{#:gem-flags}. | ||
| 6355 | @end defvr | ||
| 6356 | |||
| 6357 | @defvr {Variable Scheme} waf-build-system | ||
| 6358 | Cette variable est exportée par @code{(guix build-system waf)}. Elle | ||
| 6359 | implémente une procédure de construction autour du script @code{waf}. Les | ||
| 6360 | phases usuelles — @code{configure}, @code{build} et @code{install} — sont | ||
| 6361 | implémentée en passant leur nom en argument au script @code{waf}. | ||
| 6362 | |||
| 6363 | Le script @code{waf} est exécuté par l'interpréteur Python. Le paquet | ||
| 6364 | Python utilisé pour lancer le script peut être spécifié avec le paramètre | ||
| 6365 | @code{#:python}. | ||
| 6366 | @end defvr | ||
| 6367 | |||
| 6368 | @defvr {Variable Scheme} scons-build-system | ||
| 6369 | Cette variable est exportée par @code{(guix build-system scons)}. Elle | ||
| 6370 | implémente la procédure de construction utilisée par l'outil de construction | ||
| 6371 | SCons. Ce système de construction lance @code{scons} pour construire le | ||
| 6372 | paquet, @code{scons test} pour lancer les tests puis @code{scons install} | ||
| 6373 | pour installer le paquet. | ||
| 6374 | |||
| 6375 | On peut passer des drapeaux supplémentaires à @code{scons} en les spécifiant | ||
| 6376 | avec le paramètre @code{#:scons-flags}. La version de python utilisée pour | ||
| 6377 | lancer SCons peut être spécifiée en sélectionnant le paquet SCons approprié | ||
| 6378 | avec le paramètre @code{#:scons}. | ||
| 6379 | @end defvr | ||
| 6380 | |||
| 6381 | @defvr {Variable Scheme} haskell-build-system | ||
| 6382 | Cette variable est exportée par @code{(guix build-system haskell)}. Elle | ||
| 6383 | implémente la procédure de construction Cabal utilisée par les paquets | ||
| 6384 | Haskell, qui consiste à lancer @code{runhaskell Setup.hs configure | ||
| 6385 | --prefix=/gnu/store/@dots{}} et @code{runhaskell Setup.hs build}. Plutôt | ||
| 6386 | que d'installer le paquets en lançant @code{runhaskell Setup.hs install}, | ||
| 6387 | pour éviter d'essayer d'enregistrer les bibliothèques dans le répertoire du | ||
| 6388 | dépôt en lecture-seule du compilateur, le système de construction utilise | ||
| 6389 | @code{runhaskell Setup.hs copy}, suivi de @code{runhaskell Setup.hs | ||
| 6390 | register}. En plus, le système de construction génère la documentation du | ||
| 6391 | paquet en lançant @code{runhaskell Setup.hs haddock}, à moins que | ||
| 6392 | @code{#:haddock? #f} ne soit passé. Des paramètres facultatifs pour Haddock | ||
| 6393 | peuvent être passés à l'aide du paramètre @code{#:haddock-flags}. Si le | ||
| 6394 | fichier @code{Setup.hs} n'est pas trouvé, le système de construction | ||
| 6395 | cherchera @code{Setup.lhs} à la place. | ||
| 6396 | |||
| 6397 | Le compilateur Haskell utilisé peut être spécifié avec le paramètre | ||
| 6398 | @code{#:haskell} qui a pour valeur par défaut @code{ghc}. | ||
| 6399 | @end defvr | ||
| 6400 | |||
| 6401 | @defvr {Variable Scheme} dub-build-system | ||
| 6402 | Cette variable est exportée par @code{(guix build-system dub)}. Elle | ||
| 6403 | implémente la procédure de construction Dub utilisée par les paquets D qui | ||
| 6404 | consiste à lancer @code{dub build} et @code{dub run}. L'installation est | ||
| 6405 | effectuée en copiant les fichiers manuellement. | ||
| 6406 | |||
| 6407 | Le compilateur D utilisé peut être spécifié avec le paramètre @code{#:ldc} | ||
| 6408 | qui vaut par défaut @code{ldc}. | ||
| 6409 | @end defvr | ||
| 6410 | |||
| 6411 | @defvr {Variable Scheme} emacs-build-system | ||
| 6412 | Cette variable est exportée par @code{(guix build-system emacs)}. Elle | ||
| 6413 | implémente une procédure d'installation similaire au système de gestion de | ||
| 6414 | paquet d'Emacs lui-même (@pxref{Packages,,, emacs, The GNU Emacs Manual}). | ||
| 6415 | |||
| 6416 | Elle crée d'abord le fichier @code{@var{package}-autoloads.el}, puis compile | ||
| 6417 | tous les fichiers Emacs Lisp en bytecode. Contrairement au système de | ||
| 6418 | gestion de paquets d'Emacs, les fichiers de documentation info sont déplacés | ||
| 6419 | dans le répertoire standard et le fichier @file{dir} est supprimé. Chaque | ||
| 6420 | paquet est installé dans son propre répertoire dans | ||
| 6421 | @file{share/emacs/site-lisp/guix.d}. | ||
| 6422 | @end defvr | ||
| 6423 | |||
| 6424 | @defvr {Variable Scheme} font-build-system | ||
| 6425 | Cette variable est exportée par @code{(guix build-system font)}. Elle | ||
| 6426 | implémente une procédure d'installation pour les paquets de polices où des | ||
| 6427 | fichiers de polices TrueType, OpenType, etc.@: sont fournis en amont et | ||
| 6428 | n'ont qu'à être copiés à leur emplacement final. Elle copie les fichiers de | ||
| 6429 | polices à l'emplacement standard dans le répertoire de sortie. | ||
| 6430 | @end defvr | ||
| 6431 | |||
| 6432 | @defvr {Variable Scheme} meson-build-system | ||
| 6433 | Cette variable est exportée par @code{(guix build-system meson)}. Elle | ||
| 6434 | implémente la procédure de construction des paquets qui utilisent | ||
| 6435 | @url{http://mesonbuild.com, Meson} comme système de construction. | ||
| 6436 | |||
| 6437 | Elle ajoute à la fois Meson et @uref{https://ninja-build.org/, Ninja} à | ||
| 6438 | l'ensemble des entrées, et ils peuvent être modifiés avec les paramètres | ||
| 6439 | @code{#:meson} et @code{#:ninja} si requis. Le Meson par défaut est | ||
| 6440 | @code{meson-for-build}, qui est spécial parce qu'il ne nettoie pas le | ||
| 6441 | @code{RUNPATH} des binaires et les bibliothèques qu'il installe. | ||
| 6442 | |||
| 6443 | Ce système de construction est une extension de @var{gnu-build-system}, mais | ||
| 6444 | avec les phases suivantes modifiées pour Meson : | ||
| 6445 | |||
| 6446 | @table @code | ||
| 6447 | |||
| 6448 | @item configure | ||
| 6449 | La phase lance @code{meson} avec les drapeaux spécifiés dans | ||
| 6450 | @code{#:configure-flags}. Le drapeau @code{--build-type} est toujours | ||
| 6451 | initialisé à @code{plain} à moins que quelque chose d'autre ne soit spécifié | ||
| 6452 | dans @code{#:build-type}. | ||
| 6453 | |||
| 6454 | @item build | ||
| 6455 | La phase lance @code{ninja} pour construire le paquet en parallèle par | ||
| 6456 | défaut, mais cela peut être changé avec @code{#:parallel-build?}. | ||
| 6457 | |||
| 6458 | @item check | ||
| 6459 | La phase lance @code{ninja} avec la cible spécifiée dans | ||
| 6460 | @code{#:test-target}, qui est @code{"test"} par défaut. | ||
| 6461 | |||
| 6462 | @item install | ||
| 6463 | La phase lance @code{ninja install} et ne peut pas être changée. | ||
| 6464 | @end table | ||
| 6465 | |||
| 6466 | En dehors de cela, le système de construction ajoute aussi la phase suivante | ||
| 6467 | : | ||
| 6468 | |||
| 6469 | @table @code | ||
| 6470 | |||
| 6471 | @item fix-runpath | ||
| 6472 | Cette phase s'assure que tous les binaire peuvent trouver les bibliothèques | ||
| 6473 | dont ils ont besoin. Elle cherche les bibliothèques requises dans les | ||
| 6474 | sous-répertoires du paquet en construction et les ajoute au @code{RUNPATH} | ||
| 6475 | là où c'est nécessaire. Elle supprime aussi les références aux | ||
| 6476 | bibliothèques laissées là par la phase de construction par | ||
| 6477 | @code{meson-for-build} comme les dépendances des tests, qui ne sont pas | ||
| 6478 | vraiment requises pour le programme. | ||
| 6479 | |||
| 6480 | @item glib-or-gtk-wrap | ||
| 6481 | Cette phase est la phase fournie par @code{glib-or-gtk-build-system} et | ||
| 6482 | n'est pas activée par défaut. Elle peut l'être avec @code{#:glib-or-gtk?}. | ||
| 6483 | |||
| 6484 | @item glib-or-gtk-compile-schemas | ||
| 6485 | Cette phase est la phase fournie par @code{glib-or-gtk-build-system} et | ||
| 6486 | n'est pas activée par défaut. Elle peut l'être avec @code{#:glib-or-gtk?}. | ||
| 6487 | @end table | ||
| 6488 | @end defvr | ||
| 6489 | |||
| 6490 | @defvr {Scheme Variable} linux-module-build-system | ||
| 6491 | @var{linux-module-build-system} allows building Linux kernel modules. | ||
| 6492 | |||
| 6493 | @cindex phases de construction | ||
| 6494 | This build system is an extension of @var{gnu-build-system}, but with the | ||
| 6495 | following phases changed: | ||
| 6496 | |||
| 6497 | @table @code | ||
| 6498 | |||
| 6499 | @item configure | ||
| 6500 | This phase configures the environment so that the Linux kernel's Makefile | ||
| 6501 | can be used to build the external kernel module. | ||
| 6502 | |||
| 6503 | @item build | ||
| 6504 | This phase uses the Linux kernel's Makefile in order to build the external | ||
| 6505 | kernel module. | ||
| 6506 | |||
| 6507 | @item install | ||
| 6508 | This phase uses the Linux kernel's Makefile in order to install the external | ||
| 6509 | kernel module. | ||
| 6510 | @end table | ||
| 6511 | |||
| 6512 | It is possible and useful to specify the Linux kernel to use for building | ||
| 6513 | the module (in the "arguments" form of a package using the | ||
| 6514 | linux-module-build-system, use the key #:linux to specify it). | ||
| 6515 | @end defvr | ||
| 6516 | |||
| 6517 | Enfin, pour les paquets qui n'ont pas besoin de choses sophistiquées, un | ||
| 6518 | système de construction « trivial » est disponible. Il est trivial dans le | ||
| 6519 | sens où il ne fournit en gros aucun support : il n'apporte pas de dépendance | ||
| 6520 | implicite, et n'a pas de notion de phase de construction. | ||
| 6521 | |||
| 6522 | @defvr {Variable Scheme} trivial-build-system | ||
| 6523 | Cette variable est exportée par @code{(guix build-system trivial)}. | ||
| 6524 | |||
| 6525 | Ce système de construction requiert un argument @code{#:builder}. Cet | ||
| 6526 | argument doit être une expression Scheme qui construit la sortie du paquet — | ||
| 6527 | comme avec @code{build-expression->derivation} (@pxref{Dérivations, | ||
| 6528 | @code{build-expression->derivation}}). | ||
| 6529 | @end defvr | ||
| 6530 | |||
| 6531 | @node Le dépôt | ||
| 6532 | @section Le dépôt | ||
| 6533 | |||
| 6534 | @cindex dépôt | ||
| 6535 | @cindex éléments du dépôt | ||
| 6536 | @cindex chemins dans le dépôt | ||
| 6537 | |||
| 6538 | Conceptuellement, le @dfn{dépôt} est l'endroit où les dérivations qui ont | ||
| 6539 | bien été construites sont stockées — par défaut, @file{/gnu/store}. Les | ||
| 6540 | sous-répertoires dans le dépôt s'appellent des @dfn{éléments du dépôt} ou | ||
| 6541 | parfois des @dfn{chemins du dépôt}. Le dépôt a une base de données associée | ||
| 6542 | qui contient des informations comme les chemins du dépôt auxquels se | ||
| 6543 | réfèrent chaque chemin du dépôt et la liste des éléments du dépôt | ||
| 6544 | @emph{valides} — les résultats d'une construction réussie. Cette base de | ||
| 6545 | données se trouve dans @file{@var{localstatedir}/guix/db} où | ||
| 6546 | @var{localstatedir} est le répertoire d'états spécifié @i{via} @option | ||
| 6547 | {--localstatedir} à la configuration, typiquement @file{/var}. | ||
| 6548 | |||
| 6549 | C'est @emph{toujours} le démon qui accède au dépôt pour le compte de ses | ||
| 6550 | clients (@pxref{Invoquer guix-daemon}). Pour manipuler le dépôt, les | ||
| 6551 | clients se connectent au démon par un socket Unix-domain, envoient une | ||
| 6552 | requête dessus et lisent le résultat — ce sont des appels de procédures | ||
| 6553 | distantes, ou RPC. | ||
| 6554 | |||
| 6555 | @quotation Remarque | ||
| 6556 | Les utilisateurs ne doivent @emph{jamais} modifier les fichiers dans | ||
| 6557 | @file{/gnu/store} directement. Cela entraînerait des incohérences et | ||
| 6558 | casserait l'hypothèse d'immutabilité du modèle fonctionnel de Guix | ||
| 6559 | (@pxref{Introduction}). | ||
| 6560 | |||
| 6561 | @xref{Invoquer guix gc, @command{guix gc --verify}}, pour des informations | ||
| 6562 | sur la manière de vérifier l'intégrité du dépôt et d'essayer de réparer des | ||
| 6563 | modifications accidentelles. | ||
| 6564 | @end quotation | ||
| 6565 | |||
| 6566 | Le module @code{(guix store)} fournit des procédures pour se connecter au | ||
| 6567 | démon et pour effectuer des RPC. Elles sont décrites plus bas. Par défaut, | ||
| 6568 | @code{open-connection}, et donc toutes les commandes @command{guix} se | ||
| 6569 | connectent au démon local ou à l'URI spécifiée par la variable | ||
| 6570 | d'environnement @code{GUIX_DAEMON_SOCKET}. | ||
| 6571 | |||
| 6572 | @defvr {Variable d'environnement} GUIX_DAEMON_SOCKET | ||
| 6573 | Lorsqu'elle est initialisée, la valeur de cette variable devrait être un nom | ||
| 6574 | de fichier ou une URI qui désigne l'extrémité du démon. Lorsque c'est un | ||
| 6575 | nom de fichier, il dénote un socket Unix-domain où se connecter. En plus | ||
| 6576 | des noms de fichiers, les schémas d'URI supportés sont : | ||
| 6577 | |||
| 6578 | @table @code | ||
| 6579 | @item file | ||
| 6580 | @itemx unix | ||
| 6581 | Pour les sockets Unix-domain. @code{file:///var/guix/daemon-socket/socket} | ||
| 6582 | est équivalent à @file{/var/guix/daemon-socket/socket}. | ||
| 6583 | |||
| 6584 | @item guix | ||
| 6585 | @cindex démon, accès distant | ||
| 6586 | @cindex accès distant au démon | ||
| 6587 | @cindex démon, paramètres de grappes | ||
| 6588 | @cindex grappes, paramètres du démon | ||
| 6589 | Ces URI dénotent des connexions par TCP/IP, sans chiffrement ni | ||
| 6590 | authentification de l'hôte distant. L'URI doit spécifier le nom d'hôte et | ||
| 6591 | éventuellement un numéro de port (par défaut 44146) : | ||
| 6592 | |||
| 6593 | @example | ||
| 6594 | guix://master.guix.example.org:1234 | ||
| 6595 | @end example | ||
| 6596 | |||
| 6597 | Ce paramétrage est adapté aux réseaux locaux, comme dans le cas de grappes | ||
| 6598 | de serveurs, où seuls des noms de confiance peuvent se connecter au démon de | ||
| 6599 | construction sur @code{master.guix.example.org}. | ||
| 6600 | |||
| 6601 | L'option @code{--listen} de @command{guix-daemon} peut être utilisé pour lui | ||
| 6602 | dire d'écouter des connexions TCP (@pxref{Invoquer guix-daemon, | ||
| 6603 | @code{--listen}}). | ||
| 6604 | |||
| 6605 | @item ssh | ||
| 6606 | @cindex accès SSH au démon de construction | ||
| 6607 | Ces URI vous permettent de vous connecter au démon à distance à travers | ||
| 6608 | SSH@footnote{Cette fonctionnalité requiert Guile-SSH | ||
| 6609 | (@pxref{Prérequis}).}. Une URL typique pourrait ressembler à ceci : | ||
| 6610 | |||
| 6611 | @example | ||
| 6612 | ssh://charlie@@guix.example.org:22 | ||
| 6613 | @end example | ||
| 6614 | |||
| 6615 | Comme pour @command{guix copy}, les fichiers de configuration du client | ||
| 6616 | OpenSSH sont respectés (@pxref{Invoquer guix copy}). | ||
| 6617 | @end table | ||
| 6618 | |||
| 6619 | Des schémas d'URI supplémentaires pourraient être supportés dans le futur. | ||
| 6620 | |||
| 6621 | @c XXX: Remove this note when the protocol incurs fewer round trips | ||
| 6622 | @c and when (guix derivations) no longer relies on file system access. | ||
| 6623 | @quotation Remarque | ||
| 6624 | La capacité de se connecter à un démon de construction distant est considéré | ||
| 6625 | comme expérimental à la version @value{VERSION}. Contactez-nous pour | ||
| 6626 | partager vos problèmes ou des suggestions que vous pourriez avoir | ||
| 6627 | (@pxref{Contribuer}). | ||
| 6628 | @end quotation | ||
| 6629 | @end defvr | ||
| 6630 | |||
| 6631 | @deffn {Procédure Scheme} open-connection [@var{uri}] [#:reserve-space? #t] | ||
| 6632 | Se connecte au démon à travers le socket Unix-domain à @var{uri} (une chaîne | ||
| 6633 | de caractères). Lorsque @var{reserve-space?} est vrai, cela demande de | ||
| 6634 | réserver un peu de place supplémentaire sur le système de fichiers pour que | ||
| 6635 | le ramasse-miette puisse opérer au cas où le disque serait plein. Renvoie | ||
| 6636 | un objet serveur. | ||
| 6637 | |||
| 6638 | @var{file} a pour valeur par défaut @var{%default-socket-path}, qui est | ||
| 6639 | l'emplacement normal en fonction des options données à @command{configure}. | ||
| 6640 | @end deffn | ||
| 6641 | |||
| 6642 | @deffn {Procédure Scheme} close-connection @var{server} | ||
| 6643 | Ferme la connexion au @var{serveur}. | ||
| 6644 | @end deffn | ||
| 6645 | |||
| 6646 | @defvr {Variable Scheme} current-build-output-port | ||
| 6647 | Cette variable est liée à un paramètre SRFI-39, qui se réfère au port où les | ||
| 6648 | journaux de construction et d'erreur envoyés par le démon devraient être | ||
| 6649 | écrits. | ||
| 6650 | @end defvr | ||
| 6651 | |||
| 6652 | Les procédures qui font des RPC prennent toutes un objet serveur comme | ||
| 6653 | premier argument. | ||
| 6654 | |||
| 6655 | @deffn {Procédure Scheme} valid-path? @var{server} @var{path} | ||
| 6656 | @cindex éléments du dépôt invalides | ||
| 6657 | Renvoie @code{#t} lorsque @var{path} désigne un élément du dépôt valide et | ||
| 6658 | @code{#f} sinon (un élément invalide peut exister sur le disque mais rester | ||
| 6659 | invalide, par exemple parce que c'est le résultat d'une construction annulée | ||
| 6660 | ou échouée). | ||
| 6661 | |||
| 6662 | Une condition @code{&store-protocol-error} est levée si @var{path} n'est pas | ||
| 6663 | préfixée par le répertoire du dépôt (@file{/gnu/store}). | ||
| 6664 | @end deffn | ||
| 6665 | |||
| 6666 | @deffn {Procédure Scheme} add-text-to-store @var{server} @var{name} @var{text} [@var{references}] | ||
| 6667 | Ajoute @var{text} dans le fichier @var{name} dans le dépôt et renvoie son | ||
| 6668 | chemin. @var{references} est la liste des chemins du dépôt référencés par | ||
| 6669 | le chemin du dépôt qui en résulte. | ||
| 6670 | @end deffn | ||
| 6671 | |||
| 6672 | @deffn {Procédure Scheme} build-derivations @var{server} @var{derivations} | ||
| 6673 | Construit @var{derivaton} (ne liste d'objets @code{<derivation>} ou de | ||
| 6674 | chemins de dérivations) et retourne quand le travailleur a fini de les | ||
| 6675 | construire. Renvoie @code{#t} en cas de réussite. | ||
| 6676 | @end deffn | ||
| 6677 | |||
| 6678 | Remarque que le module @code{(guix monads)} fournit une monade ainsi que des | ||
| 6679 | version monadiques des procédures précédentes, avec le but de rendre plus | ||
| 6680 | facile de travailler avec le code qui accède au dépôt (@pxref{La monade du dépôt}). | ||
| 6681 | |||
| 6682 | @c FIXME | ||
| 6683 | @i{Cette section est actuellement incomplète.} | ||
| 6684 | |||
| 6685 | @node Dérivations | ||
| 6686 | @section Dérivations | ||
| 6687 | |||
| 6688 | @cindex dérivations | ||
| 6689 | Les actions de construction à bas-niveau et l'environnement dans lequel | ||
| 6690 | elles sont effectuées sont représentés par des @dfn{dérivations}. Une | ||
| 6691 | dérivation contient cet ensemble d'informations : | ||
| 6692 | |||
| 6693 | @itemize | ||
| 6694 | @item | ||
| 6695 | Les sorties de la dérivation — les dérivations produisent au moins un | ||
| 6696 | fichier ou répertoire dans le dépôt, mais peuvent en produire plus. | ||
| 6697 | |||
| 6698 | @item | ||
| 6699 | @cindex dépendances à la construction | ||
| 6700 | @cindex construction, dépendances | ||
| 6701 | Les entrées de la dérivation — c.-à-d.@: ses dépendances à la construction — | ||
| 6702 | qui peuvent être d'autres dérivations ou des fichiers dans le dépôt | ||
| 6703 | (correctifs, scripts de construction, etc). | ||
| 6704 | |||
| 6705 | @item | ||
| 6706 | Le type de système ciblé par la dérivation — p.ex.@: @code{x86_64-linux}. | ||
| 6707 | |||
| 6708 | @item | ||
| 6709 | Le nom de fichier d'un script de construction dans le dépôt avec les | ||
| 6710 | arguments à lui passer. | ||
| 6711 | |||
| 6712 | @item | ||
| 6713 | Une liste de variables d'environnement à définir. | ||
| 6714 | |||
| 6715 | @end itemize | ||
| 6716 | |||
| 6717 | @cindex chemin de dérivation | ||
| 6718 | Les dérivations permettent aux client du démon de communiquer des actions de | ||
| 6719 | construction dans le dépôt. Elles existent sous deux formes : en tant que | ||
| 6720 | représentation en mémoire, à la fois côté client et démon, et en tant que | ||
| 6721 | fichiers dans le dépôt dont le nom fini par @code{.drv} — on dit que ce sont | ||
| 6722 | des @dfn{chemins de dérivations}. Les chemins de dérivations peuvent être | ||
| 6723 | passés à la procédure @code{build-derivations} pour effectuer les actions de | ||
| 6724 | construction qu'ils prescrivent (@pxref{Le dépôt}). | ||
| 6725 | |||
| 6726 | @cindex dérivations à sortie fixe | ||
| 6727 | Des opérations comme le téléchargement de fichiers et la récupération de | ||
| 6728 | sources gérés par un logiciel de contrôle de version pour lesquels le hash | ||
| 6729 | du contenu est connu à l'avance sont modélisés par des @dfn{dérivations à | ||
| 6730 | sortie fixe}. Contrairement aux dérivation habituelles, les sorties d'une | ||
| 6731 | dérivation à sortie fixe sont indépendantes de ses entrées — p.ex.@: un code | ||
| 6732 | source téléchargé produit le même résultat quelque soit la méthode de | ||
| 6733 | téléchargement utilisée. | ||
| 6734 | |||
| 6735 | @cindex references | ||
| 6736 | @cindex dépendances à l'exécution | ||
| 6737 | @cindex exécution, dépendances | ||
| 6738 | Les sorties des dérivations — c.-à-d.@: les résultats de la construction — | ||
| 6739 | ont un ensemble de @dfn{références}, comme le rapporte le RPC | ||
| 6740 | @code{references} ou la commande @command{guix gc --references} | ||
| 6741 | (@pxref{Invoquer guix gc}). Les références sont l'ensemble des dépendances | ||
| 6742 | à l'exécution des résultats de la construction. Les références sont un | ||
| 6743 | sous-ensemble des entrées de la dérivation ; ce sous-ensemble est | ||
| 6744 | automatiquement calculé par le démon de construction en scannant tous les | ||
| 6745 | fichiers dans les sorties. | ||
| 6746 | |||
| 6747 | Le module @code{(guix derivations)} fournit une représentation des | ||
| 6748 | dérivations comme des objets Scheme, avec des procédures pour créer et | ||
| 6749 | manipuler des dérivations. La primitive de plus bas-niveau pour créer une | ||
| 6750 | dérivation est la procédure @code{derivation} : | ||
| 6751 | |||
| 6752 | @deffn {Procédure Scheme} derivation @var{store} @var{name} @var{builder} @ | ||
| 6753 | @var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @ | ||
| 6754 | [#:recursive? #f] [#:inputs '()] [#:env-vars '()] @ | ||
| 6755 | [#:system (%current-system)] [#:references-graphs #f] @ | ||
| 6756 | [#:allowed-references #f] [#:disallowed-references #f] @ | ||
| 6757 | [#:leaked-env-vars #f] [#:local-build? #f] @ | ||
| 6758 | [#:substitutable? #t] [#:properties '()] | ||
| 6759 | Construit une dérivation avec les arguments donnés et renvoie l'objet | ||
| 6760 | @code{<derivation>} obtenu. | ||
| 6761 | |||
| 6762 | Lorsque @var{hash} et @var{hash-algo} sont donnés, une @dfn{dérivation à | ||
| 6763 | sortie fixe} est créée — c.-à-d.@: une dérivation dont le résultat est connu | ||
| 6764 | à l'avance, comme dans le cas du téléchargement d'un fichier. Si, en plus, | ||
| 6765 | @var{recursive?} est vrai, alors la sortie fixe peut être un fichier | ||
| 6766 | exécutable ou un répertoire et @var{hash} doit être le hash d'une archive | ||
| 6767 | contenant la sortie. | ||
| 6768 | |||
| 6769 | Lorsque @var{references-graphs} est vrai, il doit s'agir d'une liste de | ||
| 6770 | paires de noms de fichiers et de chemins du dépôt. Dans ce cas, le graphe | ||
| 6771 | des références de chaque chemin du dépôt est exporté dans l'environnement de | ||
| 6772 | construction dans le fichier correspondant, dans un simple format texte. | ||
| 6773 | |||
| 6774 | Lorsque @var{allowed-references} est vrai, il doit s'agir d'une liste | ||
| 6775 | d'éléments du dépôt ou de sorties auxquelles la sortie de la dérivations | ||
| 6776 | peut faire référence. De même, @var{disallowed-references}, si vrai, doit | ||
| 6777 | être une liste de choses que la sortie ne doit @emph{pas} référencer. | ||
| 6778 | |||
| 6779 | Lorsque @var{leaked-env-vars} est vrai, il doit s'agir d'une liste de | ||
| 6780 | chaînes de caractères qui désignent les variables d'environnements qui | ||
| 6781 | peuvent « fuiter » de l'environnement du démon dans l'environnement de | ||
| 6782 | construction. Ce n'est possible que pour les dérivations à sortie fixe — | ||
| 6783 | c.-à-d.@: lorsque @var{hash} est vrai. L'utilisation principale est de | ||
| 6784 | permettre à des variables comme @code{http_proxy} d'être passées aux | ||
| 6785 | dérivations qui téléchargent des fichiers. | ||
| 6786 | |||
| 6787 | Lorsque @var{local-build?} est vrai, déclare que la dérivation n'est pas un | ||
| 6788 | bon candidat pour le déchargement et devrait plutôt être construit | ||
| 6789 | localement (@pxref{Réglages du délestage du démon}). C'est le cas des petites | ||
| 6790 | dérivations où le coût du transfert de données est plus important que les | ||
| 6791 | bénéfices. | ||
| 6792 | |||
| 6793 | Lorsque que @var{substitutable?} est faux, déclare que les substituts de la | ||
| 6794 | sortie de la dérivation ne devraient pas être utilisés | ||
| 6795 | (@pxref{Substituts}). Cela est utile par exemple pour construire des paquets | ||
| 6796 | qui utilisent des détails du jeu d'instruction du CPU hôte. | ||
| 6797 | |||
| 6798 | @var{properties} doit être une liste d'association décrivant les « | ||
| 6799 | propriétés » de la dérivation. Elle est gardée telle-quelle, sans être | ||
| 6800 | interprétée, dans la dérivation. | ||
| 6801 | @end deffn | ||
| 6802 | |||
| 6803 | @noindent | ||
| 6804 | Voici un exemple avec un script shell comme constructeur, en supposant que | ||
| 6805 | @var{store} est une connexion ouverte au démon et @var{bash} pointe vers un | ||
| 6806 | exécutable Bash dans le dépôt : | ||
| 6807 | |||
| 6808 | @lisp | ||
| 6809 | (use-modules (guix utils) | ||
| 6810 | (guix store) | ||
| 6811 | (guix derivations)) | ||
| 6812 | |||
| 6813 | (let ((builder ; ajoute le script Bash au dépôt | ||
| 6814 | (add-text-to-store store "my-builder.sh" | ||
| 6815 | "echo hello world > $out\n" '()))) | ||
| 6816 | (derivation store "foo" | ||
| 6817 | bash `("-e" ,builder) | ||
| 6818 | #:inputs `((,bash) (,builder)) | ||
| 6819 | #:env-vars '(("HOME" . "/homeless")))) | ||
| 6820 | @result{} #<derivation /gnu/store/@dots{}-foo.drv => /gnu/store/@dots{}-foo> | ||
| 6821 | @end lisp | ||
| 6822 | |||
| 6823 | Comme on pourrait s'en douter, cette primitive est difficile à utiliser | ||
| 6824 | directement. Une meilleure approche est d'écrire les scripts de | ||
| 6825 | construction en Scheme, bien sur ! Le mieux à faire pour cela est d'écrire | ||
| 6826 | le code de construction comme une « G-expression » et de la passer à | ||
| 6827 | @code{gexp->derivation}. Pour plus d'informations, @pxref{G-Expressions}. | ||
| 6828 | |||
| 6829 | Il fut un temps où @code{gexp->derivation} n'existait pas et où construire | ||
| 6830 | une dérivation donc le code de construction était écrit en Scheme se faisait | ||
| 6831 | avec @code{build-expression->derivation}, documenté plus bas. Cette | ||
| 6832 | procédure est maintenant obsolète, remplacée par @code{gexp->derivation} qui | ||
| 6833 | est meilleure. | ||
| 6834 | |||
| 6835 | @deffn {Procédure Scheme} build-expression->derivation @var{store} @ | ||
| 6836 | @var{name} @var{exp} @ | ||
| 6837 | [#:system (%current-system)] [#:inputs '()] @ | ||
| 6838 | [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @ | ||
| 6839 | [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ | ||
| 6840 | [#:references-graphs #f] [#:allowed-references #f] @ | ||
| 6841 | [#:disallowed-references #f] @ | ||
| 6842 | [#:local-build? #f] [#:substitutable? #t] [#:guile-for-build #f] | ||
| 6843 | Renvoie une dérivation qui exécute l'expression Scheme @var{exp} comme un | ||
| 6844 | constructeur pour la dérivation @var{name}. @var{inputs} doit être une | ||
| 6845 | liste de tuples @code{(name drv-path sub-drv)} ; lorsque @var{sub-drv} est | ||
| 6846 | omis, @code{"out"} est utilisé. @var{modules} est une liste de noms de | ||
| 6847 | modules Guile du chemin de recherche actuel qui seront copiés dans le dépôt, | ||
| 6848 | compilés et rendus disponibles dans le chemin de chargement pendant | ||
| 6849 | l'exécution de @var{exp} — p.@: ex.@: @code{((guix build utils) (guix build | ||
| 6850 | gnu-build-system))}. | ||
| 6851 | |||
| 6852 | @var{exp} est évaluée dans une environnement où @code{%outputs} est lié à | ||
| 6853 | une liste de paires de sortie/chemin, et où @code{%build-inputs} est lié à | ||
| 6854 | une liste de paires de chaînes de caractères et de chemin de sortie | ||
| 6855 | construite à partir de @var{inputs}. Éventuellement, @var{env-vars} est une | ||
| 6856 | liste de paires de chaînes de caractères spécifiant le nom et la valeur de | ||
| 6857 | variables d'environnement visibles pour le constructeur. Le constructeur | ||
| 6858 | termine en passant le résultat de @var{exp} à @code{exit} ; ainsi, lorsque | ||
| 6859 | @var{exp} renvoie @code{#f}, la construction est considérée en échec. | ||
| 6860 | |||
| 6861 | @var{exp} est construite avec @var{guile-for-build} (une dérivation). | ||
| 6862 | Lorsque @var{guile-for-build} est omis où est @code{#f}, la valeur du fluide | ||
| 6863 | @code{%guile-for-build} est utilisée à la place. | ||
| 6864 | |||
| 6865 | Voir la procédure @code{derivation} pour la signification de | ||
| 6866 | @var{references-graph}, @var{allowed-references}, | ||
| 6867 | @var{disallowed-references}, @var{local-build?} et @var{substitutable?}. | ||
| 6868 | @end deffn | ||
| 6869 | |||
| 6870 | @noindent | ||
| 6871 | Voici un exemple de dérivation à sortie unique qui crée un répertoire avec | ||
| 6872 | un fichier : | ||
| 6873 | |||
| 6874 | @lisp | ||
| 6875 | (let ((builder '(let ((out (assoc-ref %outputs "out"))) | ||
| 6876 | (mkdir out) ; create /gnu/store/@dots{}-goo | ||
| 6877 | (call-with-output-file (string-append out "/test") | ||
| 6878 | (lambda (p) | ||
| 6879 | (display '(hello guix) p)))))) | ||
| 6880 | (build-expression->derivation store "goo" builder)) | ||
| 6881 | |||
| 6882 | @result{} #<derivation /gnu/store/@dots{}-goo.drv => @dots{}> | ||
| 6883 | @end lisp | ||
| 6884 | |||
| 6885 | |||
| 6886 | @node La monade du dépôt | ||
| 6887 | @section La monade du dépôt | ||
| 6888 | |||
| 6889 | @cindex monad | ||
| 6890 | |||
| 6891 | Les procédures qui travaillent sur le dépôt décrites dans les sections | ||
| 6892 | précédentes prennent toutes une connexion ouverte au démon de construction | ||
| 6893 | comme premier argument. Bien que le modèle sous-jacent soit fonctionnel, | ||
| 6894 | elles ont soit des effets de bord, soit dépendent de l'état actuel du dépôt. | ||
| 6895 | |||
| 6896 | Le premier point est embêtant : on doit se balader avec la connexion au | ||
| 6897 | démon dans toutes ces fonctions, ce qui rend impossible le fait de composer | ||
| 6898 | des fonctions qui ne prennent pas ce paramètre avec des fonctions qui le | ||
| 6899 | prennent. Le deuxième point est problématique : comme les opérations sur le | ||
| 6900 | dépôt ont des effets de bord ou dépendent d'états externes, elles doivent | ||
| 6901 | être enchaînés correctement. | ||
| 6902 | |||
| 6903 | @cindex valeurs monadiques | ||
| 6904 | @cindex fonctions monadiques | ||
| 6905 | C'est là que le module @code{(guix monads)} arrive à la rescousse. Ce | ||
| 6906 | module fournit un cadre pour travailler avec des @dfn{monads}, en | ||
| 6907 | particulier une monade très utile pour notre usage, la @dfn{monade du | ||
| 6908 | dépôt}. Les monades sont des constructions qui permettent deux choses : | ||
| 6909 | associer un « contexte » avec une valeur (dans notre cas, le contexte est le | ||
| 6910 | dépôt) et construire une séquence de calculs (ici les calculs comprennent | ||
| 6911 | des accès au dépôt). Les valeurs dans une monade — les valeurs qui | ||
| 6912 | contiennent ce contexte supplémentaire — sont appelées des @dfn{valeurs | ||
| 6913 | monadiques} ; les procédures qui renvoient ce genre de valeur sont appelées | ||
| 6914 | des @dfn{procédures monadiques}. | ||
| 6915 | |||
| 6916 | Considérez cette procédure « normale » : | ||
| 6917 | |||
| 6918 | @example | ||
| 6919 | (define (sh-symlink store) | ||
| 6920 | ;; Renvoie une dérivation qui crée un lien symbolique vers l'exécutable « bash ». | ||
| 6921 | (let* ((drv (package-derivation store bash)) | ||
| 6922 | (out (derivation->output-path drv)) | ||
| 6923 | (sh (string-append out "/bin/bash"))) | ||
| 6924 | (build-expression->derivation store "sh" | ||
| 6925 | `(symlink ,sh %output)))) | ||
| 6926 | @end example | ||
| 6927 | |||
| 6928 | En utilisant @code{(guix monads)} et @code{(guix gexp)}, on peut la réécrire | ||
| 6929 | en une fonction monadique : | ||
| 6930 | |||
| 6931 | @example | ||
| 6932 | (define (sh-symlink) | ||
| 6933 | ;; Pareil, mais renvoie une valeur monadique. | ||
| 6934 | (mlet %store-monad ((drv (package->derivation bash))) | ||
| 6935 | (gexp->derivation "sh" | ||
| 6936 | #~(symlink (string-append #$drv "/bin/bash") | ||
| 6937 | #$output)))) | ||
| 6938 | @end example | ||
| 6939 | |||
| 6940 | Il y a plusieurs choses à remarquer avec cette deuxième version : le | ||
| 6941 | paramètre @code{store} est maintenant implicitement « enfilé » dans les | ||
| 6942 | appels aux procédures monadiques @code{package->derivation} et | ||
| 6943 | @code{gexp->derivation}, et la valeur monadique renvoyée par | ||
| 6944 | @code{package->derivation} est @dfn{liée} avec @code{mlet} plutôt qu'avec un | ||
| 6945 | simple @code{let}. | ||
| 6946 | |||
| 6947 | Il se trouve que l'appel à @code{package->derivation} peut même être omis | ||
| 6948 | puisqu'il aura lieu implicitement, comme nous le verrons plus tard | ||
| 6949 | (@pxref{G-Expressions}) : | ||
| 6950 | |||
| 6951 | @example | ||
| 6952 | (define (sh-symlink) | ||
| 6953 | (gexp->derivation "sh" | ||
| 6954 | #~(symlink (string-append #$bash "/bin/bash") | ||
| 6955 | #$output))) | ||
| 6956 | @end example | ||
| 6957 | |||
| 6958 | @c See | ||
| 6959 | @c <https://syntaxexclamation.wordpress.com/2014/06/26/escaping-continuations/> | ||
| 6960 | @c for the funny quote. | ||
| 6961 | L'appel à la procédure monadique @code{sh-symlink} n'a aucun effet. Comme | ||
| 6962 | on pourrait le dire, « on sort d'une monade comme de la monarchie : en | ||
| 6963 | l'exécutant »@footnote{NdT : il y a là un jeu de mot en anglais qui se base | ||
| 6964 | sur un double sens de « run », qui peut se traduire par « exécuter » dans ce | ||
| 6965 | contexte.}. Donc, pour sortir de la monade et obtenir l'effet escompté, on | ||
| 6966 | doit utiliser @code{run-with-store}. | ||
| 6967 | |||
| 6968 | @example | ||
| 6969 | (run-with-store (open-connection) (sh-symlink)) | ||
| 6970 | @result{} /gnu/store/...-sh-symlink | ||
| 6971 | @end example | ||
| 6972 | |||
| 6973 | Remarquez que le module @code{(guix monad-repl)} étend la console Guile avec | ||
| 6974 | de nouvelles « méta-commandes » pour rendre plus facile la manipulation de | ||
| 6975 | procédures monadiques : @code{run-in-store} et @code{enter-store-monad}. La | ||
| 6976 | première est utilisée pour « lancer » une seule valeur monadique à travers | ||
| 6977 | le dépôt : | ||
| 6978 | |||
| 6979 | @example | ||
| 6980 | scheme@@(guile-user)> ,run-in-store (package->derivation hello) | ||
| 6981 | $1 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}> | ||
| 6982 | @end example | ||
| 6983 | |||
| 6984 | La deuxième entre dans une console récursive, où toutes les valeurs de | ||
| 6985 | retour sont automatiquement lancées à travers le dépôt : | ||
| 6986 | |||
| 6987 | @example | ||
| 6988 | scheme@@(guile-user)> ,enter-store-monad | ||
| 6989 | store-monad@@(guile-user) [1]> (package->derivation hello) | ||
| 6990 | $2 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}> | ||
| 6991 | store-monad@@(guile-user) [1]> (text-file "foo" "Hello!") | ||
| 6992 | $3 = "/gnu/store/@dots{}-foo" | ||
| 6993 | store-monad@@(guile-user) [1]> ,q | ||
| 6994 | scheme@@(guile-user)> | ||
| 6995 | @end example | ||
| 6996 | |||
| 6997 | @noindent | ||
| 6998 | Remarquez qu'on ne peut pas renvoyer de valeur non monadique dans la console | ||
| 6999 | @code{store-monad}. | ||
| 7000 | |||
| 7001 | Les formes syntaxiques principales pour utiliser des monades en général sont | ||
| 7002 | disponibles dans le module @code{(guix monads)} et sont décrites ci-dessous. | ||
| 7003 | |||
| 7004 | @deffn {Syntaxe Scheme} with-monad @var{monad} @var{body} ... | ||
| 7005 | Évalue n'importe quelle forme @code{>>=} ou @code{return} dans @var{body} | ||
| 7006 | comme une @var{monad}. | ||
| 7007 | @end deffn | ||
| 7008 | |||
| 7009 | @deffn {Syntaxe Scheme} return @var{val} | ||
| 7010 | Renvoie une valeur monadique qui encapsule @var{val}. | ||
| 7011 | @end deffn | ||
| 7012 | |||
| 7013 | @deffn {Syntaxe Scheme} >>= @var{mval} @var{mproc} ... | ||
| 7014 | @dfn{Lie} une valeur monadique @var{mval}, en passant son « contenu » aux | ||
| 7015 | procédures monadiques @var{mproc}@dots{}@footnote{Cette opération est | ||
| 7016 | souvent appelée « bind », mais ce nom dénote une procédure qui n'a rien à | ||
| 7017 | voir en Guile. Ainsi, nous empruntons ce symbole quelque peu cryptique au | ||
| 7018 | langage Haskell}. Il peut y avoir une ou plusieurs @code{mproc}, comme dans | ||
| 7019 | cet exemple : | ||
| 7020 | |||
| 7021 | @example | ||
| 7022 | (run-with-state | ||
| 7023 | (with-monad %state-monad | ||
| 7024 | (>>= (return 1) | ||
| 7025 | (lambda (x) (return (+ 1 x))) | ||
| 7026 | (lambda (x) (return (* 2 x))))) | ||
| 7027 | 'some-state) | ||
| 7028 | |||
| 7029 | @result{} 4 | ||
| 7030 | @result{} some-state | ||
| 7031 | @end example | ||
| 7032 | @end deffn | ||
| 7033 | |||
| 7034 | @deffn {Syntaxe Scheme} mlet @var{monad} ((@var{var} @var{mval}) ...) @ | ||
| 7035 | @var{body} ... | ||
| 7036 | @deffnx {Syntaxe Scheme} mlet* @var{monad} ((@var{var} @var{mval}) ...) @ | ||
| 7037 | @var{body} ... | ||
| 7038 | Lie les variables @var{var} aux valeurs monadiques @var{mval} dans | ||
| 7039 | @var{body}, une séquence d'expressions. Comme avec l'opérateur de liaison, | ||
| 7040 | on peut réfléchir comme si on « ouvrait » la valeur non-monadique « contenue | ||
| 7041 | » dans @var{mval} et comme si on faisait en sorte que @var{var} se réfère à | ||
| 7042 | cette valeur pure, non-monadique, dans la portée de @var{body}. La forme | ||
| 7043 | (@var{var} -> @var{val}) lie @var{var} à la valeur « normale » @var{val}, | ||
| 7044 | comme @code{let}. L'opération de liaison a lieu en séquence de la gauche | ||
| 7045 | vers la droite. La dernière expression de @var{body} doit être une | ||
| 7046 | expression monadique et son résultat deviendra le résultat de @code{mlet} ou | ||
| 7047 | @code{mlet*} lorsque lancé dans la @var{monad}. | ||
| 7048 | |||
| 7049 | @code{mlet*} est à @code{mlet} ce que @code{let*} est à @code{let} | ||
| 7050 | (@pxref{Local Bindings,,, guile, GNU Guile Reference Manual}). | ||
| 7051 | @end deffn | ||
| 7052 | |||
| 7053 | @deffn {Système Scheme} mbegin @var{monad} @var{mexp} ... | ||
| 7054 | Lie @var{mexp} et les expressions monadiques suivantes en séquence, et | ||
| 7055 | renvoie le résultat de la dernière expression. Chaque expression dans la | ||
| 7056 | séquence doit être une expression monadique. | ||
| 7057 | |||
| 7058 | Cette procédure est similaire à @code{mlet}, sauf que les valeurs de retour | ||
| 7059 | des expressions monadiques sont ignorées. Dans ce sens, elle est analogue à | ||
| 7060 | @code{begin}, mais appliqué à des expressions monadiques. | ||
| 7061 | @end deffn | ||
| 7062 | |||
| 7063 | @deffn {Système Scheme} mwhen @var{condition} @var{mexp0} @var{mexp*} ... | ||
| 7064 | Lorsque la @var{condition} est vraie, évalue la séquence des expressions | ||
| 7065 | monadiques @var{mexp0}..@var{mexp*} comme dans un @code{mbegin}. Lorsque la | ||
| 7066 | @var{condition} est fausse, renvoie @code{*unspecified*} dans la monade | ||
| 7067 | actuelle. Chaque expression dans la séquence doit être une expression | ||
| 7068 | monadique. | ||
| 7069 | @end deffn | ||
| 7070 | |||
| 7071 | @deffn {Système Scheme} munless @var{condition} @var{mexp0} @var{mexp*} ... | ||
| 7072 | Lorsque la @var{condition} est fausse, évalue la séquence des expressions | ||
| 7073 | monadiques @var{mexp0}..@var{mexp*} comme dans un @code{mbegin}. Lorsque la | ||
| 7074 | @var{condition} est vraie, renvoie @code{*unspecified*} dans la monade | ||
| 7075 | actuelle. Chaque expression dans la séquence doit être une expression | ||
| 7076 | monadique. | ||
| 7077 | @end deffn | ||
| 7078 | |||
| 7079 | @cindex monade d'état | ||
| 7080 | Le module @code{(guix monads)} fournit la @dfn{monade d'état} qui permet à | ||
| 7081 | une valeur supplémentaire — l'état — d'être enfilée à travers les appels de | ||
| 7082 | procédures. | ||
| 7083 | |||
| 7084 | @defvr {Variable Scheme} %state-monad | ||
| 7085 | La monade d'état. les procédure dans la monade d'état peuvent accéder et | ||
| 7086 | modifier l'état qui est enfilé. | ||
| 7087 | |||
| 7088 | Considérez l'exemple ci-dessous. La procédure @code{square} renvoie une | ||
| 7089 | valeur dans la monade d'état. Elle renvoie le carré de son argument, mais | ||
| 7090 | incrémente aussi la valeur actuelle de l'état : | ||
| 7091 | |||
| 7092 | @example | ||
| 7093 | (define (square x) | ||
| 7094 | (mlet %state-monad ((count (current-state))) | ||
| 7095 | (mbegin %state-monad | ||
| 7096 | (set-current-state (+ 1 count)) | ||
| 7097 | (return (* x x))))) | ||
| 7098 | |||
| 7099 | (run-with-state (sequence %state-monad (map square (iota 3))) 0) | ||
| 7100 | @result{} (0 1 4) | ||
| 7101 | @result{} 3 | ||
| 7102 | @end example | ||
| 7103 | |||
| 7104 | Lorsqu'on la lance à travers @var{%state-monad}, on obtient cet valeur | ||
| 7105 | d'état supplémentaire, qui est le nombre d'appels à @code{square}. | ||
| 7106 | @end defvr | ||
| 7107 | |||
| 7108 | @deffn {Procédure monadique} current-state | ||
| 7109 | Renvoie l'état actuel dans une valeur monadique. | ||
| 7110 | @end deffn | ||
| 7111 | |||
| 7112 | @deffn {Procédure monadique} set-current-state @var{value} | ||
| 7113 | Initialise l'état actuel à @var{value} et renvoie l'état précédent dans une | ||
| 7114 | valeur monadique. | ||
| 7115 | @end deffn | ||
| 7116 | |||
| 7117 | @deffn {Procédure monadique} state-push @var{value} | ||
| 7118 | Pousse @var{value} sur l'état actuel, qui est supposé être une liste, et | ||
| 7119 | renvoie l'état précédent dans une valeur monadique. | ||
| 7120 | @end deffn | ||
| 7121 | |||
| 7122 | @deffn {Procédure monadique} state-pop | ||
| 7123 | Récupère (pop) une valeur dans l'état actuel et la renvoie comme une valeur | ||
| 7124 | monadique. L'état est supposé être une liste. | ||
| 7125 | @end deffn | ||
| 7126 | |||
| 7127 | @deffn {Procédure Scheme} run-with-state @var{mval} [@var{state}] | ||
| 7128 | Lance la valeur monadique @var{mval} avec @var{state} comme valeur | ||
| 7129 | initiale. Renvoie deux valeurs : la valeur du résultat et l'état du | ||
| 7130 | résultat. | ||
| 7131 | @end deffn | ||
| 7132 | |||
| 7133 | L'interface principale avec la monade du dépôt, fournit par le module | ||
| 7134 | @code{(guix store)}, est la suivante. | ||
| 7135 | |||
| 7136 | @defvr {Variable Scheme} %store-monad | ||
| 7137 | La monade du dépôt — un alias pour @var{%state-monad}. | ||
| 7138 | |||
| 7139 | Les valeurs dans la monade du dépôt encapsulent des accès au dépôt. Lorsque | ||
| 7140 | son effet est requis, une valeur de la monade du dépôt doit être « évaluée » | ||
| 7141 | en la passant à la procédure @code{run-with-store} (voir plus bas). | ||
| 7142 | @end defvr | ||
| 7143 | |||
| 7144 | @deffn {Procédure Scheme} run-with-store @var{store} @var{mval} [#:guile-for-build] [#:system (%current-system)] | ||
| 7145 | Lance @var{mval}, une valeur monadique dans la monade du dépôt, dans | ||
| 7146 | @var{store}, une connexion ouvert au dépôt. | ||
| 7147 | @end deffn | ||
| 7148 | |||
| 7149 | @deffn {Procédure monadique} text-file @var{name} @var{text} [@var{references}] | ||
| 7150 | Renvoie une valeur monadique correspondant au nom de fichier dans le dépôt | ||
| 7151 | du fichier contenant @var{text}, une chaîne de caractères. @var{references} | ||
| 7152 | est une liste d'éléments du dépôt auxquels le fichier texte en résultat se | ||
| 7153 | réfère ; c'est la liste vide par défaut. | ||
| 7154 | @end deffn | ||
| 7155 | |||
| 7156 | @deffn {Procédure monadique} binary-file @var{name} @var{data} [@var{references}] | ||
| 7157 | Renvoie une valeur monadique correspondant au nom de fichier absolu dans le | ||
| 7158 | dépôt du fichier contenant @var{data}, un vecteur d'octets. | ||
| 7159 | @var{references} est une liste d'éléments du dépôt auxquels le fichier | ||
| 7160 | binaire en résultat se réfère ; c'est la liste vide par défaut. | ||
| 7161 | @end deffn | ||
| 7162 | |||
| 7163 | @deffn {Procédure monadique} interned-file @var{file} [@var{name}] @ | ||
| 7164 | [#:recursive? #t] [#:select? (const #t)] | ||
| 7165 | Renvoie le nom de @var{file} une fois ajouté au dépôt. Utilise @var{name} | ||
| 7166 | comme nom dans le dépôt ou le nom de fichier de @var{file} si @var{name} est | ||
| 7167 | omis. | ||
| 7168 | |||
| 7169 | Lorsque @var{recursive?} est vraie, le contenu de @var{file} est ajouté | ||
| 7170 | récursivement ; si @var{file} désigne un fichier simple et que | ||
| 7171 | @var{recursive?} est vrai, son contenu est ajouté et ses bits de permissions | ||
| 7172 | sont préservés. | ||
| 7173 | |||
| 7174 | Lorsque @var{recursive?} est vraie, appelle @code{(@var{select?} @var{file} | ||
| 7175 | @var{stat})} pour chaque répertoire où @var{file} est le nom de fichier | ||
| 7176 | absolu de l'entrée et @var{stat} est le résultat de @code{lstat} ; à | ||
| 7177 | l'exception des entrées pour lesquelles @var{select?} ne renvoie pas vrai. | ||
| 7178 | |||
| 7179 | L'exemple ci-dessous ajoute un fichier au dépôt, sous deux noms différents : | ||
| 7180 | |||
| 7181 | @example | ||
| 7182 | (run-with-store (open-connection) | ||
| 7183 | (mlet %store-monad ((a (interned-file "README")) | ||
| 7184 | (b (interned-file "README" "LEGU-MIN"))) | ||
| 7185 | (return (list a b)))) | ||
| 7186 | |||
| 7187 | @result{} ("/gnu/store/rwm@dots{}-README" "/gnu/store/44i@dots{}-LEGU-MIN") | ||
| 7188 | @end example | ||
| 7189 | |||
| 7190 | @end deffn | ||
| 7191 | |||
| 7192 | Le module @code{(guix packages)} exporte les procédures monadiques liées aux | ||
| 7193 | paquets suivantes : | ||
| 7194 | |||
| 7195 | @deffn {Procédure monadique} package-file @var{package} [@var{file}] @ | ||
| 7196 | [#:system (%current-system)] [#:target #f] @ | ||
| 7197 | [#:output "out"] | ||
| 7198 | Renvoie une valeur monadique qui contient le nom de fichier absolu de | ||
| 7199 | @var{file} dans le répertoire @var{output} de @var{package}. Lorsque | ||
| 7200 | @var{file} est omis, renvoie le nom du répertoire @var{output} de | ||
| 7201 | @var{package}. Lorsque @var{target} est vrai, l'utilise comme un triplet de | ||
| 7202 | cible pour la compilation croisée. | ||
| 7203 | @end deffn | ||
| 7204 | |||
| 7205 | @deffn {Procédure monadique} package->derivation @var{package} [@var{system}] | ||
| 7206 | @deffnx {Procédure monadique} package->cross-derivation @var{package} @ | ||
| 7207 | @var{target} [@var{system}] | ||
| 7208 | Version monadique de @code{package-derivation} et | ||
| 7209 | @code{package-cross-derivation} (@pxref{Définition des paquets}). | ||
| 7210 | @end deffn | ||
| 7211 | |||
| 7212 | |||
| 7213 | @node G-Expressions | ||
| 7214 | @section G-Expressions | ||
| 7215 | |||
| 7216 | @cindex G-expression | ||
| 7217 | @cindex quoting du code de construction | ||
| 7218 | On a donc des « dérivations » qui représentent une séquence d'actions de | ||
| 7219 | construction à effectuer pour produire un élément du dépôt | ||
| 7220 | (@pxref{Dérivations}). Ces actions de construction sont effectuées | ||
| 7221 | lorsqu'on demande au démon de construire effectivement les dérivations ; | ||
| 7222 | elles sont lancées par le démon dans un conteneur (@pxref{Invoquer guix-daemon}). | ||
| 7223 | |||
| 7224 | @cindex strate de code | ||
| 7225 | Ça ne devrait pas vous surprendre, mais nous aimons écrire ces actions de | ||
| 7226 | construction en Scheme. Lorsqu'on fait ça, on fini avec deux @dfn{strates} | ||
| 7227 | de code Scheme@footnote{Le terme @dfn{strate} dans ce contexte a été inventé | ||
| 7228 | par Manuel Serrano et ses collaborateurs dans le contexte de leur travaux | ||
| 7229 | sur Hop. Oleg Kiselyov, qui a écrit des | ||
| 7230 | @url{http://okmij.org/ftp/meta-programming/#meta-scheme, essais perspicaces | ||
| 7231 | et du code sur le sujet}, utilise le terme de « mise en scène » pour ce | ||
| 7232 | genre de génération de code.} : le « code hôte » — le code qui défini les | ||
| 7233 | paquets, parle au démon, etc — et le « code côté construction » — le code | ||
| 7234 | qui effectue effectivement les actions de construction, comme créer des | ||
| 7235 | répertoires, invoquer @code{make}, etc. | ||
| 7236 | |||
| 7237 | Pour décrire une dérivation et ses actions de construction, on a typiquement | ||
| 7238 | besoin d'intégrer le code de construction dans le code hôte. Ça revient à | ||
| 7239 | manipuler le code de construction comme de la donnée, et l'homoiconicité de | ||
| 7240 | Scheme — le code a une représentation directe en tant que donnée — est très | ||
| 7241 | utile pour cela. Mais on a besoin de plus que le mécanisme de | ||
| 7242 | @code{quasiquote} en Scheme pour construire des expressions de construction. | ||
| 7243 | |||
| 7244 | Le module @code{(guix gexp)} implémente les @dfn{G-expressions}, une forme | ||
| 7245 | de S-expression adaptée aux expressions de construction. Les G-expression, | ||
| 7246 | ou @dfn{gexps}, consistent en gros en trois formes syntaxiques : | ||
| 7247 | @code{gexp}, @code{ungexp} et @code{ungexp-splicing} (ou plus simplement : | ||
| 7248 | @code{#~}, @code{#$} et @code{#$@@}), qui sont comparable à | ||
| 7249 | @code{quasiquote}, @code{unquote} et @code{unquote-splicing} respectivement | ||
| 7250 | (@pxref{Expression Syntax, @code{quasiquote},, guile, GNU Guile Reference | ||
| 7251 | Manual}). Cependant il y a des différences majeures : | ||
| 7252 | |||
| 7253 | @itemize | ||
| 7254 | @item | ||
| 7255 | Les Gexps sont conçues pour être écrites dans un fichier et être lancées ou | ||
| 7256 | manipulées par d'autres processus. | ||
| 7257 | |||
| 7258 | @item | ||
| 7259 | Lorsqu'un objet de haut-niveau comme un paquet ou une dérivation est | ||
| 7260 | unquotée dans une gexp, le résultat est comme si le nom de fichier de son | ||
| 7261 | résultat avait été introduit. | ||
| 7262 | |||
| 7263 | @item | ||
| 7264 | Les gexps transportent des informations sur les paquets ou les dérivations | ||
| 7265 | auxquels elles se réfèrent, et ces dépendances sont automatiquement ajoutées | ||
| 7266 | comme des entrées du processus de construction qui les utilise. | ||
| 7267 | @end itemize | ||
| 7268 | |||
| 7269 | @cindex abaissement, des objets haut-niveau dans les gepxs | ||
| 7270 | Ce mécanisme n'est pas limité aux paquets et aux dérivations : on peut | ||
| 7271 | définir des @dfn{compilateurs} capable « d'abaisser » d'autres objets de | ||
| 7272 | haut-niveau ou des fichiers dans le dépôt, pour que ces objets puissent | ||
| 7273 | aussi être insérés dans des gexps. Par exemple, des objets haut-niveau | ||
| 7274 | utiles qui pourraient être insérées dans une gexp sont les « objets | ||
| 7275 | simili-fichiers », qui rendent facile l'ajout de fichiers dans le dépôt et | ||
| 7276 | les références vers eux dans les dérivations et autres (voir | ||
| 7277 | @code{local-file} et @code{plain-file} ci-dessous). | ||
| 7278 | |||
| 7279 | Pour illustrer cette idée, voici un exemple de gexp : | ||
| 7280 | |||
| 7281 | @example | ||
| 7282 | (define build-exp | ||
| 7283 | #~(begin | ||
| 7284 | (mkdir #$output) | ||
| 7285 | (chdir #$output) | ||
| 7286 | (symlink (string-append #$coreutils "/bin/ls") | ||
| 7287 | "list-files"))) | ||
| 7288 | @end example | ||
| 7289 | |||
| 7290 | Cette gexp peut être passée à @code{gexp->derivation} ; on obtient une | ||
| 7291 | dérivation qui construit une répertoire contenant exactement un lien | ||
| 7292 | symbolique à @file{/gnu/store/@dots{}-coreutils-8.22/bin/ls} : | ||
| 7293 | |||
| 7294 | @example | ||
| 7295 | (gexp->derivation "the-thing" build-exp) | ||
| 7296 | @end example | ||
| 7297 | |||
| 7298 | Comme on pourrait s'y attendre, la chaîne | ||
| 7299 | @code{"/gnu/store/@dots{}-coreutils-8.22"} est substituée à la place de la | ||
| 7300 | référence au paquet @var{coreutils} dans le code de construction final, et | ||
| 7301 | @var{coreutils} est automatiquement devenu une entrée de la dérivation. De | ||
| 7302 | même, @code{#$output} (équivalent à @code{(ungexp output)}) est remplacé par | ||
| 7303 | une chaîne de caractères contenant le nom du répertoire de la sortie de la | ||
| 7304 | dérivation. | ||
| 7305 | |||
| 7306 | @cindex compilation croisée | ||
| 7307 | Dans le contexte d'une compilation croisée, il est utile de distinguer entre | ||
| 7308 | des références à la construction @emph{native} d'un paquet — qui peut être | ||
| 7309 | lancé par l'hôte — et des références à la construction croisée d'un paquet. | ||
| 7310 | Pour cela, @code{#+} joue le même rôle que @code{#$}, mais référence une | ||
| 7311 | construction native d'un paquet : | ||
| 7312 | |||
| 7313 | @example | ||
| 7314 | (gexp->derivation "vi" | ||
| 7315 | #~(begin | ||
| 7316 | (mkdir #$output) | ||
| 7317 | (system* (string-append #+coreutils "/bin/ln") | ||
| 7318 | "-s" | ||
| 7319 | (string-append #$emacs "/bin/emacs") | ||
| 7320 | (string-append #$output "/bin/vi"))) | ||
| 7321 | #:target "mips64el-linux-gnu") | ||
| 7322 | @end example | ||
| 7323 | |||
| 7324 | @noindent | ||
| 7325 | Dans l'exemple ci-dessus, la construction native de @var{coreutils} est | ||
| 7326 | utilisée, pour que @command{ln} puisse effectivement être lancé sur l'hôte ; | ||
| 7327 | mais ensuite la construction croisée d'@var{emacs} est utilisée. | ||
| 7328 | |||
| 7329 | @cindex modules importés, pour les gexps | ||
| 7330 | @findex with-imported-modules | ||
| 7331 | Une autre fonctionnalité, ce sont les @dfn{modules importés} : parfois vous | ||
| 7332 | voudriez pouvoir utiliser certains modules Guile de « l'environnement hôte » | ||
| 7333 | dans la gexp, donc ces modules devraient être importés dans « | ||
| 7334 | l'environnement de construction ». La forme @code{with-imported-modules} | ||
| 7335 | vous permet d'exprimer ça : | ||
| 7336 | |||
| 7337 | @example | ||
| 7338 | (let ((build (with-imported-modules '((guix build utils)) | ||
| 7339 | #~(begin | ||
| 7340 | (use-modules (guix build utils)) | ||
| 7341 | (mkdir-p (string-append #$output "/bin")))))) | ||
| 7342 | (gexp->derivation "empty-dir" | ||
| 7343 | #~(begin | ||
| 7344 | #$build | ||
| 7345 | (display "success!\n") | ||
| 7346 | #t))) | ||
| 7347 | @end example | ||
| 7348 | |||
| 7349 | @noindent | ||
| 7350 | Dans cet exemple, le module @code{(guix build utils)} est automatiquement | ||
| 7351 | récupéré dans l'environnement de construction isolé de notre gexp, pour que | ||
| 7352 | @code{(use-modules (guix build utils))} fonctionne comme on s'y attendrait. | ||
| 7353 | |||
| 7354 | @cindex closure de module | ||
| 7355 | @findex source-module-closure | ||
| 7356 | Typiquement, vous voudriez que la @emph{closure} complète du module soit | ||
| 7357 | importé — c.-à-d.@: le module lui-même et tous les modules dont il dépend — | ||
| 7358 | plutôt que seulement le module ; sinon, une tentative de chargement du | ||
| 7359 | module échouera à cause des modules dépendants manquants. La procédure | ||
| 7360 | @code{source-module-closure} calcule la closure d'un module en cherchant | ||
| 7361 | dans ses en-têtes sources, ce qui est pratique dans ce cas : | ||
| 7362 | |||
| 7363 | @example | ||
| 7364 | (use-modules (guix modules)) ;pour 'source-module-closure' | ||
| 7365 | |||
| 7366 | (with-imported-modules (source-module-closure | ||
| 7367 | '((guix build utils) | ||
| 7368 | (gnu build vm))) | ||
| 7369 | (gexp->derivation "something-with-vms" | ||
| 7370 | #~(begin | ||
| 7371 | (use-modules (guix build utils) | ||
| 7372 | (gnu build vm)) | ||
| 7373 | @dots{}))) | ||
| 7374 | @end example | ||
| 7375 | |||
| 7376 | @cindex extensions, des gexps | ||
| 7377 | @findex with-extensions | ||
| 7378 | Dans la même idée, parfois vous pouvez souhaiter importer non seulement des | ||
| 7379 | modules en Scheme pur, mais aussi des « extensions » comme des liaisons | ||
| 7380 | Guile de bibliothèques C ou d'autres paquet « complets ». Disons que vous | ||
| 7381 | voulez utiliser le paquet @code{guile-json} du côté de la construction, | ||
| 7382 | voici comme procéder : | ||
| 7383 | |||
| 7384 | @example | ||
| 7385 | (use-modules (gnu packages guile)) ;pour 'guile-json' | ||
| 7386 | |||
| 7387 | (with-extensions (list guile-json) | ||
| 7388 | (gexp->derivation "something-with-json" | ||
| 7389 | #~(begin | ||
| 7390 | (use-modules (json)) | ||
| 7391 | @dots{}))) | ||
| 7392 | @end example | ||
| 7393 | |||
| 7394 | La forme syntaxique pour construire des gexps est résumée ci-dessous. | ||
| 7395 | |||
| 7396 | @deffn {Syntaxe Scheme} #~@var{exp} | ||
| 7397 | @deffnx {Syntaxe Scheme} (gexp @var{exp}) | ||
| 7398 | Renvoie une G-expression contenant @var{exp}. @var{exp} peut contenir une | ||
| 7399 | ou plusieurs de ces formes : | ||
| 7400 | |||
| 7401 | @table @code | ||
| 7402 | @item #$@var{obj} | ||
| 7403 | @itemx (ungexp @var{obj}) | ||
| 7404 | Introduit une référence à @var{obj}. @var{obj} peut être d'un des types | ||
| 7405 | supportés, par exemple un paquet ou une dérivation, auquel cas la forme | ||
| 7406 | @code{ungexp} est remplacée par le nom de fichier de sa sortie — p.@: ex.@: | ||
| 7407 | @code{"/gnu/store/@dots{}-coreutils-8.22}. | ||
| 7408 | |||
| 7409 | Si @var{boj} est une liste, elle est traversée et les références aux objets | ||
| 7410 | supportés sont substitués de manière similaire. | ||
| 7411 | |||
| 7412 | Si @var{obj} est une autre gexp, son contenu est inséré et ses dépendances | ||
| 7413 | sont ajoutées à celle de la gexp qui l'entoure. | ||
| 7414 | |||
| 7415 | Si @var{obj} est un autre type d'objet, il est inséré tel quel. | ||
| 7416 | |||
| 7417 | @item #$@var{obj}:@var{output} | ||
| 7418 | @itemx (ungexp @var{obj} @var{output}) | ||
| 7419 | Cette forme est similaire à la précédente, mais se réfère explicitement à la | ||
| 7420 | sortie @var{output} de l'objet @var{obj} — c'est utile lorsque @var{obj} | ||
| 7421 | produit plusieurs sorties (@pxref{Des paquets avec plusieurs résultats}). | ||
| 7422 | |||
| 7423 | @item #+@var{obj} | ||
| 7424 | @itemx #+@var{obj}:output | ||
| 7425 | @itemx (ungexp-native @var{obj}) | ||
| 7426 | @itemx (ungexp-native @var{obj} @var{output}) | ||
| 7427 | Comme @code{ungexp}, mais produit une référence à la construction | ||
| 7428 | @emph{native} de @var{obj} lorsqu'elle est utilisée dans une compilation | ||
| 7429 | croisée. | ||
| 7430 | |||
| 7431 | @item #$output[:@var{output}] | ||
| 7432 | @itemx (ungexp output [@var{output}]) | ||
| 7433 | Insère une référence à la sortie @var{output} de la dérivation, ou à la | ||
| 7434 | sortie principale lorsque @var{output} est omis. | ||
| 7435 | |||
| 7436 | Cela ne fait du sens que pour les gexps passées à @code{gexp->derivation}. | ||
| 7437 | |||
| 7438 | @item #$@@@var{lst} | ||
| 7439 | @itemx (ungexp-splicing @var{lst}) | ||
| 7440 | Comme au dessus, mais recolle (@i{splice}) le contenu de @var{lst} dans la | ||
| 7441 | liste qui la contient. | ||
| 7442 | |||
| 7443 | @item #+@@@var{lst} | ||
| 7444 | @itemx (ungexp-native-splicing @var{lst}) | ||
| 7445 | Comme au dessus, mais se réfère à la construction native des objets listés | ||
| 7446 | dans @var{lst}. | ||
| 7447 | |||
| 7448 | @end table | ||
| 7449 | |||
| 7450 | Les G-expressions crées par @code{gexp} ou @code{#~} sont des objets à | ||
| 7451 | l'exécution du type @code{gexp?} (voir plus bas). | ||
| 7452 | @end deffn | ||
| 7453 | |||
| 7454 | @deffn {Syntaxe Scheme} with-imported-modules @var{modules} @var{body}@dots{} | ||
| 7455 | Marque les gexps définies dans @var{body}@dots{} comme requérant | ||
| 7456 | @var{modules} dans leur environnement d'exécution. | ||
| 7457 | |||
| 7458 | Chaque élément dans @var{module} peut être le nom d'un module, comme | ||
| 7459 | @code{(guix build utils)} ou le nom d'un module suivi d'une flèche, suivie | ||
| 7460 | d'un objet simili-fichier : | ||
| 7461 | |||
| 7462 | @example | ||
| 7463 | `((guix build utils) | ||
| 7464 | (guix gcrypt) | ||
| 7465 | ((guix config) => ,(scheme-file "config.scm" | ||
| 7466 | #~(define-module @dots{})))) | ||
| 7467 | @end example | ||
| 7468 | |||
| 7469 | @noindent | ||
| 7470 | Dans l'exemple au dessus, les deux premiers modules sont récupérés dans le | ||
| 7471 | chemin de recherche, et le dernier est créé à partir d'un objet | ||
| 7472 | simili-fichier. | ||
| 7473 | |||
| 7474 | Cette forme a une portée @emph{lexicale} : elle a un effet sur les gexp | ||
| 7475 | directement définies dans @var{body}@dots{}, mais pas sur celles définies | ||
| 7476 | dans des procédures appelées par @var{body}@dots{}. | ||
| 7477 | @end deffn | ||
| 7478 | |||
| 7479 | @deffn {Syntaxe Scheme} with-extensions @var{extensions} @var{body}@dots{} | ||
| 7480 | Marque les gexps définies dans @var{body}@dots{} comme requérant | ||
| 7481 | @var{extensions} dans leur environnement de construction et d'exécution. | ||
| 7482 | @var{extensions} est typiquement une liste d'objets paquets comme définis | ||
| 7483 | dans le module @code{(gnu packages guile)}. | ||
| 7484 | |||
| 7485 | Concrètement, les paquets listés dans @var{extensions} sont ajoutés au | ||
| 7486 | chemin de chargement lors de la compilation des modules importés dans | ||
| 7487 | @var{body}@dots{} ; ils sont aussi ajoutés au chemin de chargement de la | ||
| 7488 | gexp renvoyée par @var{body}@dots{}. | ||
| 7489 | @end deffn | ||
| 7490 | |||
| 7491 | @deffn {Procédure Scheme} gexp? @var{obj} | ||
| 7492 | Renvoie @code{#t} si @var{obj} est une G-expression. | ||
| 7493 | @end deffn | ||
| 7494 | |||
| 7495 | Les G-expressions sont conçues pour être écrites sur le disque, soit en tant | ||
| 7496 | que code pour construire une dérivation, soit en tant que fichier normal | ||
| 7497 | dans le dépôt. Les procédure monadiques suivantes vous permettent de faire | ||
| 7498 | cela (@pxref{La monade du dépôt}, pour plus d'information sur les monads). | ||
| 7499 | |||
| 7500 | @deffn {Procédure monadique} gexp->derivation @var{name} @var{exp} @ | ||
| 7501 | [#:system (%current-system)] [#:target #f] [#:graft? #t] @ | ||
| 7502 | [#:hash #f] [#:hash-algo #f] @ | ||
| 7503 | [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ | ||
| 7504 | [#:module-path @var{%load-path}] @ | ||
| 7505 | [#:effective-version "2.2"] @ | ||
| 7506 | [#:references-graphs #f] [#:allowed-references #f] @ | ||
| 7507 | [#:disallowed-references #f] @ [#:leaked-env-vars #f] @ | ||
| 7508 | [#:script-name (string-append @var{name} "-builder")] @ | ||
| 7509 | [#:deprecation-warnings #f] @ | ||
| 7510 | [#:local-build? #f] [#:substitutable? #t] @ | ||
| 7511 | [#:properties '()] [#:guile-for-build #f] | ||
| 7512 | Renvoie une dérivation @var{name} qui lance @var{exp} (une gexp) avec | ||
| 7513 | @var{guile-for-build} (une dérivation) sur @var{system} ; @var{exp} est | ||
| 7514 | stocké dans un fichier appelé @var{script-name}. Lorsque @var{target} est | ||
| 7515 | vraie, elle est utilisée comme triplet de cible de compilation croisée pour | ||
| 7516 | les paquets référencés par @var{exp}. | ||
| 7517 | |||
| 7518 | @var{modules} est devenu obsolète en faveur de | ||
| 7519 | @code{with-imported-modules}. Sa signification est de rendre @var{modules} | ||
| 7520 | disponibles dans le contexte d'évaluation de @var{exp} ; @var{modules} est | ||
| 7521 | une liste de noms de modules Guile qui sont cherchés dans @var{module-path} | ||
| 7522 | pour les copier dans le dépôt, les compiler et les rendre disponibles dans | ||
| 7523 | le chemin de chargement pendant l'exécution de @var{exp} — p.@: ex.@: | ||
| 7524 | @code{((guix build utils) (guix build gnu-build-system))}. | ||
| 7525 | |||
| 7526 | @var{effective-version} détermine la chaîne à utiliser lors d'ajout | ||
| 7527 | d'extensions de @var{exp} (voir @code{with-extensions}) au chemin de | ||
| 7528 | recherche — p.@: ex.@: @code{"2.2"}. | ||
| 7529 | |||
| 7530 | @var{graft?} détermine si les paquets référencés par @var{exp} devraient | ||
| 7531 | être greffés si possible. | ||
| 7532 | |||
| 7533 | Lorsque @var{references-graphs} est vrai, il doit s'agir d'une liste de | ||
| 7534 | tuples de la forme suivante : | ||
| 7535 | |||
| 7536 | @example | ||
| 7537 | (@var{file-name} @var{package}) | ||
| 7538 | (@var{file-name} @var{package} @var{output}) | ||
| 7539 | (@var{file-name} @var{derivation}) | ||
| 7540 | (@var{file-name} @var{derivation} @var{output}) | ||
| 7541 | (@var{file-name} @var{store-item}) | ||
| 7542 | @end example | ||
| 7543 | |||
| 7544 | La partie droite des éléments de @var{references-graphs} est automatiquement | ||
| 7545 | transformée en une entrée du processus de construction @var{exp}. Dans | ||
| 7546 | l'environnement de construction, chaque @var{file-name} contient le graphe | ||
| 7547 | des références de l'élément correspondant, dans un format texte simple. | ||
| 7548 | |||
| 7549 | @var{allowed-references} doit soit être @code{#f}, soit une liste de noms de | ||
| 7550 | sorties ou de paquets. Dans ce dernier cas, la liste dénote les éléments du | ||
| 7551 | dépôt auxquels le résultat a le droit de faire référence. Toute référence à | ||
| 7552 | un autre élément du dépôt conduira à une erreur à la construction. Comme | ||
| 7553 | pour @var{disallowed-references}, qui peut lister des éléments qui ne | ||
| 7554 | doivent pas être référencés par les sorties. | ||
| 7555 | |||
| 7556 | @var{deprecation-warnings} détermine s'il faut afficher les avertissement | ||
| 7557 | d'obsolescence à la compilation de modules. Il peut valoir @code{#f}, | ||
| 7558 | @code{t} ou @code{'detailed}. | ||
| 7559 | |||
| 7560 | Les autres arguments sont les mêmes que pour @code{derivation} | ||
| 7561 | (@pxref{Dérivations}). | ||
| 7562 | @end deffn | ||
| 7563 | |||
| 7564 | @cindex objets simili-fichiers | ||
| 7565 | Les procédures @code{local-file}, @code{plain-file}, @code{computed-file}, | ||
| 7566 | @code{program-file} et @code{scheme-file} ci-dessous renvoient des | ||
| 7567 | @dfn{objets simili-fichiers}. C'est-à-dire, lorsqu'ils sont unquotés dans | ||
| 7568 | une G-expression, ces objets donnent un fichier dans le dépôt. Considérez | ||
| 7569 | cette G-expression : | ||
| 7570 | |||
| 7571 | @example | ||
| 7572 | #~(system* #$(file-append glibc "/sbin/nscd") "-f" | ||
| 7573 | #$(local-file "/tmp/my-nscd.conf")) | ||
| 7574 | @end example | ||
| 7575 | |||
| 7576 | Ici, l'effet est « d'internaliser » @file{/tmp/my-nscd.conf} en le copiant | ||
| 7577 | dans le dépôt. Une fois étendu, par exemple via @code{gexp->derivation}, la | ||
| 7578 | G-expression se réfère à cette copie dans @file{/gnu/store} ; ainsi, | ||
| 7579 | modifier ou supprimer le fichier dans @file{/tmp} n'a aucun effet sur ce que | ||
| 7580 | fait la G-expression. @code{plain-file} peut être utilisé de la même | ||
| 7581 | manière ; elle est seulement différente par le fait que le contenu du | ||
| 7582 | fichier est passé directement par une chaîne de caractères. | ||
| 7583 | |||
| 7584 | @deffn {Procédure Scheme} local-file @var{file} [@var{name}] @ | ||
| 7585 | [#:recursive? #f] [#:select? (const #t)] | ||
| 7586 | Renvoie un objet représentant un fichier local @var{file} à ajouter au dépôt | ||
| 7587 | ; cet objet peut être utilisé dans une gexp. Si @var{file} est un nom de | ||
| 7588 | fichier relatif, il est récupéré à partir de la position du fichier source | ||
| 7589 | dans lequel il apparaît. @var{file} sera ajouté au dépôt sous le nom | ||
| 7590 | @var{name} — par défaut le nom de base de @var{file}. | ||
| 7591 | |||
| 7592 | Lorsque @var{recursive?} est vraie, le contenu de @var{file} est ajouté | ||
| 7593 | récursivement ; si @var{file} désigne un fichier simple et que | ||
| 7594 | @var{recursive?} est vrai, son contenu est ajouté et ses bits de permissions | ||
| 7595 | sont préservés. | ||
| 7596 | |||
| 7597 | Lorsque @var{recursive?} est vraie, appelle @code{(@var{select?} @var{file} | ||
| 7598 | @var{stat})} pour chaque répertoire où @var{file} est le nom de fichier | ||
| 7599 | absolu de l'entrée et @var{stat} est le résultat de @code{lstat} ; à | ||
| 7600 | l'exception des entrées pour lesquelles @var{select?} ne renvoie pas vrai. | ||
| 7601 | |||
| 7602 | C'est la version déclarative de la procédure monadique @code{interned-file} | ||
| 7603 | (@pxref{La monade du dépôt, @code{interned-file}}). | ||
| 7604 | @end deffn | ||
| 7605 | |||
| 7606 | @deffn {Procédure Scheme} plain-file @var{name} @var{content} | ||
| 7607 | Renvoie un objet représentant un fichier texte nommé @var{name} avec pour | ||
| 7608 | contenu @var{content} (une chaîne de caractères ou un vecteur d'octets) à | ||
| 7609 | ajouter un dépôt. | ||
| 7610 | |||
| 7611 | C'est la version déclarative de @code{text-file}. | ||
| 7612 | @end deffn | ||
| 7613 | |||
| 7614 | @deffn {Procédure Scheme} computed-file @var{name} @var{gexp} @ | ||
| 7615 | [#:options '(#:local-build? #t)] | ||
| 7616 | Renvoie un objet représentant un élément du dépôt @var{name}, un fichier ou | ||
| 7617 | un répertoire calculé par @var{gexp}. @var{options} est une liste | ||
| 7618 | d'arguments supplémentaires à passer à @code{gexp->derivation}. | ||
| 7619 | |||
| 7620 | C'est la version déclarative de @code{gexp->derivation}. | ||
| 7621 | @end deffn | ||
| 7622 | |||
| 7623 | @deffn {Procédure monadique} gexp->script @var{name} @var{exp} @ | ||
| 7624 | [#:guile (default-guile)] [#:module-path %load-path] | ||
| 7625 | Renvoie un script exécutable @var{name} qui lance @var{exp} avec | ||
| 7626 | @var{guile}, avec les modules importés de @var{exp} dans son chemin de | ||
| 7627 | recherche. Cherche les modules de @var{exp} dans @var{module-path}. | ||
| 7628 | |||
| 7629 | L'exemple ci-dessous construit un script qui invoque simplement la commande | ||
| 7630 | @command{ls} : | ||
| 7631 | |||
| 7632 | @example | ||
| 7633 | (use-modules (guix gexp) (gnu packages base)) | ||
| 7634 | |||
| 7635 | (gexp->script "list-files" | ||
| 7636 | #~(execl #$(file-append coreutils "/bin/ls") | ||
| 7637 | "ls")) | ||
| 7638 | @end example | ||
| 7639 | |||
| 7640 | Lorsqu'elle est « lancée » à travers le dépôt (@pxref{La monade du dépôt, | ||
| 7641 | @code{run-with-store}}), on obtient une dérivation qui produit une fichier | ||
| 7642 | exécutable @file{/gnu/store/@dots{}-list-files} qui ressemble à : | ||
| 7643 | |||
| 7644 | @example | ||
| 7645 | #!/gnu/store/@dots{}-guile-2.0.11/bin/guile -ds | ||
| 7646 | !# | ||
| 7647 | (execl "/gnu/store/@dots{}-coreutils-8.22"/bin/ls" "ls") | ||
| 7648 | @end example | ||
| 7649 | @end deffn | ||
| 7650 | |||
| 7651 | @deffn {Procédure Scheme} program-file @var{name} @var{exp} @ | ||
| 7652 | [#:guile #f] [#:module-path %load-path] | ||
| 7653 | Renvoie un objet représentant un élément du dépôt @var{name} qui lance | ||
| 7654 | @var{gexp}. @var{guile} est le paquet Guile à utiliser pour exécuter le | ||
| 7655 | script. Les modules importés par @var{gexp} sont recherchés dans | ||
| 7656 | @var{module-path}. | ||
| 7657 | |||
| 7658 | C'est la version déclarative de @code{gexp->script}. | ||
| 7659 | @end deffn | ||
| 7660 | |||
| 7661 | @deffn {Procédure monadique} gexp->file @var{name} @var{exp} @ | ||
| 7662 | [#:set-load-path? #t] [#:module-path %load-path] @ | ||
| 7663 | [#:splice? #f] @ | ||
| 7664 | [#:guile (default-guile)] | ||
| 7665 | Renvoie une dérivation qui construit un fichier @var{name} contenant | ||
| 7666 | @var{exp}. Lorsque @var{splice?} est vrai, @var{exp} est considéré comme | ||
| 7667 | une liste d'expressions qui seront splicée dans le fichier qui en résulte. | ||
| 7668 | |||
| 7669 | Lorsque @var{set-load-path?} est vrai, émet du code dans le fichier de | ||
| 7670 | résultat pour initialiser @code{%load-path} et @code{%load-compiled-path} | ||
| 7671 | pour honorer les modules importés de @var{exp}. Les modules de @var{exp} | ||
| 7672 | sont trouvés dans @var{module-path}. | ||
| 7673 | |||
| 7674 | Le fichier qui en résulte retient les références à toutes les dépendances de | ||
| 7675 | @var{exp} ou un sous-ensemble. | ||
| 7676 | @end deffn | ||
| 7677 | |||
| 7678 | @deffn {Procédure Scheme} scheme-file @var{name} @var{exp} [#:splice? #f] | ||
| 7679 | Renvoie un objet représentant le fichier Scheme @var{name} qui contient | ||
| 7680 | @var{exp}. | ||
| 7681 | |||
| 7682 | C'est la version déclarative de @code{gexp->file}. | ||
| 7683 | @end deffn | ||
| 7684 | |||
| 7685 | @deffn {Procédure monadique} text-file* @var{name} @var{text} @dots{} | ||
| 7686 | Renvoie une valeur monadique qui construit un ficher texte contenant | ||
| 7687 | @var{text}. @var{text} peut lister, en plus de chaînes de caractères, des | ||
| 7688 | objet de n'importe quel type qui peut être utilisé dans une gexp : des | ||
| 7689 | paquets, des dérivations, des fichiers objet locaux, etc. Le fichier du | ||
| 7690 | dépôt qui en résulte en retient toutes les références. | ||
| 7691 | |||
| 7692 | Cette variante devrait être préférée à @code{text-file} lorsque vous | ||
| 7693 | souhaitez créer des fichiers qui référencent le dépôt. Cela est le cas | ||
| 7694 | typiquement lorsque vous construisez un fichier de configuration qui | ||
| 7695 | contient des noms de fichiers du dépôt, comme ceci : | ||
| 7696 | |||
| 7697 | @example | ||
| 7698 | (define (profile.sh) | ||
| 7699 | ;; Renvoie le nom d'un script shell dans le dépôt qui initialise | ||
| 7700 | ;; la variable d'environnement « PATH ». | ||
| 7701 | (text-file* "profile.sh" | ||
| 7702 | "export PATH=" coreutils "/bin:" | ||
| 7703 | grep "/bin:" sed "/bin\n")) | ||
| 7704 | @end example | ||
| 7705 | |||
| 7706 | Dans cet exemple, le fichier @file{/gnu/store/@dots{}-profile.sh} qui en | ||
| 7707 | résulte référence @var{coreutils}, @var{grep} et @var{sed}, ce qui les | ||
| 7708 | empêche d'être glanés tant que le script est accessible. | ||
| 7709 | @end deffn | ||
| 7710 | |||
| 7711 | @deffn {Procédure Scheme} mixed-text-file @var{name} @var{text} @dots{} | ||
| 7712 | Renvoie un objet représentant le fichier du dépôt @var{name} contenant | ||
| 7713 | @var{text}. @var{text} est une séquence de chaînes de caractères et de | ||
| 7714 | fichiers simili-objets, comme dans : | ||
| 7715 | |||
| 7716 | @example | ||
| 7717 | (mixed-text-file "profile" | ||
| 7718 | "export PATH=" coreutils "/bin:" grep "/bin") | ||
| 7719 | @end example | ||
| 7720 | |||
| 7721 | C'est la version déclarative de @code{text-file*}. | ||
| 7722 | @end deffn | ||
| 7723 | |||
| 7724 | @deffn {Procédure Scheme} file-union @var{name} @var{files} | ||
| 7725 | Renvoie un @code{<computed-file>} qui construit un répertoire qui contient | ||
| 7726 | tous les fichiers de @var{files}. Chaque élément de @var{files} doit être | ||
| 7727 | une paire où le premier élément est le nom de fichier à utiliser dans le | ||
| 7728 | nouveau répertoire et le second élément est une gexp dénotant le fichier | ||
| 7729 | cible. Voici un exemple : | ||
| 7730 | |||
| 7731 | @example | ||
| 7732 | (file-union "etc" | ||
| 7733 | `(("hosts" ,(plain-file "hosts" | ||
| 7734 | "127.0.0.1 localhost")) | ||
| 7735 | ("bashrc" ,(plain-file "bashrc" | ||
| 7736 | "alias ls='ls --color=auto'")))) | ||
| 7737 | @end example | ||
| 7738 | |||
| 7739 | Cela crée un répertoire @code{etc} contenant ces deux fichiers. | ||
| 7740 | @end deffn | ||
| 7741 | |||
| 7742 | @deffn {Procédure Scheme} directory-union @var{name} @var{things} | ||
| 7743 | Renvoie un répertoire qui est l'union de @var{things}, où @var{things} est | ||
| 7744 | une liste d'objets simili-fichiers qui dénotent des répertoires. Par exemple | ||
| 7745 | : | ||
| 7746 | |||
| 7747 | @example | ||
| 7748 | (directory-union "guile+emacs" (list guile emacs)) | ||
| 7749 | @end example | ||
| 7750 | |||
| 7751 | crée un répertoire qui est l'union des paquets @code{guile} et @code{emacs}. | ||
| 7752 | @end deffn | ||
| 7753 | |||
| 7754 | @deffn {Procédure Scheme} file-append @var{obj} @var{suffix} @dots{} | ||
| 7755 | Renvoie un objet simili-fichier qui correspond à la concaténation de | ||
| 7756 | @var{obj} et @var{suffix} où @var{obj} est un objet abaissable et chaque | ||
| 7757 | @var{suffix} est une chaîne de caractères. | ||
| 7758 | |||
| 7759 | Par exemple, considérez cette gexp : | ||
| 7760 | |||
| 7761 | @example | ||
| 7762 | (gexp->script "run-uname" | ||
| 7763 | #~(system* #$(file-append coreutils | ||
| 7764 | "/bin/uname"))) | ||
| 7765 | @end example | ||
| 7766 | |||
| 7767 | On peut obtenir le même effet avec : | ||
| 7768 | |||
| 7769 | @example | ||
| 7770 | (gexp->script "run-uname" | ||
| 7771 | #~(system* (string-append #$coreutils | ||
| 7772 | "/bin/uname"))) | ||
| 7773 | @end example | ||
| 7774 | |||
| 7775 | Il y a une différence cependant : dans le cas @code{file-append}, le script | ||
| 7776 | qui en résulte contient le nom de fichier absolu comme une chaîne de | ||
| 7777 | caractère alors que dans le deuxième cas, le script contient une expression | ||
| 7778 | @code{(string-append @dots{})} pour construire le nom de fichier @emph{à | ||
| 7779 | l'exécution}. | ||
| 7780 | @end deffn | ||
| 7781 | |||
| 7782 | |||
| 7783 | Bien sûr, en plus de gexps inclues dans le code « hôte », certains modules | ||
| 7784 | contiennent des outils de construction. Pour savoir facilement qu'ils sont | ||
| 7785 | à utiliser dans la strate de construction, ces modules sont gardés dans | ||
| 7786 | l'espace de nom @code{(guix build @dots{})}. | ||
| 7787 | |||
| 7788 | @cindex abaissement, des objets haut-niveau dans les gepxs | ||
| 7789 | En interne, les objets de haut-niveau sont @dfn{abaissés}, avec leur | ||
| 7790 | compilateur, soit en des dérivations, soit en des objets du dépôt. Par | ||
| 7791 | exemple, abaisser un paquet crée une dérivation, et abaisser un | ||
| 7792 | @code{plain-file} crée un élément du dépôt. Cela est effectué par la | ||
| 7793 | procédure monadique @code{lower-object}. | ||
| 7794 | |||
| 7795 | @deffn {Procédure monadique} lower-object @var{obj} [@var{system}] @ | ||
| 7796 | [#:target #f] | ||
| 7797 | Renvoie la dérivation ou l'élément du dépôt comme une valeur de | ||
| 7798 | @var{%store-monad} qui correspond à @var{obj} pour @var{system}, en | ||
| 7799 | compilant de manière croisée pour @var{target} si @var{target} est vrai. | ||
| 7800 | @var{obj} doit être un objet qui a un compilateur de gexp associé, comme un | ||
| 7801 | @code{<package>}. | ||
| 7802 | @end deffn | ||
| 7803 | |||
| 7804 | @node Invoquer guix repl | ||
| 7805 | @section Invoquer @command{guix repl} | ||
| 7806 | |||
| 7807 | @cindex REPL, read-eval-print loop | ||
| 7808 | La commande @command{guix repl} démarre un @dfn{boucle | ||
| 7809 | lecture-évaluation-affichage} Guile pour la programmation interactive | ||
| 7810 | (@pxref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}). | ||
| 7811 | Comparé au lancement de la commande @command{guile}, @command{guix repl} | ||
| 7812 | garanti que tous les modules Guix et toutes ses dépendances sont disponibles | ||
| 7813 | dans le chemin de recherche. Vous pouvez l'utiliser de cette manière : | ||
| 7814 | |||
| 7815 | @example | ||
| 7816 | $ guix repl | ||
| 7817 | scheme@@(guile-user)> ,use (gnu packages base) | ||
| 7818 | scheme@@(guile-user)> coreutils | ||
| 7819 | $1 = #<package coreutils@@8.29 gnu/packages/base.scm:327 3e28300> | ||
| 7820 | @end example | ||
| 7821 | |||
| 7822 | @cindex inférieurs | ||
| 7823 | En plus, @command{guix repl} implémente un protocole REPL simple lisible par | ||
| 7824 | une machine à utiliser avec @code{(guix inferior)}, un dispositif pour | ||
| 7825 | interagir avec des @dfn{inférieurs}, des processus séparés qui font tourner | ||
| 7826 | une version potentiellement différente de Guix. | ||
| 7827 | |||
| 7828 | Les options disponibles sont les suivante : | ||
| 7829 | |||
| 7830 | @table @code | ||
| 7831 | @item --type=@var{type} | ||
| 7832 | @itemx -t @var{type} | ||
| 7833 | Démarrer un REPL du @var{type} donné, qui peut être l'un de ces types : | ||
| 7834 | |||
| 7835 | @table @code | ||
| 7836 | @item guile | ||
| 7837 | C'est la valeur par défaut. Elle démarre un REPL Guile standard | ||
| 7838 | fonctionnel. | ||
| 7839 | @item machine | ||
| 7840 | Démarre un REPL qui utilise le protocole lisible par machine. C'est le | ||
| 7841 | protocole que parle le module @code{(guix inferior)}. | ||
| 7842 | @end table | ||
| 7843 | |||
| 7844 | @item --listen=@var{extrémité} | ||
| 7845 | Par défaut, @command{guix repl} lit depuis l'entrée standard et écrit sur la | ||
| 7846 | sortie standard. Lorsque cette option est passée, il écoutera plutôt les | ||
| 7847 | connexions sur @var{endpoint}. Voici un exemple d'options valides : | ||
| 7848 | |||
| 7849 | @table @code | ||
| 7850 | @item --listen=tcp:37146 | ||
| 7851 | Accepte les connexions sur localhost, sur le port 31. | ||
| 7852 | |||
| 7853 | @item --listen=unix:/tmp/socket | ||
| 7854 | Accepte les connexions sur le socket Unix-domain @file{/tmp/socket}. | ||
| 7855 | @end table | ||
| 7856 | @end table | ||
| 7857 | |||
| 7858 | @c ********************************************************************* | ||
| 7859 | @node Utilitaires | ||
| 7860 | @chapter Utilitaires | ||
| 7861 | |||
| 7862 | Cette section décrit les utilitaires en ligne de commande de Guix. certains | ||
| 7863 | sont surtout faits pour les développeurs qui écrivent de nouvelles | ||
| 7864 | définitions de paquets tandis que d'autres sont plus utiles pour une | ||
| 7865 | utilisation générale. Ils complètent l'interface de programmation Scheme de | ||
| 7866 | Guix d'une manière pratique. | ||
| 7867 | |||
| 7868 | @menu | ||
| 7869 | * Invoquer guix build:: Construire des paquets depuis la ligne de | ||
| 7870 | commande. | ||
| 7871 | * Invoquer guix edit:: Modifier les définitions de paquets. | ||
| 7872 | * Invoquer guix download:: Télécharger un fichier et afficher son hash. | ||
| 7873 | * Invoquer guix hash:: Calculer le hash cryptographique d'un fichier. | ||
| 7874 | * Invoquer guix import:: Importer des définitions de paquets. | ||
| 7875 | * Invoquer guix refresh:: Mettre à jour les définitions de paquets. | ||
| 7876 | * Invoquer guix lint:: Trouver des erreurs dans les définitions de | ||
| 7877 | paquets. | ||
| 7878 | * Invoquer guix size:: Profiler l'utilisation du disque. | ||
| 7879 | * Invoquer guix graph:: Visualiser le graphe des paquets. | ||
| 7880 | * Invoquer guix publish:: Partager des substituts. | ||
| 7881 | * Invoquer guix challenge:: Défier les serveurs de substituts. | ||
| 7882 | * Invoquer guix copy:: Copier vers et depuis un dépôt distant. | ||
| 7883 | * Invoquer guix container:: Isolation de processus. | ||
| 7884 | * Invoquer guix weather:: Mesurer la disponibilité des substituts. | ||
| 7885 | * Invoquer guix processes:: Lister les processus clients. | ||
| 7886 | @end menu | ||
| 7887 | |||
| 7888 | @node Invoquer guix build | ||
| 7889 | @section Invoquer @command{guix build} | ||
| 7890 | |||
| 7891 | @cindex construction de paquets | ||
| 7892 | @cindex @command{guix build} | ||
| 7893 | La commande @command{guix build} construit des paquets ou des dérivations et | ||
| 7894 | leurs dépendances et affiche les chemins du dépôt qui en résulte. Remarquez | ||
| 7895 | qu'elle ne modifie pas le profil de l'utilisateur — c'est le travail de la | ||
| 7896 | commande @command{guix package} (@pxref{Invoquer guix package}). Ainsi, | ||
| 7897 | elle est surtout utile pour les développeurs de la distribution. | ||
| 7898 | |||
| 7899 | La syntaxe générale est : | ||
| 7900 | |||
| 7901 | @example | ||
| 7902 | guix build @var{options} @var{package-or-derivation}@dots{} | ||
| 7903 | @end example | ||
| 7904 | |||
| 7905 | Par exemple, la commande suivante construit la dernière version d'Emacs et | ||
| 7906 | de Guile, affiche leur journaux de construction et enfin affiche les | ||
| 7907 | répertoires des résultats : | ||
| 7908 | |||
| 7909 | @example | ||
| 7910 | guix build emacs guile | ||
| 7911 | @end example | ||
| 7912 | |||
| 7913 | De même, la commande suivante construit tous les paquets disponibles : | ||
| 7914 | |||
| 7915 | @example | ||
| 7916 | guix build --quiet --keep-going \ | ||
| 7917 | `guix package -A | cut -f1,2 --output-delimiter=@@` | ||
| 7918 | @end example | ||
| 7919 | |||
| 7920 | @var{package-or-derivation} peut être soit le nom d'un paquet trouvé dans la | ||
| 7921 | distribution logicielle comme @code{coreutils}, soit @code{coreutils@@8.20}, | ||
| 7922 | soit une dérivation comme @file{/gnu/store/@dots{}-coreutils-8.19.drv}. | ||
| 7923 | Dans le premier cas, la commande cherchera un paquet avec le nom | ||
| 7924 | correspondant (et éventuellement la version) dans les modules de la | ||
| 7925 | distribution GNU (@pxref{Modules de paquets}). | ||
| 7926 | |||
| 7927 | Autrement, l'option @code{--expression} peut être utilisée pour spécifier | ||
| 7928 | une expression Scheme qui s'évalue en un paquet ; c'est utile pour | ||
| 7929 | différencier des paquets avec le même nom ou des variantes de paquets. | ||
| 7930 | |||
| 7931 | Il peut y avoir aucune, une ou plusieurs @var{options}. Les options | ||
| 7932 | disponibles sont décrites dans les sous-sections ci-dessous. | ||
| 7933 | |||
| 7934 | @menu | ||
| 7935 | * Options de construction communes:: Options de construction pour la | ||
| 7936 | plupart des commandes. | ||
| 7937 | * Options de transformation de paquets:: Créer des variantes de paquets. | ||
| 7938 | * Options de construction supplémentaires:: Options spécifiques à « | ||
| 7939 | guix build ». | ||
| 7940 | * Débogage des échecs de construction:: La vie d'un empaqueteur. | ||
| 7941 | @end menu | ||
| 7942 | |||
| 7943 | @node Options de construction communes | ||
| 7944 | @subsection Options de construction communes | ||
| 7945 | |||
| 7946 | Un certain nombre d'options qui contrôlent le processus de construction sont | ||
| 7947 | communes avec @command{guix build} et les autres commandes qui peuvent | ||
| 7948 | générer des constructions, comme @command{guix package} ou @command{guix | ||
| 7949 | archive}. Voici ces options : | ||
| 7950 | |||
| 7951 | @table @code | ||
| 7952 | |||
| 7953 | @item --load-path=@var{répertoire} | ||
| 7954 | @itemx -L @var{répertoire} | ||
| 7955 | Ajoute @var{répertoire} au début du chemin de recherche de module de paquets | ||
| 7956 | (@pxref{Modules de paquets}). | ||
| 7957 | |||
| 7958 | Cela permet à des utilisateurs de définir leur propres paquets et les rendre | ||
| 7959 | disponibles aux outils en ligne de commande. | ||
| 7960 | |||
| 7961 | @item --keep-failed | ||
| 7962 | @itemx -K | ||
| 7963 | Garde l'arborescence de construction des constructions en échec. Ainsi, si | ||
| 7964 | une construction échoue, son arborescence de construction est préservée dans | ||
| 7965 | @file{/tmp}, dans un répertoire dont le nom est affiché à la fin du journal | ||
| 7966 | de construction. Cela est utile pour déboguer des échecs de construction. | ||
| 7967 | @xref{Débogage des échecs de construction}, pour des astuces sur la manière de déboguer | ||
| 7968 | des problèmes de construction. | ||
| 7969 | |||
| 7970 | Cette option n'a pas d'effet lors de la connexion à un démon distant avec | ||
| 7971 | l'URI @code{guix://} (@pxref{Le dépôt, la variable | ||
| 7972 | @code{GUIX_DAEMON_SOCKET}}). | ||
| 7973 | |||
| 7974 | @item --keep-going | ||
| 7975 | @itemx -k | ||
| 7976 | Continue lorsque certaines dérivations échouent ; ne s'arrête que lorsque | ||
| 7977 | toutes les constructions ont soit réussies, soit échouées. | ||
| 7978 | |||
| 7979 | Le comportement par défaut est de s'arrêter dès qu'une des dérivations | ||
| 7980 | spécifiées échoue. | ||
| 7981 | |||
| 7982 | @item --dry-run | ||
| 7983 | @itemx -n | ||
| 7984 | Ne pas construire les dérivations. | ||
| 7985 | |||
| 7986 | @anchor{option de repli} | ||
| 7987 | @item --fallback | ||
| 7988 | Lorsque la substitution d'un binaire pré-compilé échoue, construit les | ||
| 7989 | paquets localement à la place (@pxref{Échec de substitution}). | ||
| 7990 | |||
| 7991 | @item --substitute-urls=@var{urls} | ||
| 7992 | @anchor{client-substitute-urls} | ||
| 7993 | Considère @var{urls} comme une liste d'URL de sources de substituts séparés | ||
| 7994 | par des espaces, et remplace la liste par défaut d'URL de | ||
| 7995 | @command{guix-daemon} (@pxref{daemon-substitute-urls,, @command{guix-daemon} | ||
| 7996 | URLs}). | ||
| 7997 | |||
| 7998 | Cela signifie que les substituts peuvent être téléchargés depuis @var{urls}, | ||
| 7999 | tant qu'ils sont signés par une clef autorisée par l'administrateur système | ||
| 8000 | (@pxref{Substituts}). | ||
| 8001 | |||
| 8002 | Lorsque @var{urls} est la chaîne vide, cela a pour effet de désactiver la | ||
| 8003 | substitution. | ||
| 8004 | |||
| 8005 | @item --no-substitutes | ||
| 8006 | Ne pas utiliser de substitut pour les résultats de la construction. | ||
| 8007 | C'est-à-dire, toujours construire localement plutôt que de permettre le | ||
| 8008 | téléchargement de binaires pré-construits (@pxref{Substituts}). | ||
| 8009 | |||
| 8010 | @item --no-grafts | ||
| 8011 | Ne par « greffer » les paquets. En pratique, cela signifie que les mises à | ||
| 8012 | jour des paquets disponibles comme des greffes ne sont pas appliquées. | ||
| 8013 | @xref{Mises à jour de sécurité}, pour plus d'information sur les greffes. | ||
| 8014 | |||
| 8015 | @item --rounds=@var{n} | ||
| 8016 | Construit chaque dérivation @var{n} fois d'affilé, et renvoie une erreur si | ||
| 8017 | les constructions consécutives ne sont pas identiques bit-à-bit. | ||
| 8018 | |||
| 8019 | Cela est une manière utile pour détecter des processus de construction non | ||
| 8020 | déterministes. Les processus de construction non déterministes sont | ||
| 8021 | problématiques car ils rendent pratiquement impossible la | ||
| 8022 | @emph{vérification} par les utilisateurs de l'authenticité de binaires | ||
| 8023 | tiers. @xref{Invoquer guix challenge}, pour plus d'informations. | ||
| 8024 | |||
| 8025 | Remarquez que, les résultats qui diffèrent ne sont pas gardés, donc vous | ||
| 8026 | devrez inspecter manuellement chaque erreur — p.@: ex.@: en gardant l'un des | ||
| 8027 | résultats avec @code{guix archive --export} (@pxref{Invoquer guix archive}), | ||
| 8028 | puis en reconstruisant, et enfin en comparant les deux résultats. | ||
| 8029 | |||
| 8030 | @item --no-build-hook | ||
| 8031 | N'essaye pas de décharger les constructions via le « crochet de construction | ||
| 8032 | » du démon (@pxref{Réglages du délestage du démon}). C'est-à-dire que tout sera | ||
| 8033 | construit localement plutôt que de décharger les constructions à une machine | ||
| 8034 | distante. | ||
| 8035 | |||
| 8036 | @item --max-silent-time=@var{secondes} | ||
| 8037 | Lorsque le processus de construction ou de substitution restent silencieux | ||
| 8038 | pendant plus de @var{secondes}, le terminer et rapporter une erreur de | ||
| 8039 | construction. | ||
| 8040 | |||
| 8041 | Par défaut, les paramètres du démon sont pris en compte (@pxref{Invoquer guix-daemon, @code{--max-silent-time}}). | ||
| 8042 | |||
| 8043 | @item --timeout=@var{secondes} | ||
| 8044 | De même, lorsque le processus de construction ou de substitution dure plus | ||
| 8045 | de @var{secondes}, le terminer et rapporter une erreur de construction. | ||
| 8046 | |||
| 8047 | Par défaut, les paramètres du démon sont pris en compte (@pxref{Invoquer guix-daemon, @code{--timeout}}). | ||
| 8048 | |||
| 8049 | @c Note: This option is actually not part of %standard-build-options but | ||
| 8050 | @c most programs honor it. | ||
| 8051 | @cindex verbosité, des outils en ligne de commande | ||
| 8052 | @cindex journaux de construction, verbosité | ||
| 8053 | @item -v [@var{niveau}] | ||
| 8054 | @itemx --verbosity=@var{niveau} | ||
| 8055 | Utiliser le @var{niveau} de verbosité, en tant qu'entier. 0 signifie | ||
| 8056 | qu'aucune sortie n'est produite, 1 signifie une sortie silencieuse et 2 | ||
| 8057 | montre tous les journaux de construction sur la sortie d'erreur standard. | ||
| 8058 | |||
| 8059 | @item --cores=@var{n} | ||
| 8060 | @itemx -c @var{n} | ||
| 8061 | Permet d'utiliser jusqu'à @var{n} cœurs du CPU pour la construction. La | ||
| 8062 | valeur spéciale @code{0} signifie autant de cœurs que possible. | ||
| 8063 | |||
| 8064 | @item --max-jobs=@var{n} | ||
| 8065 | @itemx -M @var{n} | ||
| 8066 | Permet au plus @var{n} travaux de construction en parallèle. @xref{Invoquer guix-daemon, @code{--max-jobs}}, pour plus de détails sur cette option et | ||
| 8067 | l'option équivalente pour @command{guix-daemon}. | ||
| 8068 | |||
| 8069 | @item --debug=@var{niveau} | ||
| 8070 | Produire une sortie de débogage qui provient du démon de construction. | ||
| 8071 | @var{niveau} doit être un entier entre 0 et 5 ; plus grand est ce nombre, | ||
| 8072 | plus verbeuse sera la sortie. Indiquer un niveau de 4 ou plus peut être | ||
| 8073 | utile pour déboguer des problèmes d'installation avec le démon de | ||
| 8074 | construction. | ||
| 8075 | |||
| 8076 | @end table | ||
| 8077 | |||
| 8078 | Sous le capot, @command{guix build} est surtout un interface à la procédure | ||
| 8079 | @code{package-derivation} du module @code{(guix packages)}, et à la | ||
| 8080 | procédure @code{build-derivations} du module @code{(guix derivations)}. | ||
| 8081 | |||
| 8082 | En plus des options passées explicitement par la ligne de commande, | ||
| 8083 | @command{guix build} et les autres commande @command{guix} qui peuvent | ||
| 8084 | effectuer des construction honorent la variable d'environnement | ||
| 8085 | @code{GUIX_BUILD_OPTIONS}. | ||
| 8086 | |||
| 8087 | @defvr {Variable d'environnement} GUIX_BUILD_OPTIONS | ||
| 8088 | Les utilisateurs peuvent définir cette variable à une liste d'options de la | ||
| 8089 | ligne de commande qui seront automatiquement utilisées par @command{guix | ||
| 8090 | build} et les autres commandes @command{guix} qui peuvent effectuer des | ||
| 8091 | constructions, comme dans l'exemple suivant : | ||
| 8092 | |||
| 8093 | @example | ||
| 8094 | $ export GUIX_BUILD_OPTIONS="--no-substitutes -c 2 -L /foo/bar" | ||
| 8095 | @end example | ||
| 8096 | |||
| 8097 | Ces options sont analysées indépendamment, et le résultat est ajouté aux | ||
| 8098 | options de la ligne de commande analysées. | ||
| 8099 | @end defvr | ||
| 8100 | |||
| 8101 | |||
| 8102 | @node Options de transformation de paquets | ||
| 8103 | @subsection Options de transformation de paquets | ||
| 8104 | |||
| 8105 | @cindex variantes de paquets | ||
| 8106 | Un autre ensemble d'options de la ligne de commande supportés par | ||
| 8107 | @command{guix build} et aussi @command{guix package} sont les @dfn{options | ||
| 8108 | de transformation de paquets}. Ce sont des options qui rendent possible la | ||
| 8109 | définition de @dfn{variantes de paquets} — par exemple, des paquets | ||
| 8110 | construit à partir de sources différentes. C'est une manière simple de | ||
| 8111 | créer des paquets personnalisés à la volée sans avoir à taper les | ||
| 8112 | définitions de variantes de paquets (@pxref{Définition des paquets}). | ||
| 8113 | |||
| 8114 | @table @code | ||
| 8115 | |||
| 8116 | @item --with-source=@var{source} | ||
| 8117 | @itemx --with-source=@var{paquet}=@var{source} | ||
| 8118 | @itemx --with-source=@var{paquet}@@@var{version}=@var{source} | ||
| 8119 | Utiles @var{source} comme la source de @var{paquet}, et @var{version} comme | ||
| 8120 | son numéro de version. @var{source} doit être un nom de fichier ou une URL, | ||
| 8121 | comme pour @command{guix download} (@pxref{Invoquer guix download}). | ||
| 8122 | |||
| 8123 | Lorsque @var{paquet} est omis, la commande utilisera le nom de paquet | ||
| 8124 | spécifié par la base de @var{source} — p.@: ex.@: si @var{source} est | ||
| 8125 | @code{/src/guix-2.0.10.tar.gz}, le paquet correspondant est @code{guile}. | ||
| 8126 | |||
| 8127 | De même, lorsque @var{version} est omis, la chaîne de version est inférée à | ||
| 8128 | partir de @var{source} ; dans l'exemple précédent, il s'agit de | ||
| 8129 | @code{2.0.10}. | ||
| 8130 | |||
| 8131 | Cette option permet aux utilisateurs d'essayer des version des paquets | ||
| 8132 | différentes de celles fournies par la distribution. L'exemple ci-dessous | ||
| 8133 | télécharge @file{ed-1.7.tar.g} depuis un miroir GNU et l'utilise comme | ||
| 8134 | source pour le paquet @code{ed} : | ||
| 8135 | |||
| 8136 | @example | ||
| 8137 | guix build ed --with-source=mirror://gnu/ed/ed-1.7.tar.gz | ||
| 8138 | @end example | ||
| 8139 | |||
| 8140 | En tant que développeur, @code{--with-source} permet de tester facilement | ||
| 8141 | des version bêta : | ||
| 8142 | |||
| 8143 | @example | ||
| 8144 | guix build guile --with-source=../guile-2.0.9.219-e1bb7.tar.xz | ||
| 8145 | @end example | ||
| 8146 | |||
| 8147 | @dots{} ou pour construire un dépôt de gestion de version dans un | ||
| 8148 | environnement vierge : | ||
| 8149 | |||
| 8150 | @example | ||
| 8151 | $ git clone git://git.sv.gnu.org/guix.git | ||
| 8152 | $ guix build guix --with-source=guix@@1.0=./guix | ||
| 8153 | @end example | ||
| 8154 | |||
| 8155 | @item --with-input=@var{paquet}=@var{remplaçant} | ||
| 8156 | Remplace la dépendance sur @var{paquet} par une dépendance à | ||
| 8157 | @var{remplaçant}. @var{paquet} doit être un nom de paquet et | ||
| 8158 | @var{remplaçant} doit être une spécification de paquet comme @code{guile} ou | ||
| 8159 | @code{guile@@1.8}. | ||
| 8160 | |||
| 8161 | Par exemple, la commande suivante construit Guix, mais remplace sa | ||
| 8162 | dépendance à la version stable actuelle de Guile par une dépendance à une | ||
| 8163 | ancienne version de Guile, @code{guile@@2.0} : | ||
| 8164 | |||
| 8165 | @example | ||
| 8166 | guix build --with-input=guile=guile@@2.0 guix | ||
| 8167 | @end example | ||
| 8168 | |||
| 8169 | C'est un remplacement récursif profond. Donc dans cet exemple, à la fois | ||
| 8170 | @code{guix} et ses dépendances @code{guile-json} (qui dépend aussi de | ||
| 8171 | @code{guile}) sont reconstruits avec @code{guile@@2.0}. | ||
| 8172 | |||
| 8173 | Cette option est implémentée avec la procédure Scheme | ||
| 8174 | @code{package-input-rewriting} (@pxref{Définition des paquets, | ||
| 8175 | @code{package-input-rewriting}}). | ||
| 8176 | |||
| 8177 | @item --with-graft=@var{paquet}=@var{remplaçant} | ||
| 8178 | Cette option est similaire à @code{--with-input} mais avec une différence | ||
| 8179 | importante : plutôt que de reconstruire la chaîne de dépendance complète, | ||
| 8180 | @var{remplaçant} est construit puis @dfn{greffé} sur les binaires qui | ||
| 8181 | référençaient initialement @var{paquet}. @xref{Mises à jour de sécurité}, pour plus | ||
| 8182 | d'information sur les greffes. | ||
| 8183 | |||
| 8184 | Par exemple, la commande ci-dessous greffe la version 3.5.4 de GnuTLS sur | ||
| 8185 | Wget et toutes ses dépendances, en remplaçant les références à la version | ||
| 8186 | actuelle de GnuTLS à laquelle ils se réfèrent actuellement : | ||
| 8187 | |||
| 8188 | @example | ||
| 8189 | guix build --with-graft=gnutls=gnutls@@3.5.4 wget | ||
| 8190 | @end example | ||
| 8191 | |||
| 8192 | Cela a l'avantage d'être bien plus rapide que de tout reconstruire. Mais il | ||
| 8193 | y a un piège : cela ne fonctionne que si @var{paquet} et @var{remplaçant} | ||
| 8194 | sont strictement compatibles — par exemple, s'ils fournissent une | ||
| 8195 | bibliothèque, l'interface binaire applicative (ABI) de ces bibliothèques | ||
| 8196 | doivent être compatibles. Si @var{remplaçant} est incompatible avec | ||
| 8197 | @var{paquet}, alors le paquet qui en résulte peut devenir inutilisable. À | ||
| 8198 | utilisez avec précaution ! | ||
| 8199 | |||
| 8200 | @item --with-git-url=@var{paquet}=@var{url} | ||
| 8201 | @cindex Git, utiliser le dernier commit | ||
| 8202 | @cindex dernier commit, construction | ||
| 8203 | Construire @var{paquet} depuis le dernier commit de la branche @code{master} | ||
| 8204 | du dépôt sur @var{url}. Les sous-modules Git du dépôt sont récupérés, | ||
| 8205 | récursivement. | ||
| 8206 | |||
| 8207 | Par exemple, la commande suivante construit la bibliothèque Python NumPy | ||
| 8208 | avec le dernier commit de la branche master de Python lui-même : | ||
| 8209 | |||
| 8210 | @example | ||
| 8211 | guix build python-numpy \ | ||
| 8212 | --with-git-url=python=https://github.com/python/cpython | ||
| 8213 | @end example | ||
| 8214 | |||
| 8215 | Cette option peut aussi être combinée avec @code{--with-branch} ou | ||
| 8216 | @code{--with-commit} (voir plus bas). | ||
| 8217 | |||
| 8218 | @cindex intégration continue | ||
| 8219 | Évidemment, comme cela utilise le dernier commit d'une branche donnée, le | ||
| 8220 | résultat d'une telle commande varie avec le temps. Néanmoins c'est une | ||
| 8221 | manière pratique pour reconstruire des piles logicielles entières avec le | ||
| 8222 | dernier commit d'un ou plusieurs paquets. C'est particulièrement pratique | ||
| 8223 | dans le contexte d'une intégration continue. | ||
| 8224 | |||
| 8225 | Les clones sont gardés dans un cache dans @file{~/.cache/guix/checkouts} | ||
| 8226 | pour accélérer les accès consécutifs au même dépôt. Vous pourriez vouloir | ||
| 8227 | le nettoyer de temps en temps pour récupérer de l'espace disque. | ||
| 8228 | |||
| 8229 | @item --with-branch=@var{paquet}=@var{branche} | ||
| 8230 | Construire @var{paquet} à partir du dernier commit de la @var{branche}. Si | ||
| 8231 | le champ @code{source} de @var{paquet} est une origine avec la méthode | ||
| 8232 | @code{git-fetch} (@pxref{Référence des origines}) ou un objet @code{git-checkout}, | ||
| 8233 | l'URL du dépôt est récupérée à partir de cette @code{source}. Sinon, vous | ||
| 8234 | devez utiliser @code{--with-git-url} pour spécifier l'URL du dépôt Git. | ||
| 8235 | |||
| 8236 | Par exemple, la commande suivante construit @code{guile-sqlite3} à partir du | ||
| 8237 | dernier commit de sa branche @code{master}, puis construit @code{guix} (qui | ||
| 8238 | en dépend) et @code{cuirass} (qui dépend de @code{guix}) avec cette | ||
| 8239 | construction spécifique de @code{guile-sqlite3} : | ||
| 8240 | |||
| 8241 | @example | ||
| 8242 | guix build --with-branch=guile-sqlite3=master cuirass | ||
| 8243 | @end example | ||
| 8244 | |||
| 8245 | @item --with-commit=@var{paquet}=@var{commit} | ||
| 8246 | Cela est similaire à @code{--with-branch}, sauf qu'elle construite à partir | ||
| 8247 | de @var{commit} au lieu du sommet d'une branche. @var{commit} doit être un | ||
| 8248 | identifiant SHA1 de commit Git valide. | ||
| 8249 | @end table | ||
| 8250 | |||
| 8251 | @node Options de construction supplémentaires | ||
| 8252 | @subsection Options de construction supplémentaires | ||
| 8253 | |||
| 8254 | Les options de la ligne de commande ci-dessous sont spécifiques à | ||
| 8255 | @command{guix build}. | ||
| 8256 | |||
| 8257 | @table @code | ||
| 8258 | |||
| 8259 | @item --quiet | ||
| 8260 | @itemx -q | ||
| 8261 | Construire en silence, sans afficher les journaux de construction ; c'est | ||
| 8262 | équivalent à @code{--verbosity=0}. À la fin, le journal de construction est | ||
| 8263 | gardé dans @file{/var} (ou similaire) et on peut toujours l'y trouver avec | ||
| 8264 | l'option @option{--log-file}. | ||
| 8265 | |||
| 8266 | @item --file=@var{fichier} | ||
| 8267 | @itemx -f @var{fichier} | ||
| 8268 | Construit le paquet, la dérivation ou l'objet simili-fichier en lequel le | ||
| 8269 | code dans @var{file} s'évalue (@pxref{G-Expressions, file-like objects}). | ||
| 8270 | |||
| 8271 | Par exemple, @var{file} peut contenir une définition de paquet comme ceci | ||
| 8272 | (@pxref{Définition des paquets}) : | ||
| 8273 | |||
| 8274 | @example | ||
| 8275 | @verbatiminclude package-hello.scm | ||
| 8276 | @end example | ||
| 8277 | |||
| 8278 | @item --expression=@var{expr} | ||
| 8279 | @itemx -e @var{expr} | ||
| 8280 | Construit le paquet ou la dérivation en lequel @var{expr} s'évalue. | ||
| 8281 | |||
| 8282 | Par exemple, @var{expr} peut être @code{(@@ (gnu packages guile) | ||
| 8283 | guile-1.8)}, qui désigne sans ambiguïté cette variante spécifique de la | ||
| 8284 | version 1.8 de Guile. | ||
| 8285 | |||
| 8286 | Autrement, @var{exp} peut être une G-expression, auquel cas elle est | ||
| 8287 | utilisée comme un programme de construction passé à @code{gexp->derivation} | ||
| 8288 | (@pxref{G-Expressions}). | ||
| 8289 | |||
| 8290 | Enfin, @var{expr} peut se référer à une procédure monadique à au moins un | ||
| 8291 | argument (@pxref{La monade du dépôt}). La procédure doit renvoyer une | ||
| 8292 | dérivation comme une valeur monadique, qui est ensuite lancée à travers | ||
| 8293 | @code{run-with-store}. | ||
| 8294 | |||
| 8295 | @item --source | ||
| 8296 | @itemx -S | ||
| 8297 | Construit les dérivation source des paquets, plutôt que des paquets | ||
| 8298 | eux-mêmes. | ||
| 8299 | |||
| 8300 | Par exemple, @code{guix build -S gcc} renvoie quelque chose comme | ||
| 8301 | @file{/gnu/store/@dots{}-gcc-4.7.2.tar.bz2}, qui est l'archive des sources | ||
| 8302 | de GCC. | ||
| 8303 | |||
| 8304 | L'archive des sources renvoyée est le résultat de l'application des | ||
| 8305 | correctifs et des extraits de code éventuels spécifiés dans le champ | ||
| 8306 | @code{origin} du paquet (@pxref{Définition des paquets}). | ||
| 8307 | |||
| 8308 | @item --sources | ||
| 8309 | Récupère et renvoie la source de @var{package-or-derivation} et toute ses | ||
| 8310 | dépendances, récursivement. C'est pratique pour obtenir une copie locale de | ||
| 8311 | tous les codes sources requis pour construire @var{packages}, ce qui vous | ||
| 8312 | permet de les construire plus tard même sans accès réseau. C'est une | ||
| 8313 | extension de l'option @code{--source} et peut accepter l'un des arguments | ||
| 8314 | facultatifs suivants : | ||
| 8315 | |||
| 8316 | @table @code | ||
| 8317 | @item package | ||
| 8318 | Cette valeur fait que l'option @code{--sources} se comporte comme l'option | ||
| 8319 | @code{--source}. | ||
| 8320 | |||
| 8321 | @item all | ||
| 8322 | Construit les dérivations des sources de tous les paquets, dont les sources | ||
| 8323 | qui pourraient être listées dans @code{inputs}. C'est la valeur par défaut. | ||
| 8324 | |||
| 8325 | @example | ||
| 8326 | $ guix build --sources tzdata | ||
| 8327 | The following derivations will be built: | ||
| 8328 | /gnu/store/@dots{}-tzdata2015b.tar.gz.drv | ||
| 8329 | /gnu/store/@dots{}-tzcode2015b.tar.gz.drv | ||
| 8330 | @end example | ||
| 8331 | |||
| 8332 | @item transitive | ||
| 8333 | Construire les dérivations des sources de tous les paquets, ainsi que toutes | ||
| 8334 | celles des entrées transitives des paquets. On peut par exemple utiliser | ||
| 8335 | cette option pour précharger les sources des paquets pour les construire | ||
| 8336 | plus tard hors ligne. | ||
| 8337 | |||
| 8338 | @example | ||
| 8339 | $ guix build --sources=transitive tzdata | ||
| 8340 | The following derivations will be built: | ||
| 8341 | /gnu/store/@dots{}-tzcode2015b.tar.gz.drv | ||
| 8342 | /gnu/store/@dots{}-findutils-4.4.2.tar.xz.drv | ||
| 8343 | /gnu/store/@dots{}-grep-2.21.tar.xz.drv | ||
| 8344 | /gnu/store/@dots{}-coreutils-8.23.tar.xz.drv | ||
| 8345 | /gnu/store/@dots{}-make-4.1.tar.xz.drv | ||
| 8346 | /gnu/store/@dots{}-bash-4.3.tar.xz.drv | ||
| 8347 | @dots{} | ||
| 8348 | @end example | ||
| 8349 | |||
| 8350 | @end table | ||
| 8351 | |||
| 8352 | @item --system=@var{système} | ||
| 8353 | @itemx -s @var{système} | ||
| 8354 | Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of the | ||
| 8355 | system type of the build host. The @command{guix build} command allows you | ||
| 8356 | to repeat this option several times, in which case it builds for all the | ||
| 8357 | specified systems; other commands ignore extraneous @option{-s} options. | ||
| 8358 | |||
| 8359 | @quotation Remarque | ||
| 8360 | Le drapeau @code{--system} est utilisé pour une compilation @emph{native} et | ||
| 8361 | ne doit pas être confondu avec une compilation croisée. Voir | ||
| 8362 | @code{--target} ci-dessous pour des informations sur la compilation croisée. | ||
| 8363 | @end quotation | ||
| 8364 | |||
| 8365 | Par exemple, passer @code{--system=i686-linux} sur un système | ||
| 8366 | @code{x86_64-linux} ou @code{--system=armhf-linux} sur un système | ||
| 8367 | @code{aarch64-linux} vous permet de construire des paquets dans un | ||
| 8368 | environnement entièrement 32-bits. C'est une exemple d'utilisation de cette | ||
| 8369 | option sur les systèmes Linux, qui peuvent émuler plusieurs personnalités. | ||
| 8370 | |||
| 8371 | @quotation Remarque | ||
| 8372 | La possibilité de construire pour un système @code{armhf-linux} est activé | ||
| 8373 | sans condition sur les machines @code{aarch64-linux}, bien que certaines | ||
| 8374 | puces aarch64 n'en soient pas capables, comme les ThunderX. | ||
| 8375 | @end quotation | ||
| 8376 | |||
| 8377 | De même, lorsque l'émulation transparente avec QEMU et @code{binfnmt_misc} | ||
| 8378 | est activée (@pxref{Services de virtualisation, | ||
| 8379 | @code{qemu-binfmt-service-type}}), vous pouvez construire pour n'importe | ||
| 8380 | quel système pour lequel un gestionnaire QEMU @code{binfmt_misc} est | ||
| 8381 | installé. | ||
| 8382 | |||
| 8383 | Les constructions pour un autre système que celui de la machine que vous | ||
| 8384 | utilisez peuvent aussi être déchargées à une machine distante de la bonne | ||
| 8385 | architecture. @xref{Réglages du délestage du démon}, pour plus d'information sur le | ||
| 8386 | déchargement. | ||
| 8387 | |||
| 8388 | @item --target=@var{triplet} | ||
| 8389 | @cindex compilation croisée | ||
| 8390 | Effectuer une compilation croisée pour @var{triplet} qui doit être un | ||
| 8391 | triplet GNU valide, comme @code{"mips64el-linux-gnu"} (@pxref{Specifying | ||
| 8392 | target triplets, GNU configuration triplets,, autoconf, Autoconf}). | ||
| 8393 | |||
| 8394 | @anchor{vérification de la construction} | ||
| 8395 | @item --check | ||
| 8396 | @cindex déterminisme, vérification | ||
| 8397 | @cindex reproductibilité, vérification | ||
| 8398 | Reconstruit les @var{package-or-derivation}, qui sont déjà disponibles dans | ||
| 8399 | le dépôt et lève une erreur si les résultats des constructions ne sont pas | ||
| 8400 | identiques bit-à-bit. | ||
| 8401 | |||
| 8402 | Ce mécanisme vous permet de vérifier si les substituts précédemment | ||
| 8403 | installés sont authentiques (@pxref{Substituts}) ou si le résultat de la | ||
| 8404 | construction d'un paquet est déterministe. @xref{Invoquer guix challenge} | ||
| 8405 | pour plus d'informations et pour les outils. | ||
| 8406 | |||
| 8407 | Lorsqu'utilisé avec @option{--keep-failed}, la sortie différente est gardée | ||
| 8408 | dans le dépôt sous @file{/gnu/store/@dots{}-check}. Cela rend plus facile | ||
| 8409 | l'étude des différences entre les deux résultats. | ||
| 8410 | |||
| 8411 | @item --repair | ||
| 8412 | @cindex réparer les éléments du dépôt | ||
| 8413 | @cindex corruption, récupérer de | ||
| 8414 | Essaye de réparer les éléments du dépôt spécifiés, s'ils sont corrompus, en | ||
| 8415 | les téléchargeant ou en les construisant à nouveau. | ||
| 8416 | |||
| 8417 | Cette opération n'est pas atomique et donc restreinte à l'utilisateur | ||
| 8418 | @code{root} | ||
| 8419 | |||
| 8420 | @item --derivations | ||
| 8421 | @itemx -d | ||
| 8422 | Renvoie les chemins de dérivation, et non les chemins de sortie, des paquets | ||
| 8423 | donnés. | ||
| 8424 | |||
| 8425 | @item --root=@var{fichier} | ||
| 8426 | @itemx -r @var{fichier} | ||
| 8427 | @cindex racines du GC, ajout | ||
| 8428 | @cindex ajout de racines au ramasse-miettes | ||
| 8429 | Fait de @var{fichier} un lien symbolique vers le résultat, et l'enregistre | ||
| 8430 | en tant que racine du ramasse-miettes. | ||
| 8431 | |||
| 8432 | En conséquence, les résultats de cette invocation de @command{guix build} | ||
| 8433 | sont protégés du ramasse-miettes jusqu'à ce que @var{fichier} soit | ||
| 8434 | supprimé. Lorsque cette option est omise, les constructions sont | ||
| 8435 | susceptibles d'être glanées. | ||
| 8436 | |||
| 8437 | @item --log-file | ||
| 8438 | @cindex journaux de construction, accès | ||
| 8439 | Renvoie les noms des journaux de construction ou les URL des | ||
| 8440 | @var{package-or-derivation} donnés ou lève une erreur si les journaux de | ||
| 8441 | construction sont absents. | ||
| 8442 | |||
| 8443 | Cela fonctionne indépendamment de la manière dont les paquets ou les | ||
| 8444 | dérivations sont spécifiées. Par exemple, les invocations suivantes sont | ||
| 8445 | équivalentes : | ||
| 8446 | |||
| 8447 | @example | ||
| 8448 | guix build --log-file `guix build -d guile` | ||
| 8449 | guix build --log-file `guix build guile` | ||
| 8450 | guix build --log-file guile | ||
| 8451 | guix build --log-file -e '(@@ (gnu packages guile) guile-2.0)' | ||
| 8452 | @end example | ||
| 8453 | |||
| 8454 | Si un journal n'est pas disponible localement, à moins que | ||
| 8455 | @code{--no-substitutes} ne soit passé, la commande cherche un journal | ||
| 8456 | correspondant sur l'un des serveurs de substituts (tels que spécifiés avec | ||
| 8457 | @code{--substitute-urls}.) | ||
| 8458 | |||
| 8459 | Donc par exemple, imaginons que vous souhaitiez voir le journal de | ||
| 8460 | construction de GDB sur MIPS, mais que vous n'avez qu'une machine | ||
| 8461 | @code{x86_64} : | ||
| 8462 | |||
| 8463 | @example | ||
| 8464 | $ guix build --log-file gdb -s mips64el-linux | ||
| 8465 | https://@value{SUBSTITUTE-SERVER}/log/@dots{}-gdb-7.10 | ||
| 8466 | @end example | ||
| 8467 | |||
| 8468 | Vous pouvez accéder librement à un vaste bibliothèque de journaux de | ||
| 8469 | construction ! | ||
| 8470 | @end table | ||
| 8471 | |||
| 8472 | @node Débogage des échecs de construction | ||
| 8473 | @subsection Débogage des échecs de construction | ||
| 8474 | |||
| 8475 | @cindex échecs de construction, débogage | ||
| 8476 | Lors de la définition d'un nouveau paquet (@pxref{Définition des paquets}), vous | ||
| 8477 | passerez probablement du temps à déboguer et modifier la construction | ||
| 8478 | jusqu'à ce que ça marche. Pour cela, vous devez effectuer les commandes de | ||
| 8479 | construction vous-même dans un environnement le plus proche possible de | ||
| 8480 | celui qu'utilise le démon de construction. | ||
| 8481 | |||
| 8482 | Pour cela, la première chose à faire est d'utiliser l'option | ||
| 8483 | @option{--keep-failed} ou @option{-K} de @command{guix build}, qui gardera | ||
| 8484 | l'arborescence de construction dans @file{/tmp} ou le répertoire spécifié | ||
| 8485 | par @code{TMPDIR} (@pxref{Invoquer guix build, @code{--keep-failed}}). | ||
| 8486 | |||
| 8487 | À partir de là, vous pouvez vous déplacer dans l'arborescence de | ||
| 8488 | construction et sourcer le fichier @file{environment-variables}, qui | ||
| 8489 | contient toutes les variables d'environnement qui étaient définies lorsque | ||
| 8490 | la construction a échoué. Disons que vous déboguez un échec de construction | ||
| 8491 | dans le paquet @code{foo} ; une session typique ressemblerait à cela : | ||
| 8492 | |||
| 8493 | @example | ||
| 8494 | $ guix build foo -K | ||
| 8495 | @dots{} @i{build fails} | ||
| 8496 | $ cd /tmp/guix-build-foo.drv-0 | ||
| 8497 | $ source ./environment-variables | ||
| 8498 | $ cd foo-1.2 | ||
| 8499 | @end example | ||
| 8500 | |||
| 8501 | Maintenant, vous pouvez invoquer les commandes comme si vous étiez le démon | ||
| 8502 | (presque) et corriger le processus de construction. | ||
| 8503 | |||
| 8504 | Parfois il arrive que, par exemple, les tests d'un paquet réussissent | ||
| 8505 | lorsque vous les lancez manuellement mais échouent quand ils sont lancés par | ||
| 8506 | le démon. Cela peut arriver parce que le démon tourne dans un conteneur où, | ||
| 8507 | contrairement à notre environnement au-dessus, l'accès réseau est | ||
| 8508 | indisponible, @file{/bin/sh} n'existe pas, etc (@pxref{Réglages de l'environnement de construction}). | ||
| 8509 | |||
| 8510 | Dans ce cas, vous pourriez avoir besoin de lancer le processus de | ||
| 8511 | construction dans un conteneur similaire à celui que le démon crée : | ||
| 8512 | |||
| 8513 | @example | ||
| 8514 | $ guix build -K foo | ||
| 8515 | @dots{} | ||
| 8516 | $ cd /tmp/guix-build-foo.drv-0 | ||
| 8517 | $ guix environment --no-grafts -C foo --ad-hoc strace gdb | ||
| 8518 | [env]# source ./environment-variables | ||
| 8519 | [env]# cd foo-1.2 | ||
| 8520 | @end example | ||
| 8521 | |||
| 8522 | Ici, @command{guix environment -C} crée un conteneur et démarre un nouveau | ||
| 8523 | shell dedans (@pxref{Invoquer guix environment}). La partie | ||
| 8524 | @command{--ad-hoc strace gdb} ajoute les commandes @command{strace} et | ||
| 8525 | @command{gdb} dans le conteneur, ce qui pourrait s'avérer utile pour le | ||
| 8526 | débogage. L'option @option{--no-grafts} s'assure qu'on obtient le même | ||
| 8527 | environnement, avec des paquets non greffés (@pxref{Mises à jour de sécurité}, pour | ||
| 8528 | plus d'informations sur les greffes). | ||
| 8529 | |||
| 8530 | Pour obtenir un conteneur plus proche de ce qui serait utilisé par le démon | ||
| 8531 | de construction, on peut enlever @file{/bin/sh} : | ||
| 8532 | |||
| 8533 | @example | ||
| 8534 | [env]# rm /bin/sh | ||
| 8535 | @end example | ||
| 8536 | |||
| 8537 | Ne vous inquiétez pas, c'est sans danger : tout cela se passe dans un | ||
| 8538 | conteneur jetable créé par @command{guix environment}. | ||
| 8539 | |||
| 8540 | La commande @command{strace} n'est probablement pas dans le chemin de | ||
| 8541 | recherche, mais on peut lancer : | ||
| 8542 | |||
| 8543 | @example | ||
| 8544 | [env]# $GUIX_ENVIRONMENT/bin/strace -f -o log make check | ||
| 8545 | @end example | ||
| 8546 | |||
| 8547 | De cette manière, non seulement vous aurez reproduit les variables | ||
| 8548 | d'environnement utilisées par le démon, mais vous lancerez aussi le | ||
| 8549 | processus de construction dans un conteneur similaire à celui utilisé par le | ||
| 8550 | démon. | ||
| 8551 | |||
| 8552 | |||
| 8553 | @node Invoquer guix edit | ||
| 8554 | @section Invoquer @command{guix edit} | ||
| 8555 | |||
| 8556 | @cindex @command{guix edit} | ||
| 8557 | @cindex définition de paquets, modification | ||
| 8558 | Tant de paquets, tant de fichiers source ! La commande @command{guix edit} | ||
| 8559 | facilite la vie des utilisateurs et des empaqueteurs en plaçant leur éditeur | ||
| 8560 | sur le fichier source qui contient la définition des paquets spécifiés. Par | ||
| 8561 | exemple : | ||
| 8562 | |||
| 8563 | @example | ||
| 8564 | guix edit gcc@@4.9 vim | ||
| 8565 | @end example | ||
| 8566 | |||
| 8567 | @noindent | ||
| 8568 | lance le programme spécifié dans la variable d'environnement @code{VISUAL} | ||
| 8569 | ou @code{EDITOR} pour visionner la recette de GCC@tie{}4.9.3 et celle de | ||
| 8570 | Vim. | ||
| 8571 | |||
| 8572 | Si vous utilisez une copie du dépôt Git de Guix (@pxref{Construire depuis Git}), | ||
| 8573 | ou que vous avez créé vos propres paquets dans @code{GUIX_PACKAGE_PATH} | ||
| 8574 | (@pxref{Modules de paquets}), vous pourrez modifier les recettes des paquets. | ||
| 8575 | Sinon, vous pourrez examiner les recettes en lecture-seule des paquets | ||
| 8576 | actuellement dans le dépôt. | ||
| 8577 | |||
| 8578 | |||
| 8579 | @node Invoquer guix download | ||
| 8580 | @section Invoquer @command{guix download} | ||
| 8581 | |||
| 8582 | @cindex @command{guix download} | ||
| 8583 | @cindex télécharger les sources des paquets | ||
| 8584 | En écrivant des définitions de paquets, les développeurs ont généralement | ||
| 8585 | besoin de télécharger une archive des sources, calculer son hash SHA256 et | ||
| 8586 | écrire ce hash dans la définition du paquet (@pxref{Définition des paquets}). | ||
| 8587 | L'outil @command{guix download} aide à cette tâche : il télécharge un | ||
| 8588 | fichier à l'URL donné, l'ajoute au dépôt et affiche à la fois son nom dans | ||
| 8589 | le dépôt et son hash SHA56. | ||
| 8590 | |||
| 8591 | Le fait que le fichier téléchargé soit ajouté au dépôt préserve la bande | ||
| 8592 | passante : lorsque les développeurs finissent par construire le paquet | ||
| 8593 | nouvellement défini avec @command{guix build}, l'archive des sources n'aura | ||
| 8594 | pas besoin d'être téléchargée de nouveau puisqu'elle se trouvera déjà dans | ||
| 8595 | le dépôt. C'est aussi une manière pratique de garder des fichiers | ||
| 8596 | temporairement, qui pourront ensuite être supprimés (@pxref{Invoquer guix gc}). | ||
| 8597 | |||
| 8598 | La commande @command{guix download} supporte les mêmes URI que celles | ||
| 8599 | utilisées dans les définitions de paquets. En particulier, elle supporte | ||
| 8600 | les URI @code {mirror://}. Les URI @code{http} (HTTP sur TLS) sont | ||
| 8601 | supportées @emph{si} les liaisons Guile de GnuTLS sont disponibles dans | ||
| 8602 | l'environnement de l'utilisateur ; si elle ne sont pas disponibles, une | ||
| 8603 | erreur est renvoyée. @xref{Guile Preparations, how to install the GnuTLS | ||
| 8604 | bindings for Guile,, gnutls-guile, GnuTLS-Guile}, pour plus d'informations. | ||
| 8605 | |||
| 8606 | @command{guix download} vérifie les certificats du serveur HTTPS en | ||
| 8607 | chargeant les autorités de certification X.509 depuis le répertoire vers | ||
| 8608 | lequel pointe la variable d'environnement @code{SSL_CERT_DIR} (@pxref{Certificats X.509}), à moins que @option{--no-check-certificate} ne soit utilisé. | ||
| 8609 | |||
| 8610 | Les options suivantes sont disponibles : | ||
| 8611 | |||
| 8612 | @table @code | ||
| 8613 | @item --format=@var{fmt} | ||
| 8614 | @itemx -f @var{fmt} | ||
| 8615 | Écrit le hash dans le format spécifié par @var{fmt}. Pour plus | ||
| 8616 | d'informations sur les valeurs valides pour @var{fmt}, @pxref{Invoquer guix hash}. | ||
| 8617 | |||
| 8618 | @item --no-check-certificate | ||
| 8619 | Ne pas valider les certificats HTTPS des serveurs. | ||
| 8620 | |||
| 8621 | Lorsque vous utilisez cette option, vous n'avez @emph{absolument aucune | ||
| 8622 | garanti} que vous communiquez avec le serveur authentique responsable de | ||
| 8623 | l'URL donnée, ce qui vous rend vulnérable à des attaques de « l'homme du | ||
| 8624 | milieu ». | ||
| 8625 | |||
| 8626 | @item --output=@var{fichier} | ||
| 8627 | @itemx -o @var{fichier} | ||
| 8628 | Enregistre le fichier téléchargé dans @var{fichier} plutôt que de l'ajouter | ||
| 8629 | au dépôt. | ||
| 8630 | @end table | ||
| 8631 | |||
| 8632 | @node Invoquer guix hash | ||
| 8633 | @section Invoquer @command{guix hash} | ||
| 8634 | |||
| 8635 | @cindex @command{guix hash} | ||
| 8636 | La commande @command{guix hash} calcul le hash SHA256 d'un fichier. C'est | ||
| 8637 | surtout un outil pour simplifier la vie des contributeurs de la distribution | ||
| 8638 | : il calcul le hash cryptographique d'un fichier, qui peut être utilisé dans | ||
| 8639 | la définition d'un paquet (@pxref{Définition des paquets}). | ||
| 8640 | |||
| 8641 | La syntaxe générale est : | ||
| 8642 | |||
| 8643 | @example | ||
| 8644 | guix hash @var{option} @var{fichier} | ||
| 8645 | @end example | ||
| 8646 | |||
| 8647 | Lorsque @var{fichier} est @code{-} (un tiret), @command{guix hash} calcul le | ||
| 8648 | hash des données lues depuis l'entrée standard. @command{guix hash} a les | ||
| 8649 | options suivantes : | ||
| 8650 | |||
| 8651 | @table @code | ||
| 8652 | |||
| 8653 | @item --format=@var{fmt} | ||
| 8654 | @itemx -f @var{fmt} | ||
| 8655 | Écrit le hash dans le format spécifié par @var{fmt}. | ||
| 8656 | |||
| 8657 | Les formats supportés sont : @code{nix-base32}, @code{base32}, @code{base16} | ||
| 8658 | (@code{hex} et @code{hexadecimal} peuvent aussi être utilisés). | ||
| 8659 | |||
| 8660 | Si l'option @option {--format} n'est pas spécifiée, @command{guix hash} | ||
| 8661 | affichera le hash en @code{nix-base32}. Cette représentation est utilisée | ||
| 8662 | dans les définitions des paquets. | ||
| 8663 | |||
| 8664 | @item --recursive | ||
| 8665 | @itemx -r | ||
| 8666 | Calcule le hash sur @var{fichier} récursivement. | ||
| 8667 | |||
| 8668 | @c FIXME: Replace xref above with xref to an ``Archive'' section when | ||
| 8669 | @c it exists. | ||
| 8670 | Dans ce cas, le hash est calculé sur une archive contenant @var{fichier}, | ||
| 8671 | dont ses enfants si c'est un répertoire. Certaines métadonnées de | ||
| 8672 | @var{fichier} fait partie de l'archive ; par exemple lorsque @var{fichier} | ||
| 8673 | est un fichier normal, le hash est différent que le @var{fichier} soit | ||
| 8674 | exécutable ou non. Les métadonnées comme un horodatage n'ont aucun impact | ||
| 8675 | sur le hash (@pxref{Invoquer guix archive}). | ||
| 8676 | |||
| 8677 | @item --exclude-vcs | ||
| 8678 | @itemx -x | ||
| 8679 | Lorsqu'elle est combinée à @option{--recursive}, exclut les répertoires de | ||
| 8680 | système de contrôle de version (@file{.bzr}, @file{.git}, @file{.hg}, etc). | ||
| 8681 | |||
| 8682 | @vindex git-fetch | ||
| 8683 | Par exemple, voici comment calculer le hash d'un dépôt Git, ce qui est utile | ||
| 8684 | avec la méthode @code{git-fetch} (@pxref{Référence des origines}) : | ||
| 8685 | |||
| 8686 | @example | ||
| 8687 | $ git clone http://example.org/foo.git | ||
| 8688 | $ cd foo | ||
| 8689 | $ guix hash -rx . | ||
| 8690 | @end example | ||
| 8691 | @end table | ||
| 8692 | |||
| 8693 | @node Invoquer guix import | ||
| 8694 | @section Invoquer @command{guix import} | ||
| 8695 | |||
| 8696 | @cindex importer des paquets | ||
| 8697 | @cindex paquets importés | ||
| 8698 | @cindex conversion de paquets | ||
| 8699 | @cindex Invoquer @command{guix import} | ||
| 8700 | La commande @command{guix import} est utile pour les gens qui voudraient | ||
| 8701 | ajouter un paquet à la distribution avec aussi peu de travail que possible — | ||
| 8702 | une demande légitime. La commande connaît quelques dépôts logiciels d'où | ||
| 8703 | elle peut « importer » des métadonnées de paquets. Le résultat est une | ||
| 8704 | définition de paquet, ou un modèle de définition, dans le format reconnu par | ||
| 8705 | Guix (@pxref{Définition des paquets}). | ||
| 8706 | |||
| 8707 | La syntaxe générale est : | ||
| 8708 | |||
| 8709 | @example | ||
| 8710 | guix import @var{importer} @var{options}@dots{} | ||
| 8711 | @end example | ||
| 8712 | |||
| 8713 | @var{importer} spécifie la source depuis laquelle importer des métadonnées | ||
| 8714 | de paquets, et @var{options} spécifie un identifiant de paquet et d'autres | ||
| 8715 | options spécifiques à @var{importer}. Actuellement les « importateurs » | ||
| 8716 | disponibles sont : | ||
| 8717 | |||
| 8718 | @table @code | ||
| 8719 | @item gnu | ||
| 8720 | Importe des métadonnées d'un paquet GNU donné. Cela fournit un modèle pour | ||
| 8721 | la dernière version de ce paquet GNU, avec le hash de son archive, le | ||
| 8722 | synopsis et la description canonique. | ||
| 8723 | |||
| 8724 | Les informations supplémentaires comme les dépendances du paquet et sa | ||
| 8725 | licence doivent être renseignées manuellement. | ||
| 8726 | |||
| 8727 | Par exemple, la commande suivante renvoie une définition de paquets pour | ||
| 8728 | GNU@tie{}Hello : | ||
| 8729 | |||
| 8730 | @example | ||
| 8731 | guix import gnu hello | ||
| 8732 | @end example | ||
| 8733 | |||
| 8734 | Les options spécifiques sont : | ||
| 8735 | |||
| 8736 | @table @code | ||
| 8737 | @item --key-download=@var{politique} | ||
| 8738 | Comme pour @code{guix refresh}, spécifie la politique de gestion des clefs | ||
| 8739 | OpenPGP manquantes lors de la vérification de la signature d'un paquet. | ||
| 8740 | @xref{Invoquer guix refresh, @code{--key-download}}. | ||
| 8741 | @end table | ||
| 8742 | |||
| 8743 | @item pypi | ||
| 8744 | @cindex pypi | ||
| 8745 | Importe des métadonnées depuis @uref{https://pypi.python.org/, l'index des | ||
| 8746 | paquets Python}. Les informations sont récupérées à partir de la | ||
| 8747 | description en JSON disponible sur @code{pypi.python.org} et inclus | ||
| 8748 | généralement toutes les informations utiles, dont les dépendances des | ||
| 8749 | paquets. Pour une efficacité maximale, il est recommandé d'installer | ||
| 8750 | l'utilitaire @command{unzip}, pour que l'importateur puisse dézipper les | ||
| 8751 | wheels Python et récupérer les informations contenues à l'intérieur. | ||
| 8752 | |||
| 8753 | La commande ci-dessous importe les métadonnées du paquet Python | ||
| 8754 | @code{itsdangerous} : | ||
| 8755 | |||
| 8756 | @example | ||
| 8757 | guix import pypi itsdangerous | ||
| 8758 | @end example | ||
| 8759 | |||
| 8760 | @table @code | ||
| 8761 | @item --recursive | ||
| 8762 | @itemx -r | ||
| 8763 | Traverse le graphe des dépendances du paquet amont donné et génère les | ||
| 8764 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | ||
| 8765 | @end table | ||
| 8766 | |||
| 8767 | @item gem | ||
| 8768 | @cindex gem | ||
| 8769 | Importe des métadonnées de @uref{https://rubygems.org/, RubyGems}. Les | ||
| 8770 | informations sont récupérées au format JSON disponible sur | ||
| 8771 | @code{rubygems.org} et inclut les informations les plus utiles, comme les | ||
| 8772 | dépendances à l'exécution. Il y a des cependant quelques restrictions. Les | ||
| 8773 | métadonnées ne distinguent pas synopsis et description, donc la même chaîne | ||
| 8774 | est utilisée pour les deux champs. En plus, les détails des dépendances non | ||
| 8775 | Ruby requises pour construire des extensions natives sont indisponibles et | ||
| 8776 | laissé en exercice à l'empaqueteur. | ||
| 8777 | |||
| 8778 | La commande ci-dessous importe les métadonnées pour le paquet Ruby | ||
| 8779 | @code{rails} : | ||
| 8780 | |||
| 8781 | @example | ||
| 8782 | guix import gem rails | ||
| 8783 | @end example | ||
| 8784 | |||
| 8785 | @table @code | ||
| 8786 | @item --recursive | ||
| 8787 | @itemx -r | ||
| 8788 | Traverse le graphe des dépendances du paquet amont donné et génère les | ||
| 8789 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | ||
| 8790 | @end table | ||
| 8791 | |||
| 8792 | @item cpan | ||
| 8793 | @cindex CPAN | ||
| 8794 | Importe des métadonnées de @uref{https://www.metacpan.org/, MetaCPAN}. Les | ||
| 8795 | informations sont récupérées au format JSON disponible à travers | ||
| 8796 | @uref{https://fastapi.metacpan.org/, l'API de MetaCPAN} et inclus les | ||
| 8797 | informations les plus utiles, comme les dépendances des modules. | ||
| 8798 | L'information sur les licences doit être vérifiée avec attention. Si Perl | ||
| 8799 | est disponible dans le dépôt, alors l'utilitaire @code{corelist} sera | ||
| 8800 | utiliser pour exclure les modules du cœur de la distribution Perl de la | ||
| 8801 | liste des dépendances. | ||
| 8802 | |||
| 8803 | La commande ci-dessous importe les métadonnées du module Perl | ||
| 8804 | @code{Acme::Boolean} : | ||
| 8805 | |||
| 8806 | @example | ||
| 8807 | guix import cpan Acme::Boolean | ||
| 8808 | @end example | ||
| 8809 | |||
| 8810 | @item cran | ||
| 8811 | @cindex CRAN | ||
| 8812 | @cindex Bioconductor | ||
| 8813 | Importe des métadonnées de @uref{https://cran.r-project.org/, CRAN}, le | ||
| 8814 | dépôt central de @uref{http://r-project.org, l'environnement statistique et | ||
| 8815 | graphique GUN@tie{}R}. | ||
| 8816 | |||
| 8817 | Les informations sont extraites du fichier @file{DESCRIPTION} du paquet. | ||
| 8818 | |||
| 8819 | La commande ci-dessous importe les métadonnées du paquet R @code{Cairo} : | ||
| 8820 | |||
| 8821 | @example | ||
| 8822 | guix import cran Cairo | ||
| 8823 | @end example | ||
| 8824 | |||
| 8825 | Lorsque l'option @code{--recursive} est utilisée, l'importateur traversera | ||
| 8826 | le graphe des dépendances du paquet amont récursivement et générera des | ||
| 8827 | expressions de paquets pour tous ceux qui ne sont pas déjà dans Guix. | ||
| 8828 | |||
| 8829 | Lorsque l'option @code{--archive=bioconductor} est utilisée, les métadonnées | ||
| 8830 | sont importées de @uref{https://www.bioconductor.org/, Bioconductor}, un | ||
| 8831 | répertoire de paquets R pour l'analyse et la compréhension de données | ||
| 8832 | génomiques volumineuses en bioinformatique. | ||
| 8833 | |||
| 8834 | Les informations sont extraites du fichier @file{DESCRIPTION} d'un paquet | ||
| 8835 | publié sur l'interface web du dépôt SVN de Bioconductor. | ||
| 8836 | |||
| 8837 | La commande ci-dessous importe les métadonnées du paquet R | ||
| 8838 | @code{GenomicRanges} : | ||
| 8839 | |||
| 8840 | @example | ||
| 8841 | guix import cran --archive=bioconductor GenomicRanges | ||
| 8842 | @end example | ||
| 8843 | |||
| 8844 | @item texlive | ||
| 8845 | @cindex TeX Live | ||
| 8846 | @cindex CTAN | ||
| 8847 | Importe les métadonnées de @uref{http://www.ctan.org/, CTAN}, l'archive TeX | ||
| 8848 | réseau complète pour les paquets TeX qui font partie de la | ||
| 8849 | @uref{https://www.tug.org/texlive/, distribution TeX Live}. | ||
| 8850 | |||
| 8851 | Les informations sur les paquets sont obtenues à travers l'API XML fournie | ||
| 8852 | par CTAN, tandis que le code source est téléchargé depuis le dépôt SVN du | ||
| 8853 | projet Tex Live. Cette méthode est utilisée parce que CTAN ne garde pas | ||
| 8854 | d'archives versionnées. | ||
| 8855 | |||
| 8856 | La commande ci-dessous importe les métadonnées du paquet TeX @code{fontspec} | ||
| 8857 | : | ||
| 8858 | |||
| 8859 | @example | ||
| 8860 | guix import texlive fontspec | ||
| 8861 | @end example | ||
| 8862 | |||
| 8863 | Lorsque l'option @code{--archive=DIRECTORY} est utilisée, le code source | ||
| 8864 | n'est pas téléchargé depuis le sous-répertoire @file{latex} du | ||
| 8865 | l'arborescence @file{texmf-dist/source} dans le dépôt SVN de TeX Live, mais | ||
| 8866 | depuis le répertoire voisin spécifié sous la même racine. | ||
| 8867 | |||
| 8868 | La commande ci-dessous importe les métadonnées du paquet @code{ifxetex} | ||
| 8869 | depuis CTAN en récupérant les sources depuis le répertoire | ||
| 8870 | @file{texmf/source/generic} : | ||
| 8871 | |||
| 8872 | @example | ||
| 8873 | guix import texlive --archive=generic ifxetex | ||
| 8874 | @end example | ||
| 8875 | |||
| 8876 | @item json | ||
| 8877 | @cindex JSON, import | ||
| 8878 | Importe des métadonnées d'un fichier JSON local. Considérez l'exemple | ||
| 8879 | suivant d'une définition de paquet au format JSON : | ||
| 8880 | |||
| 8881 | @example | ||
| 8882 | @{ | ||
| 8883 | "name": "hello", | ||
| 8884 | "version": "2.10", | ||
| 8885 | "source": "mirror://gnu/hello/hello-2.10.tar.gz", | ||
| 8886 | "build-system": "gnu", | ||
| 8887 | "home-page": "https://www.gnu.org/software/hello/", | ||
| 8888 | "synopsis": "Hello, GNU world: An example GNU package", | ||
| 8889 | "description": "GNU Hello prints a greeting.", | ||
| 8890 | "license": "GPL-3.0+", | ||
| 8891 | "native-inputs": ["gcc@@6"] | ||
| 8892 | @} | ||
| 8893 | @end example | ||
| 8894 | |||
| 8895 | Les noms des champs sont les mêmes que pour les enregistrements de | ||
| 8896 | @code{<package>} (@xref{Définition des paquets}). Les référence à d'autres | ||
| 8897 | paquets sont fournies comme des listes JSON de chaînes de spécifications de | ||
| 8898 | paquets comme @code{guile} ou @code{guile@@2.0}. | ||
| 8899 | |||
| 8900 | L'importateur supporte aussi une définition plus explicite des sources avec | ||
| 8901 | les champs habituels pour les enregistrements @code{<origin>} : | ||
| 8902 | |||
| 8903 | @example | ||
| 8904 | @{ | ||
| 8905 | @dots{} | ||
| 8906 | "source": @{ | ||
| 8907 | "method": "url-fetch", | ||
| 8908 | "uri": "mirror://gnu/hello/hello-2.10.tar.gz", | ||
| 8909 | "sha256": @{ | ||
| 8910 | "base32": "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i" | ||
| 8911 | @} | ||
| 8912 | @} | ||
| 8913 | @dots{} | ||
| 8914 | @} | ||
| 8915 | @end example | ||
| 8916 | |||
| 8917 | La commande ci-dessous lit les métadonnées du fichier JSON @code{hello.json} | ||
| 8918 | et renvoie une expression de paquet : | ||
| 8919 | |||
| 8920 | @example | ||
| 8921 | guix import json hello.json | ||
| 8922 | @end example | ||
| 8923 | |||
| 8924 | @item nix | ||
| 8925 | Importe les métadonnées d'une copie locale des source de | ||
| 8926 | @uref{http://nixos.org/nixpkgs/, la distribution Nixpkgs}@footnote{Cela | ||
| 8927 | repose sur la commande @command{nix-instantiate} de | ||
| 8928 | @uref{http://nixos.org/nix/, Nix}.}. Les définitions de paquets dans | ||
| 8929 | Nixpkgs sont habituellement écrites en un mélange entre le langage Nix et | ||
| 8930 | Bash. Cette commande n'importe que la structure de haut-niveau du paquet | ||
| 8931 | qui est écrite dans le langage Nix. Elle inclut normalement tous les champs | ||
| 8932 | de base de la définition d'un paquet. | ||
| 8933 | |||
| 8934 | Lorsque vous importez un paquet GNU, le synopsis et la description sont | ||
| 8935 | replacés par la version canonique en amont. | ||
| 8936 | |||
| 8937 | Normalement, vous devrez d'abord faire : | ||
| 8938 | |||
| 8939 | @example | ||
| 8940 | export NIX_REMOTE=daemon | ||
| 8941 | @end example | ||
| 8942 | |||
| 8943 | @noindent | ||
| 8944 | pour que @command{nix-instantiate} n'essaye pas d'ouvrir la base de données | ||
| 8945 | de Nix. | ||
| 8946 | |||
| 8947 | Par exemple, la commande ci-dessous importe la définition du paquet de | ||
| 8948 | LibreOffice (plus précisément, elle importe la définition du paquet lié à | ||
| 8949 | l'attribut de plus haut-niveau @code{libreoffice}) : | ||
| 8950 | |||
| 8951 | @example | ||
| 8952 | guix import nix ~/path/to/nixpkgs libreoffice | ||
| 8953 | @end example | ||
| 8954 | |||
| 8955 | @item hackage | ||
| 8956 | @cindex hackage | ||
| 8957 | Importe les métadonnées de l'archive de paquets centrale de la communauté | ||
| 8958 | Haskell, @uref{https://hackage.haskell.org/, Hackage}. Les informations | ||
| 8959 | sont récupérées depuis les fichiers Cabal et incluent toutes les | ||
| 8960 | informations utiles, dont les dépendances des paquets. | ||
| 8961 | |||
| 8962 | Les options spécifiques sont : | ||
| 8963 | |||
| 8964 | @table @code | ||
| 8965 | @item --stdin | ||
| 8966 | @itemx -s | ||
| 8967 | Lit un fichier Cabal depuis l'entrée standard. | ||
| 8968 | @item --no-test-dependencies | ||
| 8969 | @itemx -t | ||
| 8970 | N'inclut pas les dépendances requises uniquement par les suites de tests. | ||
| 8971 | @item --cabal-environment=@var{alist} | ||
| 8972 | @itemx -e @var{alist} | ||
| 8973 | @var{alist} est une alist Scheme qui définie l'environnement dans lequel les | ||
| 8974 | conditions de Cabal sont évaluées. Les clefs acceptées sont : @code{os}, | ||
| 8975 | @code{arch}, @code{impl} et une représentation sous forme de chaîne de | ||
| 8976 | caractères du nom d'un drapeau. La valeur associée à un drapeau doit être | ||
| 8977 | le symbole @code{true} ou @code{false}. La valeur associée aux autres clefs | ||
| 8978 | doivent se conformer avec la définition du format de fichiers Cabal. La | ||
| 8979 | valeur par défaut associée avec les clefs @code{os}, @code{arch} et | ||
| 8980 | @code{impl} sont respectivement @samp{linux}, @samp{x86_64} et @samp{ghc}. | ||
| 8981 | @item --recursive | ||
| 8982 | @itemx -r | ||
| 8983 | Traverse le graphe des dépendances du paquet amont donné et génère les | ||
| 8984 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | ||
| 8985 | @end table | ||
| 8986 | |||
| 8987 | La commande ci-dessous importe les métadonnées de la dernière version du | ||
| 8988 | paquet Haskell @code{HTTP} sans inclure les dépendances des tests et en | ||
| 8989 | spécifiant la valeur du drapeau @samp{network-uri} comme étant @code{false} | ||
| 8990 | : | ||
| 8991 | |||
| 8992 | @example | ||
| 8993 | guix import hackage -t -e "'((\"network-uri\" . false))" HTTP | ||
| 8994 | @end example | ||
| 8995 | |||
| 8996 | Une version spécifique du paquet peut éventuellement être spécifiée en | ||
| 8997 | faisant suivre le nom du paquet par un arobase et un numéro de version comme | ||
| 8998 | dans l'exemple suivant : | ||
| 8999 | |||
| 9000 | @example | ||
| 9001 | guix import hackage mtl@@2.1.3.1 | ||
| 9002 | @end example | ||
| 9003 | |||
| 9004 | @item stackage | ||
| 9005 | @cindex stackage | ||
| 9006 | L'importateur @code{stackage} est une enveloppe autour de l'importateur | ||
| 9007 | @code{hackage}. Il prend un nom de paquet, recherche la version incluse | ||
| 9008 | dans une version au support étendu (LTS) de @uref{https://www.stackage.org, | ||
| 9009 | Stackage} et utilise l'importateur @code{hackage} pour récupérer les | ||
| 9010 | métadonnées. Remarquez que c'est à vous de choisir une version LTS | ||
| 9011 | compatible avec le compilateur GHC utilisé par Guix. | ||
| 9012 | |||
| 9013 | Les options spécifiques sont : | ||
| 9014 | |||
| 9015 | @table @code | ||
| 9016 | @item --no-test-dependencies | ||
| 9017 | @itemx -t | ||
| 9018 | N'inclut pas les dépendances requises uniquement par les suites de tests. | ||
| 9019 | @item --lts-version=@var{version} | ||
| 9020 | @itemx -l @var{version} | ||
| 9021 | @var{version} est la version LTS désirée. Si elle est omise, la dernière | ||
| 9022 | version est utilisée. | ||
| 9023 | @item --recursive | ||
| 9024 | @itemx -r | ||
| 9025 | Traverse le graphe des dépendances du paquet amont donné et génère les | ||
| 9026 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | ||
| 9027 | @end table | ||
| 9028 | |||
| 9029 | La commande ci-dessous importe les métadonnées du paquet Haskell @code{HTTP} | ||
| 9030 | inclus dans la version LTS 7.18 de Stackage : | ||
| 9031 | |||
| 9032 | @example | ||
| 9033 | guix import stackage --lts-version=7.18 HTTP | ||
| 9034 | @end example | ||
| 9035 | |||
| 9036 | @item elpa | ||
| 9037 | @cindex elpa | ||
| 9038 | Importe les métadonnées du dépôt de paquets ELPA (Emacs Lisp Package | ||
| 9039 | Archive) (@pxref{Packages,,, emacs, The GNU Emacs Manual}). | ||
| 9040 | |||
| 9041 | Les options spécifiques sont : | ||
| 9042 | |||
| 9043 | @table @code | ||
| 9044 | @item --archive=@var{repo} | ||
| 9045 | @itemx -a @var{repo} | ||
| 9046 | @var{repo} identifie le dépôt d'archive depuis lequel récupérer les | ||
| 9047 | informations. Actuellement les dépôts supportés et leurs identifiants sont | ||
| 9048 | : | ||
| 9049 | @itemize - | ||
| 9050 | @item | ||
| 9051 | @uref{http://elpa.gnu.org/packages, GNU}, qu'on peut choisir avec | ||
| 9052 | l'identifiant @code{gnu}. C'est la valeur par défaut. | ||
| 9053 | |||
| 9054 | Les paquets de @code{elpa.gnu.org} avec l'une des clefs contenues dans le | ||
| 9055 | porte-clef GnuPG @file{share/emacs/25.1/etc/package-keyring.gpg} (ou | ||
| 9056 | similaire) dans le paquet @code{emacs} (@pxref{Package Installation, ELPA | ||
| 9057 | package signatures,, emacs, The GNU Emacs Manual}). | ||
| 9058 | |||
| 9059 | @item | ||
| 9060 | @uref{http://stable.melpa.org/packages, MELPA-Stable}, qu'on peut | ||
| 9061 | sélectionner avec l'identifiant @code{melpa-stable}. | ||
| 9062 | |||
| 9063 | @item | ||
| 9064 | @uref{http://melpa.org/packages, MELPA}, qu'on peut sélectionner avec | ||
| 9065 | l'identifiant @code{melpa}. | ||
| 9066 | @end itemize | ||
| 9067 | |||
| 9068 | @item --recursive | ||
| 9069 | @itemx -r | ||
| 9070 | Traverse le graphe des dépendances du paquet amont donné et génère les | ||
| 9071 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | ||
| 9072 | @end table | ||
| 9073 | |||
| 9074 | @item crate | ||
| 9075 | @cindex crate | ||
| 9076 | Importe les métadonnées du répertoire des paquets Rust | ||
| 9077 | @uref{https://crates.io, crates.io}. | ||
| 9078 | |||
| 9079 | @item opam | ||
| 9080 | @cindex OPAM | ||
| 9081 | @cindex OCaml | ||
| 9082 | Importe les métadonnées du répertoire de paquets | ||
| 9083 | @uref{https://opam.ocaml.org/, OPAM} utilisé par la communauté OCaml. | ||
| 9084 | @end table | ||
| 9085 | |||
| 9086 | La structure du code de @command{guix import} est modulaire. Il serait | ||
| 9087 | utile d'avoir plus d'importateurs pour d'autres formats de paquets et votre | ||
| 9088 | aide est la bienvenue sur ce sujet (@pxref{Contribuer}). | ||
| 9089 | |||
| 9090 | @node Invoquer guix refresh | ||
| 9091 | @section Invoquer @command{guix refresh} | ||
| 9092 | |||
| 9093 | @cindex @command{guix refresh} | ||
| 9094 | L'audience première de la commande @command{guix refresh} est l'ensemble des | ||
| 9095 | développeurs de la distribution logicielle GNU. Par défaut, elle rapporte | ||
| 9096 | les paquets fournis par la distribution qui sont en retard par rapport aux | ||
| 9097 | dernières versions disponibles en amont, comme ceci : | ||
| 9098 | |||
| 9099 | @example | ||
| 9100 | $ guix refresh | ||
| 9101 | gnu/packages/gettext.scm:29:13: gettext serait mis à jour de 0.18.1.1 à 0.18.2.1 | ||
| 9102 | gnu/packages/glib.scm:77:12: glib serait mis à jour de 2.34.3 à 2.37.0 | ||
| 9103 | @end example | ||
| 9104 | |||
| 9105 | Autrement, on peut spécifier les paquets à considérer, auquel cas un | ||
| 9106 | avertissement est émis pour les paquets qui n'ont pas de gestionnaire de | ||
| 9107 | mise à jour associé : | ||
| 9108 | |||
| 9109 | @example | ||
| 9110 | $ guix refresh coreutils guile guile-ssh | ||
| 9111 | gnu/packages/ssh.scm:205:2 : avertissement : aucun gestionnaire de mise à jour pour guile-ssh | ||
| 9112 | gnu/packages/guile.scm:136:12 : guile serait mis à jour de 2.0.12 à 2.0.13 | ||
| 9113 | @end example | ||
| 9114 | |||
| 9115 | @command{guix refresh} navigue le dépôt amont de chaque paquet et détermine | ||
| 9116 | le numéro de version le plus élevé parmi les versions publiées. La commande | ||
| 9117 | sait comment mettre à jour certains types de paquets : les paquets GNU, les | ||
| 9118 | paquets ELPA, etc. — voir la documentation pour @option{--type} ci-dessous. | ||
| 9119 | Il y a beaucoup de paquet cependant pour lesquels il manque une méthode pour | ||
| 9120 | déterminer si une nouvelle version est disponible en amont. Cependant, le | ||
| 9121 | mécanisme est extensible, alors n'hésitez pas à nous contacter pour ajouter | ||
| 9122 | une nouvelle méthode ! | ||
| 9123 | |||
| 9124 | @table @code | ||
| 9125 | |||
| 9126 | @item --recursive | ||
| 9127 | Considère les paquets spécifiés et tous les paquets dont ils dépendent. | ||
| 9128 | |||
| 9129 | @example | ||
| 9130 | $ guix refresh --recursive coreutils | ||
| 9131 | gnu/packages/acl.scm:35:2: warning: no updater for acl | ||
| 9132 | gnu/packages/m4.scm:30:12: info: 1.4.18 is already the latest version of m4 | ||
| 9133 | gnu/packages/xml.scm:68:2: warning: no updater for expat | ||
| 9134 | gnu/packages/multiprecision.scm:40:12: info: 6.1.2 is already the latest version of gmp | ||
| 9135 | @dots{} | ||
| 9136 | @end example | ||
| 9137 | |||
| 9138 | @end table | ||
| 9139 | |||
| 9140 | Parfois les noms en amont diffèrent du nom de paquet utilisé par Guix et | ||
| 9141 | @command{guix refresh} a besoin d'un peu d'aide. La plupart des | ||
| 9142 | gestionnaires de mise à jour honorent la propriété @code{upstream-name} dans | ||
| 9143 | les définitions de paquets, ce qui peut être utilisé à cette fin : | ||
| 9144 | |||
| 9145 | @example | ||
| 9146 | (define-public network-manager | ||
| 9147 | (package | ||
| 9148 | (name "network-manager") | ||
| 9149 | ;; @dots{} | ||
| 9150 | (properties '((upstream-name . "NetworkManager"))))) | ||
| 9151 | @end example | ||
| 9152 | |||
| 9153 | Lorsque l'option @code{--update} est utilisée, elle modifie les fichiers | ||
| 9154 | source de la distribution pour mettre à jour le numéro de version et le hash | ||
| 9155 | de l'archive source de ces recettes de paquets (@pxref{Définition des paquets}). | ||
| 9156 | Cela est effectué en téléchargeant la dernière version de l'archive des | ||
| 9157 | sources de chaque paquet et des signatures associées, en authentifiant | ||
| 9158 | l'archive téléchargée avec sa signature en utilisant @command{gpg} puis en | ||
| 9159 | calculant son hash. Lorsque la clef publique utilisée pour signer l'archive | ||
| 9160 | manque du porte-clefs de l'utilisateur, le gestionnaire tente de la | ||
| 9161 | récupérer automatiquement d'un serveur de clef public ; si cela réussi, la | ||
| 9162 | clef est ajoutée au porte-clefs de l'utilisateur, sinon @command{guix | ||
| 9163 | refresh} rapporte une erreur. | ||
| 9164 | |||
| 9165 | Les options suivantes sont supportées : | ||
| 9166 | |||
| 9167 | @table @code | ||
| 9168 | |||
| 9169 | @item --expression=@var{expr} | ||
| 9170 | @itemx -e @var{expr} | ||
| 9171 | Considérer le paquet évalué par @var{expr}. | ||
| 9172 | |||
| 9173 | C'est utile pour précisément se référer à un paquet, comme dans cet exemple | ||
| 9174 | : | ||
| 9175 | |||
| 9176 | @example | ||
| 9177 | guix refresh -l -e '(@@@@ (gnu packages commencement) glibc-final)' | ||
| 9178 | @end example | ||
| 9179 | |||
| 9180 | Cette commande liste les paquets qui dépendent de la libc « finale » (en | ||
| 9181 | gros tous les paquets). | ||
| 9182 | |||
| 9183 | @item --update | ||
| 9184 | @itemx -u | ||
| 9185 | Met à jour les fichiers source de la distribution (les recettes de paquets) | ||
| 9186 | en place. Cette option est généralement utilisée depuis une copie du dépôt | ||
| 9187 | git de Guix (@pxref{Lancer Guix avant qu'il ne soit installé}) : | ||
| 9188 | |||
| 9189 | @example | ||
| 9190 | $ ./pre-inst-env guix refresh -s non-core -u | ||
| 9191 | @end example | ||
| 9192 | |||
| 9193 | @xref{Définition des paquets}, pour plus d'information sur les définitions des | ||
| 9194 | paquets. | ||
| 9195 | |||
| 9196 | @item --select=[@var{subset}] | ||
| 9197 | @itemx -s @var{subset} | ||
| 9198 | Choisi tous les paquets dans @var{subset}, entre @code{core} et | ||
| 9199 | @code{non-core}. | ||
| 9200 | |||
| 9201 | Le sous-ensemble @code{core} se réfère à tous les paquets du cœur de la | ||
| 9202 | distribution — c.-à-d.@: les paquets qui sont utilisés pour construire « | ||
| 9203 | tout le reste ». Cela comprend GCC, libc, Binutils, Bash, etc. | ||
| 9204 | Habituellement, changer l'un de ces paquets dans la distribution implique de | ||
| 9205 | reconstruire tous les autres. Ainsi, ces mises à jour sont une nuisance | ||
| 9206 | pour les utilisateurs, en terme de temps de compilation et de bande passante | ||
| 9207 | utilisés pour effectuer la mise à jour. | ||
| 9208 | |||
| 9209 | Le sous-ensemble @code{non-core} se réfère au reste des paquets. C'est | ||
| 9210 | habituellement utile dans les cas où une mise à jour des paquets du cœur | ||
| 9211 | serait dérangeante. | ||
| 9212 | |||
| 9213 | @item --manifest=@var{fichier} | ||
| 9214 | @itemx -m @var{fichier} | ||
| 9215 | Choisi tous les paquets du manifeste dans @var{file}. C'est utile pour | ||
| 9216 | vérifier qu'aucun des paquets du manifeste utilisateur ne peut être mis à | ||
| 9217 | jour. | ||
| 9218 | |||
| 9219 | @item --type=@var{updater} | ||
| 9220 | @itemx -t @var{updater} | ||
| 9221 | Chois uniquement les paquets pris en charge par @var{updater} | ||
| 9222 | (éventuellement une liste de gestionnaires de mise à jour séparés par des | ||
| 9223 | virgules). Actuellement, @var{updater} peut être l'une des valeurs suivantes | ||
| 9224 | : | ||
| 9225 | |||
| 9226 | @table @code | ||
| 9227 | @item gnu | ||
| 9228 | le gestionnaire de mise à jour pour les paquets GNU ; | ||
| 9229 | @item gnome | ||
| 9230 | le gestionnaire de mise à jour pour les paquets GNOME ; | ||
| 9231 | @item kde | ||
| 9232 | le gestionnaire de mise à jour pour les paquets KDE ; | ||
| 9233 | @item xorg | ||
| 9234 | le gestionnaire de mise à jour pour les paquets X.org ; | ||
| 9235 | @item kernel.org | ||
| 9236 | le gestionnaire de mise à jour pour les paquets hébergés sur kernel.org ; | ||
| 9237 | @item elpa | ||
| 9238 | le gestionnaire de mise à jour pour les paquets @uref{http://elpa.gnu.org/, | ||
| 9239 | ELPA} ; | ||
| 9240 | @item cran | ||
| 9241 | le gestionnaire de mise à jour pour les paquets | ||
| 9242 | @uref{https://cran.r-project.org/, CRAN} ; | ||
| 9243 | @item bioconductor | ||
| 9244 | le gestionnaire de mise à jour pour les paquets | ||
| 9245 | @uref{https://www.bioconductor.org/, Bioconductor} ; | ||
| 9246 | @item cpan | ||
| 9247 | le gestionnaire de mise à jour pour les paquets @uref{http://www.cpan.org/, | ||
| 9248 | CPAN} ; | ||
| 9249 | @item pypi | ||
| 9250 | le gestionnaire de mise à jour pour les paquets | ||
| 9251 | @uref{https://pypi.python.org, PyPI} ; | ||
| 9252 | @item gem | ||
| 9253 | le gestionnaire de mise à jour pour les paquets @uref{https://rubygems.org, | ||
| 9254 | RubyGems} ; | ||
| 9255 | @item github | ||
| 9256 | le gestionnaire de mise à jour pour les paquets @uref{https://github.com, | ||
| 9257 | GitHub} ; | ||
| 9258 | @item hackage | ||
| 9259 | le gestionnaire de mise à jour pour les paquets | ||
| 9260 | @uref{https://hackage.haskell.org, Hackage} ; | ||
| 9261 | @item stackage | ||
| 9262 | le gestionnaire de mise à jour pour les paquets | ||
| 9263 | @uref{https://www.stackage.org, Stackage} ; | ||
| 9264 | @item crate | ||
| 9265 | le gestionnaire de mise à jour pour les paquets @uref{https://crates.io, | ||
| 9266 | Crates} ; | ||
| 9267 | @item launchpad | ||
| 9268 | le gestionnaire de mise à jour pour les paquets @uref{https://launchpad.net, | ||
| 9269 | Launchpad} | ||
| 9270 | @end table | ||
| 9271 | |||
| 9272 | Par exemple, la commande suivante ne vérifie que les mises à jour des | ||
| 9273 | paquets Emacs hébergés sur @code{elpa.gnu.org} et les paquets CRAN : | ||
| 9274 | |||
| 9275 | @example | ||
| 9276 | $ guix refresh --type=elpa,cran | ||
| 9277 | gnu/packages/statistics.scm:819:13 : r-testthat serait mis à jour de 0.10.0 à 0.11.0 | ||
| 9278 | gnu/packages/emacs.scm:856:13 : emacs-auctex serait mis à jour de 11.88.6 à 11.88.9 | ||
| 9279 | @end example | ||
| 9280 | |||
| 9281 | @end table | ||
| 9282 | |||
| 9283 | En plus, on peut passer à @command{guix refresh} un ou plusieurs noms de | ||
| 9284 | paquets, comme dans cet exemple : | ||
| 9285 | |||
| 9286 | @example | ||
| 9287 | $ ./pre-inst-env guix refresh -u emacs idutils gcc@@4.8 | ||
| 9288 | @end example | ||
| 9289 | |||
| 9290 | @noindent | ||
| 9291 | La commande au-dessus met à jour spécifiquement les paquets @code{emacs} et | ||
| 9292 | @code{idutils}. L'option @code{--select} n'aurait aucun effet dans ce cas. | ||
| 9293 | |||
| 9294 | Pour déterminer s'il faut mettre à jour un paquet, il est parfois pratique | ||
| 9295 | de savoir quels paquets seraient affectés par la mise à jour pour pouvoir | ||
| 9296 | vérifier la compatibilité. Pour cela l'option suivante peut être utilisée | ||
| 9297 | avec un ou plusieurs noms de paquets passés à @command{guix refresh} : | ||
| 9298 | |||
| 9299 | @table @code | ||
| 9300 | |||
| 9301 | @item --list-updaters | ||
| 9302 | @itemx -L | ||
| 9303 | Liste les gestionnaires de mise à jour et quitte (voir l'option | ||
| 9304 | @option{--type} plus haut). | ||
| 9305 | |||
| 9306 | Pour chaque gestionnaire, affiche le pourcentage de paquets qu'il couvre ; à | ||
| 9307 | la fin, affiche le pourcentage de paquets couverts par tous les | ||
| 9308 | gestionnaires. | ||
| 9309 | |||
| 9310 | @item --list-dependent | ||
| 9311 | @itemx -l | ||
| 9312 | Liste les paquets de plus haut-niveau qui devraient être reconstruits après | ||
| 9313 | la mise à jour d'un ou plusieurs paquets. | ||
| 9314 | |||
| 9315 | @xref{Invoquer guix graph, le type @code{reverse-package} de @command{guix | ||
| 9316 | graph}}, pour des informations sur la manière de visualiser la liste des | ||
| 9317 | paquets dépendant d'un autre. | ||
| 9318 | |||
| 9319 | @end table | ||
| 9320 | |||
| 9321 | Soyez conscients que l'option @code{--list-dependent} ne fait | ||
| 9322 | @emph{qu'approximer} les reconstructions qui seraient requises par une mise | ||
| 9323 | à jour. Plus de reconstructions pourraient être requises dans certaines | ||
| 9324 | circonstances. | ||
| 9325 | |||
| 9326 | @example | ||
| 9327 | $ guix refresh --list-dependent flex | ||
| 9328 | Building the following 120 packages would ensure 213 dependent packages are rebuilt: | ||
| 9329 | hop@@2.4.0 geiser@@0.4 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 @dots{} | ||
| 9330 | @end example | ||
| 9331 | |||
| 9332 | La commande ci-dessus liste un ensemble de paquets qui peuvent être | ||
| 9333 | construits pour vérifier la compatibilité d'une mise à jour de @code{flex}. | ||
| 9334 | |||
| 9335 | @table @code | ||
| 9336 | |||
| 9337 | @item --list-transitive | ||
| 9338 | Lister tous les paquets dont un paquet ou plus dépendent. | ||
| 9339 | |||
| 9340 | @example | ||
| 9341 | $ guix refresh --list-transitive flex | ||
| 9342 | flex@@2.6.4 depends on the following 25 packages: perl@@5.28.0 help2man@@1.47.6 | ||
| 9343 | bison@@3.0.5 indent@@2.2.10 tar@@1.30 gzip@@1.9 bzip2@@1.0.6 xz@@5.2.4 file@@5.33 @dots{} | ||
| 9344 | @end example | ||
| 9345 | |||
| 9346 | @end table | ||
| 9347 | |||
| 9348 | La commande ci-dessus liste un ensemble de paquets qui, lorsqu'ils sont | ||
| 9349 | modifiés, causent la reconstruction de @code{flex}. | ||
| 9350 | |||
| 9351 | Les options suivante peuvent être utilisées pour personnaliser les | ||
| 9352 | opérations avec GnuPG : | ||
| 9353 | |||
| 9354 | @table @code | ||
| 9355 | |||
| 9356 | @item --gpg=@var{commande} | ||
| 9357 | Utilise @var{commande} comme la commande de GnuPG 2.x. @var{commande} est | ||
| 9358 | recherchée dans @code{PATH}. | ||
| 9359 | |||
| 9360 | @item --keyring=@var{fichier} | ||
| 9361 | Utilise @var{fichier} comme porte-clefs pour les clefs amont. @var{fichier} | ||
| 9362 | doit être dans le @dfn{format keybox}. Les fichiers Keybox ont d'habitude | ||
| 9363 | un nom qui fini par @file{.kbx} et GNU@tie{}Privacy Guard (GPG) peut | ||
| 9364 | manipuler ces fichiers (@pxref{kbxutil, @command{kbxutil},, gnupg, Using the | ||
| 9365 | Privacy Guard}, pour plus d'informations sur un outil pour manipuler des | ||
| 9366 | fichiers keybox). | ||
| 9367 | |||
| 9368 | Lorsque cette option est omise, @command{guix refresh} utilise | ||
| 9369 | @file{~/.config/guix/upstream/trustedkeys.kbx} comme porte-clefs pour les | ||
| 9370 | clefs de signature amont. Les signatures OpenPGP sont vérifiées avec ces | ||
| 9371 | clefs ; les clefs manquantes sont aussi téléchargées dans ce porte-clefs | ||
| 9372 | (voir @option{--key-download} plus bas). | ||
| 9373 | |||
| 9374 | Vous pouvez exporter les clefs de votre porte-clefs GPG par défaut dans un | ||
| 9375 | fichier keybox avec une commande telle que : | ||
| 9376 | |||
| 9377 | @example | ||
| 9378 | gpg --export rms@@gnu.org | kbxutil --import-openpgp >> mykeyring.kbx | ||
| 9379 | @end example | ||
| 9380 | |||
| 9381 | De même, vous pouvez récupérer des clefs dans un fichier keybox spécifique | ||
| 9382 | comme ceci : | ||
| 9383 | |||
| 9384 | @example | ||
| 9385 | gpg --no-default-keyring --keyring mykeyring.kbx \ | ||
| 9386 | --recv-keys @value{OPENPGP-SIGNING-KEY-ID} | ||
| 9387 | @end example | ||
| 9388 | |||
| 9389 | @ref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU | ||
| 9390 | Privacy Guard} pour plus d'informations sur l'option @option{--keyring} de | ||
| 9391 | GPG. | ||
| 9392 | |||
| 9393 | @item --key-download=@var{politique} | ||
| 9394 | Gère les clefs OpenPGP manquantes d'après la @var{politique}, qui peut être | ||
| 9395 | l'une des suivantes : | ||
| 9396 | |||
| 9397 | @table @code | ||
| 9398 | @item always | ||
| 9399 | Toujours télécharger les clefs manquantes depuis un serveur de clefs et les | ||
| 9400 | ajouter au porte-clefs de l'utilisateur. | ||
| 9401 | |||
| 9402 | @item never | ||
| 9403 | Ne jamais essayer de télécharger les clefs OpenPGP manquante. Quitter à la | ||
| 9404 | place. | ||
| 9405 | |||
| 9406 | @item interactive | ||
| 9407 | Lorsqu'on rencontre un paquet signé par une clef OpenPGP inconnue, demander | ||
| 9408 | à l'utilisateur s'il souhaite la télécharger ou non. C'est le comportement | ||
| 9409 | par défaut. | ||
| 9410 | @end table | ||
| 9411 | |||
| 9412 | @item --key-server=@var{host} | ||
| 9413 | Utiliser @var{host} comme serveur de clefs OpenPGP lors de l'importe d'une | ||
| 9414 | clef publique. | ||
| 9415 | |||
| 9416 | @end table | ||
| 9417 | |||
| 9418 | Le gestionnaire de mises à jour @code{github} utilise | ||
| 9419 | @uref{https://developer.github.com/v3/, l'API de GitHub} pour faire des | ||
| 9420 | requêtes sur les nouvelles versions. Lorsqu'elle est utilisé de manière | ||
| 9421 | répétée, p.@: ex.@: lorsque vous vérifiez tous les paquets, GitHub finira | ||
| 9422 | par refuser de répondre à d'autres requêtes de l'API. Par défaut 60 | ||
| 9423 | requêtes à l'heure sont autorisées, et une vérification complète de tous les | ||
| 9424 | paquets GitHub dans Guix requiert bien plus que cela. L'authentification | ||
| 9425 | avec GitHub à travers l'utilisation d'un jeton d'API lève ces limites. Pour | ||
| 9426 | utiliser un jeton de l'API, initialisez la variable d'environnement | ||
| 9427 | @code{GUIX_GITHUB_TOKEN} avec un jeton que vous vous serez procuré sur | ||
| 9428 | @uref{https://github.com/settings/tokens} ou autrement. | ||
| 9429 | |||
| 9430 | |||
| 9431 | @node Invoquer guix lint | ||
| 9432 | @section Invoquer @command{guix lint} | ||
| 9433 | |||
| 9434 | @cindex @command{guix lint} | ||
| 9435 | @cindex paquets, chercher des erreurs | ||
| 9436 | La commande @command{guix lint} est conçue pour aider les développeurs à | ||
| 9437 | éviter des erreurs commune et à utiliser un style cohérent lors de | ||
| 9438 | l'écriture de recettes de paquets. Elle lance des vérifications sur un | ||
| 9439 | ensemble de paquets donnés pour trouver des erreurs communes dans leur | ||
| 9440 | définition. Les @dfn{vérifieurs} disponibles comprennent (voir | ||
| 9441 | @code{--list-checkers} pour une liste complète) : | ||
| 9442 | |||
| 9443 | @table @code | ||
| 9444 | @item synopsis | ||
| 9445 | @itemx description | ||
| 9446 | Vérifie certaines règles typographiques et stylistiques dans les | ||
| 9447 | descriptions et les synopsis. | ||
| 9448 | |||
| 9449 | @item inputs-should-be-native | ||
| 9450 | Identifie les entrées qui devraient sans doute plutôt être des entrées | ||
| 9451 | natives. | ||
| 9452 | |||
| 9453 | @item source | ||
| 9454 | @itemx home-page | ||
| 9455 | @itemx mirror-url | ||
| 9456 | @itemx github-url | ||
| 9457 | @itemx source-file-name | ||
| 9458 | Sonde les URL @code{home-page} et @code{source} et rapporte celles qui sont | ||
| 9459 | invalides. Suggère une URL en @code{mirror://} lorsque c'est possible. Si | ||
| 9460 | l'URL de @code{source} redirige vers une URL GitHub, recommande d'utiliser | ||
| 9461 | l'URL GitHub. Vérifie que le nom du fichier source a un sens, p.@: ex.@: | ||
| 9462 | qu'il ne s'agisse pas juste d'un numéro de version ou « git-checkout », sans | ||
| 9463 | avoir déclaré un @code{file-name} (@pxref{Référence des origines}). | ||
| 9464 | |||
| 9465 | @item source-unstable-tarball | ||
| 9466 | Analyse l'URL @code{source} pour déterminer si une archive de GitHub est | ||
| 9467 | autogénérée ou s'il s'agit d'une archive de publication. Malheureusement | ||
| 9468 | les archives autogénérées de GitHub sont parfois régénérées. | ||
| 9469 | |||
| 9470 | @item cve | ||
| 9471 | @cindex vulnérabilités | ||
| 9472 | @cindex CVE, Common Vulnerabilities and Exposures | ||
| 9473 | Rapporte les vulnérabilités connues trouvées dans les bases de données CVE | ||
| 9474 | (Common Vulnerabilities and Exposures) de l'année en cours et des années | ||
| 9475 | précédentes @uref{https://nvd.nist.gov/download.cfm#CVE_FEED, publié par le | ||
| 9476 | NIST américain}. | ||
| 9477 | |||
| 9478 | Pour voir les informations sur une vulnérabilité en particulier, visitez les | ||
| 9479 | pages : | ||
| 9480 | |||
| 9481 | @itemize | ||
| 9482 | @item | ||
| 9483 | @indicateurl{https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-ANNÉE-ABCD} | ||
| 9484 | @item | ||
| 9485 | @indicateurl{https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-ANNÉE-ABCD} | ||
| 9486 | @end itemize | ||
| 9487 | |||
| 9488 | @noindent | ||
| 9489 | où @code{CVE-ANNÉE-ABCD} est l'identifiant CVE — p.@: ex.@: | ||
| 9490 | @code{CVE-2015-7554}. | ||
| 9491 | |||
| 9492 | Les développeurs de paquets peuvent spécifier dans les recettes des paquets | ||
| 9493 | le nom @uref{https://nvd.nist.gov/cpe.cfm,CPE (Common Platform Enumeration)} | ||
| 9494 | et la version du paquet s'ils diffèrent du nom et de la version que Guix | ||
| 9495 | utilise, comme dans cet exemple : | ||
| 9496 | |||
| 9497 | @example | ||
| 9498 | (package | ||
| 9499 | (name "grub") | ||
| 9500 | ;; @dots{} | ||
| 9501 | ;; CPE calls this package "grub2". | ||
| 9502 | (properties '((cpe-name . "grub2") | ||
| 9503 | (cpe-version . "2.3"))) | ||
| 9504 | @end example | ||
| 9505 | |||
| 9506 | @c See <http://www.openwall.com/lists/oss-security/2017/03/15/3>. | ||
| 9507 | Certaines entrées dans la base de données CVE ne spécifient pas la version | ||
| 9508 | du paquet auquel elles s'appliquent et lui restera donc attachée pour | ||
| 9509 | toujours. Les développeurs qui trouvent des alertes CVE et ont vérifiés | ||
| 9510 | qu'elles peuvent être ignorées peuvent les déclarer comme dans cet exemple : | ||
| 9511 | |||
| 9512 | @example | ||
| 9513 | (package | ||
| 9514 | (name "t1lib") | ||
| 9515 | ;; @dots{} | ||
| 9516 | ;; Ces CVE ne s'appliquent plus et peuvent être ignorée sans problème. | ||
| 9517 | (properties `((lint-hidden-cve . ("CVE-2011-0433" | ||
| 9518 | "CVE-2011-1553" | ||
| 9519 | "CVE-2011-1554" | ||
| 9520 | "CVE-2011-5244"))))) | ||
| 9521 | @end example | ||
| 9522 | |||
| 9523 | @item formatting | ||
| 9524 | Avertit le développeurs lorsqu'il y a des problèmes de formatage du code | ||
| 9525 | source évident : des espaces en fin de ligne, des tabulations, etc. | ||
| 9526 | @end table | ||
| 9527 | |||
| 9528 | La syntaxe générale est : | ||
| 9529 | |||
| 9530 | @example | ||
| 9531 | guix lint @var{options} @var{package}@dots{} | ||
| 9532 | @end example | ||
| 9533 | |||
| 9534 | Si aucun paquet n'est donné par la ligne de commande, tous les paquets | ||
| 9535 | seront vérifiés. Les @var{options} peuvent contenir aucune ou plus des | ||
| 9536 | options suivantes : | ||
| 9537 | |||
| 9538 | @table @code | ||
| 9539 | @item --list-checkers | ||
| 9540 | @itemx -l | ||
| 9541 | Liste et décrit tous les vérificateurs disponibles qui seront lancés sur les | ||
| 9542 | paquets puis quitte. | ||
| 9543 | |||
| 9544 | @item --checkers | ||
| 9545 | @itemx -c | ||
| 9546 | N'active que les vérificateurs spécifiés dans une liste de noms séparés par | ||
| 9547 | des virgules parmi la liste renvoyée par @code{--list-checkers}. | ||
| 9548 | |||
| 9549 | @end table | ||
| 9550 | |||
| 9551 | @node Invoquer guix size | ||
| 9552 | @section Invoquer @command{guix size} | ||
| 9553 | |||
| 9554 | @cindex taille | ||
| 9555 | @cindex paquet, taille | ||
| 9556 | @cindex closure | ||
| 9557 | @cindex @command{guix size} | ||
| 9558 | La commande @command{guix size} aide les développeurs à dresser un profil de | ||
| 9559 | l'utilisation du disque que font les paquets. C'est facile de négliger | ||
| 9560 | l'impact d'une dépendance supplémentaire ajoutée à un paquet, ou l'impact de | ||
| 9561 | l'utilisation d'une sortie unique pour un paquet qui pourrait être | ||
| 9562 | facilement séparé (@pxref{Des paquets avec plusieurs résultats}). Ce sont les | ||
| 9563 | problèmes que @command{guix size} peut typiquement mettre en valeur. | ||
| 9564 | |||
| 9565 | On peut passer un ou plusieurs spécifications de paquets à la commande, | ||
| 9566 | comme @code{gcc@@4.8} ou @code{guile:debug}, ou un nom de fichier dans le | ||
| 9567 | dépôt. Regardez cet exemple : | ||
| 9568 | |||
| 9569 | @example | ||
| 9570 | $ guix size coreutils | ||
| 9571 | store item total self | ||
| 9572 | /gnu/store/@dots{}-gcc-5.5.0-lib 60.4 30.1 38.1% | ||
| 9573 | /gnu/store/@dots{}-glibc-2.27 30.3 28.8 36.6% | ||
| 9574 | /gnu/store/@dots{}-coreutils-8.28 78.9 15.0 19.0% | ||
| 9575 | /gnu/store/@dots{}-gmp-6.1.2 63.1 2.7 3.4% | ||
| 9576 | /gnu/store/@dots{}-bash-static-4.4.12 1.5 1.5 1.9% | ||
| 9577 | /gnu/store/@dots{}-acl-2.2.52 61.1 0.4 0.5% | ||
| 9578 | /gnu/store/@dots{}-attr-2.4.47 60.6 0.2 0.3% | ||
| 9579 | /gnu/store/@dots{}-libcap-2.25 60.5 0.2 0.2% | ||
| 9580 | total: 78.9 MiB | ||
| 9581 | @end example | ||
| 9582 | |||
| 9583 | @cindex closure | ||
| 9584 | Les éléments du dépôt listés ici constituent la @dfn{clôture transitive} de | ||
| 9585 | Coreutils — c.-à-d.@: Coreutils et toutes ses dépendances, récursivement — | ||
| 9586 | comme ce qui serait renvoyé par : | ||
| 9587 | |||
| 9588 | @example | ||
| 9589 | $ guix gc -R /gnu/store/@dots{}-coreutils-8.23 | ||
| 9590 | @end example | ||
| 9591 | |||
| 9592 | Ici, la sortie possède trois colonnes à côté de chaque élément du dépôt. La | ||
| 9593 | première colonne, nommée « total », montre la taille en mébioctet (Mio) de | ||
| 9594 | la clôture de l'élément du dépôt — c'est-à-dire sa propre taille plus la | ||
| 9595 | taille de ses dépendances. La colonne suivante, nommée « lui-même », montre | ||
| 9596 | la taille de l'élément lui-même. La dernière colonne montre le ration de la | ||
| 9597 | taille de l'élément lui-même par rapport à celle de tous les éléments | ||
| 9598 | montrés. | ||
| 9599 | |||
| 9600 | Dans cet exemple, on voit que la clôture de Coreutils pèse 79@tie{}Mio, dont | ||
| 9601 | la plupart est dû à la libc et aux bibliothèques à l'exécution de GCC (ce | ||
| 9602 | n'est pas un problème en soit que la libc et les bibliothèques de GCC | ||
| 9603 | représentent une grande part de la clôture parce qu'elles sont toujours | ||
| 9604 | disponibles sur le système de toute façon). | ||
| 9605 | |||
| 9606 | Lorsque les paquets passés à @command{guix size} sont disponibles dans le | ||
| 9607 | dépôt@footnote{Plus précisément, @command{guix size} cherche les variantes | ||
| 9608 | @emph{non greffées} des paquets donnés, tels qu'ils sont renvoyés par | ||
| 9609 | @code{guix build @var{paquet} --no-graft}. @xref{Mises à jour de sécurité} pour des | ||
| 9610 | informations sur les greffes}, @command{guix size} demande au démon de | ||
| 9611 | déterminer ses dépendances, et mesure sa taille dans le dépôt, comme avec | ||
| 9612 | @command{du -ms --apparent-size} (@pxref{du invocation,,, coreutils, GNU | ||
| 9613 | Coreutils}). | ||
| 9614 | |||
| 9615 | Lorsque les paquets donnés ne sont @emph{pas} dans le dépôt, @command{guix | ||
| 9616 | size} rapporte les informations en se basant sur les substituts disponibles | ||
| 9617 | (@pxref{Substituts}). Cela permet de profiler l'utilisation du disque des | ||
| 9618 | éléments du dépôt même s'ils ne sont pas sur le disque, mais disponibles à | ||
| 9619 | distance. | ||
| 9620 | |||
| 9621 | Vous pouvez aussi spécifier plusieurs noms de paquets : | ||
| 9622 | |||
| 9623 | @example | ||
| 9624 | $ guix size coreutils grep sed bash | ||
| 9625 | store item total self | ||
| 9626 | /gnu/store/@dots{}-coreutils-8.24 77.8 13.8 13.4% | ||
| 9627 | /gnu/store/@dots{}-grep-2.22 73.1 0.8 0.8% | ||
| 9628 | /gnu/store/@dots{}-bash-4.3.42 72.3 4.7 4.6% | ||
| 9629 | /gnu/store/@dots{}-readline-6.3 67.6 1.2 1.2% | ||
| 9630 | @dots{} | ||
| 9631 | total: 102.3 MiB | ||
| 9632 | @end example | ||
| 9633 | |||
| 9634 | @noindent | ||
| 9635 | Dans cet exemple on voit que la combinaison des quatre paquets prend | ||
| 9636 | 102.3@tie{}Mio en tout, ce qui est bien moins que la somme des clôtures | ||
| 9637 | puisqu'ils ont beaucoup de dépendances en commun. | ||
| 9638 | |||
| 9639 | Les options disponibles sont : | ||
| 9640 | |||
| 9641 | @table @option | ||
| 9642 | |||
| 9643 | @item --substitute-urls=@var{urls} | ||
| 9644 | Utilise les informations de substituts de @var{urls}. | ||
| 9645 | @xref{client-substitute-urls, the same option for @code{guix build}}. | ||
| 9646 | |||
| 9647 | @item --sort=@var{clef} | ||
| 9648 | Trie les lignes en fonction de la @var{clef}, l'une des options suivantes : | ||
| 9649 | |||
| 9650 | @table @code | ||
| 9651 | @item self | ||
| 9652 | la taille de chaque élément (par défaut) ; | ||
| 9653 | @item closure | ||
| 9654 | la taille totale de la clôture de l'élément. | ||
| 9655 | @end table | ||
| 9656 | |||
| 9657 | @item --map-file=@var{fichier} | ||
| 9658 | Écrit un schéma de l'utilisation du disque au format PNG dans @var{fichier}. | ||
| 9659 | |||
| 9660 | Pour l'exemple au-dessus, le schéma ressemble à ceci : | ||
| 9661 | |||
| 9662 | @image{images/coreutils-size-map,5in,, schéma de l'utilisation du disque de | ||
| 9663 | Coreutils produit par @command{guix size}} | ||
| 9664 | |||
| 9665 | Cette option requiert l'installation de | ||
| 9666 | @uref{http://wingolog.org/software/guile-charting/, Guile-Charting} et qu'il | ||
| 9667 | soit visible dans le chemin de recherche des modules Guile. Lorsque ce | ||
| 9668 | n'est pas le cas, @command{guix size} plante en essayant de le charger. | ||
| 9669 | |||
| 9670 | @item --system=@var{système} | ||
| 9671 | @itemx -s @var{système} | ||
| 9672 | Considère les paquets pour @var{système} — p.@: ex.@: @code{x86_64-linux}. | ||
| 9673 | |||
| 9674 | @end table | ||
| 9675 | |||
| 9676 | @node Invoquer guix graph | ||
| 9677 | @section Invoque @command{guix graph} | ||
| 9678 | |||
| 9679 | @cindex DAG | ||
| 9680 | @cindex @command{guix graph} | ||
| 9681 | @cindex dépendances des paquets | ||
| 9682 | Les paquets et leurs dépendances forment un @dfn{graphe}, plus précisément | ||
| 9683 | un graphe orienté acyclique (DAG). Il peut vite devenir difficile d'avoir | ||
| 9684 | une représentation mentale du DAG d'un paquet, donc la commande | ||
| 9685 | @command{guix graph} fournit une représentation visuelle du DAG. Par | ||
| 9686 | défaut, @command{guix graph} émet un représentation du DAG dans le format | ||
| 9687 | d'entrée de @uref{http://www.graphviz.org/, Graphviz}, pour que sa sortie | ||
| 9688 | puisse être passée directement à la commande @command{dot} de Graphviz. | ||
| 9689 | Elle peut aussi émettre une page HTML avec du code Javascript pour afficher | ||
| 9690 | un « digramme d'accords » dans un navigateur Web, grâce à la bibliothèque | ||
| 9691 | @uref{https://d3js.org/, d3.js}, ou émettre des requêtes Cypher pour | ||
| 9692 | construire un graphe dans une base de donnée de graphes supportant le | ||
| 9693 | langage de requêtes @uref{http://www.opencypher.org/, openCypher}. La | ||
| 9694 | syntaxe générale est : | ||
| 9695 | |||
| 9696 | @example | ||
| 9697 | guix graph @var{options} @var{paquet}@dots{} | ||
| 9698 | @end example | ||
| 9699 | |||
| 9700 | Par exemple, la commande suivante génère un fichier PDF représentant le DAG | ||
| 9701 | du paquet pour GNU@tie{}Core Utilities, qui montre ses dépendances à la | ||
| 9702 | compilation : | ||
| 9703 | |||
| 9704 | @example | ||
| 9705 | guix graph coreutils | dot -Tpdf > dag.pdf | ||
| 9706 | @end example | ||
| 9707 | |||
| 9708 | La sortie ressemble à ceci : | ||
| 9709 | |||
| 9710 | @image{images/coreutils-graph,2in,,Graphe de dépendance de GNU Coreutils} | ||
| 9711 | |||
| 9712 | Joli petit graphe, non ? | ||
| 9713 | |||
| 9714 | Mais il y a plus qu'un seul graphe ! Celui au-dessus est concis : c'est le | ||
| 9715 | graphe des objets paquets, en omettant les entrées implicites comme GCC, | ||
| 9716 | libc, grep, etc. Il est souvent utile d'avoir ces graphes concis, mais | ||
| 9717 | parfois on veut voir plus de détails. @command{guix graph} supporte | ||
| 9718 | plusieurs types de graphes, qui vous permettent de choisir le niveau de | ||
| 9719 | détails : | ||
| 9720 | |||
| 9721 | @table @code | ||
| 9722 | @item package | ||
| 9723 | C'est le type par défaut utilisé dans l'exemple plus haut. Il montre le DAG | ||
| 9724 | des objets paquets, sans les dépendances implicites. C'est concis, mais | ||
| 9725 | omet pas mal de détails. | ||
| 9726 | |||
| 9727 | @item reverse-package | ||
| 9728 | Cela montre le DAG @emph{inversé} des paquets. Par exemple : | ||
| 9729 | |||
| 9730 | @example | ||
| 9731 | guix graph --type=reverse-package ocaml | ||
| 9732 | @end example | ||
| 9733 | |||
| 9734 | …@: crée le graphe des paquets qui dépendent @emph{explicitement} d'OCaml | ||
| 9735 | (si vous vous intéressez aussi au cas où OCaml est une dépendance implicite, | ||
| 9736 | voir @code{reverse-bag} plus bas). | ||
| 9737 | |||
| 9738 | Remarquez que pour les paquets du cœur de la distribution, cela crée des | ||
| 9739 | graphes énormes. Si vous voulez seulement voir le nombre de paquets qui | ||
| 9740 | dépendent d'un paquet donnés, utilisez @command{guix refresh | ||
| 9741 | --list-dependent} (@pxref{Invoquer guix refresh, | ||
| 9742 | @option{--list-dependent}}). | ||
| 9743 | |||
| 9744 | @item bag-emerged | ||
| 9745 | C'est le DAG du paquet, @emph{avec} les entrées implicites. | ||
| 9746 | |||
| 9747 | Par exemple, la commande suivante : | ||
| 9748 | |||
| 9749 | @example | ||
| 9750 | guix graph --type=bag-emerged coreutils | dot -Tpdf > dag.pdf | ||
| 9751 | @end example | ||
| 9752 | |||
| 9753 | …@: montre ce graphe plus gros : | ||
| 9754 | |||
| 9755 | @image{images/coreutils-bag-graph,,5in,Graphe des dépendances détaillé de | ||
| 9756 | GNU Coreutils} | ||
| 9757 | |||
| 9758 | En bas du graphe, on voit toutes les entrées implicites de | ||
| 9759 | @var{gnu-build-system} (@pxref{Systèmes de construction, @code{gnu-build-system}}). | ||
| 9760 | |||
| 9761 | Maintenant, remarquez que les dépendances de ces entrées implicites — | ||
| 9762 | c'est-à-dire les @dfn{dépendances de bootstrap} (@pxref{Bootstrapping}) — ne | ||
| 9763 | sont pas affichées, pour rester concis. | ||
| 9764 | |||
| 9765 | @item bag | ||
| 9766 | Comme @code{bag-emerged} mais cette fois inclus toutes les dépendances de | ||
| 9767 | bootstrap. | ||
| 9768 | |||
| 9769 | @item bag-with-origins | ||
| 9770 | Comme @code{bag}, mais montre aussi les origines et leurs dépendances. | ||
| 9771 | |||
| 9772 | @item reverse-bag | ||
| 9773 | Cela montre le DAG @emph{inverse} des paquets. Contrairement à | ||
| 9774 | @code{reverse-package}, il montre aussi les dépendance implicites. Par | ||
| 9775 | exemple : | ||
| 9776 | |||
| 9777 | @example | ||
| 9778 | guix graph -t reverse-bag dune | ||
| 9779 | @end example | ||
| 9780 | |||
| 9781 | @noindent | ||
| 9782 | …@: crée le graphe des tous les paquets qui dépendent de Dune, directement | ||
| 9783 | ou indirectement. Comme Dune est une dépendance @emph{implicite} de | ||
| 9784 | nombreux paquets @i{via} @code{dune-build-system}, cela montre un plus grand | ||
| 9785 | nombre de paquets, alors que @code{reverse-package} en montrerait très peu, | ||
| 9786 | voir aucun. | ||
| 9787 | |||
| 9788 | @item dérivation | ||
| 9789 | C'est la représentation lu plus détaillée : elle montre le DAG des | ||
| 9790 | dérivations (@pxref{Dérivations}) et des éléments du dépôt. Comparé à la | ||
| 9791 | représentation ci-dessus, beaucoup plus de nœuds sont visibles, dont les | ||
| 9792 | scripts de construction, les correctifs, les modules Guile, etc. | ||
| 9793 | |||
| 9794 | Pour ce type de graphe, il est aussi possible de passer un nom de fichier | ||
| 9795 | @file{.drv} à la place d'un nom de paquet, comme dans : | ||
| 9796 | |||
| 9797 | @example | ||
| 9798 | guix graph -t derivation `guix system build -d my-config.scm` | ||
| 9799 | @end example | ||
| 9800 | |||
| 9801 | @item module | ||
| 9802 | C'est le graphe des @dfn{modules de paquets} (@pxref{Modules de paquets}). Par | ||
| 9803 | exemple, la commande suivante montre le graphe des modules de paquets qui | ||
| 9804 | définissent le paquet @code{guile} : | ||
| 9805 | |||
| 9806 | @example | ||
| 9807 | guix graph -t module guile | dot -Tpdf > module-graph.pdf | ||
| 9808 | @end example | ||
| 9809 | @end table | ||
| 9810 | |||
| 9811 | Tous les types ci-dessus correspondent aux @emph{dépendances à la | ||
| 9812 | construction}. Le type de graphe suivant représente les @emph{dépendances à | ||
| 9813 | l'exécution} : | ||
| 9814 | |||
| 9815 | @table @code | ||
| 9816 | @item references | ||
| 9817 | C'est le graphe des @dfn{references} d'une sortie d'un paquet, telles que | ||
| 9818 | renvoyées par @command{guix gc --references} (@pxref{Invoquer guix gc}). | ||
| 9819 | |||
| 9820 | Si la sortie du paquet donnée n'est pas disponible dans le dépôt, | ||
| 9821 | @command{guix graph} essayera d'obtenir les informations sur les dépendances | ||
| 9822 | à travers les substituts. | ||
| 9823 | |||
| 9824 | Vous pouvez aussi passer un nom de fichier du dépôt plutôt qu'un nom de | ||
| 9825 | paquet. Par exemple, la commande ci-dessous produit le graphe des | ||
| 9826 | références de votre profile (qui peut être gros !) : | ||
| 9827 | |||
| 9828 | @example | ||
| 9829 | guix graph -t references `readlink -f ~/.guix-profile` | ||
| 9830 | @end example | ||
| 9831 | |||
| 9832 | @item referrers | ||
| 9833 | C'est le graphe des @dfn{référents} d'un élément du dépôt, tels que renvoyés | ||
| 9834 | par @command{guix gc --referrers} (@pxref{Invoquer guix gc}). | ||
| 9835 | |||
| 9836 | Cela repose exclusivement sur les informations de votre dépôt. Par exemple, | ||
| 9837 | supposons que Inkscape est actuellement disponible dans 10 profils sur votre | ||
| 9838 | machine ; @command{guix graph -t referrers inkscape} montrera le graphe dont | ||
| 9839 | la racine est Inkscape avec 10 profils qui y sont liés. | ||
| 9840 | |||
| 9841 | Cela peut aider à déterminer ce qui empêche un élément du dépôt d'être | ||
| 9842 | glané. | ||
| 9843 | |||
| 9844 | @end table | ||
| 9845 | |||
| 9846 | Les options disponibles sont les suivante : | ||
| 9847 | |||
| 9848 | @table @option | ||
| 9849 | @item --type=@var{type} | ||
| 9850 | @itemx -t @var{type} | ||
| 9851 | Produit un graphe en sortie de type @var{type} où @var{type} doit être l'un | ||
| 9852 | des types au-dessus. | ||
| 9853 | |||
| 9854 | @item --list-types | ||
| 9855 | Liste les types de graphes supportés. | ||
| 9856 | |||
| 9857 | @item --backend=@var{moteur} | ||
| 9858 | @itemx -b @var{moteur} | ||
| 9859 | Produit un graphe avec le @var{moteur} choisi. | ||
| 9860 | |||
| 9861 | @item --list-backends | ||
| 9862 | Liste les moteurs de graphes supportés. | ||
| 9863 | |||
| 9864 | Actuellement les moteurs disponibles sont Graphviz et d3.js. | ||
| 9865 | |||
| 9866 | @item --expression=@var{expr} | ||
| 9867 | @itemx -e @var{expr} | ||
| 9868 | Considérer le paquet évalué par @var{expr}. | ||
| 9869 | |||
| 9870 | C'est utile pour précisément se référer à un paquet, comme dans cet exemple | ||
| 9871 | : | ||
| 9872 | |||
| 9873 | @example | ||
| 9874 | guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)' | ||
| 9875 | @end example | ||
| 9876 | |||
| 9877 | @item --system=@var{système} | ||
| 9878 | @itemx -s @var{système} | ||
| 9879 | Affiche le graphe pour @var{système} — p.@: ex.@: @code{i686-linux}. | ||
| 9880 | |||
| 9881 | Le graphe de dépendance des paquets est la plupart du temps indépendant de | ||
| 9882 | l'architecture, mais il y a quelques parties qui dépendent de l'architecture | ||
| 9883 | que cette option vous permet de visualiser. | ||
| 9884 | @end table | ||
| 9885 | |||
| 9886 | |||
| 9887 | |||
| 9888 | @node Invoquer guix publish | ||
| 9889 | @section Invoquer @command{guix publish} | ||
| 9890 | |||
| 9891 | @cindex @command{guix publish} | ||
| 9892 | Le but de @command{guix publish} est de vous permettre de partager | ||
| 9893 | facilement votre dépôt avec d'autres personnes qui peuvent ensuite | ||
| 9894 | l'utiliser comme serveur de substituts (@pxref{Substituts}). | ||
| 9895 | |||
| 9896 | Lorsque @command{guix publish} est lancé, il crée un serveur HTTP qui permet | ||
| 9897 | à n'importe qui avec un accès réseau d'y récupérer des substituts. Cela | ||
| 9898 | signifie que toutes les machines qui font tourner Guix peuvent aussi agir | ||
| 9899 | comme une ferme de construction, puisque l'interface HTTP est compatible | ||
| 9900 | avec Hydra, le logiciel derrière la ferme de construction | ||
| 9901 | @code{@value{SUBSTITUTE-SERVER}}. | ||
| 9902 | |||
| 9903 | Pour des raisons de sécurité, chaque substitut est signé, ce qui permet aux | ||
| 9904 | destinataires de vérifier leur authenticité et leur intégrité | ||
| 9905 | (@pxref{Substituts}). Comme @command{guix publish} utilise la clef de | ||
| 9906 | signature du système, qui n'est lisible que par l'administrateur système, il | ||
| 9907 | doit être lancé en root ; l'option @code{--user} lui fait baisser ses | ||
| 9908 | privilèges le plus tôt possible. | ||
| 9909 | |||
| 9910 | La pair de clefs pour les signatures doit être générée avant de lancer | ||
| 9911 | @command{guix publish}, avec @command{guix archive --generate-key} | ||
| 9912 | (@pxref{Invoquer guix archive}). | ||
| 9913 | |||
| 9914 | La syntaxe générale est : | ||
| 9915 | |||
| 9916 | @example | ||
| 9917 | guix publish @var{options}@dots{} | ||
| 9918 | @end example | ||
| 9919 | |||
| 9920 | Lancer @command{guix publish} sans arguments supplémentaires lancera un | ||
| 9921 | serveur HTTP sur le port 8080 : | ||
| 9922 | |||
| 9923 | @example | ||
| 9924 | guix publish | ||
| 9925 | @end example | ||
| 9926 | |||
| 9927 | Une fois qu'un serveur de publication a été autorisé (@pxref{Invoquer guix archive}), le démon peut télécharger des substituts à partir de lui : | ||
| 9928 | |||
| 9929 | @example | ||
| 9930 | guix-daemon --substitute-urls=http://example.org:8080 | ||
| 9931 | @end example | ||
| 9932 | |||
| 9933 | Par défaut, @command{guix publish} compresse les archives à la volée quand | ||
| 9934 | il les sert. Ce mode « à la volée » est pratique puisqu'il ne demande | ||
| 9935 | aucune configuration et est disponible immédiatement. Cependant, lorsqu'il | ||
| 9936 | s'agit de servir beaucoup de clients, nous recommandons d'utiliser l'option | ||
| 9937 | @option{--cache}, qui active le cache des archives avant de les envoyer aux | ||
| 9938 | clients — voir les détails plus bas. La commande @command{guix weather} | ||
| 9939 | fournit un manière pratique de vérifier ce qu'un serveur fournit | ||
| 9940 | (@pxref{Invoquer guix weather}). | ||
| 9941 | |||
| 9942 | En bonus, @command{guix publish} sert aussi un miroir adressé par le contenu | ||
| 9943 | des fichiers source référencées dans les enregistrements @code{origin} | ||
| 9944 | (@pxref{Référence des origines}). Par exemple, en supposant que @command{guix | ||
| 9945 | publish} tourne sur @code{example.org}, l'URL suivante renverra le fichier | ||
| 9946 | brut @file{hello-2.10.tar.gz} avec le hash SHA256 donné (représenté sous le | ||
| 9947 | format @code{nix-base32}, @pxref{Invoquer guix hash}) : | ||
| 9948 | |||
| 9949 | @example | ||
| 9950 | http://example.org/file/hello-2.10.tar.gz/sha256/0ssi1@dots{}ndq1i | ||
| 9951 | @end example | ||
| 9952 | |||
| 9953 | Évidemment, ces URL ne fonctionnent que pour des fichiers dans le dépôt ; | ||
| 9954 | dans les autres cas, elles renvoie une erreur 404 (« Introuvable »). | ||
| 9955 | |||
| 9956 | @cindex journaux de construction, publication | ||
| 9957 | Les journaux de construction sont disponibles à partir des URL @code{/log} | ||
| 9958 | comme ceci : | ||
| 9959 | |||
| 9960 | @example | ||
| 9961 | http://example.org/log/gwspk@dots{}-guile-2.2.3 | ||
| 9962 | @end example | ||
| 9963 | |||
| 9964 | @noindent | ||
| 9965 | Lorsque @command{guix-daemon} est configuré pour sauvegarder les journaux de | ||
| 9966 | 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, | ||
| 9967 | avec un en-tête @code{Content-Type} ou @code{Content-Encoding} approprié. | ||
| 9968 | Nous recommandons de lancer @command{guix-daemon} avec | ||
| 9969 | @code{--log-compression=gzip} parce que les navigateurs web les | ||
| 9970 | décompressent automatiquement, ce qui n'est pas le cas avec la compression | ||
| 9971 | bzip2. | ||
| 9972 | |||
| 9973 | Les options suivantes sont disponibles : | ||
| 9974 | |||
| 9975 | @table @code | ||
| 9976 | @item --port=@var{port} | ||
| 9977 | @itemx -p @var{port} | ||
| 9978 | Écoute les requêtes HTTP sur le @var{port} | ||
| 9979 | |||
| 9980 | @item --listen=@var{hôte} | ||
| 9981 | Écoute sur l'interface réseau de @var{hôte}. Par défaut, la commande | ||
| 9982 | accepte les connexions de n'importe quelle interface. | ||
| 9983 | |||
| 9984 | @item --user=@var{utilisateur} | ||
| 9985 | @itemx -u @var{utilisateur} | ||
| 9986 | Charge les privilèges de @var{utilisateur} le plus vite possible — | ||
| 9987 | c.-à-d. une fois que la socket du serveur est ouverte et que la clef de | ||
| 9988 | signature a été lue. | ||
| 9989 | |||
| 9990 | @item --compression[=@var{niveau}] | ||
| 9991 | @itemx -C [@var{niveau}] | ||
| 9992 | Compresse les données au @var{niveau} donné. Lorsque le @var{niveau} est | ||
| 9993 | zéro, désactive la compression. L'intervalle 1 à 9 correspond aux | ||
| 9994 | différents niveaux de compression gzip : 1 est le plus rapide et 9 est la | ||
| 9995 | meilleure (mais gourmande en CPU). Le niveau par défaut est 3. | ||
| 9996 | |||
| 9997 | À moins que @option{--cache} ne soit utilisé, la compression se fait à la | ||
| 9998 | volée et les flux compressés ne sont pas cachés. Ainsi, pour réduire la | ||
| 9999 | charge sur la machine qui fait tourner @command{guix publish}, c'est une | ||
| 10000 | bonne idée de choisir un niveau de compression faible, de lancer | ||
| 10001 | @command{guix publish} derrière un serveur de cache ou d'utiliser | ||
| 10002 | @option{--cache}. Utilise @option{--cache} a l'avantage qu'il permet à | ||
| 10003 | @command{guix publish} d'ajouter l'en-tête HTTP @code{Content-Length} à sa | ||
| 10004 | réponse. | ||
| 10005 | |||
| 10006 | @item --cache=@var{répertoire} | ||
| 10007 | @itemx -c @var{répertoire} | ||
| 10008 | Cache les archives et les métadonnées (les URL @code{.narinfo}) dans | ||
| 10009 | @var{répertoire} et ne sert que les archives dans ce cache. | ||
| 10010 | |||
| 10011 | Lorsque cette option est omise, les archives et les métadonnées sont crées à | ||
| 10012 | la volée. Cela réduit la bande passante disponible, surtout quand la | ||
| 10013 | compression est activée puisqu'elle pourrait être limitée par le CPU. Un | ||
| 10014 | autre inconvénient au mode par défaut est que la taille des archives n'est | ||
| 10015 | pas connue à l'avance, donc @command{guix publish} n'ajoute pas l'en-tête | ||
| 10016 | @code{Content-Length} à ses réponses, ce qui empêche les clients de savoir | ||
| 10017 | la quantité de données à télécharger. | ||
| 10018 | |||
| 10019 | À l'inverse, lorsque @option{--cache} est utilisée, la première requête pour | ||
| 10020 | un élément du dépôt (via une URL @code{.narinfo}) renvoie une erreur 404 et | ||
| 10021 | déclenche la création de l'archive — en calculant son @code{.narinfo} et en | ||
| 10022 | compressant l'archive au besoin. Une fois l'archive cachée dans | ||
| 10023 | @var{répertoire}, les requêtes suivantes réussissent et sont servies | ||
| 10024 | directement depuis le cache, ce qui garanti que les clients ont la meilleure | ||
| 10025 | bande passante possible. | ||
| 10026 | |||
| 10027 | Le processus de création est effectué par des threads de travail. Par | ||
| 10028 | défaut, un thread par cœur du CPU est créé, mais cela peut être | ||
| 10029 | personnalisé. Voir @option{--workers} plus bas. | ||
| 10030 | |||
| 10031 | Lorsque l'option @option{--ttl} est utilisée, les entrées cachées sont | ||
| 10032 | automatiquement supprimées lorsqu'elles expirent. | ||
| 10033 | |||
| 10034 | @item --workers=@var{N} | ||
| 10035 | Lorsque @option{--cache} est utilisée, demande l'allocation de @var{N} | ||
| 10036 | thread de travail pour créer les archives. | ||
| 10037 | |||
| 10038 | @item --ttl=@var{ttl} | ||
| 10039 | Produit des en-têtes HTTP @code{Cache-Control} qui expriment une durée de | ||
| 10040 | vie (TTL) de @var{ttl}. @var{ttl} peut dénoter une durée : @code{5d} | ||
| 10041 | signifie 5 jours, @code{1m} signifie un mois, etc. | ||
| 10042 | |||
| 10043 | Cela permet au Guix de l'utilisateur de garder les informations en cache | ||
| 10044 | pendant @var{ttl}. Cependant, remarquez que @code{guix publish} ne garanti | ||
| 10045 | pas lui-même que les éléments du dépôt qu'il fournit seront toujours | ||
| 10046 | disponible pendant la durée @var{ttl}. | ||
| 10047 | |||
| 10048 | En plus, lorsque @option{--cache} est utilisée, les entrées cachées qui | ||
| 10049 | n'ont pas été demandé depuis @var{ttl} et n'ont pas d'élément correspondant | ||
| 10050 | dans le dépôt peuvent être supprimées. | ||
| 10051 | |||
| 10052 | @item --nar-path=@var{chemin} | ||
| 10053 | Utilise @var{chemin} comme préfixe des URL de fichier « nar » | ||
| 10054 | (@pxref{Invoquer guix archive, normalized archives}). | ||
| 10055 | |||
| 10056 | Par défaut, les nars sont présents à l'URL comme | ||
| 10057 | @code{/nar/gzip/@dots{}-coreutils-8.25}. Cette option vous permet de | ||
| 10058 | changer la partie @code{/nar} en @var{chemin}. | ||
| 10059 | |||
| 10060 | @item --public-key=@var{fichier} | ||
| 10061 | @itemx --private-key=@var{fichier} | ||
| 10062 | Utilise les @var{fichier}s spécifiques comme pair de clefs utilisées pour | ||
| 10063 | signer les éléments avant de les publier. | ||
| 10064 | |||
| 10065 | Les fichiers doivent correspondre à la même pair de clefs (la clef privée | ||
| 10066 | est utilisée pour signer et la clef publique est seulement ajouté aux | ||
| 10067 | métadonnées de la signature). Ils doivent contenir les clefs dans le format | ||
| 10068 | s-expression canonique produit par @command{guix archive --generate-key} | ||
| 10069 | (@pxref{Invoquer guix archive}). Par défaut, | ||
| 10070 | @file{/etc/guix/signing-key.pub} et @file{/etc/guix/signing-key.sec} sont | ||
| 10071 | utilisés. | ||
| 10072 | |||
| 10073 | @item --repl[=@var{port}] | ||
| 10074 | @itemx -r [@var{port}] | ||
| 10075 | Crée un serveur REPL Guile (@pxref{REPL Servers,,, guile, GNU Guile | ||
| 10076 | Reference Manual}) sur @var{pport} (37146 par défaut). C'est surtout utile | ||
| 10077 | pour déboguer un serveur @command{guix publish} qui tourne. | ||
| 10078 | @end table | ||
| 10079 | |||
| 10080 | Activer @command{guix publish} sur un système Guix est vraiment une seule | ||
| 10081 | ligne : instanciez simplement un service @code{guix-publish-service-type} | ||
| 10082 | dans le champs @code{services} de votre déclaration @code{operating-system} | ||
| 10083 | (@pxref{guix-publish-service-type, @code{guix-publish-service-type}}). | ||
| 10084 | |||
| 10085 | Si vous avez installé Guix sur une « distro externe », suivez ces | ||
| 10086 | instructions : | ||
| 10087 | |||
| 10088 | @itemize | ||
| 10089 | @item | ||
| 10090 | Si votre distro hôte utilise le système d'init systemd : | ||
| 10091 | |||
| 10092 | @example | ||
| 10093 | # ln -s ~root/.guix-profile/lib/systemd/system/guix-publish.service \ | ||
| 10094 | /etc/systemd/system/ | ||
| 10095 | # systemctl start guix-publish && systemctl enable guix-publish | ||
| 10096 | @end example | ||
| 10097 | |||
| 10098 | @item | ||
| 10099 | Si votre distribution hôte utilise le système d'initialisation Upstart : | ||
| 10100 | |||
| 10101 | @example | ||
| 10102 | # ln -s ~root/.guix-profile/lib/upstart/system/guix-publish.conf /etc/init/ | ||
| 10103 | # start guix-publish | ||
| 10104 | @end example | ||
| 10105 | |||
| 10106 | @item | ||
| 10107 | Sinon, procédez de manière similaire avec votre système d'init de votre | ||
| 10108 | distro. | ||
| 10109 | @end itemize | ||
| 10110 | |||
| 10111 | @node Invoquer guix challenge | ||
| 10112 | @section Invoquer @command{guix challenge} | ||
| 10113 | |||
| 10114 | @cindex constructions reproductibles | ||
| 10115 | @cindex constructions vérifiables | ||
| 10116 | @cindex @command{guix challenge} | ||
| 10117 | @cindex défi | ||
| 10118 | Est-ce que les binaires fournis par ce serveur correspondent réellement au | ||
| 10119 | code source qu'il dit avoir construit ? Est-ce que le processus de | ||
| 10120 | construction d'un paquet est déterministe ? Ce sont les question auxquelles | ||
| 10121 | la commande @command{guix challenge} essaye de répondre. | ||
| 10122 | |||
| 10123 | La première question est évidemment importante : avant d'utiliser un serveur | ||
| 10124 | de substituts (@pxref{Substituts}), il vaut mieux @emph{vérifier} qu'il | ||
| 10125 | fournit les bons binaires et donc le @emph{défier}. La deuxième est ce qui | ||
| 10126 | permet la première : si les constructions des paquets sont déterministes | ||
| 10127 | alors des constructions indépendantes du paquet devraient donner le même | ||
| 10128 | résultat, bit à bit ; si un serveur fournit un binaire différent de celui | ||
| 10129 | obtenu localement, il peut être soit corrompu, soit malveillant. | ||
| 10130 | |||
| 10131 | On sait que le hash qui apparaît dans @file{/gnu/store} est le hash de | ||
| 10132 | toutes les entrées du processus qui construit le fichier ou le répertoire — | ||
| 10133 | les compilateurs, les bibliothèques, les scripts de construction, | ||
| 10134 | etc. (@pxref{Introduction}). En supposant que les processus de construction | ||
| 10135 | sont déterministes, un nom de fichier dans le dépôt devrait correspondre | ||
| 10136 | exactement à une sortie de construction. @command{guix challenge} vérifie | ||
| 10137 | si il y a bien effectivement une seule correspondance en comparant les | ||
| 10138 | sorties de plusieurs constructions indépendantes d'un élément du dépôt | ||
| 10139 | donné. | ||
| 10140 | |||
| 10141 | La sortie de la commande ressemble à : | ||
| 10142 | |||
| 10143 | @smallexample | ||
| 10144 | $ guix challenge --substitute-urls="https://@value{SUBSTITUTE-SERVER} https://guix.example.org" | ||
| 10145 | mise à jour de la liste des substituts depuis 'https://@value{SUBSTITUTE-SERVER}'... 100.0% | ||
| 10146 | mise à jour de la liste des substituts depuis 'https://guix.example.org'... 100.0% | ||
| 10147 | le contenu de /gnu/store/@dots{}-openssl-1.0.2d diffère : | ||
| 10148 | empreinte locale : 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q | ||
| 10149 | https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-openssl-1.0.2d : 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q | ||
| 10150 | https://guix.example.org/nar/@dots{}-openssl-1.0.2d : 1zy4fmaaqcnjrzzajkdn3f5gmjk754b43qkq47llbyak9z0qjyim | ||
| 10151 | le contenu de /gnu/store/@dots{}-git-2.5.0 diffère : | ||
| 10152 | empreinte locale : 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha | ||
| 10153 | https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0 : 069nb85bv4d4a6slrwjdy8v1cn4cwspm3kdbmyb81d6zckj3nq9f | ||
| 10154 | https://guix.example.org/nar/@dots{}-git-2.5.0 : 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73 | ||
| 10155 | le contenu de /gnu/store/@dots{}-pius-2.1.1 diffère : | ||
| 10156 | empreinte locale : 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax | ||
| 10157 | https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-pius-2.1.1 : 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax | ||
| 10158 | https://guix.example.org/nar/@dots{}-pius-2.1.1 : 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs | ||
| 10159 | |||
| 10160 | @dots{} | ||
| 10161 | |||
| 10162 | 6,406 éléments du dépôt ont été analysés : | ||
| 10163 | - 4,749 (74.1%) étaient identiques | ||
| 10164 | - 525 (8.2%) étaient différents | ||
| 10165 | - 1,132 (17.7%) étaient impossibles à évaluer | ||
| 10166 | @end smallexample | ||
| 10167 | |||
| 10168 | @noindent | ||
| 10169 | Dans cet exemple, @command{guix challenge} scanne d'abord le dépôt pour | ||
| 10170 | déterminer l'ensemble des dérivations construites localement — en opposition | ||
| 10171 | aux éléments qui ont été téléchargées depuis un serveur de substituts — puis | ||
| 10172 | demande leur avis à tous les serveurs de substituts. Il rapporte ensuite | ||
| 10173 | les éléments du dépôt pour lesquels les serveurs ont obtenu un résultat | ||
| 10174 | différent de la construction locale. | ||
| 10175 | |||
| 10176 | @cindex non-déterminisme, dans les constructions des paquets | ||
| 10177 | Dans l'exemple, @code{guix.example.org} obtient toujours une réponse | ||
| 10178 | différente. Inversement, @code{@value{SUBSTITUTE-SERVER}} est d'accord avec | ||
| 10179 | les constructions locale, sauf dans le cas de Git. Cela peut indiquer que | ||
| 10180 | le processus de construction de Git est non-déterministe, ce qui signifie | ||
| 10181 | que sa sortie diffère en fonction de divers choses que Guix ne contrôle pas | ||
| 10182 | parfaitement, malgré l'isolation des constructions (@pxref{Fonctionnalités}). Les | ||
| 10183 | sources les plus communes de non-déterminisme comprennent l'ajout | ||
| 10184 | d'horodatage dans les résultats des constructions, l'inclusion de nombres | ||
| 10185 | aléatoires et des listes de fichiers ordonnés par numéro d'inœud. Voir | ||
| 10186 | @uref{https://reproducible-builds.org/docs/}, pour plus d'informations. | ||
| 10187 | |||
| 10188 | Pour trouver ce qui ne va pas avec le binaire de Git, on peut faire quelque | ||
| 10189 | chose comme cela (@pxref{Invoquer guix archive}) : | ||
| 10190 | |||
| 10191 | @example | ||
| 10192 | $ wget -q -O - https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0 \ | ||
| 10193 | | guix archive -x /tmp/git | ||
| 10194 | $ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git | ||
| 10195 | @end example | ||
| 10196 | |||
| 10197 | Cette commande montre les différences entre les fichiers qui résultent de la | ||
| 10198 | construction locale et des fichiers qui résultent de la construction sur | ||
| 10199 | @code{@value{SUBSTITUTE-SERVER}} (@pxref{Overview, Comparing and Merging | ||
| 10200 | Files,, diffutils, Comparing and Merging Files}). La commande | ||
| 10201 | @command{diff} fonctionne bien avec des fichiers texte. Lorsque des | ||
| 10202 | fichiers binaires diffèrent cependant, @uref{https://diffoscope.org/, | ||
| 10203 | Diffoscope} est une meilleure option. C'est un outil qui aide à visualiser | ||
| 10204 | les différences entre toute sorte de fichiers. | ||
| 10205 | |||
| 10206 | Une fois que vous avez fait ce travail, vous pourrez dire si les différences | ||
| 10207 | sont dues au non-déterminisme du processus de construction ou à la | ||
| 10208 | malhonnêteté du serveur. Nous avons fait beaucoup d'effort pour éliminer | ||
| 10209 | les sources de non-déterminisme dans les paquets pour rendre plus facile la | ||
| 10210 | vérification des substituts, mais bien sûr, c'est un processus qui | ||
| 10211 | n'implique pas que Guix, mais une grande partie de la communauté des | ||
| 10212 | logiciels libres. Pendant ce temps, @command{guix challenge} est un outil | ||
| 10213 | pour aider à corriger le problème. | ||
| 10214 | |||
| 10215 | Si vous écrivez un paquet pour Guix, nous vous encourageons à vérifier si | ||
| 10216 | @code{@value{SUBSTITUTE-SERVER}} et d'autres serveurs de substituts | ||
| 10217 | obtiennent le même résultat que vous avec : | ||
| 10218 | |||
| 10219 | @example | ||
| 10220 | $ guix challenge @var{paquet} | ||
| 10221 | @end example | ||
| 10222 | |||
| 10223 | @noindent | ||
| 10224 | où @var{paquet} est une spécification de paquet comme @code{guile@@2.0} ou | ||
| 10225 | @code{glibc:debug}. | ||
| 10226 | |||
| 10227 | La syntaxe générale est : | ||
| 10228 | |||
| 10229 | @example | ||
| 10230 | guix challenge @var{options} [@var{paquets}@dots{}] | ||
| 10231 | @end example | ||
| 10232 | |||
| 10233 | Lorsqu'une différence est trouvée entre l'empreinte d'un élément construit | ||
| 10234 | localement et celle d'un substitut fournit par un serveur, ou parmi les | ||
| 10235 | substituts fournis par différents serveurs, la commande l'affiche comme dans | ||
| 10236 | l'exemple ci-dessus et sa valeur de sortie est 2 (les autres valeurs | ||
| 10237 | différentes de 0 indiquent d'autres sortes d'erreurs). | ||
| 10238 | |||
| 10239 | L'option qui compte est : | ||
| 10240 | |||
| 10241 | @table @code | ||
| 10242 | |||
| 10243 | @item --substitute-urls=@var{urls} | ||
| 10244 | Considère @var{urls} comme la liste des URL des sources de substituts | ||
| 10245 | séparés par des espaces avec lesquels comparer les paquets locaux. | ||
| 10246 | |||
| 10247 | @item --verbose | ||
| 10248 | @itemx -v | ||
| 10249 | Montre des détails sur les correspondances (contenu identique) en plus des | ||
| 10250 | informations sur différences. | ||
| 10251 | |||
| 10252 | @end table | ||
| 10253 | |||
| 10254 | @node Invoquer guix copy | ||
| 10255 | @section Invoquer @command{guix copy} | ||
| 10256 | |||
| 10257 | @cindex copier des éléments du dépôt par SSH | ||
| 10258 | @cindex SSH, copie d'éléments du dépôt | ||
| 10259 | @cindex partager des éléments du dépôt entre plusieurs machines | ||
| 10260 | @cindex transférer des éléments du dépôt entre plusieurs machines | ||
| 10261 | La commande @command{guix copy} copie des éléments du dépôt d'une machine | ||
| 10262 | vers le dépôt d'une autre machine à travers une connexion SSH@footnote{Cette | ||
| 10263 | commande n'est disponible que si Guile-SSH est trouvé. @xref{Prérequis}, | ||
| 10264 | pour des détails}. Par exemple, la commande suivante copie le paquet | ||
| 10265 | @code{coreutils}, le profil utilisateur et toutes leurs dépendances sur | ||
| 10266 | @var{hôte}, en tant qu'utilisateur @var{utilisateur} : | ||
| 10267 | |||
| 10268 | @example | ||
| 10269 | guix copy --to=@var{utilisateur}@@@var{hôte} \ | ||
| 10270 | coreutils `readlink -f ~/.guix-profile` | ||
| 10271 | @end example | ||
| 10272 | |||
| 10273 | Si certains éléments à copier sont déjà présents sur @var{hôte}, ils ne sont | ||
| 10274 | pas envoyés. | ||
| 10275 | |||
| 10276 | La commande ci-dessous récupère @code{libreoffice} et @code{gimp} depuis | ||
| 10277 | @var{hôte}, en supposant qu'ils y sont présents : | ||
| 10278 | |||
| 10279 | @example | ||
| 10280 | guix copy --from=@var{hôte} libreoffice gimp | ||
| 10281 | @end example | ||
| 10282 | |||
| 10283 | La connexion SSH est établie avec le client Guile-SSH, qui set compatible | ||
| 10284 | avec OpenSSH : il honore @file{~/.ssh/known_hosts} et @file{~/.ssh/config} | ||
| 10285 | et utilise l'agent SSH pour l'authentification. | ||
| 10286 | |||
| 10287 | La clef utilisée pour signer les éléments qui sont envoyés doit être | ||
| 10288 | acceptée par la machine distante. De même, la clef utilisée pour la machine | ||
| 10289 | distante depuis laquelle vous récupérez des éléments doit être dans | ||
| 10290 | @file{/etc/guix/acl} pour qu'ils soient acceptés par votre propre démon. | ||
| 10291 | @xref{Invoquer guix archive}, pour plus d'informations sur | ||
| 10292 | l'authentification des éléments du dépôt. | ||
| 10293 | |||
| 10294 | La syntaxe générale est : | ||
| 10295 | |||
| 10296 | @example | ||
| 10297 | guix copy [--to=@var{spec}|--from=@var{spec}] @var{items}@dots{} | ||
| 10298 | @end example | ||
| 10299 | |||
| 10300 | Vous devez toujours spécifier l'une des options suivantes : | ||
| 10301 | |||
| 10302 | @table @code | ||
| 10303 | @item --to=@var{spec} | ||
| 10304 | @itemx --from=@var{spec} | ||
| 10305 | Spécifie l'hôte où envoyer ou d'où recevoir les éléments. @var{spec} doit | ||
| 10306 | être une spécification SSH comme @code{example.org}, | ||
| 10307 | @code{charlie@@example.org} ou @code{charlie@@example.org:2222}. | ||
| 10308 | @end table | ||
| 10309 | |||
| 10310 | L'option @var{items} peut être des noms de paquets, comme @code{gimp} ou des | ||
| 10311 | éléments du dépôt comme @file{/gnu/store/@dots{}-idutils-4.6}. | ||
| 10312 | |||
| 10313 | Lorsque vous spécifiez le nom d'un paquet à envoyer, il est d'abord | ||
| 10314 | construit au besoin, sauf si l'option @option{--dry-run} est spécifiée. Les | ||
| 10315 | options de construction communes sont supportées (@pxref{Options de construction communes}). | ||
| 10316 | |||
| 10317 | |||
| 10318 | @node Invoquer guix container | ||
| 10319 | @section Invoquer @command{guix container} | ||
| 10320 | @cindex conteneur | ||
| 10321 | @cindex @command{guix container} | ||
| 10322 | @quotation Remarque | ||
| 10323 | À la version @value{VERSION}, cet outil est toujours expérimental. | ||
| 10324 | L'interface est sujette à changement radicaux dans le futur. | ||
| 10325 | @end quotation | ||
| 10326 | |||
| 10327 | Le but de @command{guix container} est de manipuler des processus qui | ||
| 10328 | tournent dans un environnement séparé, connus sous le nom de « conteneur », | ||
| 10329 | typiquement créés par les commandes @command{guix environment} | ||
| 10330 | (@pxref{Invoquer guix environment}) et @command{guix system container} | ||
| 10331 | (@pxref{Invoquer guix system}). | ||
| 10332 | |||
| 10333 | La syntaxe générale est : | ||
| 10334 | |||
| 10335 | @example | ||
| 10336 | guix container @var{action} @var{options}@dots{} | ||
| 10337 | @end example | ||
| 10338 | |||
| 10339 | @var{action} spécifie les opérations à effectuer avec un conteneur, et | ||
| 10340 | @var{options} spécifie les arguments spécifiques au contexte pour l'action. | ||
| 10341 | |||
| 10342 | Les actions suivantes sont disponibles : | ||
| 10343 | |||
| 10344 | @table @code | ||
| 10345 | @item exec | ||
| 10346 | Exécute une commande dans le contexte d'un conteneur lancé. | ||
| 10347 | |||
| 10348 | La syntaxe est : | ||
| 10349 | |||
| 10350 | @example | ||
| 10351 | guix container exec @var{pid} @var{programme} @var{arguments}@dots{} | ||
| 10352 | @end example | ||
| 10353 | |||
| 10354 | @var{pid} spécifie le PID du conteneur lancé. @var{programme} spécifie le | ||
| 10355 | nom du fichier exécutable dans le système de fichiers racine du conteneur. | ||
| 10356 | @var{arguments} sont les options supplémentaires à passer à @var{programme}. | ||
| 10357 | |||
| 10358 | La commande suivante lance un shell de connexion interactif dans un | ||
| 10359 | conteneur Guix System, démarré par @command{guix system container} et dont | ||
| 10360 | le PID est 9001 : | ||
| 10361 | |||
| 10362 | @example | ||
| 10363 | guix container exec 9001 /run/current-system/profile/bin/bash --login | ||
| 10364 | @end example | ||
| 10365 | |||
| 10366 | Remarquez que @var{pid} ne peut pas être le processus parent d'un | ||
| 10367 | conteneur. Ce doit être le PID 1 du conteneur ou l'un de ses processus | ||
| 10368 | fils. | ||
| 10369 | |||
| 10370 | @end table | ||
| 10371 | |||
| 10372 | @node Invoquer guix weather | ||
| 10373 | @section Invoquer @command{guix weather} | ||
| 10374 | |||
| 10375 | Vous pouvez parfois grogner lorsque les substituts ne sont pas disponibles | ||
| 10376 | et que vous devez construire les paquets vous-même (@pxref{Substituts}). La | ||
| 10377 | commande @command{guix weather} rapporte la disponibilité des substituts sur | ||
| 10378 | les serveurs spécifiés pour que vous sachiez si vous allez raller | ||
| 10379 | aujourd'hui. Cela peut parfois être une information utile pour les | ||
| 10380 | utilisateurs, mais elle est surtout utile pour les personnes qui font | ||
| 10381 | tourner @command{guix publish} (@pxref{Invoquer guix publish}). | ||
| 10382 | |||
| 10383 | @cindex statistiques sur les substituts | ||
| 10384 | @cindex disponibilité des substituts | ||
| 10385 | @cindex substituts, disponibilité | ||
| 10386 | @cindex weather, disponibilité des substituts | ||
| 10387 | Voici un exemple : | ||
| 10388 | |||
| 10389 | @example | ||
| 10390 | $ guix weather --substitute-urls=https://guix.example.org | ||
| 10391 | calcul de 5,872 dérivations de paquets pour x86_64-linux… | ||
| 10392 | recherche de 6,128 éléments du dépôt sur https://guix.example.org… | ||
| 10393 | mise à jour de la liste des substituts depuis 'https://guix.example.org'... 100.0% | ||
| 10394 | https://guix.example.org | ||
| 10395 | 43.4% substituts disponibles (2,658 sur 6,128) | ||
| 10396 | 7,032.5 Mo de fichiers nar (compressés) | ||
| 10397 | 19,824.2 Mo sur le disque (décompressés) | ||
| 10398 | 0.030 secondes par requêtes (182.9 secondes au total) | ||
| 10399 | 33.5 requêtes par seconde | ||
| 10400 | |||
| 10401 | 9.8% (342 sur 3,470) des éléments manquants sont dans la queue | ||
| 10402 | 867 constructions dans la queue | ||
| 10403 | x86_64-linux : 518 (59.7%) | ||
| 10404 | i686-linux : 221 (25.5%) | ||
| 10405 | aarch64-linux : 128 (14.8%) | ||
| 10406 | vitesse de construction : 23.41 constructions par heure | ||
| 10407 | x86_64-linux : 11.16 constructions par heure | ||
| 10408 | i686-linux : 6.03 constructions par heure | ||
| 10409 | aarch64-linux : 6.41 constructions par heure | ||
| 10410 | @end example | ||
| 10411 | |||
| 10412 | @cindex intégration continue, statistiques | ||
| 10413 | Comme vous pouvez le voir, elle rapporte le pourcentage des paquets pour | ||
| 10414 | lesquels des substituts sont disponibles sur le serveur — indépendamment du | ||
| 10415 | fait que les substituts soient activés, et indépendamment du fait que la | ||
| 10416 | clef de signature du serveur soit autorisée. Elle rapporte aussi la taille | ||
| 10417 | des archives compressées (« nars ») fournies par le serveur, la taille des | ||
| 10418 | éléments du dépôt correspondant dans le dépôt (en supposant que la | ||
| 10419 | déduplication soit désactivée) et la vitesse du serveur. La deuxième partie | ||
| 10420 | donne des statistiques sur l'intégration continue (CI), si le serveur le | ||
| 10421 | supporte. En plus, avec l'option @option{--coverage}, @command{guix | ||
| 10422 | weather} peut lister les substituts de paquets « importants » qui font | ||
| 10423 | défaut sur le serveur (voir plus bas). | ||
| 10424 | |||
| 10425 | Pour cela, @command{guix weather} récupère par HTTP(S) les métadonnées | ||
| 10426 | (@dfn{narinfos}@ de tous les éléments du dépôts pertinents. Comme | ||
| 10427 | @command{guix challenge}, il ignore les signatures de ces substituts, ce qui | ||
| 10428 | n'est pas dangereux puisque la commande ne fait que récupérer des | ||
| 10429 | statistiques et n'installe pas ces substituts. | ||
| 10430 | |||
| 10431 | Entre autres choses, il est possible de demander des types de système | ||
| 10432 | particuliers et des ensembles de paquets particuliers. Les options | ||
| 10433 | disponibles sont listées plus bas. | ||
| 10434 | |||
| 10435 | @table @code | ||
| 10436 | @item --substitute-urls=@var{urls} | ||
| 10437 | @var{urls} est la liste des URL des serveurs de substituts séparés par des | ||
| 10438 | espaces. Lorsque cette option n'est pas renseignée, l'ensemble des serveurs | ||
| 10439 | de substituts par défaut est utilisé. | ||
| 10440 | |||
| 10441 | @item --system=@var{système} | ||
| 10442 | @itemx -s @var{système} | ||
| 10443 | Effectue des requêtes pour les substituts @var{système} — p.@: ex.@: | ||
| 10444 | @code{aarch64-linux}. Cette option peut être répétée, auquel cas | ||
| 10445 | @command{guix weather} demandera les substituts de plusieurs types de | ||
| 10446 | systèmes. | ||
| 10447 | |||
| 10448 | @item --manifest=@var{fichier} | ||
| 10449 | Plutôt que de demander des substituts pour tous les paquets, demande | ||
| 10450 | uniquement les paquets spécifiés dans @var{fichier}. @var{fichier} doit | ||
| 10451 | contenir un @dfn{manifeste} comme avec l'option @code{-m} de @command{guix | ||
| 10452 | package} (@pxref{Invoquer guix package}). | ||
| 10453 | |||
| 10454 | @item --coverage[=@var{count}] | ||
| 10455 | @itemx -c [@var{count}] | ||
| 10456 | Rapporte la couverture des substituts pour les paquets : liste les paquets | ||
| 10457 | avec au moins @var{count} autres paquets qui en dépendent (zéro par défaut) | ||
| 10458 | pour lesquels il n'y a pas de substitut. Les paquets qui en dépendent ne | ||
| 10459 | sont pas listés : si @var{b} dépend de @var{a} et que @var{a} n'a pas de | ||
| 10460 | substitut, seul @var{a} est listé, même si @var{b} n'a habituellement pas de | ||
| 10461 | substitut non plus. Le résultat ressemble à cela : | ||
| 10462 | |||
| 10463 | @example | ||
| 10464 | $ guix weather --substitute-urls=https://ci.guix.fr.info -c 10 | ||
| 10465 | calcul de 8 983 dérivations de paquets pour x86_64-linux… | ||
| 10466 | recherche de 9 343 éléments du dépôt sur https://ci.guix.fr.info… | ||
| 10467 | mise à jour des substituts depuis « https://ci.guix.fr.info »… 100,0 % | ||
| 10468 | https://ci.guix.fr.info | ||
| 10469 | 64.7 % des substituts sont disponibles (6,047 sur 9,343) | ||
| 10470 | @dots{} | ||
| 10471 | 2502 paquets ne sont pas sur « https://ci.guix.fr.info » pour « x86_64-linux », parmi lesquels : | ||
| 10472 | 58 kcoreaddons@@5.49.0 /gnu/store/@dots{}-kcoreaddons-5.49.0 | ||
| 10473 | 46 qgpgme@@1.11.1 /gnu/store/@dots{}-qgpgme-1.11.1 | ||
| 10474 | 37 perl-http-cookiejar@@0.008 /gnu/store/@dots{}-perl-http-cookiejar-0.008 | ||
| 10475 | @dots{} | ||
| 10476 | @end example | ||
| 10477 | |||
| 10478 | Ce que montre cet exemple est que @code{kcoreaddons} et probablement les 58 | ||
| 10479 | paquets qui en dépendent n'ont pas de substituts sur @code{ci.guix.fr.info} ; | ||
| 10480 | de même pour @code{qgpgme} et les 46 paquets qui en dépendent. | ||
| 10481 | |||
| 10482 | Si vous êtes un développeur de Guix, ou si vous prenez soin de cette ferme | ||
| 10483 | de construction, vous voudrez sans doute inspecter plus finement ces paquets | ||
| 10484 | : ils peuvent simplement avoir échoué à la construction. | ||
| 10485 | @end table | ||
| 10486 | |||
| 10487 | @node Invoquer guix processes | ||
| 10488 | @section Invoquer @command{guix processes} | ||
| 10489 | |||
| 10490 | La commande @command{guix processes} peut être utile pour les développeurs | ||
| 10491 | et les administrateurs systèmes, surtout sur des machines multi-utilisateurs | ||
| 10492 | et sur les fermes de construction : elle liste les sessions actuelles (les | ||
| 10493 | connexions au démon), ainsi que des informations sur les processus en | ||
| 10494 | question@footnote{Les sessions distantes, lorsque @command{guix-daemon} est | ||
| 10495 | démarré avec @option{--listen} en spécifiant un point d'entrée TCP, ne sont | ||
| 10496 | @emph{pas} listées.}. Voici un exemple des informations qu'elle renvoie : | ||
| 10497 | |||
| 10498 | @example | ||
| 10499 | $ sudo guix processes | ||
| 10500 | SessionPID: 19002 | ||
| 10501 | ClientPID: 19090 | ||
| 10502 | ClientCommand: guix environment --ad-hoc python | ||
| 10503 | |||
| 10504 | SessionPID: 19402 | ||
| 10505 | ClientPID: 19367 | ||
| 10506 | ClientCommand: guix publish -u guix-publish -p 3000 -C 9 @dots{} | ||
| 10507 | |||
| 10508 | SessionPID: 19444 | ||
| 10509 | ClientPID: 19419 | ||
| 10510 | ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{} | ||
| 10511 | LockHeld: /gnu/store/@dots{}-perl-ipc-cmd-0.96.lock | ||
| 10512 | LockHeld: /gnu/store/@dots{}-python-six-bootstrap-1.11.0.lock | ||
| 10513 | LockHeld: /gnu/store/@dots{}-libjpeg-turbo-2.0.0.lock | ||
| 10514 | ChildProcess: 20495: guix offload x86_64-linux 7200 1 28800 | ||
| 10515 | ChildProcess: 27733: guix offload x86_64-linux 7200 1 28800 | ||
| 10516 | ChildProcess: 27793: guix offload x86_64-linux 7200 1 28800 | ||
| 10517 | @end example | ||
| 10518 | |||
| 10519 | Dans cet exemple, on voit que @command{guix-daemon} a trois clients directs | ||
| 10520 | : @command{guix environment}, @command{guix publish} et l'outil | ||
| 10521 | d'intégration continue Cuirass ; leur identifiant de processus (PID) est | ||
| 10522 | donné par le champ @code{ClientPID}. Le champ @code{SessionPID} fournit le | ||
| 10523 | PID du sous-processus @command{guix-daemon} de cette session particulière. | ||
| 10524 | |||
| 10525 | Les champs @code{LockHeld} montrent quels éléments du dépôt sont | ||
| 10526 | actuellement verrouillés par cette session, ce qui correspond aux éléments | ||
| 10527 | du dépôt qui sont en train d'être construits ou d'être substitués (le champ | ||
| 10528 | @code{LockHeld} n'est pas montré si @command{guix processes} n'est pas lancé | ||
| 10529 | en root). Enfin, en regardant le champ @code{ChildProcess}, on comprend que | ||
| 10530 | ces trois constructions sont déchargées (@pxref{Réglages du délestage du démon}). | ||
| 10531 | |||
| 10532 | La sortie est dans le format Recutils pour qu'on puisse utiliser la commande | ||
| 10533 | @command{recsel} pour sélectionner les sessions qui nous intéressent | ||
| 10534 | (@pxref{Selection Expressions,,, recutils, GNU recutils manual}). Par | ||
| 10535 | exemple, la commande montre la ligne de commande et le PID du client qui | ||
| 10536 | effectue la construction d'un paquet Perl : | ||
| 10537 | |||
| 10538 | @example | ||
| 10539 | $ sudo guix processes | \ | ||
| 10540 | recsel -p ClientPID,ClientCommand -e 'LockHeld ~ "perl"' | ||
| 10541 | ClientPID: 19419 | ||
| 10542 | ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{} | ||
| 10543 | @end example | ||
| 10544 | |||
| 10545 | |||
| 10546 | @node Configuration système | ||
| 10547 | @chapter Configuration système | ||
| 10548 | |||
| 10549 | @cindex configuration du système | ||
| 10550 | La distribution système Guix utilise un mécanisme de configuration du | ||
| 10551 | système cohérent. On veut dire par là que tous les aspects de la | ||
| 10552 | configuration globale du système — comme la disponibilité des services | ||
| 10553 | système, des fuseaux horaires, des paramètres linguistiques, des comptes | ||
| 10554 | utilisateurs — sont déclarés à un seul endroit. Une telle | ||
| 10555 | @dfn{configuration système} peut être @dfn{instanciée}, c'est-à-dire entrer | ||
| 10556 | en vigueur. | ||
| 10557 | |||
| 10558 | @c Yes, we're talking of Puppet, Chef, & co. here. ↑ | ||
| 10559 | L'un des avantages de placer toute la configuration du système sous le | ||
| 10560 | contrôle de Guix est de permettre les mises à jour transactionnelles du | ||
| 10561 | système ce qui rend possible le fait de revenir en arrière à une | ||
| 10562 | instanciation précédent du système, si quelque chose se passait mal avec le | ||
| 10563 | nouveau (@pxref{Fonctionnalités}). Un autre avantage est de rendre facile la | ||
| 10564 | réplication de la même configuration sur plusieurs machines différentes ou à | ||
| 10565 | différents moments dans le temps, sans avoir à recourir à des outils | ||
| 10566 | d'administrations supplémentaires au-dessus des outils du système. | ||
| 10567 | |||
| 10568 | Cette section décrit ce mécanisme. Tout d'abord nous nous concentrons sur | ||
| 10569 | le point de vue de l'administrateur système en expliquant comment le système | ||
| 10570 | est configuré et instancié. Ensuite nous montrons comment ce mécanisme peut | ||
| 10571 | être étendu, par exemple pour supporter de nouveaux services systèmes. | ||
| 10572 | |||
| 10573 | @menu | ||
| 10574 | * Utiliser le système de configuration:: Personnaliser votre système | ||
| 10575 | GNU@. | ||
| 10576 | * Référence de système d'exploitation:: Détail sur la déclaration de | ||
| 10577 | système d'exploitation. | ||
| 10578 | * Systèmes de fichiers:: Configurer les montages de systèmes de | ||
| 10579 | fichiers. | ||
| 10580 | * Périphériques mappés:: Gestion des périphériques de bloc. | ||
| 10581 | * Comptes utilisateurs:: Spécifier des comptes utilisateurs. | ||
| 10582 | * Disposition du clavier:: La manière dont le système interprète les | ||
| 10583 | touches du clavier. | ||
| 10584 | * Régionalisation:: Paramétrer la langue et les conventions | ||
| 10585 | culturelles. | ||
| 10586 | * Services:: Spécifier les services du système. | ||
| 10587 | * Programmes setuid:: Programmes tournant avec les privilèges root. | ||
| 10588 | * Certificats X.509:: Authentifier les serveurs HTTPS@. | ||
| 10589 | * Name Service Switch:: Configurer le « name service switch » de la | ||
| 10590 | libc. | ||
| 10591 | * Disque de RAM initial:: Démarrage de Linux-Libre. | ||
| 10592 | * Configuration du chargeur d'amorçage:: Configurer le chargeur | ||
| 10593 | d'amorçage. | ||
| 10594 | * Invoquer guix system:: Instantier une configuration du système. | ||
| 10595 | * Lancer Guix dans une VM:: Comment lancer Guix dans une machine virtuelle. | ||
| 10596 | * Définir des services:: Ajouter de nouvelles définitions de services. | ||
| 10597 | @end menu | ||
| 10598 | |||
| 10599 | @node Utiliser le système de configuration | ||
| 10600 | @section Utiliser le système de configuration | ||
| 10601 | |||
| 10602 | Le système d'exploitation est configuré en fournissant une déclaration | ||
| 10603 | @code{operating-system} dans un fichier qui peut être passé à la command | ||
| 10604 | @command{guix system} (@pxref{Invoquer guix system}). Une configuration | ||
| 10605 | simple, avec les services systèmes par défaut, le noyau Linux-Libre par | ||
| 10606 | défaut, un disque de RAM initial et un chargeur d'amorçage ressemble à ceci | ||
| 10607 | : | ||
| 10608 | |||
| 10609 | @findex operating-system | ||
| 10610 | @lisp | ||
| 10611 | @include os-config-bare-bones.texi | ||
| 10612 | @end lisp | ||
| 10613 | |||
| 10614 | Cet exemple devrait se comprendre de lui-même. Certains champs définis | ||
| 10615 | ci-dessus, comme @code{host-name} et @code{bootloader} sont obligatoires. | ||
| 10616 | D'autres comme @code{packages} et @code{services} peuvent être omis auquel | ||
| 10617 | cas ils ont une valeur par défaut. | ||
| 10618 | |||
| 10619 | Ci-dessous nous discutons des effets de certains des champs les plus | ||
| 10620 | importants (@pxref{Référence de système d'exploitation}, pour des détails sur tous | ||
| 10621 | les champs disponibles) et comment @dfn{instancier} le système | ||
| 10622 | d'exploitation avec @command{guix system}. | ||
| 10623 | |||
| 10624 | @unnumberedsubsec Bootloader | ||
| 10625 | |||
| 10626 | @cindex ancien système de démarrage, sur les machines Intel | ||
| 10627 | @cindex démarrage BIOS, sur les machines Intel | ||
| 10628 | @cindex démarrage UEFI | ||
| 10629 | @cindex démarrage EFI | ||
| 10630 | Le champ @code{bootloader} décrit la méthode qui sera utilisée pour démarrer | ||
| 10631 | votre système. Les machines basées sur les processeurs Intel peuvent | ||
| 10632 | démarrer dans l'ancien mode BIOS, comme dans l'exemple au-dessus. | ||
| 10633 | Cependant, les machines plus récentes s'appuient sur l'UEFI (@dfn{Unified | ||
| 10634 | Extensible Firmware Interface}) pour démarrer. Dans ce cas, le champ | ||
| 10635 | @code{bootloader} devrait contenir quelque chose comme cela : | ||
| 10636 | |||
| 10637 | @example | ||
| 10638 | (bootloader-configuration | ||
| 10639 | (bootloader grub-efi-bootloader) | ||
| 10640 | (target "/boot/efi")) | ||
| 10641 | @end example | ||
| 10642 | |||
| 10643 | @xref{Configuration du chargeur d'amorçage}, pour plus d'informations sur les options de | ||
| 10644 | configuration disponibles. | ||
| 10645 | |||
| 10646 | @unnumberedsubsec Paquets visibles sur tout le système | ||
| 10647 | |||
| 10648 | @vindex %base-packages | ||
| 10649 | Le champ @code{packages} liste les paquets qui seront visibles sur tout le | ||
| 10650 | système, pour tous les comptes utilisateurs — c.-à-d.@: dans la variable | ||
| 10651 | d'environnement @code{PATH} de tous les utilisateurs — en plus des profils | ||
| 10652 | utilisateurs (@pxref{Invoquer guix package}). La variable | ||
| 10653 | @var{%base-packages} fournit tous les outils qu'on pourrait attendre pour | ||
| 10654 | les taches de base de l'administrateur et de l'utilisateur — dont les GNU | ||
| 10655 | Core Utilities, les GNU Networking Utilities, l'éditeur de texte léger GNU | ||
| 10656 | Zile, @command{find}, @command{grep}, etc. L'exemple au-dessus ajoute | ||
| 10657 | GNU@tie{}Screen à ces paquets, récupéré depuis le module @code{(gnu packages | ||
| 10658 | screen)} (@pxref{Modules de paquets}). Vous pouvez utiliser la syntaxe | ||
| 10659 | @code{(list paquet sortie)} pour ajouter une sortie spécifique d'un paquet : | ||
| 10660 | |||
| 10661 | @lisp | ||
| 10662 | (use-modules (gnu packages)) | ||
| 10663 | (use-modules (gnu packages dns)) | ||
| 10664 | |||
| 10665 | (operating-system | ||
| 10666 | ;; ... | ||
| 10667 | (packages (cons (list bind "utils") | ||
| 10668 | %base-packages))) | ||
| 10669 | @end lisp | ||
| 10670 | |||
| 10671 | @findex specification->package | ||
| 10672 | Se référer aux paquets par le nom de leur variable, comme @code{bind} | ||
| 10673 | ci-dessus, a l'avantage d'être sans ambiguïté ; cela permet aussi de se | ||
| 10674 | rendre rapidement compte de coquilles quand on a des « variables non liées | ||
| 10675 | ». L'inconvénient est qu'on a besoin de savoir dans quel module est défini | ||
| 10676 | le paquet, et de modifier la ligne @code{use-package-modules} en | ||
| 10677 | conséquence. Pour éviter cela, on peut utiliser la procédure | ||
| 10678 | @code{specification->package} du module @code{(gnu packages)}, qui renvoie | ||
| 10679 | le meilleur paquet pour un nom donné ou un nom et une version : | ||
| 10680 | |||
| 10681 | @lisp | ||
| 10682 | (use-modules (gnu packages)) | ||
| 10683 | |||
| 10684 | (operating-system | ||
| 10685 | ;; ... | ||
| 10686 | (packages (append (map specification->package | ||
| 10687 | '("tcpdump" "htop" "gnupg@@2.0")) | ||
| 10688 | %base-packages))) | ||
| 10689 | @end lisp | ||
| 10690 | |||
| 10691 | @unnumberedsubsec Services systèmes | ||
| 10692 | |||
| 10693 | @cindex services | ||
| 10694 | @vindex %base-services | ||
| 10695 | Le champ @code{services} liste les @dfn{services système} à rendre | ||
| 10696 | disponible lorsque le système démarre (@pxref{Services}). La déclaration | ||
| 10697 | @code{operating-system} au-dessus spécifie que, en plus des services de | ||
| 10698 | base, on veut que le démon ssh OpenSSH écoute sur le port 2222 | ||
| 10699 | (@pxref{Services réseau, @code{openssh-service-type}}). Sous le capot, | ||
| 10700 | @code{openssh-service-type} s'arrange pour que @code{sshd} soit lancé avec | ||
| 10701 | les bonnes options de la ligne de commande, éventuellement en générant des | ||
| 10702 | fichiers de configuration (@pxref{Définir des services}). | ||
| 10703 | |||
| 10704 | @cindex personnalisation des services | ||
| 10705 | @findex modify-services | ||
| 10706 | Parfois, plutôt que d'utiliser les services de base tels-quels, on peut | ||
| 10707 | vouloir les personnaliser. Pour cela, utilisez @code{modify-services} | ||
| 10708 | (@pxref{Référence de service, @code{modify-services}}) pour modifier la liste. | ||
| 10709 | |||
| 10710 | Par exemple, supposons que vous souhaitiez modifier @code{guix-daemon} et | ||
| 10711 | Mingetty (l'écran de connexion en console) dans la liste | ||
| 10712 | @var{%base-services} (@pxref{Services de base, @code{%base-services}}). Pour | ||
| 10713 | cela, vous pouvez écrire ce qui suit dans votre déclaration de système | ||
| 10714 | d'exploitation : | ||
| 10715 | |||
| 10716 | @lisp | ||
| 10717 | (define %my-services | ||
| 10718 | ;; Ma propre liste de services. | ||
| 10719 | (modify-services %base-services | ||
| 10720 | (guix-service-type config => | ||
| 10721 | (guix-configuration | ||
| 10722 | (inherit config) | ||
| 10723 | (use-substitutes? #f) | ||
| 10724 | (extra-options '("--gc-keep-derivations")))) | ||
| 10725 | (mingetty-service-type config => | ||
| 10726 | (mingetty-configuration | ||
| 10727 | (inherit config))))) | ||
| 10728 | (operating-system | ||
| 10729 | ;; @dots{} | ||
| 10730 | (services %my-services)) | ||
| 10731 | @end lisp | ||
| 10732 | |||
| 10733 | Cela modifie la configuration — c.-à-d.@: les paramètres du service — de | ||
| 10734 | l'instance de @code{guix-service-type}, et de toutes les instances de | ||
| 10735 | @code{mingetty-service-type} dans la liste @var{%base-services}. Remarquez | ||
| 10736 | comment on fait cela : d'abord, on s'arrange pour que la configuration de | ||
| 10737 | départ soit liée à l'identifiant @code{config} dans @var{body} puis on écrit | ||
| 10738 | @var{body} pour qu'il s'évalue en la configuration désirée. En particulier, | ||
| 10739 | remarquez comment on utilise @code{inherit} pour créer une nouvelle | ||
| 10740 | configuration qui a les même valeurs que l'ancienne configuration, avec | ||
| 10741 | seulement quelques modifications. | ||
| 10742 | |||
| 10743 | @cindex chiffrement du disque | ||
| 10744 | La configuration pour une utilisation de « bureau » typique, avec une | ||
| 10745 | partition racine chiffrée, le serveur d'affichage X11, GNOME et Xfce (les | ||
| 10746 | utilisateurs peuvent choisir l'environnement de bureau sur l'écran de | ||
| 10747 | connexion en appuyant sur @kbd{F1}), la gestion du réseau, la gestion de | ||
| 10748 | l'énergie, et bien plus, ressemblerait à ceci : | ||
| 10749 | |||
| 10750 | @lisp | ||
| 10751 | @include os-config-desktop.texi | ||
| 10752 | @end lisp | ||
| 10753 | |||
| 10754 | Un système graphique avec un choix de gestionnaires de fenêtres légers | ||
| 10755 | plutôt que des environnement de bureaux complets ressemblerait à cela : | ||
| 10756 | |||
| 10757 | @lisp | ||
| 10758 | @include os-config-lightweight-desktop.texi | ||
| 10759 | @end lisp | ||
| 10760 | |||
| 10761 | Cet exemple se réfère au système de fichier @file{/boot/efi} par son UUID, | ||
| 10762 | @code{1234-ABCD}. Remplacez cet UUID par le bon UUID de votre système, | ||
| 10763 | renvoyé par la commande @command{blkid}. | ||
| 10764 | |||
| 10765 | @xref{Services de bureaux}, pour la liste exacte des services fournis par | ||
| 10766 | @var{%desktop-services}. @xref{Certificats X.509}, pour des informations | ||
| 10767 | sur le paquet @code{nss-certs} utilisé ici. | ||
| 10768 | |||
| 10769 | Encore une fois, @var{%desktop-services} n'est qu'une liste d'objets | ||
| 10770 | service. Si vous voulez en supprimer des services, vous pouvez le faire | ||
| 10771 | avec des procédures pour les listes (@pxref{SRFI-1 Filtering and | ||
| 10772 | Partitioning,,, guile, GNU Guile Reference Manual}). Par exemple, | ||
| 10773 | l'expression suivante renvoie une liste qui contient tous les services dans | ||
| 10774 | @var{%desktop-services} sauf le service Avahi : | ||
| 10775 | |||
| 10776 | @example | ||
| 10777 | (remove (lambda (service) | ||
| 10778 | (eq? (service-kind service) avahi-service-type)) | ||
| 10779 | %desktop-services) | ||
| 10780 | @end example | ||
| 10781 | |||
| 10782 | @unnumberedsubsec Instancier le système | ||
| 10783 | |||
| 10784 | En supposant que la déclaration @code{operating-system} est stockée dans le | ||
| 10785 | fichier @file{my-system-config.scm}, la commande @command{guix system | ||
| 10786 | reconfigure my-system-config.scm} instancie cette configuration et en fait | ||
| 10787 | l'entrée par défaut dans GRUB (@pxref{Invoquer guix system}). | ||
| 10788 | |||
| 10789 | Pour changer la configuration du système, on met normalement à jour ce | ||
| 10790 | fichier et on relance @command{guix system reconfigure}. On ne devrait | ||
| 10791 | jamais avoir à modifier de fichiers dans @file{/etc} ou à lancer des | ||
| 10792 | commandes qui modifient l'état du système comme @command{useradd} ou | ||
| 10793 | @command{grub-install}. En fait, vous devez les éviter parce que non | ||
| 10794 | seulement ça annulerait vos garanties, mais ça empêcherait aussi de revenir | ||
| 10795 | à des versions précédents du système, si vous en avez besoin. | ||
| 10796 | |||
| 10797 | @cindex revenir en arrière dans la configuration du système | ||
| 10798 | En parlant de revenir en arrière, à chaque fois que vous lancez | ||
| 10799 | @command{guix system reconfigure}, une nouvelle @dfn{génération} du système | ||
| 10800 | est crée — sans modifier ou supprimer les générations précédentes. Les | ||
| 10801 | anciennes générations du système ont une entrée dans le menu du chargeur | ||
| 10802 | d'amorçage, ce qui vous permet de démarrer dessus au cas où quelque chose se | ||
| 10803 | serait mal passé avec la dernière génération. C'est rassurant, non ? La | ||
| 10804 | commande @command{guix system list-generations} liste les générations du | ||
| 10805 | système disponibles sur le disque. Il est possible de revenir à une | ||
| 10806 | ancienne génération via les commandes @command{guix system roll-back} et | ||
| 10807 | @command{guix system switch-generation}. | ||
| 10808 | |||
| 10809 | Bien que la commande @command{guix system reconfigure} ne modifiera pas les | ||
| 10810 | générations précédentes, vous devez faire attention lorsque votre génération | ||
| 10811 | actuelle n'est pas la dernière (p.@: ex.@: après avoir invoqué @command{guix | ||
| 10812 | system roll-back}), puisque l'opération pourrait remplacer une génération | ||
| 10813 | suivante (@pxref{Invoquer guix system}). | ||
| 10814 | |||
| 10815 | @unnumberedsubsec L'interface de programmation | ||
| 10816 | |||
| 10817 | Au niveau Scheme, la grosse déclaration @code{operating-system} est | ||
| 10818 | instanciée avec la procédure monadique suivante (@pxref{La monade du dépôt}) : | ||
| 10819 | |||
| 10820 | @deffn {Procédure monadique} operating-system-derivation os | ||
| 10821 | Renvoie une dérivation qui construit @var{os}, un objet | ||
| 10822 | @code{operating-system} (@pxref{Dérivations}). | ||
| 10823 | |||
| 10824 | La sortie de la dérivation est un répertoire qui se réfère à tous les | ||
| 10825 | paquets et d'autres fichiers supports requis pour instancier @var{os}. | ||
| 10826 | @end deffn | ||
| 10827 | |||
| 10828 | Cette procédure est fournie par le module @code{(gnu system)}. Avec | ||
| 10829 | @code{(gnu services)} (@pxref{Services}), ce module contient les entrailles | ||
| 10830 | du système Guix. Ouvrez-le un jour ! | ||
| 10831 | |||
| 10832 | |||
| 10833 | @node Référence de système d'exploitation | ||
| 10834 | @section Référence de @code{operating-system} | ||
| 10835 | |||
| 10836 | Cette section résume toutes les options disponibles dans les déclarations | ||
| 10837 | @code{operating-system} (@pxref{Utiliser le système de configuration}). | ||
| 10838 | |||
| 10839 | @deftp {Type de données} operating-system | ||
| 10840 | C'est le type de données représentant une configuration d'un système | ||
| 10841 | d'exploitation. On veut dire par là toute la configuration globale du | ||
| 10842 | système, mais pas la configuration par utilisateur (@pxref{Utiliser le système de configuration}). | ||
| 10843 | |||
| 10844 | @table @asis | ||
| 10845 | @item @code{kernel} (par défaut : @var{linux-libre}) | ||
| 10846 | L'objet paquet d'un noyau de système d'exploitation à | ||
| 10847 | utiliser@footnote{Actuellement seul le noyau Linux-libre est supporté. Dans | ||
| 10848 | le futur, il sera possible d'utiliser GNU@tie{}Hurd.}. | ||
| 10849 | |||
| 10850 | @item @code{kernel-arguments} (par défaut : @code{'()}) | ||
| 10851 | Liste de chaînes ou de gexps représentant des arguments supplémentaires à | ||
| 10852 | passer sur la ligne de commande du noyau — p.@: ex.@: | ||
| 10853 | @code{("console=ttyS0")}. | ||
| 10854 | |||
| 10855 | @item @code{bootloader} | ||
| 10856 | L'objet de configuration du chargeur d'amorçage. @xref{Configuration du chargeur d'amorçage}. | ||
| 10857 | |||
| 10858 | @item @code{label} | ||
| 10859 | This is the label (a string) as it appears in the bootloader's menu entry. | ||
| 10860 | The default label includes the kernel name and version. | ||
| 10861 | |||
| 10862 | @item @code{keyboard-layout} (par défaut : @code{#f}) | ||
| 10863 | Ce champ spécifie la disposition du clavier à utiliser dans la console. Il | ||
| 10864 | peut être soit @code{#f}, auquel cas la disposition par défaut est utilisée | ||
| 10865 | (habituellement anglais américain), ou un enregistrement | ||
| 10866 | @code{<keyboard-layout>}. | ||
| 10867 | |||
| 10868 | Cette disposition du clavier est effective dès que le noyau démarre. Par | ||
| 10869 | exemple, c'est la disposition du clavier effective lorsque vous saisissez la | ||
| 10870 | phrase de passe de votre système de fichier racine sur une partition | ||
| 10871 | utilisant @code{luks-device-mapping} (@pxref{Périphériques mappés}). | ||
| 10872 | |||
| 10873 | @quotation Remarque | ||
| 10874 | Cela ne spécifie @emph{pas} la disposition clavier utilisée par le chargeur | ||
| 10875 | d'amorçage, ni celle utilisée par le serveur d'affichage graphique. | ||
| 10876 | @xref{Configuration du chargeur d'amorçage}, pour plus d'information sur la manière de | ||
| 10877 | spécifier la disposition du clavier pour le chargeur d'amorçage. @xref{Système de fenêtrage X}, pour plus d'informations sur la manière de spécifier la disposition | ||
| 10878 | du clavier utilisée par le système de fenêtrage X. | ||
| 10879 | @end quotation | ||
| 10880 | |||
| 10881 | @item @code{initrd-modules} (par défaut : @code{%base-initrd-modules}) | ||
| 10882 | @cindex initrd | ||
| 10883 | @cindex disque de RAM initial | ||
| 10884 | La liste des modules du noyau linux requis dans l'image disque de RAM | ||
| 10885 | initiale. @xref{Disque de RAM initial}. | ||
| 10886 | |||
| 10887 | @item @code{initrd} (par défaut : @code{base-initrd}) | ||
| 10888 | Une procédure qui renvoie un disque de RAM initial pour le noyau Linux. Ce | ||
| 10889 | champ est fournit pour pouvoir personnaliser son système à bas-niveau et | ||
| 10890 | n'est que rarement utile dans le cas général. @xref{Disque de RAM initial}. | ||
| 10891 | |||
| 10892 | @item @code{firmware} (par défaut : @var{%base-firmware}) | ||
| 10893 | @cindex firmware | ||
| 10894 | Liste les paquets de microgiciels chargeables pour le noyau de système | ||
| 10895 | d'exploitation. | ||
| 10896 | |||
| 10897 | La valeur par défaut contient les microgiciels requis pour les périphériques | ||
| 10898 | WiFi Atheros et Broadcom (modules @code{ath9k} et @code{b43-open} de | ||
| 10899 | Linux-libre, respectivement). @xref{Considérations matérielles}, pour plus | ||
| 10900 | d'info sur les périphériques supportés. | ||
| 10901 | |||
| 10902 | @item @code{host-name} | ||
| 10903 | Le nom d'hôte. | ||
| 10904 | |||
| 10905 | @item @code{hosts-file} | ||
| 10906 | @cindex fichier hosts | ||
| 10907 | Un objet simili-fichier (@pxref{G-Expressions, file-like objects}) à | ||
| 10908 | utiliser comme @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C | ||
| 10909 | Library Reference Manual}). La valeur par défaut est un fichier avec des | ||
| 10910 | entrées pour @code{localhost} et @var{host-name}. | ||
| 10911 | |||
| 10912 | @item @code{mapped-devices} (par défaut : @code{'()}) | ||
| 10913 | Une liste de périphériques mappés. @xref{Périphériques mappés}. | ||
| 10914 | |||
| 10915 | @item @code{file-systems} | ||
| 10916 | Une liste de systèmes de fichiers. @xref{Systèmes de fichiers}. | ||
| 10917 | |||
| 10918 | @item @code{swap-devices} (par défaut : @code{'()}) | ||
| 10919 | @cindex espaces d'échange | ||
| 10920 | Une liste de chaînes identifiant les périphériques ou les fichiers utilisé | ||
| 10921 | pour « l'espace d'échange » (@pxref{Memory Concepts,,, libc, The GNU C | ||
| 10922 | Library Reference Manual}). Par exemple, @code{'("/dev/sda3")} ou | ||
| 10923 | @code{'("/swapfile")}. Il est possible de spécifier un fichier d'échange | ||
| 10924 | sur un périphérique mappé, tant que le périphérique nécessaire et le système | ||
| 10925 | de fichiers sont aussi spécifiés. @xref{Périphériques mappés} et @ref{Systèmes de fichiers}. | ||
| 10926 | |||
| 10927 | @item @code{users} (par défaut : @code{%base-user-accounts}) | ||
| 10928 | @itemx @code{groups} (par défaut : @var{%base-groups}) | ||
| 10929 | Liste les comptes utilisateurs et les groupes. @xref{Comptes utilisateurs}. | ||
| 10930 | |||
| 10931 | Si la liste @code{users} n'a pas de compte lié à l'UID@tie{}0, un compte « | ||
| 10932 | root » avec l'UID@tie{}0 est automatiquement ajouté. | ||
| 10933 | |||
| 10934 | @item @code{skeletons} (par défaut : @code{(default-skeletons)}) | ||
| 10935 | Une liste de couples composés d'un nom de fichier cible et d'un objet | ||
| 10936 | simili-fichier (@pxref{G-Expressions, file-like objects}). Ce sont les | ||
| 10937 | fichiers squelettes qui seront ajoutés au répertoire personnel des comptes | ||
| 10938 | utilisateurs nouvellement créés. | ||
| 10939 | |||
| 10940 | Par exemple, un valeur valide ressemblerait à cela : | ||
| 10941 | |||
| 10942 | @example | ||
| 10943 | `((".bashrc" ,(plain-file "bashrc" "echo Hello\n")) | ||
| 10944 | (".guile" ,(plain-file "guile" | ||
| 10945 | "(use-modules (ice-9 readline)) | ||
| 10946 | (activate-readline)"))) | ||
| 10947 | @end example | ||
| 10948 | |||
| 10949 | @item @code{issue} (par défaut : @var{%default-issue}) | ||
| 10950 | Une chaîne qui dénote le contenu du fichier @file{/etc/issue} qui est | ||
| 10951 | affiché lorsqu'un utilisateur se connecte sur la console. | ||
| 10952 | |||
| 10953 | @item @code{packages} (par défaut : @var{%base-packages}) | ||
| 10954 | L'ensemble des paquets installés dans le profil global, qui est accessible à | ||
| 10955 | partir de @file{/run/current-system/profile}. | ||
| 10956 | |||
| 10957 | L'ensemble par défaut contient les utilitaires de base et c'est une bonne | ||
| 10958 | pratique d'installer les utilitaires non essentiels dans les profils | ||
| 10959 | utilisateurs (@pxref{Invoquer guix package}). | ||
| 10960 | |||
| 10961 | @item @code{timezone} | ||
| 10962 | Une chaîne identifiant un fuseau horaire — p.@: ex.@: @code{"Europe/Paris"}. | ||
| 10963 | |||
| 10964 | Vous pouvez lancer la commande @command{tzselect} pour trouver le fuseau | ||
| 10965 | horaire correspondant à votre région. Si vous choisissez un nom de fuseau | ||
| 10966 | horaire invalide, @command{guix system} échouera. | ||
| 10967 | |||
| 10968 | @item @code{locale} (par défaut : @code{"en_US.utf8"}) | ||
| 10969 | Le nom du paramètre régional par défaut (@pxref{Locale Names,,, libc, The | ||
| 10970 | GNU C Library Reference Manual}). @xref{Régionalisation}, pour plus d'informations. | ||
| 10971 | |||
| 10972 | @item @code{locale-definitions} (par défaut : @var{%default-locale-definitions}) | ||
| 10973 | La liste des définitions de locales à compiler et qui devraient être | ||
| 10974 | utilisées à l'exécution. @xref{Régionalisation}. | ||
| 10975 | |||
| 10976 | @item @code{locale-libcs} (par défaut : @code{(list @var{glibc})}) | ||
| 10977 | La liste des paquets GNU@tie{}libc dont les données des paramètres | ||
| 10978 | linguistiques sont utilisées pour construire les définitions des paramètres | ||
| 10979 | linguistiques. @xref{Régionalisation}, pour des considérations sur la compatibilité | ||
| 10980 | qui justifient cette option. | ||
| 10981 | |||
| 10982 | @item @code{name-service-switch} (par défaut : @var{%default-nss}) | ||
| 10983 | La configuration de NSS de la libc (name service switch) — un objet | ||
| 10984 | @code{<name-service-switch>}. @xref{Name Service Switch}, pour des détails. | ||
| 10985 | |||
| 10986 | @item @code{services} (par défaut : @var{%base-services}) | ||
| 10987 | Une liste d'objets services qui dénotent les services du système. | ||
| 10988 | @xref{Services}. | ||
| 10989 | |||
| 10990 | @cindex services essentiels | ||
| 10991 | @item @code{essential-services} (par défaut : …) | ||
| 10992 | La liste des « services essentiels » — c.-à-d.@: les services comme des | ||
| 10993 | instance de @code{system-service-type} et @code{host-name-service-type} | ||
| 10994 | (@pxref{Référence de service}), qui sont dérivés de la définition du système | ||
| 10995 | d'exploitation lui-même. En tant qu'utilisateur vous ne devriez | ||
| 10996 | @emph{jamais} toucher à ce champ. | ||
| 10997 | |||
| 10998 | @item @code{pam-services} (par défaut : @code{(base-pam-services)}) | ||
| 10999 | @cindex PAM | ||
| 11000 | @cindex pluggable authentication modules | ||
| 11001 | @c FIXME: Add xref to PAM services section. | ||
| 11002 | Services PAM (@dfn{pluggable authentication module}) Linux. | ||
| 11003 | |||
| 11004 | @item @code{setuid-programs} (par défaut : @var{%setuid-programs}) | ||
| 11005 | Liste de G-expressions qui s'évaluent en chaînes de caractères qui dénotent | ||
| 11006 | les programmes setuid. @xref{Programmes setuid}. | ||
| 11007 | |||
| 11008 | @item @code{sudoers-file} (par défaut : @var{%sudoers-specification}) | ||
| 11009 | @cindex fichier sudoers | ||
| 11010 | Le contenu du fichier @file{/etc/sudoers} comme un objet simili-fichier | ||
| 11011 | (@pxref{G-Expressions, @code{local-file} et @code{plain-file}}). | ||
| 11012 | |||
| 11013 | Ce fichier spécifier quels utilisateurs peuvent utiliser la commande | ||
| 11014 | @command{sudo}, ce qu'ils ont le droit de faire, et quels privilèges ils | ||
| 11015 | peuvent gagner. La valeur par défaut est que seul @code{root} et les | ||
| 11016 | membres du groupe @code{wheel} peuvent utiliser @code{sudo}. | ||
| 11017 | |||
| 11018 | @end table | ||
| 11019 | |||
| 11020 | @deffn {Scheme Syntax} this-operating-system | ||
| 11021 | When used in the @emph{lexical scope} of an operating system field | ||
| 11022 | definition, this identifier resolves to the operating system being defined. | ||
| 11023 | |||
| 11024 | The example below shows how to refer to the operating system being defined | ||
| 11025 | in the definition of the @code{label} field: | ||
| 11026 | |||
| 11027 | @example | ||
| 11028 | (use-modules (gnu) (guix)) | ||
| 11029 | |||
| 11030 | (operating-system | ||
| 11031 | ;; ... | ||
| 11032 | (label (package-full-name | ||
| 11033 | (operating-system-kernel this-operating-system)))) | ||
| 11034 | @end example | ||
| 11035 | |||
| 11036 | It is an error to refer to @code{this-operating-system} outside an operating | ||
| 11037 | system definition. | ||
| 11038 | @end deffn | ||
| 11039 | |||
| 11040 | @end deftp | ||
| 11041 | |||
| 11042 | @node Systèmes de fichiers | ||
| 11043 | @section Systèmes de fichiers | ||
| 11044 | |||
| 11045 | La liste des systèmes de fichiers à monter est spécifiée dans le champ | ||
| 11046 | @code{file-systems} de la déclaration de système d'exploitation | ||
| 11047 | (@pxref{Utiliser le système de configuration}). Chaque système de fichier est | ||
| 11048 | déclaré avec la forme @code{file-system}, comme ceci : | ||
| 11049 | |||
| 11050 | @example | ||
| 11051 | (file-system | ||
| 11052 | (mount-point "/home") | ||
| 11053 | (device "/dev/sda3") | ||
| 11054 | (type "ext4")) | ||
| 11055 | @end example | ||
| 11056 | |||
| 11057 | Comme d'habitude, certains de ces champs sont obligatoire — comme le montre | ||
| 11058 | l'exemple au-dessus — alors que d'autres peuvent être omis. Ils sont | ||
| 11059 | décrits plus bas. | ||
| 11060 | |||
| 11061 | @deftp {Type de données} file-system | ||
| 11062 | Les objets de ce type représentent des systèmes de fichiers à monter. Ils | ||
| 11063 | contiennent les membres suivants : | ||
| 11064 | |||
| 11065 | @table @asis | ||
| 11066 | @item @code{type} | ||
| 11067 | C'est une chaîne de caractères spécifiant le type du système de fichier — | ||
| 11068 | p.@: ex.@: @code{"ext4"}. | ||
| 11069 | |||
| 11070 | @item @code{mount-point} | ||
| 11071 | Désigne l'emplacement où le système de fichier sera monté. | ||
| 11072 | |||
| 11073 | @item @code{device} | ||
| 11074 | Ce champ nomme le système de fichier « source ». il peut être l'une de ces | ||
| 11075 | trois choses : une étiquette de système de fichiers, un UUID de système de | ||
| 11076 | fichier ou le nom d'un nœud dans @file{/dev}. Les étiquettes et les UUID | ||
| 11077 | offrent une manière de se référer à des systèmes de fichiers sans avoir à | ||
| 11078 | coder en dur le nom de périphérique@footnote{Remarquez que, s'il est tentant | ||
| 11079 | d'utiliser @file{/dev/disk/by-uuid} et autres chemins similaires pour | ||
| 11080 | obtenir le même résultat, ce n'est pas recommandé : ces nœuds de | ||
| 11081 | périphériques spéciaux sont créés par le démon udev et peuvent ne pas être | ||
| 11082 | disponibles au moment de monter le périphérique.}. | ||
| 11083 | |||
| 11084 | @findex file-system-label | ||
| 11085 | Les étiquettes de systèmes de fichiers sont crées avec la procédure | ||
| 11086 | @code{file-system-label}, les UUID avec @code{uuid} et les nœuds de | ||
| 11087 | @file{/dev} sont de simples chaînes de caractères. Voici un exemple d'un | ||
| 11088 | système de fichiers référencé par son étiquette, donnée par la commande | ||
| 11089 | @command{e2label} : | ||
| 11090 | |||
| 11091 | @example | ||
| 11092 | (file-system | ||
| 11093 | (mount-point "/home") | ||
| 11094 | (type "ext4") | ||
| 11095 | (device (file-system-label "my-home"))) | ||
| 11096 | @end example | ||
| 11097 | |||
| 11098 | @findex uuid | ||
| 11099 | Les UUID sont convertis à partir de leur représentation en chaîne de | ||
| 11100 | caractères (montrée par la command @command{tune2fs -l}) en utilisant la | ||
| 11101 | forme @code{uuid}@footnote{La forme @code{uuid} s'attend à des UUID sur 16 | ||
| 11102 | octets définis dans la @uref{https://tools.ietf.org/html/rfc4122, | ||
| 11103 | RFC@tie{}4122}. C'est la forme des UUID utilisées par la famille de | ||
| 11104 | systèmes de fichiers ext2 et d'autres, mais ce n'est pas le même type d'UUID | ||
| 11105 | que ceux qui se trouvent sur les systèmes de fichiers FAT par exemple}, | ||
| 11106 | comme ceci : | ||
| 11107 | |||
| 11108 | @example | ||
| 11109 | (file-system | ||
| 11110 | (mount-point "/home") | ||
| 11111 | (type "ext4") | ||
| 11112 | (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))) | ||
| 11113 | @end example | ||
| 11114 | |||
| 11115 | Lorsque la source d'un système de fichiers est un périphérique mappé | ||
| 11116 | (@pxref{Périphériques mappés}), sont champ @code{device} @emph{doit} se référer au | ||
| 11117 | nom du périphérique mappé — p.@: ex.@: @file{"/dev/mapper/root-partition"}. | ||
| 11118 | Cela est requis pour que le système sache que monter ce système de fichier | ||
| 11119 | dépend de la présence du périphérique mappé correspondant. | ||
| 11120 | |||
| 11121 | @item @code{flags} (par défaut : @code{'()}) | ||
| 11122 | C'est une liste de symboles qui dénotent des drapeaux de montage. Les | ||
| 11123 | drapeaux reconnus sont @code{read-only}, @code{bind-mount}, @code{no-dev} | ||
| 11124 | (interdit l'accès aux fichiers spéciaux), @code{no-suid} (ignore les bits | ||
| 11125 | setuid et setgid) et @code{no-exec} (interdit l'exécution de programmes). | ||
| 11126 | |||
| 11127 | @item @code{options} (par défaut : @code{#f}) | ||
| 11128 | C'est soit @code{#f} soit une chaîne de caractères dénotant des options de | ||
| 11129 | montage. | ||
| 11130 | |||
| 11131 | @item @code{mount?} (par défaut : @code{#t}) | ||
| 11132 | Cette valeur indique s'il faut monter automatiquement le système de fichier | ||
| 11133 | au démarrage du système. Lorsque la valeur est @code{#f}, le système de | ||
| 11134 | fichier reçoit une entrée dans @file{/etc/fstab} (lue par la commande | ||
| 11135 | @command{mount}) mais n'est pas monté automatiquement. | ||
| 11136 | |||
| 11137 | @item @code{needed-for-boot?} (par défaut : @code{#f}) | ||
| 11138 | Cette valeur booléenne indique si le système de fichier est nécessaire au | ||
| 11139 | démarrage. Si c'est vrai alors le système de fichier est monté au | ||
| 11140 | chargement du disque de RAM initial. C'est toujours le cas par exemple du | ||
| 11141 | système de fichiers racine. | ||
| 11142 | |||
| 11143 | @item @code{check?} (par défaut : @code{#t}) | ||
| 11144 | Cette valeur booléenne indique si le système de fichier doit être vérifié | ||
| 11145 | avant de le monter. | ||
| 11146 | |||
| 11147 | @item @code{create-mount-point?} (par défaut : @code{#f}) | ||
| 11148 | Lorsque cette valeur est vraie, le point de montage est créé s'il n'existe | ||
| 11149 | pas déjà. | ||
| 11150 | |||
| 11151 | @item @code{dependencies} (par défaut : @code{'()}) | ||
| 11152 | C'est une liste d'objets @code{<file-system>} ou @code{<mapped-device>} qui | ||
| 11153 | représentent les systèmes de fichiers qui doivent être montés ou les | ||
| 11154 | périphériques mappés qui doivent être ouverts avant (et monté ou fermés | ||
| 11155 | après) celui-ci. | ||
| 11156 | |||
| 11157 | Par exemple, considérons une hiérarchie de montage : @file{/sys/fs/cgroup} | ||
| 11158 | est une dépendance de @file{/sys/fs/cgroup/cpu} et | ||
| 11159 | @file{/sys/fs/cgroup/memory}. | ||
| 11160 | |||
| 11161 | Un autre exemple est un système de fichier qui dépend d'un périphérique | ||
| 11162 | mappé, par exemple pour une partition chiffrée (@pxref{Périphériques mappés}). | ||
| 11163 | @end table | ||
| 11164 | @end deftp | ||
| 11165 | |||
| 11166 | Le module @code{(gnu system file-systems)} exporte les variables utiles | ||
| 11167 | suivantes. | ||
| 11168 | |||
| 11169 | @defvr {Variable Scheme} %base-file-systems | ||
| 11170 | Ce sont les systèmes de fichiers essentiels qui sont requis sur les systèmes | ||
| 11171 | normaux, comme @var{%pseudo-terminal-file-system} et @var{%immutable-store} | ||
| 11172 | (voir plus bas). Les déclarations de systèmes d'exploitation devraient au | ||
| 11173 | moins les contenir. | ||
| 11174 | @end defvr | ||
| 11175 | |||
| 11176 | @defvr {Variable Scheme} %pseudo-terminal-file-system | ||
| 11177 | C'est le système de fichier monté sur @file{/dev/pts}. Il supporte les | ||
| 11178 | @dfn{pseudo-terminaux} créés via @code{openpty} et les fonctions similaires | ||
| 11179 | (@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference Manual}). Les | ||
| 11180 | pseudo-terminaux sont utilisés par les émulateurs de terminaux comme | ||
| 11181 | @command{xterm}. | ||
| 11182 | @end defvr | ||
| 11183 | |||
| 11184 | @defvr {Variable Scheme} %shared-memory-file-system | ||
| 11185 | Ce système de fichier est monté dans @file{/dev/shm} et est utilisé pour le | ||
| 11186 | partage de mémoire entre processus (@pxref{Memory-mapped I/O, | ||
| 11187 | @code{shm_open},, libc, The GNU C Library Reference Manual}). | ||
| 11188 | @end defvr | ||
| 11189 | |||
| 11190 | @defvr {Variable Scheme} %immutable-store | ||
| 11191 | Ce système de fichiers effectue un « montage lié » en lecture-seule de | ||
| 11192 | @file{/gnu/store}, ce qui en fait un répertoire en lecture-seule pour tous | ||
| 11193 | les utilisateurs dont @code{root}. Cela évite que des logiciels qui | ||
| 11194 | tournent en @code{root} ou des administrateurs systèmes ne modifient | ||
| 11195 | accidentellement le dépôt. | ||
| 11196 | |||
| 11197 | Le démon lui-même est toujours capable d'écrire dans le dépôt : il est | ||
| 11198 | remonté en lecture-écriture dans son propre « espace de nom ». | ||
| 11199 | @end defvr | ||
| 11200 | |||
| 11201 | @defvr {Variable Scheme} %binary-format-file-system | ||
| 11202 | Le système de fichiers @code{binfmt_misc}, qui permet de gérer n'importe | ||
| 11203 | quel type de fichiers exécutables à déléguer en espace utilisateur. Cela | ||
| 11204 | demande que le module du noyau @code{binfmt.ko} soit chargé. | ||
| 11205 | @end defvr | ||
| 11206 | |||
| 11207 | @defvr {Variable Scheme} %fuse-control-file-system | ||
| 11208 | Le système de fichiers @code{fusectl}, qui permet à des utilisateurs non | ||
| 11209 | privilégiés de monter et de démonter des systèmes de fichiers FUSE en espace | ||
| 11210 | utilisateur. Cela requiert que le module du noyau @code{fuse.ko} soit | ||
| 11211 | chargé. | ||
| 11212 | @end defvr | ||
| 11213 | |||
| 11214 | @node Périphériques mappés | ||
| 11215 | @section Périphériques mappés | ||
| 11216 | |||
| 11217 | @cindex mappage de périphériques | ||
| 11218 | @cindex périphériques mappés | ||
| 11219 | Le noyau Linux a une notion de @dfn{mappage de périphériques} : un | ||
| 11220 | périphérique bloc, comme une partition sur un disque dur, peut être | ||
| 11221 | @dfn{mappé} sur un autre périphérique, typiquement dans @code{/dev/mapper}, | ||
| 11222 | avec des calculs supplémentaires sur les données qui naviguent entre les | ||
| 11223 | deux@footnote{Remarquez que le Hurd ne fait pas de différence entre le | ||
| 11224 | concept de « périphérique mappé » et celle d'un système de fichiers : les | ||
| 11225 | deux correspondent à la @emph{traduction} des opérations d'entrée-sortie | ||
| 11226 | faites sur un fichier en des opérations sur ce qui le contient. Ainsi, le | ||
| 11227 | Hurd implémente les périphériques mappés, comme les systèmes de fichiers, | ||
| 11228 | avec le mécanisme des @dfn{traducteurs} générique (@pxref{Translators,,, | ||
| 11229 | hurd, The GNU Hurd Reference Manual}).}. Un exemple typique est le mappage | ||
| 11230 | de périphériques chiffrés : toutes les écritures sont sur le périphérique | ||
| 11231 | mappé sont chiffrées, toutes les lectures déchiffrées, de manière | ||
| 11232 | transparente. Guix étend cette notion en considérant que tout périphérique | ||
| 11233 | ou ensemble de périphériques qui sont @dfn{transformés} d'une certaine | ||
| 11234 | manière créent un nouveau périphérique ; par exemple, les périphériques RAID | ||
| 11235 | sont obtenus en @dfn{assemblant} plusieurs autres périphériques, comme des | ||
| 11236 | disque ou des partitions, en un nouveau périphérique en tant qu'unique | ||
| 11237 | partition. Un autre exemple, qui n'est pas encore disponible, sont les | ||
| 11238 | volumes logiques LVM. | ||
| 11239 | |||
| 11240 | Les périphériques mappés sont déclarés avec la forme @code{mapped-device}, | ||
| 11241 | définie comme suit ; par exemple, voir ci-dessous. | ||
| 11242 | |||
| 11243 | @deftp {Type de données} mapped-device | ||
| 11244 | Les objets de ce type représentent des mappages de périphériques qui seront | ||
| 11245 | effectués au démarrage du système. | ||
| 11246 | |||
| 11247 | @table @code | ||
| 11248 | @item source | ||
| 11249 | C'est soit une chaîne qui spécifie le nom d'un périphérique bloc à mapper, | ||
| 11250 | comme @code{"/dev/sda3"}, soit une liste de plusieurs périphériques à | ||
| 11251 | assembler pour en créer un nouveau. | ||
| 11252 | |||
| 11253 | @item target | ||
| 11254 | Cette chaîne spécifie le nom du périphérique mappé qui en résulte. Pour les | ||
| 11255 | mappeurs noyaux comme les périphériques chiffrés de type | ||
| 11256 | @code{luks-device-mapping}, spécifier @code{"ma-partition"} crée le | ||
| 11257 | périphérique @code{"/dev/mapper/ma-partition"}. Pour les périphériques RAID | ||
| 11258 | de type @code{raid-device-mapping}, il faut donner le nom complet comme | ||
| 11259 | @code{"/dev/md0"}. | ||
| 11260 | |||
| 11261 | @item type | ||
| 11262 | Ce doit être un objets @code{mapped-device-kind}, qui spécifie comment | ||
| 11263 | @var{source} est mappés sur @var{target}. | ||
| 11264 | @end table | ||
| 11265 | @end deftp | ||
| 11266 | |||
| 11267 | @defvr {Variable Scheme} luks-device-mapping | ||
| 11268 | Cela définie les périphériques blocs chiffrés en LUKS avec | ||
| 11269 | @command{cryptsetup} du paquet du même nom. Elle s'appuie sur le module du | ||
| 11270 | noyau Linux @code{dm-crypt}. | ||
| 11271 | @end defvr | ||
| 11272 | |||
| 11273 | @defvr {Variable Scheme} raid-device-mapping | ||
| 11274 | Cela définie un périphérique RAID qui est assemblé avec la commande | ||
| 11275 | @code{mdadm} du paquet du même nom. Elle nécessite un module noyau Linux | ||
| 11276 | approprié pour le niveau RAID chargé, comme @code{raid456} pour RAID-4, | ||
| 11277 | RAID-5 et RAID-6 ou @code{raid10} pour RAID-10. | ||
| 11278 | @end defvr | ||
| 11279 | |||
| 11280 | @cindex chiffrement du disque | ||
| 11281 | @cindex LUKS | ||
| 11282 | L'exemple suivant spécifie un mappage de @file{/dev/sda3} vers | ||
| 11283 | @file{/dev/mapper/home} avec LUKS — | ||
| 11284 | @url{https://gitlab.com/cryptsetup/cryptsetup,Linux Unified Key Setup}, un | ||
| 11285 | mécanisme standard pour chiffrer les disques. Le périphérique | ||
| 11286 | @file{/dev/mapper/home} peut ensuite être utilisé comme @code{device} d'une | ||
| 11287 | déclaration @code{file-system} (@pxref{Systèmes de fichiers}). | ||
| 11288 | |||
| 11289 | @example | ||
| 11290 | (mapped-device | ||
| 11291 | (source "/dev/sda3") | ||
| 11292 | (target "home") | ||
| 11293 | (type luks-device-mapping)) | ||
| 11294 | @end example | ||
| 11295 | |||
| 11296 | Autrement, pour devenir indépendant du numéro de périphérique, on peut | ||
| 11297 | obtenir l'UUID LUKS (@dfn{l'identifiant unique}) du périphérique source avec | ||
| 11298 | une commande comme : | ||
| 11299 | |||
| 11300 | @example | ||
| 11301 | cryptsetup luksUUID /dev/sda3 | ||
| 11302 | @end example | ||
| 11303 | |||
| 11304 | et l'utiliser ainsi : | ||
| 11305 | |||
| 11306 | @example | ||
| 11307 | (mapped-device | ||
| 11308 | (source (uuid "cb67fc72-0d54-4c88-9d4b-b225f30b0f44")) | ||
| 11309 | (target "home") | ||
| 11310 | (type luks-device-mapping)) | ||
| 11311 | @end example | ||
| 11312 | |||
| 11313 | @cindex chiffrement de l'espace d'échange | ||
| 11314 | Il est aussi désirable de chiffrer l'espace d'échange, puisque l'espace | ||
| 11315 | d'échange peut contenir des données sensibles. Une manière de faire cela | ||
| 11316 | est d'utiliser un fichier d'échange dans un système de fichiers sur un | ||
| 11317 | périphérique mappé avec un chiffrement LUKS. De cette manière, le fichier | ||
| 11318 | d'échange est chiffré parce que tout le périphérique est chiffré. | ||
| 11319 | @xref{Préparer l'installation,,Disk Partitioning}, pour un exemple. | ||
| 11320 | |||
| 11321 | Un périphérique RAID formé des partitions @file{/dev/sda1} et | ||
| 11322 | @file{/dev/sdb1} peut être déclaré ainsi : | ||
| 11323 | |||
| 11324 | @example | ||
| 11325 | (mapped-device | ||
| 11326 | (source (list "/dev/sda1" "/dev/sdb1")) | ||
| 11327 | (target "/dev/md0") | ||
| 11328 | (type raid-device-mapping)) | ||
| 11329 | @end example | ||
| 11330 | |||
| 11331 | Le périphérique @file{/dev/md0} peut ensuite être utilisé comme | ||
| 11332 | @code{device} d'une déclaration @code{file-system} (@pxref{Systèmes de fichiers}). | ||
| 11333 | Remarquez que le niveau de RAID n'a pas besoin d'être donné ; il est choisi | ||
| 11334 | pendant la création initiale du périphérique RAID et est ensuite déterminé | ||
| 11335 | automatiquement. | ||
| 11336 | |||
| 11337 | |||
| 11338 | @node Comptes utilisateurs | ||
| 11339 | @section Comptes utilisateurs | ||
| 11340 | |||
| 11341 | @cindex utilisateurs | ||
| 11342 | @cindex comptes | ||
| 11343 | @cindex comptes utilisateurs | ||
| 11344 | Les comptes utilisateurs et les groupes sont gérés entièrement par la | ||
| 11345 | déclaration @code{operating-system}. Ils sont spécifiés avec les formes | ||
| 11346 | @code{user-account} et @code{user-group} : | ||
| 11347 | |||
| 11348 | @example | ||
| 11349 | (user-account | ||
| 11350 | (name "alice") | ||
| 11351 | (group "users") | ||
| 11352 | (supplementary-groups '("wheel" ;permet d'utiliser sudo, etc. | ||
| 11353 | "audio" ;carte son | ||
| 11354 | "video" ;périphériques réseaux comme les webcams | ||
| 11355 | "cdrom")) ;le bon vieux CD-ROM | ||
| 11356 | (comment "Bob's sister") | ||
| 11357 | (home-directory "/home/alice")) | ||
| 11358 | @end example | ||
| 11359 | |||
| 11360 | Lors du démarrage ou à la fin de @command{guix system reconfigure}, le | ||
| 11361 | système s'assure que seuls les comptes utilisateurs et les groupes spécifiés | ||
| 11362 | dans la déclaration @code{operating-system} existent, et avec les propriétés | ||
| 11363 | spécifiées. Ainsi, les modifications ou les créations de comptes ou de | ||
| 11364 | groupes effectuées directement en invoquant des commandes comme | ||
| 11365 | @command{useradd} sont perdue à la reconfiguration ou au redémarrage. Cela | ||
| 11366 | permet de s'assurer que le système reste exactement tel que déclaré. | ||
| 11367 | |||
| 11368 | @deftp {Type de données} user-account | ||
| 11369 | Les objets de se type représentent les comptes utilisateurs. Les membres | ||
| 11370 | suivants peuvent être spécifiés : | ||
| 11371 | |||
| 11372 | @table @asis | ||
| 11373 | @item @code{name} | ||
| 11374 | Le nom du compte utilisateur. | ||
| 11375 | |||
| 11376 | @item @code{group} | ||
| 11377 | @cindex groupes | ||
| 11378 | C'est le nom (une chaîne) ou un identifiant (un nombre) du groupe | ||
| 11379 | utilisateur auquel ce compte appartient. | ||
| 11380 | |||
| 11381 | @item @code{supplementary-groups} (par défaut : @code{'()}) | ||
| 11382 | Éventuellement, cela peut être définie comme une liste de noms de groupes | ||
| 11383 | auxquels ce compte appartient. | ||
| 11384 | |||
| 11385 | @item @code{uid} (par défaut : @code{#f}) | ||
| 11386 | C'est l'ID utilisateur de ce compte (un nombre) ou @code{#f}. Dans ce | ||
| 11387 | dernier cas, le nombre est choisi automatiquement par le système à la | ||
| 11388 | création du compte. | ||
| 11389 | |||
| 11390 | @item @code{comment} (par défaut : @code{""}) | ||
| 11391 | Un commentaire à propos du compte, comme le nom complet de l'utilisateur. | ||
| 11392 | |||
| 11393 | @item @code{home-directory} | ||
| 11394 | C'est le nom du répertoire personnel du compte. | ||
| 11395 | |||
| 11396 | @item @code{create-home-directory?} (par défaut : @code{#t}) | ||
| 11397 | Indique si le répertoire personnel du compte devrait être créé s'il n'existe | ||
| 11398 | pas déjà. | ||
| 11399 | |||
| 11400 | @item @code{shell} (par défaut : Bash) | ||
| 11401 | C'est une G-expression qui dénote un nom de fichier d'un programme utilisé | ||
| 11402 | comme shell (@pxref{G-Expressions}). | ||
| 11403 | |||
| 11404 | @item @code{system?} (par défaut : @code{#f}) | ||
| 11405 | C'est une valeur booléenne qui indique si le compte est un compte « système | ||
| 11406 | ». Les comptes systèmes sont parfois traités à part ; par exemple, les | ||
| 11407 | gestionnaires de connexion graphiques ne les liste pas. | ||
| 11408 | |||
| 11409 | @anchor{user-account-password} | ||
| 11410 | @cindex mot de passe, pour les comptes utilisateurs | ||
| 11411 | @item @code{password} (par défaut : @code{#f}) | ||
| 11412 | Vous laisseriez normalement ce champ à @code{#f} et initialiseriez les mots | ||
| 11413 | de passe utilisateurs en tant que @code{root} avec la commande | ||
| 11414 | @command{passwd}, puis laisseriez l'utilisateur le changer avec | ||
| 11415 | @command{passwd}. Les mots de passes définis avec @command{passwd} sont | ||
| 11416 | bien sûr préservés après redémarrage et reconfiguration. | ||
| 11417 | |||
| 11418 | Si vous voulez @emph{vraiment} définir un mot de passe pour un compte, alors | ||
| 11419 | ce champ doit contenir le mot de passe chiffré, comme une chaîne de | ||
| 11420 | caractère. Vous pouvez utiliser la procédure @code{crypt} pour cela : | ||
| 11421 | |||
| 11422 | @example | ||
| 11423 | (user-account | ||
| 11424 | (name "charlie") | ||
| 11425 | (group "users") | ||
| 11426 | |||
| 11427 | ;; Spécifie un mot de passe initial hashé avec sha512. | ||
| 11428 | (password (crypt "InitialPassword!" "$6$abc"))) | ||
| 11429 | @end example | ||
| 11430 | |||
| 11431 | @quotation Remarque | ||
| 11432 | Le hash de ce mot de passe initial sera disponible dans un fichier dans | ||
| 11433 | @file{/gnu/store}, lisible par tous les utilisateurs, donc cette méthode est | ||
| 11434 | à utiliser avec soin. | ||
| 11435 | @end quotation | ||
| 11436 | |||
| 11437 | @xref{Passphrase Storage,,, libc, The GNU C Library Reference Manual}, pour | ||
| 11438 | plus d'information sur le chiffrement des mots de passe et | ||
| 11439 | @ref{Encryption,,, guile, GNU Guile Reference Manual}, pour des informations | ||
| 11440 | sur la procédure @code{crypt} de Guile. | ||
| 11441 | |||
| 11442 | @end table | ||
| 11443 | @end deftp | ||
| 11444 | |||
| 11445 | @cindex groupes | ||
| 11446 | Les déclarations de groupes sont encore plus simple : | ||
| 11447 | |||
| 11448 | @example | ||
| 11449 | (user-group (name "students")) | ||
| 11450 | @end example | ||
| 11451 | |||
| 11452 | @deftp {Type de données} user-group | ||
| 11453 | C'est le type pour, hé bien, les comptes utilisateurs. Il n'y a que | ||
| 11454 | quelques champs : | ||
| 11455 | |||
| 11456 | @table @asis | ||
| 11457 | @item @code{name} | ||
| 11458 | Le nom du groupe. | ||
| 11459 | |||
| 11460 | @item @code{id} (par défaut : @code{#f}) | ||
| 11461 | L'identifiant du groupe (un nombre). S'il est @code{#f}, un nouveau nombre | ||
| 11462 | est alloué automatiquement lorsque le groupe est créé. | ||
| 11463 | |||
| 11464 | @item @code{system?} (par défaut : @code{#f}) | ||
| 11465 | Cette valeur booléenne indique si le groupe est un groupe « système ». les | ||
| 11466 | groupes systèmes ont un numéro d'ID bas. | ||
| 11467 | |||
| 11468 | @item @code{password} (par défaut : @code{#f}) | ||
| 11469 | Quoi, les groupes utilisateurs peuvent avoir des mots de passe ? On dirait | ||
| 11470 | bien. À moins que la valeur ne soit @code{#f}, ce champ spécifie le mot de | ||
| 11471 | passe du groupe. | ||
| 11472 | |||
| 11473 | @end table | ||
| 11474 | @end deftp | ||
| 11475 | |||
| 11476 | Par simplicité, une variable liste les groupes utilisateurs de base auxquels | ||
| 11477 | on pourrait s'attendre : | ||
| 11478 | |||
| 11479 | @defvr {Variable Scheme} %base-groups | ||
| 11480 | C'est la liste des groupes utilisateur de base que les utilisateurs et les | ||
| 11481 | paquets s'attendent à trouver sur le système. Cela comprend des groupes | ||
| 11482 | comme « root », « wheel » et « users », ainsi que des groupes utilisés pour | ||
| 11483 | contrôler l'accès à certains périphériques, comme « audio », « disk » et « | ||
| 11484 | cdrom ». | ||
| 11485 | @end defvr | ||
| 11486 | |||
| 11487 | @defvr {Variable Scheme} %base-user-accounts | ||
| 11488 | C'est la liste des compte du système de base que les programmes peuvent | ||
| 11489 | s'attendre à trouver sur un système GNU/Linux, comme le compte « nobody ». | ||
| 11490 | |||
| 11491 | Remarquez que le compte « root » n'est pas défini ici. C'est un cas | ||
| 11492 | particulier et il est automatiquement ajouté qu'il soit spécifié ou non. | ||
| 11493 | @end defvr | ||
| 11494 | |||
| 11495 | @node Disposition du clavier | ||
| 11496 | @section Disposition du clavier | ||
| 11497 | |||
| 11498 | @cindex disposition du clavier | ||
| 11499 | @cindex disposition clavier | ||
| 11500 | Pour spécifier ce que fait chaque touche de votre clavier, vous devez dire | ||
| 11501 | au système d'exploitation quel @dfn{disposition du clavier} vous voulez | ||
| 11502 | utiliser. Par défaut, lorsque rien n'est spécifié, la disposition QWERTY | ||
| 11503 | pour l'anglais américain pour les claviers 105 touches est utilisée. | ||
| 11504 | Cependant, les germanophones préfèrent généralement la disposition QWERTZ, | ||
| 11505 | les francophones la disposition AZERTY etc ; les hackers peuvent préférer | ||
| 11506 | Dvorak ou bépo, et peuvent même vouloir personnaliser plus en détails | ||
| 11507 | l'effet de certaines touches. Cette section explique comment faire cela. | ||
| 11508 | |||
| 11509 | @cindex disposition du clavier, définition | ||
| 11510 | Il y a trois composants qui devront connaître votre disposition du clavier : | ||
| 11511 | |||
| 11512 | @itemize | ||
| 11513 | @item | ||
| 11514 | Le @emph{chargeur d'amorçage} peut avoir besoin de connaître la disposition | ||
| 11515 | clavier que vous voulez utiliser (@pxref{Configuration du chargeur d'amorçage, | ||
| 11516 | @code{keyboard-layout}}). C'est utile si vous voulez par exemple vous | ||
| 11517 | assurer que vous pouvez saisir la phrase de passe de votre partition racine | ||
| 11518 | chiffrée avec la bonne disposition. | ||
| 11519 | |||
| 11520 | @item | ||
| 11521 | Le @emph{noyau du système d'exploitation}, Linux, en aura besoin pour | ||
| 11522 | configurer correctement la console (@pxref{Référence de système d'exploitation, | ||
| 11523 | @code{keyboard-layout}}). | ||
| 11524 | |||
| 11525 | @item | ||
| 11526 | Le @emph{serveur d'affichage graphique}, habituellement Xorg, a aussi sa | ||
| 11527 | propre idée sur la disposition du clavier à utiliser (@pxref{Système de fenêtrage X, | ||
| 11528 | @code{keyboard-layout}}). | ||
| 11529 | @end itemize | ||
| 11530 | |||
| 11531 | Guix vous permet de configurer les trois séparément mais, heureusement, il | ||
| 11532 | vous permet de partager la même disposition du clavier pour chacun des trois | ||
| 11533 | composants. | ||
| 11534 | |||
| 11535 | @cindex XKB, disposition du clavier | ||
| 11536 | Les dispositions de clavier sont représentées par des enregistrements créés | ||
| 11537 | par la procédure @code{keyboard-layout} de @code{(gnu system keyboard)}. En | ||
| 11538 | suivant l'extension clavier de X (XKB), chaque disposition a trois attributs | ||
| 11539 | : un nom (souvent un code de langue comme « fi » pour le finnois ou « jp » | ||
| 11540 | pour le japonais), un nom de variante facultatif, un nom de modèle de | ||
| 11541 | clavier facultatif et une liste éventuellement vide d'options | ||
| 11542 | supplémentaires. Dans la plupart des cas, vous n'aurez besoin que du nom de | ||
| 11543 | la disposition. Voici quelques exemples : | ||
| 11544 | |||
| 11545 | @example | ||
| 11546 | ;; La disposition QWERTZ allemande. Ici on suppose que vous utilisez un clavier | ||
| 11547 | ;; type « pc105 » standard. | ||
| 11548 | (keyboard-layout "de") | ||
| 11549 | |||
| 11550 | ;; La variante bépo de la disposition française. | ||
| 11551 | (keyboard-layout "fr" "bepo") | ||
| 11552 | |||
| 11553 | ;; La disposition catalane. | ||
| 11554 | (keyboard-layout "es" "cat") | ||
| 11555 | |||
| 11556 | ;; La disposition espagnole américaine. En plus, la touche | ||
| 11557 | ;; « Verr. Maj. » est utilisée comme touche « Ctrl » supplémentaire, | ||
| 11558 | ;; et la touche « Menu » est utilisée comme touche « Compose » pour | ||
| 11559 | ;; saisir des lettres accentuées. | ||
| 11560 | (keyboard-layout "latam" | ||
| 11561 | #:options '("ctrl:nocaps" "compose:menu")) | ||
| 11562 | |||
| 11563 | ;; La disposition russe pour un clavier de ThinkPad. | ||
| 11564 | (keyboard-layout "ru" #:model "thinkpad") | ||
| 11565 | |||
| 11566 | ;; La disposition « US internationale », qui est comme la disposition US plus | ||
| 11567 | ;; des touches mortes pour saisir des caractères accentués. Cet exemple est pour | ||
| 11568 | ;; un clavier de MacBook Apple. | ||
| 11569 | (keyboard-layout "us" "intl" #:model "macbook78") | ||
| 11570 | @end example | ||
| 11571 | |||
| 11572 | Voir le répertoire @file{share/X11/xkb} du paquet @code{xkeyboard-config} | ||
| 11573 | pour une liste complète des disposition, des variantes et des modèles pris | ||
| 11574 | en charge. | ||
| 11575 | |||
| 11576 | @cindex disposition du clavier, configuration | ||
| 11577 | Disons que vous voulez que votre système utilise la disposition turque sur | ||
| 11578 | tout le système — du chargeur d'amorçage à Xorg en passant par la console. | ||
| 11579 | Voici ce que votre configuration du système contiendrait : | ||
| 11580 | |||
| 11581 | @findex set-xorg-configuration | ||
| 11582 | @lisp | ||
| 11583 | ;; Utiliser la disposition turque pour le chargeur d'amorçage, | ||
| 11584 | ;; la console et Xorg. | ||
| 11585 | (operating-system | ||
| 11586 | ;; ... | ||
| 11587 | (keyboard-layout (keyboard-layout "tr")) ;pour la console | ||
| 11588 | (bootloader (bootloader-configuration | ||
| 11589 | (bootloader grub-efi-bootloader) | ||
| 11590 | (target "/boot/efi") | ||
| 11591 | (keyboard-layout keyboard-layout))) ;pour GRUB | ||
| 11592 | (services (cons (set-xorg-configuration | ||
| 11593 | (xorg-configuration ;pour Xorg | ||
| 11594 | (keyboard-layout keyboard-layout))) | ||
| 11595 | %desktop-services))) | ||
| 11596 | @end lisp | ||
| 11597 | |||
| 11598 | Dans l'exemple ci-dessus, pour GRUB et pour Xorg, nous nous référons | ||
| 11599 | simplement au champ @code{keyboard-layout} au dessus, mais on pourrait aussi | ||
| 11600 | bien se référer à une autre disposition. La procédure | ||
| 11601 | @code{set-xorg-configuration} communique la configuration Xorg désirée au | ||
| 11602 | gestionnaire de connexion, par défaut GDM. | ||
| 11603 | |||
| 11604 | Nous avons discuté de la manière de spécifier la disposition du clavier | ||
| 11605 | @emph{par défaut} lorsque votre système démarre, mais vous pouvez aussi | ||
| 11606 | l'ajuster à l'exécution : | ||
| 11607 | |||
| 11608 | @itemize | ||
| 11609 | @item | ||
| 11610 | Si vous utilisez GNOME, son panneau de configuration contient une entrée « | ||
| 11611 | Région & Langues » où vous pouvez choisir une ou plusieurs dispositions du | ||
| 11612 | clavier. | ||
| 11613 | |||
| 11614 | @item | ||
| 11615 | Sous Xorg, la commande @command{sexkbmap} (du paquet du même nom) vous | ||
| 11616 | permet de changer la disposition actuelle. Par exemple, voilà comment | ||
| 11617 | changer la disposition pour un Dvorak américain : | ||
| 11618 | |||
| 11619 | @example | ||
| 11620 | setxkbmap us dvorak | ||
| 11621 | @end example | ||
| 11622 | |||
| 11623 | @item | ||
| 11624 | La commande @code{loadkey} change la disposition du clavier dans la console | ||
| 11625 | Linux. Cependant, remarque que @code{loadkeys} n'utilise @emph{pas} la | ||
| 11626 | catégorisation des dispositions XKB décrite plus haut. La commande suivante | ||
| 11627 | charge la disposition bépo française : | ||
| 11628 | |||
| 11629 | @example | ||
| 11630 | loadkeys fr-bepo | ||
| 11631 | @end example | ||
| 11632 | @end itemize | ||
| 11633 | |||
| 11634 | @node Régionalisation | ||
| 11635 | @section Régionalisation | ||
| 11636 | |||
| 11637 | @cindex paramètres linguistiques | ||
| 11638 | Un @dfn{paramètre linguistique} définie les conventions culturelles d'une | ||
| 11639 | langue et d'une région particulières (@pxref{Régionalisation,,, libc, The GNU C | ||
| 11640 | Library Reference Manual}). Chaque paramètre linguistique a un nom de la | ||
| 11641 | forme @code{@var{langue}_@var{territoire}.@var{jeudecaractères}} — p.@: | ||
| 11642 | ex.@: @code{fr_LU.utf8} désigne le paramètre linguistique pour le français, | ||
| 11643 | avec les conventions culturelles du Luxembourg, en utilisant l'encodage | ||
| 11644 | UTF-8. | ||
| 11645 | |||
| 11646 | @cindex définition des paramètres linguistiques | ||
| 11647 | Normalement, vous voudrez spécifier les paramètres linguistiques par défaut | ||
| 11648 | pour la machine en utilisant le champ @code{locale} de la déclaration | ||
| 11649 | @code{operating-system} (@pxref{Référence de système d'exploitation, @code{locale}}). | ||
| 11650 | |||
| 11651 | Les paramètres régionaux choisis sont automatiquement ajoutés aux | ||
| 11652 | définitions des @dfn{paramètres régionaux} connues par le système au besoin, | ||
| 11653 | avec le jeu de caractères inféré à partir de son nom, p.@: ex.@: | ||
| 11654 | @code{bo_CN.utf8} supposera qu'il faut utiliser le jeu de caractères | ||
| 11655 | @code{UTF-8}. Des définitions supplémentaires peuvent être spécifiées dans | ||
| 11656 | le champ @code{locale-definitions} de @code{operating-system} — c'est utile | ||
| 11657 | par exemple si le jeu de caractères n'a pas été inféré à partir du nom. | ||
| 11658 | L'ensemble par défaut de définitions comprend certains paramètres | ||
| 11659 | linguistiques parmi les plus utilisés, mais pas toutes les variantes | ||
| 11660 | disponibles, pour gagner de la place. | ||
| 11661 | |||
| 11662 | Par exemple, pour ajouter les paramètres pour le frison septentrional en | ||
| 11663 | Allemagne, la valeur de ce champ serait : | ||
| 11664 | |||
| 11665 | @example | ||
| 11666 | (cons (locale-definition | ||
| 11667 | (name "fy_DE.utf8") (source "fy_DE")) | ||
| 11668 | %default-locale-definitions) | ||
| 11669 | @end example | ||
| 11670 | |||
| 11671 | De me, pour gagner de la place, on peut vouloir lister dans | ||
| 11672 | @code{locale-definitions} seulement les paramètres qui sont vraiment | ||
| 11673 | utilisés, comme dans : | ||
| 11674 | |||
| 11675 | @example | ||
| 11676 | (list (locale-definition | ||
| 11677 | (name "ja_JP.eucjp") (source "ja_JP") | ||
| 11678 | (charset "EUC-JP"))) | ||
| 11679 | @end example | ||
| 11680 | |||
| 11681 | @vindex LOCPATH | ||
| 11682 | Les définitions des paramètres linguistiques compilées sont disponibles dans | ||
| 11683 | @file{/run/current-system/locale/X.Y}, où @code{X.Y} est la version de la | ||
| 11684 | libc, ce qui est l'emplacement par défaut où la GNU@tie{}libc fournie par | ||
| 11685 | Guix cherche les données de régionalisation. Cet emplacement peut être | ||
| 11686 | modifié avec la variable d'environnement @code{LOCPATH} | ||
| 11687 | (@pxref{locales-and-locpath, @code{LOCPATH} and locale packages}). | ||
| 11688 | |||
| 11689 | La forme @code{locale-definition} est fournie par le module @code{(gnu | ||
| 11690 | system locale)}. Des détails sont disponibles plus bas. | ||
| 11691 | |||
| 11692 | @deftp {Type de données} locale-definition | ||
| 11693 | C'est le type de données d'une définition de paramètres linguistiques. | ||
| 11694 | |||
| 11695 | @table @asis | ||
| 11696 | |||
| 11697 | @item @code{name} | ||
| 11698 | Le nom du paramètre linguistique. @xref{Locale Names,,, libc, The GNU C | ||
| 11699 | Library Reference Manual}, pour en savoir plus sur les noms de paramètres | ||
| 11700 | linguistiques. | ||
| 11701 | |||
| 11702 | @item @code{source} | ||
| 11703 | Le nom de la source pour ce paramètre linguistique. C'est typiquement la | ||
| 11704 | partie @code{@var{langue}_@var{territoire}} du nom du paramètre. | ||
| 11705 | |||
| 11706 | @item @code{charset} (par défaut : @code{"UTF-8"}) | ||
| 11707 | Le « jeu de caractères » d'un paramètre linguistique, | ||
| 11708 | @uref{http://www.iana.org/assignments/character-sets, défini par l'IANA}. | ||
| 11709 | |||
| 11710 | @end table | ||
| 11711 | @end deftp | ||
| 11712 | |||
| 11713 | @defvr {Variable Scheme} %default-locale-definitions | ||
| 11714 | Une liste des paramètres linguistiques UTF-8 couramment utilisés, utilisée | ||
| 11715 | comme valeur par défaut pour le champ @code{locale-definitions} des | ||
| 11716 | déclarations @code{operating-system}. | ||
| 11717 | |||
| 11718 | @cindex nom de paramètre linguistique | ||
| 11719 | @cindex jeu de caractère normalisé dans les noms de paramètres linguistiques | ||
| 11720 | Ces définitions de paramètres linguistiques utilisent le @dfn{jeu de | ||
| 11721 | caractère normalisé} pour la partie qui suit le point dans le nom | ||
| 11722 | (@pxref{Using gettextized software, normalized codeset,, libc, The GNU C | ||
| 11723 | Library Reference Manual}). Donc par exemple il y a @code{uk_UA.utf8} mais | ||
| 11724 | @emph{pas}, disons, @code{uk_UA.UTF-8}. | ||
| 11725 | @end defvr | ||
| 11726 | |||
| 11727 | @subsection Considérations sur la compatibilité des données linguistiques | ||
| 11728 | |||
| 11729 | @cindex incompatibilité, des données linguistiques | ||
| 11730 | Les déclaration @code{operating-system} fournissent un champ | ||
| 11731 | @code{locale-libcs} pour spécifier les paquets GNU@tie{}libc à utiliser pour | ||
| 11732 | compiler les déclarations de paramètres linguistiques | ||
| 11733 | (@pxref{Référence de système d'exploitation}). « Pourquoi je devrais m'en soucier ? | ||
| 11734 | », vous demandez-vous sûrement. Hé bien il se trouve que le format binaire | ||
| 11735 | des données linguistique est parfois incompatible d'une version de la libc à | ||
| 11736 | une autre. | ||
| 11737 | |||
| 11738 | @c See <https://sourceware.org/ml/libc-alpha/2015-09/msg00575.html> | ||
| 11739 | @c and <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>. | ||
| 11740 | Par exemple, un programme lié à la libc version 2.21 est incapable de lire | ||
| 11741 | les données linguistiques produites par la libc 2.22 ; pire, ce programme | ||
| 11742 | @emph{plante} plutôt que d'ignorer les données linguistiques | ||
| 11743 | incompatibles@footnote{Les version 2.23 et supérieures de la GNU@tie{}libc | ||
| 11744 | sauteront simplement les données linguistiques incompatibles, ce qui est | ||
| 11745 | déjà mieux.}. De même, un programme lié à la libc 2.22 peut lire la plupart | ||
| 11746 | mais pas toutes les données linguistiques de la libc 2.21 (spécifiquement | ||
| 11747 | les données @code{LC_COLLATE} sont incompatibles) ; donc les appels à | ||
| 11748 | @code{setlocale} peuvent échouer, mais les programmes ne plantent pas. | ||
| 11749 | |||
| 11750 | Le « problème » avec Guix c'est que les utilisateurs ont beaucoup de liberté | ||
| 11751 | : ils peuvent choisir s'ils veulent et quand ils veulent mettre à jour les | ||
| 11752 | logiciels de leur profil, et peuvent utiliser une version différente de la | ||
| 11753 | libc de celle que l'administrateur système utilise pour construire les | ||
| 11754 | données linguistiques du système global. | ||
| 11755 | |||
| 11756 | Heureusement, les utilisateurs non privilégiés peuvent aussi installer leur | ||
| 11757 | propres données linguistiques et définir @var{GUIX_LOCPATH} comme il le faut | ||
| 11758 | (@pxref{locales-and-locpath, @code{GUIX_LOCPATH} and locale packages}). | ||
| 11759 | |||
| 11760 | Cependant, c'est encore mieux si les données linguistiques du système dans | ||
| 11761 | @file{/run/current-system/locale} étaient construites avec les versions de | ||
| 11762 | la libc utilisées sur le système, pour que tous les programmes puissent y | ||
| 11763 | accéder — c'est surtout crucial sur un système multi-utilisateurs. Pour | ||
| 11764 | cela, l'administrateur peut spécifier plusieurs paquets de la libc dans le | ||
| 11765 | champ @code{locale-libcs} de @code{operating-system} : | ||
| 11766 | |||
| 11767 | @example | ||
| 11768 | (use-package-modules base) | ||
| 11769 | |||
| 11770 | (operating-system | ||
| 11771 | ;; @dots{} | ||
| 11772 | (locale-libcs (list glibc-2.21 (canonical-package glibc)))) | ||
| 11773 | @end example | ||
| 11774 | |||
| 11775 | Cet exemple créera un système contenant les définitions des paramètres | ||
| 11776 | linguistiques pour la libc 2.21 et pour la version actuelle de la libc dans | ||
| 11777 | @file{/run/current-system/locale}. | ||
| 11778 | |||
| 11779 | |||
| 11780 | @node Services | ||
| 11781 | @section Services | ||
| 11782 | |||
| 11783 | @cindex services systèmes | ||
| 11784 | Une part importante de la préparation d'une déclaration | ||
| 11785 | @code{operating-system} est la liste des @dfn{services systèmes} et de leur | ||
| 11786 | configuration (@pxref{Utiliser le système de configuration}). Les services | ||
| 11787 | systèmes sont typiquement des démons lancés au démarrage ou d'autres actions | ||
| 11788 | requises à ce moment-là — p.@: ex.@: configurer les accès réseaux. | ||
| 11789 | |||
| 11790 | Guix a une définition large de « service » (@pxref{Composition de services}), | ||
| 11791 | mais beaucoup de services sont gérés par le GNU@tie{}Shepherd | ||
| 11792 | (@pxref{Services Shepherd}). Sur un système lancé, la commande | ||
| 11793 | @command{herd} vous permet de lister les services disponibles, montrer leur | ||
| 11794 | statut, les démarrer et les arrêter, ou faire d'autres opérations | ||
| 11795 | spécifiques (@pxref{Jump Start,,, shepherd, The GNU Shepherd Manual}). Par | ||
| 11796 | exemple : | ||
| 11797 | |||
| 11798 | @example | ||
| 11799 | # herd status | ||
| 11800 | @end example | ||
| 11801 | |||
| 11802 | La commande ci-dessus, lancée en @code{root}, liste les services | ||
| 11803 | actuellement définis. La commande @command{herd doc} montre un synopsis du | ||
| 11804 | service donné et ses actions associées : | ||
| 11805 | |||
| 11806 | @example | ||
| 11807 | # herd doc nscd | ||
| 11808 | Run libc's name service cache daemon (nscd). | ||
| 11809 | |||
| 11810 | # herd doc nscd action invalidate | ||
| 11811 | invalidate: Invalidate the given cache--e.g., 'hosts' for host name lookups. | ||
| 11812 | @end example | ||
| 11813 | |||
| 11814 | Les sous-commandes @command{start}, @command{stop} et @command{restart} ont | ||
| 11815 | l'effet auquel on s'attend. Par exemple, les commande suivantes stoppent le | ||
| 11816 | service nscd et redémarrent le serveur d'affichage Xorg : | ||
| 11817 | |||
| 11818 | @example | ||
| 11819 | # herd stop nscd | ||
| 11820 | Service nscd has been stopped. | ||
| 11821 | # herd restart xorg-server | ||
| 11822 | Service xorg-server has been stopped. | ||
| 11823 | Service xorg-server has been started. | ||
| 11824 | @end example | ||
| 11825 | |||
| 11826 | Les sections suivantes documentent les services disponibles, en commençant | ||
| 11827 | par les services de base qui peuvent être utilisés avec une déclaration | ||
| 11828 | @code{operating-system}. | ||
| 11829 | |||
| 11830 | @menu | ||
| 11831 | * Services de base:: Services systèmes essentiels. | ||
| 11832 | * Exécution de tâches planifiées:: Le service mcron. | ||
| 11833 | * Rotation des journaux:: Le service rottlog. | ||
| 11834 | * Services réseau:: Paramètres réseau, démon SSH, etc. | ||
| 11835 | * Système de fenêtrage X:: Affichage graphique. | ||
| 11836 | * Services d'impression:: Support pour les imprimantes locales et | ||
| 11837 | distantes. | ||
| 11838 | * Services de bureaux:: D-Bus et les services de bureaux. | ||
| 11839 | * Services de son:: Services ALSA et Pulseaudio. | ||
| 11840 | * Services de bases de données:: Bases SQL, clefs-valeurs, etc. | ||
| 11841 | * Services de courriels:: IMAP, POP3, SMTP, et tout ça. | ||
| 11842 | * Services de messagerie:: Services de messagerie. | ||
| 11843 | * Services de téléphonie:: Services de téléphonie. | ||
| 11844 | * Services de surveillance:: Services de surveillance. | ||
| 11845 | * Services Kerberos:: Services Kerberos. | ||
| 11846 | * Services LDAP:: services LDAP | ||
| 11847 | * Services web:: Services web. | ||
| 11848 | * Services de certificats:: Certificats TLS via Let's Encrypt. | ||
| 11849 | * Services DNS:: Démons DNS@. | ||
| 11850 | * Services VPN:: Démons VPN. | ||
| 11851 | * Système de fichiers en réseau:: Services liés à NFS@. | ||
| 11852 | * Intégration continue:: Le service Cuirass. | ||
| 11853 | * Services de gestion de l'énergie:: Augmenter la durée de vie de la | ||
| 11854 | batterie. | ||
| 11855 | * Services audio:: MPD@. | ||
| 11856 | * Services de virtualisation:: Services de virtualisation. | ||
| 11857 | * Services de contrôle de version:: Fournit des accès distants à des | ||
| 11858 | dépôts Git. | ||
| 11859 | * Services de jeu:: Serveurs de jeu. | ||
| 11860 | * Services divers:: D'autres services. | ||
| 11861 | @end menu | ||
| 11862 | |||
| 11863 | @node Services de base | ||
| 11864 | @subsection Services de base | ||
| 11865 | |||
| 11866 | Le module @code{(gnu services base)} fournit des définitions de services | ||
| 11867 | pour les services de base qu'on peut attendre du système. Les services | ||
| 11868 | exportés par ce module sort listés ci-dessous. | ||
| 11869 | |||
| 11870 | @defvr {Variable Scheme} %base-services | ||
| 11871 | Cette variable contient une liste de services de base (@pxref{Types service et services}, pour plus d'informations sur les objets service) qu'on peut | ||
| 11872 | attendre du système : un service de connexion (mingetty) sur chaque tty, | ||
| 11873 | syslogd, le démon de cache de noms de la libc (nscd), le gestionnaire de | ||
| 11874 | périphériques udev, et plus. | ||
| 11875 | |||
| 11876 | C'est la valeur par défaut du champ @code{services} des déclarations | ||
| 11877 | @code{operating-system}. Habituellement, lors de la personnalisation d'un | ||
| 11878 | système, vous voudrez ajouter des services à ceux de @var{%base-services}, | ||
| 11879 | comme ceci : | ||
| 11880 | |||
| 11881 | @example | ||
| 11882 | (append (list (service avahi-service-type) | ||
| 11883 | (service openssh-service-type)) | ||
| 11884 | %base-services) | ||
| 11885 | @end example | ||
| 11886 | @end defvr | ||
| 11887 | |||
| 11888 | @defvr {Variable Scheme} special-files-service-type | ||
| 11889 | C'est le service qui met en place des « fichiers spéciaux » comme | ||
| 11890 | @file{/bin/sh} ; une instance de ce service fait partie de | ||
| 11891 | @code{%base-services}. | ||
| 11892 | |||
| 11893 | La valeur associée avec les services @code{special-files-service-type} doit | ||
| 11894 | être une liste de couples dont le premier élément est le « fichier spécial » | ||
| 11895 | et le deuxième sa cible. Par défaut il s'agit de : | ||
| 11896 | |||
| 11897 | @cindex @file{/bin/sh} | ||
| 11898 | @cindex @file{sh}, dans @file{/bin} | ||
| 11899 | @example | ||
| 11900 | `(("/bin/sh" ,(file-append @var{bash} "/bin/sh"))) | ||
| 11901 | @end example | ||
| 11902 | |||
| 11903 | @cindex @file{/usr/bin/env} | ||
| 11904 | @cindex @file{env}, dans @file{/usr/bin} | ||
| 11905 | Si vous voulez ajouter, disons, @code{/usr/bin/env} à votre système, vous | ||
| 11906 | pouvez changer cela en : | ||
| 11907 | |||
| 11908 | @example | ||
| 11909 | `(("/bin/sh" ,(file-append @var{bash} "/bin/sh")) | ||
| 11910 | ("/usr/bin/env" ,(file-append @var{coreutils} "/bin/env"))) | ||
| 11911 | @end example | ||
| 11912 | |||
| 11913 | Comme il fait parti de @code{%base-services}, vous pouvez utiliser | ||
| 11914 | @code{modify-services} pour personnaliser l'ensemble des fichiers spéciaux | ||
| 11915 | (@pxref{Référence de service, @code{modify-services}}). Mais une manière plus | ||
| 11916 | simple d'ajouter un fichier spécial est d'utiliser la procédure | ||
| 11917 | @code{extra-special-file} (voir plus bas). | ||
| 11918 | @end defvr | ||
| 11919 | |||
| 11920 | @deffn {Procédure Scheme} extra-special-file @var{file} @var{target} | ||
| 11921 | Utilise @var{target} comme « fichier spécial » @var{file}. | ||
| 11922 | |||
| 11923 | Par exemple, ajouter l'une des lignes suivantes au champ @code{services} de | ||
| 11924 | votre déclaration de système d'exploitation crée un lien symbolique | ||
| 11925 | @file{/usr/bin/env} : | ||
| 11926 | |||
| 11927 | @example | ||
| 11928 | (extra-special-file "/usr/bin/env" | ||
| 11929 | (file-append coreutils "/bin/env")) | ||
| 11930 | @end example | ||
| 11931 | @end deffn | ||
| 11932 | |||
| 11933 | @deffn {Procédure Scheme} host-name-service @var{name} | ||
| 11934 | Renvoie un service qui paramètre le nom d'hôte à @var{name}. | ||
| 11935 | @end deffn | ||
| 11936 | |||
| 11937 | @deffn {Procédure Scheme} login-service @var{config} | ||
| 11938 | Renvoie un service pour lancer login en suivant @var{config}, un objet | ||
| 11939 | @code{<login-configuration>} qui spécifie le message du jour, entre autres | ||
| 11940 | choses. | ||
| 11941 | @end deffn | ||
| 11942 | |||
| 11943 | @deftp {Type de données} login-configuration | ||
| 11944 | Le type de données qui représente la configuration de login. | ||
| 11945 | |||
| 11946 | @table @asis | ||
| 11947 | |||
| 11948 | @item @code{motd} | ||
| 11949 | @cindex message du jour | ||
| 11950 | Un objet simili-fichier contenant le « message du jour ». | ||
| 11951 | |||
| 11952 | @item @code{allow-empty-passwords?} (par défaut : @code{#t}) | ||
| 11953 | Permet les mots de passes vides par défaut pour que les utilisateurs | ||
| 11954 | puissent se connecter au compte « root » la première fois après sa création. | ||
| 11955 | |||
| 11956 | @end table | ||
| 11957 | @end deftp | ||
| 11958 | |||
| 11959 | @deffn {Procédure Scheme} mingetty-service @var{config} | ||
| 11960 | Renvoie un service qui lance mingetty en suivant @var{config}, un objet | ||
| 11961 | @code{<mingetty-configuration>}, qui spécifie le tty à lancer entre autres | ||
| 11962 | choses. | ||
| 11963 | @end deffn | ||
| 11964 | |||
| 11965 | @deftp {Type de données} mingetty-configuration | ||
| 11966 | C'est le type de données représentant la configuration de Mingetty, qui | ||
| 11967 | fournit l'implémentation par défaut de l'écran de connexion des consoles | ||
| 11968 | virtuelles. | ||
| 11969 | |||
| 11970 | @table @asis | ||
| 11971 | |||
| 11972 | @item @code{tty} | ||
| 11973 | Le nom de la console sur laquelle tourne ce Mingetty, p.@: ex.@: | ||
| 11974 | @code{"tty1"}. | ||
| 11975 | |||
| 11976 | @item @code{auto-login} (par défaut : @code{#f}) | ||
| 11977 | Lorsque la valeur est vraie, ce champ doit être une chaîne de caractère | ||
| 11978 | dénotant le nom d'utilisateur pour lequel le système se connecte | ||
| 11979 | automatiquement. Lorsque la valeur est @code{#f}, il faut entrer un nom | ||
| 11980 | d'utilisateur et un mot de passe pour se connecter. | ||
| 11981 | |||
| 11982 | @item @code{login-program} (par défaut : @code{#f}) | ||
| 11983 | Ce doit être soit @code{#f}, auquel cas le programme de connexion par défaut | ||
| 11984 | est utilisé (@command{login} de la suite d'outils Shadow), soit une gexp | ||
| 11985 | dénotant le nom d'un programme de connexion. | ||
| 11986 | |||
| 11987 | @item @code{login-pause?} (par défaut : @code{#f}) | ||
| 11988 | Lorsque la valeur est @code{#t} en plus de @var{auto-login}, l'utilisateur | ||
| 11989 | devrai appuyer sur une touche avant que le shell de connexion ne soit lancé. | ||
| 11990 | |||
| 11991 | @item @code{mingetty} (par défaut : @var{mingetty}) | ||
| 11992 | Le paquet Mingetty à utiliser. | ||
| 11993 | |||
| 11994 | @end table | ||
| 11995 | @end deftp | ||
| 11996 | |||
| 11997 | @deffn {Procédure Scheme} agetty-service @var{config} | ||
| 11998 | Renvoie un service pour lancer agetty en suivant @var{config}, un objet | ||
| 11999 | @code{<agetty-configuration>}, qui spécifie le tty à lancer, entre autres | ||
| 12000 | choses. | ||
| 12001 | @end deffn | ||
| 12002 | |||
| 12003 | @deftp {Type de données} agetty-configuration | ||
| 12004 | Ce type de données représente la configuration de agetty, qui implémente | ||
| 12005 | l'écran de connexion des consoles virtuelles et series. Voir la page de | ||
| 12006 | manuel de @code{agetty(8)} pour plus d'informations. | ||
| 12007 | |||
| 12008 | @table @asis | ||
| 12009 | |||
| 12010 | @item @code{tty} | ||
| 12011 | Le nom de la console sur laquelle agetty est lancé p.@: ex.@: | ||
| 12012 | @code{"ttyS0"}. Cet argument est facultatif, il aura par défaut une valeur | ||
| 12013 | raisonnable d'un port série utilisé par le noyau Linux. | ||
| 12014 | |||
| 12015 | Pour cela, s'il y a une valeur pour une option @code{agetty.tty} sur la | ||
| 12016 | ligne de commande du noyau, agetty extraira le nom du périphérique du port | ||
| 12017 | série à partir de cette option. | ||
| 12018 | |||
| 12019 | Sinon et s'il y a une valeur pour une option @code{console} avec un tty sur | ||
| 12020 | la ligne de commande du noyau Linux, agetty extraira le nom du périphérique | ||
| 12021 | du port série et l'utilisera. | ||
| 12022 | |||
| 12023 | Dans les deux cas, agetty laissera les autres paramètres du périphérique | ||
| 12024 | série (baud, etc) sans y toucher — dans l'espoir que Linux leur a assigné | ||
| 12025 | les bonnes valeurs. | ||
| 12026 | |||
| 12027 | @item @code{baud-rate} (par défaut : @code{#f}) | ||
| 12028 | Une chaîne qui contient une liste d'un ou plusieurs taux de baud séparés par | ||
| 12029 | des virgules, en ordre décroissant. | ||
| 12030 | |||
| 12031 | @item @code{term} (par défaut : @code{#f}) | ||
| 12032 | Une chaîne contenant la valeur utilisée pour la variable d'environnement | ||
| 12033 | @code{TERM}. | ||
| 12034 | |||
| 12035 | @item @code{eight-bits?} (par défaut : @code{#f}) | ||
| 12036 | Lorsque la valeur est @code{#t}, le tty est supposé être propre pour les | ||
| 12037 | caractères 8-bit et la détection de parité est désactivée. | ||
| 12038 | |||
| 12039 | @item @code{auto-login} (par défaut : @code{#f}) | ||
| 12040 | Lorsqu'un nom de connexion est passé comme une chaîne de caractères, | ||
| 12041 | l'utilisateur spécifié sera automatiquement connecté sans demande du nom | ||
| 12042 | d'utilisateur ni du mot de passe. | ||
| 12043 | |||
| 12044 | @item @code{no-reset?} (par défaut : @code{#f}) | ||
| 12045 | Lorsque la valeur est @code{#t}, ne vide pas les cflags du terminal (modes | ||
| 12046 | de contrôle). | ||
| 12047 | |||
| 12048 | @item @code{host} (par défaut : @code{#f}) | ||
| 12049 | Cette option accepte une chaîne contenant le « login_host », qui sera écrit | ||
| 12050 | dans le fichier @file{/var/run/utmpx}. | ||
| 12051 | |||
| 12052 | @item @code{remote?} (par défaut : @code{#f}) | ||
| 12053 | Lorsque la valeur est @code{#t} en plus de @var{host}, cette option ajoutera | ||
| 12054 | une option fakehost @code{-r} à la ligne de commande du programme de | ||
| 12055 | connexion spécifié dans @var{login-program}. | ||
| 12056 | |||
| 12057 | @item @code{flow-control?} (par défaut : @code{#f}) | ||
| 12058 | Lorsque la valeur est @code{#t}, active le contrôle de flux matériel | ||
| 12059 | (RTS/CTS). | ||
| 12060 | |||
| 12061 | @item @code{no-issue?} (par défaut : @code{#f}) | ||
| 12062 | Lorsque la valeur est @code{#t}, le contenu du fichier @file{/etc/issue} ne | ||
| 12063 | sera pas affiché avant de présenter l'écran de connexion. | ||
| 12064 | |||
| 12065 | @item @code{init-string} (par défaut : @code{#f}) | ||
| 12066 | Cette option accepte une chaîne de caractères qui sera envoyée au tty ou au | ||
| 12067 | modem avant toute autre chose. Elle peut être utilisée pour initialiser un | ||
| 12068 | modem. | ||
| 12069 | |||
| 12070 | @item @code{no-clear?} (par défaut : @code{#f}) | ||
| 12071 | Lorsque la valeur est @code{#t}, agetty ne nettoiera pas l'écran avant de | ||
| 12072 | montrer l'écran de connexion. | ||
| 12073 | |||
| 12074 | @item @code{login-program} (par défaut : (file-append shadow "/bin/login")) | ||
| 12075 | Cette option doit être soit une gexp dénotant le nom d'un programme de | ||
| 12076 | connexion, soit non définie, auquel cas la valeur par défaut est la commande | ||
| 12077 | @command{login} de la suite d'outils Shadow. | ||
| 12078 | |||
| 12079 | @item @code{local-line} (par défaut : @code{#f}) | ||
| 12080 | Contrôle le drapeau CLOCAL. Cette option accepte l'un des trois symboles | ||
| 12081 | comme argument, @code{'auto}, @code{'always} ou @code{'never}. Si la valeur | ||
| 12082 | est @code{#f}, la valeur par défaut choisie par agetty est @code{'auto}. | ||
| 12083 | |||
| 12084 | @item @code{extract-baud?} (par défaut : @code{#f}) | ||
| 12085 | Lorsque la valeur est @code{#t}, dit à agetty d'essayer d'extraire la taux | ||
| 12086 | de baud depuis les messages de statut produits par certains modems. | ||
| 12087 | |||
| 12088 | @item @code{skip-login?} (par défaut : @code{#f}) | ||
| 12089 | Lorsque la valeur est @code{#t}, ne demande par de nom d'utilisateur. Elle | ||
| 12090 | peut être utilisée avec le champ @var{login-program} pour utiliser des | ||
| 12091 | systèmes de connexion non standards. | ||
| 12092 | |||
| 12093 | @item @code{no-newline?} (par défaut : @code{#f}) | ||
| 12094 | Lorsque la valeur est @code{#t}, n'affiche pas de retour à la ligne avant | ||
| 12095 | d'afficher le fichier @file{/etc/issue}. | ||
| 12096 | |||
| 12097 | @c Is this dangerous only when used with login-program, or always? | ||
| 12098 | @item @code{login-options} (par défaut : @code{#f}) | ||
| 12099 | Cette option accepte une chaîne de caractères contenant des options passées | ||
| 12100 | au programme login. Lorsqu'utilisé avec @var{login-program}, soyez | ||
| 12101 | conscient qu'un utilisateur malicieux pourrait essayer de rentrer un nom | ||
| 12102 | d'utilisateur contenant des options incluses qui pourraient être analysées | ||
| 12103 | par le programme de connexion. | ||
| 12104 | |||
| 12105 | @item @code{login-pause} (par défaut : @code{#f}) | ||
| 12106 | Lorsque la valeur est @code{#t}, attend qu'une touche soit appuyée avant de | ||
| 12107 | montrer l'écran de connexion. Cela peut être utilisé avec @var{auto-login} | ||
| 12108 | pour sauvegarder de la mémoire en lançant les shells de manière fainéante. | ||
| 12109 | |||
| 12110 | @item @code{chroot} (par défaut : @code{#f}) | ||
| 12111 | Change de racine dans le répertoire donné. Cette option accepte un chemin | ||
| 12112 | en tant que chaîne de caractères. | ||
| 12113 | |||
| 12114 | @item @code{hangup?} (par défaut : @code{#f}) | ||
| 12115 | Utilise l'appel système Linux @code{vhangup} pour raccrocher virtuellement | ||
| 12116 | le terminal spécifié. | ||
| 12117 | |||
| 12118 | @item @code{keep-baud?} (par défaut : @code{#f}) | ||
| 12119 | Lorsque la valeur est @code{#t}, essaye de garder le taux de baud existant. | ||
| 12120 | Les taux de baud de @var{baud-rate} sont utilisés lorsque agetty reçoit un | ||
| 12121 | caractères @key{BREAK}. | ||
| 12122 | |||
| 12123 | @item @code{timeout} (par défaut : @code{#f}) | ||
| 12124 | Lorsque la valeur est un nombre entier, termine la session si aucun nom | ||
| 12125 | d'utilisateur n'a pu être lu après @var{timeout} secondes. | ||
| 12126 | |||
| 12127 | @item @code{detect-case?} (par défaut : @code{#f}) | ||
| 12128 | Lorsque la valeur est @code{#t}, active le support pour la détection des | ||
| 12129 | terminaux en majuscule uniquement. Ce paramètre détectera qu'un nom | ||
| 12130 | d'utilisateur qui ne contient que des majuscules indique un terminal en | ||
| 12131 | majuscule et effectuera des conversion de majuscule en minuscule. Remarquez | ||
| 12132 | que cela ne fonctionne pas avec les caractères unicode. | ||
| 12133 | |||
| 12134 | @item @code{wait-cr?} (par défaut : @code{#f}) | ||
| 12135 | Lorsque la valeur est @code{#t}, attend que l'utilisateur ou le modem envoie | ||
| 12136 | un retour chariot ou un saut de ligne avant d'afficher @file{/etc/issue} ou | ||
| 12137 | l'écran de connexion. Cela est typiquement utilisé avec l'option | ||
| 12138 | @var{init-string}. | ||
| 12139 | |||
| 12140 | @item @code{no-hints?} (par défaut : @code{#f}) | ||
| 12141 | Lorsque la valeur est @code{#t}, n'affiche par les astuces à propos des | ||
| 12142 | verrouillages numériques, majuscule et défilement. | ||
| 12143 | |||
| 12144 | @item @code{no-hostname?} (par défaut : @code{#f}) | ||
| 12145 | Par défaut, le nom d'hôte est affiché. Lorsque la valeur est @code{#t}, | ||
| 12146 | aucun nom d'hôte ne sera affiché. | ||
| 12147 | |||
| 12148 | @item @code{long-hostname?} (par défaut : @code{#f}) | ||
| 12149 | Par défaut, le nom d'hôte n'est affiché qu'après le premier point. Lorsque | ||
| 12150 | la valeur est @code{#t}, le nom d'hôte pleinement qualifié renvoyé par | ||
| 12151 | @code{gethostname} ou @code{getaddrinfo} sera affiché. | ||
| 12152 | |||
| 12153 | @item @code{erase-characters} (par défaut : @code{#f}) | ||
| 12154 | Cette option accepte une chaîne de caractères de caractères supplémentaires | ||
| 12155 | qui devraient être interprétés comme des effacements lorsque l'utilisateur | ||
| 12156 | les tape dans leur nom d'utilisateur. | ||
| 12157 | |||
| 12158 | @item @code{kill-characters} (par défaut : @code{#f}) | ||
| 12159 | Cette option accepte une chaîne de caractères qui devrait être interprété | ||
| 12160 | comme signifiant « ignore tous les caractères précédent » (aussi appelé un | ||
| 12161 | caractère « kill ») lorsque l'utilisateur tape son nom d'utilisateur. | ||
| 12162 | |||
| 12163 | @item @code{chdir} (par défaut : @code{#f}) | ||
| 12164 | Cette option accepte, en tant que chaîne de caractères, un chemin vers un | ||
| 12165 | répertoire dans lequel se trouvera la commande avant la connexion. | ||
| 12166 | |||
| 12167 | @item @code{delay} (par défaut : @code{#f}) | ||
| 12168 | Cette option accepte, en tant qu'entier, le nombre de secondes à attendre | ||
| 12169 | avant d'ouvrir le tty et afficher l'écran de connexion. | ||
| 12170 | |||
| 12171 | @item @code{nice} (par défaut : @code{#f}) | ||
| 12172 | Cette option accepte, en tant qu'entier, la valeur « nice » avec laquelle le | ||
| 12173 | programme @command{login} tourne. | ||
| 12174 | |||
| 12175 | @item @code{extra-options} (par défaut : @code{'()}) | ||
| 12176 | Cette option fournie un « mécanisme de secours » pour que l'utilisateur | ||
| 12177 | puisse ajouter des arguments de la ligne de commande arbitraires à | ||
| 12178 | @command{agetty} comme une liste de chaînes de caractères. | ||
| 12179 | |||
| 12180 | @end table | ||
| 12181 | @end deftp | ||
| 12182 | |||
| 12183 | @deffn {Procédure Scheme} kmscon-service-type @var{config} | ||
| 12184 | Renvoie un service qui lance | ||
| 12185 | @uref{https://www.freedesktop.org/wiki/Software/kmscon,kmscon} d'après | ||
| 12186 | @var{config}, un objet @code{<kmscon-configuration>}, qui spécifie le tty | ||
| 12187 | sur lequel tourner, entre autres choses. | ||
| 12188 | @end deffn | ||
| 12189 | |||
| 12190 | @deftp {Type de données} kmscon-configuration | ||
| 12191 | C'est le type de données représentant la configuration de Kscon, qui | ||
| 12192 | implémente l'écran de chargement de la console virtuelle. | ||
| 12193 | |||
| 12194 | @table @asis | ||
| 12195 | |||
| 12196 | @item @code{virtual-terminal} | ||
| 12197 | Le nom de la console sur laquelle Kmscon tourne, p.@: ex.@: @code{"tty1"}. | ||
| 12198 | |||
| 12199 | @item @code{login-program} (par défaut : @code{#~(string-append #$shadow "/bin/login")}) | ||
| 12200 | Une gexp qui dénote le nom d'un programme de connexion. le programme de | ||
| 12201 | connexion par défaut est @command{login} de la suite d'outils Shadow. | ||
| 12202 | |||
| 12203 | @item @code{login-arguments} (par défaut : @code{'("-p")}) | ||
| 12204 | Une liste d'arguments à passer à @command{login}. | ||
| 12205 | |||
| 12206 | @item @code{auto-login} (par défaut : @code{#f}) | ||
| 12207 | Lorsqu'un nom de connexion est passé comme une chaîne de caractères, | ||
| 12208 | l'utilisateur spécifié sera automatiquement connecté sans demande du nom | ||
| 12209 | d'utilisateur ni du mot de passe. | ||
| 12210 | |||
| 12211 | @item @code{hardware-acceleration?} (par défaut : #f) | ||
| 12212 | S'il faut utiliser l'accélération matérielle. | ||
| 12213 | |||
| 12214 | @item @code{kmscon} (par défaut : @var{kmscon}) | ||
| 12215 | Le paquet Kmscon à utiliser. | ||
| 12216 | |||
| 12217 | @end table | ||
| 12218 | @end deftp | ||
| 12219 | |||
| 12220 | @cindex name service cache daemon | ||
| 12221 | @cindex nscd | ||
| 12222 | @deffn {Procédure Scheme} nscd-service [@var{config}] [#:glibc glibc] @ | ||
| 12223 | [#:name-services '()] | ||
| 12224 | Renvoie un service qui lance le démon de cache de services de noms de la | ||
| 12225 | libc (nscd) avec la @var{config} donnée — un objet | ||
| 12226 | @code{<nscd-configuration>}. @xref{Name Service Switch}, pour un exemple. | ||
| 12227 | |||
| 12228 | Parce que c'est pratique, le service du Shepherd pour nscd fournit les | ||
| 12229 | actions suivantes : | ||
| 12230 | |||
| 12231 | @table @code | ||
| 12232 | @item invalidate | ||
| 12233 | @cindex invalidation du cache, nscd | ||
| 12234 | @cindex nscd, invalidation du cache | ||
| 12235 | Cela invalide le cache donné. Par exemple, en laçant : | ||
| 12236 | |||
| 12237 | @example | ||
| 12238 | herd invalidate nscd hosts | ||
| 12239 | @end example | ||
| 12240 | |||
| 12241 | @noindent | ||
| 12242 | on invalide le cache de noms d'hôtes de nscd. | ||
| 12243 | |||
| 12244 | @item statistiques | ||
| 12245 | Lancer @command{herd statistics nscd} affiche des informations sur | ||
| 12246 | l'utilisation de nscd et des caches. | ||
| 12247 | @end table | ||
| 12248 | |||
| 12249 | @end deffn | ||
| 12250 | |||
| 12251 | @defvr {Variable Scheme} %nscd-default-configuration | ||
| 12252 | C'est la valeur par défaut de @code{<nscd-configuration>} (voir plus bas) | ||
| 12253 | utilisée par @code{nscd-service}. Elle utilise les caches définis par | ||
| 12254 | @var{%nscd-default-caches} ; voir plus bas. | ||
| 12255 | @end defvr | ||
| 12256 | |||
| 12257 | @deftp {Type de données} nscd-configuration | ||
| 12258 | C'est le type de données qui représente la configuration du démon de cache | ||
| 12259 | de services de noms (nscd). | ||
| 12260 | |||
| 12261 | @table @asis | ||
| 12262 | |||
| 12263 | @item @code{name-services} (par défaut : @code{'()}) | ||
| 12264 | Liste des paquets dénotant des @dfn{services de noms} qui doivent être | ||
| 12265 | visible pour nscd, p.@: ex.@: @code{(list @var{nss-mdns})}. | ||
| 12266 | |||
| 12267 | @item @code{glibc} (par défaut : @var{glibc}) | ||
| 12268 | Objet de paquet qui dénote la Bibliothèque C de GNU qui fournit la commande | ||
| 12269 | @command{nscd}. | ||
| 12270 | |||
| 12271 | @item @code{log-file} (par défaut : @code{"/var/log/nscd.log"}) | ||
| 12272 | Nom du fichier journal de nscd. C'est là que les sorties de débogage sont | ||
| 12273 | envoyée lorsque @code{debug-level} est strictement positif. | ||
| 12274 | |||
| 12275 | @item @code{debug-level} (par défaut : @code{0}) | ||
| 12276 | Entier qui dénote le niveau de débogage. Les entiers les plus grands | ||
| 12277 | signifient plus de sortie de débogage. | ||
| 12278 | |||
| 12279 | @item @code{caches} (par défaut : @var{%nscd-default-caches}) | ||
| 12280 | Liste d'objets @code{<nscd-cache>} qui dénotent des choses à mettre en cache | ||
| 12281 | ; voir plus bas. | ||
| 12282 | |||
| 12283 | @end table | ||
| 12284 | @end deftp | ||
| 12285 | |||
| 12286 | @deftp {Type de données} nscd-cache | ||
| 12287 | Type de données représentant une base de données de cache de nscd et ses | ||
| 12288 | paramètres. | ||
| 12289 | |||
| 12290 | @table @asis | ||
| 12291 | |||
| 12292 | @item @code{database} | ||
| 12293 | C'est un symbole qui représente le nom de la base de donnée à mettre en | ||
| 12294 | cache. Les valeurs valide sont @code{passwd}, @code{group}, @code{hosts} et | ||
| 12295 | @code{services} qui désignent les bases de données NSS correspondantes | ||
| 12296 | (@pxref{NSS Basics,,, libc, The GNU C Library Reference Manual}). | ||
| 12297 | |||
| 12298 | @item @code{positive-time-to-live} | ||
| 12299 | @itemx @code{negative-time-to-live} (par défaut : @code{20}) | ||
| 12300 | Un entier qui représente le nombre de secondes pendant lesquelles un | ||
| 12301 | résultat positif ou négatif reste en cache. | ||
| 12302 | |||
| 12303 | @item @code{check-files?} (par défaut : @code{#t}) | ||
| 12304 | Indique s'il faut vérifier des mises à jours dans les fichiers correspondant | ||
| 12305 | à @var{database}. | ||
| 12306 | |||
| 12307 | Par exemple, lorsque @var{database} est @code{hosts}, ce drapeau indique à | ||
| 12308 | nscd de vérifier s'il y a des mises à jour de @file{/etc/hosts} et de les | ||
| 12309 | prendre en compte. | ||
| 12310 | |||
| 12311 | @item @code{persistent?} (par défaut : @code{#t}) | ||
| 12312 | Indique si le cache devrait être stocké de manière persistante sur le | ||
| 12313 | disque. | ||
| 12314 | |||
| 12315 | @item @code{shared?} (par défaut : @code{#t}) | ||
| 12316 | Indique si le cache devrait être partagé entre les utilisateurs. | ||
| 12317 | |||
| 12318 | @item @code{max-database-size} (par défaut : 32@tie{}MiB) | ||
| 12319 | Taille maximale en octets de la base de données en cache. | ||
| 12320 | |||
| 12321 | @c XXX: 'suggested-size' and 'auto-propagate?' seem to be expert | ||
| 12322 | @c settings, so leave them out. | ||
| 12323 | |||
| 12324 | @end table | ||
| 12325 | @end deftp | ||
| 12326 | |||
| 12327 | @defvr {Variable Scheme} %nscd-default-caches | ||
| 12328 | Liste d'objets @code{<nscd-cache>} utilisés par défaut par | ||
| 12329 | @code{nscd-configuration} (voir plus haut). | ||
| 12330 | |||
| 12331 | Elle active la mise en cache persistante et agressive des recherches de | ||
| 12332 | services et de noms d'hôtes. Ces derniers fournissent une recherche de noms | ||
| 12333 | d'hôtes plus performante, résiliente face à des serveurs de noms peu fiables | ||
| 12334 | et une protection de votre vie privée plus efficace — souvent le résultat | ||
| 12335 | des recherches de noms d'hôtes sont dans le cache local, donc les serveurs | ||
| 12336 | de nom externes n'ont même pas besoin d'être questionnés. | ||
| 12337 | @end defvr | ||
| 12338 | |||
| 12339 | @anchor{syslog-configuration-type} | ||
| 12340 | @cindex syslog | ||
| 12341 | @cindex logging | ||
| 12342 | @deftp {Type de données} syslog-configuration | ||
| 12343 | Ce type de données représente la configuration du démon syslog. | ||
| 12344 | |||
| 12345 | @table @asis | ||
| 12346 | @item @code{syslogd} (par défaut : @code{#~(string-append #$inetutils "/libexec/syslogd")}) | ||
| 12347 | Le démon syslog à utiliser. | ||
| 12348 | |||
| 12349 | @item @code{config-file} (par défaut : @code{%default-syslog.conf}) | ||
| 12350 | Le fichier de configuration de syslog à utiliser. | ||
| 12351 | |||
| 12352 | @end table | ||
| 12353 | @end deftp | ||
| 12354 | |||
| 12355 | @anchor{syslog-service} | ||
| 12356 | @cindex syslog | ||
| 12357 | @deffn {Procédure Scheme} syslog-service @var{config} | ||
| 12358 | Renvoie un service qui lance un démon syslog en suivant @var{config}. | ||
| 12359 | |||
| 12360 | @xref{syslogd invocation,,, inetutils, GNU Inetutils}, pour plus | ||
| 12361 | d'informations sur la syntaxe du fichier de configuration. | ||
| 12362 | @end deffn | ||
| 12363 | |||
| 12364 | @defvr {Variable Scheme} guix-service-type | ||
| 12365 | C'est le type de service qui lance le démon de construction, | ||
| 12366 | @command{guix-daemon} (@pxref{Invoquer guix-daemon}). Sa valeur doit être | ||
| 12367 | un enregistrement @code{guix-configuration} décrit plus bas. | ||
| 12368 | @end defvr | ||
| 12369 | |||
| 12370 | @anchor{guix-configuration-type} | ||
| 12371 | @deftp {Type de données} guix-configuration | ||
| 12372 | Ce type de données représente la configuration du démon de construction de | ||
| 12373 | Guix. @xref{Invoquer guix-daemon} pour plus d'informations. | ||
| 12374 | |||
| 12375 | @table @asis | ||
| 12376 | @item @code{guix} (par défaut : @var{guix}) | ||
| 12377 | Le paquet Guix à utiliser. | ||
| 12378 | |||
| 12379 | @item @code{build-group} (par défaut : @code{"guixbuild"}) | ||
| 12380 | Nom du groupe des comptes utilisateurs de construction. | ||
| 12381 | |||
| 12382 | @item @code{build-accounts} (par défaut : @code{10}) | ||
| 12383 | Nombre de comptes utilisateurs de construction à créer. | ||
| 12384 | |||
| 12385 | @item @code{authorize-key?} (par défaut : @code{#t}) | ||
| 12386 | @cindex substituts, autorisations | ||
| 12387 | Indique s'il faut autoriser ou non les clefs de substituts listées dans | ||
| 12388 | @code{authorize-keys} — par défaut celle de @code{@value{SUBSTITUTE-SERVER}} | ||
| 12389 | (@pxref{Substituts}). | ||
| 12390 | |||
| 12391 | @vindex %default-authorized-guix-keys | ||
| 12392 | @item @code{authorized-keys} (par défaut : @var{%default-authorized-guix-keys}) | ||
| 12393 | La liste des fichiers de clefs autorisées pour les imports d'archives, en | ||
| 12394 | tant que liste de gexps sous forme de chaînes (@pxref{Invoquer guix archive}). Par défaut, elle contient celle de | ||
| 12395 | @code{@value{SUBSTITUTE-SERVER}} (@pxref{Substituts}). | ||
| 12396 | |||
| 12397 | @item @code{use-substitutes?} (par défaut : @code{#t}) | ||
| 12398 | S'il faut utiliser les substituts. | ||
| 12399 | |||
| 12400 | @item @code{substitute-urls} (par défaut : @var{%default-substitute-urls}) | ||
| 12401 | La liste des URL où trouver des substituts par défaut. | ||
| 12402 | |||
| 12403 | @item @code{max-silent-time} (par défaut : @code{0}) | ||
| 12404 | @itemx @code{timeout} (par défaut : @code{0}) | ||
| 12405 | Le nombre de secondes de silence et le nombre de secondes d'inactivité, | ||
| 12406 | respectivement, après lesquelles un processus de construction son délai | ||
| 12407 | d'attente. Une valeur de zéro désactive le délai d'attente. | ||
| 12408 | |||
| 12409 | @item @code{log-compression} (par défaut : @code{'bzip2}) | ||
| 12410 | Le type de compression utilisé par les journaux de construction — parmi | ||
| 12411 | @code{gzip}, @code{bzip2} et @code{none}. | ||
| 12412 | |||
| 12413 | @item @code{extra-options} (par défaut : @code{'()}) | ||
| 12414 | Liste d'options supplémentaires de la ligne de commande pour | ||
| 12415 | @command{guix-daemon}. | ||
| 12416 | |||
| 12417 | @item @code{log-file} (par défaut : @code{"/var/log/guix-daemon.log"}) | ||
| 12418 | Le fichier où les sorties standard et d'erreur de @command{guix-daemon} sont | ||
| 12419 | écrites. | ||
| 12420 | |||
| 12421 | @item @code{http-proxy} (par défaut : @code{#f}) | ||
| 12422 | Le serveur mandataire HTTP à utiliser pour télécharger les dérivations à | ||
| 12423 | sortie fixe et les substituts. | ||
| 12424 | |||
| 12425 | @item @code{tmpdir} (par défaut : @code{#f}) | ||
| 12426 | Un répertoire où @command{guix-daemon} effectuera ses constructions. | ||
| 12427 | |||
| 12428 | @end table | ||
| 12429 | @end deftp | ||
| 12430 | |||
| 12431 | @deffn {Procédure Scheme} udev-service [#:udev @var{eudev} #:rules @code{'()}] | ||
| 12432 | Lance @var{udev}, qui rempli le répertoire @file{/dev} dynamiquement. Les | ||
| 12433 | règles udev peuvent être fournies comme une liste de fichier via la variable | ||
| 12434 | @var{rules}. Les procédures @var{udev-rule} et @var{file->udev-rule} de | ||
| 12435 | @code{(gnu services base)} simplifient la création de ces fichiers de règle. | ||
| 12436 | @end deffn | ||
| 12437 | |||
| 12438 | @deffn {Procédure Scheme} udev-rule [@var{file-name} @var{contents}] | ||
| 12439 | Renvoie un fichier de règle udev nommé @var{file-name} contenant les règles | ||
| 12440 | définie par le littéral @var{contents}. | ||
| 12441 | |||
| 12442 | Dans l'exemple suivant, on définie une règle pour un périphérique USB qui | ||
| 12443 | sera stockée dans le fichier @file{90-usb-thing.rules}. La règle lance un | ||
| 12444 | script à la détection du périphérique USB avec l'identifiant de produit | ||
| 12445 | donné. | ||
| 12446 | |||
| 12447 | @example | ||
| 12448 | (define %example-udev-rule | ||
| 12449 | (udev-rule | ||
| 12450 | "90-usb-thing.rules" | ||
| 12451 | (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", " | ||
| 12452 | "ATTR@{product@}==\"Example\", " | ||
| 12453 | "RUN+=\"/path/to/script\""))) | ||
| 12454 | @end example | ||
| 12455 | |||
| 12456 | La commande @command{herd rules udev}, en tant que root, renvoie le nom du | ||
| 12457 | répertoire contenant toutes les règles udev actives. | ||
| 12458 | @end deffn | ||
| 12459 | |||
| 12460 | Ici on montre comment le service @var{udev-service} par défaut peut être | ||
| 12461 | étendu avec cette règle. | ||
| 12462 | |||
| 12463 | @example | ||
| 12464 | (operating-system | ||
| 12465 | ;; @dots{} | ||
| 12466 | (services | ||
| 12467 | (modify-services %desktop-services | ||
| 12468 | (udev-service-type config => | ||
| 12469 | (udev-configuration (inherit config) | ||
| 12470 | (rules (append (udev-configuration-rules config) | ||
| 12471 | (list %example-udev-rule)))))))) | ||
| 12472 | @end example | ||
| 12473 | |||
| 12474 | @deffn {Procédure Scheme} file->udev-rule [@var{file-name} @var{file}] | ||
| 12475 | Renvoie un fichier udev nommé @var{file-name} contenant les règles définies | ||
| 12476 | dans @var{file}, un objet simili-fichier. | ||
| 12477 | |||
| 12478 | L'exemple suivant montre comment utiliser un fichier de règles existant. | ||
| 12479 | |||
| 12480 | @example | ||
| 12481 | (use-modules (guix download) ;pour url-fetch | ||
| 12482 | (guix packages) ;pour origin | ||
| 12483 | ;; @dots{}) | ||
| 12484 | |||
| 12485 | (define %android-udev-rules | ||
| 12486 | (file->udev-rule | ||
| 12487 | "51-android-udev.rules" | ||
| 12488 | (let ((version "20170910")) | ||
| 12489 | (origin | ||
| 12490 | (method url-fetch) | ||
| 12491 | (uri (string-append "https://raw.githubusercontent.com/M0Rf30/" | ||
| 12492 | "android-udev-rules/" version "/51-android.rules")) | ||
| 12493 | (sha256 | ||
| 12494 | (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003")))))) | ||
| 12495 | @end example | ||
| 12496 | @end deffn | ||
| 12497 | |||
| 12498 | En plus, les définitions des paquets de Guix peuvent être inclus dans | ||
| 12499 | @var{rules} pour étendre les règles avec les définitions trouvées dans leur | ||
| 12500 | sous-répertoire @file{lib/udev/rules.d}. Au lieu de l'exemple | ||
| 12501 | @var{file->udev-rule} précédent, on aurait pu utiliser le paquet | ||
| 12502 | @var{android-udev-rules} qui existe dans le module @code{(gnu packages | ||
| 12503 | android)}. | ||
| 12504 | |||
| 12505 | L'exemple suivant montre comment utiliser le paquet @var{android-udev-rules} | ||
| 12506 | pour que l'outil Android @command{adb} puisse détecter les appareils sans | ||
| 12507 | privilège root. Il détaille aussi comment créer le groupe @code{adbusers}, | ||
| 12508 | requis pour le bon fonctionnement des règles définies dans le paquet | ||
| 12509 | @var{android-udev-rules}. Pour créer ce groupe, on doit le définir dans les | ||
| 12510 | @var{supplementary-groups} de la déclaration @var{user-account} ainsi que | ||
| 12511 | dans le champ @var{groups} de l'enregistrement @var{operating-system}. | ||
| 12512 | |||
| 12513 | @example | ||
| 12514 | (use-modules (gnu packages android) ;for android-udev-rules | ||
| 12515 | (gnu system shadow) ;for user-group | ||
| 12516 | ;; @dots{}) | ||
| 12517 | |||
| 12518 | (operating-system | ||
| 12519 | ;; @dots{} | ||
| 12520 | (users (cons (user-acount | ||
| 12521 | ;; @dots{} | ||
| 12522 | (supplementary-groups | ||
| 12523 | '("adbusers" ;for adb | ||
| 12524 | "wheel" "netdev" "audio" "video")) | ||
| 12525 | ;; @dots{}))) | ||
| 12526 | |||
| 12527 | (groups (cons (user-group (system? #t) (name "adbusers")) | ||
| 12528 | %base-groups)) | ||
| 12529 | |||
| 12530 | ;; @dots{} | ||
| 12531 | |||
| 12532 | (services | ||
| 12533 | (modify-services %desktop-services | ||
| 12534 | (udev-service-type | ||
| 12535 | config => | ||
| 12536 | (udev-configuration (inherit config) | ||
| 12537 | (rules (cons android-udev-rules | ||
| 12538 | (udev-configuration-rules config)))))))) | ||
| 12539 | @end example | ||
| 12540 | |||
| 12541 | @defvr {Variable Scheme} urandom-seed-service-type | ||
| 12542 | Garde de l'entropie dans @var{%random-seed-file} pour démarrer | ||
| 12543 | @file{/dev/urandom} au redémarrage. Ce service essaye aussi de démarrer | ||
| 12544 | @file{/dev/urandom} à partir de @file{/dev/hwrng} au démarrage si | ||
| 12545 | @file{/dev/hwrng} existe et peut être lu. | ||
| 12546 | @end defvr | ||
| 12547 | |||
| 12548 | @defvr {Variable Scheme} %random-seed-file | ||
| 12549 | C'est le nom du fichier où des octets aléatoires sont sauvegardés par | ||
| 12550 | @var{urandom-seed-service} pour démarrer @file{/dev/urandom} au | ||
| 12551 | redémarrage. Sa valeur par défaut est @file{/var/lib/random-seed}. | ||
| 12552 | @end defvr | ||
| 12553 | |||
| 12554 | @cindex souris | ||
| 12555 | @cindex gpm | ||
| 12556 | @defvr {Variable Scheme} gpm-service-type | ||
| 12557 | C'est le type du service qui lance GPM, le @dfn{démon de souris à but | ||
| 12558 | général}, qui fournit le support de la souris sur la console Linux. GPM | ||
| 12559 | permet aux utilisateurs d'utiliser la souris dans la console, entre autres | ||
| 12560 | pour sélectionner, copier et coller du texte. | ||
| 12561 | |||
| 12562 | La valeur pour les services de ce type doit être un @code{gpm-configuration} | ||
| 12563 | (voir plus bas). Ce service ne fait pas partie de @var{%base-services}. | ||
| 12564 | @end defvr | ||
| 12565 | |||
| 12566 | @deftp {Type de données} gpm-configuration | ||
| 12567 | Type de données représentant la configuration de GPM. | ||
| 12568 | |||
| 12569 | @table @asis | ||
| 12570 | @item @code{options} (par défaut : @code{%default-gpm-options}) | ||
| 12571 | Les options de la ligne de commande à passer à @command{gpm}. L'ensemble | ||
| 12572 | des options par défaut dit à @command{gpm} d'écouter les événements de la | ||
| 12573 | souris dans @file{/dev/input/mice}. @xref{Command Line,,, gpm, gpm manual}, | ||
| 12574 | pour plus d'informations. | ||
| 12575 | |||
| 12576 | @item @code{gpm} (par défaut : @code{gpm}) | ||
| 12577 | Le paquet GPM à utiliser. | ||
| 12578 | |||
| 12579 | @end table | ||
| 12580 | @end deftp | ||
| 12581 | |||
| 12582 | @anchor{guix-publish-service-type} | ||
| 12583 | @deffn {Variable Scheme} guix-publish-service-type | ||
| 12584 | C'est le type de service pour @command{guix publish} (@pxref{Invoquer guix publish}). Sa valeur doit être un objet @code{guix-configuration} décrit | ||
| 12585 | plus bas. | ||
| 12586 | |||
| 12587 | Ce service suppose que @file{/etc/guix} contient déjà une paire de clefs | ||
| 12588 | créée par @command{guix archive --generate-key} (@pxref{Invoquer guix archive}). Si ce n'est pas le cas, le service ne démarrera pas. | ||
| 12589 | @end deffn | ||
| 12590 | |||
| 12591 | @deftp {Type de données} guix-publish-configuration | ||
| 12592 | Le type de données représentant la configuration du service @code{guix | ||
| 12593 | publish}. | ||
| 12594 | |||
| 12595 | @table @asis | ||
| 12596 | @item @code{guix} (par défaut : @code{guix}) | ||
| 12597 | Le paquet Guix à utiliser. | ||
| 12598 | |||
| 12599 | @item @code{port} (par défaut : @code{80}) | ||
| 12600 | Le port TCP sur lequel écouter les connexions. | ||
| 12601 | |||
| 12602 | @item @code{host} (par défaut : @code{"localhost"}) | ||
| 12603 | L'hôte (et donc, l'interface réseau) sur lequel écouter. Utilisez | ||
| 12604 | @code{"0.0.0.0"} pour écouter sur toutes les interfaces réseaux. | ||
| 12605 | |||
| 12606 | @item @code{compression-level} (par défaut : @code{3}) | ||
| 12607 | Le niveau de compression gzip auquel les substituts sont compressés. | ||
| 12608 | Utilisez @code{0} pour désactiver complètement la compression, et @code{9} | ||
| 12609 | pour avoir le meilleur taux de compression contre une plus grande | ||
| 12610 | utilisation du CPU. | ||
| 12611 | |||
| 12612 | @item @code{nar-path} (par défaut : @code{"nar"}) | ||
| 12613 | Le chemin d'URL où les « nars » se trouvent. @xref{Invoquer guix publish, | ||
| 12614 | @code{--nar-path}}, pour des détails. | ||
| 12615 | |||
| 12616 | @item @code{cache} (par défaut : @code{#f}) | ||
| 12617 | Lorsque la valeur est @code{#f}, désactive le cache et génère les archives à | ||
| 12618 | la demande. Sinon, cela devrait être le nom d'un répertoire — p.@: ex.@: | ||
| 12619 | @code{"/var/cache/guix/publish"} — où @command{guix publish} gère le cache | ||
| 12620 | des archives et des métadonnées prêtes à être envoyées. @xref{Invoquer guix publish, @option{--cache}}, pour plus d'informations sur les compromis | ||
| 12621 | impliqués. | ||
| 12622 | |||
| 12623 | @item @code{workers} (par défaut : @code{#f}) | ||
| 12624 | Lorsque la valeur est un entier, c'est le nombre de threads de travail | ||
| 12625 | utilisés pour le cache ; lorsque la valeur est @code{#f}, le nombre de | ||
| 12626 | processeurs est utilisé. @xref{Invoquer guix publish, @option{--workers}}, | ||
| 12627 | pour plus d'informations. | ||
| 12628 | |||
| 12629 | @item @code{ttl} (par défaut : @code{#f}) | ||
| 12630 | Lorsque la valeur est un entier, il dénote la @dfn{durée de vie} en secondes | ||
| 12631 | des archives publiées. @xref{Invoquer guix publish, @option{--ttl}}, pour | ||
| 12632 | plus d'informations. | ||
| 12633 | @end table | ||
| 12634 | @end deftp | ||
| 12635 | |||
| 12636 | @anchor{rngd-service} | ||
| 12637 | @deffn {Procédure Scheme} rngd-service [#:rng-tools @var{rng-tools}] @ | ||
| 12638 | [#:device "/dev/hwrng"] | ||
| 12639 | Renvoie un service qui lance le programme @command{rngd} de @var{rng-tools} | ||
| 12640 | pour ajouter @var{device} à la réserve d'entropie du noyau. Le service | ||
| 12641 | échouera si @var{device} n'existe pas. | ||
| 12642 | @end deffn | ||
| 12643 | |||
| 12644 | @anchor{pam-limits-service} | ||
| 12645 | @cindex limites de session | ||
| 12646 | @cindex ulimit | ||
| 12647 | @cindex priorités | ||
| 12648 | @cindex temps réel | ||
| 12649 | @cindex jackd | ||
| 12650 | @deffn {Procédure Scheme} pam-limits-service [#:limits @code{'()}] | ||
| 12651 | |||
| 12652 | Renvoie un service qui installe un fichier de configuration pour le | ||
| 12653 | @uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html, module | ||
| 12654 | @code{pam_limits}}. La procédure prend éventuellement une liste de valeurs | ||
| 12655 | @code{pam-limits-entry} qui peuvent être utilisées pour spécifier les | ||
| 12656 | limites @code{ulimit} et les priorités des sessions utilisateurs. | ||
| 12657 | |||
| 12658 | La définition de limites suivante défini deux limites matérielles et | ||
| 12659 | logicielles pour toutes les sessions connectées des utilisateurs du groupe | ||
| 12660 | @code{realtime} : | ||
| 12661 | |||
| 12662 | @example | ||
| 12663 | (pam-limits-service | ||
| 12664 | (list | ||
| 12665 | (pam-limits-entry "@@realtime" 'both 'rtprio 99) | ||
| 12666 | (pam-limits-entry "@@realtime" 'both 'memlock 'unlimited))) | ||
| 12667 | @end example | ||
| 12668 | |||
| 12669 | La première entrée augment la priorité en temps réel maximale des processus | ||
| 12670 | non privilégiés ; la deuxième entrée abandonne les restrictions sur l'espace | ||
| 12671 | d'adressage maximal qui peut être verrouillé en mémoire. Ces paramètres | ||
| 12672 | sont souvent utilisés sur les systèmes audio temps-réel. | ||
| 12673 | @end deffn | ||
| 12674 | |||
| 12675 | @node Exécution de tâches planifiées | ||
| 12676 | @subsection Exécution de tâches planifiées | ||
| 12677 | |||
| 12678 | @cindex cron | ||
| 12679 | @cindex mcron | ||
| 12680 | @cindex tâches planifiées | ||
| 12681 | Le module @code{(gnu services mcron)} fournit une interface pour | ||
| 12682 | GNU@tie{}mcron, un démon qui lance des tâches planifiées (@pxref{Top,,, | ||
| 12683 | mcron, GNU@tie{}mcron}). GNU@tie{}mcron est similaire au démon Unix | ||
| 12684 | traditionnel @command{cron} ; la principale différence est qu'il est | ||
| 12685 | implémenté en Guile Scheme, qui fournit beaucoup de flexibilité lors de la | ||
| 12686 | spécification de la planification des tâches et de leurs actions. | ||
| 12687 | |||
| 12688 | L'exemple en dessous définit un système d'exploitation qui lance les | ||
| 12689 | commandes @command{updatebd} (@pxref{Invoking updatedb,,, find, Finding | ||
| 12690 | Files}) et @command{guix gc} (@pxref{Invoquer guix gc}) tous les jours, | ||
| 12691 | ainsi que la commande @command{mkid} en tant qu'utilisateur non privilégié | ||
| 12692 | (@pxref{mkid invocation,,, idutils, ID Database Utilities}). Il utilise des | ||
| 12693 | gexps pour introduire des définitions de tâches qui sont passées à mcron | ||
| 12694 | (@pxref{G-Expressions}). | ||
| 12695 | |||
| 12696 | @lisp | ||
| 12697 | (use-modules (guix) (gnu) (gnu services mcron)) | ||
| 12698 | (use-package-modules base idutils) | ||
| 12699 | |||
| 12700 | (define updatedb-job | ||
| 12701 | ;; Lance « updatedb » à 3h du matin chaque jour. Ici nous spécifions | ||
| 12702 | ;; l'action de la tâche comme une procédure Scheme. | ||
| 12703 | #~(job '(next-hour '(3)) | ||
| 12704 | (lambda () | ||
| 12705 | (execl (string-append #$findutils "/bin/updatedb") | ||
| 12706 | "updatedb" | ||
| 12707 | "--prunepaths=/tmp /var/tmp /gnu/store")))) | ||
| 12708 | |||
| 12709 | (define garbage-collector-job | ||
| 12710 | ;; Lance le ramasse-miettes tous les jours à minuit cinq. | ||
| 12711 | ;; L'action de la tâche est une commande shell. | ||
| 12712 | #~(job "5 0 * * *" ;Vixie cron syntax | ||
| 12713 | "guix gc -F 1G")) | ||
| 12714 | |||
| 12715 | (define idutils-job | ||
| 12716 | ;; Met à jour la base de données d'index en tant que « charlie » à 12h15 | ||
| 12717 | ;; et 19h15. La commande est lancée depuis le répertoire personnel de l'utilisateur. | ||
| 12718 | #~(job '(next-minute-from (next-hour '(12 19)) '(15)) | ||
| 12719 | (string-append #$idutils "/bin/mkid src") | ||
| 12720 | #:user "charlie")) | ||
| 12721 | |||
| 12722 | (operating-system | ||
| 12723 | ;; @dots{} | ||
| 12724 | (services (cons (service mcron-service-type | ||
| 12725 | (mcron-configuration | ||
| 12726 | (jobs (list garbage-collector-job | ||
| 12727 | updatedb-job | ||
| 12728 | idutils-job)))) | ||
| 12729 | %base-services))) | ||
| 12730 | @end lisp | ||
| 12731 | |||
| 12732 | @xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}, pour | ||
| 12733 | plus d'informations sur les spécifications des tâche de mcron. Ci-dessous | ||
| 12734 | est la référence du service mcron. | ||
| 12735 | |||
| 12736 | Sur un système lancé, vous pouvez utiliser l'action @code{schedule} du | ||
| 12737 | service pour visualiser les travaux mcron qui seront exécutés ensuite : | ||
| 12738 | |||
| 12739 | @example | ||
| 12740 | # herd schedule mcron | ||
| 12741 | @end example | ||
| 12742 | |||
| 12743 | @noindent | ||
| 12744 | Cet exemple ci-dessus montre les cinq tâches qui seront exécutés, mais vous | ||
| 12745 | pouvez spécifier le nombre de tâches à afficher : | ||
| 12746 | |||
| 12747 | @example | ||
| 12748 | # herd schedule mcron 10 | ||
| 12749 | @end example | ||
| 12750 | |||
| 12751 | @defvr {Variable Scheme} mcron-service-type | ||
| 12752 | C'est le type du service @code{mcron}, dont la valeur est un objet | ||
| 12753 | @code{mcron-configuration} | ||
| 12754 | |||
| 12755 | Ce type de service peut être la cible d'une extension de service qui lui | ||
| 12756 | fournit des spécifications de tâches supplémentaires (@pxref{Composition de services}). En d'autres termes, il est possible de définir des services | ||
| 12757 | qui fournissent des tâches mcron à lancer. | ||
| 12758 | @end defvr | ||
| 12759 | |||
| 12760 | @deftp {Type de données} mcron-configuration | ||
| 12761 | Type données qui représente la configuration de mcron. | ||
| 12762 | |||
| 12763 | @table @asis | ||
| 12764 | @item @code{mcron} (par défaut : @var{mcron}) | ||
| 12765 | Le paquet mcron à utiliser. | ||
| 12766 | |||
| 12767 | @item @code{jobs} | ||
| 12768 | C'est la liste des gexps (@pxref{G-Expressions}), où chaque gexp correspond | ||
| 12769 | à une spécification de tâche de mcron (@pxref{Syntax, mcron job | ||
| 12770 | specifications,, mcron, GNU@tie{}mcron}). | ||
| 12771 | @end table | ||
| 12772 | @end deftp | ||
| 12773 | |||
| 12774 | |||
| 12775 | @node Rotation des journaux | ||
| 12776 | @subsection Rotation des journaux | ||
| 12777 | |||
| 12778 | @cindex rottlog | ||
| 12779 | @cindex journaux, rotation | ||
| 12780 | @cindex logging | ||
| 12781 | Les fichiers journaux comme ceux qui se trouvent dans @file{/var/log} ont | ||
| 12782 | tendance à grandir sans fin, donc c'est une bonne idée de le @dfn{faire | ||
| 12783 | tourner} de temps à autres — c.-à-d.@: archiver leur contenu dans des | ||
| 12784 | fichiers séparés, potentiellement compressés. Le module @code{(gnu services | ||
| 12785 | admin)} fournit une interface pour GNU@tie{}Rot[t]log, un outil de rotation | ||
| 12786 | de journaux (@pxref{Top,,, rottlog, GNU Rot[t]log Manual}). | ||
| 12787 | |||
| 12788 | L'exemple ci-dessous définit un système d'exploitation qui fournit la | ||
| 12789 | rotation des journaux avec les paramètres par défaut, pour les journaux les | ||
| 12790 | plus courants. | ||
| 12791 | |||
| 12792 | @lisp | ||
| 12793 | (use-modules (guix) (gnu)) | ||
| 12794 | (use-service-modules admin mcron) | ||
| 12795 | (use-package-modules base idutils) | ||
| 12796 | |||
| 12797 | (operating-system | ||
| 12798 | ;; @dots{} | ||
| 12799 | (services (cons (service rottlog-service-type) | ||
| 12800 | %base-services))) | ||
| 12801 | @end lisp | ||
| 12802 | |||
| 12803 | @defvr {Variable Scheme} rottlog-service-type | ||
| 12804 | C'est le type du service Rotlog, dont la valeur est un objet | ||
| 12805 | @code{rottlog-configuration}. | ||
| 12806 | |||
| 12807 | D'autres services peuvent étendre celui-ci avec de nouveaux objets | ||
| 12808 | @code{log-rotation} (voir plus bas), en augmentant ainsi l'ensemble des | ||
| 12809 | fichiers à faire tourner. | ||
| 12810 | |||
| 12811 | Ce type de service peut définir des taches (@pxref{Exécution de tâches planifiées}) | ||
| 12812 | pour lancer le service rottlog. | ||
| 12813 | @end defvr | ||
| 12814 | |||
| 12815 | @deftp {Type de données} rottlog-configuration | ||
| 12816 | Type de données représentant la configuration de rottlog. | ||
| 12817 | |||
| 12818 | @table @asis | ||
| 12819 | @item @code{rottlog} (par défaut : @code{rottlog}) | ||
| 12820 | Le paquet Rottlog à utiliser. | ||
| 12821 | |||
| 12822 | @item @code{rc-file} (par défaut : @code{(file-append rottlog "/etc/rc")}) | ||
| 12823 | Le fichier de configuration Rottlog à utiliser (@pxref{Mandatory RC | ||
| 12824 | Variables,,, rottlog, GNU Rot[t]log Manual}). | ||
| 12825 | |||
| 12826 | @item @code{rotations} (par défaut : @code{%default-rotations}) | ||
| 12827 | Une liste d'objets @code{log-rotation} définis plus bas. | ||
| 12828 | |||
| 12829 | @item @code{jobs} | ||
| 12830 | C'est une liste de gexps où chaque gexp correspond à une spécification de | ||
| 12831 | tache de mcron (@pxref{Exécution de tâches planifiées}). | ||
| 12832 | @end table | ||
| 12833 | @end deftp | ||
| 12834 | |||
| 12835 | @deftp {Type de données} log-rotation | ||
| 12836 | Type de données représentant la rotation d'un groupe de fichiers journaux. | ||
| 12837 | |||
| 12838 | En reprenant un exemple du manuel de Rottlog (@pxref{Period Related File | ||
| 12839 | Examples,,, rottlog, GNU Rot[t]log Manual}), on peut définir la rotation | ||
| 12840 | d'un journal de cette manière : | ||
| 12841 | |||
| 12842 | @example | ||
| 12843 | (log-rotation | ||
| 12844 | (frequency 'daily) | ||
| 12845 | (files '("/var/log/apache/*")) | ||
| 12846 | (options '("storedir apache-archives" | ||
| 12847 | "rotate 6" | ||
| 12848 | "notifempty" | ||
| 12849 | "nocompress"))) | ||
| 12850 | @end example | ||
| 12851 | |||
| 12852 | La liste des champs est la suivante : | ||
| 12853 | |||
| 12854 | @table @asis | ||
| 12855 | @item @code{frequency} (par défaut : @code{'weekly}) | ||
| 12856 | La fréquence de rotation, un symbole. | ||
| 12857 | |||
| 12858 | @item @code{files} | ||
| 12859 | La liste des fichiers ou des motifs de noms de fichiers à faire tourner. | ||
| 12860 | |||
| 12861 | @item @code{options} (par défaut : @code{'()}) | ||
| 12862 | La liste des options de rottlog pour cette rotation (@pxref{Configuration | ||
| 12863 | parameters,,, rottlog, GNU Rot[t]lg Manual}). | ||
| 12864 | |||
| 12865 | @item @code{post-rotate} (par défaut : @code{#f}) | ||
| 12866 | Soit @code{#f}, soit une gexp à exécuter une fois la rotation terminée. | ||
| 12867 | @end table | ||
| 12868 | @end deftp | ||
| 12869 | |||
| 12870 | @defvr {Variable Scheme} %default-rotations | ||
| 12871 | Spécifie la rotation hebdomadaire de @var{%rotated-files} et de quelques | ||
| 12872 | autres fichiers. | ||
| 12873 | @end defvr | ||
| 12874 | |||
| 12875 | @defvr {Variable Scheme} %rotated-files | ||
| 12876 | La liste des fichiers contrôlés par syslog à faire tourner. Par défaut il | ||
| 12877 | s'agit de : @code{'("/var/log/messages" "/var/log/secure")} | ||
| 12878 | @end defvr | ||
| 12879 | |||
| 12880 | @node Services réseau | ||
| 12881 | @subsection Services réseau | ||
| 12882 | |||
| 12883 | Le module @code{(gnu services networking)} fournit des services pour | ||
| 12884 | configurer les interfaces réseaux. | ||
| 12885 | |||
| 12886 | @cindex DHCP, service réseau | ||
| 12887 | @defvr {Variable Scheme} dhcp-client-service-type | ||
| 12888 | C'est le type de services qui lance @var{dhcp}, un client DHC (protocole de | ||
| 12889 | configuration d'hôte dynamique) sur toutes les interfaces réseau | ||
| 12890 | non-loopback. Sa valeur est le paquet du client DHCP à utiliser, | ||
| 12891 | @code{isc-dhcp} par défaut. | ||
| 12892 | @end defvr | ||
| 12893 | |||
| 12894 | @deffn {Procédure Scheme} dhcpd-service-type | ||
| 12895 | Ce type définie un service qui lance un démon DHCP. Pour créer un service | ||
| 12896 | de ce type, vous devez appliquer un objet @code{<dhcpd-configuration>}. Par | ||
| 12897 | exemple : | ||
| 12898 | |||
| 12899 | @example | ||
| 12900 | (service dhcpd-service-type | ||
| 12901 | (dhcpd-configuration | ||
| 12902 | (config-file (local-file "my-dhcpd.conf")) | ||
| 12903 | (interfaces '("enp0s25")))) | ||
| 12904 | @end example | ||
| 12905 | @end deffn | ||
| 12906 | |||
| 12907 | @deftp {Type de données} dhcpd-configuration | ||
| 12908 | @table @asis | ||
| 12909 | @item @code{package} (par défaut : @code{isc-dhcp}) | ||
| 12910 | Le paquet qui fournit le démon DHCP. ce paquet doit fournir le démon | ||
| 12911 | @file{sbin/dhcpd} relativement à son répertoire de sortie. Le paquet par | ||
| 12912 | défaut est le @uref{http://www.isc.org/products/DHCP, serveur DHCP d'ISC} | ||
| 12913 | @item @code{config-file} (par défaut : @code{#f}) | ||
| 12914 | Le fichier de configuration à utiliser. Il est requis. Il sera passé à | ||
| 12915 | @code{dhcpd} via son option @code{-cf}. La valeur peut être n'importe quel | ||
| 12916 | objet « simili-fichier » (@pxref{G-Expressions, file-like objects}). Voir | ||
| 12917 | @code{man dhcpd.conf} pour des détails sur la syntaxe du fichier de | ||
| 12918 | configuration. | ||
| 12919 | @item @code{version} (par défaut : @code{"4"}) | ||
| 12920 | La version de DHCP à utiliser. Le serveur DHCP d'ISC supporte les valeur « | ||
| 12921 | 4 », « 6 » et « 4o6 ». Elles correspondent aux options @code{-4}, @code{-6} | ||
| 12922 | et @code{-4o6} du programme @code{dhcpd}. Voir @code{man dhcpd} pour plus | ||
| 12923 | de détails. | ||
| 12924 | @item @code{run-directory} (par défaut : @code{"/run/dhcpd"}) | ||
| 12925 | Le répertoire d'exécution à utiliser. Au moment de l'activation du service, | ||
| 12926 | ce répertoire sera créé s'il n'existe pas. | ||
| 12927 | @item @code{pid-file} (par défaut : @code{"/run/dhcpd/dhcpd.pid"}) | ||
| 12928 | Le fichier de PID à utiliser. Cela correspond à l'option @code{-pf} de | ||
| 12929 | @code{dhcpd}. Voir @code{man dhcpd} pour plus de détails. | ||
| 12930 | @item @code{interfaces} (par défaut : @code{'()}) | ||
| 12931 | Les noms des interfaces réseaux sur lesquelles dhcpd écoute. Si cette liste | ||
| 12932 | n'est pas vide, alors ses éléments (qui doivent être des chaînes de | ||
| 12933 | caractères) seront ajoutés à l'invocation de @code{dhcpd} lors du démarrage | ||
| 12934 | du démon. Il n'est pas forcément nécessaire de spécifier des interfaces ici | ||
| 12935 | ; voir @code{man dhcpd} pour plus de détails. | ||
| 12936 | @end table | ||
| 12937 | @end deftp | ||
| 12938 | |||
| 12939 | @defvr {Variable Scheme} static-networking-service-type | ||
| 12940 | @c TODO Document <static-networking> data structures. | ||
| 12941 | C'est le type des interfaces réseaux configurés statiquement. | ||
| 12942 | @end defvr | ||
| 12943 | |||
| 12944 | @deffn {Procédure Scheme} static-networking-service @var{interface} @var{ip} @ | ||
| 12945 | [#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] @ | ||
| 12946 | [#:requirement @code{'(udev)}] | ||
| 12947 | Renvoie un service qui démarre @var{interface} avec l'adresse @var{ip}. Si | ||
| 12948 | @var{netmask} est vrai, il sera utilisé comme masque de sous-réseau. Si | ||
| 12949 | @var{gateway} est vrai, ce doit être une chaîne de caractères qui spécifie | ||
| 12950 | la passerelle par défaut du réseau. @var{requirement} peut être utilisé | ||
| 12951 | pour déclarer une dépendance sur un autre service avant de configurer | ||
| 12952 | l'interface. | ||
| 12953 | |||
| 12954 | On peut appeler cette procédure plusieurs fois, une fois par interface | ||
| 12955 | réseau qui nous intéresse. Dans les coulisses, elle étend | ||
| 12956 | @code{static-networking-service-type} avec les interfaces réseaux | ||
| 12957 | supplémentaires à gérer. | ||
| 12958 | |||
| 12959 | Par exemple : | ||
| 12960 | |||
| 12961 | @example | ||
| 12962 | (static-networking-service "eno1" "192.168.1.82" | ||
| 12963 | #:gateway "192.168.1.2" | ||
| 12964 | #:name-servers '("192.168.1.2")) | ||
| 12965 | @end example | ||
| 12966 | @end deffn | ||
| 12967 | |||
| 12968 | @cindex wicd | ||
| 12969 | @cindex sans-fil | ||
| 12970 | @cindex WiFi | ||
| 12971 | @cindex gestion du réseau | ||
| 12972 | @deffn {Procédure Scheme} wicd-service [#:wicd @var{wicd}] | ||
| 12973 | Renvoie un service qui lance @url{https://launchpad.net/wicd,Wicd}, un démon | ||
| 12974 | de gestion réseau qui cherche à simplifier la configuration des réseaux | ||
| 12975 | filaires et sans fil. | ||
| 12976 | |||
| 12977 | Ce service ajoute le paquet @var{wicd} au profil global, pour fournir des | ||
| 12978 | commandes pour interagir avec le démon et configurer le réseau : | ||
| 12979 | @command{wicd-client}, une interface graphique et les interfaces | ||
| 12980 | utilisateurs @command{wicd-cli} et @command{wicd-curses}. | ||
| 12981 | @end deffn | ||
| 12982 | |||
| 12983 | @cindex ModemManager | ||
| 12984 | |||
| 12985 | @defvr {Variable Scheme} modem-manager-service-type | ||
| 12986 | C'est le type de service pour le service | ||
| 12987 | @uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager}. La | ||
| 12988 | valeur de ce type de service est un enregistrement | ||
| 12989 | @code{modem-manager-configuration}. | ||
| 12990 | |||
| 12991 | Ce service fait partie de @code{%desktop-services} (@pxref{Services de bureaux}). | ||
| 12992 | @end defvr | ||
| 12993 | |||
| 12994 | @deftp {Type de données} modem-manager-configuration | ||
| 12995 | Type de donnée représentant la configuration de ModemManager. | ||
| 12996 | |||
| 12997 | @table @asis | ||
| 12998 | @item @code{modem-manager} (par défaut : @code{modem-manager}) | ||
| 12999 | Le paquet ModemManager à utiliser. | ||
| 13000 | |||
| 13001 | @end table | ||
| 13002 | @end deftp | ||
| 13003 | |||
| 13004 | @cindex NetworkManager | ||
| 13005 | |||
| 13006 | @defvr {Variable Scheme} network-manager-service-type | ||
| 13007 | C'est le type de service pour le service | ||
| 13008 | @uref{https://wiki.gnome.org/Projects/NetworkManager, NetworkManager}. La | ||
| 13009 | valeur pour ce type de service est un enregistrement | ||
| 13010 | @code{network-manager-configuration}. | ||
| 13011 | |||
| 13012 | Ce service fait partie de @code{%desktop-services} (@pxref{Services de bureaux}). | ||
| 13013 | @end defvr | ||
| 13014 | |||
| 13015 | @deftp {Type de données} network-manager-configuration | ||
| 13016 | Type de données représentant la configuration de NetworkManager. | ||
| 13017 | |||
| 13018 | @table @asis | ||
| 13019 | @item @code{network-manager} (par défaut : @code{network-manager}) | ||
| 13020 | Le paquet NetworkManager à utiliser. | ||
| 13021 | |||
| 13022 | @item @code{dns} (par défaut : @code{"default"}) | ||
| 13023 | Mode de gestion pour le DNS, qui affecte la manière dont NetworkManager | ||
| 13024 | utilise le fichier de configuration @code{resolv.conf} | ||
| 13025 | |||
| 13026 | @table @samp | ||
| 13027 | @item default | ||
| 13028 | NetworkManager mettra à jour @code{resolv.conf} pour refléter les serveurs | ||
| 13029 | de noms fournis par les connexions actives. | ||
| 13030 | |||
| 13031 | @item dnsmasq | ||
| 13032 | NetworkManager lancera @code{dnsmasq} en tant que serveur de cache local, en | ||
| 13033 | utilisant une configuration « DNS disjointe » si vous êtes connecté par un | ||
| 13034 | VPN puis mettra à jour @code{resolv.conf} pour pointer vers le serveur de | ||
| 13035 | nom local. | ||
| 13036 | |||
| 13037 | @item none | ||
| 13038 | NetworkManager ne modifiera pas @code{resolv.conf}. | ||
| 13039 | @end table | ||
| 13040 | |||
| 13041 | @item @code{vpn-plugins} (par défaut : @code{'()}) | ||
| 13042 | C'est la liste des greffons disponibles pour les VPN (réseaux privés | ||
| 13043 | virtuels). Un exemple est le paquet @code{network-manager-openvpn}, qui | ||
| 13044 | permet à NetworkManager de gérer des VPN via OpenVPN. | ||
| 13045 | |||
| 13046 | @end table | ||
| 13047 | @end deftp | ||
| 13048 | |||
| 13049 | @cindex Connman | ||
| 13050 | @deffn {Variable Scheme} connman-service-type | ||
| 13051 | C'est le type de service pour lancer @url{https://01.org/connman,Connman}, | ||
| 13052 | un gestionnaire de connexions réseaux. | ||
| 13053 | |||
| 13054 | Sa valeur doit être un enregistrement @code{connman-configuration} comme | ||
| 13055 | dans cet exemple : | ||
| 13056 | |||
| 13057 | @example | ||
| 13058 | (service connman-service-type | ||
| 13059 | (connman-configuration | ||
| 13060 | (disable-vpn? #t))) | ||
| 13061 | @end example | ||
| 13062 | |||
| 13063 | Voir plus bas pour des détails sur @code{connman-configuration}. | ||
| 13064 | @end deffn | ||
| 13065 | |||
| 13066 | @deftp {Type de données} connman-configuration | ||
| 13067 | Type de données représentant la configuration de connman. | ||
| 13068 | |||
| 13069 | @table @asis | ||
| 13070 | @item @code{connman} (par défaut : @var{connman}) | ||
| 13071 | Le paquet connman à utiliser. | ||
| 13072 | |||
| 13073 | @item @code{disable-vpn?} (par défaut : @code{#f}) | ||
| 13074 | Lorsque la valeur est vraie, désactive le greffon vpn de connman. | ||
| 13075 | @end table | ||
| 13076 | @end deftp | ||
| 13077 | |||
| 13078 | @cindex WPA Supplicant | ||
| 13079 | @defvr {Variable Scheme} wpa-supplicant-service-type | ||
| 13080 | C'est le type du service qui lance@url{https://w1.fi/wpa_supplicant/,WPA | ||
| 13081 | supplicant}, un démon d'authentification requis pour s'authentifier sur des | ||
| 13082 | WiFi chiffrés ou des réseaux ethernet. | ||
| 13083 | @end defvr | ||
| 13084 | |||
| 13085 | @deftp {Type de données} wpa-supplicant-configuration | ||
| 13086 | Type données qui représente la configuration de WPA Supplicant. | ||
| 13087 | |||
| 13088 | Il prend les paramètres suivants : | ||
| 13089 | |||
| 13090 | @table @asis | ||
| 13091 | @item @code{wpa-supplicant} (par défaut : @code{wpa-supplicant}) | ||
| 13092 | Le paquet WPA Supplicant à utiliser. | ||
| 13093 | |||
| 13094 | @item @code{dbus?} (par défaut : @code{#t}) | ||
| 13095 | Indique s'il faut écouter les requêtes sur D-Bus. | ||
| 13096 | |||
| 13097 | @item @code{pid-file} (par défaut : @code{"/var/run/wpa_supplicant.pid"}) | ||
| 13098 | Où stocker votre fichier de PID. | ||
| 13099 | |||
| 13100 | @item @code{interface} (par défaut : @code{#f}) | ||
| 13101 | Si une valeur est indiquée, elle doit spécifier le nom d'une interface | ||
| 13102 | réseau que WPA supplicant contrôlera. | ||
| 13103 | |||
| 13104 | @item @code{config-file} (par défaut : @code{#f}) | ||
| 13105 | Fichier de configuration facultatif à utiliser. | ||
| 13106 | |||
| 13107 | @item @code{extra-options} (par défaut : @code{'()}) | ||
| 13108 | Liste d'arguments de la ligne de commande supplémentaires à passer au démon. | ||
| 13109 | @end table | ||
| 13110 | @end deftp | ||
| 13111 | |||
| 13112 | @cindex iptables | ||
| 13113 | @defvr {Variable Scheme} iptables-service-type | ||
| 13114 | C'est le type de service pour mettre en place une configuration iptables. | ||
| 13115 | iptables est un outil de filtrage de paquets pris en charge par le noyau | ||
| 13116 | Linux. Ce service prend en charge la configuration d'iptable pour IPv4 et | ||
| 13117 | IPv6. Un exemple de configuration simple, qui rejette les connexions | ||
| 13118 | entrantes sauf celles sur le port 22 est présenté ci-dessous. | ||
| 13119 | |||
| 13120 | @lisp | ||
| 13121 | (service iptables-service-type | ||
| 13122 | (iptables-configuration | ||
| 13123 | (ipv4-rules (plain-file "iptables.rules" "*filter | ||
| 13124 | :INPUT ACCEPT | ||
| 13125 | :FORWARD ACCEPT | ||
| 13126 | :OUTPUT ACCEPT | ||
| 13127 | -A INPUT -p tcp --dport 22 -j ACCEPT | ||
| 13128 | -A INPUT -j REJECT --reject-with icmp-port-unreachable | ||
| 13129 | COMMIT | ||
| 13130 | ")) | ||
| 13131 | (ipv6-rules (plain-file "ip6tables.rules" "*filter | ||
| 13132 | :INPUT ACCEPT | ||
| 13133 | :FORWARD ACCEPT | ||
| 13134 | :OUTPUT ACCEPT | ||
| 13135 | -A INPUT -p tcp --dport 22 -j ACCEPT | ||
| 13136 | -A INPUT -j REJECT --reject-with icmp6-port-unreachable | ||
| 13137 | COMMIT | ||
| 13138 | ")))) | ||
| 13139 | @end lisp | ||
| 13140 | @end defvr | ||
| 13141 | |||
| 13142 | @deftp {Type de données} iptables-configuration | ||
| 13143 | Type de données représentant la configuration d'iptables. | ||
| 13144 | |||
| 13145 | @table @asis | ||
| 13146 | @item @code{iptables} (par défaut : @code{iptables}) | ||
| 13147 | Le paquet iptables qui fournit @code{iptables-restore} et | ||
| 13148 | @code{ip6tables-restore}. | ||
| 13149 | @item @code{ipv4-rules} (par défaut : @code{%iptables-accept-all-rules}) | ||
| 13150 | Les règles iptables à utiliser. Elles seront passées à | ||
| 13151 | @code{iptables-restore}. Cela peut être un objet « simili-fichier » | ||
| 13152 | (@pxref{G-Expressions, file-like objects}). | ||
| 13153 | @item @code{ipv6-rules} (par défaut : @code{%iptables-accept-all-rules}) | ||
| 13154 | Les règles iptables à utiliser. Elles seront passées à | ||
| 13155 | @code{ip6tables-restore}. Cela peut être un objet « simili-fichier » | ||
| 13156 | (@pxref{G-Expressions, file-like objects}). | ||
| 13157 | @end table | ||
| 13158 | @end deftp | ||
| 13159 | |||
| 13160 | @cindex NTP (Network Time Protocol), service | ||
| 13161 | @cindex horloge | ||
| 13162 | @defvr {Variable Scheme} ntp-service-type | ||
| 13163 | C'est le type de service qui lance le démon @uref{http://www.ntp.org, | ||
| 13164 | Network Time Protocol (NTP)}, @command{ntpd}. Le démon gardera l'horloge | ||
| 13165 | système synchronisée avec celle des serveurs NTP spécifiés. | ||
| 13166 | |||
| 13167 | La valeur de ce service est un objet @code{ntpd-configuration}, décrit | ||
| 13168 | ci-dessous. | ||
| 13169 | @end defvr | ||
| 13170 | |||
| 13171 | @deftp {Type de données} ntp-configuration | ||
| 13172 | C'est le type de données représentant la configuration du service NTP. | ||
| 13173 | |||
| 13174 | @table @asis | ||
| 13175 | @item @code{servers} (par défaut : @code{%ntp-servers}) | ||
| 13176 | C'est la liste des serveurs (noms d'hôtes) avec lesquels @command{ntpd} sera | ||
| 13177 | synchronisé. | ||
| 13178 | |||
| 13179 | @item @code{allow-large-adjustment?} (par défaut : @code{#f}) | ||
| 13180 | Détermine si @code{ntpd} peut faire un ajustement initial de plus de | ||
| 13181 | 1@tie{}000 secondes. | ||
| 13182 | |||
| 13183 | @item @code{ntp} (par défaut : @code{ntp}) | ||
| 13184 | Le paquet NTP à utiliser. | ||
| 13185 | @end table | ||
| 13186 | @end deftp | ||
| 13187 | |||
| 13188 | @defvr {Variable Scheme} %ntp-servers | ||
| 13189 | Liste de noms d'hôtes à utiliser comme serveurs NTP par défaut. Ce sont les | ||
| 13190 | serveurs du @uref{https://www.ntppool.org/fr/, projet NTP Pool} | ||
| 13191 | @end defvr | ||
| 13192 | |||
| 13193 | @cindex OpenNTPD | ||
| 13194 | @deffn {Procédure Scheme} openntpd-service-type | ||
| 13195 | Lance le démon NTP @command{ntpd}, implémenté par | ||
| 13196 | @uref{http://www.openntpd.org, OpenNTPD}. Le démon gardera l'horloge | ||
| 13197 | système synchronisée avec celle des serveurs donnés. | ||
| 13198 | |||
| 13199 | @example | ||
| 13200 | (service | ||
| 13201 | openntpd-service-type | ||
| 13202 | (openntpd-configuration | ||
| 13203 | (listen-on '("127.0.0.1" "::1")) | ||
| 13204 | (sensor '("udcf0 correction 70000")) | ||
| 13205 | (constraint-from '("www.gnu.org")) | ||
| 13206 | (constraints-from '("https://www.google.com/")) | ||
| 13207 | (allow-large-adjustment? #t))) | ||
| 13208 | |||
| 13209 | @end example | ||
| 13210 | @end deffn | ||
| 13211 | |||
| 13212 | @deftp {Type de données} openntpd-configuration | ||
| 13213 | @table @asis | ||
| 13214 | @item @code{openntpd} (par défaut : @code{(file-append openntpd "/sbin/ntpd")}) | ||
| 13215 | L'exécutable openntpd à utiliser. | ||
| 13216 | @item @code{listen-on} (par défaut : @code{'("127.0.0.1" "::1")}) | ||
| 13217 | Une liste d'adresses IP locales ou de noms d'hôtes que devrait écouter le | ||
| 13218 | démon ntpd. | ||
| 13219 | @item @code{query-from} (par défaut : @code{'()}) | ||
| 13220 | Une liste d'adresses IP que le démon devrait utiliser pour les requêtes | ||
| 13221 | sortantes. | ||
| 13222 | @item @code{sensor} (par défaut : @code{'()}) | ||
| 13223 | Spécifie une liste de senseurs de différences de temps que ntpd devrait | ||
| 13224 | utiliser. @code{ntpd} écoutera chaque senseur qui existe et ignorera ceux | ||
| 13225 | qui n'existent pas. Voir @uref{https://man.openbsd.org/ntpd.conf, la | ||
| 13226 | documentation en amont} pour plus d'informations. | ||
| 13227 | @item @code{server} (par défaut : @var{%ntp-servers}) | ||
| 13228 | Spécifie une liste d'adresses IP ou de noms d'hôtes de serveurs NTP avec | ||
| 13229 | lesquels se synchroniser. | ||
| 13230 | @item @code{servers} (par défaut : @code{'()}) | ||
| 13231 | Spécifie une liste d'adresses IP ou de noms d'hôtes de banques de serveurs | ||
| 13232 | NTP avec lesquelles se synchroniser. | ||
| 13233 | @item @code{constraint-from} (par défaut : @code{'()}) | ||
| 13234 | @code{ntpd} peut être configuré pour demander la « Date » à des serveurs | ||
| 13235 | HTTPS de confiance via TLS. Cette information de temps n'est pas utilisée | ||
| 13236 | pour sa précision mais agit comme une contrainte authentifiée, ce qui réduit | ||
| 13237 | l'impact d'une attaque par l'homme du milieu sur le protocole NTP non | ||
| 13238 | authentifié. Spécifie une liste d'URL, d'adresses IP ou de noms d'hôtes de | ||
| 13239 | serveurs HTTPS qui fournissent cette contrainte. | ||
| 13240 | @item @code{constraints-from} (par défaut : @code{'()}) | ||
| 13241 | Comme pour @code{constraint-from}, spécifie une liste d'URL, d'adresses IP | ||
| 13242 | ou de noms d'hôtes de serveurs HTTPS qui fournissent une contrainte. Si les | ||
| 13243 | noms d'hôtes sont résolus en plusieurs adresses IP, @code{ntpd} calculera la | ||
| 13244 | contrainte médiane. | ||
| 13245 | @item @code{allow-large-adjustment?} (par défaut : @code{#f}) | ||
| 13246 | Détermine si @code{ntpd} peut faire un ajustement initial de plus de 180 | ||
| 13247 | secondes. | ||
| 13248 | @end table | ||
| 13249 | @end deftp | ||
| 13250 | |||
| 13251 | @cindex inetd | ||
| 13252 | @deffn {Variable Scheme} inetd-service-type | ||
| 13253 | Ce service lance le démon @command{inetd} (@pxref{inetd invocation,,, | ||
| 13254 | inetutils, GNU Inetutils}). @command{inetd} écoute des connexions sur des | ||
| 13255 | sockets internet et démarre le programme spécifié uniquement lorsqu'une | ||
| 13256 | connexion arrive sur l'un de ces sockets. | ||
| 13257 | |||
| 13258 | La valeur de ce service est un objet @code{inetd-configuration}. L'exemple | ||
| 13259 | suivant configure le démon @command{inetd} pour qu'il fournisse le service | ||
| 13260 | @command{echo}, ainsi qu'un service smtp qui transfère le trafic smtp par | ||
| 13261 | ssh à un serveur @code{smtp-server} derrière une passerelle @code{hostname} | ||
| 13262 | : | ||
| 13263 | |||
| 13264 | @example | ||
| 13265 | (service | ||
| 13266 | inetd-service-type | ||
| 13267 | (inetd-configuration | ||
| 13268 | (entries (list | ||
| 13269 | (inetd-entry | ||
| 13270 | (name "echo") | ||
| 13271 | (socket-type 'stream) | ||
| 13272 | (protocol "tcp") | ||
| 13273 | (wait? #f) | ||
| 13274 | (user "root")) | ||
| 13275 | (inetd-entry | ||
| 13276 | (node "127.0.0.1") | ||
| 13277 | (name "smtp") | ||
| 13278 | (socket-type 'stream) | ||
| 13279 | (protocol "tcp") | ||
| 13280 | (wait? #f) | ||
| 13281 | (user "root") | ||
| 13282 | (program (file-append openssh "/bin/ssh")) | ||
| 13283 | (arguments | ||
| 13284 | '("ssh" "-qT" "-i" "/path/to/ssh_key" | ||
| 13285 | "-W" "smtp-server:25" "user@@hostname"))))) | ||
| 13286 | @end example | ||
| 13287 | |||
| 13288 | Voir plus bas pour plus de détails sur @code{inetd-configuration}. | ||
| 13289 | @end deffn | ||
| 13290 | |||
| 13291 | @deftp {Type de données} inetd-configuration | ||
| 13292 | Type de données représentant la configuration de @command{inetd}. | ||
| 13293 | |||
| 13294 | @table @asis | ||
| 13295 | @item @code{program} (par défaut : @code{(file-append inetutils "/libexec/inetd")}) | ||
| 13296 | L'exécutable @command{inetd} à utiliser. | ||
| 13297 | |||
| 13298 | @item @code{entries} (par défaut : @code{'()}) | ||
| 13299 | Une liste d'entrées de services @command{inetd}. Chaque entrée devrait être | ||
| 13300 | crée avec le constructeur @code{inetd-entry}. | ||
| 13301 | @end table | ||
| 13302 | @end deftp | ||
| 13303 | |||
| 13304 | @deftp {Type de données} inetd-entry | ||
| 13305 | Type de données représentant une entrée dans la configuration | ||
| 13306 | d'@command{inetd}. Chaque entrée correspond à un socket sur lequel | ||
| 13307 | @command{inetd} écoutera les requêtes. | ||
| 13308 | |||
| 13309 | @table @asis | ||
| 13310 | @item @code{node} (par défaut : @code{#f}) | ||
| 13311 | Chaîne de caractères facultative, un liste d'adresses locales séparées par | ||
| 13312 | des virgules que @command{inetd} devrait utiliser pour écouter ce service. | ||
| 13313 | @xref{Configuration file,,, inetutils, GNU Inetutils} pour une description | ||
| 13314 | complète de toutes les options. | ||
| 13315 | @item @code{name} | ||
| 13316 | Une chaîne de caractères dont le nom doit correspondre à une entrée de | ||
| 13317 | @code{/etc/services}. | ||
| 13318 | @item @code{socket-type} | ||
| 13319 | Un symbole parmi @code{'stream}, @code{'dgram}, @code{'raw}, @code{'rdm} ou | ||
| 13320 | @code{'seqpacket}. | ||
| 13321 | @item @code{protocol} | ||
| 13322 | Une chaîne de caractères qui doit correspondre à une entrée dans | ||
| 13323 | @code{/etc/protocols}. | ||
| 13324 | @item @code{wait?} (par défaut : @code{#t}) | ||
| 13325 | Indique si @command{inetd} devrait attendre que le serveur ait quitté avant | ||
| 13326 | d'écouter de nouvelles demandes de service. | ||
| 13327 | @item @code{user} | ||
| 13328 | Une chaîne de caractères contenant le nom d'utilisateur (et éventuellement | ||
| 13329 | de groupe) de l'utilisateur en tant que lequel le serveur devrait tourner. | ||
| 13330 | Le nom du groupe peut être spécifié comme un suffixe, séparé par un | ||
| 13331 | deux-points ou un point, c.-à-d.@: @code{"utilisateur"}, | ||
| 13332 | @code{"utilisateur:groupe"} ou @code{"utilisateur.groupe"}. | ||
| 13333 | @item @code{program} (par défaut : @code{"internal"}) | ||
| 13334 | Le programme du serveur qui servira les requêtes, ou @code{"internal"} si | ||
| 13335 | @command{inetd} devrait utiliser un service inclus. | ||
| 13336 | @item @code{arguments} (par défaut : @code{'()}) | ||
| 13337 | Une liste de chaînes de caractères ou d'objets simili-fichiers qui sont les | ||
| 13338 | arguments du programme du serveur, en commençant par le zéroième argument, | ||
| 13339 | c.-à-d.@: le nom du programme lui-même. Pour les services internes à | ||
| 13340 | @command{inetd}, cette entrée doit être @code{'()} ou @code{'("internal")}. | ||
| 13341 | @end table | ||
| 13342 | |||
| 13343 | @xref{Configuration file,,, inetutils, GNU Inetutils} pour trouver une | ||
| 13344 | discussion plus détaillée de chaque champ de configuration. | ||
| 13345 | @end deftp | ||
| 13346 | |||
| 13347 | @cindex Tor | ||
| 13348 | @defvr {Variable Scheme} tor-service-type | ||
| 13349 | C'est le type pour un service qui lance le démon de navigation anonyme | ||
| 13350 | @uref{https://torproject.org, Tor}. Le service est configuré avec un | ||
| 13351 | enregistrement @code{<tor-configuration>}. Par défaut, le démon Tor est | ||
| 13352 | lancé en tant qu'utilisateur non privilégié @code{tor}, membre du groupe | ||
| 13353 | @code{tor}. | ||
| 13354 | |||
| 13355 | @end defvr | ||
| 13356 | |||
| 13357 | @deftp {Type de données} tor-configuration | ||
| 13358 | @table @asis | ||
| 13359 | @item @code{tor} (par défaut : @code{tor}) | ||
| 13360 | Le paquet qui fournit le démon Tor. Ce paquet doit fournir le démon | ||
| 13361 | @file{bin/tor} relativement à son répertoire de sortie. Le paquet par | ||
| 13362 | défaut est le l'implémentation du @uref{https://www.torproject.org, projet | ||
| 13363 | Tor}. | ||
| 13364 | |||
| 13365 | @item @code{config-file} (par défaut : @code{(plain-file "empty" "")}) | ||
| 13366 | Le fichier de configuration à utiliser. Il sera ajouté au fichier de | ||
| 13367 | configuration par défaut, et le fichier de configuration final sera passé à | ||
| 13368 | @code{tor} via son option @code{-f}. Cela peut être n'importe quel objet « | ||
| 13369 | simili-fichier » (@pxref{G-Expressions, file-like objects}). Voir @code{man | ||
| 13370 | tor} pour plus de détails sur la syntaxe du fichier de configuration. | ||
| 13371 | |||
| 13372 | @item @code{hidden-services} (par défaut : @code{'()}) | ||
| 13373 | La liste des enregistrements @code{<hidden-service>} à utiliser. Pour | ||
| 13374 | n'importe quel service cache que vous ajoutez à cette liste, la | ||
| 13375 | configuration appropriée pour activer le service caché sera automatiquement | ||
| 13376 | ajouté au fichier de configuration par défaut. Vous pouvez aussi créer des | ||
| 13377 | enregistrements @code{<hidden-service>} avec la procédure | ||
| 13378 | @code{tor-hidden-service} décrite plus bas. | ||
| 13379 | |||
| 13380 | @item @code{socks-socket-type} (par défaut : @code{'tcp}) | ||
| 13381 | Le type de socket par défaut que Tor devrait utiliser pour les socket | ||
| 13382 | SOCKS. Cela doit être soit @code{'tcp} soit @code{'unix}. S'il s'agit de | ||
| 13383 | @code{'tcp}, alors Tor écoutera pas défaut sur le port TCP 9050 sur | ||
| 13384 | l'interface de boucle locale (c.-à-d.@: localhost). S'il s'agit de | ||
| 13385 | @code{'unix}, Tor écoutera sur le socket UNIX domain | ||
| 13386 | @file{/var/run/tor/socks-sock}, qui sera inscriptible pour les membres du | ||
| 13387 | groupe @code{tor}. | ||
| 13388 | |||
| 13389 | Si vous voulez personnaliser le socket SOCKS plus avant, laissez | ||
| 13390 | @code{socks-socket-type} à sa valeur par défaut de @code{'tcp} et utilisez | ||
| 13391 | @code{config-file} pour remplacer les valeurs par défaut avec votre propre | ||
| 13392 | option @code{SocksPort}. | ||
| 13393 | @end table | ||
| 13394 | @end deftp | ||
| 13395 | |||
| 13396 | @cindex service caché | ||
| 13397 | @deffn {Procédure Scheme} tor-hidden-service @var{name} @var{mapping} | ||
| 13398 | Définie un @dfn{service caché} pour Tor nommé @var{name} qui implémente | ||
| 13399 | @var{mapping}. @var{mapping} est une liste de paires de port et d'hôte, | ||
| 13400 | comme dans : | ||
| 13401 | |||
| 13402 | @example | ||
| 13403 | '((22 "127.0.0.1:22") | ||
| 13404 | (80 "127.0.0.1:8080")) | ||
| 13405 | @end example | ||
| 13406 | |||
| 13407 | Dans cet exemple, le port 22 du service caché est relié au port local 22 et | ||
| 13408 | le port 80 est relié au port local 8080. | ||
| 13409 | |||
| 13410 | Cela crée un répertoire @file{/var/lib/tor/hidden-services/@var{name}} où le | ||
| 13411 | fichier @file{hostname} contient le nom d'hôte @code{.onion} pour le service | ||
| 13412 | caché. | ||
| 13413 | |||
| 13414 | Voir @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the | ||
| 13415 | Tor project's documentation} pour trouver plus d'information. | ||
| 13416 | @end deffn | ||
| 13417 | |||
| 13418 | Le module @code{(gnu services rsync)} fournit les services suivant : | ||
| 13419 | |||
| 13420 | Vous pourriez vouloir un démon rsync si vous voulez que des fichiers soient | ||
| 13421 | disponibles pour que n'importe qui (ou juste vous) puisse télécharger des | ||
| 13422 | fichiers existants ou en téléverser des nouveaux. | ||
| 13423 | |||
| 13424 | @deffn {Variable Scheme} rsync-service-type | ||
| 13425 | C'est le type pour le démon @uref{https://rsync.samba.org, rsync}, qui prend | ||
| 13426 | un enregistrement @command{rsync-configuration} comme dans cet exemple : | ||
| 13427 | |||
| 13428 | @example | ||
| 13429 | (service rsync-service-type) | ||
| 13430 | @end example | ||
| 13431 | |||
| 13432 | Voir plus pas pour trouver des détails à propos de | ||
| 13433 | @code{rsync-configuration}. | ||
| 13434 | @end deffn | ||
| 13435 | |||
| 13436 | @deftp {Type de données} rsync-configuration | ||
| 13437 | Type de données représentant la configuration de @code{rsync-service}. | ||
| 13438 | |||
| 13439 | @table @asis | ||
| 13440 | @item @code{package} (par défaut : @var{rsync}) | ||
| 13441 | Le paquet @code{rsync} à utiliser. | ||
| 13442 | |||
| 13443 | @item @code{port-number} (par défaut : @code{873}) | ||
| 13444 | Le port TCP sur lequel @command{rsync} écoute les connexions entrantes. Si | ||
| 13445 | le port est inférieur à @code{1024}, @command{rsync} doit être démarré en | ||
| 13446 | tant qu'utilisateur et groupe @code{root}. | ||
| 13447 | |||
| 13448 | @item @code{pid-file} (par défaut : @code{"/var/run/rsyncd/rsyncd.pid"}) | ||
| 13449 | Nom du fichier où @command{rsync} écrit son PID. | ||
| 13450 | |||
| 13451 | @item @code{lock-file} (par défaut : @code{"/var/run/rsyncd/rsyncd.lock"}) | ||
| 13452 | Nom du fichier où @command{rsync} écrit son fichier de verrouillage. | ||
| 13453 | |||
| 13454 | @item @code{log-file} (par défaut : @code{"/var/log/rsyncd.log"}) | ||
| 13455 | Nom du fichier où @command{rsync} écrit son fichier de journal. | ||
| 13456 | |||
| 13457 | @item @code{use-chroot?} (par défaut : @var{#t}) | ||
| 13458 | S'il faut utiliser un chroot pour le répertoire partagé de @command{rsync}. | ||
| 13459 | |||
| 13460 | @item @code{share-path} (par défaut : @file{/srv/rsync}) | ||
| 13461 | Emplacement du répertoire partagé de @command{rsync}. | ||
| 13462 | |||
| 13463 | @item @code{share-comment} (par défaut : @code{"Rsync share"}) | ||
| 13464 | Commentaire du répertoire partagé de @command{rsync}. | ||
| 13465 | |||
| 13466 | @item @code{read-only?} (par défaut : @var{#f}) | ||
| 13467 | Permission en écriture sur le répertoire partagé. | ||
| 13468 | |||
| 13469 | @item @code{timeout} (par défaut : @code{300}) | ||
| 13470 | Délai d'attente d'entrée-sortie en secondes. | ||
| 13471 | |||
| 13472 | @item @code{user} (par défaut : @var{"root"}) | ||
| 13473 | Propriétaire du processus @code{rsync}. | ||
| 13474 | |||
| 13475 | @item @code{group} (par défaut : @var{"root"}) | ||
| 13476 | Groupe du processus @code{rsync}. | ||
| 13477 | |||
| 13478 | @item @code{uid} (par défaut : @var{"rsyncd"}) | ||
| 13479 | Nom d'utilisateur ou ID utilisateur en tant que lequel les transferts de | ||
| 13480 | fichiers ont lieu si le démon a été lancé en @code{root}. | ||
| 13481 | |||
| 13482 | @item @code{gid} (par défaut : @var{"rsyncd"}) | ||
| 13483 | Nom du groupe ou ID du groupe qui sera utilisé lors de l'accès au module. | ||
| 13484 | |||
| 13485 | @end table | ||
| 13486 | @end deftp | ||
| 13487 | |||
| 13488 | En plus, @code{(gnu services ssh)} fournit les services suivant. | ||
| 13489 | @cindex SSH | ||
| 13490 | @cindex serveur SSH | ||
| 13491 | |||
| 13492 | @deffn {Procédure Scheme} lsh-service [#:host-key "/etc/lsh/host-key"] @ | ||
| 13493 | [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ | ||
| 13494 | [#:allow-empty-passwords? #f] [#:root-login? #f] @ | ||
| 13495 | [#:syslog-output? #t] [#:x11-forwarding? #t] @ | ||
| 13496 | [#:tcp/ip-forwarding? #t] [#:password-authentication? #t] @ | ||
| 13497 | [#:public-key-authentication? #t] [#:initialize? #t] | ||
| 13498 | Lance le programme @command{lshd} de @var{lsh} pour écouter sur le port | ||
| 13499 | @var{port-number}. @var{host-key} doit désigner un fichier contenant la | ||
| 13500 | clef d'hôte et ne doit être lisible que par root. | ||
| 13501 | |||
| 13502 | Lorsque @var{daemonic?} est vrai, @command{lshd} se détachera du terminal | ||
| 13503 | qui le contrôle et enregistrera ses journaux avec syslogd, à moins que | ||
| 13504 | @var{syslog-output?} ne soit faux. Évidemment, cela rend aussi lsh-service | ||
| 13505 | dépendant de l'existence d'un service syslogd. Lorsque @var{pid-file?} est | ||
| 13506 | vrai, @command{lshd} écrit son PID dans le fichier @var{pid-file}. | ||
| 13507 | |||
| 13508 | Lorsque @var{initialize?} est vrai, la graine et la clef d'hôte seront créés | ||
| 13509 | lors de l'activation du service s'ils n'existent pas encore. Cela peut | ||
| 13510 | prendre du temps et demande une interaction. | ||
| 13511 | |||
| 13512 | Lorsque @var{initialize?} est faux, c'est à l'utilisateur d'initialiser le | ||
| 13513 | générateur d'aléatoire (@pxref{lsh-make-seed,,, lsh, LSH Manual}) et de crée | ||
| 13514 | une paire de clefs dont la clef privée sera stockée dans le fichier | ||
| 13515 | @var{host-key} (@pxref{lshd basics,,, lsh, LSH Manual}). | ||
| 13516 | |||
| 13517 | Lorsque @var{interfaces} est vide, lshd écoute les connexions sur toutes les | ||
| 13518 | interfaces réseau ; autrement, @var{interfaces} doit être une liste de noms | ||
| 13519 | d'hôtes et d'adresses. | ||
| 13520 | |||
| 13521 | @var{allow-empty-passwords?} spécifie si les connexions avec des mots de | ||
| 13522 | passes vides sont acceptés et @var{root-login?} spécifie si la connexion en | ||
| 13523 | root est acceptée. | ||
| 13524 | |||
| 13525 | Les autres options devraient être évidentes. | ||
| 13526 | @end deffn | ||
| 13527 | |||
| 13528 | @cindex SSH | ||
| 13529 | @cindex serveur SSH | ||
| 13530 | @deffn {Variable Scheme} openssh-service-type | ||
| 13531 | C'est le type pour le démon ssh @uref{http://www.openssh.org, OpenSSH}, | ||
| 13532 | @command{sshd}. Sa valeur doit être un enregistrement | ||
| 13533 | @code{openssh-configuration} comme dans cet exemple : | ||
| 13534 | |||
| 13535 | @example | ||
| 13536 | (service openssh-service-type | ||
| 13537 | (openssh-configuration | ||
| 13538 | (x11-forwarding? #t) | ||
| 13539 | (permit-root-login 'without-password) | ||
| 13540 | (authorized-keys | ||
| 13541 | `(("alice" ,(local-file "alice.pub")) | ||
| 13542 | ("bob" ,(local-file "bob.pub")))))) | ||
| 13543 | @end example | ||
| 13544 | |||
| 13545 | Voir plus bas pour trouver des détails sur @code{openssh-configuration}. | ||
| 13546 | |||
| 13547 | Ce service peut être étendu avec des clefs autorisées supplémentaires, comme | ||
| 13548 | dans cet exemple : | ||
| 13549 | |||
| 13550 | @example | ||
| 13551 | (service-extension openssh-service-type | ||
| 13552 | (const `(("charlie" | ||
| 13553 | ,(local-file "charlie.pub"))))) | ||
| 13554 | @end example | ||
| 13555 | @end deffn | ||
| 13556 | |||
| 13557 | @deftp {Type de données} openssh-configuration | ||
| 13558 | C'est l'enregistrement de la configuration de la commande @command{sshd} | ||
| 13559 | d'OpenSSH. | ||
| 13560 | |||
| 13561 | @table @asis | ||
| 13562 | @item @code{pid-file} (par défaut : @code{"/var/run/sshd.pid"}) | ||
| 13563 | Nom du fichier où @command{sshd} écrit son PID. | ||
| 13564 | |||
| 13565 | @item @code{port-number} (par défaut : @code{22}) | ||
| 13566 | Port TCP sur lequel @command{sshd} écoute les connexions entrantes. | ||
| 13567 | |||
| 13568 | @item @code{permit-root-login} (par défaut : @code{#f}) | ||
| 13569 | Ce champ détermine si et quand autoriser les connexions en root. Si la | ||
| 13570 | valeur est @code{#f}, les connexions en root sont désactivées ; si la valeur | ||
| 13571 | est @code{#t}, elles sont autorisées. S'il s'agit du symbole | ||
| 13572 | @code{'without-password}, alors les connexions root sont autorisées mais pas | ||
| 13573 | par une authentification par mot de passe. | ||
| 13574 | |||
| 13575 | @item @code{allow-empty-passwords?} (par défaut : @code{#f}) | ||
| 13576 | Lorsque la valeur est vraie, les utilisateurs avec un mot de passe vide | ||
| 13577 | peuvent se connecter. Sinon, ils ne peuvent pas. | ||
| 13578 | |||
| 13579 | @item @code{password-authentication?} (par défaut : @code{#t}) | ||
| 13580 | Lorsque la valeur est vraie, les utilisateurs peuvent se connecter avec leur | ||
| 13581 | mot de passe. Sinon, ils doivent utiliser une autre méthode | ||
| 13582 | d'authentification. | ||
| 13583 | |||
| 13584 | @item @code{public-key-authentication?} (par défaut : @code{#t}) | ||
| 13585 | Lorsque la valeur est vraie, les utilisateurs peuvent se connecter avec leur | ||
| 13586 | clef publique. Sinon, les utilisateurs doivent utiliser une autre méthode | ||
| 13587 | d'authentification. | ||
| 13588 | |||
| 13589 | Les clefs publiques autorisées sont stockées dans | ||
| 13590 | @file{~/.ssh/authorized_keys}. Ce n'est utilisé que par le protocole | ||
| 13591 | version 2. | ||
| 13592 | |||
| 13593 | @item @code{x11-forwarding?} (par défaut : @code{#f}) | ||
| 13594 | Lorsque la valeur est vraie, le transfert de connexion du client graphique | ||
| 13595 | X11 est activé — en d'autre termes, les options @option{-X} et @option{-Y} | ||
| 13596 | de @command{ssh} fonctionneront. | ||
| 13597 | |||
| 13598 | @item @code{allow-agent-forwarding?} (par défaut : @code{#t}) | ||
| 13599 | Indique s'il faut autoriser la redirection d'agent. | ||
| 13600 | |||
| 13601 | @item @code{allow-tcp-forwarding?} (par défaut : @code{#t}) | ||
| 13602 | Indique s'il faut autoriser la redirection TCP. | ||
| 13603 | |||
| 13604 | @item @code{gateway-ports?} (par défaut : @code{#f}) | ||
| 13605 | Indique s'il faut autoriser les ports de passerelle. | ||
| 13606 | |||
| 13607 | @item @code{challenge-response-authentication?} (par défaut : @code{#f}) | ||
| 13608 | Spécifie si l'authentification par défi est autorisée (p.@: ex.@: via PAM). | ||
| 13609 | |||
| 13610 | @item @code{use-pam?} (par défaut : @code{#t}) | ||
| 13611 | Active l'interface avec le module d'authentification greffable, PAM. Si la | ||
| 13612 | valeur est @code{#t}, cela activera l'authentification PAM avec | ||
| 13613 | @code{challenge-response-authentication?} et | ||
| 13614 | @code{password-authentication?}, en plus des modules de compte et de session | ||
| 13615 | de PAM pour tous les types d'authentification. | ||
| 13616 | |||
| 13617 | Comme l'authentification par défi de PAM sert généralement un rôle | ||
| 13618 | équivalent à l'authentification par mot de passe, vous devriez désactiver | ||
| 13619 | soit @code{challenge-response-authentication?}, soit | ||
| 13620 | @code{password-authentication?}. | ||
| 13621 | |||
| 13622 | @item @code{print-last-log?} (par défaut : @code{#t}) | ||
| 13623 | Spécifie si @command{sshd} devrait afficher la date et l'heure de dernière | ||
| 13624 | connexion des utilisateurs lorsqu'un utilisateur se connecte de manière | ||
| 13625 | interactive. | ||
| 13626 | |||
| 13627 | @item @code{subsystems} (par défaut : @code{'(("sftp" "internal-sftp"))}) | ||
| 13628 | Configure les sous-systèmes externes (p.@: ex.@: le démon de transfert de | ||
| 13629 | fichiers). | ||
| 13630 | |||
| 13631 | C'est une liste de paires, composées chacune du nom du sous-système et d'une | ||
| 13632 | commande (avec éventuellement des arguments) à exécuter à la demande du | ||
| 13633 | sous-système. | ||
| 13634 | |||
| 13635 | La commande @command{internal-sftp} implémente un serveur SFTP dans le | ||
| 13636 | processus. Autrement, on peut spécifier la commande @command{sftp-server} : | ||
| 13637 | @example | ||
| 13638 | (service openssh-service-type | ||
| 13639 | (openssh-configuration | ||
| 13640 | (subsystems | ||
| 13641 | `(("sftp" ,(file-append openssh "/libexec/sftp-server")))))) | ||
| 13642 | @end example | ||
| 13643 | |||
| 13644 | @item @code{accepted-environment} (par défaut : @code{'()}) | ||
| 13645 | Liste de chaînes de caractères qui décrivent les variables d'environnement | ||
| 13646 | qui peuvent être exportées. | ||
| 13647 | |||
| 13648 | Chaque chaîne a sa propre ligne. Voir l'option @code{AcceptEnv} dans | ||
| 13649 | @code{man sshd_config}. | ||
| 13650 | |||
| 13651 | Cet exemple permet aux clients ssh d'exporter la variable @code{COLORTERM}. | ||
| 13652 | Elle est initialisée par les émulateurs de terminaux qui supportent les | ||
| 13653 | couleurs. Vous pouvez l'utiliser dans votre fichier de ressource de votre | ||
| 13654 | shell pour activer les couleurs sur la ligne de commande si cette variable | ||
| 13655 | est initialisée. | ||
| 13656 | |||
| 13657 | @example | ||
| 13658 | (service openssh-service-type | ||
| 13659 | (openssh-configuration | ||
| 13660 | (accepted-environment '("COLORTERM")))) | ||
| 13661 | @end example | ||
| 13662 | |||
| 13663 | @item @code{authorized-keys} (par défaut : @code{'()}) | ||
| 13664 | @cindex clefs autorisées, SSH | ||
| 13665 | @cindex SSH, clefs autorisées | ||
| 13666 | C'est la liste des clefs autorisées. Chaque élément de la liste est un nom | ||
| 13667 | d'utilisateur suivit d'un ou plusieurs objets simili-fichiers qui | ||
| 13668 | représentent les clefs publiques SSH. Par exemple : | ||
| 13669 | |||
| 13670 | @example | ||
| 13671 | (openssh-configuration | ||
| 13672 | (authorized-keys | ||
| 13673 | `(("rekado" ,(local-file "rekado.pub")) | ||
| 13674 | ("chris" ,(local-file "chris.pub")) | ||
| 13675 | ("root" ,(local-file "rekado.pub") ,(local-file "chris.pub"))))) | ||
| 13676 | @end example | ||
| 13677 | |||
| 13678 | @noindent | ||
| 13679 | enregistre les clefs publiques spécifiées pour les comptes @code{rekado}, | ||
| 13680 | @code{chris} et @code{root}. | ||
| 13681 | |||
| 13682 | Des clefs autorisées supplémentaires peuvent être spécifiées via | ||
| 13683 | @code{service-extension}. | ||
| 13684 | |||
| 13685 | Remarquez que cela n'interfère @emph{pas} avec l'utilisation de | ||
| 13686 | @file{~/.ssh/authorized_keys}. | ||
| 13687 | |||
| 13688 | @item @code{log-level} (par défaut : @code{'info}) | ||
| 13689 | C'est le symbole qui spécifie le niveau de journalisation : @code{quiet}, | ||
| 13690 | @code{fatal}, @code{error}, @code{info}, @code{verbose}, @code{debug}, etc. | ||
| 13691 | Voir la page de manuel de @file{sshd_config} pour trouver la liste complète | ||
| 13692 | des noms de niveaux. | ||
| 13693 | |||
| 13694 | @item @code{extra-content} (par défaut : @code{""}) | ||
| 13695 | Ce champ peut être utilisé pour ajouter un texte arbitraire au fichier de | ||
| 13696 | configuration. C'est particulièrement utile pour des configurations | ||
| 13697 | élaborées qui ne pourraient pas être exprimées autrement. Cette | ||
| 13698 | configuration, par exemple, désactiverait les connexions en root, mais les | ||
| 13699 | permettrait depuis une adresse IP spécifique : | ||
| 13700 | |||
| 13701 | @example | ||
| 13702 | (openssh-configuration | ||
| 13703 | (extra-content "\ | ||
| 13704 | Match Address 192.168.0.1 | ||
| 13705 | PermitRootLogin yes")) | ||
| 13706 | @end example | ||
| 13707 | |||
| 13708 | @end table | ||
| 13709 | @end deftp | ||
| 13710 | |||
| 13711 | @deffn {Procédure Scheme} dropbear-service [@var{config}] | ||
| 13712 | Lance le @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,démon SSH | ||
| 13713 | Dropbear} avec la configuration @var{config} donnée, un objet | ||
| 13714 | @code{<dropbear-configuration>}. | ||
| 13715 | |||
| 13716 | Par exemple, pour spécifier un service Dropbear qui écoute sur le port 1234, | ||
| 13717 | ajoutez cet appel au champ @code{services} de votre système d'exploitation : | ||
| 13718 | |||
| 13719 | @example | ||
| 13720 | (dropbear-service (dropbear-configuration | ||
| 13721 | (port-number 1234))) | ||
| 13722 | @end example | ||
| 13723 | @end deffn | ||
| 13724 | |||
| 13725 | @deftp {Type de données} dropbear-configuration | ||
| 13726 | Ce type de données représente la configuration d'un démon SSH Dropbear. | ||
| 13727 | |||
| 13728 | @table @asis | ||
| 13729 | @item @code{dropbear} (par défaut : @var{dropbear}) | ||
| 13730 | Le paquet Dropbear à utiliser. | ||
| 13731 | |||
| 13732 | @item @code{port-number} (par défaut : 22) | ||
| 13733 | Le port TCP sur lequel le démon attend des connexions entrantes. | ||
| 13734 | |||
| 13735 | @item @code{syslog-output?} (par défaut : @code{#t}) | ||
| 13736 | Indique s'il faut activer la sortie vers syslog. | ||
| 13737 | |||
| 13738 | @item @code{pid-file} (par défaut : @code{"/var/run/dropbear.pid"}) | ||
| 13739 | Nom du fichier de PID du démon. | ||
| 13740 | |||
| 13741 | @item @code{root-login?} (par défaut : @code{#f}) | ||
| 13742 | Indique s'il faut autoriser les connexions en @code{root}. | ||
| 13743 | |||
| 13744 | @item @code{allow-empty-passwords?} (par défaut : @code{#f}) | ||
| 13745 | Indique s'il faut autoriser les mots de passes vides. | ||
| 13746 | |||
| 13747 | @item @code{password-authentication?} (par défaut : @code{#t}) | ||
| 13748 | Indique s'il faut autoriser l'authentification par mot de passe. | ||
| 13749 | @end table | ||
| 13750 | @end deftp | ||
| 13751 | |||
| 13752 | @defvr {Variable Scheme} %facebook-host-aliases | ||
| 13753 | Cette variable contient une chaîne de caractères à utiliser dans | ||
| 13754 | @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference | ||
| 13755 | Manual}). Chaque ligne contient une entrée qui fait correspondre les noms | ||
| 13756 | des serveurs connus du service en ligne Facebook — p.@: ex.@: | ||
| 13757 | @code{www.facebook.com} — à l'hôte local — @code{127.0.0.1} ou son | ||
| 13758 | équivalent en IPv6, @code{::1}. | ||
| 13759 | |||
| 13760 | Cette variable est typiquement utilisée dans le champ @code{hosts-file} | ||
| 13761 | d'une déclaration @code{operating-system} (@pxref{Référence de système d'exploitation, @file{/etc/hosts}}) : | ||
| 13762 | |||
| 13763 | @example | ||
| 13764 | (use-modules (gnu) (guix)) | ||
| 13765 | |||
| 13766 | (operating-system | ||
| 13767 | (host-name "mamachine") | ||
| 13768 | ;; ... | ||
| 13769 | (hosts-file | ||
| 13770 | ;; Crée un fichier /etc/hosts avec des alias pour « localhost » | ||
| 13771 | ;; et « mamachine », ainsi que pour les serveurs de Facebook. | ||
| 13772 | (plain-file "hosts" | ||
| 13773 | (string-append (local-host-aliases host-name) | ||
| 13774 | %facebook-host-aliases)))) | ||
| 13775 | @end example | ||
| 13776 | |||
| 13777 | Ce mécanisme peut éviter que des programmes qui tournent localement, comme | ||
| 13778 | des navigateurs Web, ne se connectent à Facebook. | ||
| 13779 | @end defvr | ||
| 13780 | |||
| 13781 | Le module @code{(gnu services avahi)} fourni la définition suivante. | ||
| 13782 | |||
| 13783 | @defvr {Variable Scheme} avahi-service-type | ||
| 13784 | C'est le service qui lance @command{avahi-daemon}, un service système qui | ||
| 13785 | répond aux requêtes mDNS/DNS-SD qui permet la découverte de service et la | ||
| 13786 | recherche de nom en « zéro configuration » (voir @uref{http://avahi.org/}). | ||
| 13787 | Sa valeur doit être un enregistrement @code{zero-configuration} — voir plus | ||
| 13788 | bas. | ||
| 13789 | |||
| 13790 | Ce service étend le démon de cache de services de noms (nscd) pour qu'il | ||
| 13791 | puisse résoudre les noms d'hôtes en @code{.local} avec | ||
| 13792 | @uref{http://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. | ||
| 13793 | |||
| 13794 | En plus, cela ajoute le paquet @var{avahi} au profil du système pour que les | ||
| 13795 | commandes comme @command{avahi-browse} soient directement utilisables. | ||
| 13796 | @end defvr | ||
| 13797 | |||
| 13798 | @deftp {Type de données} avahi-configuration | ||
| 13799 | Type de données représentant la configuration d'Avahi. | ||
| 13800 | |||
| 13801 | @table @asis | ||
| 13802 | |||
| 13803 | @item @code{host-name} (par défaut : @code{#f}) | ||
| 13804 | Si la valeur n'est pas @code{#f}, utilise cette valeur comme nom d'hôte à | ||
| 13805 | publier pour la machine ; sinon, utilise le vrai nom d'hôte de la machine. | ||
| 13806 | |||
| 13807 | @item @code{publish?} (par défaut : @code{#t}) | ||
| 13808 | Lorsque la valeur est vraie, permet la publication sur le réseau (en | ||
| 13809 | diffusion) des noms d'hôtes et des services. | ||
| 13810 | |||
| 13811 | @item @code{publish-workstation?} (par défaut : @code{#t}) | ||
| 13812 | Lorsque la valeur est vraie, @command{avahi-daemon} publie le nom d'hôte et | ||
| 13813 | l'adresse IP de la machine via mDNS sur le réseau local. Pour voir les noms | ||
| 13814 | d'hôtes publiés sur votre réseau local, vous pouvez lancer : | ||
| 13815 | |||
| 13816 | @example | ||
| 13817 | avahi-browse _workstation._tcp | ||
| 13818 | @end example | ||
| 13819 | |||
| 13820 | @item @code{wide-area?} (par défaut : @code{#f}) | ||
| 13821 | Lorsque la valeur est vraie, DNS-SD sur DNS unicast est activé. | ||
| 13822 | |||
| 13823 | @item @code{ipv4?} (par défaut : @code{#t}) | ||
| 13824 | @itemx @code{ipv6?} (par défaut : @code{#t}) | ||
| 13825 | Ces champs déterminent s'il faut utiliser des socket IPv4/IPv6. | ||
| 13826 | |||
| 13827 | @item @code{domains-to-browse} (par défaut : @code{'()}) | ||
| 13828 | C'est la liste des domaines sur lesquels naviguer. | ||
| 13829 | @end table | ||
| 13830 | @end deftp | ||
| 13831 | |||
| 13832 | @deffn {Variable Scheme} openvswitch-service-type | ||
| 13833 | C'est le type du service @uref{http://www.openvswitch.org, Open vSwitch}, | ||
| 13834 | dont la valeur devrait être un objet @code{openvswitch-configuration}. | ||
| 13835 | @end deffn | ||
| 13836 | |||
| 13837 | @deftp {Type de données} openvswitch-configuration | ||
| 13838 | Type de données représentant la configuration de Open vSwitch, un | ||
| 13839 | commutateur virtuel multiniveaux conçu pour rendre possible l'automatisation | ||
| 13840 | massive des réseaux avec des extensions programmables. | ||
| 13841 | |||
| 13842 | @table @asis | ||
| 13843 | @item @code{package} (par défaut : @var{openvswitch}) | ||
| 13844 | Objet de paquet de Open vSwitch. | ||
| 13845 | |||
| 13846 | @end table | ||
| 13847 | @end deftp | ||
| 13848 | |||
| 13849 | @node Système de fenêtrage X | ||
| 13850 | @subsection Système de fenêtrage X | ||
| 13851 | |||
| 13852 | @cindex X11 | ||
| 13853 | @cindex Système de fenêtrage X | ||
| 13854 | @cindex gestionnaire de connexion | ||
| 13855 | La prise en chargue du système d'affichage graphique X Window — en | ||
| 13856 | particulier Xorg — est fournit par le module @code{(gnu services xorg)}. | ||
| 13857 | Remarquez qu'il n'y a pas de procédure @code{xorg-service}. À la place, le | ||
| 13858 | serveur X est démarré par le @dfn{gestionnaire de connexion}, par défaut le | ||
| 13859 | gestionnaire d'affichage de GNOME (GDM). | ||
| 13860 | |||
| 13861 | @cindex GDM | ||
| 13862 | @cindex GNOME, gestionnaire de connexion | ||
| 13863 | GDM permet évidemment aux utilisateurs de se connecter et d'ouvrir un | ||
| 13864 | gestionnaire de fenêtre ou un gestionnaire d'environnement autre que GNOME ; | ||
| 13865 | pour ceux qui utilisent GNOME, GDM est requis pour certaines fonctionnalités | ||
| 13866 | comme l'écran de verrouillage automatique. | ||
| 13867 | |||
| 13868 | @cindex gestionnaire de fenêtre | ||
| 13869 | Pour utiliser X11, vous devez installer au moins un @dfn{gestionnaire de | ||
| 13870 | fenêtre} — par exemple les paquets @code{windowmaker} ou @code{openbox} — de | ||
| 13871 | préférence en l'ajoutant au champ @code{packages} de votre définition de | ||
| 13872 | système d'exploitation (@pxref{Référence de système d'exploitation, system-wide | ||
| 13873 | packages}). | ||
| 13874 | |||
| 13875 | @defvr {Variable Scheme} gdm-service-type | ||
| 13876 | C'est le type pour le @uref{https://wiki.gnome.org/Projects/GDM/, | ||
| 13877 | gestionnaire d'affichage de GNOME} (GDM), un programme qui gère les serveurs | ||
| 13878 | d'affichage graphiques et s'occupe de la connexion graphique des | ||
| 13879 | utilisateurs. Sa valeur doit être un @code{gdm-configuration} (voir plus | ||
| 13880 | bas). | ||
| 13881 | |||
| 13882 | @cindex types de sessions (X11) | ||
| 13883 | @cindex X11, types de sessions | ||
| 13884 | GDM cherche des @dfn{types de sessions} définies par les fichiers | ||
| 13885 | @file{.desktop} dans @file{/run/current-system/profile/share/xsessions} et | ||
| 13886 | permet aux utilisateurs de choisir une session depuis l'écran de connexion. | ||
| 13887 | Les paquets comme @code{gnmoe}, @code{xfce} et @code{i3} fournissent des | ||
| 13888 | fichiers @file{.desktop} ; les ajouter à l'ensemble des paquets du système | ||
| 13889 | les rendra automatiquement disponibles sur l'écran de connexion. | ||
| 13890 | |||
| 13891 | En plus, les fichiers @file{~/.xsession} sont honorées. Lorsqu'il est | ||
| 13892 | disponible, @file{~/.xsession} doit être un fichier exécutable qui démarre | ||
| 13893 | un gestionnaire de fenêtre au un autre client X. | ||
| 13894 | @end defvr | ||
| 13895 | |||
| 13896 | @deftp {Type de données} gdm-configuration | ||
| 13897 | @table @asis | ||
| 13898 | @item @code{auto-login?} (par défaut : @code{#f}) | ||
| 13899 | @itemx @code{default-user} (par défaut : @code{#f}) | ||
| 13900 | Lorsque @code{auto-login?} est faux, GDM présente un écran de connexion. | ||
| 13901 | |||
| 13902 | Lorsque @code{auto-login?} est vrai, GDM se connecte directement en tant que | ||
| 13903 | @code{default-user}. | ||
| 13904 | |||
| 13905 | @item @code{gnome-shell-assets} (par défaut : …) | ||
| 13906 | Liste de données requises par GDM : un thème d'icônes, des polices, etc. | ||
| 13907 | |||
| 13908 | @item @code{xorg-configuration} (par défaut : @code{(xorg-configuration)}) | ||
| 13909 | Configuration du serveur graphique Xorg. | ||
| 13910 | |||
| 13911 | @item @code{xsession} (par défaut : @code{xinitrc}) | ||
| 13912 | Le script à lancer avant de démarrer une session X. | ||
| 13913 | |||
| 13914 | @item @code{dbus-daemon} (par défaut : @code{dbus-daemon-wrapper}) | ||
| 13915 | Nom du fichier de l'exécutable @code{dbus-daemon}. | ||
| 13916 | |||
| 13917 | @item @code{gdm} (par défaut : @code{gdm}) | ||
| 13918 | Le paquet GDM à utiliser. | ||
| 13919 | @end table | ||
| 13920 | @end deftp | ||
| 13921 | |||
| 13922 | @defvr {Variable Scheme} slim-service-type | ||
| 13923 | C'est de type pour le gestionnaire de connexion graphique SLiM pour X11. | ||
| 13924 | |||
| 13925 | Comme GDM, SLiM recherche des types de sessions décrites par des fichiers | ||
| 13926 | @file{.desktop} et permet aux utilisateurs de choisir une session à partir | ||
| 13927 | de l'écran de connexion avec @kbd{F1}. Il comprend aussi les fichiers | ||
| 13928 | @file{~/.xsession}. | ||
| 13929 | @end defvr | ||
| 13930 | |||
| 13931 | @deftp {Type de données} slim-configuration | ||
| 13932 | Type de données représentant la configuration de @code{slim-service-type}. | ||
| 13933 | |||
| 13934 | @table @asis | ||
| 13935 | @item @code{allow-empty-passwords?} (par défaut : @code{#t}) | ||
| 13936 | S'il faut autoriser les connexions avec un mot de passe vide. | ||
| 13937 | |||
| 13938 | @item @code{auto-login?} (par défaut : @code{#f}) | ||
| 13939 | @itemx @code{default-user} (par défaut : @code{""}) | ||
| 13940 | Lorsque @code{auto-login?} est faux, SLiM présent un écran de connexion. | ||
| 13941 | |||
| 13942 | Lorsque @code{auto-login?} est vrai, SLiM se connecte directement en tant | ||
| 13943 | que @code{default-user}. | ||
| 13944 | |||
| 13945 | @item @code{theme} (par défaut : @code{%default-slim-theme}) | ||
| 13946 | @itemx @code{theme-name} (par défaut : @code{%default-slim-theme-name}) | ||
| 13947 | Le thème graphique à utiliser et son nom. | ||
| 13948 | |||
| 13949 | @item @code{auto-login-session} (par défaut : @code{#f}) | ||
| 13950 | Si la valeur est vraie, elle doit être le nom d'un exécutable à démarrer | ||
| 13951 | comme session par défaut — p.@: ex.@: @code{(file-append windowmaker | ||
| 13952 | "/bin/windowmaker")}. | ||
| 13953 | |||
| 13954 | Si la valeur est fausse, une session décrite par l'un des fichiers | ||
| 13955 | @file{.desktop} disponibles dans @code{/run/current-system/profile} et | ||
| 13956 | @code{~/.guix-profile} sera utilisée. | ||
| 13957 | |||
| 13958 | @quotation Remarque | ||
| 13959 | Vous devez installer au moins un gestionnaire de fenêtres dans le profil du | ||
| 13960 | système ou dans votre profil utilisateur. Sinon, si | ||
| 13961 | @code{auto-login-session} est faux, vous ne serez jamais capable de vous | ||
| 13962 | connecter. | ||
| 13963 | @end quotation | ||
| 13964 | |||
| 13965 | @item @code{xorg-configuration} (par défaut : @code{(xorg-configuration)}) | ||
| 13966 | Configuration du serveur graphique Xorg. | ||
| 13967 | |||
| 13968 | @item @code{xauth} (par défaut : @code{xauth}) | ||
| 13969 | Le paquet XAuth à utiliser. | ||
| 13970 | |||
| 13971 | @item @code{shepherd} (par défaut : @code{shepherd}) | ||
| 13972 | Le paquet Shepherd à utiliser pour invoquer @command{halt} et | ||
| 13973 | @command{reboot}. | ||
| 13974 | |||
| 13975 | @item @code{sessreg} (par défaut : @code{sessreg}) | ||
| 13976 | Le paquet sessreg à utiliser pour enregistrer la session. | ||
| 13977 | |||
| 13978 | @item @code{slim} (par défaut : @code{slim}) | ||
| 13979 | Le paquet SLiM à utiliser. | ||
| 13980 | @end table | ||
| 13981 | @end deftp | ||
| 13982 | |||
| 13983 | @defvr {Variable Scheme} %default-theme | ||
| 13984 | @defvrx {Variable Scheme} %default-theme-name | ||
| 13985 | Le thème SLiM par défaut et son nom. | ||
| 13986 | @end defvr | ||
| 13987 | |||
| 13988 | |||
| 13989 | @deftp {Type de données} sddm-configuration | ||
| 13990 | C'est le type de données représentant la configuration du service sddm. | ||
| 13991 | |||
| 13992 | @table @asis | ||
| 13993 | @item @code{display-server} (par défaut : "x11") | ||
| 13994 | Choisit le serveur d'affichage à utiliser pour l'écran d'accueil. Les | ||
| 13995 | valeurs valides sont « x11 » et « wayland ». | ||
| 13996 | |||
| 13997 | @item @code{numlock} (par défaut : "on") | ||
| 13998 | Les valeurs valides sont « on », « off » ou « none ». | ||
| 13999 | |||
| 14000 | @item @code{halt-command} (par défaut : @code{#~(string-apppend #$shepherd "/sbin/halt")}) | ||
| 14001 | La commande à lancer à l'arrêt du système. | ||
| 14002 | |||
| 14003 | @item @code{reboot-command} (par défaut : @code{#~(string-append #$shepherd "/sbin/reboot")}) | ||
| 14004 | La commande à lancer lors du redémarrage du système. | ||
| 14005 | |||
| 14006 | @item @code{theme} (par défaut : "maldives") | ||
| 14007 | Le thème à utiliser. Les thèmes par défaut fournis par SDDM sont « elarun » | ||
| 14008 | et « maldives ». | ||
| 14009 | |||
| 14010 | @item @code{themes-directory} (par défaut : "/run/current-system/profile/share/sddm/themes") | ||
| 14011 | Le répertoire où se trouvent les thèmes. | ||
| 14012 | |||
| 14013 | @item @code{faces-directory} (par défaut : "/run/current-system/profile/share/sddm/faces") | ||
| 14014 | Répertoire où se trouvent les avatars. | ||
| 14015 | |||
| 14016 | @item @code{default-path} (par défaut : "/run/current-system/profile/bin") | ||
| 14017 | Le PATH par défaut à utiliser. | ||
| 14018 | |||
| 14019 | @item @code{minimum-uid} (par défaut : 1000) | ||
| 14020 | UID minimum pour être affiché dans SDDM. | ||
| 14021 | |||
| 14022 | @item @code{maximum-uid} (par défaut : 2000) | ||
| 14023 | UID maximum pour être affiché dans SDDM | ||
| 14024 | |||
| 14025 | @item @code{remember-last-user?} (par défaut : #t) | ||
| 14026 | S'il faut se rappeler le dernier utilisateur connecté. | ||
| 14027 | |||
| 14028 | @item @code{remember-last-session?} (par défaut : #t) | ||
| 14029 | S'il faut se rappeler la dernière session. | ||
| 14030 | |||
| 14031 | @item @code{hide-users} (par défaut : "") | ||
| 14032 | Les noms d'utilisateurs à cacher sur l'écran d'accueil de SDDM. | ||
| 14033 | |||
| 14034 | @item @code{hide-shells} (par défaut : @code{#~(string-append #$shadow "/sbin/nologin")}) | ||
| 14035 | Les utilisateurs avec les shells listés seront cachés sur l'écran d'accueil | ||
| 14036 | de SDDM. | ||
| 14037 | |||
| 14038 | @item @code{session-command} (par défaut : @code{#~(string-append #$sddm "/share/sddm/scripts/wayland-session")}) | ||
| 14039 | Le script à lancer avant de démarrer une session wayland. | ||
| 14040 | |||
| 14041 | @item @code{sessions-directory} (par défaut : "/run/current-system/profile/share/wayland-sessions") | ||
| 14042 | Le répertoire où trouver les fichiers .desktop qui démarrent des sessions | ||
| 14043 | wayland. | ||
| 14044 | |||
| 14045 | @item @code{xorg-configuration} (par défaut : @code{(xorg-configuration)}) | ||
| 14046 | Configuration du serveur graphique Xorg. | ||
| 14047 | |||
| 14048 | @item @code{xauth-path} (par défaut : @code{#~(string-append #$xauth "/bin/xauth")}) | ||
| 14049 | Chemin vers xauth. | ||
| 14050 | |||
| 14051 | @item @code{xephyr-path} (par défaut : @code{#~(string-append #$xorg-server "/bin/Xephyr")}) | ||
| 14052 | Chemin vers Xephyr. | ||
| 14053 | |||
| 14054 | @item @code{xdisplay-start} (par défaut : @code{#~(string-append #$sddm "/share/sddm/scripts/Xsetup")}) | ||
| 14055 | Le script à lancer après avoir démarré xorg-server. | ||
| 14056 | |||
| 14057 | @item @code{xdisplay-stop} (par défaut : @code{#~(string-append #$sddm "/share/sddm/scripts/Xstop")}) | ||
| 14058 | Le script à lancer avant d'arrêter xorg-server. | ||
| 14059 | |||
| 14060 | @item @code{xsession-command} (par défaut : @code{xinitrc}) | ||
| 14061 | Le script à lancer avant de démarrer une session X. | ||
| 14062 | |||
| 14063 | @item @code{xsessions-directory} (par défaut : "/run/current-system/profile/share/xsessions") | ||
| 14064 | Répertoire où trouver les fichiers .desktop pour les sessions X. | ||
| 14065 | |||
| 14066 | @item @code{minimum-vt} (par défaut : 7) | ||
| 14067 | VT minimal à utiliser. | ||
| 14068 | |||
| 14069 | @item @code{auto-login-user} (par défaut : "") | ||
| 14070 | Utilisateur à utiliser pour la connexion automatique. | ||
| 14071 | |||
| 14072 | @item @code{auto-login-session} (par défaut : "") | ||
| 14073 | Le fichier desktop à utiliser pour la connexion automatique. | ||
| 14074 | |||
| 14075 | @item @code{relogin?} (par défaut : #f) | ||
| 14076 | S'il faut se reconnecter après la déconnexion. | ||
| 14077 | |||
| 14078 | @end table | ||
| 14079 | @end deftp | ||
| 14080 | |||
| 14081 | @cindex gestionnaire de connexion | ||
| 14082 | @cindex connexion X11 | ||
| 14083 | @deffn {Procédure Scheme} sddm-service config | ||
| 14084 | Renvoie un service qui démarre le gestionnaire de connexion graphique SDDM | ||
| 14085 | avec une configuration de type @code{<sddm-configuration>}. | ||
| 14086 | |||
| 14087 | @example | ||
| 14088 | (sddm-service (sddm-configuration | ||
| 14089 | (auto-login-user "Alice") | ||
| 14090 | (auto-login-session "xfce.desktop"))) | ||
| 14091 | @end example | ||
| 14092 | @end deffn | ||
| 14093 | |||
| 14094 | @cindex Xorg, configuration | ||
| 14095 | @deftp {Type de données} xorg-configuration | ||
| 14096 | Ce type de données représente la configuration du serveur d'affichage | ||
| 14097 | graphique Xorg. Remarquez qu'il ne s'agit pas d'un service Xorg ; à la | ||
| 14098 | place, le serveur X est démarré par un « gestionnaire d'affichage graphique | ||
| 14099 | » comme GDM, SDDM et SLiM. Ainsi, la configuration de ces gestionnaires | ||
| 14100 | d'affichage agrègent un enregistrement @code{xorg-configuration}. | ||
| 14101 | |||
| 14102 | @table @asis | ||
| 14103 | @item @code{modules} (par défaut : @code{%default-xorg-modules}) | ||
| 14104 | C'est une liste de @dfn{paquets de module} chargés par le serveur Xorg — | ||
| 14105 | p.@: ex.@: @code{xf86-video-vesa}, @code{xf86-input-keyboard} etc. | ||
| 14106 | |||
| 14107 | @item @code{fonts} (par défaut : @code{%default-xorg-fonts}) | ||
| 14108 | C'est une liste de répertoires de polices à ajouter au @dfn{chemin de | ||
| 14109 | polices} du serveur. | ||
| 14110 | |||
| 14111 | @item @code{drivers} (par défaut : @code{'()}) | ||
| 14112 | Cela doit être soit la liste vide, auquel cas Xorg choisit un pilote | ||
| 14113 | graphique automatiquement, soit une liste de noms de pilotes qui seront | ||
| 14114 | essayés dans cet ordre — p.@: ex.@: @code{("modesetting" "vesa")} | ||
| 14115 | |||
| 14116 | @item @code{resolutions} (par défaut : @code{'()}) | ||
| 14117 | Lorsque @code{resolutions} est la liste vide, Xorg choisit une résolution | ||
| 14118 | d'écran appropriée. Sinon, il doit s'agir d'une liste de résolutions — p.@: | ||
| 14119 | ex.@: @code{((1024 768) (640 480))} | ||
| 14120 | |||
| 14121 | @cindex disposition du clavier, pour Xorg | ||
| 14122 | @cindex disposition des touches, Xorg | ||
| 14123 | @item @code{keyboard-layout} (par défaut : @code{#f}) | ||
| 14124 | Si la valeur est @code{#f}, Xorg utilise la disposition du clavier par | ||
| 14125 | défaut — habituellement la disposition anglaise américaine (« qwerty ») pour | ||
| 14126 | un clavier de PC à 105 touches. | ||
| 14127 | |||
| 14128 | Sinon cela doit être un objet @code{keyboard-layout} spécifiant la | ||
| 14129 | disposition du clavier à utiliser lorsque Xorg tourne. @xref{Disposition du clavier} pour plus d'informations sur la manière de spécifier la disposition | ||
| 14130 | du clavier. | ||
| 14131 | |||
| 14132 | @item @code{extra-config} (par défaut : @code{'()}) | ||
| 14133 | C'est une liste de chaînes de caractères ou d'objets ajoutés au fichier de | ||
| 14134 | configuration. Elle est utile pour ajouter du texte supplémentaire | ||
| 14135 | directement dans le fichier de configuration. | ||
| 14136 | |||
| 14137 | @item @code{server} (par défaut : @code{xorg-server}) | ||
| 14138 | C'est le paquet fournissant le serveur Xorg. | ||
| 14139 | |||
| 14140 | @item @code{server-arguments} (par défaut : @code{%default-xorg-server-arguments}) | ||
| 14141 | Liste d'arguments de la ligne de commande supplémentaires à passer au | ||
| 14142 | serveur X. La valeur par défaut est @code{-nolisten tcp}. | ||
| 14143 | @end table | ||
| 14144 | @end deftp | ||
| 14145 | |||
| 14146 | @deffn {Procédure Scheme} set-xorg-configuration @var{config} @ | ||
| 14147 | [@var{login-manager-service-type}] | ||
| 14148 | Dit au gestionnaire de connexion (de type @var{login-manager-service-type}) | ||
| 14149 | d'utiliser @var{config}, un enregistrement <xorg-configuration>. | ||
| 14150 | |||
| 14151 | Comme la configuration Xog est incluse dans la configuration du gestionnaire | ||
| 14152 | de connexion — p.@: ex.@: @code{gdm-configuration} — cette procédure fournit | ||
| 14153 | un raccourci pour configurer Xorg. | ||
| 14154 | @end deffn | ||
| 14155 | |||
| 14156 | @deffn {Procédure Scheme} xorg-start-command [@var{config}] | ||
| 14157 | Renvoie un script @code{startx} dans lequel les modules, les polices, etc, | ||
| 14158 | spécifiés dans @var{config} sont disponibles. Le résultat devrait être | ||
| 14159 | utilisé à la place de @code{startx}. | ||
| 14160 | |||
| 14161 | Habituellement le serveur X est démarré par un gestionnaire de connexion. | ||
| 14162 | @end deffn | ||
| 14163 | |||
| 14164 | |||
| 14165 | @deffn {Procédure Scheme} screen-locker-service @var{package} [@var{program}] | ||
| 14166 | Ajoute @var{package}, un paquet pour un verrouiller l'écran ou un | ||
| 14167 | économiseur d'écran dont la commande est @var{program}, à l'ensemble des | ||
| 14168 | programmes setuid et lui ajoute une entrée PAM. Par exemple : | ||
| 14169 | |||
| 14170 | @lisp | ||
| 14171 | (screen-locker-service xlockmore "xlock") | ||
| 14172 | @end lisp | ||
| 14173 | |||
| 14174 | rend utilisable le bon vieux XlockMore. | ||
| 14175 | @end deffn | ||
| 14176 | |||
| 14177 | |||
| 14178 | @node Services d'impression | ||
| 14179 | @subsection Services d'impression | ||
| 14180 | |||
| 14181 | @cindex support des imprimantes avec CUPS | ||
| 14182 | Le module @code{(gnu services cups)} fournit une définition de service Guix | ||
| 14183 | pour le service d'impression CUPS. Pour ajouter la prise en charge d'une | ||
| 14184 | imprimante à un système Guix, ajoutez un @code{cups-service} à la définition | ||
| 14185 | du système d'exploitation : | ||
| 14186 | |||
| 14187 | @deffn {Variable Scheme} cups-service-type | ||
| 14188 | Le type de service pour un serveur d'impression CUPS. Sa valeur devrait | ||
| 14189 | être une configuration CUPS valide (voir plus bas). Pour utiliser les | ||
| 14190 | paramètres par défaut, écrivez simplement : | ||
| 14191 | @example | ||
| 14192 | (service cups-service-type) | ||
| 14193 | @end example | ||
| 14194 | @end deffn | ||
| 14195 | |||
| 14196 | La configuration de CUPS contrôle les paramètres de base de votre | ||
| 14197 | installation CUPS : sur quelles interfaces il doit écouter, que faire si un | ||
| 14198 | travail échoue, combien de journalisation il faut faire, etc. Pour ajouter | ||
| 14199 | une imprimante, vous devrez visiter l'URL @url{http://localhost:631} ou | ||
| 14200 | utiliser un outil comme les services de configuration d'imprimante de | ||
| 14201 | GNOME. Par défaut, la configuration du service CUPS générera un certificat | ||
| 14202 | auto-signé si besoin, pour les connexions sécurisée avec le serveur | ||
| 14203 | d'impression. | ||
| 14204 | |||
| 14205 | Supposons que vous souhaitiez activer l'interface Web de CUPS et ajouter le | ||
| 14206 | support pour les imprimantes Epson via le paquet @code{escpr} et pour les | ||
| 14207 | imprimantes HP via le paquet @code{hplip-minimal}. Vous pouvez le faire | ||
| 14208 | directement, comme ceci (vous devez utiliser le module @code{(gnu packages | ||
| 14209 | cups)}) : | ||
| 14210 | |||
| 14211 | @example | ||
| 14212 | (service cups-service-type | ||
| 14213 | (cups-configuration | ||
| 14214 | (web-interface? #t) | ||
| 14215 | (extensions | ||
| 14216 | (list cups-filters escpr hplip-minimal)))) | ||
| 14217 | @end example | ||
| 14218 | |||
| 14219 | Remarque : si vous souhaitez utiliser la GUI basée sur Qt5 qui provient du | ||
| 14220 | paquet hplip, nous vous suggérons d'installer le paquet @code{hplip}, soit | ||
| 14221 | dans votre configuration d'OS, soit en tant qu'utilisateur. | ||
| 14222 | |||
| 14223 | Les paramètres de configuration disponibles sont les suivants. Chaque | ||
| 14224 | définition des paramètres est précédé par son type ; par exemple, | ||
| 14225 | @samp{string-list foo} indique que le paramètre @code{foo} devrait être | ||
| 14226 | spécifié comme une liste de chaînes de caractères. Il y a aussi une manière | ||
| 14227 | de spécifier la configuration comme une chaîne de caractères, si vous avez | ||
| 14228 | un vieux fichier @code{cupsd.conf} que vous voulez porter depuis un autre | ||
| 14229 | système ; voir la fin pour plus de détails. | ||
| 14230 | |||
| 14231 | @c The following documentation was initially generated by | ||
| 14232 | @c (generate-documentation) in (gnu services cups). Manually maintained | ||
| 14233 | @c documentation is better, so we shouldn't hesitate to edit below as | ||
| 14234 | @c needed. However if the change you want to make to this documentation | ||
| 14235 | @c can be done in an automated way, it's probably easier to change | ||
| 14236 | @c (generate-documentation) than to make it below and have to deal with | ||
| 14237 | @c the churn as CUPS updates. | ||
| 14238 | |||
| 14239 | |||
| 14240 | Les champs de @code{cups-configuration} disponibles sont : | ||
| 14241 | |||
| 14242 | @deftypevr {paramètre de @code{cups-configuration}} package cups | ||
| 14243 | Le paquet CUPS. | ||
| 14244 | @end deftypevr | ||
| 14245 | |||
| 14246 | @deftypevr {paramètre de @code{cups-configuration}} package-list extensions | ||
| 14247 | Pilotes et autres extensions du paquet CUPS. | ||
| 14248 | @end deftypevr | ||
| 14249 | |||
| 14250 | @deftypevr {paramètre de @code{cups-configuration}} files-configuration files-configuration | ||
| 14251 | Configuration de l'emplacement où écrire les journaux, quels répertoires | ||
| 14252 | utiliser pour les travaux d'impression et les paramètres de configuration | ||
| 14253 | privilégiés liés. | ||
| 14254 | |||
| 14255 | Les champs @code{files-configuration} disponibles sont : | ||
| 14256 | |||
| 14257 | @deftypevr {paramètre de @code{files-configuration}} log-location access-log | ||
| 14258 | Définit le fichier de journal d'accès. Spécifier un nom de fichier vide | ||
| 14259 | désactive la génération de journaux d'accès. La valeur @code{stderr} fait | ||
| 14260 | que les entrées du journal seront envoyés sur l'erreur standard lorsque | ||
| 14261 | l'ordonnanceur est lancé au premier plan ou vers le démon de journal système | ||
| 14262 | lorsqu'il tourne en tache de fond. La valeur @code{syslog} fait que les | ||
| 14263 | entrées du journal sont envoyées au démon de journalisation du système. Le | ||
| 14264 | nom du serveur peut être inclus dans les noms de fichiers avec la chaîne | ||
| 14265 | @code{%s}, comme dans @code{/var/log/cups/%s-access_log}. | ||
| 14266 | |||
| 14267 | La valeur par défaut est @samp{"/var/log/cups/access_log"}. | ||
| 14268 | @end deftypevr | ||
| 14269 | |||
| 14270 | @deftypevr {paramètre de @code{files-configuration}} file-name cache-dir | ||
| 14271 | L'emplacement où CUPS devrait mettre les données en cache. | ||
| 14272 | |||
| 14273 | La valeur par défaut est @samp{"/var/cache/cups"}. | ||
| 14274 | @end deftypevr | ||
| 14275 | |||
| 14276 | @deftypevr {paramètre de @code{files-configuration}} string config-file-perm | ||
| 14277 | Spécifie les permissions pour tous les fichiers de configuration que | ||
| 14278 | l'ordonnanceur écrit. | ||
| 14279 | |||
| 14280 | Remarquez que les permissions pour le fichier printers.conf sont | ||
| 14281 | actuellement masqués pour ne permettre que l'accès par l'utilisateur de | ||
| 14282 | l'ordonnanceur (typiquement root). La raison est que les URI des | ||
| 14283 | imprimantes contiennent des informations d'authentification sensibles qui ne | ||
| 14284 | devraient pas être connues sur le système. Il n'est pas possible de | ||
| 14285 | désactiver cette fonctionnalité de sécurité. | ||
| 14286 | |||
| 14287 | La valeur par défaut est @samp{"0640"}. | ||
| 14288 | @end deftypevr | ||
| 14289 | |||
| 14290 | @deftypevr {paramètre de @code{files-configuration}} log-location error-log | ||
| 14291 | Définit le fichier de journal d'erreur. Spécifier un nom de fichier vide | ||
| 14292 | désactive la génération de journaux d'erreur. La valeur @code{stderr} fait | ||
| 14293 | que les entrées du journal seront envoyés sur l'erreur standard lorsque | ||
| 14294 | l'ordonnanceur est lancé au premier plan ou vers le démon de journal système | ||
| 14295 | lorsqu'il tourne en tache de fond. La valeur @code{syslog} fait que les | ||
| 14296 | entrées du journal sont envoyées au démon de journalisation du système. Le | ||
| 14297 | nom du serveur peut être inclus dans les noms de fichiers avec la chaîne | ||
| 14298 | @code{%s}, comme dans @code{/var/log/cups/%s-error_log}. | ||
| 14299 | |||
| 14300 | La valeur par défaut est @samp{"/var/log/cups/error_log"}. | ||
| 14301 | @end deftypevr | ||
| 14302 | |||
| 14303 | @deftypevr {paramètre de @code{files-configuration}} string fatal-errors | ||
| 14304 | Spécifie quelles erreurs sont fatales, qui font terminer l'ordonnanceur. | ||
| 14305 | Les types de chaînes sont : | ||
| 14306 | |||
| 14307 | @table @code | ||
| 14308 | @item none | ||
| 14309 | Aucune erreur n'est fatale. | ||
| 14310 | |||
| 14311 | @item all | ||
| 14312 | Toutes les erreurs ci-dessous sont fatales. | ||
| 14313 | |||
| 14314 | @item browse | ||
| 14315 | Les erreurs d'initialisation de la navigation sont fatales, par exemple les | ||
| 14316 | connexion échouées au démon DNS-SD. | ||
| 14317 | |||
| 14318 | @item config | ||
| 14319 | Les erreurs de syntaxe du fichier de configuration sont fatale. | ||
| 14320 | |||
| 14321 | @item listen | ||
| 14322 | Les erreurs d'écoute ou de port sont fatales, sauf pour les erreurs d'IPv6 | ||
| 14323 | sur la boucle locale ou les adresses @code{any}. | ||
| 14324 | |||
| 14325 | @item log | ||
| 14326 | Les erreurs de création ou d'écriture des fichiers de journal sont fatales. | ||
| 14327 | |||
| 14328 | @item permissions | ||
| 14329 | Les mauvaises permissions des fichiers de démarrage sont fatales, par | ||
| 14330 | exemple un certificat TLS et des fichiers de clefs avec des permissions | ||
| 14331 | permettant la lecture à tout le monde. | ||
| 14332 | @end table | ||
| 14333 | |||
| 14334 | La valeur par défaut est @samp{"all -browse"}. | ||
| 14335 | @end deftypevr | ||
| 14336 | |||
| 14337 | @deftypevr {paramètre de @code{files-configuration}} boolean file-device? | ||
| 14338 | Spécifie si le fichier de pseudo-périphérique peut être utilisé pour de | ||
| 14339 | nouvelles queues d'impression. L'URI @uref{file:///dev/null} est toujours | ||
| 14340 | permise. | ||
| 14341 | |||
| 14342 | La valeur par défaut est @samp{#f}. | ||
| 14343 | @end deftypevr | ||
| 14344 | |||
| 14345 | @deftypevr {paramètre de @code{files-configuration}} string group | ||
| 14346 | Spécifie le nom ou l'ID du groupe qui sera utilisé lors de l'exécution de | ||
| 14347 | programmes externes. | ||
| 14348 | |||
| 14349 | La valeur par défaut est @samp{"lp"}. | ||
| 14350 | @end deftypevr | ||
| 14351 | |||
| 14352 | @deftypevr {paramètre de @code{files-configuration}} string log-file-perm | ||
| 14353 | Spécifie les permissions pour tous les fichiers de journal que | ||
| 14354 | l'ordonnanceur écrit. | ||
| 14355 | |||
| 14356 | La valeur par défaut est @samp{"0644"}. | ||
| 14357 | @end deftypevr | ||
| 14358 | |||
| 14359 | @deftypevr {paramètre de @code{files-configuration}} log-location page-log | ||
| 14360 | Définit le fichier de journal de page. Spécifier un nom de fichier vide | ||
| 14361 | désactive la génération de journaux de pages. La valeur @code{stderr} fait | ||
| 14362 | que les entrées du journal seront envoyés sur l'erreur standard lorsque | ||
| 14363 | l'ordonnanceur est lancé au premier plan ou vers le démon de journal système | ||
| 14364 | lorsqu'il tourne en tache de fond. La valeur @code{syslog} fait que les | ||
| 14365 | entrées du journal sont envoyées au démon de journalisation du système. Le | ||
| 14366 | nom du serveur peut être inclus dans les noms de fichiers avec la chaîne | ||
| 14367 | @code{%s}, comme dans @code{/var/log/cups/%s-page_log}. | ||
| 14368 | |||
| 14369 | La valeur par défaut est @samp{"/var/log/cups/page_log"}. | ||
| 14370 | @end deftypevr | ||
| 14371 | |||
| 14372 | @deftypevr {paramètre de @code{files-configuration}} string remote-root | ||
| 14373 | Spécifie le nom d'utilisateur associé aux accès non authentifiés par des | ||
| 14374 | clients qui se disent être l'utilisateur root. La valeur par défaut est | ||
| 14375 | @code{remroot}. | ||
| 14376 | |||
| 14377 | La valeur par défaut est @samp{"remroot"}. | ||
| 14378 | @end deftypevr | ||
| 14379 | |||
| 14380 | @deftypevr {paramètre de @code{files-configuration}} file-name request-root | ||
| 14381 | Spécifie le répertoire qui contient les travaux d'impression et d'autres | ||
| 14382 | données des requêtes HTTP. | ||
| 14383 | |||
| 14384 | La valeur par défaut est @samp{"/var/spool/cups"}. | ||
| 14385 | @end deftypevr | ||
| 14386 | |||
| 14387 | @deftypevr {paramètre de @code{files-configuration}} sandboxing sandboxing | ||
| 14388 | Spécifie le niveau d'isolation de sécurité appliqué aux filtres | ||
| 14389 | d'impression, aux moteurs et aux autres processus fils de l'ordonnanceur ; | ||
| 14390 | soit @code{relaxed} soit @code{strict}. Cette directive n'est actuellement | ||
| 14391 | utilisée et supportée que sur macOS. | ||
| 14392 | |||
| 14393 | La valeur par défaut est @samp{strict}. | ||
| 14394 | @end deftypevr | ||
| 14395 | |||
| 14396 | @deftypevr {paramètre de @code{files-configuration}} file-name server-keychain | ||
| 14397 | Spécifie l'emplacement des certifications TLS et des clefs privées. CUPS | ||
| 14398 | cherchera les clefs publiques et privées dans ce répertoire : un fichier | ||
| 14399 | @code{.crt} pour un certificat encodé en PEM et le fichier @code{.key} | ||
| 14400 | correspondant pour la clef privée encodée en PEM. | ||
| 14401 | |||
| 14402 | La valeur par défaut est @samp{"/etc/cups/ssl"}. | ||
| 14403 | @end deftypevr | ||
| 14404 | |||
| 14405 | @deftypevr {paramètre de @code{files-configuration}} file-name server-root | ||
| 14406 | Spécifie le répertoire contenant les fichiers de configuration du serveur. | ||
| 14407 | |||
| 14408 | La valeur par défaut est @samp{"/etc/cups"}. | ||
| 14409 | @end deftypevr | ||
| 14410 | |||
| 14411 | @deftypevr {paramètre de @code{files-configuration}} boolean sync-on-close? | ||
| 14412 | Spécifie si l'ordonnanceur appelle fsync(2) après avoir écrit la | ||
| 14413 | configuration ou les fichiers d'état. | ||
| 14414 | |||
| 14415 | La valeur par défaut est @samp{#f}. | ||
| 14416 | @end deftypevr | ||
| 14417 | |||
| 14418 | @deftypevr {paramètre de @code{files-configuration}} space-separated-string-list system-group | ||
| 14419 | Spécifie le groupe ou les groupes à utiliser pour l'authentification du | ||
| 14420 | groupe @code{@@SYSTEM}. | ||
| 14421 | @end deftypevr | ||
| 14422 | |||
| 14423 | @deftypevr {paramètre de @code{files-configuration}} file-name temp-dir | ||
| 14424 | Spécifie le répertoire où les fichiers temporaires sont stockés. | ||
| 14425 | |||
| 14426 | La valeur par défaut est @samp{"/var/spool/cups/tmp"}. | ||
| 14427 | @end deftypevr | ||
| 14428 | |||
| 14429 | @deftypevr {paramètre de @code{files-configuration}} string user | ||
| 14430 | Spécifie le nom d'utilisateur ou l'ID utilisé pour lancer des programmes | ||
| 14431 | externes. | ||
| 14432 | |||
| 14433 | La valeur par défaut est @samp{"lp"}. | ||
| 14434 | @end deftypevr | ||
| 14435 | @end deftypevr | ||
| 14436 | |||
| 14437 | @deftypevr {paramètre de @code{cups-configuration}} access-log-level access-log-level | ||
| 14438 | Spécifie le niveau de journalisation pour le fichier AccessLog. Le niveau | ||
| 14439 | @code{config} enregistre les ajouts, suppressions et modifications | ||
| 14440 | d'imprimantes et de classes et lorsque les fichiers de configuration sont | ||
| 14441 | accédés ou mis à jour. Le niveau @code{actions} enregistre la soumission, | ||
| 14442 | la suspension, la libération, la modification et l'annulation des travaux et | ||
| 14443 | toutes les conditions de @code{config}. Le niveau @code{all} enregistre | ||
| 14444 | toutes les requêtes. | ||
| 14445 | |||
| 14446 | La valeur par défaut est @samp{actions}. | ||
| 14447 | @end deftypevr | ||
| 14448 | |||
| 14449 | @deftypevr {paramètre de @code{cups-configuration}} boolean auto-purge-jobs? | ||
| 14450 | Spécifie s'il faut vider l'historique des travaux automatiquement lorsqu'il | ||
| 14451 | n'est plus nécessaire pour les quotas. | ||
| 14452 | |||
| 14453 | La valeur par défaut est @samp{#f}. | ||
| 14454 | @end deftypevr | ||
| 14455 | |||
| 14456 | @deftypevr {paramètre de @code{cups-configuration}} browse-local-protocols browse-local-protocols | ||
| 14457 | Spécifie les protocoles à utiliser pour partager les imprimantes sur le | ||
| 14458 | réseau local. | ||
| 14459 | |||
| 14460 | La valeur par défaut est @samp{dnssd}. | ||
| 14461 | @end deftypevr | ||
| 14462 | |||
| 14463 | @deftypevr {paramètre de @code{cups-configuration}} boolean browse-web-if? | ||
| 14464 | Spécifie si l'interface web de CUPS est publiée. | ||
| 14465 | |||
| 14466 | La valeur par défaut est @samp{#f}. | ||
| 14467 | @end deftypevr | ||
| 14468 | |||
| 14469 | @deftypevr {paramètre de @code{cups-configuration}} boolean browsing? | ||
| 14470 | Spécifie si les imprimantes partagées sont publiées. | ||
| 14471 | |||
| 14472 | La valeur par défaut est @samp{#f}. | ||
| 14473 | @end deftypevr | ||
| 14474 | |||
| 14475 | @deftypevr {paramètre de @code{cups-configuration}} string classification | ||
| 14476 | Spécifie la classification de sécurité du serveur. N'importe quel nom de | ||
| 14477 | bannière peut être utilisé, comme « classifié », « confidentiel », « secret | ||
| 14478 | », « top secret » et « déclassifié » ou la bannière peut être omise pour | ||
| 14479 | désactiver les fonctions d'impression sécurisées. | ||
| 14480 | |||
| 14481 | La valeur par défaut est @samp{""}. | ||
| 14482 | @end deftypevr | ||
| 14483 | |||
| 14484 | @deftypevr {paramètre de @code{cups-configuration}} boolean classify-override? | ||
| 14485 | Spécifie si les utilisateurs peuvent remplacer la classification (page de | ||
| 14486 | couverture) des travaux d'impression individuels avec l'option | ||
| 14487 | @code{job-sheets}. | ||
| 14488 | |||
| 14489 | La valeur par défaut est @samp{#f}. | ||
| 14490 | @end deftypevr | ||
| 14491 | |||
| 14492 | @deftypevr {paramètre de @code{cups-configuration}} default-auth-type default-auth-type | ||
| 14493 | Spécifie le type d'authentification par défaut à utiliser. | ||
| 14494 | |||
| 14495 | La valeur par défaut est @samp{Basic}. | ||
| 14496 | @end deftypevr | ||
| 14497 | |||
| 14498 | @deftypevr {paramètre de @code{cups-configuration}} default-encryption default-encryption | ||
| 14499 | Spécifie si le chiffrement sera utilisé pour les requêtes authentifiées. | ||
| 14500 | |||
| 14501 | La valeur par défaut est @samp{Required}. | ||
| 14502 | @end deftypevr | ||
| 14503 | |||
| 14504 | @deftypevr {paramètre de @code{cups-configuration}} string default-language | ||
| 14505 | Spécifie la langue par défaut à utiliser pour le contenu textuel et web. | ||
| 14506 | |||
| 14507 | La valeur par défaut est @samp{"en"}. | ||
| 14508 | @end deftypevr | ||
| 14509 | |||
| 14510 | @deftypevr {paramètre de @code{cups-configuration}} string default-paper-size | ||
| 14511 | Spécifie la taille de papier par défaut pour les nouvelles queues | ||
| 14512 | d'impression. @samp{"Auto"} utilise la valeur par défaut du paramètre de | ||
| 14513 | régionalisation, tandis que @samp{"None"} spécifie qu'il n'y a pas de taille | ||
| 14514 | par défaut. Des noms de tailles spécifique sont par exemple @samp{"Letter"} | ||
| 14515 | et @samp{"A4"}. | ||
| 14516 | |||
| 14517 | La valeur par défaut est @samp{"Auto"}. | ||
| 14518 | @end deftypevr | ||
| 14519 | |||
| 14520 | @deftypevr {paramètre de @code{cups-configuration}} string default-policy | ||
| 14521 | Spécifie la politique d'accès par défaut à utiliser. | ||
| 14522 | |||
| 14523 | La valeur par défaut est @samp{"default"}. | ||
| 14524 | @end deftypevr | ||
| 14525 | |||
| 14526 | @deftypevr {paramètre de @code{cups-configuration}} boolean default-shared? | ||
| 14527 | Spécifie si les imprimantes locales sont partagées par défaut. | ||
| 14528 | |||
| 14529 | La valeur par défaut est @samp{#t}. | ||
| 14530 | @end deftypevr | ||
| 14531 | |||
| 14532 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer dirty-clean-interval | ||
| 14533 | Spécifie le délai pour mettre à jour les fichiers de configuration et | ||
| 14534 | d'état. Une valeur de 0 fait que la mise à jour arrive aussi vite que | ||
| 14535 | possible, typiquement en quelques millisecondes. | ||
| 14536 | |||
| 14537 | La valeur par défaut est @samp{30}. | ||
| 14538 | @end deftypevr | ||
| 14539 | |||
| 14540 | @deftypevr {paramètre de @code{cups-configuration}} error-policy error-policy | ||
| 14541 | Spécifie ce qu'il faut faire si une erreur a lieu. Les valeurs possibles | ||
| 14542 | sont @code{abort-job}, qui supprimera les travaux d'impression en échec ; | ||
| 14543 | @code{retry-job}, qui tentera de nouveau l'impression plus tard ; | ||
| 14544 | @code{retry-this-job}, qui retentera l'impression immédiatement ; et | ||
| 14545 | @code{stop-printer} qui arrête l'imprimante. | ||
| 14546 | |||
| 14547 | La valeur par défaut est @samp{stop-printer}. | ||
| 14548 | @end deftypevr | ||
| 14549 | |||
| 14550 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer filter-limit | ||
| 14551 | Spécifie le coût maximum des filtres qui sont lancés en même temps, pour | ||
| 14552 | minimiser les problèmes de ressources de disque, de mémoire et de CPU. Une | ||
| 14553 | limite de 0 désactive la limite de filtrage. Une impression standard vers | ||
| 14554 | une imprimante non-PostScript requiert une limite de filtre d'environ 200. | ||
| 14555 | Une imprimante PostScript requiert environ la moitié (100). Mettre en place | ||
| 14556 | la limite en dessous de ces valeurs limitera l'ordonnanceur à un seul | ||
| 14557 | travail d'impression à la fois. | ||
| 14558 | |||
| 14559 | La valeur par défaut est @samp{0}. | ||
| 14560 | @end deftypevr | ||
| 14561 | |||
| 14562 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer filter-nice | ||
| 14563 | Spécifie la priorité des filtres de l'ordonnanceur qui sont lancés pour | ||
| 14564 | imprimer un travail. La valeur va de 0, la plus grande priorité, à 19, la | ||
| 14565 | plus basse priorité. | ||
| 14566 | |||
| 14567 | La valeur par défaut est @samp{0}. | ||
| 14568 | @end deftypevr | ||
| 14569 | |||
| 14570 | @deftypevr {paramètre de @code{cups-configuration}} host-name-lookups host-name-lookups | ||
| 14571 | Spécifie s'il faut faire des résolutions inverses sur les clients qui se | ||
| 14572 | connectent. Le paramètre @code{double} fait que @code{cupsd} vérifie que le | ||
| 14573 | nom d'hôte résolu depuis l'adresse correspond à l'une des adresses renvoyées | ||
| 14574 | par ce nom d'hôte. Les résolutions doubles évitent aussi que des clients | ||
| 14575 | avec des adresses non enregistrées ne s'adressent à votre serveur. | ||
| 14576 | N'initialisez cette valeur qu'à @code{#t} ou @code{double} que si c'est | ||
| 14577 | absolument nécessaire. | ||
| 14578 | |||
| 14579 | La valeur par défaut est @samp{#f}. | ||
| 14580 | @end deftypevr | ||
| 14581 | |||
| 14582 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer job-kill-delay | ||
| 14583 | Spécifie le nombre de secondes à attendre avant de tuer les filtres et les | ||
| 14584 | moteurs associés avec un travail annulé ou suspendu. | ||
| 14585 | |||
| 14586 | La valeur par défaut est @samp{30}. | ||
| 14587 | @end deftypevr | ||
| 14588 | |||
| 14589 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer job-retry-interval | ||
| 14590 | Spécifie l'intervalle des nouvelles tentatives en secondes. C'est | ||
| 14591 | typiquement utilisé pour les queues de fax mais peut aussi être utilisé avec | ||
| 14592 | des queues d'impressions normales dont la politique d'erreur est | ||
| 14593 | @code{retry-job} ou @code{retry-current-job}. | ||
| 14594 | |||
| 14595 | La valeur par défaut est @samp{30}. | ||
| 14596 | @end deftypevr | ||
| 14597 | |||
| 14598 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer job-retry-limit | ||
| 14599 | Spécifie le nombre de nouvelles tentatives pour les travaux. C'est | ||
| 14600 | typiquement utilisé pour les queues de fax mais peut aussi être utilisé pour | ||
| 14601 | les queues d'impressions dont la politique d'erreur est @code{retry-job} ou | ||
| 14602 | @code{retry-current-job}. | ||
| 14603 | |||
| 14604 | La valeur par défaut est @samp{5}. | ||
| 14605 | @end deftypevr | ||
| 14606 | |||
| 14607 | @deftypevr {paramètre de @code{cups-configuration}} boolean keep-alive? | ||
| 14608 | Spécifie s'il faut supporter les connexion HTTP keep-alive. | ||
| 14609 | |||
| 14610 | La valeur par défaut est @samp{#t}. | ||
| 14611 | @end deftypevr | ||
| 14612 | |||
| 14613 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer keep-alive-timeout | ||
| 14614 | Spécifie combien de temps les connexions inactives avec les clients restent | ||
| 14615 | ouvertes, en secondes. | ||
| 14616 | |||
| 14617 | La valeur par défaut est @samp{30}. | ||
| 14618 | @end deftypevr | ||
| 14619 | |||
| 14620 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer limit-request-body | ||
| 14621 | Spécifie la taille maximale des fichiers à imprimer, des requêtes IPP et des | ||
| 14622 | données de formulaires HTML. Une limite de 0 désactive la vérification de | ||
| 14623 | la limite. | ||
| 14624 | |||
| 14625 | La valeur par défaut est @samp{0}. | ||
| 14626 | @end deftypevr | ||
| 14627 | |||
| 14628 | @deftypevr {paramètre de @code{cups-configuration}} multiline-string-list listen | ||
| 14629 | Écoute sur les interfaces spécifiées. Les valeurs valides sont de la forme | ||
| 14630 | @var{adresse}:@var{port}, où @var{adresse} est soit une adresse IPv6 dans | ||
| 14631 | des crochets, soit une adresse IPv4, soit @code{*} pour indiquer toutes les | ||
| 14632 | adresses. Les valeurs peuvent aussi être des noms de fichiers de socket | ||
| 14633 | UNIX domain. La directive Listen est similaire à la directive Port mais | ||
| 14634 | vous permet de restreindre l'accès à des interfaces ou des réseaux | ||
| 14635 | spécifiques. | ||
| 14636 | @end deftypevr | ||
| 14637 | |||
| 14638 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer listen-back-log | ||
| 14639 | Spécifie le nombre de connexions en attente qui seront permises. Ça | ||
| 14640 | n'affecte normalement que les serveurs très actifs qui ont atteint la limite | ||
| 14641 | MaxClients, mais peut aussi être déclenché par un grand nombre de connexions | ||
| 14642 | simultanées. Lorsque la limite est atteinte, le système d'exploitation | ||
| 14643 | refusera les connexions supplémentaires jusqu'à ce que l'ordonnanceur | ||
| 14644 | accepte les connexions en attente. | ||
| 14645 | |||
| 14646 | La valeur par défaut est @samp{128}. | ||
| 14647 | @end deftypevr | ||
| 14648 | |||
| 14649 | @deftypevr {paramètre de @code{cups-configuration}} location-access-control-list location-access-controls | ||
| 14650 | Spécifie un ensemble de contrôles d'accès supplémentaires. | ||
| 14651 | |||
| 14652 | Les champs de @code{location-access-controls} disponibles sont : | ||
| 14653 | |||
| 14654 | @deftypevr {paramètre de @code{location-access-controls}} file-name path | ||
| 14655 | Spécifie le chemin d'URI auquel les contrôles d'accès s'appliquent. | ||
| 14656 | @end deftypevr | ||
| 14657 | |||
| 14658 | @deftypevr {paramètre de @code{location-access-controls}} access-control-list access-controls | ||
| 14659 | Les contrôles d'accès pour tous les accès à ce chemin, dans le même format | ||
| 14660 | que le champ @code{access-controls} de @code{operation-access-control}. | ||
| 14661 | |||
| 14662 | La valeur par défaut est @samp{()}. | ||
| 14663 | @end deftypevr | ||
| 14664 | |||
| 14665 | @deftypevr {paramètre de @code{location-access-controls}} method-access-control-list method-access-controls | ||
| 14666 | Contrôles d'accès pour les accès spécifiques à la méthode à ce chemin. | ||
| 14667 | |||
| 14668 | La valeur par défaut est @samp{()}. | ||
| 14669 | |||
| 14670 | Les champs de @code{method-access-controls} disponibles sont : | ||
| 14671 | |||
| 14672 | @deftypevr {paramètre de @code{method-access-controls}} boolean reverse? | ||
| 14673 | Si la valeur est @code{#t}, applique les contrôles d'accès à toutes les | ||
| 14674 | méthodes sauf les méthodes listées. Sinon, applique le contrôle uniquement | ||
| 14675 | aux méthodes listées. | ||
| 14676 | |||
| 14677 | La valeur par défaut est @samp{#f}. | ||
| 14678 | @end deftypevr | ||
| 14679 | |||
| 14680 | @deftypevr {paramètre de @code{method-access-controls}} method-list methods | ||
| 14681 | Les méthodes auxquelles ce contrôle d'accès s'applique. | ||
| 14682 | |||
| 14683 | La valeur par défaut est @samp{()}. | ||
| 14684 | @end deftypevr | ||
| 14685 | |||
| 14686 | @deftypevr {paramètre de @code{method-access-controls}} access-control-list access-controls | ||
| 14687 | Directives de contrôle d'accès, comme une liste de chaînes de caractères. | ||
| 14688 | Chaque chaîne devrait être une directive, comme « Order allow, deny ». | ||
| 14689 | |||
| 14690 | La valeur par défaut est @samp{()}. | ||
| 14691 | @end deftypevr | ||
| 14692 | @end deftypevr | ||
| 14693 | @end deftypevr | ||
| 14694 | |||
| 14695 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer log-debug-history | ||
| 14696 | Spécifie le nombre de messages de débogage qui sont retenu pour la | ||
| 14697 | journalisation si une erreur arrive dans un travail d'impression. Les | ||
| 14698 | messages de débogage sont journalisés indépendamment du paramètre LogLevel. | ||
| 14699 | |||
| 14700 | La valeur par défaut est @samp{100}. | ||
| 14701 | @end deftypevr | ||
| 14702 | |||
| 14703 | @deftypevr {paramètre de @code{cups-configuration}} log-level log-level | ||
| 14704 | Spécifie le niveau de journalisation du fichier ErrorLog. La valeur | ||
| 14705 | @code{none} arrête toute journalisation alors que que @code{debug2} | ||
| 14706 | enregistre tout. | ||
| 14707 | |||
| 14708 | La valeur par défaut est @samp{info}. | ||
| 14709 | @end deftypevr | ||
| 14710 | |||
| 14711 | @deftypevr {paramètre de @code{cups-configuration}} log-time-format log-time-format | ||
| 14712 | Spécifie le format de la date et de l'heure dans les fichiers de journaux. | ||
| 14713 | La valeur @code{standard} enregistre les secondes entières alors que | ||
| 14714 | @code{usecs} enregistre les microsecondes. | ||
| 14715 | |||
| 14716 | La valeur par défaut est @samp{standard}. | ||
| 14717 | @end deftypevr | ||
| 14718 | |||
| 14719 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-clients | ||
| 14720 | Spécifie le nombre maximum de clients simultanés qui sont autorisés par | ||
| 14721 | l'ordonnanceur. | ||
| 14722 | |||
| 14723 | La valeur par défaut est @samp{100}. | ||
| 14724 | @end deftypevr | ||
| 14725 | |||
| 14726 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-clients-per-host | ||
| 14727 | Spécifie le nombre maximum de clients simultanés permis depuis une même | ||
| 14728 | adresse. | ||
| 14729 | |||
| 14730 | La valeur par défaut est @samp{100}. | ||
| 14731 | @end deftypevr | ||
| 14732 | |||
| 14733 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-copies | ||
| 14734 | Spécifie le nombre maximum de copies qu'un utilisateur peut imprimer pour | ||
| 14735 | chaque travail. | ||
| 14736 | |||
| 14737 | La valeur par défaut est @samp{9999}. | ||
| 14738 | @end deftypevr | ||
| 14739 | |||
| 14740 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-hold-time | ||
| 14741 | Spécifie la durée maximum qu'un travail peut rester dans l'état de | ||
| 14742 | suspension @code{indefinite} avant qu'il ne soit annulé. La valeur 0 | ||
| 14743 | désactive l'annulation des travaux suspendus. | ||
| 14744 | |||
| 14745 | La valeur par défaut est @samp{0}. | ||
| 14746 | @end deftypevr | ||
| 14747 | |||
| 14748 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-jobs | ||
| 14749 | Spécifie le nombre maximum de travaux simultanés autorisés. La valeur 0 | ||
| 14750 | permet un nombre illimité de travaux. | ||
| 14751 | |||
| 14752 | La valeur par défaut est @samp{500}. | ||
| 14753 | @end deftypevr | ||
| 14754 | |||
| 14755 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-jobs-per-printer | ||
| 14756 | Spécifie le nombre maximum de travaux simultanés autorisés par imprimante. | ||
| 14757 | La valeur 0 permet au plus MaxJobs travaux par imprimante. | ||
| 14758 | |||
| 14759 | La valeur par défaut est @samp{0}. | ||
| 14760 | @end deftypevr | ||
| 14761 | |||
| 14762 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-jobs-per-user | ||
| 14763 | Spécifie le nombre maximum de travaux simultanés permis par utilisateur. La | ||
| 14764 | valeur 0 permet au plus MaxJobs travaux par utilisateur. | ||
| 14765 | |||
| 14766 | La valeur par défaut est @samp{0}. | ||
| 14767 | @end deftypevr | ||
| 14768 | |||
| 14769 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-job-time | ||
| 14770 | Spécifie la durée maximum qu'un travail peut prendre avant qu'il ne soit | ||
| 14771 | annulé, en secondes. Indiquez 0 pour désactiver l'annulation des travaux « | ||
| 14772 | coincés ». | ||
| 14773 | |||
| 14774 | La valeur par défaut est @samp{10800}. | ||
| 14775 | @end deftypevr | ||
| 14776 | |||
| 14777 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-log-size | ||
| 14778 | Spécifie la taille maximale des fichiers de journaux avant qu'on ne les | ||
| 14779 | fasse tourner, en octets. La valeur 0 désactive la rotation. | ||
| 14780 | |||
| 14781 | La valeur par défaut est @samp{1048576}. | ||
| 14782 | @end deftypevr | ||
| 14783 | |||
| 14784 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer multiple-operation-timeout | ||
| 14785 | Spécifie la durée maximale à permettre entre les fichiers d'un travail en | ||
| 14786 | contenant plusieurs, en secondes. | ||
| 14787 | |||
| 14788 | La valeur par défaut est @samp{300}. | ||
| 14789 | @end deftypevr | ||
| 14790 | |||
| 14791 | @deftypevr {paramètre de @code{cups-configuration}} string page-log-format | ||
| 14792 | Spécifie le format des lignes PageLog. Les séquences qui commencent par un | ||
| 14793 | pourcent (@samp{%}) sont remplacées par l'information correspondante, tandis | ||
| 14794 | que les autres caractères sont copiés littéralement. Les séquences pourcent | ||
| 14795 | suivantes sont reconnues : | ||
| 14796 | |||
| 14797 | @table @samp | ||
| 14798 | @item %% | ||
| 14799 | insère un seul caractères pourcent | ||
| 14800 | |||
| 14801 | @item %@{name@} | ||
| 14802 | insère la valeur de l'attribut IPP spécifié | ||
| 14803 | |||
| 14804 | @item %C | ||
| 14805 | insère le nombre de copies pour la page actuelle | ||
| 14806 | |||
| 14807 | @item %P | ||
| 14808 | insère le numéro de page actuelle | ||
| 14809 | |||
| 14810 | @item %T | ||
| 14811 | insère la date et l'heure actuelle dans un format de journal commun | ||
| 14812 | |||
| 14813 | @item %j | ||
| 14814 | insère l'ID du travail | ||
| 14815 | |||
| 14816 | @item %p | ||
| 14817 | insère le nom de l'imprimante | ||
| 14818 | |||
| 14819 | @item %u | ||
| 14820 | insère le nom d'utilisateur | ||
| 14821 | @end table | ||
| 14822 | |||
| 14823 | Si la valeur est la chaîne vide, le PageLog est désactivée. La chaîne | ||
| 14824 | @code{%p %u %j %T %P %C %@{job-billing@} %@{job-originating-host-name@} | ||
| 14825 | %@{job-name@} %@{media@} %@{sides@}} crée un PageLog avec les entrées | ||
| 14826 | standards. | ||
| 14827 | |||
| 14828 | La valeur par défaut est @samp{""}. | ||
| 14829 | @end deftypevr | ||
| 14830 | |||
| 14831 | @deftypevr {paramètre de @code{cups-configuration}} environment-variables environment-variables | ||
| 14832 | Passe les variables d'environnement spécifiées aux processus fils ; une | ||
| 14833 | liste de chaînes de caractères. | ||
| 14834 | |||
| 14835 | La valeur par défaut est @samp{()}. | ||
| 14836 | @end deftypevr | ||
| 14837 | |||
| 14838 | @deftypevr {paramètre de @code{cups-configuration}} policy-configuration-list policies | ||
| 14839 | Spécifie des politiques de contrôle d'accès nommées. | ||
| 14840 | |||
| 14841 | Les champs de @code{policy-configuration} disponibles sont : | ||
| 14842 | |||
| 14843 | @deftypevr {paramètre de @code{policy-configuration}} string name | ||
| 14844 | Nom de la politique. | ||
| 14845 | @end deftypevr | ||
| 14846 | |||
| 14847 | @deftypevr {paramètre de @code{policy-configuration}} string job-private-access | ||
| 14848 | Spécifie une liste d'accès pour les valeurs privées du travail. | ||
| 14849 | @code{@@ACL} correspond aux valeurs requesting-user-name-allowed ou | ||
| 14850 | requesting-user-name-denied de l'imprimante. @code{@@OWNER} correspond au | ||
| 14851 | propriétaire du travail. @code{@@SYSTEM} correspond aux groupes listés dans | ||
| 14852 | le champ @code{system-group} de la configuration @code{files-config}, qui | ||
| 14853 | est réifié dans le fichier @code{cups-files.conf(5)}. Les autres éléments | ||
| 14854 | possibles de la liste d'accès sont des noms d'utilisateurs spécifiques et | ||
| 14855 | @code{@@@var{group}} pour indiquer les membres d'un groupe spécifique. La | ||
| 14856 | liste d'accès peut aussi être simplement @code{all} ou @code{default}. | ||
| 14857 | |||
| 14858 | La valeur par défaut est @samp{"@@OWNER @@SYSTEM"}. | ||
| 14859 | @end deftypevr | ||
| 14860 | |||
| 14861 | @deftypevr {paramètre de @code{policy-configuration}} string job-private-values | ||
| 14862 | Spécifie la liste des valeurs de travaux à rendre privée, ou @code{all}, | ||
| 14863 | @code{default}, ou @code{none}. | ||
| 14864 | |||
| 14865 | La valeur par défaut est @samp{"job-name job-originating-host-name | ||
| 14866 | job-originating-user-name phone"}. | ||
| 14867 | @end deftypevr | ||
| 14868 | |||
| 14869 | @deftypevr {paramètre de @code{policy-configuration}} string subscription-private-access | ||
| 14870 | Spécifie un liste d'accès pour les valeurs privées de la souscription. | ||
| 14871 | @code{@@ACL} correspond aux valeurs requesting-user-name-allowed ou | ||
| 14872 | requesting-user-name-denied de l'imprimante. @code{@@OWNER} correspond au | ||
| 14873 | propriétaire du travail. @code{@@SYSTEM} correspond aux groupes listés dans | ||
| 14874 | le champ @code{system-group} de la configuration @code{files-config}, qui | ||
| 14875 | est réifié dans le fichier @code{cups-files.conf(5)}. Les autres éléments | ||
| 14876 | possibles de la liste d'accès sont des noms d'utilisateurs spécifiques et | ||
| 14877 | @code{@@@var{group}} pour indiquer les membres d'un groupe spécifique. La | ||
| 14878 | liste d'accès peut aussi être simplement @code{all} ou @code{default}. | ||
| 14879 | |||
| 14880 | La valeur par défaut est @samp{"@@OWNER @@SYSTEM"}. | ||
| 14881 | @end deftypevr | ||
| 14882 | |||
| 14883 | @deftypevr {paramètre de @code{policy-configuration}} string subscription-private-values | ||
| 14884 | Spécifie la liste des valeurs de travaux à rendre privée, ou @code{all}, | ||
| 14885 | @code{default}, ou @code{none}. | ||
| 14886 | |||
| 14887 | La valeur par défaut est @samp{"notify-events notify-pull-method | ||
| 14888 | notify-recipient-uri notify-subscriber-user-name notify-user-data"}. | ||
| 14889 | @end deftypevr | ||
| 14890 | |||
| 14891 | @deftypevr {paramètre de @code{policy-configuration}} operation-access-control-list access-controls | ||
| 14892 | Contrôle d'accès par les actions IPP. | ||
| 14893 | |||
| 14894 | La valeur par défaut est @samp{()}. | ||
| 14895 | @end deftypevr | ||
| 14896 | @end deftypevr | ||
| 14897 | |||
| 14898 | @deftypevr {paramètre de @code{cups-configuration}} boolean-or-non-negative-integer preserve-job-files | ||
| 14899 | Spécifie si les fichiers de travaux (les documents) sont préservés après | ||
| 14900 | qu'un travail est imprimé. Si une valeur numérique est spécifiée, les | ||
| 14901 | fichiers de travaux sont préservés pour le nombre de secondes indiquées | ||
| 14902 | après l'impression. Sinon, une valeur booléenne s'applique indéfiniment. | ||
| 14903 | |||
| 14904 | La valeur par défaut est @samp{86400}. | ||
| 14905 | @end deftypevr | ||
| 14906 | |||
| 14907 | @deftypevr {paramètre de @code{cups-configuration}} boolean-or-non-negative-integer preserve-job-history | ||
| 14908 | Spécifie si l'historique des travaux est préservé après qu'un travail est | ||
| 14909 | imprimé. Si une valeur numérique est spécifiée, l'historique des travaux | ||
| 14910 | est préservé pour le nombre de secondes indiquées après l'impression. Si la | ||
| 14911 | valeur est @code{#t}, l'historique des travaux est préservé jusqu'à | ||
| 14912 | atteindre la limite MaxJobs. | ||
| 14913 | |||
| 14914 | La valeur par défaut est @samp{#t}. | ||
| 14915 | @end deftypevr | ||
| 14916 | |||
| 14917 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer reload-timeout | ||
| 14918 | Spécifie la durée d'attente pour la fin des travaux avant de redémarrer | ||
| 14919 | l'ordonnanceur. | ||
| 14920 | |||
| 14921 | La valeur par défaut est @samp{30}. | ||
| 14922 | @end deftypevr | ||
| 14923 | |||
| 14924 | @deftypevr {paramètre de @code{cups-configuration}} string rip-cache | ||
| 14925 | Spécifie la quantité de mémoire maximale à utiliser pour convertir des | ||
| 14926 | documents en bitmaps pour l'imprimante. | ||
| 14927 | |||
| 14928 | La valeur par défaut est @samp{"128m"}. | ||
| 14929 | @end deftypevr | ||
| 14930 | |||
| 14931 | @deftypevr {paramètre de @code{cups-configuration}} string server-admin | ||
| 14932 | Spécifie l'adresse de courriel de l'administrateur système. | ||
| 14933 | |||
| 14934 | La valeur par défaut est @samp{"root@@localhost.localdomain"}. | ||
| 14935 | @end deftypevr | ||
| 14936 | |||
| 14937 | @deftypevr {paramètre de @code{cups-configuration}} host-name-list-or-* server-alias | ||
| 14938 | La directive ServerAlias est utilisée pour la validation des en-tête HTTP | ||
| 14939 | Host lorsque les clients se connectent à l'ordonnanceur depuis des | ||
| 14940 | interfaces externes. Utiliser le nom spécial @code{*} peut exposer votre | ||
| 14941 | système à des attaques connues de recombinaison DNS dans le navigateur, même | ||
| 14942 | lorsque vous accédez au site à travers un pare-feu. Si la découverte | ||
| 14943 | automatique des autres noms ne fonctionne pas, nous vous recommandons de | ||
| 14944 | lister chaque nom alternatif avec une directive SeverAlias plutôt que | ||
| 14945 | d'utiliser @code{*}. | ||
| 14946 | |||
| 14947 | La valeur par défaut est @samp{*}. | ||
| 14948 | @end deftypevr | ||
| 14949 | |||
| 14950 | @deftypevr {paramètre de @code{cups-configuration}} string server-name | ||
| 14951 | Spécifie le nom d'hôte pleinement qualifié du serveur. | ||
| 14952 | |||
| 14953 | La valeur par défaut est @samp{"localhost"}. | ||
| 14954 | @end deftypevr | ||
| 14955 | |||
| 14956 | @deftypevr {paramètre de @code{cups-configuration}} server-tokens server-tokens | ||
| 14957 | Spécifie les informations incluses dans les en-têtes Server des réponses | ||
| 14958 | HTTP. @code{None} désactive l'en-tête Server. @code{ProductOnly} rapporte | ||
| 14959 | @code{CUPS}. @code{Major} rapporte @code{CUPS 2}. @code{Minor} rapporte | ||
| 14960 | @code{CUPS 2.0}. @code{Minimal} rapporte @code{CUPS 2.0.0}. @code{OS} | ||
| 14961 | rapporte @code{CUPS 2.0.0 (@var{uname})} où @var{uname} est la sortie de la | ||
| 14962 | commande @code{uname}. @code{Full} rapporte @code{CUPS 2.0.0 (@var{uname}) | ||
| 14963 | IPP/2.0}. | ||
| 14964 | |||
| 14965 | La valeur par défaut est @samp{Minimal}. | ||
| 14966 | @end deftypevr | ||
| 14967 | |||
| 14968 | @deftypevr {paramètre de @code{cups-configuration}} string set-env | ||
| 14969 | Indique que la variable d'environnement spécifiée doit être passée aux | ||
| 14970 | processus fils. | ||
| 14971 | |||
| 14972 | La valeur par défaut est @samp{"variable value"}. | ||
| 14973 | @end deftypevr | ||
| 14974 | |||
| 14975 | @deftypevr {paramètre de @code{cups-configuration}} multiline-string-list ssl-listen | ||
| 14976 | Écoute des connexions chiffrées sur les interfaces spécifiées. Les valeurs | ||
| 14977 | valides sont de la forme @var{adresse}:@var{port}, où @var{adresse} est soit | ||
| 14978 | une adresse IPv6 dans des crochets, soit une adresse IPv4, soit @code{*} | ||
| 14979 | pour indiquer toutes les interfaces. | ||
| 14980 | |||
| 14981 | La valeur par défaut est @samp{()}. | ||
| 14982 | @end deftypevr | ||
| 14983 | |||
| 14984 | @deftypevr {paramètre de @code{cups-configuration}} ssl-options ssl-options | ||
| 14985 | Indique les options de chiffrement. Par défaut, CUPS ne supporte que le | ||
| 14986 | chiffrement avec TLS 1.0 ou plus avec des suites de chiffrement connues pour | ||
| 14987 | être sures. L'option @code{AllowRC4} active les suites de chiffrement | ||
| 14988 | 128-bits RC4, qui sont requises pour certains vieux clients qui | ||
| 14989 | n'implémentent pas les nouvelles. L'option @code{AllowSSL3} active SSL | ||
| 14990 | v3.0, qui est requis par certains vieux clients qui ne supportent pas TLS | ||
| 14991 | v1.0. | ||
| 14992 | |||
| 14993 | La valeur par défaut est @samp{()}. | ||
| 14994 | @end deftypevr | ||
| 14995 | |||
| 14996 | @deftypevr {paramètre de @code{cups-configuration}} boolean strict-conformance? | ||
| 14997 | Spécifie si l'ordonnanceur demande aux clients d'adhérer aux spécifications | ||
| 14998 | IPP. | ||
| 14999 | |||
| 15000 | La valeur par défaut est @samp{#f}. | ||
| 15001 | @end deftypevr | ||
| 15002 | |||
| 15003 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer timeout | ||
| 15004 | Spécifie le délai d'attente des requêtes HTTP, en secondes. | ||
| 15005 | |||
| 15006 | La valeur par défaut est @samp{300}. | ||
| 15007 | |||
| 15008 | @end deftypevr | ||
| 15009 | |||
| 15010 | @deftypevr {paramètre de @code{cups-configuration}} boolean web-interface? | ||
| 15011 | Spécifie si l'interface web est activée. | ||
| 15012 | |||
| 15013 | La valeur par défaut est @samp{#f}. | ||
| 15014 | @end deftypevr | ||
| 15015 | |||
| 15016 | Maintenant, vous vous dîtes peut-être « oh la la, cher manuel de Guix, je | ||
| 15017 | t'aime bien mais arrête maintenant avec ces options de configuration | ||
| 15018 | »@footnote{NdT : je vous rassure, c'est aussi mon sentiment au moment de | ||
| 15019 | traduire ces lignes. Et pour moi, c'est encore loin d'être fini.}. En | ||
| 15020 | effet. cependant, encore un point supplémentaire : vous pouvez avoir un | ||
| 15021 | fichier @code{cupsd.conf} existant que vous pourriez vouloir utiliser. Dans | ||
| 15022 | ce cas, vous pouvez passer un @code{opaque-cups-configuration} en | ||
| 15023 | configuration d'un @code{cups-service-type}. | ||
| 15024 | |||
| 15025 | Les champs de @code{opaque-cups-configuration} disponibles sont : | ||
| 15026 | |||
| 15027 | @deftypevr {paramètre de @code{opaque-cups-configuration}} package cups | ||
| 15028 | Le paquet CUPS. | ||
| 15029 | @end deftypevr | ||
| 15030 | |||
| 15031 | @deftypevr {paramètre de @code{opaque-cups-configuration}} string cupsd.conf | ||
| 15032 | Le contenu de @code{cupsd.conf}, en tant que chaîne de caractères. | ||
| 15033 | @end deftypevr | ||
| 15034 | |||
| 15035 | @deftypevr {paramètre de @code{opaque-cups-configuration}} string cups-files.conf | ||
| 15036 | Le contenu du fichier @code{cups-files.conf}, en tant que chaîne de | ||
| 15037 | caractères. | ||
| 15038 | @end deftypevr | ||
| 15039 | |||
| 15040 | Par exemple, si vos fichiers @code{cupsd.conf} et @code{cups-files.conf} | ||
| 15041 | sont dans des chaînes du même nom, pouvez instancier un service CUPS de | ||
| 15042 | cette manière : | ||
| 15043 | |||
| 15044 | @example | ||
| 15045 | (service cups-service-type | ||
| 15046 | (opaque-cups-configuration | ||
| 15047 | (cupsd.conf cupsd.conf) | ||
| 15048 | (cups-files.conf cups-files.conf))) | ||
| 15049 | @end example | ||
| 15050 | |||
| 15051 | |||
| 15052 | @node Services de bureaux | ||
| 15053 | @subsection Services de bureaux | ||
| 15054 | |||
| 15055 | Le module @code{(gnu services desktop)} fournit des services qui sont | ||
| 15056 | habituellement utiles dans le contexte d'une installation « de bureau » — | ||
| 15057 | c'est-à-dire sur une machine qui fait tourner un service d'affichage | ||
| 15058 | graphique, éventuellement avec des interfaces utilisateurs graphiques, etc. | ||
| 15059 | Il définit aussi des services qui fournissent des environnements de bureau | ||
| 15060 | spécifiques comme GNOME, Xfce et MATE. | ||
| 15061 | |||
| 15062 | Pour simplifier les choses, le module définit une variable contenant | ||
| 15063 | l'ensemble des services que les utilisateurs s'attendent en général à avoir | ||
| 15064 | sur une machine avec un environnement graphique et le réseau : | ||
| 15065 | |||
| 15066 | @defvr {Variable Scheme} %desktop-services | ||
| 15067 | C'est la liste des services qui étend @var{%base-services} en ajoutant ou en | ||
| 15068 | ajustant des services pour une configuration « de bureau » typique. | ||
| 15069 | |||
| 15070 | En particulier, il ajoute un gestionnaire de connexion graphique (@pxref{Système de fenêtrage X, @code{gdm-service-type}}), des verrouilleurs d'écran, un outil de | ||
| 15071 | gestion réseau (@pxref{Services réseau, | ||
| 15072 | @code{network-manager-service-type}}), des services de gestion de l'énergie | ||
| 15073 | et des couleurs, le gestionnaire de connexion et de session @code{elogind}, | ||
| 15074 | le service de privilèges Polkit, le service de géolocalisation GeoClue, le | ||
| 15075 | démon Accounts Service qui permet aux utilisateurs autorisés de changer les | ||
| 15076 | mots de passe du système, un client NTP (@pxref{Services réseau}), le | ||
| 15077 | démon Avahi, et le service name service switch est configuré pour pouvoir | ||
| 15078 | utiliser @code{nss-mdns} (@pxref{Name Service Switch, mDNS}). | ||
| 15079 | @end defvr | ||
| 15080 | |||
| 15081 | La variable @var{%desktop-services} peut être utilisée comme champ | ||
| 15082 | @code{services} d'une déclaration @code{operating-system} | ||
| 15083 | (@pxref{Référence de système d'exploitation, @code{services}}). | ||
| 15084 | |||
| 15085 | En plus, les procédures @code{gnome-desktop-service-type}, | ||
| 15086 | @code{xfce-desktop-service}, @code{mate-desktop-service-type} et | ||
| 15087 | @code{enlightenment-desktop-service-type} peuvent ajouter GNOME, Xfce, MATE | ||
| 15088 | ou Enlightenment à un système. « Ajouter GNOME » signifie que les services | ||
| 15089 | du système comme les utilitaires d'ajustement de la luminosité et de gestion | ||
| 15090 | de l'énergie sont ajoutés au système, en étendant @code{polkit} et | ||
| 15091 | @code{dbus} de la bonne manière, ce qui permet à GNOME d'opérer avec des | ||
| 15092 | privilèges plus élevés sur un nombre limité d'interfaces systèmes | ||
| 15093 | spécialisées. En plus, ajouter un service construit par | ||
| 15094 | @code{gnome-desktop-service-type} ajoute le métapaquet GNOME au profil du | ||
| 15095 | système. De même, ajouter le service Xfce ajoute non seulement le | ||
| 15096 | métapaquet @code{xfce} au profil système, mais il permet aussi au | ||
| 15097 | gestionnaire de fichiers Thunar d'ouvrir une fenêtre de gestion des fichier | ||
| 15098 | « en mode root », si l'utilisateur s'authentifie avec le mot de passe | ||
| 15099 | administrateur via l'interface graphique polkit standard. « Ajouter MATE » | ||
| 15100 | signifie que @code{polkit} et @code{dbus} sont étendue de la bonne manière, | ||
| 15101 | ce qui permet à MATE d'opérer avec des privilèges plus élevés sur un nombre | ||
| 15102 | limité d'interface systèmes spécialisées. En plus, ajouter un service de | ||
| 15103 | type @code{mate-desktop-service-type} ajoute le métapaquet MATE au profil du | ||
| 15104 | système. « Ajouter Enlightenment » signifie que @code{dbus} est étendu | ||
| 15105 | comme il faut et que plusieurs binaires d'Enlightenment récupèrent le bit | ||
| 15106 | setuid, ce qui permet au verrouilleur d'écran d'Enlightenment et à d'autres | ||
| 15107 | fonctionnalités de fonctionner correctement. | ||
| 15108 | |||
| 15109 | Les environnement de bureau dans Guix utilisent le service d'affichage Xorg | ||
| 15110 | par défaut. Si vous voulez utiliser le protocol de serveur d'affichage plus | ||
| 15111 | récent Wayland, vous devez utiliser @code{sddm-service} à la place de GDM | ||
| 15112 | comme gestionnaire de connexion graphique. Vous devriez ensuite | ||
| 15113 | sélectionner la session « GNOME (Wayland) » dans SDDM. Autrement, vous | ||
| 15114 | pouvez essayer de démarrer GNOME sur Wayland manuellement depuis un TTY avec | ||
| 15115 | la commande @command{XDG_SESSION_TYPE=wayland exec dbus-run-session | ||
| 15116 | gnome-session}. Actuellement seul GNOME support Wayland. | ||
| 15117 | |||
| 15118 | @defvr {Variable Scheme} gnome-desktop-service-type | ||
| 15119 | C'est le type de service qui ajoute l'environnement de bureau | ||
| 15120 | @uref{https://www.gnome.org, GNOME}. Sa valeur est un objet | ||
| 15121 | @code{gnome-desktop-configuration} (voir plus bas). | ||
| 15122 | |||
| 15123 | Ce service ajoute le paquet @code{gnome} au profil du système et étend | ||
| 15124 | polkit avec les actions de @code{gnome-settings-daemon}. | ||
| 15125 | @end defvr | ||
| 15126 | |||
| 15127 | @deftp {Type de données} gnome-desktop-configuration | ||
| 15128 | Enregistrement de la configuration de l'environnement de bureau GNOME. | ||
| 15129 | |||
| 15130 | @table @asis | ||
| 15131 | @item @code{gnome} (par défaut : @code{gnome}) | ||
| 15132 | Le paquet GNOME à utiliser. | ||
| 15133 | @end table | ||
| 15134 | @end deftp | ||
| 15135 | |||
| 15136 | @defvr {Variable Scheme} xfce-desktop-service-type | ||
| 15137 | C'est le type de service qui lance l'environnement de bureau @uref{Xfce, | ||
| 15138 | https://xfce.org/}. Sa valeur est un objet | ||
| 15139 | @code{xfce-desktop-configuration} (voir plus bas). | ||
| 15140 | |||
| 15141 | Ce service ajoute le paquet @code{xfce} au profil du système et étend polkit | ||
| 15142 | avec la possibilité pour @code{thunar} de manipuler le système de fichier en | ||
| 15143 | root depuis une session utilisateur, après que l'utilisateur s'authentifie | ||
| 15144 | avec le mot de passe administrateur. | ||
| 15145 | @end defvr | ||
| 15146 | |||
| 15147 | @deftp {Type de données} xfce-desktop-configuration | ||
| 15148 | Enregistrement de la configuration de l'environnement de bureau Xfce. | ||
| 15149 | |||
| 15150 | @table @asis | ||
| 15151 | @item @code{xfce} (par défaut : @code{xfce}) | ||
| 15152 | Le paquet Xfce à utiliser. | ||
| 15153 | @end table | ||
| 15154 | @end deftp | ||
| 15155 | |||
| 15156 | @deffn {Variable Scheme} mate-desktop-service-type | ||
| 15157 | C'est le type de service qui lance @uref{https://mate-desktop.org/, | ||
| 15158 | l'environnement de bureau MATE}. Sa valeur est un objet | ||
| 15159 | @code{mate-desktop-configuration} (voir plus bas). | ||
| 15160 | |||
| 15161 | Ce service ajoute le paquet @code{mate} au profil du système, et étend | ||
| 15162 | polkit avec les actions de @code{mate-settings-daemon}. | ||
| 15163 | @end deffn | ||
| 15164 | |||
| 15165 | @deftp {Type de données} mate-desktop-configuration | ||
| 15166 | Enregistrement de configuration pour l'environnement de bureau MATE. | ||
| 15167 | |||
| 15168 | @table @asis | ||
| 15169 | @item @code{mate} (par défaut : @code{mate}) | ||
| 15170 | Le paquet MATE à utiliser. | ||
| 15171 | @end table | ||
| 15172 | @end deftp | ||
| 15173 | |||
| 15174 | @deffn {Variable Scheme} enlightenment-desktop-service-type | ||
| 15175 | Renvoie un service qui ajoute le paquet @code{enlightenment} et étend dbus | ||
| 15176 | avec les actions de @code{efl} | ||
| 15177 | @end deffn | ||
| 15178 | |||
| 15179 | @deftp {Type de données} enlightenment-desktop-service-configuration | ||
| 15180 | @table @asis | ||
| 15181 | @item @code{enlightenment} (par défaut : @code{enlightenment}) | ||
| 15182 | Le paquet enlightenment à utiliser. | ||
| 15183 | @end table | ||
| 15184 | @end deftp | ||
| 15185 | |||
| 15186 | Comme les services de bureau GNOME, Xfce et MATE récupèrent tant de paquet, | ||
| 15187 | la variable @code{%desktop-services} par défaut n'inclut aucun d'entre eux. | ||
| 15188 | Pour ajouter GNOME, Xfce ou MATE, utilisez @code{cons} pour les ajouter à | ||
| 15189 | @code{%desktop-services} dans le champ @code{services} de votre | ||
| 15190 | @code{operating-system} : | ||
| 15191 | |||
| 15192 | @example | ||
| 15193 | (use-modules (gnu)) | ||
| 15194 | (use-service-modules desktop) | ||
| 15195 | (operating-system | ||
| 15196 | ... | ||
| 15197 | ;; cons* ajoute des éléments à la liste donnée en dernier argument. | ||
| 15198 | (services (cons* (service gnome-desktop-service-type) | ||
| 15199 | (service xfce-desktop-service) | ||
| 15200 | %desktop-services)) | ||
| 15201 | ...) | ||
| 15202 | @end example | ||
| 15203 | |||
| 15204 | Ces environnements de bureau seront alors disponibles comme une option dans | ||
| 15205 | la fenêtre de connexion graphique. | ||
| 15206 | |||
| 15207 | Les définitions de service qui sont vraiment incluses dans | ||
| 15208 | @code{%desktop-services} et fournies par @code{(gnu services dbus)} et | ||
| 15209 | @code{(gnu services desktop)} sont décrites plus bas. | ||
| 15210 | |||
| 15211 | @deffn {Procédure Scheme} dbus-service [#:dbus @var{dbus}] [#:services '()] | ||
| 15212 | Renvoie un service qui lance le « bus système », @var{dbus}, avec le support | ||
| 15213 | de @var{services}. | ||
| 15214 | |||
| 15215 | @uref{http://dbus.freedesktop.org/, D-Bus} est un utilitaire de | ||
| 15216 | communication inter-processus. Son bus système est utilisé pour permettre à | ||
| 15217 | des services systèmes de communiquer et d'être notifiés d'événements | ||
| 15218 | systèmes. | ||
| 15219 | |||
| 15220 | @var{services} doit être une liste de paquets qui fournissent un répertoire | ||
| 15221 | @file{etc/dbus-1/system.d} contenant de la configuration D-Bus | ||
| 15222 | supplémentaire et des fichiers de politiques. Par exemple, pour permettre à | ||
| 15223 | avahi-daemon d'utiliser le bus système, @var{services} doit être égal à | ||
| 15224 | @code{(list avahi)}. | ||
| 15225 | @end deffn | ||
| 15226 | |||
| 15227 | @deffn {Procédure Scheme} elogind-service [#:config @var{config}] | ||
| 15228 | Renvoie un service qui lance le démon de gestion de connexion et de session | ||
| 15229 | @code{elogind}. @uref{https://github.com/elogind/elogind, Elogind} expose | ||
| 15230 | une interface D-Bus qui peut être utilisée pour connaître quels utilisateurs | ||
| 15231 | sont connectés, le type de session qu'ils sont ouverte, suspendre le | ||
| 15232 | système, désactiver la veille système, redémarrer le système et d'autre | ||
| 15233 | taches. | ||
| 15234 | |||
| 15235 | Elogind gère la plupart des événements liés à l'énergie du système, par | ||
| 15236 | exemple mettre en veille le système quand l'écran est rabattu ou en | ||
| 15237 | l'éteignant quand le bouton de démarrage est appuyé. | ||
| 15238 | |||
| 15239 | L'argument @var{config} spécifie la configuration d'elogind et devrait être | ||
| 15240 | le résultat d'une invocation de @code{(elogind-configuration | ||
| 15241 | (@var{parameter} @var{value})...)}. Les paramètres disponibles et leur | ||
| 15242 | valeur par défaut sont : | ||
| 15243 | |||
| 15244 | @table @code | ||
| 15245 | @item kill-user-processes? | ||
| 15246 | @code{#f} | ||
| 15247 | @item kill-only-users | ||
| 15248 | @code{()} | ||
| 15249 | @item kill-exclude-users | ||
| 15250 | @code{("root")} | ||
| 15251 | @item inhibit-delay-max-seconds | ||
| 15252 | @code{5} | ||
| 15253 | @item handle-power-key | ||
| 15254 | @code{poweroff} | ||
| 15255 | @item handle-suspend-key | ||
| 15256 | @code{suspend} | ||
| 15257 | @item handle-hibernate-key | ||
| 15258 | @code{hibernate} | ||
| 15259 | @item handle-lid-switch | ||
| 15260 | @code{suspend} | ||
| 15261 | @item handle-lid-switch-docked | ||
| 15262 | @code{ignore} | ||
| 15263 | @item power-key-ignore-inhibited? | ||
| 15264 | @code{#f} | ||
| 15265 | @item suspend-key-ignore-inhibited? | ||
| 15266 | @code{#f} | ||
| 15267 | @item hibernate-key-ignore-inhibited? | ||
| 15268 | @code{#f} | ||
| 15269 | @item lid-switch-ignore-inhibited? | ||
| 15270 | @code{#t} | ||
| 15271 | @item holdoff-timeout-seconds | ||
| 15272 | @code{30} | ||
| 15273 | @item idle-action | ||
| 15274 | @code{ignore} | ||
| 15275 | @item idle-action-seconds | ||
| 15276 | @code{(* 30 60)} | ||
| 15277 | @item runtime-directory-size-percent | ||
| 15278 | @code{10} | ||
| 15279 | @item runtime-directory-size | ||
| 15280 | @code{#f} | ||
| 15281 | @item remove-ipc? | ||
| 15282 | @code{#t} | ||
| 15283 | @item suspend-state | ||
| 15284 | @code{("mem" "standby" "freeze")} | ||
| 15285 | @item suspend-mode | ||
| 15286 | @code{()} | ||
| 15287 | @item hibernate-state | ||
| 15288 | @code{("disk")} | ||
| 15289 | @item hibernate-mode | ||
| 15290 | @code{("platform" "shutdown")} | ||
| 15291 | @item hybrid-sleep-state | ||
| 15292 | @code{("disk")} | ||
| 15293 | @item hybrid-sleep-mode | ||
| 15294 | @code{("suspend" "platform" "shutdown")} | ||
| 15295 | @end table | ||
| 15296 | @end deffn | ||
| 15297 | |||
| 15298 | @deffn {Procédure Scheme} accountsservice-service @ | ||
| 15299 | [#:accountsservice @var{accountsservice}] | ||
| 15300 | Renvoie un service qui lance AccountsService, un service système qui peut | ||
| 15301 | lister les comptes disponibles, changer leur mot de passe, etc. | ||
| 15302 | AccountsService s'intègre à Polkit pour permettre aux utilisateurs non | ||
| 15303 | privilégiés de pouvoir modifier la configuration de leur système. | ||
| 15304 | @uref{https://www.freedesktop.org/wiki/Software/AccountsService/, le site de | ||
| 15305 | accountsservice} pour trouver plus d'informations. | ||
| 15306 | |||
| 15307 | L'argument @var{accountsservice} est le paquet @code{accountsservice} à | ||
| 15308 | exposer comme un service. | ||
| 15309 | @end deffn | ||
| 15310 | |||
| 15311 | @deffn {Procédure Scheme} polkit-service @ | ||
| 15312 | [#:polkit @var{polkit}] | ||
| 15313 | Renvoie un service qui lance le | ||
| 15314 | @uref{http://www.freedesktop.org/wiki/Software/polkit/, service de gestion | ||
| 15315 | des privilèges Polkit}, qui permet aux administrateurs systèmes de permettre | ||
| 15316 | l'accès à des opération privilégiées d'une manière structurée. En demandant | ||
| 15317 | au service Polkit, un composant système privilégié peut savoir lorsqu'il | ||
| 15318 | peut donner des privilèges supplémentaires à des utilisateurs normaux. Par | ||
| 15319 | exemple, un utilisateur normal peut obtenir le droit de mettre le système en | ||
| 15320 | veille si l'utilisateur est connecté localement. | ||
| 15321 | @end deffn | ||
| 15322 | |||
| 15323 | @defvr {Variable Scheme} upower-service-type | ||
| 15324 | Service qui lance @uref{http://upower.freedesktop.org/, @command{upowerd}}, | ||
| 15325 | un moniteur système de consommation d'énergie et de niveau de batterie, avec | ||
| 15326 | les paramètres de configuration donnés. | ||
| 15327 | |||
| 15328 | Il implémente l'interface D-Bus @code{org.freedesktop.UPower} et est | ||
| 15329 | notamment utilisé par GNOME. | ||
| 15330 | @end defvr | ||
| 15331 | |||
| 15332 | @deftp {Type de données} upower-configuration | ||
| 15333 | Type de données représentant la configuration de UPower. | ||
| 15334 | |||
| 15335 | @table @asis | ||
| 15336 | |||
| 15337 | @item @code{upower} (par défaut : @var{upower}) | ||
| 15338 | Paquet à utiliser pour @code{upower}. | ||
| 15339 | |||
| 15340 | @item @code{watts-up-pro?} (par défaut : @code{#f}) | ||
| 15341 | Active le périphérique Watts Up Pro. | ||
| 15342 | |||
| 15343 | @item @code{poll-batteries?} (par défaut : @code{#t}) | ||
| 15344 | Active les requêtes au noyau pour les changements de niveau de batterie. | ||
| 15345 | |||
| 15346 | @item @code{ignore-lid?} (par défaut : @code{#f}) | ||
| 15347 | Ignore l'état de l'écran, ce qui peut être utile s'il est incorrect sur un | ||
| 15348 | appareil. | ||
| 15349 | |||
| 15350 | @item @code{use-percentage-for-policy?} (par défaut : @code{#f}) | ||
| 15351 | Indique si la politique de batterie basée sur le pourcentage devrait être | ||
| 15352 | utilisée. La valeur par défaut est d'utiliser la durée restante, changez en | ||
| 15353 | @code{#t} pour utiliser les pourcentages. | ||
| 15354 | |||
| 15355 | @item @code{percentage-low} (par défaut : @code{10}) | ||
| 15356 | Lorsque @code{use-percentage-for-policy?} est @code{#t}, cela indique à quel | ||
| 15357 | niveau la batterie est considérée comme faible. | ||
| 15358 | |||
| 15359 | @item @code{percentage-critical} (par défaut : @code{3}) | ||
| 15360 | Lorsque @code{use-percentage-for-policy?} est @code{#t}, cela indique à quel | ||
| 15361 | niveau la batterie est considérée comme critique. | ||
| 15362 | |||
| 15363 | @item @code{percentage-action} (par défaut : @code{2}) | ||
| 15364 | Lorsque @code{use-percentage-for-policy?} est @code{#t}, cela indique à quel | ||
| 15365 | niveau l'action sera prise. | ||
| 15366 | |||
| 15367 | @item @code{time-low} (par défaut : @code{1200}) | ||
| 15368 | Lorsque @code{use-percentage-for-policy?} est @code{#f}, cela indique à | ||
| 15369 | quelle durée restante en secondes la batterie est considérée comme faible. | ||
| 15370 | |||
| 15371 | @item @code{time-critical} (par défaut : @code{300}) | ||
| 15372 | Lorsque @code{use-percentage-for-policy?} est @code{#f}, cela indique à | ||
| 15373 | quelle durée restante en secondes la batterie est considérée comme critique. | ||
| 15374 | |||
| 15375 | @item @code{time-action} (par défaut : @code{120}) | ||
| 15376 | Lorsque @code{use-percentage-for-policy?} est @code{#f}, cela indique à | ||
| 15377 | quelle durée restante en secondes l'action sera prise. | ||
| 15378 | |||
| 15379 | @item @code{critical-power-action} (par défaut : @code{'hybrid-sleep}) | ||
| 15380 | L'action à prendre lorsque @code{percentage-action} ou @code{time-action} | ||
| 15381 | est atteint (en fonction de la configuration de | ||
| 15382 | @code{use-percentage-for-policy?}). | ||
| 15383 | |||
| 15384 | Les valeurs possibles sont : | ||
| 15385 | |||
| 15386 | @itemize @bullet | ||
| 15387 | @item | ||
| 15388 | @code{'power-off} | ||
| 15389 | |||
| 15390 | @item | ||
| 15391 | @code{'hibernate} | ||
| 15392 | |||
| 15393 | @item | ||
| 15394 | @code{'hybrid-sleep}. | ||
| 15395 | @end itemize | ||
| 15396 | |||
| 15397 | @end table | ||
| 15398 | @end deftp | ||
| 15399 | |||
| 15400 | @deffn {Procédure Scheme} udisks-service [#:udisks @var{udisks}] | ||
| 15401 | Renvoie un service pour @uref{http://udisks.freedesktop.org/docs/latest/, | ||
| 15402 | UDisks}, un démon de @dfn{gestion de disques} qui fournit des notifications | ||
| 15403 | et la capacité de monter et démonter des disques à des interfaces | ||
| 15404 | utilisateurs. Les programmes qui parlent à UDisks sont par exemple la | ||
| 15405 | commande @command{udisksctl}, qui fait partie de UDisks et GNOME Disks. | ||
| 15406 | @end deffn | ||
| 15407 | |||
| 15408 | @deffn {Procédure Scheme} colord-service [#:colord @var{colord}] | ||
| 15409 | Renvoie un service qui lance @command{colord}, un service système avec une | ||
| 15410 | interface D-Bus pour gérer les profils de couleur des périphériques | ||
| 15411 | d'entrées et de sorties comme les écrans et les scanners. Il est notamment | ||
| 15412 | utilisé par l'outil graphique GNOME Color Manager. Voir | ||
| 15413 | @uref{http://www.freedesktop.org/software/colord/, le site web de colord} | ||
| 15414 | pour plus d'informations. | ||
| 15415 | @end deffn | ||
| 15416 | |||
| 15417 | @deffn {Procédure Scheme} geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()] | ||
| 15418 | Renvoie une configuration qui permet d'accéder aux données de localisation | ||
| 15419 | de GeoClue. @var{name} est l'ID Desktop de l'application, sans la partie en | ||
| 15420 | @code{.desktop}. Si @var{allowed?} est vraie, l'application aura droit | ||
| 15421 | d'accéder aux informations de localisation par défaut. Le booléen | ||
| 15422 | @var{system?} indique si une application est un composant système ou non. | ||
| 15423 | Enfin @var{users} est la liste des UID des utilisateurs pour lesquels cette | ||
| 15424 | application a le droit d'accéder aux informations de géolocalisation. Une | ||
| 15425 | liste d'utilisateurs vide indique que tous les utilisateurs sont autorisés. | ||
| 15426 | @end deffn | ||
| 15427 | |||
| 15428 | @defvr {Variable Scheme} %standard-geoclue-applications | ||
| 15429 | La liste standard de configuration des application GeoClue connues, qui | ||
| 15430 | permet à l'utilitaire date-and-time de GNOME de demander l'emplacement | ||
| 15431 | actuel pour initialiser le fuseau horaire et aux navigateurs web IceCat et | ||
| 15432 | Epiphany de demander les informations de localisation. IceCat et Epiphany | ||
| 15433 | demandent tous deux à l'utilisateur avant de permettre à une page web de | ||
| 15434 | connaître l'emplacement de l'utilisateur. | ||
| 15435 | @end defvr | ||
| 15436 | |||
| 15437 | @deffn {Procédure Scheme} geoclue-service [#:colord @var{colord}] @ | ||
| 15438 | [#:whitelist '()] @ | ||
| 15439 | [#:wifi-geolocation-url | ||
| 15440 | "https://location.services.mozilla.com/v1/geolocate?key=geoclue"] @ | ||
| 15441 | [#:submit-data? #f] [#:wifi-submission-url | ||
| 15442 | "https://location.services.mozilla.com/v1/submit?key=geoclue"] @ | ||
| 15443 | [#:submission-nick "geoclue"] @ | ||
| 15444 | [#:applications %standard-geoclue-applications] | ||
| 15445 | Renvoie un service qui lance le service de géolocalisation GeoClue. Ce | ||
| 15446 | service fournit une interface D-Bus pour permettre aux applications de | ||
| 15447 | demande l'accès à la position de l'utilisateur et éventuellement d'ajouter | ||
| 15448 | des informations à des bases de données de géolocalisation en ligne. Voir | ||
| 15449 | @uref{https://wiki.freedesktop.org/www/Software/GeoClue/, le site web de | ||
| 15450 | GeoClue} pour plus d'informations. | ||
| 15451 | @end deffn | ||
| 15452 | |||
| 15453 | @deffn {Procédure Scheme} bluetooth-service [#:bluez @var{bluez}] @ | ||
| 15454 | [@w{#:auto-enable? #f}] | ||
| 15455 | Renvoie un service qui lance le démon @command{bluetoothd} qui gère tous les | ||
| 15456 | appareils Bluetooth et fournit un certain nombre d'interfaces D-Bus. | ||
| 15457 | Lorsque @var{auto-enable?} est vraie, le contrôler bluetooth est | ||
| 15458 | automatiquement alimenté au démarrage, ce qui peut être utile lorsque vous | ||
| 15459 | utilisez un clavier ou une souris bluetooth. | ||
| 15460 | |||
| 15461 | Les utilisateurs doivent être dans le groupe @code{lp} pour accéder au | ||
| 15462 | service D-Bus. | ||
| 15463 | @end deffn | ||
| 15464 | |||
| 15465 | @node Services de son | ||
| 15466 | @subsection Services de son | ||
| 15467 | |||
| 15468 | @cindex support du son | ||
| 15469 | @cindex ALSA | ||
| 15470 | @cindex PulseAudio, support du son | ||
| 15471 | |||
| 15472 | Le module @code{(gnu services sound)} fournit un service pour configurer le | ||
| 15473 | système ALSA (architecture son linux avancée), qui fait de PulseAudio le | ||
| 15474 | pilote de sortie préféré d'ALSA. | ||
| 15475 | |||
| 15476 | @deffn {Variable Scheme} alsa-service-type | ||
| 15477 | C'est le type pour le système @uref{https://alsa-project.org/, Advanced | ||
| 15478 | Linux Sound Architecture} (ALSA), qui génère le fichier de configuration | ||
| 15479 | @file{/etc/asound.conf}. La valeur de ce type est un enregistrement | ||
| 15480 | @command{alsa-configuration} comme dans cet exemple : | ||
| 15481 | |||
| 15482 | @example | ||
| 15483 | (service alsa-service-type) | ||
| 15484 | @end example | ||
| 15485 | |||
| 15486 | Voir plus bas pour des détails sur @code{alsa-configuration}. | ||
| 15487 | @end deffn | ||
| 15488 | |||
| 15489 | @deftp {Type de données} alsa-configuration | ||
| 15490 | Type de données représentant la configuration pour @code{alsa-service}. | ||
| 15491 | |||
| 15492 | @table @asis | ||
| 15493 | @item @code{alsa-plugins} (par défaut : @var{alsa-plugins}) | ||
| 15494 | Le paquet @code{alsa-plugins} à utiliser. | ||
| 15495 | |||
| 15496 | @item @code{pulseaudio?} (par défaut : @var{#t}) | ||
| 15497 | Indique si les applications ALSA devraient utiliser le serveur de son | ||
| 15498 | @uref{http://www.pulseaudio.org/, PulseAudio} de manière transparente pour | ||
| 15499 | elles. | ||
| 15500 | |||
| 15501 | Utiliser PulseAudio vous permet dans lancer plusieurs applications qui | ||
| 15502 | produisent du son en même temps et de les contrôler individuellement via | ||
| 15503 | @command{pavucontrol} entre autres choses. | ||
| 15504 | |||
| 15505 | @item @code{extra-options} (par défaut : @var{""}) | ||
| 15506 | Chaîne à ajouter au fichier @file{/etc/asound.conf}. | ||
| 15507 | |||
| 15508 | @end table | ||
| 15509 | @end deftp | ||
| 15510 | |||
| 15511 | Les utilisateurs individuels qui veulent modifier la configuration système | ||
| 15512 | d'ALSA peuvent le faire avec le fichier @file{~/.asoundrc} : | ||
| 15513 | |||
| 15514 | @example | ||
| 15515 | # Dans guix, il faut spécifier le chemin absolu des greffons. | ||
| 15516 | pcm_type.jack @{ | ||
| 15517 | lib "/home/alice/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so" | ||
| 15518 | @} | ||
| 15519 | |||
| 15520 | # Faire passer ALSA par Jack : | ||
| 15521 | # <http://jackaudio.org/faq/routing_alsa.html>. | ||
| 15522 | pcm.rawjack @{ | ||
| 15523 | type jack | ||
| 15524 | playback_ports @{ | ||
| 15525 | 0 system:playback_1 | ||
| 15526 | 1 system:playback_2 | ||
| 15527 | @} | ||
| 15528 | |||
| 15529 | capture_ports @{ | ||
| 15530 | 0 system:capture_1 | ||
| 15531 | 1 system:capture_2 | ||
| 15532 | @} | ||
| 15533 | @} | ||
| 15534 | |||
| 15535 | pcm.!default @{ | ||
| 15536 | type plug | ||
| 15537 | slave @{ | ||
| 15538 | pcm "rawjack" | ||
| 15539 | @} | ||
| 15540 | @} | ||
| 15541 | @end example | ||
| 15542 | |||
| 15543 | Voir @uref{https://www.alsa-project.org/main/index.php/Asoundrc} pour les | ||
| 15544 | détails. | ||
| 15545 | |||
| 15546 | |||
| 15547 | @node Services de bases de données | ||
| 15548 | @subsection Services de bases de données | ||
| 15549 | |||
| 15550 | @cindex database | ||
| 15551 | @cindex SQL | ||
| 15552 | Le module @code{(gnu services databases)} fournit les services suivants. | ||
| 15553 | |||
| 15554 | @deffn {Procédure Scheme} postgresql-service [#:postgresql postgresql] @ | ||
| 15555 | [#:config-file] [#:data-directory ``/var/lib/postgresql/data''] @ | ||
| 15556 | [#:port 5432] [#:locale ``en_US.utf8''] [#:extension-packages '()] | ||
| 15557 | Renvoie un service qui lance @var{postgresql}, le service de bases de | ||
| 15558 | données PostgreSQL. | ||
| 15559 | |||
| 15560 | Le démon PostgreSQL charge sa configuration à l'exécution depuis | ||
| 15561 | @var{config-file}, crée une grappe de bases de données avec @var{locale} | ||
| 15562 | comme paramètre de régionalisation par défaut, stockée dans | ||
| 15563 | @var{data-directory}. Il écoute ensuite sur @var{port}. | ||
| 15564 | |||
| 15565 | @cindex postgresql extension-packages | ||
| 15566 | Des extensions supplémentaires peuvent être chargées à partir de paquets | ||
| 15567 | listés dans @var{extension-packages}. Les extensions sont disponibles à | ||
| 15568 | l'exécution. Par exemple, pour créer une base de données géographique avec | ||
| 15569 | l'extension @code{postgis}, on peut configurer postgresql-service de cette | ||
| 15570 | manière : | ||
| 15571 | |||
| 15572 | @cindex postgis | ||
| 15573 | @example | ||
| 15574 | (use-package-modules databases geo) | ||
| 15575 | |||
| 15576 | (operating-system | ||
| 15577 | ... | ||
| 15578 | ;; postgresql est requis pour lancer `psql' mais postgis n'est pas requis pour son | ||
| 15579 | ;; bon fonctionnement. | ||
| 15580 | (packages (cons* postgresql %base-packages)) | ||
| 15581 | (services | ||
| 15582 | (cons* | ||
| 15583 | (postgresql-service #:extension-packages (list postgis)) | ||
| 15584 | %base-services))) | ||
| 15585 | @end example | ||
| 15586 | |||
| 15587 | Ensuite l'extension devient visible et vous pouvez initialiser une base de | ||
| 15588 | données géographique de cette manière : | ||
| 15589 | |||
| 15590 | @example | ||
| 15591 | psql -U postgres | ||
| 15592 | > create database postgistest; | ||
| 15593 | > \connect postgistest; | ||
| 15594 | > create extension postgis; | ||
| 15595 | > create extension postgis_topology; | ||
| 15596 | @end example | ||
| 15597 | |||
| 15598 | Vous n'avez pas besoin d'ajouter ce champ pour les extensions « contrib » | ||
| 15599 | comme hstore ou dblink comme elles sont déjà exploitables par postgresql. | ||
| 15600 | Ce champ n'est requis que pour ajouter des extensions fournies par d'autres | ||
| 15601 | paquets. | ||
| 15602 | @end deffn | ||
| 15603 | |||
| 15604 | @deffn {Procédure Scheme} mysql-service [#:config (mysql-configuration)] | ||
| 15605 | Renvoie un service qui lance @command{mysqld}, le service de bases de | ||
| 15606 | données MySQL ou MariaDB. | ||
| 15607 | |||
| 15608 | L'argument @var{config} facultatif spécifie la configuration de | ||
| 15609 | @command{mysqld}, qui devrait être un objet @code{<mysql-configuration>}. | ||
| 15610 | @end deffn | ||
| 15611 | |||
| 15612 | @deftp {Type de données} mysql-configuration | ||
| 15613 | Type de données représentant la configuration de @var{mysql-service}. | ||
| 15614 | |||
| 15615 | @table @asis | ||
| 15616 | @item @code{mysql} (par défaut : @var{mariadb}) | ||
| 15617 | Objet paquet du serveur de base de données MySQL, qui peut être soit | ||
| 15618 | @var{mariadb}, soit @var{mysql}. | ||
| 15619 | |||
| 15620 | Pour MySQL, un mot de passe root temporaire sera affiché à l'activation. | ||
| 15621 | Pour MariaDB, le mot de passe root est vide. | ||
| 15622 | |||
| 15623 | @item @code{port} (par défaut : @code{3306}) | ||
| 15624 | Port TCP sur lequel le serveur de base de données écoute les connexions | ||
| 15625 | entrantes. | ||
| 15626 | @end table | ||
| 15627 | @end deftp | ||
| 15628 | |||
| 15629 | @defvr {Variable Scheme} memcached-service-type | ||
| 15630 | C'est le type de service pour le service @uref{https://memcached.org/, | ||
| 15631 | Memcached} qui fournit un cache en mémoire distribué. La valeur pour le | ||
| 15632 | type de service est un objet @code{memcached-configuration}. | ||
| 15633 | @end defvr | ||
| 15634 | |||
| 15635 | @example | ||
| 15636 | (service memcached-service-type) | ||
| 15637 | @end example | ||
| 15638 | |||
| 15639 | @deftp {Type de données} memcached-configuration | ||
| 15640 | Type de données représentant la configuration de memcached. | ||
| 15641 | |||
| 15642 | @table @asis | ||
| 15643 | @item @code{memcached} (par défaut : @code{memcached}) | ||
| 15644 | Le paquet Memcached à utiliser. | ||
| 15645 | |||
| 15646 | @item @code{interfaces} (par défaut : @code{'("0.0.0.0")}) | ||
| 15647 | Les interfaces réseaux sur lesquelles écouter. | ||
| 15648 | |||
| 15649 | @item @code{tcp-port} (par défaut : @code{11211}) | ||
| 15650 | Port sur lequel accepter les connexions. | ||
| 15651 | |||
| 15652 | @item @code{udp-port} (par défaut : @code{11211}) | ||
| 15653 | Port sur lequel accepter les connexions UDP, une valeur de 0 désactive | ||
| 15654 | l'écoute en UDP. | ||
| 15655 | |||
| 15656 | @item @code{additional-options} (par défaut : @code{'()}) | ||
| 15657 | Options de la ligne de commande supplémentaires à passer à @code{memcached}. | ||
| 15658 | @end table | ||
| 15659 | @end deftp | ||
| 15660 | |||
| 15661 | @defvr {Variable Scheme} mongodb-service-type | ||
| 15662 | C'est le type de service pour @uref{https://www.mongodb.com/, MongoDB}. La | ||
| 15663 | valeur de ce service est un objet @code{mongodb-configuration}. | ||
| 15664 | @end defvr | ||
| 15665 | |||
| 15666 | @example | ||
| 15667 | (service mongodb-service-type) | ||
| 15668 | @end example | ||
| 15669 | |||
| 15670 | @deftp {Type de données} mongodb-configuration | ||
| 15671 | Type de données représentant la configuration de mongodb. | ||
| 15672 | |||
| 15673 | @table @asis | ||
| 15674 | @item @code{mongodb} (par défaut : @code{mongodb}) | ||
| 15675 | Le paquet MongoDB à utiliser. | ||
| 15676 | |||
| 15677 | @item @code{config-file} (par défaut : @code{%default-mongodb-configuration-file}) | ||
| 15678 | Le fichier de configuration pour MongoDB. | ||
| 15679 | |||
| 15680 | @item @code{data-directory} (par défaut : @code{"/var/lib/mongodb"}) | ||
| 15681 | Cette valeur est utilisée pour créer le répertoire, pour qu'il existe et | ||
| 15682 | appartienne à l'utilisateur mongodb. Il devrait correspondre au | ||
| 15683 | data-directory que MongoDB est configuré pour utiliser dans son fichier de | ||
| 15684 | configuration. | ||
| 15685 | @end table | ||
| 15686 | @end deftp | ||
| 15687 | |||
| 15688 | @defvr {Variable Scheme} redis-service-type | ||
| 15689 | C'est le type de service pour la base clef-valeur @uref{https://redis.io/, | ||
| 15690 | Redis} dont la valeur est un objet @code{redis-configuration}. | ||
| 15691 | @end defvr | ||
| 15692 | |||
| 15693 | @deftp {Type de données} redis-configuration | ||
| 15694 | Type de données représentant la configuration de redis. | ||
| 15695 | |||
| 15696 | @table @asis | ||
| 15697 | @item @code{redis} (par défaut : @code{redis}) | ||
| 15698 | Le paquet Redis à utiliser. | ||
| 15699 | |||
| 15700 | @item @code{bind} (par défaut : @code{"127.0.0.1"}) | ||
| 15701 | Interface réseau sur laquelle écouter. | ||
| 15702 | |||
| 15703 | @item @code{port} (par défaut : @code{6379}) | ||
| 15704 | Port sur lequel accepter les connexions, une valeur de 0 désactive l'écoute | ||
| 15705 | sur un socket TCP. | ||
| 15706 | |||
| 15707 | @item @code{working-directory} (par défaut : @code{"/var/lib/redis"}) | ||
| 15708 | Répertoire dans lequel stocker la base de données et les fichiers liés. | ||
| 15709 | @end table | ||
| 15710 | @end deftp | ||
| 15711 | |||
| 15712 | @node Services de courriels | ||
| 15713 | @subsection Services de courriels | ||
| 15714 | |||
| 15715 | @cindex courriel | ||
| 15716 | @cindex email | ||
| 15717 | Le module @code{(gnu services mail)} fournit des définitions de services | ||
| 15718 | Guix pour les services de courriel : des serveurs IMAP, POP3 et LMTP ainsi | ||
| 15719 | que des MTA (Mail Transport Agent). Que d'acronymes ! Ces services sont | ||
| 15720 | détaillés dans les sous-sections ci-dessous. | ||
| 15721 | |||
| 15722 | @subsubheading Service Dovecot | ||
| 15723 | |||
| 15724 | @deffn {Procédure Scheme} dovecot-service [#:config (dovecot-configuration)] | ||
| 15725 | Renvoie un service qui lance le serveur de courriel IMAP/POP3/LMTP Dovecot. | ||
| 15726 | @end deffn | ||
| 15727 | |||
| 15728 | Par défaut, Dovecot n'a pas besoin de beaucoup de configuration ; l'objet de | ||
| 15729 | configuration par défaut créé par @code{(dovecot-configuration)} suffira si | ||
| 15730 | votre courriel est livré dans @code{~/Maildir}. Un certificat auto-signé | ||
| 15731 | sera généré pour les connexions TLS, bien que Dovecot écoutera aussi sur les | ||
| 15732 | ports non chiffrés par défaut. Il y a quelques options cependant, que les | ||
| 15733 | administrateurs peuvent avoir besoin de changer et comme c'est le cas avec | ||
| 15734 | d'autres services, Guix permet aux administrateurs systèmes de spécifier ces | ||
| 15735 | paramètres via une interface Scheme unifiée. | ||
| 15736 | |||
| 15737 | Par exemple, pour spécifier que les courriels se trouvent dans | ||
| 15738 | @code{maildir~/.mail}, on peut instancier Dovecot de cette manière : | ||
| 15739 | |||
| 15740 | @example | ||
| 15741 | (dovecot-service #:config | ||
| 15742 | (dovecot-configuration | ||
| 15743 | (mail-location "maildir:~/.mail"))) | ||
| 15744 | @end example | ||
| 15745 | |||
| 15746 | Les paramètres de configuration disponibles sont les suivants. Chaque | ||
| 15747 | définition des paramètres est précédé par son type ; par exemple, | ||
| 15748 | @samp{string-list foo} indique que le paramètre @code{foo} devrait être | ||
| 15749 | spécifié comme une liste de chaînes de caractères. Il y a aussi une manière | ||
| 15750 | de spécifier la configuration comme une chaîne de caractères, si vous avez | ||
| 15751 | un vieux fichier @code{dovecot.conf} que vous voulez porter depuis un autre | ||
| 15752 | système ; voir la fin pour plus de détails. | ||
| 15753 | |||
| 15754 | @c The following documentation was initially generated by | ||
| 15755 | @c (generate-documentation) in (gnu services mail). Manually maintained | ||
| 15756 | @c documentation is better, so we shouldn't hesitate to edit below as | ||
| 15757 | @c needed. However if the change you want to make to this documentation | ||
| 15758 | @c can be done in an automated way, it's probably easier to change | ||
| 15759 | @c (generate-documentation) than to make it below and have to deal with | ||
| 15760 | @c the churn as dovecot updates. | ||
| 15761 | |||
| 15762 | Les champs de @code{dovecot-configuration} disponibles sont : | ||
| 15763 | |||
| 15764 | @deftypevr {paramètre de @code{dovecot-configuration}} package dovecot | ||
| 15765 | Le paquet dovecot. | ||
| 15766 | @end deftypevr | ||
| 15767 | |||
| 15768 | @deftypevr {paramètre de @code{dovecot-configuration}} comma-separated-string-list listen | ||
| 15769 | Une liste d'IP ou d'hôtes à écouter pour les connexions. @samp{*} écoute | ||
| 15770 | sur toutes les interfaces IPv4, @samp{::} écoute sur toutes les interfaces | ||
| 15771 | IPv6. Si vous voulez spécifier des ports différents de la valeur par défaut | ||
| 15772 | ou quelque chose de plus complexe, complétez les champs d'adresse et de port | ||
| 15773 | de @samp{inet-listener} des services spécifiques qui vous intéressent. | ||
| 15774 | @end deftypevr | ||
| 15775 | |||
| 15776 | @deftypevr {paramètre de @code{dovecot-configuration}} protocol-configuration-list protocols | ||
| 15777 | Liste des protocoles que vous voulez servir. Les protocoles disponibles | ||
| 15778 | comprennent @samp{imap}, @samp{pop3} et @samp{lmtp}. | ||
| 15779 | |||
| 15780 | Les champs @code{protocol-configuration} disponibles sont : | ||
| 15781 | |||
| 15782 | @deftypevr {paramètre de @code{protocol-configuration}} string name | ||
| 15783 | Le nom du protocole. | ||
| 15784 | @end deftypevr | ||
| 15785 | |||
| 15786 | @deftypevr {paramètre de @code{protocol-configuration}} string auth-socket-path | ||
| 15787 | Le chemin d'un socket UNIX vers le serveur d'authentification maître pour | ||
| 15788 | trouver les utilisateurs. C'est utilisé par imap (pour les utilisateurs | ||
| 15789 | partagés) et lda. Sa valeur par défaut est | ||
| 15790 | @samp{"/var/run/dovecot/auth-userdb"}. | ||
| 15791 | @end deftypevr | ||
| 15792 | |||
| 15793 | @deftypevr {paramètre de @code{protocol-configuration}} space-separated-string-list mail-plugins | ||
| 15794 | Liste de greffons à charger séparés par des espaces. | ||
| 15795 | @end deftypevr | ||
| 15796 | |||
| 15797 | @deftypevr {paramètre de @code{protocol-configuration}} non-negative-integer mail-max-userip-connections | ||
| 15798 | Nombre maximum de connexions IMAP permises pour un utilisateur depuis chaque | ||
| 15799 | adresse IP. Remarque : la comparaison du nom d'utilisateur est sensible à | ||
| 15800 | la casse. Par défaut @samp{10}. | ||
| 15801 | @end deftypevr | ||
| 15802 | |||
| 15803 | @end deftypevr | ||
| 15804 | |||
| 15805 | @deftypevr {paramètre de @code{dovecot-configuration}} service-configuration-list services | ||
| 15806 | Liste des services à activer. Les services disponibles comprennent | ||
| 15807 | @samp{imap}, @samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth} | ||
| 15808 | et @samp{lmtp}. | ||
| 15809 | |||
| 15810 | Les champs de @code{service-configuration} disponibles sont : | ||
| 15811 | |||
| 15812 | @deftypevr {paramètre de @code{service-configuration}} string kind | ||
| 15813 | Le type de service. Les valeurs valides comprennent @code{director}, | ||
| 15814 | @code{imap-login}, @code{pop3-login}, @code{lmtp}, @code{imap}, @code{pop3}, | ||
| 15815 | @code{auth}, @code{auth-worker}, @code{dict}, @code{tcpwrap}, | ||
| 15816 | @code{quota-warning} ou n'importe quoi d'autre. | ||
| 15817 | @end deftypevr | ||
| 15818 | |||
| 15819 | @deftypevr {paramètre de @code{service-configuration}} listener-configuration-list listeners | ||
| 15820 | Les auditeurs du service. Un auditeur est soit un | ||
| 15821 | @code{unix-listener-configuration}, soit un | ||
| 15822 | @code{fifo-listener-configuration}, soit un | ||
| 15823 | @code{inet-listener-configuration}. La valeur par défaut est @samp{()}. | ||
| 15824 | |||
| 15825 | Les champs de @code{unix-listener-configuration} disponibles sont : | ||
| 15826 | |||
| 15827 | @deftypevr {paramètre de @code{unix-listener-configuration}} string path | ||
| 15828 | Chemin vers le fichier, relativement au champ @code{base-dir}. C'est aussi | ||
| 15829 | utilisé comme nom de section. | ||
| 15830 | @end deftypevr | ||
| 15831 | |||
| 15832 | @deftypevr {paramètre de @code{unix-listener-configuration}} string mode | ||
| 15833 | Le mode d'accès pour le socket. La valeur par défaut est @samp{"0600"}. | ||
| 15834 | @end deftypevr | ||
| 15835 | |||
| 15836 | @deftypevr {paramètre de @code{unix-listener-configuration}} string user | ||
| 15837 | L'utilisateur à qui appartient le socket. La valeur par défaut est | ||
| 15838 | @samp{""} | ||
| 15839 | @end deftypevr | ||
| 15840 | |||
| 15841 | @deftypevr {paramètre de @code{unix-listener-configuration}} string group | ||
| 15842 | Le groupe auquel appartient le socket. La valeur par défaut est @samp{""}. | ||
| 15843 | @end deftypevr | ||
| 15844 | |||
| 15845 | |||
| 15846 | Les champs de @code{fifo-listener-configuration} disponibles sont : | ||
| 15847 | |||
| 15848 | @deftypevr {paramètre de @code{fifo-listener-configuration}} string path | ||
| 15849 | Chemin vers le fichier, relativement au champ @code{base-dir}. C'est aussi | ||
| 15850 | utilisé comme nom de section. | ||
| 15851 | @end deftypevr | ||
| 15852 | |||
| 15853 | @deftypevr {paramètre de @code{fifo-listener-configuration}} string mode | ||
| 15854 | Le mode d'accès pour le socket. La valeur par défaut est @samp{"0600"}. | ||
| 15855 | @end deftypevr | ||
| 15856 | |||
| 15857 | @deftypevr {paramètre de @code{fifo-listener-configuration}} string user | ||
| 15858 | L'utilisateur à qui appartient le socket. La valeur par défaut est | ||
| 15859 | @samp{""} | ||
| 15860 | @end deftypevr | ||
| 15861 | |||
| 15862 | @deftypevr {paramètre de @code{fifo-listener-configuration}} string group | ||
| 15863 | Le groupe auquel appartient le socket. La valeur par défaut est @samp{""}. | ||
| 15864 | @end deftypevr | ||
| 15865 | |||
| 15866 | |||
| 15867 | Les champs de @code{inet-listener-configuration} disponibles sont : | ||
| 15868 | |||
| 15869 | @deftypevr {paramètre de @code{inet-listener-configuration}} string protocol | ||
| 15870 | Le protocole à écouter. | ||
| 15871 | @end deftypevr | ||
| 15872 | |||
| 15873 | @deftypevr {paramètre de @code{inet-listener-configuration}} string address | ||
| 15874 | L'adresse sur laquelle écouter, ou la chaîne vide pour toutes les adresses. | ||
| 15875 | La valeur par défaut est @samp{""}. | ||
| 15876 | @end deftypevr | ||
| 15877 | |||
| 15878 | @deftypevr {paramètre de @code{inet-listener-configuration}} non-negative-integer port | ||
| 15879 | Le port sur lequel écouter. | ||
| 15880 | @end deftypevr | ||
| 15881 | |||
| 15882 | @deftypevr {paramètre de @code{inet-listener-configuration}} boolean ssl? | ||
| 15883 | S'il faut utiliser SSL pour ce service ; @samp{yes}, @samp{no} ou | ||
| 15884 | @samp{required}. La valeur par défaut est @samp{#t}. | ||
| 15885 | @end deftypevr | ||
| 15886 | |||
| 15887 | @end deftypevr | ||
| 15888 | |||
| 15889 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer client-limit | ||
| 15890 | Connexions de clients simultanées maximum par processus. Une fois ce nombre | ||
| 15891 | de connections atteint, la connexion suivante fera en sorte que Dovecot | ||
| 15892 | démarre un autre processus. Si la valeur est 0, @code{default-client-limit} | ||
| 15893 | est utilisé à la place. | ||
| 15894 | |||
| 15895 | La valeur par défaut est @samp{0}. | ||
| 15896 | |||
| 15897 | @end deftypevr | ||
| 15898 | |||
| 15899 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer service-count | ||
| 15900 | Nombre de connexions à gérer avant de démarrer un nouveau processus. | ||
| 15901 | Typiquement les valeurs utiles sont 0 (sans limite) ou 1. 1 est plus sûr, | ||
| 15902 | mais 0 est plus rapide. <doc/wiki/LoginProcess.txt>. La valeur par défaut | ||
| 15903 | est @samp{1}. | ||
| 15904 | |||
| 15905 | @end deftypevr | ||
| 15906 | |||
| 15907 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer process-limit | ||
| 15908 | Nombre de processus maximum qui peut exister pour ce service. Si la valeur | ||
| 15909 | est 0, @code{default-process-limit} est utilisé à la place. | ||
| 15910 | |||
| 15911 | La valeur par défaut est @samp{0}. | ||
| 15912 | |||
| 15913 | @end deftypevr | ||
| 15914 | |||
| 15915 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer process-min-avail | ||
| 15916 | Nombre de processus à toujours garder en attente de connexions. La valeur | ||
| 15917 | par défaut est @samp{0}. | ||
| 15918 | @end deftypevr | ||
| 15919 | |||
| 15920 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer vsz-limit | ||
| 15921 | Si vous mettez @samp{service-count 0}, vous avez sans doute besoin | ||
| 15922 | d'augmenter ce paramètre. La valeur par défaut est @samp{256000000}. | ||
| 15923 | @end deftypevr | ||
| 15924 | |||
| 15925 | @end deftypevr | ||
| 15926 | |||
| 15927 | @deftypevr {paramètre de @code{dovecot-configuration}} dict-configuration dict | ||
| 15928 | Configuration du dictionnaire, créé par le constructeur | ||
| 15929 | @code{dict-configuration}. | ||
| 15930 | |||
| 15931 | Les champs de @code{dict-configuration} disponibles sont : | ||
| 15932 | |||
| 15933 | @deftypevr {paramètre de @code{dict-configuration}} free-form-fields entries | ||
| 15934 | Une liste de paires de clefs-valeurs que ce dictionnaire contient. La | ||
| 15935 | valeur par défaut est @samp{()}. | ||
| 15936 | @end deftypevr | ||
| 15937 | |||
| 15938 | @end deftypevr | ||
| 15939 | |||
| 15940 | @deftypevr {paramètre de @code{dovecot-configuration}} passdb-configuration-list passdbs | ||
| 15941 | Une liste de configurations passdb, chacune créée par le constructeur | ||
| 15942 | @code{passdb-configuration}. | ||
| 15943 | |||
| 15944 | Les champs de @code{passdb-configuration} disponibles sont : | ||
| 15945 | |||
| 15946 | @deftypevr {paramètre de @code{passdb-configuration}} string driver | ||
| 15947 | Le pilote à utiliser par passdb. Les valeur valides comprennent @samp{pam}, | ||
| 15948 | @samp{passwd}, @samp{shadow}, @samp{bsdauth} et @samp{static}. La valeur | ||
| 15949 | par défaut est @samp{"pam"}. | ||
| 15950 | @end deftypevr | ||
| 15951 | |||
| 15952 | @deftypevr {paramètre de @code{passdb-configuration}} space-separated-string-list args | ||
| 15953 | Liste d'arguments pour le pilote passdb séparés par des espaces. La valeur | ||
| 15954 | par défaut est @samp{""}. | ||
| 15955 | @end deftypevr | ||
| 15956 | |||
| 15957 | @end deftypevr | ||
| 15958 | |||
| 15959 | @deftypevr {paramètre de @code{dovecot-configuration}} userdb-configuration-list userdbs | ||
| 15960 | Liste des configurations userdb, chacune créée par le constructeur | ||
| 15961 | @code{userdb-configuration}. | ||
| 15962 | |||
| 15963 | Les champs de @code{userdb-configuration} disponibles sont : | ||
| 15964 | |||
| 15965 | @deftypevr {paramètre de @code{userdb-configuration}} string driver | ||
| 15966 | Le pilote que userdb devrait utiliser. Les valeurs valides comprennent | ||
| 15967 | @samp{passwd} et @samp{static}. La valeur par défaut est @samp{"passwd"}. | ||
| 15968 | @end deftypevr | ||
| 15969 | |||
| 15970 | @deftypevr {paramètre de @code{userdb-configuration}} space-separated-string-list args | ||
| 15971 | Liste des arguments du pilote userdb séparés par des espaces. La valeur par | ||
| 15972 | défaut est @samp{""}. | ||
| 15973 | @end deftypevr | ||
| 15974 | |||
| 15975 | @deftypevr {paramètre de @code{userdb-configuration}} free-form-args override-fields | ||
| 15976 | Remplace des champs de passwd. La valeur par défaut est @samp{()}. | ||
| 15977 | @end deftypevr | ||
| 15978 | |||
| 15979 | @end deftypevr | ||
| 15980 | |||
| 15981 | @deftypevr {paramètre de @code{dovecot-configuration}} plugin-configuration plugin-configuration | ||
| 15982 | Configuration du greffon, créé par le constructeur | ||
| 15983 | @code{plugin-configuration}. | ||
| 15984 | @end deftypevr | ||
| 15985 | |||
| 15986 | @deftypevr {paramètre de @code{dovecot-configuration}} list-of-namespace-configuration namespaces | ||
| 15987 | Liste d'espaces de noms. Chaque élément de la liste est créé par le | ||
| 15988 | constructeur @code{namespace-configuration}. | ||
| 15989 | |||
| 15990 | Les champs de @code{namespace-configuration} disponibles sont : | ||
| 15991 | |||
| 15992 | @deftypevr {paramètre de @code{namespace-configuration}} string name | ||
| 15993 | Nom de cet espace de nom. | ||
| 15994 | @end deftypevr | ||
| 15995 | |||
| 15996 | @deftypevr {paramètre de @code{namespace-configuration}} string type | ||
| 15997 | Type d'espace de nom : @samp{private}, @samp{shared} ou @samp{public}. La | ||
| 15998 | valeur par défaut est @samp{"private"}. | ||
| 15999 | @end deftypevr | ||
| 16000 | |||
| 16001 | @deftypevr {paramètre de @code{namespace-configuration}} string separator | ||
| 16002 | Séparateur de hiérarchie à utiliser. Vous devriez utiliser le même | ||
| 16003 | séparateur pour tous les espaces de noms ou certains clients seront confus. | ||
| 16004 | @samp{/} est généralement une bonne valeur. La valeur par défaut dépend | ||
| 16005 | cependant du format de stockage sous-jacent. La valeur par défaut est | ||
| 16006 | @samp{""}. | ||
| 16007 | @end deftypevr | ||
| 16008 | |||
| 16009 | @deftypevr {paramètre de @code{namespace-configuration}} string prefix | ||
| 16010 | Préfixe requis pour accéder à cet espace de nom. Ce paramètres doit être | ||
| 16011 | différent pour tous les espaces de noms. Par exemple @samp{Public/}. La | ||
| 16012 | valeur par défaut est @samp{""}. | ||
| 16013 | @end deftypevr | ||
| 16014 | |||
| 16015 | @deftypevr {paramètre de @code{namespace-configuration}} string location | ||
| 16016 | Emplacement physique de la boîte aux lettres. C'est le même format que | ||
| 16017 | mail_location, qui est aussi la valeur par défaut. La valeur par défaut est | ||
| 16018 | @samp{""}. | ||
| 16019 | @end deftypevr | ||
| 16020 | |||
| 16021 | @deftypevr {paramètre de @code{namespace-configuration}} boolean inbox? | ||
| 16022 | Il ne peut y avoir qu'un INBOX, et ce paramètre définit l'espace de nom qui | ||
| 16023 | le possède. La valeur par défaut est @samp{#f}. | ||
| 16024 | @end deftypevr | ||
| 16025 | |||
| 16026 | @deftypevr {paramètre de @code{namespace-configuration}} boolean hidden? | ||
| 16027 | Si l'espace de nom est caché, il n'est pas publié auprès des clients par | ||
| 16028 | l'extension NAMESPACE. Vous voudrez aussi sans doute indiquer @samp{list? | ||
| 16029 | #f}. C'est surtout utile lors de la conversion depuis un autre serveur avec | ||
| 16030 | des espaces de noms différents que vous voulez rendre obsolètes sans les | ||
| 16031 | casser. Par exemple vous pouvez cacher les espaces de noms avec les | ||
| 16032 | préfixes @samp{~/mail/}, @samp{~%u/mail/} et @samp{mail/}. La valeur par | ||
| 16033 | défaut est @samp{#f}. | ||
| 16034 | @end deftypevr | ||
| 16035 | |||
| 16036 | @deftypevr {paramètre de @code{namespace-configuration}} boolean list? | ||
| 16037 | Montre les boîtes aux lettres sons cet espace de nom avec la commande LIST. | ||
| 16038 | Cela rend l'espace de nom visible pour les clients qui ne supportent pas | ||
| 16039 | l'extension NAMESPACE. La valeur spéciale @code{children} liste les boîtes | ||
| 16040 | aux lettres filles mais cache le préfixe de l'espace de nom. La valeur par | ||
| 16041 | défaut est @samp{#t}. | ||
| 16042 | @end deftypevr | ||
| 16043 | |||
| 16044 | @deftypevr {paramètre de @code{namespace-configuration}} boolean subscriptions? | ||
| 16045 | Les espaces de noms gèrent leur propre souscription. Si la valeur est | ||
| 16046 | @code{#f}, l'espace de nom parent s'en charge. Le préfixe vide devrait | ||
| 16047 | toujours avoir cette valeur à @code{#t}. La valeur par défaut est | ||
| 16048 | @samp{#t}. | ||
| 16049 | @end deftypevr | ||
| 16050 | |||
| 16051 | @deftypevr {paramètre de @code{namespace-configuration}} mailbox-configuration-list mailboxes | ||
| 16052 | Liste des boîtes aux lettres prédéfinies dans cet espace de nom. La valeur | ||
| 16053 | par défaut est @samp{()}. | ||
| 16054 | |||
| 16055 | Les champs de @code{mailbox-configuration} disponibles sont : | ||
| 16056 | |||
| 16057 | @deftypevr {paramètre de @code{mailbox-configuration}} string name | ||
| 16058 | Nom de cette boîte aux lettres. | ||
| 16059 | @end deftypevr | ||
| 16060 | |||
| 16061 | @deftypevr {paramètre de @code{mailbox-configuration}} string auto | ||
| 16062 | @samp{create} créera automatiquement cette boîte aux lettres. | ||
| 16063 | @samp{subscribe} créera et souscrira à la boîte aux lettres. La valeur par | ||
| 16064 | défaut est @samp{"no"}. | ||
| 16065 | @end deftypevr | ||
| 16066 | |||
| 16067 | @deftypevr {paramètre de @code{mailbox-configuration}} space-separated-string-list special-use | ||
| 16068 | Liste des attributs @code{SPECIAL-USE} IMAP spécifiés par la RFC 6154. Les | ||
| 16069 | valeurs valides sont @code{\All}, @code{\Archive}, @code{\Drafts}, | ||
| 16070 | @code{\Flagged}, @code{\Junk}, @code{\Sent} et @code{\Trash}. La valeur par | ||
| 16071 | défaut est @samp{()}. | ||
| 16072 | @end deftypevr | ||
| 16073 | |||
| 16074 | @end deftypevr | ||
| 16075 | |||
| 16076 | @end deftypevr | ||
| 16077 | |||
| 16078 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name base-dir | ||
| 16079 | Répertoire de base où stocker les données d'exécution. La valeur par défaut | ||
| 16080 | est @samp{"/var/run/dovecot/"}. | ||
| 16081 | @end deftypevr | ||
| 16082 | |||
| 16083 | @deftypevr {paramètre de @code{dovecot-configuration}} string login-greeting | ||
| 16084 | Message d'accueil pour les clients. La valeur par défaut est @samp{"Dovecot | ||
| 16085 | ready."}. | ||
| 16086 | @end deftypevr | ||
| 16087 | |||
| 16088 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list login-trusted-networks | ||
| 16089 | Liste des groupes d'adresses de confiance. Les connexions depuis ces IP | ||
| 16090 | sont autorisées à modifier leurs adresses IP et leurs ports (pour la | ||
| 16091 | connexion et la vérification d'authentification). | ||
| 16092 | @samp{disable-plaintext-auth} est aussi ignoré pour ces réseaux. | ||
| 16093 | Typiquement vous voudrez spécifier votre mandataire IMAP ici. La valeur par | ||
| 16094 | défaut est @samp{()}. | ||
| 16095 | @end deftypevr | ||
| 16096 | |||
| 16097 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list login-access-sockets | ||
| 16098 | Liste des sockets de vérification d'accès de connexion (p.@: ex.@: | ||
| 16099 | tcpwrap). La valeur par défaut est @samp{()}. | ||
| 16100 | @end deftypevr | ||
| 16101 | |||
| 16102 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean verbose-proctitle? | ||
| 16103 | Montre des titres de processus plus verbeux (dans ps). Actuellement, montre | ||
| 16104 | le nom d'utilisateur et l'adresse IP. Utile pour voir qui utilise en | ||
| 16105 | réalité les processus IMAP (p.@: ex.@: des boîtes aux lettres partagées ou | ||
| 16106 | si le même uid est utilisé pour plusieurs comptes). La valeur par défaut | ||
| 16107 | est @samp{#f}. | ||
| 16108 | @end deftypevr | ||
| 16109 | |||
| 16110 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean shutdown-clients? | ||
| 16111 | Indique si les processus devraient toujours être tués lorsque le processus | ||
| 16112 | maître de Dovecot est éteint. La valeur @code{#f} signifie que Dovecot peut | ||
| 16113 | être mis à jour sans forcer les connexions clientes existantes à se fermer | ||
| 16114 | (bien que cela puisse être un problème si la mise à jour est un correctif de | ||
| 16115 | sécurité par exemple). La valeur par défaut est @samp{#t}. | ||
| 16116 | @end deftypevr | ||
| 16117 | |||
| 16118 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer doveadm-worker-count | ||
| 16119 | Si la valeur n'est pas zéro, lance les commandes de courriel via ce nombre | ||
| 16120 | de connexions au serveur doveadm au lieu de les lancer dans le même | ||
| 16121 | processus. La valeur par défaut est @samp{0}. | ||
| 16122 | @end deftypevr | ||
| 16123 | |||
| 16124 | @deftypevr {paramètre de @code{dovecot-configuration}} string doveadm-socket-path | ||
| 16125 | Socket UNIX ou hôte:port utilisé pour se connecter au serveur doveadm. La | ||
| 16126 | valeur par défaut est @samp{"doveadm-server"}. | ||
| 16127 | @end deftypevr | ||
| 16128 | |||
| 16129 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list import-environment | ||
| 16130 | Liste des variables d'environnement qui sont préservées au démarrage de | ||
| 16131 | Dovecot et passées à tous ses processus fils. Vous pouvez aussi donner des | ||
| 16132 | paires clef=valeur pour toujours spécifier ce paramètre. | ||
| 16133 | @end deftypevr | ||
| 16134 | |||
| 16135 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean disable-plaintext-auth? | ||
| 16136 | Désactive la commande LOGIN et toutes les autres authentifications en texte | ||
| 16137 | clair à moins que SSL/TLS ne soit utilisé (capacité LOGINDISABLED). | ||
| 16138 | Remarquez que si l'IP distante correspond à l'IP locale (c.-à-d.@: que vous | ||
| 16139 | vous connectez depuis le même ordinateur), la connexion est considérée comme | ||
| 16140 | sécurisée et l'authentification en texte clair est permise. Voir aussi le | ||
| 16141 | paramètre ssl=required. La valeur par défaut est @samp{#t}. | ||
| 16142 | @end deftypevr | ||
| 16143 | |||
| 16144 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer auth-cache-size | ||
| 16145 | Taille du cache d'authentification (p.@: ex.@: @samp{#e10e6}). 0 signifie | ||
| 16146 | qu'il est désactivé. Remarquez que bsdauth, PAM et vpopmail ont besoin que | ||
| 16147 | @samp{cache-key} soit indiqué pour que le cache soit utilisé. La valeur par | ||
| 16148 | défaut est @samp{0}. | ||
| 16149 | @end deftypevr | ||
| 16150 | |||
| 16151 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-cache-ttl | ||
| 16152 | Durée de vie des données en cache. Après l'expiration du TTL | ||
| 16153 | l'enregistrement en cache n'est plus utilisé *sauf* si la requête à la base | ||
| 16154 | de données principale revoie une erreur interne. Nous essayons aussi de | ||
| 16155 | gérer les changements de mot de passe automatiquement : si | ||
| 16156 | l'authentification précédente de l'utilisateur était réussie mais pas | ||
| 16157 | celle-ci, le cache n'est pas utilisé. Pour l'instant cela fonctionne avec | ||
| 16158 | l'authentification en texte clair uniquement. La valeur par défaut est | ||
| 16159 | @samp{"1 hour"}. | ||
| 16160 | @end deftypevr | ||
| 16161 | |||
| 16162 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-cache-negative-ttl | ||
| 16163 | TTL pour les résultats négatifs (l'utilisateur n'est pas trouvé ou le mot de | ||
| 16164 | passe ne correspond pas). 0 désactive la mise en cache complètement. La | ||
| 16165 | valeur par défaut est @samp{"1 hour"}. | ||
| 16166 | @end deftypevr | ||
| 16167 | |||
| 16168 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list auth-realms | ||
| 16169 | Liste des domaines pour les mécanismes d'authentification SASL qui en ont | ||
| 16170 | besoin. Vous pouvez laisser ce paramètre vide si vous ne voulez pas | ||
| 16171 | utiliser plusieurs domaines. Beaucoup de clients utilisent le premier | ||
| 16172 | domaine listé ici, donc gardez celui par défaut en premier. La valeur par | ||
| 16173 | défaut est @samp{()} | ||
| 16174 | @end deftypevr | ||
| 16175 | |||
| 16176 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-default-realm | ||
| 16177 | Domaine par défaut à utiliser si aucun n'est spécifié. C'est utilisé pour | ||
| 16178 | les domaines SASL et pour ajouter @@domaine au nom d'utilisateur dans les | ||
| 16179 | authentification en texte clair. La valeur par défaut est @samp{""}. | ||
| 16180 | @end deftypevr | ||
| 16181 | |||
| 16182 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-username-chars | ||
| 16183 | Liste des caractères autorisés dans les noms d'utilisateur. Si le nom | ||
| 16184 | d'utilisateur donné par l'utilisateur contient un caractère qui n'est pas | ||
| 16185 | listé ici, la connexion échoue automatiquement. C'est juste une | ||
| 16186 | vérification supplémentaire pour s'assure que l'utilisateur ne puisse pas | ||
| 16187 | exploiter des vulnérabilités potentielles d'échappement de guillemets avec | ||
| 16188 | les bases de données SQL/LDAP. Si vous voulez autoriser tous les | ||
| 16189 | caractères, indiquez la liste vide. | ||
| 16190 | @end deftypevr | ||
| 16191 | |||
| 16192 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-username-translation | ||
| 16193 | Traduction de caractères dans les noms d'utilisateur avant qu'ils ne soient | ||
| 16194 | cherchés en base. La valeur contient une série de caractère de -> à. Par | ||
| 16195 | exemple @samp{#@@/@@} signifie que @samp{#} et @samp{/} sont traduits en | ||
| 16196 | @samp{@@}. La valeur par défaut est @samp{""}. | ||
| 16197 | @end deftypevr | ||
| 16198 | |||
| 16199 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-username-format | ||
| 16200 | Format des noms d'utilisateur avant qu'ils ne soient cherchés en base. Vous | ||
| 16201 | pouvez utiliser les variables standard ici, p.@: ex.@: %Lu est le nom | ||
| 16202 | d'utilisateur en minuscule, %n enlève le domaine s'il est donné ou | ||
| 16203 | @samp{%n-AT-%d} changerait le @samp{@@} en @samp{-AT-}. Cette traduction | ||
| 16204 | est faite après les changements de @samp{auth-username-translation}. La | ||
| 16205 | valeur par défaut est @samp{"%Lu"}. | ||
| 16206 | @end deftypevr | ||
| 16207 | |||
| 16208 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-master-user-separator | ||
| 16209 | Si vous voulez permettre aux utilisateurs maîtres de se connecter en | ||
| 16210 | spécifiant le nom d'utilisateur maître dans la chaîne de nom d'utilisateur | ||
| 16211 | normal (c.-à-d.@: sans utiliser le support du mécanisme SASL pour cela), | ||
| 16212 | vous pouvez spécifier le caractère de séparation ici. Le format est ensuite | ||
| 16213 | <nom d'utilisateur><séparateur><nom d'utilisateur maître>. UW-IMAP utilise | ||
| 16214 | @samp{*} comme séparateur, donc ça pourrait être un bon choix. La valeur | ||
| 16215 | par défaut est @samp{""}. | ||
| 16216 | @end deftypevr | ||
| 16217 | |||
| 16218 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-anonymous-username | ||
| 16219 | Nom d'utilisateur à utiliser pour les utilisateurs qui se connectent avec le | ||
| 16220 | mécanisme SASL ANONYMOUS. La valeur par défaut est @samp{"anonymous"}. | ||
| 16221 | @end deftypevr | ||
| 16222 | |||
| 16223 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer auth-worker-max-count | ||
| 16224 | Nombre maximum de processus de travail dovecot-auth. Ils sont utilisés pour | ||
| 16225 | exécuter des requêtes passdb et userdb bloquantes (p.@: ex.@: MySQL et | ||
| 16226 | PAM). Ils sont créés automatiquement et détruits au besoin. La valeur par | ||
| 16227 | défaut est @samp{30}. | ||
| 16228 | @end deftypevr | ||
| 16229 | |||
| 16230 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-gssapi-hostname | ||
| 16231 | Nom d'hôte à utiliser dans les noms GSSAPI principaux. La valeur par défaut | ||
| 16232 | est d'utiliser le nom renvoyé par gethostname(). Utilisez @samp{$ALL} (avec | ||
| 16233 | des guillemets) pour permettre toutes les entrées keytab. La valeur par | ||
| 16234 | défaut est @samp{""}. | ||
| 16235 | @end deftypevr | ||
| 16236 | |||
| 16237 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-krb5-keytab | ||
| 16238 | Keytab Kerberos à utiliser pour le mécanisme GSSAPI. Utilisera la valeur | ||
| 16239 | par défaut du système (typiquement @file{/etc/krb5.keytab}) s'il n'est pas | ||
| 16240 | spécifié. Vous pourriez avoir besoin de faire en sorte que le service | ||
| 16241 | d'authentification tourne en root pour pouvoir lire ce fichier. La valeur | ||
| 16242 | par défaut est @samp{""}. | ||
| 16243 | @end deftypevr | ||
| 16244 | |||
| 16245 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-use-winbind? | ||
| 16246 | Effectue l'authentification NTLM et GSS-SPNEGO avec le démon winbind de | ||
| 16247 | Samba et l'utilitaire @samp{ntlm-auth}. | ||
| 16248 | <doc/wiki/Authentication/Mechanisms/Winbind.txt>. La valeur par défaut est | ||
| 16249 | @samp{#f}. | ||
| 16250 | @end deftypevr | ||
| 16251 | |||
| 16252 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name auth-winbind-helper-path | ||
| 16253 | Chemin du binaire @samp{ntlm-auth} de samba. La valeur par défaut est | ||
| 16254 | @samp{"/usr/bin/ntlm_auth"}. | ||
| 16255 | @end deftypevr | ||
| 16256 | |||
| 16257 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-failure-delay | ||
| 16258 | Durée d'attente avant de répondre à des authentifications échouées. La | ||
| 16259 | valeur par défaut est @samp{"2 secs"}. | ||
| 16260 | @end deftypevr | ||
| 16261 | |||
| 16262 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-ssl-require-client-cert? | ||
| 16263 | Requiert un certification client SSL valide ou l'authentification échoue. | ||
| 16264 | La valeur par défaut est @samp{#f}. | ||
| 16265 | @end deftypevr | ||
| 16266 | |||
| 16267 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-ssl-username-from-cert? | ||
| 16268 | Prend le nom d'utilisateur du certificat SSL client, avec | ||
| 16269 | @code{X509_NAME_get_text_by_NID()} qui renvoie le CommonName du DN du | ||
| 16270 | sujet. La valeur par défaut est @samp{#f}. | ||
| 16271 | @end deftypevr | ||
| 16272 | |||
| 16273 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list auth-mechanisms | ||
| 16274 | Liste des mécanismes d'authentification souhaités. Les mécanismes supportés | ||
| 16275 | sont : @samp{plain}, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, | ||
| 16276 | @samp{ntlm}, @samp{rpa}, @samp{apop}, @samp{anonymous}, @samp{gssapi}, | ||
| 16277 | @samp{otp}, @samp{skey} et @samp{gss-spnego}. Remarquez : Voir aussi le | ||
| 16278 | paramètre @samp{disable-plaintext-auth}. | ||
| 16279 | @end deftypevr | ||
| 16280 | |||
| 16281 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list director-servers | ||
| 16282 | Liste des IP ou des noms d'hôtes des serveurs directeurs, dont soi-même. | ||
| 16283 | Les ports peuvent être spécifiés avec ip:port. Le port par défaut est le | ||
| 16284 | même que le @samp{inet-listener} du service directeur. La valeur par défaut | ||
| 16285 | est @samp{()}. | ||
| 16286 | @end deftypevr | ||
| 16287 | |||
| 16288 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list director-mail-servers | ||
| 16289 | Liste des IP ou des noms d'hôtes de tous les serveurs de courriel de la | ||
| 16290 | grappe. Les intervalles sont aussi permis, comme 10.0.0.10-10.0.0.30. La | ||
| 16291 | valeur par défaut est @samp{()}. | ||
| 16292 | @end deftypevr | ||
| 16293 | |||
| 16294 | @deftypevr {paramètre de @code{dovecot-configuration}} string director-user-expire | ||
| 16295 | Combien de temps avant de rediriger les utilisateurs à un serveur spécifique | ||
| 16296 | après qu'il n'y a plus de connexion. La valeur par défaut est @samp{"15 | ||
| 16297 | min"}. | ||
| 16298 | @end deftypevr | ||
| 16299 | |||
| 16300 | @deftypevr {paramètre de @code{dovecot-configuration}} string director-username-hash | ||
| 16301 | La manière de traduire le nom d'utilisateur avant de le hasher. Les valeurs | ||
| 16302 | utiles comprennent %Ln si l'utilisateur peut se connecter avec ou sans | ||
| 16303 | @@domain, %Ld si les boîtes aux lettres sont partagées dans le domaine. La | ||
| 16304 | valeur par défaut est @samp{"%Lu"}. | ||
| 16305 | @end deftypevr | ||
| 16306 | |||
| 16307 | @deftypevr {paramètre de @code{dovecot-configuration}} string log-path | ||
| 16308 | Fichier de journal à utiliser pour les messages d'erreur. @samp{syslog} | ||
| 16309 | journalise vers syslog, @samp{/dev/stderr} vers la sortie d'erreur. La | ||
| 16310 | valeur par défaut est @samp{"syslog"}. | ||
| 16311 | @end deftypevr | ||
| 16312 | |||
| 16313 | @deftypevr {paramètre de @code{dovecot-configuration}} string info-log-path | ||
| 16314 | Fichier de journal à utiliser pour les messages d'information. La valeur | ||
| 16315 | par défaut est @samp{log-path}. La valeur par défaut est @samp{""}. | ||
| 16316 | @end deftypevr | ||
| 16317 | |||
| 16318 | @deftypevr {paramètre de @code{dovecot-configuration}} string debug-log-path | ||
| 16319 | Fichier de journal à utiliser pour les messages de débogage. La valeur par | ||
| 16320 | défaut est @samp{info-log-path}. La valeur par défaut est @samp{""}. | ||
| 16321 | @end deftypevr | ||
| 16322 | |||
| 16323 | @deftypevr {paramètre de @code{dovecot-configuration}} string syslog-facility | ||
| 16324 | Dispositif syslog à utiliser si vous journalisez avec syslog. Normalement | ||
| 16325 | si vous ne voulez pas utiliser @samp{mail}, vous voudrez utiliser | ||
| 16326 | local0..local7. D'autres dispositifs standard sont supportés. La valeur | ||
| 16327 | par défaut est @samp{"mail"}. | ||
| 16328 | @end deftypevr | ||
| 16329 | |||
| 16330 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-verbose? | ||
| 16331 | Indique s'il faut enregistrer les tentatives de connexion échouées et la | ||
| 16332 | raison de leur échec. La valeur par défaut est @samp{#f}. | ||
| 16333 | @end deftypevr | ||
| 16334 | |||
| 16335 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-verbose-passwords? | ||
| 16336 | Dans le cas où le mot de passe n'était pas correct, indique s'il faut | ||
| 16337 | enregistrer le mauvais mot de passe. Les valeurs valides sont « no », « | ||
| 16338 | plain » et « sha1 ». Il peut être utile d'indiquer « sha1 » pour | ||
| 16339 | discriminer des attaques par force brute d'utilisateurs qui réessayent | ||
| 16340 | encore et encore le même mot de passe. Vous pouvez aussi tronquer la valeur | ||
| 16341 | à n caractères en ajoutant « :n » (p.@: ex.@: « sha1:6 »). La valeur par | ||
| 16342 | défaut est @samp{#f}. | ||
| 16343 | @end deftypevr | ||
| 16344 | |||
| 16345 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-debug? | ||
| 16346 | Journaux encore plus verbeux pour le débogage. Cela montre par exemple les | ||
| 16347 | requêtes SQL effectuées. La valeur par défaut est @samp{#f}. | ||
| 16348 | @end deftypevr | ||
| 16349 | |||
| 16350 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-debug-passwords? | ||
| 16351 | Dans le cas où le mot de passe était incorrect, indique s'il faut | ||
| 16352 | enregistrer les mots de passe et les schémas utilisés pour que le problème | ||
| 16353 | puisse être débogué. Activer cette option active aussi @samp{auth-debug}. | ||
| 16354 | La valeur par défaut est @samp{#f}. | ||
| 16355 | @end deftypevr | ||
| 16356 | |||
| 16357 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-debug? | ||
| 16358 | Indique s'il faut activer le débogage du traitement des courriels. Cela | ||
| 16359 | peut vous aider à comprendre pourquoi Dovecot ne trouve pas vos courriels. | ||
| 16360 | La valeur par défaut est @samp{#f}. | ||
| 16361 | @end deftypevr | ||
| 16362 | |||
| 16363 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean verbose-ssl? | ||
| 16364 | Indique s'il faut montrer les erreurs au niveau SSL. La valeur par défaut | ||
| 16365 | est @samp{#f}. | ||
| 16366 | @end deftypevr | ||
| 16367 | |||
| 16368 | @deftypevr {paramètre de @code{dovecot-configuration}} string log-timestamp | ||
| 16369 | Préfixe à utiliser devant chaque ligne écrite dans le fichier journal. Les | ||
| 16370 | codes % sont au format strftime(3). La valeur par défaut est @samp{"\"%b %d | ||
| 16371 | %H:%M:%S \""}. | ||
| 16372 | @end deftypevr | ||
| 16373 | |||
| 16374 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list login-log-format-elements | ||
| 16375 | Liste des éléments qu'il faut enregistrer. Les éléments qui ont une | ||
| 16376 | variable non vide sont agrégés pour former une chaîne de mots séparés par | ||
| 16377 | des virgules. | ||
| 16378 | @end deftypevr | ||
| 16379 | |||
| 16380 | @deftypevr {paramètre de @code{dovecot-configuration}} string login-log-format | ||
| 16381 | Format du journal de connexion. %s contient la chaîne | ||
| 16382 | @samp{login-log-format-elements}, %$ contient la donnée à enregistrer. La | ||
| 16383 | valeur par défaut est @samp{"%$: %s"}. | ||
| 16384 | @end deftypevr | ||
| 16385 | |||
| 16386 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-log-prefix | ||
| 16387 | Préfixe à utiliser devant chaque ligne du fichier de journal pour les | ||
| 16388 | processus traitant les courriels. Voir doc/wiki/Variables.txt pour trouver | ||
| 16389 | la liste des variables que vous pouvez utiliser. La valeur par défaut est | ||
| 16390 | @samp{"\"%s(%u)<%@{pid@}><%@{session@}>: \""}. | ||
| 16391 | @end deftypevr | ||
| 16392 | |||
| 16393 | @deftypevr {paramètre de @code{dovecot-configuration}} string deliver-log-format | ||
| 16394 | Format à utiliser pour enregistrer les livraisons de courriels. Vous pouvez | ||
| 16395 | utiliser ces variables : | ||
| 16396 | @table @code | ||
| 16397 | @item %$ | ||
| 16398 | Message de statut de la livraison (p.@: ex.@: @samp{saved to INBOX}) | ||
| 16399 | @item %m | ||
| 16400 | Message-ID | ||
| 16401 | @item %s | ||
| 16402 | Objet | ||
| 16403 | @item %f | ||
| 16404 | Adresse « de » | ||
| 16405 | @item %p | ||
| 16406 | Taille physique | ||
| 16407 | @item %w | ||
| 16408 | Taille virtuelle. | ||
| 16409 | @end table | ||
| 16410 | La valeur par défaut est @samp{"msgid=%m: %$"}. | ||
| 16411 | @end deftypevr | ||
| 16412 | |||
| 16413 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-location | ||
| 16414 | Emplacement des boîtes à lettre des utilisateurs. La valeur par défaut est | ||
| 16415 | vide, ce qui signifie que Dovecot essaiera de trouver les boîte aux lettres | ||
| 16416 | automatiquement. Cela ne fonctionnera pas si l'utilisateur n'a aucun | ||
| 16417 | courriel, donc il vaut mieux indiquer explicitement le bon emplacement à | ||
| 16418 | Dovecot. | ||
| 16419 | |||
| 16420 | Si vous utilisez mbox, il ne suffit pas de donner le chemin vers le fichier | ||
| 16421 | INBOX (p.@: ex.@: /var/mail/%u). Vous devrez aussi dire à Dovecot où les | ||
| 16422 | autres boîtes aux lettres se trouvent. Cela s'appelle le « répertoire | ||
| 16423 | racine des courriels » et il doit être le premier chemin donné à l'option | ||
| 16424 | @samp{mail-location}. | ||
| 16425 | |||
| 16426 | Il y a quelques variables spéciales que vous pouvez utiliser : | ||
| 16427 | |||
| 16428 | @table @samp | ||
| 16429 | @item %u | ||
| 16430 | nom d'utilisateur | ||
| 16431 | @item %n | ||
| 16432 | la partie « utilisateur » dans « utilisateur@@domaine », comme %u s'il n'y a | ||
| 16433 | pas de domaine | ||
| 16434 | @item %d | ||
| 16435 | la partie « domaine » dans « utilisateur@@domaine », vide s'il n'y a pas de | ||
| 16436 | domaine | ||
| 16437 | @item %h | ||
| 16438 | répertoire personnel | ||
| 16439 | @end table | ||
| 16440 | |||
| 16441 | Voir doc/wiki/Variables.txt pour la liste complète. Quelques exemple : | ||
| 16442 | @table @samp | ||
| 16443 | @item maildir:~/Maildir | ||
| 16444 | @item mbox:~/mail:INBOX=/var/mail/%u | ||
| 16445 | @item mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/% | ||
| 16446 | @end table | ||
| 16447 | La valeur par défaut est @samp{""}. | ||
| 16448 | @end deftypevr | ||
| 16449 | |||
| 16450 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-uid | ||
| 16451 | Utilisateur et groupe système utilisé pour accéder aux courriels. Si vous | ||
| 16452 | utilisez multiple, userdb peut remplacer ces valeurs en renvoyant les champs | ||
| 16453 | uid et gid. Vous pouvez utiliser soit des nombres, soit des noms. | ||
| 16454 | <doc/wiki/UserIds.txt>. La valeur par défaut est @samp{""}. | ||
| 16455 | @end deftypevr | ||
| 16456 | |||
| 16457 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-gid | ||
| 16458 | |||
| 16459 | La valeur par défaut est @samp{""}. | ||
| 16460 | @end deftypevr | ||
| 16461 | |||
| 16462 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-privileged-group | ||
| 16463 | Groupe à activer temporairement pour les opérations privilégiées. | ||
| 16464 | Actuellement cela est utilisé uniquement avec INBOX lors de sa création | ||
| 16465 | initiale et quand le verrouillage échoie. Typiquement, vous pouvez utiliser | ||
| 16466 | « mail » pour donner accès à /var/mail. La valeur par défaut est @samp{""}. | ||
| 16467 | @end deftypevr | ||
| 16468 | |||
| 16469 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-access-groups | ||
| 16470 | Donne l'accès à ces groupes supplémentaires aux processus de courriel. Ils | ||
| 16471 | sont typiquement utilisés pour mettre en place l'accès à des boîtes aux | ||
| 16472 | lettres partagées. Remarquez qu'il peut être dangereux d'utiliser cette | ||
| 16473 | option si l'utilisateur peut créer des liens symboliques (p.@: ex.@: si le | ||
| 16474 | groupe « mail » est utilisé ici, « ln -s /var/mail ~/mail/var » peut | ||
| 16475 | permettre à un utilisateur de supprimer les boîtes aux lettres des autres, | ||
| 16476 | ou « ln -s /secret/shared/box ~/mail/mybox » lui permettrait de la lire). | ||
| 16477 | La valeur par défaut est @samp{""}. | ||
| 16478 | @end deftypevr | ||
| 16479 | |||
| 16480 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-full-filesystem-access? | ||
| 16481 | Permet l'accès complet au système de fichiers pour les clients. Il n'y a | ||
| 16482 | pas de vérification d'accès autres que ce que le système d'exploitation fait | ||
| 16483 | avec les UID/GID. Cela fonctionne aussi bien avec maildir qu'avec mbox, ce | ||
| 16484 | qui vous permet de préfixer les noms des boîtes aux lettres avec p.@: ex.@: | ||
| 16485 | /chemin/ ou ~utilisateur/. La valeur par défaut est @samp{#f}. | ||
| 16486 | @end deftypevr | ||
| 16487 | |||
| 16488 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mmap-disable? | ||
| 16489 | Ne pas du tout utiliser mmap(). Cela est requis si vous stockez les index | ||
| 16490 | dans des systèmes de fichiers partagés (NFS ou clusterfs). La valeur par | ||
| 16491 | défaut est @samp{#f}. | ||
| 16492 | @end deftypevr | ||
| 16493 | |||
| 16494 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean dotlock-use-excl? | ||
| 16495 | S'appuyer sur @samp{O_EXCL} lors de la création de fichiers de | ||
| 16496 | verrouillage. NFS supporte @samp{O_EXCL} depuis la version 3, donc cette | ||
| 16497 | option est sûre de nos jours. La valeur par défaut est @samp{#t}. | ||
| 16498 | @end deftypevr | ||
| 16499 | |||
| 16500 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-fsync | ||
| 16501 | Quand utiliser les appels à fsync() ou fdatasync() : | ||
| 16502 | @table @code | ||
| 16503 | @item optimized | ||
| 16504 | Lorsque cela est nécessaire pour éviter de perdre des données importantes | ||
| 16505 | @item always | ||
| 16506 | Utile lorsque par exemple les écritures NFS sont retardées | ||
| 16507 | @item never | ||
| 16508 | Ne l'utilisez pas (ça a de meilleures performances, mais les crashs font | ||
| 16509 | perdre toutes les données). | ||
| 16510 | @end table | ||
| 16511 | La valeur par défaut est @samp{"optimized"}. | ||
| 16512 | @end deftypevr | ||
| 16513 | |||
| 16514 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-nfs-storage? | ||
| 16515 | Le stockage des courriels se fait sur NFS. Utilisez cette option pour que | ||
| 16516 | Dovecot vide les caches NFS lorsque c'est nécessaire. Si vous utilisez | ||
| 16517 | seulement un simple serveur de courriel, ce n'est pas nécessaire. La valeur | ||
| 16518 | par défaut est @samp{#f}. | ||
| 16519 | @end deftypevr | ||
| 16520 | |||
| 16521 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-nfs-index? | ||
| 16522 | Les fichiers d'index de courriels sont sur un système de fichiers NFS. Pour | ||
| 16523 | utiliser cette option, vous aurez besoin de @samp{mmap-disable? #t} et | ||
| 16524 | @samp{fsync-disable? #f}. La valeur par défaut est @samp{#f}. | ||
| 16525 | @end deftypevr | ||
| 16526 | |||
| 16527 | @deftypevr {paramètre de @code{dovecot-configuration}} string lock-method | ||
| 16528 | Méthode de verrouillage des fichiers d'index. Les alternatives sont fcntl, | ||
| 16529 | flock et dotlock. Le verrouillage-point (dotlocking) utilise des astuces | ||
| 16530 | qui peuvent créer plus d'utilisation du disque que les autres méthodes de | ||
| 16531 | verrouillage. Pour les utilisateurs de NFS, flock ne marche pas, et | ||
| 16532 | rappelez-vous de modifier @samp{mmap-disable}. La valeur par défaut est | ||
| 16533 | @samp{"fcntl"}. | ||
| 16534 | @end deftypevr | ||
| 16535 | |||
| 16536 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name mail-temp-dir | ||
| 16537 | Le répertoire dans lequel LDA/LMTP stockent temporairement les courriels de | ||
| 16538 | plus de 128 Ko. La valeur par défaut est @samp{"/tmp"}. | ||
| 16539 | @end deftypevr | ||
| 16540 | |||
| 16541 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer first-valid-uid | ||
| 16542 | L'intervalle d'UID valides pour les utilisateurs. Cette option est surtout | ||
| 16543 | utile pour s'assurer que les utilisateurs ne peuvent pas s'authentifier en | ||
| 16544 | tant que démon ou qu'un autre utilisateur système. Remarquez que la | ||
| 16545 | connexion en root est interdite en dur dans le binaire de dovecot et qu'on | ||
| 16546 | ne peut pas l'autoriser même si @samp{first-valid-uid} vaut 0. La valeur | ||
| 16547 | par défaut est @samp{500}. | ||
| 16548 | @end deftypevr | ||
| 16549 | |||
| 16550 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer last-valid-uid | ||
| 16551 | |||
| 16552 | La valeur par défaut est @samp{0}. | ||
| 16553 | @end deftypevr | ||
| 16554 | |||
| 16555 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer first-valid-gid | ||
| 16556 | Li'ntervalle de GID valides pour les utilisateurs. Les utilisateurs qui ont | ||
| 16557 | un GID non-valide comme numéro de groupe primaire ne peuvent pas se | ||
| 16558 | connecter. Si l'utilisateur appartient à un groupe avec un GID non valide, | ||
| 16559 | ce groupe n'est pas utilisable. La valeur par défaut est @samp{1}. | ||
| 16560 | @end deftypevr | ||
| 16561 | |||
| 16562 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer last-valid-gid | ||
| 16563 | |||
| 16564 | La valeur par défaut est @samp{0}. | ||
| 16565 | @end deftypevr | ||
| 16566 | |||
| 16567 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mail-max-keyword-length | ||
| 16568 | Longueur maximale autorisée pour les mots-clefs. Elle n'est utilisée que | ||
| 16569 | lors de la création de nouveaux mots-clefs. La valeur par défaut est | ||
| 16570 | @samp{50}. | ||
| 16571 | @end deftypevr | ||
| 16572 | |||
| 16573 | @deftypevr {paramètre de @code{dovecot-configuration}} colon-separated-file-name-list valid-chroot-dirs | ||
| 16574 | Liste des répertoires sous lesquels le chroot est permis pour les processus | ||
| 16575 | de traitement des courriels (c.-à-d.@: /var/mail permettra aussi de se | ||
| 16576 | chrooter dans /var/mail/foo/bar). Ce paramètre n'affecte pas | ||
| 16577 | @samp{login-chroot} @samp{mail-chroot} ou les paramètres de chroot de | ||
| 16578 | l'authentification. Si ce paramètre est vide, « /./ » dans les répertoires | ||
| 16579 | personnels sont ignorés. ATTENTION : n'ajoutez jamais de répertoires ici | ||
| 16580 | que les utilisateurs locaux peuvent modifier, puisque ça pourrait permettre | ||
| 16581 | d'escalader les privilèges. Normalement vous ne devriez le faire que si les | ||
| 16582 | utilisateurs n'ont pas d'accès shell. <doc/wiki/Chrooting.txt>. La valeur | ||
| 16583 | par défaut est @samp{()}. | ||
| 16584 | @end deftypevr | ||
| 16585 | |||
| 16586 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-chroot | ||
| 16587 | Répertoire chroot par défaut pour les processus de traitement des | ||
| 16588 | courriels. Cela peut être modifié pour des utilisateurs particuliers dans | ||
| 16589 | la base de donnée en donnant /./ dans le répertoire personnel (p.@: ex.@: | ||
| 16590 | /home/./utilisateur permet de se chrooter dans /home). Remarquez qu'il n'y | ||
| 16591 | a d'habitude pas besoin de se chrooter. Dovecot ne permet pas aux | ||
| 16592 | utilisateurs d'accéder aux fichiers en dehors de leur répertoire de | ||
| 16593 | courriels de toute façon. Si vos répertoires personnels sont préfixés par | ||
| 16594 | le répertoire de chroot, ajoutez « /. » à @samp{mail-chroot}. | ||
| 16595 | <doc/wiki/Chrooting.txt>. La valeur par défaut est @samp{""}. | ||
| 16596 | @end deftypevr | ||
| 16597 | |||
| 16598 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name auth-socket-path | ||
| 16599 | Chemin de socket UNIX vers le serveur d'authentification maître pour trouver | ||
| 16600 | les utilisateurs. C'est utilisé par imap (pour les utilisateurs partagés) | ||
| 16601 | et lda. La valeur par défaut est @samp{"/var/run/dovecot/auth-userdb"}. | ||
| 16602 | @end deftypevr | ||
| 16603 | |||
| 16604 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name mail-plugin-dir | ||
| 16605 | Répertoire où trouver les greffons. La valeur par défaut est | ||
| 16606 | @samp{"/usr/lib/dovecot"}. | ||
| 16607 | @end deftypevr | ||
| 16608 | |||
| 16609 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list mail-plugins | ||
| 16610 | Liste des greffons à charger pour tous les services. Les greffons | ||
| 16611 | spécifiques à IMAP, LDA, etc sont ajoutés à cette liste dans leur propre | ||
| 16612 | fichiers .conf. La valeur par défaut est @samp{()}. | ||
| 16613 | @end deftypevr | ||
| 16614 | |||
| 16615 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mail-cache-min-mail-count | ||
| 16616 | Le nombre minimal de courriels dans une boîte aux lettres avant de mettre à | ||
| 16617 | jour le fichier de cache. Cela permet d'optimiser le comportement de | ||
| 16618 | Dovecot pour qu'il fasse moins d'écriture disque contre plus de lecture | ||
| 16619 | disque. La valeur par défaut est @samp{0}. | ||
| 16620 | @end deftypevr | ||
| 16621 | |||
| 16622 | @deftypevr {paramètre de @code{dovecot-configuration}} string mailbox-idle-check-interval | ||
| 16623 | Lorsque la commande IDLE est lancée, la boîte aux lettres est vérifiée de | ||
| 16624 | temps en temps pour voir s'il y a de nouveaux messages ou d'autres | ||
| 16625 | changements. Ce paramètre défini le temps d'attente minimum entre deux | ||
| 16626 | vérifications. Dovecot peut aussi utilise dnotify, inotify et kqueue pour | ||
| 16627 | trouver immédiatement les changements. La valeur par défaut est @samp{"30 | ||
| 16628 | secs"}. | ||
| 16629 | @end deftypevr | ||
| 16630 | |||
| 16631 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-save-crlf? | ||
| 16632 | Sauvegarder les courriels avec CR+LF plutôt que seulement LF. Cela permet | ||
| 16633 | de consommer moins de CPU en envoyant ces courriels, surtout avec l'appel | ||
| 16634 | système sendfile() de Linux et FreeBSD. Mais cela crée un peu plus | ||
| 16635 | d'utilisation du disque, ce qui peut aussi le ralentir. Remarquez aussi que | ||
| 16636 | si d'autres logiciels lisent les mbox/maildirs, ils peuvent se tromper dans | ||
| 16637 | leur traitement de ces CR supplémentaires et causer des problèmes. La | ||
| 16638 | valeur par défaut est @samp{#f}. | ||
| 16639 | @end deftypevr | ||
| 16640 | |||
| 16641 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean maildir-stat-dirs? | ||
| 16642 | Par défaut la commande LIST renvoie toutes les entrées du maildir qui | ||
| 16643 | commencent par un point. Activer cette option permet à Dovecot de renvoyer | ||
| 16644 | uniquement les entrées qui sont des répertoires. Cela se fait avec stat() | ||
| 16645 | sur chaque entrée, ce qui cause plus d'utilisation du disque. For systems | ||
| 16646 | setting struct @samp{dirent->d_type} this check is free and it's done always | ||
| 16647 | regardless of this setting). La valeur par défaut est @samp{#f}. | ||
| 16648 | @end deftypevr | ||
| 16649 | |||
| 16650 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean maildir-copy-with-hardlinks? | ||
| 16651 | Lors de la copie d'un message, le faire avec des liens en dur si possible. | ||
| 16652 | Cela améliore un peu la performance et n'a que peu de chance d'avoir des | ||
| 16653 | effets secondaires. | ||
| 16654 | @end deftypevr | ||
| 16655 | |||
| 16656 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean maildir-very-dirty-syncs? | ||
| 16657 | Suppose que Dovecot est le seul MUA qui accède à Maildir : scanne le | ||
| 16658 | répertoire cur/ seulement lorsque son mtime change de manière inattendue ou | ||
| 16659 | lorsqu'il ne peut pas trouver le courriel autrement. La valeur par défaut | ||
| 16660 | est @samp{#f}. | ||
| 16661 | @end deftypevr | ||
| 16662 | |||
| 16663 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list mbox-read-locks | ||
| 16664 | La méthode de verrouillage à utiliser pour verrouiller le boîtes aux lettres | ||
| 16665 | mbox. Il y en a quatre : | ||
| 16666 | |||
| 16667 | @table @code | ||
| 16668 | @item dotlock | ||
| 16669 | Crée un fichier <mailbox>.lock. C'est la solution la plus ancienne et la | ||
| 16670 | plus sûr pour NFS. Si vous voulez utiliser /var/mail/, les utilisateurs | ||
| 16671 | auront besoin de l'accès en écriture à ce répertoire. | ||
| 16672 | @item dotlock-try | ||
| 16673 | Comme pour dotlock, mais si elle échoue à cause d'un problème de permission | ||
| 16674 | ou parce qu'il n'y a pas assez d'espace disque, l'ignore. | ||
| 16675 | @item fcntl | ||
| 16676 | Utilisez cette méthode si possible. Elle fonctionne aussi avec NFS si vous | ||
| 16677 | utilisez lockd. | ||
| 16678 | @item flock | ||
| 16679 | Peut ne pas exister sur tous les systèmes. Ne fonctionne pas avec NFS. | ||
| 16680 | @item lockf | ||
| 16681 | Peut ne pas exister sur tous les systèmes. Ne fonctionne pas avec NFS. | ||
| 16682 | @end table | ||
| 16683 | |||
| 16684 | Vous pouvez utiliser plusieurs méthodes de verrouillage ; dans ce cas | ||
| 16685 | l'ordre dans lequel elles sont déclarées est important pour éviter des | ||
| 16686 | interblocages si d'autres MTA/MUA utilisent aussi plusieurs méthodes. | ||
| 16687 | Certains systèmes d'exploitation ne permettent pas d'utiliser certaines | ||
| 16688 | méthodes en même temps. | ||
| 16689 | @end deftypevr | ||
| 16690 | |||
| 16691 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list mbox-write-locks | ||
| 16692 | |||
| 16693 | @end deftypevr | ||
| 16694 | |||
| 16695 | @deftypevr {paramètre de @code{dovecot-configuration}} string mbox-lock-timeout | ||
| 16696 | Temps d'attente maximal pour un verrou (tous les verrous) avant | ||
| 16697 | d'abandonner. La valeur par défaut est @samp{"5 mins"}. | ||
| 16698 | @end deftypevr | ||
| 16699 | |||
| 16700 | @deftypevr {paramètre de @code{dovecot-configuration}} string mbox-dotlock-change-timeout | ||
| 16701 | Si le fichier dotlock existe mais que la boîte aux lettres n'est pas | ||
| 16702 | modifiée, remplacer le fichier de verrouillage après ce temps d'attente. La | ||
| 16703 | valeur par défaut est @samp{"2 mins"}. | ||
| 16704 | @end deftypevr | ||
| 16705 | |||
| 16706 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mbox-dirty-syncs? | ||
| 16707 | Lorsqu'un mbox change ne manière inattendue, il faut le lire en entier pour | ||
| 16708 | savoir ce qui a changé. Si le mbox est assez grand cela peut prendre | ||
| 16709 | beaucoup de temps. Comme le changement est habituellement un simple | ||
| 16710 | courriel supplémentaire, il serait plus rapide de lire le nouveaux | ||
| 16711 | courriels. Si ce paramètre est activé, Dovecot fait cela mais revient | ||
| 16712 | toujours à relire le fichier mbox complet si le fichier n'est pas comme | ||
| 16713 | attendu. Le seul réel inconvénient à ce paramètre est que certains MUA | ||
| 16714 | changent les drapeaux des messages, et dans ce cas Dovecot ne s'en rend pas | ||
| 16715 | immédiatement compte. Remarquez qu'une synchronisation complète est | ||
| 16716 | effectuée avec les commandes SELECT, EXAMINE, EXPUNGE et CHECK. La valeur | ||
| 16717 | par défaut est @samp{#t}. | ||
| 16718 | @end deftypevr | ||
| 16719 | |||
| 16720 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mbox-very-dirty-syncs? | ||
| 16721 | Comme @samp{mbox-dirty-syncs}, mais ne synchronise pas complètement même | ||
| 16722 | avec les commandes SELECT, EXAMINE, EXPUNGE ou CHECK. Si l'option n'est pas | ||
| 16723 | activée, @samp{mbox-dirty-syncs} est ignorée. La valeur par défaut est | ||
| 16724 | @samp{#f}. | ||
| 16725 | @end deftypevr | ||
| 16726 | |||
| 16727 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mbox-lazy-writes? | ||
| 16728 | Attendre avant d'écrire les en-têtes mbox jusqu'à la prochaine | ||
| 16729 | synchronisation des écritures (les commandes EXPUNGE et CHECK et quand on | ||
| 16730 | ferme la boîte aux lettres). C'est surtout utile pour POP3 où les clients | ||
| 16731 | suppriment souvent tous les courriels. L'inconvénient c'est que vos | ||
| 16732 | changements ne sont pas immédiatement visibles pour les autres MUA. La | ||
| 16733 | valeur par défaut est @samp{#t}. | ||
| 16734 | @end deftypevr | ||
| 16735 | |||
| 16736 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mbox-min-index-size | ||
| 16737 | Si la taille du fichier mbox est plus petite que cela (p.@: ex.@: 100k), ne | ||
| 16738 | pas écrire de fichier d'index. Si un fichier d'index existe déjà il est | ||
| 16739 | toujours lu, mais pas mis à jour. La valeur par défaut est @samp{0}. | ||
| 16740 | @end deftypevr | ||
| 16741 | |||
| 16742 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mdbox-rotate-size | ||
| 16743 | Taille du fichier dbox maximale avant rotation. La valeur par défaut est | ||
| 16744 | @samp{10000000}. | ||
| 16745 | @end deftypevr | ||
| 16746 | |||
| 16747 | @deftypevr {paramètre de @code{dovecot-configuration}} string mdbox-rotate-interval | ||
| 16748 | Âge maximum du fichier dbox avant rotation. Typiquement en jours. Les | ||
| 16749 | jours commencent à minuit, donc 1d signifie aujourd'hui, 2d pour hier, etc. | ||
| 16750 | 0 pour désactiver la vérification. La valeur par défaut est @samp{"1d"}. | ||
| 16751 | @end deftypevr | ||
| 16752 | |||
| 16753 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mdbox-preallocate-space? | ||
| 16754 | Lors de la création des fichiers mdbox, préallouer immédiatement leur taille | ||
| 16755 | à @samp{mdbox-rotate-size}. Ce paramètre ne fonctionne actuellement que | ||
| 16756 | dans Linux avec certains systèmes de fichiers (ext4, xfs). La valeur par | ||
| 16757 | défaut est @samp{#f}. | ||
| 16758 | @end deftypevr | ||
| 16759 | |||
| 16760 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-attachment-dir | ||
| 16761 | Les formats sdbox et mdbox supportent la sauvegarde des pièces-jointes dans | ||
| 16762 | des fichiers externes, ce qui permet de les stocker une seule fois. Les | ||
| 16763 | autres moteurs ne le supportent pas pour le moment. | ||
| 16764 | |||
| 16765 | ATTENTION : Cette fonctionnalité n'a pas été beaucoup testée. Utilisez-la à | ||
| 16766 | vos risques et périls. | ||
| 16767 | |||
| 16768 | Racine du répertoire où stocker les pièces-jointes. Désactivé si vide. La | ||
| 16769 | valeur par défaut est @samp{""}. | ||
| 16770 | @end deftypevr | ||
| 16771 | |||
| 16772 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mail-attachment-min-size | ||
| 16773 | Les pièces-jointes plus petites que cela ne sont pas enregistrées à part. | ||
| 16774 | Il est aussi possible d'écrire un greffon pour désactiver l'enregistrement | ||
| 16775 | externe de certaines pièces-jointes spécifiques. La valeur par défaut est | ||
| 16776 | @samp{128000}. | ||
| 16777 | @end deftypevr | ||
| 16778 | |||
| 16779 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-attachment-fs | ||
| 16780 | Moteur du système de fichier à utiliser pour sauvegarder les pièces-jointes | ||
| 16781 | : | ||
| 16782 | @table @code | ||
| 16783 | @item posix | ||
| 16784 | Pas de SiS (single instance storage) par Dovecot (mais cela peut aider la | ||
| 16785 | déduplication du système de fichier) | ||
| 16786 | @item sis posix | ||
| 16787 | SiS avec comparaison bit-à-bit immédiate pendant la sauvegarde | ||
| 16788 | @item sis-queue posix | ||
| 16789 | SiS avec déduplication et comparaison différées. | ||
| 16790 | @end table | ||
| 16791 | La valeur par défaut est @samp{"sis posix"}. | ||
| 16792 | @end deftypevr | ||
| 16793 | |||
| 16794 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-attachment-hash | ||
| 16795 | Format de hash à utiliser dans les noms de fichiers des pièces-jointes. | ||
| 16796 | Vous pouvez ajouter n'importe quel texte ou variable : @code{%@{md4@}}, | ||
| 16797 | @code{%@{md5@}}, @code{%@{sha1@}}, @code{%@{sha256@}}, @code{%@{sha512@}}, | ||
| 16798 | @code{%@{size@}}. Les variables peuvent être tronquées, p.@: ex.@: | ||
| 16799 | @code{%@{sha256:80@}} renvoie seulement les 80 premiers bits. La valeur par | ||
| 16800 | défaut est @samp{"%@{sha1@}"}. | ||
| 16801 | @end deftypevr | ||
| 16802 | |||
| 16803 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer default-process-limit | ||
| 16804 | |||
| 16805 | La valeur par défaut est @samp{100}. | ||
| 16806 | @end deftypevr | ||
| 16807 | |||
| 16808 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer default-client-limit | ||
| 16809 | |||
| 16810 | La valeur par défaut est @samp{1000}. | ||
| 16811 | @end deftypevr | ||
| 16812 | |||
| 16813 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer default-vsz-limit | ||
| 16814 | Limite VSZ (taille mémoire virtuelle) par défaut pour les processus de | ||
| 16815 | service. C'est surtout pour attraper et tuer les processus qui font fuiter | ||
| 16816 | la mémoire avant qu'ils ne l'utilisent en entier. La valeur par défaut est | ||
| 16817 | @samp{256000000}. | ||
| 16818 | @end deftypevr | ||
| 16819 | |||
| 16820 | @deftypevr {paramètre de @code{dovecot-configuration}} string default-login-user | ||
| 16821 | Utilisateur de connexion utilisé en interne par les processus de connexion. | ||
| 16822 | C'est l'utilisateur avec la confiance minimale pour Dovecot. Il ne devrait | ||
| 16823 | avoir accès à rien du tout. La valeur par défaut est @samp{"dovenull"}. | ||
| 16824 | @end deftypevr | ||
| 16825 | |||
| 16826 | @deftypevr {paramètre de @code{dovecot-configuration}} string default-internal-user | ||
| 16827 | Utilisateur utilisé en interne par les processus non privilégiés. Il | ||
| 16828 | devrait être différent de l'utilisateur de connexion, pour que les processus | ||
| 16829 | de connexion ne puissent pas perturber les autres processus. La valeur par | ||
| 16830 | défaut est @samp{"dovecot"}. | ||
| 16831 | @end deftypevr | ||
| 16832 | |||
| 16833 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl? | ||
| 16834 | Support SSL/TLS : yes, no, required. <doc/wiki/SSL.txt>. La valeur par | ||
| 16835 | défaut est @samp{"required"}. | ||
| 16836 | @end deftypevr | ||
| 16837 | |||
| 16838 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-cert | ||
| 16839 | Certificat SSL/TLS X.509 encodé en PEM (clef publique). La valeur par | ||
| 16840 | défaut est @samp{"</etc/dovecot/default.pem"}. | ||
| 16841 | @end deftypevr | ||
| 16842 | |||
| 16843 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-key | ||
| 16844 | Clef privée SSL/TLS encodée en PEM. La clef est ouverte avant l'abandon des | ||
| 16845 | privilèges root, donc laissez-la non-lisible pour les utilisateurs. La | ||
| 16846 | valeur par défaut est @samp{"</etc/dovecot/private/default.pem"}. | ||
| 16847 | @end deftypevr | ||
| 16848 | |||
| 16849 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-key-password | ||
| 16850 | Si le fichier de clef est protégé par un mot de passe, donnez-le ici. | ||
| 16851 | Autrement, donnez-le en démarrant dovecot avec le paramètre -p. Comme ce | ||
| 16852 | fichier est souvent lisible pour tout le monde, vous pourriez vouloir placer | ||
| 16853 | ce paramètre dans un autre fichier. La valeur par défaut est @samp{""}. | ||
| 16854 | @end deftypevr | ||
| 16855 | |||
| 16856 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-ca | ||
| 16857 | Certificat de l'autorité de confiance encodé en PEM. Indiquez cette valeur | ||
| 16858 | si vous voulez utiliser @samp{ssl-verify-client-cert? #t}. Le fichier | ||
| 16859 | devrait contenir les certificats de CA suivi par les CRL correspondants | ||
| 16860 | (p.@: ex.@: @samp{ssl-ca </etc/ssl/certs/ca.pem}). La valeur par défaut est | ||
| 16861 | @samp{""}. | ||
| 16862 | @end deftypevr | ||
| 16863 | |||
| 16864 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean ssl-require-crl? | ||
| 16865 | Indique si les certificats clients doivent réussir la vérification du CRL. | ||
| 16866 | La valeur par défaut est @samp{#t}. | ||
| 16867 | @end deftypevr | ||
| 16868 | |||
| 16869 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean ssl-verify-client-cert? | ||
| 16870 | Demande aux clients d'envoyer un certificat. Si vous voulez aussi le | ||
| 16871 | requérir, indiquez @samp{auth-ssl-require-client-cert? #t} dans la section | ||
| 16872 | auth. La valeur par défaut est @samp{#f}. | ||
| 16873 | @end deftypevr | ||
| 16874 | |||
| 16875 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-cert-username-field | ||
| 16876 | Le champ du certificat à utiliser pour le nom d'utilisateur. Les choix | ||
| 16877 | habituels sont commonName et X500UniqueIdentifier. Vous devrez aussi | ||
| 16878 | indiquer @samp{auth-ssl-username-from-cert? #t}. La valeur par défaut est | ||
| 16879 | @samp{"commonName"}. | ||
| 16880 | @end deftypevr | ||
| 16881 | |||
| 16882 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-min-protocol | ||
| 16883 | Version minimale de SSL à accepter. La valeur par défaut est | ||
| 16884 | @samp{"TLSv1"}. | ||
| 16885 | @end deftypevr | ||
| 16886 | |||
| 16887 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-cipher-list | ||
| 16888 | Méthodes de chiffrement à utiliser. La valeur par défaut est | ||
| 16889 | @samp{"ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@@STRENGTH"}. | ||
| 16890 | @end deftypevr | ||
| 16891 | |||
| 16892 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-crypto-device | ||
| 16893 | Moteur cryptographique SSL à utiliser. Pour les valeur valides, lancez « | ||
| 16894 | openssl engine ». La valeur par défaut est @samp{""}. | ||
| 16895 | @end deftypevr | ||
| 16896 | |||
| 16897 | @deftypevr {paramètre de @code{dovecot-configuration}} string postmaster-address | ||
| 16898 | Adresse à utiliser pour envoyer les courriels de rejet. %d correspond au | ||
| 16899 | domaine du destinataire. La valeur par défaut est @samp{"postmaster@@%d"}. | ||
| 16900 | @end deftypevr | ||
| 16901 | |||
| 16902 | @deftypevr {paramètre de @code{dovecot-configuration}} string hostname | ||
| 16903 | Nom d'hôte à utiliser dans diverses parties des courriels envoyés (p.@: | ||
| 16904 | ex.@: dans Message-Id) et dans les réponses LMTP. La valeur par défaut est | ||
| 16905 | le nomdhôte@@domaine réel du système. La valeur par défaut est @samp{""}. | ||
| 16906 | @end deftypevr | ||
| 16907 | |||
| 16908 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean quota-full-tempfail? | ||
| 16909 | Si l'utilisateur dépasse le quota, renvoie un échec temporaire au lieu de | ||
| 16910 | rejeter le courriel. La valeur par défaut est @samp{#f}. | ||
| 16911 | @end deftypevr | ||
| 16912 | |||
| 16913 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name sendmail-path | ||
| 16914 | Binaire à utiliser pour envoyer des courriels. La valeur par défaut est | ||
| 16915 | @samp{"/usr/sbin/sendmail"}. | ||
| 16916 | @end deftypevr | ||
| 16917 | |||
| 16918 | @deftypevr {paramètre de @code{dovecot-configuration}} string submission-host | ||
| 16919 | Si la valeur est non vide, envoyer les courriels à ce serveur SMTP | ||
| 16920 | hôte[:port] au lieu de sendmail. La valeur par défaut est @samp{""}. | ||
| 16921 | @end deftypevr | ||
| 16922 | |||
| 16923 | @deftypevr {paramètre de @code{dovecot-configuration}} string rejection-subject | ||
| 16924 | En-tête d'objet à utiliser pour les courriels de rejet. Vous pouvez | ||
| 16925 | utiliser les mêmes variables que pour @samp{rejection-reason} ci-dessous. | ||
| 16926 | La valeur par défaut est @samp{"Rejected: %s"}. | ||
| 16927 | @end deftypevr | ||
| 16928 | |||
| 16929 | @deftypevr {paramètre de @code{dovecot-configuration}} string rejection-reason | ||
| 16930 | Message d'erreur pour les humains dans les courriels de rejet. Vous pouvez | ||
| 16931 | utiliser ces variables : | ||
| 16932 | |||
| 16933 | @table @code | ||
| 16934 | @item %n | ||
| 16935 | CRLF | ||
| 16936 | @item %r | ||
| 16937 | raison | ||
| 16938 | @item %s | ||
| 16939 | objet du courriel de départ | ||
| 16940 | @item %t | ||
| 16941 | destinataire | ||
| 16942 | @end table | ||
| 16943 | La valeur par défaut est @samp{"Your message to <%t> was automatically | ||
| 16944 | rejected:%n%r"}. | ||
| 16945 | @end deftypevr | ||
| 16946 | |||
| 16947 | @deftypevr {paramètre de @code{dovecot-configuration}} string recipient-delimiter | ||
| 16948 | Caractère de délimitation entre la partie locale et le détail des adresses | ||
| 16949 | de courriel. La valeur par défaut est @samp{"+"}. | ||
| 16950 | @end deftypevr | ||
| 16951 | |||
| 16952 | @deftypevr {paramètre de @code{dovecot-configuration}} string lda-original-recipient-header | ||
| 16953 | En-tête où l'adresse du destinataire d'origine (l'adresse RCPT TO de SMTP) | ||
| 16954 | est récupérée si elle n'est pas disponible ailleurs. Le paramètre -a de | ||
| 16955 | dovecot-lda le remplace. L'en-tête couramment utilisée pour cela est | ||
| 16956 | X-Original-To. La valeur par défaut est @samp{""}. | ||
| 16957 | @end deftypevr | ||
| 16958 | |||
| 16959 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean lda-mailbox-autocreate? | ||
| 16960 | Sauvegarder un courriel dans un fichier qui n'existe pas devrait-il le créer | ||
| 16961 | ? La valeur par défaut est @samp{#f}. | ||
| 16962 | @end deftypevr | ||
| 16963 | |||
| 16964 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean lda-mailbox-autosubscribe? | ||
| 16965 | Devrait-on aussi se souscrire aux boîtes aux lettres nouvellement créées ? | ||
| 16966 | La valeur par défaut est @samp{#f}. | ||
| 16967 | @end deftypevr | ||
| 16968 | |||
| 16969 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer imap-max-line-length | ||
| 16970 | Longueur maximale de la ligne de commande IMAP. Certains clients génèrent | ||
| 16971 | des lignes de commandes très longues avec des boîtes aux lettres énormes, | ||
| 16972 | donc vous pourriez avoir besoin d'augmenter cette limite si vous obtenez les | ||
| 16973 | erreurs « Too long argument » ou « IMAP command line too large ». La valeur | ||
| 16974 | par défaut est @samp{64000}. | ||
| 16975 | @end deftypevr | ||
| 16976 | |||
| 16977 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-logout-format | ||
| 16978 | Format de la chaîne de déconnexion IMAP : | ||
| 16979 | @table @code | ||
| 16980 | @item %i | ||
| 16981 | nombre d'octets lus par le client | ||
| 16982 | @item %o | ||
| 16983 | nombre total d'octets envoyés au client. | ||
| 16984 | @end table | ||
| 16985 | Voir @file{doc/wiki/Variables.txt} pour une liste de toutes les variables | ||
| 16986 | utilisables. La valeur par défaut est @samp{"in=%i out=%o | ||
| 16987 | deleted=%@{deleted@} expunged=%@{expunged@} trashed=%@{trashed@} | ||
| 16988 | hdr_count=%@{fetch_hdr_count@} hdr_bytes=%@{fetch_hdr_bytes@} | ||
| 16989 | body_count=%@{fetch_body_count@} body_bytes=%@{fetch_body_bytes@}"}. | ||
| 16990 | @end deftypevr | ||
| 16991 | |||
| 16992 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-capability | ||
| 16993 | Remplace la réponse CAPABILITY d'IMAP. Si la valeur commence par « + », | ||
| 16994 | ajoute les capacités données en haut des valeur par défaut (p.@: ex.@: +XFOO | ||
| 16995 | XBAR). La valeur par défaut est @samp{""}. | ||
| 16996 | @end deftypevr | ||
| 16997 | |||
| 16998 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-idle-notify-interval | ||
| 16999 | Temps d'attente entre les notifications « OK Still here » lorsque le client | ||
| 17000 | est en IDLE. La valeur par défaut est @samp{"2 mins"}. | ||
| 17001 | @end deftypevr | ||
| 17002 | |||
| 17003 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-id-send | ||
| 17004 | Noms des champs ID et de leur valeur à envoyer aux clients. « * » signifie | ||
| 17005 | la valeur par défaut. Les champs suivants ont actuellement des valeurs par | ||
| 17006 | défaut : name, version, os, os-version, support-url, support-email. La | ||
| 17007 | valeur par défaut est @samp{""}. | ||
| 17008 | @end deftypevr | ||
| 17009 | |||
| 17010 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-id-log | ||
| 17011 | Champs ID envoyés par le client à enregistrer. « * » signifie tout. La | ||
| 17012 | valeur par défaut est @samp{""}. | ||
| 17013 | @end deftypevr | ||
| 17014 | |||
| 17015 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list imap-client-workarounds | ||
| 17016 | Contournements pour divers bogues de certains client : | ||
| 17017 | |||
| 17018 | @table @code | ||
| 17019 | @item delay-newmail | ||
| 17020 | Envoi des notifications de nouveau message EXISTS/RECENT seulement en | ||
| 17021 | réponse aux commandes NOOP et CHECK. Certains clients les ignorent | ||
| 17022 | autrement, par exemple OSX Mail (< v2.1). Outlook Express est encore plus | ||
| 17023 | cassé, sans cela il peut montrer des erreurs de type « Le message n'est plus | ||
| 17024 | sur le serveur ». Remarquez que OE6 est toujours cassé même avec ce | ||
| 17025 | contournement si la synchronisation est à « En-têtes seulement ». | ||
| 17026 | |||
| 17027 | @item tb-extra-mailbox-sep | ||
| 17028 | Thunderbird se mélange les pinceaux avec LAYOUT=fs (mbox et dbox) et ajoute | ||
| 17029 | un suffixe @samp{/} supplémentaire sur les noms des boîtes aux lettres. | ||
| 17030 | Cette option fait que dovecot ignore le @samp{/} supplémentaire au lieu de | ||
| 17031 | le traiter comme un nom de boîte aux lettres invalide. | ||
| 17032 | |||
| 17033 | @item tb-lsub-flags | ||
| 17034 | Montre les drapeaux \Noselect pour les réponses LSUB avec LAYOUT=fs (p.@: | ||
| 17035 | ex.@: mbox). Cela fait que Thunderbird réalise qu'ils ne sont pas | ||
| 17036 | sélectionnables et les montre en grisé, au lieu de montrer un popup « non | ||
| 17037 | sélectionnable » après coup. | ||
| 17038 | @end table | ||
| 17039 | La valeur par défaut est @samp{()}. | ||
| 17040 | @end deftypevr | ||
| 17041 | |||
| 17042 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-urlauth-host | ||
| 17043 | Hôte autorisé dans les URL URLAUTH envoyés par les clients. « * » les | ||
| 17044 | autorise tous. La valeur par défaut est @samp{""}. | ||
| 17045 | @end deftypevr | ||
| 17046 | |||
| 17047 | |||
| 17048 | Ouf ! Tant d'options de configuration. La bonne nouvelle, c'est que Guix a | ||
| 17049 | une interface complète avec le langage de configuration de Dovecot. Cela | ||
| 17050 | permet non seulement de déclarer la configuration de manière agréable, mais | ||
| 17051 | aussi d'offrir des capacités de réflexion : les utilisateurs peuvent écrire | ||
| 17052 | du code pour inspecter et transformer les configuration depuis Scheme. | ||
| 17053 | |||
| 17054 | Cependant, vous pourriez avoir un fichier @code{dovecot.conf} déjà tout | ||
| 17055 | prêt. Dans ce cas, vous pouvez passer un objet | ||
| 17056 | @code{opaque-dovecot-configuration} comme paramètre @code{#:config} à | ||
| 17057 | @code{dovecot-service}. Comme son nom l'indique, une configuration opaque | ||
| 17058 | n'a pas les capacités de réflexions. | ||
| 17059 | |||
| 17060 | Les champs de @code{opaque-dovecot-configuration} disponibles sont : | ||
| 17061 | |||
| 17062 | @deftypevr {paramètre de @code{opaque-dovecot-configuration}} package dovecot | ||
| 17063 | Le paquet dovecot. | ||
| 17064 | @end deftypevr | ||
| 17065 | |||
| 17066 | @deftypevr {paramètre de @code{opaque-dovecot-configuration}} string string | ||
| 17067 | Le contenu de @code{dovecot.conf}, en tant que chaîne de caractères. | ||
| 17068 | @end deftypevr | ||
| 17069 | |||
| 17070 | Par exemple, si votre @code{dovecot.conf} est simplement la chaîne vide, | ||
| 17071 | vous pouvez instancier un service dovecot comme cela : | ||
| 17072 | |||
| 17073 | @example | ||
| 17074 | (dovecot-service #:config | ||
| 17075 | (opaque-dovecot-configuration | ||
| 17076 | (string ""))) | ||
| 17077 | @end example | ||
| 17078 | |||
| 17079 | @subsubheading Service OpenSMTPD | ||
| 17080 | |||
| 17081 | @deffn {Variable Scheme} opensmtpd-service-type | ||
| 17082 | C'est le type de service de @uref{https://www.opensmtpd.org, OpenSMTPD}, | ||
| 17083 | dont la valeur devrait être un objet @code{opensmtpd-configuration} comme | ||
| 17084 | dans cet exemple : | ||
| 17085 | |||
| 17086 | @example | ||
| 17087 | (service opensmtpd-service-type | ||
| 17088 | (opensmtpd-configuration | ||
| 17089 | (config-file (local-file "./my-smtpd.conf")))) | ||
| 17090 | @end example | ||
| 17091 | @end deffn | ||
| 17092 | |||
| 17093 | @deftp {Type de données} opensmtpd-configuration | ||
| 17094 | Type de données représentant la configuration de opensmtpd. | ||
| 17095 | |||
| 17096 | @table @asis | ||
| 17097 | @item @code{package} (par défaut : @var{opensmtpd}) | ||
| 17098 | Objet de paquet du serveur SMTP OpenSMTPD. | ||
| 17099 | |||
| 17100 | @item @code{config-file} (par défaut : @var{%default-opensmtpd-file}) | ||
| 17101 | Objet simili-fichier du fichier de configuration de OpenSMTPD à utiliser. | ||
| 17102 | Par défaut il écoute sur l'interface de boucle locale et accepte les | ||
| 17103 | courriels des utilisateurs et des démons de la machine locale, et autorise | ||
| 17104 | l'envoi de courriels à des serveurs distants. Lancez @command{man | ||
| 17105 | smtpd.conf} pour plus d'information. | ||
| 17106 | |||
| 17107 | @end table | ||
| 17108 | @end deftp | ||
| 17109 | |||
| 17110 | @subsubheading Service Exim | ||
| 17111 | |||
| 17112 | @cindex agent de transfert de courriel (MTA) | ||
| 17113 | @cindex MTA (agent de transfert de courriel) | ||
| 17114 | @cindex SMTP | ||
| 17115 | |||
| 17116 | @deffn {Variable Scheme} exim-service-type | ||
| 17117 | C'est le type de l'agent de transfert de courriel (MTA) | ||
| 17118 | @uref{https://exim.org, Exim}, dont la valeur devrait être un objet | ||
| 17119 | @code{exim-configuration} comme dans cet exemple : | ||
| 17120 | |||
| 17121 | @example | ||
| 17122 | (service exim-service-type | ||
| 17123 | (exim-configuration | ||
| 17124 | (config-file (local-file "./my-exim.conf")))) | ||
| 17125 | @end example | ||
| 17126 | @end deffn | ||
| 17127 | |||
| 17128 | Pour utilise le service @code{exim-service-type} vous devez aussi avoir un | ||
| 17129 | service @code{mail-aliases-service-type} dans votre @code{operating-system} | ||
| 17130 | (même sans alias). | ||
| 17131 | |||
| 17132 | @deftp {Type de données} exim-configuration | ||
| 17133 | Type de données représentant la configuration d'exim. | ||
| 17134 | |||
| 17135 | @table @asis | ||
| 17136 | @item @code{package} (par défaut : @var{exim}) | ||
| 17137 | Objet de paquet du serveur Exim. | ||
| 17138 | |||
| 17139 | @item @code{config-file} (par défaut : @code{#f}) | ||
| 17140 | Objet simili-fichier du fichier de configuration d'Exim à utiliser. Si sa | ||
| 17141 | valeur est @code{#f} alors le service utilisera la configuration par défaut | ||
| 17142 | du paquet fournit dans @code{package}. Le fichier de configuration qui en | ||
| 17143 | résulte est chargé après avoir mis en place les variables de configuration | ||
| 17144 | @code{exim_user} et @code{exim_group}. | ||
| 17145 | |||
| 17146 | @end table | ||
| 17147 | @end deftp | ||
| 17148 | |||
| 17149 | @subsubheading Service d'alias de courriel | ||
| 17150 | |||
| 17151 | @cindex alias de courriel | ||
| 17152 | @cindex alias, pour les adresses de courriel | ||
| 17153 | |||
| 17154 | @deffn {Variable Scheme} mail-aliases-service-type | ||
| 17155 | C'est le type de service qui fournit @code{/etc/aliases} et qui spécifie | ||
| 17156 | comment délivrer les courriels aux utilisateurs du système. | ||
| 17157 | |||
| 17158 | @example | ||
| 17159 | (service mail-aliases-service-type | ||
| 17160 | '(("postmaster" "bob") | ||
| 17161 | ("bob" "bob@@example.com" "bob@@example2.com"))) | ||
| 17162 | @end example | ||
| 17163 | @end deffn | ||
| 17164 | |||
| 17165 | La configuration pour un service @code{mail-aliases-service-type} est une | ||
| 17166 | liste associative qui dénote comment délivrer les courriels qui arrivent au | ||
| 17167 | système. Chaque entrée est de la forme @code{(alias adresses ...)} avec | ||
| 17168 | @code{alias} qui spécifie l'alias local et @code{adresses} qui spécifie où | ||
| 17169 | délivrer les courriels de cet utilisateur. | ||
| 17170 | |||
| 17171 | Les alias n'ont pas besoin de correspondre à des utilisateurs locaux du | ||
| 17172 | système. Dans l'exemple au-dessus, il n'y a pas besoin d'une entrée | ||
| 17173 | @code{postmaster} dans la liste @code{user-accounts} du | ||
| 17174 | @code{operating-system} pour délivrer les courriels à destination de | ||
| 17175 | @code{postmaster} à @code{bob} (qui ensuite délivrerait le courriel à | ||
| 17176 | @code{bob@@example.com} et @code{bob@@example2.com}). | ||
| 17177 | |||
| 17178 | @subsubheading Démon IMAP4 GNU Mailutils | ||
| 17179 | @cindex Démon IMAP4 GNU Mailutils | ||
| 17180 | |||
| 17181 | @deffn {Variable Scheme} imap4d-service-type | ||
| 17182 | C'est le type du démon IMAP4 GNU Mailutils, dont la valeur devrait être un | ||
| 17183 | objet @code{imap4d-configuration} comme dans cet exemple : | ||
| 17184 | |||
| 17185 | @example | ||
| 17186 | (service imap4d-service-type | ||
| 17187 | (imap4d-configuration | ||
| 17188 | (config-file (local-file "imap4d.conf")))) | ||
| 17189 | @end example | ||
| 17190 | @end deffn | ||
| 17191 | |||
| 17192 | @deftp {Type de données} imap4d-configuration | ||
| 17193 | Type de données représentant la configuration de @command{imap4d}. | ||
| 17194 | |||
| 17195 | @table @asis | ||
| 17196 | @item @code{package} (par défaut : @code{mailutils}) | ||
| 17197 | Le paquet qui fournit @command{imap4d}. | ||
| 17198 | |||
| 17199 | @item @code{config-file} (par défaut : @code{%default-imap4d-config-file}) | ||
| 17200 | Objet simili-fichier du fichier de configuration à utiliser. Par défaut, la | ||
| 17201 | configuration fera écouter sur le port TCP 143 sur @code{localhost}. | ||
| 17202 | @xref{Conf-imap4d,,, mailutils, GNU Mailutils Manual}, pour les détails. | ||
| 17203 | |||
| 17204 | @end table | ||
| 17205 | @end deftp | ||
| 17206 | |||
| 17207 | @node Services de messagerie | ||
| 17208 | @subsection Services de messagerie | ||
| 17209 | |||
| 17210 | @cindex messagerie instantanée | ||
| 17211 | @cindex jabber | ||
| 17212 | @cindex XMPP | ||
| 17213 | Le module @code{(gnu services messaging)} fournit des définitions de | ||
| 17214 | services Guix pour les services de messageries instantanées : actuellement | ||
| 17215 | seul Prosody est supporté. | ||
| 17216 | |||
| 17217 | @subsubheading Service Prosody | ||
| 17218 | |||
| 17219 | @deffn {Variable Scheme} prosody-service-type | ||
| 17220 | C'est le type pour le @uref{https://prosody.im, le serveur de communication | ||
| 17221 | XMPP Prosody}. Sa valeur doit être un enregistrement | ||
| 17222 | @code{prosody-configuration} comme dans cet exemple : | ||
| 17223 | |||
| 17224 | @example | ||
| 17225 | (service prosody-service-type | ||
| 17226 | (prosody-configuration | ||
| 17227 | (modules-enabled (cons "groups" "mam" %default-modules-enabled)) | ||
| 17228 | (int-components | ||
| 17229 | (list | ||
| 17230 | (int-component-configuration | ||
| 17231 | (hostname "conference.example.net") | ||
| 17232 | (plugin "muc") | ||
| 17233 | (mod-muc (mod-muc-configuration))))) | ||
| 17234 | (virtualhosts | ||
| 17235 | (list | ||
| 17236 | (virtualhost-configuration | ||
| 17237 | (domain "example.net")))))) | ||
| 17238 | @end example | ||
| 17239 | |||
| 17240 | Voir plus bas pour des détails sur @code{prosody-configuration}. | ||
| 17241 | |||
| 17242 | @end deffn | ||
| 17243 | |||
| 17244 | Par défaut, Prosody n'a pas besoin de beaucoup de configuration. Seul un | ||
| 17245 | champ @code{virtualhosts} est requis : il spécifie le domaine que vous | ||
| 17246 | voulez voir Prosody servir. | ||
| 17247 | |||
| 17248 | Vous pouvez effectuer plusieurs vérifications de la configuration générée | ||
| 17249 | avec la commande @code{prosodyctl check}. | ||
| 17250 | |||
| 17251 | Prosodyctl vous aidera aussi à importer des certificats du répertoire | ||
| 17252 | @code{letsencrypt} pour que l'utilisateur @code{prosody} puisse y accéder. | ||
| 17253 | Voir @url{https://prosody.im/doc/letsencrypt}. | ||
| 17254 | |||
| 17255 | @example | ||
| 17256 | prosodyctl --root cert import /etc/letsencrypt/live | ||
| 17257 | @end example | ||
| 17258 | |||
| 17259 | Les paramètres de configuration disponibles sont les suivants. Chaque | ||
| 17260 | définition des paramètres est précédé par son type ; par exemple, | ||
| 17261 | @samp{string-list foo} indique que le paramètre @code{foo} devrait être | ||
| 17262 | spécifié comme une liste de chaînes de caractères. Les types précédés de | ||
| 17263 | @code{maybe-} signifient que le paramètre n'apparaîtra pas dans | ||
| 17264 | @code{prosody.cfg.lua} lorsque sa valeur est @code{'disabled}. | ||
| 17265 | |||
| 17266 | Il y a aussi une manière de spécifier la configuration en tant que chaîne de | ||
| 17267 | caractères si vous avez un vieux fichier @code{prosody.cfg.lua} que vous | ||
| 17268 | voulez porter depuis un autre système ; voir la fin pour plus de détails. | ||
| 17269 | |||
| 17270 | Le type @code{file-object} désigne soit un objet simili-fichier | ||
| 17271 | (@pxref{G-Expressions, file-like objects}), soit un nom de fichier. | ||
| 17272 | |||
| 17273 | @c The following documentation was initially generated by | ||
| 17274 | @c (generate-documentation) in (gnu services messaging). Manually maintained | ||
| 17275 | @c documentation is better, so we shouldn't hesitate to edit below as | ||
| 17276 | @c needed. However if the change you want to make to this documentation | ||
| 17277 | @c can be done in an automated way, it's probably easier to change | ||
| 17278 | @c (generate-documentation) than to make it below and have to deal with | ||
| 17279 | @c the churn as Prosody updates. | ||
| 17280 | |||
| 17281 | Les champs de @code{prosody-configuration} disponibles sont : | ||
| 17282 | |||
| 17283 | @deftypevr {paramètre de @code{prosody-configuration}} package prosody | ||
| 17284 | Le paquet Prosody. | ||
| 17285 | @end deftypevr | ||
| 17286 | |||
| 17287 | @deftypevr {paramètre de @code{prosody-configuration}} file-name data-path | ||
| 17288 | Emplacement du répertoire de stockage des données de Prosody. Voir | ||
| 17289 | @url{https://prosody.im/doc/configure}. La valeur par défaut est | ||
| 17290 | @samp{"/var/lib/prosody"}. | ||
| 17291 | @end deftypevr | ||
| 17292 | |||
| 17293 | @deftypevr {paramètre de @code{prosody-configuration}} file-object-list plugin-paths | ||
| 17294 | Répertoires de greffons supplémentaires. Ils sont analysés dans l'ordre | ||
| 17295 | spécifié. Voir @url{https://prosody.im/doc/plugins_directory}. La valeur | ||
| 17296 | par défaut est @samp{()}. | ||
| 17297 | @end deftypevr | ||
| 17298 | |||
| 17299 | @deftypevr {paramètre de @code{prosody-configuration}} file-name certificates | ||
| 17300 | Chaque hôte virtuel et composant a besoin d'un certificat pour que les | ||
| 17301 | clients et les serveurs puissent vérifier son identité. Prosody chargera | ||
| 17302 | automatiquement les clefs et les certificats dans le répertoire spécifié | ||
| 17303 | ici. La valeur par défaut est @samp{"/etc/prosody/certs"}. | ||
| 17304 | @end deftypevr | ||
| 17305 | |||
| 17306 | @deftypevr {paramètre de @code{prosody-configuration}} string-list admins | ||
| 17307 | C'est une liste des comptes administrateurs de ce serveur. Remarquez que | ||
| 17308 | vous devez créer les comptes séparément. Voir | ||
| 17309 | @url{https://prosody.im/doc/admins} et | ||
| 17310 | @url{https://prosody.im/doc/creating_accounts}. Par exemple : @code{(admins | ||
| 17311 | '("user1@@example.com" "user2@@example.net"))}. La valeur par défaut est | ||
| 17312 | @samp{()}. | ||
| 17313 | @end deftypevr | ||
| 17314 | |||
| 17315 | @deftypevr {paramètre de @code{prosody-configuration}} boolean use-libevent? | ||
| 17316 | Active l'utilisation de libevent pour de meilleures performances sous une | ||
| 17317 | forte charge. Voir @url{https://prosody.im/doc/libevent}. La valeur par | ||
| 17318 | défaut est @samp{#f}. | ||
| 17319 | @end deftypevr | ||
| 17320 | |||
| 17321 | @deftypevr {paramètre de @code{prosody-configuration}} module-list modules-enabled | ||
| 17322 | C'est la liste des modules que Prosody chargera au démarrage. Il cherchera | ||
| 17323 | @code{mod_modulename.lua} dans le répertoire des greffons, donc assurez-vous | ||
| 17324 | qu'il existe aussi. La documentation des modules se trouve sur | ||
| 17325 | @url{https://prosody.im/doc/modules}. La valeur par défaut est | ||
| 17326 | @samp{("roster" "saslauth" "tls" "dialback" "disco" "carbons" "private" | ||
| 17327 | "blocklist" "vcard" "version" "uptime" "time" "ping" "pep" "register" | ||
| 17328 | "admin_adhoc")}. | ||
| 17329 | @end deftypevr | ||
| 17330 | |||
| 17331 | @deftypevr {paramètre de @code{prosody-configuration}} string-list modules-disabled | ||
| 17332 | @samp{"offline"},@samp{"c2s"} et @samp{"s2s"} sont chargés automatiquement, | ||
| 17333 | mais si vous voulez les désactiver, ajoutez-les à cette liste. La valeur | ||
| 17334 | par défaut est @samp{()}. | ||
| 17335 | @end deftypevr | ||
| 17336 | |||
| 17337 | @deftypevr {paramètre de @code{prosody-configuration}} file-object groups-file | ||
| 17338 | Chemin vers un fichier texte où les groupes partagés sont définis. Si ce | ||
| 17339 | chemin est vide alors @samp{mod_groups} ne fait rien. Voir | ||
| 17340 | @url{https://prosody.im/doc/modules/mod_groups}. La valeur par défaut est | ||
| 17341 | @samp{"/var/lib/prosody/sharedgroups.txt"}. | ||
| 17342 | @end deftypevr | ||
| 17343 | |||
| 17344 | @deftypevr {paramètre de @code{prosody-configuration}} boolean allow-registration? | ||
| 17345 | Désactive la création de compte par défaut, pour la sécurité. Voir | ||
| 17346 | @url{https://prosody.im/doc/creating_accounts}. La valeur par défaut est | ||
| 17347 | @samp{#f}. | ||
| 17348 | @end deftypevr | ||
| 17349 | |||
| 17350 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-ssl-configuration ssl | ||
| 17351 | Ce sont les paramètres liés à SSL/TLS. La plupart sont désactivés pour | ||
| 17352 | pouvoir utiliser les paramètres par défaut de Prosody. Si vous ne comprenez | ||
| 17353 | pas complètement ces options, ne les ajoutez pas à votre configuration, il | ||
| 17354 | est aisé de diminuer la sécurité de votre serveur en les modifiant. Voir | ||
| 17355 | @url{https://prosody.im/doc/advanced_ssl_config}. | ||
| 17356 | |||
| 17357 | Les champs de @code{ssl-configuration} disponibles sont : | ||
| 17358 | |||
| 17359 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string protocol | ||
| 17360 | Cela détermine la poignée de main à utiliser. | ||
| 17361 | @end deftypevr | ||
| 17362 | |||
| 17363 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-file-name key | ||
| 17364 | Chemin vers votre fichier de clef privée. | ||
| 17365 | @end deftypevr | ||
| 17366 | |||
| 17367 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-file-name certificate | ||
| 17368 | Chemin vers votre fichier de certificat. | ||
| 17369 | @end deftypevr | ||
| 17370 | |||
| 17371 | @deftypevr {paramètre de @code{ssl-configuration}} file-object capath | ||
| 17372 | Chemin vers le répertoire contenant les certificats racines que vous voulez | ||
| 17373 | voir Prosody utiliser lors de la vérification des certificats des serveurs | ||
| 17374 | distants. La valeur par défaut est @samp{"/etc/ssl/certs"}. | ||
| 17375 | @end deftypevr | ||
| 17376 | |||
| 17377 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-file-object cafile | ||
| 17378 | Chemin vers un fichier contenant les certificats racines auxquels Prosody | ||
| 17379 | devra faire confiance. Comme @code{capath} mais avec les certificats | ||
| 17380 | concaténés ensemble. | ||
| 17381 | @end deftypevr | ||
| 17382 | |||
| 17383 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string-list verify | ||
| 17384 | Une liste d'options de vérification (qui correspondent globalement aux | ||
| 17385 | drapeaux @code{set_verify()} d'OpenSSL). | ||
| 17386 | @end deftypevr | ||
| 17387 | |||
| 17388 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string-list options | ||
| 17389 | Une liste d'options générales liées à SSL/TLS. Elles correspondent | ||
| 17390 | globalement à @code{set_options()} d'OpenSSL. Pour une liste complète des | ||
| 17391 | options disponibles dans LuaSec, voir les sources de LuaSec. | ||
| 17392 | @end deftypevr | ||
| 17393 | |||
| 17394 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-non-negative-integer depth | ||
| 17395 | Longueur maximale d'une chaîne d'autorités de certifications avant la | ||
| 17396 | racine. | ||
| 17397 | @end deftypevr | ||
| 17398 | |||
| 17399 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string ciphers | ||
| 17400 | Une chaîne de méthodes de chiffrement OpenSSL. Cela choisi les méthodes de | ||
| 17401 | chiffrement que Prosody offrira aux clients, et dans quel ordre de | ||
| 17402 | préférence. | ||
| 17403 | @end deftypevr | ||
| 17404 | |||
| 17405 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-file-name dhparam | ||
| 17406 | Un chemin vers un fichier contenant les paramètres pour l'échange de clef | ||
| 17407 | Diffie-Hellman. Vous pouvez créer un tel fichier avec : @code{openssl | ||
| 17408 | dhparam -out /etc/prosody/certs/dh-2048.pem 2048} | ||
| 17409 | @end deftypevr | ||
| 17410 | |||
| 17411 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string curve | ||
| 17412 | Courbe pour Diffie-Hellman sur courbe elliptique. La valeur par défaut de | ||
| 17413 | Prosody est @samp{"secp384r1"}. | ||
| 17414 | @end deftypevr | ||
| 17415 | |||
| 17416 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string-list verifyext | ||
| 17417 | Une liste d'options de vérification « supplémentaires ». | ||
| 17418 | @end deftypevr | ||
| 17419 | |||
| 17420 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string password | ||
| 17421 | Mot de passe pour les clefs privées chiffrées. | ||
| 17422 | @end deftypevr | ||
| 17423 | |||
| 17424 | @end deftypevr | ||
| 17425 | |||
| 17426 | @deftypevr {paramètre de @code{prosody-configuration}} boolean c2s-require-encryption? | ||
| 17427 | S'il faut forcer toutes les connexions client-serveur à être chiffrées ou | ||
| 17428 | non. Voir @url{https://prosody.im/doc/modules/mod_tls}. La valeur par | ||
| 17429 | défaut est @samp{#f}. | ||
| 17430 | @end deftypevr | ||
| 17431 | |||
| 17432 | @deftypevr {paramètre de @code{prosody-configuration}} string-list disable-sasl-mechanisms | ||
| 17433 | Ensemble de mécanismes qui ne seront jamais offerts. Voir | ||
| 17434 | @url{https://prosody.im/doc/modules/mod_saslauth}. La valeur par défaut est | ||
| 17435 | @samp{("DIGEST-MD5")}. | ||
| 17436 | @end deftypevr | ||
| 17437 | |||
| 17438 | @deftypevr {paramètre de @code{prosody-configuration}} boolean s2s-require-encryption? | ||
| 17439 | S'il faut forcer toutes les connexion serveur-serveur à être chiffrées ou | ||
| 17440 | non. Voir @url{https://prosody.im/doc/modules/mod_tls}. La valeur par | ||
| 17441 | défaut est @samp{#f}. | ||
| 17442 | @end deftypevr | ||
| 17443 | |||
| 17444 | @deftypevr {paramètre de @code{prosody-configuration}} boolean s2s-secure-auth? | ||
| 17445 | S'il faut requérir le chiffrement et l'authentification du certificat. Cela | ||
| 17446 | fournit une sécurité idéale, mais demande que les serveurs avec lesquels | ||
| 17447 | vous communiquez supportent le chiffrement ET présentent un certificat | ||
| 17448 | valide et de confiance. Voir @url{https://prosody.im/doc/s2s#security}. La | ||
| 17449 | valeur par défaut est @samp{#f}. | ||
| 17450 | @end deftypevr | ||
| 17451 | |||
| 17452 | @deftypevr {paramètre de @code{prosody-configuration}} string-list s2s-insecure-domains | ||
| 17453 | Beaucoup de serveurs ne supportent pas le chiffrement ou ont un certificat | ||
| 17454 | invalide ou auto-signé. Vous pouvez lister les domaines ici qui n'ont pas | ||
| 17455 | besoin de s'authentifier avec des certificats. Ils seront authentifiés par | ||
| 17456 | DNS. Voir @url{https://prosody.im/doc/s2s#security}. La valeur par défaut | ||
| 17457 | est @samp{()}. | ||
| 17458 | @end deftypevr | ||
| 17459 | |||
| 17460 | @deftypevr {paramètre de @code{prosody-configuration}} string-list s2s-secure-domains | ||
| 17461 | Même si vous laissez @code{s2s-secure-auth?} désactivé, vous pouvez toujours | ||
| 17462 | demander un certificat valide pour certains domaine en spécifiant la liste | ||
| 17463 | ici. Voir @url{https://prosody.im/doc/s2s#security}. La valeur par défaut | ||
| 17464 | est @samp{()}. | ||
| 17465 | @end deftypevr | ||
| 17466 | |||
| 17467 | @deftypevr {paramètre de @code{prosody-configuration}} string authentication | ||
| 17468 | Choisi le moteur d'authentification à utiliser. Le moteur par défaut stocke | ||
| 17469 | les mots de passes en texte clair et utilise la configuration de stockage | ||
| 17470 | des données de Prosody pour stocker les données authentifiées. Si vous | ||
| 17471 | n'avez pas confiance dans le serveur, lisez | ||
| 17472 | @url{https://prosody.im/doc/modules/mod_auth_internal_hashed} pour plus | ||
| 17473 | d'information sur l'utilisation du moteur hashed. Voir aussi | ||
| 17474 | @url{https://prosody.im/doc/authentication}. La valeur par défaut est | ||
| 17475 | @samp{"internal_plain"}. | ||
| 17476 | @end deftypevr | ||
| 17477 | |||
| 17478 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-string log | ||
| 17479 | Indique les options de journalisation. La configuration avancée des | ||
| 17480 | journaux n'est pas encore supportée par le service Prosody. Voir | ||
| 17481 | @url{https://prosody.im/doc/logging}. La valeur par défaut est | ||
| 17482 | @samp{"*syslog"}. | ||
| 17483 | @end deftypevr | ||
| 17484 | |||
| 17485 | @deftypevr {paramètre de @code{prosody-configuration}} file-name pidfile | ||
| 17486 | Fichier où écrire le PID. Voir | ||
| 17487 | @url{https://prosody.im/doc/modules/mod_posix}. La valeur par défaut est | ||
| 17488 | @samp{"/var/run/prosody/prosody.pid"}. | ||
| 17489 | @end deftypevr | ||
| 17490 | |||
| 17491 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-non-negative-integer http-max-content-size | ||
| 17492 | Taille maximum autorisée pour le corps HTTP (en octets). | ||
| 17493 | @end deftypevr | ||
| 17494 | |||
| 17495 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-string http-external-url | ||
| 17496 | Certains modules exposent leur propre URL de diverses manières. Cette URL | ||
| 17497 | est construite à partir du protocole, de l'hôte et du port utilisé. Si | ||
| 17498 | Prosody se trouve derrière un proxy, l'URL publique sera | ||
| 17499 | @code{http-external-url} à la place. Voir | ||
| 17500 | @url{https://prosody.im/doc/http#external_url}. | ||
| 17501 | @end deftypevr | ||
| 17502 | |||
| 17503 | @deftypevr {paramètre de @code{prosody-configuration}} virtualhost-configuration-list virtualhosts | ||
| 17504 | Un hôte dans Prosody est un domaine sur lequel les comptes utilisateurs sont | ||
| 17505 | créés. Par exemple si vous voulez que vos utilisateurs aient une adresse | ||
| 17506 | comme @samp{"john.smith@@example.com"} vous devrez ajouter un hôte | ||
| 17507 | @samp{"example.com"}. Toutes les options de cette liste seront appliquées | ||
| 17508 | uniquement à cet hôte. | ||
| 17509 | |||
| 17510 | Remarque : le nom d'hôte « virtuel » est utilisé dans la configuration pour | ||
| 17511 | éviter de le confondre avec le nom d'hôte physique réel de la machine qui | ||
| 17512 | héberge Prosody. Une seule instance de Prosody peut servir plusieurs | ||
| 17513 | domaines, chacun défini comme une entrée VirtualHost dans la configuration | ||
| 17514 | de Prosody. Ainsi, un serveur qui n'héberge qu'un seul domaine n'aura | ||
| 17515 | qu'une entrée VirtualHost. | ||
| 17516 | |||
| 17517 | Voir @url{https://prosody.im/doc/configure#virtual_host_settings}. | ||
| 17518 | |||
| 17519 | Les champs de @code{virtualhost-configuration} disponibles sont : | ||
| 17520 | |||
| 17521 | tous ces champs de @code{prosody-configuration} : @code{admins}, | ||
| 17522 | @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, | ||
| 17523 | @code{groups-file}, @code{allow-registration?}, @code{ssl}, | ||
| 17524 | @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, | ||
| 17525 | @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, | ||
| 17526 | @code{s2s-insecure-domains}, @code{s2s-secure-domains}, | ||
| 17527 | @code{authentication}, @code{log}, @code{http-max-content-size}, | ||
| 17528 | @code{http-external-url}, @code{raw-content}, plus : | ||
| 17529 | @deftypevr {paramètre de @code{virtualhost-configuration}} string domain | ||
| 17530 | Domaine que vous souhaitez que Prosody serve. | ||
| 17531 | @end deftypevr | ||
| 17532 | |||
| 17533 | @end deftypevr | ||
| 17534 | |||
| 17535 | @deftypevr {paramètre de @code{prosody-configuration}} int-component-configuration-list int-components | ||
| 17536 | Les composant sont des services supplémentaires qui sont disponibles pour | ||
| 17537 | les clients, habituellement sur un sous-domaine du serveur principal (comme | ||
| 17538 | @samp{"mycomponent.example.com"}). Des exemples de composants sont des | ||
| 17539 | serveurs de chatroom, des répertoires utilisateurs ou des passerelles vers | ||
| 17540 | d'autres protocoles. | ||
| 17541 | |||
| 17542 | Les composants internes sont implémentés dans des greffons spécifiques à | ||
| 17543 | Prosody. Pour ajouter un composant interne, vous n'avez qu'à remplir le | ||
| 17544 | champ de nom d'hôte et le greffon que vous voulez utiliser pour le | ||
| 17545 | composant. | ||
| 17546 | |||
| 17547 | Voir @url{https://prosody.im/doc/components}. La valeur par défaut est | ||
| 17548 | @samp{()}. | ||
| 17549 | |||
| 17550 | Les champs de @code{int-component-configuration} disponibles sont : | ||
| 17551 | |||
| 17552 | tous ces champs de @code{prosody-configuration} : @code{admins}, | ||
| 17553 | @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, | ||
| 17554 | @code{groups-file}, @code{allow-registration?}, @code{ssl}, | ||
| 17555 | @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, | ||
| 17556 | @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, | ||
| 17557 | @code{s2s-insecure-domains}, @code{s2s-secure-domains}, | ||
| 17558 | @code{authentication}, @code{log}, @code{http-max-content-size}, | ||
| 17559 | @code{http-external-url}, @code{raw-content}, plus : | ||
| 17560 | @deftypevr {paramètre de @code{int-component-configuration}} string hostname | ||
| 17561 | Nom d'hôte du composant. | ||
| 17562 | @end deftypevr | ||
| 17563 | |||
| 17564 | @deftypevr {paramètre de @code{int-component-configuration}} string plugin | ||
| 17565 | Greffon que vous voulez utiliser pour ce composant. | ||
| 17566 | @end deftypevr | ||
| 17567 | |||
| 17568 | @deftypevr {paramètre de @code{int-component-configuration}} maybe-mod-muc-configuration mod-muc | ||
| 17569 | Le chat multi-utilisateur (MUC) est le modules de Prosody qui vous permet de | ||
| 17570 | créer des chatrooms/conférences pour les utilisateurs XMPP. | ||
| 17571 | |||
| 17572 | Des informations générales sur la configuration des chatrooms | ||
| 17573 | multi-utilisateurs se trouvent dans la documentation sur les chatrooms | ||
| 17574 | (@url{https://prosody.im/doc/chatrooms}), que vous devriez lire si vous les | ||
| 17575 | découvrez. | ||
| 17576 | |||
| 17577 | Voir aussi @url{https://prosody.im/doc/modules/mod_muc}. | ||
| 17578 | |||
| 17579 | Les champs de @code{mod-muc-configuration} disponibles sont : | ||
| 17580 | |||
| 17581 | @deftypevr {paramètre de @code{mod-muc-configuration}} string name | ||
| 17582 | Le nom à renvoyer dans les réponses de découverte de services. La valeur | ||
| 17583 | par défaut est @samp{"Prosody Chatrooms"}. | ||
| 17584 | @end deftypevr | ||
| 17585 | |||
| 17586 | @deftypevr {paramètre de @code{mod-muc-configuration}} string-or-boolean restrict-room-creation | ||
| 17587 | Si la valeur est @samp{#t}, cela permettra uniquement aux admins de créer de | ||
| 17588 | nouveaux salons. Sinon n'importe qui peut créer un salon. La valeur | ||
| 17589 | @samp{"local"} restreint la création aux utilisateurs du domaine parent du | ||
| 17590 | service. P.@: ex.@: @samp{user@@example.com} peut créer des salons sur | ||
| 17591 | @samp{rooms.example.com}. La valeur @samp{"admin"} restreint ce service aux | ||
| 17592 | administrateurs. La valeur par défaut est @samp{#f}. | ||
| 17593 | @end deftypevr | ||
| 17594 | |||
| 17595 | @deftypevr {paramètre de @code{mod-muc-configuration}} non-negative-integer max-history-messages | ||
| 17596 | Nombre maximum de messages d'historique qui seront envoyés aux membres qui | ||
| 17597 | viennent de rejoindre le salon. La valeur par défaut est @samp{20}. | ||
| 17598 | @end deftypevr | ||
| 17599 | |||
| 17600 | @end deftypevr | ||
| 17601 | |||
| 17602 | @end deftypevr | ||
| 17603 | |||
| 17604 | @deftypevr {paramètre de @code{prosody-configuration}} ext-component-configuration-list ext-components | ||
| 17605 | Les composants externes utilisent XEP-0114, que la plupart des composants | ||
| 17606 | supportent. Pour ajouter un composant externe, vous remplissez simplement | ||
| 17607 | le champ de nom d'hôte. Voir @url{https://prosody.im/doc/components}. La | ||
| 17608 | valeur par défaut est @samp{()}. | ||
| 17609 | |||
| 17610 | Les champs de @code{ext-component-configuration} disponibles sont : | ||
| 17611 | |||
| 17612 | tous ces champs de @code{prosody-configuration} : @code{admins}, | ||
| 17613 | @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, | ||
| 17614 | @code{groups-file}, @code{allow-registration?}, @code{ssl}, | ||
| 17615 | @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, | ||
| 17616 | @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, | ||
| 17617 | @code{s2s-insecure-domains}, @code{s2s-secure-domains}, | ||
| 17618 | @code{authentication}, @code{log}, @code{http-max-content-size}, | ||
| 17619 | @code{http-external-url}, @code{raw-content}, plus : | ||
| 17620 | @deftypevr {paramètre de @code{ext-component-configuration}} string component-secret | ||
| 17621 | Mot de passe que le composant utilisera pour s'authentifier. | ||
| 17622 | @end deftypevr | ||
| 17623 | |||
| 17624 | @deftypevr {paramètre de @code{ext-component-configuration}} string hostname | ||
| 17625 | Nom d'hôte du composant. | ||
| 17626 | @end deftypevr | ||
| 17627 | |||
| 17628 | @end deftypevr | ||
| 17629 | |||
| 17630 | @deftypevr {paramètre de @code{prosody-configuration}} non-negative-integer-list component-ports | ||
| 17631 | Ports sur lesquels Prosody écoutera les connexions des composants. La | ||
| 17632 | valeur par défaut est @samp{(5347)}. | ||
| 17633 | @end deftypevr | ||
| 17634 | |||
| 17635 | @deftypevr {paramètre de @code{prosody-configuration}} string component-interface | ||
| 17636 | Interface sur laquelle Prosody écoutera les connexions des composants. La | ||
| 17637 | valeur par défaut est @samp{"127.0.0.1"}. | ||
| 17638 | @end deftypevr | ||
| 17639 | |||
| 17640 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-raw-content raw-content | ||
| 17641 | Contenu brut qui sera ajouté au fichier de configuration. | ||
| 17642 | @end deftypevr | ||
| 17643 | |||
| 17644 | Il se peut que vous ayez juste envie de lancer un fichier | ||
| 17645 | @code{prosody.cfg.lua} directement. Dans ce cas, vous pouvez passer un | ||
| 17646 | enregistrement @code{opaque-prosody-configuration} comme valeur à | ||
| 17647 | @code{prosody-service-type}. Comme son nom l'indique, une configuration | ||
| 17648 | opaque n'a pas de capacités de réflexion simples. Les champs disponibles de | ||
| 17649 | @code{opaque-prosody-configuration} sont : | ||
| 17650 | |||
| 17651 | @deftypevr {paramètre de @code{opaque-prosody-configuration}} package prosody | ||
| 17652 | Le paquet prosody. | ||
| 17653 | @end deftypevr | ||
| 17654 | |||
| 17655 | @deftypevr {paramètre de @code{opaque-prosody-configuration}} string prosody.cfg.lua | ||
| 17656 | Le contenu de @code{prosody.cfg.lua} à utiliser. | ||
| 17657 | @end deftypevr | ||
| 17658 | |||
| 17659 | Par exemple, si votre @code{prosody.cfg.lua} est juste la chaîne vide, vous | ||
| 17660 | pouvez instancier un service prosody comme ceci : | ||
| 17661 | |||
| 17662 | @example | ||
| 17663 | (service prosody-service-type | ||
| 17664 | (opaque-prosody-configuration | ||
| 17665 | (prosody.cfg.lua ""))) | ||
| 17666 | @end example | ||
| 17667 | |||
| 17668 | @c end of Prosody auto-generated documentation | ||
| 17669 | |||
| 17670 | @subsubheading Service BitlBee | ||
| 17671 | |||
| 17672 | @cindex IRC (Internet Relay Chat) | ||
| 17673 | @cindex passerelle IRC | ||
| 17674 | @url{http://bitlbee.org,BitlBee} est une passerelle qui fournit une | ||
| 17675 | interface IRC vers une variété de protocoles de messagerie instantanée comme | ||
| 17676 | XMPP. | ||
| 17677 | |||
| 17678 | @defvr {Variable Scheme} bitlbee-service-type | ||
| 17679 | C'est le type de service pour le démon de passerelle IRC | ||
| 17680 | @url{http://bitlbee.org,BitlBee}. Sa valeur est un | ||
| 17681 | @code{bitlbee-configuration} (voir plus bas). | ||
| 17682 | |||
| 17683 | Pour que BitlBee écoute sur le port 6667 sur localhost, ajoutez cette ligne | ||
| 17684 | à vos services : | ||
| 17685 | |||
| 17686 | @example | ||
| 17687 | (service bitlbee-service-type) | ||
| 17688 | @end example | ||
| 17689 | @end defvr | ||
| 17690 | |||
| 17691 | @deftp {Type de données} bitlbee-configuration | ||
| 17692 | C'est la configuration de BitlBee, avec les champs suivants : | ||
| 17693 | |||
| 17694 | @table @asis | ||
| 17695 | @item @code{interface} (par défaut : @code{"127.0.0.1"}) | ||
| 17696 | @itemx @code{port} (par défaut : @code{6667}) | ||
| 17697 | Écoute sur l'interface réseau correspondant à l'adresse IP dans | ||
| 17698 | @var{interface}, sur @var{port}. | ||
| 17699 | |||
| 17700 | Lorsque @var{interface} vaut @code{127.0.0.1}, seuls les clients locaux | ||
| 17701 | peuvent se connecter ; lorsqu'elle vaut @code{0.0.0.0}, les connexions | ||
| 17702 | peuvent venir de n'importe quelle interface réseau. | ||
| 17703 | |||
| 17704 | @item @code{package} (par défaut : @code{bitlbee}) | ||
| 17705 | Le paquet BitlBee à utiliser. | ||
| 17706 | |||
| 17707 | @item @code{plugins} (par défaut : @code{'()}) | ||
| 17708 | Liste des paquets de greffons à utiliser — p.@: ex.@: | ||
| 17709 | @code{bitlbee-discord}. | ||
| 17710 | |||
| 17711 | @item @code{extra-settings} (par défaut : @code{""}) | ||
| 17712 | Partie de configuration ajoutée telle-quelle au fichier de configuration de | ||
| 17713 | BitlBee. | ||
| 17714 | @end table | ||
| 17715 | @end deftp | ||
| 17716 | |||
| 17717 | @subsubheading Service Quassel | ||
| 17718 | |||
| 17719 | @cindex IRC (Internet Relay Chat) | ||
| 17720 | @url{https://quassel-irc.org/,Quassel} est un client IRC distribué, ce qui | ||
| 17721 | signifie qu'un client ou plus peuvent s'attacher et se détacher du cœur | ||
| 17722 | central. | ||
| 17723 | |||
| 17724 | @defvr {Variable Scheme} quassel-service-type | ||
| 17725 | C'est le type de service pour le démon IRC | ||
| 17726 | @url{https://quassel-irc.org/,Quassel}. Sa valeur est un | ||
| 17727 | @code{quassel-configuration} (voir plus bas). | ||
| 17728 | @end defvr | ||
| 17729 | |||
| 17730 | @deftp {Type de données} quassel-configuration | ||
| 17731 | C'est la configuration de Quassel, avec les champs suivants : | ||
| 17732 | |||
| 17733 | @table @asis | ||
| 17734 | @item @code{quassel} (par défaut : @code{quassel}) | ||
| 17735 | Le paquet Quassel à utiliser. | ||
| 17736 | |||
| 17737 | @item @code{interface} (par défaut : @code{"::,0.0.0.0"}) | ||
| 17738 | @item @code{port} (par défaut : @code{4242}) | ||
| 17739 | Écoute sur les interfaces réseau correspondant à l'adresse IPv4 ou IPv6 des | ||
| 17740 | interfaces spécifiées dans @var{interface}, une liste de chaînes délimitées | ||
| 17741 | par des virgules, sur @var{port}. | ||
| 17742 | |||
| 17743 | @item @code{loglevel} (par défaut : @code{"info"}) | ||
| 17744 | Le niveau de journalisation souhaité. Les valeurs acceptées sont « Debug », | ||
| 17745 | « Info », « Warning » et « Error ». | ||
| 17746 | @end table | ||
| 17747 | @end deftp | ||
| 17748 | |||
| 17749 | @node Services de téléphonie | ||
| 17750 | @subsection Services de téléphonie | ||
| 17751 | |||
| 17752 | @cindex Murmur (serveur VoIP) | ||
| 17753 | @cindex serveur VoIP | ||
| 17754 | Cette section décrit comment configurer et lancer un serveur Murmur. Murmur | ||
| 17755 | est le serveur de la suite de voix-sur-IP (VoIP) @uref{https://mumble.info, | ||
| 17756 | Mumble}. | ||
| 17757 | |||
| 17758 | @deftp {Type de données} murmur-configuration | ||
| 17759 | Le type de service pour le serveur Murmur. Voici un exemple de | ||
| 17760 | configuration : | ||
| 17761 | |||
| 17762 | @example | ||
| 17763 | (service murmur-service-type | ||
| 17764 | (murmur-configuration | ||
| 17765 | (welcome-text | ||
| 17766 | "Bienvenue sur ce serveur Mumble qui tourne sur Guix !") | ||
| 17767 | (cert-required? #t) ;désactive les connections par mot de passe | ||
| 17768 | (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem") | ||
| 17769 | (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem"))) | ||
| 17770 | @end example | ||
| 17771 | |||
| 17772 | Après avoir reconfiguré votre système, vous pouvez manuellement indiquer le | ||
| 17773 | mot de passe @code{SuperUser} de murmur avec la commande qui s'affiche | ||
| 17774 | pendant la phase d'activation. | ||
| 17775 | |||
| 17776 | Il est recommandé d'enregistrer un compte utilisateur Mumble normal et de | ||
| 17777 | lui donner les droits admin ou modérateur. Vous pouvez utiliser le client | ||
| 17778 | @code{mumble} pour vous connecter en tant que nouvel utilisateur normal, | ||
| 17779 | vous enregistrer et vous déconnecter. Pour l'étape suivante, connectez-vous | ||
| 17780 | avec le nom @code{SuperUser} en utilisant le mot de passe @code{SuperUser} | ||
| 17781 | que vous avez indiqué précédemment et accordez les droits administrateur ou | ||
| 17782 | modérateur à vous utilisateur mumble nouvellement enregistré et créez | ||
| 17783 | quelques salons. | ||
| 17784 | |||
| 17785 | Les champs de @code{murmur-configuration} disponibles sont : | ||
| 17786 | |||
| 17787 | @table @asis | ||
| 17788 | @item @code{package} (par défaut : @code{mumble}) | ||
| 17789 | Paquet qui contient @code{bin/murmurd}. | ||
| 17790 | |||
| 17791 | @item @code{user} (par défaut : @code{"murmur"}) | ||
| 17792 | Utilisateur qui lancera le serveur Murmur. | ||
| 17793 | |||
| 17794 | @item @code{group} (par défaut : @code{"murmur"}) | ||
| 17795 | Groupe de l'utilisateur qui lancera le serveur Murmur. | ||
| 17796 | |||
| 17797 | @item @code{port} (par défaut : @code{64738}) | ||
| 17798 | Port sur lequel le serveur écoutera. | ||
| 17799 | |||
| 17800 | @item @code{welcome-text} (par défaut : @code{""}) | ||
| 17801 | Texte de bienvenue envoyé aux clients lors de leur connexion. | ||
| 17802 | |||
| 17803 | @item @code{server-password} (par défaut : @code{""}) | ||
| 17804 | Mot de passe que les clients devront entrer pour se connecter. | ||
| 17805 | |||
| 17806 | @item @code{max-users} (par défaut : @code{100}) | ||
| 17807 | Nombre maximum d'utilisateurs qui peuvent se connecter à ce serveur en même | ||
| 17808 | temps. | ||
| 17809 | |||
| 17810 | @item @code{max-user-bandwidth} (par défaut : @code{#f}) | ||
| 17811 | Trafic de voix maximum qu'un utilisateur peut envoyer par seconde. | ||
| 17812 | |||
| 17813 | @item @code{database-file} (par défaut : @code{"/var/lib/murmur/db.sqlite"}) | ||
| 17814 | Nom de fichier de la base de données sqlite. L'utilisateur du service | ||
| 17815 | deviendra propriétaire du répertoire. | ||
| 17816 | |||
| 17817 | @item @code{log-file} (par défaut : @code{"/var/log/murmur/murmur.log"}) | ||
| 17818 | Nom du fichier de journal. L'utilisateur du service deviendra propriétaire | ||
| 17819 | du répertoire. | ||
| 17820 | |||
| 17821 | @item @code{autoban-attempts} (par défaut : @code{10}) | ||
| 17822 | Nombre maximum de connexions qu'un utilisateur peut faire pendant | ||
| 17823 | @code{autoban-timeframe} sans être banni automatiquement pour | ||
| 17824 | @code{autoban-time}. | ||
| 17825 | |||
| 17826 | @item @code{autoban-timeframe} (par défaut : @code{120}) | ||
| 17827 | Durée du temps pendant lequel le nombre de connexions est compté. | ||
| 17828 | |||
| 17829 | @item @code{autoban-time} (par défaut : @code{300}) | ||
| 17830 | Durée du bannissement automatique en secondes. | ||
| 17831 | |||
| 17832 | @item @code{opus-threshold} (par défaut : @code{100}) | ||
| 17833 | Pourcentage des clients qui doivent supporter opus avant de passer sur le | ||
| 17834 | codec audio opus. | ||
| 17835 | |||
| 17836 | @item @code{channel-nesting-limit} (par défaut : @code{10}) | ||
| 17837 | Profondeur maximum des canaux. | ||
| 17838 | |||
| 17839 | @item @code{channelname-regex} (par défaut : @code{#f}) | ||
| 17840 | Une chaîne de la forme d'une expression régulière Qt que les noms de canaux | ||
| 17841 | doivent respecter. | ||
| 17842 | |||
| 17843 | @item @code{username-regex} (par défaut : @code{#f}) | ||
| 17844 | Une chaîne de la forme d'une expression régulière Qt que les noms | ||
| 17845 | d'utilisateurs doivent respecter. | ||
| 17846 | |||
| 17847 | @item @code{text-message-length} (par défaut : @code{5000}) | ||
| 17848 | Taille maximum en octets qu'un utilisateur peut envoyer en un seul message | ||
| 17849 | textuel. | ||
| 17850 | |||
| 17851 | @item @code{image-message-length} (par défaut : @code{(* 128 1024)}) | ||
| 17852 | Taille maximum en octets qu'un utilisateur peut envoyer en une seule image. | ||
| 17853 | |||
| 17854 | @item @code{cert-required?} (par défaut : @code{#f}) | ||
| 17855 | Si la valeur est @code{#t} les clients utilisant une authentification par | ||
| 17856 | mot de passe faible ne seront pas acceptés. Les utilisateurs doivent | ||
| 17857 | compléter l'assistant de configuration des certificats pour rejoindre le | ||
| 17858 | serveur. | ||
| 17859 | |||
| 17860 | @item @code{remember-channel?} (paramètre de : @code{#f}) | ||
| 17861 | Indique si murmur devrait se rappeler du dernier canal dans lequel étaient | ||
| 17862 | les utilisateurs au moment de leur déconnexion et les y remettre lorsqu'ils | ||
| 17863 | se reconnectent. | ||
| 17864 | |||
| 17865 | @item @code{allow-html?} (par défaut : @code{#f}) | ||
| 17866 | Indique si le html est autorisé dans les messages textuels, les commentaires | ||
| 17867 | utilisateurs et les descriptions des canaux. | ||
| 17868 | |||
| 17869 | @item @code{allow-ping?} (par défaut : @code{#f}) | ||
| 17870 | Mettre à vrai expose le nombre d'utilisateurs, le nombre d'utilisateurs | ||
| 17871 | maximum et la bande passante maximale du serveur par client aux utilisateurs | ||
| 17872 | non connectés. Dans le client Mumble, cette information est affichée dans | ||
| 17873 | la boîte de dialogue de connexion. | ||
| 17874 | |||
| 17875 | Désactiver ce paramètre empêchera le serveur d'être publiquement listé. | ||
| 17876 | |||
| 17877 | @item @code{bonjour?} (par défaut : @code{#f}) | ||
| 17878 | Indique si le serveur se présente sur le réseau local à travers le protocole | ||
| 17879 | bonjour. | ||
| 17880 | |||
| 17881 | @item @code{send-version?} (par défaut : @code{#f}) | ||
| 17882 | Indique si la version du serveur murmur doit être exposée dans les requêtes | ||
| 17883 | ping. | ||
| 17884 | |||
| 17885 | @item @code{log-days} (par défaut : @code{31}) | ||
| 17886 | Murmur stocke aussi les journaux en base de données, qui sont accessible via | ||
| 17887 | RPC. La valeur par défaut est 31 jours, mais vous pouvez le mettre à 0 pour | ||
| 17888 | les garder pour toujours ou à -1 pour désactiver la journalisation dans la | ||
| 17889 | base de données. | ||
| 17890 | |||
| 17891 | @item @code{obfuscate-ips?} (par défaut : @code{#t}) | ||
| 17892 | Indique si les IP enregistrées doivent être cachées pour protéger la vie | ||
| 17893 | privée des utilisateurs. | ||
| 17894 | |||
| 17895 | @item @code{ssl-cert} (par défaut : @code{#f}) | ||
| 17896 | Nom de fichier du certificat SSL/TLS utilisé pour les connexions chiffrées. | ||
| 17897 | |||
| 17898 | @example | ||
| 17899 | (ssl-cert "/etc/letsencrypt/live/example.com/fullchain.pem") | ||
| 17900 | @end example | ||
| 17901 | @item @code{ssl-key} (par défaut : @code{#f}) | ||
| 17902 | Chemin de fichier vers la clef privée ssl pour les connexions chiffrées. | ||
| 17903 | @example | ||
| 17904 | (ssl-key "/etc/letsencrypt/live/example.com/privkey.pem") | ||
| 17905 | @end example | ||
| 17906 | |||
| 17907 | @item @code{ssl-dh-params} (par défaut : @code{#f}) | ||
| 17908 | Nom de fichier d'un fichier encodé en PEM avec les paramètres Diffie-Hellman | ||
| 17909 | pour le chiffrement SSL/TLS. Autrement vous pouvez indiquer | ||
| 17910 | @code{"@@ffdhe2048"}, @code{"@@ffdhe3072"}, @code{"@@ffdhe4096"}, | ||
| 17911 | @code{"@@ffdhe6144"} ou @code{"@@ffdhe8192"} pour utiliser les paramètres | ||
| 17912 | inclus de la RFC 7919. | ||
| 17913 | |||
| 17914 | @item @code{ssl-ciphers} (par défaut : @code{#f}) | ||
| 17915 | L'option @code{ssl-ciphers} permet de choisir les suites de chiffrement | ||
| 17916 | disponibles pour SSL/TLS. | ||
| 17917 | |||
| 17918 | Cette option est spécifiée en utilisant | ||
| 17919 | l'@uref{https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT, | ||
| 17920 | OpenSSL cipher list notation} | ||
| 17921 | |||
| 17922 | Nous vous recommandons d'essayer votre chaîne de suites de chiffrements avec | ||
| 17923 | « openssl ciphers <chaîne> » avant de l'indiquer ici, pour avoir une idée | ||
| 17924 | des suites de chiffrement que vous aurez. Après avoir indiqué cette option, | ||
| 17925 | nous vous recommandons d'inspecter les journaux de Murmur pour vous assurer | ||
| 17926 | que Murmur utilise les suites de chiffrements auxquelles vous vous attendez. | ||
| 17927 | |||
| 17928 | Remarque : modifier cette option peut impacter la rétrocompatibilité de | ||
| 17929 | votre serveur Murmur, et peut empêcher que des clients Mumble anciens se | ||
| 17930 | connectent. | ||
| 17931 | |||
| 17932 | @item @code{public-registration} (par défaut : @code{#f}) | ||
| 17933 | Doit être un enregistrement | ||
| 17934 | @code{<murmur-public-registration-configuration>} ou @code{#f}. | ||
| 17935 | |||
| 17936 | Vous pouvez aussi enregistrer votre serveur dans la liste des serveurs | ||
| 17937 | publiques que le client @code{mumble} affiche au démarrage. Vous ne pouvez | ||
| 17938 | pas enregistrer votre serveur si vous avez un @code{server-password} ou | ||
| 17939 | @code{allow-ping} à @code{#f}. | ||
| 17940 | |||
| 17941 | Cela peut prendre quelques heures avant d'arriver sur la liste publique. | ||
| 17942 | |||
| 17943 | @item @code{file} (par défaut : @code{#f}) | ||
| 17944 | Version alternative de cette configuration : si vous indiquez quelque chose, | ||
| 17945 | le reste est ignoré. | ||
| 17946 | @end table | ||
| 17947 | @end deftp | ||
| 17948 | |||
| 17949 | @deftp {Type de données} murmur-public-registration-configuration | ||
| 17950 | Configuration pour l'enregistrement public du service murmur. | ||
| 17951 | |||
| 17952 | @table @asis | ||
| 17953 | @item @code{name} | ||
| 17954 | C'est le nom d'affichage de votre serveur. Ne pas le confondre avec le nom | ||
| 17955 | d'hôte. | ||
| 17956 | |||
| 17957 | @item @code{password} | ||
| 17958 | Un mot de passe pour identifier votre enregistrement. Les mises à jours | ||
| 17959 | suivantes devront utiliser le même mot de passe. Ne le perdez pas. | ||
| 17960 | |||
| 17961 | @item @code{url} | ||
| 17962 | Cela devrait être le lien @code{http://} ou @code{https://} vers votre site | ||
| 17963 | web. | ||
| 17964 | |||
| 17965 | @item @code{hostname} (par défaut : @code{#f}) | ||
| 17966 | Par défaut votre serveur sera listé par son adresse IP. Si cette option est | ||
| 17967 | indiquée votre serveur sera listé par son nom d'hôte. | ||
| 17968 | @end table | ||
| 17969 | @end deftp | ||
| 17970 | |||
| 17971 | |||
| 17972 | |||
| 17973 | @node Services de surveillance | ||
| 17974 | @subsection Services de surveillance | ||
| 17975 | |||
| 17976 | @subsubheading Service Tailon | ||
| 17977 | |||
| 17978 | @uref{https://tailon.readthedocs.io/, Tailon} est une application web pour | ||
| 17979 | visualiser et chercher des fichiers de journaux. | ||
| 17980 | |||
| 17981 | L'exemple suivant configurera le service avec les valeurs par défaut. Par | ||
| 17982 | défaut, on peut accéder à Tailon sur le pour 8080 | ||
| 17983 | (@code{http://localhost:8080}). | ||
| 17984 | |||
| 17985 | @example | ||
| 17986 | (service tailon-service-type) | ||
| 17987 | @end example | ||
| 17988 | |||
| 17989 | L'exemple suivant personnalise un peu plus la configuration de Tailon, en | ||
| 17990 | ajoutant @command{sed} à la liste des commandes autorisées. | ||
| 17991 | |||
| 17992 | @example | ||
| 17993 | (service tailon-service-type | ||
| 17994 | (tailon-configuration | ||
| 17995 | (config-file | ||
| 17996 | (tailon-configuration-file | ||
| 17997 | (allowed-commands '("tail" "grep" "awk" "sed")))))) | ||
| 17998 | @end example | ||
| 17999 | |||
| 18000 | |||
| 18001 | @deftp {Type de données} tailon-configuration | ||
| 18002 | Type de données représentant la configuration de Tailon. Ce type a les | ||
| 18003 | paramètres suivants : | ||
| 18004 | |||
| 18005 | @table @asis | ||
| 18006 | @item @code{config-file} (par défaut : @code{(tailon-configuration-file)}) | ||
| 18007 | Le fichier de configuration à utiliser pour Tailon. Ce champ peut contenir | ||
| 18008 | un enregistrement @dfn{tailon-configuration-file} ou n'importe quelle gexp | ||
| 18009 | (@pxref{G-Expressions}). | ||
| 18010 | |||
| 18011 | Par exemple, pour utiliser un fichier local à la place, on peut utiliser la | ||
| 18012 | fonction @code{local-file} : | ||
| 18013 | |||
| 18014 | @example | ||
| 18015 | (service tailon-service-type | ||
| 18016 | (tailon-configuration | ||
| 18017 | (config-file (local-file "./my-tailon.conf")))) | ||
| 18018 | @end example | ||
| 18019 | |||
| 18020 | @item @code{package} (par défaut : @code{tailon}) | ||
| 18021 | Le paquet tailon à utiliser. | ||
| 18022 | |||
| 18023 | @end table | ||
| 18024 | @end deftp | ||
| 18025 | |||
| 18026 | @deftp {Type de données} tailon-configuration-file | ||
| 18027 | Type de données représentant les options de configuration de Tailon. Ce | ||
| 18028 | type a les paramètres suivants : | ||
| 18029 | |||
| 18030 | @table @asis | ||
| 18031 | @item @code{files} (par défaut : @code{(list "/var/log")}) | ||
| 18032 | Liste des fichiers à afficher. La liste peut inclure des chaînes pour des | ||
| 18033 | fichiers simple ou des répertoires, ou une liste, où le premier élément est | ||
| 18034 | le nom d'un sous-section et le reste des fichiers ou des répertoires de | ||
| 18035 | cette sous-section. | ||
| 18036 | |||
| 18037 | @item @code{bind} (par défaut : @code{"localhost:8080"}) | ||
| 18038 | Adresse et port sur lesquels Tailon écoute. | ||
| 18039 | |||
| 18040 | @item @code{relative-root} (par défaut : @code{#f}) | ||
| 18041 | Chemin de l'URL à utiliser pour Tailon, ou @code{#f} pour ne pas utiliser de | ||
| 18042 | chemin. | ||
| 18043 | |||
| 18044 | @item @code{allow-transfers?} (par défaut : @code{#t}) | ||
| 18045 | Permet de télécharger les journaux dans l'interface web. | ||
| 18046 | |||
| 18047 | @item @code{follow-names?} (par défaut : @code{#t}) | ||
| 18048 | Permet de surveiller des fichiers qui n'existent pas encore. | ||
| 18049 | |||
| 18050 | @item @code{tail-lines} (par défaut : @code{200}) | ||
| 18051 | Nombre de lignes à lire initialement dans chaque fichier. | ||
| 18052 | |||
| 18053 | @item @code{allowed-commands} (par défaut : @code{(list "tail" "grep" "awk")}) | ||
| 18054 | Commandes autorisées. Par défaut, @code{sed} est désactivé. | ||
| 18055 | |||
| 18056 | @item @code{debug?} (par défaut : @code{#f}) | ||
| 18057 | Configurez @code{debug?} à @code{#t} pour montrer les messages de débogage. | ||
| 18058 | |||
| 18059 | @item @code{wrap-lines} (par défaut : @code{#t}) | ||
| 18060 | État initial du retour à la ligne dans l'interface web. Configurez l'option | ||
| 18061 | à @code{#t} pour retourner à la ligne (par défaut) ou à @code{#f} pour ne | ||
| 18062 | pas retourner à la ligne au début. | ||
| 18063 | |||
| 18064 | @item @code{http-auth} (par défaut : @code{#f}) | ||
| 18065 | Type d'authentification HTTP à utiliser. Indiquez @code{#f} pour désactiver | ||
| 18066 | l'authentification (par défaut). Les valeur supportées sont @code{"digest"} | ||
| 18067 | et @code{"basic"}. | ||
| 18068 | |||
| 18069 | @item @code{users} (par défaut : @code{#f}) | ||
| 18070 | Si l'authentification HTTP est activée (voir @code{http-auth}), l'accès sera | ||
| 18071 | restreint aux identifiants fournis ici. Pour configurer des utilisateurs, | ||
| 18072 | utilisez une liste de paires, où le premier élément de la paire est le nom | ||
| 18073 | d'utilisateur et le second élément est le mot de passe. | ||
| 18074 | |||
| 18075 | @example | ||
| 18076 | (tailon-configuration-file | ||
| 18077 | (http-auth "basic") | ||
| 18078 | (users '(("user1" . "password1") | ||
| 18079 | ("user2" . "password2")))) | ||
| 18080 | @end example | ||
| 18081 | |||
| 18082 | @end table | ||
| 18083 | @end deftp | ||
| 18084 | |||
| 18085 | |||
| 18086 | @subsubheading Service Darkstat | ||
| 18087 | @cindex darkstat | ||
| 18088 | Darkstat est un « renifleur de paquets » qui capture le trafic réseau, | ||
| 18089 | calcul des statistiques sur l'utilisation et sert des rapport sur HTTP. | ||
| 18090 | |||
| 18091 | @defvar {Variable Scheme} darkstat-service-type | ||
| 18092 | C'est le type de service pour le service | ||
| 18093 | @uref{https://unix4lyfe.org/darkstat/, darkstat}, sa valeur doit être un | ||
| 18094 | enregistrement @code{darkstat-configuration} comme dans cet exemple : | ||
| 18095 | |||
| 18096 | @example | ||
| 18097 | (service darkstat-service-type | ||
| 18098 | (darkstat-configuration | ||
| 18099 | (interface "eno1"))) | ||
| 18100 | @end example | ||
| 18101 | @end defvar | ||
| 18102 | |||
| 18103 | @deftp {Type de données} darkstat-configuration | ||
| 18104 | Type de données représentant la configuration de @command{darkstat}. | ||
| 18105 | |||
| 18106 | @table @asis | ||
| 18107 | @item @code{package} (par défaut : @code{darkstat}) | ||
| 18108 | Le paquet darkstat à utiliser. | ||
| 18109 | |||
| 18110 | @item @code{interface} | ||
| 18111 | Capture le trafic sur l'interface réseau spécifiée. | ||
| 18112 | |||
| 18113 | @item @code{port} (par défaut : @code{"667"}) | ||
| 18114 | Lie l'interface web sur le port spécifié. | ||
| 18115 | |||
| 18116 | @item @code{bind-address} (par défaut : @code{"127.0.0.1"}) | ||
| 18117 | Lie l'interface web sur l'adresse spécifiée. | ||
| 18118 | |||
| 18119 | @item @code{base} (par défaut : @code{"/"}) | ||
| 18120 | Spécifie le chemin de base des URL. C'est utile si on accède à | ||
| 18121 | @command{darkstat} à travers un proxy inverse. | ||
| 18122 | |||
| 18123 | @end table | ||
| 18124 | @end deftp | ||
| 18125 | |||
| 18126 | @subsubheading Service d'export de nœud de Prometheus | ||
| 18127 | |||
| 18128 | @cindex prometheus-node-exporter | ||
| 18129 | L'exportateur de nœuds de Prometheus rend disponible les statistiques sur le | ||
| 18130 | matériel et le système d'exploitation fournies par le noyau Linux pour le | ||
| 18131 | système de surveillance Prometheus. Ce service devrait être déployé sur | ||
| 18132 | tous les nœuds physiques et les machines virtuelles, où vous voulez | ||
| 18133 | surveiller ces statistiques. | ||
| 18134 | |||
| 18135 | @defvar {Variable Scheme} prometheus-node-exporter-service-type | ||
| 18136 | C'est le type de service pour le service | ||
| 18137 | @uref{https://github.com/prometheus/node_exporter/, | ||
| 18138 | prometheus-node-exporter}, sa valeur doit être un enregistrement | ||
| 18139 | @code{prometheus-node-exporter-configuration} comme dans cet exemple : | ||
| 18140 | |||
| 18141 | @example | ||
| 18142 | (service prometheus-node-exporter-service-type | ||
| 18143 | (prometheus-node-exporter-configuration | ||
| 18144 | (web-listen-address ":9100"))) | ||
| 18145 | @end example | ||
| 18146 | @end defvar | ||
| 18147 | |||
| 18148 | @deftp {Type de données} prometheus-node-exporter-configuration | ||
| 18149 | Type de données représentant la configuration de @command{node_exporter} | ||
| 18150 | |||
| 18151 | @table @asis | ||
| 18152 | @item @code{package} (par défaut : @code{go-github-com-prometheus-node-exporter}) | ||
| 18153 | Le paquet prometheus-node-exporter à utiliser. | ||
| 18154 | |||
| 18155 | @item @code{web-listen-address} (par défaut : @code{":9100"}) | ||
| 18156 | Lie l'interface web sur l'adresse spécifiée. | ||
| 18157 | |||
| 18158 | @end table | ||
| 18159 | @end deftp | ||
| 18160 | |||
| 18161 | @subsubheading Server zabbix | ||
| 18162 | @cindex zabbix zabbix-server | ||
| 18163 | Zabbix fournit des métriques de suivi entre autres de l'utilisation du | ||
| 18164 | réseau, de la charge CPU et de l'espace disque : | ||
| 18165 | |||
| 18166 | @itemize | ||
| 18167 | @item Haute performance, haute capacité (il est capable de surveiller des centaines de milliers d'appareils). | ||
| 18168 | @item Découverte automatique des serveurs, des appareils et leurs interfaces réseaux. | ||
| 18169 | @item Découverte bas-niveau, qui permet de commencer automatiquement à surveiller de nouveaux éléments, des systèmes de fichiers ou des interfaces réseaux entre autres. | ||
| 18170 | @item Surveillance distribuée avec une administration web centralisée. | ||
| 18171 | @item Agents natifs haute-performance. | ||
| 18172 | @item Métriques SLA et ITIL KPI dans les rapports. | ||
| 18173 | @item Vue haut-niveau (businness) des ressources surveillées à travers des écrans de consoles visuelles définie par l'utilisateur et des panneaux de commande. | ||
| 18174 | @item Exécution à distance à travers les mandataires Zabbix. | ||
| 18175 | @end itemize | ||
| 18176 | |||
| 18177 | @c %start of fragment | ||
| 18178 | |||
| 18179 | Les champs de @code{zabbix-server-configuration} disponibles sont : | ||
| 18180 | |||
| 18181 | @deftypevr {paramètre de @code{zabbix-server-configuration}} package zabbix-server | ||
| 18182 | Le paquet zabbix-server. | ||
| 18183 | |||
| 18184 | @end deftypevr | ||
| 18185 | |||
| 18186 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string user | ||
| 18187 | Utilisateur qui lancera le serveur Zabbix. | ||
| 18188 | |||
| 18189 | La valeur par défaut est @samp{"zabbix"}. | ||
| 18190 | |||
| 18191 | @end deftypevr | ||
| 18192 | |||
| 18193 | @deftypevr {paramètre de @code{zabbix-server-configuration}} group group | ||
| 18194 | Groupe qui lancera le serveur Zabbix. | ||
| 18195 | |||
| 18196 | La valeur par défaut est @samp{"zabbix"}. | ||
| 18197 | |||
| 18198 | @end deftypevr | ||
| 18199 | |||
| 18200 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string db-host | ||
| 18201 | Le nom d'hôte de la base de données. | ||
| 18202 | |||
| 18203 | La valeur par défaut est @samp{"127.0.0.1"}. | ||
| 18204 | |||
| 18205 | @end deftypevr | ||
| 18206 | |||
| 18207 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string db-name | ||
| 18208 | Nom de la base de données. | ||
| 18209 | |||
| 18210 | La valeur par défaut est @samp{"zabbix"}. | ||
| 18211 | |||
| 18212 | @end deftypevr | ||
| 18213 | |||
| 18214 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string db-user | ||
| 18215 | Utilisateur de la base de données. | ||
| 18216 | |||
| 18217 | La valeur par défaut est @samp{"zabbix"}. | ||
| 18218 | |||
| 18219 | @end deftypevr | ||
| 18220 | |||
| 18221 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string db-password | ||
| 18222 | Mot de passe de la base de données. Utilisez plutôt @code{include-files} | ||
| 18223 | avec @code{DBPassword=SECRET} dans le fichier spécifié à la place. | ||
| 18224 | |||
| 18225 | La valeur par défaut est @samp{""}. | ||
| 18226 | |||
| 18227 | @end deftypevr | ||
| 18228 | |||
| 18229 | @deftypevr {paramètre de @code{zabbix-server-configuration}} number db-port | ||
| 18230 | Port de la base de données. | ||
| 18231 | |||
| 18232 | La valeur par défaut est @samp{5432}. | ||
| 18233 | |||
| 18234 | @end deftypevr | ||
| 18235 | |||
| 18236 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string log-type | ||
| 18237 | Spécifie où les messages de journalisation seront écrits : | ||
| 18238 | |||
| 18239 | @itemize @bullet | ||
| 18240 | @item | ||
| 18241 | @code{system} - syslog. | ||
| 18242 | |||
| 18243 | @item | ||
| 18244 | @code{file} - fichier spécifié par le paramètre @code{log-file}. | ||
| 18245 | |||
| 18246 | @item | ||
| 18247 | @code{console} - sortie standard. | ||
| 18248 | |||
| 18249 | @end itemize | ||
| 18250 | |||
| 18251 | La valeur par défaut est @samp{""}. | ||
| 18252 | |||
| 18253 | @end deftypevr | ||
| 18254 | |||
| 18255 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string log-file | ||
| 18256 | Nom du fichier de journal lorsque le paramètre @code{log-type} vaut | ||
| 18257 | @code{file}. | ||
| 18258 | |||
| 18259 | La valeur par défaut est @samp{"/var/log/zabbix/server.log"}. | ||
| 18260 | |||
| 18261 | @end deftypevr | ||
| 18262 | |||
| 18263 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string pid-file | ||
| 18264 | Nom du fichier de PID. | ||
| 18265 | |||
| 18266 | La valeur par défaut est @samp{"/var/run/zabbix/zabbix_server.pid"}. | ||
| 18267 | |||
| 18268 | @end deftypevr | ||
| 18269 | |||
| 18270 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string ssl-ca-location | ||
| 18271 | Emplacement des fichiers d'autorités de certification (AC) pour la | ||
| 18272 | vérification des certificats SSL du serveur. | ||
| 18273 | |||
| 18274 | La valeur par défaut est @samp{"/etc/ssl/certs/ca-certificates.crt"}. | ||
| 18275 | |||
| 18276 | @end deftypevr | ||
| 18277 | |||
| 18278 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string ssl-cert-location | ||
| 18279 | Emplacement des certificats SSL des clients. | ||
| 18280 | |||
| 18281 | La valeur par défaut est @samp{"/etc/ssl/certs"}. | ||
| 18282 | |||
| 18283 | @end deftypevr | ||
| 18284 | |||
| 18285 | @deftypevr {paramètre de @code{zabbix-server-configuration}} string extra-options | ||
| 18286 | Options supplémentaires ajoutées à la fin du fichier de configuration du | ||
| 18287 | serveur Zabbix. | ||
| 18288 | |||
| 18289 | La valeur par défaut est @samp{""}. | ||
| 18290 | |||
| 18291 | @end deftypevr | ||
| 18292 | |||
| 18293 | @deftypevr {paramètre de @code{zabbix-server-configuration}} include-files include-files | ||
| 18294 | Vous pouvez inclure des fichiers individuels ou tous les fichiers d'un | ||
| 18295 | répertoire dans le fichier de configuration. | ||
| 18296 | |||
| 18297 | La valeur par défaut est @samp{()}. | ||
| 18298 | |||
| 18299 | @end deftypevr | ||
| 18300 | |||
| 18301 | @c %end of fragment | ||
| 18302 | |||
| 18303 | @subsubheading Agent zabbix | ||
| 18304 | @cindex zabbix zabbix-agent | ||
| 18305 | |||
| 18306 | L'agent Zabbix récupère des informations pour le serveur Zabbix. | ||
| 18307 | |||
| 18308 | @c %start of fragment | ||
| 18309 | |||
| 18310 | Les champs de @code{zabbix-agent-configuration} disponibles sont : | ||
| 18311 | |||
| 18312 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} package zabbix-agent | ||
| 18313 | Le paquet zabbix-agent. | ||
| 18314 | |||
| 18315 | @end deftypevr | ||
| 18316 | |||
| 18317 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} string user | ||
| 18318 | Utilisateur qui lancera l'agent Zabbix. | ||
| 18319 | |||
| 18320 | La valeur par défaut est @samp{"zabbix"}. | ||
| 18321 | |||
| 18322 | @end deftypevr | ||
| 18323 | |||
| 18324 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} group group | ||
| 18325 | Groupe qui lancera l'agent Zabbix. | ||
| 18326 | |||
| 18327 | La valeur par défaut est @samp{"zabbix"}. | ||
| 18328 | |||
| 18329 | @end deftypevr | ||
| 18330 | |||
| 18331 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} string hostname | ||
| 18332 | Noms d'hôte unique et sensible à la casse requis pour les vérifications | ||
| 18333 | actives et qui doit correspondre au nom d'hôte configuré sur le serveur. | ||
| 18334 | |||
| 18335 | La valeur par défaut est @samp{"Zabbix server"}. | ||
| 18336 | |||
| 18337 | @end deftypevr | ||
| 18338 | |||
| 18339 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} string log-type | ||
| 18340 | Spécifie où les messages de journalisation seront écrits : | ||
| 18341 | |||
| 18342 | @itemize @bullet | ||
| 18343 | @item | ||
| 18344 | @code{system} - syslog. | ||
| 18345 | |||
| 18346 | @item | ||
| 18347 | @code{file} - fichier spécifié par le paramètre @code{log-file}. | ||
| 18348 | |||
| 18349 | @item | ||
| 18350 | @code{console} - sortie standard. | ||
| 18351 | |||
| 18352 | @end itemize | ||
| 18353 | |||
| 18354 | La valeur par défaut est @samp{""}. | ||
| 18355 | |||
| 18356 | @end deftypevr | ||
| 18357 | |||
| 18358 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} string log-file | ||
| 18359 | Nom du fichier de journal lorsque le paramètre @code{log-type} vaut | ||
| 18360 | @code{file}. | ||
| 18361 | |||
| 18362 | La valeur par défaut est @samp{"/var/log/zabbix/agent.log"}. | ||
| 18363 | |||
| 18364 | @end deftypevr | ||
| 18365 | |||
| 18366 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} string pid-file | ||
| 18367 | Nom du fichier de PID. | ||
| 18368 | |||
| 18369 | La valeur par défaut est @samp{"/var/run/zabbix/zabbix_agent.pid"}. | ||
| 18370 | |||
| 18371 | @end deftypevr | ||
| 18372 | |||
| 18373 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} list server | ||
| 18374 | Liste d'adresses IP, éventuellement en notation CIDR ou de noms d'hôtes de | ||
| 18375 | serveurs Zabbix et de mandataires Zabbix. Les connexions entrantes ne | ||
| 18376 | seront acceptées que si elles viennent des hôtes listés ici. | ||
| 18377 | |||
| 18378 | La valeur par défaut est @samp{("127.0.0.1")}. | ||
| 18379 | |||
| 18380 | @end deftypevr | ||
| 18381 | |||
| 18382 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} list server-active | ||
| 18383 | Liste de paires d'IP:port (ou nom d'hôte:port) de serveurs Zabbix et de | ||
| 18384 | mandataires Zabbix pour les vérifications actives. Si le port n'est pas | ||
| 18385 | spécifié, le port par défaut est utilisé. Si ce paramètre n'est pas | ||
| 18386 | spécifié, les vérifications actives sont désactivées. | ||
| 18387 | |||
| 18388 | La valeur par défaut est @samp{("127.0.0.1")}. | ||
| 18389 | |||
| 18390 | @end deftypevr | ||
| 18391 | |||
| 18392 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} string extra-options | ||
| 18393 | Options supplémentaires ajoutées à la fin du fichier de configuration du | ||
| 18394 | serveur Zabbix. | ||
| 18395 | |||
| 18396 | La valeur par défaut est @samp{""}. | ||
| 18397 | |||
| 18398 | @end deftypevr | ||
| 18399 | |||
| 18400 | @deftypevr {paramètre de @code{zabbix-agent-configuration}} include-files include-files | ||
| 18401 | Vous pouvez inclure des fichiers individuels ou tous les fichiers d'un | ||
| 18402 | répertoire dans le fichier de configuration. | ||
| 18403 | |||
| 18404 | La valeur par défaut est @samp{()}. | ||
| 18405 | |||
| 18406 | @end deftypevr | ||
| 18407 | |||
| 18408 | @c %end of fragment | ||
| 18409 | |||
| 18410 | @subsubheading Interface utilisateur Zabbix | ||
| 18411 | @cindex zabbix zabbix-front-end | ||
| 18412 | |||
| 18413 | Ce service fournit une interface WEB au serveur Zabbix. | ||
| 18414 | |||
| 18415 | @c %start of fragment | ||
| 18416 | |||
| 18417 | Les champs de @code{zabbix-front-end-configuration} disponibles sont : | ||
| 18418 | |||
| 18419 | @deftypevr {paramètre de @code{zabbix-front-end-configuration}} nginx-server-configuration-list nginx | ||
| 18420 | Configuration Nginx. | ||
| 18421 | |||
| 18422 | @end deftypevr | ||
| 18423 | |||
| 18424 | @deftypevr {paramètre de @code{zabbix-front-end-configuration}} string db-host | ||
| 18425 | Le nom d'hôte de la base de données. | ||
| 18426 | |||
| 18427 | La valeur par défaut est @samp{"localhost"}. | ||
| 18428 | |||
| 18429 | @end deftypevr | ||
| 18430 | |||
| 18431 | @deftypevr {paramètre de @code{zabbix-front-end-configuration}} number db-port | ||
| 18432 | Port de la base de données. | ||
| 18433 | |||
| 18434 | La valeur par défaut est @samp{5432}. | ||
| 18435 | |||
| 18436 | @end deftypevr | ||
| 18437 | |||
| 18438 | @deftypevr {paramètre de @code{zabbix-front-end-configuration}} string db-name | ||
| 18439 | Nom de la base de données. | ||
| 18440 | |||
| 18441 | La valeur par défaut est @samp{"zabbix"}. | ||
| 18442 | |||
| 18443 | @end deftypevr | ||
| 18444 | |||
| 18445 | @deftypevr {paramètre de @code{zabbix-front-end-configuration}} string db-user | ||
| 18446 | Utilisateur de la base de données. | ||
| 18447 | |||
| 18448 | La valeur par défaut est @samp{"zabbix"}. | ||
| 18449 | |||
| 18450 | @end deftypevr | ||
| 18451 | |||
| 18452 | @deftypevr {paramètre de @code{zabbix-front-end-configuration}} string db-password | ||
| 18453 | Mot de passe de la base de données. Utilisez plutôt @code{db-secret-file}. | ||
| 18454 | |||
| 18455 | La valeur par défaut est @samp{""}. | ||
| 18456 | |||
| 18457 | @end deftypevr | ||
| 18458 | |||
| 18459 | @deftypevr {paramètre de @code{zabbix-front-end-configuration}} string db-secret-file | ||
| 18460 | Fichier de secrets qui sera ajouté au fichier @file{zabbix.conf.php}. Ce | ||
| 18461 | fichier contient les paramètres d'authentification utilisés par Zabbix. On | ||
| 18462 | s'attend à ce que vous le créiez manuellement. | ||
| 18463 | |||
| 18464 | La valeur par défaut est @samp{""}. | ||
| 18465 | |||
| 18466 | @end deftypevr | ||
| 18467 | |||
| 18468 | @deftypevr {paramètre de @code{zabbix-front-end-configuration}} string zabbix-host | ||
| 18469 | Nom d'hôte du serveur Zabbix. | ||
| 18470 | |||
| 18471 | La valeur par défaut est @samp{"localhost"}. | ||
| 18472 | |||
| 18473 | @end deftypevr | ||
| 18474 | |||
| 18475 | @deftypevr {paramètre de @code{zabbix-front-end-configuration}} number zabbix-port | ||
| 18476 | Port du serveur Zabbix. | ||
| 18477 | |||
| 18478 | La valeur par défaut est @samp{10051}. | ||
| 18479 | |||
| 18480 | @end deftypevr | ||
| 18481 | |||
| 18482 | |||
| 18483 | @c %end of fragment | ||
| 18484 | |||
| 18485 | @node Services Kerberos | ||
| 18486 | @subsection Services Kerberos | ||
| 18487 | @cindex Kerberos | ||
| 18488 | |||
| 18489 | Le module @code{(gnu services kerberos)} fournit des services liés au | ||
| 18490 | protocole d'authentification @dfn{Kerberos}. | ||
| 18491 | |||
| 18492 | @subsubheading Service Krb5 | ||
| 18493 | |||
| 18494 | Les programmes qui utilisent une bibliothèque cliente Kerberos s'attendent à | ||
| 18495 | trouver un fichier de configuration dans @file{/etc/krb5.conf}. Ce service | ||
| 18496 | génère un tel fichier à partir d'une définition fournie par la déclaration | ||
| 18497 | de système d'exploitation. Il ne démarre aucun démon. | ||
| 18498 | |||
| 18499 | Aucun fichier « keytab » n'est fourni par ce service — vous devez les créer | ||
| 18500 | explicitement. Ce service est connu pour fonctionner avec la bibliothèque | ||
| 18501 | cliente MIT, @code{mit-krb5}. Les autres implémentations n'ont pas été | ||
| 18502 | testées. | ||
| 18503 | |||
| 18504 | @defvr {Variable Scheme} krb5-service-type | ||
| 18505 | Un type de service pour les clients Kerberos 5. | ||
| 18506 | @end defvr | ||
| 18507 | |||
| 18508 | @noindent | ||
| 18509 | Voici un exemple d'utilisation : | ||
| 18510 | @lisp | ||
| 18511 | (service krb5-service-type | ||
| 18512 | (krb5-configuration | ||
| 18513 | (default-realm "EXAMPLE.COM") | ||
| 18514 | (allow-weak-crypto? #t) | ||
| 18515 | (realms (list | ||
| 18516 | (krb5-realm | ||
| 18517 | (name "EXAMPLE.COM") | ||
| 18518 | (admin-server "groucho.example.com") | ||
| 18519 | (kdc "karl.example.com")) | ||
| 18520 | (krb5-realm | ||
| 18521 | (name "ARGRX.EDU") | ||
| 18522 | (admin-server "kerb-admin.argrx.edu") | ||
| 18523 | (kdc "keys.argrx.edu")))))) | ||
| 18524 | @end lisp | ||
| 18525 | |||
| 18526 | @noindent | ||
| 18527 | Cet exemple fournit une configuration cliente Kerberos@tie{}5 qui : | ||
| 18528 | @itemize | ||
| 18529 | @item Reconnais deux domaines : « EXAMPLE.COM » et « ARGREX.EDU », tous deux | ||
| 18530 | aillant des serveurs d'administration et des centres de distribution de | ||
| 18531 | clefs distincts ; | ||
| 18532 | @item Utilisera le domaine « EXAMPLE.COM » pr défaut si le domaine n'est pas spécifié | ||
| 18533 | explicitement par les clients ; | ||
| 18534 | @item Acceptera les services qui ne supportent que des types de chiffrements connus pour être faibles. | ||
| 18535 | @end itemize | ||
| 18536 | |||
| 18537 | Les types @code{krb5-realm} et @code{krb5-configuration} ont de nombreux | ||
| 18538 | champs. Seuls les plus communs sont décrits ici. Pour une liste complète, | ||
| 18539 | et plus de détails sur chacun d'entre eux, voir la documentation de MIT | ||
| 18540 | @uref{http://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html,,krb5.conf}. | ||
| 18541 | |||
| 18542 | |||
| 18543 | @deftp {Type de données} krb5-realm | ||
| 18544 | @cindex domaine, kerberos | ||
| 18545 | @table @asis | ||
| 18546 | @item @code{name} | ||
| 18547 | Ce champ est une chaîne identifiant le nom d'un domaine. Une convention | ||
| 18548 | courante est d'utiliser le nom pleinement qualifié de votre organisation, | ||
| 18549 | converti en majuscule. | ||
| 18550 | |||
| 18551 | @item @code{admin-server} | ||
| 18552 | Ce champ est une chaîne identifiant l'hôte où le serveur d'administration | ||
| 18553 | tourne. | ||
| 18554 | |||
| 18555 | @item @code{kdc} | ||
| 18556 | Ce champ est une chaîne identifiant le centre de distribution de clefs pour | ||
| 18557 | ce domaine. | ||
| 18558 | @end table | ||
| 18559 | @end deftp | ||
| 18560 | |||
| 18561 | @deftp {Type de données} krb5-configuration | ||
| 18562 | |||
| 18563 | @table @asis | ||
| 18564 | @item @code{allow-weak-crypto?} (par défaut : @code{#f}) | ||
| 18565 | Si ce drapeau est @code{#t} les services qui n'offrent que des algorithmes | ||
| 18566 | de chiffrement faibles seront acceptés. | ||
| 18567 | |||
| 18568 | @item @code{default-realm} (par défaut : @code{#f}) | ||
| 18569 | Ce champ devrait être une chaîne identifiant le domaine Kerberos par défaut | ||
| 18570 | pour le client. Vous devriez mettre le nom de votre domaine Kerberos dans | ||
| 18571 | ce champ. Si cette valeur est @code{#f} alors un domaine doit être spécifié | ||
| 18572 | pour chaque principal Kerberos à l'invocation des programmes comme | ||
| 18573 | @command{kinit}. | ||
| 18574 | |||
| 18575 | @item @code{realms} | ||
| 18576 | Cela doit être une liste non-vide d'objets @code{krb5-realm}, auxquels les | ||
| 18577 | clients peuvent accéder. Normalement, l'un d'entre eux aura un champ | ||
| 18578 | @code{name} qui correspond au champ @code{default-realm}. | ||
| 18579 | @end table | ||
| 18580 | @end deftp | ||
| 18581 | |||
| 18582 | |||
| 18583 | @subsubheading Service PAM krb5 | ||
| 18584 | @cindex pam-krb5 | ||
| 18585 | |||
| 18586 | Le service @code{pam-krb5} permet la connexion et la gestion des mots de | ||
| 18587 | passe par Kerberos. Vous aurez besoin de ce service si vous voulez que les | ||
| 18588 | applications qui utilisent PAM puissent authentifier automatiquement les | ||
| 18589 | utilisateurs avec Kerberos. | ||
| 18590 | |||
| 18591 | @defvr {Variable Scheme} pam-krb5-service-type | ||
| 18592 | Un type de service pour le module PAM Kerberos 5. | ||
| 18593 | @end defvr | ||
| 18594 | |||
| 18595 | @deftp {Type de données} pam-krb5-configuration | ||
| 18596 | Type de données représentant la configuration du module PAM Kerberos 5. Ce | ||
| 18597 | type a les paramètres suivants : | ||
| 18598 | @table @asis | ||
| 18599 | @item @code{pam-krb5} (par défaut : @code{pam-krb5}) | ||
| 18600 | Le paquet pam-krb5 à utiliser. | ||
| 18601 | |||
| 18602 | @item @code{minimum-uid} (par défaut : @code{1000}) | ||
| 18603 | Le plus petite ID utilisateur pour lequel les authentifications Kerberos | ||
| 18604 | devraient être tentées. Les comptes locaux avec une valeur plus petite | ||
| 18605 | échoueront silencieusement leur authentification Kerberos. | ||
| 18606 | @end table | ||
| 18607 | @end deftp | ||
| 18608 | |||
| 18609 | |||
| 18610 | @node Services LDAP | ||
| 18611 | @subsection Services LDAP | ||
| 18612 | @cindex LDAP | ||
| 18613 | @cindex nslcd, service LDAP | ||
| 18614 | |||
| 18615 | Le module @code{(gnu services authentication)} fournit le type de service | ||
| 18616 | @code{nslcd-service-type}, qui peut être utilisé pour l'authentification par | ||
| 18617 | LDAP. En plus de configurer le service lui-même, vous pouvez ajouter | ||
| 18618 | @code{ldap} comme service de noms au Name Service Switch. @xref{Name Service Switch} pour des informations détaillées. | ||
| 18619 | |||
| 18620 | Voici une déclaration de système d'exploitation simple avec une | ||
| 18621 | configuration par défaut pour @code{nslcd-service-type} et une configuration | ||
| 18622 | du Name Service Switch qui consulte le service de noms @code{ldap} en | ||
| 18623 | dernier : | ||
| 18624 | |||
| 18625 | @example | ||
| 18626 | (use-service-modules authentication) | ||
| 18627 | (use-modules (gnu system nss)) | ||
| 18628 | ... | ||
| 18629 | (operating-system | ||
| 18630 | ... | ||
| 18631 | (services | ||
| 18632 | (cons* | ||
| 18633 | (service nslcd-service-type) | ||
| 18634 | (service dhcp-client-service-type) | ||
| 18635 | %base-services)) | ||
| 18636 | (name-service-switch | ||
| 18637 | (let ((services (list (name-service (name "db")) | ||
| 18638 | (name-service (name "files")) | ||
| 18639 | (name-service (name "ldap"))))) | ||
| 18640 | (name-service-switch | ||
| 18641 | (inherit %mdns-host-lookup-nss) | ||
| 18642 | (password services) | ||
| 18643 | (shadow services) | ||
| 18644 | (group services) | ||
| 18645 | (netgroup services) | ||
| 18646 | (gshadow services))))) | ||
| 18647 | @end example | ||
| 18648 | |||
| 18649 | @c %start of generated documentation for nslcd-configuration | ||
| 18650 | |||
| 18651 | Les champs de @code{nslcd-configuration} disponibles sont : | ||
| 18652 | |||
| 18653 | @deftypevr {paramètre de @code{nslcd-configuration}} package nss-pam-ldapd | ||
| 18654 | Le paquet @code{nss-pam-ldapd} à utiliser. | ||
| 18655 | |||
| 18656 | @end deftypevr | ||
| 18657 | |||
| 18658 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number threads | ||
| 18659 | Le nombre de threads à démarrer qui peuvent gérer les requête et effectuer | ||
| 18660 | des requêtes LDAP. Chaque thread ouvre une connexion séparée au serveur | ||
| 18661 | LDAP. La valeur par défaut est de 5 threads. | ||
| 18662 | |||
| 18663 | La valeur par défaut est @samp{disabled}. | ||
| 18664 | |||
| 18665 | @end deftypevr | ||
| 18666 | |||
| 18667 | @deftypevr {paramètre de @code{nslcd-configuration}} string uid | ||
| 18668 | Cela spécifie l'id de l'utilisateur sous lequel le démon devrait tourner. | ||
| 18669 | |||
| 18670 | La valeur par défaut est @samp{"nslcd"}. | ||
| 18671 | |||
| 18672 | @end deftypevr | ||
| 18673 | |||
| 18674 | @deftypevr {paramètre de @code{nslcd-configuration}} string gid | ||
| 18675 | Cela spécifie l'id du groupe sous lequel le démon devrait tourner. | ||
| 18676 | |||
| 18677 | La valeur par défaut est @samp{"nslcd"}. | ||
| 18678 | |||
| 18679 | @end deftypevr | ||
| 18680 | |||
| 18681 | @deftypevr {paramètre de @code{nslcd-configuration}} log-option log | ||
| 18682 | Cette option contrôle la journalisation via une liste contenant le schéma et | ||
| 18683 | le niveau. Le schéma peut être soit un symbole « none », « syslog », soit | ||
| 18684 | un nom de fichier absolu. Le niveau est facultatif et spécifie le niveau de | ||
| 18685 | journalisation. Le niveau de journalisation peut être l'un des symboles | ||
| 18686 | suivants : « crit », « error », « warning », « notice », « info » ou « debug | ||
| 18687 | ». Tous les messages avec le niveau spécifié ou supérieurs sont | ||
| 18688 | enregistrés. | ||
| 18689 | |||
| 18690 | La valeur par défaut est @samp{("/var/log/nslcd" info)}. | ||
| 18691 | |||
| 18692 | @end deftypevr | ||
| 18693 | |||
| 18694 | @deftypevr {paramètre de @code{nslcd-configuration}} list uri | ||
| 18695 | La liste des URI des serveurs LDAP. Normalement, seul le premier serveur | ||
| 18696 | sera utilisé avec les serveurs suivants comme secours. | ||
| 18697 | |||
| 18698 | La valeur par défaut est @samp{("ldap://localhost:389/")}. | ||
| 18699 | |||
| 18700 | @end deftypevr | ||
| 18701 | |||
| 18702 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string ldap-version | ||
| 18703 | La version du protocole LDAP à utiliser. La valeur par défaut est | ||
| 18704 | d'utiliser la version maximum supportée par la bibliothèque LDAP. | ||
| 18705 | |||
| 18706 | La valeur par défaut est @samp{disabled}. | ||
| 18707 | |||
| 18708 | @end deftypevr | ||
| 18709 | |||
| 18710 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string binddn | ||
| 18711 | Spécifie le nom distingué avec lequel se lier au serveur de répertoire pour | ||
| 18712 | les recherches. La valeur par défaut est de se lier anonymement. | ||
| 18713 | |||
| 18714 | La valeur par défaut est @samp{disabled}. | ||
| 18715 | |||
| 18716 | @end deftypevr | ||
| 18717 | |||
| 18718 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string bindpw | ||
| 18719 | Spécifie le mot de passe avec lequel se lier. Cette option n'est valable | ||
| 18720 | que lorsqu'elle est utilisée avec binddn. | ||
| 18721 | |||
| 18722 | La valeur par défaut est @samp{disabled}. | ||
| 18723 | |||
| 18724 | @end deftypevr | ||
| 18725 | |||
| 18726 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string rootpwmoddn | ||
| 18727 | Spécifie le nom distingué à utiliser lorsque l'utilisateur root essaye de | ||
| 18728 | modifier le mot de passe d'un utilisateur avec le module PAM. | ||
| 18729 | |||
| 18730 | La valeur par défaut est @samp{disabled}. | ||
| 18731 | |||
| 18732 | @end deftypevr | ||
| 18733 | |||
| 18734 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string rootpwmodpw | ||
| 18735 | Spécifie le mot de passe à utiliser pour se lier si l'utilisateur root | ||
| 18736 | essaye de modifier un mot de passe utilisateur. Cette option n'est valable | ||
| 18737 | que si elle est utilisée avec rootpwmoddn | ||
| 18738 | |||
| 18739 | La valeur par défaut est @samp{disabled}. | ||
| 18740 | |||
| 18741 | @end deftypevr | ||
| 18742 | |||
| 18743 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string sasl-mech | ||
| 18744 | Spécifie le mécanisme SASL à utiliser lors de l'authentification SASL. | ||
| 18745 | |||
| 18746 | La valeur par défaut est @samp{disabled}. | ||
| 18747 | |||
| 18748 | @end deftypevr | ||
| 18749 | |||
| 18750 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string sasl-realm | ||
| 18751 | Spécifie le royaume SASL à utiliser pour effectuer une authentification | ||
| 18752 | SASL. | ||
| 18753 | |||
| 18754 | La valeur par défaut est @samp{disabled}. | ||
| 18755 | |||
| 18756 | @end deftypevr | ||
| 18757 | |||
| 18758 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string sasl-authcid | ||
| 18759 | Spécifie l'identité d'authentification à utiliser pour effectuer une | ||
| 18760 | authentification SASL. | ||
| 18761 | |||
| 18762 | La valeur par défaut est @samp{disabled}. | ||
| 18763 | |||
| 18764 | @end deftypevr | ||
| 18765 | |||
| 18766 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string sasl-authzid | ||
| 18767 | Spécifie l'identité d'autorisation à utiliser lors d'une authentification | ||
| 18768 | SASL. | ||
| 18769 | |||
| 18770 | La valeur par défaut est @samp{disabled}. | ||
| 18771 | |||
| 18772 | @end deftypevr | ||
| 18773 | |||
| 18774 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-boolean sasl-canonicalize? | ||
| 18775 | Détermine si le nom d'hôte du serveur LDAP devrait être canonalisé. Si | ||
| 18776 | c'est activé la bibliothèque LDAP effectuera une recherche de nom d'hôte | ||
| 18777 | inversée. Par défaut, il est laissé à la bibliothèque LDAP le soin de | ||
| 18778 | savoir si la vérification doit être effectuée ou non. | ||
| 18779 | |||
| 18780 | La valeur par défaut est @samp{disabled}. | ||
| 18781 | |||
| 18782 | @end deftypevr | ||
| 18783 | |||
| 18784 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string krb5-ccname | ||
| 18785 | Indique le nom du cache d'informations de connexion de GSS-API Kerberos. | ||
| 18786 | |||
| 18787 | La valeur par défaut est @samp{disabled}. | ||
| 18788 | |||
| 18789 | @end deftypevr | ||
| 18790 | |||
| 18791 | @deftypevr {paramètre de @code{nslcd-configuration}} string base | ||
| 18792 | La base de recherche de répertoires. | ||
| 18793 | |||
| 18794 | La valeur par défaut est @samp{"dc=example,dc=com"}. | ||
| 18795 | |||
| 18796 | @end deftypevr | ||
| 18797 | |||
| 18798 | @deftypevr {paramètre de @code{nslcd-configuration}} scope-option scope | ||
| 18799 | Spécifie la portée de la recherche (subtree, onelevel, base ou children). | ||
| 18800 | La portée par défaut est subtree ; la portée base n'est presque jamais utile | ||
| 18801 | pour les recherches de service de noms ; la portée children n'est pas prise | ||
| 18802 | en charge par tous les serveurs. | ||
| 18803 | |||
| 18804 | La valeur par défaut est @samp{(subtree)}. | ||
| 18805 | |||
| 18806 | @end deftypevr | ||
| 18807 | |||
| 18808 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-deref-option deref | ||
| 18809 | Spécifie la politique de déréférencement des alias. La politique par défaut | ||
| 18810 | est de ne jamais déréférencer d'alias. | ||
| 18811 | |||
| 18812 | La valeur par défaut est @samp{disabled}. | ||
| 18813 | |||
| 18814 | @end deftypevr | ||
| 18815 | |||
| 18816 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-boolean referrals | ||
| 18817 | Spécifie s'il faut activer le suivi de référence. Le comportement par | ||
| 18818 | défaut est de suivre les références. | ||
| 18819 | |||
| 18820 | La valeur par défaut est @samp{disabled}. | ||
| 18821 | |||
| 18822 | @end deftypevr | ||
| 18823 | |||
| 18824 | @deftypevr {paramètre de @code{nslcd-configuration}} list-of-map-entries maps | ||
| 18825 | Cette option permet d'ajouter des attributs personnalisés à rechercher à la | ||
| 18826 | place des attributs par défaut de la RFC 2307. C'est une liste de | ||
| 18827 | correspondances, consistant chacune en un nom, en l'attribut RFC 2307 à | ||
| 18828 | utiliser et l'expression de la requête pour l'attribut tel qu'il sera | ||
| 18829 | disponible dans le répertoire. | ||
| 18830 | |||
| 18831 | La valeur par défaut est @samp{()}. | ||
| 18832 | |||
| 18833 | @end deftypevr | ||
| 18834 | |||
| 18835 | @deftypevr {paramètre de @code{nslcd-configuration}} list-of-filter-entries filters | ||
| 18836 | Une liste de filtres consistant en le nom d'une correspondance à laquelle | ||
| 18837 | applique le filtre et en une expression de filtre de recherche LDAP. | ||
| 18838 | |||
| 18839 | La valeur par défaut est @samp{()}. | ||
| 18840 | |||
| 18841 | @end deftypevr | ||
| 18842 | |||
| 18843 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number bind-timelimit | ||
| 18844 | Spécifie la limite de temps en seconds à utiliser lors de la connexion au | ||
| 18845 | serveur de répertoire. La valeur par défaut est de 10 secondes. | ||
| 18846 | |||
| 18847 | La valeur par défaut est @samp{disabled}. | ||
| 18848 | |||
| 18849 | @end deftypevr | ||
| 18850 | |||
| 18851 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number timelimit | ||
| 18852 | Spécifie la limite de temps (en secondes) à attendre une réponse d'un | ||
| 18853 | serveur LDAP. La valeur de zéro, par défaut, permet d'attendre indéfiniment | ||
| 18854 | la fin des recherches. | ||
| 18855 | |||
| 18856 | La valeur par défaut est @samp{disabled}. | ||
| 18857 | |||
| 18858 | @end deftypevr | ||
| 18859 | |||
| 18860 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number idle-timelimit | ||
| 18861 | Spécifie la période d'inactivité (en seconde) après laquelle la connexion au | ||
| 18862 | serveur LDAP sera fermée. La valeur par défaut est de ne jamais la fermer. | ||
| 18863 | |||
| 18864 | La valeur par défaut est @samp{disabled}. | ||
| 18865 | |||
| 18866 | @end deftypevr | ||
| 18867 | |||
| 18868 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number reconnect-sleeptime | ||
| 18869 | Spécifie le nombre de secondes pendant laquelle attendre lorsque la | ||
| 18870 | connexion à tous les serveurs LDAP a échouée. Par défaut, il y a une | ||
| 18871 | seconde d'attente entre le premier échec et la tentative suivante. | ||
| 18872 | |||
| 18873 | La valeur par défaut est @samp{disabled}. | ||
| 18874 | |||
| 18875 | @end deftypevr | ||
| 18876 | |||
| 18877 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number reconnect-retrytime | ||
| 18878 | Spécifie la durée après laquelle le serveur LDAP est considéré comme | ||
| 18879 | définitivement inatteignable. Une fois cette durée atteinte, les tentatives | ||
| 18880 | de connexions n'auront plus lieu qu'une fois par cet intervalle de temps. | ||
| 18881 | La valeur par défaut est de 10 secondes. | ||
| 18882 | |||
| 18883 | La valeur par défaut est @samp{disabled}. | ||
| 18884 | |||
| 18885 | @end deftypevr | ||
| 18886 | |||
| 18887 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-ssl-option ssl | ||
| 18888 | Spécifie s'il faut utiliser SSL/TLS ou non (la valeur par défaut est non). | ||
| 18889 | Si 'start-tls est spécifié alors StartTLS est utilisé à la place de LDAP sur | ||
| 18890 | SSL. | ||
| 18891 | |||
| 18892 | La valeur par défaut est @samp{disabled}. | ||
| 18893 | |||
| 18894 | @end deftypevr | ||
| 18895 | |||
| 18896 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-tls-reqcert-option tls-reqcert | ||
| 18897 | Spécifie quelles vérifications effectuer sur les certificats donnés par les | ||
| 18898 | serveurs. La signification des valeurs est décrite dans la page de manuel | ||
| 18899 | de ldap.conf(5). | ||
| 18900 | |||
| 18901 | La valeur par défaut est @samp{disabled}. | ||
| 18902 | |||
| 18903 | @end deftypevr | ||
| 18904 | |||
| 18905 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string tls-cacertdir | ||
| 18906 | Spécifie le répertoire contenant les certificats X.509 pour | ||
| 18907 | l'authentification des pairs. Ce paramètre est ignoré quand il est utilisé | ||
| 18908 | avec GnuTLS. | ||
| 18909 | |||
| 18910 | La valeur par défaut est @samp{disabled}. | ||
| 18911 | |||
| 18912 | @end deftypevr | ||
| 18913 | |||
| 18914 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string tls-cacertfile | ||
| 18915 | Spécifie le chemin des certificats X.509 pour l'authentification des pairs. | ||
| 18916 | |||
| 18917 | La valeur par défaut est @samp{disabled}. | ||
| 18918 | |||
| 18919 | @end deftypevr | ||
| 18920 | |||
| 18921 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string tls-randfile | ||
| 18922 | Spécifie le chemin d'une source d'entropie. Ce paramètre est ignoré quand | ||
| 18923 | il est utilisé avec GnuTLS. | ||
| 18924 | |||
| 18925 | La valeur par défaut est @samp{disabled}. | ||
| 18926 | |||
| 18927 | @end deftypevr | ||
| 18928 | |||
| 18929 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string tls-ciphers | ||
| 18930 | Spécifie les suites de chiffrements à utiliser pour TLS en tant que chaîne | ||
| 18931 | de caractères. | ||
| 18932 | |||
| 18933 | La valeur par défaut est @samp{disabled}. | ||
| 18934 | |||
| 18935 | @end deftypevr | ||
| 18936 | |||
| 18937 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string tls-cert | ||
| 18938 | Spécifie le chemin vers le fichier contenant le certificat local pour | ||
| 18939 | l'authentification TLS du client. | ||
| 18940 | |||
| 18941 | La valeur par défaut est @samp{disabled}. | ||
| 18942 | |||
| 18943 | @end deftypevr | ||
| 18944 | |||
| 18945 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string tls-key | ||
| 18946 | Spécifie le chemin du fichier contenant la clef privée pour | ||
| 18947 | l'authentification TLS du client. | ||
| 18948 | |||
| 18949 | La valeur par défaut est @samp{disabled}. | ||
| 18950 | |||
| 18951 | @end deftypevr | ||
| 18952 | |||
| 18953 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number pagesize | ||
| 18954 | Indiquez un nombre plus grand que 0 pour demander des résultats paginés au | ||
| 18955 | serveur LDAP en accord avec la RFC 2696. La valeur par défaut (0) est de ne | ||
| 18956 | pas demander de pagination des résultats. | ||
| 18957 | |||
| 18958 | La valeur par défaut est @samp{disabled}. | ||
| 18959 | |||
| 18960 | @end deftypevr | ||
| 18961 | |||
| 18962 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-ignore-users-option nss-initgroups-ignoreusers | ||
| 18963 | Cette option évite les recherches d'appartenance au groupe à travers le LDAP | ||
| 18964 | pour les utilisateurs spécifiés. Autrement, la valeur 'all-local peut être | ||
| 18965 | utilisée. Avec cette valeur nslcd construit une liste complète des | ||
| 18966 | utilisateurs non-LDAP au démarrage. | ||
| 18967 | |||
| 18968 | La valeur par défaut est @samp{disabled}. | ||
| 18969 | |||
| 18970 | @end deftypevr | ||
| 18971 | |||
| 18972 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number nss-min-uid | ||
| 18973 | Cette option s'assure que les utilisateurs LDAP avec un id utilisateur | ||
| 18974 | numérique plus petit que la valeur spécifiée sont ignorés. | ||
| 18975 | |||
| 18976 | La valeur par défaut est @samp{disabled}. | ||
| 18977 | |||
| 18978 | @end deftypevr | ||
| 18979 | |||
| 18980 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number nss-uid-offset | ||
| 18981 | Cette option spécifie un décalage à ajouter à tous les id utilisateurs | ||
| 18982 | numériques LDAP. Cela peut être utile pour éviter des collisions d'id | ||
| 18983 | utilisateurs avec des utilisateurs locaux. | ||
| 18984 | |||
| 18985 | La valeur par défaut est @samp{disabled}. | ||
| 18986 | |||
| 18987 | @end deftypevr | ||
| 18988 | |||
| 18989 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-number nss-gid-offset | ||
| 18990 | Cette option spécifie un décalage à ajouter à tous les id de groupe | ||
| 18991 | numériques LDAP. Cela peut être utile pour éviter des collisions d'id | ||
| 18992 | utilisateurs avec des groupes locaux. | ||
| 18993 | |||
| 18994 | La valeur par défaut est @samp{disabled}. | ||
| 18995 | |||
| 18996 | @end deftypevr | ||
| 18997 | |||
| 18998 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-boolean nss-nested-groups | ||
| 18999 | Si cette option est indiquée, l'attribut de membre de groupe peut pointer | ||
| 19000 | vers un autre groupe. Les membres de groupes imbriqués sont aussi renvoyés | ||
| 19001 | dans le groupe de haut-niveau et les groupes parents sont renvoyés lorsqu'on | ||
| 19002 | recherche un utilisateur spécifique. La valeur par défaut est de ne pas | ||
| 19003 | effectuer de recherche supplémentaire sur les groupes imbriqués. | ||
| 19004 | |||
| 19005 | La valeur par défaut est @samp{disabled}. | ||
| 19006 | |||
| 19007 | @end deftypevr | ||
| 19008 | |||
| 19009 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-boolean nss-getgrent-skipmembers | ||
| 19010 | Si cette option est indiqée, la liste de membres du groupe n'est pas | ||
| 19011 | récupérée lorsqu'on cherche un groupe. Les recherches pour trouver les | ||
| 19012 | groupes auxquels un utilisateur appartient resteront fonctionnelles donc | ||
| 19013 | l'utilisateur obtiendra probablement les bons groupes à la connexion. | ||
| 19014 | |||
| 19015 | La valeur par défaut est @samp{disabled}. | ||
| 19016 | |||
| 19017 | @end deftypevr | ||
| 19018 | |||
| 19019 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-boolean nss-disable-enumeration | ||
| 19020 | Si cette option est indiquée, les fonctions qui causent le chargement de | ||
| 19021 | toutes les entrées d'utilisateur et de groupe depuis le répertoire ne | ||
| 19022 | pourront pas le faire. Cela peut grandement diminuer la charge du serveur | ||
| 19023 | LDAP dans des situations où il y a beaucoup d'utilisateurs et de groupes. | ||
| 19024 | Cette option n'est pas recommandées pour la plupart des configurations. | ||
| 19025 | |||
| 19026 | La valeur par défaut est @samp{disabled}. | ||
| 19027 | |||
| 19028 | @end deftypevr | ||
| 19029 | |||
| 19030 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string validnames | ||
| 19031 | Cette option peut être utilisée pour spécifier comment les noms | ||
| 19032 | d'utilisateurs et de groupes sont vérifiés sur le système. Ce motif est | ||
| 19033 | utilisé pour vérifier tous les noms d'utilisateurs et de groupes qui sont | ||
| 19034 | demandés et renvoyés par le LDAP. | ||
| 19035 | |||
| 19036 | La valeur par défaut est @samp{disabled}. | ||
| 19037 | |||
| 19038 | @end deftypevr | ||
| 19039 | |||
| 19040 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-boolean ignorecase | ||
| 19041 | Cela spécifie s'il faut ou non effectuer des recherches avec une | ||
| 19042 | correspondance sensible à la casse. Activer cela pourrait mener à des | ||
| 19043 | vulnérabilités de type contournement d'authentification sur le système et | ||
| 19044 | introduire des vulnérabilité d'empoisonnement de cache nscd qui permettent | ||
| 19045 | un déni de service. | ||
| 19046 | |||
| 19047 | La valeur par défaut est @samp{disabled}. | ||
| 19048 | |||
| 19049 | @end deftypevr | ||
| 19050 | |||
| 19051 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-boolean pam-authc-ppolicy | ||
| 19052 | Cette option spécifie si des contrôles de la politique de mots de passe sont | ||
| 19053 | demandés et gérés par le serveur LDAP à l'authentification de l'utilisateur. | ||
| 19054 | |||
| 19055 | La valeur par défaut est @samp{disabled}. | ||
| 19056 | |||
| 19057 | @end deftypevr | ||
| 19058 | |||
| 19059 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string pam-authc-search | ||
| 19060 | Par défaut nslcd effectue une recherche LDAP avec le mot de passe de | ||
| 19061 | l'utilisateur après BIND (authentification) pour s'assurer que l'opération | ||
| 19062 | BIND a bien réussi. La recherche par défaut est une simple vérification que | ||
| 19063 | le DN de l'utilisateur existe. Un filtre de recherche peut être spécifié | ||
| 19064 | pour l'utiliser à la place. Il devrait renvoyer au moins une entrée. | ||
| 19065 | |||
| 19066 | La valeur par défaut est @samp{disabled}. | ||
| 19067 | |||
| 19068 | @end deftypevr | ||
| 19069 | |||
| 19070 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string pam-authz-search | ||
| 19071 | Cette option permet la configuration fine et flexible de la vérification | ||
| 19072 | d'autorisation qui devrait être effectuée. Le filtre de recherche est | ||
| 19073 | exécuté et si une entrée correspond, l'accès est autorisé, sinon il est | ||
| 19074 | refusé. | ||
| 19075 | |||
| 19076 | La valeur par défaut est @samp{disabled}. | ||
| 19077 | |||
| 19078 | @end deftypevr | ||
| 19079 | |||
| 19080 | @deftypevr {paramètre de @code{nslcd-configuration}} maybe-string pam-password-prohibit-message | ||
| 19081 | Si cette option est indiquée, la modification de mot de passe par pam_ldap | ||
| 19082 | sera refusée et le message spécifié sera présenté à l'utilisateur à la | ||
| 19083 | place. Le message peut être utilisé pour rediriger les utilisateurs vers | ||
| 19084 | une autre méthode pour changer leur mot de passe. | ||
| 19085 | |||
| 19086 | La valeur par défaut est @samp{disabled}. | ||
| 19087 | |||
| 19088 | @end deftypevr | ||
| 19089 | |||
| 19090 | @deftypevr {paramètre de @code{nslcd-configuration}} list pam-services | ||
| 19091 | Liste de noms de service pam pour lesquels l'authentification LDAP devrait | ||
| 19092 | suffire. | ||
| 19093 | |||
| 19094 | La valeur par défaut est @samp{()}. | ||
| 19095 | |||
| 19096 | @end deftypevr | ||
| 19097 | |||
| 19098 | @c %end of generated documentation for nslcd-configuration | ||
| 19099 | |||
| 19100 | |||
| 19101 | @node Services web | ||
| 19102 | @subsection Services web | ||
| 19103 | |||
| 19104 | @cindex web | ||
| 19105 | @cindex www | ||
| 19106 | @cindex HTTP | ||
| 19107 | Le module @code{(gnu services web)} fournit le serveur Apache HTTP, le | ||
| 19108 | serveur web nginx et aussi un démon fastcgi. | ||
| 19109 | |||
| 19110 | @subsubheading Serveur Apache HTTP | ||
| 19111 | |||
| 19112 | @deffn {Variable Scheme} httpd-service-type | ||
| 19113 | Type de service pour le serveur @uref{https://httpd.apache.org/,Apache HTTP} | ||
| 19114 | (@dfn{httpd}). La valeur de ce type de service est un enregistrement | ||
| 19115 | @code{httpd-configuration}. | ||
| 19116 | |||
| 19117 | Un exemple de configuration simple est donné ci-dessous. | ||
| 19118 | |||
| 19119 | @example | ||
| 19120 | (service httpd-service-type | ||
| 19121 | (httpd-configuration | ||
| 19122 | (config | ||
| 19123 | (httpd-config-file | ||
| 19124 | (server-name "www.example.com") | ||
| 19125 | (document-root "/srv/http/www.example.com"))))) | ||
| 19126 | @end example | ||
| 19127 | |||
| 19128 | D'autres services peuvent aussi étendre @code{httpd-service-type} pour être | ||
| 19129 | ajouté à la configuration. | ||
| 19130 | |||
| 19131 | @example | ||
| 19132 | (simple-service 'my-extra-server httpd-service-type | ||
| 19133 | (list | ||
| 19134 | (httpd-virtualhost | ||
| 19135 | "*:80" | ||
| 19136 | (list (string-append | ||
| 19137 | "ServerName "www.example.com | ||
| 19138 | DocumentRoot \"/srv/http/www.example.com\""))))) | ||
| 19139 | @end example | ||
| 19140 | @end deffn | ||
| 19141 | |||
| 19142 | Les détails des types d'enregistrement @code{httpd-configuration}, | ||
| 19143 | @code{httpd-module}, @code{httpd-config-file} et @code{httpd-virtualhost} | ||
| 19144 | sont donnés plus bas. | ||
| 19145 | |||
| 19146 | @deffn {Type de données} httpd-configuration | ||
| 19147 | Ce type de données représente la configuration du service httpd. | ||
| 19148 | |||
| 19149 | @table @asis | ||
| 19150 | @item @code{package} (par défaut : @code{httpd}) | ||
| 19151 | Le paquet httpd à utiliser. | ||
| 19152 | |||
| 19153 | @item @code{pid-file} (par défaut : @code{"/var/run/httpd"}) | ||
| 19154 | Le fichier de pid utilisé par le service shepherd. | ||
| 19155 | |||
| 19156 | @item @code{config} (par défaut : @code{(httpd-config-file)}) | ||
| 19157 | Le fichier de configuration à utiliser avec le service httpd. La valeur par | ||
| 19158 | défaut est un enregistrement @code{httpd-config-file} mais cela peut aussi | ||
| 19159 | être un G-expression qui génère un fichier, par exemple un | ||
| 19160 | @code{plain-file}. Un fichier en dehors du dépôt peut aussi être spécifié | ||
| 19161 | avec une chaîne de caractères. | ||
| 19162 | |||
| 19163 | @end table | ||
| 19164 | @end deffn | ||
| 19165 | |||
| 19166 | @deffn {Type de données} httpd-module | ||
| 19167 | Ce type de données représente un module pour le service httpd. | ||
| 19168 | |||
| 19169 | @table @asis | ||
| 19170 | @item @code{name} | ||
| 19171 | Le nom du module. | ||
| 19172 | |||
| 19173 | @item @code{file} | ||
| 19174 | Le fichier pour le module. Cela peut être relatif au paquet httpd utilisé, | ||
| 19175 | l'emplacement absolu d'un fichier ou une G-expression pour un fichier dans | ||
| 19176 | le dépôt, par exemple @code{(file-append mod-wsgi "/modules/mod_wsgi.so")}. | ||
| 19177 | |||
| 19178 | @end table | ||
| 19179 | @end deffn | ||
| 19180 | |||
| 19181 | @defvr {Variable Scheme} %default-httpd-modules | ||
| 19182 | Une liste par défaut des objets @code{httpd-module}. | ||
| 19183 | @end defvr | ||
| 19184 | |||
| 19185 | @deffn {Type de données} httpd-config-file | ||
| 19186 | Ce type de données représente un fichier de configuration pour le service | ||
| 19187 | httpd. | ||
| 19188 | |||
| 19189 | @table @asis | ||
| 19190 | @item @code{modules} (par défaut : @code{%default-httpd-modules}) | ||
| 19191 | Les modules à charger. Les modules supplémentaires peuvent être ajoutés ici | ||
| 19192 | ou chargés par des configuration supplémentaires. | ||
| 19193 | |||
| 19194 | Par exemple, pour gérer les requêtes pour des fichiers PHP, vous pouvez | ||
| 19195 | utiliser le module @code{mod_proxy_fcgi} d'Apache avec | ||
| 19196 | @code{php-fpm-service-type} : | ||
| 19197 | |||
| 19198 | @example | ||
| 19199 | (service httpd-service-type | ||
| 19200 | (httpd-configuration | ||
| 19201 | (config | ||
| 19202 | (httpd-config-file | ||
| 19203 | (modules (cons* | ||
| 19204 | (httpd-module | ||
| 19205 | (name "proxy_module") | ||
| 19206 | (file "modules/mod_proxy.so")) | ||
| 19207 | (httpd-module | ||
| 19208 | (name "proxy_fcgi_module") | ||
| 19209 | (file "modules/mod_proxy_fcgi.so")) | ||
| 19210 | %default-httpd-modules)) | ||
| 19211 | (extra-config (list "\ | ||
| 19212 | <FilesMatch \\.php$> | ||
| 19213 | SetHandler \"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\" | ||
| 19214 | </FilesMatch>")))))) | ||
| 19215 | (service php-fpm-service-type | ||
| 19216 | (php-fpm-configuration | ||
| 19217 | (socket "/var/run/php-fpm.sock") | ||
| 19218 | (socket-group "httpd"))) | ||
| 19219 | @end example | ||
| 19220 | |||
| 19221 | @item @code{server-root} (par défaut : @code{httpd}) | ||
| 19222 | Le @code{ServerRoot} dans le fichier de configuration, par défaut le paquet | ||
| 19223 | httpd. Les directives comme @code{Include} et @code{LoadModule} sont prises | ||
| 19224 | relativement à la racine du serveur. | ||
| 19225 | |||
| 19226 | @item @code{server-name} (par défaut : @code{#f}) | ||
| 19227 | Le @code{ServerName} dans le fichier de configuration, utilisé pour | ||
| 19228 | spécifier le schéma de requête, le nom d'hôte et le port que le serveur | ||
| 19229 | utilise pour s'identifier. | ||
| 19230 | |||
| 19231 | Cela n'a pas besoin d'être dans la configuration du serveur, et peut être | ||
| 19232 | spécifié dans les hôtes virtuels. La valeur par défaut est @code{#f} pour | ||
| 19233 | ne pas spécifier de @code{ServerName}. | ||
| 19234 | |||
| 19235 | @item @code{document-root} (par défaut : @code{"/srv/http"}) | ||
| 19236 | Le @code{DocumentRoot} depuis lequel les fichiers seront servis. | ||
| 19237 | |||
| 19238 | @item @code{listen} (par défaut : @code{'("80")}) | ||
| 19239 | La liste des valeurs pour les directives @code{Listen} dans le fichier de | ||
| 19240 | configuration. La valeur devrait être une liste de chaînes, où chacune | ||
| 19241 | spécifie le port sur lequel écouter et éventuellement une adresse IP et un | ||
| 19242 | protocole à utiliser. | ||
| 19243 | |||
| 19244 | @item @code{pid-file} (par défaut : @code{"/var/run/httpd"}) | ||
| 19245 | Le @code{PidFile} à utiliser. Cela devrait correspondre à @code{pid-file} | ||
| 19246 | indiqué dans @code{httpd-configuration} pour que le service Shepherd soit | ||
| 19247 | correctement configuré. | ||
| 19248 | |||
| 19249 | @item @code{error-log} (par défaut : @code{"/var/log/httpd/error_log"}) | ||
| 19250 | Le @code{ErrorLog} où le serveur écrit les journaux d'erreurs. | ||
| 19251 | |||
| 19252 | @item @code{user} (par défaut : @code{"httpd"}) | ||
| 19253 | Le @code{User} en tant que lequel le serveur répondra aux requêtes. | ||
| 19254 | |||
| 19255 | @item @code{group} (par défaut : @code{"httpd"}) | ||
| 19256 | Le @code{Group} que le serveur utilisera pour répondre aux requêtes. | ||
| 19257 | |||
| 19258 | @item @code{extra-config} (par défaut : @code{(list "TypesConfig etc/httpd/mime.types")}) | ||
| 19259 | Une liste plate de chaînes et de G-expressions qui seront ajoutées à la fin | ||
| 19260 | du fichier de configuration. | ||
| 19261 | |||
| 19262 | N'importe quelle valeur avec laquelle le service est étendu sera ajouté à | ||
| 19263 | cette liste. | ||
| 19264 | |||
| 19265 | @end table | ||
| 19266 | @end deffn | ||
| 19267 | |||
| 19268 | @deffn {Type de données} httpd-virtualhost | ||
| 19269 | Ce type de données représente la configuration d'un hôte virtuel pour le | ||
| 19270 | service httpd. | ||
| 19271 | |||
| 19272 | Ils devraient être ajoutés à extra-config dans httpd-service. | ||
| 19273 | |||
| 19274 | @example | ||
| 19275 | (simple-service 'my-extra-server httpd-service-type | ||
| 19276 | (list | ||
| 19277 | (httpd-virtualhost | ||
| 19278 | "*:80" | ||
| 19279 | (list (string-append | ||
| 19280 | "ServerName "www.example.com | ||
| 19281 | DocumentRoot \"/srv/http/www.example.com\""))))) | ||
| 19282 | @end example | ||
| 19283 | |||
| 19284 | @table @asis | ||
| 19285 | @item @code{addresses-and-ports} | ||
| 19286 | L'adresse et le port pour la directive @code{VirtualHost}. | ||
| 19287 | |||
| 19288 | @item @code{contents} | ||
| 19289 | Le contenu de la directive @code{VirtualHost}, cela devrait être une liste | ||
| 19290 | de chaîne et de G-expressions. | ||
| 19291 | |||
| 19292 | @end table | ||
| 19293 | @end deffn | ||
| 19294 | |||
| 19295 | @subsubheading NGINX | ||
| 19296 | |||
| 19297 | @deffn {Variable Scheme} nginx-service-type | ||
| 19298 | Type de service pour le serveur web @uref{https://nginx.org/,NGinx}. La | ||
| 19299 | valeur de ce service est un enregistrement @code{<nginx-configuration>}. | ||
| 19300 | |||
| 19301 | Un exemple de configuration simple est donné ci-dessous. | ||
| 19302 | |||
| 19303 | @example | ||
| 19304 | (service nginx-service-type | ||
| 19305 | (nginx-configuration | ||
| 19306 | (server-blocks | ||
| 19307 | (list (nginx-server-configuration | ||
| 19308 | (server-name '("www.example.com")) | ||
| 19309 | (root "/srv/http/www.example.com")))))) | ||
| 19310 | @end example | ||
| 19311 | |||
| 19312 | En plus d'ajouter des blocs de serveurs dans la configuration du service | ||
| 19313 | directement, ce service peut être étendu par d'autres services pour ajouter | ||
| 19314 | des blocs de serveurs, comme dans cet exemple : | ||
| 19315 | |||
| 19316 | @example | ||
| 19317 | (simple-service 'my-extra-server nginx-service-type | ||
| 19318 | (list (nginx-server-configuration | ||
| 19319 | (root "/srv/http/extra-website") | ||
| 19320 | (try-files (list "$uri" "$uri/index.html"))))) | ||
| 19321 | @end example | ||
| 19322 | @end deffn | ||
| 19323 | |||
| 19324 | Au démarrage, @command{nginx} n'a pas encore lu son fichier de | ||
| 19325 | configuration, donc il utilise les fichiers par défaut pour les messages | ||
| 19326 | d'erreur. S'il échoue à charger sa configuration, c'est là où les messages | ||
| 19327 | seront enregistrés. Après la lecture du fichier de configuration, le | ||
| 19328 | fichier de journal d'erreur par défaut change en fonction de celle-ci. Dans | ||
| 19329 | notre cas, les messages d'erreur au démarrage se trouvent dans | ||
| 19330 | @file{/var/run/nginx/logs/error.log} et après la configuration dans | ||
| 19331 | @file{/var/log/nginx/error.log}. Ce second emplacement peut être modifié | ||
| 19332 | avec l'option de configuration @var{log-directory}. | ||
| 19333 | |||
| 19334 | @deffn {Type de données} nginx-configuration | ||
| 19335 | Ce type de données représente la configuration de NGinx. Certaines | ||
| 19336 | configurations peuvent se faire ici et d'autres fournissent des types | ||
| 19337 | d'enregistrement ou éventuellement, on peut fournir un fichier de | ||
| 19338 | configuration. | ||
| 19339 | |||
| 19340 | @table @asis | ||
| 19341 | @item @code{nginx} (par défaut : @code{nginx}) | ||
| 19342 | Le paquet nginx à utiliser. | ||
| 19343 | |||
| 19344 | @item @code{log-directory} (par défaut : @code{"/var/log/nginx"}) | ||
| 19345 | Le répertoire dans lequel NGinx écrira ses fichiers journaux. | ||
| 19346 | |||
| 19347 | @item @code{run-directory} (par défaut : @code{"/var/run/nginx"}) | ||
| 19348 | Le répertoire dans lequel NGinx créera un fichier de pid et écrira des | ||
| 19349 | fichiers temporaires. | ||
| 19350 | |||
| 19351 | @item @code{server-blocks} (par défaut : @code{'()}) | ||
| 19352 | Une liste de @dfn{blocs serveur} à créer dans le fichier de configuration | ||
| 19353 | généré, dont les éléments sont de type @code{<nginx-server-configuration>}. | ||
| 19354 | |||
| 19355 | L'exemple suivant paramètre NGinx pour servir @code{www.example.com} depuis | ||
| 19356 | le répertoire @code{/srv/http/www.example.com} sans utiliser HTTPS. | ||
| 19357 | @example | ||
| 19358 | (service nginx-service-type | ||
| 19359 | (nginx-configuration | ||
| 19360 | (server-blocks | ||
| 19361 | (list (nginx-server-configuration | ||
| 19362 | (server-name '("www.example.com")) | ||
| 19363 | (root "/srv/http/www.example.com")))))) | ||
| 19364 | @end example | ||
| 19365 | |||
| 19366 | @item @code{upstream-blocks} (par défaut : @code{'()}) | ||
| 19367 | Une liste de @dfn{blocs amont} à créer dans le fichier de configuration | ||
| 19368 | généré, dont les éléments sont de type | ||
| 19369 | @code{<nginx-upstream-configuration>}. | ||
| 19370 | |||
| 19371 | Configurer les serveurs amont à travers les @code{upstream-blocks} peut être | ||
| 19372 | utile en combinaison avec @code{locations} dans les enregistrements | ||
| 19373 | @code{<nginx-server-configuration>}. L'exemple suivant crée une | ||
| 19374 | configuration de serveur avec une configuration « location » qui sera | ||
| 19375 | mandataire pour une configuration amont, qui gérera les requêtes avec deux | ||
| 19376 | serveurs. | ||
| 19377 | |||
| 19378 | @example | ||
| 19379 | (service | ||
| 19380 | nginx-service-type | ||
| 19381 | (nginx-configuration | ||
| 19382 | (server-blocks | ||
| 19383 | (list (nginx-server-configuration | ||
| 19384 | (server-name '("www.example.com")) | ||
| 19385 | (root "/srv/http/www.example.com") | ||
| 19386 | (locations | ||
| 19387 | (list | ||
| 19388 | (nginx-location-configuration | ||
| 19389 | (uri "/path1") | ||
| 19390 | (body '("proxy_pass http://server-proxy;")))))))) | ||
| 19391 | (upstream-blocks | ||
| 19392 | (list (nginx-upstream-configuration | ||
| 19393 | (name "server-proxy") | ||
| 19394 | (servers (list "server1.example.com" | ||
| 19395 | "server2.example.com"))))))) | ||
| 19396 | @end example | ||
| 19397 | |||
| 19398 | @item @code{file} (par défaut : @code{#f}) | ||
| 19399 | Si un fichier de configuration @var{file} est fourni, il sera utilisé au | ||
| 19400 | lieu de générer un fichier de configuration à partir des | ||
| 19401 | @code{log-directory}, @code{run-directory}, @code{server-blocks} et | ||
| 19402 | @code{upstream-blocks} fournis. Pour un bon fonctionnement, ces arguments | ||
| 19403 | devraient correspondre à ce qui se trouve dans @var{file} pour s'assurer que | ||
| 19404 | les répertoires sont créé lorsque le service est activé. | ||
| 19405 | |||
| 19406 | Cela peut être utile si vous avez déjà un fichier de configuration existant | ||
| 19407 | ou s'il n'est pas possible de faire ce dont vous avez besoin avec les autres | ||
| 19408 | parties de l'enregistrement nginx-configuration. | ||
| 19409 | |||
| 19410 | @item @code{server-names-hash-bucket-size} (par défaut : @code{#f}) | ||
| 19411 | Taille du seau pour les tables de hashage des noms de serveurs, par dauft | ||
| 19412 | @code{#f} pour utilise la taille des lignes de cache du processeur. | ||
| 19413 | |||
| 19414 | @item @code{server-names-hash-bucket-max-size} (par défaut : @code{#f}) | ||
| 19415 | Taille maximum des seaux pour les tables de hashage des serveurs de noms. | ||
| 19416 | |||
| 19417 | @item @code{extra-content} (par défaut : @code{""}) | ||
| 19418 | Contenu supplémentaire du bloc @code{http}. Cela devrait être une chaîne ou | ||
| 19419 | un G-expression. | ||
| 19420 | |||
| 19421 | @end table | ||
| 19422 | @end deffn | ||
| 19423 | |||
| 19424 | @deftp {Type de données} nginx-server-configuration | ||
| 19425 | Type de données représentant la configuration d'un bloc serveur de nginx. | ||
| 19426 | Ce type a les paramètres suivants : | ||
| 19427 | |||
| 19428 | @table @asis | ||
| 19429 | @item @code{listen} (par défaut : @code{'("80" "443 ssl")}) | ||
| 19430 | Chaque directive @code{listen} indique l'adresse et le port pour le | ||
| 19431 | protocole IP ou le chemin d'un socket UNIX-domain sur lequel le serveur | ||
| 19432 | acceptera les connexions. On peut spécifier l'adresse et le port, ou juste | ||
| 19433 | l'adresse ou juste le port. Une adresse peut aussi être un nom d'hôte, par | ||
| 19434 | exemple : | ||
| 19435 | |||
| 19436 | @example | ||
| 19437 | '("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000") | ||
| 19438 | @end example | ||
| 19439 | |||
| 19440 | @item @code{server-name} (par défaut : @code{(list 'default)}) | ||
| 19441 | Une liste de noms de serveurs que ce serveur représente. @code{'default} | ||
| 19442 | représente le serveur par défaut pour les connexions qui ne correspondent à | ||
| 19443 | aucun autre serveur. | ||
| 19444 | |||
| 19445 | @item @code{root} (par défaut : @code{"/srv/http"}) | ||
| 19446 | Racine du site web que sert nginx. | ||
| 19447 | |||
| 19448 | @item @code{locations} (par défaut : @code{'()}) | ||
| 19449 | Une liste d'enregistrements @dfn{nginx-location-configuration} ou | ||
| 19450 | @dfn{nginx-named-location-configuration} à utiliser dans ce bloc serveur. | ||
| 19451 | |||
| 19452 | @item @code{index} (par défaut : @code{(list "index.html")}) | ||
| 19453 | Fichiers d'index à chercher lorsque les clients demandent un répertoire. | ||
| 19454 | S'il ne peut pas être trouvé, Nginx enverra la liste des fichiers dans le | ||
| 19455 | répertoire. | ||
| 19456 | |||
| 19457 | @item @code{try-files} (par défaut : @code{'()}) | ||
| 19458 | Une liste de fichiers dont l'existence doit être vérifiée dans l'ordre | ||
| 19459 | spécifié. @code{nginx} utilisera le premier fichier trouvé pour satisfaire | ||
| 19460 | la requête. | ||
| 19461 | |||
| 19462 | @item @code{ssl-certificate} (par défaut : @code{#f}) | ||
| 19463 | Où trouver les certificats pour les connexions sécurisées. Indiquez | ||
| 19464 | @code{#f} si vous n'avez pas de certificats et que vous ne voulez pas | ||
| 19465 | utiliser HTTPS. | ||
| 19466 | |||
| 19467 | @item @code{ssl-certificate-key} (par défaut : @code{#f}) | ||
| 19468 | Où trouver la clef privée pour les connexions sécurisées. Indiquez | ||
| 19469 | @code{#f} si vous n'avez pas de clef et que vous ne voulez pas utiliser | ||
| 19470 | HTTPS. | ||
| 19471 | |||
| 19472 | @item @code{server-tokens?} (par défaut : @code{#f}) | ||
| 19473 | Indique si le serveur devrait ajouter sa configuration dans les réponses. | ||
| 19474 | |||
| 19475 | @item @code{raw-content} (par défaut : @code{'()}) | ||
| 19476 | Une liste de lignes brutes à ajouter dans le bloc serveur. | ||
| 19477 | |||
| 19478 | @end table | ||
| 19479 | @end deftp | ||
| 19480 | |||
| 19481 | @deftp {Type de données} nginx-upstream-configuration | ||
| 19482 | Type de données représentant la configuration d'un bloc @code{upstream} | ||
| 19483 | nginx. Ce type a les paramètres suivants : | ||
| 19484 | |||
| 19485 | @table @asis | ||
| 19486 | @item @code{name} | ||
| 19487 | Nome de ces groupe de serveurs. | ||
| 19488 | |||
| 19489 | @item @code{serveurs} | ||
| 19490 | Spécifie les adresses des serveurs dans le groupe. L'adresse peut être | ||
| 19491 | spécifié avec une adresse IP (p.@: ex.@: @samp{127.0.0.1}), un nom de | ||
| 19492 | domaine (p.@: ex.@: @samp{backend1.example.com}) ou un chemin vers un socket | ||
| 19493 | UNIX avec le préfixe @samp{unix:}. Pour les adresse utilisant une adresse | ||
| 19494 | IP ou un nom de domaine, le port par défaut est 80 et un port différent peut | ||
| 19495 | être spécifié explicitement. | ||
| 19496 | |||
| 19497 | @end table | ||
| 19498 | @end deftp | ||
| 19499 | |||
| 19500 | @deftp {Type de données} nginx-location-configuration | ||
| 19501 | Type de données représentant la configuration d'un bloc @code{location} | ||
| 19502 | nginx. Ce type a les paramètres suivants : | ||
| 19503 | |||
| 19504 | @table @asis | ||
| 19505 | @item @code{uri} | ||
| 19506 | URI qui correspond à ce bloc. | ||
| 19507 | |||
| 19508 | @anchor{nginx-location-configuration body} | ||
| 19509 | @item @code{body} | ||
| 19510 | Corps du block location, spécifié comme une liste de chaînes de caractères. | ||
| 19511 | Cela peut contenir de nombreuses directives de configuration. Par exemple, | ||
| 19512 | pour passer des requêtes à un groupe de serveurs amont définis dans un bloc | ||
| 19513 | @code{nginx-upstream-configuration}, la directive suivante peut être | ||
| 19514 | spécifiée dans le corps : @samp{(list "proxy_pass http://upstream-name;")}. | ||
| 19515 | |||
| 19516 | @end table | ||
| 19517 | @end deftp | ||
| 19518 | |||
| 19519 | @deftp {Type de données} nginx-named-location-configuration | ||
| 19520 | Type de données représentant la configuration d'un bloc location nginx | ||
| 19521 | nommé. Les blocs location nommés sont utilisé les redirections de requêtes | ||
| 19522 | et pas pour le traitement des requêtes normales. Ce type a les paramètres | ||
| 19523 | suivants : | ||
| 19524 | |||
| 19525 | @table @asis | ||
| 19526 | @item @code{name} | ||
| 19527 | Nom pour identifier ce bloc location. | ||
| 19528 | |||
| 19529 | @item @code{body} | ||
| 19530 | @xref{nginx-location-configuration body}, comme le corps d'un bloc location | ||
| 19531 | nommé peut être utilisé de la même manière que | ||
| 19532 | @code{nginx-location-configuration body}. Une restriction est que le corps | ||
| 19533 | d'un bloc location nommé ne peut pas contenir de bloc location. | ||
| 19534 | |||
| 19535 | @end table | ||
| 19536 | @end deftp | ||
| 19537 | |||
| 19538 | @subsubheading Cache Varnish | ||
| 19539 | @cindex Varnish | ||
| 19540 | Varnish est un serveur de cache rapide qui se trouve entre les applications | ||
| 19541 | web et les utilisateurs. Il sert de serveur mandataire pour les requêtes | ||
| 19542 | des clients et met les URL accédées en cache pour que plusieurs requêtes à | ||
| 19543 | la même ressource ne crée qu'une requête au moteur. | ||
| 19544 | |||
| 19545 | @defvr {Variable Scheme} varnish-service-type | ||
| 19546 | Type de service pour le démon Varnish. | ||
| 19547 | @end defvr | ||
| 19548 | |||
| 19549 | @deftp {Type de données} varnish-configuration | ||
| 19550 | Type de données représentant la configuration du service @code{varnish}. Ce | ||
| 19551 | type a les paramètres suivants : | ||
| 19552 | |||
| 19553 | @table @asis | ||
| 19554 | @item @code{package} (par défaut : @code{varnish}) | ||
| 19555 | Le paquet Varnish à utiliser. | ||
| 19556 | |||
| 19557 | @item @code{name} (par défaut : @code{"default"}) | ||
| 19558 | Un nom pour cet instance de Varnish. Varnish va créer un répertoire dans | ||
| 19559 | @file{/var/varnish/} avec ce nom et gardera des fichiers temporaires à cet | ||
| 19560 | endroit. Si le nom commence par une barre oblique, il est interprété comme | ||
| 19561 | un nom de répertoire absolu. | ||
| 19562 | |||
| 19563 | Passez l'argument @code{-n} aux autres programmes Varnish pour vous | ||
| 19564 | connecter à l'instance nommée, p.@: ex.@: @command{varnishncsa -n default}. | ||
| 19565 | |||
| 19566 | @item @code{backend} (par défaut : @code{"localhost:8080"}) | ||
| 19567 | Le moteur à utiliser. Cette option n'a pas d'effet si @code{vcl} est vrai. | ||
| 19568 | |||
| 19569 | @item @code{vcl} (par défaut : #f) | ||
| 19570 | Le programme @dfn{VCL} (Varnish Configuration Language) à lancer. Si la | ||
| 19571 | valeur est @code{#f}, Varnsh servira de mandataire pour @code{backend} avec | ||
| 19572 | la configuration par défaut. Sinon, ce doit être un objet simili-fichier | ||
| 19573 | avec une syntaxe VCL valide. | ||
| 19574 | |||
| 19575 | @c Varnish does not support HTTPS, so keep this URL to avoid confusion. | ||
| 19576 | Par exemple, pour créer un miroir de @url{http://www.gnu.org,www.gnu.org} | ||
| 19577 | avec VCL vous pouvez faire quelque chose comme cela : | ||
| 19578 | |||
| 19579 | @example | ||
| 19580 | (define %gnu-mirror | ||
| 19581 | (plain-file | ||
| 19582 | "gnu.vcl" | ||
| 19583 | "vcl 4.1; | ||
| 19584 | backend gnu @{ .host = "www.gnu.org"; @}")) | ||
| 19585 | |||
| 19586 | (operating-system | ||
| 19587 | ... | ||
| 19588 | (services (cons (service varnish-service-type | ||
| 19589 | (varnish-configuration | ||
| 19590 | (listen '(":80")) | ||
| 19591 | (vcl %gnu-mirror))) | ||
| 19592 | %base-services))) | ||
| 19593 | @end example | ||
| 19594 | |||
| 19595 | On peut inspecter la configuration d'une instance Varnish actuellement | ||
| 19596 | lancée en utilisant le programme @command{varnishadm}. | ||
| 19597 | |||
| 19598 | Consultez le @url{https://varnish-cache.org/docs/,guide utilisateur de | ||
| 19599 | varnish} et le @url{https://book.varnish-software.com/4.0/,livre varnish} | ||
| 19600 | pour une documentation complète sur Varnish et son langage de configuration. | ||
| 19601 | |||
| 19602 | @item @code{listen} (par défaut : @code{'("localhost:80")}) | ||
| 19603 | Liste des adresses sur lesquelles écoute Varnish. | ||
| 19604 | |||
| 19605 | @item @code{storage} (par défaut : @code{'("malloc,128m")}) | ||
| 19606 | Liste de moteurs de stockage qui seront disponibles en VCL. | ||
| 19607 | |||
| 19608 | @item @code{parameters} (par défaut : @code{'()}) | ||
| 19609 | Liste des paramètres à l'exécution de la forme @code{'(("parameter" | ||
| 19610 | . "value"))}. | ||
| 19611 | |||
| 19612 | @item @code{extra-options} (par défaut : @code{'()}) | ||
| 19613 | Arguments supplémentaires à passer au processus @command{varnishd}. | ||
| 19614 | |||
| 19615 | @end table | ||
| 19616 | @end deftp | ||
| 19617 | |||
| 19618 | @subsubheading FastCGI | ||
| 19619 | @cindex fastcgi | ||
| 19620 | @cindex fcgiwrap | ||
| 19621 | FastCGI est une interface entre le frontal et le moteur d'un service web. | ||
| 19622 | C'est un dispositif quelque peu désuet ; les nouveaux services devraient | ||
| 19623 | généralement juste parler HTTP entre le frontal et le moteur. Cependant il | ||
| 19624 | y a un certain nombre de services de moteurs comme PHP ou l'accès aux dépôts | ||
| 19625 | Git optimisé en HTTP qui utilisent FastCGI, donc nous le supportons dans | ||
| 19626 | Guix. | ||
| 19627 | |||
| 19628 | Pour utiliser FastCGI, vous configurez le serveur web frontal (p.@: ex.@: | ||
| 19629 | nginx) pour envoyer un sous-ensemble de ses requêtes au moteur fastcgi, qui | ||
| 19630 | écoute sur un socket UNIX ou TCP local. Il y a un programme @code{fcgiwrap} | ||
| 19631 | intermédiaire qui se trouve entre le processus du moteur et le serveur web. | ||
| 19632 | Le frontal indique quel moteur lancer, en passant cette information au | ||
| 19633 | processus @code{fcgiwrap}. | ||
| 19634 | |||
| 19635 | @defvr {Variable Scheme} fcgiwrap-service-type | ||
| 19636 | Un type de service pour le mandataire FastCGI @code{fcgiwrap}. | ||
| 19637 | @end defvr | ||
| 19638 | |||
| 19639 | @deftp {Type de données} fcgiwrap-configuration | ||
| 19640 | Type de données représentant la configuration du service @code{fcgiwrap}. | ||
| 19641 | Ce type a les paramètres suivants : | ||
| 19642 | @table @asis | ||
| 19643 | @item @code{package} (par défaut : @code{fcgiwrap}) | ||
| 19644 | Le paquet fcgiwrap à utiliser. | ||
| 19645 | |||
| 19646 | @item @code{socket} (par défaut : @code{tcp:127.0.0.1:9000}) | ||
| 19647 | Le socket sur lequel le processus @code{fcgiwrap} écoute, en tant que chaîne | ||
| 19648 | de caractères. Les valeurs valides de @var{socket} sont | ||
| 19649 | @code{unix:@var{/path/to/unix/socket}}, | ||
| 19650 | @code{tcp:@var{dot.ted.qu.ad}:@var{port}} et | ||
| 19651 | @code{tcp6:[@var{ipv6_addr}]:port}. | ||
| 19652 | |||
| 19653 | @item @code{user} (par défaut : @code{fcgiwrap}) | ||
| 19654 | @itemx @code{group} (par défaut : @code{fcgiwrap}) | ||
| 19655 | Les noms de l'utilisateur et du groupe, en tant que chaînes de caractères, | ||
| 19656 | sous lesquels lancer le processus @code{fcgiwrap}. Le service | ||
| 19657 | @code{fastcgi} s'assurera que si l'utilisateur demande les noms | ||
| 19658 | d'utilisateurs et de groupes @code{fcgiwrap} l'utilisateur et le groupe | ||
| 19659 | correspondant seront présents sur le système. | ||
| 19660 | |||
| 19661 | Il est possible de configurer un service web soutenu par FastCGI pour passer | ||
| 19662 | les informations d'authentification HTTP depuis le frontal jusqu'au moteur, | ||
| 19663 | et de permettre à @code{fcgiwrap} dans lancer le processus de moteur avec | ||
| 19664 | l'utilisateur correspondant. Pour activer cette fonctionnalité sur le | ||
| 19665 | moteur, lancez @code{fcgiwrap} en tant qu'utilisateur et groupe | ||
| 19666 | @code{root}. Remarquez que cette fonctionnalité doit aussi être configurée | ||
| 19667 | sur le frontal. | ||
| 19668 | @end table | ||
| 19669 | @end deftp | ||
| 19670 | |||
| 19671 | @cindex php-fpm | ||
| 19672 | PHP-FPM (FastCGI Process Manager) est une implémentation FastCGI de PHP | ||
| 19673 | alternative avec quelques fonctionnalités supplémentaires utiles pour les | ||
| 19674 | sites de toutes tailles. | ||
| 19675 | |||
| 19676 | Ces fonctionnalités comprennent : | ||
| 19677 | @itemize @bullet | ||
| 19678 | @item La création de processus adaptative | ||
| 19679 | @item Des statistiques de base (comme le mod_status d'Apache) | ||
| 19680 | @item La gestion des processus avancée avec arrêt et démarrage sans heurts | ||
| 19681 | @item La possibilité de démarrer des processus de travail avec différents uid/gid/chroot/environnement | ||
| 19682 | et différents php.ini (à la place de safe_mode) | ||
| 19683 | @item L'enregistrement des journaux sur stdout et stderr | ||
| 19684 | @item Le redémarrage d'urgence dans le cas de la destruction accidentelle du cache des opcodes | ||
| 19685 | @item Le support des téléversements accélérés | ||
| 19686 | @item Le support de « showlog » | ||
| 19687 | @item Des améliorations à FastCGI, comme fastcgi_finish_request() - | ||
| 19688 | une fonction spéciale pour terminer la requête et nettoyer toutes les | ||
| 19689 | données tout en continuant à faire d'autres choses qui prennent du temps | ||
| 19690 | (conversion vidéo, gestion des stats, etc…). | ||
| 19691 | @end itemize | ||
| 19692 | …@: et bien plus. | ||
| 19693 | |||
| 19694 | @defvr {Variable Scheme} php-fpm-service-type | ||
| 19695 | Un type de service pour @code{php-fpm}. | ||
| 19696 | @end defvr | ||
| 19697 | |||
| 19698 | @deftp {Type de données} php-fpm-configuration | ||
| 19699 | Type de données pour la configuration du service php-fpm. | ||
| 19700 | @table @asis | ||
| 19701 | @item @code{php} (par défaut : @code{php}) | ||
| 19702 | Le paquet php à utiliser. | ||
| 19703 | @item @code{socket} (par défaut : @code{(string-append "/var/run/php" (version-major (package-version php)) "-fpm.sock")}) | ||
| 19704 | L'adresse sur laquelle accepter les requêtes FastCGI. Les syntaxes valides | ||
| 19705 | sont : | ||
| 19706 | @table @asis | ||
| 19707 | @item @code{"ip.add.re.ss:port"} | ||
| 19708 | Écoute sur un socket TCP sur l'adresse spécifiée sur un port spécifié. | ||
| 19709 | @item @code{"port"} | ||
| 19710 | Écoute sur un socket TCP sur toutes les adresse sur un port spécifique. | ||
| 19711 | @item @code{"/path/to/unix/socket"} | ||
| 19712 | Écoute sur un socket unix. | ||
| 19713 | @end table | ||
| 19714 | |||
| 19715 | @item @code{user} (par défaut : @code{php-fpm}) | ||
| 19716 | Utilisateur à qui appartiendra le processus de travail de php. | ||
| 19717 | @item @code{group} (par défaut : @code{php-fpm}) | ||
| 19718 | Groupe du processus de travail. | ||
| 19719 | @item @code{socket-user} (par défaut : @code{php-fpm}) | ||
| 19720 | Utilisateur qui peut parler au socket php-fpm. | ||
| 19721 | @item @code{socket-group} (par défaut : @code{php-fpm}) | ||
| 19722 | Groupe qui peut parler au socket php-fpm. | ||
| 19723 | @item @code{pid-file} (par défaut : @code{(string-append "/var/run/php" (version-major (package-version php)) "-fpm.pid")}) | ||
| 19724 | Le pid de php-fpm est écrit dans ce fichier une fois que le service a | ||
| 19725 | démarré. | ||
| 19726 | @item @code{log-file} (par défaut : @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.log")}) | ||
| 19727 | Fichier de journal pour le processus maître de php-fpm. | ||
| 19728 | @item @code{process-manager} (par défaut : @code{(php-fpm-dynamic-process-manager-configuration)}) | ||
| 19729 | Configuration détaillée pour le gestionnaire de processus de php-fpm. Il | ||
| 19730 | doit s'agir soit de : | ||
| 19731 | @table @asis | ||
| 19732 | @item @code{<php-fpm-dynamic-process-manager-configuration>} | ||
| 19733 | @item @code{<php-fpm-static-process-manager-configuration> ou} | ||
| 19734 | @item @code{<php-fpm-on-demand-process-manager-configuration>} | ||
| 19735 | @end table | ||
| 19736 | @item @code{display-errors} (par défaut : @code{#f}) | ||
| 19737 | Détermine si les erreurs et les avertissements php doivent être envoyés aux | ||
| 19738 | clients et affichés dans leur navigateur. Cela est utile pour un | ||
| 19739 | développement php local, mais un risque pour la sécurité pour les sites | ||
| 19740 | publics, comme les messages d'erreur peuvent révéler des mots de passes et | ||
| 19741 | des données personnelles. | ||
| 19742 | @item @code{timezone} (par défaut : @code{#f}) | ||
| 19743 | Spécifie le paramètre @code{php_admin_value[date.timezone]}. | ||
| 19744 | @item @code{workers-logfile} (par défaut : @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")}) | ||
| 19745 | Ce fichier enregistrera la sortie @code{stderr} des processus de travail de | ||
| 19746 | php. On peut indiquer @code{#f} pour désactiver la journalisation. | ||
| 19747 | @item @code{file} (par défaut : @code{#f}) | ||
| 19748 | Une version alternative de la configuration complète. Vous pouvez utiliser | ||
| 19749 | la fonction @code{mixed-text-file} ou un chemin de fichier absolu. | ||
| 19750 | @end table | ||
| 19751 | @end deftp | ||
| 19752 | |||
| 19753 | @deftp {Type de données} php-fpm-dynamic-process-manager-configuration | ||
| 19754 | Type de données pour le gestionnaire de processus @code{dynamic} de | ||
| 19755 | php-fpm. Avec le gestionnaire de processus @code{dynamic}, des processus de | ||
| 19756 | travail de secours sont gardés en fonction des limites configurées. | ||
| 19757 | @table @asis | ||
| 19758 | @item @code{max-children} (par défaut : @code{5}) | ||
| 19759 | Nombre maximum de processus de travail. | ||
| 19760 | @item @code{start-servers} (par défaut : @code{2}) | ||
| 19761 | Nombre de processus de travail au démarrage. | ||
| 19762 | @item @code{min-spare-servers} (par défaut : @code{1}) | ||
| 19763 | Nombre de processus de travail de secours minimum qui doivent rester à | ||
| 19764 | disposition. | ||
| 19765 | @item @code{max-spare-servers} (par défaut : @code{3}) | ||
| 19766 | Nombre maximum de processus de travail de secours qui peuvent rester à | ||
| 19767 | disposition. | ||
| 19768 | @end table | ||
| 19769 | @end deftp | ||
| 19770 | |||
| 19771 | @deftp {Type de données} php-fpm-static-process-manager-configuration | ||
| 19772 | Type de données pour le gestionnaire de processus @code{static} de php-fpm. | ||
| 19773 | Avec le gestionnaire de processus @code{static}, un nombre constant de | ||
| 19774 | processus de travail est créé. | ||
| 19775 | @table @asis | ||
| 19776 | @item @code{max-children} (par défaut : @code{5}) | ||
| 19777 | Nombre maximum de processus de travail. | ||
| 19778 | @end table | ||
| 19779 | @end deftp | ||
| 19780 | |||
| 19781 | @deftp {Type de données} php-fpm-on-demand-process-manager-configuration | ||
| 19782 | Type de données pour le gestionnaire de processus @code{on-demand} de | ||
| 19783 | php-fpm. Avec le gestionnaire de processus @code{on-demand}, les processus | ||
| 19784 | de travail ne sont créés que lorsque les requêtes arrivent. | ||
| 19785 | @table @asis | ||
| 19786 | @item @code{max-children} (par défaut : @code{5}) | ||
| 19787 | Nombre maximum de processus de travail. | ||
| 19788 | @item @code{process-idle-timeout} (par défaut : @code{10}) | ||
| 19789 | La durée en secondes après laquelle un processus sans requête sera tué. | ||
| 19790 | @end table | ||
| 19791 | @end deftp | ||
| 19792 | |||
| 19793 | |||
| 19794 | @deffn {Procédure Scheme} nginx-php-fpm-location @ | ||
| 19795 | [#:nginx-package nginx] @ | ||
| 19796 | [socket (string-append "/var/run/php" @ | ||
| 19797 | (version-major (package-version php)) @ | ||
| 19798 | "-fpm.sock")] | ||
| 19799 | Une fonction d'aide pour ajouter rapidement php à un | ||
| 19800 | @code{nginx-server-configuration}. | ||
| 19801 | @end deffn | ||
| 19802 | |||
| 19803 | Une configuration simple de services pour php ressemble à ceci : | ||
| 19804 | @example | ||
| 19805 | (services (cons* (service dhcp-client-service-type) | ||
| 19806 | (service php-fpm-service-type) | ||
| 19807 | (service nginx-service-type | ||
| 19808 | (nginx-server-configuration | ||
| 19809 | (server-name '("example.com")) | ||
| 19810 | (root "/srv/http/") | ||
| 19811 | (locations | ||
| 19812 | (list (nginx-php-location))) | ||
| 19813 | (listen '("80")) | ||
| 19814 | (ssl-certificate #f) | ||
| 19815 | (ssl-certificate-key #f))) | ||
| 19816 | %base-services)) | ||
| 19817 | @end example | ||
| 19818 | |||
| 19819 | @cindex cat-avatar-generator | ||
| 19820 | Le générateur d'avatar de chat est un simple service pour démontrer | ||
| 19821 | l'utilisation de php-fpm dans @code{Nginx}. Il permet de générer des | ||
| 19822 | avatars de chats à partir d'une graine, par exemple le hash de l'adresse de | ||
| 19823 | courriel d'un utilisateur. | ||
| 19824 | |||
| 19825 | @deffn {Procédure Scheme} cat-avatar-generator-service @ | ||
| 19826 | [#:cache-dir "/var/cache/cat-avatar-generator"] @ | ||
| 19827 | [#:package cat-avatar-generator] @ | ||
| 19828 | [#:configuration (nginx-server-configuration)] | ||
| 19829 | Renvoie un nginx-server-configuration qui hérite de @code{configuration}. | ||
| 19830 | Il étend la configuration nginx pour ajouter un bloc de serveur qui sert | ||
| 19831 | @code{package}, une version de cat-avatar-generator. Pendant l'exécution, | ||
| 19832 | cat-avatar-generator pourra utiliser @code{cache-dir} comme répertoire de | ||
| 19833 | cache. | ||
| 19834 | @end deffn | ||
| 19835 | |||
| 19836 | Une configuration simple de cat-avatar-generator ressemble à ceci : | ||
| 19837 | @example | ||
| 19838 | (services (cons* (cat-avatar-generator-service | ||
| 19839 | #:configuration | ||
| 19840 | (nginx-server-configuration | ||
| 19841 | (server-name '("example.com")))) | ||
| 19842 | ... | ||
| 19843 | %base-services)) | ||
| 19844 | @end example | ||
| 19845 | |||
| 19846 | @subsubheading Hpcguix-web | ||
| 19847 | |||
| 19848 | @cindex hpcguix-web | ||
| 19849 | Le programme @uref{hpcguix-web, | ||
| 19850 | https://github.com/UMCUGenetics/hpcguix-web/} est une interface web | ||
| 19851 | personnalisable pour naviguer dans les paquets Guix, initialement conçue | ||
| 19852 | pour les utilisateurs des grappes de calcul de haute performance (HPC). | ||
| 19853 | |||
| 19854 | @defvr {Variable Scheme} hpcguix-web-service-type | ||
| 19855 | Le type de service pour @code{hpcguix-web}. | ||
| 19856 | @end defvr | ||
| 19857 | |||
| 19858 | @deftp {Type de données} hpcguix-web-configuration | ||
| 19859 | Type de données pour la configuration du service hpcguix-web. | ||
| 19860 | |||
| 19861 | @table @asis | ||
| 19862 | @item @code{specs} | ||
| 19863 | Une gexp (@pxref{G-Expressions}) spécifiant la configuration du service | ||
| 19864 | hpcguix-web. Les éléments principaux disponibles dans cette spec sont : | ||
| 19865 | |||
| 19866 | @table @asis | ||
| 19867 | @item @code{title-prefix} (par défaut : @code{"hpcguix | "}) | ||
| 19868 | Le préfixe du titre des pages. | ||
| 19869 | |||
| 19870 | @item @code{guix-command} (par défaut : @code{"guix"}) | ||
| 19871 | La commande @command{guix} | ||
| 19872 | |||
| 19873 | @item @code{package-filter-proc} (par défaut : @code{(const #t)}) | ||
| 19874 | Une procédure qui spécifie comment filtrer les paquets qui seront affichés. | ||
| 19875 | |||
| 19876 | @item @code{package-page-extension-proc} (par défaut : @code{(const '())}) | ||
| 19877 | Paquet d'extensions pour @code{hpcguix-web}. | ||
| 19878 | |||
| 19879 | @item @code{menu} (par défaut : @code{'()}) | ||
| 19880 | Entrée supplémentaire dans la page @code{menu}. | ||
| 19881 | |||
| 19882 | @item @code{channels} (par défaut : @code{%default-channels}) | ||
| 19883 | Liste des canaux depuis lesquels la liste des paquets est construite | ||
| 19884 | (@pxref{Canaux}). | ||
| 19885 | |||
| 19886 | @item @code{package-list-expiration} (par défaut : @code{(* 12 3600)}) | ||
| 19887 | Le temps d'expiration, en secondes, après lequel la liste des paquets est | ||
| 19888 | reconstruite depuis les dernières instance des canaux donnés. | ||
| 19889 | @end table | ||
| 19890 | |||
| 19891 | Voir le dépôt hpcguix-web pour un | ||
| 19892 | @uref{https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm, | ||
| 19893 | exemple complet} | ||
| 19894 | |||
| 19895 | @item @code{package} (par défaut : @code{hpcguix-web}) | ||
| 19896 | Le paquet hpcguix-web à utiliser. | ||
| 19897 | @end table | ||
| 19898 | @end deftp | ||
| 19899 | |||
| 19900 | Une déclaration de service hpcguix-web typique ressemble à cela : | ||
| 19901 | |||
| 19902 | @example | ||
| 19903 | (service hpcguix-web-service-type | ||
| 19904 | (hpcguix-web-configuration | ||
| 19905 | (specs | ||
| 19906 | #~(define site-config | ||
| 19907 | (hpcweb-configuration | ||
| 19908 | (title-prefix "Guix-HPC - ") | ||
| 19909 | (menu '(("/about" "ABOUT")))))))) | ||
| 19910 | @end example | ||
| 19911 | |||
| 19912 | @quotation Remarque | ||
| 19913 | Le service hpcguix-web met régulièrement à jour la liste des paquets qu'il | ||
| 19914 | publie en récupérant les canaux depuis Git. Pour cela, il doit accéder aux | ||
| 19915 | certificats X.509 pour qu'il puisse authentifier les serveurs Git quand il | ||
| 19916 | communique en HTTPS, et il suppose que @file{/etc/ssl/certs} contient ces | ||
| 19917 | certificats. | ||
| 19918 | |||
| 19919 | Ainsi, assurez-vous d'ajouter @code{nss-certs} ou un autre paquet de | ||
| 19920 | certificats dans le champ @code{packages} de votre configuration. | ||
| 19921 | @ref{Certificats X.509} pour plus d'informations sur les certificats X.509. | ||
| 19922 | @end quotation | ||
| 19923 | |||
| 19924 | @node Services de certificats | ||
| 19925 | @subsection Services de certificats | ||
| 19926 | |||
| 19927 | @cindex Web | ||
| 19928 | @cindex HTTP, HTTPS | ||
| 19929 | @cindex Let's Encrypt | ||
| 19930 | @cindex certificats TLS | ||
| 19931 | Le module @code{(gnu services certbot)} fournit un service qui récupère | ||
| 19932 | automatiquement un certificat TLS valide de l'autorité de certification | ||
| 19933 | Let's Encrypt. Ces certificats peuvent ensuite être utilisés pour servir du | ||
| 19934 | contenu de manière sécurisée sur HTTPS et d'autres protocoles basés sur TLS, | ||
| 19935 | en sachant que le client sera capable de vérifier l'authenticité du serveur. | ||
| 19936 | |||
| 19937 | @url{https://letsencrypt.org/, Let's Encrypt} fournit l'outil @code{certbot} | ||
| 19938 | pour automatiser le processus de certification. Cet outil génère d'abord un | ||
| 19939 | clef sur le serveur de manière sécurisée. Ensuite il demande à l'autorité | ||
| 19940 | de certification Let's Encrypt de signer la clef. La CA vérifie que la | ||
| 19941 | requête provient de l'hôte en question en utilisant un protocole de | ||
| 19942 | défi-réponse, ce qui requiert que le serveur fournisse sa réponse par HTTP. | ||
| 19943 | Si ce protocole se passe sans encombre, la CA signe la clef et on obtient un | ||
| 19944 | certificat. Ce certificat est valide pour une durée limitée et donc, pour | ||
| 19945 | continuer à fournir des services en TLS, le serveur doit régulièrement | ||
| 19946 | demander à la CA de renouveler sa signature. | ||
| 19947 | |||
| 19948 | Le service certbot automatise ce processus : la génération initiale de la | ||
| 19949 | clef, la demande de certification initiale au service Let's Encrypt, | ||
| 19950 | l'intégration du protocole de défi/réponse dans le serveur web, l'écriture | ||
| 19951 | du certificat sur le disque, les renouvellements périodiques et les taches | ||
| 19952 | de déploiement avec le renouvellement (p.@: ex.@: recharger les services, | ||
| 19953 | copier les clefs avec d'autres permissions). | ||
| 19954 | |||
| 19955 | Certbot est lancé deux fois par jour, à une minute aléatoire dans l'heure. | ||
| 19956 | Il ne fera rien sauf si vos certificats doivent être renouvelés ou sont | ||
| 19957 | révoqués, mais le lancer régulièrement permettra à vos services de rester en | ||
| 19958 | ligne si Let's Encrypt décide de révoquer votre certificat. | ||
| 19959 | |||
| 19960 | En utilisant ce service, vous acceptez le document « ACME Subscriber | ||
| 19961 | Agreement », qu'on peut trouver ici : | ||
| 19962 | @url{https://acme-v01.api.letsencrypt.org/directory}. | ||
| 19963 | |||
| 19964 | @defvr {Variable Scheme} certbot-service-type | ||
| 19965 | Un type de service pour le client Let's Encrypt @code{certbot}. Sa valeur | ||
| 19966 | doit être un enregistrement @code{certbot-configuration} comme dans cet | ||
| 19967 | exemple : | ||
| 19968 | |||
| 19969 | @example | ||
| 19970 | (define %nginx-deploy-hook | ||
| 19971 | (program-file | ||
| 19972 | "nginx-deploy-hook" | ||
| 19973 | #~(let ((pid (call-with-input-file "/var/run/nginx/pid" read))) | ||
| 19974 | (kill pid SIGHUP)))) | ||
| 19975 | |||
| 19976 | (service certbot-service-type | ||
| 19977 | (certbot-configuration | ||
| 19978 | (email "foo@@example.net") | ||
| 19979 | (certificates | ||
| 19980 | (list | ||
| 19981 | (certificate-configuration | ||
| 19982 | (domains '("example.net" "www.example.net")) | ||
| 19983 | (deploy-hook %nginx-deploy-hook)) | ||
| 19984 | (certificate-configuration | ||
| 19985 | (domains '("bar.example.net"))))))) | ||
| 19986 | @end example | ||
| 19987 | |||
| 19988 | Voir plus bas pour des détails sur @code{certbot-configuration}. | ||
| 19989 | @end defvr | ||
| 19990 | |||
| 19991 | @deftp {Type de données} certbot-configuration | ||
| 19992 | Type données représentant la configuration du service @code{certbot}. Ce | ||
| 19993 | type a les paramètres suivants : | ||
| 19994 | |||
| 19995 | @table @asis | ||
| 19996 | @item @code{package} (par défaut : @code{certbot}) | ||
| 19997 | Le paquet certbot à utiliser. | ||
| 19998 | |||
| 19999 | @item @code{webroot} (par défaut : @code{/var/www}) | ||
| 20000 | Le répertoire depuis lequel servir les fichiers du défi/réponse de Let's | ||
| 20001 | Encrypt. | ||
| 20002 | |||
| 20003 | @item @code{certificates} (par défaut : @code{()}) | ||
| 20004 | Une liste de @code{certificates-configuration} pour lesquels générer des | ||
| 20005 | certificats et demander des signatures. Chaque certificat a un @code{name} | ||
| 20006 | et plusieurs @code{domains}. | ||
| 20007 | |||
| 20008 | @item @code{email} | ||
| 20009 | Courriel obligatoire utilisé pour la création de compte, le contact en cas | ||
| 20010 | de problème et des notifications importantes sur le compte. | ||
| 20011 | |||
| 20012 | @item @code{rsa-key-size} (par défaut : @code{2048}) | ||
| 20013 | Taille de la clef RSA. | ||
| 20014 | |||
| 20015 | @item @code{default-location} (par défaut : @i{voir plus bas}) | ||
| 20016 | Le @code{nginx-location-configuration} par défaut. Comme @code{certbot} | ||
| 20017 | doit pouvoir servir les défis et les réponses, il doit être capable de | ||
| 20018 | lancer un serveur web. Cela se fait en étendant le service web @code{nginx} | ||
| 20019 | avec un @code{nginx-server-configuration} qui écoute sur les @var{domains} | ||
| 20020 | sur le port 80 et qui a un @code{nginx-location-configuration} pour le | ||
| 20021 | chemin @code{/.well-known/} utilisé par Let's Encrypt. @xref{Services web} | ||
| 20022 | pour plus d'information sur les types de données de la configuration de | ||
| 20023 | nginx. | ||
| 20024 | |||
| 20025 | Les requêtes vers d'autres URL correspondra à @code{default-location}, qui, | ||
| 20026 | s'il est présent, sera ajout é à tous les @code{nginx-server-configuration}. | ||
| 20027 | |||
| 20028 | Par défaut, le @code{default-location} sera une redirection de | ||
| 20029 | @code{http://@var{domain}/…} vers @code{https://@var{domain}/…}, en vous | ||
| 20030 | laissant définir ce que vous voulez servir sur votre site en @code{https}. | ||
| 20031 | |||
| 20032 | Passez @code{#f} pour ne pas utiliser de location par défaut. | ||
| 20033 | @end table | ||
| 20034 | @end deftp | ||
| 20035 | |||
| 20036 | @deftp {Type de données} certificate-configuration | ||
| 20037 | Type de données représentant la configuration d'un certificat. Ce type a | ||
| 20038 | les paramètres suivants : | ||
| 20039 | |||
| 20040 | @table @asis | ||
| 20041 | @item @code{name} (par défaut : @i{voir plus bas}) | ||
| 20042 | Ce nom est utilisé par Certbot pour ses tâches quotidiennes et dans les | ||
| 20043 | chemins de fichiers ; il n'affecte pas le contenu des certificats | ||
| 20044 | eux-mêmes. Pour voir les noms des certificats, lancez @code{certbot | ||
| 20045 | certificates}. | ||
| 20046 | |||
| 20047 | Sa valeur par défaut est le premier domaine spécifié. | ||
| 20048 | |||
| 20049 | @item @code{domains} (par défaut : @code{()}) | ||
| 20050 | Le premier domaine spécifié sera le CN du sujet du certificat, et tous les | ||
| 20051 | domaines seront les noms alternatifs du sujet dans le certificat. | ||
| 20052 | |||
| 20053 | @item @code{deploy-hook} (par défaut : @code{#f}) | ||
| 20054 | Commande à lancer dans un shell une fois par certificat récupéré avec | ||
| 20055 | succès. Pour cette commande, la variable @code{$RENEWED_LINEAGE} pointera | ||
| 20056 | sur le sous-répertoire live (par exemple, | ||
| 20057 | @samp{"/etc/letsencrypt/live/example.com"}) contenant le nouveau certificat | ||
| 20058 | et la clef ; la variable @code{$RENEWED_DOMAINS} contiendra les noms de | ||
| 20059 | domaines séparés par des espaces (par exemple @samp{"example.com | ||
| 20060 | www.example.com"}). | ||
| 20061 | |||
| 20062 | @end table | ||
| 20063 | @end deftp | ||
| 20064 | |||
| 20065 | Pour chaque @code{certificate-configuration}, le certificat est sauvegardé | ||
| 20066 | dans @code{/etc/letsencrypt/live/@var{name}/fullchain.pem} et la clef est | ||
| 20067 | sauvegardée dans @code{/etc/letsencrypt/live/@var{name}/privkey.pem}. | ||
| 20068 | @node Services DNS | ||
| 20069 | @subsection Services DNS | ||
| 20070 | @cindex DNS (domain name system) | ||
| 20071 | @cindex domain name system (DNS) | ||
| 20072 | |||
| 20073 | Le module @code{(gnu services dns)} fournit des services liés au | ||
| 20074 | @dfn{système de noms de domaines} (DNS). Il fournit un service de serveur | ||
| 20075 | pour héberger un serveur DNS @emph{faisant autorité} pour plusieurs zones, | ||
| 20076 | en esclave ou en maître. Ce service utilise @uref{https://www.knot-dns.cz/, | ||
| 20077 | Knot DNS}. Il fournit aussi un service de cache et de renvoie DNS pour le | ||
| 20078 | LAN, qui utilise @uref{http://www.thekelleys.org.uk/dnsmasq/doc.html, | ||
| 20079 | dnsmasq}. | ||
| 20080 | |||
| 20081 | @subsubheading Service Knot | ||
| 20082 | |||
| 20083 | Voici un exemple de configuration pour un serveur faisant autorité sur deux | ||
| 20084 | zone, un maître et un esclave : | ||
| 20085 | |||
| 20086 | @lisp | ||
| 20087 | (define-zone-entries example.org.zone | ||
| 20088 | ;; Name TTL Class Type Data | ||
| 20089 | ("@@" "" "IN" "A" "127.0.0.1") | ||
| 20090 | ("@@" "" "IN" "NS" "ns") | ||
| 20091 | ("ns" "" "IN" "A" "127.0.0.1")) | ||
| 20092 | |||
| 20093 | (define master-zone | ||
| 20094 | (knot-zone-configuration | ||
| 20095 | (domain "example.org") | ||
| 20096 | (zone (zone-file | ||
| 20097 | (origin "example.org") | ||
| 20098 | (entries example.org.zone))))) | ||
| 20099 | |||
| 20100 | (define slave-zone | ||
| 20101 | (knot-zone-configuration | ||
| 20102 | (domain "plop.org") | ||
| 20103 | (dnssec-policy "default") | ||
| 20104 | (master (list "plop-master")))) | ||
| 20105 | |||
| 20106 | (define plop-master | ||
| 20107 | (knot-remote-configuration | ||
| 20108 | (id "plop-master") | ||
| 20109 | (address (list "208.76.58.171")))) | ||
| 20110 | |||
| 20111 | (operating-system | ||
| 20112 | ;; ... | ||
| 20113 | (services (cons* (service knot-service-type | ||
| 20114 | (knot-configuration | ||
| 20115 | (remotes (list plop-master)) | ||
| 20116 | (zones (list master-zone slave-zone)))) | ||
| 20117 | ;; ... | ||
| 20118 | %base-services))) | ||
| 20119 | @end lisp | ||
| 20120 | |||
| 20121 | @deffn {Variable Scheme} knot-service-type | ||
| 20122 | C'est le type pour le serveur DNS Knot. | ||
| 20123 | |||
| 20124 | Knot DNS est un serveur DNS faisant autorité, ce qui signifie qu'il peut | ||
| 20125 | servir plusieurs zones, c'est-à-dire des noms de domaines que vous achetez à | ||
| 20126 | un registrar. Ce serveur n'est pas un résolveur, ce qui signifie qu'il ne | ||
| 20127 | peut pas résoudre les noms pour lesquels il ne fait pas autorité. Ce | ||
| 20128 | serveur peut être configuré pour servir des zones comme un serveur maître ou | ||
| 20129 | comme un serveur esclave, en fonction des zones. Les zones esclaves | ||
| 20130 | récupèrent leurs données des maîtres, et seront servies comme faisant | ||
| 20131 | autorité. Du point de vue d'un résolveur, il n'y a pas de différence entre | ||
| 20132 | un maître et un esclave@footnote{NdT : Voir la conférence en Français de | ||
| 20133 | Stéphane Bortzmeyer pour en apprendre plus sur le DNS : | ||
| 20134 | @url{https://iletaitunefoisinternet.fr/dns-bortzmeyer/index.html}}. | ||
| 20135 | |||
| 20136 | Les types de données suivants sont utilisés pour configurer le serveur DNS | ||
| 20137 | Knot : | ||
| 20138 | @end deffn | ||
| 20139 | |||
| 20140 | @deftp {Type de données} knot-key-configuration | ||
| 20141 | Type de données représentant une clef. Ce type a les paramètres suivants : | ||
| 20142 | |||
| 20143 | @table @asis | ||
| 20144 | @item @code{id} (par défaut : @code{""}) | ||
| 20145 | Un identifiant pour d'autres champs de configuration qui se réfèrent à cette | ||
| 20146 | clef. Les ID doivent être uniques et non vides. | ||
| 20147 | |||
| 20148 | @item @code{algorithm} (par défaut : @code{#f}) | ||
| 20149 | L'algorithme à utiliser. Choisissez entre @code{#f}, @code{'hmac-md5}, | ||
| 20150 | @code{'hmac-sha1}, @code{'hmac-sha224}, @code{'hmac-sha256}, | ||
| 20151 | @code{'hmac-sha384} et @code{'hmac-sha512}. | ||
| 20152 | |||
| 20153 | @item @code{secret} (par défaut : @code{""}) | ||
| 20154 | La clef secrète elle-même. | ||
| 20155 | |||
| 20156 | @end table | ||
| 20157 | @end deftp | ||
| 20158 | |||
| 20159 | @deftp {Type de données} knot-acl-configuration | ||
| 20160 | Type de données représentant une configuration de liste de contrôle d'accès | ||
| 20161 | (ACL). Ce type a les paramètres suivants : | ||
| 20162 | |||
| 20163 | @table @asis | ||
| 20164 | @item @code{id} (par défaut : @code{""}) | ||
| 20165 | Un identifiant pour d'autres champs de configuration qui se réfèrent à cette | ||
| 20166 | clef. Les ID doivent être uniques et non vides. | ||
| 20167 | |||
| 20168 | @item @code{address} (par défaut : @code{'()}) | ||
| 20169 | Une liste ordonnée d'adresses IP, de sous-réseaux ou d'intervalles de | ||
| 20170 | réseaux représentés par des chaînes de caractères. La requête doit | ||
| 20171 | correspondre à l'une d'entre elles. La valeur vide signifie que l'adresse | ||
| 20172 | n'a pas besoin de correspondre. | ||
| 20173 | |||
| 20174 | @item @code{key} (par défaut : @code{'()}) | ||
| 20175 | Une liste ordonnées de références à des clefs représentés par des chaînes. | ||
| 20176 | La chaîne doit correspondre à un ID définie dans un | ||
| 20177 | @code{knot-key-configuration}. Aucune clef signifie qu'une clef n'est pas | ||
| 20178 | nécessaire pour correspondre à l'ACL. | ||
| 20179 | |||
| 20180 | @item @code{action} (par défaut : @code{'()}) | ||
| 20181 | Une liste ordonnée d'actions permises ou interdites par cet ACL. Les | ||
| 20182 | valeurs possibles sont une liste de zéro ou plus d'éléments entre | ||
| 20183 | @code{'transfer}, @code{'notify} et @code{'update}. | ||
| 20184 | |||
| 20185 | @item @code{deny?} (par défaut : @code{#f}) | ||
| 20186 | Lorsque la valeur est vraie, l'ACL définie des restrictions. Les actions | ||
| 20187 | listées sont interdites. Lorsque la valeur est fausse, les actions listées | ||
| 20188 | sont autorisées. | ||
| 20189 | |||
| 20190 | @end table | ||
| 20191 | @end deftp | ||
| 20192 | |||
| 20193 | @deftp {Type de données} zone-entry | ||
| 20194 | Type de données représentant une entrée dans un fichier de zone. Ce type a | ||
| 20195 | les paramètres suivants : | ||
| 20196 | |||
| 20197 | @table @asis | ||
| 20198 | @item @code{name} (par défaut : @code{"@@"}) | ||
| 20199 | Le nom de l'enregistrement. @code{"@@"} se réfère à l'origine de la zone. | ||
| 20200 | Les noms sont relatifs à l'origine de la zone. Par exemple, dans la zone | ||
| 20201 | @code{example.org}, @code{"ns.example.org"} se réfère en fait à | ||
| 20202 | @code{ns.example.org.example.org}. Les noms qui finissent par un point sont | ||
| 20203 | absolus, ce qui signifie que @code{"ns.example.org."} se réfère bien à | ||
| 20204 | @code{ns.example.org}. | ||
| 20205 | |||
| 20206 | @item @code{ttl} (par défaut : @code{""}) | ||
| 20207 | La durée de vie (TTL) de cet enregistrement. S'il n'est pas indiqué, le TTL | ||
| 20208 | par défaut est utilisé. | ||
| 20209 | |||
| 20210 | @item @code{class} (par défaut : @code{"IN"}) | ||
| 20211 | La classe de l'enregistrement. Knot ne supporte actuellement que | ||
| 20212 | @code{"IN"} et partiellement @code{"CH"}. | ||
| 20213 | |||
| 20214 | @item @code{type} (par défaut : @code{"A"}) | ||
| 20215 | Le type d'enregistrement. Les types usuels sont A (une adresse IPv4), NS | ||
| 20216 | (serveur de nom) et MX (serveur de courriel). Bien d'autres types sont | ||
| 20217 | définis. | ||
| 20218 | |||
| 20219 | @item @code{data} (par défaut : @code{""}) | ||
| 20220 | Les données contenues dans l'enregistrement. Par exemple une adresse IP | ||
| 20221 | associée à un enregistrement A, ou un nom de domaine associé à un | ||
| 20222 | enregistrement NS. Rappelez-vous que les noms de domaines sont relatifs à | ||
| 20223 | l'origine à moins qu'ils ne finissent par un point. | ||
| 20224 | |||
| 20225 | @end table | ||
| 20226 | @end deftp | ||
| 20227 | |||
| 20228 | @deftp {Type de données} zone-file | ||
| 20229 | Type données représentant le contenu d'un fichier de zone. Ce type a les | ||
| 20230 | paramètres suivants : | ||
| 20231 | |||
| 20232 | @table @asis | ||
| 20233 | @item @code{entries} (par défaut : @code{'()}) | ||
| 20234 | La liste des entrées. On s'occupe de l'enregistrement SOA, donc vous n'avez | ||
| 20235 | pas besoin de l'ajouter dans la liste des entrées. Cette liste devrait | ||
| 20236 | contenir une entrée pour votre serveur DNS primaire faisant autorité. En | ||
| 20237 | plus d'utiliser une liste des entrées directement, vous pouvez utiliser | ||
| 20238 | @code{define-zone-entries} pour définir un objet contenant la liste des | ||
| 20239 | entrées plus facilement, que vous pouvez ensuite passer au champ | ||
| 20240 | @code{entries} de @code{zone-file}. | ||
| 20241 | |||
| 20242 | @item @code{origin} (par défaut : @code{""}) | ||
| 20243 | Le nom de votre zone. Ce paramètre ne peut pas être vide. | ||
| 20244 | |||
| 20245 | @item @code{ns} (par défaut : @code{"ns"}) | ||
| 20246 | Le domaine de votre serveur DNS primaire faisant autorité. Le nom est | ||
| 20247 | relatif à l'origine, à moins qu'il finisse par un point. Il est nécessaire | ||
| 20248 | que ce serveur DNS primaire corresponde à un enregistrement NS dans la zone | ||
| 20249 | et qu'il soit associé à une adresse IP dans la liste des entrées. | ||
| 20250 | |||
| 20251 | @item @code{mail} (par défaut : @code{"hostmaster"}) | ||
| 20252 | Une adresse de courriel pour vous contacter en tant que propriétaire de la | ||
| 20253 | zone. Cela se transforme en @code{<mail>@@<origin>}. | ||
| 20254 | |||
| 20255 | @item @code{serial} (par défaut : @code{1}) | ||
| 20256 | Le numéro de série de la zone. Comme c'est utilisé pour vérifier les | ||
| 20257 | changements à la fois par les esclaves et par les résolveurs, il est | ||
| 20258 | nécessaire qu'il ne décroisse @emph{jamais}. Incrémentez-le toujours quand | ||
| 20259 | vous faites un changement sur votre zone. | ||
| 20260 | |||
| 20261 | @item @code{refresh} (par défaut : @code{(* 2 24 3600)}) | ||
| 20262 | La fréquence à laquelle les esclaves demanderont un transfert de zone. | ||
| 20263 | Cette valeur est un nombre de secondes. On peut le calculer avec des | ||
| 20264 | multiplications ou avec @code{(string->duration)}. | ||
| 20265 | |||
| 20266 | @item @code{retry} (par défaut : @code{(* 15 60)}) | ||
| 20267 | La période après laquelle un esclave essaiera de contacter son maître | ||
| 20268 | lorsqu'il échoue à le faire la première fois. | ||
| 20269 | |||
| 20270 | @item @code{expiry} (par défaut : @code{(* 14 24 3600)}) | ||
| 20271 | TTL par défaut des enregistrements. Les enregistrements existants sont | ||
| 20272 | considérés corrects pour au moins cette durée. Après cette période, les | ||
| 20273 | résolveurs invalideront leur cache et vérifieront de nouveau qu'ils existent | ||
| 20274 | toujours. | ||
| 20275 | |||
| 20276 | @item @code{nx} (par défaut : @code{3600}) | ||
| 20277 | TTL par défaut des enregistrement inexistants. Ce TTL est habituellement | ||
| 20278 | court parce que vous voulez que vous nouveaux domaines soient disponibles | ||
| 20279 | pour tout le monde le plus rapidement possible. | ||
| 20280 | |||
| 20281 | @end table | ||
| 20282 | @end deftp | ||
| 20283 | |||
| 20284 | @deftp {Type de données} knot-remote-configuration | ||
| 20285 | Type de données représentant une configuration de serveurs distants. Ce | ||
| 20286 | type a les paramètres suivants : | ||
| 20287 | |||
| 20288 | @table @asis | ||
| 20289 | @item @code{id} (par défaut : @code{""}) | ||
| 20290 | Un identifiant pour que les autres champs de configuration se réfèrent à ce | ||
| 20291 | serveur distant. les ID doivent être uniques et non vides. | ||
| 20292 | |||
| 20293 | @item @code{address} (par défaut : @code{'()}) | ||
| 20294 | Une liste ordonnée d'adresses IP de destination. Ces adresses sont essayées | ||
| 20295 | en séquence. Un port facultatif peut être donné avec le séparateur @@. Par | ||
| 20296 | exemple @code{(list "1.2.3.4" "2.3.4.5@@53")}. Le port par défaut est le | ||
| 20297 | 53. | ||
| 20298 | |||
| 20299 | @item @code{via} (par défaut : @code{'()}) | ||
| 20300 | Une liste ordonnée d'adresses IP sources. Une liste vide fera choisir une | ||
| 20301 | IP source appropriée à Knot. Un port facultatif peut être donné avec le | ||
| 20302 | séparateur @@. La valeur par défaut est de choisir aléatoirement. | ||
| 20303 | |||
| 20304 | @item @code{key} (par défaut : @code{#f}) | ||
| 20305 | Une référence à une clef, c'est-à-dire une chaîne contenant l'identifiant | ||
| 20306 | d'une clef définie dans un champ @code{knot-key-configuration}. | ||
| 20307 | |||
| 20308 | @end table | ||
| 20309 | @end deftp | ||
| 20310 | |||
| 20311 | @deftp {Type de données} knot-keystore-configuration | ||
| 20312 | Type de données représentant une base de clefs pour garder les clefs | ||
| 20313 | dnssec. Ce type a les paramètres suivants : | ||
| 20314 | |||
| 20315 | @table @asis | ||
| 20316 | @item @code{id} (par défaut : @code{""}) | ||
| 20317 | L'id de cette base de clefs. Il ne doit pas être vide. | ||
| 20318 | |||
| 20319 | @item @code{backend} (par défaut : @code{'pem}) | ||
| 20320 | Le moteur de stockage des clefs. Cela peut être @code{'pem} ou | ||
| 20321 | @code{'pkcs11}. | ||
| 20322 | |||
| 20323 | @item @code{config} (par défaut : @code{"/var/lib/knot/keys/keys"}) | ||
| 20324 | La chaîne de configuration pour le moteur. Voici un exemple pour PKCS#11 : | ||
| 20325 | @code{"pkcs11:token=knot;pin-value=1234 | ||
| 20326 | /gnu/store/.../lib/pkcs11/libsofthsm2.so"}. Pour le moteur pem, la chaîne | ||
| 20327 | représente un chemin dans le système de fichiers. | ||
| 20328 | |||
| 20329 | @end table | ||
| 20330 | @end deftp | ||
| 20331 | |||
| 20332 | @deftp {Type de données} knot-policy-configuration | ||
| 20333 | Type de données représentant une politique dnssec. Knot DNS est capable de | ||
| 20334 | signer automatiquement vos zones. Il peut soit générer et gérer vos clefs | ||
| 20335 | automatiquement ou utiliser des clefs que vous générez. | ||
| 20336 | |||
| 20337 | Dnssec est habituellement implémenté avec deux clefs : une KSK (key signing | ||
| 20338 | key) qui est utilisé pour signer une seconde, la ZSK (zone signing key) qui | ||
| 20339 | est utilisée pour signer la zone. Pour pouvoir être de confiance, la KSK | ||
| 20340 | doit être présente dans la zone parente (normalement un domaine de haut | ||
| 20341 | niveau). Si votre registrar supporte dnssec, vous devrez leur envoyer le | ||
| 20342 | hash de votre KSK pour qu'il puisse ajouter un enregistrement DS dans la | ||
| 20343 | zone parente. Ce n'est pas automatique et vous devrez le faire à chaque | ||
| 20344 | fois que vous changerez votre KSK. | ||
| 20345 | |||
| 20346 | La politique définie aussi la durée de vie des clefs. Habituellement, la | ||
| 20347 | ZSK peut être changée facilement et utilise des fonctions cryptographiques | ||
| 20348 | plus faibles (avec un paramètre plus faible) pour signer les enregistrements | ||
| 20349 | rapidement, donc elles sont changées très régulièrement. La KSK en revanche | ||
| 20350 | requiert une interaction manuelle avec le registrar, donc elle change moins | ||
| 20351 | souvent et utilise des paramètres plus robustes puisqu'elle ne signe qu'un | ||
| 20352 | seul enregistrement. | ||
| 20353 | |||
| 20354 | Ce type a les paramètres suivants : | ||
| 20355 | |||
| 20356 | @table @asis | ||
| 20357 | @item @code{id} (par défaut : @code{""}) | ||
| 20358 | L'id de la politique. Il ne doit pas être vide. | ||
| 20359 | |||
| 20360 | @item @code{keystore} (par défaut : @code{"default"}) | ||
| 20361 | Une référence à une base de clefs, c'est-à-dire une chaîne contenant | ||
| 20362 | l'identifiant d'une base de clefs définie dans un champ | ||
| 20363 | @code{knot-keystore-configuration}. L'identifiant @code{"default"} signifie | ||
| 20364 | la base par défaut (une base de données kasp initialisée par ce service). | ||
| 20365 | |||
| 20366 | @item @code{manual?} (par défaut : @code{#f}) | ||
| 20367 | Indique si la clef est gérée manuellement ou automatiquement. | ||
| 20368 | |||
| 20369 | @item @code{single-type-signing?} (par défaut : @code{#f}) | ||
| 20370 | Lorsque la valeur est @code{#t}, utilise le schéma de signature Single-Type. | ||
| 20371 | |||
| 20372 | @item @code{algorithm} (par défaut : @code{"ecdsap256sha256"}) | ||
| 20373 | Un algorithme de clef de signature et de signatures. | ||
| 20374 | |||
| 20375 | @item @code{ksk-size} (par défaut : @code{256}) | ||
| 20376 | La longueur de la KSK. Remarquez que cette valeur est correcte pour | ||
| 20377 | l'algorithme par défaut, mais ne serait pas sécurisée pour d'autres | ||
| 20378 | algorithmes. | ||
| 20379 | |||
| 20380 | @item @code{zsk-size} (par défaut : @code{256}) | ||
| 20381 | La longueur de la ZSK. Remarquez que cette valeur est correcte pour | ||
| 20382 | l'algorithme par défaut, mais ne serait pas sécurisée pour d'autres | ||
| 20383 | algorithmes. | ||
| 20384 | |||
| 20385 | @item @code{dnskey-ttl} (par défaut : @code{'default}) | ||
| 20386 | La valeur du TTL pour les enregistrements DNSKEY ajoutés au sommet de la | ||
| 20387 | zone. La valeur spéciale @code{'default} signifie la même valeur que le TTL | ||
| 20388 | du SOA de la zone. | ||
| 20389 | |||
| 20390 | @item @code{zsk-lifetime} (par défaut : @code{(* 30 24 3600)}) | ||
| 20391 | La période entre la publication d'une ZSK et l'initialisation d'un nouveau | ||
| 20392 | changement. | ||
| 20393 | |||
| 20394 | @item @code{propagation-delay} (par défaut : @code{(* 24 3600)}) | ||
| 20395 | Un délai supplémentaire pour chaque étape du changement. Cette valeur | ||
| 20396 | devrait être assez grande pour couvrir le temps de propagation des données | ||
| 20397 | entre le serveur primaire et tous les secondaires. | ||
| 20398 | |||
| 20399 | @item @code{rrsig-lifetime} (par défaut : @code{(* 14 24 3600)}) | ||
| 20400 | Une période de validité des nouvelles signatures. | ||
| 20401 | |||
| 20402 | @item @code{rrsig-refresh} (par défaut : @code{(* 7 24 3600)}) | ||
| 20403 | Une période qui indique combien de temps avant l'expiration d'une signature | ||
| 20404 | elle sera rafraîchie. | ||
| 20405 | |||
| 20406 | @item @code{nsec3?} (par défaut : @code{#f}) | ||
| 20407 | Lorsque la valeur est @code{#t}, on utilisera NSEC3 au lien de NSEC. | ||
| 20408 | |||
| 20409 | @item @code{nsec3-iterations} (par défaut : @code{5}) | ||
| 20410 | Le nombre de fois supplémentaires que le hash est effectué. | ||
| 20411 | |||
| 20412 | @item @code{nsec3-salt-length} (par défaut : @code{8}) | ||
| 20413 | La longueur du champ de sel en octets, ajouté au nom du propriétaire avant | ||
| 20414 | de hasher. | ||
| 20415 | |||
| 20416 | @item @code{nsec3-salt-lifetime} (par défaut : @code{(* 30 24 3600)}) | ||
| 20417 | La période de validité des nouveaux champs sel. | ||
| 20418 | |||
| 20419 | @end table | ||
| 20420 | @end deftp | ||
| 20421 | |||
| 20422 | @deftp {Type de données} knot-zone-configuration | ||
| 20423 | Type de données représentant la zone servie par Knot. ce type a les | ||
| 20424 | paramètres suivants : | ||
| 20425 | |||
| 20426 | @table @asis | ||
| 20427 | @item @code{domain} (par défaut : @code{""}) | ||
| 20428 | Le domaine servi par cette configuration. Il ne doit pas être vide. | ||
| 20429 | |||
| 20430 | @item @code{file} (par défaut : @code{""}) | ||
| 20431 | Le fichier où la zone est sauvegardée. Ce paramètre est ignoré pour les | ||
| 20432 | zones maîtres. La valeur vide signifie l'emplacement par défaut qui dépend | ||
| 20433 | du nom de domaine. | ||
| 20434 | |||
| 20435 | @item @code{zone} (par défaut : @code{(zone-file)}) | ||
| 20436 | Le contenu du fichier de zone. Ce paramètre est ignoré par les zones | ||
| 20437 | esclaves. Il doit contenir un enregistrement zone-file. | ||
| 20438 | |||
| 20439 | @item @code{master} (par défaut : @code{'()}) | ||
| 20440 | Une liste des serveurs distants maîtres. Lorsque la liste est vide, cette | ||
| 20441 | zone est un maître. Lorsque la valeur est indiquée, cette zone est un | ||
| 20442 | esclave. C'est al liste des identifiants des serveurs distants. | ||
| 20443 | |||
| 20444 | @item @code{ddns-master} (par défaut : @code{#f}) | ||
| 20445 | Le maître principal. Lorsque la valeur est vide, la valeur par défaut est | ||
| 20446 | le premier maître de la liste des maîtres. | ||
| 20447 | |||
| 20448 | @item @code{notify} (par défaut : @code{'()}) | ||
| 20449 | Une liste d'identifiants de groupe de serveurs esclaves. | ||
| 20450 | |||
| 20451 | @item @code{acl} (par défaut : @code{'()}) | ||
| 20452 | Une liste d'identifiants d'ACL. | ||
| 20453 | |||
| 20454 | @item @code{semantic-checks?} (par défaut : @code{#f}) | ||
| 20455 | Lorsque la valeur est indiquée, cela ajoute plus de vérifications | ||
| 20456 | sémantiques à la zone. | ||
| 20457 | |||
| 20458 | @item @code{disable-any?} (par défaut : @code{#f}) | ||
| 20459 | Lorsque la valeur est vraie, cela interdit les requêtes de type ANY. | ||
| 20460 | |||
| 20461 | @item @code{zonefile-sync} (par défaut : @code{0}) | ||
| 20462 | Le délai entre une modification en mémoire et sur le disque. 0 signifie une | ||
| 20463 | synchronisation immédiate. | ||
| 20464 | |||
| 20465 | @item @code{serial-policy} (par défaut : @code{'increment}) | ||
| 20466 | Une politique entre @code{'increment} et @code{'unixtime}. | ||
| 20467 | |||
| 20468 | @end table | ||
| 20469 | @end deftp | ||
| 20470 | |||
| 20471 | @deftp {Type de données} knot-configuration | ||
| 20472 | Type de données représentant la configuration de Knot. Ce type a les | ||
| 20473 | paramètres suivants : | ||
| 20474 | |||
| 20475 | @table @asis | ||
| 20476 | @item @code{knot} (par défaut : @code{knot}) | ||
| 20477 | Le paquet Knot. | ||
| 20478 | |||
| 20479 | @item @code{run-directory} (par défaut : @code{"/var/run/knot"}) | ||
| 20480 | Le répertoire de travail. Ce répertoire sera utilisé pour le fichier pid et | ||
| 20481 | les sockets. | ||
| 20482 | |||
| 20483 | @item @code{listen-v4} (par défaut : @code{"0.0.0.0"}) | ||
| 20484 | Une adresse IP sur laquelle écouter. | ||
| 20485 | |||
| 20486 | @item @code{listen-v6} (par défaut : @code{"::"}) | ||
| 20487 | Une adresse IP sur laquelle écouter. | ||
| 20488 | |||
| 20489 | @item @code{listen-port} (par défaut : @code{53}) | ||
| 20490 | Un port sur lequel écouter. | ||
| 20491 | |||
| 20492 | @item @code{keys} (par défaut : @code{'()}) | ||
| 20493 | La liste des knot-key-configuration utilisés par cette configuration. | ||
| 20494 | |||
| 20495 | @item @code{acls} (par défaut : @code{'()}) | ||
| 20496 | La liste des knot-acl-configuration utilisés par cette configuration. | ||
| 20497 | |||
| 20498 | @item @code{remotes} (par défaut : @code{'()}) | ||
| 20499 | La liste des knot-remote-configuration utilisés par cette configuration. | ||
| 20500 | |||
| 20501 | @item @code{zones} (par défaut : @code{'()}) | ||
| 20502 | La liste des knot-zone-configuration utilisés par cette configuration. | ||
| 20503 | |||
| 20504 | @end table | ||
| 20505 | @end deftp | ||
| 20506 | |||
| 20507 | @subsubheading Services Dnsmasq | ||
| 20508 | |||
| 20509 | @deffn {Variable Scheme} dnsmasq-service-type | ||
| 20510 | C'est le type du service dnsmasq, dont la valeur devrait être un objet | ||
| 20511 | @code{dnsmasq-configuration} comme dans cet exemple : | ||
| 20512 | |||
| 20513 | @example | ||
| 20514 | (service dnsmasq-service-type | ||
| 20515 | (dnsmasq-configuration | ||
| 20516 | (no-resolv? #t) | ||
| 20517 | (servers '("192.168.1.1")))) | ||
| 20518 | @end example | ||
| 20519 | @end deffn | ||
| 20520 | |||
| 20521 | @deftp {Type de données} dnsmasq-configuration | ||
| 20522 | Type de données qui représente la configuration de dnsmasq. | ||
| 20523 | |||
| 20524 | @table @asis | ||
| 20525 | @item @code{package} (par défaut : @var{dnsmasq}) | ||
| 20526 | L'objet de paquet du serveur dnsmasq. | ||
| 20527 | |||
| 20528 | @item @code{no-hosts?} (par défaut : @code{#f}) | ||
| 20529 | Lorsque la valeur est vraie, ne pas lire les noms d'hôte dans /etc/hosts. | ||
| 20530 | |||
| 20531 | @item @code{port} (par défaut : @code{53}) | ||
| 20532 | Le port sur lequel écouter. Le mettre à zéro désactive complètement les | ||
| 20533 | réponses DNS, ce qui ne laisse que les fonctions DHCP et TFTP. | ||
| 20534 | |||
| 20535 | @item @code{local-service?} (par défaut : @code{#t}) | ||
| 20536 | Accepte les requêtes DNS seulement des hôtes dont les adresses sont sur le | ||
| 20537 | sous-réseau local, c.-à-d.@: sur un sous-réseau pour lequel une interface | ||
| 20538 | existe sur le serveur. | ||
| 20539 | |||
| 20540 | @item @code{listen-addresses} (par défaut : @code{'()}) | ||
| 20541 | Écoute sur le adresses IP données. | ||
| 20542 | |||
| 20543 | @item @code{resolv-file} (par défaut : @code{"/etc/resolv.conf"}) | ||
| 20544 | Le fichier où lire l'adresse IP des serveurs de noms en amont. | ||
| 20545 | |||
| 20546 | @item @code{no-resolv?} (par défaut : @code{#f}) | ||
| 20547 | Lorsque la valeur est vraie, ne pas lire @var{resolv-file}. | ||
| 20548 | |||
| 20549 | @item @code{servers} (par défaut : @code{'()}) | ||
| 20550 | Spécifiez l'adresse IP des serveurs en amont directement. | ||
| 20551 | |||
| 20552 | @item @code{cache-size} (par défaut : @code{150}) | ||
| 20553 | Indique la taille du cache de dnsmasq. Indiquer 0 désactive le cache. | ||
| 20554 | |||
| 20555 | @item @code{negative-cache?} (par défaut : @code{#t}) | ||
| 20556 | Lorsque la valeur est fausse, désactive le cache des réponses négatives. | ||
| 20557 | |||
| 20558 | @end table | ||
| 20559 | @end deftp | ||
| 20560 | |||
| 20561 | @subsubheading Service ddclient | ||
| 20562 | |||
| 20563 | @cindex ddclient | ||
| 20564 | Le service ddclient décrit plus bas lance le démon ddclient, qui prend en | ||
| 20565 | charge la mise à jour automatique des entrées DNS pour les fournisseurs de | ||
| 20566 | service comme @uref{https://dyn.com/dns/, Dyn}. | ||
| 20567 | |||
| 20568 | L'exemple suivant montre comment instantier le service avec sa configuration | ||
| 20569 | par défaut : | ||
| 20570 | |||
| 20571 | @example | ||
| 20572 | (service ddclient-service-type) | ||
| 20573 | @end example | ||
| 20574 | |||
| 20575 | Remarquez que ddclient a besoin d'accéder à des identifiants stockés dans un | ||
| 20576 | @dfn{fichier de secrets}, par défaut @file{/etc/ddclient/secrets} (voir | ||
| 20577 | @code{secret-file} plus bas). On s'attend à ce que vous créiez ce fichier | ||
| 20578 | manuellement, de manière externe à guix (vous @emph{pourriez} ajouter ce | ||
| 20579 | fichier dans une partie de votre configuration, par exemple avec | ||
| 20580 | @code{plain-file}, mais il serait lisible pour tout le monde via | ||
| 20581 | @file{/gnu/store}). Vois les exemples dans le répertoire | ||
| 20582 | @file{share/ddclient} du paquet @code{ddclient}. | ||
| 20583 | |||
| 20584 | @c %start of fragment | ||
| 20585 | |||
| 20586 | Les champs de @code{ddclient-configuration} disponibles sont : | ||
| 20587 | |||
| 20588 | @deftypevr {paramètre de @code{ddclient-configuration}} package ddclient | ||
| 20589 | Le paquet ddclient. | ||
| 20590 | |||
| 20591 | @end deftypevr | ||
| 20592 | |||
| 20593 | @deftypevr {paramètre de @code{ddclient-configuration}} integer daemon | ||
| 20594 | La période après laquelle ddclient réessaiera de vérifier l'IP et le nom de | ||
| 20595 | domaine. | ||
| 20596 | |||
| 20597 | La valeur par défaut est @samp{300}. | ||
| 20598 | |||
| 20599 | @end deftypevr | ||
| 20600 | |||
| 20601 | @deftypevr {paramètre de @code{ddclient-configuration}} boolean syslog | ||
| 20602 | Utiliser syslog pour la sortie. | ||
| 20603 | |||
| 20604 | La valeur par défaut est @samp{#t}. | ||
| 20605 | |||
| 20606 | @end deftypevr | ||
| 20607 | |||
| 20608 | @deftypevr {paramètre de @code{ddclient-configuration}} string mail | ||
| 20609 | Courriel de l'utilisateur. | ||
| 20610 | |||
| 20611 | La valeur par défaut est @samp{"root"}. | ||
| 20612 | |||
| 20613 | @end deftypevr | ||
| 20614 | |||
| 20615 | @deftypevr {paramètre de @code{ddclient-configuration}} string mail-failure | ||
| 20616 | Courriel de l'utilisateur pour les échecs. | ||
| 20617 | |||
| 20618 | La valeur par défaut est @samp{"root"}. | ||
| 20619 | |||
| 20620 | @end deftypevr | ||
| 20621 | |||
| 20622 | @deftypevr {paramètre de @code{ddclient-configuration}} string pid | ||
| 20623 | Le fichier de PID de ddclient. | ||
| 20624 | |||
| 20625 | La valeur par défaut est @samp{"/var/run/ddclient/ddclient.pid"}. | ||
| 20626 | |||
| 20627 | @end deftypevr | ||
| 20628 | |||
| 20629 | @deftypevr {paramètre de @code{ddclient-configuration}} boolean ssl | ||
| 20630 | Activer le support de SSL. | ||
| 20631 | |||
| 20632 | La valeur par défaut est @samp{#t}. | ||
| 20633 | |||
| 20634 | @end deftypevr | ||
| 20635 | |||
| 20636 | @deftypevr {paramètre de @code{ddclient-configuration}} string user | ||
| 20637 | Spécifie le nm d'utilisateur ou l'ID qui est utilisé pour lancer le | ||
| 20638 | programme ddclient. | ||
| 20639 | |||
| 20640 | La valeur par défaut est @samp{"ddclient"}. | ||
| 20641 | |||
| 20642 | @end deftypevr | ||
| 20643 | |||
| 20644 | @deftypevr {paramètre de @code{ddclient-configuration}} string group | ||
| 20645 | Groupe de l'utilisateur qui lancera le programme ddclient. | ||
| 20646 | |||
| 20647 | La valeur par défaut est @samp{"ddclient"}. | ||
| 20648 | |||
| 20649 | @end deftypevr | ||
| 20650 | |||
| 20651 | @deftypevr {paramètre de @code{ddclient-configuration}} string secret-file | ||
| 20652 | Fichier de secrets qui sera ajouté au fichier @file{ddclient.conf}. Ce | ||
| 20653 | fichier contient les paramètres d'authentification utilisés par ddclient. | ||
| 20654 | On s'attend à ce que vous le créiez manuellement. | ||
| 20655 | |||
| 20656 | La valeur par défaut est @samp{"/etc/ddclient/secrets.conf"}. | ||
| 20657 | |||
| 20658 | @end deftypevr | ||
| 20659 | |||
| 20660 | @deftypevr {paramètre de @code{ddclient-configuration}} list extra-options | ||
| 20661 | Options supplémentaires qui seront ajoutées au fichier @file{ddclient.conf}. | ||
| 20662 | |||
| 20663 | La valeur par défaut est @samp{()}. | ||
| 20664 | |||
| 20665 | @end deftypevr | ||
| 20666 | |||
| 20667 | |||
| 20668 | @c %end of fragment | ||
| 20669 | |||
| 20670 | |||
| 20671 | @node Services VPN | ||
| 20672 | @subsection Services VPN | ||
| 20673 | @cindex VPN (réseau privé virtuel) | ||
| 20674 | @cindex réseau privé virtuel (VPN) | ||
| 20675 | |||
| 20676 | Le module @code{(gnu services vpn)} fournit des services liés aux | ||
| 20677 | @dfn{réseaux privés virtuels} (VPN). Il fournit un srevice @emph{client} | ||
| 20678 | pour que votre machine se connecte à un VPN et un service @emph{serveur} | ||
| 20679 | pour que votre machine héberge un VPN. Les deux services utilisent | ||
| 20680 | @uref{https://openvpn.net/, OpenVPN}. | ||
| 20681 | |||
| 20682 | @deffn {Procédure Scheme} openvpn-client-service @ | ||
| 20683 | [#:config (openvpn-client-configuration)] | ||
| 20684 | |||
| 20685 | Renvoie un service qui lance @command{openvpn}, un démon VPN, en tant que | ||
| 20686 | client. | ||
| 20687 | @end deffn | ||
| 20688 | |||
| 20689 | @deffn {Procédure Scheme} openvpn-server-service @ | ||
| 20690 | [#:config (openvpn-server-configuration)] | ||
| 20691 | |||
| 20692 | Renvoie un service qui lance @command{openvpn}, un démon VPN, en tant que | ||
| 20693 | serveur. | ||
| 20694 | |||
| 20695 | Les deux services peuvent être lancés en même temps. | ||
| 20696 | @end deffn | ||
| 20697 | |||
| 20698 | @c %automatically generated documentation | ||
| 20699 | |||
| 20700 | Les champs de @code{openvpn-client-configuration} disponibles sont : | ||
| 20701 | |||
| 20702 | @deftypevr {paramètre de @code{openvpn-client-configuration}} package openvpn | ||
| 20703 | Le paquet OpenVPN. | ||
| 20704 | |||
| 20705 | @end deftypevr | ||
| 20706 | |||
| 20707 | @deftypevr {paramètre de @code{openvpn-client-configuration}} string pid-file | ||
| 20708 | Le fichier de PID d'OpenVPN. | ||
| 20709 | |||
| 20710 | La valeur par défaut est @samp{"/var/run/openvpn/openvpn.pid"}. | ||
| 20711 | |||
| 20712 | @end deftypevr | ||
| 20713 | |||
| 20714 | @deftypevr {paramètre de @code{openvpn-client-configuration}} proto proto | ||
| 20715 | Le protocole (UDP ou TCP) utilisé pour ouvrir un canal entre les clients et | ||
| 20716 | les serveurs. | ||
| 20717 | |||
| 20718 | La valeur par défaut est @samp{udp}. | ||
| 20719 | |||
| 20720 | @end deftypevr | ||
| 20721 | |||
| 20722 | @deftypevr {paramètre de @code{openvpn-client-configuration}} dev dev | ||
| 20723 | Le périphérique utilisé pour représenter la connexion VPN. | ||
| 20724 | |||
| 20725 | La valeur par défaut est @samp{tun}. | ||
| 20726 | |||
| 20727 | @end deftypevr | ||
| 20728 | |||
| 20729 | @deftypevr {paramètre de @code{openvpn-client-configuration}} string ca | ||
| 20730 | L'autorité de certification qui sert à vérifier les connexions. | ||
| 20731 | |||
| 20732 | La valeur par défaut est @samp{"/etc/openvpn/ca.crt"}. | ||
| 20733 | |||
| 20734 | @end deftypevr | ||
| 20735 | |||
| 20736 | @deftypevr {paramètre de @code{openvpn-client-configuration}} string cert | ||
| 20737 | Le certificat de la machine sur laquelle tourne le démon. Il devrait être | ||
| 20738 | signé par l'autorité indiquée dans @code{ca}. | ||
| 20739 | |||
| 20740 | La valeur par défaut est @samp{"/etc/openvpn/client.crt"}. | ||
| 20741 | |||
| 20742 | @end deftypevr | ||
| 20743 | |||
| 20744 | @deftypevr {paramètre de @code{openvpn-client-configuration}} string key | ||
| 20745 | La clef de la machine sur laquelle tourne le démon. Elle doit être la clef | ||
| 20746 | dont le certificat est donné dans @code{cert}. | ||
| 20747 | |||
| 20748 | La valeur par défaut est @samp{"/etc/openvpn/client.key"}. | ||
| 20749 | |||
| 20750 | @end deftypevr | ||
| 20751 | |||
| 20752 | @deftypevr {paramètre de @code{openvpn-client-configuration}} boolean comp-lzo? | ||
| 20753 | Indique s'il faut utiliser l'algorithme de compression lzo. | ||
| 20754 | |||
| 20755 | La valeur par défaut est @samp{#t}. | ||
| 20756 | |||
| 20757 | @end deftypevr | ||
| 20758 | |||
| 20759 | @deftypevr {paramètre de @code{openvpn-client-configuration}} boolean persist-key? | ||
| 20760 | Ne pas relire les fichiers de clefs entre les SIGUSR1 et les --ping-restart. | ||
| 20761 | |||
| 20762 | La valeur par défaut est @samp{#t}. | ||
| 20763 | |||
| 20764 | @end deftypevr | ||
| 20765 | |||
| 20766 | @deftypevr {paramètre de @code{openvpn-client-configuration}} boolean persist-tun? | ||
| 20767 | Ne pas fermer et rouvrir les périphériques TUN/TAP ou lancer de scripts de | ||
| 20768 | démarrage/d'arrêt entre les SIGUSR1 et les --ping-restart. | ||
| 20769 | |||
| 20770 | La valeur par défaut est @samp{#t}. | ||
| 20771 | |||
| 20772 | @end deftypevr | ||
| 20773 | |||
| 20774 | @deftypevr {paramètre de @code{openvpn-client-configuration}} number verbosity | ||
| 20775 | Niveau de verbosité. | ||
| 20776 | |||
| 20777 | La valeur par défaut est @samp{3}. | ||
| 20778 | |||
| 20779 | @end deftypevr | ||
| 20780 | |||
| 20781 | @deftypevr {paramètre de @code{openvpn-client-configuration}} tls-auth-client tls-auth | ||
| 20782 | Ajoute une couche d'authentification HMAC supplémentaire au dessus du canal | ||
| 20783 | de contrôle TLS pour se protéger contre les attaques DoS. | ||
| 20784 | |||
| 20785 | La valeur par défaut est @samp{#f}. | ||
| 20786 | |||
| 20787 | @end deftypevr | ||
| 20788 | |||
| 20789 | @deftypevr {paramètre de @code{openvpn-client-configuration}} key-usage verify-key-usage? | ||
| 20790 | Indique s'il faut vérifier que le certificat du serveur a l'extension | ||
| 20791 | d'utilisation. | ||
| 20792 | |||
| 20793 | La valeur par défaut est @samp{#t}. | ||
| 20794 | |||
| 20795 | @end deftypevr | ||
| 20796 | |||
| 20797 | @deftypevr {paramètre de @code{openvpn-client-configuration}} bind bind? | ||
| 20798 | Se lier à un port spécifique. | ||
| 20799 | |||
| 20800 | La valeur par défaut est @samp{#f}. | ||
| 20801 | |||
| 20802 | @end deftypevr | ||
| 20803 | |||
| 20804 | @deftypevr {paramètre de @code{openvpn-client-configuration}} resolv-retry resolv-retry? | ||
| 20805 | Réessayer de résoudre l'adresse du serveur. | ||
| 20806 | |||
| 20807 | La valeur par défaut est @samp{#t}. | ||
| 20808 | |||
| 20809 | @end deftypevr | ||
| 20810 | |||
| 20811 | @deftypevr {paramètre de @code{openvpn-client-configuration}} openvpn-remote-list remote | ||
| 20812 | Une liste de serveurs distants sur lesquels se connecter. | ||
| 20813 | |||
| 20814 | La valeur par défaut est @samp{()}. | ||
| 20815 | |||
| 20816 | Les champs de @code{openvpn-remote-configuration} disponibles sont : | ||
| 20817 | |||
| 20818 | @deftypevr {paramètre de @code{openvpn-remote-configuration}} string name | ||
| 20819 | Nom du serveur. | ||
| 20820 | |||
| 20821 | La valeur par défaut est @samp{"my-server"}. | ||
| 20822 | |||
| 20823 | @end deftypevr | ||
| 20824 | |||
| 20825 | @deftypevr {paramètre de @code{openvpn-remote-configuration}} number port | ||
| 20826 | Numéro de port sur lequel écoute le serveur. | ||
| 20827 | |||
| 20828 | La valeur par défaut est @samp{1194}. | ||
| 20829 | |||
| 20830 | @end deftypevr | ||
| 20831 | |||
| 20832 | @end deftypevr | ||
| 20833 | @c %end of automatic openvpn-client documentation | ||
| 20834 | |||
| 20835 | @c %automatically generated documentation | ||
| 20836 | |||
| 20837 | Les champs de @code{openvpn-server-configuration} disponibles sont : | ||
| 20838 | |||
| 20839 | @deftypevr {paramètre de @code{openvpn-server-configuration}} package openvpn | ||
| 20840 | Le paquet OpenVPN. | ||
| 20841 | |||
| 20842 | @end deftypevr | ||
| 20843 | |||
| 20844 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string pid-file | ||
| 20845 | Le fichier de PID d'OpenVPN. | ||
| 20846 | |||
| 20847 | La valeur par défaut est @samp{"/var/run/openvpn/openvpn.pid"}. | ||
| 20848 | |||
| 20849 | @end deftypevr | ||
| 20850 | |||
| 20851 | @deftypevr {paramètre de @code{openvpn-server-configuration}} proto proto | ||
| 20852 | Le protocole (UDP ou TCP) utilisé pour ouvrir un canal entre les clients et | ||
| 20853 | les serveurs. | ||
| 20854 | |||
| 20855 | La valeur par défaut est @samp{udp}. | ||
| 20856 | |||
| 20857 | @end deftypevr | ||
| 20858 | |||
| 20859 | @deftypevr {paramètre de @code{openvpn-server-configuration}} dev dev | ||
| 20860 | Le périphérique utilisé pour représenter la connexion VPN. | ||
| 20861 | |||
| 20862 | La valeur par défaut est @samp{tun}. | ||
| 20863 | |||
| 20864 | @end deftypevr | ||
| 20865 | |||
| 20866 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string ca | ||
| 20867 | L'autorité de certification qui sert à vérifier les connexions. | ||
| 20868 | |||
| 20869 | La valeur par défaut est @samp{"/etc/openvpn/ca.crt"}. | ||
| 20870 | |||
| 20871 | @end deftypevr | ||
| 20872 | |||
| 20873 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string cert | ||
| 20874 | Le certificat de la machine sur laquelle tourne le démon. Il devrait être | ||
| 20875 | signé par l'autorité indiquée dans @code{ca}. | ||
| 20876 | |||
| 20877 | La valeur par défaut est @samp{"/etc/openvpn/client.crt"}. | ||
| 20878 | |||
| 20879 | @end deftypevr | ||
| 20880 | |||
| 20881 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string key | ||
| 20882 | La clef de la machine sur laquelle tourne le démon. Elle doit être la clef | ||
| 20883 | dont le certificat est donné dans @code{cert}. | ||
| 20884 | |||
| 20885 | La valeur par défaut est @samp{"/etc/openvpn/client.key"}. | ||
| 20886 | |||
| 20887 | @end deftypevr | ||
| 20888 | |||
| 20889 | @deftypevr {paramètre de @code{openvpn-server-configuration}} boolean comp-lzo? | ||
| 20890 | Indique s'il faut utiliser l'algorithme de compression lzo. | ||
| 20891 | |||
| 20892 | La valeur par défaut est @samp{#t}. | ||
| 20893 | |||
| 20894 | @end deftypevr | ||
| 20895 | |||
| 20896 | @deftypevr {paramètre de @code{openvpn-server-configuration}} boolean persist-key? | ||
| 20897 | Ne pas relire les fichiers de clefs entre les SIGUSR1 et les --ping-restart. | ||
| 20898 | |||
| 20899 | La valeur par défaut est @samp{#t}. | ||
| 20900 | |||
| 20901 | @end deftypevr | ||
| 20902 | |||
| 20903 | @deftypevr {paramètre de @code{openvpn-server-configuration}} boolean persist-tun? | ||
| 20904 | Ne pas fermer et rouvrir les périphériques TUN/TAP ou lancer de scripts de | ||
| 20905 | démarrage/d'arrêt entre les SIGUSR1 et les --ping-restart. | ||
| 20906 | |||
| 20907 | La valeur par défaut est @samp{#t}. | ||
| 20908 | |||
| 20909 | @end deftypevr | ||
| 20910 | |||
| 20911 | @deftypevr {paramètre de @code{openvpn-server-configuration}} number verbosity | ||
| 20912 | Niveau de verbosité. | ||
| 20913 | |||
| 20914 | La valeur par défaut est @samp{3}. | ||
| 20915 | |||
| 20916 | @end deftypevr | ||
| 20917 | |||
| 20918 | @deftypevr {paramètre de @code{openvpn-server-configuration}} tls-auth-server tls-auth | ||
| 20919 | Ajoute une couche d'authentification HMAC supplémentaire au dessus du canal | ||
| 20920 | de contrôle TLS pour se protéger contre les attaques DoS. | ||
| 20921 | |||
| 20922 | La valeur par défaut est @samp{#f}. | ||
| 20923 | |||
| 20924 | @end deftypevr | ||
| 20925 | |||
| 20926 | @deftypevr {paramètre de @code{openvpn-server-configuration}} number port | ||
| 20927 | Spécifie le numéro de port sur lequel les serveurs écoutent. | ||
| 20928 | |||
| 20929 | La valeur par défaut est @samp{1194}. | ||
| 20930 | |||
| 20931 | @end deftypevr | ||
| 20932 | |||
| 20933 | @deftypevr {paramètre de @code{openvpn-server-configuration}} ip-mask server | ||
| 20934 | Une ip et un masque de sous-réseau spécifiant le sous-réseau dans le réseau | ||
| 20935 | virtuel. | ||
| 20936 | |||
| 20937 | La valeur par défaut est @samp{"10.8.0.0 255.255.255.0"}. | ||
| 20938 | |||
| 20939 | @end deftypevr | ||
| 20940 | |||
| 20941 | @deftypevr {paramètre de @code{openvpn-server-configuration}} cidr6 server-ipv6 | ||
| 20942 | Une notation CIDR pour spécifier le sous-réseau IPv6 dans le réseau virtuel. | ||
| 20943 | |||
| 20944 | La valeur par défaut est @samp{#f}. | ||
| 20945 | |||
| 20946 | @end deftypevr | ||
| 20947 | |||
| 20948 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string dh | ||
| 20949 | Le fichier de paramètres Diffie-Hellman. | ||
| 20950 | |||
| 20951 | La valeur par défaut est @samp{"/etc/openvpn/dh2048.pem"}. | ||
| 20952 | |||
| 20953 | @end deftypevr | ||
| 20954 | |||
| 20955 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string ifconfig-pool-persist | ||
| 20956 | Le fichier qui enregistre les IP des clients. | ||
| 20957 | |||
| 20958 | La valeur par défaut est @samp{"/etc/openvpn/ipp.txt"}. | ||
| 20959 | |||
| 20960 | @end deftypevr | ||
| 20961 | |||
| 20962 | @deftypevr {paramètre de @code{openvpn-server-configuration}} gateway redirect-gateway? | ||
| 20963 | Lorsque la valeur est vraie, le serveur agira comme une passerelle pour ses | ||
| 20964 | clients. | ||
| 20965 | |||
| 20966 | La valeur par défaut est @samp{#f}. | ||
| 20967 | |||
| 20968 | @end deftypevr | ||
| 20969 | |||
| 20970 | @deftypevr {paramètre de @code{openvpn-server-configuration}} boolean client-to-client? | ||
| 20971 | Lorsque la valeur est vraie, les clients sont autorisés à se parler entre | ||
| 20972 | eux dans le VPN. | ||
| 20973 | |||
| 20974 | La valeur par défaut est @samp{#f}. | ||
| 20975 | |||
| 20976 | @end deftypevr | ||
| 20977 | |||
| 20978 | @deftypevr {paramètre de @code{openvpn-server-configuration}} keepalive keepalive | ||
| 20979 | Fait que des messages de ping sont envoyés régulièrement dans les deux sens | ||
| 20980 | pour que chaque côté sache quand l'autre n'est plus disponible. | ||
| 20981 | @code{keepalive} a besoin d'une paire. Le premier élément est la période | ||
| 20982 | d'envoi du ping, et le second élément est le délai d'attente avant de | ||
| 20983 | considéré que l'autre côté n'est plus disponible. | ||
| 20984 | |||
| 20985 | @end deftypevr | ||
| 20986 | |||
| 20987 | @deftypevr {paramètre de @code{openvpn-server-configuration}} number max-clients | ||
| 20988 | Le nombre maximum de clients. | ||
| 20989 | |||
| 20990 | La valeur par défaut est @samp{100}. | ||
| 20991 | |||
| 20992 | @end deftypevr | ||
| 20993 | |||
| 20994 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string status | ||
| 20995 | Le fichier de statut. Ce fichier montre un court rapport sur les connexions | ||
| 20996 | actuelles. Il est tronqué et réécrit toutes les minutes. | ||
| 20997 | |||
| 20998 | La valeur par défaut est @samp{"/var/run/openvpn/status"}. | ||
| 20999 | |||
| 21000 | @end deftypevr | ||
| 21001 | |||
| 21002 | @deftypevr {paramètre de @code{openvpn-server-configuration}} openvpn-ccd-list client-config-dir | ||
| 21003 | La liste des configuration pour certains clients. | ||
| 21004 | |||
| 21005 | La valeur par défaut est @samp{()}. | ||
| 21006 | |||
| 21007 | Les champs de @code{openvpn-ccd-configuration} disponibles sont : | ||
| 21008 | |||
| 21009 | @deftypevr {paramètre de @code{openvpn-ccd-configuration}} string name | ||
| 21010 | Nom du client. | ||
| 21011 | |||
| 21012 | La valeur par défaut est @samp{"client"}. | ||
| 21013 | |||
| 21014 | @end deftypevr | ||
| 21015 | |||
| 21016 | @deftypevr {paramètre de @code{openvpn-ccd-configuration}} ip-mask iroute | ||
| 21017 | Le réseau du client | ||
| 21018 | |||
| 21019 | La valeur par défaut est @samp{#f}. | ||
| 21020 | |||
| 21021 | @end deftypevr | ||
| 21022 | |||
| 21023 | @deftypevr {paramètre de @code{openvpn-ccd-configuration}} ip-mask ifconfig-push | ||
| 21024 | IP du client sur le VPN. | ||
| 21025 | |||
| 21026 | La valeur par défaut est @samp{#f}. | ||
| 21027 | |||
| 21028 | @end deftypevr | ||
| 21029 | |||
| 21030 | @end deftypevr | ||
| 21031 | |||
| 21032 | |||
| 21033 | @c %end of automatic openvpn-server documentation | ||
| 21034 | |||
| 21035 | |||
| 21036 | @node Système de fichiers en réseau | ||
| 21037 | @subsection Système de fichiers en réseau | ||
| 21038 | @cindex NFS | ||
| 21039 | |||
| 21040 | Le module @code{(gnu services nfs)} fournit les services suivants, qui sont | ||
| 21041 | tous utilisés pour monter et exporter des arborescences de répertoires en | ||
| 21042 | @dfn{network file systems} (NFS). | ||
| 21043 | |||
| 21044 | @subsubheading Service RPC Bind | ||
| 21045 | @cindex rpcbind | ||
| 21046 | |||
| 21047 | Le service RPC Bind fournit un dispositif pour faire correspondre les | ||
| 21048 | numéros de programmes à des adresses universelles. De nombreux services | ||
| 21049 | liés à NFS utilisent ce dispositif. Donc il est automatiquement démarré | ||
| 21050 | lorsqu'un service qui en dépend est démarré. | ||
| 21051 | |||
| 21052 | @defvr {Variable Scheme} rpcbind-service-type | ||
| 21053 | Un type de service pour le démon RPC portmapper. | ||
| 21054 | @end defvr | ||
| 21055 | |||
| 21056 | |||
| 21057 | @deftp {Type de données} rpcbind-configuration | ||
| 21058 | Type données représentant la configuration du service RPC Bind. Ce type a | ||
| 21059 | les paramètres suivants : | ||
| 21060 | @table @asis | ||
| 21061 | @item @code{rpcbind} (par défaut : @code{rpcbind}) | ||
| 21062 | Le paquet rpcbind à utiliser. | ||
| 21063 | |||
| 21064 | @item @code{warm-start?} (par défaut : @code{#t}) | ||
| 21065 | Si ce paramètre est @code{#t}, alors le démon lira un fichier d'état au | ||
| 21066 | démarrage ce qui lui fait recharger les informations d'états sauvegardés par | ||
| 21067 | une instance précédente. | ||
| 21068 | @end table | ||
| 21069 | @end deftp | ||
| 21070 | |||
| 21071 | |||
| 21072 | @subsubheading Pseudo-système de fichiers Pipefs | ||
| 21073 | @cindex pipefs | ||
| 21074 | @cindex rpc_pipefs | ||
| 21075 | |||
| 21076 | Le système de fichiers pipefs est utilisé pour transférer des données liées | ||
| 21077 | à NFS entre le noyau et les programmes en espace utilisateur. | ||
| 21078 | |||
| 21079 | @defvr {Variable Scheme} pipefs-service-type | ||
| 21080 | Un type de service pour le pseudo-système de fichiers pipefs. | ||
| 21081 | @end defvr | ||
| 21082 | |||
| 21083 | @deftp {Type de données} pipefs-configuration | ||
| 21084 | Type de données représentant la configuration du service du pseudo-système | ||
| 21085 | de fichiers pipefs. Ce type a les paramètres suivants : | ||
| 21086 | @table @asis | ||
| 21087 | @item @code{mount-point} (par défaut : @code{"/var/lib/nfs/rpc_pipefs"}) | ||
| 21088 | Le répertoire dans lequel le système de fichiers est attaché. | ||
| 21089 | @end table | ||
| 21090 | @end deftp | ||
| 21091 | |||
| 21092 | |||
| 21093 | @subsubheading Service de démon GSS | ||
| 21094 | @cindex GSSD | ||
| 21095 | @cindex GSS | ||
| 21096 | @cindex système de sécurité global | ||
| 21097 | |||
| 21098 | Le démon du @dfn{système de sécurité global} (GSS) fournit une sécurité | ||
| 21099 | forte pour les protocoles basés sur des RPC. Avant d'échanger des requêtes | ||
| 21100 | RPC, un client RPC doit établir un contexte sécurisé. Typiquement cela se | ||
| 21101 | fait avec la commande Kerberos @command{kinit} ou automatiquement à la | ||
| 21102 | connexion avec les services PAM (@pxref{Services Kerberos}). | ||
| 21103 | |||
| 21104 | @defvr {Variable Scheme} gss-service-type | ||
| 21105 | Un type de service pour le démon du système de sécurité global (GSS). | ||
| 21106 | @end defvr | ||
| 21107 | |||
| 21108 | @deftp {Type de données} gss-configuration | ||
| 21109 | Type de données représentant la configuration du service du démon GSS. Ce | ||
| 21110 | type a les paramètres suivants : | ||
| 21111 | @table @asis | ||
| 21112 | @item @code{nfs-utils} (par défaut : @code{nfs-utils}) | ||
| 21113 | Le paquet dans lequel la commande @command{rpc.gssd} se trouve. | ||
| 21114 | |||
| 21115 | @item @code{pipefs-directory} (par défaut : @code{"/var/lib/nfs/rpc_pipefs"}) | ||
| 21116 | Le répertoire où le système de fichier pipefs doit être monté. | ||
| 21117 | |||
| 21118 | @end table | ||
| 21119 | @end deftp | ||
| 21120 | |||
| 21121 | |||
| 21122 | @subsubheading Service de démon IDMAP | ||
| 21123 | @cindex idmapd | ||
| 21124 | @cindex correspondance de nom | ||
| 21125 | |||
| 21126 | Le service du démon idmap fournit une correspondance entre les ID | ||
| 21127 | utilisateur et les noms d'utilisateurs. Typiquement, cela est requis pour | ||
| 21128 | accéder aux systèmes de fichiers montés via NFSv4. | ||
| 21129 | |||
| 21130 | @defvr {Variable Scheme} idmap-service-type | ||
| 21131 | Un type de service pour le démon de correspondance d'identité (IDMAP). | ||
| 21132 | @end defvr | ||
| 21133 | |||
| 21134 | @deftp {Type de données} idmap-configuration | ||
| 21135 | Type de données représentant la configuration du service du démon IDMAP. Ce | ||
| 21136 | type a les paramètres suivants : | ||
| 21137 | @table @asis | ||
| 21138 | @item @code{nfs-utils} (par défaut : @code{nfs-utils}) | ||
| 21139 | Le paquet dans lequel se trouve la commande @command{rpc.idmapd}. | ||
| 21140 | |||
| 21141 | @item @code{pipefs-directory} (par défaut : @code{"/var/lib/nfs/rpc_pipefs"}) | ||
| 21142 | Le répertoire où le système de fichier pipefs doit être monté. | ||
| 21143 | |||
| 21144 | @item @code{domain} (par défaut : @code{#f}) | ||
| 21145 | Le nom de domaine NFSv4 local. Il faut que ce soit une chaîne de caractères | ||
| 21146 | ou @code{#f}. Si la valeur est @code{#f} le démon utilisera le nom de | ||
| 21147 | domaine pleinement qualifié de l'hôte. | ||
| 21148 | |||
| 21149 | @end table | ||
| 21150 | @end deftp | ||
| 21151 | |||
| 21152 | @node Intégration continue | ||
| 21153 | @subsection Intégration continue | ||
| 21154 | |||
| 21155 | @cindex intégration continue | ||
| 21156 | @uref{https://git.savannah.gnu.org/cgit/guix/guix-cuirass.git, Cuirass} est | ||
| 21157 | un outil d'intégration continue pour Guix. On peut l'utiliser aussi bien | ||
| 21158 | pour le développement que pour fournir des substituts à d'autres | ||
| 21159 | (@pxref{Substituts}). | ||
| 21160 | |||
| 21161 | Le module @code{(gnu services cuirass)} fournit le service suivant. | ||
| 21162 | |||
| 21163 | @defvr {Procédure Scheme} cuirass-service-type | ||
| 21164 | Le type du service Cuirass. Sa valeur doit être un objet | ||
| 21165 | @code{cuirass-configuration}, décrit ci-dessous. | ||
| 21166 | @end defvr | ||
| 21167 | |||
| 21168 | Pour ajouter des travaux de construction, vous devez indiquer le champ | ||
| 21169 | @code{specifications} de la configuration. Voici un exemple de service qui | ||
| 21170 | récupère le dépôt Guix et construit les paquets depuis un manifeste. | ||
| 21171 | Certains des paquets sont définis dans l'entrée @code{"custom-packages"}, | ||
| 21172 | qui est l'équivalent de @code{GUIX_PACKAGE_PATH}. | ||
| 21173 | |||
| 21174 | @example | ||
| 21175 | (define %cuirass-specs | ||
| 21176 | #~(list | ||
| 21177 | '((#:name . "my-manifest") | ||
| 21178 | (#:load-path-inputs . ("guix")) | ||
| 21179 | (#:package-path-inputs . ("custom-packages")) | ||
| 21180 | (#:proc-input . "guix") | ||
| 21181 | (#:proc-file . "build-aux/cuirass/gnu-system.scm") | ||
| 21182 | (#:proc . cuirass-jobs) | ||
| 21183 | (#:proc-args . ((subset . "manifests") | ||
| 21184 | (systems . ("x86_64-linux")) | ||
| 21185 | (manifests . (("config" . "guix/manifest.scm"))))) | ||
| 21186 | (#:inputs . (((#:name . "guix") | ||
| 21187 | (#:url . "git://git.savannah.gnu.org/guix.git") | ||
| 21188 | (#:load-path . ".") | ||
| 21189 | (#:branch . "master") | ||
| 21190 | (#:no-compile? . #t)) | ||
| 21191 | ((#:name . "config") | ||
| 21192 | (#:url . "git://git.example.org/config.git") | ||
| 21193 | (#:load-path . ".") | ||
| 21194 | (#:branch . "master") | ||
| 21195 | (#:no-compile? . #t)) | ||
| 21196 | ((#:name . "custom-packages") | ||
| 21197 | (#:url . "git://git.example.org/custom-packages.git") | ||
| 21198 | (#:load-path . ".") | ||
| 21199 | (#:branch . "master") | ||
| 21200 | (#:no-compile? . #t))))))) | ||
| 21201 | |||
| 21202 | (service cuirass-service-type | ||
| 21203 | (cuirass-configuration | ||
| 21204 | (specifications %cuirass-specs))) | ||
| 21205 | @end example | ||
| 21206 | |||
| 21207 | Tandis que les informations liés aux travaux de construction sont | ||
| 21208 | directement dans les spécifications, les paramètres globaux pour le | ||
| 21209 | processus @command{cuirass} sont accessibles dans les autres champs de | ||
| 21210 | @code{cuirass-configuration}. | ||
| 21211 | |||
| 21212 | @deftp {Type de données} cuirass-configuration | ||
| 21213 | Type de données représentant la configuration de Cuirass. | ||
| 21214 | |||
| 21215 | @table @asis | ||
| 21216 | @item @code{log-file} (par défaut : @code{"/var/log/cuirass.log"}) | ||
| 21217 | Emplacement du fichier de journal. | ||
| 21218 | |||
| 21219 | @item @code{cache-directory} (par défaut : @code{"/var/cache/cuirass"}) | ||
| 21220 | Emplacement du cache du dépôt. | ||
| 21221 | |||
| 21222 | @item @code{user} (par défaut : @code{"cuirass"}) | ||
| 21223 | Propriétaire du processus @code{cuirass}. | ||
| 21224 | |||
| 21225 | @item @code{group} (par défaut : @code{"cuirass"}) | ||
| 21226 | Groupe du propriétaire du processus @code{cuirass}. | ||
| 21227 | |||
| 21228 | @item @code{interval} (par défaut : @code{60}) | ||
| 21229 | Nombre de secondes entre les mises à jour du dépôt suivis des travaux de | ||
| 21230 | Cuirass. | ||
| 21231 | |||
| 21232 | @item @code{database} (par défaut : @code{"/var/lib/cuirass/cuirass.db"}) | ||
| 21233 | Emplacement de la base de données sqlite qui contient les résultats de | ||
| 21234 | construction et les spécifications précédemment ajoutées. | ||
| 21235 | |||
| 21236 | @item @code{ttl} (par défaut : @code{(* 30 24 3600)}) | ||
| 21237 | Spécifie la durée de vie (TTL) en seconde des racines du ramasse-miette qui | ||
| 21238 | sont enregistrés comme des résultats de construction. Cela signifie que les | ||
| 21239 | résultats de construction ne seront pas glanés pendant au moins @var{ttl} | ||
| 21240 | secondes. | ||
| 21241 | |||
| 21242 | @item @code{port} (par défaut : @code{8081}) | ||
| 21243 | Numéro de port utilisé pour le serveur HTTP. | ||
| 21244 | |||
| 21245 | @item --listen=@var{hôte} | ||
| 21246 | Écoute sur l'interface réseau de @var{host}. La valeur par défaut est | ||
| 21247 | d'accepter les connexions depuis localhost. | ||
| 21248 | |||
| 21249 | @item @code{specifications} (par défaut : @code{#~'()}) | ||
| 21250 | Une gexp (@pxref{G-Expressions}) qui s'évalue en une liste de | ||
| 21251 | spécifications, où une spécification est une liste d'association | ||
| 21252 | (@pxref{Associations Lists,,, guile, GNU Guile Reference Manual}) dont les | ||
| 21253 | clefs sont des mots-clefs (@code{#:exemple-de-mot-clef}) comme dans | ||
| 21254 | l'exemple plus haut. | ||
| 21255 | |||
| 21256 | @item @code{use-substitutes?} (par défaut : @code{#f}) | ||
| 21257 | Cela permet d'utiliser des substituts pour éviter de construire toutes les | ||
| 21258 | dépendance d'un travail depuis les sources. | ||
| 21259 | |||
| 21260 | @item @code{one-shot?} (par défaut : @code{#f}) | ||
| 21261 | N'évaluer les spécification et construire les dérivations qu'une seule fois. | ||
| 21262 | |||
| 21263 | @item @code{fallback?} (par défaut : @code{#f}) | ||
| 21264 | Lorsque la substitution d'un binaire pré-construit échoue, revenir à la | ||
| 21265 | construction locale du paquet. | ||
| 21266 | |||
| 21267 | @item @code{cuirass} (par défaut : @code{cuirass}) | ||
| 21268 | Le paquet Cuirass à utiliser. | ||
| 21269 | @end table | ||
| 21270 | @end deftp | ||
| 21271 | |||
| 21272 | @node Services de gestion de l'énergie | ||
| 21273 | @subsection Services de gestion de l'énergie | ||
| 21274 | |||
| 21275 | @cindex tlp | ||
| 21276 | @cindex gestion de l'énergie avec TLP | ||
| 21277 | @subsubheading démon TLP | ||
| 21278 | |||
| 21279 | Le module @code{(gnu services pm)} fournit une définition de service Guix | ||
| 21280 | pour l'outil de gestion d'énergie Linux TLP. | ||
| 21281 | |||
| 21282 | TLP active plusieurs modes un espace utilisateur et dans le noyau. | ||
| 21283 | Contrairement à @code{upower-service}, ce n'est pas un outil passif de | ||
| 21284 | surveillance, puisqu'il applique des paramètres personnalisés à chaque fois | ||
| 21285 | qu'il détecte une nouvelle source d'énergie. Vous pouvez trouver plus | ||
| 21286 | d'informations sur @uref{http://linrunner.de/en/tlp/tlp.html, la page | ||
| 21287 | d'accueil de TLP}. | ||
| 21288 | |||
| 21289 | @deffn {Variable Scheme} tlp-service-type | ||
| 21290 | Le type de service pour l'outil TLP. Sa valeur devrait être une | ||
| 21291 | configuration valide de TLP (voir plus bas). Pour utiliser les paramètres | ||
| 21292 | par défaut, écrivez simplement : | ||
| 21293 | @example | ||
| 21294 | (service tlp-service-type) | ||
| 21295 | @end example | ||
| 21296 | @end deffn | ||
| 21297 | |||
| 21298 | Par défaut TLP n'a pas besoin de beaucoup de configuration mais la plupart | ||
| 21299 | des paramètres de TLP peuvent être modifiés avec @code{tlp-configuration}. | ||
| 21300 | |||
| 21301 | Chaque définition de paramètre est précédée par son type ; par exemple, | ||
| 21302 | @samp{boolean foo} indique que le paramètre @code{foo} doit être spécifié | ||
| 21303 | comme un booléen. Les types qui commencent par @code{maybe-} dénotent des | ||
| 21304 | paramètres qui n'apparaîtront pas dans la configuration de TLP lorsque leur | ||
| 21305 | valeur est @code{'disabled}. | ||
| 21306 | |||
| 21307 | @c The following documentation was initially generated by | ||
| 21308 | @c (generate-tlp-documentation) in (gnu services pm). Manually maintained | ||
| 21309 | @c documentation is better, so we shouldn't hesitate to edit below as | ||
| 21310 | @c needed. However if the change you want to make to this documentation | ||
| 21311 | @c can be done in an automated way, it's probably easier to change | ||
| 21312 | @c (generate-documentation) than to make it below and have to deal with | ||
| 21313 | @c the churn as TLP updates. | ||
| 21314 | |||
| 21315 | Les champs de @code{tlp-configuration} disponibles sont : | ||
| 21316 | |||
| 21317 | @deftypevr {paramètre de @code{tlp-configuration}} package tlp | ||
| 21318 | Le paquet TLP. | ||
| 21319 | |||
| 21320 | @end deftypevr | ||
| 21321 | |||
| 21322 | @deftypevr {paramètre de @code{tlp-configuration}} boolean tlp-enable? | ||
| 21323 | Indiquez vrai si vous souhaitez activer TLP. | ||
| 21324 | |||
| 21325 | La valeur par défaut est @samp{#t}. | ||
| 21326 | |||
| 21327 | @end deftypevr | ||
| 21328 | |||
| 21329 | @deftypevr {paramètre de @code{tlp-configuration}} string tlp-default-mode | ||
| 21330 | Mode par défaut lorsqu'aucune source d'énergie ne peut être détectée. Les | ||
| 21331 | possibilités sont AC et BAT. | ||
| 21332 | |||
| 21333 | La valeur par défaut est @samp{"AC"}. | ||
| 21334 | |||
| 21335 | @end deftypevr | ||
| 21336 | |||
| 21337 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer disk-idle-secs-on-ac | ||
| 21338 | Nombre de secondes que le noyau Linux doit attendre après que les disques | ||
| 21339 | s'arrêtent pour se synchroniser quand il est sur secteur. | ||
| 21340 | |||
| 21341 | La valeur par défaut est @samp{0}. | ||
| 21342 | |||
| 21343 | @end deftypevr | ||
| 21344 | |||
| 21345 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer disk-idle-secs-on-bat | ||
| 21346 | Comme @code{disk-idle-ac} mais en mode batterie. | ||
| 21347 | |||
| 21348 | La valeur par défaut est @samp{2}. | ||
| 21349 | |||
| 21350 | @end deftypevr | ||
| 21351 | |||
| 21352 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer max-lost-work-secs-on-ac | ||
| 21353 | Périodicité du nettoyage des pages invalidées, en secondes. | ||
| 21354 | |||
| 21355 | La valeur par défaut est @samp{15}. | ||
| 21356 | |||
| 21357 | @end deftypevr | ||
| 21358 | |||
| 21359 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer max-lost-work-secs-on-bat | ||
| 21360 | Comme @code{max-lost-work-secs-on-ac} mais en mode batterie. | ||
| 21361 | |||
| 21362 | La valeur par défaut est @samp{60}. | ||
| 21363 | |||
| 21364 | @end deftypevr | ||
| 21365 | |||
| 21366 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list cpu-scaling-governor-on-ac | ||
| 21367 | Gouverneur de fréquence d'horloge sur secteur. Avec le pilote intel_pstate, | ||
| 21368 | les possibilités sont powersave et performance. Avec le pilote | ||
| 21369 | acpi-cpufreq, les possibilités sont ondemand, powersave, performance et | ||
| 21370 | conservative. | ||
| 21371 | |||
| 21372 | La valeur par défaut est @samp{disabled}. | ||
| 21373 | |||
| 21374 | @end deftypevr | ||
| 21375 | |||
| 21376 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list cpu-scaling-governor-on-bat | ||
| 21377 | Comme @code{cpu-scaling-governor-on-ac} mais en mode batterie. | ||
| 21378 | |||
| 21379 | La valeur par défaut est @samp{disabled}. | ||
| 21380 | |||
| 21381 | @end deftypevr | ||
| 21382 | |||
| 21383 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-scaling-min-freq-on-ac | ||
| 21384 | Indique la fréquence d'horloge minimale pour le gouverneur sur secteur. | ||
| 21385 | |||
| 21386 | La valeur par défaut est @samp{disabled}. | ||
| 21387 | |||
| 21388 | @end deftypevr | ||
| 21389 | |||
| 21390 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-scaling-max-freq-on-ac | ||
| 21391 | Indique la fréquence d'horloge maximale pour le gouverneur sur secteur. | ||
| 21392 | |||
| 21393 | La valeur par défaut est @samp{disabled}. | ||
| 21394 | |||
| 21395 | @end deftypevr | ||
| 21396 | |||
| 21397 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-scaling-min-freq-on-bat | ||
| 21398 | Indique la fréquence d'horloge minimale pour le gouverneur sur batterie. | ||
| 21399 | |||
| 21400 | La valeur par défaut est @samp{disabled}. | ||
| 21401 | |||
| 21402 | @end deftypevr | ||
| 21403 | |||
| 21404 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-scaling-max-freq-on-bat | ||
| 21405 | Indique la fréquence d'horloge maximale pour le gouverneur sur batterie. | ||
| 21406 | |||
| 21407 | La valeur par défaut est @samp{disabled}. | ||
| 21408 | |||
| 21409 | @end deftypevr | ||
| 21410 | |||
| 21411 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-min-perf-on-ac | ||
| 21412 | Limite le P-état minimum pour contrôler la dissipation de puissance dans le | ||
| 21413 | CPU, sur secteur. Les valeurs sont indiqués comme un pourcentage des | ||
| 21414 | performances disponibles. | ||
| 21415 | |||
| 21416 | La valeur par défaut est @samp{disabled}. | ||
| 21417 | |||
| 21418 | @end deftypevr | ||
| 21419 | |||
| 21420 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-max-perf-on-ac | ||
| 21421 | Limite le P-état maximum pour contrôler la dissipation de puissance dans le | ||
| 21422 | CPU, sur secteur. Les valeurs sont indiqués comme un pourcentage des | ||
| 21423 | performances disponibles. | ||
| 21424 | |||
| 21425 | La valeur par défaut est @samp{disabled}. | ||
| 21426 | |||
| 21427 | @end deftypevr | ||
| 21428 | |||
| 21429 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-min-perf-on-bat | ||
| 21430 | Comme @code{cpu-min-perf-on-ac} mais en mode batterie. | ||
| 21431 | |||
| 21432 | La valeur par défaut est @samp{disabled}. | ||
| 21433 | |||
| 21434 | @end deftypevr | ||
| 21435 | |||
| 21436 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-max-perf-on-bat | ||
| 21437 | Comme @code{cpu-max-perf-on-ac} mais en mode batterie. | ||
| 21438 | |||
| 21439 | La valeur par défaut est @samp{disabled}. | ||
| 21440 | |||
| 21441 | @end deftypevr | ||
| 21442 | |||
| 21443 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-boolean cpu-boost-on-ac? | ||
| 21444 | Active la fonctionnalité turbo boost du CPU sur secteur. | ||
| 21445 | |||
| 21446 | La valeur par défaut est @samp{disabled}. | ||
| 21447 | |||
| 21448 | @end deftypevr | ||
| 21449 | |||
| 21450 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-boolean cpu-boost-on-bat? | ||
| 21451 | Comme @code{cpu-boost-on-ac?} mais en mode batterie. | ||
| 21452 | |||
| 21453 | La valeur par défaut est @samp{disabled}. | ||
| 21454 | |||
| 21455 | @end deftypevr | ||
| 21456 | |||
| 21457 | @deftypevr {paramètre de @code{tlp-configuration}} boolean sched-powersave-on-ac? | ||
| 21458 | Permet au noyau Linux de minimiser le nombre de cœurs/hyper-threads CPU | ||
| 21459 | utilisés lorsque la charge est faible. | ||
| 21460 | |||
| 21461 | La valeur par défaut est @samp{#f}. | ||
| 21462 | |||
| 21463 | @end deftypevr | ||
| 21464 | |||
| 21465 | @deftypevr {paramètre de @code{tlp-configuration}} boolean sched-powersave-on-bat? | ||
| 21466 | Comme @code{sched-powersave-on-ac?} mais en mode batterie. | ||
| 21467 | |||
| 21468 | La valeur par défaut est @samp{#t}. | ||
| 21469 | |||
| 21470 | @end deftypevr | ||
| 21471 | |||
| 21472 | @deftypevr {paramètre de @code{tlp-configuration}} boolean nmi-watchdog? | ||
| 21473 | Active le chien de garde NMI du noyau Linux. | ||
| 21474 | |||
| 21475 | La valeur par défaut est @samp{#f}. | ||
| 21476 | |||
| 21477 | @end deftypevr | ||
| 21478 | |||
| 21479 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-string phc-controls | ||
| 21480 | Pour les noyaux Linux avec le correctif PHC, change le voltage du CPU. Une | ||
| 21481 | valeur serait par exemple @samp{"F:V F:V F:V F:V"}. | ||
| 21482 | |||
| 21483 | La valeur par défaut est @samp{disabled}. | ||
| 21484 | |||
| 21485 | @end deftypevr | ||
| 21486 | |||
| 21487 | @deftypevr {paramètre de @code{tlp-configuration}} string energy-perf-policy-on-ac | ||
| 21488 | Indique le niveau de performance du CPU par rapport à la politique de | ||
| 21489 | gestion de l'énergie sur secteur. Les possibilités sont performance, normal | ||
| 21490 | et powersave. | ||
| 21491 | |||
| 21492 | La valeur par défaut est @samp{"performance"}. | ||
| 21493 | |||
| 21494 | @end deftypevr | ||
| 21495 | |||
| 21496 | @deftypevr {paramètre de @code{tlp-configuration}} string energy-perf-policy-on-bat | ||
| 21497 | Comme @code{energy-perf-policy-ac} mais en mode batterie. | ||
| 21498 | |||
| 21499 | La valeur par défaut est @samp{"powersave"}. | ||
| 21500 | |||
| 21501 | @end deftypevr | ||
| 21502 | |||
| 21503 | @deftypevr {paramètre de @code{tlp-configuration}} space-separated-string-list disks-devices | ||
| 21504 | Périphériques de disque dur. | ||
| 21505 | |||
| 21506 | @end deftypevr | ||
| 21507 | |||
| 21508 | @deftypevr {paramètre de @code{tlp-configuration}} space-separated-string-list disk-apm-level-on-ac | ||
| 21509 | Niveau de gestion de l'énergie avancé des disques durs. | ||
| 21510 | |||
| 21511 | @end deftypevr | ||
| 21512 | |||
| 21513 | @deftypevr {paramètre de @code{tlp-configuration}} space-separated-string-list disk-apm-level-on-bat | ||
| 21514 | Comme @code{disk-apm-bat} mais en mode batterie. | ||
| 21515 | |||
| 21516 | @end deftypevr | ||
| 21517 | |||
| 21518 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list disk-spindown-timeout-on-ac | ||
| 21519 | Délai d'attente pour arrêter de faire tourner les disques. Une valeur doit | ||
| 21520 | être spécifiée pour chaque disque dur déclaré. | ||
| 21521 | |||
| 21522 | La valeur par défaut est @samp{disabled}. | ||
| 21523 | |||
| 21524 | @end deftypevr | ||
| 21525 | |||
| 21526 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list disk-spindown-timeout-on-bat | ||
| 21527 | Comme @code{disk-spindown-timeout-on-ac} mais en mode batterie. | ||
| 21528 | |||
| 21529 | La valeur par défaut est @samp{disabled}. | ||
| 21530 | |||
| 21531 | @end deftypevr | ||
| 21532 | |||
| 21533 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list disk-iosched | ||
| 21534 | Sélectionne l'ordonnanceur d'entrées-sorties pour le disque. Une valeur | ||
| 21535 | doit être spécifiée pour chaque disque déclaré. Les possibilités sont par | ||
| 21536 | exemple cfq, deadline et noop. | ||
| 21537 | |||
| 21538 | La valeur par défaut est @samp{disabled}. | ||
| 21539 | |||
| 21540 | @end deftypevr | ||
| 21541 | |||
| 21542 | @deftypevr {paramètre de @code{tlp-configuration}} string sata-linkpwr-on-ac | ||
| 21543 | Niveau de gestion de l'énergie des lien SATA aggressive (ALPM). Les | ||
| 21544 | possibilités sont min_power, medium_power et max_performance. | ||
| 21545 | |||
| 21546 | La valeur par défaut est @samp{"max_performance"}. | ||
| 21547 | |||
| 21548 | @end deftypevr | ||
| 21549 | |||
| 21550 | @deftypevr {paramètre de @code{tlp-configuration}} string sata-linkpwr-on-bat | ||
| 21551 | Comme @code{sata-linkpwr-ac} mais en mode batterie. | ||
| 21552 | |||
| 21553 | La valeur par défaut est @samp{"min_power"}. | ||
| 21554 | |||
| 21555 | @end deftypevr | ||
| 21556 | |||
| 21557 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-string sata-linkpwr-blacklist | ||
| 21558 | Exclu les périphériques SATA spécifiés de la gestion de l'énergie des liens. | ||
| 21559 | |||
| 21560 | La valeur par défaut est @samp{disabled}. | ||
| 21561 | |||
| 21562 | @end deftypevr | ||
| 21563 | |||
| 21564 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-on-off-boolean ahci-runtime-pm-on-ac? | ||
| 21565 | Active la gestion de l'énergie à l'exécution pour les contrôleurs AHCI et | ||
| 21566 | les disques, sur secteur. | ||
| 21567 | |||
| 21568 | La valeur par défaut est @samp{disabled}. | ||
| 21569 | |||
| 21570 | @end deftypevr | ||
| 21571 | |||
| 21572 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-on-off-boolean ahci-runtime-pm-on-bat? | ||
| 21573 | Comme @code{ahci-runtime-pm-on-ac} mais en mode batterie. | ||
| 21574 | |||
| 21575 | La valeur par défaut est @samp{disabled}. | ||
| 21576 | |||
| 21577 | @end deftypevr | ||
| 21578 | |||
| 21579 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer ahci-runtime-pm-timeout | ||
| 21580 | Secondes d'inactivités avant de suspendre les disques. | ||
| 21581 | |||
| 21582 | La valeur par défaut est @samp{15}. | ||
| 21583 | |||
| 21584 | @end deftypevr | ||
| 21585 | |||
| 21586 | @deftypevr {paramètre de @code{tlp-configuration}} string pcie-aspm-on-ac | ||
| 21587 | Niveau de gestion de l'énergie des états actifs de PCI Express. Les | ||
| 21588 | possibilités sont default, performance et powersave. | ||
| 21589 | |||
| 21590 | La valeur par défaut est @samp{"performance"}. | ||
| 21591 | |||
| 21592 | @end deftypevr | ||
| 21593 | |||
| 21594 | @deftypevr {paramètre de @code{tlp-configuration}} string pcie-aspm-on-bat | ||
| 21595 | Comme @code{pcie-aspm-ac} mais en mode batterie. | ||
| 21596 | |||
| 21597 | La valeur par défaut est @samp{"powersave"}. | ||
| 21598 | |||
| 21599 | @end deftypevr | ||
| 21600 | |||
| 21601 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-power-profile-on-ac | ||
| 21602 | Niveau de vitesse de l'horloge des cartes graphiques Radeon. Les | ||
| 21603 | possibilités sont low, mid, high, auto et default. | ||
| 21604 | |||
| 21605 | La valeur par défaut est @samp{"high"}. | ||
| 21606 | |||
| 21607 | @end deftypevr | ||
| 21608 | |||
| 21609 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-power-profile-on-bat | ||
| 21610 | Comme @code{radeon-power-ac} mais en mode batterie. | ||
| 21611 | |||
| 21612 | La valeur par défaut est @samp{"low"}. | ||
| 21613 | |||
| 21614 | @end deftypevr | ||
| 21615 | |||
| 21616 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-dpm-state-on-ac | ||
| 21617 | Méthode de gestion de l'énergie dynamique de Radeon (DPM). Les possibilités | ||
| 21618 | sont battery et performance. | ||
| 21619 | |||
| 21620 | La valeur par défaut est @samp{"performance"}. | ||
| 21621 | |||
| 21622 | @end deftypevr | ||
| 21623 | |||
| 21624 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-dpm-state-on-bat | ||
| 21625 | Comme @code{radeon-dpm-state-ac} mais en mode batterie. | ||
| 21626 | |||
| 21627 | La valeur par défaut est @samp{"battery"}. | ||
| 21628 | |||
| 21629 | @end deftypevr | ||
| 21630 | |||
| 21631 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-dpm-perf-level-on-ac | ||
| 21632 | Niveau de performance de DPM. Les possibilités sont auto, low et high. | ||
| 21633 | |||
| 21634 | La valeur par défaut est @samp{"auto"}. | ||
| 21635 | |||
| 21636 | @end deftypevr | ||
| 21637 | |||
| 21638 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-dpm-perf-level-on-bat | ||
| 21639 | Comme @code{radeon-dpm-perf-ac} mais en mode batterie. | ||
| 21640 | |||
| 21641 | La valeur par défaut est @samp{"auto"}. | ||
| 21642 | |||
| 21643 | @end deftypevr | ||
| 21644 | |||
| 21645 | @deftypevr {paramètre de @code{tlp-configuration}} on-off-boolean wifi-pwr-on-ac? | ||
| 21646 | Mode de gestion de l'énergie wifi. | ||
| 21647 | |||
| 21648 | La valeur par défaut est @samp{#f}. | ||
| 21649 | |||
| 21650 | @end deftypevr | ||
| 21651 | |||
| 21652 | @deftypevr {paramètre de @code{tlp-configuration}} on-off-boolean wifi-pwr-on-bat? | ||
| 21653 | Comme @code{wifi-power-ac?} mais en mode batterie. | ||
| 21654 | |||
| 21655 | La valeur par défaut est @samp{#t}. | ||
| 21656 | |||
| 21657 | @end deftypevr | ||
| 21658 | |||
| 21659 | @deftypevr {paramètre de @code{tlp-configuration}} y-n-boolean wol-disable? | ||
| 21660 | Désactive wake on LAN. | ||
| 21661 | |||
| 21662 | La valeur par défaut est @samp{#t}. | ||
| 21663 | |||
| 21664 | @end deftypevr | ||
| 21665 | |||
| 21666 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer sound-power-save-on-ac | ||
| 21667 | Durée d'attente en secondes avant d'activer la gestion de l'énergie audio | ||
| 21668 | sur les périphériques Intel HDA et AC97. La valeur 0 désactive la gestion | ||
| 21669 | de l'énergie. | ||
| 21670 | |||
| 21671 | La valeur par défaut est @samp{0}. | ||
| 21672 | |||
| 21673 | @end deftypevr | ||
| 21674 | |||
| 21675 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer sound-power-save-on-bat | ||
| 21676 | Comme @code{sound-powersave-ac} mais en mode batterie. | ||
| 21677 | |||
| 21678 | La valeur par défaut est @samp{1}. | ||
| 21679 | |||
| 21680 | @end deftypevr | ||
| 21681 | |||
| 21682 | @deftypevr {paramètre de @code{tlp-configuration}} y-n-boolean sound-power-save-controller? | ||
| 21683 | Désactive le contrôleur en mode de gestion de l'énergie sur les | ||
| 21684 | périphériques Intel HDA. | ||
| 21685 | |||
| 21686 | La valeur par défaut est @samp{#t}. | ||
| 21687 | |||
| 21688 | @end deftypevr | ||
| 21689 | |||
| 21690 | @deftypevr {paramètre de @code{tlp-configuration}} boolean bay-poweroff-on-bat? | ||
| 21691 | Active le périphérique optique AltraBay/MediaBay en mode batterie. Le | ||
| 21692 | périphérique peut être de nouveau alimenté en lâchant (et en réinsérant) le | ||
| 21693 | levier d'éjection ou en appuyant sur le bouton d'éjection sur les modèles | ||
| 21694 | plus récents. | ||
| 21695 | |||
| 21696 | La valeur par défaut est @samp{#f}. | ||
| 21697 | |||
| 21698 | @end deftypevr | ||
| 21699 | |||
| 21700 | @deftypevr {paramètre de @code{tlp-configuration}} string bay-device | ||
| 21701 | Nom du périphérique optique à éteindre. | ||
| 21702 | |||
| 21703 | La valeur par défaut est @samp{"sr0"}. | ||
| 21704 | |||
| 21705 | @end deftypevr | ||
| 21706 | |||
| 21707 | @deftypevr {paramètre de @code{tlp-configuration}} string runtime-pm-on-ac | ||
| 21708 | Gestion de l'énergie à l'exécution sur les bus PCI(e). Les possibilités | ||
| 21709 | sont on et auto. | ||
| 21710 | |||
| 21711 | La valeur par défaut est @samp{"on"}. | ||
| 21712 | |||
| 21713 | @end deftypevr | ||
| 21714 | |||
| 21715 | @deftypevr {paramètre de @code{tlp-configuration}} string runtime-pm-on-bat | ||
| 21716 | Comme @code{runtime-pm-ac} mais en mode batterie. | ||
| 21717 | |||
| 21718 | La valeur par défaut est @samp{"auto"}. | ||
| 21719 | |||
| 21720 | @end deftypevr | ||
| 21721 | |||
| 21722 | @deftypevr {paramètre de @code{tlp-configuration}} boolean runtime-pm-all? | ||
| 21723 | Gestion de l'énergie à l'exécution pour tous les bus PCI(e), sauf ceux en | ||
| 21724 | liste noire. | ||
| 21725 | |||
| 21726 | La valeur par défaut est @samp{#t}. | ||
| 21727 | |||
| 21728 | @end deftypevr | ||
| 21729 | |||
| 21730 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list runtime-pm-blacklist | ||
| 21731 | Exclue les adresses des périphériques PCI(e) spécifiés de la gestion de | ||
| 21732 | l'énergie à l'exécution. | ||
| 21733 | |||
| 21734 | La valeur par défaut est @samp{disabled}. | ||
| 21735 | |||
| 21736 | @end deftypevr | ||
| 21737 | |||
| 21738 | @deftypevr {paramètre de @code{tlp-configuration}} space-separated-string-list runtime-pm-driver-blacklist | ||
| 21739 | Exclue les périphériques PCI(e) assignés aux pilotes spécifiés de la gestion | ||
| 21740 | de l'énergie à l'exécution. | ||
| 21741 | |||
| 21742 | @end deftypevr | ||
| 21743 | |||
| 21744 | @deftypevr {paramètre de @code{tlp-configuration}} boolean usb-autosuspend? | ||
| 21745 | Active la fonctionnalité de mise en veille automatique de l'USB. | ||
| 21746 | |||
| 21747 | La valeur par défaut est @samp{#t}. | ||
| 21748 | |||
| 21749 | @end deftypevr | ||
| 21750 | |||
| 21751 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-string usb-blacklist | ||
| 21752 | Exclue les périphériques spécifiés de la mise en veille automatique de | ||
| 21753 | l'USB. | ||
| 21754 | |||
| 21755 | La valeur par défaut est @samp{disabled}. | ||
| 21756 | |||
| 21757 | @end deftypevr | ||
| 21758 | |||
| 21759 | @deftypevr {paramètre de @code{tlp-configuration}} boolean usb-blacklist-wwan? | ||
| 21760 | Exclue les périphériques WWAN de la mise en veille automatique de l'USB. | ||
| 21761 | |||
| 21762 | La valeur par défaut est @samp{#t}. | ||
| 21763 | |||
| 21764 | @end deftypevr | ||
| 21765 | |||
| 21766 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-string usb-whitelist | ||
| 21767 | Inclue les périphériques spécifiés dans la mise en veille automatique de | ||
| 21768 | l'USB, même s'ils sont déjà exclus par le pilote ou via | ||
| 21769 | @code{usb-blacklist-wwan?}. | ||
| 21770 | |||
| 21771 | La valeur par défaut est @samp{disabled}. | ||
| 21772 | |||
| 21773 | @end deftypevr | ||
| 21774 | |||
| 21775 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-boolean usb-autosuspend-disable-on-shutdown? | ||
| 21776 | Active la mise en veille de l'USB avant l'arrêt. | ||
| 21777 | |||
| 21778 | La valeur par défaut est @samp{disabled}. | ||
| 21779 | |||
| 21780 | @end deftypevr | ||
| 21781 | |||
| 21782 | @deftypevr {paramètre de @code{tlp-configuration}} boolean restore-device-state-on-startup? | ||
| 21783 | Restaure l'état des périphériques radio (bluetooth, wifi, wwan) du dernier | ||
| 21784 | arrêt au démarrage du système. | ||
| 21785 | |||
| 21786 | La valeur par défaut est @samp{#f}. | ||
| 21787 | |||
| 21788 | @end deftypevr | ||
| 21789 | |||
| 21790 | @cindex thermald | ||
| 21791 | @cindex gestion de la fréquence du CPU avec thermald | ||
| 21792 | @subsubheading démon Thermald | ||
| 21793 | |||
| 21794 | Le module @code{(gnu services pm)} fournit une interface pour thermald, un | ||
| 21795 | service de gestion de l'horloge CPU qui aide à éviter la surchauffe. | ||
| 21796 | |||
| 21797 | @defvr {Variable Scheme} thermald-service-type | ||
| 21798 | C'est le type de service pour @uref{https://01.org/linux-thermal-daemon/, | ||
| 21799 | thermald}, le démon de température de Linux, responsable du contrôle de | ||
| 21800 | l'état thermique des processeurs et d'éviter la surchauffe. | ||
| 21801 | @end defvr | ||
| 21802 | |||
| 21803 | @deftp {Type de données} thermald-configuration | ||
| 21804 | Type de données représentant la configuration de | ||
| 21805 | @code{thermald-service-type}. | ||
| 21806 | |||
| 21807 | @table @asis | ||
| 21808 | @item @code{ignore-cpuid-check?} (par défaut : @code{#f}) | ||
| 21809 | Ignore la vérification des modèles CPU supportés avec cpuid. | ||
| 21810 | |||
| 21811 | @item @code{thermald} (par défaut : @var{thermald}) | ||
| 21812 | Objet du paquet de thermald. | ||
| 21813 | |||
| 21814 | @end table | ||
| 21815 | @end deftp | ||
| 21816 | |||
| 21817 | @node Services audio | ||
| 21818 | @subsection Services audio | ||
| 21819 | |||
| 21820 | Le module @code{(gnu services audio)} fournit un service qui lance MPD (le | ||
| 21821 | démon de lecture de musique). | ||
| 21822 | |||
| 21823 | @cindex mpd | ||
| 21824 | @subsubheading Music Player Daemon | ||
| 21825 | |||
| 21826 | Le démon de lecture de musique (MPD) est un service qui joue de la musique | ||
| 21827 | tout en étant contrôlé depuis la machine locale ou à travers le réseau par | ||
| 21828 | divers clients. | ||
| 21829 | |||
| 21830 | L'exemple suivant montre comment on peut lancer @code{mpd} en tant | ||
| 21831 | qu'utilisateur @code{"bob"} sur le port @code{6666}. Il utilise pulseaudio | ||
| 21832 | pour la sortie audio. | ||
| 21833 | |||
| 21834 | @example | ||
| 21835 | (service mpd-service-type | ||
| 21836 | (mpd-configuration | ||
| 21837 | (user "bob") | ||
| 21838 | (port "6666"))) | ||
| 21839 | @end example | ||
| 21840 | |||
| 21841 | @defvr {Variable Scheme} mpd-service-type | ||
| 21842 | Le type de service pour @command{mpd}. | ||
| 21843 | @end defvr | ||
| 21844 | |||
| 21845 | @deftp {Type de données} mpd-configuration | ||
| 21846 | Type de données représentant la configuration de @command{mpd}. | ||
| 21847 | |||
| 21848 | @table @asis | ||
| 21849 | @item @code{user} (par défaut : @code{"mpd"}) | ||
| 21850 | L'utilisateur qui lance mpd. | ||
| 21851 | |||
| 21852 | @item @code{music-dir} (par défaut : @code{"~/Music"}) | ||
| 21853 | Le répertoire à scanner pour trouver les fichiers de musique. | ||
| 21854 | |||
| 21855 | @item @code{playlist-dir} (par défaut : @code{"~/.mpd/playlists"}) | ||
| 21856 | Le répertoire où stocker les playlists. | ||
| 21857 | |||
| 21858 | @item @code{db-file} (par défaut : @code{"~/.mpd/tag_cache"}) | ||
| 21859 | Emplacement de la base de données de musiques. | ||
| 21860 | |||
| 21861 | @item @code{state-file} (par défaut : @code{"~/.mpd/state"}) | ||
| 21862 | Emplacement du fichier qui stocke l'état actuel de MPD. | ||
| 21863 | |||
| 21864 | @item @code{sticker-file} (par défaut : @code{"~/.mpd/sticker.sql"}) | ||
| 21865 | Emplacement de la base de données de stickers. | ||
| 21866 | |||
| 21867 | @item @code{port} (par défaut : @code{"6600"}) | ||
| 21868 | Le port sur lequel lancer mpd. | ||
| 21869 | |||
| 21870 | @item @code{address} (par défaut : @code{"any"}) | ||
| 21871 | L'adresse sur laquelle se lie mpd. Pour utiliser un socket Unix domain, un | ||
| 21872 | chemin absolu peut être spécifié ici. | ||
| 21873 | |||
| 21874 | @end table | ||
| 21875 | @end deftp | ||
| 21876 | |||
| 21877 | @node Services de virtualisation | ||
| 21878 | @subsection services de virtualisation | ||
| 21879 | |||
| 21880 | Le module @code{(gnu services virtualization)} fournit des services pour les | ||
| 21881 | démons libvirt et virtlog, ainsi que d'autres services liés à la | ||
| 21882 | virtualisation. | ||
| 21883 | |||
| 21884 | @subsubheading démon libvirt | ||
| 21885 | @code{libvirtd} est le démon côté serveur du système de gestion de | ||
| 21886 | virtualisation libvirt. Ce démon tourne sur des serveurs hôtes et effectue | ||
| 21887 | les taches de gestion requises pour les clients virtualisés. | ||
| 21888 | |||
| 21889 | @deffn {Variable Scheme} libvirt-service-type | ||
| 21890 | C'est le type du @uref{https://libvirt.org, démon libvirt}. Sa valeur doit | ||
| 21891 | être un @code{libvirt-configuration}. | ||
| 21892 | |||
| 21893 | @example | ||
| 21894 | (service libvirt-service-type | ||
| 21895 | (libvirt-configuration | ||
| 21896 | (unix-sock-group "libvirt") | ||
| 21897 | (tls-port "16555"))) | ||
| 21898 | @end example | ||
| 21899 | @end deffn | ||
| 21900 | |||
| 21901 | @c Auto-generated with (generate-libvirt-documentation) | ||
| 21902 | Les champs de @code{libvirt-configuration} disponibles sont : | ||
| 21903 | |||
| 21904 | @deftypevr {paramètre de @code{libvirt-configuration}} package libvirt | ||
| 21905 | Paquet libvirt. | ||
| 21906 | |||
| 21907 | @end deftypevr | ||
| 21908 | |||
| 21909 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean listen-tls? | ||
| 21910 | Indique s'il faut écouter des connexions TLS sécurisées sur le port TCP/IP | ||
| 21911 | public. Vous devez remplir le champ @code{listen} pour que cela ait un | ||
| 21912 | effet. | ||
| 21913 | |||
| 21914 | Il est nécessaire de mettre en place une CA et de créer un certificat | ||
| 21915 | serveur avant d'utiliser cette fonctionnalité. | ||
| 21916 | |||
| 21917 | La valeur par défaut est @samp{#t}. | ||
| 21918 | |||
| 21919 | @end deftypevr | ||
| 21920 | |||
| 21921 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean listen-tcp? | ||
| 21922 | Écoute des connexions non-chiffrées sur le port TCP/IP public. Vous devez | ||
| 21923 | remplir le champ @code{listen} pour que cela ait un effet. | ||
| 21924 | |||
| 21925 | L'utilisation des sockets TCP requiert une authentification SASL par | ||
| 21926 | défaut. Seuls les mécanismes SASL qui supportent le chiffrement des données | ||
| 21927 | sont permis. Il s'agit de DIGEST_MD5 et GSSAPI (Kerberos5). | ||
| 21928 | |||
| 21929 | La valeur par défaut est @samp{#f}. | ||
| 21930 | |||
| 21931 | @end deftypevr | ||
| 21932 | |||
| 21933 | @deftypevr {paramètre de @code{libvirt-configuration}} string tls-port | ||
| 21934 | Port pour accepter les connexions TLS sécurisées. Il peut s'agir d'un | ||
| 21935 | numéro de port ou d'un nom de service | ||
| 21936 | |||
| 21937 | La valeur par défaut est @samp{"16514"}. | ||
| 21938 | |||
| 21939 | @end deftypevr | ||
| 21940 | |||
| 21941 | @deftypevr {paramètre de @code{libvirt-configuration}} string tcp-port | ||
| 21942 | Port sur lequel accepter les connexions TCP non sécurisées. Cela peut être | ||
| 21943 | un numéro de port ou un nom de service | ||
| 21944 | |||
| 21945 | La valeur par défaut est @samp{"16509"}. | ||
| 21946 | |||
| 21947 | @end deftypevr | ||
| 21948 | |||
| 21949 | @deftypevr {paramètre de @code{libvirt-configuration}} string listen-addr | ||
| 21950 | Adresse IP ou nom d'hôte utilisé pour les connexions des clients. | ||
| 21951 | |||
| 21952 | La valeur par défaut est @samp{"0.0.0.0"}. | ||
| 21953 | |||
| 21954 | @end deftypevr | ||
| 21955 | |||
| 21956 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean mdns-adv? | ||
| 21957 | Indique s'il faut publier le service libvirt en mDNS. | ||
| 21958 | |||
| 21959 | Autrement, vous pouvez désactiver cela pour tous les services en stoppant le | ||
| 21960 | démon Avahi. | ||
| 21961 | |||
| 21962 | La valeur par défaut est @samp{#f}. | ||
| 21963 | |||
| 21964 | @end deftypevr | ||
| 21965 | |||
| 21966 | @deftypevr {paramètre de @code{libvirt-configuration}} string mdns-name | ||
| 21967 | Nom publié par défaut sur mDNS. Cela doit être unique sur le réseau local. | ||
| 21968 | |||
| 21969 | La valeur par défaut est @samp{"Virtualization Host <hostname>"}. | ||
| 21970 | |||
| 21971 | @end deftypevr | ||
| 21972 | |||
| 21973 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-group | ||
| 21974 | Groupe propriétaire du socket Unix domain. Cela peut être utilisé pour | ||
| 21975 | permettre à un ensemble d'utilisateurs « de confiance » de gérer les | ||
| 21976 | fonctionnalités sans devenir root. | ||
| 21977 | |||
| 21978 | La valeur par défaut est @samp{"root"}. | ||
| 21979 | |||
| 21980 | @end deftypevr | ||
| 21981 | |||
| 21982 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-ro-perms | ||
| 21983 | Permission Unix pour le socket en lecture seule. Il est utilisé pour | ||
| 21984 | surveiller le statut des VM uniquement. | ||
| 21985 | |||
| 21986 | La valeur par défaut est @samp{"0777"}. | ||
| 21987 | |||
| 21988 | @end deftypevr | ||
| 21989 | |||
| 21990 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-rw-perms | ||
| 21991 | Permission Unix pour le socket en lecture-écriture. La valeur par défaut | ||
| 21992 | n'autorise que root. Si PolicyKit est activé sur le socket, la valeur par | ||
| 21993 | défaut change et permet tout le monde (c.-à-d.@: 0777). | ||
| 21994 | |||
| 21995 | La valeur par défaut est @samp{"0770"}. | ||
| 21996 | |||
| 21997 | @end deftypevr | ||
| 21998 | |||
| 21999 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-admin-perms | ||
| 22000 | Permissions Unix pour le socket d'administration. La valeur par défaut ne | ||
| 22001 | permet que le propriétaire (root), ne la changez pas à moins que vous ne | ||
| 22002 | soyez sûr de savoir à qui vous exposez cet accès. | ||
| 22003 | |||
| 22004 | La valeur par défaut est @samp{"0777"}. | ||
| 22005 | |||
| 22006 | @end deftypevr | ||
| 22007 | |||
| 22008 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-dir | ||
| 22009 | Le répertoire dans lequel les sockets sont créés. | ||
| 22010 | |||
| 22011 | La valeur par défaut est @samp{"/var/run/libvirt"}. | ||
| 22012 | |||
| 22013 | @end deftypevr | ||
| 22014 | |||
| 22015 | @deftypevr {paramètre de @code{libvirt-configuration}} string auth-unix-ro | ||
| 22016 | Schéma d'authentification pour les socket Unix en lecture-seule. Par défaut | ||
| 22017 | les permissions des socket permettent à n'importe qui de se connecter | ||
| 22018 | |||
| 22019 | La valeur par défaut est @samp{"polkit"}. | ||
| 22020 | |||
| 22021 | @end deftypevr | ||
| 22022 | |||
| 22023 | @deftypevr {paramètre de @code{libvirt-configuration}} string auth-unix-rw | ||
| 22024 | Schéma d'authentification pour les socket UNIX en lecture-écriture. Par | ||
| 22025 | défaut les permissions du socket ne permettent que root. Si le support de | ||
| 22026 | PolicyKit a été compilé dans libvirt, la valeur par défaut utilise | ||
| 22027 | l'authentification « polkit ». | ||
| 22028 | |||
| 22029 | La valeur par défaut est @samp{"polkit"}. | ||
| 22030 | |||
| 22031 | @end deftypevr | ||
| 22032 | |||
| 22033 | @deftypevr {paramètre de @code{libvirt-configuration}} string auth-tcp | ||
| 22034 | Schéma d'authentification pour les sockets TCP. Si vous n'avez pas activé | ||
| 22035 | SASL, alors tout le trafic TCP est en clair. Ne le faites pas en dehors de | ||
| 22036 | scénario de développement ou de test. | ||
| 22037 | |||
| 22038 | La valeur par défaut est @samp{"sasl"}. | ||
| 22039 | |||
| 22040 | @end deftypevr | ||
| 22041 | |||
| 22042 | @deftypevr {paramètre de @code{libvirt-configuration}} string auth-tls | ||
| 22043 | Schéma d'authentification pour les sockets TLS. Les sockets TLS sont déjà | ||
| 22044 | chiffrés par la couche TLS, et une authentification limitée est effectuée | ||
| 22045 | avec les certificats. | ||
| 22046 | |||
| 22047 | Il est possible d'utiliser de n'importe quel mécanisme d'authentification | ||
| 22048 | SASL en utilisant « sasl » pour cette option | ||
| 22049 | |||
| 22050 | La valeur par défaut est @samp{"none"}. | ||
| 22051 | |||
| 22052 | @end deftypevr | ||
| 22053 | |||
| 22054 | @deftypevr {paramètre de @code{libvirt-configuration}} optional-list access-drivers | ||
| 22055 | Schéma de contrôle d'accès à l'API. | ||
| 22056 | |||
| 22057 | Par défaut un utilisateur authentifié peut accéder à toutes les API. Les | ||
| 22058 | pilotes d'accès peuvent placer des restrictions là-dessus. | ||
| 22059 | |||
| 22060 | La valeur par défaut est @samp{()}. | ||
| 22061 | |||
| 22062 | @end deftypevr | ||
| 22063 | |||
| 22064 | @deftypevr {paramètre de @code{libvirt-configuration}} string key-file | ||
| 22065 | Chemin de fichier de la clef du serveur. Si la valeur est une chaîne vide, | ||
| 22066 | aucune clef privée n'est chargée. | ||
| 22067 | |||
| 22068 | La valeur par défaut est @samp{""}. | ||
| 22069 | |||
| 22070 | @end deftypevr | ||
| 22071 | |||
| 22072 | @deftypevr {paramètre de @code{libvirt-configuration}} string cert-file | ||
| 22073 | Chemin de fichier de la clef du serveur. Si la chaîne est vide, aucun | ||
| 22074 | certificat n'est chargé. | ||
| 22075 | |||
| 22076 | La valeur par défaut est @samp{""}. | ||
| 22077 | |||
| 22078 | @end deftypevr | ||
| 22079 | |||
| 22080 | @deftypevr {paramètre de @code{libvirt-configuration}} string ca-file | ||
| 22081 | Chemin de fichier de la clef du serveur. Si la chaîne est vide, aucun | ||
| 22082 | certificat de CA n'est chargé. | ||
| 22083 | |||
| 22084 | La valeur par défaut est @samp{""}. | ||
| 22085 | |||
| 22086 | @end deftypevr | ||
| 22087 | |||
| 22088 | @deftypevr {paramètre de @code{libvirt-configuration}} string crl-file | ||
| 22089 | Chemin de la liste de révocation des certificats. Si la chaîne est vide, | ||
| 22090 | aucun CRL n'est chargé. | ||
| 22091 | |||
| 22092 | La valeur par défaut est @samp{""}. | ||
| 22093 | |||
| 22094 | @end deftypevr | ||
| 22095 | |||
| 22096 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean tls-no-sanity-cert | ||
| 22097 | Désactive la vérification de nos propres certificats serveurs. | ||
| 22098 | |||
| 22099 | Lorsque libvirtd démarre il effectue des vérifications de routine sur ses | ||
| 22100 | propres certificats. | ||
| 22101 | |||
| 22102 | La valeur par défaut est @samp{#f}. | ||
| 22103 | |||
| 22104 | @end deftypevr | ||
| 22105 | |||
| 22106 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean tls-no-verify-cert | ||
| 22107 | Désactive la vérification des certificats clients. | ||
| 22108 | |||
| 22109 | La vérification des certificats clients est le mécanisme d'authentification | ||
| 22110 | principal. Tout client qui ne présent pas de certificat signé par la CA | ||
| 22111 | sera rejeté. | ||
| 22112 | |||
| 22113 | La valeur par défaut est @samp{#f}. | ||
| 22114 | |||
| 22115 | @end deftypevr | ||
| 22116 | |||
| 22117 | @deftypevr {paramètre de @code{libvirt-configuration}} optional-list tls-allowed-dn-list | ||
| 22118 | Liste blanche des Distinguished Name x509 autorisés. | ||
| 22119 | |||
| 22120 | La valeur par défaut est @samp{()}. | ||
| 22121 | |||
| 22122 | @end deftypevr | ||
| 22123 | |||
| 22124 | @deftypevr {paramètre de @code{libvirt-configuration}} optional-list sasl-allowed-usernames | ||
| 22125 | Liste blanche des noms d'utilisateur SASL permis. Le format des noms | ||
| 22126 | d'utilisateurs dépend du mécanisme d'authentification SASL. | ||
| 22127 | |||
| 22128 | La valeur par défaut est @samp{()}. | ||
| 22129 | |||
| 22130 | @end deftypevr | ||
| 22131 | |||
| 22132 | @deftypevr {paramètre de @code{libvirt-configuration}} string tls-priority | ||
| 22133 | Modifie la chaîne de priorité TLS par défaut fixée à la compilation. La | ||
| 22134 | valeur par défaut est typiquement « NORMAL » à moins qu'elle n'ait été | ||
| 22135 | modifiée à la compilation. Ne l'indiquez que si vous voulez que libvirt | ||
| 22136 | agisse différemment des paramètres par défaut globaux. | ||
| 22137 | |||
| 22138 | La valeur par défaut est @samp{"NORMAL"}. | ||
| 22139 | |||
| 22140 | @end deftypevr | ||
| 22141 | |||
| 22142 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-clients | ||
| 22143 | Nombre maximum de connexions clientes en même temps sur tous les sockets. | ||
| 22144 | |||
| 22145 | La valeur par défaut est @samp{5000}. | ||
| 22146 | |||
| 22147 | @end deftypevr | ||
| 22148 | |||
| 22149 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-queued-clients | ||
| 22150 | Longueur maximum de la queue de connexions en attente d'acceptation du | ||
| 22151 | démon. Remarquez que certains protocoles supportant la retransmission | ||
| 22152 | peuvent obéir à ce paramètre pour qu'une connexion ultérieure réussisse. | ||
| 22153 | |||
| 22154 | La valeur par défaut est @samp{1000}. | ||
| 22155 | |||
| 22156 | @end deftypevr | ||
| 22157 | |||
| 22158 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-anonymous-clients | ||
| 22159 | Longueur maximum de la queue des clients acceptés mais pas authentifiés. | ||
| 22160 | Indiquez zéro pour désactiver ce paramètre | ||
| 22161 | |||
| 22162 | La valeur par défaut est @samp{20}. | ||
| 22163 | |||
| 22164 | @end deftypevr | ||
| 22165 | |||
| 22166 | @deftypevr {paramètre de @code{libvirt-configuration}} integer min-workers | ||
| 22167 | Nombre de processus de travail démarrés initialement. | ||
| 22168 | |||
| 22169 | La valeur par défaut est @samp{5}. | ||
| 22170 | |||
| 22171 | @end deftypevr | ||
| 22172 | |||
| 22173 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-workers | ||
| 22174 | Nombre maximum de threads de travail. | ||
| 22175 | |||
| 22176 | Si le nombre de clients actifs dépasse @code{min-workers}, plus de threads | ||
| 22177 | seront démarrés, jusqu'à la limite de max_workers. Typiquement vous voulez | ||
| 22178 | que max_workers soit égal au nombre maximum de clients permis. | ||
| 22179 | |||
| 22180 | La valeur par défaut est @samp{20}. | ||
| 22181 | |||
| 22182 | @end deftypevr | ||
| 22183 | |||
| 22184 | @deftypevr {paramètre de @code{libvirt-configuration}} integer prio-workers | ||
| 22185 | Nombre de travailleurs prioritaires. Si tous les threads de travail du | ||
| 22186 | groupe ci-dessus sont bloqués, certains appels marqués comme prioritaires | ||
| 22187 | (notamment domainDestroy) peuvent être exécutés par ce groupe. | ||
| 22188 | |||
| 22189 | La valeur par défaut est @samp{5}. | ||
| 22190 | |||
| 22191 | @end deftypevr | ||
| 22192 | |||
| 22193 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-requests | ||
| 22194 | Limite globale totale sur les appels RPC concurrents. | ||
| 22195 | |||
| 22196 | La valeur par défaut est @samp{20}. | ||
| 22197 | |||
| 22198 | @end deftypevr | ||
| 22199 | |||
| 22200 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-client-requests | ||
| 22201 | Limite de requêtes concurrentes depuis une connexion cliente unique. Pour | ||
| 22202 | éviter qu'un client ne monopolise le serveur, vous devriez indiquer une | ||
| 22203 | petite partie des paramètres global max_requests et max_workers. | ||
| 22204 | |||
| 22205 | La valeur par défaut est @samp{5}. | ||
| 22206 | |||
| 22207 | @end deftypevr | ||
| 22208 | |||
| 22209 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-min-workers | ||
| 22210 | Comme @code{min-workers} mais pour l'interface d'administration. | ||
| 22211 | |||
| 22212 | La valeur par défaut est @samp{1}. | ||
| 22213 | |||
| 22214 | @end deftypevr | ||
| 22215 | |||
| 22216 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-max-workers | ||
| 22217 | Comme @code{max-workers} mais pour l'interface d'administration. | ||
| 22218 | |||
| 22219 | La valeur par défaut est @samp{5}. | ||
| 22220 | |||
| 22221 | @end deftypevr | ||
| 22222 | |||
| 22223 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-max-clients | ||
| 22224 | Comme @code{max-clients} mais pour l'interface d'administration. | ||
| 22225 | |||
| 22226 | La valeur par défaut est @samp{5}. | ||
| 22227 | |||
| 22228 | @end deftypevr | ||
| 22229 | |||
| 22230 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-max-queued-clients | ||
| 22231 | Comme @code{max-queued-clients} mais pour l'interface d'administration. | ||
| 22232 | |||
| 22233 | La valeur par défaut est @samp{5}. | ||
| 22234 | |||
| 22235 | @end deftypevr | ||
| 22236 | |||
| 22237 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-max-client-requests | ||
| 22238 | Comme @code{max-client-requests} mais pour l'interface d'administration. | ||
| 22239 | |||
| 22240 | La valeur par défaut est @samp{5}. | ||
| 22241 | |||
| 22242 | @end deftypevr | ||
| 22243 | |||
| 22244 | @deftypevr {paramètre de @code{libvirt-configuration}} integer log-level | ||
| 22245 | Niveau de journalisation. 4 : erreurs, 3 : avertissements, 2 : information, | ||
| 22246 | 1 : débogage. | ||
| 22247 | |||
| 22248 | La valeur par défaut est @samp{3}. | ||
| 22249 | |||
| 22250 | @end deftypevr | ||
| 22251 | |||
| 22252 | @deftypevr {paramètre de @code{libvirt-configuration}} string log-filters | ||
| 22253 | Filtres de journalisation. | ||
| 22254 | |||
| 22255 | Un filtre qui permet de sélectionner plusieurs niveaux de journalisation | ||
| 22256 | pour une catégorie donnée. Le format d'un filtre est : | ||
| 22257 | |||
| 22258 | @itemize @bullet | ||
| 22259 | @item | ||
| 22260 | x:nom | ||
| 22261 | |||
| 22262 | @item | ||
| 22263 | x:+nom | ||
| 22264 | |||
| 22265 | @end itemize | ||
| 22266 | |||
| 22267 | où @code{nom} est une chaîne de caractères qui correspond à la catégorie | ||
| 22268 | donnée dans @code{VIR_LOG_INIT()} au début de chaque fichier source de | ||
| 22269 | libvirt, p.@: ex.@: « remote », « qemu » ou « util.json » (le nom dans le | ||
| 22270 | filtre peut être une sous-chaîne du nom complet de la catégorie, pour | ||
| 22271 | pouvoir correspondre à plusieurs catégories similaires), le préfixe | ||
| 22272 | facultatif « + » dit à libvirt d'enregistrer les traces de piles pour chaque | ||
| 22273 | message qui correspond au nom, et @code{x} est le niveau minimal des | ||
| 22274 | messages qui devraient être enregistrés : | ||
| 22275 | |||
| 22276 | @itemize @bullet | ||
| 22277 | @item | ||
| 22278 | 1 : DEBUG | ||
| 22279 | |||
| 22280 | @item | ||
| 22281 | 2 : INFO | ||
| 22282 | |||
| 22283 | @item | ||
| 22284 | 3 : WARNING | ||
| 22285 | |||
| 22286 | @item | ||
| 22287 | 4 : ERROR | ||
| 22288 | |||
| 22289 | @end itemize | ||
| 22290 | |||
| 22291 | On peut définir plusieurs filtres dans une seule déclaration de filtres, ils | ||
| 22292 | doivent juste être séparés par des espaces. | ||
| 22293 | |||
| 22294 | La valeur par défaut est @samp{"3:remote 4:event"}. | ||
| 22295 | |||
| 22296 | @end deftypevr | ||
| 22297 | |||
| 22298 | @deftypevr {paramètre de @code{libvirt-configuration}} string log-outputs | ||
| 22299 | Sorties de débogage. | ||
| 22300 | |||
| 22301 | Une sortie est l'un des endroits où les journaux sont enregistrés. Le | ||
| 22302 | format d'une sortie peut être : | ||
| 22303 | |||
| 22304 | @table @code | ||
| 22305 | @item x:stderr | ||
| 22306 | la sortie va vers stderr | ||
| 22307 | |||
| 22308 | @item x:syslog:nom | ||
| 22309 | utilise syslog comme sortie et utilise le nom donné comme identifiant | ||
| 22310 | |||
| 22311 | @item x:file:chemin_fichier | ||
| 22312 | la sortie va vers un fichier, avec le chemin donné | ||
| 22313 | |||
| 22314 | @item x:journald | ||
| 22315 | la sortie va vers le système de journalisation journald | ||
| 22316 | |||
| 22317 | @end table | ||
| 22318 | |||
| 22319 | Dans tous les cas, le préfixe x est le niveau minimal, qui agit comme un | ||
| 22320 | filtre | ||
| 22321 | |||
| 22322 | @itemize @bullet | ||
| 22323 | @item | ||
| 22324 | 1 : DEBUG | ||
| 22325 | |||
| 22326 | @item | ||
| 22327 | 2 : INFO | ||
| 22328 | |||
| 22329 | @item | ||
| 22330 | 3 : WARNING | ||
| 22331 | |||
| 22332 | @item | ||
| 22333 | 4 : ERROR | ||
| 22334 | |||
| 22335 | @end itemize | ||
| 22336 | |||
| 22337 | Plusieurs sorties peuvent être définies, elles doivent juste être séparées | ||
| 22338 | par des espaces. | ||
| 22339 | |||
| 22340 | La valeur par défaut est @samp{"3:stderr"}. | ||
| 22341 | |||
| 22342 | @end deftypevr | ||
| 22343 | |||
| 22344 | @deftypevr {paramètre de @code{libvirt-configuration}} integer audit-level | ||
| 22345 | Permet de modifier l'utilisation du sous-système d'audit | ||
| 22346 | |||
| 22347 | @itemize @bullet | ||
| 22348 | @item | ||
| 22349 | 0 : désactive tout audit | ||
| 22350 | |||
| 22351 | @item | ||
| 22352 | 1 : active l'audit, seulement s'il est activé sur l'hôte | ||
| 22353 | |||
| 22354 | @item | ||
| 22355 | 2 : active l'audit, et quitte s'il est désactivé sur l'hôte. | ||
| 22356 | |||
| 22357 | @end itemize | ||
| 22358 | |||
| 22359 | La valeur par défaut est @samp{1}. | ||
| 22360 | |||
| 22361 | @end deftypevr | ||
| 22362 | |||
| 22363 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean audit-logging | ||
| 22364 | Envoie les messages d'audit via l'infrastructure de journalisation de | ||
| 22365 | libvirt. | ||
| 22366 | |||
| 22367 | La valeur par défaut est @samp{#f}. | ||
| 22368 | |||
| 22369 | @end deftypevr | ||
| 22370 | |||
| 22371 | @deftypevr {paramètre de @code{libvirt-configuration}} optional-string host-uuid | ||
| 22372 | UUID de l'hôte. L'UUID ne doit pas avoir tous ses nombres identiques. | ||
| 22373 | |||
| 22374 | La valeur par défaut est @samp{""}. | ||
| 22375 | |||
| 22376 | @end deftypevr | ||
| 22377 | |||
| 22378 | @deftypevr {paramètre de @code{libvirt-configuration}} string host-uuid-source | ||
| 22379 | Source où lire l'UUID de l'hôte. | ||
| 22380 | |||
| 22381 | @itemize @bullet | ||
| 22382 | @item | ||
| 22383 | @code{smbios} : récupère l'UUID à partir de @code{dmidecode -s system-uuid} | ||
| 22384 | |||
| 22385 | @item | ||
| 22386 | @code{machine-id} : récupère l'UUID à partir de @code{/etc/machine-id} | ||
| 22387 | |||
| 22388 | @end itemize | ||
| 22389 | |||
| 22390 | Si @code{dmidecode} ne fournit pas un UUID valide, un UUID temporaire sera | ||
| 22391 | généré. | ||
| 22392 | |||
| 22393 | La valeur par défaut est @samp{"smbios"}. | ||
| 22394 | |||
| 22395 | @end deftypevr | ||
| 22396 | |||
| 22397 | @deftypevr {paramètre de @code{libvirt-configuration}} integer keepalive-interval | ||
| 22398 | Un message keepalive est envoyé au client après @code{keepalive_interval} | ||
| 22399 | secondes d'inactivité pour vérifier si le client répond toujours. Si la | ||
| 22400 | valeur est -1, libvirtd n'enverra jamais de requête keepalive ; cependant | ||
| 22401 | les clients peuvent toujours en envoyer et le démon y répondra. | ||
| 22402 | |||
| 22403 | La valeur par défaut est @samp{5}. | ||
| 22404 | |||
| 22405 | @end deftypevr | ||
| 22406 | |||
| 22407 | @deftypevr {paramètre de @code{libvirt-configuration}} integer keepalive-count | ||
| 22408 | Nombre maximum de messages keepalive qui peuvent être envoyés au client sans | ||
| 22409 | réponse avant que la connexion ne soit considérée comme cassée. | ||
| 22410 | |||
| 22411 | En d'autres termes, la connexion est approximativement fermée après | ||
| 22412 | @code{keepalive_interval * (keepalive_count + 1)} secondes après le dernier | ||
| 22413 | message reçu de la part du client. Lorsque @code{keepalive-count} est à 0, | ||
| 22414 | les connexions seront automatiquement fermées après | ||
| 22415 | @code{keepalive-interval} secondes d'inactivité sans envoyer le moindre | ||
| 22416 | message keepalive. | ||
| 22417 | |||
| 22418 | La valeur par défaut est @samp{5}. | ||
| 22419 | |||
| 22420 | @end deftypevr | ||
| 22421 | |||
| 22422 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-keepalive-interval | ||
| 22423 | Comme précédemment, mais pour l'interface d'administration. | ||
| 22424 | |||
| 22425 | La valeur par défaut est @samp{5}. | ||
| 22426 | |||
| 22427 | @end deftypevr | ||
| 22428 | |||
| 22429 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-keepalive-count | ||
| 22430 | Comme précédemment, mais pour l'interface d'administration. | ||
| 22431 | |||
| 22432 | La valeur par défaut est @samp{5}. | ||
| 22433 | |||
| 22434 | @end deftypevr | ||
| 22435 | |||
| 22436 | @deftypevr {paramètre de @code{libvirt-configuration}} integer ovs-timeout | ||
| 22437 | Délai d'attente pour les appels Open vSwitch. | ||
| 22438 | |||
| 22439 | L'utilitaire @code{ovs-vsctl} est utilisé pour la configuration et son | ||
| 22440 | option de délai d'attente est à 5 secondes pour éviter qu'une attente | ||
| 22441 | infinie ne bloque libvirt. | ||
| 22442 | |||
| 22443 | La valeur par défaut est @samp{5}. | ||
| 22444 | |||
| 22445 | @end deftypevr | ||
| 22446 | |||
| 22447 | @c %end of autogenerated docs | ||
| 22448 | |||
| 22449 | @subsubheading démon Virrlog | ||
| 22450 | Le service virtlogd est un démon côté serveur qui fait partie de libvirt, | ||
| 22451 | utilisé pour gérer les journaux des consoles des machines virtuelles. | ||
| 22452 | |||
| 22453 | Ce démon n'est pas utilisé directement par les clients libvirt, mais il est | ||
| 22454 | appelé pour eux par @code{libvirtd}. En maintenant les journaux dans un | ||
| 22455 | démon séparé, le démon @code{libvirtd} principal peut être redémarré sans | ||
| 22456 | risque de perte de journaux. Le démon @code{virtlogd} a la possibilité de | ||
| 22457 | ré-exécuter exec() sur lui-même quand il reçoit @code{SIGUSR1}, pour | ||
| 22458 | permettre des mises à jour à chaux sans temps mort. | ||
| 22459 | |||
| 22460 | @deffn {Variable Scheme} virtlog-service-type | ||
| 22461 | Le type de service pour le démon virtlogd. Sa valeur doit être un | ||
| 22462 | @code{virtlog-configuration}. | ||
| 22463 | |||
| 22464 | @example | ||
| 22465 | (service virtlog-service-type | ||
| 22466 | (virtlog-configuration | ||
| 22467 | (max-clients 1000))) | ||
| 22468 | @end example | ||
| 22469 | @end deffn | ||
| 22470 | |||
| 22471 | @deftypevr {paramètre de @code{virtlog-configuration}} integer log-level | ||
| 22472 | Niveau de journalisation. 4 : erreurs, 3 : avertissements, 2 : information, | ||
| 22473 | 1 : débogage. | ||
| 22474 | |||
| 22475 | La valeur par défaut est @samp{3}. | ||
| 22476 | |||
| 22477 | @end deftypevr | ||
| 22478 | |||
| 22479 | @deftypevr {paramètre de @code{virtlog-configuration}} string log-filters | ||
| 22480 | Filtres de journalisation. | ||
| 22481 | |||
| 22482 | Un filtre qui permet de sélectionner plusieurs niveaux de journalisation | ||
| 22483 | pour une catégorie donnée. Le format d'un filtre est : | ||
| 22484 | |||
| 22485 | @itemize @bullet | ||
| 22486 | @item | ||
| 22487 | x:nom | ||
| 22488 | |||
| 22489 | @item | ||
| 22490 | x:+nom | ||
| 22491 | |||
| 22492 | @end itemize | ||
| 22493 | |||
| 22494 | où @code{nom} est une chaîne de caractères qui correspond à la catégorie | ||
| 22495 | donnée dans @code{VIR_LOG_INIT()} au début de chaque fichier source de | ||
| 22496 | libvirt, p.@: ex.@: « remote », « qemu » ou « util.json » (le nom dans le | ||
| 22497 | filtre peut être une sous-chaîne du nom complet de la catégorie, pour | ||
| 22498 | pouvoir correspondre à plusieurs catégories similaires), le préfixe | ||
| 22499 | facultatif « + » dit à libvirt d'enregistrer les traces de piles pour chaque | ||
| 22500 | message qui correspond au nom, et @code{x} est le niveau minimal des | ||
| 22501 | messages qui devraient être enregistrés : | ||
| 22502 | |||
| 22503 | @itemize @bullet | ||
| 22504 | @item | ||
| 22505 | 1 : DEBUG | ||
| 22506 | |||
| 22507 | @item | ||
| 22508 | 2 : INFO | ||
| 22509 | |||
| 22510 | @item | ||
| 22511 | 3 : WARNING | ||
| 22512 | |||
| 22513 | @item | ||
| 22514 | 4 : ERROR | ||
| 22515 | |||
| 22516 | @end itemize | ||
| 22517 | |||
| 22518 | On peut définir plusieurs filtres dans une seule déclaration de filtres, ils | ||
| 22519 | doivent juste être séparés par des espaces. | ||
| 22520 | |||
| 22521 | La valeur par défaut est @samp{"3:remote 4:event"}. | ||
| 22522 | |||
| 22523 | @end deftypevr | ||
| 22524 | |||
| 22525 | @deftypevr {paramètre de @code{virtlog-configuration}} string log-outputs | ||
| 22526 | Sorties de débogage. | ||
| 22527 | |||
| 22528 | Une sortie est l'un des endroits où les journaux sont enregistrés. Le | ||
| 22529 | format d'une sortie peut être : | ||
| 22530 | |||
| 22531 | @table @code | ||
| 22532 | @item x:stderr | ||
| 22533 | la sortie va vers stderr | ||
| 22534 | |||
| 22535 | @item x:syslog:nom | ||
| 22536 | utilise syslog comme sortie et utilise le nom donné comme identifiant | ||
| 22537 | |||
| 22538 | @item x:file:chemin_fichier | ||
| 22539 | la sortie va vers un fichier, avec le chemin donné | ||
| 22540 | |||
| 22541 | @item x:journald | ||
| 22542 | la sortie va vers le système de journalisation journald | ||
| 22543 | |||
| 22544 | @end table | ||
| 22545 | |||
| 22546 | Dans tous les cas, le préfixe x est le niveau minimal, qui agit comme un | ||
| 22547 | filtre | ||
| 22548 | |||
| 22549 | @itemize @bullet | ||
| 22550 | @item | ||
| 22551 | 1 : DEBUG | ||
| 22552 | |||
| 22553 | @item | ||
| 22554 | 2 : INFO | ||
| 22555 | |||
| 22556 | @item | ||
| 22557 | 3 : WARNING | ||
| 22558 | |||
| 22559 | @item | ||
| 22560 | 4 : ERROR | ||
| 22561 | |||
| 22562 | @end itemize | ||
| 22563 | |||
| 22564 | Plusieurs sorties peuvent être définies, elles doivent juste être séparées | ||
| 22565 | par des espaces. | ||
| 22566 | |||
| 22567 | La valeur par défaut est @samp{"3:stderr"}. | ||
| 22568 | |||
| 22569 | @end deftypevr | ||
| 22570 | |||
| 22571 | @deftypevr {paramètre de @code{virtlog-configuration}} integer max-clients | ||
| 22572 | Nombre maximum de connexions clientes en même temps sur tous les sockets. | ||
| 22573 | |||
| 22574 | La valeur par défaut est @samp{1024}. | ||
| 22575 | |||
| 22576 | @end deftypevr | ||
| 22577 | |||
| 22578 | @deftypevr {paramètre de @code{virtlog-configuration}} integer max-size | ||
| 22579 | Taille de fichier maximale avant roulement. | ||
| 22580 | |||
| 22581 | La valeur par défaut est @samp{2MB}. | ||
| 22582 | |||
| 22583 | @end deftypevr | ||
| 22584 | |||
| 22585 | @deftypevr {paramètre de @code{virtlog-configuration}} integer max-backups | ||
| 22586 | Nombre maximal de fichiers de sauvegardes à garder. | ||
| 22587 | |||
| 22588 | La valeur par défaut est @samp{3}. | ||
| 22589 | |||
| 22590 | @end deftypevr | ||
| 22591 | |||
| 22592 | @subsubheading Émulation transparente avec QEMU | ||
| 22593 | |||
| 22594 | @cindex émulation | ||
| 22595 | @cindex @code{binfmt_misc} | ||
| 22596 | @code{qemu-binfmt-service-type} fournit le support de l'émulation | ||
| 22597 | transparente de binaires construits pour des architectures différentes — | ||
| 22598 | p.@: ex.@: il permet d'exécuter de manière transparente des programmes ARMv | ||
| 22599 | sur une machine x86_64. Cela se fait en combinant l'émulateur | ||
| 22600 | @uref{https://www.qemu.org, QEMU} et la fonctionnalité @code{binfmt_misc} du | ||
| 22601 | noyau Linux. | ||
| 22602 | |||
| 22603 | @defvr {Variable Scheme} qemu-binfmt-service-type | ||
| 22604 | Le type du service QEMU/binfmt pour l'émulation transparente. Sa valeur | ||
| 22605 | doit être un objet @code{qemu-binfmt-configuration}, qui spécifie le paquet | ||
| 22606 | QEMU à utiliser ainsi que l'architecture que vous voulez émuler : | ||
| 22607 | |||
| 22608 | @example | ||
| 22609 | (service qemu-binfmt-service-type | ||
| 22610 | (qemu-binfmt-configuration | ||
| 22611 | (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el")))) | ||
| 22612 | @end example | ||
| 22613 | |||
| 22614 | Dans cet exemple, on active l'émulation transparente pour les plateformes | ||
| 22615 | ARM et aarch64. Lancer @code{herd stop qemu-binfmt} l'éteint et lancer | ||
| 22616 | @code{herd start qemu-binfmt} le rallume (@pxref{Invoking herd, the | ||
| 22617 | @command{herd} command,, shepherd, The GNU Shepherd Manual}). | ||
| 22618 | @end defvr | ||
| 22619 | |||
| 22620 | @deftp {Type de données} qemu-binfmt-configuration | ||
| 22621 | La configuration du service @code{qemu-binfmt}. | ||
| 22622 | |||
| 22623 | @table @asis | ||
| 22624 | @item @code{platforms} (par défaut : @code{'()}) | ||
| 22625 | La liste des plates-formes émulées par QEMU. Chaque élément doit être un | ||
| 22626 | objet @dfn{platform object} tel que renvoyé par @code{lookup-qemu-platforms} | ||
| 22627 | (voir plus bas). | ||
| 22628 | |||
| 22629 | @item @code{guix-support?} (par défaut : @code{#f}) | ||
| 22630 | Lorsque la valeur est vraie, QEMU et toutes ses dépendances sont ajoutés à | ||
| 22631 | l'environnement de construction de @command{guix-daemon} (@pxref{Invoquer guix-daemon, @code{--chroot-directory} option}). Cela permet d'utiliser les | ||
| 22632 | gestionnaires @code{binfmt_misc} dans l'environnement de cosntruction, ce | ||
| 22633 | qui signifie que vous pouvez construire des programmes pour d'autres | ||
| 22634 | architectures de manière transparente. | ||
| 22635 | |||
| 22636 | Par exemple, supposons que vous soyez sur une machine x86_64 et que vous | ||
| 22637 | avez ce services : | ||
| 22638 | |||
| 22639 | @example | ||
| 22640 | (service qemu-binfmt-service-type | ||
| 22641 | (qemu-binfmt-configuration | ||
| 22642 | (platforms (lookup-qemu-platforms "arm")) | ||
| 22643 | (guix-support? #t))) | ||
| 22644 | @end example | ||
| 22645 | |||
| 22646 | Vous pouvez lancer : | ||
| 22647 | |||
| 22648 | @example | ||
| 22649 | guix build -s armhf-linux inkscape | ||
| 22650 | @end example | ||
| 22651 | |||
| 22652 | @noindent | ||
| 22653 | et cela construira Inkscape pour ARMv7 @emph{comme s'il s'agissait d'une | ||
| 22654 | construction native}, de manière transparente avec QEMU pour émuler un CPU | ||
| 22655 | ARMv7. Plutôt pratique si vous voulez tester un paquet construit pour une | ||
| 22656 | architecture à laquelle vous n'avez pas accès ! | ||
| 22657 | |||
| 22658 | @item @code{qemu} (par défaut : @code{qemu}) | ||
| 22659 | Le paquet QEMU à utiliser. | ||
| 22660 | @end table | ||
| 22661 | @end deftp | ||
| 22662 | |||
| 22663 | @deffn {Procédure Scheme} lookup-qemu-platforms @var{platforms}@dots{} | ||
| 22664 | Renvoie la liste des objets de plates-formes QEMU correspondant à | ||
| 22665 | @var{platforms}@dots{}. @var{platforms} doit être une liste de chaînes de | ||
| 22666 | caractères correspondant aux noms de plates-formes, comme @code{"arm"}, | ||
| 22667 | @code{"sparc"}, @code{"mips64el"} etc. | ||
| 22668 | @end deffn | ||
| 22669 | |||
| 22670 | @deffn {Procédure Scheme} qemu-platform? @var{obj} | ||
| 22671 | Renvoie vrai s i@var{obj} est un objet de plate-forme. | ||
| 22672 | @end deffn | ||
| 22673 | |||
| 22674 | @deffn {Procédure Scheme} qemu-platform-name @var{platform} | ||
| 22675 | Renvoie le nom de @var{platform} — une chaîne comme @code{"arm"}. | ||
| 22676 | @end deffn | ||
| 22677 | |||
| 22678 | @node Services de contrôle de version | ||
| 22679 | @subsection Services de contrôle de version | ||
| 22680 | |||
| 22681 | Le module @code{(gnu services version-control)} fournit un service pour | ||
| 22682 | permettre l'accès à distance à des dépôts Git locaux. Il y a trois options | ||
| 22683 | : en utilisant @code{git-daemon-service} qui fournit un accès aux dépôts via | ||
| 22684 | le protocole non sécurisé @code{git://} basé sur TCP, en étendant le serveur | ||
| 22685 | web @code{nginx} pour relayer les requêtes vers @code{git-http-backend} ou | ||
| 22686 | en fournissant une interface web avec @code{cgit-service-type}. | ||
| 22687 | |||
| 22688 | @deffn {Procédure Scheme} git-daemon-service [#:config (git-daemon-configuration)] | ||
| 22689 | |||
| 22690 | Renvoie un service qui lance @command{git daemon}, un serveur TCP simple | ||
| 22691 | pour exposer des dépôts sur le protocole Git pour des accès anonymes. | ||
| 22692 | |||
| 22693 | L'argument facultatif @var{config} devrait être un objet | ||
| 22694 | @code{<git-daemon-configuration>}, par défaut il permet l'accès en | ||
| 22695 | lecture-seule aux dépôts exportés@footnote{En créant le fichier magique « | ||
| 22696 | git-daemon-export-ok » dans le répertoire du dépôt.} dans @file{/srv/git}. | ||
| 22697 | |||
| 22698 | @end deffn | ||
| 22699 | |||
| 22700 | @deftp {Type de données} git-daemon-configuration | ||
| 22701 | Type de données représentnt la configuration de @code{git-daemon-service}. | ||
| 22702 | |||
| 22703 | @table @asis | ||
| 22704 | @item @code{package} (par défaut : @var{git}) | ||
| 22705 | Objet de paquet du système de contrôle de version distribué Git. | ||
| 22706 | |||
| 22707 | @item @code{export-all?} (par défaut : @var{#f}) | ||
| 22708 | Indique s'il faut permettre l'accès à tous les dépôts Git, même s'ils n'ont | ||
| 22709 | pas le fichier @file{git-daemon-export-ok}. | ||
| 22710 | |||
| 22711 | @item @code{base-path} (par défaut : @file{/srv/git}) | ||
| 22712 | Indique s'il faut traduire toutes les requêtes de chemins relativement au | ||
| 22713 | chemin actuel. Si vous lancez le démon git avec @var{(base-path | ||
| 22714 | "/srv/git")} sur example.com, si vous essayez ensuite de récupérer | ||
| 22715 | @code{git://example.com/hello.git}, le démon git interprétera ce chemin | ||
| 22716 | comme étant @code{/srv/git/hello.git}. | ||
| 22717 | |||
| 22718 | @item @code{user-path} (par défaut : @var{#f}) | ||
| 22719 | Indique s'il faut permettre la notation @code{~user} dans les requêtes. | ||
| 22720 | Lorsque spécifié avec une chaîne vide, les requêtes à | ||
| 22721 | @code{git://host/~alice/foo} sont des requêtes d'accès au dépôt @code{foo} | ||
| 22722 | dans le répertoire personnel de l'utilisateur @code{alice}. Si | ||
| 22723 | @var{(user-path "chemin")} est spécifié, la même requête est interprétée | ||
| 22724 | comme accédant au répertoire @code{chemin/foo} dans le répertoire personnel | ||
| 22725 | de l'utilisateur @code{alice}. | ||
| 22726 | |||
| 22727 | @item @code{listen} (par défaut : @var{'()}) | ||
| 22728 | Indique s'il faut écouter sur des adresses IP ou des noms d'hôtes | ||
| 22729 | particuliers, par défaut tous. | ||
| 22730 | |||
| 22731 | @item @code{port} (par défaut : @var{#f}) | ||
| 22732 | Indique s'il faut écouter sur un port particulier, par défaut le 9418. | ||
| 22733 | |||
| 22734 | @item @code{whitelist} (par défaut : @var{'()}) | ||
| 22735 | Si la liste n'est pas vide, n'autoriser l'accès qu'aux dossiers spécifiés. | ||
| 22736 | |||
| 22737 | @item @code{extra-options} (par défaut : @var{'()}) | ||
| 22738 | Options supplémentaires qui seront passées à @code{git daemon}, lancez | ||
| 22739 | @command{man git-daemon} pour plus d'informations. | ||
| 22740 | |||
| 22741 | @end table | ||
| 22742 | @end deftp | ||
| 22743 | |||
| 22744 | Le protocole @code{git://} ne permet pas l'authentification. Lorsque vous | ||
| 22745 | récupérez un dépôt via @code{git://}, vous ne pouvez pas savoir si les | ||
| 22746 | données que vous recevez ont été modifiées ou si elles viennent bien de | ||
| 22747 | l'hôte spécifié, et votre connexion pourrait être espionnée. Il est | ||
| 22748 | préférable d'utiliser un protocole de transport authentifié et chiffré, | ||
| 22749 | comme @code{https}. Bien que Git vous permette de servir des dépôts avec un | ||
| 22750 | serveur web peu sophistiqué basé sur les fichiers, il y a un protocole plus | ||
| 22751 | rapide implémenté par le programme @code{git-http-backend}. Ce programme | ||
| 22752 | est le moteur des services web Git corrects. Il est conçu pour se trouver | ||
| 22753 | derrière un mandataire FastCGI. @xref{Services web} pour plus | ||
| 22754 | d'informations sur la manière de lancer le démon @code{fcgiwrap} nécessaire. | ||
| 22755 | |||
| 22756 | Guix a un type de données de configuration séparé pour servir des dépôts Git | ||
| 22757 | par HTTP. | ||
| 22758 | |||
| 22759 | @deftp {Type de données} git-http-configuration | ||
| 22760 | Type de données représentant la configuration de @code{git-http-service}. | ||
| 22761 | |||
| 22762 | @table @asis | ||
| 22763 | @item @code{package} (par défaut : @var{git}) | ||
| 22764 | Objet de paquet du système de contrôle de version distribué Git. | ||
| 22765 | |||
| 22766 | @item @code{git-root} (par défaut : @file{/srv/git}) | ||
| 22767 | Répertoire contenant les dépôts Git à exposer au monde. | ||
| 22768 | |||
| 22769 | @item @code{export-all?} (par défaut : @var{#f}) | ||
| 22770 | Indique s'il faut exposer l'accès de tous les dépôts Git dans | ||
| 22771 | @var{git-root}, même s'ils n'ont pas le fichier @file{git-daemon-export-ok}. | ||
| 22772 | |||
| 22773 | @item @code{uri-path} (par défaut : @file{/git/}) | ||
| 22774 | Préfixe du chemin pour l'accès Git. Avec le préfixe @code{/git/} par | ||
| 22775 | défaut, cela traduira @code{http://@var{server}/git/@var{repo}.git} en | ||
| 22776 | @code{/sr/git/@var{repo}.git}. Les requêtes dont les chemins d'URI ne | ||
| 22777 | commencent pas par ce préfixe ne seront pas passées à cette instance de Git. | ||
| 22778 | |||
| 22779 | @item @code{fcgiwrap-socket} (par défaut : @code{127.0.0.1:9000}) | ||
| 22780 | Le socket sur lequel le démon @code{fcgiwrap} écoute. @xref{Services web}. | ||
| 22781 | @end table | ||
| 22782 | @end deftp | ||
| 22783 | |||
| 22784 | Il n'y a pas de @code{git-http-service-type}, actuellement ; à la place vous | ||
| 22785 | pouvez créer un @code{nginx-location-configuration} à partir d'un | ||
| 22786 | @code{git-http-configuration} puis ajouter cela au serveur web. | ||
| 22787 | |||
| 22788 | @deffn {Procédure Scheme} git-http-nginx-location-configuration @ | ||
| 22789 | [config=(git-http-configuration)] | ||
| 22790 | Calcule un @code{nginx-location-configuration} qui correspond à la | ||
| 22791 | configuration http Git donnée. Voici un exemple de définition de service | ||
| 22792 | nginx qui sert le répertoire @file{/srv/git} par défaut en HTTPS : | ||
| 22793 | |||
| 22794 | @example | ||
| 22795 | (service nginx-service-type | ||
| 22796 | (nginx-configuration | ||
| 22797 | (server-blocks | ||
| 22798 | (list | ||
| 22799 | (nginx-server-configuration | ||
| 22800 | (listen '("443 ssl")) | ||
| 22801 | (server-name "git.my-host.org") | ||
| 22802 | (ssl-certificate | ||
| 22803 | "/etc/letsencrypt/live/git.my-host.org/fullchain.pem") | ||
| 22804 | (ssl-certificate-key | ||
| 22805 | "/etc/letsencrypt/live/git.my-host.org/privkey.pem") | ||
| 22806 | (locations | ||
| 22807 | (list | ||
| 22808 | (git-http-nginx-location-configuration | ||
| 22809 | (git-http-configuration (uri-path "/")))))))))) | ||
| 22810 | @end example | ||
| 22811 | |||
| 22812 | Ce exemple suppose que vous utilisez Let's Encrypt pour récupérer votre | ||
| 22813 | certificat TLS. @xref{Services de certificats}. Le service @code{certbot} par | ||
| 22814 | défaut redirigera tout le trafic HTTP de @code{git.my-host.org} en HTTPS. | ||
| 22815 | Vous devrez aussi ajouter un mandataire @code{fcgiwrap} à vos services | ||
| 22816 | systèmes. @xref{Services web}. | ||
| 22817 | @end deffn | ||
| 22818 | |||
| 22819 | @subsubheading Service Cgit | ||
| 22820 | |||
| 22821 | @cindex service cgit | ||
| 22822 | @cindex git, interface web | ||
| 22823 | @uref{https://git.zx2c4.com/cgit/, Cgit} est une interface web pour des | ||
| 22824 | dépôts Git écrite en C. | ||
| 22825 | |||
| 22826 | L'exemple suivant configurera le service avec les valeurs par défaut. Par | ||
| 22827 | défaut, on peut accéder à Cgit sur le port (@code{http://localhost:80}). | ||
| 22828 | |||
| 22829 | @example | ||
| 22830 | (service cgit-service-type) | ||
| 22831 | @end example | ||
| 22832 | |||
| 22833 | Le type @code{file-object} désigne soit un objet simili-fichier | ||
| 22834 | (@pxref{G-Expressions, file-like objects}), soit une chaîne. | ||
| 22835 | |||
| 22836 | @c %start of fragment | ||
| 22837 | |||
| 22838 | Les champs de @code{cgit-configuration} disponibles sont : | ||
| 22839 | |||
| 22840 | @deftypevr {paramètre de @code{cgit-configuration}} package package | ||
| 22841 | Le paquet cgit. | ||
| 22842 | |||
| 22843 | @end deftypevr | ||
| 22844 | |||
| 22845 | @deftypevr {paramètre de @code{cgit-configuration}} nginx-server-configuration-list nginx | ||
| 22846 | Configuration Nginx. | ||
| 22847 | |||
| 22848 | @end deftypevr | ||
| 22849 | |||
| 22850 | @deftypevr {paramètre de @code{cgit-configuration}} file-object about-filter | ||
| 22851 | Spécifie une commande qui doit être invoquée pour formater le contenu des | ||
| 22852 | pages « à propos » (au plus haut niveau et pour chaque dépôt). | ||
| 22853 | |||
| 22854 | La valeur par défaut est @samp{""}. | ||
| 22855 | |||
| 22856 | @end deftypevr | ||
| 22857 | |||
| 22858 | @deftypevr {paramètre de @code{cgit-configuration}} string agefile | ||
| 22859 | Spécifie un chemin, relativement à chaque dépôt, qui peut être utilisé pour | ||
| 22860 | spécifier la date et l'heure du plus récent commit du dépôt. | ||
| 22861 | |||
| 22862 | La valeur par défaut est @samp{""}. | ||
| 22863 | |||
| 22864 | @end deftypevr | ||
| 22865 | |||
| 22866 | @deftypevr {paramètre de @code{cgit-configuration}} file-object auth-filter | ||
| 22867 | Spécifie une commande qui sera invoquée pour authentifier l'accès au dépôt. | ||
| 22868 | |||
| 22869 | La valeur par défaut est @samp{""}. | ||
| 22870 | |||
| 22871 | @end deftypevr | ||
| 22872 | |||
| 22873 | @deftypevr {paramètre de @code{cgit-configuration}} string branch-sort | ||
| 22874 | Drapeau qui, lorsqu'il vaut @samp{age}, active le trie par date dans la | ||
| 22875 | liste des branches, et le trie par nom lorsqu'il vaut @samp{name}. | ||
| 22876 | |||
| 22877 | La valeur par défaut est @samp{"name"}. | ||
| 22878 | |||
| 22879 | @end deftypevr | ||
| 22880 | |||
| 22881 | @deftypevr {paramètre de @code{cgit-configuration}} string cache-root | ||
| 22882 | Chemin utilisé pour stocker les entrées de cache de cgit. | ||
| 22883 | |||
| 22884 | La valeur par défaut est @samp{"/var/cache/cgit"}. | ||
| 22885 | |||
| 22886 | @end deftypevr | ||
| 22887 | |||
| 22888 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-static-ttl | ||
| 22889 | Nombre qui spécifie le temps de vie, en minute, des versions en cache des | ||
| 22890 | pages du dépôt accédées par leur SHA-1. | ||
| 22891 | |||
| 22892 | La valeur par défaut est @samp{-1}. | ||
| 22893 | |||
| 22894 | @end deftypevr | ||
| 22895 | |||
| 22896 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-dynamic-ttl | ||
| 22897 | Nombre qui spécifie le temps de vie, en minutes, des version en cache des | ||
| 22898 | pages du dépôt accédées sans leur SHA1. | ||
| 22899 | |||
| 22900 | La valeur par défaut est @samp{5}. | ||
| 22901 | |||
| 22902 | @end deftypevr | ||
| 22903 | |||
| 22904 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-repo-ttl | ||
| 22905 | Nombre qui spécifie le temps de vie, en minute, des version en cache de la | ||
| 22906 | page de résumé du dépôt. | ||
| 22907 | |||
| 22908 | La valeur par défaut est @samp{5}. | ||
| 22909 | |||
| 22910 | @end deftypevr | ||
| 22911 | |||
| 22912 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-root-ttl | ||
| 22913 | Nombre qui spécifie le temps de vie, en minutes, de la version en cache de | ||
| 22914 | la page d'index du dépôt. | ||
| 22915 | |||
| 22916 | La valeur par défaut est @samp{5}. | ||
| 22917 | |||
| 22918 | @end deftypevr | ||
| 22919 | |||
| 22920 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-scanrc-ttl | ||
| 22921 | Nombre qui spécifie le temps de vie, en minutes, de la version en cache du | ||
| 22922 | résultat du scan d'un chemin dans le dépôt Git. | ||
| 22923 | |||
| 22924 | La valeur par défaut est @samp{15}. | ||
| 22925 | |||
| 22926 | @end deftypevr | ||
| 22927 | |||
| 22928 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-about-ttl | ||
| 22929 | Nombre qui spécifie le temps de vie, en minutes, de la version en cache de | ||
| 22930 | la page « à propos » du dépôt. | ||
| 22931 | |||
| 22932 | La valeur par défaut est @samp{15}. | ||
| 22933 | |||
| 22934 | @end deftypevr | ||
| 22935 | |||
| 22936 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-snapshot-ttl | ||
| 22937 | Nombre qui spécifie le temps de vie, en minutes, de la version en cache des | ||
| 22938 | archives. | ||
| 22939 | |||
| 22940 | La valeur par défaut est @samp{5}. | ||
| 22941 | |||
| 22942 | @end deftypevr | ||
| 22943 | |||
| 22944 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-size | ||
| 22945 | Le nombre maximum d'entrées dans le cache de cgit. Lorsque la valeur est | ||
| 22946 | @samp{0}, le cache est désactivé. | ||
| 22947 | |||
| 22948 | La valeur par défaut est @samp{0}. | ||
| 22949 | |||
| 22950 | @end deftypevr | ||
| 22951 | |||
| 22952 | @deftypevr {paramètre de @code{cgit-configuration}} boolean case-sensitive-sort? | ||
| 22953 | Indique si le tri des éléments est sensible à la casse. | ||
| 22954 | |||
| 22955 | La valeur par défaut est @samp{#t}. | ||
| 22956 | |||
| 22957 | @end deftypevr | ||
| 22958 | |||
| 22959 | @deftypevr {paramètre de @code{cgit-configuration}} list clone-prefix | ||
| 22960 | Liste des préfixes communs qui, lorsqu'ils sont combinés à l'URL du dépôt, | ||
| 22961 | génèrent des URL de clone valides pour le dépôt. | ||
| 22962 | |||
| 22963 | La valeur par défaut est @samp{()}. | ||
| 22964 | |||
| 22965 | @end deftypevr | ||
| 22966 | |||
| 22967 | @deftypevr {paramètre de @code{cgit-configuration}} list clone-url | ||
| 22968 | Liste des modèles @code{clone-url} | ||
| 22969 | |||
| 22970 | La valeur par défaut est @samp{()}. | ||
| 22971 | |||
| 22972 | @end deftypevr | ||
| 22973 | |||
| 22974 | @deftypevr {paramètre de @code{cgit-configuration}} file-object commit-filter | ||
| 22975 | Commande qui sera invoquée pour formater les messages de commit. | ||
| 22976 | |||
| 22977 | La valeur par défaut est @samp{""}. | ||
| 22978 | |||
| 22979 | @end deftypevr | ||
| 22980 | |||
| 22981 | @deftypevr {paramètre de @code{cgit-configuration}} string commit-sort | ||
| 22982 | Drapeau qui, s'il vaut @samp{date}, active le tri par date strict dans le | ||
| 22983 | messages de commit, et le tri topologique strict lorsqu'il vaut @samp{topo}. | ||
| 22984 | |||
| 22985 | La valeur par défaut est @samp{"git log"}. | ||
| 22986 | |||
| 22987 | @end deftypevr | ||
| 22988 | |||
| 22989 | @deftypevr {paramètre de @code{cgit-configuration}} file-object css | ||
| 22990 | URL qui spécifie le document css à inclure dans les pages cgit. | ||
| 22991 | |||
| 22992 | La valeur par défaut est @samp{"/share/cgit/cgit.css"}. | ||
| 22993 | |||
| 22994 | @end deftypevr | ||
| 22995 | |||
| 22996 | @deftypevr {paramètre de @code{cgit-configuration}} file-object email-filter | ||
| 22997 | Spécifie une commande qui sera invoquée pour formater les noms et l'adresse | ||
| 22998 | de courriel des commiteurs, des auteurs et des taggueurs, représentés à | ||
| 22999 | plusieurs endroits dans l'interface cgit. | ||
| 23000 | |||
| 23001 | La valeur par défaut est @samp{""}. | ||
| 23002 | |||
| 23003 | @end deftypevr | ||
| 23004 | |||
| 23005 | @deftypevr {paramètre de @code{cgit-configuration}} boolean embedded? | ||
| 23006 | Drapeau qui, s'il vaut @samp{#t}, fera générer un fragment HTML à cgit qu'il | ||
| 23007 | sera possible d'inclure dans d'autres pages HTML. | ||
| 23008 | |||
| 23009 | La valeur par défaut est @samp{#f}. | ||
| 23010 | |||
| 23011 | @end deftypevr | ||
| 23012 | |||
| 23013 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-commit-graph? | ||
| 23014 | Drapeau qui, lorsqu'il vaut @samp{#t}, fera afficher un historique en | ||
| 23015 | ASCII-art à gauche des messages de commit dans la page de log du dépôt. | ||
| 23016 | |||
| 23017 | La valeur par défaut est @samp{#f}. | ||
| 23018 | |||
| 23019 | @end deftypevr | ||
| 23020 | |||
| 23021 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-filter-overrides? | ||
| 23022 | Drapeau qui, lorsqu'il vaut @samp{#t}, permet à tous les paramètres de | ||
| 23023 | filtrage d'être modifiés dans des fichiers cgitrc spécifiques au dépôt. | ||
| 23024 | |||
| 23025 | La valeur par défaut est @samp{#f}. | ||
| 23026 | |||
| 23027 | @end deftypevr | ||
| 23028 | |||
| 23029 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-follow-links? | ||
| 23030 | Drapeau qui, s'il vaut @samp{#t}, permet aux utilisateurs de suivre un | ||
| 23031 | fichier dans la vue « log ». | ||
| 23032 | |||
| 23033 | La valeur par défaut est @samp{#f}. | ||
| 23034 | |||
| 23035 | @end deftypevr | ||
| 23036 | |||
| 23037 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-http-clone? | ||
| 23038 | Si la valeur est @samp{#t}, cgit agira comme un point d'accès HTTP idiot | ||
| 23039 | pour les clones Git. | ||
| 23040 | |||
| 23041 | La valeur par défaut est @samp{#t}. | ||
| 23042 | |||
| 23043 | @end deftypevr | ||
| 23044 | |||
| 23045 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-index-links? | ||
| 23046 | Drapeau qui, s'il vaut @samp{#t}, fera générer des liens « résumé », « | ||
| 23047 | commit » et « arborescence » supplémentaires poru chaque dépôt dans l'index | ||
| 23048 | des dépôts. | ||
| 23049 | |||
| 23050 | La valeur par défaut est @samp{#f}. | ||
| 23051 | |||
| 23052 | @end deftypevr | ||
| 23053 | |||
| 23054 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-index-owner? | ||
| 23055 | Drapeau qui, s'il vaut @samp{#t}, fera afficher le propriétaire de chaque | ||
| 23056 | dépôt dans l'index des dépôts. | ||
| 23057 | |||
| 23058 | La valeur par défaut est @samp{#t}. | ||
| 23059 | |||
| 23060 | @end deftypevr | ||
| 23061 | |||
| 23062 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-log-filecount? | ||
| 23063 | Drapeau qui, s'il vaut @samp{#t}, fera afficher à cgit le nombre de fichiers | ||
| 23064 | modifiés pour chaque commit sur la page de log du dépôt. | ||
| 23065 | |||
| 23066 | La valeur par défaut est @samp{#f}. | ||
| 23067 | |||
| 23068 | @end deftypevr | ||
| 23069 | |||
| 23070 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-log-linecount? | ||
| 23071 | Drapeau qui, s'il vaut @samp{#t}, fera afficher à cgit le nombre de lignes | ||
| 23072 | ajoutées et enlevées pour chaque commit de la page de log du dépôt. | ||
| 23073 | |||
| 23074 | La valeur par défaut est @samp{#f}. | ||
| 23075 | |||
| 23076 | @end deftypevr | ||
| 23077 | |||
| 23078 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-remote-branches? | ||
| 23079 | Drapeau qui, s'il vaut @samp{#t}, fera afficher les branches distantes dans | ||
| 23080 | les vues du résumé et des références. | ||
| 23081 | |||
| 23082 | La valeur par défaut est @samp{#f}. | ||
| 23083 | |||
| 23084 | @end deftypevr | ||
| 23085 | |||
| 23086 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-subject-links? | ||
| 23087 | Drapeau qui, s'il vaut @samp{1}, fera utiliser à cgit le sujet du commit | ||
| 23088 | parent comme texte du lien lors de la génération des liens vers les commits | ||
| 23089 | parents dans la vue des commits. | ||
| 23090 | |||
| 23091 | La valeur par défaut est @samp{#f}. | ||
| 23092 | |||
| 23093 | @end deftypevr | ||
| 23094 | |||
| 23095 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-html-serving? | ||
| 23096 | Drapeau qui, s'il vaut @samp{#t}, fera utiliser à cgit l esujet du commit | ||
| 23097 | parent comme texte du lien lors de la génération des liens vers le commit | ||
| 23098 | parent dans la vue des commits. | ||
| 23099 | |||
| 23100 | La valeur par défaut est @samp{#f}. | ||
| 23101 | |||
| 23102 | @end deftypevr | ||
| 23103 | |||
| 23104 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-tree-linenumbers? | ||
| 23105 | Drapeau qui, s'il vaut @samp{#t}, fera générer à cgit des liens vers le | ||
| 23106 | numéro de ligne pour les blobs en texte brut affichés dans la vue de | ||
| 23107 | l'arborescence. | ||
| 23108 | |||
| 23109 | La valeur par défaut est @samp{#t}. | ||
| 23110 | |||
| 23111 | @end deftypevr | ||
| 23112 | |||
| 23113 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-git-config? | ||
| 23114 | Drapeau qui, s'il vaut @samp{#t}, permettra à cgit d'utiliser la | ||
| 23115 | configuration Git pour spécifier des paramètres spécifiques au dépôt. | ||
| 23116 | |||
| 23117 | La valeur par défaut est @samp{#f}. | ||
| 23118 | |||
| 23119 | @end deftypevr | ||
| 23120 | |||
| 23121 | @deftypevr {paramètre de @code{cgit-configuration}} file-object favicon | ||
| 23122 | URL utilisée comme lien vers un icône pour cgit. | ||
| 23123 | |||
| 23124 | La valeur par défaut est @samp{"/favicon.ico"}. | ||
| 23125 | |||
| 23126 | @end deftypevr | ||
| 23127 | |||
| 23128 | @deftypevr {paramètre de @code{cgit-configuration}} string footer | ||
| 23129 | Le contenu du fichier spécifié avec cette option sera inclus directement au | ||
| 23130 | bas de toutes les pages (c.-à-d.@: qu'il remplace le message « généré par | ||
| 23131 | …@: » générique). | ||
| 23132 | |||
| 23133 | La valeur par défaut est @samp{""}. | ||
| 23134 | |||
| 23135 | @end deftypevr | ||
| 23136 | |||
| 23137 | @deftypevr {paramètre de @code{cgit-configuration}} string head-include | ||
| 23138 | Le contenu du fichier spécifié dans cette option sera inclus directement | ||
| 23139 | dans la section HEAD HTML de toutes les pages. | ||
| 23140 | |||
| 23141 | La valeur par défaut est @samp{""}. | ||
| 23142 | |||
| 23143 | @end deftypevr | ||
| 23144 | |||
| 23145 | @deftypevr {paramètre de @code{cgit-configuration}} string header | ||
| 23146 | Le contenu du fichier spécifié avec cette option sera inclus directement au | ||
| 23147 | début de toutes les pages. | ||
| 23148 | |||
| 23149 | La valeur par défaut est @samp{""}. | ||
| 23150 | |||
| 23151 | @end deftypevr | ||
| 23152 | |||
| 23153 | @deftypevr {paramètre de @code{cgit-configuration}} file-object include | ||
| 23154 | Nom d'un fichier de configuration à inclure avant que le reste du fichier de | ||
| 23155 | configuration actuel ne soit analysé. | ||
| 23156 | |||
| 23157 | La valeur par défaut est @samp{""}. | ||
| 23158 | |||
| 23159 | @end deftypevr | ||
| 23160 | |||
| 23161 | @deftypevr {paramètre de @code{cgit-configuration}} string index-header | ||
| 23162 | Le contenu du fichier spécifié avec cette option sera inclus directement au | ||
| 23163 | dessus de l'index des dépôts. | ||
| 23164 | |||
| 23165 | La valeur par défaut est @samp{""}. | ||
| 23166 | |||
| 23167 | @end deftypevr | ||
| 23168 | |||
| 23169 | @deftypevr {paramètre de @code{cgit-configuration}} string index-info | ||
| 23170 | Le contenu du fichier spécifié avec cette option sera inclus directement en | ||
| 23171 | dessous de l'en-tête sur la page d'index du dépôt. | ||
| 23172 | |||
| 23173 | La valeur par défaut est @samp{""}. | ||
| 23174 | |||
| 23175 | @end deftypevr | ||
| 23176 | |||
| 23177 | @deftypevr {paramètre de @code{cgit-configuration}} boolean local-time? | ||
| 23178 | Drapeau qui, s'il vaut @samp{#t}, fera afficher à cgit l'heure et la date de | ||
| 23179 | commit et de tag dans le fuseau horaire du serveur. | ||
| 23180 | |||
| 23181 | La valeur par défaut est @samp{#f}. | ||
| 23182 | |||
| 23183 | @end deftypevr | ||
| 23184 | |||
| 23185 | @deftypevr {paramètre de @code{cgit-configuration}} file-object logo | ||
| 23186 | URL qui spécifie la source d'une image utilisé comme logo sur toutes les | ||
| 23187 | pages cgit. | ||
| 23188 | |||
| 23189 | La valeur par défaut est @samp{"/share/cgit/cgit.png"}. | ||
| 23190 | |||
| 23191 | @end deftypevr | ||
| 23192 | |||
| 23193 | @deftypevr {paramètre de @code{cgit-configuration}} string logo-link | ||
| 23194 | URL chargée lors du clic sur l'image du logo de cgit. | ||
| 23195 | |||
| 23196 | La valeur par défaut est @samp{""}. | ||
| 23197 | |||
| 23198 | @end deftypevr | ||
| 23199 | |||
| 23200 | @deftypevr {paramètre de @code{cgit-configuration}} file-object owner-filter | ||
| 23201 | Commande qui sera invoquée pour formater la colonne propriétaire sur la page | ||
| 23202 | principale. | ||
| 23203 | |||
| 23204 | La valeur par défaut est @samp{""}. | ||
| 23205 | |||
| 23206 | @end deftypevr | ||
| 23207 | |||
| 23208 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-atom-items | ||
| 23209 | Nombre d'éléments à afficher dans la vue des flux atom. | ||
| 23210 | |||
| 23211 | La valeur par défaut est @samp{10}. | ||
| 23212 | |||
| 23213 | @end deftypevr | ||
| 23214 | |||
| 23215 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-commit-count | ||
| 23216 | Nombre d'éléments à lister par page dans la vue « log ». | ||
| 23217 | |||
| 23218 | La valeur par défaut est @samp{50}. | ||
| 23219 | |||
| 23220 | @end deftypevr | ||
| 23221 | |||
| 23222 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-message-length | ||
| 23223 | Nombre caractères de messages de commit à afficher dans la vue « log ». | ||
| 23224 | |||
| 23225 | La valeur par défaut est @samp{80}. | ||
| 23226 | |||
| 23227 | @end deftypevr | ||
| 23228 | |||
| 23229 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-repo-count | ||
| 23230 | Spécifie le nombre d'éléments à lister par page sur la page de l'index des | ||
| 23231 | dépôts. | ||
| 23232 | |||
| 23233 | La valeur par défaut est @samp{50}. | ||
| 23234 | |||
| 23235 | @end deftypevr | ||
| 23236 | |||
| 23237 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-repodesc-length | ||
| 23238 | Spécifie le nombre maximum de caractères de description de dépôts à afficher | ||
| 23239 | sur la page d'index des dépôts. | ||
| 23240 | |||
| 23241 | La valeur par défaut est @samp{80}. | ||
| 23242 | |||
| 23243 | @end deftypevr | ||
| 23244 | |||
| 23245 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-blob-size | ||
| 23246 | Spécifie la taille maximale d'un blob pour lequel afficher du HTML en | ||
| 23247 | kilo-octets. | ||
| 23248 | |||
| 23249 | La valeur par défaut est @samp{0}. | ||
| 23250 | |||
| 23251 | @end deftypevr | ||
| 23252 | |||
| 23253 | @deftypevr {paramètre de @code{cgit-configuration}} string max-stats | ||
| 23254 | Période de statistiques maximale. Les valeurs valides sont @samp{week}, | ||
| 23255 | @samp{month}, @samp{quarter} et @samp{year}. | ||
| 23256 | |||
| 23257 | La valeur par défaut est @samp{""}. | ||
| 23258 | |||
| 23259 | @end deftypevr | ||
| 23260 | |||
| 23261 | @deftypevr {paramètre de @code{cgit-configuration}} mimetype-alist mimetype | ||
| 23262 | Type mime pour l'extension de fichier spécifiée. | ||
| 23263 | |||
| 23264 | La valeur par défaut est @samp{((gif "image/gif") (html "text/html") (jpg | ||
| 23265 | "image/jpeg") (jpeg "image/jpeg") (pdf "application/pdf") (png "image/png") | ||
| 23266 | (svg "image/svg+xml"))}. | ||
| 23267 | |||
| 23268 | @end deftypevr | ||
| 23269 | |||
| 23270 | @deftypevr {paramètre de @code{cgit-configuration}} file-object mimetype-file | ||
| 23271 | Spécifie le fichier à utiliser pour la recherche automatique de type mime. | ||
| 23272 | |||
| 23273 | La valeur par défaut est @samp{""}. | ||
| 23274 | |||
| 23275 | @end deftypevr | ||
| 23276 | |||
| 23277 | @deftypevr {paramètre de @code{cgit-configuration}} string module-link | ||
| 23278 | Texte qui sera utilisé comme chaîne de formatage pour un lien hypertexte | ||
| 23279 | lorsqu'un sous-module est affiché dans la liste du répertoire. | ||
| 23280 | |||
| 23281 | La valeur par défaut est @samp{""}. | ||
| 23282 | |||
| 23283 | @end deftypevr | ||
| 23284 | |||
| 23285 | @deftypevr {paramètre de @code{cgit-configuration}} boolean nocache? | ||
| 23286 | Si la valeur est @samp{#t}, le cache est désactivé. | ||
| 23287 | |||
| 23288 | La valeur par défaut est @samp{#f}. | ||
| 23289 | |||
| 23290 | @end deftypevr | ||
| 23291 | |||
| 23292 | @deftypevr {paramètre de @code{cgit-configuration}} boolean noplainemail? | ||
| 23293 | Si la valeur est @samp{#t}, l'affichage des adresse de courriel des auteurs | ||
| 23294 | sera désactivé. | ||
| 23295 | |||
| 23296 | La valeur par défaut est @samp{#f}. | ||
| 23297 | |||
| 23298 | @end deftypevr | ||
| 23299 | |||
| 23300 | @deftypevr {paramètre de @code{cgit-configuration}} boolean noheader? | ||
| 23301 | Drapeau qui, s'il vaut @samp{#t}, fera omettre à cgit l'en-tête standard sur | ||
| 23302 | toutes les pages. | ||
| 23303 | |||
| 23304 | La valeur par défaut est @samp{#f}. | ||
| 23305 | |||
| 23306 | @end deftypevr | ||
| 23307 | |||
| 23308 | @deftypevr {paramètre de @code{cgit-configuration}} project-list project-list | ||
| 23309 | UNe liste de sous-répertoires dans @code{repository-directory}, relativement | ||
| 23310 | à lui, qui devrait être chargé comme des dépôts Git. Une liste vide | ||
| 23311 | signifie que tous les sous-répertoires seront chargés. | ||
| 23312 | |||
| 23313 | La valeur par défaut est @samp{()}. | ||
| 23314 | |||
| 23315 | @end deftypevr | ||
| 23316 | |||
| 23317 | @deftypevr {paramètre de @code{cgit-configuration}} file-object readme | ||
| 23318 | Texte utilisé comme valeur par défaut pour @code{cgit-repo-readme}. | ||
| 23319 | |||
| 23320 | La valeur par défaut est @samp{""}. | ||
| 23321 | |||
| 23322 | @end deftypevr | ||
| 23323 | |||
| 23324 | @deftypevr {paramètre de @code{cgit-configuration}} boolean remove-suffix? | ||
| 23325 | Si la valeur est @code{#t} et que @code{repository-directory} est activé, si | ||
| 23326 | un dépôt avec un suffixe de @code{.git} est trouvé, ce suffixe sera supprimé | ||
| 23327 | de l'URL et du nom. | ||
| 23328 | |||
| 23329 | La valeur par défaut est @samp{#f}. | ||
| 23330 | |||
| 23331 | @end deftypevr | ||
| 23332 | |||
| 23333 | @deftypevr {paramètre de @code{cgit-configuration}} integer renamelimit | ||
| 23334 | Nombre maximum de fichiers à considérer lors de la détection des renommages. | ||
| 23335 | |||
| 23336 | La valeur par défaut est @samp{-1}. | ||
| 23337 | |||
| 23338 | @end deftypevr | ||
| 23339 | |||
| 23340 | @deftypevr {paramètre de @code{cgit-configuration}} string repository-sort | ||
| 23341 | La manière dont les dépôt de chaque section sont rangés. | ||
| 23342 | |||
| 23343 | La valeur par défaut est @samp{""}. | ||
| 23344 | |||
| 23345 | @end deftypevr | ||
| 23346 | |||
| 23347 | @deftypevr {paramètre de @code{cgit-configuration}} robots-list robots | ||
| 23348 | Texte utilisé comme contenu du méta-attribut @code{robots}. | ||
| 23349 | |||
| 23350 | La valeur par défaut est @samp{("noindex" "nofollow")}. | ||
| 23351 | |||
| 23352 | @end deftypevr | ||
| 23353 | |||
| 23354 | @deftypevr {paramètre de @code{cgit-configuration}} string root-desc | ||
| 23355 | Texte affiché en dessous de l'en-tête de la page d'index des dépôts. | ||
| 23356 | |||
| 23357 | La valeur par défaut est @samp{"a fast webinterface for the git dscm"}. | ||
| 23358 | |||
| 23359 | @end deftypevr | ||
| 23360 | |||
| 23361 | @deftypevr {paramètre de @code{cgit-configuration}} string root-readme | ||
| 23362 | Le contenu du fichier spécifié avec cette option sera inclus directement en | ||
| 23363 | dessous du lien « à propos » sur la page d'index du dépôt. | ||
| 23364 | |||
| 23365 | La valeur par défaut est @samp{""}. | ||
| 23366 | |||
| 23367 | @end deftypevr | ||
| 23368 | |||
| 23369 | @deftypevr {paramètre de @code{cgit-configuration}} string root-title | ||
| 23370 | Texte affiché sur la page d'index des dépôts. | ||
| 23371 | |||
| 23372 | La valeur par défaut est @samp{""}. | ||
| 23373 | |||
| 23374 | @end deftypevr | ||
| 23375 | |||
| 23376 | @deftypevr {paramètre de @code{cgit-configuration}} boolean scan-hidden-path | ||
| 23377 | Si la valeur est @samp{#t} et que repository-directory est activé, | ||
| 23378 | repository-directory recherchera de manière récursive dans les répertoires | ||
| 23379 | dont le nom commence par un point. Sinon, repository-directory restera hors | ||
| 23380 | de ces répertoires, considérés comme « cachés ». Remarquez que cela ne | ||
| 23381 | s'applique pas au répertoire « .git » dans le dépôts. | ||
| 23382 | |||
| 23383 | La valeur par défaut est @samp{#f}. | ||
| 23384 | |||
| 23385 | @end deftypevr | ||
| 23386 | |||
| 23387 | @deftypevr {paramètre de @code{cgit-configuration}} list snapshots | ||
| 23388 | Texte qui spécifie l'ensemble des formats d'archives par défaut pour | ||
| 23389 | lesquelles cgit générera un lien. | ||
| 23390 | |||
| 23391 | La valeur par défaut est @samp{()}. | ||
| 23392 | |||
| 23393 | @end deftypevr | ||
| 23394 | |||
| 23395 | @deftypevr {paramètre de @code{cgit-configuration}} repository-directory repository-directory | ||
| 23396 | Nom du répertoire à scanner pour trouver les dépôts (représente | ||
| 23397 | @code{scan-path}). | ||
| 23398 | |||
| 23399 | La valeur par défaut est @samp{"/srv/git"}. | ||
| 23400 | |||
| 23401 | @end deftypevr | ||
| 23402 | |||
| 23403 | @deftypevr {paramètre de @code{cgit-configuration}} string section | ||
| 23404 | Le nom de la section de dépôts actuelle — tous les dépôts définis après ce | ||
| 23405 | point hériterons du nom de section actuel. | ||
| 23406 | |||
| 23407 | La valeur par défaut est @samp{""}. | ||
| 23408 | |||
| 23409 | @end deftypevr | ||
| 23410 | |||
| 23411 | @deftypevr {paramètre de @code{cgit-configuration}} string section-sort | ||
| 23412 | Drapeau qui, s'il vaut @samp{1}, triera les sections dans la liste des | ||
| 23413 | dépôts par nom. | ||
| 23414 | |||
| 23415 | La valeur par défaut est @samp{""}. | ||
| 23416 | |||
| 23417 | @end deftypevr | ||
| 23418 | |||
| 23419 | @deftypevr {paramètre de @code{cgit-configuration}} integer section-from-path | ||
| 23420 | Un nombre qui, s'il est défini avant repository-directory, spécifier combien | ||
| 23421 | d'éléments de chemin de chaque chemin de dépôt utiliser comme nom de section | ||
| 23422 | par défaut. | ||
| 23423 | |||
| 23424 | La valeur par défaut est @samp{0}. | ||
| 23425 | |||
| 23426 | @end deftypevr | ||
| 23427 | |||
| 23428 | @deftypevr {paramètre de @code{cgit-configuration}} boolean side-by-side-diffs? | ||
| 23429 | Si la valeur est @samp{#t}, afficher des diffs côte à côte au lieu des | ||
| 23430 | unidiffs par défaut. | ||
| 23431 | |||
| 23432 | La valeur par défaut est @samp{#f}. | ||
| 23433 | |||
| 23434 | @end deftypevr | ||
| 23435 | |||
| 23436 | @deftypevr {paramètre de @code{cgit-configuration}} file-object source-filter | ||
| 23437 | Spécifie une commande qui sera invoquée pour formater les blobs en texte | ||
| 23438 | brut dans la vue de l'arborescence. | ||
| 23439 | |||
| 23440 | La valeur par défaut est @samp{""}. | ||
| 23441 | |||
| 23442 | @end deftypevr | ||
| 23443 | |||
| 23444 | @deftypevr {paramètre de @code{cgit-configuration}} integer summary-branches | ||
| 23445 | Spécifie le nombre de branches à afficher dans la vue de résumé du dépôt. | ||
| 23446 | |||
| 23447 | La valeur par défaut est @samp{10}. | ||
| 23448 | |||
| 23449 | @end deftypevr | ||
| 23450 | |||
| 23451 | @deftypevr {paramètre de @code{cgit-configuration}} integer summary-log | ||
| 23452 | Spécifie le nombre d'élément du journal à afficher dans la vue résumé du | ||
| 23453 | dépôt. | ||
| 23454 | |||
| 23455 | La valeur par défaut est @samp{10}. | ||
| 23456 | |||
| 23457 | @end deftypevr | ||
| 23458 | |||
| 23459 | @deftypevr {paramètre de @code{cgit-configuration}} integer summary-tags | ||
| 23460 | Spécifie le nombre de tags à afficher dans la vue résumé du dépôt. | ||
| 23461 | |||
| 23462 | La valeur par défaut est @samp{10}. | ||
| 23463 | |||
| 23464 | @end deftypevr | ||
| 23465 | |||
| 23466 | @deftypevr {paramètre de @code{cgit-configuration}} string strict-export | ||
| 23467 | Nom de fichier qui, s'il est spécifié, doit être présent dans le dépôt pour | ||
| 23468 | que cgit accorde l'accès à ce dépôt. | ||
| 23469 | |||
| 23470 | La valeur par défaut est @samp{""}. | ||
| 23471 | |||
| 23472 | @end deftypevr | ||
| 23473 | |||
| 23474 | @deftypevr {paramètre de @code{cgit-configuration}} string virtual-root | ||
| 23475 | URL qui, si elle est spécifiée, sera utilisée comme racine pour tous les | ||
| 23476 | liens cgit. | ||
| 23477 | |||
| 23478 | La valeur par défaut est @samp{"/"}. | ||
| 23479 | |||
| 23480 | @end deftypevr | ||
| 23481 | |||
| 23482 | @deftypevr {paramètre de @code{cgit-configuration}} repository-cgit-configuration-list repositories | ||
| 23483 | Une liste d'enregistrements @dfn{cgit-repo} à utiliser avec config. | ||
| 23484 | |||
| 23485 | La valeur par défaut est @samp{()}. | ||
| 23486 | |||
| 23487 | Les champs de @code{repository-cgit-configuration} disponibles sont : | ||
| 23488 | |||
| 23489 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-list snapshots | ||
| 23490 | Un masque de formats d'archives pour ce dépôt pour lesquelles cgit générera | ||
| 23491 | un lien, restreint par le paramètre @code{snapshots} global. | ||
| 23492 | |||
| 23493 | La valeur par défaut est @samp{()}. | ||
| 23494 | |||
| 23495 | @end deftypevr | ||
| 23496 | |||
| 23497 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object source-filter | ||
| 23498 | Modifie le @code{source-filter} par défaut. | ||
| 23499 | |||
| 23500 | La valeur par défaut est @samp{""}. | ||
| 23501 | |||
| 23502 | @end deftypevr | ||
| 23503 | |||
| 23504 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string url | ||
| 23505 | URL relative utilisée pour accéder au dépôt. | ||
| 23506 | |||
| 23507 | La valeur par défaut est @samp{""}. | ||
| 23508 | |||
| 23509 | @end deftypevr | ||
| 23510 | |||
| 23511 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object about-filter | ||
| 23512 | Modifie le paramètre @code{about-filter} par défaut. | ||
| 23513 | |||
| 23514 | La valeur par défaut est @samp{""}. | ||
| 23515 | |||
| 23516 | @end deftypevr | ||
| 23517 | |||
| 23518 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string branch-sort | ||
| 23519 | Drapeau qui, s'il vaut @samp{age}, active le tri par date dans la liste des | ||
| 23520 | branches, et lorsqu'il vaut @samp{name}, le tri par nom. | ||
| 23521 | |||
| 23522 | La valeur par défaut est @samp{""}. | ||
| 23523 | |||
| 23524 | @end deftypevr | ||
| 23525 | |||
| 23526 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-list clone-url | ||
| 23527 | Un liste d'URL qui peuvent être utilisées pour cloner ce dépôt. | ||
| 23528 | |||
| 23529 | La valeur par défaut est @samp{()}. | ||
| 23530 | |||
| 23531 | @end deftypevr | ||
| 23532 | |||
| 23533 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object commit-filter | ||
| 23534 | Modifie le paramètre @code{commit-filter} par défaut. | ||
| 23535 | |||
| 23536 | La valeur par défaut est @samp{""}. | ||
| 23537 | |||
| 23538 | @end deftypevr | ||
| 23539 | |||
| 23540 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string commit-sort | ||
| 23541 | Drapeau qui, s'il vaut @samp{date}, active le tri par date strict dans le | ||
| 23542 | messages de commit, et le tri topologique strict lorsqu'il vaut @samp{topo}. | ||
| 23543 | |||
| 23544 | La valeur par défaut est @samp{""}. | ||
| 23545 | |||
| 23546 | @end deftypevr | ||
| 23547 | |||
| 23548 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string defbranch | ||
| 23549 | Le nom de la branche par défaut de ce dépôt. Si cette branche n'existe pas | ||
| 23550 | dans le dépôt, le premier nom de branche (trié) sera utilisé par défaut. | ||
| 23551 | Par défaut la branche pointée par HEAD, ou « master » s'il n'y a pas de HEAD | ||
| 23552 | convenable. | ||
| 23553 | |||
| 23554 | La valeur par défaut est @samp{""}. | ||
| 23555 | |||
| 23556 | @end deftypevr | ||
| 23557 | |||
| 23558 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string desc | ||
| 23559 | La valeur à afficher comme description du dépôt. | ||
| 23560 | |||
| 23561 | La valeur par défaut est @samp{""}. | ||
| 23562 | |||
| 23563 | @end deftypevr | ||
| 23564 | |||
| 23565 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string homepage | ||
| 23566 | La valeur à afficher comme page d'accueil du dépôt. | ||
| 23567 | |||
| 23568 | La valeur par défaut est @samp{""}. | ||
| 23569 | |||
| 23570 | @end deftypevr | ||
| 23571 | |||
| 23572 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object email-filter | ||
| 23573 | Modifie le paramètre @code{email-filter} par défaut. | ||
| 23574 | |||
| 23575 | La valeur par défaut est @samp{""}. | ||
| 23576 | |||
| 23577 | @end deftypevr | ||
| 23578 | |||
| 23579 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-commit-graph? | ||
| 23580 | Un drapeau qui peut être utilisé pour désactiver le paramètre | ||
| 23581 | @code{enable-commit-graph?} global. | ||
| 23582 | |||
| 23583 | La valeur par défaut est @samp{disabled}. | ||
| 23584 | |||
| 23585 | @end deftypevr | ||
| 23586 | |||
| 23587 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-log-filecount? | ||
| 23588 | Un drapeau qui peut être utilisé pour désactiver le paramètre | ||
| 23589 | @code{enable-log-filecount?} global. | ||
| 23590 | |||
| 23591 | La valeur par défaut est @samp{disabled}. | ||
| 23592 | |||
| 23593 | @end deftypevr | ||
| 23594 | |||
| 23595 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-log-linecount? | ||
| 23596 | Un drapeau qui peut être utilisé pour désactiver le paramètre | ||
| 23597 | @code{enable-log-linecount?} global. | ||
| 23598 | |||
| 23599 | La valeur par défaut est @samp{disabled}. | ||
| 23600 | |||
| 23601 | @end deftypevr | ||
| 23602 | |||
| 23603 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-remote-branches? | ||
| 23604 | Drapeau qui, s'il vaut @samp{#t}, fera afficher les branches distantes dans | ||
| 23605 | les vues du résumé et des références. | ||
| 23606 | |||
| 23607 | La valeur par défaut est @samp{disabled}. | ||
| 23608 | |||
| 23609 | @end deftypevr | ||
| 23610 | |||
| 23611 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-subject-links? | ||
| 23612 | Un drapeau qui peut être utilisé pour modifier le paramètre | ||
| 23613 | @code{enable-subject-links?} global. | ||
| 23614 | |||
| 23615 | La valeur par défaut est @samp{disabled}. | ||
| 23616 | |||
| 23617 | @end deftypevr | ||
| 23618 | |||
| 23619 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-html-serving? | ||
| 23620 | Un drapeau qui peut être utilisé pour modifier le paramètre | ||
| 23621 | @code{enable-html-serving?} global. | ||
| 23622 | |||
| 23623 | La valeur par défaut est @samp{disabled}. | ||
| 23624 | |||
| 23625 | @end deftypevr | ||
| 23626 | |||
| 23627 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-boolean hide? | ||
| 23628 | Drapeau qui, s'il vaut @code{#t}, cache le dépôt de l'index des dépôts. | ||
| 23629 | |||
| 23630 | La valeur par défaut est @samp{#f}. | ||
| 23631 | |||
| 23632 | @end deftypevr | ||
| 23633 | |||
| 23634 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-boolean ignore? | ||
| 23635 | Drapeau qui, s'il vaut @code{#t}, ignore le dépôt. | ||
| 23636 | |||
| 23637 | La valeur par défaut est @samp{#f}. | ||
| 23638 | |||
| 23639 | @end deftypevr | ||
| 23640 | |||
| 23641 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object logo | ||
| 23642 | URL qui spécifie la source d'une image qui sera utilisée comme logo sur les | ||
| 23643 | pages de ce dépôt. | ||
| 23644 | |||
| 23645 | La valeur par défaut est @samp{""}. | ||
| 23646 | |||
| 23647 | @end deftypevr | ||
| 23648 | |||
| 23649 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string logo-link | ||
| 23650 | URL chargée lors du clic sur l'image du logo de cgit. | ||
| 23651 | |||
| 23652 | La valeur par défaut est @samp{""}. | ||
| 23653 | |||
| 23654 | @end deftypevr | ||
| 23655 | |||
| 23656 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object owner-filter | ||
| 23657 | Modifie le paramètre @code{owner-filter} par défaut. | ||
| 23658 | |||
| 23659 | La valeur par défaut est @samp{""}. | ||
| 23660 | |||
| 23661 | @end deftypevr | ||
| 23662 | |||
| 23663 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string module-link | ||
| 23664 | Texte qui sera utilisé comme chaîne de formatage pour un lien hypertexte | ||
| 23665 | lorsqu'un sous-module est affiché dans une liste de fichiers. Les arguments | ||
| 23666 | pour la chaîne de formatage sont le chemin et le SHA1 du commit du | ||
| 23667 | sous-module. | ||
| 23668 | |||
| 23669 | La valeur par défaut est @samp{""}. | ||
| 23670 | |||
| 23671 | @end deftypevr | ||
| 23672 | |||
| 23673 | @deftypevr {paramètre de @code{repository-cgit-configuration}} module-link-path module-link-path | ||
| 23674 | Texte qui sera utilisé comme chaîne de formatage lorsqu'un sous-module avec | ||
| 23675 | un chemin spécifié sera affiché dans une liste de fichiers. | ||
| 23676 | |||
| 23677 | La valeur par défaut est @samp{()}. | ||
| 23678 | |||
| 23679 | @end deftypevr | ||
| 23680 | |||
| 23681 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string max-stats | ||
| 23682 | Modifie la période de statistique maximale par défaut. | ||
| 23683 | |||
| 23684 | La valeur par défaut est @samp{""}. | ||
| 23685 | |||
| 23686 | @end deftypevr | ||
| 23687 | |||
| 23688 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string name | ||
| 23689 | La valeur à afficher comme nom de dépôt. | ||
| 23690 | |||
| 23691 | La valeur par défaut est @samp{""}. | ||
| 23692 | |||
| 23693 | @end deftypevr | ||
| 23694 | |||
| 23695 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string owner | ||
| 23696 | Une valeur utilisée pour identifier le propriétaire du dépôt. | ||
| 23697 | |||
| 23698 | La valeur par défaut est @samp{""}. | ||
| 23699 | |||
| 23700 | @end deftypevr | ||
| 23701 | |||
| 23702 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string path | ||
| 23703 | Un chemin absolu vers le répertoire du dépôt. | ||
| 23704 | |||
| 23705 | La valeur par défaut est @samp{""}. | ||
| 23706 | |||
| 23707 | @end deftypevr | ||
| 23708 | |||
| 23709 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string readme | ||
| 23710 | Un chemin (relatif au dépôt) qui spécifie un fichier à inclure directement | ||
| 23711 | comme page « À propos » pour ce dépôt. | ||
| 23712 | |||
| 23713 | La valeur par défaut est @samp{""}. | ||
| 23714 | |||
| 23715 | @end deftypevr | ||
| 23716 | |||
| 23717 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string section | ||
| 23718 | Le nom de la section de dépôts actuelle — tous les dépôts définis après ce | ||
| 23719 | point hériterons du nom de section actuel. | ||
| 23720 | |||
| 23721 | La valeur par défaut est @samp{""}. | ||
| 23722 | |||
| 23723 | @end deftypevr | ||
| 23724 | |||
| 23725 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-list extra-options | ||
| 23726 | Options supplémentaires ajoutées à la fin du fichier cgitrc. | ||
| 23727 | |||
| 23728 | La valeur par défaut est @samp{()}. | ||
| 23729 | |||
| 23730 | @end deftypevr | ||
| 23731 | |||
| 23732 | @end deftypevr | ||
| 23733 | |||
| 23734 | @deftypevr {paramètre de @code{cgit-configuration}} list extra-options | ||
| 23735 | Options supplémentaires ajoutées à la fin du fichier cgitrc. | ||
| 23736 | |||
| 23737 | La valeur par défaut est @samp{()}. | ||
| 23738 | |||
| 23739 | @end deftypevr | ||
| 23740 | |||
| 23741 | |||
| 23742 | @c %end of fragment | ||
| 23743 | |||
| 23744 | Cependant, vous pourriez vouloir simplement récupérer un @code{cgitrc} et | ||
| 23745 | l'utiliser. Dans ce cas, vous pouvez passer un | ||
| 23746 | @code{opaque-cgit-configuration} comme enregistrement à | ||
| 23747 | @code{cgit-service-type}. Comme son nom l'indique, une configuration opaque | ||
| 23748 | n'a pas de capacité de réflexion facile. | ||
| 23749 | |||
| 23750 | Les champs de @code{opaque-cgit-configuration} disponibles sont : | ||
| 23751 | |||
| 23752 | @deftypevr {paramètre de @code{opaque-cgit-configuration}} package cgit | ||
| 23753 | Le paquet cgit. | ||
| 23754 | @end deftypevr | ||
| 23755 | |||
| 23756 | @deftypevr {paramètre de @code{opaque-cgit-configuration}} string string | ||
| 23757 | Le contenu de @code{cgitrc}, en tant que chaîne de caractère. | ||
| 23758 | @end deftypevr | ||
| 23759 | |||
| 23760 | Par exemple, si votre @code{cgitrc} est juste la chaîne vide, vous pouvez | ||
| 23761 | instancier un service cgit ainsi : | ||
| 23762 | |||
| 23763 | @example | ||
| 23764 | (service cgit-service-type | ||
| 23765 | (opaque-cgit-configuration | ||
| 23766 | (cgitrc ""))) | ||
| 23767 | @end example | ||
| 23768 | |||
| 23769 | @subsubheading Service Gitolite | ||
| 23770 | |||
| 23771 | @cindex service Gitolite | ||
| 23772 | @cindex Git, hébergement | ||
| 23773 | @uref{http://gitolite.com/gitolite/, Gitolite} est un outil pour héberger | ||
| 23774 | des dépôts Git sur un serveur central. | ||
| 23775 | |||
| 23776 | Gitolite peut gérer plusieurs dépôts et utilisateurs et supporte une | ||
| 23777 | configuration flexible des permissions pour les utilisateurs sur ces dépôts. | ||
| 23778 | |||
| 23779 | L'exemple suivant configure Gitolite en utilisant l'utilisateur @code{git} | ||
| 23780 | par défaut et la clef SSH fournie. | ||
| 23781 | |||
| 23782 | @example | ||
| 23783 | (service gitolite-service-type | ||
| 23784 | (gitolite-configuration | ||
| 23785 | (admin-pubkey (plain-file | ||
| 23786 | "yourname.pub" | ||
| 23787 | "ssh-rsa AAAA... guix@@example.com")))) | ||
| 23788 | @end example | ||
| 23789 | |||
| 23790 | Gitolite est configuré via un dépôt d'administration spécial que vous pouvez | ||
| 23791 | cloner. Par exemple, si vous hébergez Gitolite sur @code{example.com}, vous | ||
| 23792 | pouvez lancer la commande suivante pour cloner le dépôt d'administration. | ||
| 23793 | |||
| 23794 | @example | ||
| 23795 | git clone git@@example.com:gitolite-admin | ||
| 23796 | @end example | ||
| 23797 | |||
| 23798 | Lorsque le service Gitolite est activé, la clef @code{admin-pubkey} fournie | ||
| 23799 | sera insérée dans le répertoire @file{keydir} du dépôt gitolite-admin. Si | ||
| 23800 | cela change le dépôt, un commit sera effectué avec le message « gitolite | ||
| 23801 | setup by GNU Guix ». | ||
| 23802 | |||
| 23803 | @deftp {Type de données} gitolite-configuration | ||
| 23804 | Type de données représentant la configuration de | ||
| 23805 | @code{gitolite-service-type}. | ||
| 23806 | |||
| 23807 | @table @asis | ||
| 23808 | @item @code{package} (par défaut : @var{gitolite}) | ||
| 23809 | Le paquet Gitolite à utiliser. | ||
| 23810 | |||
| 23811 | @item @code{user} (par défaut : @var{git}) | ||
| 23812 | Utilisateur pour utiliser Gitolite. Cela sera l'utilisateur à utiliser pour | ||
| 23813 | accéder à Gitolite par SSH. | ||
| 23814 | |||
| 23815 | @item @code{group} (par défaut : @var{git}) | ||
| 23816 | Groupe à utiliser pour Gitolite. | ||
| 23817 | |||
| 23818 | @item @code{home-directory} (par défaut : @var{"/var/lib/gitolite"}) | ||
| 23819 | Répertoire dans lequel stocker la configuration et les dépôts de Gitolite. | ||
| 23820 | |||
| 23821 | @item @code{rc-file} (par défaut : @var{(gitolite-rc-file)}) | ||
| 23822 | Un objet « simili-fichier » (@pxref{G-Expressions, file-like objects}) | ||
| 23823 | représentant la configuration de Gitolite. | ||
| 23824 | |||
| 23825 | @item @code{admin-pubkey} (par défaut : @var{#f}) | ||
| 23826 | Un objet « simili-fichier » (@pxref{G-Expressions, file-like objects}) | ||
| 23827 | utilisé pour paramétrer Gitolite. Il sera inséré dans le répertoire | ||
| 23828 | @file{keydir} dans le dépôt gitolite-admin. | ||
| 23829 | |||
| 23830 | Pour spécifier la clef SSH comme chaîne de caractère, utilisez la fonction | ||
| 23831 | @code{plain-file}. | ||
| 23832 | |||
| 23833 | @example | ||
| 23834 | (plain-file "yourname.pub" "ssh-rsa AAAA... guix@@example.com") | ||
| 23835 | @end example | ||
| 23836 | |||
| 23837 | @end table | ||
| 23838 | @end deftp | ||
| 23839 | |||
| 23840 | @deftp {Type de données} gitolite-rc-file | ||
| 23841 | Type de données représentant le fichier RC de Gitolite. | ||
| 23842 | |||
| 23843 | @table @asis | ||
| 23844 | @item @code{umask} (par défaut : @code{#o0077}) | ||
| 23845 | Cela contrôle les permissions que Gitolite propose sur les dépôts et leur | ||
| 23846 | contenu. | ||
| 23847 | |||
| 23848 | Une valeur comme @code{#o0027} donnera accès en lecture au groupe utilisé | ||
| 23849 | par Gitolite (par défaut : @code{git}). Cel aest nécessaire lorsque vous | ||
| 23850 | utilise Gitolite avec un logiciel comme cgit ou gitweb. | ||
| 23851 | |||
| 23852 | @item @code{git-config-keys} (par défaut : @code{""}) | ||
| 23853 | Gitolite vous permet de modifier les configurations git avec le mot-clef « | ||
| 23854 | config ». Ce paramètre vous permet de contrôler les clefs de configuration | ||
| 23855 | acceptables. | ||
| 23856 | |||
| 23857 | @item @code{roles} (par défaut : @code{'(("READERS" . 1) ("WRITERS" . ))}) | ||
| 23858 | Indique les noms des rôles qui peuvent être utilisés par les utilisateurs | ||
| 23859 | avec la commande perms. | ||
| 23860 | |||
| 23861 | @item @code{enable} (par défaut : @code{'("help" "desc" "info" "perms" "writable" "ssh-authkeys" "git-config" "daemon" "gitweb")}) | ||
| 23862 | Ce paramètre contrôle les commandes et les fonctionnalités à activer dans | ||
| 23863 | Gitolite. | ||
| 23864 | |||
| 23865 | @end table | ||
| 23866 | @end deftp | ||
| 23867 | |||
| 23868 | |||
| 23869 | @node Services de jeu | ||
| 23870 | @subsection Services de jeu | ||
| 23871 | |||
| 23872 | @subsubheading Le service de la Bataille pour Wesnoth | ||
| 23873 | @cindex wesnothd | ||
| 23874 | @uref{https://wesnoth.org, La Bataille pour Wesnoth} est un jeu de stratégie | ||
| 23875 | en tour par tour dans un univers fantastique, avec plusieurs campagnes solo | ||
| 23876 | et des parties multijoueurs (en réseau et en local). | ||
| 23877 | |||
| 23878 | @defvar {Variable Scheme} wesnothd-service-type | ||
| 23879 | Type de service pour le service wesnothd. Sa valeur doit être un objet | ||
| 23880 | @code{wesnothd-configuration}. Pour lancer wesnothd avec la configuration | ||
| 23881 | par défaut, instanciez-le ainsi : | ||
| 23882 | |||
| 23883 | @example | ||
| 23884 | (service wesnothd-service-type) | ||
| 23885 | @end example | ||
| 23886 | @end defvar | ||
| 23887 | |||
| 23888 | @deftp {Type de données} wesnothd-configuration | ||
| 23889 | Type de donées représentant la configuration de @command{wesnothd}. | ||
| 23890 | |||
| 23891 | @table @asis | ||
| 23892 | @item @code{package} (par défaut : @code{wesnoth-server}) | ||
| 23893 | Le paquet de serveur de wesnoth à utiliser. | ||
| 23894 | |||
| 23895 | @item @code{port} (par défaut : @code{15000}) | ||
| 23896 | Le pour sur lequel lier le serveur. | ||
| 23897 | @end table | ||
| 23898 | @end deftp | ||
| 23899 | |||
| 23900 | @node Services divers | ||
| 23901 | @subsection Services divers | ||
| 23902 | |||
| 23903 | @cindex empreinte digitale | ||
| 23904 | @subsubheading Service d'empreintes digitales | ||
| 23905 | |||
| 23906 | The @code{(gnu services authentication)} module provides a DBus service to | ||
| 23907 | read and identify fingerprints via a fingerprint sensor. | ||
| 23908 | |||
| 23909 | @defvr {Variable Scheme} fprintd-service-type | ||
| 23910 | Le type de service pour @command{fprintd}, qui fournit des capacités de | ||
| 23911 | lecture d'empreinte. | ||
| 23912 | |||
| 23913 | @example | ||
| 23914 | (service fprintd-service-type) | ||
| 23915 | @end example | ||
| 23916 | @end defvr | ||
| 23917 | |||
| 23918 | @cindex sysctl | ||
| 23919 | @subsubheading Service de contrôle du système | ||
| 23920 | |||
| 23921 | Le module @code{(gnu services sysctl)} fournit un service pour configurer | ||
| 23922 | les paramètres du noyau au démarrage. | ||
| 23923 | |||
| 23924 | @defvr {Variable Scheme} sysctl-service-type | ||
| 23925 | Le type de service pour @command{sysctl}, qui modifie les paramètres du | ||
| 23926 | noyau dans @file{/proc/sys/}. Pour activer le transfert d'IPv4, vous pouvez | ||
| 23927 | l'instancier ainsi : | ||
| 23928 | |||
| 23929 | @example | ||
| 23930 | (service sysctl-service-type | ||
| 23931 | (sysctl-configuration | ||
| 23932 | (settings '(("net.ipv4.ip_forward" . "1"))))) | ||
| 23933 | @end example | ||
| 23934 | @end defvr | ||
| 23935 | |||
| 23936 | @deftp {Type de données} sysctl-configuration | ||
| 23937 | Le type de données représentant la configuration de @command{sysctl}. | ||
| 23938 | |||
| 23939 | @table @asis | ||
| 23940 | @item @code{sysctl} (par défaut : @code{(file-append procps "/sbin/sysctl"}) | ||
| 23941 | L'exécutable @command{sysctl} à utiliser. | ||
| 23942 | |||
| 23943 | @item @code{settings} (par défaut : @code{'()}) | ||
| 23944 | Une liste d'association spécifiant les paramètres du noyau et leur valeur. | ||
| 23945 | @end table | ||
| 23946 | @end deftp | ||
| 23947 | |||
| 23948 | @cindex pcscd | ||
| 23949 | @subsubheading Service du démon PC/SC Smart Card | ||
| 23950 | |||
| 23951 | Le module @code{(gnu services security-token)} fournit le service suivant | ||
| 23952 | qui lance @command{pcscd}, le démon PC/SC Smart Card. @command{pcscd} est | ||
| 23953 | le démon pour pcsc-lite et MuscleCard. C'est un gestionnaire de ressource | ||
| 23954 | qui coordonne les communications avec les lecteurs de smart cards, les smart | ||
| 23955 | cards et les jetons cryptographiques connectés au système. | ||
| 23956 | |||
| 23957 | @defvr {Variable Scheme} pcscd-service-type | ||
| 23958 | Le type de service pour le service @command{pcscd}. Sa valeur doit être un | ||
| 23959 | objet @code{pcscd-configuration}. Pour lancer pcscd dans sa configuration | ||
| 23960 | par défaut, instantiez-le avec : | ||
| 23961 | |||
| 23962 | @example | ||
| 23963 | (service pcscd-service-type) | ||
| 23964 | @end example | ||
| 23965 | @end defvr | ||
| 23966 | |||
| 23967 | @deftp {Type de données} pcscd-configuration | ||
| 23968 | Type de données représentant la configuration de @command{pcscd}. | ||
| 23969 | |||
| 23970 | @table @asis | ||
| 23971 | @item @code{pcsc-lite} (par défaut : @code{pcsc-lite}) | ||
| 23972 | Le paquet pcsc-lite qui fournit pcscd. | ||
| 23973 | @item @code{usb-drivers} (par défaut : @code{(list ccid)}) | ||
| 23974 | Liste des paquets qui fournissent des pilotes USB à pcscd. Les pilotes | ||
| 23975 | doivent être dans @file{pcsc/drivers} dans le répertoire du dépôt du paquet. | ||
| 23976 | @end table | ||
| 23977 | @end deftp | ||
| 23978 | |||
| 23979 | @cindex lirc | ||
| 23980 | @subsubheading Service Lirc | ||
| 23981 | |||
| 23982 | Le module @code{(gnu services lirc)} fournit le service suivant. | ||
| 23983 | |||
| 23984 | @deffn {Procédure Scheme} lirc-service [#:lirc lirc] @ | ||
| 23985 | [#:device #f] [#:driver #f] [#:config-file #f] @ | ||
| 23986 | [#:extra-options '()] | ||
| 23987 | Renvoie un service qui lance @url{http://www.lirc.org,LIRC}, un démon qui | ||
| 23988 | décode les signaux infrarouges des télécommandes. | ||
| 23989 | |||
| 23990 | Éventuellement, @var{device}, @var{driver} et @var{config-file} (le nom du | ||
| 23991 | fichier de configuration) peuvent être spécifiés. Voir le manuel de | ||
| 23992 | @command{lircd} pour plus de détails. | ||
| 23993 | |||
| 23994 | Enfin, @var{extra-options} est une liste d'options de la ligne de commande | ||
| 23995 | supplémentaires à passer à @command{lircd}. | ||
| 23996 | @end deffn | ||
| 23997 | |||
| 23998 | @cindex spice | ||
| 23999 | @subsubheading Service Spice | ||
| 24000 | |||
| 24001 | Le module @code{(gnu services spice)} fournit le service suivant. | ||
| 24002 | |||
| 24003 | @deffn {Procédure Scheme} spice-vdagent-service [#:spice-vdagent] | ||
| 24004 | Renvoie un service qui lance @url{http://www.spice-space.org,VDAGENT}, un | ||
| 24005 | démon qui permet le partage du presse-papier avec une vm et de configurer la | ||
| 24006 | résolution d'affichage du client lorsque la fenêtre de la console graphique | ||
| 24007 | est redimensionnée. | ||
| 24008 | @end deffn | ||
| 24009 | |||
| 24010 | @cindex inputattach | ||
| 24011 | @subsubheading Service inputattach | ||
| 24012 | |||
| 24013 | @cindex entrée tablette, pour Xorg | ||
| 24014 | @cindex écran tactile, pour Xorg | ||
| 24015 | Le service @uref{https://linuxwacom.github.io/, inputattach} vous permet | ||
| 24016 | d'utiliser des périphériques d'entrée comme les tablettes Wacom, les écrans | ||
| 24017 | tactiles ou les joysticks avec le serveur d'affichage Xorg. | ||
| 24018 | |||
| 24019 | @deffn {Variable Scheme} inputattach-service-type | ||
| 24020 | Type d'un service qui lance @command{inputattach} sur un appareil et envie | ||
| 24021 | les événements qu'il reçoit. | ||
| 24022 | @end deffn | ||
| 24023 | |||
| 24024 | @deftp {Type de données} inputattach-configuration | ||
| 24025 | @table @asis | ||
| 24026 | @item @code{device-type} (par défaut : @code{"wacom"}) | ||
| 24027 | Le type du périphérique à gérer. Lancez @command{inputattach --help}, du | ||
| 24028 | paquet @code{inputattach}, pour voir la liste des types de périphériques | ||
| 24029 | supportés. | ||
| 24030 | |||
| 24031 | @item @code{device} (par défaut : @code{"/dev/ttyS0"}) | ||
| 24032 | Le fichier de périphérique pour s'y connecter. | ||
| 24033 | |||
| 24034 | @item @code{log-file} (par défaut : @code{#f}) | ||
| 24035 | Si la valeur est vraie, cela doit être le nom d'un fichier où enregistrer | ||
| 24036 | les messages. | ||
| 24037 | @end table | ||
| 24038 | @end deftp | ||
| 24039 | |||
| 24040 | @subsection Services de dictionnaires | ||
| 24041 | @cindex dictionnaire | ||
| 24042 | Le module @code{(gnu services dict)} fournit le service suivant : | ||
| 24043 | |||
| 24044 | @deffn {Procédure Scheme} dicod-service [#:config (dicod-configuration)] | ||
| 24045 | Renvoie un service qui lance le démon @command{dicod}, une implémentation du | ||
| 24046 | serveur DICT (@pxref{Dicod,,, dico, GNU Dico Manual}). | ||
| 24047 | |||
| 24048 | L'argument @var{config} facultatif spécifie la configuration pour | ||
| 24049 | @command{dicod}, qui devrait être un objet @code{<dicod-configuration>}, par | ||
| 24050 | défaut il sert le dictionnaire international collaboratif de GNU pour | ||
| 24051 | l'anglais. | ||
| 24052 | |||
| 24053 | Vous pouvez ajouter @command{open localhost} à votre fichier @file{~/.dico} | ||
| 24054 | pour faire de @code{localhost} le serveur par défaut du client | ||
| 24055 | @command{dico} (@pxref{Initialization File,,, dico, GNU Dico Manual}). | ||
| 24056 | @end deffn | ||
| 24057 | |||
| 24058 | @deftp {Type de données} dicod-configuration | ||
| 24059 | Type de données représentant la configuration de dicod. | ||
| 24060 | |||
| 24061 | @table @asis | ||
| 24062 | @item @code{dico} (par défaut : @var{dico}) | ||
| 24063 | Objet de paquet du serveur de dictionnaire GNU Dico. | ||
| 24064 | |||
| 24065 | @item @code{interfaces} (par défaut : @var{'("localhost")}) | ||
| 24066 | C'est la liste des adresses IP et des ports et éventuellement des noms de | ||
| 24067 | fichiers de socket sur lesquels écouter (@pxref{Server Settings, | ||
| 24068 | @code{listen} directive,, dico, GNU Dico Manual}). | ||
| 24069 | |||
| 24070 | @item @code{handlers} (par défaut : @var{'()}) | ||
| 24071 | Liste des objets @code{<dicod-handler>} qui définissent des gestionnaires | ||
| 24072 | (des instances de modules). | ||
| 24073 | |||
| 24074 | @item @code{databases} (par défaut : @var{(list %dicod-database:gcide)}) | ||
| 24075 | Liste d'objets @code{<dicod-database>} qui définissent des dictionnaires à | ||
| 24076 | servir. | ||
| 24077 | @end table | ||
| 24078 | @end deftp | ||
| 24079 | |||
| 24080 | @deftp {Type de données} dicod-handler | ||
| 24081 | Type de données représentant un gestionnaire de dictionnaire (instance de | ||
| 24082 | module). | ||
| 24083 | |||
| 24084 | @table @asis | ||
| 24085 | @item @code{name} | ||
| 24086 | Nom du gestionnaire (instance de module). | ||
| 24087 | |||
| 24088 | @item @code{module} (par défaut : @var{#f}) | ||
| 24089 | Nom du module dicod du gestionnaire (instance). Si la valeur est @code{#f}, | ||
| 24090 | le module a le même nom que le gestionnaire. (@pxref{Modules,,, dico, GNU | ||
| 24091 | Dico Manual}). | ||
| 24092 | |||
| 24093 | @item @code{options} | ||
| 24094 | Liste de chaînes ou de gexps représentant les arguments pour le gestionnaire | ||
| 24095 | de module | ||
| 24096 | @end table | ||
| 24097 | @end deftp | ||
| 24098 | |||
| 24099 | @deftp {Type de données} dicod-database | ||
| 24100 | Type de données représentant une base de données de dictionnaire. | ||
| 24101 | |||
| 24102 | @table @asis | ||
| 24103 | @item @code{name} | ||
| 24104 | Nom de la base de données, qui sera utilisée dans les commande DICT. | ||
| 24105 | |||
| 24106 | @item @code{handler} | ||
| 24107 | Nom du gestionnaire dicod (instance de module) utilisé par cette base de | ||
| 24108 | données (@pxref{Handlers,,, dico, GNU Dico Manual}). | ||
| 24109 | |||
| 24110 | @item @code{complex?} (par défaut : @var{#f}) | ||
| 24111 | Indique si la configuration est pour une base de données complexe. La | ||
| 24112 | configuration complexe a besoin d'un objet @code{<dicod-handler>} | ||
| 24113 | correspondant, sinon inutile. | ||
| 24114 | |||
| 24115 | @item @code{options} | ||
| 24116 | Liste de chaînes ou de gexps représentant les arguments pour la base de | ||
| 24117 | données (@pxref{Databases,,, dico, GNU Dico Manual}). | ||
| 24118 | @end table | ||
| 24119 | @end deftp | ||
| 24120 | |||
| 24121 | @defvr {Variable Scheme} %dicod-database:gcide | ||
| 24122 | Un objet @code{<dicod-database>} servant le dictionnaire international | ||
| 24123 | collaboratif en anglais via le paquet @code{gcide}. | ||
| 24124 | @end defvr | ||
| 24125 | |||
| 24126 | Voici un exemple de configuration de @code{dicod-service}. | ||
| 24127 | |||
| 24128 | @example | ||
| 24129 | (dicod-service #:config | ||
| 24130 | (dicod-configuration | ||
| 24131 | (handlers (list (dicod-handler | ||
| 24132 | (name "wordnet") | ||
| 24133 | (module "dictorg") | ||
| 24134 | (options | ||
| 24135 | (list #~(string-append "dbdir=" #$wordnet)))))) | ||
| 24136 | (databases (list (dicod-database | ||
| 24137 | (name "wordnet") | ||
| 24138 | (complex? #t) | ||
| 24139 | (handler "wordnet") | ||
| 24140 | (options '("database=wn"))) | ||
| 24141 | %dicod-database:gcide)))) | ||
| 24142 | @end example | ||
| 24143 | |||
| 24144 | @cindex Docker | ||
| 24145 | @subsubheading Service Docker | ||
| 24146 | |||
| 24147 | Le module @code{(gnu services docker)} fournit le service suivant. | ||
| 24148 | |||
| 24149 | @defvr {Variable Scheme} docker-service-type | ||
| 24150 | |||
| 24151 | C'est le type du service qui lance @url{http://www.docker.com,Docker}, un | ||
| 24152 | démon qui peut exécuter des lots applicatifs (aussi appelés « conteneurs ») | ||
| 24153 | dans des environnements isolés. | ||
| 24154 | |||
| 24155 | @end defvr | ||
| 24156 | |||
| 24157 | @deftp {Type de données} docker-configuration | ||
| 24158 | Le type de données qui représente la configuration de Docker et Containerd. | ||
| 24159 | |||
| 24160 | @table @asis | ||
| 24161 | |||
| 24162 | @item @code{package} (par défaut : @code{docker}) | ||
| 24163 | Le paquet Docker à utiliser. | ||
| 24164 | |||
| 24165 | @item @code{containerd} (par défaut : @var{containerd}) | ||
| 24166 | Le paquet Containerd à utiliser. | ||
| 24167 | |||
| 24168 | @end table | ||
| 24169 | @end deftp | ||
| 24170 | |||
| 24171 | @node Programmes setuid | ||
| 24172 | @section Programmes setuid | ||
| 24173 | |||
| 24174 | @cindex programmes setuid | ||
| 24175 | Certains programmes doivent être lancés avec les privilèges « root » même | ||
| 24176 | lorsqu'ils sont lancés par un utilisateur non privilégié. Un exemple | ||
| 24177 | notoire est le programme @command{passwd}, que les utilisateurs peuvent | ||
| 24178 | appeler pour modifier leur mot de passe et qui doit accéder à | ||
| 24179 | @file{/etc/passwd} et @file{/etc/shadow} — ce qui est normalement réservé à | ||
| 24180 | root, pour des raisons de sécurité évidentes. Pour contourner cela, ces | ||
| 24181 | exécutables sont @dfn{setuid-root}, ce qui signifie qu'ils seront toujours | ||
| 24182 | lancés avec les privilèges root (@pxref{How Change Persona,,, libc, The GNU | ||
| 24183 | C Library Reference Manual}, pour plus d'informations sur le mécanisme | ||
| 24184 | setuid). | ||
| 24185 | |||
| 24186 | Le dépôt lui-même ne @emph{peut pas} contenir de programmes setuid ; cela | ||
| 24187 | serait un problème de sécurité puisque n'importe quel utilisateur du système | ||
| 24188 | peut écrire une dérivation qui rempli le dépôt (@pxref{Le dépôt}). Donc, | ||
| 24189 | un mécanisme différent est utilisé : au lieu de changer le bit setuid | ||
| 24190 | directement sur les fichiers qui sont dans le dépôt, nous laissons à | ||
| 24191 | l'administrateur système le soit de @emph{déclarer} les programmes qui | ||
| 24192 | devraient être setuid root. | ||
| 24193 | |||
| 24194 | Le champ @code{setuid-programs} d'une déclaration @code{operating-system} | ||
| 24195 | contient une liste de G-expressions qui dénotent les noms des programmes à | ||
| 24196 | rendre setuid-root (@pxref{Utiliser le système de configuration}). Par exemple, | ||
| 24197 | le programme @command{passwd}, qui fait partie du paquet Shadow, peut être | ||
| 24198 | désigné par cette G-expression (@pxref{G-Expressions}) : | ||
| 24199 | |||
| 24200 | @example | ||
| 24201 | #~(string-append #$shadow "/bin/passwd") | ||
| 24202 | @end example | ||
| 24203 | |||
| 24204 | Un ensemble de programmes par défaut est défini par la variable | ||
| 24205 | @code{%setuid-programs} du module @code{(gnu system)}. | ||
| 24206 | |||
| 24207 | @defvr {Variable Scheme} %setuid-programs | ||
| 24208 | Une liste de G-expressions qui dénotent les programmes communément | ||
| 24209 | setuid-root. | ||
| 24210 | |||
| 24211 | La liste inclus des commandes comme @command{passwd}, @command{ping}, | ||
| 24212 | @command{su} et @command{sudo}. | ||
| 24213 | @end defvr | ||
| 24214 | |||
| 24215 | Sous le capot, les programmes setuid sont créés dans le répertoire | ||
| 24216 | @file{/run/setuid-programs} au moment de l'activation du système. Les | ||
| 24217 | fichiers dans ce répertoire se réfèrent aux « vrais » binaires, qui sont | ||
| 24218 | dans le dépot. | ||
| 24219 | |||
| 24220 | @node Certificats X.509 | ||
| 24221 | @section Certificats X.509 | ||
| 24222 | |||
| 24223 | @cindex HTTPS, certificats | ||
| 24224 | @cindex certificats X.509 | ||
| 24225 | @cindex TLS | ||
| 24226 | Les serveurs web disponibles par HTTPS (c'est-à-dire HTTP sur le mécanisme | ||
| 24227 | de la couche de transport sécurisée, TLS) envoient aux clients un | ||
| 24228 | @dfn{certificat X.509} que les clients peuvent utiliser pour | ||
| 24229 | @emph{authentifier} le serveur. Pour cela, les clients vérifient que le | ||
| 24230 | certificat du serveur est signé par une @dfn{autorité de certification} (AC | ||
| 24231 | ou CA). Mais pour vérifier la signature de la CA, les clients doivent | ||
| 24232 | d'abord avoir récupéré le certificat de la CA. | ||
| 24233 | |||
| 24234 | Les navigateurs web comme GNU@tie{}IceCat incluent leur propre liste de | ||
| 24235 | certificats, pour qu'ils puissent vérifier les signatures des CA | ||
| 24236 | directement. | ||
| 24237 | |||
| 24238 | Cependant, la plupart des autres programmes qui peuvent parler HTTPS — | ||
| 24239 | @command{wget}, @command{git}, @command{w3m}, etc — doivent savoir où | ||
| 24240 | trouver les certificats des CA. | ||
| 24241 | |||
| 24242 | @cindex @code{nss-certs} | ||
| 24243 | Dans Guix, cela se fait en ajoutant un paquet qui fournit les certificats | ||
| 24244 | dans le champ @code{packages} de la déclaration @code{operating-system} | ||
| 24245 | (@pxref{Référence de système d'exploitation}). Guix inclut l'un de ces paquets, | ||
| 24246 | @code{nss-certs}, qui est un ensemble de certificats de CA fourni par les | ||
| 24247 | services de sécurité réseau de Mozilla (nss). | ||
| 24248 | |||
| 24249 | Remarquez qu'il ne fait @emph{pas} partie de @var{%base-packages}, donc vous | ||
| 24250 | devez explicitement l'ajouter. Le répertoire @file{/etc/ssl/certs}, là où | ||
| 24251 | la plupart des applications et bibliothèques vont rechercher les certificats | ||
| 24252 | par défaut, pointe vers les certificats installés globalement. | ||
| 24253 | |||
| 24254 | Les utilisateurs non privilégiés, dont les utilisateurs de Guix sur une | ||
| 24255 | distro externe, peuvent aussi installer leur propre paquet de certificats | ||
| 24256 | dans leur profil. Un certain nombre de variables d'environnement doivent | ||
| 24257 | être définies pour que les applications et les bibliothèques puissent les | ||
| 24258 | trouver. En particulier, la bibliothèque OpenSSL honore les variables | ||
| 24259 | @code{SSL_CERT_DIR} et @code{SSL_CERT_FILE}. Certaines applications | ||
| 24260 | ajoutent leurs propres variables, par exemple le système de contrôle de | ||
| 24261 | version Git honore le lot de certificats pointé par la variable | ||
| 24262 | d'environnement @code{GIT_SSL_CAINFO}. Ainsi, vous lanceriez quelque chose | ||
| 24263 | comme ceci : | ||
| 24264 | |||
| 24265 | @example | ||
| 24266 | $ guix package -i nss-certs | ||
| 24267 | $ export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs" | ||
| 24268 | $ export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt" | ||
| 24269 | $ export GIT_SSL_CAINFO="$SSL_CERT_FILE" | ||
| 24270 | @end example | ||
| 24271 | |||
| 24272 | Un autre exemple serait R, qui requière que la variable d'environnement | ||
| 24273 | @code{CURL_CA_BUNDLE} pointe sur le lot de certificats, donc vous lanceriez | ||
| 24274 | quelque chose comme ceci : | ||
| 24275 | |||
| 24276 | @example | ||
| 24277 | $ guix package -i nss-certs | ||
| 24278 | $ export CURL_CA_BUNDLE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt" | ||
| 24279 | @end example | ||
| 24280 | |||
| 24281 | Pour d'autres applications vous pourriez avoir besoin de chercher la | ||
| 24282 | variable d'environnement requise dans leur documentation. | ||
| 24283 | |||
| 24284 | |||
| 24285 | @node Name Service Switch | ||
| 24286 | @section Name Service Switch | ||
| 24287 | |||
| 24288 | @cindex name service switch | ||
| 24289 | @cindex NSS | ||
| 24290 | Le module @code{(gnu system nss)} fournit des liaisons pour le fichier de | ||
| 24291 | configuration du @dfn{name service switch} ou @dfn{NSS} de la libc | ||
| 24292 | (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference | ||
| 24293 | Manual}). En résumé, NSS est un mécanisme qui permet à la libc d'être | ||
| 24294 | étendue avec de nouvelles méthodes de résolution de « noms » dans les bases | ||
| 24295 | de données du système, comme les noms d'hôtes, les noms des services, les | ||
| 24296 | comptes utilisateurs et bien plus (@pxref{Name Service Switch, System | ||
| 24297 | Databases and Name Service Switch,, libc, The GNU C Library Reference | ||
| 24298 | Manual}). | ||
| 24299 | |||
| 24300 | La configuration de NSS spécifie, pour chaque base de données du système, | ||
| 24301 | quelle méthode de résolution utiliser, et comment les diverses méthodes sont | ||
| 24302 | enchaînées — par exemple, sous certaines circonstances, NSS devrait essayer | ||
| 24303 | la méthode suivante de la liste. La configuration de NSS est donnée dans le | ||
| 24304 | champ @code{name-service-switch} de la déclaration @code{operating-system} | ||
| 24305 | (@pxref{Référence de système d'exploitation, @code{name-service-switch}}). | ||
| 24306 | |||
| 24307 | @cindex nss-mdns | ||
| 24308 | @cindex .local, résolution de nom d'hôte | ||
| 24309 | Par exemple, la déclation ci-dessous configure NSS pour utiliser le | ||
| 24310 | @uref{http://0pointer.de/lennart/projects/nss-mdns/, moteur | ||
| 24311 | @code{nss-mdns}}, qui supporte la résolution de nom d'hôte sur le DNS | ||
| 24312 | multicast (mDNS) pour les noms d'hôtes terminant par @code{.local} : | ||
| 24313 | |||
| 24314 | @example | ||
| 24315 | (name-service-switch | ||
| 24316 | (hosts (list %files ;first, check /etc/hosts | ||
| 24317 | |||
| 24318 | ;; Si ce qui précède n'a pas fonctionné, essayer | ||
| 24319 | ;; avec « mdns_minimal ». | ||
| 24320 | (name-service | ||
| 24321 | (name "mdns_minimal") | ||
| 24322 | |||
| 24323 | ;; « mdns_minimal » fait autorité pour | ||
| 24324 | ;; « .local ». Lorsqu'il renvoie « pas trouvé », | ||
| 24325 | ;; inutile d'essayer la méthode suivante. | ||
| 24326 | (reaction (lookup-specification | ||
| 24327 | (not-found => return)))) | ||
| 24328 | |||
| 24329 | ;; Puis revenir sur DNS. | ||
| 24330 | (name-service | ||
| 24331 | (name "dns")) | ||
| 24332 | |||
| 24333 | ;; Enfin, essayer avec « mdns complet ». | ||
| 24334 | (name-service | ||
| 24335 | (name "mdns"))))) | ||
| 24336 | @end example | ||
| 24337 | |||
| 24338 | Ne vous inquiétez pas : la variable @code{%mdns-host-lookup-nss} (voir plus | ||
| 24339 | bas) contient cette configuration, donc vous n'avez pas besoin de tout taper | ||
| 24340 | si vous voulez simplement que la résolution de nom en @code{.local} | ||
| 24341 | fonctionne. | ||
| 24342 | |||
| 24343 | Remarquez que dans ce cas, en plus de mettre en place le | ||
| 24344 | @code{name-service-switch} de la déclaration @code{operating-system}, vous | ||
| 24345 | devez aussi utiliser @code{avahi-service-type} (@pxref{Services réseau, | ||
| 24346 | @code{avahi-service}}), ou @var{%desktop-services} qui l'inclut | ||
| 24347 | (@pxref{Services de bureaux}). Cela rend @code{nss-mdns} accessible au démon | ||
| 24348 | de cache du service de nom (@pxref{Services de base, @code{nscd-service}}). | ||
| 24349 | |||
| 24350 | Pour votre confort, les variables suivantes contiennent des configurations | ||
| 24351 | NSS typiques. | ||
| 24352 | |||
| 24353 | @defvr {Variable Scheme} %default-nss | ||
| 24354 | C'est la configuration NSS par défaut, un objet @code{name-service-switch}. | ||
| 24355 | @end defvr | ||
| 24356 | |||
| 24357 | @defvr {Variable Scheme} %mdns-host-lookup-nss | ||
| 24358 | C'est la configuration NSS avec le support de la résolution de noms sur DNS | ||
| 24359 | multicast (mDNS) pour les noms d'hôtes en @code{.local}. | ||
| 24360 | @end defvr | ||
| 24361 | |||
| 24362 | La référence pour la configuration de NSS est donnée ci-dessous. C'est une | ||
| 24363 | correspondance directe avec le format de fichier de la bibliothèque C, donc | ||
| 24364 | référez-vous au manuel de la bibliothèque C pour plus d'informations | ||
| 24365 | (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference | ||
| 24366 | Manual}). Comparé au format de fichier de configuration de NSS, cette | ||
| 24367 | configuration a l'avantage non seulement d'ajouter ces bonnes vieilles | ||
| 24368 | parenthèses, mais aussi des vérifications statiques ; vous saurez s'il y a | ||
| 24369 | des erreurs de syntaxe et des coquilles dès que vous lancerez @command{guix | ||
| 24370 | system}. | ||
| 24371 | |||
| 24372 | @deftp {Type de données} name-service-switch | ||
| 24373 | |||
| 24374 | C'est le type de données représentant la configuration de NSS. Chaque champ | ||
| 24375 | ci-dessous représente l'un des système de bases de données supportés. | ||
| 24376 | |||
| 24377 | @table @code | ||
| 24378 | @item aliases | ||
| 24379 | @itemx ethers | ||
| 24380 | @itemx group | ||
| 24381 | @itemx gshadow | ||
| 24382 | @itemx hosts | ||
| 24383 | @itemx initgroups | ||
| 24384 | @itemx netgroup | ||
| 24385 | @itemx networks | ||
| 24386 | @itemx password | ||
| 24387 | @itemx public-key | ||
| 24388 | @itemx rpc | ||
| 24389 | @itemx services | ||
| 24390 | @itemx shadow | ||
| 24391 | Les bases de données du système gérées par NSS. Chaque champ doit être une | ||
| 24392 | liste d'objets @code{<name-service>} (voir plus bas). | ||
| 24393 | @end table | ||
| 24394 | @end deftp | ||
| 24395 | |||
| 24396 | @deftp {Type de données} name-service | ||
| 24397 | |||
| 24398 | C'est le type de données représentant un service de noms et l'action de | ||
| 24399 | résolution associée. | ||
| 24400 | |||
| 24401 | @table @code | ||
| 24402 | @item name | ||
| 24403 | Une chaîne dénotant le service de nom (@pxref{Services in the NSS | ||
| 24404 | configuration,,, libc, The GNU C Library Reference Manual}). | ||
| 24405 | |||
| 24406 | Remarquez que les services de dnoms listés ici doivent être visibles à | ||
| 24407 | nscd. Cela se fait en passant la liste des paquets fournissant les services | ||
| 24408 | de noms à l'argument @code{#:name-services} de @code{nscd-service} | ||
| 24409 | (@pxref{Services de base, @code{nscd-service}}). | ||
| 24410 | |||
| 24411 | @item reaction | ||
| 24412 | Une action spécifiée par la macro @code{lookup-specification} | ||
| 24413 | (@pxref{Actions in the NSS configuration,,, libc, The GNU C Library | ||
| 24414 | Reference Manual}). Par exemple : | ||
| 24415 | |||
| 24416 | @example | ||
| 24417 | (lookup-specification (unavailable => continue) | ||
| 24418 | (success => return)) | ||
| 24419 | @end example | ||
| 24420 | @end table | ||
| 24421 | @end deftp | ||
| 24422 | |||
| 24423 | @node Disque de RAM initial | ||
| 24424 | @section Disque de RAM initial | ||
| 24425 | |||
| 24426 | @cindex initrd | ||
| 24427 | @cindex disque de RAM initial | ||
| 24428 | Pour le démarrage, on passe au noyau Linux-Libre un @dfn{disque de RAM | ||
| 24429 | initial} ou @dfn{initrd}. Un initrd contient un système de fichier racine | ||
| 24430 | temporaire ainsi qu'un script d'initialisation. Ce dernier est responsable | ||
| 24431 | du montage du vrai système de fichier racine et du chargement des modules du | ||
| 24432 | noyau qui peuvent être nécessaires à cette tâche. | ||
| 24433 | |||
| 24434 | Le champ @code{initrd-modules} d'une déclaration @code{operating-system} | ||
| 24435 | vous permet de spécifier les modules du noyau Linux-Libre qui doivent être | ||
| 24436 | disponibles dans l'initrd. En particulier, c'est là où vous devez lister | ||
| 24437 | les modules requis pour effectivement piloter le disque dur où se trouve la | ||
| 24438 | partition racine — bien que la valeur par défaut de @code{initrd-modules} | ||
| 24439 | couvre la plupart des cas. Par exemple, en supposant que vous ayez besoin | ||
| 24440 | du module @code{megaraid_sas} en plus des modules par défaut pour accéder à | ||
| 24441 | votre système de fichiers racine, vous écririez : | ||
| 24442 | |||
| 24443 | @example | ||
| 24444 | (operating-system | ||
| 24445 | ;; @dots{} | ||
| 24446 | (initrd-modules (cons "megaraid_sas" %base-initrd-modules))) | ||
| 24447 | @end example | ||
| 24448 | |||
| 24449 | @defvr {Variable Scheme} %base-initrd-modules | ||
| 24450 | C'est la liste des modules du noyau inclus dans l'initrd par défaut. | ||
| 24451 | @end defvr | ||
| 24452 | |||
| 24453 | En plus, si vous avez besoin de paramétrages plus bas niveau, le champ | ||
| 24454 | @code{initrd} d'une déclaration @code{operating-system} vous permet de | ||
| 24455 | spécifier quel initrd vous voudriez utiliser. Le module @code{(gnu system | ||
| 24456 | linux-initrd)} fournit trois manières de construire un initrd : la procédure | ||
| 24457 | @code{base-initrd} de haut niveau et les procédures @code{raw-initrd} et | ||
| 24458 | @code{expression->initrd} de bas niveau. | ||
| 24459 | |||
| 24460 | La procédure @code{base-initrd} est conçue pour couvrir la plupart des | ||
| 24461 | usages courants. Par exemple, si vous voulez ajouter des modules du noyau à | ||
| 24462 | charger au démarrage, vous pouvez définir le champ @code{initrd} de votre | ||
| 24463 | déclaration de système d'exploitation ainsi : | ||
| 24464 | |||
| 24465 | @example | ||
| 24466 | (initrd (lambda (file-systems . rest) | ||
| 24467 | ;; Crée un initrd standard mais paramètre le réseau | ||
| 24468 | ;; avec les paramètres que QEMU attend par défaut. | ||
| 24469 | (apply base-initrd file-systems | ||
| 24470 | #:qemu-networking? #t | ||
| 24471 | rest))) | ||
| 24472 | @end example | ||
| 24473 | |||
| 24474 | La procédure @code{base-initrd} gère aussi les cas d'utilisation courants | ||
| 24475 | qui concernent l'utilisation du système comme client QEMU, ou comme un | ||
| 24476 | système « live » avec un système de fichier racine volatile. | ||
| 24477 | |||
| 24478 | La procédure @code{base-initrd} est construite à partir de la procédure | ||
| 24479 | @code{raw-initrd}. Contrairement à @code{base-initrd}, @code{raw-initrd} ne | ||
| 24480 | fait rien à haut-niveau, comme essayer de deviner les modules du noyau et | ||
| 24481 | les paquets qui devraient être inclus dans l'initrd. Un exemple | ||
| 24482 | d'utilisation de @code{raw-initrd} serait si un utilisateur a une | ||
| 24483 | configuration personnalisée du noyau Linux et que les modules du noyau | ||
| 24484 | inclus par défaut par @code{base-initrd} ne sont pas disponibles. | ||
| 24485 | |||
| 24486 | Le disque de RAM initial produit par @code{base-initrd} ou @code{raw-initrd} | ||
| 24487 | honore plusieurs options passées par la ligne de commande du noyau Linux | ||
| 24488 | (c'est-à-dire les arguments passés via la commande @code{linux} de GRUB ou | ||
| 24489 | l'option @code{-append} de QEMU), notamment : | ||
| 24490 | |||
| 24491 | @table @code | ||
| 24492 | @item --load=@var{boot} | ||
| 24493 | Dit au disque de RAM initial de charger @var{boot}, un fichier contenant un | ||
| 24494 | programme Scheme, une fois qu'il a monté le système de fichier racine. | ||
| 24495 | |||
| 24496 | Guix utilise cette option pour donner le contrôle à un programme de | ||
| 24497 | démarrage qui lance les programmes d'activation de services puis démarre le | ||
| 24498 | GNU@tie{}Shepherd, le système d'initialisation. | ||
| 24499 | |||
| 24500 | @item --root=@var{root} | ||
| 24501 | Monte @var{root} comme système de fichier racine. @var{root} peut être un | ||
| 24502 | nom de périphérique comme @code{/dev/sda1}, une étiquette de système de | ||
| 24503 | fichiers ou un UUID de système de fichiers. | ||
| 24504 | |||
| 24505 | @item --system=@var{système} | ||
| 24506 | S'assure que @file{/run/booted-system} et @file{/run/current-system} | ||
| 24507 | pointent vers @var{system}. | ||
| 24508 | |||
| 24509 | @item modprobe.blacklist=@var{modules}@dots{} | ||
| 24510 | @cindex module, black-list | ||
| 24511 | @cindex black-list, des modules du noyau | ||
| 24512 | Dit au disque de RAM initial ainsi qu'à la commande @command{modprobe} (du | ||
| 24513 | paquet kmod) de refuser de charger @var{modules}. @var{modules} doit être | ||
| 24514 | une liste de noms de modules séparés par des virgules — p.@: ex.@: | ||
| 24515 | @code{usbkbd,9pnet}. | ||
| 24516 | |||
| 24517 | @item --repl | ||
| 24518 | Démarre une boucle lecture-évaluation-affichage (REPL) depuis le disque de | ||
| 24519 | RAM initial avant qu'il n'essaye de charger les modules du noyau et de | ||
| 24520 | monter le système de fichiers racine. Notre équipe commerciale appelle cela | ||
| 24521 | @dfn{boot-to-Guile}. Le Schemeur en vous va adorer. @xref{Using Guile | ||
| 24522 | Interactively,,, guile, GNU Guile Reference Manual}, pour plus d'information | ||
| 24523 | sur le REPL de Guile. | ||
| 24524 | |||
| 24525 | @end table | ||
| 24526 | |||
| 24527 | Maintenant que vous connaissez toutes les fonctionnalités des disques de RAM | ||
| 24528 | initiaux produits par @code{base-initrd} et @code{raw-initrd}, voici comment | ||
| 24529 | l'utiliser le personnalisé plus avant. | ||
| 24530 | |||
| 24531 | @cindex initrd | ||
| 24532 | @cindex disque de RAM initial | ||
| 24533 | @deffn {Procédure Scheme} raw-initrd @var{file-systems} @ | ||
| 24534 | [#:linux-modules '()] [#:mapped-devices '()] @ | ||
| 24535 | [#:keyboard-layout #f] @ | ||
| 24536 | [#:helper-packages '()] [#:qemu-networking? #f] [#:volatile-root? #f] | ||
| 24537 | Renvoie une dérivation qui construit un initrd. @var{file-systems} est une | ||
| 24538 | liste de systèmes de fichiers à monter par l'initrd, éventuellement en plus | ||
| 24539 | du système de fichier racine spécifié sur la ligne de commande du noyau via | ||
| 24540 | @code{--root}. @var{linux-modules} est une liste de modules du noyau à | ||
| 24541 | charger au démarrage. @var{mapped-devices} est une liste de correspondances | ||
| 24542 | de périphériques à réaliser avant que les @var{file-systems} ne soient | ||
| 24543 | montés (@pxref{Périphériques mappés}). @var{helper-packages} est une liste de | ||
| 24544 | paquets à copier dans l'initrd. Elle peut inclure @code{e2fsck/static} ou | ||
| 24545 | d'autres paquets requis par l'initrd pour vérifier le système de fichiers | ||
| 24546 | racine. | ||
| 24547 | |||
| 24548 | Lorsque la valeur est vraie, @var{keyboard-layout} est un enregistrement | ||
| 24549 | @code{<keyboard-layout>} dénotant la disposition du clavier désirée pour la | ||
| 24550 | console. Cela est effectuée avant que les @var{mapped-devices} ne soient | ||
| 24551 | créés et avant que les @var{file-systems} ne soient montés, de sorte que, si | ||
| 24552 | l'utilisateur au besoin de saisir une phrase de passe ou d'utiliser le REPL, | ||
| 24553 | cela arrive avec la disposition du clavier voulue. | ||
| 24554 | |||
| 24555 | Lorsque @var{qemu-networking?} est vrai, paramètre le réseau avec les | ||
| 24556 | paramètres QEMU standards. Lorsque @var{virtio?} est vrai, charge des | ||
| 24557 | modules supplémentaires pour que l'initrd puisse être utilisé comme client | ||
| 24558 | QEMU avec les pilotes I/O para-virtualisés. | ||
| 24559 | |||
| 24560 | Lorsque @var{volatile-root?} est vrai, le système de fichier racine est | ||
| 24561 | inscriptible mais tous les changements seront perdus. | ||
| 24562 | @end deffn | ||
| 24563 | |||
| 24564 | @deffn {Procédure Scheme} base-initrd @var{file-systems} @ | ||
| 24565 | [#:mapped-devices '()] [#:keyboard-layout #f] @ | ||
| 24566 | [#:qemu-networking? #f] [#:volatile-root? #f] @ | ||
| 24567 | [#:linux-modules '()] | ||
| 24568 | Renvoie un objet simili-fichier contenant un initrd générique, avec les | ||
| 24569 | modules du noyau de @var{linux}. @var{file-systems} est une liste de | ||
| 24570 | systèmes de fichiers à monter par l'initrd, éventuellement en plus du | ||
| 24571 | système de fichiers racine spécifié sur la ligne de commande du noyau via | ||
| 24572 | @code{--root}. @var{mapped-devices} est une liste de correspondances de | ||
| 24573 | périphériques à réaliser avant de monter les @var{file-systems}. | ||
| 24574 | |||
| 24575 | Lorsque la valeur est vraie, @var{keyboard-layout} est un enregistrement | ||
| 24576 | @code{<keyboard-layout>} dénotant la disposition du clavier désirée pour la | ||
| 24577 | console. Cela est effectuée avant que les @var{mapped-devices} ne soient | ||
| 24578 | créés et avant que les @var{file-systems} ne soient montés, de sorte que, si | ||
| 24579 | l'utilisateur au besoin de saisir une phrase de passe ou d'utiliser le REPL, | ||
| 24580 | cela arrive avec la disposition du clavier voulue. | ||
| 24581 | |||
| 24582 | @var{qemu-networking?} et @var{volatile-root?} se comportent comme pour | ||
| 24583 | @code{raw-initrd}. | ||
| 24584 | |||
| 24585 | L'initrd est automatiquement remplie avec tous les modules du noyau requis | ||
| 24586 | pour @var{file-systems} et pour les options données. On peut lister des | ||
| 24587 | modules supplémentaires dans @var{linux-modules}. Ils seront ajoutés à | ||
| 24588 | l'initrd et chargés au démarrage dans l'ordre dans lequel ils apparaissent. | ||
| 24589 | @end deffn | ||
| 24590 | |||
| 24591 | Inutile de le dire, les initrds que nous produisons et utilisons incluent | ||
| 24592 | une version de Guile liée statiquement, et le programme d'initialisation est | ||
| 24593 | un programme Guile. Cela donne beaucoup de flexibilité. La procédure | ||
| 24594 | @code{expression->initrd} construit un tel initrd, étant donné le programme | ||
| 24595 | à lancer dans cet initrd. | ||
| 24596 | |||
| 24597 | @deffn {Procédure Scheme} expression->initrd @var{exp} @ | ||
| 24598 | [#:guile %guile-static-stripped] [#:name "guile-initrd"] | ||
| 24599 | Renvoie un objet simili-fichier contenant un initrd Linux (une archive cpio | ||
| 24600 | compressée avec gzip) contenant @var{guile} et qui évalue @var{exp}, une | ||
| 24601 | G-expression, au démarrage. Toutes les dérivations référencées par | ||
| 24602 | @var{exp} sont automatiquement copiées dans l'initrd. | ||
| 24603 | @end deffn | ||
| 24604 | |||
| 24605 | @node Configuration du chargeur d'amorçage | ||
| 24606 | @section Configuration du chargeur d'amorçage | ||
| 24607 | |||
| 24608 | @cindex bootloader | ||
| 24609 | @cindex chargeur d'amorçage | ||
| 24610 | |||
| 24611 | Le système d'exploitation supporte plusieurs chargeurs d'amorçage. La | ||
| 24612 | configuration du chargeur d'amorçage se fait avec la déclaration | ||
| 24613 | @code{bootloader-configuration}. Tous les champs de cette structure sont | ||
| 24614 | indépendants du chargeur d'amorçage sauf un, @code{bootloader} qui indique | ||
| 24615 | le chargeur d'amorçage à configurer et à installer. | ||
| 24616 | |||
| 24617 | Certains chargeurs d'amorçage ne respectent pas tous les champs de | ||
| 24618 | @code{bootloader-configuration}. Par exemple, le chargeur d'amorçage | ||
| 24619 | extlinux ne supporte pas les thèmes et ignore donc le champ @code{theme}. | ||
| 24620 | |||
| 24621 | @deftp {Type de données} bootloader-configuration | ||
| 24622 | Le type d'une déclaration de configuration de chargeur d'amorçage. | ||
| 24623 | |||
| 24624 | @table @asis | ||
| 24625 | |||
| 24626 | @item @code{bootloader} | ||
| 24627 | @cindex EFI, chargeur d'amorçage | ||
| 24628 | @cindex UEFI, chargeur d'amorçage | ||
| 24629 | @cindex BIOS, chargeur d'amorçage | ||
| 24630 | Le chargeur d'amorçage à utiliser, comme objet @code{bootloader}. Pour | ||
| 24631 | l'instant @code{grub-bootloader}, @code{grub-efi-bootloader}, | ||
| 24632 | @code{extlinux-bootloader} et @code{u-boot-bootloader} sont supportés. | ||
| 24633 | |||
| 24634 | @vindex grub-efi-bootloader | ||
| 24635 | @code{grub-efi-bootloader} permet de démarrer sur un système moderne qui | ||
| 24636 | utilise l'UEFI (@dfn{Unified Extensible Firmware Interface}). C'est ce que | ||
| 24637 | vous devriez utiliser si l'image d'installation contient un répertoire | ||
| 24638 | @file{/sys/firmware/efi} lorsque vous démarrez dessus sur votre machine. | ||
| 24639 | |||
| 24640 | @vindex grub-bootloader | ||
| 24641 | @code{grub-bootloader} vous permet de démarrer en particulier sur des | ||
| 24642 | machines Intel en mode BIOS « legacy ». | ||
| 24643 | |||
| 24644 | @cindex ARM, chargeurs d'amorçage | ||
| 24645 | @cindex AArch64, chargeurs d'amorçage | ||
| 24646 | Les chargeurs d'amorçage disponibles sont décrits dans les modules | ||
| 24647 | @code{(gnu bootloader @dots{})}. En particulier, @code{(gnu bootloader | ||
| 24648 | u-boot)} contient des définitions de chargeurs d'amorçage pour une large | ||
| 24649 | gamme de systèmes ARM et AArch, à l'aide du | ||
| 24650 | @uref{http://www.denx.de/wiki/U-Boot/, chargeur d'amorçage U-Boot} | ||
| 24651 | |||
| 24652 | @item @code{target} | ||
| 24653 | C'est une chaîne qui dénote la cible sur laquelle installer le chargeur | ||
| 24654 | d'amorçage. | ||
| 24655 | |||
| 24656 | L'interprétation dépend du chargeur d'amorçage en question. Pour | ||
| 24657 | @code{grub-bootloader} par exemple, cela devrait être un nom de périphérique | ||
| 24658 | compris par la commande @command{installer} du chargeur d'amorçage, comme | ||
| 24659 | @code{/dev/sda} ou @code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU | ||
| 24660 | GRUB Manual}). Pour @code{grub-efi-bootloader}, cela devrait être le point | ||
| 24661 | de montage du système de fichiers EFI, typiquement @file{/boot/efi}. | ||
| 24662 | |||
| 24663 | @item @code{menu-entries} (par défaut : @code{()}) | ||
| 24664 | Une liste éventuellement vide d'objets @code{menu-entry} (voir plus bas), | ||
| 24665 | dénotant les entrées qui doivent apparaître dans le menu du chargeur | ||
| 24666 | d'amorçage, en plus de l'entrée pour le système actuel et l'entrée pointant | ||
| 24667 | vers les générations précédentes. | ||
| 24668 | |||
| 24669 | @item @code{default-entry} (par défaut : @code{0}) | ||
| 24670 | L'index de l'entrée du menu de démarrage par défaut. L'index 0 correspond | ||
| 24671 | au système actuel. | ||
| 24672 | |||
| 24673 | @item @code{timeout} (par défaut : @code{5}) | ||
| 24674 | Le nombre de secondes à attendre une entrée clavier avant de démarrer. | ||
| 24675 | Indiquez 0 pour démarre immédiatement, et -1 pour attendre indéfiniment. | ||
| 24676 | |||
| 24677 | @cindex disposition du clavier, pour le chargeur d'amorçage | ||
| 24678 | @item @code{keyboard-layout} (par défaut : @code{#f}) | ||
| 24679 | Si c'est @code{#f}, le menu du chargeur d'amorçage (s'il y en a un) utilise | ||
| 24680 | la disposition du clavier par défaut, normalement pour l'anglais américain | ||
| 24681 | (« qwerty »). | ||
| 24682 | |||
| 24683 | Sinon, cela doit être un objet @code{keyboard-layout} (@pxref{Disposition du clavier}). | ||
| 24684 | |||
| 24685 | @quotation Remarque | ||
| 24686 | Cette option est actuellement ignorée par les chargeurs d'amorçage autre que | ||
| 24687 | @code{grub} et @code{grub-efi}. | ||
| 24688 | @end quotation | ||
| 24689 | |||
| 24690 | @item @code{theme} (par défaut : @var{#f}) | ||
| 24691 | L'objet de thème du chargeur d'amorçage décrivant le thème utilisé. Si | ||
| 24692 | aucun thème n'est fournit, certains chargeurs d'amorçage peuvent utiliser un | ||
| 24693 | thème par défaut, c'est le cas de GRUB. | ||
| 24694 | |||
| 24695 | @item @code{terminal-outputs} (par défaut : @code{'gfxterm}) | ||
| 24696 | Les terminaux de sortie utilisés par le menu de démarrage du chargeur | ||
| 24697 | d'amorçage, en tant que liste de symboles. GRUB accepte les valeurs | ||
| 24698 | @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{gfxterm}, | ||
| 24699 | @code{vga_text}, @code{mda_text}, @code{morse} et @code{pkmodem}. Ce champ | ||
| 24700 | correspond à la variable GRUB @code{GRUB_TERMINAL_OUTPUT} (@pxref{Simple | ||
| 24701 | configuration,,, grub,GNU GRUB manual}). | ||
| 24702 | |||
| 24703 | @item @code{terminal-inputs} (par défaut : @code{'()}) | ||
| 24704 | Les terminaux d'entrée utilisés par le menu de démarrage du chargeur | ||
| 24705 | d'amorçage, en tant que liste de symboles. Pour GRUB, la valeur par défaut | ||
| 24706 | est le terminal natif de la plate-forme déterminé à l'exécution. GRUB | ||
| 24707 | accepte les valeurs @code{console}, @code{serial}, @code{serial_@{0-3@}}, | ||
| 24708 | @code{at_keyboard} et @code{usb_keyboard}. Ce champ correspond à la | ||
| 24709 | variable GRUB @code{GRUB_TERMINAL_INPUT} (@pxref{Simple configuration,,, | ||
| 24710 | grub,GNU GRUB manual}). | ||
| 24711 | |||
| 24712 | @item @code{serial-unit} (par défaut : @code{#f}) | ||
| 24713 | L'unitié série utilisée par le chargeur d'amorçage, en tant qu'entier entre | ||
| 24714 | 0 et 3. Pour GRUB, il est choisi à l'exécution ; actuellement GRUB choisi | ||
| 24715 | 0, ce qui correspond à COM1 (@pxref{Serial terminal,,, grub,GNU GRUB | ||
| 24716 | manual}). | ||
| 24717 | |||
| 24718 | @item @code{serial-speed} (par défaut : @code{#f}) | ||
| 24719 | La vitesse de l'interface série, en tant qu'entier. Pour GRUB, la valeur | ||
| 24720 | par défaut est choisie à l'exécution ; actuellement GRUB choisi | ||
| 24721 | 9600@tie{}bps (@pxref{Serial terminal,,, grub,GNU GRUB manual}). | ||
| 24722 | @end table | ||
| 24723 | |||
| 24724 | @end deftp | ||
| 24725 | |||
| 24726 | @cindex dual boot | ||
| 24727 | @cindex menu de démarrage | ||
| 24728 | Si vous voulez lister des entrées du menu de démarrage supplémentaires via | ||
| 24729 | le champ @code{menu-entries} ci-dessus, vous devrez les créer avec la forme | ||
| 24730 | @code{menu-entry}. Par exemple, imaginons que vous souhaitiez pouvoir | ||
| 24731 | démarrer sur une autre distro (c'est difficile à concevoir !), vous pourriez | ||
| 24732 | alors définir une entrée du menu comme ceci : | ||
| 24733 | |||
| 24734 | @example | ||
| 24735 | (menu-entry | ||
| 24736 | (label "L'autre distro") | ||
| 24737 | (linux "/boot/old/vmlinux-2.6.32") | ||
| 24738 | (linux-arguments '("root=/dev/sda2")) | ||
| 24739 | (initrd "/boot/old/initrd")) | ||
| 24740 | @end example | ||
| 24741 | |||
| 24742 | Les détails suivent. | ||
| 24743 | |||
| 24744 | @deftp {Type de données} menu-entry | ||
| 24745 | Le type d'une entrée dans le menu du chargeur d'amorçage. | ||
| 24746 | |||
| 24747 | @table @asis | ||
| 24748 | |||
| 24749 | @item @code{label} | ||
| 24750 | L'étiquette à montrer dans le menu — p.@: ex.@: @code{"GNU"}. | ||
| 24751 | |||
| 24752 | @item @code{linux} | ||
| 24753 | L'image du noyau Linux à démarrer, par exemple : | ||
| 24754 | |||
| 24755 | @example | ||
| 24756 | (file-append linux-libre "/bzImage") | ||
| 24757 | @end example | ||
| 24758 | |||
| 24759 | Pour GRUB, il est aussi possible de spécifier un périphérique explicitement | ||
| 24760 | dans le chemin de fichier avec la convention de nommage de GRUB | ||
| 24761 | (@pxref{Naming convention,,, grub, GNU GRUB manual}), par exemple : | ||
| 24762 | |||
| 24763 | @example | ||
| 24764 | "(hd0,msdos1)/boot/vmlinuz" | ||
| 24765 | @end example | ||
| 24766 | |||
| 24767 | Si le périphérique est spécifié explicitement comme au-dessus, le champ | ||
| 24768 | @code{device} est complètement ignoré. | ||
| 24769 | |||
| 24770 | @item @code{linux-arguments} (par défaut : @code{()}) | ||
| 24771 | La liste des arguments de la ligne de commande du noyau supplémentaires — | ||
| 24772 | p.@: ex.@: @code{("console=ttyS0")}. | ||
| 24773 | |||
| 24774 | @item @code{initrd} | ||
| 24775 | Une G-expression ou une chaîne dénotant le nom de fichier du disque de RAM | ||
| 24776 | initial à utiliser (@pxref{G-Expressions}). | ||
| 24777 | @item @code{device} (par défaut : @code{#f}) | ||
| 24778 | Le périphérique où le noyau et l'initrd se trouvent — c.-à-d.@: pour GRUB, | ||
| 24779 | l'option @dfn{root} de cette entrée de menu (@pxref{root,,, grub, GNU GRUB | ||
| 24780 | manual}). | ||
| 24781 | |||
| 24782 | Cela peut être une étiquette de système de fichiers (une chaîne), un UUID de | ||
| 24783 | système de fichiers (un vecteur d'octets, @pxref{Systèmes de fichiers}) ou | ||
| 24784 | @code{#f}, auquel cas le chargeur d'amorçage recherchera le périphérique | ||
| 24785 | contenant le fichier spécifié par le champ @code{linux} (@pxref{search,,, | ||
| 24786 | grub, GNU GRUB manual}). Cela ne doit @emph{pas} être un nom de | ||
| 24787 | périphérique donné par l'OS comme @file{/dev/sda1}. | ||
| 24788 | |||
| 24789 | @end table | ||
| 24790 | @end deftp | ||
| 24791 | |||
| 24792 | @c FIXME: Write documentation once it's stable. | ||
| 24793 | For now only GRUB has theme support. GRUB themes are created using the | ||
| 24794 | @code{grub-theme} form, which is not documented yet. | ||
| 24795 | |||
| 24796 | @defvr {Variable Scheme} %default-theme | ||
| 24797 | C'est le thème par défaut de GRUB utilisé par le système d'exploitation si | ||
| 24798 | aucun champ @code{theme} n'est spécifié dans l'enregistrement | ||
| 24799 | @code{bootloader-configuration}. | ||
| 24800 | |||
| 24801 | Il contient une image de fond sympathique avec les logos de GNU et de Guix. | ||
| 24802 | @end defvr | ||
| 24803 | |||
| 24804 | |||
| 24805 | @node Invoquer guix system | ||
| 24806 | @section Invoquer @code{guix system} | ||
| 24807 | |||
| 24808 | Une fois que vous avez écrit une déclaration de système d'exploitation comme | ||
| 24809 | nous l'avons vu dans les sections précédentes, elle peut être instanciée | ||
| 24810 | avec la commande @command{guix system}. Voici le résumé de la commande : | ||
| 24811 | |||
| 24812 | @example | ||
| 24813 | guix system @var{options}@dots{} @var{action} @var{file} | ||
| 24814 | @end example | ||
| 24815 | |||
| 24816 | @var{file} doit être le nom d'un fichier contenant une déclaration | ||
| 24817 | @code{operating-system}. @var{action} spécifie comme le système | ||
| 24818 | d'exploitation est instancié. Actuellement les valeurs suivantes sont | ||
| 24819 | supportées : | ||
| 24820 | |||
| 24821 | @table @code | ||
| 24822 | @item search | ||
| 24823 | Affiche les définitions des types de services disponibles qui correspondent | ||
| 24824 | aux expressions régulières données, triées par pertinence : | ||
| 24825 | |||
| 24826 | @example | ||
| 24827 | $ guix system search console font | ||
| 24828 | name: console-fonts | ||
| 24829 | location: gnu/services/base.scm:773:2 | ||
| 24830 | extends: shepherd-root | ||
| 24831 | description: Installe des polices données sur les ttys spécifiés (les polices sont par console virtuelle sous GNU/Linux). la valeur de ces service est une liste de paires | ||
| 24832 | + de tty/police comme ceci : | ||
| 24833 | + | ||
| 24834 | + '(("tty1" . "LatGrkCyr-8x16")) | ||
| 24835 | relevance: 16 | ||
| 24836 | |||
| 24837 | name: mingetty | ||
| 24838 | location: gnu/services/base.scm:1144:2 | ||
| 24839 | extends: shepherd-root | ||
| 24840 | description: Fournit la connexion en console avec le programme `mingetty'. | ||
| 24841 | relevance: 4 | ||
| 24842 | |||
| 24843 | name: login | ||
| 24844 | location: gnu/services/base.scm:819:2 | ||
| 24845 | extends: pam | ||
| 24846 | description: Fournit un service de connexion en console tel que spécifié par sa valeur de configuration, un objet `login-configuration'. | ||
| 24847 | relevance: 4 | ||
| 24848 | |||
| 24849 | @dots{} | ||
| 24850 | @end example | ||
| 24851 | |||
| 24852 | Comme pour @command{guix package --search}, le résultat est écrit au format | ||
| 24853 | @code{recutils}, ce qui rend facile le filtrage de la sortie (@pxref{Top, | ||
| 24854 | GNU recutils databases,, recutils, GNU recutils manual}). | ||
| 24855 | |||
| 24856 | @item reconfigure | ||
| 24857 | Construit le système d'exploitation décrit dans @var{file}, l'active et | ||
| 24858 | passe dessus@footnote{Cette action (et les action liées que sont | ||
| 24859 | @code{switch-generation} et @code{roll-back}) ne sont utilisables que sur | ||
| 24860 | les systèmes sous Guix System.}. | ||
| 24861 | |||
| 24862 | Cela met en application toute la configuration spécifiée dans @var{file} : | ||
| 24863 | les comptes utilisateurs, les services du système, la liste globale des | ||
| 24864 | paquets, les programmes setuid, etc. La commande démarre les services | ||
| 24865 | systèmes spécifiés dans @var{file} qui ne sont pas actuellement lancés ; si | ||
| 24866 | un service est actuellement exécuté cette commande s'arrange pour qu'il soit | ||
| 24867 | mis à jour la prochaine fois qu'il est stoppé (p.@: ex@: par @code{herd stop | ||
| 24868 | X} ou @code{herd restart X}). | ||
| 24869 | |||
| 24870 | Cette commande crée une nouvelle génération dont le numéro est un de plus | ||
| 24871 | que la génération actuelle (rapportée par @command{guix system | ||
| 24872 | list-generations}). Si cette génération existe déjà, elle sera réécrite. | ||
| 24873 | Ce comportement correspond à celui de @command{guix package} | ||
| 24874 | (@pxref{Invoquer guix package}). | ||
| 24875 | |||
| 24876 | Elle ajoute aussi une entrée de menu du chargeur d'amorçage pour la nouvelle | ||
| 24877 | configuration, à moins que @option{--no-bootloader} ne soit passé. Pour | ||
| 24878 | GRUB, elle déplace les entrées pour les anciennes configurations dans un | ||
| 24879 | sous-menu, ce qui vous permet de choisir une ancienne génération au | ||
| 24880 | démarrage si vous en avez besoin. | ||
| 24881 | |||
| 24882 | @quotation Remarque | ||
| 24883 | @c The paragraph below refers to the problem discussed at | ||
| 24884 | @c <http://lists.gnu.org/archive/html/guix-devel/2014-08/msg00057.html>. | ||
| 24885 | Il est grandement recommandé de lancer @command{guix pull} une fois avant de | ||
| 24886 | lancer @command{guix system reconfigure} pour la première fois | ||
| 24887 | (@pxref{Invoquer guix pull}). Sans cela, vous verriez une version plus | ||
| 24888 | ancienne de Guix une fois @command{reconfigure} terminé. | ||
| 24889 | @end quotation | ||
| 24890 | |||
| 24891 | @item switch-generation | ||
| 24892 | @cindex générations | ||
| 24893 | Passe à une génération existante du système. Cette action change | ||
| 24894 | automatiquement le profil système vers la génération spécifiée. Elle | ||
| 24895 | réarrange aussi les entrées existantes du menu du chargeur d'amorçage du | ||
| 24896 | système. Elle fait de l'entrée du menu pour la génération spécifiée | ||
| 24897 | l'entrée par défaut et déplace les entrées pour les autres générations dans | ||
| 24898 | un sous-menu, si cela est supporté par le chargeur d'amorçage utilisé. Lors | ||
| 24899 | du prochain démarrage du système, la génération du système spécifiée sera | ||
| 24900 | utilisée. | ||
| 24901 | |||
| 24902 | Le chargeur d'amorçage lui-même n'est pas réinstallé avec cette commande. | ||
| 24903 | Ainsi, le chargeur d'amorçage est utilisé avec un fichier de configuration | ||
| 24904 | plus à jour. | ||
| 24905 | |||
| 24906 | La génération cible peut être spécifiée explicitement par son numéro de | ||
| 24907 | génération. Par exemple, l'invocation suivante passerait à la génération 7 | ||
| 24908 | du système : | ||
| 24909 | |||
| 24910 | @example | ||
| 24911 | guix system switch-generation 7 | ||
| 24912 | @end example | ||
| 24913 | |||
| 24914 | La génération cible peut aussi être spécifiée relativement à la génération | ||
| 24915 | actuelle avec la forme @code{+N} ou @code{-N}, où @code{+3} signifie « trois | ||
| 24916 | générations après la génération actuelle » et @code{-1} signifie « une | ||
| 24917 | génération précédent la génération actuelle ». Lorsque vous spécifiez un | ||
| 24918 | nombre négatif comme @code{-1}, il doit être précédé de @code{--} pour | ||
| 24919 | éviter qu'il ne soit compris comme une option. Par exemple : | ||
| 24920 | |||
| 24921 | @example | ||
| 24922 | guix system switch-generation -- -1 | ||
| 24923 | @end example | ||
| 24924 | |||
| 24925 | Actuellement, l'effet de l'invocation de cette action est @emph{uniquement} | ||
| 24926 | de passer au profil du système vers une autre génération existante et de | ||
| 24927 | réarranger le menu du chargeur d'amorçage. Pour vraiment commencer à | ||
| 24928 | utiliser la génération spécifiée, vous devez redémarrer après avoir lancé | ||
| 24929 | cette action. Dans le futur, elle sera corrigée pour faire la même chose | ||
| 24930 | que @command{reconfigure}, comme réactiver et désactiver les services. | ||
| 24931 | |||
| 24932 | Cette action échouera si la génération spécifiée n'existe pas. | ||
| 24933 | |||
| 24934 | @item roll-back | ||
| 24935 | @cindex revenir en arrière | ||
| 24936 | Passe à la génération précédente du système. Au prochain démarrage, la | ||
| 24937 | génération précédente sera utilisée. C'est le contraire de | ||
| 24938 | @command{reconfigure}, et c'est exactement comme invoquer | ||
| 24939 | @command{switch-generation} avec pour argument @code{-1}. | ||
| 24940 | |||
| 24941 | Actuellement, comme pour @command{switch-generation}, vous devez redémarrer | ||
| 24942 | après avoir lancé cette action pour vraiment démarrer sur la génération | ||
| 24943 | précédente du système. | ||
| 24944 | |||
| 24945 | @item delete-generations | ||
| 24946 | @cindex supprimer des générations du système | ||
| 24947 | @cindex gagner de la place | ||
| 24948 | Supprimer des générations du système, ce qui les rend disponibles pour le | ||
| 24949 | ramasse-miettes (@pxref{Invoquer guix gc}, pour des informations sur la | ||
| 24950 | manière de lancer le « ramasse-miettes »). | ||
| 24951 | |||
| 24952 | Cela fonctionne comme pour @command{guix package --delete-generations} | ||
| 24953 | (@pxref{Invoquer guix package, @code{--delete-generations}}). Avec aucun | ||
| 24954 | argument, toutes les générations du système sauf la génération actuelle sont | ||
| 24955 | supprimées : | ||
| 24956 | |||
| 24957 | @example | ||
| 24958 | guix system delete-generations | ||
| 24959 | @end example | ||
| 24960 | |||
| 24961 | Vous pouvez aussi choisir les générations que vous voulez supprimer. | ||
| 24962 | L'exemple plus bas supprime toutes les génération du système plus vieilles | ||
| 24963 | que deux mois : | ||
| 24964 | |||
| 24965 | @example | ||
| 24966 | guix system delete-generations 2m | ||
| 24967 | @end example | ||
| 24968 | |||
| 24969 | Lancer cette commande réinstalle automatiquement le chargeur d'amorçage avec | ||
| 24970 | une liste à jour d'entrées de menu — p.@: ex.@: le sous-menu « anciennes | ||
| 24971 | générations » dans GRUB ne liste plus les générations qui ont été | ||
| 24972 | supprimées. | ||
| 24973 | |||
| 24974 | @item build | ||
| 24975 | Construit la dérivation du système d'exploitation, ce qui comprend tous les | ||
| 24976 | fichiers de configuration et les programmes requis pour démarrer et lancer | ||
| 24977 | le système. Cette action n'installe rien. | ||
| 24978 | |||
| 24979 | @item init | ||
| 24980 | Rempli le répertoire donné avec tous les fichiers nécessaires à lancer le | ||
| 24981 | système d'exploitation spécifié dans @var{file}. C'est utile pour la | ||
| 24982 | première installation de Guix System. Par exemple : | ||
| 24983 | |||
| 24984 | @example | ||
| 24985 | guix system init my-os-config.scm /mnt | ||
| 24986 | @end example | ||
| 24987 | |||
| 24988 | copie tous les éléments du dépôt requis par la configuration spécifiée dans | ||
| 24989 | @file{my-os-config.scm} dans @file{/mnt}. Cela comprend les fichiers de | ||
| 24990 | configuration, les paquets, etc. Elle crée aussi d'autres fichiers | ||
| 24991 | essentiels requis pour que le système fonctionne correctement — p.@: ex.@: | ||
| 24992 | les répertoires @file{/etc}, @file{/var} et @file{/run} et le fichier | ||
| 24993 | @file{/bin/sh}. | ||
| 24994 | |||
| 24995 | Cette commande installe aussi le chargeur d'amorçage sur la cible spécifiée | ||
| 24996 | dans @file{my-os-config}, à moins que l'option @option{--no-bootloader} ne | ||
| 24997 | soit passée. | ||
| 24998 | |||
| 24999 | @item vm | ||
| 25000 | @cindex machine virtuelle | ||
| 25001 | @cindex VM | ||
| 25002 | @anchor{guix system vm} | ||
| 25003 | Construit une machine virtuelle qui contient le système d'exploitation | ||
| 25004 | déclaré dans @var{file} et renvoie un script pour lancer cette machine | ||
| 25005 | virtuelle (VM). | ||
| 25006 | |||
| 25007 | @quotation Remarque | ||
| 25008 | Les actions @code{vm} et les autres plus bas peuvent utiliser la prise en | ||
| 25009 | charge KVM du noyau Linux-libre. Plus spécifiquement, si la machine prend | ||
| 25010 | en charge la virtualisation matérielle, le module noyau KVM correspondant | ||
| 25011 | devrait être chargé, et le nœud de périphérique @file{/dev/kvm} devrait | ||
| 25012 | exister et être lisible et inscriptible pour l'utilisateur et pour les | ||
| 25013 | utilisateurs de construction du démon (@pxref{Réglages de l'environnement de construction}). | ||
| 25014 | @end quotation | ||
| 25015 | |||
| 25016 | Les arguments passés au script sont passés à QEMU comme dans l'exemple | ||
| 25017 | ci-dessous, qui active le réseau et demande 1@tie{}Go de RAM pour la machine | ||
| 25018 | émulée : | ||
| 25019 | |||
| 25020 | @example | ||
| 25021 | $ /gnu/store/@dots{}-run-vm.sh -m 1024 -net user | ||
| 25022 | @end example | ||
| 25023 | |||
| 25024 | La VM partage sont dépôt avec le système hôte. | ||
| 25025 | |||
| 25026 | Vous pouvez partager des fichiers supplémentaires entre l'hôte et la VM avec | ||
| 25027 | les options en ligne de commande @code{--share} et @code{--expose} : la | ||
| 25028 | première spécifie un répertoire à partager avec accès en écriture, tandis | ||
| 25029 | que le deuxième fournit un accès en lecture-seule au répertoire partagé. | ||
| 25030 | |||
| 25031 | L'exemple ci-dessous crée une VM dans laquelle le répertoire personnel de | ||
| 25032 | l'utilisateur est accessible en lecture-seule, et où le répertoire | ||
| 25033 | @file{/exchange} est une correspondance en lecture-écriture à | ||
| 25034 | @file{$HOME/tmp} sur l'hôte : | ||
| 25035 | |||
| 25036 | @example | ||
| 25037 | guix system vm my-config.scm \ | ||
| 25038 | --expose=$HOME --share=$HOME/tmp=/exchange | ||
| 25039 | @end example | ||
| 25040 | |||
| 25041 | Sur GNU/Linux, le comportement par défaut consiste à démarrer directement | ||
| 25042 | sur le noyau ; cela a l'avantage de n'avoir besoin que d'une toute petite | ||
| 25043 | image disque puisque le dépôt de l'hôte peut ensuite être monté. | ||
| 25044 | |||
| 25045 | L'option @code{--full-boot} force une séquence de démarrage complète, en | ||
| 25046 | commençant par le chargeur d'amorçage. Cela requiert plus d'espace disque | ||
| 25047 | puisqu'une image racine contenant au moins le noyau, l'initrd et les | ||
| 25048 | fichiers de données du chargeur d'amorçage doit être créé. On peut utiliser | ||
| 25049 | l'option @code{--image-size} pour spécifier la taille de l'image. | ||
| 25050 | |||
| 25051 | @cindex Images système, création en divers formats | ||
| 25052 | @cindex Créer des images systèmes sous différents formats | ||
| 25053 | @item vm-image | ||
| 25054 | @itemx disk-image | ||
| 25055 | @itemx docker-image | ||
| 25056 | Renvoie une machine virtuelle, une image disque ou une image Docker du | ||
| 25057 | système d'exploitation déclaré dans @var{file} qui se suffit à elle-même. | ||
| 25058 | Par défaut, @command{guix system} estime la taille de l'image requise pour | ||
| 25059 | stocker le système, mais vous pouvez utiliser l'option @option{--image-size} | ||
| 25060 | pour spécifier une valeur. Les images Docker sont construites pour contenir | ||
| 25061 | exactement ce dont elles ont besoin, donc l'option @option{--image-size} est | ||
| 25062 | ignorée dans le cas de @code{docker-image}. | ||
| 25063 | |||
| 25064 | Vous pouvez spécifier le type de système de fichiers racine avec l'option | ||
| 25065 | @option{--file-system-type}. La valeur par défaut est @code{ext4}. | ||
| 25066 | |||
| 25067 | Lorsque vous utilisez @code{vm-image}, l'image renvoyée est au format qcow2, | ||
| 25068 | que l'émulateur QEMU peut utiliser efficacement. @xref{Lancer Guix dans une VM}, pour plus d'informations sur la manière de lancer l'image dans une | ||
| 25069 | machine virtuelle. | ||
| 25070 | |||
| 25071 | Lorsque vous utilisez @code{disk-image}, une image disque brute est produite | ||
| 25072 | ; elle peut être copiée telle quelle sur un périphérique USB. En supposant | ||
| 25073 | que @code{/dev/sdc} est le périphérique correspondant à une clef USB, on | ||
| 25074 | peut copier l'image dessus avec la commande suivante : | ||
| 25075 | |||
| 25076 | @example | ||
| 25077 | # dd if=$(guix system disk-image my-os.scm) of=/dev/sdc | ||
| 25078 | @end example | ||
| 25079 | |||
| 25080 | En utilisant @code{docker-image}, on produit une image Docker. Guix | ||
| 25081 | construit l'image de zéro, et non à partir d'une image Docker de base | ||
| 25082 | pré-existante. En conséquence, elle contient @emph{exactly} ce que vous | ||
| 25083 | avez défini dans le fichier de configuration du système. Vous pouvez | ||
| 25084 | ensuite charger l'image et lancer un conteneur Docker avec des commande | ||
| 25085 | comme : | ||
| 25086 | |||
| 25087 | @example | ||
| 25088 | image_id="$(docker load < guix-system-docker-image.tar.gz)" | ||
| 25089 | docker run -e GUIX_NEW_SYSTEM=/var/guix/profiles/system \\ | ||
| 25090 | --entrypoint /var/guix/profiles/system/profile/bin/guile \\ | ||
| 25091 | $image_id /var/guix/profiles/system/boot | ||
| 25092 | @end example | ||
| 25093 | |||
| 25094 | Cette commande démarre un nouveau conteneur Docker à partir de l'image | ||
| 25095 | spécifiée. Il démarrera le système Guix de la manière habituelle, ce qui | ||
| 25096 | signifie qu'il démarrera tous les services que vous avez définis dans la | ||
| 25097 | configuration du système d'exploitation. En fonction de ce que vous lancez | ||
| 25098 | dans le conteneur Docker, il peut être nécessaire de donner des permissions | ||
| 25099 | supplémentaires au conteneur. Par exemple, si vous voulez construire des | ||
| 25100 | paquets avec Guix dans le conteneur Docker, vous devriez passer | ||
| 25101 | @option{--privileged} à @code{docker run}. | ||
| 25102 | |||
| 25103 | @item conteneur | ||
| 25104 | Renvoie un script qui lance le système d'exploitation déclaré dans | ||
| 25105 | @var{file} dans un conteneur. Les conteneurs sont un ensemble de mécanismes | ||
| 25106 | d'isolation légers fournis par le noyau Linux-libre. Les conteneurs sont | ||
| 25107 | substantiellement moins gourmands en ressources que les machines virtuelles | ||
| 25108 | complètes car le noyau, les objets partagés et d'autres ressources peuvent | ||
| 25109 | être partagés avec le système hôte ; cela signifie aussi une isolation moins | ||
| 25110 | complète. | ||
| 25111 | |||
| 25112 | Actuellement, le script doit être lancé en root pour pouvoir supporter plus | ||
| 25113 | d'un utilisateur et d'un groupe. Le conteneur partage son dépôt avec le | ||
| 25114 | système hôte. | ||
| 25115 | |||
| 25116 | Comme avec l'action @code{vm} (@pxref{guix system vm}), des systèmes de | ||
| 25117 | fichiers supplémentaires peuvent être partagés entre l'hôte et le conteneur | ||
| 25118 | avec les options @option{--share} et @option{--expose} : | ||
| 25119 | |||
| 25120 | @example | ||
| 25121 | guix system container my-config.scm \ | ||
| 25122 | --expose=$HOME --share=$HOME/tmp=/exchange | ||
| 25123 | @end example | ||
| 25124 | |||
| 25125 | @quotation Remarque | ||
| 25126 | Cette option requiert Linux-libre ou supérieur. | ||
| 25127 | @end quotation | ||
| 25128 | |||
| 25129 | @end table | ||
| 25130 | |||
| 25131 | @var{options} peut contenir n'importe quelle option commune de construction | ||
| 25132 | (@pxref{Options de construction communes}). En plus, @var{options} peut contenir l'une | ||
| 25133 | de ces options : | ||
| 25134 | |||
| 25135 | @table @option | ||
| 25136 | @item --expression=@var{expr} | ||
| 25137 | @itemx -e @var{expr} | ||
| 25138 | Considère le système d'exploitation en lequel s'évalue @var{expr}. C'est | ||
| 25139 | une alternative à la spécification d'un fichier qui s'évalue en un système | ||
| 25140 | d'exploitation. C'est utilisé pour générer l'installateur du système Guix | ||
| 25141 | (@pxref{Construire l'image d'installation}). | ||
| 25142 | |||
| 25143 | @item --system=@var{système} | ||
| 25144 | @itemx -s @var{système} | ||
| 25145 | Essaye de construire pour @var{system} au lieu du type du système hôte. | ||
| 25146 | Cela fonction comme pour @command{guix build} (@pxref{Invoquer guix build}). | ||
| 25147 | |||
| 25148 | @item --derivation | ||
| 25149 | @itemx -d | ||
| 25150 | Renvoie le nom du fichier de dérivation du système d'exploitation donné sans | ||
| 25151 | rien construire. | ||
| 25152 | |||
| 25153 | @item --file-system-type=@var{type} | ||
| 25154 | @itemx -t @var{type} | ||
| 25155 | Pour l'action @code{disk-image}, crée un système de fichier du @var{type} | ||
| 25156 | donné sur l'image. | ||
| 25157 | |||
| 25158 | Lorsque cette option est omise, @command{guix system} utilise @code{ext4}. | ||
| 25159 | |||
| 25160 | @cindex format ISO-9660 | ||
| 25161 | @cindex format d'image de CD | ||
| 25162 | @cindex format d'image de DVD | ||
| 25163 | @code{--file-system-type=iso9660} produit une image ISO-9660, qu'il est | ||
| 25164 | possible de graver sur un CD ou un DVD. | ||
| 25165 | |||
| 25166 | @item --image-size=@var{size} | ||
| 25167 | Pour les actions @code{vm-image} et @code{disk-image}, crée une image de la | ||
| 25168 | taille donnée @var{size}. @var{size} peut être un nombre d'octets ou | ||
| 25169 | contenir un suffixe d'unité (@pxref{Block size, size specifications,, | ||
| 25170 | coreutils, GNU Coreutils}). | ||
| 25171 | |||
| 25172 | Lorsque cette option est omise, @command{guix system} calcule une estimation | ||
| 25173 | de la taille de l'image en fonction de la taille du système déclaré dans | ||
| 25174 | @var{file}. | ||
| 25175 | |||
| 25176 | @item --root=@var{fichier} | ||
| 25177 | @itemx -r @var{fichier} | ||
| 25178 | Fait de @var{fichier} un lien symbolique vers le résultat, et l'enregistre | ||
| 25179 | en tant que racine du ramasse-miettes. | ||
| 25180 | |||
| 25181 | @item --skip-checks | ||
| 25182 | Passe les vérifications de sécurité avant l'installation. | ||
| 25183 | |||
| 25184 | Par défaut, @command{guix system init} et @command{guix system reconfigure} | ||
| 25185 | effectuent des vérifications de sécurité : ils s'assurent que les systèmes | ||
| 25186 | de fichiers qui apparaissent dans la déclaration @code{operating-system} | ||
| 25187 | existent vraiment (@pxref{Systèmes de fichiers}) et que les modules de noyau Linux | ||
| 25188 | qui peuvent être requis au démarrage sont listés dans @code{initrd-modules} | ||
| 25189 | (@pxref{Disque de RAM initial}). Passer cette option saute ces vérifications | ||
| 25190 | complètement. | ||
| 25191 | |||
| 25192 | @cindex on-error | ||
| 25193 | @cindex stratégie on-error | ||
| 25194 | @cindex stratégie en cas d'erreur | ||
| 25195 | @item --on-error=@var{strategy} | ||
| 25196 | Applique @var{strategy} lorsqu'une erreur arrive lors de la lecture de | ||
| 25197 | @var{file}. @var{strategy} peut être l'une des valeurs suivantes : | ||
| 25198 | |||
| 25199 | @table @code | ||
| 25200 | @item nothing-special | ||
| 25201 | Rapporte l'erreur de manière concise et quitte. C'est la stratégie par | ||
| 25202 | défaut. | ||
| 25203 | |||
| 25204 | @item backtrace | ||
| 25205 | Pareil, mais affiche aussi une trace de débogage. | ||
| 25206 | |||
| 25207 | @item debug | ||
| 25208 | Rapporte l'erreur et entre dans le débogueur Guile. À partir de là, vous | ||
| 25209 | pouvez lancer des commandes comme @code{,bt} pour obtenir une trace de | ||
| 25210 | débogage, @code{,locals} pour afficher les valeurs des variables locales et | ||
| 25211 | plus généralement inspecter l'état du programme. @xref{Debug Commands,,, | ||
| 25212 | guile, GNU Guile Reference Manual}, pour une liste de commandes de débogage | ||
| 25213 | disponibles. | ||
| 25214 | @end table | ||
| 25215 | @end table | ||
| 25216 | |||
| 25217 | Une fois que vous avez construit, re-configuré et re-re-configuré votre | ||
| 25218 | installation Guix, vous pourriez trouver utile de lister les générations du | ||
| 25219 | système disponibles sur le disque — et que vous pouvez choisir dans le menu | ||
| 25220 | du chargeur d'amorçage : | ||
| 25221 | |||
| 25222 | @table @code | ||
| 25223 | |||
| 25224 | @item list-generations | ||
| 25225 | Affiche un résumé de chaque génération du système d'exploitation disponible | ||
| 25226 | sur le disque, dans un format lisible pour un humain. C'est similaire à | ||
| 25227 | l'option @option{--list-generations} de @command{guix package} | ||
| 25228 | (@pxref{Invoquer guix package}). | ||
| 25229 | |||
| 25230 | Éventuellement, on peut spécifier un motif, avec la même syntaxe utilisée | ||
| 25231 | pour @command{guix package --list-generations}, pour restreindre la liste | ||
| 25232 | des générations affichées. Par exemple, la commande suivante affiche les | ||
| 25233 | générations de moins de 10 jours : | ||
| 25234 | |||
| 25235 | @example | ||
| 25236 | $ guix system list-generations 10d | ||
| 25237 | @end example | ||
| 25238 | |||
| 25239 | @end table | ||
| 25240 | |||
| 25241 | La commande @command{guix system} a même plus à proposer ! Les | ||
| 25242 | sous-commandes suivantes vous permettent de visualiser comme vos services | ||
| 25243 | systèmes sont liés les uns aux autres : | ||
| 25244 | |||
| 25245 | @anchor{system-extension-graph} | ||
| 25246 | @table @code | ||
| 25247 | |||
| 25248 | @item extension-graph | ||
| 25249 | Affiche le @dfn{graphe d'extension des services} du système d'exploitation | ||
| 25250 | défini dans @var{file} au format Dot/Graphviz sur la sortie standard | ||
| 25251 | (@pxref{Composition de services}, pour plus d'informations sur l'extension des | ||
| 25252 | services). | ||
| 25253 | |||
| 25254 | La commande : | ||
| 25255 | |||
| 25256 | @example | ||
| 25257 | $ guix system extension-graph @var{file} | dot -Tpdf > services.pdf | ||
| 25258 | @end example | ||
| 25259 | |||
| 25260 | produit un fichier PDF montrant les relations d'extension entre les | ||
| 25261 | services. | ||
| 25262 | |||
| 25263 | @anchor{system-shepherd-graph} | ||
| 25264 | @item shepherd-graph | ||
| 25265 | Affiche le @dfn{graphe de dépendance} des services shepherd du système | ||
| 25266 | d'exploitation défini dans @var{file} au format Dot/Graphviz sur la sortie | ||
| 25267 | standard. @xref{Services Shepherd}, pour plus d'informations et un exemple | ||
| 25268 | de graphe. | ||
| 25269 | |||
| 25270 | @end table | ||
| 25271 | |||
| 25272 | @node Lancer Guix dans une VM | ||
| 25273 | @section Exécuter Guix sur une machine virtuelle | ||
| 25274 | |||
| 25275 | @cindex machine virtuelle | ||
| 25276 | Pour exécuter GuixSD sur une machine virtuelle (VM), on peut soit utiliser | ||
| 25277 | l'image de VM GuixSD pré-construite sur | ||
| 25278 | @indicateurl{https://alpha.gnu.org/gnu/guix/guix-system-vm-image-@value{VERSION}.@var{système}.xz} | ||
| 25279 | ou construire sa propre image de machine virtuelle avec @command{guix system | ||
| 25280 | vm-image} (@pxref{Invoquer guix system}). L'image renvoyée est au format | ||
| 25281 | qcow2, que l'@uref{http://qemu.org/,émulateur QEMU} peut utiliser | ||
| 25282 | efficacement. | ||
| 25283 | |||
| 25284 | @cindex QEMU | ||
| 25285 | Si vous construisez votre propre image, vous devez la copier en dehors du | ||
| 25286 | dépôt (@pxref{Le dépôt}) et vous donner la permission d'écrire sur la copie | ||
| 25287 | avant de pouvoir l'utiliser. Lorsque vous invoquez QEMU, vous devez choisir | ||
| 25288 | un émulateur système correspondant à votre plate-forme matérielle. Voici | ||
| 25289 | une invocation minimale de QEMU qui démarrera le résultat de @command{guix | ||
| 25290 | system vm-image} sur un matériel x8_64 : | ||
| 25291 | |||
| 25292 | @example | ||
| 25293 | $ qemu-system-x86_64 \ | ||
| 25294 | -net user -net nic,model=virtio \ | ||
| 25295 | -enable-kvm -m 256 /tmp/qemu-image | ||
| 25296 | @end example | ||
| 25297 | |||
| 25298 | Voici la signification de ces options : | ||
| 25299 | |||
| 25300 | @table @code | ||
| 25301 | @item qemu-system-x86_64 | ||
| 25302 | Cela spécifie la plate-forme matérielle à émuler. Elle doit correspondre à | ||
| 25303 | l'hôte. | ||
| 25304 | |||
| 25305 | @item -net user | ||
| 25306 | Active la pile réseau non privilégiée en mode utilisateur. L'OS émulé peut | ||
| 25307 | accéder à l'hôte mais pas l'inverse. C'est la manière la plus simple de | ||
| 25308 | connecter le client. | ||
| 25309 | |||
| 25310 | @item -net nic,model=virtio | ||
| 25311 | Vous devez créer une interface réseau d'un modèle donné. Si vous ne créez | ||
| 25312 | pas de NIC, le démarrage échouera. En supposant que votre plate-forme est | ||
| 25313 | x86_64, vous pouvez récupérer une liste des modèles de NIC disponibles en | ||
| 25314 | lançant @command{qemu-system-x86_64 -net nic,model=help}. | ||
| 25315 | |||
| 25316 | @item -enable-kvm | ||
| 25317 | Si votre système a des extensions de virtualisation matérielle, activer le | ||
| 25318 | support des machines virtuelles de Linux (KVM) accélérera les choses. | ||
| 25319 | |||
| 25320 | @item -m 256 | ||
| 25321 | RAM disponible sur l'OS émulé, en mébioctets. La valeur par défaut est | ||
| 25322 | 128@tie{}Mo, ce qui peut ne pas suffire pour certaines opérations. | ||
| 25323 | |||
| 25324 | @item /tmp/qemu-image | ||
| 25325 | Le nom de fichier de l'image qcow2. | ||
| 25326 | @end table | ||
| 25327 | |||
| 25328 | Le script @command{run-vm.sh} par défaut renvoyé par une invocation de | ||
| 25329 | @command{guix system vm} n'ajoute pas le drapeau @command{-net user} par | ||
| 25330 | défaut. Pour avoir accès au réseau dans la vm, ajoutez le | ||
| 25331 | @code{(dhcp-client-service)} à votre définition et démarrez la VM avec | ||
| 25332 | @command{`guix system vm config.scm` -net user}. Un problème important avec | ||
| 25333 | @command{-net user} pour le réseau, est que @command{ping} ne fonctionnera | ||
| 25334 | pas, car il utilise le protocole ICMP. Vous devrez utiliser une autre | ||
| 25335 | commande pour vérifier la connectivité réseau, par exemple @command{guix | ||
| 25336 | download}. | ||
| 25337 | |||
| 25338 | @subsection Se connecter par SSH | ||
| 25339 | |||
| 25340 | @cindex SSH | ||
| 25341 | @cindex serveur SSH | ||
| 25342 | Pour activer SSH dans une VM vous devez ajouter un serveur SSH comme | ||
| 25343 | @code{(dropbear-service)} ou @code{(lsh-service)} à votre VM. Le service | ||
| 25344 | @code{(lsh-service)} ne peut actuellement pas démarrer sans supervision. Il | ||
| 25345 | a besoin que vous tapiez quelques caractères pour initialiser le générateur | ||
| 25346 | d'aléatoire. En plus vous devez transférer le port 22, par défaut, à | ||
| 25347 | l'hôte. Vous pouvez faire cela avec | ||
| 25348 | |||
| 25349 | @example | ||
| 25350 | `guix system vm config.scm` -net user,hostfwd=tcp::10022-:22 | ||
| 25351 | @end example | ||
| 25352 | |||
| 25353 | Pour vous connecter à la VM vous pouvez lancer | ||
| 25354 | |||
| 25355 | @example | ||
| 25356 | ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022 | ||
| 25357 | @end example | ||
| 25358 | |||
| 25359 | Le @command{-p} donne le port auquel vous voulez vous connecter à | ||
| 25360 | @command{ssh}, @command{-o UserKnownHostsFile=/dev/null} évite que | ||
| 25361 | @command{ssh} ne se plaigne à chaque fois que vous modifiez le fichier | ||
| 25362 | @command{config.scm} et @command{-o StrictHostKeyChecking=no} évite que vous | ||
| 25363 | n'ayez à autoriser une connexion à un hôte inconnu à chaque fois que vous | ||
| 25364 | vous connectez. | ||
| 25365 | |||
| 25366 | @subsection Utiliser @command{virt-viewer} avec Spice | ||
| 25367 | |||
| 25368 | Alternativement au client graphique @command{qemu} par défaut vous pouvez | ||
| 25369 | utiliser @command{remote-viewer} du paquet @command{virt-viewer}. Pour vous | ||
| 25370 | connecter, passez le drapeau @command{-spice port=5930,disable-ticketing} à | ||
| 25371 | @command{qemu}. Voir les sections précédentes pour plus d'informations sur | ||
| 25372 | comment faire cela. | ||
| 25373 | |||
| 25374 | Spice a aussi de chouettes fonctionnalités comme le partage de votre | ||
| 25375 | presse-papier avec la VM. Pour activer cela vous devrez aussi passer les | ||
| 25376 | drapeaux suivants à @command{qemu} : | ||
| 25377 | |||
| 25378 | @example | ||
| 25379 | -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5 | ||
| 25380 | -chardev spicevmc,name=vdagent,id=vdagent | ||
| 25381 | -device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent, | ||
| 25382 | name=com.redhat.spice.0 | ||
| 25383 | @end example | ||
| 25384 | |||
| 25385 | Vous devrez aussi ajouter le @pxref{Services divers, Spice service}. | ||
| 25386 | |||
| 25387 | @node Définir des services | ||
| 25388 | @section Définir des services | ||
| 25389 | |||
| 25390 | Les sections précédentes montrent les services disponibles et comment on | ||
| 25391 | peut les combiner dans une déclaration @code{operating-system}. Mais, déjà, | ||
| 25392 | comment les définir ? Et qu'est-ce qu'un service au fait ? | ||
| 25393 | |||
| 25394 | @menu | ||
| 25395 | * Composition de services:: Le modèle de composition des services. | ||
| 25396 | * Types service et services:: Types et services. | ||
| 25397 | * Référence de service:: Référence de l'API@. | ||
| 25398 | * Services Shepherd:: Un type de service particulier. | ||
| 25399 | @end menu | ||
| 25400 | |||
| 25401 | @node Composition de services | ||
| 25402 | @subsection Composition de services | ||
| 25403 | |||
| 25404 | @cindex services | ||
| 25405 | @cindex démons | ||
| 25406 | Ici nous définissons un @dfn{service} comme étant, assez largement, quelque | ||
| 25407 | chose qui étend la fonctionnalité d'un système d'exploitation. Souvent un | ||
| 25408 | service est un processus — un @dfn{démon} — démarré lorsque le système | ||
| 25409 | démarre : un serveur ssh, un serveur web, le démon de construction de Guix, | ||
| 25410 | etc. Parfois un service est un démon dont l'exécution peut être déclenchée | ||
| 25411 | par un autre démon — p.@: ex.@: un serveur FTP démarré par @command{inetd} | ||
| 25412 | ou un service D-Bus activé par @command{dbus-daemon}. Parfois, un service | ||
| 25413 | ne correspond pas à un démon. Par exemple, le service « de comptes » | ||
| 25414 | récupère la liste des comptes utilisateurs et s'assure qu'ils existent bien | ||
| 25415 | lorsque le système est lancé ; le service « udev » récupère les règles de | ||
| 25416 | gestion des périphériques et les rend disponible au démon eudev ; le service | ||
| 25417 | @file{/etc} rempli le répertoire @file{/etc} du système. | ||
| 25418 | |||
| 25419 | @cindex extensions de service | ||
| 25420 | Les services de Guix sont connectés par des @dfn{extensions}. Par exemple, | ||
| 25421 | le service ssh @dfn{étend} le Shepherd — le système d'initialisation de | ||
| 25422 | GuixSD, qui tourne en tant que PID@tie{}1 — en lui donnant les lignes de | ||
| 25423 | commande pour démarrer et arrêter le démon ssh (@pxref{Services réseau, | ||
| 25424 | @code{lsh-service}}) ; le service UPower étend le service D-Bus en lui | ||
| 25425 | passant sa spécification @file{.service} et étend le service udev en lui | ||
| 25426 | passant des règles de gestion de périphériques (@pxref{Services de bureaux, | ||
| 25427 | @code{upower-service}}) ; le démon Guix étend le Shepherd en lui passant les | ||
| 25428 | lignes de commande pour démarrer et arrêter le démon et étend le service de | ||
| 25429 | comptes en lui passant une liste des comptes utilisateurs de constructions | ||
| 25430 | requis (@pxref{Services de base}). | ||
| 25431 | |||
| 25432 | En définitive, les services et leurs relation « d'extensions » forment un | ||
| 25433 | graphe orienté acyclique (DAG). Si nous représentons les services comme des | ||
| 25434 | boîtes et les extensions comme des flèches, un système typique pourrait | ||
| 25435 | fournir quelque chose comme cela : | ||
| 25436 | |||
| 25437 | @image{images/service-graph,,5in,Graphe d'extension des services typique.} | ||
| 25438 | |||
| 25439 | @cindex service système | ||
| 25440 | En bas, on voit le @dfn{service système} qui produit le répertoire contenant | ||
| 25441 | tout et lançant et démarrant le système, renvoyé par la commande | ||
| 25442 | @command{guix system build}. @xref{Référence de service}, pour apprendre les | ||
| 25443 | autres types de services montrés ici. @xref{system-extension-graph, the | ||
| 25444 | @command{guix system extension-graph} command}, pour plus d'informations sur | ||
| 25445 | la manière de générer cette représentation pour une définition de système | ||
| 25446 | d'exploitation particulière. | ||
| 25447 | |||
| 25448 | @cindex types de services | ||
| 25449 | Techniquement, les développeurs peuvent définir des @dfn{types de services} | ||
| 25450 | pour exprimer ces relations. Il peut y avoir n'importe quel quantité de | ||
| 25451 | services d'un type donné sur le système — par exemple, un système sur lequel | ||
| 25452 | tournent deux instances du serveur ssh de GNU (lsh) a deux instance de | ||
| 25453 | @var{lsh-service-type}, avec des paramètres différents. | ||
| 25454 | |||
| 25455 | La section suivante décrit l'interface de programmation des types de | ||
| 25456 | services et des services. | ||
| 25457 | |||
| 25458 | @node Types service et services | ||
| 25459 | @subsection Types service et services | ||
| 25460 | |||
| 25461 | Un @dfn{type de service} est un nœud dans le DAG décrit plus haut. | ||
| 25462 | Commençons avec un exemple simple, le type de service pour le démon de | ||
| 25463 | construction de Guix (@pxref{Invoquer guix-daemon}) : | ||
| 25464 | |||
| 25465 | @example | ||
| 25466 | (define guix-service-type | ||
| 25467 | (service-type | ||
| 25468 | (name 'guix) | ||
| 25469 | (extensions | ||
| 25470 | (list (service-extension shepherd-root-service-type guix-shepherd-service) | ||
| 25471 | (service-extension account-service-type guix-accounts) | ||
| 25472 | (service-extension activation-service-type guix-activation))) | ||
| 25473 | (default-value (guix-configuration)))) | ||
| 25474 | @end example | ||
| 25475 | |||
| 25476 | @noindent | ||
| 25477 | Il définit trois choses : | ||
| 25478 | |||
| 25479 | @enumerate | ||
| 25480 | @item | ||
| 25481 | Un nom, dont le seul but de rendre l'inspection et le débogage plus faciles. | ||
| 25482 | |||
| 25483 | @item | ||
| 25484 | Une liste d'@dfn{extensions de services}, où chaque extension désigne le | ||
| 25485 | type de service cible et une procédure qui, étant donné les paramètres du | ||
| 25486 | service, renvoie une liste d'objets pour étendre le service de ce type. | ||
| 25487 | |||
| 25488 | Chaque type de service a au moins une extension de service. La seule | ||
| 25489 | exception est le @dfn{type de service boot}, qui est le service ultime. | ||
| 25490 | |||
| 25491 | @item | ||
| 25492 | Éventuellement, une valeur par défaut pour les instances de ce type. | ||
| 25493 | @end enumerate | ||
| 25494 | |||
| 25495 | In this example, @code{guix-service-type} extends three services: | ||
| 25496 | |||
| 25497 | @table @code | ||
| 25498 | @item shepherd-root-service-type | ||
| 25499 | The @code{guix-shepherd-service} procedure defines how the Shepherd service | ||
| 25500 | is extended. Namely, it returns a @code{<shepherd-service>} object that | ||
| 25501 | defines how @command{guix-daemon} is started and stopped (@pxref{Services Shepherd}). | ||
| 25502 | |||
| 25503 | @item account-service-type | ||
| 25504 | This extension for this service is computed by @code{guix-accounts}, which | ||
| 25505 | returns a list of @code{user-group} and @code{user-account} objects | ||
| 25506 | representing the build user accounts (@pxref{Invoquer guix-daemon}). | ||
| 25507 | |||
| 25508 | @item activation-service-type | ||
| 25509 | Here @code{guix-activation} is a procedure that returns a gexp, which is a | ||
| 25510 | code snippet to run at ``activation time''---e.g., when the service is | ||
| 25511 | booted. | ||
| 25512 | @end table | ||
| 25513 | |||
| 25514 | Un service de ce type est instancié de cette manière : | ||
| 25515 | |||
| 25516 | @example | ||
| 25517 | (service guix-service-type | ||
| 25518 | (guix-configuration | ||
| 25519 | (build-accounts 5) | ||
| 25520 | (use-substitutes? #f))) | ||
| 25521 | @end example | ||
| 25522 | |||
| 25523 | Le deuxième argument de la forme @code{service} est une valeur représentant | ||
| 25524 | les paramètres de cet instance spécifique du service. | ||
| 25525 | @xref{guix-configuration-type, @code{guix-configuration}}, pour plus | ||
| 25526 | d'informations sur le type de données @code{guix-configuration}. Lorsque la | ||
| 25527 | valeur est omise, la valeur par défaut spécifiée par | ||
| 25528 | @code{guix-service-type} est utilisée : | ||
| 25529 | |||
| 25530 | @example | ||
| 25531 | (service guix-service-type) | ||
| 25532 | @end example | ||
| 25533 | |||
| 25534 | @code{guix-service-type} is quite simple because it extends other services | ||
| 25535 | but is not extensible itself. | ||
| 25536 | |||
| 25537 | @c @subsubsubsection Extensible Service Types | ||
| 25538 | |||
| 25539 | Le type de service pour un service @emph{extensible} ressemble à ceci : | ||
| 25540 | |||
| 25541 | @example | ||
| 25542 | (define udev-service-type | ||
| 25543 | (service-type (name 'udev) | ||
| 25544 | (extensions | ||
| 25545 | (list (service-extension shepherd-root-service-type | ||
| 25546 | udev-shepherd-service))) | ||
| 25547 | |||
| 25548 | (compose concatenate) ; concatène la liste des règles | ||
| 25549 | (extend (lambda (config rules) | ||
| 25550 | (match config | ||
| 25551 | (($ <udev-configuration> udev initial-rules) | ||
| 25552 | (udev-configuration | ||
| 25553 | (udev udev) ; le paquet udev à utiliser | ||
| 25554 | (rules (append initial-rules rules))))))))) | ||
| 25555 | @end example | ||
| 25556 | |||
| 25557 | This is the service type for the | ||
| 25558 | @uref{https://wiki.gentoo.org/wiki/Project:Eudev, eudev device management | ||
| 25559 | daemon}. Compared to the previous example, in addition to an extension of | ||
| 25560 | @code{shepherd-root-service-type}, we see two new fields: | ||
| 25561 | |||
| 25562 | @table @code | ||
| 25563 | @item compose | ||
| 25564 | C'est la procédure pour @dfn{composer} la liste des extensions de services | ||
| 25565 | de ce type. | ||
| 25566 | |||
| 25567 | Les services peuvent étendre le service udev en lui passant des listes de | ||
| 25568 | règles ; on compose ces extensions simplement en les concaténant. | ||
| 25569 | |||
| 25570 | @item extend | ||
| 25571 | Cette procédure définie comme la valeur du service est @dfn{étendue} avec la | ||
| 25572 | composition des extensions. | ||
| 25573 | |||
| 25574 | Les extensions Udev sont composés en une liste de règles, mais la valeur du | ||
| 25575 | service udev est elle-même un enregistrement @code{<udev-configuration>}. | ||
| 25576 | Donc ici, nous étendons cet enregistrement en ajoutant la liste des règle | ||
| 25577 | contribuées à la liste des règles qu'il contient déjà. | ||
| 25578 | |||
| 25579 | @item description | ||
| 25580 | C'est une chaîne donnant un aperçu du type de service. Elle peut contenir | ||
| 25581 | du balisage Texinfo (@pxref{Overview,,, texinfo, GNU Texinfo}). La commande | ||
| 25582 | @command{guix system search} permet de rechercher dans ces chaînes et de les | ||
| 25583 | afficher (@pxref{Invoquer guix system}). | ||
| 25584 | @end table | ||
| 25585 | |||
| 25586 | There can be only one instance of an extensible service type such as | ||
| 25587 | @code{udev-service-type}. If there were more, the @code{service-extension} | ||
| 25588 | specifications would be ambiguous. | ||
| 25589 | |||
| 25590 | Toujours ici ? La section suivante fournit une référence de l'interface de | ||
| 25591 | programmation des services. | ||
| 25592 | |||
| 25593 | @node Référence de service | ||
| 25594 | @subsection Référence de service | ||
| 25595 | |||
| 25596 | Nous avons vu un résumé des types de services (@pxref{Types service et services}). Cette section fournit une référence sur la manière de manipuler | ||
| 25597 | les services et les types de services. Cette interface est fournie par le | ||
| 25598 | module @code{(gnu services)}. | ||
| 25599 | |||
| 25600 | @deffn {Procédure Scheme} service @var{type} [@var{value}] | ||
| 25601 | Renvoie un nouveau service de type @var{type}, un objet | ||
| 25602 | @code{<service-type>} (voir plus bas). @var{value}peut être n'importe quel | ||
| 25603 | objet ; il représente les paramètres de cette instance particulière du | ||
| 25604 | service. | ||
| 25605 | |||
| 25606 | Lorsque @var{value} est omise, la valeur par défaut spécifiée par @var{type} | ||
| 25607 | est utilisée ; si @var{type} ne spécifie pas de valeur par défaut, une | ||
| 25608 | erreur est levée. | ||
| 25609 | |||
| 25610 | Par exemple ceci : | ||
| 25611 | |||
| 25612 | @example | ||
| 25613 | (service openssh-service-type) | ||
| 25614 | @end example | ||
| 25615 | |||
| 25616 | @noindent | ||
| 25617 | est équivalent à ceci : | ||
| 25618 | |||
| 25619 | @example | ||
| 25620 | (service openssh-service-type | ||
| 25621 | (openssh-configuration)) | ||
| 25622 | @end example | ||
| 25623 | |||
| 25624 | Dans les deux cas le résultat est une instance de | ||
| 25625 | @code{openssh-service-type} avec la configuration par défaut. | ||
| 25626 | @end deffn | ||
| 25627 | |||
| 25628 | @deffn {Procédure Scheme} service? @var{obj} | ||
| 25629 | Renvoie vrai si @var{obj} est un service. | ||
| 25630 | @end deffn | ||
| 25631 | |||
| 25632 | @deffn {Procédure Scheme} service-kind @var{service} | ||
| 25633 | Renvoie le type de @var{service} — c.-à-d.@: un objet @code{<service-type>}. | ||
| 25634 | @end deffn | ||
| 25635 | |||
| 25636 | @deffn {Procédure Scheme} service-value @var{service} | ||
| 25637 | Renvoie la valeur associée à @var{service}. Elle représente ses paramètres. | ||
| 25638 | @end deffn | ||
| 25639 | |||
| 25640 | Voici un exemple de la manière dont un service est créé et manipulé : | ||
| 25641 | |||
| 25642 | @example | ||
| 25643 | (define s | ||
| 25644 | (service nginx-service-type | ||
| 25645 | (nginx-configuration | ||
| 25646 | (nginx nginx) | ||
| 25647 | (log-directory log-directory) | ||
| 25648 | (run-directory run-directory) | ||
| 25649 | (file config-file)))) | ||
| 25650 | |||
| 25651 | (service? s) | ||
| 25652 | @result{} #t | ||
| 25653 | |||
| 25654 | (eq? (service-kind s) nginx-service-type) | ||
| 25655 | @result{} #t | ||
| 25656 | @end example | ||
| 25657 | |||
| 25658 | The @code{modify-services} form provides a handy way to change the | ||
| 25659 | parameters of some of the services of a list such as @code{%base-services} | ||
| 25660 | (@pxref{Services de base, @code{%base-services}}). It evaluates to a list of | ||
| 25661 | services. Of course, you could always use standard list combinators such as | ||
| 25662 | @code{map} and @code{fold} to do that (@pxref{SRFI-1, List Library,, guile, | ||
| 25663 | GNU Guile Reference Manual}); @code{modify-services} simply provides a more | ||
| 25664 | concise form for this common pattern. | ||
| 25665 | |||
| 25666 | @deffn {Syntaxe Scheme} modify-services @var{services} @ | ||
| 25667 | (@var{type} @var{variable} => @var{body}) @dots{} | ||
| 25668 | |||
| 25669 | Modifie les services listés dans @var{services} en fonction des clauses | ||
| 25670 | données. Chaque clause à la forme : | ||
| 25671 | |||
| 25672 | @example | ||
| 25673 | (@var{type} @var{variable} => @var{body}) | ||
| 25674 | @end example | ||
| 25675 | |||
| 25676 | où @var{type} est un type de service — p.@: ex.@: @code{guix-service-type} — | ||
| 25677 | et @var{variable} est un identifiant lié dans @var{body} aux paramètres du | ||
| 25678 | service — p.@: ex.@: une instance de @code{guix-configuration} — du service | ||
| 25679 | original de ce @var{type}. | ||
| 25680 | |||
| 25681 | La variable @var{body} devrait s'évaluer en de nouveaux paramètres de | ||
| 25682 | service, qui seront utilisés pour configurer le nouveau service. Ce nouveau | ||
| 25683 | service remplacera l'original dans la liste qui en résulte. Comme les | ||
| 25684 | paramètres d'un service sont créés avec @code{define-record-type*}, vous | ||
| 25685 | pouvez écrire un @var{body} court qui s'évalue en de nouveaux paramètres | ||
| 25686 | pour le services en utilisant @code{inherit}, fourni par | ||
| 25687 | @code{define-record-type*}. | ||
| 25688 | |||
| 25689 | @xref{Utiliser le système de configuration} pour des exemples d'utilisation. | ||
| 25690 | |||
| 25691 | @end deffn | ||
| 25692 | |||
| 25693 | Suit l'interface de programmation des types de services. Vous devrez la | ||
| 25694 | connaître pour écrire de nouvelles définitions de services, mais pas | ||
| 25695 | forcément lorsque vous cherchez des manières simples de personnaliser votre | ||
| 25696 | déclaration @code{operating-system}. | ||
| 25697 | |||
| 25698 | @deftp {Type de données} service-type | ||
| 25699 | @cindex type de service | ||
| 25700 | C'est la représentation d'un @dfn{type de service} (@pxref{Types service et services}). | ||
| 25701 | |||
| 25702 | @table @asis | ||
| 25703 | @item @code{name} | ||
| 25704 | C'est un symbole, utilisé seulement pour simplifier l'inspection et le | ||
| 25705 | débogage. | ||
| 25706 | |||
| 25707 | @item @code{extensions} | ||
| 25708 | Une liste non-vide d'objets @code{<service-extension>} (voir plus bas). | ||
| 25709 | |||
| 25710 | @item @code{compose} (par défaut : @code{#f}) | ||
| 25711 | S'il s'agit de @code{#f}, le type de service dénote des services qui ne | ||
| 25712 | peuvent pas être étendus — c.-à-d.@: qui ne reçoivent pas de « valeurs » | ||
| 25713 | d'autres services. | ||
| 25714 | |||
| 25715 | Sinon, ce doit être une procédure à un argument. La procédure est appelée | ||
| 25716 | par @code{fold-services} et on lui passe une liste de valeurs collectées par | ||
| 25717 | les extensions. Elle peut renvoyer n'importe quelle valeur simple. | ||
| 25718 | |||
| 25719 | @item @code{extend} (par défaut : @code{#f}) | ||
| 25720 | Si la valeur est @code{#f}, les services de ce type ne peuvent pas être | ||
| 25721 | étendus. | ||
| 25722 | |||
| 25723 | Sinon, il doit s'agir 'une procédure à deux arguments : @code{fold-services} | ||
| 25724 | l'appelle et lui passe la valeur initiale du service comme premier argument | ||
| 25725 | et le résultat de l'application de @code{compose} sur les valeurs | ||
| 25726 | d'extension en second argument. Elle doit renvoyer une valeur qui est une | ||
| 25727 | valeur de paramètre valide pour l'instance du service. | ||
| 25728 | @end table | ||
| 25729 | |||
| 25730 | @xref{Types service et services}, pour des exemples. | ||
| 25731 | @end deftp | ||
| 25732 | |||
| 25733 | @deffn {Procédure Scheme} service-extension @var{target-type} @ | ||
| 25734 | @var{compute} | ||
| 25735 | Renvoie une nouvelle extension pour les services de type @var{target-type}. | ||
| 25736 | @var{compute} doit être une procédure à un argument : @code{fold-services} | ||
| 25737 | l'appelle et lui passe la valeur associée au service qui fournit cette | ||
| 25738 | extension ; elle doit renvoyer une valeur valide pour le service cible. | ||
| 25739 | @end deffn | ||
| 25740 | |||
| 25741 | @deffn {Procédure Scheme} service-extension? @var{obj} | ||
| 25742 | Renvoie vrai si @var{obj} est une extension de service. | ||
| 25743 | @end deffn | ||
| 25744 | |||
| 25745 | Parfois, vous voudrez simplement étendre un service existant. Cela implique | ||
| 25746 | de créer un nouveau type de service et de spécifier l'extension qui vous | ||
| 25747 | intéresse, ce qui peut être assez verbeux ; la procédure | ||
| 25748 | @code{simple-service} fournit un raccourci pour ce cas. | ||
| 25749 | |||
| 25750 | @deffn {Procédure Scheme} simple-service @var{name} @var{target} @var{value} | ||
| 25751 | Renvoie un service qui étend @var{target} avec @var{value}. Cela fonctionne | ||
| 25752 | en créant un type de service singleton @var{name}, dont le service renvoyé | ||
| 25753 | est une instance. | ||
| 25754 | |||
| 25755 | Par exemple, cela étend mcron (@pxref{Exécution de tâches planifiées}) avec une | ||
| 25756 | tâche supplémentaire : | ||
| 25757 | |||
| 25758 | @example | ||
| 25759 | (simple-service 'my-mcron-job mcron-service-type | ||
| 25760 | #~(job '(next-hour (3)) "guix gc -F 2G")) | ||
| 25761 | @end example | ||
| 25762 | @end deffn | ||
| 25763 | |||
| 25764 | Au cœur de l'abstraction des services se cache la procédure | ||
| 25765 | @code{fold-services}, responsable de la « compilation » d'une liste de | ||
| 25766 | services en un répertoire unique qui contient tout ce qui est nécessaire au | ||
| 25767 | démarrage et à l'exécution du système — le répertoire indiqué par la | ||
| 25768 | commande @command{guix system build} (@pxref{Invoquer guix system}). En | ||
| 25769 | soit, elle propage les extensions des services le long du graphe des | ||
| 25770 | services, en mettant à jour chaque paramètre des nœuds sur son chemin, | ||
| 25771 | jusqu'à atteindre le nœud racine. | ||
| 25772 | |||
| 25773 | @deffn {Procédure Scheme} fold-services @var{services} @ | ||
| 25774 | [#:target-type @var{system-service-type}] | ||
| 25775 | Replie @var{services} en propageant leurs extensions jusqu'à la racine de | ||
| 25776 | type @var{target-type} ; renvoie le service racine ajusté de cette manière. | ||
| 25777 | @end deffn | ||
| 25778 | |||
| 25779 | Enfin, le module @code{(gnu services)} définie aussi divers types de | ||
| 25780 | services essentiels, dont certains sont listés ci-dessous. | ||
| 25781 | |||
| 25782 | @defvr {Variable Scheme} system-service-type | ||
| 25783 | C'est la racine du graphe des services. Il produit le répertoire du système | ||
| 25784 | renvoyé par la commande @command{guix system build}. | ||
| 25785 | @end defvr | ||
| 25786 | |||
| 25787 | @defvr {Variable Scheme} boot-service-type | ||
| 25788 | Le type du service « boot », qui produit le @dfn{script de démarrage}. Le | ||
| 25789 | script de démarrage est ce que le disque de RAM initial lance au démarrage. | ||
| 25790 | @end defvr | ||
| 25791 | |||
| 25792 | @defvr {Variable Scheme} etc-service-type | ||
| 25793 | Le type du service @file{/etc}. Ce service est utilisé pour créer des | ||
| 25794 | fichiers dans @file{/etc} et peut être étendu en lui passant des tuples | ||
| 25795 | nom/fichier comme ceci : | ||
| 25796 | |||
| 25797 | @example | ||
| 25798 | (list `("issue" ,(plain-file "issue" "Bienvenue !\n"))) | ||
| 25799 | @end example | ||
| 25800 | |||
| 25801 | Dans cet exemple, l'effet serait d'ajouter un fichier @file{/etc/issue} | ||
| 25802 | pointant vers le fichier donné. | ||
| 25803 | @end defvr | ||
| 25804 | |||
| 25805 | @defvr {Variable Scheme} setuid-program-service-type | ||
| 25806 | Le type du « service setuid ». Ce service récupère des listes de noms de | ||
| 25807 | fichiers exécutables, passés en tant que gexps, et les ajoute à l'ensemble | ||
| 25808 | des programmes setuid root sur le système (@pxref{Programmes setuid}). | ||
| 25809 | @end defvr | ||
| 25810 | |||
| 25811 | @defvr {Variable Scheme} profile-service-type | ||
| 25812 | De type du service qui rempli le @dfn{profil du système} — c.-à-d.@: les | ||
| 25813 | programmes dans @file{/run/current-system/profile}. Les autres services | ||
| 25814 | peuvent l'étendre en lui passant des listes de paquets à ajouter au profil | ||
| 25815 | du système. | ||
| 25816 | @end defvr | ||
| 25817 | |||
| 25818 | |||
| 25819 | @node Services Shepherd | ||
| 25820 | @subsection Services Shepherd | ||
| 25821 | |||
| 25822 | @cindex services shepherd | ||
| 25823 | @cindex PID 1 | ||
| 25824 | @cindex système d'init | ||
| 25825 | Le module @code{(gnu services shepherd)} fournit une manière de définir les | ||
| 25826 | services gérés par le GNU@tie{}Shepherd, qui est le système d'initialisation | ||
| 25827 | — le premier processus démarré lorsque le système démarre, aussi connu comme | ||
| 25828 | étant le PID@tie{}1 (@pxref{Introduction,,, shepherd, The GNU Shepherd | ||
| 25829 | Manual}). | ||
| 25830 | |||
| 25831 | Les services dans le Shepherd peuvent dépendre les uns des autres. Par | ||
| 25832 | exemple, le démon SSH peut avoir besoin d'être démarré après le démon | ||
| 25833 | syslog, qui à son tour doit être démarré après le montage des systèmes de | ||
| 25834 | fichiers. Le système d'exploitation simple déclaré précédemment | ||
| 25835 | (@pxref{Utiliser le système de configuration}) crée un graphe de service comme | ||
| 25836 | ceci : | ||
| 25837 | |||
| 25838 | @image{images/shepherd-graph,,5in,Graphe de service typique du shepherd.} | ||
| 25839 | |||
| 25840 | Vous pouvez générer un tel graphe pour n'importe quelle définition de | ||
| 25841 | système d'exploitation avec la commande @command{guix system shepherd-graph} | ||
| 25842 | (@pxref{system-shepherd-graph, @command{guix system shepherd-graph}}). | ||
| 25843 | |||
| 25844 | The @code{%shepherd-root-service} is a service object representing | ||
| 25845 | PID@tie{}1, of type @code{shepherd-root-service-type}; it can be extended by | ||
| 25846 | passing it lists of @code{<shepherd-service>} objects. | ||
| 25847 | |||
| 25848 | @deftp {Type de données} shepherd-service | ||
| 25849 | Le type de données représentant un service géré par le Shepherd. | ||
| 25850 | |||
| 25851 | @table @asis | ||
| 25852 | @item @code{provision} | ||
| 25853 | C'est une liste de symboles dénotant ce que le service fournit. | ||
| 25854 | |||
| 25855 | Ce sont les noms qui peuvent être passés à @command{herd start}, | ||
| 25856 | @command{herd status} et les commandes similaires (@pxref{Invoking herd,,, | ||
| 25857 | shepherd, The GNU Shepherd Manual}). @xref{Slots of services, the | ||
| 25858 | @code{provides} slot,, shepherd, The GNU Shepherd Manual}, pour plus de | ||
| 25859 | détails. | ||
| 25860 | |||
| 25861 | @item @code{requirements} (par défaut : @code{'()}) | ||
| 25862 | Liste de symboles dénotant les services du Shepherd dont celui-ci dépend. | ||
| 25863 | |||
| 25864 | @item @code{respawn?} (par défaut : @code{#t}) | ||
| 25865 | Indique s'il faut redémarrer le service lorsqu'il s'arrête, par exemple si | ||
| 25866 | le processus sous-jacent meurt. | ||
| 25867 | |||
| 25868 | @item @code{start} | ||
| 25869 | @itemx @code{stop} (par défaut : @code{#~(const #f)}) | ||
| 25870 | Les champs @code{start} et @code{stop} se réfèrent à la capacité du Shepherd | ||
| 25871 | de démarrer et d'arrêter des processus (@pxref{Service De- and | ||
| 25872 | Constructors,,, shepherd, The GNU Shepherd Manual}). Ils sont donnés comme | ||
| 25873 | des G-expressions qui sont étendues dans le fichier de configuration du | ||
| 25874 | Shepherd (@pxref{G-Expressions}). | ||
| 25875 | |||
| 25876 | @item @code{actions} (par défaut : @code{'()}) | ||
| 25877 | @cindex action, des services Shepherd | ||
| 25878 | C'est une liste d'objets @code{shepherd-action} (voir plus bas) définissant | ||
| 25879 | des @dfn{actions} supportées par le service, en plus des actions | ||
| 25880 | @code{start} et @code{stop} standards. Les actions listées ici sont | ||
| 25881 | disponibles en tant que sous-commande de @command{herd} : | ||
| 25882 | |||
| 25883 | @example | ||
| 25884 | herd @var{action} @var{service} [@var{arguments}@dots{}] | ||
| 25885 | @end example | ||
| 25886 | |||
| 25887 | @item @code{documentation} | ||
| 25888 | Une chaîne de documentation, montrée lorsqu'on lance : | ||
| 25889 | |||
| 25890 | @example | ||
| 25891 | herd doc @var{service-name} | ||
| 25892 | @end example | ||
| 25893 | |||
| 25894 | where @var{service-name} is one of the symbols in @code{provision} | ||
| 25895 | (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual}). | ||
| 25896 | |||
| 25897 | @item @code{modules} (default: @code{%default-modules}) | ||
| 25898 | C'est la liste des modules qui doivent être dans le contexte lorsque | ||
| 25899 | @code{start} et @code{stop} sont évalués. | ||
| 25900 | |||
| 25901 | @end table | ||
| 25902 | @end deftp | ||
| 25903 | |||
| 25904 | @deftp {Type de données} shepherd-action | ||
| 25905 | C'est le type de données qui définie des actions supplémentaires | ||
| 25906 | implémentées par un service Shepherd (voir au-dessus). | ||
| 25907 | |||
| 25908 | @table @code | ||
| 25909 | @item name | ||
| 25910 | Symbole nommant l'action. | ||
| 25911 | |||
| 25912 | @item documentation | ||
| 25913 | C'est une chaîne de documentation pour l'action. Elle peut être consultée | ||
| 25914 | avec : | ||
| 25915 | |||
| 25916 | @example | ||
| 25917 | herd doc @var{service} action @var{action} | ||
| 25918 | @end example | ||
| 25919 | |||
| 25920 | @item procedure | ||
| 25921 | Cela devrait être une gexp qui s'évalue en une procédure à au moins un | ||
| 25922 | argument, la « valeur de lancement » du service (@pxref{Slots of services,,, | ||
| 25923 | shepherd, The GNU Shepherd Manual}). | ||
| 25924 | @end table | ||
| 25925 | |||
| 25926 | L'exemple suivant définie une action nommée @code{dire-bonjour} qui salue | ||
| 25927 | amicalement l'utilisateur : | ||
| 25928 | |||
| 25929 | @example | ||
| 25930 | (shepherd-action | ||
| 25931 | (name 'dire-bonjour) | ||
| 25932 | (documentation "Dit salut !") | ||
| 25933 | (procedure #~(lambda (running . args) | ||
| 25934 | (format #t "Salut, l'ami ! arguments : ~s\n" | ||
| 25935 | args) | ||
| 25936 | #t))) | ||
| 25937 | @end example | ||
| 25938 | |||
| 25939 | En supposant que cette action est ajoutée dans le service @code{example}, | ||
| 25940 | vous pouvez écrire : | ||
| 25941 | |||
| 25942 | @example | ||
| 25943 | # herd dire-bonjour example | ||
| 25944 | Salut, l'ami ! arguments : () | ||
| 25945 | # herd dire-bonjour example a b c | ||
| 25946 | Salut, l'ami ! arguments : ("a" "b" "c") | ||
| 25947 | @end example | ||
| 25948 | |||
| 25949 | Comme vous pouvez le voir, c'est une manière assez sophistiquée de dire | ||
| 25950 | bonjour. @xref{Service Convenience,,, shepherd, The GNU Shepherd Manual}, | ||
| 25951 | pour plus d'informations sur les actions. | ||
| 25952 | @end deftp | ||
| 25953 | |||
| 25954 | @defvr {Variable Scheme} shepherd-root-service-type | ||
| 25955 | Le type de service pour le « service racine » du Shepherd — c.-à-d.@: le | ||
| 25956 | PID@tie{}1. | ||
| 25957 | |||
| 25958 | C'est le type de service que les extensions ciblent lorqu'elles veulent | ||
| 25959 | créer un service shepherd (@pxref{Types service et services}, pour un | ||
| 25960 | exemple). Chaque extension doit passer une liste de | ||
| 25961 | @code{<shepherd-service>}. | ||
| 25962 | @end defvr | ||
| 25963 | |||
| 25964 | @defvr {Variable Scheme} %shepherd-root-service | ||
| 25965 | Ce service représente le PID@tie{}1. | ||
| 25966 | @end defvr | ||
| 25967 | |||
| 25968 | |||
| 25969 | @node Documentation | ||
| 25970 | @chapter Documentation | ||
| 25971 | |||
| 25972 | @cindex documentation, recherche | ||
| 25973 | @cindex chercher de la documentation | ||
| 25974 | @cindex Info, format de documentation | ||
| 25975 | @cindex man, pages de manuel | ||
| 25976 | @cindex pages de manuel | ||
| 25977 | Dans la plupart des cas les paquets installés avec Guix ont une | ||
| 25978 | documentation. Il y a deux formats de documentation principaux : « Info », | ||
| 25979 | un format hypertexte navigable utilisé par les logiciels GNU et les « pages | ||
| 25980 | de manuel » (ou « pages de man »), le format de documentation linéaire | ||
| 25981 | traditionnel chez Unix. Les manuels Info sont disponibles via la commande | ||
| 25982 | @command{info} ou avec Emacs, et les pages de man sont accessibles via la | ||
| 25983 | commande @command{man}. | ||
| 25984 | |||
| 25985 | Vous pouvez chercher de la documentation pour les logiciels installés sur | ||
| 25986 | votre système par mot-clef. Par exemple, la commande suivante recherche des | ||
| 25987 | informations sur « TLS » dans les manuels Info : | ||
| 25988 | |||
| 25989 | @example | ||
| 25990 | $ info -k TLS | ||
| 25991 | "(emacs)Network Security" -- STARTTLS | ||
| 25992 | "(emacs)Network Security" -- TLS | ||
| 25993 | "(gnutls)Core TLS API" -- gnutls_certificate_set_verify_flags | ||
| 25994 | "(gnutls)Core TLS API" -- gnutls_certificate_set_verify_function | ||
| 25995 | @dots{} | ||
| 25996 | @end example | ||
| 25997 | |||
| 25998 | @noindent | ||
| 25999 | La commande suivante recherche le même mot-clef dans les pages de man : | ||
| 26000 | |||
| 26001 | @example | ||
| 26002 | $ man -k TLS | ||
| 26003 | SSL (7) - OpenSSL SSL/TLS library | ||
| 26004 | certtool (1) - GnuTLS certificate tool | ||
| 26005 | @dots {} | ||
| 26006 | @end example | ||
| 26007 | |||
| 26008 | Ces recherches sont purement locales à votre ordinateur donc vous savez que | ||
| 26009 | la documentation trouvée correspond à ce qui est effectivement installé, | ||
| 26010 | vous pouvez y accéder hors ligne et votre vie privée est préservée. | ||
| 26011 | |||
| 26012 | Une fois que vous avez ces résultats, vous pouvez visualiser la | ||
| 26013 | documentation appropriée avec, disons : | ||
| 26014 | |||
| 26015 | @example | ||
| 26016 | $ info "(gnutls)Core TLS API" | ||
| 26017 | @end example | ||
| 26018 | |||
| 26019 | @noindent | ||
| 26020 | ou : | ||
| 26021 | |||
| 26022 | @example | ||
| 26023 | $ man certtool | ||
| 26024 | @end example | ||
| 26025 | |||
| 26026 | Les manuels Info contiennent des sections et des indexs ainsi que des | ||
| 26027 | hyperliens comme ce qu'on trouve sur les pages Web. Le lecteur | ||
| 26028 | @command{info} (@pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}) | ||
| 26029 | et sa contre-partie dans Emacs (@pxref{Misc Help,,, emacs, The GNU Emacs | ||
| 26030 | Manual}) fournissent des raccourcis claviers intuitifs pour naviguer dans | ||
| 26031 | les manuels @xref{Getting Started,,, info, Info: An Introduction} pour | ||
| 26032 | trouver une introduction sur la navigation dans info. | ||
| 26033 | |||
| 26034 | @node Installer les fichiers de débogage | ||
| 26035 | @chapter Installer les fichiers de débogage | ||
| 26036 | |||
| 26037 | @cindex fichiers de débogage | ||
| 26038 | Les binaires des programmes, produits par les compilateurs GCC par exemple, | ||
| 26039 | sont typiquement écrits au format ELF, avec une section contenant des | ||
| 26040 | @dfn{informations de débogage}. Les informations de débogage sont ce qui | ||
| 26041 | permet au débogueur, GDB, de relier le code binaire et le code source ; | ||
| 26042 | elles sont requises pour déboguer un programme compilé dans de bonnes | ||
| 26043 | conditions. | ||
| 26044 | |||
| 26045 | Le problème avec les informations de débogage est qu'elles prennent pas mal | ||
| 26046 | de place sur le disque. Par exemple, les informations de débogage de la | ||
| 26047 | bibliothèque C de GNU prend plus de 60 Mo. Ainsi, en tant qu'utilisateur, | ||
| 26048 | garder toutes les informations de débogage de tous les programmes installés | ||
| 26049 | n'est souvent pas une possibilité. Cependant, l'économie d'espace ne devrait | ||
| 26050 | pas empêcher le débogage — en particulier, dans le système GNU, qui devrait | ||
| 26051 | faciliter pour ses utilisateurs l'exercice de leurs libertés | ||
| 26052 | (@pxref{Distribution GNU}). | ||
| 26053 | |||
| 26054 | Heureusement, les utilitaires binaires de GNU (Binutils) et GDB fournissent | ||
| 26055 | un mécanisme qui permet aux utilisateurs d'avoir le meilleur des deux mondes | ||
| 26056 | : les informations de débogage peuvent être nettoyées des binaires et | ||
| 26057 | stockées dans des fichiers séparés. GDB peut ensuite charger les | ||
| 26058 | informations de débogage depuis ces fichiers, lorsqu'elles sont disponibles | ||
| 26059 | (@pxref{Separate Debug Files,,, gdb, Debugging with GDB}). | ||
| 26060 | |||
| 26061 | La distribution GNU se sert de cela pour stocker les informations de | ||
| 26062 | débogage dans le sous-répertoire @code{lib/debug} d'une sortie séparée du | ||
| 26063 | paquet appelée sans grande imagination @code{debug} (@pxref{Des paquets avec plusieurs résultats}). Les utilisateurs peuvent choisir d'installer la sortie | ||
| 26064 | @code{debug} d'un paquet lorsqu'ils en ont besoin. Par exemple, la commande | ||
| 26065 | suivante installe les informations de débogage pour la bibliothèque C de GNU | ||
| 26066 | et pour GNU Guile : | ||
| 26067 | |||
| 26068 | @example | ||
| 26069 | guix package -i glibc:debug guile:debug | ||
| 26070 | @end example | ||
| 26071 | |||
| 26072 | On doit ensuite dire à GDB de chercher les fichiers de débogage dans le | ||
| 26073 | profil de l'utilisateur, en remplissant la variable | ||
| 26074 | @code{debug-file-directory} (vous pourriez aussi l'instancier depuis le | ||
| 26075 | fichier @file{~/.gdbinit}, @pxref{Startup,,, gdb, Debugging with GDB}) : | ||
| 26076 | |||
| 26077 | @example | ||
| 26078 | (gdb) set debug-file-directory ~/.guix-profile/lib/debug | ||
| 26079 | @end example | ||
| 26080 | |||
| 26081 | À partir de maintenant, GDB récupérera les informations de débogage dans les | ||
| 26082 | fichiers @code{.debug} de @file{~/.guix-profile/lib/debug}. | ||
| 26083 | |||
| 26084 | EN plus, vous voudrez sans doute que GDB puisse montrer le code source | ||
| 26085 | débogué. Pour cela, vous devrez désarchiver le code source du paquet qui | ||
| 26086 | vous intéresse (obtenu via @code{guix build --source}, @pxref{Invoquer guix build}) et pointer GDB vers ce répertoire des sources avec la commande | ||
| 26087 | @code{directory} (@pxref{Source Path, @code{directory},, gdb, Debugging with | ||
| 26088 | GDB}). | ||
| 26089 | |||
| 26090 | @c XXX: keep me up-to-date | ||
| 26091 | Le mécanisme de la sortie @code{debug} dans Guix est implémenté par le | ||
| 26092 | @code{gnu-build-system} (@pxref{Systèmes de construction}). Actuellement, ce n'est pas | ||
| 26093 | obligatoire — les informations de débogage sont disponibles uniquement si | ||
| 26094 | les définitions déclarent explicitement une sortie @code{debug}. Cela | ||
| 26095 | pourrait être modifié tout en permettant aux paquets de s'en passer dans le | ||
| 26096 | futur si nos serveurs de construction peuvent tenir la charge. Pour | ||
| 26097 | vérifier si un paquet a une sortie @code{debug}, utilisez @command{guix | ||
| 26098 | package --list-available} (@pxref{Invoquer guix package}). | ||
| 26099 | |||
| 26100 | |||
| 26101 | @node Mises à jour de sécurité | ||
| 26102 | @chapter Mises à jour de sécurité | ||
| 26103 | |||
| 26104 | @cindex mises à jour de sécurité | ||
| 26105 | @cindex vulnérabilités | ||
| 26106 | Parfois, des vulnérabilités importantes sont découvertes dans les paquets | ||
| 26107 | logiciels et doivent être corrigées. Les développeurs de Guix essayent de | ||
| 26108 | suivre les vulnérabilités connues et d'appliquer des correctifs aussi vite | ||
| 26109 | que possible dans la branche @code{master} de Guix (nous n'avons pas encore | ||
| 26110 | de branche « stable » contenant seulement des mises à jour de sécurité). | ||
| 26111 | L'outil @command{guix lint} aide les développeurs à trouver les versions | ||
| 26112 | vulnérables des paquets logiciels dans la distribution : | ||
| 26113 | |||
| 26114 | @smallexample | ||
| 26115 | $ guix lint -c cve | ||
| 26116 | gnu/packages/base.scm:652:2: glibc@@2.21: probablement vulnérable à CVE-2015-1781, CVE-2015-7547 | ||
| 26117 | gnu/packages/gcc.scm:334:2: gcc@@4.9.3: probablement vulnérable à CVE-2015-5276 | ||
| 26118 | gnu/packages/image.scm:312:2: openjpeg@@2.1.0: probablement vulnérable à CVE-2016-1923, CVE-2016-1924 | ||
| 26119 | @dots{} | ||
| 26120 | @end smallexample | ||
| 26121 | |||
| 26122 | @xref{Invoquer guix lint}, pour plus d'informations. | ||
| 26123 | |||
| 26124 | @quotation Remarque | ||
| 26125 | À la version @value{VERSION}, la fonctionnalité ci-dessous est considérée | ||
| 26126 | comme « bêta ». | ||
| 26127 | @end quotation | ||
| 26128 | |||
| 26129 | Guix suit une discipline de gestion de paquets fonctionnelle | ||
| 26130 | (@pxref{Introduction}), ce qui implique que lorsqu'un paquet change, | ||
| 26131 | @emph{tous les paquets qui en dépendent} doivent être reconstruits. Cela | ||
| 26132 | peut grandement ralentir le déploiement de corrections dans les paquets du | ||
| 26133 | cœur comme libc ou bash comme presque toute la distribution aurait besoin | ||
| 26134 | d'être reconstruite. Cela aide d'utiliser des binaires pré-construits | ||
| 26135 | (@pxref{Substituts}), mais le déploiement peut toujours prendre plus de | ||
| 26136 | temps de souhaité. | ||
| 26137 | |||
| 26138 | @cindex greffes | ||
| 26139 | Pour corriger cela, Guix implémente les @dfn{greffes}, un mécanisme qui | ||
| 26140 | permet un déploiement rapide des mises à jour de sécurité critiques sans le | ||
| 26141 | coût associé à une reconstruction complète de la distribution. L'idée est | ||
| 26142 | de reconstruire uniquement le paquet qui doit être corrigé puis de le « | ||
| 26143 | greffer » sur les paquets qui sont explicitement installés par l'utilisateur | ||
| 26144 | et qui se référaient avant au paquet d'origine. Le coût d'une greffe est | ||
| 26145 | typiquement très bas, et plusieurs ordres de grandeurs moins élevé que de | ||
| 26146 | reconstruire tout la chaîne de dépendance. | ||
| 26147 | |||
| 26148 | @cindex remplacement de paquet, pour les greffes | ||
| 26149 | For instance, suppose a security update needs to be applied to Bash. Guix | ||
| 26150 | developers will provide a package definition for the ``fixed'' Bash, say | ||
| 26151 | @code{bash-fixed}, in the usual way (@pxref{Définition des paquets}). Then, the | ||
| 26152 | original package definition is augmented with a @code{replacement} field | ||
| 26153 | pointing to the package containing the bug fix: | ||
| 26154 | |||
| 26155 | @example | ||
| 26156 | (define bash | ||
| 26157 | (package | ||
| 26158 | (name "bash") | ||
| 26159 | ;; @dots{} | ||
| 26160 | (replacement bash-fixed))) | ||
| 26161 | @end example | ||
| 26162 | |||
| 26163 | From there on, any package depending directly or indirectly on Bash---as | ||
| 26164 | reported by @command{guix gc --requisites} (@pxref{Invoquer guix gc})---that | ||
| 26165 | is installed is automatically ``rewritten'' to refer to @code{bash-fixed} | ||
| 26166 | instead of @code{bash}. This grafting process takes time proportional to | ||
| 26167 | the size of the package, usually less than a minute for an ``average'' | ||
| 26168 | package on a recent machine. Grafting is recursive: when an indirect | ||
| 26169 | dependency requires grafting, then grafting ``propagates'' up to the package | ||
| 26170 | that the user is installing. | ||
| 26171 | |||
| 26172 | Currently, the length of the name and version of the graft and that of the | ||
| 26173 | package it replaces (@code{bash-fixed} and @code{bash} in the example above) | ||
| 26174 | must be equal. This restriction mostly comes from the fact that grafting | ||
| 26175 | works by patching files, including binary files, directly. Other | ||
| 26176 | restrictions may apply: for instance, when adding a graft to a package | ||
| 26177 | providing a shared library, the original shared library and its replacement | ||
| 26178 | must have the same @code{SONAME} and be binary-compatible. | ||
| 26179 | |||
| 26180 | L'option en ligne de commande @option{--no-grafts} vous permet d'éviter les | ||
| 26181 | greffes (@pxref{Options de construction communes, @option{--no-grafts}}). Donc la | ||
| 26182 | commande : | ||
| 26183 | |||
| 26184 | @example | ||
| 26185 | guix build bash --no-grafts | ||
| 26186 | @end example | ||
| 26187 | |||
| 26188 | @noindent | ||
| 26189 | renvoie le nom de fichier dans les dépôt du Bash original, alors que : | ||
| 26190 | |||
| 26191 | @example | ||
| 26192 | guix build bash | ||
| 26193 | @end example | ||
| 26194 | |||
| 26195 | @noindent | ||
| 26196 | renvoie le nom de fichier du Bash « corrigé » de remplacement. Cela vous | ||
| 26197 | permet de distinguer les deux variantes de Bash. | ||
| 26198 | |||
| 26199 | Pour vérifier à quel Bash votre profil se réfère, vous pouvez lancer | ||
| 26200 | (@pxref{Invoquer guix gc}) : | ||
| 26201 | |||
| 26202 | @example | ||
| 26203 | guix gc -R `readlink -f ~/.guix-profile` | grep bash | ||
| 26204 | @end example | ||
| 26205 | |||
| 26206 | @noindent | ||
| 26207 | @dots{} et comparer les noms de fichiers que vous obtenez avec ceux du | ||
| 26208 | dessus. De la même manière pour une génération du système Guix : | ||
| 26209 | |||
| 26210 | @example | ||
| 26211 | guix gc -R `guix system build my-config.scm` | grep bash | ||
| 26212 | @end example | ||
| 26213 | |||
| 26214 | Enfin, pour vérifier quelles processus Bash lancés vous utilisez, vous | ||
| 26215 | pouvez utiliser la commande @command{lsof} : | ||
| 26216 | |||
| 26217 | @example | ||
| 26218 | lsof | grep /gnu/store/.*bash | ||
| 26219 | @end example | ||
| 26220 | |||
| 26221 | |||
| 26222 | @node Bootstrapping | ||
| 26223 | @chapter Bootstrapping | ||
| 26224 | |||
| 26225 | @c Adapted from the ELS 2013 paper. | ||
| 26226 | |||
| 26227 | @cindex bootstrap | ||
| 26228 | |||
| 26229 | Dans notre contexte, le bootstrap se réfère à la manière dont la | ||
| 26230 | distribution est construite « à partir de rien ». Rappelez-vous que | ||
| 26231 | l'environnement de construction d'une dérivation ne contient rien d'autre | ||
| 26232 | que les entrées déclarées (@pxref{Introduction}). Donc il y a un problème | ||
| 26233 | évident de poule et d'œuf : comment le premier paquet est-il construit ? | ||
| 26234 | Comment le premier compilateur est-il construit ? Remarquez que c'est une | ||
| 26235 | question qui intéressera uniquement le hacker curieux, pas l'utilisateur | ||
| 26236 | normal, donc vous pouvez sauter cette section sans avoir honte si vous vous | ||
| 26237 | considérez comme un « utilisateur normal ». | ||
| 26238 | |||
| 26239 | @cindex binaires de bootstrap | ||
| 26240 | Le système GNU est surtout fait de code C, avec la libc en son cœur. Le | ||
| 26241 | système de construction GNU lui-même suppose la disponibilité d'un shell | ||
| 26242 | Bourne et d'outils en ligne de commande fournis par GNU Coreutils, Awk, | ||
| 26243 | Findutils, sed et grep. En plus, les programmes de construction — les | ||
| 26244 | programmes qui exécutent @code{./configure}, @code{make} etc — sont écrits | ||
| 26245 | en Guile Scheme (@pxref{Dérivations}). En conséquence, pour pouvoir | ||
| 26246 | construire quoi que ce soit, de zéro, Guix a besoin de binaire | ||
| 26247 | pré-construits de Guile, GCC, Binutils, la libc et des autres paquets | ||
| 26248 | mentionnés plus haut — les @dfn{binaires de bootstrap}. | ||
| 26249 | |||
| 26250 | Ces binaires de bootstrap sont pris comme des acquis, bien qu'on puisse les | ||
| 26251 | recréer (ça arrive plus tard). | ||
| 26252 | |||
| 26253 | @unnumberedsec Se préparer à utiliser les binaires de bootstrap | ||
| 26254 | |||
| 26255 | @c As of Emacs 24.3, Info-mode displays the image, but since it's a | ||
| 26256 | @c large image, it's hard to scroll. Oh well. | ||
| 26257 | @image{images/bootstrap-graph,6in,,Graphe de dépendance des premières | ||
| 26258 | dérivations de bootstrap} | ||
| 26259 | |||
| 26260 | La figure ci-dessus montre le tout début du graphe de dépendances de la | ||
| 26261 | distribution, correspondant aux définitions des paquets du module @code{(gnu | ||
| 26262 | packages bootstrap)}. Une figure similaire peut être générée avec | ||
| 26263 | @command{guix graph} (@pxref{Invoquer guix graph}), de cette manière : | ||
| 26264 | |||
| 26265 | @example | ||
| 26266 | guix graph -t derivation \ | ||
| 26267 | -e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \ | ||
| 26268 | | dot -Tps > t.ps | ||
| 26269 | @end example | ||
| 26270 | |||
| 26271 | À ce niveau de détails, les choses sont légèrement complexes. Tout d'abord, | ||
| 26272 | Guile lui-même consiste en an exécutable ELF, avec plusieurs fichiers Scheme | ||
| 26273 | sources et compilés qui sont chargés dynamiquement quand il est exécuté. | ||
| 26274 | Cela est stocké dans l'archive @file{guile-2.0.7.tar.xz} montrée dans ce | ||
| 26275 | graphe. Cette archive fait parti de la distribution « source » de Guix, et | ||
| 26276 | est insérée dans le dépôt avec @code{add-to-store} (@pxref{Le dépôt}). | ||
| 26277 | |||
| 26278 | Mais comment écrire une dérivation qui décompresse cette archive et l'ajoute | ||
| 26279 | au dépôt ? Pour résoudre ce problème, la dérivation | ||
| 26280 | @code{guile-bootstrap-2.0.drv} — la première qui est construite — utilise | ||
| 26281 | @code{bash} comme constructeur, qui lance @code{build-bootstrap-guile.sh}, | ||
| 26282 | qui à son tour appelle @code{tar} pour décompresser l'archive. Ainsi, | ||
| 26283 | @file{bash}, @file{tar}, @file{xz} et @file{mkdir} sont des binaires liés | ||
| 26284 | statiquement, qui font aussi partie de la distribution source de Guix, dont | ||
| 26285 | le seul but est de permettre à l'archive de Guile d'être décompressée. | ||
| 26286 | |||
| 26287 | Une fois que @code{guile-bootstrap-2.0.drv} est construit, nous avons un | ||
| 26288 | Guile fonctionnel qui peut être utilisé pour exécuter les programmes de | ||
| 26289 | construction suivants. Sa première tâche consiste à télécharger les | ||
| 26290 | archives contenant les autres binaires pré-construits — c'est ce que la | ||
| 26291 | dérivation @code{.tar.xz.drv} fait. Les modules Guix comme | ||
| 26292 | @code{ftp-client.scm} sont utilisés pour cela. Les dérivations | ||
| 26293 | @code{module-import.drv} importent ces modules dans un répertoire dans le | ||
| 26294 | dépôt, en utilisant la disposition d'origine. Les dérivations | ||
| 26295 | @code{module-import-compiled.drv} compilent ces modules, et les écrivent | ||
| 26296 | dans un répertoire de sortie avec le bon agencement. Cela correspond à | ||
| 26297 | l'argument @code{#:modules} de @code{build-expression->derivation} | ||
| 26298 | (@pxref{Dérivations}). | ||
| 26299 | |||
| 26300 | Enfin, les diverses archives sont décompressées par les dérivations | ||
| 26301 | @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, etc, à partir de | ||
| 26302 | quoi nous avons une chaîne de compilation C fonctionnelle. | ||
| 26303 | |||
| 26304 | |||
| 26305 | @unnumberedsec Construire les outils de construction | ||
| 26306 | |||
| 26307 | Le bootstrap est complet lorsque nous avons une chaîne d'outils complète qui | ||
| 26308 | ne dépend pas des outils de bootstrap pré-construits dont on vient de | ||
| 26309 | parler. Ce pré-requis d'indépendance est vérifié en s'assurant que les | ||
| 26310 | fichiers de la chaîne d'outil finale ne contiennent pas de référence vers | ||
| 26311 | les répertoires @file{/gnu/store} des entrées de bootstrap. Le processus | ||
| 26312 | qui mène à cette chaîne d'outils « finale » est décrit par les définitions | ||
| 26313 | de paquets qui se trouvent dans le module @code{(gnu packages | ||
| 26314 | commencement)}. | ||
| 26315 | |||
| 26316 | La commande @command{guix graph} nous permet de « dézoomer » comparé au | ||
| 26317 | graphe précédent, en regardant au niveau des objets de paquets plutôt que | ||
| 26318 | des dérivations individuelles — rappelez-vous qu'un paquet peut se traduire | ||
| 26319 | en plusieurs dérivations, typiquement une dérivation pour télécharger ses | ||
| 26320 | sources, une pour les modules Guile dont il a besoin et une pour | ||
| 26321 | effectivement compiler le paquet depuis les sources. La commande : | ||
| 26322 | |||
| 26323 | @example | ||
| 26324 | guix graph -t bag \ | ||
| 26325 | -e '(@@@@ (gnu packages commencement) | ||
| 26326 | glibc-final-with-bootstrap-bash)' | dot -Tps > t.ps | ||
| 26327 | @end example | ||
| 26328 | |||
| 26329 | @noindent | ||
| 26330 | produit le graphe de dépendances qui mène à la bibliothèque C « finale | ||
| 26331 | »@footnote{Vous remarquerez qu'elle s'appelle @code{glibc-intermediate}, ce | ||
| 26332 | qui suggère qu'elle n'est pas @emph{tout à fait} finale, mais c'est une | ||
| 26333 | bonne approximation tout de même.}, que voici : | ||
| 26334 | |||
| 26335 | @image{images/bootstrap-packages,6in,,Graphe de dépendance des premiers | ||
| 26336 | paquets} | ||
| 26337 | |||
| 26338 | @c See <http://lists.gnu.org/archive/html/gnu-system-discuss/2012-10/msg00000.html>. | ||
| 26339 | Le premier outil construit avec les binaires de bootstrap est GNU@tie{}Make | ||
| 26340 | — appelé @code{make-boot0} ci-dessus — qui est un prérequis de tous les | ||
| 26341 | paquets suivants . Ensuite, Findutils et Diffutils sont construits. | ||
| 26342 | |||
| 26343 | Ensuite vient la première passe de Binutils et GCC, construits comme des | ||
| 26344 | pseudo outils croisés — c.-à-d.@: dont @code{--target} égal à | ||
| 26345 | @code{--host}. Ils sont utilisés pour construire la libc. Grâce à cette | ||
| 26346 | astuce de compilation croisée, la libc est garantie de ne contenir aucune | ||
| 26347 | référence à la chaîne d'outils initiale. | ||
| 26348 | |||
| 26349 | À partir de là, les Bintulis et GCC finaux (pas visibles ci-dessus) sont | ||
| 26350 | construits. GCC utilise @code{ld} du Binutils final et lie les programme | ||
| 26351 | avec la libc qui vient d'être construite. Cette chaîne d'outils est | ||
| 26352 | utilisée pour construire les autres paquets utilisés par Guix et par le | ||
| 26353 | système de construction de GNU : Guile, Bash, Coreutils, etc. | ||
| 26354 | |||
| 26355 | Et voilà ! À partir de là nous avons l'ensemble complet des outils auxquels | ||
| 26356 | s'attend le système de construction GNU. Ils sont dans la variable | ||
| 26357 | @code{%final-inputs} du module @code{(gnu packages commencement)} et sont | ||
| 26358 | implicitement utilisés par tous les paquets qui utilisent le | ||
| 26359 | @code{gnu-build-system} (@pxref{Systèmes de construction, @code{gnu-build-system}}). | ||
| 26360 | |||
| 26361 | |||
| 26362 | @unnumberedsec Construire les binaires de bootstrap | ||
| 26363 | |||
| 26364 | @cindex binaires de bootstrap | ||
| 26365 | Comme la chaîne d'outils finale ne dépend pas des binaires de bootstrap, ils | ||
| 26366 | ont rarement besoin d'être mis à jour. Cependant, il est utile d'avoir une | ||
| 26367 | manière de faire cela automatiquement, dans le cas d'une mise à jour et | ||
| 26368 | c'est ce que le module @code{(gnu packages make-bootstrap)} fournit. | ||
| 26369 | |||
| 26370 | La commande suivante construit les archives contenant les binaires de | ||
| 26371 | bootstrap (Guile, Binutils, GCC, la libc et une archive contenant un mélange | ||
| 26372 | de Coreutils et d'autres outils en ligne de commande de base) : | ||
| 26373 | |||
| 26374 | @example | ||
| 26375 | guix build bootstrap-tarballs | ||
| 26376 | @end example | ||
| 26377 | |||
| 26378 | Les archives générées sont celles qui devraient être référencées dans le | ||
| 26379 | module @code{(gnu packages bootstrap)} au début de cette section. | ||
| 26380 | |||
| 26381 | Vous êtes toujours là ? Alors peut-être que maintenant vous vous demandez, | ||
| 26382 | quand est-ce qu'on atteint un point fixe ? C'est une question intéressante | ||
| 26383 | ! La réponse est inconnue, mais si vous voulez enquêter plus profondément | ||
| 26384 | (et que vous avez les ressources en puissance de calcul et en capacité de | ||
| 26385 | stockage pour cela), dites-le nous. | ||
| 26386 | |||
| 26387 | @unnumberedsec Réduire l'ensemble des binaires de bootstrap | ||
| 26388 | |||
| 26389 | Nous binaires de bootstrap incluent actuellement GCC, Guile, etc. C'est | ||
| 26390 | beaucoup de code binaire ! Pourquoi est-ce un problème ? C'est un problème | ||
| 26391 | parce que ces gros morceaux de code binaire sont en pratique impossibles à | ||
| 26392 | auditer, ce qui fait qu'il est difficile d'établir quel code source les a | ||
| 26393 | produit. Chaque binaire non auditable nous rend aussi vulnérable à des | ||
| 26394 | portes dérobées dans les compilateurs comme le décrit Ken Thompson dans le | ||
| 26395 | papier de 1984 @emph{Reflections on Trusting Trust}. | ||
| 26396 | |||
| 26397 | Cela est rendu moins inquiétant par le fait que les binaires de bootstrap | ||
| 26398 | ont été générés par une révision antérieure de Guix. Cependant, il leur | ||
| 26399 | manque le niveau de transparence que l'on obtient avec le reste des paquets | ||
| 26400 | du graphe de dépendance, où Guix nous donne toujours une correspondance | ||
| 26401 | source-binaire. Ainsi, notre but est de réduire l'ensemble des binaires de | ||
| 26402 | bootstrap au minimum. | ||
| 26403 | |||
| 26404 | Le @uref{http://bootstrappable.org, site web Bootstrappable.org} liste les | ||
| 26405 | projets en cours à ce sujet. L'un d'entre eux parle de remplacer le GCC de | ||
| 26406 | bootstrap par une série d'assembleurs, d'interpréteurs et de compilateurs | ||
| 26407 | d'une complexité croissante, qui pourraient être construits à partir des | ||
| 26408 | sources à partir d'un assembleur simple et auditable. Votre aide est la | ||
| 26409 | bienvenue ! | ||
| 26410 | |||
| 26411 | |||
| 26412 | @node Porter | ||
| 26413 | @chapter Porter vers une nouvelle plateforme | ||
| 26414 | |||
| 26415 | Comme nous en avons discuté plus haut, la distribution GNU est | ||
| 26416 | auto-contenue, et cela est possible en se basant sur des « binaires de | ||
| 26417 | bootstrap » pré-construits (@pxref{Bootstrapping}). Ces binaires sont | ||
| 26418 | spécifiques au noyau de système d'exploitation, à l'architecture CPU et à | ||
| 26419 | l'interface applicative binaire (ABI). Ainsi, pour porter la distribution | ||
| 26420 | sur une plateforme qui n'est pas encore supportée, on doit construire ces | ||
| 26421 | binaires de bootstrap et mettre à jour le module @code{(gnu packages | ||
| 26422 | bootstrap)} pour les utiliser sur cette plateforme. | ||
| 26423 | |||
| 26424 | Heureusement, Guix peut effectuer une @emph{compilation croisée} de ces | ||
| 26425 | binaires de bootstrap. Lorsque tout va bien, et en supposant que la chaîne | ||
| 26426 | d'outils GNU supporte la plateforme cible, cela peut être aussi simple que | ||
| 26427 | de lancer une commande comme ceci : | ||
| 26428 | |||
| 26429 | @example | ||
| 26430 | guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs | ||
| 26431 | @end example | ||
| 26432 | |||
| 26433 | Pour que cela fonctione, la procédure @code{glibc-dynamic-linker} dans | ||
| 26434 | @code{(gnu packages bootstrap)} doit être augmentée pour renvoyer le bon nom | ||
| 26435 | de fichier pour l'éditeur de lien dynamique de la libc sur cette plateforme | ||
| 26436 | ; de même, il faut indiquer cette nouvelle platefore à | ||
| 26437 | @code{system->linux-architecture} dans @code{(gnu packages linux)}. | ||
| 26438 | |||
| 26439 | Une fois qu'ils sont construits, le module @code{(gnu packages bootstrap)} | ||
| 26440 | doit être mis à jour pour se référer à ces binaires sur la plateforme | ||
| 26441 | cible. C'est à dire que les hashs et les URL des archives de bootstrap pour | ||
| 26442 | la nouvelle plateforme doivent être ajoutés avec ceux des plateformes | ||
| 26443 | actuellement supportées. L'archive de bootstrap de Guile est traitée | ||
| 26444 | séparément : elle doit être disponible localement, et @file{gnu/local.mk} a | ||
| 26445 | une règle pour la télécharger pour les architectures supportées ; vous devez | ||
| 26446 | également ajouter une règle pour la nouvelle plateforme. | ||
| 26447 | |||
| 26448 | En pratique, il peut y avoir des complications. Déjà, il se peut que le | ||
| 26449 | triplet GNU étendu qui spécifie l'ABI (comme le suffixe @code{eabi} | ||
| 26450 | ci-dessus) ne soit pas reconnu par tous les outils GNU. Typiquement, la | ||
| 26451 | glibc en reconnais certains, alors que GCC utilise un drapeau de configure | ||
| 26452 | @code{--with-abi} supplémentaire (voir @code{gcc.scm} pour trouver des | ||
| 26453 | exemples où ce cas est géré). Ensuite, certains des paquets requis | ||
| 26454 | pourraient échouer à se construire pour cette plateforme. Enfin, les | ||
| 26455 | binaires générés pourraient être cassé pour une raison ou une autre. | ||
| 26456 | |||
| 26457 | @c ********************************************************************* | ||
| 26458 | @include contributing.fr.texi | ||
| 26459 | |||
| 26460 | @c ********************************************************************* | ||
| 26461 | @node Remerciements | ||
| 26462 | @chapter Remerciements | ||
| 26463 | |||
| 26464 | Guix se base sur le @uref{http://nixos.org/nix/, gestionnaire de paquets | ||
| 26465 | Nix} conçu et implémenté par Eelco Dolstra, avec des contributions d'autres | ||
| 26466 | personnes (voir le fichier @file{nix/AUTHORS} dans Guix). Nix a inventé la | ||
| 26467 | gestion de paquet fonctionnelle et promu des fonctionnalités sans précédents | ||
| 26468 | comme les mises à jour de paquets transactionnelles et les retours en | ||
| 26469 | arrière, les profils par utilisateurs et les processus de constructions | ||
| 26470 | transparents pour les références. Sans ce travail, Guix n'existerait pas. | ||
| 26471 | |||
| 26472 | Les distributions logicielles basées sur Nix, Nixpkgs et NixOS, ont aussi | ||
| 26473 | été une inspiration pour Guix. | ||
| 26474 | |||
| 26475 | GNU@tie{}Guix lui-même est un travail collectif avec des contributions d'un | ||
| 26476 | grand nombre de personnes. Voyez le fichier @file{AUTHORS} dans Guix pour | ||
| 26477 | plus d'information sur ces personnes de qualité. Le fichier @file{THANKS} | ||
| 26478 | liste les personnes qui ont aidé en rapportant des bogues, en prenant soin | ||
| 26479 | de l'infrastructure, en fournissant des images et des thèmes, en faisant des | ||
| 26480 | suggestions et bien plus. Merci ! | ||
| 26481 | |||
| 26482 | |||
| 26483 | @c ********************************************************************* | ||
| 26484 | @node La licence GNU Free Documentation | ||
| 26485 | @appendix La licence GNU Free Documentation | ||
| 26486 | @cindex license, GNU Free Documentation License | ||
| 26487 | @include fdl-1.3.texi | ||
| 26488 | |||
| 26489 | @c ********************************************************************* | ||
| 26490 | @node Index des concepts | ||
| 26491 | @unnumbered Index des concepts | ||
| 26492 | @printindex cp | ||
| 26493 | |||
| 26494 | @node Index de programmation | ||
| 26495 | @unnumbered Index de programmation | ||
| 26496 | @syncodeindex tp fn | ||
| 26497 | @syncodeindex vr fn | ||
| 26498 | @printindex fn | ||
| 26499 | |||
| 26500 | @bye | ||
| 26501 | |||
| 26502 | @c Local Variables: | ||
| 26503 | @c ispell-local-dictionary: "american"; | ||
| 26504 | @c End: | ||
