Commit | Line | Data |
---|---|---|
bf5c74e7 JL |
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 | |
3cacfa9e | 13 | @frenchspacing on |
bf5c74e7 JL |
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 | |
adfb167f | 21 | @set KEY-SERVER pool.sks-keyservers.net |
bf5c74e7 | 22 | |
15f1bff4 JL |
23 | @c The official substitute server used by default. |
24 | @set SUBSTITUTE-SERVER ci.guix.fr.info | |
25 | ||
bf5c74e7 | 26 | @copying |
15f1bff4 JL |
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@* | |
bf5c74e7 JL |
31 | Copyright @copyright{} 2014 Pierre-Antoine Rault@* Copyright @copyright{} |
32 | 2015 Taylan Ulrich Bayırlı/Kammer@* Copyright @copyright{} 2015, 2016, 2017 | |
15f1bff4 | 33 | Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo |
bf5c74e7 JL |
34 | Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} |
35 | 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018 | |
36 | Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright | |
47956fa0 | 37 | @copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017, |
15f1bff4 JL |
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@* | |
adfb167f JL |
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@* | |
bf5c74e7 JL |
48 | Copyright @copyright{} 2017 George Clemmer@* Copyright @copyright{} 2017 |
49 | Andy Wingo@* Copyright @copyright{} 2017, 2018 Arun Isaac@* Copyright | |
50 | @copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* | |
51 | Copyright @copyright{} 2018 Oleg Pykhalov@* Copyright @copyright{} 2018 Mike | |
524756d1 | 52 | Gerwitz@* Copyright @copyright{} 2018 Pierre-Antoine Rouby@* Copyright |
adfb167f JL |
53 | @copyright{} 2018 Gábor Boskovits@* Copyright @copyright{} 2018 Florian |
54 | Pelz@* Copyright @copyright{} 2018 Laura Lazzati@* Copyright @copyright{} | |
55 | 2018 Alex Vong@* | |
bf5c74e7 JL |
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 | |
3cacfa9e LC |
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 ». | |
bf5c74e7 JL |
63 | @end copying |
64 | ||
65 | @dircategory Administration système | |
66 | @direntry | |
2cf2c778 | 67 | * Guix: (guix.fr). Gérer les logiciels installés et la |
bf5c74e7 | 68 | configuration du système. |
15f1bff4 | 69 | * guix package : (guix.fr)Invoquer guix package. Installer, supprimer et |
2cf2c778 JL |
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. | |
bf5c74e7 JL |
78 | @end direntry |
79 | ||
80 | @dircategory Développement logiciel | |
81 | @direntry | |
2cf2c778 JL |
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. | |
bf5c74e7 JL |
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 | ||
3cacfa9e LC |
108 | Cette documentation décrit GNU Guix version @value{VERSION}, un outil de |
109 | gestion de paquets fonctionnel écrit pour le système GNU@. | |
bf5c74e7 | 110 | |
524756d1 JL |
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. | |
adfb167f JL |
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}. | |
524756d1 | 122 | |
bf5c74e7 JL |
123 | @menu |
124 | * Introduction:: Qu'est-ce que Guix ? | |
125 | * Installation:: Installer Guix. | |
15f1bff4 | 126 | * Installation du système:: Installer le système d'exploitation complet. |
bf5c74e7 | 127 | * Gestion de paquets:: Installation des paquets, mises à jour, etc. |
15f1bff4 | 128 | * Development:: Guix-aided software development. |
bf5c74e7 JL |
129 | * Interface de programmation:: Utiliser Guix en Scheme. |
130 | * Utilitaires:: Commandes de gestion de paquets. | |
15f1bff4 JL |
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. | |
bf5c74e7 JL |
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 | ||
15f1bff4 JL |
151 | Introduction |
152 | ||
153 | ||
154 | ||
155 | * Managing Software the Guix Way:: What's special. | |
156 | * Distribution GNU:: The packages and tools. | |
157 | ||
bf5c74e7 JL |
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 | ||
15f1bff4 JL |
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 | * Effectuer l'installation:: Pour de vrai. | |
192 | * Installing Guix in a VM:: Guix System playground. | |
193 | * Construire l'image d'installation:: D'où vient tout cela. | |
194 | ||
bf5c74e7 JL |
195 | Gestion de paquets |
196 | ||
197 | ||
198 | ||
199 | * Fonctionnalités:: Comment Guix va rendre votre vie plus heureuse. | |
3cacfa9e | 200 | * Invoquer guix package:: Installation, suppression, etc.@: de paquets. |
bf5c74e7 JL |
201 | * Substituts:: Télécharger des binaire déjà construits. |
202 | * Des paquets avec plusieurs résultats:: Un seul paquet source, plusieurs | |
203 | résultats. | |
204 | * Invoquer guix gc:: Lancer le ramasse-miettes. | |
205 | * Invoquer guix pull:: Récupérer la dernière version de Guix et de | |
206 | la distribution. | |
adfb167f JL |
207 | * Canaux:: Personnaliser la collection des paquets. |
208 | * Inférieurs:: Interagir avec une autre révision de Guix. | |
209 | * Invoquer guix describe:: Affiche des informations sur la révision Guix | |
210 | actuelle. | |
bf5c74e7 JL |
211 | * Invoquer guix archive:: Exporter et importer des fichiers du dépôt. |
212 | ||
213 | Substituts | |
214 | ||
215 | ||
216 | ||
217 | * Serveur de substituts officiel:: Une source particulière de substituts. | |
218 | * Autoriser un serveur de substituts:: Comment activer ou désactiver les | |
219 | substituts. | |
15f1bff4 | 220 | * Authentification des substituts:: Comment Guix vérifie les substituts. |
bf5c74e7 JL |
221 | * Paramètres de serveur mandataire:: Comment récupérer des substituts à |
222 | travers un serveur mandataire. | |
223 | * Échec de substitution:: Qu'arrive-t-il quand la substitution échoue. | |
224 | * De la confiance en des binaires:: Comment pouvez-vous avoir confiance en | |
225 | un paquet binaire ? | |
226 | ||
15f1bff4 JL |
227 | Development |
228 | ||
229 | ||
230 | ||
231 | * Invoquer guix environment:: Mettre en place des environnements de | |
232 | développement. | |
233 | * Invoquer guix pack:: Créer des lots de logiciels. | |
234 | ||
bf5c74e7 JL |
235 | Interface de programmation |
236 | ||
237 | ||
238 | ||
15f1bff4 | 239 | * Modules de paquets:: Les paquets du point de vu du programmeur. |
bf5c74e7 JL |
240 | * Définition des paquets:: Définir de nouveaux paquets. |
241 | * Systèmes de construction:: Spécifier comment construire les paquets. | |
242 | * Le dépôt:: Manipuler le dépôt de paquets. | |
243 | * Dérivations:: Interface de bas-niveau avec les dérivations | |
244 | de paquets. | |
15f1bff4 | 245 | * La monade du dépôt:: Interface purement fonctionnelle avec le |
bf5c74e7 JL |
246 | dépôt. |
247 | * G-Expressions:: Manipuler les expressions de construction. | |
adfb167f | 248 | * Invoquer guix repl:: S'amuser avec Guix de manière interactive. |
bf5c74e7 JL |
249 | |
250 | Définition des paquets | |
251 | ||
252 | ||
253 | ||
1d8d69c8 | 254 | * Référence de paquet:: Le type de donnée des paquets. |
bf5c74e7 JL |
255 | * Référence d'origine:: Le type de données d'origine. |
256 | ||
257 | Utilitaires | |
258 | ||
259 | ||
260 | ||
261 | * Invoquer guix build:: Construire des paquets depuis la ligne de | |
262 | commande. | |
263 | * Invoquer guix edit:: Modifier les définitions de paquets. | |
264 | * Invoquer guix download:: Télécharger un fichier et afficher son hash. | |
265 | * Invoquer guix hash:: Calculer le hash cryptographique d'un fichier. | |
266 | * Invoquer guix import:: Importer des définitions de paquets. | |
267 | * Invoquer guix refresh:: Mettre à jour les définitions de paquets. | |
268 | * Invoquer guix lint:: Trouver des erreurs dans les définitions de | |
269 | paquets. | |
270 | * Invoquer guix size:: Profiler l'utilisation du disque. | |
271 | * Invoquer guix graph:: Visualiser le graphe des paquets. | |
bf5c74e7 JL |
272 | * Invoquer guix publish:: Partager des substituts. |
273 | * Invoquer guix challenge:: Défier les serveurs de substituts. | |
274 | * Invoquer guix copy:: Copier vers et depuis un dépôt distant. | |
275 | * Invoquer guix container:: Isolation de processus. | |
276 | * Invoquer guix weather:: Mesurer la disponibilité des substituts. | |
adfb167f | 277 | * Invoquer guix processes:: Lister les processus clients. |
bf5c74e7 JL |
278 | |
279 | Invoquer @command{guix build} | |
280 | ||
281 | ||
282 | ||
283 | * Options de construction communes:: Options de construction pour la | |
284 | plupart des commandes. | |
285 | * Options de transformation de paquets:: Créer des variantes de paquets. | |
286 | * Options de construction supplémentaires:: Options spécifiques à « | |
287 | guix build ». | |
288 | * Débogage des échecs de construction:: La vie d'un empaqueteur. | |
289 | ||
bf5c74e7 JL |
290 | Configuration système |
291 | ||
292 | ||
293 | ||
3cacfa9e LC |
294 | * Utiliser le système de configuration:: Personnaliser votre système |
295 | GNU@. | |
bf5c74e7 JL |
296 | * Référence de système d'exploitation:: Détail sur la déclaration de |
297 | système d'exploitation. | |
298 | * Systèmes de fichiers:: Configurer les montages de systèmes de | |
299 | fichiers. | |
300 | * Périphériques mappés:: Gestion des périphériques de bloc. | |
301 | * Comptes utilisateurs:: Spécifier des comptes utilisateurs. | |
302 | * Régionalisation:: Paramétrer la langue et les conventions | |
303 | culturelles. | |
304 | * Services:: Spécifier les services du système. | |
305 | * Programmes setuid:: Programmes tournant avec les privilèges root. | |
3cacfa9e | 306 | * Certificats X.509:: Authentifier les serveurs HTTPS@. |
bf5c74e7 JL |
307 | * Name Service Switch:: Configurer le « name service switch » de la |
308 | libc. | |
309 | * Disque de RAM initial:: Démarrage de Linux-Libre. | |
310 | * Configuration du chargeur d'amorçage:: Configurer le chargeur | |
311 | d'amorçage. | |
312 | * Invoquer guix system:: Instantier une configuration du système. | |
15f1bff4 | 313 | * Running Guix in a VM:: How to run Guix System in a virtual machine. |
bf5c74e7 JL |
314 | * Définir des services:: Ajouter de nouvelles définitions de services. |
315 | ||
316 | Services | |
317 | ||
318 | ||
319 | ||
320 | * Services de base:: Services systèmes essentiels. | |
3cacfa9e LC |
321 | * Exécution de tâches planifiées:: Le service mcron. |
322 | * Rotation des journaux:: Le service rottlog. | |
15f1bff4 | 323 | * Services réseau:: Paramètres réseau, démon SSH, etc. |
3cacfa9e LC |
324 | * Système de fenêtrage X:: Affichage graphique. |
325 | * Services d'impression:: Support pour les imprimantes locales et | |
326 | distantes. | |
327 | * Services de bureaux:: D-Bus et les services de bureaux. | |
2cf2c778 | 328 | * Services de son:: Services ALSA et Pulseaudio. |
3cacfa9e LC |
329 | * Services de bases de données:: Bases SQL, clefs-valeurs, etc. |
330 | * Services de courriels:: IMAP, POP3, SMTP, et tout ça. | |
331 | * Services de messagerie:: Services de messagerie. | |
332 | * Services de téléphonie:: Services de téléphonie. | |
333 | * Services de surveillance:: Services de surveillance. | |
334 | * Services Kerberos:: Services Kerberos. | |
335 | * Services web:: Services web. | |
336 | * Services de certificats:: Certificats TLS via Let's Encrypt. | |
337 | * Services DNS:: Démons DNS@. | |
338 | * Services VPN:: Démons VPN | |
339 | * Système de fichiers en réseau:: Services liés à NFS@. | |
340 | * Intégration continue:: Le service Cuirass. | |
adfb167f JL |
341 | * Services de gestion de l'énergie:: Augmenter la durée de vie de la |
342 | batterie. | |
3cacfa9e LC |
343 | * Services audio:: MPD@. |
344 | * Services de virtualisation:: Services de virtualisation. | |
345 | * Services de contrôle de version:: Fournit des accès distants à des | |
346 | dépôts Git. | |
347 | * Services de jeu:: Serveurs de jeu. | |
348 | * Services divers:: D'autres services. | |
bf5c74e7 JL |
349 | |
350 | Définir des services | |
351 | ||
352 | ||
353 | ||
354 | * Composition de services:: Le modèle de composition des services. | |
355 | * Types service et services:: Types et services. | |
3cacfa9e | 356 | * Référence de service:: Référence de l'API@. |
bf5c74e7 JL |
357 | * Services Shepherd:: Un type de service particulier. |
358 | ||
bf5c74e7 JL |
359 | @end detailmenu |
360 | @end menu | |
361 | ||
362 | @c ********************************************************************* | |
363 | @node Introduction | |
364 | @chapter Introduction | |
365 | ||
366 | @cindex but | |
15f1bff4 JL |
367 | GNU Guix@footnote{``Guix'' is pronounced like ``geeks'', or ``ɡiːks'' using |
368 | the international phonetic alphabet (IPA).} is a package management tool for | |
369 | and distribution of the GNU system. Guix makes it easy for unprivileged | |
370 | users to install, upgrade, or remove software packages, to roll back to a | |
371 | previous package set, to build packages from source, and generally assists | |
372 | with the creation and maintenance of software environments. | |
373 | ||
374 | @cindex Guix System | |
375 | @cindex GuixSD, now Guix System | |
376 | @cindex Guix System Distribution, now Guix System | |
377 | You can install GNU@tie{}Guix on top of an existing GNU/Linux system where | |
378 | it complements the available tools without interference | |
379 | (@pxref{Installation}), or you can use it as a standalone operating system | |
380 | distribution, @dfn{Guix@tie{}System}@footnote{We used to refer to Guix | |
381 | System as ``Guix System Distribution'' or ``GuixSD''. We now consider it | |
382 | makes more sense to group everything under the ``Guix'' banner since, after | |
383 | all, Guix System is readily available through the @command{guix system} | |
384 | command, even if you're using a different distro underneath!}. @xref{Distribution GNU}. | |
385 | ||
386 | @menu | |
387 | * Managing Software the Guix Way:: What's special. | |
388 | * Distribution GNU:: The packages and tools. | |
389 | @end menu | |
390 | ||
391 | @node Managing Software the Guix Way | |
392 | @section Managing Software the Guix Way | |
bf5c74e7 JL |
393 | |
394 | @cindex interfaces utilisateurs | |
15f1bff4 JL |
395 | Guix provides a command-line package management interface (@pxref{Gestion de paquets}), tools to help with software development (@pxref{Development}), |
396 | command-line utilities for more advanced usage, (@pxref{Utilitaires}), as well | |
397 | as Scheme programming interfaces (@pxref{Interface de programmation}). | |
bf5c74e7 JL |
398 | @cindex démon de construction |
399 | Son @dfn{démon de construction} est responsable de la construction des | |
400 | paquets pour les utilisateurs (@pxref{Paramétrer le démon}) et du | |
401 | téléchargement des binaires pré-construits depuis les sources autorisées | |
402 | (@pxref{Substituts}). | |
403 | ||
404 | @cindex extensibilité de la distribution | |
405 | @cindex personnalisation, des paquets | |
406 | Guix contient de nombreuses définitions de paquet GNU et non-GNU qui | |
407 | respectent tous les @uref{https://www.gnu.org/philosophy/free-sw.fr.html, | |
3cacfa9e | 408 | libertés de l'utilisateur}. Il est @emph{extensible} : les utilisateurs |
bf5c74e7 | 409 | peuvent écrire leurs propres définitions de paquets (@pxref{Définition des paquets}) et les rendre disponibles dans des modules de paquets |
3cacfa9e | 410 | indépendants (@pxref{Modules de paquets}). Il est aussi |
bf5c74e7 JL |
411 | @emph{personnalisable} : les utilisateurs peuvent @emph{dériver} des |
412 | définitions de paquets spécialisées à partir de définitions existantes, même | |
413 | depuis la ligne de commande (@pxref{Options de transformation de paquets}). | |
414 | ||
bf5c74e7 | 415 | @cindex gestion de paquet fonctionnelle |
adfb167f | 416 | @cindex isolation |
bf5c74e7 | 417 | Sous le capot, Guix implémente la discipline de @dfn{gestion de paquet |
3cacfa9e LC |
418 | fonctionnel} inventé par Nix (@pxref{Remerciements}). Dans Guix le |
419 | processus de construction et d'installation des paquets est vu comme une | |
420 | @emph{fonction} dans le sens mathématique du terme. Cette fonction a des | |
bf5c74e7 | 421 | entrées (comme des scripts de construction, un compilateur et des |
3cacfa9e LC |
422 | bibliothèques) et renvoie un paquet installé. En tant que fonction pure, |
423 | son résultat ne dépend que de ses entrées. Par exemple, il ne peut pas | |
424 | faire référence à des logiciels ou des scripts qui n'ont pas été | |
425 | explicitement passés en entrée. Une fonction de construction produit | |
426 | toujours le même résultat quand on lui donne le même ensemble d'entrée. | |
427 | Elle ne peut pas modifier l'environnement du système en cours d'exécution | |
428 | d'aucune manière ; par exemple elle ne peut pas créer, modifier ou supprimer | |
429 | des fichiers en dehors de ses répertoires de construction et | |
430 | d'installation. Ce résultat s'obtient en lançant les processus de | |
431 | construction dans des environnements isolés (ou des @dfn{conteneurs}) où | |
432 | seules les entrées explicites sont visibles. | |
bf5c74e7 JL |
433 | |
434 | @cindex dépôt | |
435 | Le résultat des fonctions de construction de paquets est mis en @dfn{cache} | |
436 | dans le système de fichier, dans répertoire spécial appelé le @dfn{dépôt} | |
3cacfa9e LC |
437 | (@pxref{Le dépôt}). Chaque paquet est installé dans son répertoire propre |
438 | dans le dépôt — par défaut dans @file{/gnu/store}. Le nom du répertoire | |
bf5c74e7 JL |
439 | contient un hash de toutes les entrées utilisées pour construire le paquet ; |
440 | ainsi, changer une entrée donnera un nom de répertoire différent. | |
441 | ||
442 | Cette approche est le fondement des fonctionnalités les plus importante de | |
443 | Guix : le support des mises à jour des paquets et des retours en arrière | |
444 | transactionnels, l'installation différenciée par utilisateur et le ramassage | |
445 | de miettes pour les paquets (@pxref{Fonctionnalités}). | |
446 | ||
447 | ||
15f1bff4 JL |
448 | @node Distribution GNU |
449 | @section Distribution GNU | |
450 | ||
451 | @cindex Guix System | |
452 | Guix comes with a distribution of the GNU system consisting entirely of free | |
453 | software@footnote{The term ``free'' here refers to the | |
454 | @url{http://www.gnu.org/philosophy/free-sw.html,freedom provided to users of | |
455 | that software}.}. The distribution can be installed on its own | |
456 | (@pxref{Installation du système}), but it is also possible to install Guix as a | |
457 | package manager on top of an installed GNU/Linux system | |
458 | (@pxref{Installation}). When we need to distinguish between the two, we | |
459 | refer to the standalone distribution as Guix@tie{}System. | |
460 | ||
461 | la distribution fournit les paquets cœur de GNU comme la GNU libc, GCC et | |
462 | Binutils, ainsi que de nombreuses applications GNU et non-GNU. La liste | |
463 | complète des paquets disponibles se trouve | |
464 | @url{http://www.gnu.org/software/guix/packages,en ligne} ou en lançant | |
465 | @command{guix package} (@pxref{Invoquer guix package}) : | |
466 | ||
467 | @example | |
468 | guix package --list-available | |
469 | @end example | |
470 | ||
471 | Notre but est de fournir une distribution logicielle entièrement libre de | |
472 | GNU/Linux et d'autres variantes de GNU, en se concentrant sur la promotion | |
473 | et l'intégration étroite des composants GNU en insistant sur les programmes | |
474 | et les outils qui aident l'utilisateur à exercer ses libertés. | |
475 | ||
476 | Les paquets sont actuellement disponibles pour les plateformes suivantes : | |
477 | ||
478 | @table @code | |
479 | ||
480 | @item x86_64-linux | |
481 | l'architecture Intel et AMD @code{x86_64} avec le noyau Linux-libre ; | |
482 | ||
483 | @item i686-linux | |
484 | l'architecture Intel 32-bits (IA32) avec le noyau Linux-libre ; | |
485 | ||
486 | @item armhf-linux | |
487 | l'architecture ARMv7-A avec gestion des flottants matérielle, Thumb-2 et | |
488 | NEON, avec l'interface binaire applicative (ABI) EABI hard-float et le noyau | |
489 | Linux-libre ; | |
490 | ||
491 | @item aarch64-linux | |
492 | les processeurs ARMv8-A 64-bits en little-endian avec le noyau Linux-libre. | |
493 | Le support est actuellement expérimental et limité. @xref{Contribuer}, | |
494 | pour savoir comment aider ! | |
495 | ||
496 | @item mips64el-linux | |
497 | les processeurs MIPS 64-bits little-endian, spécifiquement la série | |
498 | Loongson, ABI n32, avec le noyau Linux-libre. | |
499 | ||
500 | @end table | |
501 | ||
502 | With Guix@tie{}System, you @emph{declare} all aspects of the operating | |
503 | system configuration and Guix takes care of instantiating the configuration | |
504 | in a transactional, reproducible, and stateless fashion (@pxref{Configuration système}). Guix System uses the Linux-libre kernel, the Shepherd | |
505 | initialization system (@pxref{Introduction,,, shepherd, The GNU Shepherd | |
506 | Manual}), the well-known GNU utilities and tool chain, as well as the | |
507 | graphical environment or system services of your choice. | |
508 | ||
509 | Guix System is available on all the above platforms except | |
510 | @code{mips64el-linux}. | |
511 | ||
512 | @noindent | |
513 | Pour des informations sur comment porter vers d'autres architectures et | |
514 | d'autres noyau, @pxref{Porter}. | |
515 | ||
516 | La construction de cette distribution est un effort collaboratif et nous | |
517 | vous invitons à nous rejoindre ! @xref{Contribuer}, pour des informations | |
518 | sur la manière de nous aider. | |
519 | ||
520 | ||
bf5c74e7 JL |
521 | @c ********************************************************************* |
522 | @node Installation | |
523 | @chapter Installation | |
524 | ||
525 | @cindex installer Guix | |
bf5c74e7 | 526 | |
15f1bff4 JL |
527 | @quotation Remarque |
528 | We recommend the use of this | |
529 | @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, | |
530 | shell installer script} to install Guix on top of a running GNU/Linux | |
531 | system, thereafter called a @dfn{foreign distro}.@footnote{This section is | |
532 | concerned with the installation of the package manager, which can be done on | |
533 | top of a running GNU/Linux system. If, instead, you want to install the | |
534 | complete GNU operating system, @pxref{Installation du système}.} The script | |
535 | automates the download, installation, and initial configuration of Guix. It | |
536 | should be run as the root user. | |
537 | @end quotation | |
bf5c74e7 JL |
538 | |
539 | @cindex distro extérieure | |
adfb167f | 540 | @cindex répertoires liés aux distro extérieures |
15f1bff4 JL |
541 | When installed on a foreign distro, GNU@tie{}Guix complements the available |
542 | tools without interference. Its data lives exclusively in two directories, | |
543 | usually @file{/gnu/store} and @file{/var/guix}; other files on your system, | |
544 | such as @file{/etc}, are left untouched. | |
bf5c74e7 JL |
545 | |
546 | Une fois installé, Guix peut être mis à jour en lançant @command{guix pull} | |
547 | (@pxref{Invoquer guix pull}). | |
548 | ||
15f1bff4 JL |
549 | If you prefer to perform the installation steps manually or want to tweak |
550 | them, you may find the following subsections useful. They describe the | |
551 | software requirements of Guix, as well as how to install it manually and get | |
552 | ready to use it. | |
553 | ||
bf5c74e7 JL |
554 | @menu |
555 | * Installation binaire:: Commencer à utiliser Guix en un rien de temps | |
556 | ! | |
557 | * Prérequis:: Logiciels requis pour construire et lancer | |
558 | Guix. | |
559 | * Lancer la suite de tests:: Tester Guix. | |
560 | * Paramétrer le démon:: Préparer l'environnement du démon de | |
561 | construction. | |
562 | * Invoquer guix-daemon:: Lancer le démon de construction. | |
563 | * Réglages applicatifs:: Réglages spécifiques pour les application. | |
564 | @end menu | |
565 | ||
566 | @node Installation binaire | |
567 | @section Installation binaire | |
568 | ||
3cacfa9e | 569 | @cindex installer Guix depuis les binaires |
adfb167f | 570 | @cindex script d'installation |
15f1bff4 | 571 | Cette section décrit comment installer Guix sur un système quelconque depuis |
3cacfa9e LC |
572 | un archive autonome qui fournit les binaires pour Guix et toutes ses |
573 | dépendances. C'est souvent plus rapide que d'installer depuis les sources, | |
15f1bff4 | 574 | ce qui est décrit dans les sections suivantes. Le seul prérequis est |
3cacfa9e | 575 | d'avoir GNU@tie{}tar et Xz. |
bf5c74e7 | 576 | |
3cacfa9e | 577 | L'installation se comme ceci : |
bf5c74e7 JL |
578 | |
579 | @enumerate | |
580 | @item | |
3cacfa9e | 581 | @cindex téléchargement du Guix binaire |
adfb167f JL |
582 | Téléchargez l'archive binaire depuis |
583 | @indicateurl{https://alpha.gnu.org/gnu/guix/guix-binary-@value{VERSION}.@var{système}.tar.xz}, | |
584 | où @var{système} est @code{x86_64-linux} pour une machine @code{x86_64} sur | |
585 | laquelle tourne déjà le noyau Linux, etc. | |
bf5c74e7 JL |
586 | |
587 | @c The following is somewhat duplicated in ``System Installation''. | |
3cacfa9e LC |
588 | Assurez-vous de télécharger le fichier @file{.sig} associé et de vérifier |
589 | l'authenticité de l'archive avec, comme ceci : | |
bf5c74e7 JL |
590 | |
591 | @example | |
adfb167f JL |
592 | $ wget https://alpha.gnu.org/gnu/guix/guix-binary-@value{VERSION}.@var{système}.tar.xz.sig |
593 | $ gpg --verify guix-binary-@value{VERSION}.@var{système}.tar.xz.sig | |
bf5c74e7 JL |
594 | @end example |
595 | ||
3cacfa9e LC |
596 | Si cette commande échoue parce que vous n'avez pas la clef publique requise, |
597 | lancez cette commande pour l'importer : | |
bf5c74e7 JL |
598 | |
599 | @example | |
adfb167f JL |
600 | $ gpg --keyserver @value{KEY-SERVER} \ |
601 | --recv-keys @value{OPENPGP-SIGNING-KEY-ID} | |
bf5c74e7 JL |
602 | @end example |
603 | ||
604 | @noindent | |
605 | @c end authentication part | |
3cacfa9e | 606 | et relancez la commande @code{gpg --verify}. |
bf5c74e7 JL |
607 | |
608 | @item | |
3cacfa9e LC |
609 | Maintenant, vous devez devenir l'utilisateur @code{root}. En fonction de |
610 | votre distribution, vous devrez lancer @code{su -} ou @code{sudo -i}. En | |
611 | tant que @code{root}, lancez : | |
bf5c74e7 JL |
612 | |
613 | @example | |
614 | # cd /tmp | |
615 | # tar --warning=no-timestamp -xf \ | |
3cacfa9e | 616 | guix-binary-@value{VERSION}.@var{système}.tar.xz |
bf5c74e7 JL |
617 | # mv var/guix /var/ && mv gnu / |
618 | @end example | |
619 | ||
3cacfa9e | 620 | Cela crée @file{/gnu/store} (@pxref{Le dépôt}) and @file{/var/guix}. Ce |
15f1bff4 | 621 | deuxième dossier contient un profil prêt à être utilisé pour @code{root} |
3cacfa9e | 622 | (voir les étapes suivantes). |
bf5c74e7 | 623 | |
3cacfa9e LC |
624 | Ne décompressez @emph{pas} l'archive sur un système Guix lancé car cela |
625 | écraserait ses propres fichiers essentiels. | |
bf5c74e7 | 626 | |
3cacfa9e LC |
627 | L'option @code{--warning=no-timestamp} s'assure que GNU@tie{}tar ne produise |
628 | pas d'avertissement disant que « l'horodatage est trop vieux pour être | |
629 | plausible » (ces avertissements étaient produits par GNU@tie{}tar 1.26 et | |
630 | précédents ; les versions récentes n'ont pas ce problème). Cela vient du | |
631 | fait que les fichiers de l'archive ont pour date de modification zéro (ce | |
632 | qui signifie le 1er janvier 1970). C'est fait exprès pour s'assurer que le | |
633 | contenu de l'archive ne dépende pas de la date de création, ce qui la rend | |
634 | reproductible. | |
bf5c74e7 JL |
635 | |
636 | @item | |
adfb167f JL |
637 | Rendez le profil disponible sous @file{~root/.config/guix/current}, qui est |
638 | l'emplacement où @command{guix pull} installera les mises à jour | |
639 | (@pxref{Invoquer guix pull}) : | |
bf5c74e7 JL |
640 | |
641 | @example | |
adfb167f JL |
642 | # mkdir -p ~root/.config/guix |
643 | # ln -sf /var/guix/profiles/per-user/root/current-guix \ | |
644 | ~root/.config/guix/current | |
bf5c74e7 JL |
645 | @end example |
646 | ||
3cacfa9e LC |
647 | Sourcez @file{etc/profile} pour augmenter @code{PATH} et les autres |
648 | variables d'environnement nécessaires : | |
bf5c74e7 JL |
649 | |
650 | @example | |
adfb167f | 651 | # GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \ |
bf5c74e7 JL |
652 | source $GUIX_PROFILE/etc/profile |
653 | @end example | |
654 | ||
655 | @item | |
3cacfa9e LC |
656 | Créez le groupe et les comptes utilisateurs pour les utilisateurs de |
657 | construction comme expliqué plus loin (@pxref{Réglages de l'environnement de construction}). | |
bf5c74e7 JL |
658 | |
659 | @item | |
3cacfa9e | 660 | Lancez le démon et paramétrez-le pour démarrer automatiquement au démarrage. |
bf5c74e7 | 661 | |
3cacfa9e LC |
662 | Si votre distribution hôte utilise le système d'initialisation systemd, cela |
663 | peut se faire avec ces commandes : | |
bf5c74e7 JL |
664 | |
665 | @c Versions of systemd that supported symlinked service files are not | |
666 | @c yet widely deployed, so we should suggest that users copy the service | |
667 | @c files into place. | |
668 | @c | |
669 | @c See this thread for more information: | |
670 | @c http://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html | |
671 | ||
672 | @example | |
adfb167f JL |
673 | # cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \ |
674 | /etc/systemd/system/ | |
bf5c74e7 JL |
675 | # systemctl start guix-daemon && systemctl enable guix-daemon |
676 | @end example | |
677 | ||
3cacfa9e | 678 | Si votre distribution hôte utilise le système d'initialisation Upstart : |
bf5c74e7 JL |
679 | |
680 | @example | |
681 | # initctl reload-configuration | |
adfb167f JL |
682 | # cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \ |
683 | /etc/init/ | |
bf5c74e7 JL |
684 | # start guix-daemon |
685 | @end example | |
686 | ||
3cacfa9e | 687 | Sinon, vous pouvez toujours démarrer le démon manuellement avec : |
bf5c74e7 JL |
688 | |
689 | @example | |
adfb167f JL |
690 | # ~root/.config/guix/current/bin/guix-daemon \ |
691 | --build-users-group=guixbuild | |
bf5c74e7 JL |
692 | @end example |
693 | ||
694 | @item | |
3cacfa9e LC |
695 | Rendez la commande @command{guix} disponible pour les autres utilisateurs |
696 | sur la machine, par exemple avec : | |
bf5c74e7 JL |
697 | |
698 | @example | |
699 | # mkdir -p /usr/local/bin | |
700 | # cd /usr/local/bin | |
adfb167f | 701 | # ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix |
bf5c74e7 JL |
702 | @end example |
703 | ||
3cacfa9e LC |
704 | C'est aussi une bonne idée de rendre la version Info de ce manuel disponible |
705 | ici : | |
bf5c74e7 JL |
706 | |
707 | @example | |
708 | # mkdir -p /usr/local/share/info | |
709 | # cd /usr/local/share/info | |
adfb167f | 710 | # for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ; |
bf5c74e7 JL |
711 | do ln -s $i ; done |
712 | @end example | |
713 | ||
3cacfa9e LC |
714 | Comme cela, en supposant que @file{/usr/local/share/info} est dans le chemin |
715 | de recherche, lancer @command{info guix} ouvrira ce manuel (@pxref{Other | |
716 | Info Directories,,, texinfo, GNU Texinfo}, pour plus de détails sur comment | |
717 | changer le chemin de recherche de Info). | |
bf5c74e7 JL |
718 | |
719 | @item | |
3cacfa9e | 720 | @cindex substituts, autorisations |
15f1bff4 JL |
721 | To use substitutes from @code{@value{SUBSTITUTE-SERVER}} or one of its |
722 | mirrors (@pxref{Substituts}), authorize them: | |
bf5c74e7 JL |
723 | |
724 | @example | |
adfb167f | 725 | # guix archive --authorize < \ |
15f1bff4 | 726 | ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER}.pub |
bf5c74e7 JL |
727 | @end example |
728 | ||
729 | @item | |
3cacfa9e LC |
730 | Chaque utilisateur peut avoir besoin d'effectuer des étapes supplémentaires |
731 | pour que leur environnement Guix soit prêt à être utilisé, | |
732 | @pxref{Réglages applicatifs}. | |
bf5c74e7 JL |
733 | @end enumerate |
734 | ||
3cacfa9e | 735 | Voilà, l'installation est terminée ! |
bf5c74e7 | 736 | |
3cacfa9e LC |
737 | Vous pouvez confirmer que Guix fonctionne en installant un paquet d'exemple |
738 | dans le profil de root : | |
bf5c74e7 JL |
739 | |
740 | @example | |
741 | # guix package -i hello | |
742 | @end example | |
743 | ||
3cacfa9e LC |
744 | Le paquet @code{guix} doit rester disponible dans le profil de @code{root} |
745 | ou il pourrait être sujet au ramassage de miettes — dans ce cas vous vous | |
746 | retrouveriez gravement handicapé par l'absence de la commande | |
747 | @command{guix}. En d'autres termes, ne supprimez pas @code{guix} en lançant | |
748 | @code{guix package -r guix}. | |
bf5c74e7 | 749 | |
3cacfa9e | 750 | L'archive d'installation binaire peut être (re)produite et vérifiée |
15f1bff4 | 751 | simplement en lançant la commande suivante dans l'arborescence des sources |
3cacfa9e | 752 | de Guix : |
bf5c74e7 JL |
753 | |
754 | @example | |
755 | make guix-binary.@var{system}.tar.xz | |
756 | @end example | |
757 | ||
758 | @noindent | |
adfb167f | 759 | ...@: which, in turn, runs: |
bf5c74e7 JL |
760 | |
761 | @example | |
adfb167f JL |
762 | guix pack -s @var{system} --localstatedir \ |
763 | --profile-name=current-guix guix | |
bf5c74e7 JL |
764 | @end example |
765 | ||
3cacfa9e | 766 | @xref{Invoquer guix pack}, pour plus d'info sur cet outil pratique. |
bf5c74e7 JL |
767 | |
768 | @node Prérequis | |
769 | @section Prérequis | |
770 | ||
15f1bff4 | 771 | Cette section dresse la liste des prérequis pour la construction de Guix |
3cacfa9e LC |
772 | depuis les sources. La procédure de construction pour Guix est la même que |
773 | pour les autres logiciels GNU, et n'est pas expliquée ici. Regardez les | |
774 | fichiers @file{README} et @file{INSTALL} dans l'arborescence des sources de | |
775 | Guix pour plus de détails. | |
bf5c74e7 | 776 | |
15f1bff4 JL |
777 | @cindex site officiel |
778 | GNU Guix is available for download from its website at | |
779 | @url{https://www.gnu.org/software/guix/}. | |
780 | ||
3cacfa9e | 781 | GNU Guix dépend des paquets suivants : |
bf5c74e7 JL |
782 | |
783 | @itemize | |
15f1bff4 | 784 | @item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.2.x; |
adfb167f JL |
785 | @item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version |
786 | 0.1.0 ou supérieure, | |
bf5c74e7 | 787 | @item |
3cacfa9e | 788 | @uref{http://gnutls.org/, GnuTLS}, en particulier ses liaisons Guile |
bf5c74e7 | 789 | (@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,, |
3cacfa9e | 790 | gnutls-guile, GnuTLS-Guile}), |
bf5c74e7 | 791 | @item |
adfb167f JL |
792 | @uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, |
793 | version 0.1.0 ou supérieure, | |
2cf2c778 JL |
794 | @item |
795 | @c FIXME: Specify a version number once a release has been made. | |
3cacfa9e LC |
796 | @uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, d'août 2017 ou |
797 | ultérieur, | |
15f1bff4 | 798 | @item @uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON}; |
3cacfa9e | 799 | @item @url{http://zlib.net, zlib}, |
bf5c74e7 JL |
800 | @item @url{http://www.gnu.org/software/make/, GNU Make}. |
801 | @end itemize | |
802 | ||
3cacfa9e | 803 | Les dépendances suivantes sont facultatives : |
bf5c74e7 JL |
804 | |
805 | @itemize | |
bf5c74e7 JL |
806 | @item |
807 | @c Note: We need at least 0.10.2 for 'channel-send-eof'. | |
3cacfa9e LC |
808 | Le support pour la décharge de construction (@pxref{Réglages du délestage du démon}) |
809 | et @command{guix copy} (@pxref{Invoquer guix copy}) dépend de | |
bf5c74e7 | 810 | @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, version |
15f1bff4 | 811 | 0.10.2 ou ultérieure. |
bf5c74e7 JL |
812 | |
813 | @item | |
3cacfa9e LC |
814 | Lorsque @url{http://www.bzip.org, libbz2} est disponible, |
815 | @command{guix-daemon} peut l'utiliser pour compresser les journaux de | |
816 | construction. | |
bf5c74e7 JL |
817 | @end itemize |
818 | ||
3cacfa9e LC |
819 | À moins que @code{--disable-daemon} ne soit passé à @command{configure}, les |
820 | paquets suivants sont aussi requis : | |
bf5c74e7 JL |
821 | |
822 | @itemize | |
adfb167f | 823 | @item @url{http://gnupg.org/, GNU libgcrypt}, |
3cacfa9e LC |
824 | @item @url{http://sqlite.org, SQLite 3}, |
825 | @item @url{http://gcc.gnu.org, GCC's g++}, avec le support pour le | |
826 | standard C++11. | |
bf5c74e7 JL |
827 | @end itemize |
828 | ||
3cacfa9e LC |
829 | @cindex répertoire d'état |
830 | Lorsque vous configurez Guix sur un système qui a déjà une installation de | |
831 | Guix, assurez-vous de spécifier le même répertoire d'état que l'installation | |
832 | existante avec l'option @code{--localstatedir} du script @command{configure} | |
bf5c74e7 | 833 | (@pxref{Directory Variables, @code{localstatedir},, standards, GNU Coding |
3cacfa9e LC |
834 | Standards}). Le script @command{configure} vous protège des mauvaises |
835 | configurations involontaires de @var{localstatedir} pour éviter que vous ne | |
836 | corrompiez votre dépôt (@pxref{Le dépôt}). | |
837 | ||
838 | @cindex Nix, compatibilité | |
839 | Lorsque vous avez une installation fonctionnelle du | |
840 | @url{http://nixos.org/nix/, gestionnaire de paquets Nix}, vous pouvez | |
841 | configurer Guix avec @code{--disable-daemon}. Dan ce cas, Nix remplace les | |
842 | trois dépendances au dessus. | |
843 | ||
844 | Guix est compatible avec Nix, donc il est possible de partager le même dépôt | |
845 | entre les deux. Pour cela, vous devez passer à @command{configure} non | |
846 | seulement la même valeur de @code{--with-store-dir} mais aussi la même | |
847 | valeur de @code{--localstatedir}. Cette dernière est nécessaires car elle | |
848 | spécifie l'emplacement de la base de données qui stocke les métadonnées sur | |
849 | le dépôt, entre autres choses. Les valeurs par défaut pour Nix sont | |
850 | @code{--with-store-dir=/nix/store} et @code{--localstatedir=/nix/var}. | |
851 | Remarquez que @code{--disable-daemon} n'est pas requis si votre but est de | |
852 | partager le dépôt avec Nix. | |
bf5c74e7 JL |
853 | |
854 | @node Lancer la suite de tests | |
855 | @section Lancer la suite de tests | |
856 | ||
3cacfa9e LC |
857 | @cindex suite de tests |
858 | Après avoir lancé @command{configure} et @code{make} correctement, c'est une | |
859 | bonne idée de lancer la suite de tests. Elle peut aider à trouver des | |
860 | erreurs avec la configuration ou l'environnement, ou des bogues dans Guix | |
861 | lui-même — et vraiment, rapporter des échecs de tests est une bonne manière | |
862 | d'aider à améliorer le logiciel. Pour lancer la suite de tests, tapez : | |
bf5c74e7 JL |
863 | |
864 | @example | |
865 | make check | |
866 | @end example | |
867 | ||
3cacfa9e LC |
868 | Les cas de tests peuvent être lancés en parallèle : vous pouvez utiliser |
869 | l'option @code{-j} de GNU@tie{}make pour accélérer les choses. Le premier | |
870 | lancement peut prendre plusieurs minutes sur une machine récente ; les | |
871 | lancements suivants seront plus rapides car le dépôt créé pour les tests | |
872 | aura déjà plusieurs choses en cache. | |
bf5c74e7 | 873 | |
3cacfa9e LC |
874 | Il est aussi possible de lancer un sous-ensemble des tests en définissant la |
875 | variable makefile @code{TESTS} comme dans cet exemple : | |
bf5c74e7 JL |
876 | |
877 | @example | |
878 | make check TESTS="tests/store.scm tests/cpio.scm" | |
879 | @end example | |
880 | ||
3cacfa9e LC |
881 | Par défaut, les résultats des tests sont affichés au niveau du fichier. |
882 | Pour voir les détails de chaque cas de test individuel, il est possible de | |
15f1bff4 | 883 | définir la variable makefile @code{SCM_LOG_DRIVER_FLAGS} comme dans cet |
3cacfa9e | 884 | exemple : |
bf5c74e7 JL |
885 | |
886 | @example | |
887 | make check TESTS="tests/base64.scm" SCM_LOG_DRIVER_FLAGS="--brief=no" | |
888 | @end example | |
889 | ||
3cacfa9e LC |
890 | Après un échec, envoyez un courriel à @email{bug-guix@@gnu.org} et attachez |
891 | le fichier @file{test-suite.log}. Précisez la version de Guix utilisée | |
892 | ainsi que les numéros de version de ses dépendances (@pxref{Prérequis}) | |
893 | dans votre message. | |
bf5c74e7 | 894 | |
15f1bff4 JL |
895 | Guix also comes with a whole-system test suite that tests complete Guix |
896 | System instances. It can only run on systems where Guix is already | |
897 | installed, using: | |
bf5c74e7 JL |
898 | |
899 | @example | |
900 | make check-system | |
901 | @end example | |
902 | ||
903 | @noindent | |
3cacfa9e LC |
904 | Ou, de nouveau, en définissant @code{TESTS} pour choisir un sous-ensemble |
905 | des tests à lancer : | |
bf5c74e7 JL |
906 | |
907 | @example | |
908 | make check-system TESTS="basic mcron" | |
909 | @end example | |
910 | ||
911 | Ces tests systèmes sont définis dans les modules @code{(gnu tests | |
912 | @dots{})}. Ils fonctionnent en lançant les systèmes d'exploitation sous test | |
3cacfa9e LC |
913 | avec une instrumentation légère dans une machine virtuelle (VM). Ils |
914 | peuvent être intenses en terme de calculs ou plutôt rapides en fonction de | |
915 | la disponibilité des substituts de leurs dépendances (@pxref{Substituts}). | |
916 | Certains requièrent beaucoup d'espace disque pour contenir les images des | |
917 | VM@. | |
bf5c74e7 | 918 | |
3cacfa9e LC |
919 | De nouveau, en cas d'échec, envoyez tous les détails à |
920 | @email{bug-guix@@gnu.org}. | |
bf5c74e7 JL |
921 | |
922 | @node Paramétrer le démon | |
923 | @section Paramétrer le démon | |
924 | ||
3cacfa9e LC |
925 | @cindex démon |
926 | Les opérations comme la construction d'un paquet ou le lancement du | |
927 | ramasse-miettes sont toutes effectuées par un processus spécialisé, le | |
928 | @dfn{démon de construction}, pour le compte des clients. Seul le démon peut | |
929 | accéder au dépôt et à sa base de données associée. Ainsi, toute opération | |
930 | manipulant le dépôt passe par le démon. Par exemple, les outils en ligne de | |
931 | commande comme @command{guix package} et @command{guix build} communiquent | |
932 | avec le démon (@i{via} des appels de procédures distantes) pour lui dire | |
933 | quoi faire. | |
bf5c74e7 JL |
934 | |
935 | Les sections suivantes expliquent comment préparer l'environnement du démon | |
3cacfa9e | 936 | de construction. Voir aussi @ref{Substituts} pour apprendre comment |
bf5c74e7 JL |
937 | permettre le téléchargement de binaires pré-construits. |
938 | ||
939 | @menu | |
940 | * Réglages de l'environnement de construction:: Préparer l'environnement | |
941 | de construction isolé. | |
942 | * Réglages du délestage du démon:: Envoyer des constructions à des | |
943 | machines distantes. | |
944 | * Support de SELinux:: Utiliser une politique SELinux pour le démon. | |
945 | @end menu | |
946 | ||
947 | @node Réglages de l'environnement de construction | |
948 | @subsection Réglages de l'environnement de construction | |
949 | ||
3cacfa9e LC |
950 | @cindex environnement de construction |
951 | Dans une installation standard multi-utilisateurs, Guix et son démon — le | |
952 | programme @command{guix-daemon} — sont installé par l'administrateur système | |
953 | ; @file{/gnu/store} appartient à @code{root} et @command{guix-daemon} est | |
954 | lancé en @code{root}. Les utilisateurs non-privilégiés peuvent utiliser les | |
955 | outils Guix pour construire des paquets ou accéder au dépôt et le démon le | |
956 | fera pour leur compte en s'assurant que le dépôt garde un état cohérent et | |
957 | permet le partage des paquets déjà construits entre les utilisateurs. | |
958 | ||
959 | @cindex utilisateurs de construction | |
960 | Alors que @command{guix-daemon} tourne en @code{root}, vous n'avez pas | |
961 | forcément envie que les processus de construction de paquets tournent aussi | |
962 | en @code{root}, pour des raisons de sécurité évidentes. Pour éviter cela, | |
963 | vous devriez créer une réserve spéciale d'@dfn{utilisateurs de construction} | |
964 | que les processus de construction démarrés par le démon utiliseront. Ces | |
965 | utilisateurs de construction n'ont pas besoin d'un shell ou d'un répertoire | |
966 | personnel ; ils seront seulement utilisés quand le démon délaissera ses | |
967 | privilèges @code{root} dans les processus de construction. En ayant | |
968 | plusieurs de ces utilisateurs, vous permettez au démon de lancer des | |
969 | processus de construction distincts sous des UID différent, ce qui garanti | |
970 | qu'aucune interférence n'ait lieu entre les uns et les autres — une | |
971 | fonctionnalité essentielle puisque les constructions sont supposées être des | |
972 | fonctions pures (@pxref{Introduction}). | |
973 | ||
974 | Sur un système GNU/Linux, on peut créer une réserve d'utilisateurs de | |
975 | construction comme ceci (avec la syntaxe Bash et les commandes | |
976 | @code{shadow}) : | |
bf5c74e7 JL |
977 | |
978 | @c See http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00239.html | |
979 | @c for why `-G' is needed. | |
980 | @example | |
981 | # groupadd --system guixbuild | |
982 | # for i in `seq -w 1 10`; | |
983 | do | |
984 | useradd -g guixbuild -G guixbuild \ | |
985 | -d /var/empty -s `which nologin` \ | |
3cacfa9e | 986 | -c "Utilisateur de construction Guix $i" --system \ |
bf5c74e7 JL |
987 | guixbuilder$i; |
988 | done | |
989 | @end example | |
990 | ||
991 | @noindent | |
3cacfa9e LC |
992 | Le nombre d'utilisateurs de construction détermine le nombre de tâches de |
993 | constructions qui peuvent tourner en parallèle, tel que spécifié par | |
994 | l'option @option{--max-jobs} (@pxref{Invoquer guix-daemon, | |
995 | @option{--max-jobs}}). Pour utiliser @command{guix system vm} et les | |
996 | commandes liées, vous devrez ajouter les utilisateurs de construction au | |
997 | groupe @code{kvm} pour qu'ils puissent accéder à @file{/dev/kvm} avec | |
998 | @code{-G guixbuild,kvm} plutôt que @code{-G guixbuild} (@pxref{Invoquer guix system}). | |
999 | ||
1000 | Le programme @code{guix-daemon} peut ensuite être lancé en @code{root} avec | |
1001 | la commande suivante@footnote{Si votre machine utilise le système | |
1002 | d'initialisation systemd, copiez le fichier | |
1003 | @file{@var{prefix}/lib/systemd/system/guix-daemon.service} dans | |
1004 | @file{/etc/systemd/system} pour vous assurer que @command{guix-daemon} est | |
1005 | démarré automatiquement. De même, si votre machine utilise le système | |
1006 | d'initialisation Upstart, copiez le fichier | |
1007 | @file{@var{prefix}/lib/upstart/system/guix-daemon.conf} dans | |
1008 | @file{/etc/init}.} : | |
bf5c74e7 JL |
1009 | |
1010 | @example | |
1011 | # guix-daemon --build-users-group=guixbuild | |
1012 | @end example | |
1013 | ||
1014 | @cindex chroot | |
1015 | @noindent | |
3cacfa9e LC |
1016 | De cette façon, le démon démarre les processus de construction dans un |
1017 | chroot, sous un des utilisateurs @code{guixbuilder}. Sur GNU/Linux par | |
1018 | défaut, l'environnement chroot ne contient rien d'autre que : | |
bf5c74e7 JL |
1019 | |
1020 | @c Keep this list in sync with libstore/build.cc! ----------------------- | |
1021 | @itemize | |
1022 | @item | |
3cacfa9e LC |
1023 | un répertoire @code{/dev} minimal, créé presque indépendamment du |
1024 | @code{/dev} de l'hôte@footnote{« presque », parce que même si l'ensemble des | |
1025 | fichiers qui apparaissent dans le @code{/dev} du chroot sont déterminés à | |
1026 | l'avance, la plupart de ces fichiers ne peut pas être créée si l'hôte ne les | |
1027 | a pas.} ; | |
bf5c74e7 JL |
1028 | |
1029 | @item | |
3cacfa9e LC |
1030 | le répertoire @code{/proc} ; il ne montre que les processus du conteneur car |
1031 | on utilise une espace de nom séparé pour les PID ; | |
bf5c74e7 JL |
1032 | |
1033 | @item | |
3cacfa9e LC |
1034 | @file{/etc/passwd} avec une entrée pour l'utilisateur actuel et une entrée |
1035 | pour l'utilisateur @file{nobody} ; | |
bf5c74e7 JL |
1036 | |
1037 | @item | |
3cacfa9e | 1038 | @file{/etc/group} avec une entrée pour le groupe de l'utilisateur ; |
bf5c74e7 JL |
1039 | |
1040 | @item | |
3cacfa9e LC |
1041 | @file{/etc/hosts} avec une entrée qui fait correspondre @code{localhost} à |
1042 | @code{127.0.0.1} ; | |
bf5c74e7 JL |
1043 | |
1044 | @item | |
3cacfa9e | 1045 | un répertoire @file{/tmp} inscriptible. |
bf5c74e7 JL |
1046 | @end itemize |
1047 | ||
3cacfa9e LC |
1048 | Vous pouvez influencer le répertoire où le démon stocke les arbres de |
1049 | construction @i{via} la variable d'environnement @code{TMPDIR}. Cependant, | |
1050 | l'arbre de construction dans le chroot sera toujours appelé | |
1051 | @file{/tmp/guix-build-@var{nom}.drv-0}, où @var{nom} est le nom de la | |
1052 | dérivation — p.@: ex.@: @code{coreutils-8.24}. De cette façon, la valeur de | |
1053 | @code{TMPDIR} ne fuite pas à l'intérieur des environnements de construction, | |
1054 | ce qui évite des différences lorsque le processus de construction retient le | |
1055 | nom de leur répertoire de construction. | |
bf5c74e7 JL |
1056 | |
1057 | @vindex http_proxy | |
1058 | Le démon tient aussi compte de la variable d'environnement @code{http_proxy} | |
1059 | pour ses téléchargements HTTP, que ce soit pour les dérivations à sortie | |
1060 | fixes (@pxref{Dérivations}) ou pour les substituts (@pxref{Substituts}). | |
1061 | ||
3cacfa9e LC |
1062 | Si vous installez Guix en tant qu'utilisateur non-privilégié, il est |
1063 | toujours possible de lancer @command{guix-daemon} si vous passez | |
1064 | @code{--disable-chroot}. Cependant, les processus de construction ne seront | |
1065 | pas isolés les uns des autres ni du reste du système. Ainsi les processus | |
1066 | de construction peuvent interférer les uns avec les autres, et peuvent | |
1067 | accéder à des programmes, des bibliothèques et d'autres fichiers présents | |
1068 | sur le système — ce qui rend plus difficile de les voir comme des fonctions | |
1069 | @emph{pures}. | |
bf5c74e7 JL |
1070 | |
1071 | ||
1072 | @node Réglages du délestage du démon | |
3cacfa9e LC |
1073 | @subsection Utiliser le dispositif de déchargement |
1074 | ||
1075 | @cindex déchargement | |
1076 | @cindex crochet de construction | |
1077 | Si vous le souhaitez, le démon de construction peut @dfn{décharger} des | |
1078 | constructions de dérivations sur d'autres machines Guix avec le @dfn{crochet | |
1079 | de construction} @code{offload}@footnote{Cette fonctionnalité n'est | |
1080 | disponible que si @uref{https://github.com/artyom-poptsov/guile-ssh, | |
1081 | Guile-SSH} est présent.}. Lorsque cette fonctionnalité est activée, Guix | |
1082 | lit une liste de machines de constructions spécifiée par l'utilisateur dans | |
1083 | @file{/etc/guix/machines.scm} ; à chaque fois qu'une construction est | |
1084 | demandée, par exemple par @code{guix build}, le démon essaie de la décharger | |
1085 | sur une des machines qui satisfont les contraintes de la dérivation, en | |
1086 | particulier le type de système, p.@: ex.@: @file{x86_64-linux}. Les | |
1087 | prérequis manquants pour la construction sont copiés par SSH sur la machine | |
1088 | de construction qui procède ensuite à la construction ; si elle réussi, les | |
1089 | sorties de la construction sont copiés vers la machine de départ. | |
1090 | ||
1091 | Le fichier @file{/etc/guix/machines.scm} ressemble typiquement à cela : | |
bf5c74e7 JL |
1092 | |
1093 | @example | |
1094 | (list (build-machine | |
1095 | (name "eightysix.example.org") | |
1096 | (system "x86_64-linux") | |
1097 | (host-key "ssh-ed25519 AAAAC3Nza@dots{}") | |
1098 | (user "bob") | |
3cacfa9e | 1099 | (speed 2.)) ;très rapide ! |
bf5c74e7 JL |
1100 | |
1101 | (build-machine | |
1102 | (name "meeps.example.org") | |
1103 | (system "mips64el-linux") | |
1104 | (host-key "ssh-rsa AAAAB3Nza@dots{}") | |
1105 | (user "alice") | |
1106 | (private-key | |
1107 | (string-append (getenv "HOME") | |
1108 | "/.ssh/identity-for-guix")))) | |
1109 | @end example | |
1110 | ||
1111 | @noindent | |
3cacfa9e LC |
1112 | Dans l'exemple ci-dessus nous spécifions une liste de deux machines de |
1113 | construction, une pour l'architecture @code{x86_64} et une pour | |
1114 | l'architecture @code{mips64el}. | |
1115 | ||
1116 | En fait, ce fichier est — et ça ne devrait pas vous surprendre ! — un | |
1117 | fichier Scheme qui est évalué au démarrage du crochet @code{offload}. Sa | |
1118 | valeur de retour doit être une liste d'objets @code{build-machine}. Même si | |
1119 | cet exemple montre une liste fixée de machines de construction, on pourrait | |
1120 | imaginer par exemple utiliser DNS-SD pour renvoyer une liste de machines de | |
1121 | constructions potentielles découvertes sur le réseau local | |
bf5c74e7 | 1122 | (@pxref{Introduction, Guile-Avahi,, guile-avahi, Using Avahi in Guile Scheme |
3cacfa9e | 1123 | Programs}). Le type de données @code{build-machine} est détaillé plus bas. |
bf5c74e7 | 1124 | |
3cacfa9e LC |
1125 | @deftp {Type de données} build-machine |
1126 | Ce type de données représente les machines de construction sur lesquelles le | |
1127 | démon peut décharger des constructions. Les champs importants sont : | |
bf5c74e7 JL |
1128 | |
1129 | @table @code | |
1130 | ||
1131 | @item name | |
3cacfa9e | 1132 | Le nom d'hôte de la machine distante. |
bf5c74e7 JL |
1133 | |
1134 | @item system | |
3cacfa9e | 1135 | Le type de système de la machine distante, p.@: ex.@: @code{"x86_64-linux"}. |
bf5c74e7 JL |
1136 | |
1137 | @item user | |
3cacfa9e LC |
1138 | Le compte utilisateur à utiliser lors de la connexion à la machine distante |
1139 | par SSH@. Remarquez que la paire de clef SSH ne doit @emph{pas} être | |
1140 | protégée par mot de passe pour permettre des connexions non-interactives. | |
bf5c74e7 JL |
1141 | |
1142 | @item host-key | |
3cacfa9e LC |
1143 | Cela doit être la @dfn{clef d'hôte SSH publique} de la machine au format |
1144 | OpenSSH@. Elle est utilisée pour authentifier la machine lors de la | |
1145 | connexion. C'est une longue chaîne qui ressemble à cela : | |
bf5c74e7 JL |
1146 | |
1147 | @example | |
1148 | ssh-ed25519 AAAAC3NzaC@dots{}mde+UhL hint@@example.org | |
1149 | @end example | |
1150 | ||
3cacfa9e LC |
1151 | Si la machine utilise le démon OpenSSH, @command{sshd}, la clef d'hôte se |
1152 | trouve dans un fichier comme @file{/etc/ssh/ssh_host_ed25519_key.pub}. | |
bf5c74e7 | 1153 | |
3cacfa9e LC |
1154 | Si la machine utilise le démon SSH de GNU@tie{}lsh, la clef d'hôte est dans |
1155 | @file{/etc/lsh/host-key.pub} ou un fichier similaire. Elle peut être | |
1156 | convertie au format OpenSSH avec @command{lsh-export-key} | |
1157 | (@pxref{Converting keys,,, lsh, LSH Manual}) : | |
bf5c74e7 JL |
1158 | |
1159 | @example | |
1160 | $ lsh-export-key --openssh < /etc/lsh/host-key.pub | |
1161 | ssh-rsa AAAAB3NzaC1yc2EAAAAEOp8FoQAAAQEAs1eB46LV@dots{} | |
1162 | @end example | |
1163 | ||
1164 | @end table | |
1165 | ||
3cacfa9e | 1166 | Il y a un certain nombre de champs facultatifs que vous pouvez remplir : |
bf5c74e7 JL |
1167 | |
1168 | @table @asis | |
1169 | ||
3cacfa9e LC |
1170 | @item @code{port} (par défaut : @code{22}) |
1171 | Numéro de port du serveur SSH sur la machine. | |
bf5c74e7 | 1172 | |
3cacfa9e | 1173 | @item @code{private-key} (par défaut : @file{~root/.ssh/id_rsa}) |
adfb167f JL |
1174 | Le fichier de clef privée SSH à utiliser lors de la connexion à la machine, |
1175 | au format OpenSSH@. Cette clef ne doit pas être protégée par phrase de | |
1176 | passe. | |
bf5c74e7 | 1177 | |
3cacfa9e LC |
1178 | Remarquez que la valeur par défaut est la clef privée @emph{du compte |
1179 | root}. Assurez-vous qu'elle existe si vous utilisez la valeur par défaut. | |
bf5c74e7 | 1180 | |
3cacfa9e LC |
1181 | @item @code{compression} (par défaut : @code{"zlib@@openssh.com,zlib"}) |
1182 | @itemx @code{compression-level} (par défaut : @code{3}) | |
1183 | Les méthodes de compression au niveau SSH et le niveau de compression | |
1184 | demandé. | |
bf5c74e7 | 1185 | |
3cacfa9e LC |
1186 | Remarquez que le déchargement utilise la compression SSH pour réduire la |
1187 | bande passante utilisée lors du transfert vers et depuis les machines de | |
1188 | construction. | |
bf5c74e7 | 1189 | |
3cacfa9e LC |
1190 | @item @code{daemon-socket} (par défaut : @code{"/var/guix/daemon-socket/socket"}) |
1191 | Le nom de fichier du socket Unix-domain sur lequel @command{guix-daemon} | |
1192 | écoute sur cette machine. | |
bf5c74e7 | 1193 | |
3cacfa9e LC |
1194 | @item @code{parallel-builds} (par défaut : @code{1}) |
1195 | Le nombre de constructions qui peuvent tourner simultanément sur la machine. | |
bf5c74e7 | 1196 | |
3cacfa9e LC |
1197 | @item @code{speed} (par défaut : @code{1.0}) |
1198 | Un « facteur de vitesse relatif ». L'ordonnanceur des constructions tendra | |
1199 | à préférer les machines avec un plus grand facteur de vitesse. | |
bf5c74e7 | 1200 | |
3cacfa9e LC |
1201 | @item @code{features} (par défaut : @code{'()}) |
1202 | Une liste de chaînes qui contient les fonctionnalités spécifiques supportées | |
1203 | par la machine. Un exemple est @code{"kvm"} pour les machines qui ont le | |
1204 | module Linux KVM et le support matériel correspondant. Les dérivations | |
1205 | peuvent demander des fonctionnalités par leur nom et seront orchestrées sur | |
1206 | les machines de construction correspondantes. | |
bf5c74e7 JL |
1207 | |
1208 | @end table | |
1209 | @end deftp | |
1210 | ||
15f1bff4 JL |
1211 | The @command{guix} command must be in the search path on the build |
1212 | machines. You can check whether this is the case by running: | |
bf5c74e7 JL |
1213 | |
1214 | @example | |
15f1bff4 | 1215 | ssh build-machine guix repl --version |
bf5c74e7 JL |
1216 | @end example |
1217 | ||
3cacfa9e LC |
1218 | Il reste une dernière chose à faire maintenant que @file{machines.scm} est |
1219 | en place. Comme expliqué ci-dessus, lors du déchargement les fichiers sont | |
1220 | transférés entre les dépôts des machines. Pour que cela fonctionne, vous | |
1221 | devez d'abord générer une paire de clef sur chaque machine pour permettre au | |
1222 | démon d'exporter des archives signées des fichiers de son dépôt | |
1223 | (@pxref{Invoquer guix archive}) : | |
bf5c74e7 JL |
1224 | |
1225 | @example | |
1226 | # guix archive --generate-key | |
1227 | @end example | |
1228 | ||
1229 | @noindent | |
3cacfa9e LC |
1230 | Chaque machine de construction doit autoriser la clef de la machine |
1231 | maîtresse pour qu'ils acceptent les éléments de dépôt de celle-ci : | |
bf5c74e7 JL |
1232 | |
1233 | @example | |
1234 | # guix archive --authorize < master-public-key.txt | |
1235 | @end example | |
1236 | ||
1237 | @noindent | |
3cacfa9e LC |
1238 | De même, la machine maîtresse doit autoriser les clefs de chaque machine de |
1239 | construction. | |
bf5c74e7 | 1240 | |
3cacfa9e LC |
1241 | Toute cette histoire de clefs permet d'exprimer la confiance mutuelle |
1242 | deux-à-deux entre le maître et les machines de construction. Concrètement, | |
1243 | lorsque le maître reçoit des fichiers d'une machine de construction (et | |
1244 | vice-versa), son démon de construction s'assure qu'ils sont authentiques, | |
1245 | n'ont pas été modifiés par un tiers et qu'il sont signés par un clef | |
1246 | autorisée. | |
bf5c74e7 | 1247 | |
3cacfa9e LC |
1248 | @cindex test du déchargement |
1249 | Pour tester que votre paramétrage fonctionne, lancez cette commande sur le | |
1250 | nœud maître : | |
bf5c74e7 JL |
1251 | |
1252 | @example | |
1253 | # guix offload test | |
1254 | @end example | |
1255 | ||
3cacfa9e LC |
1256 | Cela essaiera de se connecter à toutes les machines de construction |
1257 | spécifiées dans @file{/etc/guix/machines.scm}, s'assurera que Guile et les | |
1258 | modules Guix sont disponibles sur toutes les machines et tentera d'exporter | |
1259 | vers la machine et d'importer depuis elle, et rapportera toute erreur | |
1260 | survenu pendant le processus. | |
bf5c74e7 | 1261 | |
3cacfa9e LC |
1262 | Si vous souhaitez tester un fichier de machines différent, spécifiez-le sur |
1263 | la ligne de commande : | |
bf5c74e7 JL |
1264 | |
1265 | @example | |
1266 | # guix offload test machines-qualif.scm | |
1267 | @end example | |
1268 | ||
3cacfa9e LC |
1269 | Enfin, vous pouvez tester un sous-ensemble de machines dont le nom |
1270 | correspond à une expression rationnelle comme ceci : | |
bf5c74e7 JL |
1271 | |
1272 | @example | |
1273 | # guix offload test machines.scm '\.gnu\.org$' | |
1274 | @end example | |
1275 | ||
3cacfa9e LC |
1276 | @cindex statut du déchargement |
1277 | Pour afficher la charge actuelle de tous les hôtes de construction, lancez | |
1278 | cette commande sur le nœud principal : | |
bf5c74e7 JL |
1279 | |
1280 | @example | |
1281 | # guix offload status | |
1282 | @end example | |
1283 | ||
1284 | ||
1285 | @node Support de SELinux | |
1286 | @subsection Support de SELinux | |
1287 | ||
3cacfa9e LC |
1288 | @cindex SELinux, politique du démon |
1289 | @cindex contrôle d'accès obligatoire, SELinux | |
1290 | @cindex sécurité, guix-daemon | |
15f1bff4 JL |
1291 | Guix includes an SELinux policy file at @file{etc/guix-daemon.cil} that can |
1292 | be installed on a system where SELinux is enabled, in order to label Guix | |
1293 | files and to specify the expected behavior of the daemon. Since Guix System | |
1294 | does not provide an SELinux base policy, the daemon policy cannot be used on | |
1295 | Guix System. | |
bf5c74e7 | 1296 | |
3cacfa9e LC |
1297 | @subsubsection Installer la politique SELinux |
1298 | @cindex SELinux, installation de la politique | |
1299 | Pour installer la politique, lancez cette commande en root : | |
bf5c74e7 JL |
1300 | |
1301 | @example | |
1302 | semodule -i etc/guix-daemon.cil | |
1303 | @end example | |
1304 | ||
3cacfa9e LC |
1305 | Puis ré-étiquetez le système de fichier avec @code{restorecon} ou par un |
1306 | mécanisme différent fournit par votre système. | |
bf5c74e7 | 1307 | |
3cacfa9e LC |
1308 | Une fois la politique installée, le système de fichier ré-étiqueté et le |
1309 | démon redémarré, il devrait être lancé dans le contexte | |
1310 | @code{guix_daemon_t}. Vous pouvez le confirmer avec la commande suivante : | |
bf5c74e7 JL |
1311 | |
1312 | @example | |
1313 | ps -Zax | grep guix-daemon | |
1314 | @end example | |
1315 | ||
3cacfa9e LC |
1316 | Surveillez les fichiers journaux de SELinux pendant que vous lancez une |
1317 | commande comme @code{guix build hello} pour vous convaincre que SELniux | |
1318 | permet toutes les opérations nécessaires. | |
bf5c74e7 JL |
1319 | |
1320 | @subsubsection Limitations | |
3cacfa9e | 1321 | @cindex SELinux, limites |
bf5c74e7 | 1322 | |
15f1bff4 | 1323 | La politique n'est pas parfaite. Voici une liste de limitations et de |
3cacfa9e LC |
1324 | bizarreries qui vous devriez prendre en compte avant de déployer la |
1325 | politique SELinux fournie pour le démon Guix. | |
bf5c74e7 JL |
1326 | |
1327 | @enumerate | |
1328 | @item | |
3cacfa9e LC |
1329 | @code{guix_daemon_socket_t} n'est pas vraiment utilisé. Aucune des |
1330 | opérations sur les sockets n'impliquent de contextes qui ont quoi que ce | |
1331 | soit à voir avec @code{guix_daemon_socket_t}. Ça ne fait pas de mal d'avoir | |
1332 | une étiquette inutilisée, mais il serait préférable de définir des règles | |
1333 | sur les sockets uniquement pour cette étiquette. | |
bf5c74e7 JL |
1334 | |
1335 | @item | |
3cacfa9e LC |
1336 | @code{guix gc} ne peut pas accéder à n'importe quel lien vers les profils. |
1337 | Par conception, l'étiquette de fichier de la destination d'un lien | |
1338 | symbolique est indépendant de l'étiquette du lien lui-même. Bien que tous | |
1339 | les profils sous $localstatedir aient une étiquette, les liens vers ces | |
1340 | profils héritent de l'étiquette du répertoire dans lequel ils se trouvent. | |
1341 | Pour les liens dans le répertoire personnel cela sera @code{user_home_t}. | |
1342 | Mais pour les liens du répertoire personnel de l'utilisateur root, ou | |
1343 | @file{/tmp}, ou du répertoire de travail du serveur HTTP, etc, cela ne | |
1344 | fonctionnera pas. SELinux empêcherait @code{guix gc} de lire et de suivre | |
1345 | ces liens. | |
bf5c74e7 JL |
1346 | |
1347 | @item | |
3cacfa9e LC |
1348 | La fonctionnalité du démon d'écouter des connexions TCP pourrait ne plus |
1349 | fonctionner. Cela demande des règles supplémentaires car SELinux traite les | |
1350 | sockets réseau différemment des fichiers. | |
bf5c74e7 JL |
1351 | |
1352 | @item | |
3cacfa9e LC |
1353 | Actuellement tous les fichiers qui correspondent à l'expression rationnelle |
1354 | @code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} reçoivent l'étiquette | |
1355 | @code{guix_daemon_exec_t} ; cela signifie que @emph{tout} fichier avec ce | |
1356 | nom dans n'importe quel profil serait autorisé à se lancer dans le domaine | |
1357 | @code{guix_daemon_t}. Ce n'est pas idéal. Un attaquant pourrait construire | |
1358 | un paquet qui fournit cet exécutable et convaincre un utilisateur de | |
1359 | l'installer et de le lancer, ce qui l'élève dans le domaine | |
1360 | @code{guix_daemon_t}. À ce moment SELinux ne pourrait pas l'empêcher | |
1361 | d'accéder à des fichiers autorisés pour les processus de ce domaine. | |
1362 | ||
1363 | Nous pourrions générer une politique bien plus restrictive à l'installation, | |
1364 | pour que seuls les noms de fichiers @emph{exacts} de l'exécutable | |
1365 | @code{guix-daemon} actuellement installé soit étiqueté avec | |
1366 | @code{guix_daemon_exec_t}, plutôt que d'utiliser une expression rationnelle | |
1367 | plus large. L'inconvénient c'est que root devrait installer ou mettre à | |
1368 | jour la politique à l'installation à chaque fois que le paquet Guix qui | |
1369 | fournit l'exécutable @code{guix-daemon} effectivement exécuté est mis à | |
1370 | jour. | |
bf5c74e7 JL |
1371 | @end enumerate |
1372 | ||
1373 | @node Invoquer guix-daemon | |
3cacfa9e | 1374 | @section Invoquer @command{guix-daemon} |
bf5c74e7 | 1375 | |
3cacfa9e LC |
1376 | Le programme @command{guix-daemon} implémente toutes les fonctionnalités |
1377 | d'accès au dépôt. Cela inclus le lancement des processus de construction, | |
1378 | le lancement du ramasse-miettes, la demande de disponibilité des résultats | |
1379 | de construction, etc. Il tourne normalement en @code{root} comme ceci : | |
bf5c74e7 JL |
1380 | |
1381 | @example | |
1382 | # guix-daemon --build-users-group=guixbuild | |
1383 | @end example | |
1384 | ||
1385 | @noindent | |
1386 | Pour des détails sur son paramétrage, @pxref{Paramétrer le démon}. | |
1387 | ||
1388 | @cindex chroot | |
3cacfa9e LC |
1389 | @cindex conteneur, environnement de construction |
1390 | @cindex environnement de construction | |
1391 | @cindex constructions reproductibles | |
bf5c74e7 JL |
1392 | Par défaut, @command{guix-daemon} lance les processus de construction sous |
1393 | différents UID récupérés depuis le groupe de construction spécifié avec | |
3cacfa9e | 1394 | @code{--build-users-group}. En plus, chaque processus de construction est |
bf5c74e7 JL |
1395 | lancé dans un environnement chroot qui ne contient que le sous-ensemble du |
1396 | dépôt dont le processus de construction dépend, tel que spécifié par sa | |
1397 | dérivation (@pxref{Interface de programmation, dérivation}), plus un | |
3cacfa9e LC |
1398 | ensemble de répertoires systèmes spécifiques. Par défaut ce dernier |
1399 | contient @file{/dev} et @file{/dev/pts}. De plus, sous GNU/Linux, | |
1400 | l'environnement de construction est un @dfn{conteneur} : en plus d'avoir sa | |
1401 | propre arborescence du système de fichier, elle a un espace de montage | |
1402 | séparé, son propre espace de PID, son espace de réseau, etc. Cela aide à | |
1403 | obtenir des constructions reproductibles (@pxref{Fonctionnalités}). | |
1404 | ||
1405 | Lorsque le démon effectue une construction pour le compte de l'utilisateur, | |
1406 | il crée un répertoire sous @file{/tmp} ou sous le répertoire spécifié par sa | |
1407 | variable d'environnement @code{TMPDIR}. Ce répertoire est partagé avec le | |
adfb167f JL |
1408 | conteneur pendant la durée de la construction, bien que dans le conteneur, |
1409 | l'arborescence de construction est toujours appelée | |
1410 | @file{/tmp/guix-build-@var{name}.drv-0}. | |
3cacfa9e LC |
1411 | |
1412 | Le répertoire de construction est automatiquement supprimé à la fin, à moins | |
1413 | que la construction n'ait échoué et que le client ait spécifié | |
1414 | @option{--keep-failed} (@pxref{Invoquer guix build, | |
1415 | @option{--keep-failed}}). | |
1416 | ||
adfb167f JL |
1417 | Le démon écoute les connexions et démarre un sous-processus pour chaque |
1418 | session démarrée par un client (l'une des sous-commandes de | |
1419 | @command{guix}). La commande @command{guix processes} vous permet d'obtenir | |
1420 | un aperçu de l'activité sur votre système en affichant chaque session et | |
1421 | client actif. @xref{Invoquer guix processes} pour plus d'informations. | |
1422 | ||
3cacfa9e | 1423 | Les options en ligne de commande suivantes sont disponibles : |
bf5c74e7 JL |
1424 | |
1425 | @table @code | |
3cacfa9e LC |
1426 | @item --build-users-group=@var{groupe} |
1427 | Prendre les utilisateurs de @var{group} pour lancer les processus de | |
bf5c74e7 JL |
1428 | construction (@pxref{Paramétrer le démon, utilisateurs de construction}). |
1429 | ||
1430 | @item --no-substitutes | |
3cacfa9e LC |
1431 | @cindex substituts |
1432 | Ne pas utiliser de substitut pour les résultats de la construction. | |
1433 | C'est-à-dire, toujours construire localement plutôt que de permettre le | |
1434 | téléchargement de binaires pré-construits (@pxref{Substituts}). | |
bf5c74e7 | 1435 | |
3cacfa9e LC |
1436 | Lorsque le démon tourne avec @code{--no-substitutes}, les clients peuvent |
1437 | toujours activer explicitement la substitution @i{via} l'appel de procédure | |
1438 | distante @code{set-build-options} (@pxref{Le dépôt}). | |
bf5c74e7 JL |
1439 | |
1440 | @item --substitute-urls=@var{urls} | |
1441 | @anchor{daemon-substitute-urls} | |
15f1bff4 JL |
1442 | Consider @var{urls} the default whitespace-separated list of substitute |
1443 | source URLs. When this option is omitted, | |
1444 | @indicateurl{https://@value{SUBSTITUTE-SERVER}} is used. | |
bf5c74e7 JL |
1445 | |
1446 | Cela signifie que les substituts sont téléchargés depuis les @var{urls}, | |
1447 | tant qu'ils sont signés par une signature de confiance (@pxref{Substituts}). | |
1448 | ||
3cacfa9e | 1449 | @cindex crochet de construction |
bf5c74e7 | 1450 | @item --no-build-hook |
3cacfa9e | 1451 | Ne pas utiliser le @dfn{crochet de construction}. |
bf5c74e7 | 1452 | |
3cacfa9e LC |
1453 | Le crochet de construction est un programme d'aide qui le démon peut |
1454 | démarrer et auquel soumettre les requêtes de construction. Ce mécanisme est | |
1455 | utilisé pour décharger les constructions à d'autres machines (@pxref{Réglages du délestage du démon}). | |
bf5c74e7 JL |
1456 | |
1457 | @item --cache-failures | |
3cacfa9e LC |
1458 | Mettre les échecs de construction en cache. Par défaut, seules les |
1459 | constructions réussies sont mises en cache. | |
bf5c74e7 | 1460 | |
3cacfa9e LC |
1461 | Lorsque cette option est utilisée, @command{guix gc --list-failures} peut |
1462 | être utilisé pour demander l'ensemble des éléments du dépôt marqués comme | |
1463 | échoués ; @command{guix gc --clear-failures} vide la liste des éléments | |
1464 | aillant échoué. @xref{Invoquer guix gc}. | |
bf5c74e7 JL |
1465 | |
1466 | @item --cores=@var{n} | |
1467 | @itemx -c @var{n} | |
3cacfa9e LC |
1468 | Utiliser @var{n} cœurs CPU pour construire chaque dérivation ; @code{0} |
1469 | signifie autant que possible. | |
bf5c74e7 | 1470 | |
3cacfa9e LC |
1471 | La valeur par défaut est @code{0}, mais elle peut être modifiée par les |
1472 | clients comme avec l'option @code{--cores} de @command{guix build} | |
1473 | (@pxref{Invoquer guix build}). | |
bf5c74e7 | 1474 | |
3cacfa9e LC |
1475 | L'effet est de définir la variable d'environnement @code{NIX_BUILD_CORES} |
1476 | dans le processus de construction, qui peut ensuite l'utiliser pour | |
1477 | exploiter le parallélisme en interne — par exemple en lançant @code{make | |
1478 | -j$NIX_BUILD_CORES}. | |
bf5c74e7 JL |
1479 | |
1480 | @item --max-jobs=@var{n} | |
1481 | @itemx -M @var{n} | |
3cacfa9e LC |
1482 | Permettre au plus @var{n} travaux de construction en parallèle. La valeur |
1483 | par défaut est @code{1}. La mettre à @code{0} signifie qu'aucune | |
1484 | construction ne sera effectuée localement ; à la place, le démon déchargera | |
1485 | les constructions (@pxref{Réglages du délestage du démon}) ou échouera. | |
bf5c74e7 | 1486 | |
3cacfa9e LC |
1487 | @item --max-silent-time=@var{secondes} |
1488 | Lorsque le processus de construction ou de substitution restent silencieux | |
1489 | pendant plus de @var{secondes}, le terminer et rapporter une erreur de | |
1490 | construction. | |
bf5c74e7 | 1491 | |
3cacfa9e | 1492 | La valeur par défaut est @code{0}, ce qui désactive le délai. |
bf5c74e7 | 1493 | |
3cacfa9e | 1494 | La valeur spécifiée ici peut être modifiée par les clients (@pxref{Options de construction communes, @code{--max-silent-time}}). |
bf5c74e7 | 1495 | |
3cacfa9e LC |
1496 | @item --timeout=@var{secondes} |
1497 | De même, lorsque le processus de construction ou de substitution dure plus | |
1498 | de @var{secondes}, le terminer et rapporter une erreur de construction. | |
bf5c74e7 | 1499 | |
3cacfa9e | 1500 | La valeur par défaut est @code{0}, ce qui désactive le délai. |
bf5c74e7 | 1501 | |
3cacfa9e | 1502 | La valeur spécifiée ici peut être modifiée par les clients (@pxref{Options de construction communes, @code{--timeout}}). |
bf5c74e7 JL |
1503 | |
1504 | @item --rounds=@var{N} | |
3cacfa9e LC |
1505 | Construire chaque dérivations @var{N} fois à la suite, et lever une erreur |
1506 | si les résultats de construction consécutifs ne sont pas identiques | |
1507 | bit-à-bit. Remarquez que ce paramètre peut être modifié par les clients | |
1508 | comme @command{guix build} (@pxref{Invoquer guix build}). | |
bf5c74e7 | 1509 | |
15f1bff4 | 1510 | Lorsqu'utilisé avec @option{--keep-failed}, la sortie différente est gardée |
3cacfa9e LC |
1511 | dans le dépôt sous @file{/gnu/store/@dots{}-check}. Cela rend plus facile |
1512 | l'étude des différences entre les deux résultats. | |
bf5c74e7 JL |
1513 | |
1514 | @item --debug | |
3cacfa9e | 1515 | Produire une sortie de débogage. |
bf5c74e7 | 1516 | |
3cacfa9e LC |
1517 | Cela est utile pour déboguer des problèmes de démarrage du démon, mais |
1518 | ensuite elle peut être modifiée par les clients, par exemple par l'option | |
1519 | @code{--verbosity} de @command{guix build} (@pxref{Invoquer guix build}). | |
bf5c74e7 | 1520 | |
3cacfa9e LC |
1521 | @item --chroot-directory=@var{rép} |
1522 | Ajouter @var{rép} au chroot de construction | |
bf5c74e7 | 1523 | |
3cacfa9e LC |
1524 | Cela peut changer le résultat d'un processus de construction — par exemple |
1525 | s'il utilise une dépendance facultative trouvée dans @var{rép} lorsqu'elle | |
1526 | est disponible ou pas sinon. Pour cette raison, il n'est pas recommandé | |
1527 | d'utiliser cette option. À la place, assurez-vous que chaque dérivation | |
1528 | déclare toutes les entrées dont elle a besoin. | |
bf5c74e7 JL |
1529 | |
1530 | @item --disable-chroot | |
3cacfa9e | 1531 | Désactive les constructions dans un chroot. |
bf5c74e7 | 1532 | |
3cacfa9e LC |
1533 | Utiliser cette option n'est pas recommandé car, de nouveau, elle permet aux |
1534 | processus de construction d'accéder à des dépendances non déclarées. Elle | |
1535 | est nécessaire cependant lorsque @command{guix-daemon} tourne en tant | |
1536 | qu'utilisateur non privilégié. | |
bf5c74e7 JL |
1537 | |
1538 | @item --log-compression=@var{type} | |
3cacfa9e LC |
1539 | Compresser les journaux de construction suivant le @var{type}, parmi |
1540 | @code{gzip}, @code{bzip2} ou @code{none}. | |
bf5c74e7 | 1541 | |
3cacfa9e LC |
1542 | À moins que @code{--lose-logs} ne soit utilisé, tous les journaux de |
1543 | construction sont gardés dans @var{localstatedir}. Pour gagner de la place, | |
1544 | le démon les compresse automatiquement avec bzip2 par défaut. | |
bf5c74e7 JL |
1545 | |
1546 | @item --disable-deduplication | |
3cacfa9e LC |
1547 | @cindex déduplication |
1548 | Désactiver la « déduplication » automatique des fichiers dans le dépôt. | |
bf5c74e7 | 1549 | |
3cacfa9e LC |
1550 | Par défaut, les fichiers ajoutés au dépôt sont automatiquement « dédupliqués |
1551 | » : si un nouveau fichier est identique à un autre fichier trouvé dans le | |
1552 | dépôt, le démon en fait un lien en dur vers l'autre fichier. Cela réduit | |
1553 | considérablement l'utilisation de l'espace disque au prix d'une charge en | |
1554 | entrée/sortie plus grande à la fin d'un processus de construction. Cette | |
1555 | option désactive cette optimisation. | |
bf5c74e7 JL |
1556 | |
1557 | @item --gc-keep-outputs[=yes|no] | |
3cacfa9e LC |
1558 | Dire si le ramasse-miettes (GC) doit garder les sorties des dérivations |
1559 | utilisées. | |
bf5c74e7 | 1560 | |
3cacfa9e LC |
1561 | @cindex racines du GC |
1562 | @cindex racines du ramasse-miettes | |
adfb167f JL |
1563 | Lorsqu'elle est à « yes », le GC gardera les sorties de toutes les |
1564 | dérivations — les fichiers @code{.drv} — accessibles dans le dépôt. La | |
1565 | valeur par défaut est « no », ce qui signifie que les sorties des | |
1566 | dérivations ne sont gardées que si elles sont accessibles à partir d'une | |
1567 | racine du GC. @xref{Invoquer guix gc} pour plus d'informations sur les | |
1568 | racines du GC. | |
bf5c74e7 JL |
1569 | |
1570 | @item --gc-keep-derivations[=yes|no] | |
3cacfa9e LC |
1571 | Dire si le ramasse-miettes (GC) doit garder les dérivations correspondant à |
1572 | des sorties utilisées. | |
1573 | ||
1574 | Lorsqu'elle est à « yes », comme c'est le cas par défaut, le GC garde les | |
1575 | dérivations — c.-à-d.@: les fichiers @file{.drv} — tant qu'au moins une de | |
1576 | leurs sorties est utilisée. Cela permet aux utilisateurs de garder une | |
1577 | trace de l'origine des éléments du dépôt. Le mettre à « no » préserve un | |
1578 | peu d'espace disque. | |
1579 | ||
adfb167f JL |
1580 | De cette manière, avec @code{--gc-keep-derivations} à « yes », |
1581 | l'accessibilité des sorties s'étend des sorties aux dérivations et avec | |
1582 | @code{--gc-keep-outputs} à « yes », elle s'étend des dérivations aux | |
1583 | sorties. Quand les deux options sont à « yes », le GC gardera tous les | |
1584 | prérequis de construction (les sources, le compilateur, les bibliothèques, | |
1585 | et les autres outils de construction) des objets accessibles dans le dépôt, | |
1586 | indépendamment du fait qu'ils soient ou non accessibles depuis une racine du | |
1587 | GC. Cela est pratique pour les développeurs car ça leur fait gagner du | |
1588 | temps de reconstruction et de téléchargement. | |
bf5c74e7 JL |
1589 | |
1590 | @item --impersonate-linux-2.6 | |
3cacfa9e LC |
1591 | Sur les système basés sur Linux, se faire passer pour Linux 2.6. Cela |
1592 | signifie que l'appel système du noyau @code{uname} rapportera 2.6 comme | |
1593 | numéro de version. | |
bf5c74e7 | 1594 | |
3cacfa9e LC |
1595 | Cela peut être utile pour construire des programmes qui dépendent |
1596 | (généralement sans fondement) du numéro de version du noyau. | |
bf5c74e7 JL |
1597 | |
1598 | @item --lose-logs | |
3cacfa9e | 1599 | Ne pas garder les journaux de construction. Par défaut ils sont gardés dans |
bf5c74e7 JL |
1600 | @code{@var{localstatedir}/guix/log}. |
1601 | ||
3cacfa9e LC |
1602 | @item --system=@var{système} |
1603 | Supposer que @var{système} est le type de système actuel. Par défaut c'est | |
1604 | la paire architecture-noyau trouvée à la configuration, comme | |
bf5c74e7 JL |
1605 | @code{x86_64-linux}. |
1606 | ||
3cacfa9e LC |
1607 | @item --listen=@var{extrémité} |
1608 | Écouter les connexions sur @var{extrémité}. @var{extrémité} est interprété | |
1609 | comme un nom de fichier d'un socket Unix-domain s'il commence par @code{/} | |
1610 | (barre oblique). Sinon, @var{extrémité} est interprété comme un nom de | |
1611 | domaine ou d'hôte et un port sur lequel écouter. Voici quelques exemples : | |
bf5c74e7 JL |
1612 | |
1613 | @table @code | |
1614 | @item --listen=/gnu/var/daemon | |
3cacfa9e LC |
1615 | Écouter les connexions sur le socket Unix-domain @file{/gnu/var/daemon} en |
1616 | le créant si besoin. | |
bf5c74e7 JL |
1617 | |
1618 | @item --listen=localhost | |
3cacfa9e LC |
1619 | @cindex démon, accès distant |
1620 | @cindex accès distant au démon | |
1621 | @cindex démon, paramètres de grappes | |
1622 | @cindex grappes, paramètres du démon | |
1623 | Écouter les connexions TCP sur l'interface réseau correspondant à | |
1624 | @code{localhost} sur le port 44146. | |
bf5c74e7 JL |
1625 | |
1626 | @item --listen=128.0.0.42:1234 | |
3cacfa9e LC |
1627 | Écouter les connexions TCP sur l'interface réseau correspondant à |
1628 | @code{128.0.0.42} sur le port 1234. | |
bf5c74e7 JL |
1629 | @end table |
1630 | ||
3cacfa9e LC |
1631 | Cette option peut être répétée plusieurs fois, auquel cas |
1632 | @command{guix-daemon} accepte des connexions sur toutes les extrémités | |
1633 | spécifiées. Les utilisateurs peuvent dire aux commandes clientes à quelle | |
1634 | extrémité se connecter en paramétrant la variable d'environnement | |
1635 | @code{GUIX_DAEMON_SOCKET} (@pxref{Le dépôt, @code{GUIX_DAEMON_SOCKET}}). | |
1636 | ||
1637 | @quotation Remarque | |
1638 | Le protocole du démon est @emph{non authentifié et non chiffré}. Utiliser | |
1639 | @code{--listen=@var{host}} est adapté sur des réseaux locaux, comme pour des | |
1640 | grappes de serveurs, où seuls des nœuds de confiance peuvent se connecter au | |
1641 | démon de construction. Dans les autres cas où l'accès à distance au démon | |
1642 | est requis, nous conseillons d'utiliser un socket Unix-domain avec SSH@. | |
bf5c74e7 JL |
1643 | @end quotation |
1644 | ||
3cacfa9e LC |
1645 | Lorsque @code{--listen} est omis, @command{guix-daemon} écoute les |
1646 | connexions sur le socket Unix-domain situé à | |
bf5c74e7 JL |
1647 | @file{@var{localstatedir}/guix/daemon-socket/socket}. |
1648 | @end table | |
1649 | ||
1650 | ||
1651 | @node Réglages applicatifs | |
1652 | @section Réglages applicatifs | |
1653 | ||
1654 | @cindex distro extérieure | |
15f1bff4 JL |
1655 | When using Guix on top of GNU/Linux distribution other than Guix System---a |
1656 | so-called @dfn{foreign distro}---a few additional steps are needed to get | |
1657 | everything in place. Here are some of them. | |
bf5c74e7 JL |
1658 | |
1659 | @subsection Régionalisation | |
1660 | ||
1661 | @anchor{locales-and-locpath} | |
15f1bff4 | 1662 | @cindex locales, when not on Guix System |
bf5c74e7 JL |
1663 | @vindex LOCPATH |
1664 | @vindex GUIX_LOCPATH | |
3cacfa9e LC |
1665 | Les paquets installés @i{via} Guix n'utiliseront pas les données de |
1666 | régionalisation du système hôte. À la place, vous devrez d'abord installer | |
1667 | l'un des paquets linguistiques disponibles dans Guix puis définir la | |
1668 | variable d'environnement @code{GUIX_LOCPATH} : | |
bf5c74e7 JL |
1669 | |
1670 | @example | |
1671 | $ guix package -i glibc-locales | |
1672 | $ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale | |
1673 | @end example | |
1674 | ||
3cacfa9e LC |
1675 | Remarquez que le paquet @code{glibc-locales} contient les données pour tous |
1676 | les environnement linguistiques supportés par la GNU@tie{}libc et pèse | |
1677 | environ 110@tie{}Mo. Autrement, les @code{glibc-utf8-locales} est plus | |
1678 | petit mais limité à quelques environnements UTF-8. | |
bf5c74e7 | 1679 | |
3cacfa9e | 1680 | La variable @code{GUIX_LOCPATH} joue un rôle similaire à @code{LOCPATH} |
bf5c74e7 | 1681 | (@pxref{Locale Names, @code{LOCPATH},, libc, The GNU C Library Reference |
3cacfa9e | 1682 | Manual}). Il y a deux différences importantes cependant : |
bf5c74e7 JL |
1683 | |
1684 | @enumerate | |
1685 | @item | |
3cacfa9e LC |
1686 | @code{GUIX_LOCPATH} n'est compris que par la libc dans Guix et pas par la |
1687 | libc fournie par les distros externes. Ainsi, utiliser @code{GUIX_LOCPATH} | |
1688 | vous permet de vous assurer que les programmes de la distro externe ne | |
1689 | chargeront pas de données linguistiques incompatibles. | |
bf5c74e7 JL |
1690 | |
1691 | @item | |
3cacfa9e LC |
1692 | La libc ajoute un suffixe @code{/X.Y} à chaque entrée de |
1693 | @code{GUIX_LOCPATH}, où @code{X.Y} est la version de la libc — p.@: ex.@: | |
1694 | @code{2.22}. Cela signifie que, si votre profile Guix contient un mélange | |
1695 | de programmes liés avec des versions différentes de la libc, chaque version | |
1696 | de la libc essaiera de charger les environnements linguistiques dans le bon | |
1697 | format. | |
bf5c74e7 JL |
1698 | @end enumerate |
1699 | ||
3cacfa9e LC |
1700 | Cela est important car le format des données linguistiques utilisés par |
1701 | différentes version de la libc peuvent être incompatibles. | |
bf5c74e7 JL |
1702 | |
1703 | @subsection Name Service Switch | |
1704 | ||
1705 | @cindex name service switch, glibc | |
1706 | @cindex NSS (name service switch), glibc | |
1707 | @cindex nscd (name service caching daemon) | |
1708 | @cindex name service caching daemon (nscd) | |
3cacfa9e LC |
1709 | Lorsque vous utilisez Guix sur une distro externe, nous @emph{recommandons |
1710 | fortement} que ce système fasse tourner le @dfn{démon de cache de service de | |
1711 | noms} de la bibliothèque C de GNU, @command{nscd}, qui devrait écouter sur | |
1712 | le socket @file{/var/run/nscd/socket}. Sans cela, les applications | |
1713 | installées avec Guix peuvent échouer à résoudre des noms d'hôtes ou | |
1714 | d'utilisateurs, ou même planter. Les paragraphes suivants expliquent | |
1715 | pourquoi. | |
bf5c74e7 JL |
1716 | |
1717 | @cindex @file{nsswitch.conf} | |
3cacfa9e LC |
1718 | La bibliothèque C de GNU implémente un @dfn{name service switch} (NSS), qui |
1719 | est un mécanisme d'extension pour les « résolutions de noms » en général : | |
1720 | résolution de nom d'hôte, de compte utilisateur et plus (@pxref{Name Service Switch,,, libc, The GNU C Library Reference Manual}). | |
bf5c74e7 JL |
1721 | |
1722 | @cindex Network information service (NIS) | |
1723 | @cindex NIS (Network information service) | |
3cacfa9e LC |
1724 | Comme il est extensible, NSS supporte des @dfn{greffons} qui fournissent une |
1725 | nouvelle implémentation de résolution de nom : par exemple le greffon | |
1726 | @code{nss-mdns} permet la résolution de noms d'hôtes en @code{.local}, le | |
1727 | greffon @code{nis} permet la résolution de comptes utilisateurs avec le | |
1728 | Network Information Service (NIS), etc. Ces « services de recherches » | |
1729 | supplémentaires sont configurés au niveau du système dans | |
1730 | @file{/etc/nsswitch.conf}, et tous les programmes qui tournent sur ce | |
1731 | système honorent ces paramètres (@pxref{NSS Configuration File,,, libc, The | |
1732 | GNU C Reference Manual}) | |
1733 | ||
1734 | Lorsqu'ils essayent d'effectuer une résolution de nom — par exemple en | |
1735 | appelant la fonction @code{getaddrinfo} en C — les applications essayent | |
1736 | d'abord de se connecter au nscd ; en cas de réussite, nscd effectue la | |
15f1bff4 JL |
1737 | résolution de nom pour eux. Si le nscd ne tourne pas, alors ils effectuent |
1738 | la résolution eux-mêmes, en changeant les service de résolution dans leur | |
1739 | propre espace d'adressage et en le lançant. Ce services de résolution de | |
1740 | noms — les fichiers @file{libnns_*.so} — sont @code{dlopen}és mais ils | |
1741 | peuvent provenir de la bibliothèque C du système, plutôt que de la | |
1742 | bibliothèque C à laquelle l'application est liée (la bibliothèque C de | |
1743 | Guix). | |
3cacfa9e LC |
1744 | |
1745 | Et c'est là que se trouve le problème : si votre application est liée à la | |
1746 | bibliothèque C de Guix (disons, glibc-2.24) et essaye de charger les | |
1747 | greffons NSS d'une autre bibliothèque C (disons, @code{libnss_mdns.so} pour | |
1748 | glibc-2.22), il est très probable qu'elle plante ou que sa résolution de nom | |
1749 | échoue de manière inattendue. | |
1750 | ||
1751 | Lancer @command{nscd} sur le système, entre autres avantages, élimine ce | |
1752 | problème d'incompatibilité binaire car ces fichiers @code{libnss_*.so} sont | |
1753 | chargés par le processus @command{nscd}, pas par l'application elle-même. | |
1754 | ||
1755 | @subsection Polices X11 | |
1756 | ||
1757 | @cindex polices | |
1758 | La majorité des applications graphiques utilisent fontconfig pour trouver et | |
1759 | charger les police et effectuer le rendu côté client X11. Le paquet | |
1760 | @code{fontconfig} dans Guix cherche les polices dans | |
1761 | @file{$HOME/.guix-profile} par défaut. Ainsi, pour permettre aux | |
1762 | applications graphiques installées avec Guix d'afficher des polices, vous | |
1763 | devez aussi installer des polices avec Guix. Les paquets de polices | |
1764 | essentiels sont @code{gs-fonts}, @code{font-dejavu} et | |
1765 | @code{font-gnu-freefont-ttf}. | |
1766 | ||
1767 | Pour afficher des textes écrits en chinois, en japonais ou en coréen dans | |
1768 | les applications graphiques, installez @code{font-adobe-source-han-sans} ou | |
1769 | @code{font-wqy-zenhei}. Le premier a plusieurs sorties, une par famille de | |
1770 | langue (@pxref{Des paquets avec plusieurs résultats}). Par exemple, la commande | |
1771 | suivante installe les polices pour le chinois : | |
bf5c74e7 JL |
1772 | |
1773 | @example | |
1774 | guix package -i font-adobe-source-han-sans:cn | |
1775 | @end example | |
1776 | ||
1777 | @cindex @code{xterm} | |
3cacfa9e LC |
1778 | Les vieux programmes comme @command{xterm} n'utilisent pas fontconfig et |
1779 | s'appuient sur le rendu du côté du serveur. Ces programmes ont besoin de | |
15f1bff4 | 1780 | spécifier le nom complet de la police en utilisant XLFD (X Logical Font |
3cacfa9e | 1781 | Description), comme ceci : |
bf5c74e7 JL |
1782 | |
1783 | @example | |
1784 | -*-dejavu sans-medium-r-normal-*-*-100-*-*-*-*-*-1 | |
1785 | @end example | |
1786 | ||
3cacfa9e LC |
1787 | Pour pouvoir utiliser ces noms complets avec les polices TrueType installées |
1788 | dans votre profil Guix, vous devez étendre le chemin des polices du serveur | |
1789 | X : | |
bf5c74e7 JL |
1790 | |
1791 | @c Note: 'xset' does not accept symlinks so the trick below arranges to | |
1792 | @c get at the real directory. See <https://bugs.gnu.org/30655>. | |
1793 | @example | |
1794 | xset +fp $(dirname $(readlink -f ~/.guix-profile/share/fonts/truetype/fonts.dir)) | |
1795 | @end example | |
1796 | ||
1797 | @cindex @code{xlsfonts} | |
3cacfa9e LC |
1798 | Ensuite, vous pouvez lancer @code{xlsfonts} (du paquet @code{xlsfonts}) pour |
1799 | vous assurer que vos polices TrueType y sont listées. | |
bf5c74e7 JL |
1800 | |
1801 | @cindex @code{fc-cache} | |
3cacfa9e LC |
1802 | @cindex cache de polices |
1803 | Après l'installation des polices vous devrez peut-être rafraîchir le cache | |
1804 | des polices pour pouvoir les utiliser dans les applications. Ça s'applique | |
1805 | aussi lorsque les applications installées avec Guix n'ont pas l'air de | |
1806 | trouver les polices. Pour forcer la reconstruction du cache de polices | |
1807 | lancez @code{fc-cache -f}. La commande @code{fc-cache} est fournie par le | |
1808 | paquet @code{fontconfig}. | |
bf5c74e7 JL |
1809 | |
1810 | @subsection Certificats X.509 | |
1811 | ||
1812 | @cindex @code{nss-certs} | |
3cacfa9e LC |
1813 | Le paquet @code{nss-certs} fournit les certificats X.509 qui permettent aux |
1814 | programmes d'authentifier les serveurs web par HTTPS@. | |
bf5c74e7 | 1815 | |
3cacfa9e LC |
1816 | Lorsque vous utilisez Guix sur une distribution externe, vous pouvez |
1817 | installer ce paquet et définir les variables d'environnement adéquates pour | |
1818 | que les paquets sachent où trouver les certificats. @xref{Certificats X.509}, pour des informations détaillées. | |
bf5c74e7 | 1819 | |
3cacfa9e | 1820 | @subsection Paquets emacs |
bf5c74e7 JL |
1821 | |
1822 | @cindex @code{emacs} | |
3cacfa9e LC |
1823 | Lorsque vous installez les paquets Emacs avec Guix, les fichiers elisp |
1824 | peuvent être placés soit dans | |
1825 | @file{$HOME/.guix-profile/share/emacs/site-lisp/} soit dans des | |
1826 | sous-répertoires de | |
1827 | @file{$HOME/.guix-profile/share/emacs/site-lisp/guix.d/}. Ce dernier existe | |
1828 | car il existe potentiellement des milliers de paquets Emacs et stocker leurs | |
1829 | fichiers dans un seul répertoire peut ne pas être fiable (à cause de | |
1830 | conflits de noms). Donc on pense qu'utiliser un répertoire séparé est une | |
1831 | bonne idée. C'est très similaire à la manière dont le système de paquet | |
1832 | d'Emacs organise la structure de fichiers (@pxref{Package Files,,, emacs, | |
1833 | The GNU Emacs Manual}). | |
1834 | ||
1835 | Par défaut, Emacs (installé avec Guix) « sait » où ces paquets ce trouvent, | |
1836 | donc vous n'avez pas besoin de le configurer. Si, pour quelque raison que | |
1837 | ce soit, vous souhaitez éviter de charger automatiquement les paquets Emacs | |
15f1bff4 | 1838 | installés avec Guix, vous pouvez le faire en lançant Emacs avec l'option |
3cacfa9e LC |
1839 | @code{--no-site-file} (@pxref{Init File,,, emacs, The GNU Emacs Manual}). |
1840 | ||
1841 | @subsection La chaîne d'outils GCC | |
bf5c74e7 JL |
1842 | |
1843 | @cindex GCC | |
1844 | @cindex ld-wrapper | |
1845 | ||
3cacfa9e LC |
1846 | Guix offre des paquets de compilateurs individuels comme @code{gcc} mais si |
1847 | vous avez besoin d'une chaîne de compilation complète pour compiler et lier | |
1848 | du code source, vous avez en fait besoin du paquet @code{gcc-toolchain}. Ce | |
1849 | paquet fournit une chaîne d'outils GCC pour le développement C/C++, dont GCC | |
1850 | lui-même, la bibliothèque C de GNU (les en-têtes et les binaires, plus les | |
1851 | symboles de débogage dans la sortie @code{debug}), Binutils et une enveloppe | |
1852 | pour l'éditeur de liens. | |
1853 | ||
15f1bff4 JL |
1854 | The wrapper's purpose is to inspect the @code{-L} and @code{-l} switches |
1855 | passed to the linker, add corresponding @code{-rpath} arguments, and invoke | |
1856 | the actual linker with this new set of arguments. You can instruct the | |
1857 | wrapper to refuse to link against libraries not in the store by setting the | |
1858 | @code{GUIX_LD_WRAPPER_ALLOW_IMPURITIES} environment variable to @code{no}. | |
bf5c74e7 JL |
1859 | |
1860 | @c TODO What else? | |
1861 | ||
1862 | @c ********************************************************************* | |
15f1bff4 JL |
1863 | @node Installation du système |
1864 | @chapter Installation du système | |
bf5c74e7 | 1865 | |
15f1bff4 JL |
1866 | @cindex installing Guix System |
1867 | @cindex Guix System, installation | |
1868 | This section explains how to install Guix System on a machine. Guix, as a | |
1869 | package manager, can also be installed on top of a running GNU/Linux system, | |
1870 | @pxref{Installation}. | |
bf5c74e7 | 1871 | |
15f1bff4 JL |
1872 | @ifinfo |
1873 | @quotation Remarque | |
1874 | @c This paragraph is for people reading this from tty2 of the | |
1875 | @c installation image. | |
1876 | Vous lisez cette documentation avec un lecteur Info. Pour des détails sur | |
1877 | son utilisation, appuyez sur la touche @key{ENTRÉE} (« Entrée » ou « à la | |
1878 | ligne ») sur le lien suivant : @pxref{Top, Info reader,, info-stnd, | |
1879 | Stand-alone GNU Info}. Appuyez ensuite sur @kbd{l} pour revenir ici. | |
bf5c74e7 | 1880 | |
15f1bff4 JL |
1881 | Autrement, lancez @command{info info} dans un autre tty pour garder ce |
1882 | manuel ouvert. | |
1883 | @end quotation | |
1884 | @end ifinfo | |
bf5c74e7 JL |
1885 | |
1886 | @menu | |
15f1bff4 JL |
1887 | * Limitations:: Ce à quoi vous attendre. |
1888 | * Considérations matérielles:: Matériel supporté. | |
1889 | * Installation depuis une clef USB ou un DVD:: Préparer le média | |
1890 | d'installation. | |
1891 | * Préparer l'installation:: Réseau, partitionnement, etc. | |
1892 | * Effectuer l'installation:: Pour de vrai. | |
1893 | * Installing Guix in a VM:: Guix System playground. | |
1894 | * Construire l'image d'installation:: D'où vient tout cela. | |
bf5c74e7 JL |
1895 | @end menu |
1896 | ||
15f1bff4 JL |
1897 | @node Limitations |
1898 | @section Limitations | |
1899 | ||
1900 | As of version @value{VERSION}, Guix System is not production-ready. It may | |
1901 | contain bugs and lack important features. Thus, if you are looking for a | |
1902 | stable production system that respects your freedom as a computer user, a | |
1903 | good solution at this point is to consider | |
1904 | @url{http://www.gnu.org/distros/free-distros.html, one of the more | |
1905 | established GNU/Linux distributions}. We hope you can soon switch to the | |
1906 | Guix System without fear, of course. In the meantime, you can also keep | |
1907 | using your distribution and try out the package manager on top of it | |
1908 | (@pxref{Installation}). | |
bf5c74e7 | 1909 | |
15f1bff4 JL |
1910 | Avant de procéder à l'installation, soyez conscient de ces limitations les |
1911 | plus importantes qui s'appliquent à la version @value{VERSION} : | |
bf5c74e7 | 1912 | |
15f1bff4 JL |
1913 | @itemize |
1914 | @item | |
1915 | Le procédé d'installation n'a pas d'interface utilisateur graphique et | |
1916 | requiert une certaine familiarité avec GNU/Linux (voir les sous-sections | |
1917 | suivantes pour avoir un aperçu de ce que cela signifie). | |
bf5c74e7 | 1918 | |
15f1bff4 JL |
1919 | @item |
1920 | LVM (gestionnaire de volumes logiques) n'est pas supporté. | |
bf5c74e7 | 1921 | |
15f1bff4 JL |
1922 | @item |
1923 | De plus en plus de services systèmes sont fournis (@pxref{Services}) mais | |
1924 | certains manquent toujours cruellement. | |
bf5c74e7 | 1925 | |
15f1bff4 JL |
1926 | @item |
1927 | More than 8,500 packages are available, but you might occasionally find that | |
1928 | a useful package is missing. | |
3cacfa9e | 1929 | |
15f1bff4 JL |
1930 | @item |
1931 | GNOME, Xfce, LXDE et Enlightenment sont disponibles (@pxref{Services de bureaux}), ainsi qu'un certain nombre de gestionnaires de fenêtres X11. | |
1932 | cependant, certaines applications graphiques peuvent manquer, ainsi que KDE. | |
1933 | @end itemize | |
bf5c74e7 | 1934 | |
15f1bff4 JL |
1935 | Vous êtes avertis ! Mais plus qu'un avertissement, c'est une invitation à |
1936 | rapporter les problèmes (et vos succès !) et à nous rejoindre pour améliorer | |
1937 | la distribution. @xref{Contribuer}, pour plus d'info. | |
3cacfa9e | 1938 | |
3cacfa9e | 1939 | |
15f1bff4 JL |
1940 | @node Considérations matérielles |
1941 | @section Considérations matérielles | |
3cacfa9e | 1942 | |
15f1bff4 JL |
1943 | @cindex hardware support on Guix System |
1944 | GNU@tie{}Guix focuses on respecting the user's computing freedom. It builds | |
1945 | around the kernel Linux-libre, which means that only hardware for which free | |
1946 | software drivers and firmware exist is supported. Nowadays, a wide range of | |
1947 | off-the-shelf hardware is supported on GNU/Linux-libre---from keyboards to | |
1948 | graphics cards to scanners and Ethernet controllers. Unfortunately, there | |
1949 | are still areas where hardware vendors deny users control over their own | |
1950 | computing, and such hardware is not supported on Guix System. | |
bf5c74e7 | 1951 | |
15f1bff4 JL |
1952 | @cindex WiFi, support matériel |
1953 | One of the main areas where free drivers or firmware are lacking is WiFi | |
1954 | devices. WiFi devices known to work include those using Atheros chips | |
1955 | (AR9271 and AR7010), which corresponds to the @code{ath9k} Linux-libre | |
1956 | driver, and those using Broadcom/AirForce chips (BCM43xx with Wireless-Core | |
1957 | Revision 5), which corresponds to the @code{b43-open} Linux-libre driver. | |
1958 | Free firmware exists for both and is available out-of-the-box on Guix | |
1959 | System, as part of @var{%base-firmware} (@pxref{Référence de système d'exploitation, | |
1960 | @code{firmware}}). | |
adfb167f | 1961 | |
15f1bff4 JL |
1962 | @cindex RYF, Respects Your Freedom |
1963 | La @uref{https://www.fsf.org/, Free Software Foundation} a un programme de | |
1964 | certification nommé @uref{https://www.fsf.org/ryf, @dfn{Respects Your | |
1965 | Freedom}} (RYF), pour les produits matériels qui respectent votre liberté et | |
1966 | votre vie privée en s'assurant que vous avez le contrôle sur l'appareil. | |
1967 | Nous vous encourageons à vérifier la liste des appareils certifiés par RYF. | |
bf5c74e7 | 1968 | |
15f1bff4 JL |
1969 | Une autre ressource utile est le site web @uref{https://www.h-node.org/, |
1970 | H-Node}. Il contient un catalogue d'appareils avec des informations sur | |
1971 | leur support dans GNU/Linux. | |
bf5c74e7 | 1972 | |
bf5c74e7 | 1973 | |
15f1bff4 JL |
1974 | @node Installation depuis une clef USB ou un DVD |
1975 | @section Installation depuis une clef USB ou un DVD | |
1976 | ||
1977 | Une image d'installation ISO-9660 téléchargeable depuis | |
1978 | @indicateurl{https://alpha.gnu.org/gnu/guix/guixsd-install-@value{VERSION}.@var{système}.iso.xz} | |
1979 | peut être écrite sur une clef USB ou gravée sur un DVD, où @var{système} est | |
1980 | l'une de ces valeurs : | |
1981 | ||
1982 | @table @code | |
1983 | @item x86_64-linux | |
1984 | pour un système GNU/Linux sur un CPU compatible Intel/AMD 64-bits ; | |
1985 | ||
1986 | @item i686-linux | |
1987 | pour un système GNU/Linux sur un CPU compatible Intel 32-bits ; | |
1988 | @end table | |
1989 | ||
1990 | @c start duplication of authentication part from ``Binary Installation'' | |
1991 | Assurez-vous de télécharger les fichiers @file{.sig} associés et de vérifier | |
1992 | l'authenticité de l'image avec, de cette manière : | |
bf5c74e7 JL |
1993 | |
1994 | @example | |
15f1bff4 JL |
1995 | $ wget https://alpha.gnu.org/gnu/guix/guixsd-install-@value{VERSION}.@var{system}.iso.xz.sig |
1996 | $ gpg --verify guixsd-install-@value{VERSION}.@var{system}.iso.xz.sig | |
bf5c74e7 JL |
1997 | @end example |
1998 | ||
15f1bff4 JL |
1999 | Si cette commande échoue parce que vous n'avez pas la clef publique requise, |
2000 | lancez cette commande pour l'importer : | |
bf5c74e7 JL |
2001 | |
2002 | @example | |
15f1bff4 JL |
2003 | $ gpg --keyserver @value{KEY-SERVER} \ |
2004 | --recv-keys @value{OPENPGP-SIGNING-KEY-ID} | |
bf5c74e7 JL |
2005 | @end example |
2006 | ||
15f1bff4 JL |
2007 | @noindent |
2008 | @c end duplication | |
2009 | et relancez la commande @code{gpg --verify}. | |
bf5c74e7 | 2010 | |
15f1bff4 JL |
2011 | Cette image contient les outils nécessaires à l'installation. Elle est |
2012 | faite pour être copiée @emph{telle quelle} sur une clef USB assez grosse ou | |
2013 | un DVD. | |
bf5c74e7 | 2014 | |
15f1bff4 | 2015 | @unnumberedsubsec Copie sur une clef USB |
bf5c74e7 | 2016 | |
15f1bff4 | 2017 | Pour copier l'image sur une clef USB, suivez ces étapes : |
3cacfa9e | 2018 | |
15f1bff4 JL |
2019 | @enumerate |
2020 | @item | |
2021 | Décompressez l'image avec la commande @command{xz} : | |
3cacfa9e | 2022 | |
15f1bff4 JL |
2023 | @example |
2024 | xz -d guixsd-install-@value{VERSION}.@var{système}.iso.xz | |
2025 | @end example | |
3cacfa9e | 2026 | |
15f1bff4 JL |
2027 | @item |
2028 | Insérez la clef USB de 1@tie{}Gio ou plus dans votre machine et déterminez | |
2029 | son nom d'appareil. En supposant que la clef usb est connue sous le nom de | |
2030 | @file{/dev/sdX}, copiez l'image avec : | |
bf5c74e7 | 2031 | |
15f1bff4 JL |
2032 | @example |
2033 | dd if=guixsd-install-@value{VERSION}.@var{system}.iso of=/dev/sdX | |
2034 | sync | |
2035 | @end example | |
3cacfa9e | 2036 | |
15f1bff4 JL |
2037 | Accéder à @file{/dev/sdX} requiert généralement les privilèges |
2038 | super-utilisateur. | |
2039 | @end enumerate | |
bf5c74e7 | 2040 | |
15f1bff4 | 2041 | @unnumberedsubsec Graver sur un DVD |
bf5c74e7 | 2042 | |
15f1bff4 | 2043 | Pour copier l'image sur un DVD, suivez ces étapes : |
bf5c74e7 | 2044 | |
15f1bff4 JL |
2045 | @enumerate |
2046 | @item | |
2047 | Décompressez l'image avec la commande @command{xz} : | |
bf5c74e7 | 2048 | |
15f1bff4 JL |
2049 | @example |
2050 | xz -d guixsd-install-@value{VERSION}.@var{système}.iso.xz | |
2051 | @end example | |
bf5c74e7 | 2052 | |
15f1bff4 JL |
2053 | @item |
2054 | Insérez un DVD vierge dans votre machine et déterminez son nom d'appareil. | |
2055 | En supposant que le DVD soit connu sont le nom de @file{/dev/srX}, copiez | |
2056 | l'image avec : | |
bf5c74e7 JL |
2057 | |
2058 | @example | |
15f1bff4 | 2059 | growisofs -dvd-compat -Z /dev/srX=guixsd-install-@value{VERSION}.@var{system}.iso |
bf5c74e7 JL |
2060 | @end example |
2061 | ||
15f1bff4 JL |
2062 | Accéder à @file{/dev/srX} requiert généralement les privilèges |
2063 | super-utilisateur. | |
2064 | @end enumerate | |
bf5c74e7 | 2065 | |
15f1bff4 | 2066 | @unnumberedsubsec Démarrage |
bf5c74e7 | 2067 | |
15f1bff4 JL |
2068 | Une fois que c'est fait, vous devriez pouvoir redémarrer le système et |
2069 | démarrer depuis la clef USB ou le DVD. Pour cela, vous devrez généralement | |
2070 | entrer dans le menu de démarrage BIOS ou UEFI, où vous pourrez choisir de | |
2071 | démarrer sur la clef USB. | |
bf5c74e7 | 2072 | |
15f1bff4 JL |
2073 | @xref{Installing Guix in a VM}, if, instead, you would like to install Guix |
2074 | System in a virtual machine (VM). | |
3cacfa9e | 2075 | |
bf5c74e7 | 2076 | |
15f1bff4 JL |
2077 | @node Préparer l'installation |
2078 | @section Préparer l'installation | |
2079 | ||
2080 | Once you have successfully booted your computer using the installation | |
2081 | medium, you should end up with the welcome page of the graphical installer. | |
2082 | The graphical installer is a text-based user interface built upon the newt | |
2083 | library. It shall guide you through all the different steps needed to | |
2084 | install GNU@tie{}Guix System. However, as the graphical installer is still | |
2085 | under heavy development, you might want to fallback to the original, shell | |
2086 | based install process, by switching to TTYs 3 to 6 with the shortcuts | |
2087 | CTRL-ALT-F[3-6]. The following sections describe the installation procedure | |
2088 | assuming you're using one of those TTYs. They are configured and can be used | |
2089 | to run commands as root. | |
2090 | ||
2091 | TTY2 shows this documentation, browsable using the Info reader commands | |
2092 | (@pxref{Top,,, info-stnd, Stand-alone GNU Info}). The installation system | |
2093 | runs the GPM mouse daemon, which allows you to select text with the left | |
2094 | mouse button and to paste it with the middle button. | |
bf5c74e7 | 2095 | |
15f1bff4 JL |
2096 | @quotation Remarque |
2097 | L'installation nécessite un accès au réseau pour que les dépendances | |
2098 | manquantes de votre configuration système puissent être téléchargées. Voyez | |
2099 | la section « réseau » plus bas. | |
2100 | @end quotation | |
bf5c74e7 | 2101 | |
15f1bff4 JL |
2102 | The installation system includes many common tools needed for this task. |
2103 | But it is also a full-blown Guix System, which means that you can install | |
2104 | additional packages, should you need it, using @command{guix package} | |
2105 | (@pxref{Invoquer guix package}). | |
bf5c74e7 | 2106 | |
15f1bff4 | 2107 | @subsection Disposition du clavier |
bf5c74e7 | 2108 | |
15f1bff4 JL |
2109 | @cindex disposition du clavier |
2110 | L'image d'installation utilise la disposition clavier qwerty (US). Si vous | |
2111 | voulez la changer, vous pouvez utiliser la commande @command{loadkeys}. Par | |
2112 | exemple, la commande suivante sélectionne la disposition Dvorak : | |
bf5c74e7 | 2113 | |
bf5c74e7 | 2114 | @example |
15f1bff4 | 2115 | loadkeys dvorak |
bf5c74e7 JL |
2116 | @end example |
2117 | ||
15f1bff4 JL |
2118 | Consultez les fichiers dans @file{/run/current-system/profile/share/keymaps} |
2119 | pour trouver une liste des dispositions disponibles. Lancez @command{man | |
2120 | loadkey} pour plus d'informations. | |
2121 | ||
2122 | @subsection Réseau | |
2123 | ||
2124 | Lancez la commande suivante pour voir comment vos interfaces réseau sont | |
2125 | appelées : | |
bf5c74e7 JL |
2126 | |
2127 | @example | |
15f1bff4 | 2128 | ifconfig -a |
bf5c74e7 JL |
2129 | @end example |
2130 | ||
15f1bff4 JL |
2131 | @noindent |
2132 | @dots{} ou, avec la commande spécifique à GNU/Linux @command{ip} : | |
3cacfa9e | 2133 | |
15f1bff4 JL |
2134 | @example |
2135 | ip a | |
2136 | @end example | |
3cacfa9e | 2137 | |
15f1bff4 JL |
2138 | @c http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c#n20 |
2139 | Les interfaces filaires ont un nom qui commence par @samp{e} ; par exemple, | |
2140 | l'interface qui correspond au premier contrôleur Ethernet sur la carte mère | |
2141 | est appelé @samp{eno1}. Les interfaces sans-fil ont un nom qui commence par | |
2142 | @samp{w}, comme @samp{w1p2s0}. | |
3cacfa9e | 2143 | |
15f1bff4 JL |
2144 | @table @asis |
2145 | @item Connexion filaire | |
2146 | Pour configure une connexion filaire, lancez la commande suivante, en | |
2147 | remplaçant @var{interface} par le nom de l'interface filaire que vous voulez | |
2148 | utiliser. | |
3cacfa9e | 2149 | |
15f1bff4 JL |
2150 | @example |
2151 | ifconfig @var{interface} up | |
2152 | @end example | |
3cacfa9e | 2153 | |
15f1bff4 JL |
2154 | @item Connexion sans-fil |
2155 | @cindex sans-fil | |
2156 | @cindex WiFi | |
2157 | Pour configurer le réseau sans-fil, vous pouvez créer un fichier de | |
2158 | configuration pour l'outil de configuration @command{wpa_supplicant} (son | |
2159 | emplacement importe peu) avec l'un des éditeurs de texte disponibles comme | |
2160 | @command{nano} : | |
3cacfa9e | 2161 | |
15f1bff4 JL |
2162 | @example |
2163 | nano wpa_supplicant.conf | |
2164 | @end example | |
3cacfa9e | 2165 | |
15f1bff4 JL |
2166 | Par exemple, la déclaration qui suit peut aller dans ce fichier et |
2167 | fonctionnera pour plusieurs réseaux sans-fil, si vous donnez le vrai SSID et | |
2168 | la phrase de passe pour le réseau auquel vous vous connectez : | |
3cacfa9e | 2169 | |
15f1bff4 JL |
2170 | @example |
2171 | network=@{ | |
2172 | ssid="@var{mon-ssid}" | |
2173 | key_mgmt=WPA-PSK | |
2174 | psk="la phrase de passe secrète du réseau" | |
2175 | @} | |
2176 | @end example | |
3cacfa9e | 2177 | |
15f1bff4 JL |
2178 | Démarrez le service sans-fil et lancez-le en tache de fond avec la commande |
2179 | suivante (en remplaçant @var{interface} par le nom de l'interface réseau que | |
2180 | vous voulez utiliser) : | |
bf5c74e7 JL |
2181 | |
2182 | @example | |
15f1bff4 | 2183 | wpa_supplicant -c wpa_supplicant.conf -i @var{interface} -B |
bf5c74e7 JL |
2184 | @end example |
2185 | ||
15f1bff4 JL |
2186 | Lancez @command{man wpa_supplicant} pour plus d'informations. |
2187 | @end table | |
bf5c74e7 | 2188 | |
15f1bff4 JL |
2189 | @cindex DHCP |
2190 | À partir de ce moment, vous avez besoin d'une adresse IP. Sur les réseaux | |
2191 | où les IP sont automatiquement attribuée par DHCP, vous pouvez lancer : | |
bf5c74e7 JL |
2192 | |
2193 | @example | |
15f1bff4 | 2194 | dhclient -v @var{interface} |
bf5c74e7 JL |
2195 | @end example |
2196 | ||
15f1bff4 | 2197 | Essayez de pinger un serveur pour voir si le réseau fonctionne : |
bf5c74e7 | 2198 | |
15f1bff4 JL |
2199 | @example |
2200 | ping -c 3 gnu.org | |
2201 | @end example | |
bf5c74e7 | 2202 | |
15f1bff4 JL |
2203 | Mettre en place un accès réseau est presque toujours une nécessité parce que |
2204 | l'image ne contient pas tous les logiciels et les outils dont vous pourriez | |
2205 | avoir besoin. | |
bf5c74e7 | 2206 | |
15f1bff4 JL |
2207 | @cindex installer par SSH |
2208 | Si vous le souhaitez, vous pouvez continuer l'installation à distance en | |
2209 | démarrant un serveur SSH : | |
bf5c74e7 | 2210 | |
15f1bff4 JL |
2211 | @example |
2212 | herd start ssh-daemon | |
2213 | @end example | |
bf5c74e7 | 2214 | |
15f1bff4 JL |
2215 | Assurez-vous soit de définir un mot de passe avec @command{passwd}, soit de |
2216 | configurer l'authentification par clef OpenSSH avant de vous connecter. | |
bf5c74e7 | 2217 | |
15f1bff4 | 2218 | @subsection Partitionnement |
bf5c74e7 | 2219 | |
15f1bff4 JL |
2220 | À moins que vous ne l'ayez déjà fait, l'étape suivante consiste à |
2221 | partitionner le disque puis à formater les partitions cibles. | |
bf5c74e7 | 2222 | |
15f1bff4 JL |
2223 | L'image d'installation inclus plusieurs outils de partitionnement, dont |
2224 | Parted (@pxref{Overview,,, parted, GNU Parted User Manual}), | |
2225 | @command{fdisk}, et @command{cfdisk}. Lancez-en un et paramétrez votre | |
2226 | disque avec le partitionnement qui vous convient : | |
bf5c74e7 | 2227 | |
15f1bff4 JL |
2228 | @example |
2229 | cfdisk | |
2230 | @end example | |
bf5c74e7 | 2231 | |
15f1bff4 JL |
2232 | Si votre disque utilise le format des tables de partitions GUID (GPT) et que |
2233 | vous souhaitez installer un GRUB pour système BIOS (c'est le cas par | |
2234 | défaut), assurez-vous de créer qu'une partition de démarrage BIOS soit bien | |
2235 | disponible (@pxref{BIOS installation,,, grub, GNU GRUB manual}). | |
bf5c74e7 | 2236 | |
15f1bff4 JL |
2237 | @cindex EFI, installation |
2238 | @cindex UEFI, installation | |
2239 | @cindex ESP, partition système EFI | |
2240 | If you instead wish to use EFI-based GRUB, a FAT32 @dfn{EFI System | |
2241 | Partition} (ESP) is required. This partition can be mounted at | |
2242 | @file{/boot/efi} for instance and must have the @code{esp} flag set. E.g., | |
2243 | for @command{parted}: | |
bf5c74e7 JL |
2244 | |
2245 | @example | |
15f1bff4 | 2246 | parted /dev/sda set 1 esp on |
bf5c74e7 JL |
2247 | @end example |
2248 | ||
15f1bff4 JL |
2249 | @quotation Remarque |
2250 | @vindex grub-bootloader | |
2251 | @vindex grub-efi-bootloader | |
2252 | Vous n'êtes pas sûr de savoir si vous devez utiliser un GRUB EFI ou BIOS ? | |
2253 | Si le répertoire @file{/sys/firmware/efi} existe sur l'image d'installation, | |
2254 | vous devriez probablement effectuer une installation EFI, avec | |
2255 | @code{grub-efi-bootloader}. Sinon, vous devriez utiliser le GRUB en BIOS, | |
2256 | @code{grub-bootloader}. @xref{Configuration du chargeur d'amorçage} pour plus | |
2257 | d'information sur le chargeur d'amorçage. | |
2258 | @end quotation | |
bf5c74e7 | 2259 | |
15f1bff4 JL |
2260 | Once you are done partitioning the target hard disk drive, you have to |
2261 | create a file system on the relevant partition(s)@footnote{Currently Guix | |
2262 | System only supports ext4 and btrfs file systems. In particular, code that | |
2263 | reads file system UUIDs and labels only works for these file system | |
2264 | types.}. For the ESP, if you have one and assuming it is @file{/dev/sda1}, | |
2265 | run: | |
bf5c74e7 | 2266 | |
15f1bff4 JL |
2267 | @example |
2268 | mkfs.fat -F32 /dev/sda1 | |
bf5c74e7 JL |
2269 | @end example |
2270 | ||
15f1bff4 JL |
2271 | Préférez assigner une étiquette au système de fichier pour que vous puissiez |
2272 | vous y référer de manière fiable dans la déclaration @code{file-system} | |
2273 | (@pxref{Systèmes de fichiers}). On le fait habituellement avec l'option @code{-L} | |
2274 | de @command{mkfs.ext4} et des commandes liées. Donc, en supposant que la | |
2275 | partition racine soit sur @file{/dev/sda2}, on peut créer un système de | |
2276 | fichier avec pour étiquette @code{my-root} avec : | |
bf5c74e7 JL |
2277 | |
2278 | @example | |
15f1bff4 | 2279 | mkfs.ext4 -L my-root /dev/sda2 |
bf5c74e7 JL |
2280 | @end example |
2281 | ||
15f1bff4 JL |
2282 | @cindex chiffrement du disque |
2283 | Si vous voulez plutôt chiffrer la partition racine, vous pouvez utiliser les | |
2284 | utilitaires Cryptsetup et LUKS pour cela (voir @inlinefmtifelse{html, | |
2285 | @uref{https://linux.die.net/man/8/cryptsetup, @code{man cryptsetup}}, | |
2286 | @code{man cryptsetup}} pour plus d'informations). En supposant que vous | |
2287 | voulez stocker la partition racine sur @file{/dev/sda2}, la séquence de | |
2288 | commandes suivante vous mènerait à ce résultat : | |
bf5c74e7 JL |
2289 | |
2290 | @example | |
15f1bff4 JL |
2291 | cryptsetup luksFormat /dev/sda2 |
2292 | cryptsetup open --type luks /dev/sda2 my-partition | |
2293 | mkfs.ext4 -L my-root /dev/mapper/my-partition | |
bf5c74e7 JL |
2294 | @end example |
2295 | ||
15f1bff4 JL |
2296 | Une fois cela effectué, montez le système de fichier cible dans @file{/mnt} |
2297 | avec une commande comme (de nouveau, en supposant que @code{my-root} est | |
2298 | l'étiquette du système de fichiers racine) : | |
bf5c74e7 JL |
2299 | |
2300 | @example | |
15f1bff4 | 2301 | mount LABEL=my-root /mnt |
bf5c74e7 JL |
2302 | @end example |
2303 | ||
15f1bff4 JL |
2304 | Also mount any other file systems you would like to use on the target system |
2305 | relative to this path. If you have opted for @file{/boot/efi} as an EFI | |
2306 | mount point for example, mount it at @file{/mnt/boot/efi} now so it is found | |
2307 | by @code{guix system init} afterwards. | |
2308 | ||
2309 | Enfin, si vous souhaitez utiliser une ou plusieurs partitions de swap | |
2310 | (@pxref{Memory Concepts, swap space,, libc, The GNU C Library Reference | |
2311 | Manual}), assurez-vous de les initialiser avec @command{mkswap}. En | |
2312 | supposant que vous avez une partition de swap sur @file{/dev/sda3}, vous | |
2313 | pouvez lancer : | |
2314 | ||
bf5c74e7 | 2315 | @example |
15f1bff4 JL |
2316 | mkswap /dev/sda3 |
2317 | swapon /dev/sda3 | |
bf5c74e7 JL |
2318 | @end example |
2319 | ||
15f1bff4 JL |
2320 | Autrement, vous pouvez utiliser un fichier de swap. Par exemple, en |
2321 | supposant que dans le nouveau système vous voulez utiliser le fichier | |
2322 | @file{/swapfile} comme fichier de swap, vous lanceriez@footnote{Cet exemple | |
2323 | fonctionnera sur plusieurs types de systèmes de fichiers (p.@: ex.@: ext4). | |
2324 | Cependant, pour les systèmes de fichiers qui utilisent la copie sur écriture | |
2325 | (COW) comme btrfs, les étapes requises peuvent varier. Pour plus de | |
2326 | détails, regardez les pages de manuel de @command{mkswap} et | |
2327 | @command{swapon}.} : | |
bf5c74e7 | 2328 | |
15f1bff4 JL |
2329 | @example |
2330 | # Cela représente 10 Gio d'espace d'échange. Ajustez « count » pour changer la taille. | |
2331 | dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=10240 | |
2332 | # Par sécurité, laissez le fichier en lecture et en écriture uniquement pour root. | |
2333 | chmod 600 /mnt/swapfile | |
2334 | mkswap /mnt/swapfile | |
2335 | swapon /mnt/swapfile | |
2336 | @end example | |
bf5c74e7 | 2337 | |
15f1bff4 JL |
2338 | Remarquez que si vous avez chiffré la partition racine et créé un fichier |
2339 | d'échange dans son système de fichier comme décrit ci-dessus, alors le | |
2340 | chiffrement protégera aussi le fichier d'échange, comme n'importe quel | |
2341 | fichier de ce système de fichiers. | |
bf5c74e7 | 2342 | |
15f1bff4 JL |
2343 | @node Effectuer l'installation |
2344 | @section Effectuer l'installation | |
bf5c74e7 | 2345 | |
15f1bff4 JL |
2346 | Lorsque la partition cible est prête et que les autres partitions sont |
2347 | montées, on est prêt à commencer l'installation. Commencez par : | |
bf5c74e7 | 2348 | |
15f1bff4 JL |
2349 | @example |
2350 | herd start cow-store /mnt | |
2351 | @end example | |
bf5c74e7 | 2352 | |
15f1bff4 JL |
2353 | Cela rend @file{/gnu/store} capable de faire de la copie sur écriture, de |
2354 | sorte que les paquets ajoutés pendant l'installation sont écrits sur le | |
2355 | disque cible sur @file{/mnt} plutôt que gardés en mémoire. Cela est | |
2356 | nécessaire parce que la première phase de la commande @command{guix system | |
2357 | init} (voir plus bas) implique de télécharger ou de construire des éléments | |
2358 | de @file{/gnu/store} qui est initialement un système de fichiers en mémoire. | |
bf5c74e7 | 2359 | |
15f1bff4 JL |
2360 | Ensuite, vous devrez modifier un fichier et fournir la déclaration du |
2361 | système à installer. Pour cela, le système d'installation propose trois | |
2362 | éditeurs de texte. Nous recommandons GNU nano (@pxref{Top,,, nano, GNU nano | |
2363 | Manual}), qui supporte la coloration syntaxique la correspondance de | |
2364 | parenthèses ; les autres éditeurs sont GNU Zile (un clone d'Emacs) et nvi | |
2365 | (un clone de l'éditeur @command{vi} original de BSD). Nous recommandons | |
2366 | vivement de stocker ce fichier sur le système de fichier racine cible, | |
2367 | disons en tant que @file{/mnt/etc/config.scm}. Sinon, vous perdrez votre | |
2368 | fichier de configuration une fois que vous aurez redémarré sur votre nouveau | |
2369 | système. | |
bf5c74e7 | 2370 | |
15f1bff4 JL |
2371 | @xref{Utiliser le système de configuration}, pour un aperçu de comment créer votre |
2372 | fichier de configuration. Les exemples de configuration dont on parle dans | |
2373 | cette section sont disponibles dans @file{/etc/configuration} sur l'image | |
2374 | d'installation. Ainsi, pour commencer avec une configuration du système qui | |
2375 | fournit un serveur d'affichage graphique (un système de « bureau »), vous | |
2376 | pouvez lancer ce qui suit : | |
bf5c74e7 | 2377 | |
15f1bff4 JL |
2378 | @example |
2379 | # mkdir /mnt/etc | |
2380 | # cp /etc/configuration/desktop.scm /mnt/etc/config.scm | |
2381 | # nano /mnt/etc/config.scm | |
2382 | @end example | |
bf5c74e7 | 2383 | |
15f1bff4 JL |
2384 | Vous devriez faire attention à ce que contient votre fichier de |
2385 | configuration, en particulier : | |
bf5c74e7 | 2386 | |
15f1bff4 JL |
2387 | @itemize |
2388 | @item | |
2389 | Make sure the @code{bootloader-configuration} form refers to the target you | |
2390 | want to install GRUB on. It should mention @code{grub-bootloader} if you | |
2391 | are installing GRUB in the legacy way, or @code{grub-efi-bootloader} for | |
2392 | newer UEFI systems. For legacy systems, the @code{target} field names a | |
2393 | device, like @code{/dev/sda}; for UEFI systems it names a path to a mounted | |
2394 | EFI partition, like @code{/boot/efi}; do make sure the path is currently | |
2395 | mounted and a @code{file-sytem} entry is specified in your configuration. | |
bf5c74e7 | 2396 | |
15f1bff4 JL |
2397 | @item |
2398 | Assurez-vous que les étiquettes de vos systèmes de fichiers correspondent | |
2399 | aux valeurs de leur champs @code{device} dans votre configuration | |
2400 | @code{file-system}, en supposant que la configuration @code{file-system} | |
2401 | utilise la procédure @code{file-system-label} dans son champ @code{device}. | |
bf5c74e7 | 2402 | |
15f1bff4 JL |
2403 | @item |
2404 | Si vous avez des partitions RAID ou chiffrées, assurez-vous d'ajouter un | |
2405 | champ @code{mapped-device} pour les décrire (@pxref{Périphériques mappés}). | |
bf5c74e7 JL |
2406 | @end itemize |
2407 | ||
15f1bff4 JL |
2408 | Une fois que vous avez fini les préparatifs sur le fichier de configuration, |
2409 | le nouveau système peut être initialisé (rappelez-vous que le système de | |
2410 | fichiers racine cible est dans @file{/mnt}) : | |
bf5c74e7 | 2411 | |
15f1bff4 JL |
2412 | @example |
2413 | guix system init /mnt/etc/config.scm /mnt | |
2414 | @end example | |
bf5c74e7 | 2415 | |
15f1bff4 JL |
2416 | @noindent |
2417 | Cela copie tous les fichiers nécessaires et installe GRUB sur | |
2418 | @file{/dev/sdX} à moins que vous ne passiez l'option | |
2419 | @option{--no-bootloader}. Pour plus d'informations, @pxref{Invoquer guix system}. Cette commande peut engendrer des téléchargements ou des | |
2420 | constructions pour les paquets manquants, ce qui peut prendre du temps. | |
bf5c74e7 | 2421 | |
15f1bff4 JL |
2422 | Une fois que cette commande a terminée — et on l'espère réussi ! — vous |
2423 | pouvez lancer @command{reboot} et démarrer sur votre nouveau système. Le | |
2424 | mot de passe @code{root} est d'abord vide ; les mots de passe des autres | |
2425 | utilisateurs doivent être initialisés avec la commande @command{passwd} en | |
2426 | tant que @code{root}, à mois que votre configuration ne spécifie autre chose | |
2427 | (@pxref{user-account-password, mot de passe des comptes utilisateurs}). | |
bf5c74e7 | 2428 | |
15f1bff4 JL |
2429 | @cindex upgrading Guix System |
2430 | From then on, you can update the system whenever you want by running, say: | |
bf5c74e7 | 2431 | |
15f1bff4 JL |
2432 | @example |
2433 | guix pull | |
2434 | sudo guix system reconfigure /etc/config.scm | |
2435 | @end example | |
bf5c74e7 | 2436 | |
15f1bff4 JL |
2437 | @noindent |
2438 | This builds a new system generation with the latest packages and services | |
2439 | (@pxref{Invoquer guix system}). We recommend doing that regularly so that | |
2440 | your system includes the latest security updates (@pxref{Mises à jour de sécurité}). | |
bf5c74e7 | 2441 | |
15f1bff4 JL |
2442 | @c See <https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00268.html>. |
2443 | @quotation Remarque | |
2444 | @cindex sudo vs. @command{guix pull} | |
2445 | Note that @command{sudo guix} runs your user's @command{guix} command and | |
2446 | @emph{not} root's, because @command{sudo} leaves @code{PATH} unchanged. To | |
2447 | explicitly run root's @command{guix}, type @command{sudo -i guix @dots{}}. | |
2448 | @end quotation | |
3cacfa9e | 2449 | |
15f1bff4 JL |
2450 | Join us on @code{#guix} on the Freenode IRC network or on |
2451 | @email{guix-devel@@gnu.org} to share your experience---good or not so good. | |
bf5c74e7 | 2452 | |
15f1bff4 JL |
2453 | @node Installing Guix in a VM |
2454 | @section Installing Guix in a Virtual Machine | |
bf5c74e7 | 2455 | |
15f1bff4 JL |
2456 | @cindex virtual machine, Guix System installation |
2457 | @cindex serveur privé virtuel (VPS) | |
2458 | @cindex VPS (serveur privé virtuel) | |
2459 | If you'd like to install Guix System in a virtual machine (VM) or on a | |
2460 | virtual private server (VPS) rather than on your beloved machine, this | |
2461 | section is for you. | |
bf5c74e7 | 2462 | |
15f1bff4 JL |
2463 | To boot a @uref{http://qemu.org/,QEMU} VM for installing Guix System in a |
2464 | disk image, follow these steps: | |
3cacfa9e | 2465 | |
15f1bff4 JL |
2466 | @enumerate |
2467 | @item | |
2468 | First, retrieve and decompress the Guix system installation image as | |
2469 | described previously (@pxref{Installation depuis une clef USB ou un DVD}). | |
3cacfa9e | 2470 | |
15f1bff4 JL |
2471 | @item |
2472 | Créez une image disque qui contiendra le système installé. Pour créer une | |
2473 | image qcow2, utilise la commande @command{qemu-img} : | |
bf5c74e7 | 2474 | |
15f1bff4 JL |
2475 | @example |
2476 | qemu-img create -f qcow2 guixsd.img 50G | |
2477 | @end example | |
bf5c74e7 | 2478 | |
15f1bff4 JL |
2479 | Le fichier qui en résulte sera bien plus petit que les 50 Go (habituellement |
2480 | moins de 1 Mo) mais il grossira au fur et à mesure que le stockage virtuel | |
2481 | grossira. | |
bf5c74e7 | 2482 | |
15f1bff4 JL |
2483 | @item |
2484 | Démarrez l'image d'installation USB dans une VM : | |
bf5c74e7 JL |
2485 | |
2486 | @example | |
15f1bff4 JL |
2487 | qemu-system-x86_64 -m 1024 -smp 1 \ |
2488 | -net user -net nic,model=virtio -boot menu=on \ | |
2489 | -drive file=guixsd-install-@value{VERSION}.@var{system}.iso \ | |
2490 | -drive file=guixsd.img | |
bf5c74e7 JL |
2491 | @end example |
2492 | ||
15f1bff4 | 2493 | L'ordre des périphérique est important |
bf5c74e7 | 2494 | |
15f1bff4 JL |
2495 | Dans la console de la VM, appuyez rapidement sur @kbd{F12} pour entrer dans |
2496 | le menu de démarrage. Ensuite appuyez sur @kbd{2} et la touche @kbd{Entrée} | |
2497 | pour valider votre choix. | |
bf5c74e7 | 2498 | |
15f1bff4 JL |
2499 | @item |
2500 | Vous êtes maintenant root dans la VM, continuez en suivant la procédure | |
2501 | d'installation. @xref{Préparer l'installation}, et suivez les | |
2502 | instructions. | |
2503 | @end enumerate | |
bf5c74e7 | 2504 | |
15f1bff4 JL |
2505 | Once installation is complete, you can boot the system that's on your |
2506 | @file{guixsd.img} image. @xref{Running Guix in a VM}, for how to do that. | |
2507 | ||
2508 | @node Construire l'image d'installation | |
2509 | @section Construire l'image d'installation | |
2510 | ||
2511 | @cindex image d'installation | |
2512 | L'image d'installation décrite plus haut a été construite avec la commande | |
2513 | @command{guix system}, plus précisément : | |
bf5c74e7 JL |
2514 | |
2515 | @example | |
15f1bff4 JL |
2516 | guix system disk-image --file-system-type=iso9660 \ |
2517 | gnu/system/install.scm | |
bf5c74e7 JL |
2518 | @end example |
2519 | ||
15f1bff4 JL |
2520 | Regardez le fichier @file{gnu/system/install.scm} dans l'arborescence des |
2521 | sources et regardez aussi @ref{Invoquer guix system} pour plus | |
2522 | d'informations sur l'image d'installation. | |
bf5c74e7 | 2523 | |
15f1bff4 | 2524 | @section Construire l'image d'installation pour les cartes ARM |
bf5c74e7 | 2525 | |
15f1bff4 JL |
2526 | De nombreuses cartes ARM requièrent une variante spécifique du chargeur |
2527 | d'amorçage @uref{http://www.denx.de/wiki/U-Boot/, U-Boot}. | |
bf5c74e7 | 2528 | |
15f1bff4 JL |
2529 | Si vous construisez une image disque et que le chargeur d'amorçage n'est pas |
2530 | disponible autrement (sur un autre périphérique d'amorçage etc), il est | |
2531 | recommandé de construire une image qui inclus le chargeur d'amorçage, plus | |
2532 | précisément : | |
bf5c74e7 JL |
2533 | |
2534 | @example | |
15f1bff4 | 2535 | guix system disk-image --system=armhf-linux -e '((@@ (gnu system install) os-with-u-boot) (@@ (gnu system install) installation-os) "A20-OLinuXino-Lime2")' |
bf5c74e7 JL |
2536 | @end example |
2537 | ||
15f1bff4 JL |
2538 | @code{A20-OLinuXino-Lime2} est le nom de la carte. Si vous spécifiez une |
2539 | carte invalide, une liste de cartes possibles sera affichée. | |
bf5c74e7 | 2540 | |
15f1bff4 JL |
2541 | @c ********************************************************************* |
2542 | @node Gestion de paquets | |
2543 | @chapter Gestion de paquets | |
bf5c74e7 | 2544 | |
15f1bff4 JL |
2545 | @cindex paquets |
2546 | Le but de GNU Guix est de permettre à ses utilisateurs d'installer, mettre à | |
2547 | jour et supprimer facilement des paquets logiciels sans devoir connaître | |
2548 | leur procédure de construction ou leurs dépendances. Guix va aussi plus | |
2549 | loin que ces fonctionnalités évidentes. | |
bf5c74e7 | 2550 | |
15f1bff4 JL |
2551 | Ce chapitre décrit les principales fonctionnalités de Guix, ainsi que des |
2552 | outils de gestion des paquets qu'il fournit. En plus de l'interface en | |
2553 | ligne de commande décrite en dessous de (@pxref{Invoquer guix package, | |
2554 | @code{guix package}}), vous pouvez aussi utiliser l'interface Emacs-Guix | |
2555 | (@pxref{Top,,, emacs-guix, Le manuel de référence de emacs-guix}), après | |
2556 | avoir installé le paquet @code{emacs-guix} (lancez la commande @kbd{M-x | |
2557 | guix-help} pour le démarrer) : | |
3cacfa9e | 2558 | |
15f1bff4 JL |
2559 | @example |
2560 | guix package -i emacs-guix | |
2561 | @end example | |
3cacfa9e | 2562 | |
15f1bff4 JL |
2563 | @menu |
2564 | * Fonctionnalités:: Comment Guix va rendre votre vie plus heureuse. | |
2565 | * Invoquer guix package:: Installation, suppression, etc.@: de paquets. | |
2566 | * Substituts:: Télécharger des binaire déjà construits. | |
2567 | * Des paquets avec plusieurs résultats:: Un seul paquet source, plusieurs | |
2568 | résultats. | |
2569 | * Invoquer guix gc:: Lancer le ramasse-miettes. | |
2570 | * Invoquer guix pull:: Récupérer la dernière version de Guix et de | |
2571 | la distribution. | |
2572 | * Canaux:: Personnaliser la collection des paquets. | |
2573 | * Inférieurs:: Interagir avec une autre révision de Guix. | |
2574 | * Invoquer guix describe:: Affiche des informations sur la révision Guix | |
2575 | actuelle. | |
2576 | * Invoquer guix archive:: Exporter et importer des fichiers du dépôt. | |
2577 | @end menu | |
bf5c74e7 | 2578 | |
15f1bff4 JL |
2579 | @node Fonctionnalités |
2580 | @section Fonctionnalités | |
bf5c74e7 | 2581 | |
15f1bff4 JL |
2582 | Lorsque vous utilisez Guix, chaque paquet arrive dans @dfn{dépôt des |
2583 | paquets}, dans son propre répertoire — quelque chose comme | |
2584 | @file{/gnu/store/xxx-paquet-1.2}, où @code{xxx} est une chaîne en base32. | |
3cacfa9e | 2585 | |
15f1bff4 JL |
2586 | Plutôt que de se rapporter à ces répertoires, les utilisateurs ont leur |
2587 | propre @dfn{profil} qui pointe vers les paquets qu'ils veulent vraiment | |
2588 | utiliser. Ces profils sont stockés dans le répertoire personnel de chaque | |
2589 | utilisateur dans @code{$HOME/.guix-profile}. | |
3cacfa9e | 2590 | |
15f1bff4 JL |
2591 | Par exemple, @code{alice} installe GCC 4.7.2. Il en résulte que |
2592 | @file{/home/alice/.guix-profile/bin/gcc} pointe vers | |
2593 | @file{/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}. Maintenant, sur la même | |
2594 | machine, @code{bob} a déjà installé GCC 4.8.0. Le profil de @code{bob} | |
2595 | continue simplement de pointer vers | |
2596 | @file{/gnu/store/@dots{}-gcc-4.8.0/bin/gcc} — c.-à-d.@: les deux versions de | |
2597 | GCC coexistent surs le même système sans aucune interférence. | |
bf5c74e7 | 2598 | |
15f1bff4 JL |
2599 | La commande @command{guix package} est l'outil central pour gérer les |
2600 | paquets (@pxref{Invoquer guix package}). Il opère sur les profils | |
2601 | utilisateurs et peut être utilisé avec les @emph{privilèges utilisateurs | |
2602 | normaux}. | |
bf5c74e7 | 2603 | |
15f1bff4 JL |
2604 | @cindex transactions |
2605 | La commande fournit les opérations évidentes d'installation, de suppression | |
2606 | et de mise à jour. Chaque invocation est en fait une @emph{transaction} : | |
2607 | soit l'opération demandée réussi, soit rien ne se passe. Ainsi, si le | |
2608 | processus @command{guix package} est terminé pendant la transaction ou si | |
2609 | une panne de courant arrive pendant la transaction, le profil de | |
2610 | l'utilisateur reste dans son état précédent et reste utilisable. | |
3cacfa9e | 2611 | |
15f1bff4 JL |
2612 | In addition, any package transaction may be @emph{rolled back}. So, if, for |
2613 | example, an upgrade installs a new version of a package that turns out to | |
2614 | have a serious bug, users may roll back to the previous instance of their | |
2615 | profile, which was known to work well. Similarly, the global system | |
2616 | configuration on Guix is subject to transactional upgrades and roll-back | |
2617 | (@pxref{Utiliser le système de configuration}). | |
3cacfa9e | 2618 | |
15f1bff4 JL |
2619 | Tous les paquets du dépôt des paquets peut être @emph{glané}. Guix peut |
2620 | déterminer quels paquets sont toujours référencés par les profils des | |
2621 | utilisateurs et supprimer ceux qui ne sont plus référencés de manière | |
2622 | prouvable (@pxref{Invoquer guix gc}). Les utilisateurs peuvent toujours | |
2623 | explicitement supprimer les anciennes générations de leur profil pour que | |
2624 | les paquets auxquels elles faisaient référence puissent être glanés. | |
bf5c74e7 | 2625 | |
15f1bff4 JL |
2626 | @cindex reproductibilité |
2627 | @cindex constructions reproductibles | |
2628 | Guix prend une approche @dfn{purement fonctionnelle} de la gestion de | |
2629 | paquets, telle que décrite dans l'introduction (@pxref{Introduction}). | |
2630 | Chaque nom de répertoire de paquet dans @file{/gnu/store} contient un hash | |
2631 | de toutes les entrées qui ont été utilisées pendant la construction de ce | |
2632 | paquet — le compilateur, les bibliothèques, les scripts de construction, | |
2633 | etc. Cette correspondance directe permet aux utilisateurs de s'assurer que | |
2634 | l'installation d'un paquet donné correspond à l'état actuel de leur | |
2635 | distribution. Elle aide aussi à maximiser la @dfn{reproductibilité} : grâce | |
2636 | aux environnements de construction utilisés, une construction donnée à de | |
2637 | forte chances de donner des fichiers identiques bit-à-bit lorsqu'elle est | |
2638 | effectuée sur des machines différents (@pxref{Invoquer guix-daemon, | |
2639 | container}). | |
bf5c74e7 | 2640 | |
15f1bff4 JL |
2641 | @cindex substituts |
2642 | Ce fondement permet à Guix de supporter le @dfn{déploiement transparent de | |
2643 | binaire ou source}. Lorsqu'une binaire pré-construit pour une entrée de | |
2644 | @file{/gnu/store} est disponible depuis une source externe (un | |
2645 | @dfn{substitut}), Guix le télécharge simplement et le décompresse ; sinon, | |
2646 | il construit le paquet depuis les sources localement (@pxref{Substituts}). | |
2647 | Comme les résultats des constructions sont généralement reproductibles au | |
2648 | bit près, si vous n'avez pas besoin de faire confiance aux serveurs qui | |
2649 | fournissent les substituts : vous pouvez forcer une construction locale et | |
2650 | @emph{défier} les fournisseurs (@pxref{Invoquer guix challenge}). | |
bf5c74e7 | 2651 | |
15f1bff4 JL |
2652 | Le contrôle de l'environnement de construction est aussi une fonctionnalité |
2653 | utile pour les développeurs. La commande @command{guix environment} permet | |
2654 | aux développeurs d'un paquet de mettre en place rapidement le bon | |
2655 | environnement de développement pour leur paquet, sans avoir à installer | |
2656 | manuellement les dépendances du paquet dans leur profil (@pxref{Invoquer guix environment}). | |
bf5c74e7 | 2657 | |
15f1bff4 JL |
2658 | @cindex réplication, des environnements logiciels |
2659 | @cindex suivi de la provenance, des artefacts logiciels | |
2660 | La totalité de Guix et des définitions de paquets sont placés sous contrôle | |
2661 | de version, et @command{guix pull} vous permet de « voyager dans le temps » | |
2662 | de l'historique de Guix lui-même (@pxref{Invoquer guix pull}). Cela est | |
2663 | rend possible la réplication d'une instance Guix sur une machine différente | |
2664 | ou plus tard, ce qui vous permet de @emph{répliquer des environnements | |
2665 | logiciels complets}, tout en garantissant un @dfn{suivi de provenance} | |
2666 | précis des logiciels. | |
3cacfa9e | 2667 | |
15f1bff4 JL |
2668 | @node Invoquer guix package |
2669 | @section Invoquer @command{guix package} | |
bf5c74e7 | 2670 | |
15f1bff4 JL |
2671 | @cindex installer des paquets |
2672 | @cindex supprimer des paquets | |
2673 | @cindex installation de paquets | |
2674 | @cindex suppression de paquets | |
2675 | La commande @command{guix package} est l'outil qui permet d'installer, | |
2676 | mettre à jour et supprimer les paquets ainsi que de revenir à une | |
2677 | configuration précédente. Elle n'opère que dans le profil de l'utilisateur | |
2678 | et fonctionne avec les privilèges utilisateurs normaux | |
2679 | (@pxref{Fonctionnalités}). Sa syntaxe est : | |
bf5c74e7 | 2680 | |
15f1bff4 JL |
2681 | @example |
2682 | guix package @var{options} | |
2683 | @end example | |
2684 | @cindex transactions | |
2685 | @var{options} spécifie d'abord les opérations à effectuer pendant la | |
2686 | transaction. À la fin, une nouvelle génération du profil est créée mais les | |
2687 | @dfn{générations} précédentes du profil restent disponibles si l'utilisateur | |
2688 | souhaite y revenir. | |
3cacfa9e | 2689 | |
15f1bff4 JL |
2690 | Par exemple, pour supprimer @code{lua} et installer @code{guile} et |
2691 | @code{guile-cairo} en une seule transaction : | |
3cacfa9e | 2692 | |
15f1bff4 JL |
2693 | @example |
2694 | guix package -r lua -i guile guile-cairo | |
2695 | @end example | |
3cacfa9e | 2696 | |
15f1bff4 JL |
2697 | @command{guix package} supporte aussi une @dfn{approche déclarative} où |
2698 | l'utilisateur spécifie l'ensemble exact des paquets qui doivent être | |
2699 | disponibles le passe @i{via} l'option @option{--manifest} | |
2700 | (@pxref{profile-manifest, @option{--manifest}}). | |
3cacfa9e | 2701 | |
15f1bff4 JL |
2702 | @cindex profil |
2703 | Pour chaque utilisateur, un lien symbolique vers le profil par défaut de cet | |
2704 | utilisateur est automatiquement créé dans @file{$HOME/.guix-profile}. Ce | |
2705 | lien symbolique pointe toujours vers la génération actuelle du profil par | |
2706 | défaut de l'utilisateur. Ainsi, les utilisateurs peuvent ajouter | |
2707 | @file{$HOME/.guix-profile/bin} à leur variable d'environnement @code{PATH} | |
2708 | etc. | |
2709 | @cindex chemins de recherche | |
2710 | Si vous n'utilisez pas la distribution système Guix, vous devriez ajouter | |
2711 | les lignes suivantes à votre @file{~/.bash_profile} (@pxref{Bash Startup | |
2712 | Files,,, bash, The GNU Bash Reference Manual}) pour que les shells créés | |
2713 | ensuite aient les bonnes définitions des variables d'environnement : | |
bf5c74e7 JL |
2714 | |
2715 | @example | |
15f1bff4 JL |
2716 | GUIX_PROFILE="$HOME/.guix-profile" ; \ |
2717 | source "$HOME/.guix-profile/etc/profile" | |
bf5c74e7 JL |
2718 | @end example |
2719 | ||
15f1bff4 JL |
2720 | Dans un environnement multi-utilisateur, les profils utilisateurs sont |
2721 | stockés comme une @dfn{racine du ramasse-miettes}, vers laquelle pointe | |
2722 | @file{$HOME/.guix-profile} (@pxref{Invoquer guix gc}). Ce répertoire est | |
2723 | normalement | |
2724 | @code{@var{localstatedir}/guix/profiles/per-user/@var{utilisateur}}, où | |
2725 | @var{localstatedir} est la valeur passée à @code{configure} avec | |
2726 | @code{--localstatedir} et @var{utilisateur} le nom d'utilisateur. Le | |
2727 | répertoire @file{per-user} est créé lorsque @command{guix-daemon} est | |
2728 | démarré et sous-répertoire @var{utilisateur} est créé par @command{guix | |
2729 | package}. | |
bf5c74e7 | 2730 | |
15f1bff4 | 2731 | Les @var{options} peuvent être les suivante : |
bf5c74e7 JL |
2732 | |
2733 | @table @code | |
bf5c74e7 | 2734 | |
15f1bff4 JL |
2735 | @item --install=@var{paquet} @dots{} |
2736 | @itemx -i @var{paquet} @dots{} | |
2737 | Installer les @var{paquet}s spécifiés. | |
bf5c74e7 | 2738 | |
15f1bff4 JL |
2739 | Chaque @var{paquet} peut spécifier soit un simple nom de paquet, comme |
2740 | @code{guile} ou un nom de paquet suivi d'un arobase et d'un numéro de | |
2741 | version, comme @code{guile@@1.8.8} ou simplement @code{guile@@1.8} (dans ce | |
2742 | dernier cas, la version la plus récente commençant par @code{1.8} est | |
2743 | utilisée). | |
bf5c74e7 | 2744 | |
15f1bff4 JL |
2745 | Si aucun numéro de version n'est spécifié, la version la plus récente |
2746 | disponible est choisie. En plus, @var{paquet} peut contenir un deux-points, | |
2747 | suivi du nom d'une des sorties du paquet, comme dans @code{gcc:doc} ou | |
2748 | @code{binutils@@2.22:lib} (@pxref{Des paquets avec plusieurs résultats}). Des | |
2749 | paquets avec un nom correspondant et (éventuellement une version) sont | |
2750 | recherchés dans les modules de la distribution GNU (@pxref{Modules de paquets}). | |
bf5c74e7 | 2751 | |
15f1bff4 JL |
2752 | @cindex entrées propagées |
2753 | Parfois les paquets ont des @dfn{entrées propagées} : ce sont des | |
2754 | dépendances qui sont installées automatiquement avec le paquet demandé | |
2755 | (@pxref{package-propagated-inputs, @code{propagated-inputs} in | |
2756 | @code{package} objects} pour plus d'informations sur les entrées propagées | |
2757 | dans les définitions des paquets). | |
bf5c74e7 | 2758 | |
15f1bff4 JL |
2759 | @anchor{package-cmd-propagated-inputs} |
2760 | Un exemple est la bibliothèque MPC de GNU : ses fichiers d'en-tête C se | |
2761 | réfèrent à ceux de la bibliothèque MPFR de GNU, qui se réfèrent en retour à | |
2762 | ceux de la bibliothèque GMP. Ainsi, lorsqu'on installe MPC, les | |
2763 | bibliothèques MPFR et GMP sont aussi installées dans le profil ; supprimer | |
2764 | MPC supprimera aussi MPFR et GMP — à moins qu'ils n'aient été aussi | |
2765 | installés explicitement par l'utilisateur. | |
bf5c74e7 | 2766 | |
15f1bff4 JL |
2767 | D'autre part, les paquets dépendent parfois de la définition de variables |
2768 | d'environnement pour leur chemin de recherche (voir les explications sur | |
2769 | @code{--search-paths} plus bas). Toute définition de variable | |
2770 | d'environnement manquante ou possiblement incorrecte est rapportée ici. | |
bf5c74e7 | 2771 | |
15f1bff4 JL |
2772 | @item --install-from-expression=@var{exp} |
2773 | @itemx -e @var{exp} | |
2774 | Installer le paquet évalué par @var{exp} | |
bf5c74e7 | 2775 | |
15f1bff4 JL |
2776 | @var{exp} doit être une expression Scheme qui s'évalue en un objet |
2777 | @code{<package>}. Cette option est notamment utile pour distinguer les | |
2778 | variantes d'un paquet avec le même nom, avec des expressions comme @code{(@@ | |
2779 | (gnu packages base) guile-final)}. | |
bf5c74e7 | 2780 | |
15f1bff4 JL |
2781 | Remarquez que cette option installe la première sortie du paquet, ce qui |
2782 | peut être insuffisant lorsque vous avez besoin d'une sortie spécifique d'un | |
2783 | paquet à plusieurs sorties. | |
bf5c74e7 | 2784 | |
15f1bff4 JL |
2785 | @item --install-from-file=@var{fichier} |
2786 | @itemx -f @var{fichier} | |
2787 | Installer le paquet évalué par le code dans le @var{fichier}. | |
bf5c74e7 | 2788 | |
15f1bff4 JL |
2789 | Par exemple, @var{fichier} peut contenir une définition comme celle-ci |
2790 | (@pxref{Définition des paquets}) : | |
bf5c74e7 | 2791 | |
15f1bff4 JL |
2792 | @example |
2793 | @verbatiminclude package-hello.scm | |
2794 | @end example | |
bf5c74e7 | 2795 | |
15f1bff4 JL |
2796 | Les développeurs peuvent trouver utile d'inclure un tel fichier |
2797 | @file{guix.scm} à la racine de l'arborescence des sources de leur projet qui | |
2798 | pourrait être utilisé pour tester des versions de développement et créer des | |
2799 | environnements de développement reproductibles (@pxref{Invoquer guix environment}). | |
bf5c74e7 | 2800 | |
15f1bff4 JL |
2801 | @item --remove=@var{paquet} @dots{} |
2802 | @itemx -r @var{paquet} @dots{} | |
2803 | Supprimer les @var{paquet}s spécifiés. | |
bf5c74e7 | 2804 | |
15f1bff4 JL |
2805 | Comme pour @code{--install}, chaque @var{paquet} peut spécifier un numéro de |
2806 | version ou un nom de sortie en plus du nom du paquet. Par exemple, @code{-r | |
2807 | glibc:debug} supprimerait la sortie @code{debug} de @code{glibc}. | |
bf5c74e7 | 2808 | |
15f1bff4 JL |
2809 | @item --upgrade[=@var{regexp} @dots{}] |
2810 | @itemx -u [@var{regexp} @dots{}] | |
2811 | @cindex mettre à jour des paquets | |
2812 | Mettre à jour tous les paquets installés. Si une @var{regexp} ou plus est | |
2813 | spécifiée, la mise à jour n'installera que les paquets dont le nom | |
2814 | correspond à @var{regexp}. Voyez aussi l'option @code{--do-not-upgrade} en | |
2815 | dessous. | |
bf5c74e7 | 2816 | |
15f1bff4 JL |
2817 | Remarquez que cela met à jour vers la dernière version des paquets trouvée |
2818 | dans la distribution actuellement installée. Pour mettre à jour votre | |
2819 | distribution, vous devriez lancer régulièrement @command{guix pull} | |
2820 | (@pxref{Invoquer guix pull}). | |
bf5c74e7 | 2821 | |
15f1bff4 JL |
2822 | @item --do-not-upgrade[=@var{regexp} @dots{}] |
2823 | Lorsqu'elle est utilisée avec l'option @code{--upgrade}, ne @emph{pas} | |
2824 | mettre à jour les paquets dont le nom correspond à @var{regexp}. Par | |
2825 | exemple, pour mettre à jour tous les paquets du profil actuel à l'exception | |
2826 | de ceux qui contiennent la chaîne « emacs » : | |
bf5c74e7 JL |
2827 | |
2828 | @example | |
15f1bff4 | 2829 | $ guix package --upgrade . --do-not-upgrade emacs |
bf5c74e7 JL |
2830 | @end example |
2831 | ||
15f1bff4 JL |
2832 | @item @anchor{profile-manifest}--manifest=@var{fichier} |
2833 | @itemx -m @var{fichier} | |
2834 | @cindex déclaration de profil | |
2835 | @cindex manifest de profil | |
2836 | Créer une nouvelle génération du profil depuis l'objet manifeste renvoyé par | |
2837 | le code Scheme dans @var{fichier}. | |
bf5c74e7 | 2838 | |
15f1bff4 JL |
2839 | Cela vous permet de @emph{déclarer} le contenu du profil plutôt que de le |
2840 | construire avec une série de @code{--install} et de commandes similaires. | |
2841 | L'avantage étant que le @var{fichier} peut être placé sous contrôle de | |
2842 | version, copié vers d'autres machines pour reproduire le même profil, etc. | |
bf5c74e7 | 2843 | |
15f1bff4 JL |
2844 | @c FIXME: Add reference to (guix profile) documentation when available. |
2845 | @var{fichier} doit retourner un objet @dfn{manifest} qui est en gros une | |
2846 | liste de paquets : | |
bf5c74e7 | 2847 | |
15f1bff4 JL |
2848 | @findex packages->manifest |
2849 | @example | |
2850 | (use-package-modules guile emacs) | |
bf5c74e7 | 2851 | |
15f1bff4 JL |
2852 | (packages->manifest |
2853 | (list emacs | |
2854 | guile-2.0 | |
2855 | ;; Utiliser une sortie spécifique d'un paquet. | |
2856 | (list guile-2.0 "debug"))) | |
2857 | @end example | |
bf5c74e7 | 2858 | |
15f1bff4 JL |
2859 | @findex specifications->manifest |
2860 | Dans cet exemple on doit savoir quels modules définissent les variables | |
2861 | @code{emacs} et @code{guile-2.0} pour fournir la bonne ligne | |
2862 | @code{use-package-modules} ce qui peut être embêtant. On peut à la place | |
2863 | fournir des spécifications de paquets normales et laisser | |
2864 | @code{specifications->manifest} rechercher les objets de paquets | |
2865 | correspondants, comme ceci : | |
bf5c74e7 | 2866 | |
15f1bff4 JL |
2867 | @example |
2868 | (specifications->manifest | |
2869 | '("emacs" "guile@@2.2" "guile@@2.2:debug")) | |
2870 | @end example | |
bf5c74e7 | 2871 | |
15f1bff4 JL |
2872 | @item --roll-back |
2873 | @cindex revenir en arrière | |
2874 | @cindex défaire des transactions | |
2875 | @cindex transactions, défaire | |
2876 | Revenir à la @dfn{génération} précédente du profil c.-à-d.@: défaire la | |
2877 | dernière transaction. | |
bf5c74e7 | 2878 | |
15f1bff4 JL |
2879 | Lorsqu'elle est combinée avec des options comme @code{--install}, cette |
2880 | option revient en arrière avant toute autre action. | |
bf5c74e7 | 2881 | |
15f1bff4 JL |
2882 | Lorsque vous revenez de la première génération qui contient des fichiers, le |
2883 | profil pointera vers la @dfn{zéroième génération} qui ne contient aucun | |
2884 | fichier en dehors de ses propres métadonnées. | |
bf5c74e7 | 2885 | |
15f1bff4 JL |
2886 | Après être revenu en arrière, l'installation, la suppression et la mise à |
2887 | jour de paquets réécrit les futures générations précédentes. Ainsi, | |
2888 | l'historique des générations dans un profil est toujours linéaire. | |
bf5c74e7 | 2889 | |
15f1bff4 JL |
2890 | @item --switch-generation=@var{motif} |
2891 | @itemx -S @var{motif} | |
2892 | @cindex générations | |
2893 | Basculer vers une génération particulière définie par le @var{motif}. | |
3cacfa9e | 2894 | |
15f1bff4 JL |
2895 | Le @var{motif} peut être soit un numéro de génération soit un nombre précédé |
2896 | de « + » ou « - ». Ce dernier signifie : se déplacer en avant ou en arrière | |
2897 | d'un nombre donné de générations. Par exemple, si vous voulez retourner à | |
2898 | la dernière génération après @code{--roll-back}, utilisez | |
2899 | @code{--switch-generation=+1}. | |
3cacfa9e | 2900 | |
15f1bff4 JL |
2901 | La différence entre @code{--roll-back} et @code{--switch-generation=-1} est |
2902 | que @code{--switch-generation} ne vous amènera pas à la zéroième génération, | |
2903 | donc si la génération demandée n'existe pas la génération actuelle ne | |
2904 | changera pas. | |
2cf2c778 | 2905 | |
15f1bff4 JL |
2906 | @item --search-paths[=@var{genre}] |
2907 | @cindex chemins de recherche | |
2908 | Rapporter les définitions des variables d'environnement dans la syntaxe Bash | |
2909 | qui peuvent être requises pour utiliser l'ensemble des paquets installés. | |
2910 | Ces variables d'environnement sont utilisées pour spécifier les @dfn{chemins | |
2911 | de recherche} de fichiers utilisés par les paquets installés. | |
2cf2c778 | 2912 | |
15f1bff4 JL |
2913 | Par exemple, GCC a besoin des variables d'environnement @code{CPATH} et |
2914 | @code{LIBRARY_PATH} pour trouver les en-têtes et les bibliothèques dans le | |
2915 | profil de l'utilisateur (@pxref{Environment Variables,,, gcc, Using the GNU | |
2916 | Compiler Collection (GCC)}). Si GCC et, disons, la bibliothèque C sont | |
2917 | installés dans le profil, alors @code{--search-paths} suggérera | |
2918 | d'initialiser ces variables à @code{@var{profil}/include} et | |
2919 | @code{@var{profil}/lib}, respectivement. | |
2cf2c778 | 2920 | |
15f1bff4 JL |
2921 | Le cas d'utilisation typique est de définir ces variables d'environnement |
2922 | dans le shell : | |
2cf2c778 JL |
2923 | |
2924 | @example | |
15f1bff4 | 2925 | $ eval `guix package --search-paths` |
2cf2c778 JL |
2926 | @end example |
2927 | ||
15f1bff4 JL |
2928 | @var{genre} peut être l'une des valeurs @code{exact}, @code{prefix} ou |
2929 | @code{suffix}, ce qui signifie que les définitions des variables | |
2930 | d'environnement retournées seront soit les paramètres exactes, ou placés | |
2931 | avant ou après la valeur actuelle de ces paramètres. Lorsqu'il est omis, | |
2932 | @var{genre} a pour valeur par défaut @code{exact}. | |
adfb167f | 2933 | |
15f1bff4 JL |
2934 | Cette option peut aussi être utilisé pour calculer les chemins de recherche |
2935 | @emph{combinés} de plusieurs profils. Regardez cet exemple : | |
2cf2c778 JL |
2936 | |
2937 | @example | |
15f1bff4 JL |
2938 | $ guix package -p foo -i guile |
2939 | $ guix package -p bar -i guile-json | |
2940 | $ guix package -p foo -p bar --search-paths | |
2cf2c778 | 2941 | @end example |
3cacfa9e | 2942 | |
15f1bff4 JL |
2943 | La dernière commande ci-dessus montre la variable @code{GUILE_LOAD_PATH} |
2944 | bien que, pris individuellement, ni @file{foo} ni @file{bar} n'auraient | |
2945 | donné cette recommandation. | |
2cf2c778 | 2946 | |
adfb167f JL |
2947 | |
2948 | @item --profile=@var{profil} | |
2949 | @itemx -p @var{profil} | |
15f1bff4 | 2950 | Utiliser le @var{profil} à la place du profil par défaut de l'utilisateur. |
adfb167f | 2951 | |
15f1bff4 JL |
2952 | @cindex collisions, dans un profil |
2953 | @cindex faire des collisions de paquets dans des profils | |
2954 | @cindex profil, collisions | |
2955 | @item --allow-collisions | |
2956 | Permettre des collisions de paquets dans le nouveau profil. À utiliser à | |
2957 | vos risques et périls ! | |
adfb167f | 2958 | |
15f1bff4 JL |
2959 | Par défaut, @command{guix package} rapporte les @dfn{collisions} dans le |
2960 | profil comme des erreurs. Les collisions ont lieu quand deux version ou | |
2961 | variantes d'un paquet donné se retrouvent dans le profil. | |
adfb167f | 2962 | |
bf5c74e7 | 2963 | @item --bootstrap |
15f1bff4 JL |
2964 | Utiliser le programme d'amorçage Guile pour compiler le profil. Cette |
2965 | option n'est utile que pour les développeurs de la distribution. | |
bf5c74e7 | 2966 | |
15f1bff4 | 2967 | @end table |
adfb167f | 2968 | |
15f1bff4 JL |
2969 | En plus de ces actions, @command{guix package} supporte les options |
2970 | suivantes pour demander l'état actuel d'un profil ou la disponibilité des | |
2971 | paquets : | |
adfb167f | 2972 | |
15f1bff4 | 2973 | @table @option |
adfb167f | 2974 | |
15f1bff4 JL |
2975 | @item --search=@var{regexp} |
2976 | @itemx -s @var{regexp} | |
2977 | @cindex chercher des paquets | |
2978 | List the available packages whose name, synopsis, or description matches | |
2979 | @var{regexp} (in a case-insensitive fashion), sorted by relevance. Print | |
2980 | all the metadata of matching packages in @code{recutils} format (@pxref{Top, | |
2981 | GNU recutils databases,, recutils, GNU recutils manual}). | |
adfb167f | 2982 | |
15f1bff4 JL |
2983 | Cela permet à des champs spécifiques d'être extraits avec la commande |
2984 | @command{recsel}, par exemple : | |
adfb167f | 2985 | |
15f1bff4 JL |
2986 | @example |
2987 | $ guix package -s malloc | recsel -p name,version,relevance | |
2988 | name: jemalloc | |
2989 | version: 4.5.0 | |
2990 | relevance: 6 | |
adfb167f | 2991 | |
15f1bff4 JL |
2992 | name: glibc |
2993 | version: 2.25 | |
2994 | relevance: 1 | |
adfb167f | 2995 | |
15f1bff4 JL |
2996 | name: libgc |
2997 | version: 7.6.0 | |
2998 | relevance: 1 | |
2999 | @end example | |
adfb167f | 3000 | |
15f1bff4 JL |
3001 | De manière similaire, pour montrer le nom de tous les paquets disponibles |
3002 | sous license GNU@tie{}LGPL version 3 : | |
adfb167f | 3003 | |
15f1bff4 JL |
3004 | @example |
3005 | $ guix package -s "" | recsel -p name -e 'license ~ "LGPL 3"' | |
3006 | name: elfutils | |
adfb167f | 3007 | |
15f1bff4 JL |
3008 | name: gmp |
3009 | @dots{} | |
3010 | @end example | |
adfb167f | 3011 | |
15f1bff4 JL |
3012 | Il est aussi possible de raffiner les résultats de la recherche avec |
3013 | plusieurs options @code{-s}. Par exemple, la commande suivante renvoie la | |
3014 | liste des jeux de plateau : | |
adfb167f | 3015 | |
15f1bff4 JL |
3016 | @example |
3017 | $ guix package -s '\<board\>' -s game | recsel -p name | |
3018 | name: gnubg | |
3019 | @dots{} | |
3020 | @end example | |
adfb167f | 3021 | |
15f1bff4 JL |
3022 | Si on avait oublié @code{-s game}, on aurait aussi eu les paquets logiciels |
3023 | qui s'occupent de circuits imprimés (en anglais : circuit board) ; supprimer | |
3024 | les chevrons autour de @code{board} aurait aussi ajouté les paquets qui | |
3025 | parlent de clavier (en anglais : key@emph{board}). | |
adfb167f | 3026 | |
15f1bff4 JL |
3027 | Et maintenant un exemple plus élaboré. La commande suivante recherche les |
3028 | bibliothèques cryptographiques, retire les bibliothèques Haskell, Perl, | |
3029 | Python et Ruby et affiche le nom et le synopsis des paquets correspondants : | |
adfb167f JL |
3030 | |
3031 | @example | |
15f1bff4 JL |
3032 | $ guix package -s crypto -s library | \ |
3033 | recsel -e '! (name ~ "^(ghc|perl|python|ruby)")' -p name,synopsis | |
adfb167f JL |
3034 | @end example |
3035 | ||
3036 | @noindent | |
15f1bff4 JL |
3037 | @xref{Selection Expressions,,, recutils, GNU recutils manual} pour plus |
3038 | d'information sur les @dfn{expressions de sélection} pour @code{recsel -e}. | |
adfb167f | 3039 | |
15f1bff4 JL |
3040 | @item --show=@var{paquet} |
3041 | Afficher les détails du @var{paquet} dans la liste des paquets disponibles, | |
3042 | au format @code{recutils} (@pxref{Top, GNU recutils databases,, recutils, | |
3043 | GNU recutils manual}). | |
adfb167f | 3044 | |
15f1bff4 JL |
3045 | @example |
3046 | $ guix package --show=python | recsel -p name,version | |
3047 | name: python | |
3048 | version: 2.7.6 | |
adfb167f | 3049 | |
15f1bff4 JL |
3050 | name: python |
3051 | version: 3.3.5 | |
3052 | @end example | |
adfb167f | 3053 | |
15f1bff4 JL |
3054 | Vous pouvez aussi spécifier le nom complet d'un paquet pour n'avoir que les |
3055 | détails concernant une version spécifique : | |
3056 | @example | |
3057 | $ guix package --show=python@@3.4 | recsel -p name,version | |
3058 | name: python | |
3059 | version: 3.4.3 | |
3060 | @end example | |
adfb167f | 3061 | |
adfb167f | 3062 | |
adfb167f | 3063 | |
15f1bff4 JL |
3064 | @item --list-installed[=@var{regexp}] |
3065 | @itemx -I [@var{regexp}] | |
3066 | Liste les paquets actuellement installés dans le profil spécifié, avec les | |
3067 | paquets les plus récemment installés en dernier. Lorsque @var{regexp} est | |
3068 | spécifié, liste uniquement les paquets installés dont le nom correspond à | |
3069 | @var{regexp}. | |
adfb167f | 3070 | |
15f1bff4 JL |
3071 | Pour chaque paquet installé, affiche les éléments suivants, séparés par des |
3072 | tabulations : le nom du paquet, sa version, la partie du paquet qui est | |
3073 | installé (par exemple, @code{out} pour la sortie par défaut, @code{include} | |
3074 | pour ses en-têtes, etc) et le chemin du paquet dans le dépôt. | |
adfb167f | 3075 | |
15f1bff4 JL |
3076 | @item --list-available[=@var{regexp}] |
3077 | @itemx -A [@var{regexp}] | |
3078 | Lister les paquets actuellement disponibles dans la distribution pour ce | |
3079 | système (@pxref{Distribution GNU}). Lorsque @var{regexp} est spécifié, | |
3080 | liste uniquement les paquets dont le nom correspond à @var{regexp}. | |
adfb167f | 3081 | |
15f1bff4 JL |
3082 | Pour chaque paquet, affiche les éléments suivants séparés par des |
3083 | tabulations : son nom, sa version, les parties du paquet (@pxref{Des paquets avec plusieurs résultats}), et l'emplacement de sa définition. | |
adfb167f | 3084 | |
15f1bff4 JL |
3085 | @item --list-generations[=@var{motif}] |
3086 | @itemx -l [@var{motif}] | |
3087 | @cindex générations | |
3088 | Renvoyer la liste des générations avec leur date de création ; pour chaque | |
3089 | génération, montre les paquets installés avec les paquets installés les plus | |
3090 | récemment en dernier. Remarquez que la zéroième génération n'est jamais | |
3091 | montrée. | |
adfb167f | 3092 | |
15f1bff4 JL |
3093 | Pour chaque paquet installé, afficher les éléments suivants, séparés par des |
3094 | tabulations : le nom du paquet, sa version, la partie du paquet qui a été | |
3095 | installée (@pxref{Des paquets avec plusieurs résultats}), et l'emplacement du | |
3096 | paquet dans le dépôt. | |
adfb167f | 3097 | |
15f1bff4 JL |
3098 | Lorsque @var{motif} est utilisé, la commande ne renvoie que les générations |
3099 | correspondantes. Les motifs valides sont : | |
adfb167f | 3100 | |
15f1bff4 JL |
3101 | @itemize |
3102 | @item @emph{Des entiers et des entiers séparés par des virgules}. Les deux motifs correspondent | |
3103 | à des numéros de version. Par exemple, @code{--list-generations=1} renvoie | |
3104 | la première. | |
adfb167f | 3105 | |
15f1bff4 JL |
3106 | Et @code{--list-generations=1,8,2} renvoie les trois générations dans |
3107 | l'ordre spécifié. Aucune espace ni virgule surnuméraire n'est permise. | |
adfb167f | 3108 | |
15f1bff4 JL |
3109 | @item @emph{Des intervalles}. @code{--list-generations=2..9} affiche les |
3110 | générations demandées et tout ce qui se trouvent entre elles. Remarquez que | |
3111 | le début d'un intervalle doit être plus petit que sa fin. | |
adfb167f | 3112 | |
15f1bff4 JL |
3113 | Il est aussi possible d'omettre le numéro final. Par exemple, |
3114 | @code{--list-generations=2..} renvoie toutes les générations à partir de la | |
3115 | deuxième. | |
adfb167f | 3116 | |
15f1bff4 JL |
3117 | @item @emph{Des durées}. Vous pouvez aussi récupérer les derniers @emph{N}@tie{}jours, semaines, |
3118 | ou moins en passant un entier avec la première lettre de la durée (en | |
3119 | anglais : d, w ou m). Par exemple @code{--list-generations=20d} liste les | |
3120 | générations qui sont âgées d'au plus 20 jours. | |
3121 | @end itemize | |
adfb167f | 3122 | |
15f1bff4 JL |
3123 | @item --delete-generations[=@var{motif}] |
3124 | @itemx -d [@var{motif}] | |
3125 | Lorsque @var{motif} est omis, supprimer toutes les générations en dehors de | |
3126 | l'actuelle. | |
adfb167f | 3127 | |
15f1bff4 JL |
3128 | Cette commande accepte les même motifs que @option{--list-generations}. |
3129 | Lorsque @var{motif} est spécifié, supprimer les générations correspondante. | |
3130 | Lorsque @var{motif} spécifie une durée, les générations @emph{plus vieilles} | |
3131 | que la durée spécifiée correspondent. Par exemple | |
3132 | @code{--delete-generations=1m} supprime les générations vieilles de plus | |
3133 | d'un mois. | |
adfb167f | 3134 | |
15f1bff4 JL |
3135 | Si la génération actuelle correspond, elle n'est @emph{pas} supprimée. La |
3136 | zéroième génération n'est elle non plus jamais supprimée. | |
adfb167f | 3137 | |
15f1bff4 JL |
3138 | Remarquez que supprimer des générations empêche de revenir en arrière vers |
3139 | elles. Ainsi, cette commande doit être utilisée avec précaution. | |
adfb167f | 3140 | |
15f1bff4 | 3141 | @end table |
adfb167f | 3142 | |
15f1bff4 JL |
3143 | Enfin, comme @command{guix package} peut démarrer des processus de |
3144 | construction, elle supporte les options de construction communes | |
3145 | (@pxref{Options de construction communes}). Elle supporte aussi les options de | |
3146 | transformation de paquets comme @option{--with-source} (@pxref{Options de transformation de paquets}). Cependant, remarquez que les transformations de | |
3147 | paquets sont perdues à la mise à jour ; pour les préserver à travers les | |
3148 | mises à jours, vous devriez définir vos propres variantes des paquets dans | |
3149 | une module Guile et l'ajouter à @code{GUIX_PACKAGE_PATH} (@pxref{Définition des paquets}). | |
adfb167f | 3150 | |
15f1bff4 JL |
3151 | @node Substituts |
3152 | @section Substituts | |
adfb167f | 3153 | |
15f1bff4 JL |
3154 | @cindex substituts |
3155 | @cindex binaires pré-construits | |
3156 | Guix gère le déploiement depuis des binaires ou des sources de manière | |
3157 | transparente ce qui signifie qu'il peut aussi bien construire localement que | |
3158 | télécharger des éléments pré-construits depuis un serveur ou les deux. Nous | |
3159 | appelons ces éléments pré-construits des @dfn{substituts} — ils se | |
3160 | substituent aux résultats des constructions locales. Dans la plupart des | |
3161 | cas, télécharger un substitut est bien plus rapide que de construire les | |
3162 | choses localement. | |
adfb167f | 3163 | |
15f1bff4 JL |
3164 | Les substituts peuvent être tout ce qui résulte d'une construction de |
3165 | dérivation (@pxref{Dérivations}). Bien sûr dans le cas général, il s'agit | |
3166 | de paquets binaires pré-construits, mais les archives des sources par | |
3167 | exemple résultent aussi de la construction d'une dérivation qui peut aussi | |
3168 | être disponible en tant que substitut. | |
adfb167f | 3169 | |
15f1bff4 JL |
3170 | @menu |
3171 | * Serveur de substituts officiel:: Une source particulière de substituts. | |
3172 | * Autoriser un serveur de substituts:: Comment activer ou désactiver les | |
3173 | substituts. | |
3174 | * Authentification des substituts:: Comment Guix vérifie les substituts. | |
3175 | * Paramètres de serveur mandataire:: Comment récupérer des substituts à | |
3176 | travers un serveur mandataire. | |
3177 | * Échec de substitution:: Qu'arrive-t-il quand la substitution échoue. | |
3178 | * De la confiance en des binaires:: Comment pouvez-vous avoir confiance en | |
3179 | un paquet binaire ? | |
3180 | @end menu | |
adfb167f | 3181 | |
15f1bff4 JL |
3182 | @node Serveur de substituts officiel |
3183 | @subsection Serveur de substituts officiel | |
3184 | ||
3185 | @cindex hydra | |
3186 | @cindex ferme de construction | |
3187 | The @code{@value{SUBSTITUTE-SERVER}} server is a front-end to an official | |
3188 | build farm that builds packages from Guix continuously for some | |
3189 | architectures, and makes them available as substitutes. This is the default | |
3190 | source of substitutes; it can be overridden by passing the | |
3191 | @option{--substitute-urls} option either to @command{guix-daemon} | |
3192 | (@pxref{daemon-substitute-urls,, @code{guix-daemon --substitute-urls}}) or | |
3193 | to client tools such as @command{guix package} | |
3194 | (@pxref{client-substitute-urls,, client @option{--substitute-urls} option}). | |
3195 | ||
3196 | Les URL des substituts peuvent être soit en HTTP soit en HTTPS. Le HTTPS | |
3197 | est recommandé parce que les communications sont chiffrées ; à l'inverse | |
3198 | HTTP rend les communications visibles pour un espion qui peut utiliser les | |
3199 | informations accumulées sur vous pour déterminer par exemple si votre | |
3200 | système a des vulnérabilités de sécurités non corrigées. | |
3201 | ||
3202 | Les substituts de la ferme de construction officielle sont activés par | |
3203 | défaut dans la distribution système Guix (@pxref{Distribution GNU}). | |
3204 | Cependant, ils sont désactivés par défaut lorsque vous utilisez Guix sur une | |
3205 | distribution externe, à moins que vous ne les ayez explicitement activés via | |
3206 | l'une des étapes d'installation recommandées (@pxref{Installation}). Les | |
3207 | paragraphes suivants décrivent comment activer ou désactiver les substituts | |
3208 | de la ferme de construction ; la même procédure peut être utilisée pour | |
3209 | activer les substituts de n'importe quel autre serveur de substituts. | |
3210 | ||
3211 | @node Autoriser un serveur de substituts | |
3212 | @subsection Autoriser un serveur de substituts | |
3213 | ||
3214 | @cindex sécurité | |
3215 | @cindex substituts, autorisations | |
3216 | @cindex liste de contrôle d'accès (ACL), pour les substituts | |
3217 | @cindex ACL (liste de contrôle d'accès), pour les substituts | |
3218 | To allow Guix to download substitutes from @code{@value{SUBSTITUTE-SERVER}} | |
3219 | or a mirror thereof, you must add its public key to the access control list | |
3220 | (ACL) of archive imports, using the @command{guix archive} command | |
3221 | (@pxref{Invoquer guix archive}). Doing so implies that you trust | |
3222 | @code{@value{SUBSTITUTE-SERVER}} to not be compromised and to serve genuine | |
3223 | substitutes. | |
3224 | ||
3225 | The public key for @code{@value{SUBSTITUTE-SERVER}} is installed along with | |
3226 | Guix, in @code{@var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub}, where | |
3227 | @var{prefix} is the installation prefix of Guix. If you installed Guix from | |
3228 | source, make sure you checked the GPG signature of | |
3229 | @file{guix-@value{VERSION}.tar.gz}, which contains this public key file. | |
3230 | Then, you can run something like this: | |
adfb167f JL |
3231 | |
3232 | @example | |
15f1bff4 | 3233 | # guix archive --authorize < @var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub |
adfb167f JL |
3234 | @end example |
3235 | ||
15f1bff4 JL |
3236 | @quotation Remarque |
3237 | Similarly, the @file{hydra.gnu.org.pub} file contains the public key of an | |
3238 | independent build farm also run by the project, reachable at | |
3239 | @indicateurl{https://mirror.hydra.gnu.org}. | |
3240 | @end quotation | |
adfb167f | 3241 | |
15f1bff4 JL |
3242 | Une fois que cela est en place, la sortie d'une commande comme @code{guix |
3243 | build} devrait changer de quelque chose comme : | |
adfb167f JL |
3244 | |
3245 | @example | |
15f1bff4 JL |
3246 | $ guix build emacs --dry-run |
3247 | Les dérivations suivantes seraient construites : | |
3248 | /gnu/store/yr7bnx8xwcayd6j95r2clmkdl1qh688w-emacs-24.3.drv | |
3249 | /gnu/store/x8qsh1hlhgjx6cwsjyvybnfv2i37z23w-dbus-1.6.4.tar.gz.drv | |
3250 | /gnu/store/1ixwp12fl950d15h2cj11c73733jay0z-alsa-lib-1.0.27.1.tar.bz2.drv | |
3251 | /gnu/store/nlma1pw0p603fpfiqy7kn4zm105r5dmw-util-linux-2.21.drv | |
3252 | @dots{} | |
adfb167f JL |
3253 | @end example |
3254 | ||
3255 | @noindent | |
15f1bff4 | 3256 | à quelque chose comme : |
bf5c74e7 JL |
3257 | |
3258 | @example | |
15f1bff4 JL |
3259 | $ guix build emacs --dry-run |
3260 | 112.3 Mo seraient téléchargés : | |
3261 | /gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3 | |
3262 | /gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d | |
3263 | /gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16 | |
3264 | /gnu/store/7zdhgp0n1518lvfn8mb96sxqfmvqrl7v-libxrender-0.9.7 | |
bf5c74e7 | 3265 | @dots{} |
bf5c74e7 JL |
3266 | @end example |
3267 | ||
15f1bff4 JL |
3268 | @noindent |
3269 | This indicates that substitutes from @code{@value{SUBSTITUTE-SERVER}} are | |
3270 | usable and will be downloaded, when possible, for future builds. | |
bf5c74e7 | 3271 | |
15f1bff4 JL |
3272 | @cindex substituts, comment les désactiver |
3273 | Le mécanisme de substitution peut être désactivé globalement en lançant | |
3274 | @code{guix-daemon} avec @code{--no-substitutes} (@pxref{Invoquer guix-daemon}). Il peut aussi être désactivé temporairement en passant | |
3275 | l'option @code{--no-substitutes} à @command{guix package}, @command{guix | |
3276 | build} et aux autres outils en ligne de commande. | |
3277 | ||
3278 | @node Authentification des substituts | |
3279 | @subsection Authentification des substituts | |
3280 | ||
3281 | @cindex signatures numériques | |
3282 | Guix détecte et lève une erreur lorsqu'il essaye d'utiliser un substituts | |
3283 | qui a été modifié. De même, il ignore les substituts qui ne sont pas signés | |
3284 | ou qui ne sont pas signés par l'une des clefs listés dans l'ACL. | |
3285 | ||
3286 | Il y a une exception cependant : si un serveur non autorisé fournit des | |
3287 | substituts qui sont @emph{identiques bit-à-bit} à ceux fournis par un | |
3288 | serveur autorisé, alors le serveur non autorisé devient disponible pour les | |
3289 | téléchargements. Par exemple en supposant qu'on a choisi deux serveurs de | |
3290 | substituts avec cette option : | |
bf5c74e7 JL |
3291 | |
3292 | @example | |
15f1bff4 | 3293 | --substitute-urls="https://a.example.org https://b.example.org" |
bf5c74e7 JL |
3294 | @end example |
3295 | ||
3296 | @noindent | |
15f1bff4 JL |
3297 | @cindex constructions reproductibles |
3298 | Si l'ACL contient uniquement la clef de @code{b.example.org}, et si | |
3299 | @code{a.example.org} sert @emph{exactement les mêmes} substituts, alors Guix | |
3300 | téléchargera les substituts de @code{a.example.org} parce qu'il vient en | |
3301 | premier dans la liste et peut être considéré comme un miroir de | |
3302 | @code{b.example.org}. En pratique, des machines de constructions produisent | |
3303 | souvent les mêmes binaires grâce à des construction reproductibles au bit | |
3304 | près (voir plus bas). | |
bf5c74e7 | 3305 | |
15f1bff4 JL |
3306 | Lorsque vous utilisez HTTPS, le certificat X.509 du serveur n'est @emph{pas} |
3307 | validé (en d'autre termes, le serveur n'est pas authentifié), contrairement | |
3308 | à ce que des clients HTTPS comme des navigateurs web font habituellement. | |
3309 | Cela est dû au fait que Guix authentifie les informations sur les substituts | |
3310 | eux-mêmes, comme expliqué plus haut, ce dont on se soucie réellement (alors | |
3311 | que les certificats X.509 authentifie la relation entre nom de domaine et | |
3312 | clef publique). | |
2cf2c778 | 3313 | |
15f1bff4 JL |
3314 | @node Paramètres de serveur mandataire |
3315 | @subsection Paramètres de serveur mandataire | |
bf5c74e7 | 3316 | |
15f1bff4 JL |
3317 | @vindex http_proxy |
3318 | Les substituts sont téléchargés par HTTP ou HTTPS. La variable | |
3319 | d'environnement @code{http_proxy} peut être initialisée dans l'environnement | |
3320 | de @command{guix-daemon} et est respectée pour le téléchargement des | |
3321 | substituts. Remarquez que la valeur de @code{http_proxy} dans | |
3322 | l'environnement où tournent @command{guix build}, @command{guix package} et | |
3323 | les autres clients n'a @emph{absolument aucun effet}. | |
bf5c74e7 | 3324 | |
15f1bff4 JL |
3325 | @node Échec de substitution |
3326 | @subsection Échec de substitution | |
3cacfa9e | 3327 | |
15f1bff4 JL |
3328 | Même lorsqu'un substitut pour une dérivation est disponible, la substitution |
3329 | échoue parfois. Cela peut arriver pour plusieurs raisons : le serveur de | |
3330 | substitut peut être hors ligne, le substitut a récemment été supprimé du | |
3331 | serveur, la connexion peut avoir été interrompue, etc. | |
3cacfa9e | 3332 | |
15f1bff4 JL |
3333 | Lorsque les substituts sont activés et qu'un substitut pour une dérivation |
3334 | est disponible, mais que la tentative de substitution échoue, Guix essaiera | |
3335 | de construire la dérivation localement si @code{--fallback} a été passé en | |
3336 | argument (@pxref{option de repli,, common build option @code{--fallback}}). | |
3337 | Plus spécifiquement, si cet option n'a pas été passée en argument, alors | |
3338 | aucune construction locale n'est effectuée et la dérivation est considérée | |
3339 | comme étant en échec. Cependant, si @code{--fallback} est passé en argument, | |
3340 | alors Guix essaiera de construire la dérivation localement et l'échec ou le | |
3341 | succès de la dérivation dépend de l'échec ou du succès de la construction | |
3342 | locale. Remarquez que lorsque les substituts sont désactivés ou qu'aucun | |
3343 | substitut n'est disponible pour la dérivation en question, une construction | |
3344 | locale sera @emph{toujours} effectuée, indépendamment du fait que l'argument | |
3345 | @code{--fallback} ait été ou non passé. | |
3cacfa9e | 3346 | |
15f1bff4 JL |
3347 | Pour se donner une idée du nombre de substituts disponibles maintenant, vous |
3348 | pouvez essayer de lancer la commande @command{guix weather} (@pxref{Invoquer guix weather}). Cette command fournit des statistiques sur les substituts | |
3349 | fournis par un serveur. | |
bf5c74e7 | 3350 | |
15f1bff4 JL |
3351 | @node De la confiance en des binaires |
3352 | @subsection De la confiance en des binaires | |
bf5c74e7 | 3353 | |
15f1bff4 JL |
3354 | @cindex confiance, en des binaires pré-construits |
3355 | Today, each individual's control over their own computing is at the mercy of | |
3356 | institutions, corporations, and groups with enough power and determination | |
3357 | to subvert the computing infrastructure and exploit its weaknesses. While | |
3358 | using @code{@value{SUBSTITUTE-SERVER}} substitutes can be convenient, we | |
3359 | encourage users to also build on their own, or even run their own build | |
3360 | farm, such that @code{@value{SUBSTITUTE-SERVER}} is less of an interesting | |
3361 | target. One way to help is by publishing the software you build using | |
3362 | @command{guix publish} so that others have one more choice of server to | |
3363 | download substitutes from (@pxref{Invoquer guix publish}). | |
bf5c74e7 | 3364 | |
15f1bff4 JL |
3365 | Guix possède les fondations pour maximiser la reproductibilité logicielle |
3366 | (@pxref{Fonctionnalités}). Dans la plupart des cas, des constructions | |
3367 | indépendantes d'un paquet donnée ou d'une dérivation devrait donner des | |
3368 | résultats identiques au bit près. Ainsi, à travers un ensemble de | |
3369 | constructions de paquets indépendantes il est possible de renforcer | |
3370 | l'intégrité du système. La commande @command{guix challenge} a pour but | |
3371 | d'aider les utilisateurs à tester les serveurs de substituts et à aider les | |
3372 | développeurs à trouver les constructions de paquets non-déterministes | |
3373 | (@pxref{Invoquer guix challenge}). De même, l'option @option{--check} de | |
3374 | @command{guix build} permet aux utilisateurs de vérifier si les substituts | |
3375 | précédemment installés sont authentiques en les reconstruisant localement | |
3376 | (@pxref{vérification de la construction, @command{guix build --check}}). | |
bf5c74e7 | 3377 | |
15f1bff4 JL |
3378 | Dans le futur, nous aimerions que Guix puisse publier et recevoir des |
3379 | binaires d'autres utilisateurs, d'une manière pair-à-pair. Si vous voulez | |
3380 | discuter de ce projet, rejoignez-nous sur @email{guix-devel@@gnu.org}. | |
bf5c74e7 | 3381 | |
15f1bff4 JL |
3382 | @node Des paquets avec plusieurs résultats |
3383 | @section Des paquets avec plusieurs résultats | |
3cacfa9e | 3384 | |
15f1bff4 JL |
3385 | @cindex paquets avec plusieurs résultats |
3386 | @cindex sorties de paquets | |
3387 | @cindex sorties | |
bf5c74e7 | 3388 | |
15f1bff4 JL |
3389 | Souvent, les paquets définis dans Guix ont une seule @dfn{sortie} — |
3390 | c.-à-d.@: que le paquet source conduit à exactement un répertoire dans le | |
3391 | dépôt. Lorsque vous lancez @command{guix package -i glibc}, vous installez | |
3392 | la sortie par défaut du paquet GNU libc ; la sortie par défaut est appelée | |
3393 | @code{out} mais son nom peut être omis comme le montre cette commande. Dans | |
3394 | ce cas particuliers, la sortie par défaut de @code{glibc} contient tous les | |
3395 | fichiers d'en-tête C, les bibliothèques partagées, les bibliothèques | |
3396 | statiques, la documentation Info et les autres fichiers de support. | |
3397 | ||
3398 | Parfois il est plus approprié de séparer les divers types de fichiers | |
3399 | produits par un même paquet source en plusieurs sorties. Par exemple, la | |
3400 | bibliothèque C GLib (utilisée par GTK+ et des paquets associés) installe | |
3401 | plus de 20 Mo de documentation de référence dans des pages HTML. Pour | |
3402 | préserver l'espace disque des utilisateurs qui n'en ont pas besoin, la | |
3403 | documentation va dans une sortie séparée nommée @code{doc}. Pour installer | |
3404 | la sortie principale de GLib, qui contient tout sauf la documentation, on | |
3405 | devrait lancer : | |
3cacfa9e LC |
3406 | |
3407 | @example | |
15f1bff4 | 3408 | guix package -i glib |
3cacfa9e LC |
3409 | @end example |
3410 | ||
15f1bff4 JL |
3411 | @cindex documentation |
3412 | La commande pour installer la documentation est : | |
3cacfa9e LC |
3413 | |
3414 | @example | |
15f1bff4 | 3415 | guix package -i glib:doc |
3cacfa9e LC |
3416 | @end example |
3417 | ||
15f1bff4 JL |
3418 | Certains paquets installent des programmes avec des « empreintes dépendances |
3419 | » différentes. Par exemple le paquet WordNet installe à la fois les outils | |
3420 | en ligne de commande et les interfaces graphiques (GUI). La première ne | |
3421 | dépend que de la bibliothèque C, alors que cette dernière dépend de Tcl/Tk | |
3422 | et des bibliothèques X sous-jacentes. Dans ce cas, nous laissons les outils | |
3423 | en ligne de commande dans la sortie par défaut et l'interface graphique dans | |
3424 | une sortie séparée. Cela permet aux utilisateurs qui n'ont pas besoin | |
3425 | d'interface graphique de gagner de la place. La commande @command{guix | |
3426 | size} peut aider à trouver ces situations (@pxref{Invoquer guix size}). @command{guix graph} peut aussi être utile (@pxref{Invoquer guix graph}). | |
2cf2c778 | 3427 | |
15f1bff4 JL |
3428 | Il y a plusieurs paquets à sorties multiples dans la distribution GNU. |
3429 | D'autres noms de sorties conventionnels sont @code{lib} pour les | |
3430 | bibliothèques et éventuellement les fichiers d'en-tête, @code{bin} pour les | |
3431 | programmes indépendants et @code{debug} pour les informations de débogage | |
3432 | (@pxref{Installer les fichiers de débogage}). Les sorties d'un paquet sont listés | |
3433 | dans la troisième colonne de la sortie de @command{guix package | |
3434 | --list-available} (@pxref{Invoquer guix package}). | |
3cacfa9e | 3435 | |
bf5c74e7 | 3436 | |
15f1bff4 JL |
3437 | @node Invoquer guix gc |
3438 | @section Invoquer @command{guix gc} | |
bf5c74e7 | 3439 | |
15f1bff4 JL |
3440 | @cindex ramasse-miettes |
3441 | @cindex espace disque | |
3442 | Les paquets qui sont installés mais pas utilisés peuvent être @dfn{glanés}. | |
3443 | La commande @command{guix gc} permet aux utilisateurs de lancer | |
3444 | explicitement le ramasse-miettes pour récupérer de l'espace dans le | |
3445 | répertoire @file{/gnu/store}. C'est la @emph{seule} manière de supprimer | |
3446 | des fichiers de @file{/gnu/store} — supprimer des fichiers ou des | |
3447 | répertoires à la main peut le casser de manière impossible à réparer ! | |
bf5c74e7 | 3448 | |
15f1bff4 JL |
3449 | @cindex racines du GC |
3450 | @cindex racines du ramasse-miettes | |
3451 | Le ramasse-miettes a un ensemble de @dfn{racines} connues : tout fichier | |
3452 | dans @file{/gnu/store} atteignable depuis une racine est considéré comme | |
3453 | @dfn{utilisé} et ne peut pas être supprimé ; tous les autres fichiers sont | |
3454 | considérés comme @dfn{inutilisés} et peuvent être supprimés. L'ensemble des | |
3455 | racines du ramasse-miettes (ou « racines du GC » pour faire court) inclue | |
3456 | les profils par défaut des utilisateurs ; par défaut les liens symboliques | |
3457 | sous @file{/var/guix/gcroots} représentent ces racines du GC. De nouvelles | |
3458 | racines du GC peuvent être ajoutées avec la @command{guix build -- root} par | |
3459 | exemple (@pxref{Invoquer guix build}). | |
bf5c74e7 | 3460 | |
15f1bff4 JL |
3461 | Avant de lancer @code{guix gc --collect-garbage} pour faire de la place, |
3462 | c'est souvent utile de supprimer les anciennes génération des profils | |
3463 | utilisateurs ; de cette façon les anciennes constructions de paquets | |
3464 | référencées par ces générations peuvent être glanées. Cela se fait en | |
3465 | lançant @code{guix package --delete-generations} (@pxref{Invoquer guix package}). | |
bf5c74e7 | 3466 | |
15f1bff4 JL |
3467 | Nous recommandons de lancer le ramasse-miettes régulièrement ou lorsque vous |
3468 | avez besoin d'espace disque. Par exemple pour garantir qu'au moins | |
3469 | 5@tie{}Go d'espace reste libre sur votre disque, lancez simplement : | |
bf5c74e7 | 3470 | |
15f1bff4 JL |
3471 | @example |
3472 | guix gc -F 5G | |
3473 | @end example | |
bf5c74e7 | 3474 | |
15f1bff4 JL |
3475 | It is perfectly safe to run as a non-interactive periodic job |
3476 | (@pxref{Exécution de tâches planifiées}, for how to set up such a job). Running | |
3477 | @command{guix gc} with no arguments will collect as much garbage as it can, | |
3478 | but that is often inconvenient: you may find yourself having to rebuild or | |
3479 | re-download software that is ``dead'' from the GC viewpoint but that is | |
3480 | necessary to build other pieces of software---e.g., the compiler tool chain. | |
bf5c74e7 | 3481 | |
15f1bff4 JL |
3482 | La command @command{guix gc} a trois modes d'opération : il peut être |
3483 | utilisé pour glaner des fichiers inutilisés (par défaut), pour supprimer des | |
3484 | fichiers spécifiques (l'option @code{--delete}), pour afficher des | |
3485 | informations sur le ramasse-miettes ou pour des requêtes plus avancées. Les | |
3486 | options du ramasse-miettes sont : | |
bf5c74e7 | 3487 | |
15f1bff4 JL |
3488 | @table @code |
3489 | @item --collect-garbage[=@var{min}] | |
3490 | @itemx -C [@var{min}] | |
3491 | Ramasse les miettes — c.-à-d.@: les fichiers inaccessibles de | |
3492 | @file{/gnu/store} et ses sous-répertoires. C'est l'opération par défaut | |
3493 | lorsqu'aucune option n'est spécifiée. | |
bf5c74e7 | 3494 | |
15f1bff4 JL |
3495 | Lorsque @var{min} est donné, s'arrêter une fois que @var{min} octets ont été |
3496 | collectés. @var{min} pour être un nombre d'octets ou inclure un suffixe | |
3497 | d'unité, comme @code{MiB} pour mébioctet et @code{GB} pour gigaoctet | |
3498 | (@pxref{Block size, size specifications,, coreutils, GNU Coreutils}). | |
bf5c74e7 | 3499 | |
15f1bff4 | 3500 | Lorsque @var{min} est omis, tout glaner. |
bf5c74e7 | 3501 | |
15f1bff4 JL |
3502 | @item --free-space=@var{libre} |
3503 | @itemx -F @var{libre} | |
3504 | Glaner jusqu'à ce que @var{libre} espace soit disponible dans | |
3505 | @file{/gnu/store} si possible ; @var{libre} est une quantité de stockage | |
3506 | comme @code{500MiB} comme décrit ci-dessus. | |
bf5c74e7 | 3507 | |
15f1bff4 JL |
3508 | Lorsque @var{libre} ou plus est disponible dans @file{/gnu/store} ne rien |
3509 | faire et s'arrêter immédiatement. | |
bf5c74e7 | 3510 | |
15f1bff4 JL |
3511 | @item --delete |
3512 | @itemx -d | |
3513 | Essayer de supprimer tous les fichiers et les répertoires du dépôt spécifiés | |
3514 | en argument. Cela échoue si certains des fichiers ne sont pas dans le dépôt | |
3515 | ou s'ils sont toujours utilisés. | |
bf5c74e7 | 3516 | |
15f1bff4 JL |
3517 | @item --list-failures |
3518 | Lister les éléments du dépôt qui correspondent à des échecs de construction | |
bf5c74e7 | 3519 | |
15f1bff4 JL |
3520 | Cela n'affiche rien à moins que le démon n'ait été démarré avec |
3521 | @option{--cache-failures} (@pxref{Invoquer guix-daemon, | |
3522 | @option{--cache-failures}}). | |
bf5c74e7 | 3523 | |
15f1bff4 JL |
3524 | @item --clear-failures |
3525 | Supprimer les éléments du dépôt spécifiés du cache des constructions | |
3526 | échouées. | |
3cacfa9e | 3527 | |
15f1bff4 JL |
3528 | De nouveau, cette option ne fait de sens que lorsque le démon est démarré |
3529 | avec @option{--cache-failures}. Autrement elle ne fait rien. | |
bf5c74e7 | 3530 | |
15f1bff4 JL |
3531 | @item --list-dead |
3532 | Montrer la liste des fichiers et des répertoires inutilisés encore présents | |
3533 | dans le dépôt — c.-à-d.@: les fichiers et les répertoires qui ne sont plus | |
3534 | atteignables par aucune racine. | |
bf5c74e7 | 3535 | |
15f1bff4 JL |
3536 | @item --list-live |
3537 | Montrer la liste des fichiers et des répertoires du dépôt utilisés. | |
bf5c74e7 | 3538 | |
15f1bff4 | 3539 | @end table |
bf5c74e7 | 3540 | |
15f1bff4 JL |
3541 | En plus, les références entre les fichiers existants du dépôt peuvent être |
3542 | demandés : | |
bf5c74e7 | 3543 | |
15f1bff4 | 3544 | @table @code |
bf5c74e7 | 3545 | |
15f1bff4 JL |
3546 | @item --references |
3547 | @itemx --referrers | |
3548 | @cindex dépendances des paquets | |
3549 | Lister les références (respectivement les référents) des fichiers du dépôt | |
3550 | en argument. | |
bf5c74e7 | 3551 | |
15f1bff4 JL |
3552 | @item --requisites |
3553 | @itemx -R | |
3554 | @cindex closure | |
3555 | Lister les prérequis des fichiers du dépôt passés en argument. Les | |
3556 | prérequis sont le fichier du dépôt lui-même, leur références et les | |
3557 | références de ces références, récursivement. En d'autre termes, la liste | |
3558 | retournée est la @dfn{closure transitive} des fichiers du dépôt. | |
bf5c74e7 | 3559 | |
15f1bff4 JL |
3560 | @xref{Invoquer guix size} pour un outil pour surveiller la taille de la |
3561 | closure d'un élément. @xref{Invoquer guix graph} pour un outil pour | |
3562 | visualiser le graphe des références. | |
3563 | ||
3564 | @item --derivers | |
3565 | @cindex dérivation | |
3566 | Renvoie les dérivations menant aux éléments du dépôt donnés | |
3567 | (@pxref{Dérivations}). | |
3568 | ||
3569 | Par exemple cette commande : | |
bf5c74e7 JL |
3570 | |
3571 | @example | |
15f1bff4 | 3572 | guix gc --derivers `guix package -I ^emacs$ | cut -f4` |
bf5c74e7 JL |
3573 | @end example |
3574 | ||
3575 | @noindent | |
15f1bff4 JL |
3576 | renvoie les fichiers @file{.drv} menant au paquet @code{emacs} installé dans |
3577 | votre profil. | |
3cacfa9e | 3578 | |
15f1bff4 JL |
3579 | Remarquez qu'il peut n'y avoir aucun fichier @file{.drv} par exemple quand |
3580 | ces fichiers ont été glanés. Il peut aussi y avoir plus d'un fichier | |
3581 | @file{.drv} correspondant à cause de dérivations à sortie fixées. | |
3582 | @end table | |
bf5c74e7 | 3583 | |
15f1bff4 JL |
3584 | Enfin, les options suivantes vous permettent de vérifier l'intégrité du |
3585 | dépôt et de contrôler l'utilisation du disque. | |
bf5c74e7 | 3586 | |
15f1bff4 | 3587 | @table @option |
bf5c74e7 | 3588 | |
15f1bff4 JL |
3589 | @item --verify[=@var{options}] |
3590 | @cindex intégrité, du dépôt | |
3591 | @cindex vérification d'intégrité | |
3592 | Vérifier l'intégrité du dépôt. | |
bf5c74e7 | 3593 | |
15f1bff4 JL |
3594 | Par défaut, s'assurer que tous les éléments du dépôt marqués comme valides |
3595 | dans la base de données du démon existent bien dans @file{/gnu/store}. | |
bf5c74e7 | 3596 | |
15f1bff4 JL |
3597 | Lorsqu'elle est fournie, l'@var{option} doit être une liste séparée par des |
3598 | virgule de l'un ou plus parmi @code{contents} et @code{repair}. | |
bf5c74e7 | 3599 | |
15f1bff4 JL |
3600 | Lorsque vous passez @option{--verify=contents}, le démon calcul le hash du |
3601 | contenu de chaque élément du dépôt et le compare au hash de sa base de | |
3602 | données. Les différences de hash sont rapportées comme des corruptions de | |
3603 | données. Comme elle traverse @emph{tous les fichiers du dépôt}, cette | |
3604 | commande peut prendre très longtemps pour terminer, surtout sur un système | |
3605 | avec un disque lent. | |
bf5c74e7 | 3606 | |
15f1bff4 JL |
3607 | @cindex réparer le dépôt |
3608 | @cindex corruption, récupérer de | |
3609 | Utiliser @option{--verify=repair} ou @option{--verify=contents,repair} fait | |
3610 | que le démon essaie de réparer les objets du dépôt corrompus en récupérant | |
3611 | leurs substituts (@pxref{Substituts}). Comme la réparation n'est pas | |
3612 | atomique et donc potentiellement dangereuse, elle n'est disponible que pour | |
3613 | l'administrateur système. Une alternative plus légère lorsque vous | |
3614 | connaissez exactement quelle entrée est corrompue consiste à lancer | |
3615 | @command{guix build --repair} (@pxref{Invoquer guix build}). | |
3cacfa9e | 3616 | |
15f1bff4 JL |
3617 | @item --optimize |
3618 | @cindex déduplication | |
3619 | Optimiser le dépôt en liant en dur les fichiers identiques — c'est la | |
3620 | @dfn{déduplication}. | |
3cacfa9e | 3621 | |
15f1bff4 JL |
3622 | Le démon effectue une déduplication à chaque construction réussie ou import |
3623 | d'archive à moins qu'il n'ait été démarré avec | |
3624 | @code{--disable-deduplication} (@pxref{Invoquer guix-daemon, | |
3625 | @code{--disable-deduplication}}). Ainsi, cette option est surtout utile | |
3626 | lorsque le démon tourne avec @code{--disable-deduplication}. | |
bf5c74e7 | 3627 | |
15f1bff4 | 3628 | @end table |
3cacfa9e | 3629 | |
15f1bff4 JL |
3630 | @node Invoquer guix pull |
3631 | @section Invoquer @command{guix pull} | |
3cacfa9e | 3632 | |
15f1bff4 JL |
3633 | @cindex mettre à niveau Guix |
3634 | @cindex mettre à jour Guix | |
3635 | @cindex @command{guix pull} | |
3636 | @cindex pull | |
3637 | Les paquets sont installés ou mis à jour vers la dernière version disponible | |
3638 | dans la distribution actuellement disponible sur votre machine locale. Pour | |
3639 | mettre à jour cette distribution, en même temps que les outils Guix, vous | |
3640 | devez lancer @command{guix pull} ; la commande télécharge le dernier code | |
3641 | source de Guix et des descriptions de paquets et le déploie. Le code source | |
3642 | est téléchargé depuis un dépôt @uref{https://git-scm.com, Git}, par défaut | |
3643 | le dépôt officiel de GNU@tie{}Guix, bien que cela puisse être personnalisé. | |
3644 | ||
3645 | À la fin, @command{guix package} utilisera les paquets et les versions des | |
3646 | paquets de la copie de Guix tout juste récupérée. Non seulement ça, mais | |
3647 | toutes les commandes Guix et les modules Scheme seront aussi récupérés | |
3648 | depuis la dernière version. Les nouvelles sous-commandes de @command{guix} | |
3649 | ajoutés par la mise à jour sont aussi maintenant disponibles. | |
bf5c74e7 | 3650 | |
15f1bff4 JL |
3651 | Chaque utilisateur peut mettre à jour sa copie de Guix avec @command{guix |
3652 | pull} et l'effet est limité à l'utilisateur qui a lancé @command{guix | |
3653 | pull}. Par exemple, lorsque l'utilisateur @code{root} lance @command{guix | |
3654 | pull}, cela n'a pas d'effet sur la version de Guix que vois @code{alice} et | |
3655 | vice-versa | |
3656 | ||
3657 | Le résultat après avoir lancé @command{guix pull} est un @dfn{profil} | |
3658 | disponible sous @file{~/.config/guix/current} contenant la dernière version | |
3659 | de Guix. Ainsi, assurez-vous de l'ajouter au début de votre chemin de | |
3660 | recherche pour que vous utilisiez la dernière version. Le même conseil | |
3661 | s'applique au manuel Info (@pxref{Documentation}) : | |
bf5c74e7 JL |
3662 | |
3663 | @example | |
15f1bff4 JL |
3664 | export PATH="$HOME/.config/guix/current/bin:$PATH" |
3665 | export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH" | |
bf5c74e7 JL |
3666 | @end example |
3667 | ||
15f1bff4 JL |
3668 | L'option @code{--list-generations} ou @code{-l} liste les anciennes |
3669 | générations produites par @command{guix pull}, avec des détails sur leur | |
3670 | origine : | |
bf5c74e7 | 3671 | |
15f1bff4 JL |
3672 | @example |
3673 | $ guix pull -l | |
3674 | Génération 1 10 juin 2018 00:18:18 | |
3675 | guix 65956ad | |
3676 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | |
3677 | branche : origin/master | |
3678 | commit : 65956ad3526ba09e1f7a40722c96c6ef7c0936fe | |
bf5c74e7 | 3679 | |
15f1bff4 JL |
3680 | Génération 2 11 juin 2018 11:02:49 |
3681 | guix e0cc7f6 | |
3682 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | |
3683 | branche : origin/master | |
3684 | commit : e0cc7f669bec22c37481dd03a7941c7d11a64f1d | |
3685 | 2 nouveaux paquets : keepalived, libnfnetlink | |
3686 | 6 paquets mis à jour : emacs-nix-mode@@2.0.4, | |
3687 | guile2.0-guix@@0.14.0-12.77a1aac, guix@@0.14.0-12.77a1aac, | |
3688 | heimdal@@7.5.0, milkytracker@@1.02.00, nix@@2.0.4 | |
bf5c74e7 | 3689 | |
15f1bff4 JL |
3690 | Génération 3 13 juin 2018 23:31:07 (actuelle) |
3691 | guix 844cc1c | |
3692 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | |
3693 | branche : origin/master | |
3694 | commit : 844cc1c8f394f03b404c5bb3aee086922373490c | |
3695 | 28 nouveaux paquets : emacs-helm-ls-git, emacs-helm-mu, @dots{} | |
3696 | 69 paquets mis à jour : borg@@1.1.6, cheese@@3.28.0, @dots{} | |
3697 | @end example | |
bf5c74e7 | 3698 | |
15f1bff4 JL |
3699 | @ref{Invoquer guix describe, @command{guix describe}} pour d'autres manières |
3700 | de décrire le statut actuel de Guix. | |
3cacfa9e | 3701 | |
15f1bff4 JL |
3702 | Ce profil @code{~/.config/guix/current} fonctionne comme les autres profils |
3703 | créés par @command{guix package} (@pxref{Invoquer guix package}). | |
3704 | C'est-à-dire que vous pouvez lister les générations, revenir en arrière à | |
3705 | une génération précédente — c.-à-d.@: la version de Guix précédente — etc : | |
3cacfa9e | 3706 | |
15f1bff4 JL |
3707 | @example |
3708 | $ guix package -p ~/.config/guix/current --roll-back | |
3709 | passé de la génération 3 à 2 | |
3710 | $ guix package -p ~/.config/guix/current --delete-generations=1 | |
3711 | suppression de /var/guix/profiles/per-user/charlie/current-guix-1-link | |
3712 | @end example | |
3cacfa9e | 3713 | |
15f1bff4 JL |
3714 | La commande @command{guix pull} est typiquement invoquée sans arguments mais |
3715 | il supporte les options suivantes : | |
bf5c74e7 | 3716 | |
15f1bff4 JL |
3717 | @table @code |
3718 | @item --url=@var{url} | |
3719 | @itemx --commit=@var{commit} | |
3720 | @itemx --branch=@var{branche} | |
3721 | Télécharger le code depuis l'@var{url} spécifié, au @var{commit} donné (un | |
3722 | commit Git valide représenté par une chaîne hexadécimale) ou à la branche | |
3723 | @var{branch}. | |
bf5c74e7 | 3724 | |
15f1bff4 JL |
3725 | @cindex @file{channels.scm}, fichier de configuration |
3726 | @cindex fichier de configuration pour les canaux | |
3727 | Ces options sont fournies pour votre confort, mais vous pouvez aussi | |
3728 | spécifier votre configuration dans le fichier | |
3729 | @file{~/.config/guix/channels.scm} ou en utilisant l'option | |
3730 | @option{--channels} (voir plus bas). | |
bf5c74e7 | 3731 | |
15f1bff4 JL |
3732 | @item --channels=@var{file} |
3733 | @itemx -C @var{file} | |
3734 | Lit la liste des canaux dans @var{file} plutôt que dans | |
3735 | @file{~/.config/guix/channels.scm}. @var{file} doit contenir un code Scheme | |
3736 | qui s'évalue en une liste d'objets de canaux. @xref{Canaux} pour plus | |
3737 | d'informations. | |
bf5c74e7 | 3738 | |
15f1bff4 JL |
3739 | @item --list-generations[=@var{motif}] |
3740 | @itemx -l [@var{motif}] | |
3741 | Liste toutes les générations de @file{~/.config/guix/current} ou, si | |
3742 | @var{motif} est fournit, le sous-ensemble des générations qui correspondent | |
3743 | à @var{motif}. La syntaxe de @var{motif} est la même qu'avec @code{guix | |
3744 | package --list-generations} (@pxref{Invoquer guix package}). | |
bf5c74e7 | 3745 | |
15f1bff4 JL |
3746 | @ref{Invoquer guix describe}, pour une manière d'afficher des informations |
3747 | sur la génération actuelle uniquement. | |
bf5c74e7 | 3748 | |
15f1bff4 JL |
3749 | @item --profile=@var{profil} |
3750 | @itemx -p @var{profil} | |
3751 | Utiliser le @var{profil} à la place de @file{~/.config/guix/current}. | |
3cacfa9e | 3752 | |
15f1bff4 JL |
3753 | @item --dry-run |
3754 | @itemx -n | |
3755 | Montrer quels commits des canaux seraient utilisés et ce qui serait | |
3756 | construit ou substitué mais ne pas le faire vraiment. | |
3cacfa9e | 3757 | |
15f1bff4 JL |
3758 | @item --system=@var{système} |
3759 | @itemx -s @var{système} | |
3760 | Tenter de construire pour le @var{système} — p.@: ex.@: @code{i686-linux} — | |
3761 | plutôt que pour le type de système de l'hôte de construction. | |
3cacfa9e | 3762 | |
15f1bff4 JL |
3763 | @item --verbose |
3764 | Produire une sortie verbeuse, en écrivant les journaux de construction sur | |
3765 | la sortie d'erreur standard. | |
bf5c74e7 | 3766 | |
15f1bff4 JL |
3767 | @item --bootstrap |
3768 | Utiliser le programme d'amorçage Guile pour construire la dernière version | |
3769 | de Guix. Cette option n'est utile que pour les développeurs de Guix. | |
3770 | @end table | |
bf5c74e7 | 3771 | |
15f1bff4 JL |
3772 | Le mécanisme de @dfn{canaux} vous permet de dire à @command{guix pull} quels |
3773 | répertoires et branches récupérer, ainsi que les dépôts | |
3774 | @emph{supplémentaires} contenant des modules de paquets qui devraient être | |
3775 | déployés. @xref{Canaux} pour plus d'information. | |
bf5c74e7 | 3776 | |
15f1bff4 JL |
3777 | En plus, @command{guix pull} supporte toutes les options de construction |
3778 | communes (@pxref{Options de construction communes}). | |
bf5c74e7 | 3779 | |
15f1bff4 JL |
3780 | @node Canaux |
3781 | @section Canaux | |
bf5c74e7 | 3782 | |
15f1bff4 JL |
3783 | @cindex canaux |
3784 | @cindex @file{channels.scm}, fichier de configuration | |
3785 | @cindex fichier de configuration pour les canaux | |
3786 | @cindex @command{guix pull}, fichier de configuration | |
3787 | @cindex configuration de @command{guix pull} | |
3788 | Guix et sa collection de paquets sont mis à jour en lançant @command{guix | |
3789 | pull} (@pxref{Invoquer guix pull}). Par défaut @command{guix pull} | |
3790 | télécharge et déploie Guix lui-même depuis le dépôt officiel de | |
3791 | GNU@tie{}Guix. Cela peut être personnalisé en définissant des @dfn{canaux} | |
3792 | dans le fichier @file{~/.config/guix/channels.scm}. Un canal spécifie l'URL | |
3793 | et la branche d'un répertoire Git à déployer et on peut demander à | |
3794 | @command{guix pull} de récupérer un ou plusieurs canaux. En d'autres | |
3795 | termes, les canaux peuvent être utilisés pour personnaliser et pour | |
3796 | @emph{étendre} Guix, comme on le verra plus bas. | |
bf5c74e7 | 3797 | |
15f1bff4 | 3798 | @subsection Utiliser un canal Guix personnalisé |
bf5c74e7 | 3799 | |
15f1bff4 JL |
3800 | Le canal nommé @code{guix} spécifie où Guix lui-même — ses outils en ligne |
3801 | de commande ainsi que sa collection de paquets — sera téléchargé. Par | |
3802 | exemple, supposons que vous voulez effectuer les mises à jour depuis votre | |
3803 | propre copie du dépôt Guix sur @code{example.org}, et plus particulièrement | |
3804 | depuis la branche @code{super-hacks}. Vous pouvez écrire cette | |
3805 | spécification dans @code{~/.config/guix/channels.scm} : | |
3cacfa9e | 3806 | |
15f1bff4 JL |
3807 | @lisp |
3808 | ;; Dit à « guix pull » d'utiliser mon propre dépôt. | |
3809 | (list (channel | |
3810 | (name 'guix) | |
3811 | (url "https://example.org/my-guix.git") | |
3812 | (branch "super-hacks"))) | |
3813 | @end lisp | |
bf5c74e7 | 3814 | |
15f1bff4 JL |
3815 | @noindent |
3816 | Maintenant, @command{guix pull} récupérera le code depuis la branche | |
3817 | @code{super-hacks} du dépôt sur @code{example.org}. | |
bf5c74e7 | 3818 | |
15f1bff4 | 3819 | @subsection Spécifier des canaux supplémentaires |
3cacfa9e | 3820 | |
15f1bff4 JL |
3821 | @cindex étendre la collection de paquets (canaux) |
3822 | @cindex paquets personnels (canaux) | |
3823 | @cindex canaux, pour des paquets personnels | |
3824 | Vous pouvez aussi spécifier des @emph{canaux supplémentaires} à récupérer. | |
3825 | Disons que vous avez un ensemble de paquets personnels ou de variantes | |
3826 | personnalisées qu'il ne vaudrait pas le coup de contribuer au projet Guix, | |
3827 | mais que vous voudriez pouvoir utiliser de manière transparente sur la ligne | |
3828 | de commande. Vous écririez d'abord des modules contenant ces définitions de | |
3829 | paquets (@pxref{Modules de paquets}), en les maintenant dans un dépôt Git, puis | |
3830 | vous ou n'importe qui d'autre pourrait l'utiliser comme un canal | |
3831 | supplémentaire où trouver ces paquets. Sympa, non ? | |
3cacfa9e | 3832 | |
15f1bff4 JL |
3833 | @c What follows stems from discussions at |
3834 | @c <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22629#134> as well as | |
3835 | @c earlier discussions on guix-devel@gnu.org. | |
3836 | @quotation Attention | |
3837 | Avant que vous, cher utilisateur, ne vous exclamiez « Oh mais c'est | |
3838 | @emph{super génial} ! » et que vous ne publiez vos canaux personnels | |
3839 | publiquement, nous voudrions vous donner quelques avertissements : | |
bf5c74e7 | 3840 | |
15f1bff4 JL |
3841 | @itemize |
3842 | @item | |
3843 | Avant de publier un canal, envisagez de contribuer vos définitions de | |
3844 | paquets dans Guix (@pxref{Contribuer}). Guix en tant que projet est | |
3845 | ouvert à tous les logiciels libres de toutes sortes, et les paquets dans | |
3846 | Guix sont déjà disponibles à tous les utilisateurs de Guix et bénéficient | |
3847 | des processus d'assurance qualité du projet. | |
3cacfa9e | 3848 | |
15f1bff4 JL |
3849 | @item |
3850 | Lorsque vous maintenez des définitions de paquets en dehors de Guix, nous, | |
3851 | les développeurs de Guix, considérons que @emph{la charge de la | |
3852 | compatibilité vous incombe}. Rappelez-vous que les modules de paquets et | |
3853 | les définitions de paquets ne sont que du code Scheme qui utilise diverses | |
3854 | interfaces de programmation (API). Nous souhaitons rester libres de changer | |
3855 | ces API pour continuer à améliorer Guix, éventuellement d'une manière qui | |
3856 | casse votre canal. Nous ne changeons jamais l'API gratuitement, mais nous | |
3857 | ne nous engageons @emph{pas} à geler les API non plus. | |
3cacfa9e | 3858 | |
15f1bff4 JL |
3859 | @item |
3860 | Corollaire : si vous utilisez un canal externe et que le canal est cassé, | |
3861 | merci de @emph{rapporter le problème à l'auteur du canal}, pas au projet | |
3862 | Guix. | |
3863 | @end itemize | |
3cacfa9e | 3864 | |
15f1bff4 JL |
3865 | Vous avez été prévenus ! Maintenant, nous pensons que des canaux externes |
3866 | sont une manière pratique d'exercer votre liberté pour augmenter la | |
3867 | collection de paquets de Guix et de partager vos améliorations, qui sont les | |
3868 | principes de bases du @uref{https://www.gnu.org/philosophy/free-sw.html, | |
3869 | logiciel libre}. Contactez-nous par courriel sur | |
3870 | @email{guix-devel@@gnu.org} si vous souhaitez discuter à ce propos. | |
3871 | @end quotation | |
3cacfa9e | 3872 | |
15f1bff4 JL |
3873 | To use a channel, write @code{~/.config/guix/channels.scm} to instruct |
3874 | @command{guix pull} to pull from it @emph{in addition} to the default Guix | |
3875 | channel(s): | |
bf5c74e7 | 3876 | |
15f1bff4 JL |
3877 | @vindex %default-channels |
3878 | @lisp | |
3879 | ;; Ajouter mes paquets personnels à ceux fournis par Guix. | |
3880 | (cons (channel | |
3881 | (name 'my-personal-packages) | |
3882 | (url "https://example.org/personal-packages.git")) | |
3883 | %default-channels) | |
3884 | @end lisp | |
bf5c74e7 JL |
3885 | |
3886 | @noindent | |
15f1bff4 JL |
3887 | Note that the snippet above is (as always!)@: Scheme code; we use |
3888 | @code{cons} to add a channel the list of channels that the variable | |
3889 | @code{%default-channels} is bound to (@pxref{Pairs, @code{cons} and lists,, | |
3890 | guile, GNU Guile Reference Manual}). With this file in place, @command{guix | |
3891 | pull} builds not only Guix but also the package modules from your own | |
3892 | repository. The result in @file{~/.config/guix/current} is the union of | |
3893 | Guix with your own package modules: | |
3cacfa9e | 3894 | |
15f1bff4 JL |
3895 | @example |
3896 | $ guix pull --list-generations | |
3897 | @dots{} | |
3898 | Génération 19 Aug 27 2018 16:20:48 | |
3899 | guix d894ab8 | |
3900 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | |
3901 | branche : master | |
3902 | commit : d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300 | |
3903 | my-personal-packages dd3df5e | |
3904 | URL du dépôt : https://example.org/personal-packages.git | |
3905 | branche : master | |
3906 | commit : dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb | |
3907 | 11 nouveaux paquets : my-gimp, my-emacs-with-cool-features, @dots{} | |
3908 | 4 paquets mis à jour : emacs-racket-mode@@0.0.2-2.1b78827, @dots{} | |
3909 | @end example | |
bf5c74e7 JL |
3910 | |
3911 | @noindent | |
15f1bff4 JL |
3912 | La sortie de @command{guix pull} ci-dessus montre que la génération@tie{}19 |
3913 | contient aussi bien Guix que les paquets du canal | |
3914 | @code{my-personal-packages}. Parmi les nouveaux paquets et les paquets mis | |
3915 | à jour qui sont listés, certains comme @code{my-gimp} et | |
3916 | @code{my-emacs-with-cool-features} peuvent provenir de | |
3917 | @code{my-personal-packages}, tandis que d'autres viennent du canal par | |
3918 | défaut de Guix. | |
bf5c74e7 | 3919 | |
15f1bff4 JL |
3920 | To create a channel, create a Git repository containing your own package |
3921 | modules and make it available. The repository can contain anything, but a | |
3922 | useful channel will contain Guile modules that export packages. Once you | |
3923 | start using a channel, Guix will behave as if the root directory of that | |
3924 | channel's Git repository has been added to the Guile load path (@pxref{Load | |
3925 | Paths,,, guile, GNU Guile Reference Manual}). For example, if your channel | |
3926 | contains a file at @file{my-packages/my-tools.scm} that defines a Guile | |
3927 | module, then the module will be available under the name @code{(my-packages | |
3928 | my-tools)}, and you will be able to use it like any other module | |
3929 | (@pxref{Modules,,, guile, GNU Guile Reference Manual}). | |
bf5c74e7 | 3930 | |
15f1bff4 JL |
3931 | @cindex dependencies, channels |
3932 | @cindex meta-data, channels | |
3933 | @subsection Declaring Channel Dependencies | |
bf5c74e7 | 3934 | |
15f1bff4 JL |
3935 | Channel authors may decide to augment a package collection provided by other |
3936 | channels. They can declare their channel to be dependent on other channels | |
3937 | in a meta-data file @file{.guix-channel}, which is to be placed in the root | |
3938 | of the channel repository. | |
3cacfa9e | 3939 | |
15f1bff4 | 3940 | The meta-data file should contain a simple S-expression like this: |
3cacfa9e | 3941 | |
15f1bff4 JL |
3942 | @lisp |
3943 | (channel | |
3944 | (version 0) | |
3945 | (dependencies | |
3946 | (channel | |
3947 | (name some-collection) | |
3948 | (url "https://example.org/first-collection.git")) | |
3949 | (channel | |
3950 | (name some-other-collection) | |
3951 | (url "https://example.org/second-collection.git") | |
3952 | (branch "testing")))) | |
3953 | @end lisp | |
bf5c74e7 | 3954 | |
15f1bff4 JL |
3955 | In the above example this channel is declared to depend on two other |
3956 | channels, which will both be fetched automatically. The modules provided by | |
3957 | the channel will be compiled in an environment where the modules of all | |
3958 | these declared channels are available. | |
bf5c74e7 | 3959 | |
15f1bff4 JL |
3960 | For the sake of reliability and maintainability, you should avoid |
3961 | dependencies on channels that you don't control, and you should aim to keep | |
3962 | the number of dependencies to a minimum. | |
bf5c74e7 | 3963 | |
15f1bff4 | 3964 | @subsection Répliquer Guix |
bf5c74e7 | 3965 | |
15f1bff4 JL |
3966 | @cindex épinglage, canaux |
3967 | @cindex répliquer Guix | |
3968 | @cindex reproductibilité, de Guix | |
3969 | La sortie de @command{guix pull --list-generations} ci-dessus montre | |
3970 | précisément quels commits ont été utilisés pour construire cette instance de | |
3971 | Guix. Nous pouvons donc la répliquer, disons sur une autre machine, en | |
3972 | fournissant une spécification de canal dans | |
3973 | @file{~/.config/guix/channels.scm} qui est « épinglé » à ces commits : | |
bf5c74e7 | 3974 | |
15f1bff4 JL |
3975 | @lisp |
3976 | ;; Déployer des commits précis de mes canaux préférés. | |
3977 | (list (channel | |
3978 | (name 'guix) | |
3979 | (url "https://git.savannah.gnu.org/git/guix.git") | |
3980 | (commit "d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300")) | |
3981 | (channel | |
3982 | (name 'my-personal-packages) | |
3983 | (url "https://example.org/personal-packages.git") | |
3984 | (branch "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb"))) | |
3985 | @end lisp | |
bf5c74e7 | 3986 | |
15f1bff4 JL |
3987 | La commande @command{guix describe --format=channels} peut même générer |
3988 | cette liste de canaux directement (@pxref{Invoquer guix describe}). | |
bf5c74e7 | 3989 | |
15f1bff4 JL |
3990 | À ce moment les deux machines font tourner @emph{exactement le même Guix}, |
3991 | avec l'accès @emph{exactement aux même paquets}. La sortie de @command{guix | |
3992 | build gimp} sur une machine sera exactement la même, au bit près, que la | |
3993 | sortie de la même commande sur l'autre machine. Cela signifie aussi que les | |
3994 | deux machines ont accès à tous les codes sources de Guix, et transitivement, | |
3995 | à tous les codes sources de tous les paquets qu'il définit. | |
bf5c74e7 | 3996 | |
15f1bff4 JL |
3997 | Cela vous donne des super-pouvoirs, ce qui vous permet de suivre la |
3998 | provenance des artefacts binaires avec un grain très fin et de reproduire | |
3999 | les environnements logiciels à volonté — une sorte de capacité de « | |
4000 | méta-reproductibilité », si vous voulez. @xref{Inférieurs}, pour une autre | |
4001 | manière d'utiliser ces super-pouvoirs. | |
bf5c74e7 | 4002 | |
15f1bff4 JL |
4003 | @node Inférieurs |
4004 | @section Inférieurs | |
4005 | ||
4006 | @c TODO: Remove this once we're more confident about API stability. | |
4007 | @quotation Remarque | |
4008 | La fonctionnalité décrite ici est un « démonstrateur technique » à la | |
4009 | version @value{VERSION}. Ainsi, l'interface est sujette à changements. | |
4010 | @end quotation | |
3cacfa9e | 4011 | |
15f1bff4 JL |
4012 | @cindex inférieurs |
4013 | @cindex composition de révisions de Guix | |
4014 | Parfois vous pourriez avoir à mélanger des paquets de votre révision de Guix | |
4015 | avec des paquets disponibles dans une révision différente de Guix. Les | |
4016 | @dfn{inférieurs} de Guix vous permettent d'accomplir cette tâche en | |
4017 | composant différentes versions de Guix de manière arbitraire. | |
3cacfa9e | 4018 | |
15f1bff4 JL |
4019 | @cindex paquets inférieurs |
4020 | Techniquement, un « inférieur » est surtout un processus Guix séparé | |
4021 | connecté à votre processus Guix principal à travers un REPL (@pxref{Invoquer guix repl}). Le module @code{(guix inferior)} vous permet de créer des | |
4022 | inférieurs et de communiquer avec eux. Il fournit aussi une interface de | |
4023 | haut-niveau pour naviguer dans les paquets d'un inférieur — @dfn{des paquets | |
4024 | inférieurs} — et les manipuler. | |
bf5c74e7 | 4025 | |
15f1bff4 JL |
4026 | Lorsqu'on les combine avec des canaux (@pxref{Canaux}), les inférieurs |
4027 | fournissent une manière simple d'interagir avec un révision de Guix | |
4028 | séparée. Par exemple, disons que vous souhaitiez installer dans votre | |
4029 | profil le paquet guile actuel, avec le @code{guile-json} d'une ancienne | |
4030 | révision de Guix — peut-être parce que la nouvelle version de | |
4031 | @code{guile-json} a une API incompatible et que vous voulez lancer du code | |
4032 | avec l'ancienne API. Pour cela, vous pourriez écrire un manifeste à | |
4033 | utiliser avec @code{guix package --manifest} (@pxref{Invoquer guix package}) | |
4034 | ; dans ce manifeste, vous créeriez un inférieur pour l'ancienne révision de | |
4035 | Guix qui vous intéresse et vous chercheriez le paquet @code{guile-json} dans | |
4036 | l'inférieur : | |
bf5c74e7 | 4037 | |
15f1bff4 JL |
4038 | @lisp |
4039 | (use-modules (guix inferior) (guix channels) | |
4040 | (srfi srfi-1)) ;pour « first » | |
bf5c74e7 | 4041 | |
15f1bff4 JL |
4042 | (define channels |
4043 | ;; L'ancienne révision depuis laquelle on veut | |
4044 | ;; extraire guile-json. | |
4045 | (list (channel | |
4046 | (name 'guix) | |
4047 | (url "https://git.savannah.gnu.org/git/guix.git") | |
4048 | (commit | |
4049 | "65956ad3526ba09e1f7a40722c96c6ef7c0936fe")))) | |
bf5c74e7 | 4050 | |
15f1bff4 JL |
4051 | (define inferior |
4052 | ;; Un inférieur représentant la révision ci-dessus. | |
4053 | (inferior-for-channels channels)) | |
3cacfa9e | 4054 | |
15f1bff4 JL |
4055 | ;; Maintenant on crée un manifeste avec le paquet « guile » actuel |
4056 | ;; et l'ancien paquet « guile-json ». | |
4057 | (packages->manifest | |
4058 | (list (first (lookup-inferior-packages inferior "guile-json")) | |
4059 | (specification->package "guile"))) | |
4060 | @end lisp | |
3cacfa9e | 4061 | |
15f1bff4 JL |
4062 | Durant la première exécution, @command{guix package --manifest} pourrait |
4063 | avoir besoin de construire le canal que vous avez spécifié avant de créer | |
4064 | l'inférieur ; les exécutions suivantes seront bien plus rapides parce que la | |
4065 | révision de Guix sera déjà en cache. | |
3cacfa9e | 4066 | |
15f1bff4 JL |
4067 | Le module @code{(guix inferior)} fournit les procédures suivantes pour |
4068 | ouvrir un inférieur : | |
3cacfa9e | 4069 | |
15f1bff4 JL |
4070 | @deffn {Procédure Scheme} inferior-for-channels @var{channels} @ |
4071 | [#:cache-directory] [#:ttl] | |
4072 | Renvoie un inférieur pour @var{channels}, une liste de canaux. Elle utilise | |
4073 | le cache dans @var{cache-directory}, où les entrées peuvent être glanées | |
4074 | après @var{ttl} secondes. Cette procédure ouvre une nouvelle connexion au | |
4075 | démon de construction. | |
3cacfa9e | 4076 | |
15f1bff4 JL |
4077 | Elle a pour effet de bord de construire ou de substituer des binaires pour |
4078 | @var{channels}, ce qui peut prendre du temps. | |
4079 | @end deffn | |
3cacfa9e | 4080 | |
15f1bff4 JL |
4081 | @deffn {Procédure Scheme} open-inferior @var{directory} @ |
4082 | [#:command "bin/guix"] | |
4083 | Ouvre le Guix inférieur dans @var{directory} et lance | |
4084 | @code{@var{directory}/@var{command} repl} ou équivalent. Renvoie @code{#f} | |
4085 | si l'inférieur n'a pas pu être lancé. | |
4086 | @end deffn | |
bf5c74e7 | 4087 | |
15f1bff4 JL |
4088 | @cindex paquets inférieurs |
4089 | Les procédures listées plus bas vous permettent d'obtenir et de manipuler | |
4090 | des paquets inférieurs. | |
bf5c74e7 | 4091 | |
15f1bff4 JL |
4092 | @deffn {Procédure Scheme} inferior-packages @var{inferior} |
4093 | Renvoie la liste des paquets connus de l'inférieur @var{inferior}. | |
4094 | @end deffn | |
bf5c74e7 | 4095 | |
15f1bff4 JL |
4096 | @deffn {Procédure Scheme} lookup-inferior-packages @var{inferior} @var{name} @ |
4097 | [@var{version}] | |
4098 | Renvoie la liste triée des paquets inférieurs qui correspondent à @var{name} | |
4099 | dans @var{inferior}, avec le plus haut numéro de version en premier. Si | |
4100 | @var{version} est vrai, renvoie seulement les paquets avec un numéro de | |
4101 | version préfixé par @var{version}. | |
4102 | @end deffn | |
bf5c74e7 | 4103 | |
15f1bff4 JL |
4104 | @deffn {Procédure Scheme} inferior-package? @var{obj} |
4105 | Renvoie vrai si @var{obj} est un paquet inférieur. | |
4106 | @end deffn | |
bf5c74e7 | 4107 | |
15f1bff4 JL |
4108 | @deffn {Procédure Scheme} inferior-package-name @var{package} |
4109 | @deffnx {Procédure Scheme} inferior-package-version @var{package} | |
4110 | @deffnx {Procédure Scheme} inferior-package-synopsis @var{package} | |
4111 | @deffnx {Procédure Scheme} inferior-package-description @var{package} | |
4112 | @deffnx {Procédure Scheme} inferior-package-home-page @var{package} | |
4113 | @deffnx {Procédure Scheme} inferior-package-location @var{package} | |
4114 | @deffnx {Procédure Scheme} inferior-package-inputs @var{package} | |
4115 | @deffnx {Procédure Scheme} inferior-package-native-inputs @var{package} | |
4116 | @deffnx {Procédure Scheme} inferior-package-propagated-inputs @var{package} | |
4117 | @deffnx {Procédure Scheme} inferior-package-transitive-propagated-inputs @var{package} | |
4118 | @deffnx {Procédure Scheme} inferior-package-native-search-paths @var{package} | |
4119 | @deffnx {Procédure Scheme} inferior-package-transitive-native-search-paths @var{package} | |
4120 | @deffnx {Procédure Scheme} inferior-package-search-paths @var{package} | |
4121 | Ces procédures sont la contrepartie des accesseurs des enregistrements de | |
4122 | paquets (@pxref{Référence de paquet}). La plupart fonctionne en effectuant | |
4123 | des requêtes à l'inférieur dont provient @var{package}, donc l'inférieur | |
4124 | doit toujours être disponible lorsque vous appelez ces procédures. | |
4125 | @end deffn | |
bf5c74e7 | 4126 | |
15f1bff4 JL |
4127 | Les paquets inférieurs peuvent être utilisés de manière transparente comme |
4128 | tout autre paquet ou objet simili-fichier dans des G-expressions | |
4129 | (@pxref{G-Expressions}). Ils sont aussi gérés de manière transparente par | |
4130 | la procédure @code{packages->manifest}, qui est typiquement utilisée dans | |
4131 | des manifestes (@pxref{Invoquer guix package, l'option @option{--manifest} | |
4132 | de @command{guix package}}). Ainsi, vous pouvez insérer un paquet inférieur | |
4133 | à peu près n'importe où vous utiliseriez un paquet normal : dans des | |
4134 | manifestes, dans le champ @code{packages} de votre déclaration | |
4135 | @code{operating-system}, etc. | |
bf5c74e7 | 4136 | |
15f1bff4 JL |
4137 | @node Invoquer guix describe |
4138 | @section Invoquer @command{guix describe} | |
4139 | ||
4140 | @cindex reproductibilité | |
4141 | @cindex répliquer Guix | |
4142 | Souvent vous voudrez répondre à des questions comme « quelle révision de | |
4143 | Guix j'utilise ? » ou « quels canaux est-ce que j'utilise ? ». C'est une | |
4144 | information utile dans de nombreuses situations : si vous voulez | |
4145 | @emph{répliquer} un environnement sur une machine différente ou un compte | |
4146 | utilisateur, si vous voulez rapporter un bogue ou pour déterminer quel | |
4147 | changement dans les canaux que vous utilisez l'a causé ou si vous voulez | |
4148 | enregistrer l'état de votre système pour le reproduire. La commande | |
4149 | @command{guix describe} répond à ces questions. | |
bf5c74e7 | 4150 | |
15f1bff4 JL |
4151 | Lorsqu'elle est lancée depuis un @command{guix} mis à jour avec |
4152 | @command{guix pull}, @command{guix describe} affiche les canaux qui ont été | |
4153 | construits, avec l'URL de leur dépôt et l'ID de leur commit | |
4154 | (@pxref{Canaux}) : | |
bf5c74e7 | 4155 | |
15f1bff4 JL |
4156 | @example |
4157 | $ guix describe | |
4158 | Generation 10 03 sep. 2018 17:32:44 (actuelle) | |
4159 | guix e0fa68c | |
4160 | URL du dépôt : https://git.savannah.gnu.org/git/guix.git | |
4161 | branche : master | |
4162 | commit : e0fa68c7718fffd33d81af415279d6ddb518f727 | |
4163 | @end example | |
bf5c74e7 | 4164 | |
15f1bff4 JL |
4165 | Si vous connaissez bien le système de contrôle de version Git, cela |
4166 | ressemble en essence à @command{git describe} ; la sortie est aussi | |
4167 | similaire à celle de @command{guix pull --list-generations}, mais limitée à | |
4168 | la génération actuelle (@pxref{Invoquer guix pull, l'option | |
4169 | @option{--list-generations}}). Comme l'ID de commit de Git ci-dessus se | |
4170 | réfère sans aucune ambiguïté à un instantané de Guix, cette information est | |
4171 | tout ce dont vous avez besoin pour décrire la révision de Guix que vous | |
4172 | utilisez et pour la répliquer. | |
bf5c74e7 | 4173 | |
15f1bff4 JL |
4174 | Pour rendre plus facile la réplication de Guix, @command{guix describe} peut |
4175 | aussi renvoyer une liste de canaux plutôt que la description lisible par un | |
4176 | humain au-dessus : | |
bf5c74e7 | 4177 | |
15f1bff4 JL |
4178 | @example |
4179 | $ guix describe -f channels | |
4180 | (list (channel | |
4181 | (name 'guix) | |
4182 | (url "https://git.savannah.gnu.org/git/guix.git") | |
4183 | (commit | |
4184 | "e0fa68c7718fffd33d81af415279d6ddb518f727"))) | |
4185 | @end example | |
bf5c74e7 | 4186 | |
15f1bff4 JL |
4187 | @noindent |
4188 | Vous pouvez sauvegarder ceci dans un fichier et le donner à @command{guix | |
4189 | pull -C} sur une autre machine ou plus tard, ce qui instantiera | |
4190 | @emph{exactement la même révision de Guix} (@pxref{Invoquer guix pull, | |
4191 | l'option @option{-C}}). À partir de là, comme vous pouvez déployer la même | |
4192 | révision de Guix, vous pouvez aussi bien @emph{répliquer un environnement | |
4193 | logiciel complet}. Nous pensons humblement que c'est @emph{génial}, et nous | |
4194 | espérons que vous aimerez ça aussi ! | |
bf5c74e7 | 4195 | |
15f1bff4 | 4196 | Voici les détails des options supportées par @command{guix describe} : |
bf5c74e7 | 4197 | |
15f1bff4 JL |
4198 | @table @code |
4199 | @item --format=@var{format} | |
4200 | @itemx -f @var{format} | |
4201 | Produire la sortie dans le @var{format} donné, parmi : | |
bf5c74e7 | 4202 | |
15f1bff4 JL |
4203 | @table @code |
4204 | @item human | |
4205 | produire une sortie lisible par un humain, | |
4206 | @item canaux | |
4207 | produire une liste de spécifications de canaux qui peut être passée à | |
4208 | @command{guix pull -C} ou installée dans @file{~/.config/guix/channels.scm} | |
4209 | (@pxref{Invoquer guix pull}), | |
4210 | @item json | |
4211 | @cindex JSON | |
4212 | produire une liste de spécifications de canaux dans le format JSON, | |
4213 | @item recutils | |
4214 | produire une liste de spécifications de canaux dans le format Recutils. | |
4215 | @end table | |
bf5c74e7 | 4216 | |
15f1bff4 JL |
4217 | @item --profile=@var{profil} |
4218 | @itemx -p @var{profil} | |
4219 | Afficher les informations sur le @var{profil}. | |
bf5c74e7 JL |
4220 | @end table |
4221 | ||
15f1bff4 JL |
4222 | @node Invoquer guix archive |
4223 | @section Invoquer @command{guix archive} | |
3cacfa9e | 4224 | |
15f1bff4 JL |
4225 | @cindex @command{guix archive} |
4226 | @cindex archive | |
4227 | La commande @command{guix archive} permet aux utilisateurs d'@dfn{exporter} | |
4228 | des fichiers du dépôt dans une simple archive puis ensuite de les | |
4229 | @dfn{importer} sur une machine qui fait tourner Guix. En particulier, elle | |
4230 | permet de transférer des fichiers du dépôt d'une machine vers le dépôt d'une | |
4231 | autre machine. | |
3cacfa9e | 4232 | |
15f1bff4 JL |
4233 | @quotation Remarque |
4234 | Si vous chercher une manière de produire des archives dans un format adapté | |
4235 | pour des outils autres que Guix, @pxref{Invoquer guix pack}. | |
4236 | @end quotation | |
3cacfa9e | 4237 | |
15f1bff4 JL |
4238 | @cindex exporter des éléments du dépôt |
4239 | Pour exporter des fichiers du dépôt comme une archive sur la sortie | |
4240 | standard, lancez : | |
3cacfa9e | 4241 | |
15f1bff4 JL |
4242 | @example |
4243 | guix archive --export @var{options} @var{spécifications}... | |
4244 | @end example | |
3cacfa9e | 4245 | |
15f1bff4 JL |
4246 | @var{spécifications} peut être soit des noms de fichiers soit des |
4247 | spécifications de paquets, comme pour @command{guix package} | |
4248 | (@pxref{Invoquer guix package}). Par exemple, la commande suivante crée une | |
4249 | archive contenant la sortie @code{gui} du paquet @code{git} et la sortie | |
4250 | principale de @code{emacs} : | |
3cacfa9e | 4251 | |
15f1bff4 JL |
4252 | @example |
4253 | guix archive --export git:gui /gnu/store/...-emacs-24.3 > great.nar | |
4254 | @end example | |
3cacfa9e | 4255 | |
15f1bff4 JL |
4256 | Si les paquets spécifiés ne sont pas déjà construits, @command{guix archive} |
4257 | les construit automatiquement. Le processus de construction peut être | |
4258 | contrôlé avec les options de construction communes (@pxref{Options de construction communes}). | |
3cacfa9e | 4259 | |
15f1bff4 JL |
4260 | Pour transférer le paquet @code{emacs} vers une machine connectée en SSH, on |
4261 | pourrait lancer : | |
3cacfa9e | 4262 | |
15f1bff4 JL |
4263 | @example |
4264 | guix archive --export -r emacs | ssh la-machine guix archive --import | |
4265 | @end example | |
bf5c74e7 | 4266 | |
15f1bff4 JL |
4267 | @noindent |
4268 | De même, on peut transférer un profil utilisateur complet d'une machine à | |
4269 | une autre comme cela : | |
bf5c74e7 | 4270 | |
15f1bff4 JL |
4271 | @example |
4272 | guix archive --export -r $(readlink -f ~/.guix-profile) | \ | |
4273 | ssh la-machine guix-archive --import | |
4274 | @end example | |
bf5c74e7 | 4275 | |
15f1bff4 JL |
4276 | @noindent |
4277 | Cependant, remarquez que, dans les deux exemples, le paquet @code{emacs}, le | |
4278 | profil ainsi que toutes leurs dépendances sont transférées (à cause de | |
4279 | @code{-r}), indépendamment du fait qu'ils soient disponibles dans le dépôt | |
4280 | de la machine cible. L'option @code{--missing} peut vous aider à comprendre | |
4281 | les éléments qui manquent dans le dépôt de la machine cible. La commande | |
4282 | @command{guix copy} simplifie et optimise ce processus, c'est donc ce que | |
4283 | vous devriez utiliser dans ce cas (@pxref{Invoquer guix copy}). | |
2cf2c778 | 4284 | |
15f1bff4 JL |
4285 | @cindex nar, format d'archive |
4286 | @cindex archive normalisée (nar) | |
4287 | Les archives sont stockées au format « archive normalisé » ou « nar », qui | |
4288 | est comparable dans l'esprit à « tar » mais avec des différences qui le | |
4289 | rendent utilisable pour ce qu'on veut faire. Tout d'abord, au lieu de | |
4290 | stocker toutes les métadonnées Unix de chaque fichier, le format nar ne | |
4291 | mentionne que le type de fichier (normal, répertoire ou lien symbolique) ; | |
4292 | les permissions Unix, le groupe et l'utilisateur ne sont pas mentionnés. | |
4293 | Ensuite, l'ordre dans lequel les entrées de répertoires sont stockés suit | |
4294 | toujours l'ordre des noms de fichier dans l'environnement linguistique C. | |
4295 | Cela rend la production des archives entièrement déterministe. | |
2cf2c778 | 4296 | |
15f1bff4 JL |
4297 | @c FIXME: Add xref to daemon doc about signatures. |
4298 | Lors de l'export, le démon signe numériquement le contenu de l'archive et | |
4299 | cette signature est ajoutée à la fin du fichier. Lors de l'import, le démon | |
4300 | vérifie la signature et rejette l'import en cas de signature invalide ou si | |
4301 | la clef de signature n'est pas autorisée. | |
bf5c74e7 | 4302 | |
15f1bff4 | 4303 | Les principales options sont : |
2cf2c778 | 4304 | |
15f1bff4 JL |
4305 | @table @code |
4306 | @item --export | |
4307 | Exporter les fichiers ou les paquets du dépôt (voir plus bas). Écrire | |
4308 | l'archive résultante sur la sortie standard. | |
2cf2c778 | 4309 | |
15f1bff4 JL |
4310 | Les dépendances ne sont @emph{pas} incluses dans la sortie à moins que |
4311 | @code{--recursive} ne soit passé. | |
2cf2c778 | 4312 | |
15f1bff4 JL |
4313 | @item -r |
4314 | @itemx --recursive | |
4315 | En combinaison avec @code{--export}, cette option demande à @command{guix | |
4316 | archive} d'inclure les dépendances des éléments donnés dans l'archive. | |
4317 | Ainsi, l'archive résultante est autonome : elle contient la closure des | |
4318 | éléments du dépôt exportés. | |
bf5c74e7 | 4319 | |
15f1bff4 JL |
4320 | @item --import |
4321 | Lire une archive depuis l'entrée standard et importer les fichiers inclus | |
4322 | dans le dépôt. Annuler si l'archive a une signature invalide ou si elle est | |
4323 | signée par une clef publique qui ne se trouve pas dans le clefs autorisées | |
4324 | (voir @code{--authorize} plus bas.) | |
bf5c74e7 | 4325 | |
15f1bff4 JL |
4326 | @item --missing |
4327 | Liste une liste de noms de fichiers du dépôt sur l'entrée standard, un par | |
4328 | ligne, et écrit sur l'entrée standard le sous-ensemble de ces fichiers qui | |
4329 | manquent dans le dépôt. | |
bf5c74e7 | 4330 | |
15f1bff4 JL |
4331 | @item --generate-key[=@var{paramètres}] |
4332 | @cindex signature, archives | |
4333 | Générer une nouvelle paire de clefs pour le démon. Cela est un prérequis | |
4334 | avant que les archives ne puissent être exportées avec @code{--export}. | |
4335 | Remarquez que cette opération prend généralement du temps parce qu'elle doit | |
4336 | récupère suffisamment d'entropie pour générer la paire de clefs. | |
bf5c74e7 | 4337 | |
15f1bff4 JL |
4338 | La paire de clefs générée est typiquement stockée dans @file{/etc/guix}, |
4339 | dans @file{signing-key.pub} (clef publique) et @file{signing-key.sec} (clef | |
4340 | privée, qui doit rester secrète). Lorsque @var{paramètres} est omis, une | |
4341 | clef ECDSA utilisant la courbe Ed25519 est générée ou pour les version de | |
4342 | libgcrypt avant 1.6.0, une clef RSA de 4096 bits. Autrement, | |
4343 | @var{paramètres} peut spécifier les paramètres @code{genkey} adaptés pour | |
4344 | libgcrypt (@pxref{General public-key related Functions, | |
4345 | @code{gcry_pk_genkey},, gcrypt, The Libgcrypt Reference Manual}). | |
bf5c74e7 | 4346 | |
15f1bff4 JL |
4347 | @item --authorize |
4348 | @cindex autorisation, archives | |
4349 | Autoriser les imports signés par la clef publique passée sur l'entrée | |
4350 | standard. La clef publique doit être au « format avancé s-expression » — | |
4351 | c.-à-d.@: le même format que le fichier @file{signing-key.pub}. | |
4352 | ||
4353 | La liste des clefs autorisées est gardée dans un fichier modifiable par des | |
4354 | humains dans @file{/etc/guix/acl}. Le fichier contient des | |
4355 | @url{http://people.csail.mit.edu/rivest/Sexp.txt, « s-expressions au format | |
4356 | avancé »} et est structuré comme une liste de contrôle d'accès dans | |
4357 | l'@url{http://theworld.com/~cme/spki.txt, infrastructure à clefs publiques | |
4358 | simple (SPKI)}. | |
4359 | ||
4360 | @item --extract=@var{répertoire} | |
4361 | @itemx -x @var{répertoire} | |
4362 | Lit une archive à un seul élément telle que servie par un serveur de | |
4363 | substituts (@pxref{Substituts}) et l'extrait dans @var{répertoire}. C'est | |
4364 | une opération de bas niveau requise seulement dans de rares cas d'usage ; | |
4365 | voir plus loin. | |
bf5c74e7 | 4366 | |
15f1bff4 JL |
4367 | For example, the following command extracts the substitute for Emacs served |
4368 | by @code{@value{SUBSTITUTE-SERVER}} to @file{/tmp/emacs}: | |
bf5c74e7 | 4369 | |
15f1bff4 JL |
4370 | @example |
4371 | $ wget -O - \ | |
4372 | https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-emacs-24.5 \ | |
4373 | | bunzip2 | guix archive -x /tmp/emacs | |
4374 | @end example | |
bf5c74e7 | 4375 | |
15f1bff4 JL |
4376 | Les archives à un seul élément sont différentes des archives à plusieurs |
4377 | éléments produites par @command{guix archive --export} ; elles contiennent | |
4378 | un seul élément du dépôt et elles n'embarquent @emph{pas} de signature. | |
4379 | Ainsi cette opération ne vérifie @emph{pas} de signature et sa sortie | |
4380 | devrait être considérée comme non sûre. | |
bf5c74e7 | 4381 | |
15f1bff4 JL |
4382 | Le but principal de cette opération est de faciliter l'inspection du contenu |
4383 | des archives venant de serveurs auxquels on ne fait potentiellement pas | |
4384 | confiance. | |
bf5c74e7 | 4385 | |
15f1bff4 | 4386 | @end table |
bf5c74e7 | 4387 | |
bf5c74e7 | 4388 | |
15f1bff4 JL |
4389 | @c ********************************************************************* |
4390 | @node Development | |
4391 | @chapter Development | |
bf5c74e7 | 4392 | |
15f1bff4 JL |
4393 | @cindex software development |
4394 | If you are a software developer, Guix provides tools that you should find | |
4395 | helpful---independently of the language you're developing in. This is what | |
4396 | this chapter is about. | |
bf5c74e7 | 4397 | |
15f1bff4 JL |
4398 | The @command{guix environment} command provides a convenient way to set up |
4399 | @dfn{development environments} containing all the dependencies and tools | |
4400 | necessary to work on the software package of your choice. The @command{guix | |
4401 | pack} command allows you to create @dfn{application bundles} that can be | |
4402 | easily distributed to users who do not run Guix. | |
2cf2c778 | 4403 | |
15f1bff4 JL |
4404 | @menu |
4405 | * Invoquer guix environment:: Mettre en place des environnements de | |
4406 | développement. | |
4407 | * Invoquer guix pack:: Créer des lots de logiciels. | |
4408 | @end menu | |
2cf2c778 | 4409 | |
15f1bff4 JL |
4410 | @node Invoquer guix environment |
4411 | @section Invoquer @command{guix environment} | |
2cf2c778 | 4412 | |
15f1bff4 JL |
4413 | @cindex environnements de construction reproductibles |
4414 | @cindex environnement de développement | |
4415 | @cindex @command{guix environment} | |
4416 | @cindex environnement de construction de paquets | |
4417 | Le but de @command{guix environment} est d'assister les hackers dans la | |
4418 | création d'environnements de développement reproductibles sans polluer leur | |
4419 | profil de paquets. L'outil @command{guix environment} prend un ou plusieurs | |
4420 | paquets, construit leurs entrées et crée un environnement shell pour pouvoir | |
4421 | les utiliser. | |
2cf2c778 | 4422 | |
15f1bff4 | 4423 | La syntaxe générale est : |
2cf2c778 | 4424 | |
15f1bff4 JL |
4425 | @example |
4426 | guix environment @var{options} @var{paquet}@dots{} | |
4427 | @end example | |
bf5c74e7 | 4428 | |
15f1bff4 JL |
4429 | L'exemple suivant crée un nouveau shell préparé pour le développement de |
4430 | GNU@tie{}Guile : | |
bf5c74e7 | 4431 | |
15f1bff4 JL |
4432 | @example |
4433 | guix environment guile | |
4434 | @end example | |
3cacfa9e | 4435 | |
15f1bff4 JL |
4436 | Si les dépendances requises ne sont pas déjà construites, @command{guix |
4437 | environment} les construit automatiquement. L'environnement du nouveau | |
4438 | shell est une version améliorée de l'environnement dans lequel @command{guix | |
4439 | environment} a été lancé. Il contient les chemins de recherche nécessaires | |
4440 | à la construction du paquet donné en plus des variables d'environnement | |
4441 | existantes. Pour créer un environnement « pur », dans lequel les variables | |
4442 | d'environnement de départ ont été nettoyées, utilisez l'option | |
4443 | @code{--pure}@footnote{Les utilisateurs ajoutent parfois à tord des valeurs | |
4444 | supplémentaires dans les variables comme @code{PATH} dans leur | |
4445 | @file{~/.bashrc}. En conséquence, lorsque @code{guix environment} le lance, | |
4446 | Bash peut lire @file{~/.bashrc}, ce qui produit des « impuretés » dans ces | |
4447 | variables d'environnement. C'est une erreur de définir ces variables | |
4448 | d'environnement dans @file{.bashrc} ; à la place, elles devraient être | |
4449 | définie dans @file{.bash_profile}, qui est sourcé uniquement par les shells | |
4450 | de connexion. @xref{Bash Startup Files,,, bash, The GNU Bash Reference | |
4451 | Manual}, pour des détails sur les fichiers de démarrage de Bash.}. | |
3cacfa9e | 4452 | |
15f1bff4 JL |
4453 | @vindex GUIX_ENVIRONMENT |
4454 | @command{guix environment} définie la variable @code{GUIX_ENVIRONMENT} dans | |
4455 | le shell qu'il crée ; sa valeur est le nom de fichier du profil de cet | |
4456 | environnement. Cela permet aux utilisateur, disons, de définir un prompt | |
4457 | spécifique pour les environnement de développement dans leur @file{.bashrc} | |
4458 | (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}) : | |
3cacfa9e | 4459 | |
15f1bff4 JL |
4460 | @example |
4461 | if [ -n "$GUIX_ENVIRONMENT" ] | |
4462 | then | |
4463 | export PS1="\u@@\h \w [dev]\$ " | |
4464 | fi | |
4465 | @end example | |
3cacfa9e | 4466 | |
15f1bff4 JL |
4467 | @noindent |
4468 | ...@: or to browse the profile: | |
3cacfa9e | 4469 | |
15f1bff4 JL |
4470 | @example |
4471 | $ ls "$GUIX_ENVIRONMENT/bin" | |
4472 | @end example | |
2cf2c778 | 4473 | |
15f1bff4 JL |
4474 | En plus, plus d'un paquet peut être spécifié, auquel cas l'union des entrées |
4475 | des paquets données est utilisée. Par exemple, la commande ci-dessous crée | |
4476 | un shell où toutes les dépendances de Guile et Emacs sont disponibles : | |
2cf2c778 | 4477 | |
15f1bff4 JL |
4478 | @example |
4479 | guix environment guile emacs | |
4480 | @end example | |
2cf2c778 | 4481 | |
15f1bff4 JL |
4482 | Parfois, une session shell interactive est inutile. On peut invoquer une |
4483 | commande arbitraire en plaçant le jeton @code{--} pour séparer la commande | |
4484 | du reste des arguments : | |
2cf2c778 | 4485 | |
15f1bff4 JL |
4486 | @example |
4487 | guix environment guile -- make -j4 | |
4488 | @end example | |
2cf2c778 | 4489 | |
15f1bff4 JL |
4490 | Dans d'autres situations, il est plus pratique de spécifier la liste des |
4491 | paquets requis dans l'environnement. Par exemple, la commande suivante | |
4492 | lance @command{python} dans un environnement contenant Python@tie{}2.7 et | |
4493 | NumPy : | |
2cf2c778 | 4494 | |
15f1bff4 JL |
4495 | @example |
4496 | guix environment --ad-hoc python2-numpy python-2.7 -- python | |
4497 | @end example | |
2cf2c778 | 4498 | |
15f1bff4 JL |
4499 | En plus, on peut vouloir les dépendance d'un paquet et aussi des paquets |
4500 | supplémentaires qui ne sont pas des dépendances à l'exécution ou à la | |
4501 | construction, mais qui sont utiles au développement tout de même. À cause | |
4502 | de cela, le drapeau @code{--ad-hoc} est positionnel. Les paquets qui | |
4503 | apparaissent avant @code{--ad-hoc} sont interprétés comme les paquets dont | |
4504 | les dépendances seront ajoutées à l'environnement. Les paquets qui | |
4505 | apparaissent après @code{--ad-hoc} sont interprétés comme les paquets à | |
4506 | ajouter à l'environnement directement. Par exemple, la commande suivante | |
4507 | crée un environnement de développement pour Guix avec les paquets Git et | |
4508 | strace en plus : | |
2cf2c778 | 4509 | |
15f1bff4 JL |
4510 | @example |
4511 | guix environment guix --ad-hoc git strace | |
4512 | @end example | |
bf5c74e7 | 4513 | |
15f1bff4 JL |
4514 | Sometimes it is desirable to isolate the environment as much as possible, |
4515 | for maximal purity and reproducibility. In particular, when using Guix on a | |
4516 | host distro that is not Guix System, it is desirable to prevent access to | |
4517 | @file{/usr/bin} and other system-wide resources from the development | |
4518 | environment. For example, the following command spawns a Guile REPL in a | |
4519 | ``container'' where only the store and the current working directory are | |
4520 | mounted: | |
bf5c74e7 | 4521 | |
15f1bff4 JL |
4522 | @example |
4523 | guix environment --ad-hoc --container guile -- guile | |
4524 | @end example | |
2cf2c778 | 4525 | |
15f1bff4 JL |
4526 | @quotation Remarque |
4527 | L'option @code{--container} requiert Linux-libre 3.19 ou supérieur. | |
4528 | @end quotation | |
bf5c74e7 | 4529 | |
15f1bff4 JL |
4530 | Les options disponibles sont résumées ci-dessous. |
4531 | ||
4532 | @table @code | |
4533 | @item --root=@var{fichier} | |
4534 | @itemx -r @var{fichier} | |
4535 | @cindex environnement persistent | |
4536 | @cindex racine du ramasse-miettes, pour les environnements | |
4537 | Fait de @var{fichier} un lien symbolique vers le profil de cet | |
4538 | environnement, et l'enregistre comme une racine du ramasse-miettes. | |
adfb167f | 4539 | |
15f1bff4 JL |
4540 | C'est utile si vous souhaitez protéger votre environnement du |
4541 | ramasse-miettes, pour le rendre « persistent ». | |
adfb167f | 4542 | |
15f1bff4 JL |
4543 | Lorsque cette option est omise, l'environnement n'est protégé du |
4544 | ramasse-miettes que le temps de la session @command{guix environment}. Cela | |
4545 | signifie que la prochaine fois que vous créerez le même environnement, vous | |
4546 | pourriez avoir à reconstruire ou télécharger des paquets. @xref{Invoquer guix gc}, pour plus d'informations sur les racines du GC. | |
adfb167f | 4547 | |
15f1bff4 JL |
4548 | @item --expression=@var{expr} |
4549 | @itemx -e @var{expr} | |
4550 | Crée un environnement pour le paquet ou la liste de paquets en lesquels | |
4551 | s'évalue @var{expr}. | |
adfb167f | 4552 | |
15f1bff4 | 4553 | Par exemple, lancer : |
adfb167f | 4554 | |
15f1bff4 JL |
4555 | @example |
4556 | guix environment -e '(@@ (gnu packages maths) petsc-openmpi)' | |
4557 | @end example | |
adfb167f | 4558 | |
15f1bff4 JL |
4559 | démarre un shell avec l'environnement pour cette variante spécifique du |
4560 | paquet PETSc. | |
adfb167f | 4561 | |
15f1bff4 | 4562 | Lancer : |
adfb167f | 4563 | |
15f1bff4 JL |
4564 | @example |
4565 | guix environment --ad-hoc -e '(@@ (gnu) %base-packages)' | |
4566 | @end example | |
adfb167f | 4567 | |
15f1bff4 | 4568 | starts a shell with all the base system packages available. |
adfb167f | 4569 | |
15f1bff4 JL |
4570 | Les commande au-dessus n'utilisent que les sorties par défaut des paquets |
4571 | donnés. Pour choisir d'autres sorties, on peut spécifier des pairs : | |
adfb167f | 4572 | |
15f1bff4 JL |
4573 | @example |
4574 | guix environment --ad-hoc -e '(list (@@ (gnu packages bash) bash) "include")' | |
4575 | @end example | |
2cf2c778 | 4576 | |
15f1bff4 JL |
4577 | @item --load=@var{fichier} |
4578 | @itemx -l @var{fichier} | |
4579 | Crée un environnement pour le paquet ou la liste de paquets en lesquels | |
4580 | @var{fichier} s'évalue. | |
2cf2c778 | 4581 | |
15f1bff4 JL |
4582 | Par exemple, @var{fichier} peut contenir une définition comme celle-ci |
4583 | (@pxref{Définition des paquets}) : | |
bf5c74e7 | 4584 | |
15f1bff4 JL |
4585 | @example |
4586 | @verbatiminclude environment-gdb.scm | |
4587 | @end example | |
2cf2c778 | 4588 | |
15f1bff4 JL |
4589 | @item --manifest=@var{fichier} |
4590 | @itemx -m @var{fichier} | |
4591 | Crée un environnement pour les paquets contenus dans l'objet manifeste | |
4592 | renvoyé par le code Scheme dans @var{fichier}. | |
2cf2c778 | 4593 | |
15f1bff4 JL |
4594 | C'est similaire à l'option de même nom de @command{guix package} |
4595 | (@pxref{profile-manifest, @option{--manifest}}) et utilise les même fichiers | |
4596 | manifestes. | |
bf5c74e7 | 4597 | |
15f1bff4 JL |
4598 | @item --ad-hoc |
4599 | Inclut tous les paquets spécifiés dans l'environnement qui en résulte, comme | |
4600 | si un paquet @i{ad hoc} était spécifié, avec ces paquets comme entrées. | |
4601 | Cette option est utile pour créer un environnement rapidement sans avoir à | |
4602 | écrire une expression de paquet contenant les entrées désirées. | |
bf5c74e7 | 4603 | |
15f1bff4 | 4604 | Par exemple la commande : |
bf5c74e7 | 4605 | |
15f1bff4 JL |
4606 | @example |
4607 | guix environment --ad-hoc guile guile-sdl -- guile | |
4608 | @end example | |
2cf2c778 | 4609 | |
15f1bff4 JL |
4610 | lance @command{guile} dans un environnement où Guile et Guile-SDDL sont |
4611 | disponibles. | |
bf5c74e7 | 4612 | |
15f1bff4 JL |
4613 | Remarquez que cet exemple demande implicitement la sortie par défaut de |
4614 | @code{guile} et @code{guile-sdl}, mais il est possible de demander une | |
4615 | sortie spécifique — p.@: ex.@: @code{glib:bin} demande la sortie @code{bin} | |
4616 | de @code{glib} (@pxref{Des paquets avec plusieurs résultats}). | |
bf5c74e7 | 4617 | |
15f1bff4 JL |
4618 | Cette option peut être composée avec le comportement par défaut de |
4619 | @command{guix environment}. Les paquets qui apparaissent avant | |
4620 | @code{--ad-hoc} sont interprétés comme les paquets dont les dépendances | |
4621 | seront ajoutées à l'environnement, le comportement par défaut. Les paquets | |
4622 | qui apparaissent après @code{--ad-hoc} sont interprétés comme les paquets à | |
4623 | ajouter à l'environnement directement. | |
bf5c74e7 | 4624 | |
15f1bff4 JL |
4625 | @item --pure |
4626 | Unset existing environment variables when building the new environment, | |
4627 | except those specified with @option{--inherit} (see below.) This has the | |
4628 | effect of creating an environment in which search paths only contain package | |
4629 | inputs. | |
524756d1 | 4630 | |
15f1bff4 JL |
4631 | @item --inherit=@var{regexp} |
4632 | When used alongside @option{--pure}, inherit all the environment variables | |
4633 | matching @var{regexp}---in other words, put them on a ``white list'' of | |
4634 | environment variables that must be preserved. This option can be repeated | |
4635 | several times. | |
524756d1 | 4636 | |
15f1bff4 JL |
4637 | @example |
4638 | guix environment --pure --inherit=^SLURM --ad-hoc openmpi @dots{} \ | |
4639 | -- mpirun @dots{} | |
4640 | @end example | |
524756d1 | 4641 | |
15f1bff4 JL |
4642 | This example runs @command{mpirun} in a context where the only environment |
4643 | variables defined are @code{PATH}, environment variables whose name starts | |
4644 | with @code{SLURM}, as well as the usual ``precious'' variables (@code{HOME}, | |
4645 | @code{USER}, etc.) | |
bf5c74e7 | 4646 | |
15f1bff4 JL |
4647 | @item --search-paths |
4648 | Affiche les définitions des variables d'environnement qui composent | |
4649 | l'environnement. | |
bf5c74e7 | 4650 | |
15f1bff4 JL |
4651 | @item --system=@var{système} |
4652 | @itemx -s @var{système} | |
4653 | Essaye de construire pour @var{système} — p.@: ex.@: @code{i686-linux}. | |
bf5c74e7 | 4654 | |
15f1bff4 JL |
4655 | @item --container |
4656 | @itemx -C | |
4657 | @cindex conteneur | |
4658 | Lance @var{commande} dans un conteneur isolé. Le répertoire de travail | |
4659 | actuel en dehors du conteneur est monté dans le conteneur. En plus, à moins | |
4660 | de le changer avec @code{--user}, un répertoire personnel fictif est créé | |
4661 | pour correspondre à celui de l'utilisateur actuel et @file{/etc/passwd} est | |
4662 | configuré en conséquence. Le processus est lancé en tant que l'utilisateur | |
4663 | actuel en dehors du conteneur, mais a les privilèges root dans le contexte | |
4664 | du conteneur. | |
2cf2c778 | 4665 | |
15f1bff4 JL |
4666 | @item --network |
4667 | @itemx -N | |
4668 | Pour les conteneurs, partage l'espace de nom du réseau avec le système | |
4669 | hôte. Les conteneurs créés sans cette option n'ont accès qu'à l'interface | |
4670 | de boucle locale. | |
2cf2c778 | 4671 | |
15f1bff4 JL |
4672 | @item --link-profile |
4673 | @itemx -P | |
4674 | Pour les conteneurs, lie le profil de l'environnement à | |
4675 | @file{~/.guix-profile} dans le conteneur. C'est équivalent à lance la | |
4676 | commande @command{ln -s $GUIX_ENVIRONMENT ~/.guix-profile} dans le | |
4677 | conteneur. La liaison échouera et annulera l'environnement si le répertoire | |
4678 | existe déjà, ce qui sera sans doute le cas si @command{guix environment} est | |
4679 | invoqué dans le répertoire personnel de l'utilisateur. | |
2cf2c778 | 4680 | |
15f1bff4 JL |
4681 | Certains paquets sont configurés pour chercher des fichiers de configuration |
4682 | et des données dans @code{~/.guix-profile}@footnote{Par exemple, le paquet | |
4683 | @code{fontconfig} inspecte @file{~/.guix-profile/share/fonts} pour trouver | |
4684 | des polices supplémentaires.} ; @code{--link-profile} permet à ces | |
4685 | programmes de se comporter comme attendu dans l'environnement. | |
2cf2c778 | 4686 | |
15f1bff4 JL |
4687 | @item --user=@var{utilisateur} |
4688 | @itemx -u @var{utilisateur} | |
4689 | Pour les conteneurs, utilise le nom d'utilisateur @var{utilisateur} à la | |
4690 | place de l'utilisateur actuel. L'entrée générée dans @file{/etc/passwd} | |
4691 | dans le conteneur contiendra le nom @var{utilisateur} ; le répertoire | |
4692 | personnel sera @file{/home/UTILISATEUR} ; et aucune donnée GECOS ne sera | |
4693 | copiée. @var{utilisateur} n'a pas besoin d'exister sur le système. | |
2cf2c778 | 4694 | |
15f1bff4 JL |
4695 | En plus, tous les chemins partagés ou exposés (voir @code{--share} et |
4696 | @code{--expose} respectivement) dont la cible est dans le répertoire | |
4697 | personnel de l'utilisateur seront remontés relativement à | |
4698 | @file{/home/UTILISATEUR} ; cela comprend le montage automatique du | |
4699 | répertoire de travail actuel. | |
bf5c74e7 | 4700 | |
15f1bff4 JL |
4701 | @example |
4702 | # exposera les chemins comme /home/foo/wd, /home/foo/test et /home/foo/target | |
4703 | cd $HOME/wd | |
4704 | guix environment --container --user=foo \ | |
4705 | --expose=$HOME/test \ | |
4706 | --expose=/tmp/target=$HOME/target | |
4707 | @end example | |
2cf2c778 | 4708 | |
15f1bff4 JL |
4709 | Bien que cela limite la fuite de l'identité de l'utilisateur à travers le |
4710 | chemin du répertoire personnel et des champs de l'utilisateur, ce n'est | |
4711 | qu'un composant utile pour une solution d'anonymisation ou de préservation | |
4712 | de la vie privée — pas une solution en elle-même. | |
2cf2c778 | 4713 | |
15f1bff4 JL |
4714 | @item --expose=@var{source}[=@var{cible}] |
4715 | Pour les conteneurs, expose le système de fichiers @var{source} du système | |
4716 | hôte comme un système de fichiers en lecture seule @var{cible} dans le | |
4717 | conteneur. Si @var{cible} n'est pas spécifiée, @var{source} est utilisé | |
4718 | comme point de montage dans le conteneur. | |
2cf2c778 | 4719 | |
15f1bff4 JL |
4720 | L'exemple ci-dessous crée un REPL Guile dans un conteneur dans lequel le |
4721 | répertoire personnel de l'utilisateur est accessible en lecture-seule via le | |
4722 | répertoire @file{/exchange} : | |
bf5c74e7 | 4723 | |
15f1bff4 JL |
4724 | @example |
4725 | guix environment --container --expose=$HOME=/exchange --ad-hoc guile -- guile | |
4726 | @end example | |
2cf2c778 | 4727 | |
15f1bff4 JL |
4728 | @item --share=@var{source}[=@var{cible}] |
4729 | Pour les conteneurs, partage le système de fichiers @var{source} du système | |
4730 | hôte comme un système de fichiers en lecture-écriture @var{cible} dans le | |
4731 | conteneur. Si @var{cible} n'est pas spécifiée, @var{source} est utilisée | |
4732 | comme point de montage dans le conteneur. | |
2cf2c778 | 4733 | |
15f1bff4 JL |
4734 | L'exemple ci-dessous crée un REPL Guile dans un conteneur dans lequel le |
4735 | répertoire personnel de l'utilisateur est accessible en lecture-écriture via | |
4736 | le répertoire @file{/exchange} : | |
bf5c74e7 | 4737 | |
15f1bff4 JL |
4738 | @example |
4739 | guix environment --container --share=$HOME=/exchange --ad-hoc guile -- guile | |
4740 | @end example | |
4741 | @end table | |
bf5c74e7 | 4742 | |
15f1bff4 JL |
4743 | @command{guix environment} also supports all of the common build options |
4744 | that @command{guix build} supports (@pxref{Options de construction communes}) as well as | |
4745 | package transformation options (@pxref{Options de transformation de paquets}). | |
2cf2c778 | 4746 | |
15f1bff4 JL |
4747 | @node Invoquer guix pack |
4748 | @section Invoquer @command{guix pack} | |
2cf2c778 | 4749 | |
15f1bff4 JL |
4750 | Parfois vous voulez passer un logiciel à des gens qui n'ont pas (encore !) |
4751 | la chance d'utiliser Guix. Vous leur diriez bien de lancer @command{guix | |
4752 | package -i @var{quelque chose}} mais ce n'est pas possible dans ce cas. | |
4753 | C'est là que @command{guix pack} entre en jeu. | |
bf5c74e7 | 4754 | |
15f1bff4 JL |
4755 | @quotation Remarque |
4756 | Si vous cherchez comment échanger des binaires entre des machines où Guix | |
4757 | est déjà installé, @pxref{Invoquer guix copy}, @ref{Invoquer guix publish}, | |
4758 | et @ref{Invoquer guix archive}. | |
4759 | @end quotation | |
2cf2c778 | 4760 | |
15f1bff4 JL |
4761 | @cindex pack |
4762 | @cindex lot | |
4763 | @cindex lot d'applications | |
4764 | @cindex lot de logiciels | |
4765 | La commande @command{guix pack} crée un @dfn{pack} ou @dfn{lot de logiciels} | |
4766 | : elle crée une archive tar ou un autre type d'archive contenant les | |
4767 | binaires pour le logiciel qui vous intéresse ainsi que ses dépendances. | |
4768 | L'archive qui en résulte peut être utilisée sur toutes les machines qui | |
4769 | n'ont pas Guix et les gens peuvent lancer exactement les mêmes binaires que | |
4770 | ceux que vous avez avec Guix. Le pack lui-même est créé d'une manière | |
4771 | reproductible au bit près, pour que n'importe qui puisse vérifier qu'il | |
4772 | contient bien les résultats que vous prétendez proposer. | |
2cf2c778 | 4773 | |
15f1bff4 JL |
4774 | Par exemple, pour créer un lot contenant Guile, Emacs, Geiser et toutes |
4775 | leurs dépendances, vous pouvez lancer : | |
bf5c74e7 | 4776 | |
15f1bff4 JL |
4777 | @example |
4778 | $ guix pack guile emacs geiser | |
4779 | @dots{} | |
4780 | /gnu/store/@dots{}-pack.tar.gz | |
4781 | @end example | |
bf5c74e7 | 4782 | |
15f1bff4 JL |
4783 | Le résultat ici est une archive tar contenant un répertoire |
4784 | @file{/gnu/store} avec tous les paquets nécessaires. L'archive qui en | |
4785 | résulte contient un @dfn{profil} avec les trois paquets qui vous intéressent | |
4786 | ; le profil est le même qui celui qui aurait été créé avec @command{guix | |
4787 | package -i}. C'est ce mécanisme qui est utilisé pour créer les archives tar | |
4788 | binaires indépendantes de Guix (@pxref{Installation binaire}). | |
bf5c74e7 | 4789 | |
15f1bff4 JL |
4790 | Les utilisateurs de ce pack devraient lancer |
4791 | @file{/gnu/store/@dots{}-profile/bin/guile} pour lancer Guile, ce qui n'est | |
4792 | pas très pratique. Pour éviter cela, vous pouvez créer, disons, un lien | |
4793 | symbolique @file{/opt/gnu/bin} vers le profil : | |
2cf2c778 | 4794 | |
15f1bff4 JL |
4795 | @example |
4796 | guix pack -S /opt/gnu/bin=bin guile emacs geiser | |
4797 | @end example | |
bf5c74e7 | 4798 | |
15f1bff4 JL |
4799 | @noindent |
4800 | De cette façon, les utilisateurs peuvent joyeusement taper | |
4801 | @file{/opt/gnu/bin/guile} et profiter. | |
2cf2c778 | 4802 | |
15f1bff4 JL |
4803 | @cindex binaires repositionnables, avec @command{guix pack} |
4804 | Et si le destinataire de votre pack n'a pas les privilèges root sur sa | |
4805 | machine, et ne peut donc pas le décompresser dans le système de fichiers | |
4806 | racine ? Dans ce cas, vous pourriez utiliser l'option @code{--relocatable} | |
4807 | (voir plus bas). Cette option produite des @dfn{binaire repositionnables}, | |
4808 | ce qui signifie qu'ils peuvent être placés n'importe où dans l'arborescence | |
4809 | du système de fichiers : dans l'exemple au-dessus, les utilisateurs peuvent | |
4810 | décompresser votre archive dans leur répertoire personnel et lancer | |
4811 | directement @file{./opt/gnu/bin/guile}. | |
bf5c74e7 | 4812 | |
15f1bff4 JL |
4813 | @cindex Docker, construire une image avec guix pack |
4814 | Autrement, vous pouvez produire un pack au format d'image Docker avec la | |
4815 | commande suivante : | |
bf5c74e7 | 4816 | |
15f1bff4 JL |
4817 | @example |
4818 | guix pack -f docker guile emacs geiser | |
4819 | @end example | |
4820 | ||
4821 | @noindent | |
4822 | Le résultat est une archive tar qui peut être passée à la commande | |
4823 | @command{docker load}. Voir la | |
4824 | @uref{https://docs.docker.com/engine/reference/commandline/load/, | |
4825 | documentation de Docker} pour plus d'informations. | |
bf5c74e7 | 4826 | |
15f1bff4 JL |
4827 | @cindex Singularity, construire une image avec guix pack |
4828 | @cindex SquashFS, construire une image avec guix pack | |
4829 | Autrement, vous pouvez produire une image SquashFS avec la commande suivante | |
4830 | : | |
2cf2c778 | 4831 | |
15f1bff4 JL |
4832 | @example |
4833 | guix pack -f squashfs guile emacs geiser | |
4834 | @end example | |
bf5c74e7 | 4835 | |
15f1bff4 JL |
4836 | @noindent |
4837 | Le résultat est une image de système de fichiers SquashFS qui peut soit être | |
4838 | montée directement soit être utilisée comme image de conteneur de système de | |
4839 | fichiers avec l'@uref{http://singularity.lbl.gov, environnement d'exécution | |
4840 | conteneurisé Singularity}, avec des commandes comme @command{singularity | |
4841 | shell} ou @command{singularity exec}. | |
bf5c74e7 | 4842 | |
15f1bff4 JL |
4843 | Diverses options en ligne de commande vous permettent de personnaliser votre |
4844 | pack : | |
bf5c74e7 | 4845 | |
15f1bff4 JL |
4846 | @table @code |
4847 | @item --format=@var{format} | |
4848 | @itemx -f @var{format} | |
4849 | Produire un pack dans le @var{format} donné. | |
bf5c74e7 | 4850 | |
15f1bff4 | 4851 | Les formats disponibles sont : |
bf5c74e7 JL |
4852 | |
4853 | @table @code | |
15f1bff4 JL |
4854 | @item tarball |
4855 | C'est le format par défaut. Il produit une archive tar contenant tous les | |
4856 | binaires et les liens symboliques spécifiés. | |
bf5c74e7 | 4857 | |
15f1bff4 JL |
4858 | @item docker |
4859 | Cela produit une archive tar qui suit la | |
4860 | @uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md, | |
4861 | spécification des images Docker}. | |
bf5c74e7 | 4862 | |
15f1bff4 JL |
4863 | @item squashfs |
4864 | Cela produit une image SquashFS contenant tous les binaires et liens | |
4865 | symboliques spécifiés, ainsi que des points de montages vides pour les | |
4866 | systèmes de fichiers virtuels comme procfs. | |
4867 | @end table | |
bf5c74e7 | 4868 | |
15f1bff4 JL |
4869 | @item --relocatable |
4870 | @itemx -R | |
4871 | Produit des @dfn{binaires repositionnables} — c.-à-d.@: des binaires que | |
4872 | vous pouvez placer n'importe où dans l'arborescence du système de fichiers | |
4873 | et les lancer à partir de là. Par exemple, si vous créez un pack contenant | |
4874 | Bash avec : | |
bf5c74e7 | 4875 | |
15f1bff4 JL |
4876 | @example |
4877 | guix pack -R -S /mybin=bin bash | |
4878 | @end example | |
bf5c74e7 | 4879 | |
15f1bff4 JL |
4880 | @noindent |
4881 | ...@: you can copy that pack to a machine that lacks Guix, and from your | |
4882 | home directory as a normal user, run: | |
bf5c74e7 | 4883 | |
15f1bff4 JL |
4884 | @example |
4885 | tar xf pack.tar.gz | |
4886 | ./mybin/sh | |
4887 | @end example | |
bf5c74e7 | 4888 | |
15f1bff4 JL |
4889 | @noindent |
4890 | Dans ce shell, si vous tapez @code{ls /gnu/store}, vous remarquerez que | |
4891 | @file{/gnu/store} apparaît et contient toutes les dépendances de | |
4892 | @code{bash}, même si la machine n'a pas du tout de @file{/gnu/store} ! | |
4893 | C'est sans doute la manière la plus simple de déployer du logiciel construit | |
4894 | avec Guix sur une machine sans Guix. | |
bf5c74e7 | 4895 | |
15f1bff4 JL |
4896 | Il y a un inconvénient cependant : cette technique repose sur les |
4897 | @dfn{espaces de noms} du noyau Linux qui permettent à des utilisateurs | |
4898 | non-privilégiés de monter des systèmes de fichiers ou de changer de racine. | |
4899 | Les anciennes versions de Linux ne le supportaient pas et certaines | |
4900 | distributions GNU/Linux les désactivent ; sur ces système, les programme du | |
4901 | pack @emph{ne fonctionneront pas} à moins qu'ils ne soient décompressés à la | |
4902 | racine du système de fichiers. | |
bf5c74e7 | 4903 | |
15f1bff4 JL |
4904 | @item --expression=@var{expr} |
4905 | @itemx -e @var{expr} | |
4906 | Considérer le paquet évalué par @var{expr}. | |
bf5c74e7 | 4907 | |
15f1bff4 JL |
4908 | Cela a le même but que l'option de même nom de @command{guix build} |
4909 | (@pxref{Options de construction supplémentaires, @code{--expression} dans @command{guix | |
4910 | build}}). | |
bf5c74e7 | 4911 | |
15f1bff4 JL |
4912 | @item --manifest=@var{fichier} |
4913 | @itemx -m @var{fichier} | |
4914 | Utiliser les paquets contenus dans l'objet manifeste renvoyé par le code | |
4915 | Scheme dans @var{fichier} | |
bf5c74e7 | 4916 | |
15f1bff4 JL |
4917 | Elle a un but similaire à l'option de même nom dans @command{guix package} |
4918 | (@pxref{profile-manifest, @option{--manifest}}) et utilise les mêmes | |
4919 | fichiers manifeste. Ils vous permettent de définir une collection de | |
4920 | paquets une fois et de l'utiliser aussi bien pour créer des profils que pour | |
4921 | créer des archives pour des machines qui n'ont pas Guix d'installé. | |
4922 | Remarquez que vous pouvez spécifier @emph{soit} un fichier manifeste, | |
4923 | @emph{soit} une liste de paquet, mais pas les deux. | |
bf5c74e7 | 4924 | |
15f1bff4 JL |
4925 | @item --system=@var{système} |
4926 | @itemx -s @var{système} | |
4927 | Tenter de construire pour le @var{système} — p.@: ex.@: @code{i686-linux} — | |
4928 | plutôt que pour le type de système de l'hôte de construction. | |
bf5c74e7 | 4929 | |
15f1bff4 JL |
4930 | @item --target=@var{triplet} |
4931 | @cindex compilation croisée | |
4932 | Effectuer une compilation croisée pour @var{triplet} qui doit être un | |
4933 | triplet GNU valide, comme @code{"mips64el-linux-gnu"} (@pxref{Specifying | |
4934 | target triplets, GNU configuration triplets,, autoconf, Autoconf}). | |
2cf2c778 | 4935 | |
15f1bff4 JL |
4936 | @item --compression=@var{outil} |
4937 | @itemx -C @var{outil} | |
4938 | Compresser l'archive résultante avec @var{outil} — l'un des outils parmi | |
4939 | @code{bzip2}, @code{xz}, @code{lzip} ou @code{none} pour aucune compression. | |
2cf2c778 | 4940 | |
15f1bff4 JL |
4941 | @item --symlink=@var{spec} |
4942 | @itemx -S @var{spec} | |
4943 | Ajouter les liens symboliques spécifiés par @var{spec} dans le pack. Cette | |
4944 | option peut apparaître plusieurs fois. | |
bf5c74e7 | 4945 | |
15f1bff4 JL |
4946 | @var{spec} a la forme @code{@var{source}=@var{cible}}, où @var{source} est |
4947 | le lien symbolique qui sera créé et @var{cible} est la cible du lien. | |
2cf2c778 | 4948 | |
15f1bff4 JL |
4949 | Par exemple, @code{-S /opt/gnu/bin=bin} crée un lien symbolique |
4950 | @file{/opt/gnu/bin} qui pointe vers le sous-répertoire @file{bin} du profil. | |
bf5c74e7 | 4951 | |
15f1bff4 JL |
4952 | @item --localstatedir |
4953 | @itemx --profile-name=@var{nom} | |
4954 | Inclus le « répertoire d'état local », @file{/var/guix}, dans le lot qui en | |
4955 | résulte, et notamment le profil | |
4956 | @file{/var/guix/profiles/per-user/root/@var{nom}} — par défaut @var{nom} est | |
4957 | @code{guix-profile}, ce qui correspond à @file{~root/.guix-profile}. | |
bf5c74e7 | 4958 | |
15f1bff4 JL |
4959 | @file{/var/guix} contient la base de données du dépôt (@pxref{Le dépôt}) |
4960 | ainsi que les racines du ramasse-miettes (@pxref{Invoquer guix gc}). Le | |
4961 | fournir dans le pack signifie que le dépôt et « complet » et gérable par | |
4962 | Guix ; ne pas le fournir dans le pack signifie que le dépôt est « mort » : | |
4963 | aucun élément ne peut être ajouté ni enlevé après l'extraction du pack. | |
bf5c74e7 | 4964 | |
15f1bff4 JL |
4965 | Un cas d'utilisation est l'archive binaire indépendante de Guix |
4966 | (@pxref{Installation binaire}). | |
bf5c74e7 | 4967 | |
15f1bff4 JL |
4968 | @item --bootstrap |
4969 | Utiliser les programmes d'amorçage pour construire le pack. Cette option | |
4970 | n'est utile que pour les développeurs de Guix. | |
4971 | @end table | |
bf5c74e7 | 4972 | |
15f1bff4 JL |
4973 | En plus, @command{guix pack} supporte toutes les options de construction |
4974 | communes (@pxref{Options de construction communes}) et toutes les options de | |
4975 | transformation de paquets (@pxref{Options de transformation de paquets}). | |
4976 | ||
4977 | ||
4978 | @c ********************************************************************* | |
4979 | @node Interface de programmation | |
4980 | @chapter Interface de programmation | |
4981 | ||
4982 | GNU Guix fournit diverses interface de programmation Scheme (API) qui pour | |
4983 | définir, construire et faire des requêtes sur des paquets. La première | |
4984 | interface permet aux utilisateurs d'écrire des définitions de paquets de | |
4985 | haut-niveau. Ces définitions se réfèrent à des concepts de création de | |
4986 | paquets familiers, comme le nom et la version du paquet, son système de | |
4987 | construction et ses dépendances. Ces définitions peuvent ensuite être | |
4988 | transformées en actions concrètes lors de la construction. | |
bf5c74e7 | 4989 | |
15f1bff4 JL |
4990 | Les actions de construction sont effectuées par le démon Guix, pour le |
4991 | compte des utilisateurs. Dans un environnement standard, le démon possède | |
4992 | les droits en écriture sur le dépôt — le répertoire @file{/gnu/store} — mais | |
4993 | pas les utilisateurs. La configuration recommandée permet aussi au démon | |
4994 | d'effectuer la construction dans des chroots, avec un utilisateur de | |
4995 | construction spécifique pour minimiser les interférences avec le reste du | |
4996 | système. | |
bf5c74e7 | 4997 | |
15f1bff4 JL |
4998 | @cindex dérivation |
4999 | Il y a des API de plus bas niveau pour interagir avec le démon et le dépôt. | |
5000 | Pour demander au démon d'effectuer une action de construction, les | |
5001 | utilisateurs lui donnent en fait une @dfn{dérivation}. Une dérivation est | |
5002 | une représentation à bas-niveau des actions de construction à entreprendre | |
5003 | et l'environnement dans lequel elles devraient avoir lieu — les dérivations | |
5004 | sont aux définitions de paquets ce que l'assembleur est aux programmes C. | |
5005 | Le terme de « dérivation » vient du fait que les résultats de la | |
5006 | construction en @emph{dérivent}. | |
bf5c74e7 | 5007 | |
15f1bff4 JL |
5008 | Ce chapitre décrit toutes ces API tour à tour, à partir des définitions de |
5009 | paquets à haut-niveau. | |
bf5c74e7 | 5010 | |
15f1bff4 JL |
5011 | @menu |
5012 | * Modules de paquets:: Les paquets du point de vu du programmeur. | |
5013 | * Définition des paquets:: Définir de nouveaux paquets. | |
5014 | * Systèmes de construction:: Spécifier comment construire les paquets. | |
5015 | * Le dépôt:: Manipuler le dépôt de paquets. | |
5016 | * Dérivations:: Interface de bas-niveau avec les dérivations | |
5017 | de paquets. | |
5018 | * La monade du dépôt:: Interface purement fonctionnelle avec le | |
5019 | dépôt. | |
5020 | * G-Expressions:: Manipuler les expressions de construction. | |
5021 | * Invoquer guix repl:: S'amuser avec Guix de manière interactive. | |
5022 | @end menu | |
bf5c74e7 | 5023 | |
15f1bff4 JL |
5024 | @node Modules de paquets |
5025 | @section Modules de paquets | |
bf5c74e7 | 5026 | |
15f1bff4 JL |
5027 | D'un point de vue programmatique, les définitions de paquets de la |
5028 | distribution GNU sont fournies par des modules Guile dans l'espace de noms | |
5029 | @code{(gnu packages @dots{})}@footnote{Remarquez que les paquets sous | |
5030 | l'espace de nom @code{(gnu packages @dots{})} ne sont pas nécessairement des | |
5031 | « paquets GNU ». Le nom de ce module suit la convention de nommage usuelle | |
5032 | de Guile : @code{gnu} signifie que ces modules sont distribués dans le | |
5033 | système GNU, et @code{packages} identifie les modules qui définissent les | |
5034 | paquets.} (@pxref{Modules, Guile modules,, guile, GNU Guile Reference | |
5035 | Manual}). Par exemple, le module @code{(gnu packages emacs)} exporte une | |
5036 | variable nommée @code{emacs}, qui est liée à un objet @code{<package>} | |
5037 | (@pxref{Définition des paquets}). | |
5038 | ||
5039 | L'espace de nom @code{(gnu packages @dots{})} est automatiquement scanné par | |
5040 | les outils en ligne de commande. Par exemple, lorsque vous lancez | |
5041 | @code{guix package -i emacs}, tous les modules @code{(gnu packages @dots{})} | |
5042 | sont scannés jusqu'à en trouver un qui exporte un objet de paquet dont le | |
5043 | nom est @code{emacs}. Cette capacité à chercher des paquets est implémentée | |
5044 | dans le module @code{(gnu packages)}. | |
bf5c74e7 | 5045 | |
15f1bff4 JL |
5046 | @cindex personnalisation, des paquets |
5047 | @cindex chemin de recherche des modules de paquets | |
5048 | Les utilisateurs peuvent stocker des définitions dans des modules avec des | |
5049 | noms différents — p.@: ex.@: @code{(my-packages emacs)}@footnote{Remarquez | |
5050 | que le nom de fichier et de module doivent être identiques. Par exemple, le | |
5051 | module @code{(my-packages emacs)} doit être stocké dans un fichier | |
5052 | @file{my-packages/emacs.scm} relativement au chemin de chargement spécifié | |
5053 | avec @option{--load-path} ou @code{GUIX_PACKAGE_PATH}. @xref{Modules and | |
5054 | the File System,,, guile, GNU Guile Reference Manual} pour plus de | |
5055 | détails}. Il y a deux manières de rendre ces définitions visibles aux | |
5056 | interfaces utilisateurs : | |
bf5c74e7 | 5057 | |
15f1bff4 JL |
5058 | @enumerate |
5059 | @item | |
5060 | En ajoutant le répertoire contenant vos modules de paquets au chemin de | |
5061 | recherche avec le drapeau @code{-L} de @command{guix package} et des autres | |
5062 | commandes (@pxref{Options de construction communes}) ou en indiquant la variable | |
5063 | d'environnement @code{GUIX_PACKAGE_PATH} décrite plus bas. | |
bf5c74e7 | 5064 | |
15f1bff4 JL |
5065 | @item |
5066 | En définissant un @dfn{canal} et en configurant @command{guix pull} pour | |
5067 | qu'il l'utilise. Un canal est essentiellement un dépôt Git contenant des | |
5068 | modules de paquets. @xref{Canaux}, pour plus d'informations sur comment | |
5069 | définir et utiliser des canaux. | |
5070 | @end enumerate | |
bf5c74e7 | 5071 | |
15f1bff4 JL |
5072 | @code{GUIX_PACKAGE_PATH} fonctionne comme les autres variables de chemins de |
5073 | recherche : | |
bf5c74e7 | 5074 | |
15f1bff4 JL |
5075 | @defvr {Variable d'environnement} GUIX_PACKAGE_PATH |
5076 | C'est une liste séparée par des deux-points de répertoires dans lesquels | |
5077 | trouver des modules de paquets supplémentaires. Les répertoires listés dans | |
5078 | cette variable sont prioritaires par rapport aux paquets de la distribution. | |
bf5c74e7 JL |
5079 | @end defvr |
5080 | ||
15f1bff4 JL |
5081 | La distribution est entièrement @dfn{bootstrappée} et @dfn{auto-contenue} : |
5082 | chaque paquet est construit uniquement à partir d'autres paquets de la | |
5083 | distribution. La racine de ce graphe de dépendance est un petit ensemble de | |
5084 | @dfn{binaires de bootstrap} fournis par le module @code{(gnu packages | |
5085 | bootstrap)}. Pour plus d'informations sur le bootstrap, | |
5086 | @pxref{Bootstrapping}. | |
bf5c74e7 | 5087 | |
15f1bff4 JL |
5088 | @node Définition des paquets |
5089 | @section Définition des paquets | |
2cf2c778 | 5090 | |
15f1bff4 JL |
5091 | L'interface de haut-niveau pour les définitions de paquets est implémentée |
5092 | dans les modules @code{(guix packages)} et @code{(guix build-system)}. Par | |
5093 | exemple, la définition du paquet, ou la @dfn{recette}, du paquet GNU Hello | |
5094 | ressemble à cela : | |
bf5c74e7 | 5095 | |
15f1bff4 JL |
5096 | @example |
5097 | (define-module (gnu packages hello) | |
5098 | #:use-module (guix packages) | |
5099 | #:use-module (guix download) | |
5100 | #:use-module (guix build-system gnu) | |
5101 | #:use-module (guix licenses) | |
5102 | #:use-module (gnu packages gawk)) | |
bf5c74e7 | 5103 | |
15f1bff4 JL |
5104 | (define-public hello |
5105 | (package | |
5106 | (name "hello") | |
5107 | (version "2.10") | |
5108 | (source (origin | |
5109 | (method url-fetch) | |
5110 | (uri (string-append "mirror://gnu/hello/hello-" version | |
5111 | ".tar.gz")) | |
5112 | (sha256 | |
5113 | (base32 | |
5114 | "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) | |
5115 | (build-system gnu-build-system) | |
5116 | (arguments '(#:configure-flags '("--enable-silent-rules"))) | |
5117 | (inputs `(("gawk" ,gawk))) | |
5118 | (synopsis "Hello, GNU world: An example GNU package") | |
5119 | (description "Guess what GNU Hello prints!") | |
5120 | (home-page "http://www.gnu.org/software/hello/") | |
5121 | (license gpl3+))) | |
5122 | @end example | |
bf5c74e7 | 5123 | |
15f1bff4 JL |
5124 | @noindent |
5125 | Sans être un expert Scheme, le lecteur peut comprendre la signification des | |
5126 | différents champs présents. Cette expression lie la variable @code{hello} à | |
5127 | un objet @code{<package>}, qui est essentiellement un enregistrement | |
5128 | (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}). On | |
5129 | peut inspecter cet objet de paquet avec les procédures qui se trouvent dans | |
5130 | le module @code{(guix packages)} ; par exemple, @code{(package-name hello)} | |
5131 | renvoie — oh surprise ! — @code{"hello"}. | |
bf5c74e7 | 5132 | |
15f1bff4 JL |
5133 | Avec un peu de chance, vous pourrez importer tout ou partie de la définition |
5134 | du paquet qui vous intéresse depuis un autre répertoire avec la commande | |
5135 | @code{guix import} (@pxref{Invoquer guix import}). | |
bf5c74e7 | 5136 | |
15f1bff4 JL |
5137 | Dans l'exemple précédent, @var{hello} est défini dans un module à part, |
5138 | @code{(gnu packages hello)}. Techniquement, cela n'est pas strictement | |
5139 | nécessaire, mais c'est pratique : tous les paquets définis dans des modules | |
5140 | sous @code{(gnu packages @dots{})} sont automatiquement connus des outils en | |
5141 | ligne de commande (@pxref{Modules de paquets}). | |
bf5c74e7 | 5142 | |
15f1bff4 | 5143 | Il y a quelques points à remarquer dans la définition de paquet précédente : |
bf5c74e7 JL |
5144 | |
5145 | @itemize | |
5146 | @item | |
15f1bff4 JL |
5147 | Le champ @code{source} du paquet est un objet @code{<origin>} (@pxref{Référence d'origine}, pour la référence complète). Ici, on utilise la méthode |
5148 | @code{url-fetch} de @code{(guix download)}, ce qui signifie que la source | |
5149 | est un fichier à télécharger par FTP ou HTTP. | |
bf5c74e7 | 5150 | |
15f1bff4 JL |
5151 | Le préfixe @code{mirror://gnu} demande à @code{url-fetch} d'utiliser l'un |
5152 | des miroirs GNU définis dans @code{(guix download)}. | |
bf5c74e7 | 5153 | |
15f1bff4 JL |
5154 | Le champ @code{sha256} spécifie le hash SHA256 attendu pour le fichier |
5155 | téléchargé. Il est requis et permet à Guix de vérifier l'intégrité du | |
5156 | fichier. La forme @code{(base32 @dots{})} introduit a représentation en | |
5157 | base32 du hash. Vous pouvez obtenir cette information avec @code{guix | |
5158 | download} (@pxref{Invoquer guix download}) et @code{guix hash} | |
5159 | (@pxref{Invoquer guix hash}). | |
bf5c74e7 | 5160 | |
15f1bff4 JL |
5161 | @cindex correctifs |
5162 | Lorsque cela est requis, la forme @code{origin} peut aussi avec un champ | |
5163 | @code{patches} qui liste les correctifs à appliquer et un champ | |
5164 | @code{snippet} qui donne une expression Scheme pour modifier le code source. | |
bf5c74e7 JL |
5165 | |
5166 | @item | |
15f1bff4 JL |
5167 | @cindex Système de construction GNU |
5168 | Le champ @code{build-system} spécifie la procédure pour construire le paquet | |
5169 | (@pxref{Systèmes de construction}). Ici, @var{gnu-build-system} représente le système | |
5170 | de construction GNU familier, où les paquets peuvent être configurés, | |
5171 | construits et installés avec la séquence @code{./configure && make && make | |
5172 | check && make install} habituelle. | |
bf5c74e7 | 5173 | |
15f1bff4 JL |
5174 | @item |
5175 | Le champ @code{arguments} spécifie des options pour le système de | |
5176 | construction (@pxref{Systèmes de construction}). Ici il est interprété par | |
5177 | @var{gnu-build-system} comme une demande de lancer @file{configure} avec le | |
5178 | drapeau @code{--enable-silent-rules}. | |
bf5c74e7 | 5179 | |
15f1bff4 JL |
5180 | @cindex quote |
5181 | @cindex quoting | |
5182 | @findex ' | |
5183 | @findex quote | |
5184 | Que sont ces apostrophes (@code{'}) ? C'est de la syntaxe Scheme pour | |
5185 | introduire une liste ; @code{'} est synonyme de la fonction @code{quote}. | |
5186 | @xref{Expression Syntax, quoting,, guile, GNU Guile Reference Manual}, pour | |
5187 | des détails. Ice la valeur du champ @code{arguments} est une liste | |
5188 | d'arguments passés au système de construction plus tard, comme avec | |
5189 | @code{apply} (@pxref{Fly Evaluation, @code{apply},, guile, GNU Guile | |
5190 | Reference Manual}). | |
2cf2c778 | 5191 | |
15f1bff4 JL |
5192 | La séquence dièse-deux-points (@code{#:}) définie un @dfn{mot-clef} Scheme |
5193 | (@pxref{Keywords,,, guile, GNU Guile Reference Manual}), et | |
5194 | @code{#:configure-flags} est un mot-clef utilisé pour passer un argument au | |
5195 | système de construction (@pxref{Coding With Keywords,,, guile, GNU Guile | |
5196 | Reference Manual}). | |
2cf2c778 | 5197 | |
15f1bff4 JL |
5198 | @item |
5199 | Le champ @code{inputs} spécifie les entrées du processus de construction — | |
5200 | c.-à-d.@: les dépendances à la construction ou à l'exécution du paquet. Ici | |
5201 | on définie une entrée nommée @code{"gawk"} dont la valeur est la variable | |
5202 | @var{gawk} ; @var{gawk} est elle-même liée à un objet @code{<package>}. | |
2cf2c778 | 5203 | |
15f1bff4 JL |
5204 | @cindex accent grave (quasiquote) |
5205 | @findex ` | |
5206 | @findex quasiquote | |
5207 | @cindex virgule (unquote) | |
5208 | @findex , | |
5209 | @findex unquote | |
5210 | @findex ,@@ | |
5211 | @findex unquote-splicing | |
5212 | De nouveau, @code{`} (un accent grave, synonyme de la fonction | |
5213 | @code{quasiquote}) nous permet d'introduire une liste littérale dans le | |
5214 | champ @code{inputs}, tandis que @code{,} (une virgule, synonyme de la | |
5215 | fonction @code{unquote}) nous permet d'insérer une valeur dans cette liste | |
5216 | (@pxref{Expression Syntax, unquote,, guile, GNU Guile Reference Manual}). | |
2cf2c778 | 5217 | |
15f1bff4 JL |
5218 | Remarquez que GCC, Coreutils, Bash et les autres outils essentiels n'ont pas |
5219 | besoin d'être spécifiés en tant qu'entrées ici. À la place, le | |
5220 | @var{gnu-build-system} est en charge de s'assurer qu'ils sont présents | |
5221 | (@pxref{Systèmes de construction}). | |
2cf2c778 | 5222 | |
15f1bff4 JL |
5223 | Cependant, toutes les autres dépendances doivent être spécifiées dans le |
5224 | champ @code{inputs}. Toute dépendance qui ne serait pas spécifiée ici sera | |
5225 | simplement indisponible pour le processus de construction, ce qui peut mener | |
5226 | à un échec de la construction. | |
5227 | @end itemize | |
2cf2c778 | 5228 | |
15f1bff4 JL |
5229 | @xref{Référence de paquet}, pour une description complète des champs |
5230 | possibles. | |
2cf2c778 | 5231 | |
15f1bff4 JL |
5232 | Lorsqu'une définition de paquet est en place, le paquet peut enfin être |
5233 | construit avec l'outil en ligne de commande @code{guix build} | |
5234 | (@pxref{Invoquer guix build}), pour résoudre les échecs de construction que | |
5235 | vous pourriez rencontrer (@pxref{Débogage des échecs de construction}). Vous pouvez | |
5236 | aisément revenir à la définition du paquet avec la commande @command{guix | |
5237 | edit} (@pxref{Invoquer guix edit}). @xref{Consignes d'empaquetage}, pour plus | |
5238 | d'informations sur la manière de tester des définitions de paquets et | |
5239 | @ref{Invoquer guix lint}, pour des informations sur la manière de vérifier | |
5240 | que la définition respecte les conventions de style. | |
5241 | @vindex GUIX_PACKAGE_PATH | |
5242 | Enfin, @pxref{Canaux} pour des informations sur la manière d'étendre la | |
5243 | distribution en ajoutant vos propres définitions de paquets dans un « canal | |
5244 | ». | |
2cf2c778 | 5245 | |
15f1bff4 JL |
5246 | Finalement, la mise à jour de la définition du paquet à une nouvelle version |
5247 | amont peut en partie s'automatiser avec la commande @command{guix refresh} | |
5248 | (@pxref{Invoquer guix refresh}). | |
bf5c74e7 | 5249 | |
15f1bff4 JL |
5250 | Sous le capot, une dérivation qui correspond à un objet @code{<package>} est |
5251 | d'abord calculé par la procédure @code{package-derivation}. Cette | |
5252 | dérivation est stockée dans un fichier @code{.drv} dans @file{/gnu/store}. | |
5253 | Les actions de construction qu'il prescrit peuvent ensuite être réalisées | |
5254 | par la procédure @code{build-derivation} (@pxref{Le dépôt}). | |
adfb167f | 5255 | |
15f1bff4 JL |
5256 | @deffn {Procédure Scheme} package-derivation @var{store} @var{package} [@var{system}] |
5257 | Renvoie l'objet @code{<derivation>} du @var{paquet} pour le @var{système} | |
5258 | (@pxref{Dérivations}). | |
5259 | ||
5260 | @var{paquet} doit être un objet @code{<package>} valide et @var{système} une | |
5261 | chaîne indiquant le type de système cible — p.ex.@: @code{"x86_64-linux"} | |
5262 | pour un système GNU x86_64 basé sur Linux. @var{dépôt} doit être une | |
5263 | connexion au démon, qui opère sur les dépôt (@pxref{Le dépôt}). | |
bf5c74e7 JL |
5264 | @end deffn |
5265 | ||
5266 | @noindent | |
15f1bff4 JL |
5267 | @cindex compilation croisée |
5268 | De manière identique, il est possible de calculer une dérivation qui | |
5269 | effectue une compilation croisée d'un paquet pour un autre système : | |
bf5c74e7 | 5270 | |
15f1bff4 JL |
5271 | @deffn {Procédure Scheme} package-cross-derivation @var{store} @ |
5272 | @var{paquet} @var{cible} [@var{système}] renvoie l'objet @code{<derivation>} | |
5273 | du @var{paquet} construit depuis @var{système} pour @var{cible}. | |
bf5c74e7 | 5274 | |
15f1bff4 JL |
5275 | @var{cible} doit être un triplet GNU valide indiquant le matériel cible et |
5276 | le système d'exploitation, comme @code{"mips64el-linux-gnu"} | |
5277 | (@pxref{Configuration Names, GNU configuration triplets,, configure, GNU | |
5278 | Configure and Build System}). | |
5279 | @end deffn | |
bf5c74e7 | 5280 | |
15f1bff4 JL |
5281 | @cindex transformations de paquets |
5282 | @cindex réécriture d'entrées | |
5283 | @cindex réécriture de l'arbre des dépendances | |
5284 | On peut manipuler les paquets de manière arbitraire. Une transformation | |
5285 | utile est par exemple la @dfn{réécriture d'entrées} où l'arbre des | |
5286 | dépendances d'un paquet est réécrit en replaçant des entrées spécifiques par | |
5287 | d'autres : | |
bf5c74e7 | 5288 | |
15f1bff4 JL |
5289 | @deffn {Procédure Scheme} package-input-rewriting @var{replacements} @ |
5290 | [@var{nom-réécrit}] Renvoie une procédure qui, lorsqu'on lui donne un | |
5291 | paquet, remplace des dépendances directes et indirectes (mais pas ses | |
5292 | entrées implicites) en fonction de @var{remplacements}. @var{remplacements} | |
5293 | est une liste de paires de paquets ; le premier élément de chaque pair est | |
5294 | le paquet à remplacer, le second son remplaçant. | |
524756d1 | 5295 | |
15f1bff4 JL |
5296 | De manière facultative, @var{nom-réécrit} est une procédure à un argument |
5297 | qui prend le nom d'un paquet et renvoie son nouveau nom après l'avoir | |
5298 | réécrit. | |
5299 | @end deffn | |
524756d1 | 5300 | |
15f1bff4 JL |
5301 | @noindent |
5302 | Regardez cet exemple : | |
524756d1 | 5303 | |
15f1bff4 JL |
5304 | @example |
5305 | (define libressl-instead-of-openssl | |
5306 | ;; Cette procédure remplace OPENSSL par LIBRESSL, | |
5307 | ;; récursivement. | |
5308 | (package-input-rewriting `((,openssl . ,libressl)))) | |
524756d1 | 5309 | |
15f1bff4 JL |
5310 | (define git-with-libressl |
5311 | (libressl-instead-of-openssl git)) | |
5312 | @end example | |
bf5c74e7 JL |
5313 | |
5314 | @noindent | |
15f1bff4 JL |
5315 | Ici nous définissons d'abord une procédure de réécriture qui remplace |
5316 | @var{openssl} par @var{libressl}. Ensuite nous l'utilisons pour définir une | |
5317 | @dfn{variante} du paquet @var{git} qui utilise @var{libressl} plutôt que | |
5318 | @var{openssl}. cela est exactement ce que l'option en ligne de commande | |
5319 | @option{--with-input} fait (@pxref{Options de transformation de paquets, | |
5320 | @option{--with-input}}). | |
bf5c74e7 | 5321 | |
15f1bff4 JL |
5322 | Une procédure plus générique pour réécrire un graphe de dépendance d'un |
5323 | paquet est @code{package-mapping} : elle supporte n'importe quel changement | |
5324 | dans les nœuds du graphe. | |
bf5c74e7 | 5325 | |
15f1bff4 JL |
5326 | @deffn {Procédure Scheme} package-mapping @var{proc} [@var{cut?}] |
5327 | Renvoie une procédure qui, avec un paquet, applique @var{proc} sur tous les | |
5328 | paquets dont il dépend et renvoie le paquet qui en résulte. La procédure | |
5329 | arrête la récursion là où @var{cut?} renvoie vrai pour un paquet donné. | |
5330 | @end deffn | |
bf5c74e7 | 5331 | |
15f1bff4 JL |
5332 | @menu |
5333 | * Référence de paquet:: Le type de donnée des paquets. | |
5334 | * Référence d'origine:: Le type de données d'origine. | |
5335 | @end menu | |
bf5c74e7 | 5336 | |
bf5c74e7 | 5337 | |
15f1bff4 JL |
5338 | @node Référence de paquet |
5339 | @subsection Référence de @code{package} | |
bf5c74e7 | 5340 | |
15f1bff4 JL |
5341 | Cette section résume toutes les options disponibles dans les déclarations |
5342 | @code{package} (@pxref{Définition des paquets}). | |
524756d1 | 5343 | |
15f1bff4 JL |
5344 | @deftp {Type de données} package |
5345 | C'est le type de donnée représentant une recette de paquets | |
524756d1 | 5346 | |
15f1bff4 JL |
5347 | @table @asis |
5348 | @item @code{name} | |
5349 | Le nom du paquet, comme une chaîne de caractères. | |
524756d1 | 5350 | |
15f1bff4 JL |
5351 | @item @code{version} |
5352 | La version du paquet, comme une chaîne de caractères. | |
bf5c74e7 | 5353 | |
15f1bff4 JL |
5354 | @item @code{source} |
5355 | Un objet qui indique comment le code source du paquet devrait être | |
5356 | récupéré. La plupart du temps, c'est un objet @code{origin} qui indique un | |
5357 | fichier récupéré depuis internet (@pxref{Référence d'origine}). Il peut aussi | |
5358 | s'agir de tout autre objet ``simili-fichier'' comme un @code{local-file} qui | |
5359 | indique un fichier du système de fichier local (@pxref{G-Expressions, | |
5360 | @code{local-file}}). | |
bf5c74e7 | 5361 | |
15f1bff4 JL |
5362 | @item @code{build-system} |
5363 | Le système de construction qui devrait être utilisé pour construire le | |
5364 | paquet (@pxref{Systèmes de construction}). | |
5365 | ||
5366 | @item @code{arguments} (par défaut : @code{'()}) | |
5367 | Les arguments à passer au système de construction. C'est une liste qui | |
5368 | contient typiquement une séquence de paires de clefs-valeurs. | |
5369 | ||
5370 | @item @code{inputs} (par défaut : @code{'()}) | |
5371 | @itemx @code{native-inputs} (par défaut : @code{'()}) | |
5372 | @itemx @code{propagated-inputs} (par défaut : @code{'()}) | |
5373 | @cindex entrées, des paquets | |
5374 | Ces champs listent les dépendances du paquet. Chacune est une liste de | |
5375 | tuples, où chaque tuple a une étiquette pour une entrée (une chaîne de | |
5376 | caractères) comme premier élément, un paquet, une origine ou une dérivation | |
5377 | comme deuxième élément et éventuellement le nom d'une sortie à utiliser qui | |
5378 | est @code{"out"} par défaut (@pxref{Des paquets avec plusieurs résultats}, pour | |
5379 | plus d'informations sur les sorties des paquets). Par exemple, la liste | |
5380 | suivante spécifie trois entrées : | |
bf5c74e7 JL |
5381 | |
5382 | @example | |
15f1bff4 JL |
5383 | `(("libffi" ,libffi) |
5384 | ("libunistring" ,libunistring) | |
5385 | ("glib:bin" ,glib "bin")) ;la sortie "bin" de Glib | |
bf5c74e7 JL |
5386 | @end example |
5387 | ||
15f1bff4 JL |
5388 | @cindex compilation croisée, dépendances des paquets |
5389 | La distinction entre @code{native-inputs} et @code{inputs} est nécessaire | |
5390 | lorsqu'on considère la compilation croisée. Lors d'une compilation croisée, | |
5391 | les dépendances listées dans @code{inputs} sont construites pour | |
5392 | l'architecture @emph{cible} ; inversement, les dépendances listées dans | |
5393 | @code{native-inputs} sont construites pour l'architecture de la machine de | |
5394 | @emph{construction}. | |
bf5c74e7 | 5395 | |
15f1bff4 JL |
5396 | @code{native-inputs} est typiquement utilisé pour lister les outils requis à |
5397 | la construction mais pas à l'exécution, comme Autoconf, Automake, | |
5398 | pkg-config, Gettext ou Bison. @command{guix lint} peut rapporter des | |
5399 | erreurs de ce type (@pxref{Invoquer guix lint}). | |
bf5c74e7 | 5400 | |
15f1bff4 JL |
5401 | @anchor{package-propagated-inputs} |
5402 | Enfin, @code{propagated-inputs} est similaire à @code{inputs}, mais les | |
5403 | paquets spécifiés seront automatiquement installés avec le paquet auquel ils | |
5404 | appartiennent (@pxref{package-cmd-propagated-inputs, @command{guix | |
5405 | package}}, pour des informations sur la manière dont @command{guix package} | |
5406 | traite les entrées propagées). | |
bf5c74e7 | 5407 | |
15f1bff4 JL |
5408 | Par exemple cela est nécessaire lorsque des bibliothèques C/C++ ont besoin |
5409 | d'en-têtes d'une autre bibliothèque pour être compilé ou lorsqu'un fichier | |
5410 | pkg-config se rapporte à un autre @i{via} son champ @code{Requires}. | |
bf5c74e7 | 5411 | |
15f1bff4 JL |
5412 | Un autre exemple où @code{propagated-inputs} est utile est pour les langages |
5413 | auxquels il manque un moyen de retenir le chemin de recherche comme c'est le | |
5414 | cas du @code{RUNPATH} des fichiers ELF ; cela comprend Guile, Python, Perl | |
5415 | et plus. Pour s'assurer que les bibliothèques écrites dans ces langages | |
5416 | peuvent trouver le code des bibliothèques dont elles dépendent à | |
5417 | l'exécution, les dépendances à l'exécution doivent être listées dans | |
5418 | @code{propagated-inputs} plutôt que @code{inputs}. | |
bf5c74e7 | 5419 | |
15f1bff4 JL |
5420 | @item @code{self-native-input?} (par défaut : @code{#f}) |
5421 | C'est un champ booléen qui indique si le paquet devrait s'utiliser lui-même | |
5422 | comme entrée native lors de la compilation croisée. | |
bf5c74e7 | 5423 | |
15f1bff4 JL |
5424 | @item @code{outputs} (par défaut : @code{'("out")}) |
5425 | La liste des noms de sorties du paquet. @xref{Des paquets avec plusieurs résultats}, pour des exemples typiques d'utilisation de sorties | |
5426 | supplémentaires. | |
bf5c74e7 | 5427 | |
15f1bff4 JL |
5428 | @item @code{native-search-paths} (par défaut : @code{'()}) |
5429 | @itemx @code{search-paths} (par défaut : @code{'()}) | |
5430 | Une liste d'objets @code{search-path-specification} décrivant les variables | |
5431 | d'environnement de recherche de chemins que ce paquet utilise. | |
bf5c74e7 | 5432 | |
15f1bff4 JL |
5433 | @item @code{replacement} (par défaut : @code{#f}) |
5434 | Ce champ doit être soit @code{#f} soit un objet de paquet qui sera utilisé | |
5435 | comme @dfn{remplaçant} de ce paquet. @xref{Mises à jour de sécurité, grafts}, pour | |
5436 | plus de détails. | |
bf5c74e7 | 5437 | |
15f1bff4 JL |
5438 | @item @code{synopsis} |
5439 | Une description sur une ligne du paquet. | |
bf5c74e7 | 5440 | |
15f1bff4 JL |
5441 | @item @code{description} |
5442 | Une description plus détaillée du paquet. | |
bf5c74e7 | 5443 | |
15f1bff4 JL |
5444 | @item @code{license} |
5445 | @cindex licence, des paquets | |
5446 | La licence du paquet ; une valeur tirée de @code{(guix licenses)} ou une | |
5447 | liste de ces valeurs. | |
bf5c74e7 | 5448 | |
15f1bff4 JL |
5449 | @item @code{home-page} |
5450 | L'URL de la page d'accueil du paquet, en tant que chaîne de caractères. | |
bf5c74e7 | 5451 | |
15f1bff4 JL |
5452 | @item @code{supported-systems} (par défaut : @var{%supported-systems}) |
5453 | La liste des systèmes supportés par le paquet, comme des chaînes de | |
5454 | caractères de la forme @code{architecture-noyau}, par exemple | |
5455 | @code{"x86_64-linux"}. | |
bf5c74e7 | 5456 | |
15f1bff4 JL |
5457 | @item @code{maintainers} (par défaut : @code{'()}) |
5458 | La liste des mainteneurs du paquet, comme des objets @code{maintainer}. | |
bf5c74e7 | 5459 | |
15f1bff4 JL |
5460 | @item @code{location} (par défaut : emplacement de la source de la forme @code{package}) |
5461 | L'emplacement de la source du paquet. C'est utile de le remplacer lorsqu'on | |
5462 | hérite d'un autre paquet, auquel cas ce champ n'est pas automatiquement | |
5463 | corrigé. | |
5464 | @end table | |
5465 | @end deftp | |
bf5c74e7 | 5466 | |
524756d1 | 5467 | |
15f1bff4 JL |
5468 | @node Référence d'origine |
5469 | @subsection Référence de @code{origin} | |
bf5c74e7 | 5470 | |
15f1bff4 JL |
5471 | Cette section résume toutes les options disponibles dans le déclarations |
5472 | @code{origin} (@pxref{Définition des paquets}). | |
bf5c74e7 | 5473 | |
15f1bff4 JL |
5474 | @deftp {Type de données} origin |
5475 | C'est le type de donnée qui représente l'origine d'un code source. | |
bf5c74e7 | 5476 | |
15f1bff4 JL |
5477 | @table @asis |
5478 | @item @code{uri} | |
5479 | Un objet contenant l'URI de la source. Le type d'objet dépend de la | |
5480 | @code{method} (voir plus bas). Par exemple, avec la méthode @var{url-fetch} | |
5481 | de @code{(guix download)}, les valeurs valide d'@code{uri} sont : une URL | |
5482 | représentée par une chaîne de caractères, ou une liste de chaînes de | |
5483 | caractères. | |
bf5c74e7 | 5484 | |
15f1bff4 JL |
5485 | @item @code{method} |
5486 | Un procédure qui gère l'URI. | |
bf5c74e7 | 5487 | |
15f1bff4 | 5488 | Quelques exemples : |
bf5c74e7 | 5489 | |
15f1bff4 JL |
5490 | @table @asis |
5491 | @item @var{url-fetch} de @code{(guix download)} | |
5492 | télécharge un fichier depuis l'URL HTTP, HTTPS ou FTP spécifiée dans le | |
5493 | champ @code{uri} ; | |
bf5c74e7 | 5494 | |
15f1bff4 JL |
5495 | @vindex git-fetch |
5496 | @item @var{git-fetch} de @code{(guix git-download)} | |
5497 | clone le dépôt sous contrôle de version Git et récupère la révision | |
5498 | spécifiée dans le champ @code{uri} en tant qu'objet @code{git-reference} ; | |
5499 | un objet @code{git-reference} ressemble à cela : | |
bf5c74e7 JL |
5500 | |
5501 | @example | |
15f1bff4 JL |
5502 | (git-reference |
5503 | (url "git://git.debian.org/git/pkg-shadow/shadow") | |
5504 | (commit "v4.1.5.1")) | |
bf5c74e7 | 5505 | @end example |
15f1bff4 | 5506 | @end table |
bf5c74e7 | 5507 | |
15f1bff4 JL |
5508 | @item @code{sha256} |
5509 | Un bytevector contenant le hash SHA-256 de la source. Typiquement la forme | |
5510 | @code{base32} est utilisée ici pour générer le bytevector depuis une chaîne | |
5511 | de caractères en base-32. | |
5512 | ||
5513 | Vous pouvez obtenir cette information avec @code{guix download} | |
5514 | (@pxref{Invoquer guix download}) ou @code{guix hash} (@pxref{Invoquer guix hash}). | |
5515 | ||
5516 | @item @code{file-name} (par défaut : @code{#f}) | |
5517 | Le nom de fichier à utiliser pour sauvegarder le fichier. Lorsqu'elle est à | |
5518 | @code{#f}, une valeur par défaut raisonnable est utilisée dans la plupart | |
5519 | des cas. Dans le cas où la source est récupérée depuis une URL, le nom de | |
5520 | fichier est celui de l'URL. Pour les sources récupérées depuis un outil de | |
5521 | contrôle de version, il est recommandé de fournir un nom de fichier | |
5522 | explicitement parce que le nom par défaut n'est pas très descriptif. | |
5523 | ||
5524 | @item @code{patches} (par défaut : @code{'()}) | |
5525 | Une liste de noms de fichiers, d'origines ou d'objets simili-fichiers | |
5526 | (@pxref{G-Expressions, file-like objects}) qui pointent vers des correctifs | |
5527 | à appliquer sur la source. | |
5528 | ||
5529 | Cette liste de correctifs doit être inconditionnelle. En particulier, elle | |
5530 | ne peut pas dépendre des valeurs de @code{%current-system} ou | |
5531 | @code{%current-target-system}. | |
bf5c74e7 | 5532 | |
15f1bff4 JL |
5533 | @item @code{snippet} (par défaut : @code{#f}) |
5534 | Une G-expression (@pxref{G-Expressions}) ou une S-expression qui sera lancée | |
5535 | dans le répertoire des sources. C'est une manière pratique de modifier la | |
5536 | source, parfois plus qu'un correctif. | |
bf5c74e7 | 5537 | |
15f1bff4 JL |
5538 | @item @code{patch-flags} (par défaut : @code{'("-p1")}) |
5539 | Une liste de drapeaux à passer à la commande @code{patch}. | |
bf5c74e7 | 5540 | |
15f1bff4 JL |
5541 | @item @code{patch-inputs} (par défaut : @code{#f}) |
5542 | Paquets d'entrées ou dérivations pour le processus de correction. | |
5543 | Lorsqu'elle est à @code{#f}, l'ensemble d'entrées habituellement nécessaire | |
5544 | pour appliquer des correctifs est fournit, comme GNU@tie{}Patch. | |
bf5c74e7 | 5545 | |
15f1bff4 JL |
5546 | @item @code{modules} (par défaut : @code{'()}) |
5547 | Une liste de modules Guile qui devraient être chargés pendant le processus | |
5548 | de correction et pendant que le lancement du code du champ @code{snippet}. | |
bf5c74e7 | 5549 | |
15f1bff4 JL |
5550 | @item @code{patch-guile} (par défaut : @code{#f}) |
5551 | Le paquet Guile à utiliser dans le processus de correction. Lorsqu'elle est | |
5552 | à @code{#f}, une valeur par défaut raisonnable est utilisée. | |
5553 | @end table | |
5554 | @end deftp | |
bf5c74e7 | 5555 | |
bf5c74e7 | 5556 | |
15f1bff4 JL |
5557 | @node Systèmes de construction |
5558 | @section Systèmes de construction | |
bf5c74e7 | 5559 | |
15f1bff4 JL |
5560 | @cindex système de construction |
5561 | Chaque définition de paquet définie un @dfn{système de construction} et des | |
5562 | arguments pour ce système de construction (@pxref{Définition des paquets}). Ce | |
5563 | champ @code{build-system} représente la procédure de construction du paquet, | |
5564 | ainsi que des dépendances implicites pour cette procédure de construction. | |
bf5c74e7 | 5565 | |
15f1bff4 JL |
5566 | Les systèmes de construction sont des objets |
5567 | @code{<build-system>}. L'interface pour les créer et les manipuler est | |
5568 | fournie par le module @code{(guix build-system)} et les systèmes de | |
5569 | construction eux-mêmes sont exportés par des modules spécifiques. | |
bf5c74e7 | 5570 | |
15f1bff4 JL |
5571 | @cindex sac (représentation à bas-niveau des paquets) |
5572 | Sous le capot, les systèmes de construction compilent d'abord des objets | |
5573 | paquets en @dfn{sacs}. Un @dfn{sac} est comme un paquet, mais avec moins de | |
5574 | décoration — en d'autres mots, un sac est une représentation à bas-niveau | |
5575 | d'un paquet, qui inclus toutes les entrées de ce paquet, dont certaines ont | |
5576 | été implicitement ajoutées par le système de construction. Cette | |
5577 | représentation intermédiaire est ensuite compilée en une dérivation | |
5578 | (@pxref{Dérivations}). | |
524756d1 | 5579 | |
15f1bff4 JL |
5580 | Les systèmes de construction acceptent une liste d'@dfn{arguments} |
5581 | facultatifs. Dans les définitions de paquets, ils sont passés @i{via} le | |
5582 | champ @code{arguments} (@pxref{Définition des paquets}). Ce sont typiquement des | |
5583 | arguments par mot-clef (@pxref{Optional Arguments, keyword arguments in | |
5584 | Guile,, guile, GNU Guile Reference Manual}). La valeur de ces arguments est | |
5585 | habituellement évaluée dans la @dfn{strate de construction} — c.-à-d.@: par | |
5586 | un processus Guile lancé par le démon (@pxref{Dérivations}). | |
bf5c74e7 | 5587 | |
15f1bff4 JL |
5588 | Le système de construction principal est le @var{gnu-build-system} qui |
5589 | implémente les procédures de construction standard pour les paquets GNU et | |
5590 | de nombreux autres. Il est fournit par le module @code{(guix build-system | |
5591 | gnu)}. | |
bf5c74e7 | 5592 | |
15f1bff4 JL |
5593 | @defvr {Variable Scheme} gnu-build-system |
5594 | @var{gnu-build-system} représente le système de construction GNU et ses | |
5595 | variantes (@pxref{Configuration, configuration and makefile conventions,, | |
5596 | standards, GNU Coding Standards}). | |
bf5c74e7 | 5597 | |
15f1bff4 JL |
5598 | @cindex phases de construction |
5599 | En résumé, les paquets qui l'utilisent sont configurés, construits et | |
5600 | installés avec la séquence @code{./configure && make && make check && make | |
5601 | install} habituelle. En pratique, des étapes supplémentaires sont souvent | |
5602 | requises. Toutes ces étapes sont séparées dans des @dfn{phases} | |
5603 | différentes, notamment@footnote{Regardez les modules @code{(guix build | |
5604 | gnu-build-system)} pour plus de détails sur les phases de construction.}: | |
bf5c74e7 | 5605 | |
15f1bff4 JL |
5606 | @table @code |
5607 | @item unpack | |
5608 | Décompresse l'archive des sources et se déplace dans l'arborescence des | |
5609 | sources fraîchement extraites. Si la source est en fait un répertoire, le | |
5610 | copie dans l'arborescence de construction et entre dans ce répertoire. | |
bf5c74e7 | 5611 | |
15f1bff4 JL |
5612 | @item patch-source-shebangs |
5613 | Corrige les shebangs (@code{#!}) rencontrés dans les fichiers pour qu'ils se | |
5614 | réfèrent aux bons noms de fichiers. Par exemple, elle change | |
5615 | @code{#!/bin/sh} en @code{#!/gnu/store/@dots{}-bash-4.3/bin/sh}. | |
bf5c74e7 | 5616 | |
15f1bff4 JL |
5617 | @item configure |
5618 | Lance le script @code{configure} avec un certain nombre d'options par | |
5619 | défaut, comme @code{--prefix=/gnu/store/@dots{}}, ainsi que les options | |
5620 | spécifiées par l'argument @code{#:configure-flags}. | |
bf5c74e7 | 5621 | |
15f1bff4 JL |
5622 | @item build |
5623 | Lance @code{make} avec la liste des drapeaux spécifiés avec | |
5624 | @code{#:make-flags}. Si l'argument @code{#:parallel-build?} est vrai (par | |
5625 | défaut), construit avec @code{make -j}. | |
bf5c74e7 | 5626 | |
15f1bff4 JL |
5627 | @item check |
5628 | Lance @code{make check}, ou une autre cible spécifiée par | |
5629 | @code{#:test-target}, à moins que @code{#:tests? #f} ne soit passé. Si | |
5630 | l'argument @code{#:parallel-tests?} est vrai (par défaut), lance @code{make | |
5631 | check -j}. | |
524756d1 | 5632 | |
15f1bff4 JL |
5633 | @item install |
5634 | Lance @code{make install} avec les drapeaux listés dans @code{#:make-flags}. | |
bf5c74e7 | 5635 | |
15f1bff4 JL |
5636 | @item patch-shebangs |
5637 | Corrige les shebangs des fichiers exécutables installés. | |
bf5c74e7 | 5638 | |
15f1bff4 JL |
5639 | @item strip |
5640 | Nettoie les symboles de débogage dans les fichiers ELF (à moins que | |
5641 | @code{#:strip-binaries?} ne soit faux), les copie dans la sortie | |
5642 | @code{debug} lorsqu'elle est disponible (@pxref{Installer les fichiers de débogage}). | |
5643 | @end table | |
bf5c74e7 | 5644 | |
15f1bff4 JL |
5645 | @vindex %standard-phases |
5646 | Le module du côté du constructeur @code{(guix build gnu-build-system)} | |
5647 | définie @var{%standard-phases} comme la liste par défaut des phases de | |
5648 | construction. @var{%standard-phases} est une liste de paires de symboles | |
5649 | et de procédures, où la procédure implémente la phase en question. | |
bf5c74e7 | 5650 | |
15f1bff4 JL |
5651 | La liste des phases utilisées par un paquet particulier peut être modifiée |
5652 | avec le paramètre @code{#:phases}. Par exemple, en passant : | |
524756d1 | 5653 | |
15f1bff4 JL |
5654 | @example |
5655 | #:phases (modify-phases %standard-phases (delete 'configure)) | |
5656 | @end example | |
524756d1 | 5657 | |
15f1bff4 JL |
5658 | signifie que toutes les procédures décrites plus haut seront utilisées, sauf |
5659 | la phase @code{configure}. | |
524756d1 | 5660 | |
15f1bff4 JL |
5661 | En plus, ce système de construction s'assure que l'environnement « standard |
5662 | » pour les paquets GNU est disponible. Cela inclus des outils comme GCC, | |
5663 | libc, Coreutils, Bash, Make, Diffutils, grep et sed (voir le module | |
5664 | @code{(guix build-system gnu)} pour une liste complète). Nous les appelons | |
5665 | les @dfn{entrées implicites} d'un paquet parce que la définition du paquet | |
5666 | ne les mentionne pas. | |
5667 | @end defvr | |
bf5c74e7 | 5668 | |
15f1bff4 JL |
5669 | D'autres objets @code{<build-system>} sont définis pour supporter d'autres |
5670 | conventions et outils utilisés par les paquets de logiciels libres. Ils | |
5671 | héritent de la plupart de @var{gnu-build-system} et diffèrent surtout dans | |
5672 | l'ensemble des entrées implicites ajoutées au processus de construction et | |
5673 | dans la liste des phases exécutées. Certains de ces systèmes de | |
5674 | construction sont listés ci-dessous. | |
bf5c74e7 | 5675 | |
15f1bff4 JL |
5676 | @defvr {Variable Scheme} ant-build-system |
5677 | Cette variable est exportée par @code{(guix build-system ant)}. Elle | |
5678 | implémente la procédure de construction pour les paquets Java qui peuvent | |
5679 | être construits avec @url{http://ant.apache.org/, l'outil de construction | |
5680 | Ant}. | |
bf5c74e7 | 5681 | |
15f1bff4 JL |
5682 | Elle ajoute à la fois @code{ant} et the @dfn{kit de développement Java} |
5683 | (JDK) fournit par le paquet @code{icedtea} à l'ensemble des entrées. Des | |
5684 | paquets différents peuvent être spécifiés avec les paramètres @code{#:ant} | |
5685 | et @code{#:jdk} respectivement. | |
5686 | ||
5687 | Lorsque le paquet d'origine ne fournit pas de fichier de construction Ant | |
5688 | acceptable, le paramètre @code{#:jar-name} peut être utilisé pour générer un | |
5689 | fichier de construction Ant @file{build.xml} minimal, avec des tâches pour | |
5690 | construire l'archive jar spécifiée. Dans ce cas, le paramètre | |
5691 | @code{#:source-dir} peut être utilisé pour spécifier le sous-répertoire des | |
5692 | sources, par défaut « src ». | |
bf5c74e7 | 5693 | |
15f1bff4 JL |
5694 | Le paramètre @code{#:main-class} peut être utilisé avec le fichier de |
5695 | construction minimal pour spécifier la classe principale du jar. Cela rend | |
5696 | le fichier jar exécutable. Le paramètre @code{#:test-include} peut être | |
5697 | utilisé pour spécifier la liste des tests junits à lancer. Il vaut par | |
5698 | défaut @code{(list "**/*Test.java")}. Le paramètre @code{#:test-exclude} | |
5699 | peut être utilisé pour désactiver certains tests. Sa valeur par défaut est | |
5700 | @code{(list "**/Abstract*.java")}, parce que les classes abstraites ne | |
5701 | peuvent pas être utilisées comme des tests. | |
bf5c74e7 | 5702 | |
15f1bff4 JL |
5703 | Le paramètre @code{#:build-target} peut être utilisé pour spécifier la tâche |
5704 | Ant qui devrait être lancée pendant la phase @code{build}. Par défaut la | |
5705 | tâche « jar » sera lancée. | |
bf5c74e7 | 5706 | |
15f1bff4 | 5707 | @end defvr |
bf5c74e7 | 5708 | |
15f1bff4 JL |
5709 | @defvr {Variable Scheme} android-ndk-build-system |
5710 | @cindex Distribution android | |
5711 | @cindex système de construction Android NDK | |
5712 | Cette variable est exportée par @code{(guix build-system android-ndk)}. | |
5713 | Elle implémente une procédure de construction pour les paquets du NDK | |
5714 | Android (@i{native development kit}) avec des processus de construction | |
5715 | spécifiques à Guix. | |
bf5c74e7 | 5716 | |
15f1bff4 JL |
5717 | Le système de construction suppose que les paquets installent leur interface |
5718 | publique (les en-têtes) dans un sous-répertoire de « include » de la sortie | |
5719 | « out » et leurs bibliothèques dans le sous-répertoire « lib » de la sortie | |
5720 | « out ». | |
bf5c74e7 | 5721 | |
15f1bff4 JL |
5722 | Il est aussi supposé que l'union de toutes les dépendances d'un paquet n'a |
5723 | pas de fichiers en conflit. | |
bf5c74e7 | 5724 | |
15f1bff4 JL |
5725 | Pour l'instant, la compilation croisée n'est pas supportées — donc pour |
5726 | l'instant les bibliothèques et les fichiers d'en-têtes sont supposés être | |
5727 | des outils de l'hôte. | |
bf5c74e7 | 5728 | |
15f1bff4 | 5729 | @end defvr |
bf5c74e7 | 5730 | |
15f1bff4 JL |
5731 | @defvr {Variable Scheme} asdf-build-system/source |
5732 | @defvrx {Variable Scheme} asdf-build-system/sbcl | |
5733 | @defvrx {Variable Scheme} asdf-build-system/ecl | |
bf5c74e7 | 5734 | |
15f1bff4 JL |
5735 | Ces variables, exportées par @code{(guix build-system asdf)}, implémentent |
5736 | les procédures de constructions pour les paquets en Common Lisp qui | |
5737 | utilisent @url{https://common-lisp.net/project/asdf/, ``ASDF''}. ASDF est | |
5738 | un dispositif de définition de systèmes pour les programmes et les | |
5739 | bibliothèques en Common Lisp. | |
bf5c74e7 | 5740 | |
15f1bff4 JL |
5741 | Le système @code{asdf-build-system/source} installe les paquets au format |
5742 | source qui peuvent être chargés avec n'importe quelle implémentation de | |
5743 | common lisp, via ASDF. Les autres, comme @code{asdf-build-system/sbcl}, | |
5744 | installent des binaires au format qu'un implémentation particulière | |
5745 | comprend. Ces systèmes de constructions peuvent aussi être utilisés pour | |
5746 | produire des programmes exécutables ou des images lisp qui contiennent un | |
5747 | ensemble de paquets pré-chargés. | |
bf5c74e7 | 5748 | |
15f1bff4 JL |
5749 | Le système de construction utilise des conventions de nommage. Pour les |
5750 | paquets binaires, le nom du paquet devrait être préfixé par l'implémentation | |
5751 | lisp, comme @code{sbcl-} pour @code{asdf-build-system/sbcl}. | |
bf5c74e7 | 5752 | |
15f1bff4 JL |
5753 | En plus, le paquet source correspondant devrait étiquetté avec la même |
5754 | convention que les paquets python (voir @ref{Modules python}), avec le | |
5755 | préfixe @code{cl-}. | |
bf5c74e7 | 5756 | |
15f1bff4 JL |
5757 | Pour les paquets binaires, chaque système devrait être défini comme un |
5758 | paquet Guix. Si un paquet @code{origine} contient plusieurs systèmes, on | |
5759 | peut créer des variantes du paquet pour construire tous les systèmes. Les | |
5760 | paquets sources, qui utilisent @code{asdf-build-system/source}, peuvent | |
5761 | contenir plusieurs systèmes. | |
bf5c74e7 | 5762 | |
15f1bff4 JL |
5763 | Pour créer des programmes exécutables et des images, les procédures côté |
5764 | construction @code{build-program} et @code{build-image} peuvent être | |
5765 | utilisées. Elles devraient être appelées dans une phase de construction | |
5766 | après la phase @code{create-symlinks} pour que le système qui vient d'être | |
5767 | construit puisse être utilisé dans l'image créée. @code{build-program} | |
5768 | requiert une liste d'expressions Common Lisp dans l'argument | |
5769 | @code{#:entry-program}. | |
bf5c74e7 | 5770 | |
15f1bff4 JL |
5771 | Si le système n'est pas défini dans son propre fichier @code{.asd} du même |
5772 | nom, alors le paramètre @code{#:asd-file} devrait être utilisé pour | |
5773 | spécifier dans quel fichier le système est défini. De plus, si le paquet | |
5774 | défini un système pour ses tests dans un fichier séparé, il sera chargé | |
5775 | avant que les tests ne soient lancés s'il est spécifié par le paramètre | |
5776 | @code{#:test-asd-file}. S'il n'est pas spécifié, les fichiers | |
5777 | @code{<system>-tests.asd}, @code{<system>-test.asd}, @code{tests.asd} et | |
5778 | @code{test.asd} seront testés. | |
3cacfa9e | 5779 | |
15f1bff4 JL |
5780 | Si pour quelque raison que ce soit le paquet doit être nommé d'une manière |
5781 | différente de ce que la convention de nommage suggère, le paramètre | |
5782 | @code{#:asd-system-name} peut être utilisé pour spécifier le nom du système. | |
3cacfa9e | 5783 | |
15f1bff4 | 5784 | @end defvr |
3cacfa9e | 5785 | |
15f1bff4 JL |
5786 | @defvr {Variable Scheme} cargo-build-system |
5787 | @cindex Langage de programmation Rust | |
5788 | @cindex Cargo (système de construction Rust) | |
5789 | Cette variable est exportée par @code{(guix build-system cargo)}. Elle | |
5790 | supporte les construction de paquets avec Cargo, le système de construction | |
5791 | du @uref{https://www.rust-lang.org, langage de programmation Rust}. | |
bf5c74e7 | 5792 | |
15f1bff4 JL |
5793 | Dans sa phase @code{configure}, ce système de construction remplace les |
5794 | dépendances spécifiées dans le fichier @file{Cargo.toml} par des paquets | |
5795 | Guix. La phase @code{install} installe les binaires et installe aussi le | |
5796 | code source et le fichier @file{Cargo.toml}. | |
5797 | @end defvr | |
bf5c74e7 | 5798 | |
15f1bff4 JL |
5799 | @cindex Clojure (langage de programmation) |
5800 | @cindex système de construction Clojure simple | |
5801 | @defvr {Variable Scheme} clojure-build-system | |
5802 | Cette variable est exportée par @code{(guix build-system clojure)}. Elle | |
5803 | implémente une procédure de construction des paquets simple qui utilise le | |
5804 | bon vieux @code{compile} de Clojure. La compilation croisée n'est pas | |
5805 | encore supportée. | |
bf5c74e7 | 5806 | |
15f1bff4 JL |
5807 | Elle ajoute @code{clojure}, @code{icedtea} et @code{zip} à l'ensemble des |
5808 | entrées. Des paquets différents peuvent être spécifiés avec les paramètres | |
5809 | @code{#:clojure}, @code{#:jdk} et @code{#:zip}. | |
bf5c74e7 | 5810 | |
15f1bff4 JL |
5811 | Une liste de répertoires sources, de répertoires de tests et de noms de jar |
5812 | peuvent être spécifiés avec les paramètres @code{#:source-dirs}, | |
5813 | @code{#:test-dirs} et @code{#:jar-names}. Le répertoire de construction est | |
5814 | la classe principale peuvent être spécifiés avec les paramètres | |
5815 | @code{#:compile-dir} et @code{#:main-class}. Les autres paramètres sont | |
5816 | documentés plus bas. | |
bf5c74e7 | 5817 | |
15f1bff4 JL |
5818 | Ce système de construction est une extension de @var{ant-build-system}, mais |
5819 | avec les phases suivantes modifiées : | |
bf5c74e7 | 5820 | |
15f1bff4 | 5821 | @table @code |
bf5c74e7 | 5822 | |
15f1bff4 JL |
5823 | @item build |
5824 | Cette phase appelle @code{compile} en Clojure pour compiler les fichiers | |
5825 | sources et lance @command{jar} pour créer les fichiers jar à partir des | |
5826 | fichiers sources et des fichiers compilés en suivant la liste d'inclusion et | |
5827 | d'exclusion spécifiées dans @code{#:aot-include} et @code{#:aot-exclude}. | |
5828 | La liste d'exclusion a la priorité sur la liste d'inclusion. Ces listes | |
5829 | consistent en des symboles représentant des bibliothèque Clojure ou le mot | |
5830 | clef spécial @code{#:all}, représentant toutes les bibliothèques Clojure | |
5831 | trouvées dans les répertoires des sources. Le paramètre | |
5832 | @code{#:omit-source?} décide si les sources devraient être incluses dans les | |
5833 | fichiers jar. | |
bf5c74e7 | 5834 | |
15f1bff4 JL |
5835 | @item check |
5836 | Cette phase lance les tests en suivant les liste d'inclusion et d'exclusion | |
5837 | spécifiées dans @code{#:test-include} et @code{#:test-exclude}. Leur | |
5838 | signification est analogue à celle de @code{#:aot-include} et | |
5839 | @code{#:aot-exclude}, sauf que le mot-clef spécial @code{#:all} signifie | |
5840 | maintenant toutes les bibliothèques Clojure trouvées dans les répertoires de | |
5841 | tests. Le paramètre @code{#:tests?} décide si les tests devraient être | |
5842 | lancés. | |
bf5c74e7 | 5843 | |
15f1bff4 JL |
5844 | @item install |
5845 | Cette phase installe tous les fichiers jar précédemment construits. | |
5846 | @end table | |
bf5c74e7 | 5847 | |
15f1bff4 JL |
5848 | En dehors de cela, le système de construction contient aussi la phase |
5849 | suivante : | |
bf5c74e7 | 5850 | |
15f1bff4 | 5851 | @table @code |
bf5c74e7 | 5852 | |
15f1bff4 JL |
5853 | @item install-doc |
5854 | Cette phase installe tous les fichiers dans le répertoire de plus haut | |
5855 | niveau dont le nom correspond à @var{%doc-regex}. On peut spécifier une | |
5856 | regex différente avec le paramètre @code{#:doc-regex}. Tous les fichiers | |
5857 | (récursivement) dans les répertoires de documentations spécifiés dans | |
5858 | @code{#:doc-dirs} sont aussi installés. | |
bf5c74e7 | 5859 | @end table |
15f1bff4 | 5860 | @end defvr |
bf5c74e7 | 5861 | |
15f1bff4 JL |
5862 | @defvr {Variable Scheme} cmake-build-system |
5863 | Cette variable est exportée par @code{(guix build-system cmake)}. Elle | |
5864 | implémente la procédure de construction des paquets qui utilisent | |
5865 | l'@url{http://www.cmake.org, outil de construction CMake}. | |
bf5c74e7 | 5866 | |
15f1bff4 JL |
5867 | Elle ajoute automatiquement le paquet @code{cmake} à l'ensemble des |
5868 | entrées. Le paquet utilisé peut être spécifié par le paramètre | |
5869 | @code{#:cmake}. | |
bf5c74e7 | 5870 | |
15f1bff4 JL |
5871 | Le paramètre @code{#:configure-flags} est pris comme une liste de drapeaux à |
5872 | passer à la commande @command{cmake}. Le paramètre @code{#:build-type} | |
5873 | spécifie en termes abstrait les drapeaux passés au compilateur ; sa valeur | |
5874 | par défaut est @code{"RelWithDebInfo"} (ce qui veut dire « mode public avec | |
5875 | les informations de débogage » en plus court), ce qui signifie en gros que | |
5876 | le code sera compilé avec @code{-O2 -g} comme pour les paquets autoconf par | |
5877 | défaut. | |
5878 | @end defvr | |
bf5c74e7 | 5879 | |
15f1bff4 JL |
5880 | @defvr {Scheme Variable} dune-build-system |
5881 | This variable is exported by @code{(guix build-system dune)}. It supports | |
5882 | builds of packages using @uref{https://dune.build/, Dune}, a build tool for | |
5883 | the OCaml programming language. It is implemented as an extension of the | |
5884 | @code{ocaml-build-system} which is described below. As such, the | |
5885 | @code{#:ocaml} and @code{#:findlib} parameters can be passed to this build | |
5886 | system. | |
bf5c74e7 | 5887 | |
15f1bff4 JL |
5888 | It automatically adds the @code{dune} package to the set of inputs. Which |
5889 | package is used can be specified with the @code{#:dune} parameter. | |
bf5c74e7 | 5890 | |
15f1bff4 JL |
5891 | There is no @code{configure} phase because dune packages typically don't |
5892 | need to be configured. The @code{#:build-flags} parameter is taken as a | |
5893 | list of flags passed to the @code{dune} command during the build. | |
bf5c74e7 | 5894 | |
15f1bff4 JL |
5895 | The @code{#:jbuild?} parameter can be passed to use the @code{jbuild} |
5896 | command instead of the more recent @code{dune} command while building a | |
5897 | package. Its default value is @code{#f}. | |
5898 | @end defvr | |
3cacfa9e | 5899 | |
15f1bff4 JL |
5900 | @defvr {Variable Scheme} go-build-system |
5901 | Cette variable est exportée par @code{(guix build-system go)}. Elle | |
5902 | implémente la procédure pour les paquets Go utilisant les | |
5903 | @url{https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies, | |
5904 | mécanismes de construction Go} standard. | |
3cacfa9e | 5905 | |
15f1bff4 JL |
5906 | L'utilisateur doit fournir une valeur à la clef @code{#:import-path} et, |
5907 | dans certains cas, @code{#:unpack-path}. Le | |
5908 | @url{https://golang.org/doc/code.html#ImportPaths, chemin d'import} | |
5909 | correspond au chemin dans le système de fichiers attendu par le script de | |
5910 | construction du paquet et les paquets qui s'y réfèrent et fournit une | |
5911 | manière unique de se référer à un paquet Go. Il est typiquement basé sur | |
5912 | une combinaison de l'URI du code source du paquet et d'une structure | |
5913 | hiérarchique du système de fichier. Dans certains cas, vous devrez extraire | |
5914 | le code source du paquet dans une structure de répertoires différente que | |
5915 | celle indiquée par le chemin d'import et @code{#:unpack-path} devrait être | |
5916 | utilisé dans ces cas-là. | |
bf5c74e7 | 5917 | |
15f1bff4 JL |
5918 | Les paquets qui fournissent des bibliothèques Go devraient être installées |
5919 | avec leur code source. La clef @code{#:install-soruce?}, qui vaut @code{#t} | |
5920 | par défaut, contrôle l'installation du code source. Elle peut être mise à | |
5921 | @code{#f} pour les paquets qui ne fournissent que des fichiers exécutables. | |
5922 | @end defvr | |
524756d1 | 5923 | |
15f1bff4 JL |
5924 | @defvr {Variable Scheme} glib-or-gtk-build-system |
5925 | Cette variable est exportée par @code{(guix build-system glib-or-gtk)}. | |
5926 | Elle est conçue pour être utilisée par des paquets qui utilisent GLib ou | |
5927 | GTK+. | |
524756d1 | 5928 | |
15f1bff4 JL |
5929 | Ce système de construction ajoute les deux phases suivantes à celles |
5930 | définies par @var{gnu-build-system} : | |
524756d1 | 5931 | |
15f1bff4 JL |
5932 | @table @code |
5933 | @item glib-or-gtk-wrap | |
5934 | La phase @code{glib-or-gtk-wrap} s'assure que les programmes dans | |
5935 | @file{bin/} sont capable de trouver les « schemas » GLib et les | |
5936 | @uref{https://developer.gnome.org/gtk3/stable/gtk-running.html, modules | |
5937 | GTK+}. Ceci est fait en enveloppant les programmes dans des scripts de | |
5938 | lancement qui initialisent correctement les variables d'environnement | |
5939 | @code{XDG_DATA_DIRS} et @code{GTK_PATH}. | |
524756d1 | 5940 | |
15f1bff4 JL |
5941 | Il est possible d'exclure des sorties spécifiques de ce processus |
5942 | d'enveloppage en listant leur nom dans le paramètre | |
5943 | @code{#:glib-or-gtk-wrap-excluded-outputs}. C'est utile lorsqu'une sortie | |
5944 | est connue pour ne pas contenir de binaires GLib ou GTK+, et où l'enveloppe | |
5945 | ajouterait une dépendance inutile vers GLib et GTK+. | |
bf5c74e7 | 5946 | |
15f1bff4 JL |
5947 | @item glib-or-gtk-compile-schemas |
5948 | La phase @code{glib-or-gtk-compile-schemas} s'assure que tous les | |
5949 | @uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html, | |
5950 | schémas GSettings} de GLib sont compilés. La compilation est effectuée par | |
5951 | le programme @command{glib-compile-schemas}. Il est fournit par le paquet | |
5952 | @code{glib:bin} qui est automatiquement importé par le système de | |
5953 | construction. Le paquet @code{glib} qui fournit | |
5954 | @command{glib-compile-schemas} peut être spécifié avec le paramètre | |
5955 | @code{#:glib}. | |
5956 | @end table | |
bf5c74e7 | 5957 | |
15f1bff4 JL |
5958 | Ces deux phases sont exécutées après la phase @code{install}. |
5959 | @end defvr | |
bf5c74e7 | 5960 | |
15f1bff4 JL |
5961 | @defvr {Variable Scheme} guile-build-system |
5962 | Ce système de construction sert aux paquets Guile qui consistent | |
5963 | exclusivement en code Scheme et qui sont si simple qu'ils n'ont même pas un | |
5964 | makefile, sans parler d'un script @file{configure}. Il compile le code | |
5965 | Scheme en utilisant @command{guild compile} (@pxref{Compilation,,, guile, | |
5966 | GNU Guile Reference Manual}) et installe les fichiers @file{.scm} et | |
5967 | @file{.go} aux bons emplacements. Il installe aussi la documentation. | |
bf5c74e7 | 5968 | |
15f1bff4 JL |
5969 | Ce système de construction supporte la compilation croisée en utilisant |
5970 | l'option @code{--target} de @command{guild compile}. | |
bf5c74e7 | 5971 | |
15f1bff4 JL |
5972 | Les paquets construits avec @code{guile-build-system} doivent fournir un |
5973 | paquet Guile dans leur champ @code{native-inputs}. | |
5974 | @end defvr | |
bf5c74e7 | 5975 | |
15f1bff4 JL |
5976 | @defvr {Variable Scheme} minify-build-system |
5977 | Cette variable est exportée par @code{(guix build-system minify)}. Elle | |
5978 | implémente une procédure de minification pour des paquets JavaScript | |
5979 | simples. | |
bf5c74e7 | 5980 | |
15f1bff4 JL |
5981 | Elle ajoute @code{uglify-js} à l'ensemble des entrées et l'utilise pour |
5982 | compresser tous les fichiers JavaScript du répertoire @file{src}. Un | |
5983 | minifieur différent peut être spécifié avec le paramètre @code{#:uglify-js} | |
5984 | mais il est attendu que ce paquet écrive le code minifié sur la sortie | |
5985 | standard. | |
bf5c74e7 | 5986 | |
15f1bff4 JL |
5987 | Lorsque les fichiers JavaScript d'entrée ne sont pas situés dans le |
5988 | répertoire @file{src}, le paramètre @code{#:javascript-files} peut être | |
5989 | utilisé pour spécifier une liste de noms de fichiers à donner au minifieur. | |
5990 | @end defvr | |
bf5c74e7 | 5991 | |
15f1bff4 JL |
5992 | @defvr {Variable Scheme} ocaml-build-system |
5993 | Cette variable est exportée par @code{(guix build-system ocaml)}. Elle | |
5994 | implémente une procédure de construction pour les paquets | |
5995 | @uref{https://ocaml.org, OCaml} qui consiste à choisir le bon ensemble de | |
5996 | commande à lancer pour chaque paquet. Les paquets OCaml peuvent demander | |
5997 | des commandes diverses pour être construit. Ce système de construction en | |
5998 | essaye certaines. | |
524756d1 | 5999 | |
15f1bff4 JL |
6000 | Lorsqu'un fichier @file{setup.ml} est présent dans le répertoire de plus |
6001 | haut niveau, elle lancera @code{ocaml setup.ml -configure}, @code{ocaml | |
6002 | setup.ml -build} et @code{ocaml setup.ml -install}. Le système de | |
6003 | construction supposera que ces fichiers ont été générés par | |
6004 | @uref{http://oasis.forge.ocamlcore.org/, OASIS} et prendra soin | |
6005 | d'initialiser le préfixe et d'activer les tests s'ils ne sont pas | |
6006 | désactivés. Vous pouvez passer des drapeaux de configuration et de | |
6007 | construction avec @code{#:configure-flags} et @code{#:build-flags}. La clef | |
6008 | @code{#:test-flags} peut être passée pour changer l'ensemble des drapeaux | |
6009 | utilisés pour activer les tests. La clef @code{#:use-make?} peut être | |
6010 | utilisée pour outrepasser ce système dans les phases de construction et | |
6011 | d'installation. | |
6012 | ||
6013 | Lorsque le paquet a un fichier @file{configure}, il est supposé qu'il s'agit | |
6014 | d'un script configure écrit à la main qui demande un format différent de | |
6015 | celui de @code{gnu-build-system}. Vous pouvez ajouter plus de drapeaux avec | |
6016 | la clef @code{#:configure-flags}. | |
524756d1 | 6017 | |
15f1bff4 JL |
6018 | Lorsque le paquet a un fichier @file{Makefile} (ou @code{#:use-make?} vaut |
6019 | @code{#t}), il sera utilisé et plus de drapeaux peuvent être passés à la | |
6020 | construction et l'installation avec la clef @code{#:make-flags}. | |
524756d1 | 6021 | |
15f1bff4 JL |
6022 | Enfin, certains paquets n'ont pas ces fichiers mais utilisent un emplacement |
6023 | plus ou moins standard pour leur système de construction. Dans ce cas, le | |
6024 | système de construction lancera @code{ocaml pkg/pkg.ml} ou | |
6025 | @code{pkg/build.ml} et prendra soin de fournir le chemin du module findlib | |
6026 | requis. Des drapeaux supplémentaires peuvent être passés via la clef | |
6027 | @code{#:bulid-flags}. L'installation se fait avec | |
6028 | @command{opam-installer}. Dans ce cas, le paquet @code{opam} doit être | |
6029 | ajouté au champ @code{native-inputs} de la définition du paquet. | |
524756d1 | 6030 | |
15f1bff4 JL |
6031 | Remarquez que la plupart des paquets OCaml supposent qu'ils seront installés |
6032 | dans le même répertoire qu'OCaml, ce qui n'est pas ce que nous voulons faire | |
6033 | dans Guix. En particulier, ils installeront leurs fichiers @file{.so} dans | |
6034 | leur propre répertoire de module, ce qui est normalement correct puisqu'il | |
6035 | s'agit du répertoire du compilateur OCaml. Dans Guix en revanche, le | |
6036 | bibliothèques ne peuvent pas y être trouvées et on utilise | |
6037 | @code{CAML_LD_LIBRARY_PATH} à la place. Cette variable pointe vers | |
6038 | @file{lib/ocaml/site-lib/stubslibs} et c'est là où les bibliothèques | |
6039 | @file{.so} devraient être installées. | |
6040 | @end defvr | |
bf5c74e7 | 6041 | |
15f1bff4 JL |
6042 | @defvr {Variable Scheme} python-build-system |
6043 | Cette variable est exportée par @code{(guix build-system python)}. Elle | |
6044 | implémente la procédure de construction plus ou moins standard utilisée pour | |
6045 | les paquets Python, qui consiste à lancer @code{python setup.py build} puis | |
6046 | @code{python setup.py install --prefix=/gnu/store/@dots{}}. | |
bf5c74e7 | 6047 | |
15f1bff4 JL |
6048 | Pour les paquets qui installent des programmes autonomes dans @code{bin/}, |
6049 | elle prend soin d'envelopper ces binaires pour que leur variable | |
6050 | d'environnement @code{PYTHONPATH} pointe vers toutes les bibliothèques | |
6051 | Python dont ils dépendent. | |
bf5c74e7 | 6052 | |
15f1bff4 JL |
6053 | Le paquet Python utilisé pour effectuer la construction peut être spécifié |
6054 | avec le paramètre @code{#:python}. C'est une manière utile de forcer un | |
6055 | paquet à être construit avec une version particulière de l'interpréteur | |
6056 | python, ce qui peut être nécessaire si le paquet n'est compatible qu'avec | |
6057 | une version de l'interpréteur. | |
bf5c74e7 | 6058 | |
15f1bff4 JL |
6059 | Par défaut Guix appelle @code{setup.py} sous le contrôle de |
6060 | @code{setuptools}, comme le fait @command{pip}. Certains paquets ne sont | |
6061 | pas compatibles avec setuptools (et pip), ainsi vous pouvez désactiver cela | |
6062 | en mettant le paramètre @code{#:use-setuptools} à @code{#f}. | |
6063 | @end defvr | |
bf5c74e7 | 6064 | |
15f1bff4 JL |
6065 | @defvr {Variable Scheme} perl-build-system |
6066 | Cette variable est exportée par @code{(guix build-system perl)}. Elle | |
6067 | implémente la procédure de construction standard des paquets Perl, qui | |
6068 | consiste soit à lancer @code{perl Build.PL --prefix=/gnu/store/@dots{}}, | |
6069 | suivi de @code{Build} et @code{Build install} ; ou à lancer @code{perl | |
6070 | Makefile.PL PREFIX=/gnu/store/@dots{}}, suivi de @code{make} et @code{make | |
6071 | install}, en fonction de la présence de @code{Build.PL} ou | |
6072 | @code{Makefile.PL} dans la distribution du paquet. Le premier a la | |
6073 | préférence si @code{Build.PL} et @code{Makefile.PL} existent tous deux dans | |
6074 | la distribution du paquet. Cette préférence peut être inversée en | |
6075 | spécifiant @code{#t} pour le paramètre @code{#:make-maker?}. | |
bf5c74e7 | 6076 | |
15f1bff4 JL |
6077 | L'invocation initiale de @code{perl Makefile.PL} ou @code{perl Build.PL} |
6078 | passe les drapeaux spécifiés par le paramètre @code{#:make-maker-flags} ou | |
6079 | @code{#:module-build-flags}, respectivement. | |
bf5c74e7 | 6080 | |
15f1bff4 JL |
6081 | Le paquet Perl utilisé peut être spécifié avec @code{#:perl}. |
6082 | @end defvr | |
bf5c74e7 | 6083 | |
15f1bff4 JL |
6084 | @defvr {Variable Scheme} r-build-system |
6085 | Cette variable est exportée par @code{(guix build-system r)}. Elle | |
6086 | implémente la procédure de construction utilisée par les paquets | |
6087 | @uref{http://r-project.org, R} qui consiste à lancer à peine plus que | |
6088 | @code{R CMD INSTALL --library=/gnu/store/@dots{}} dans un environnement où | |
6089 | @code{R_LIBS_SITE} contient les chemins de toutes les entrées R. Les tests | |
6090 | sont lancés après l'installation avec la fonction R | |
6091 | @code{tools::testInstalledPackage}. | |
6092 | @end defvr | |
bf5c74e7 | 6093 | |
15f1bff4 JL |
6094 | @defvr {Variable Scheme} texlive-build-system |
6095 | Cette variable est exportée par @code{(guix build-system texlive)}. Elle | |
6096 | est utilisée pour construire des paquets TeX en mode batch avec le moteur | |
6097 | spécifié. Le système de construction initialise la variable | |
6098 | @code{TEXINPUTS} pour trouver tous les fichiers source TeX dans ses entrées. | |
bf5c74e7 | 6099 | |
15f1bff4 JL |
6100 | Par défaut, elle lance @code{luatex} sur tous les fichiers qui se terminent |
6101 | par @code{ins}. Un moteur et un format différent peuvent être spécifiés | |
6102 | avec l'argument @code{#:tex-format}. Plusieurs cibles de constructions | |
6103 | peuvent être indiquées avec l'argument @code{#:build-targets} qui attend une | |
6104 | liste de noms de fichiers. Le système de construction ajoute uniquement | |
6105 | @code{texlive-bin} et @code{texlive-latex-base} (de @code{(gnu packages | |
6106 | tex)} à la liste des entrées. Les deux peuvent être remplacés avec les | |
6107 | arguments @code{#:texlive-bin} et @code{#:texlive-latex-base}, | |
6108 | respectivement. | |
bf5c74e7 | 6109 | |
15f1bff4 JL |
6110 | Le paramètre @code{#:tex-directory} dit au système de construction où |
6111 | installer les fichiers construit dans l'arbre texmf. | |
6112 | @end defvr | |
bf5c74e7 | 6113 | |
15f1bff4 JL |
6114 | @defvr {Variable Scheme} ruby-build-system |
6115 | Cette variable est exportée par @code{(guix build-system ruby)}. Elle | |
6116 | implémenter la procédure de construction RubyGems utilisée par les paquets | |
6117 | Ruby qui consiste à lancer @code{gem build} suivi de @code{gem install}. | |
bf5c74e7 | 6118 | |
15f1bff4 JL |
6119 | Le champ @code{source} d'un paquet qui utilise ce système de construction |
6120 | référence le plus souvent une archive gem, puisque c'est le format utilisé | |
6121 | par les développeurs Ruby quand ils publient leur logiciel. Le système de | |
6122 | construction décompresse l'archive gem, éventuellement en corrigeant les | |
6123 | sources, lance la suite de tests, recompresse la gemme et l'installe. En | |
6124 | plus, des répertoires et des archives peuvent être référencés pour permettre | |
6125 | de construire des gemmes qui n'ont pas été publiées depuis Git ou une | |
6126 | archive de sources traditionnelle. | |
524756d1 | 6127 | |
15f1bff4 JL |
6128 | Le paquet Ruby utilisé peut être spécifié avec le paramètre @code{#:ruby}. |
6129 | Une liste de drapeaux supplémentaires à passer à la commande @command{gem} | |
6130 | peut être spécifiée avec le paramètre @code{#:gem-flags}. | |
6131 | @end defvr | |
524756d1 | 6132 | |
15f1bff4 JL |
6133 | @defvr {Variable Scheme} waf-build-system |
6134 | Cette variable est exportée par @code{(guix build-system waf)}. Elle | |
6135 | implémente une procédure de construction autour du script @code{waf}. Les | |
6136 | phases usuelles — @code{configure}, @code{build} et @code{install} — sont | |
6137 | implémentée en passant leur nom en argument au script @code{waf}. | |
bf5c74e7 | 6138 | |
15f1bff4 JL |
6139 | Le script @code{waf} est exécuté par l'interpréteur Python. Le paquet |
6140 | Python utilisé pour lancer le script peut être spécifié avec le paramètre | |
6141 | @code{#:python}. | |
6142 | @end defvr | |
bf5c74e7 | 6143 | |
15f1bff4 JL |
6144 | @defvr {Variable Scheme} scons-build-system |
6145 | Cette variable est exportée par @code{(guix build-system scons)}. Elle | |
6146 | implémente la procédure de construction utilisée par l'outil de construction | |
6147 | SCons. Ce système de construction lance @code{scons} pour construire le | |
6148 | paquet, @code{scons test} pour lancer les tests puis @code{scons install} | |
6149 | pour installer le paquet. | |
bf5c74e7 | 6150 | |
15f1bff4 JL |
6151 | On peut passer des drapeaux supplémentaires à @code{scons} en les spécifiant |
6152 | avec le paramètre @code{#:scons-flags}. La version de python utilisée pour | |
6153 | lancer SCons peut être spécifiée en sélectionnant le paquet SCons approprié | |
6154 | avec le paramètre @code{#:scons}. | |
6155 | @end defvr | |
bf5c74e7 | 6156 | |
15f1bff4 JL |
6157 | @defvr {Variable Scheme} haskell-build-system |
6158 | Cette variable est exportée par @code{(guix build-system haskell)}. Elle | |
6159 | implémente la procédure de construction Cabal utilisée par les paquets | |
6160 | Haskell, qui consiste à lancer @code{runhaskell Setup.hs configure | |
6161 | --prefix=/gnu/store/@dots{}} et @code{runhaskell Setup.hs build}. Plutôt | |
6162 | que d'installer le paquets en lançant @code{runhaskell Setup.hs install}, | |
6163 | pour éviter d'essayer d'enregistrer les bibliothèques dans le répertoire du | |
6164 | dépôt en lecture-seule du compilateur, le système de construction utilise | |
6165 | @code{runhaskell Setup.hs copy}, suivi de @code{runhaskell Setup.hs | |
6166 | register}. En plus, le système de construction génère la documentation du | |
6167 | paquet en lançant @code{runhaskell Setup.hs haddock}, à moins que | |
6168 | @code{#:haddock? #f} ne soit passé. Des paramètres facultatifs pour Haddock | |
6169 | peuvent être passés à l'aide du paramètre @code{#:haddock-flags}. Si le | |
6170 | fichier @code{Setup.hs} n'est pas trouvé, le système de construction | |
6171 | cherchera @code{Setup.lhs} à la place. | |
bf5c74e7 | 6172 | |
15f1bff4 JL |
6173 | Le compilateur Haskell utilisé peut être spécifié avec le paramètre |
6174 | @code{#:haskell} qui a pour valeur par défaut @code{ghc}. | |
6175 | @end defvr | |
bf5c74e7 | 6176 | |
15f1bff4 JL |
6177 | @defvr {Variable Scheme} dub-build-system |
6178 | Cette variable est exportée par @code{(guix build-system dub)}. Elle | |
6179 | implémente la procédure de construction Dub utilisée par les paquets D qui | |
6180 | consiste à lancer @code{dub build} et @code{dub run}. L'installation est | |
6181 | effectuée en copiant les fichiers manuellement. | |
bf5c74e7 | 6182 | |
15f1bff4 JL |
6183 | Le compilateur D utilisé peut être spécifié avec le paramètre @code{#:ldc} |
6184 | qui vaut par défaut @code{ldc}. | |
6185 | @end defvr | |
bf5c74e7 | 6186 | |
15f1bff4 JL |
6187 | @defvr {Variable Scheme} emacs-build-system |
6188 | Cette variable est exportée par @code{(guix build-system emacs)}. Elle | |
6189 | implémente une procédure d'installation similaire au système de gestion de | |
6190 | paquet d'Emacs lui-même (@pxref{Packages,,, emacs, The GNU Emacs Manual}). | |
6191 | ||
6192 | Elle crée d'abord le fichier @code{@var{package}-autoloads.el}, puis compile | |
6193 | tous les fichiers Emacs Lisp en bytecode. Contrairement au système de | |
6194 | gestion de paquets d'Emacs, les fichiers de documentation info sont déplacés | |
6195 | dans le répertoire standard et le fichier @file{dir} est supprimé. Chaque | |
6196 | paquet est installé dans son propre répertoire dans | |
6197 | @file{share/emacs/site-lisp/guix.d}. | |
6198 | @end defvr | |
bf5c74e7 | 6199 | |
15f1bff4 JL |
6200 | @defvr {Variable Scheme} font-build-system |
6201 | This variable is exported by @code{(guix build-system font)}. It implements | |
6202 | an installation procedure for font packages where upstream provides | |
6203 | pre-compiled TrueType, OpenType, etc.@: font files that merely need to be | |
6204 | copied into place. It copies font files to standard locations in the output | |
6205 | directory. | |
6206 | @end defvr | |
bf5c74e7 | 6207 | |
15f1bff4 JL |
6208 | @defvr {Variable Scheme} meson-build-system |
6209 | Cette variable est exportée par @code{(guix build-system meson)}. Elle | |
6210 | implémente la procédure de construction des paquets qui utilisent | |
6211 | @url{http://mesonbuild.com, Meson} comme système de construction. | |
bf5c74e7 | 6212 | |
15f1bff4 JL |
6213 | Elle ajoute à la fois Meson et @uref{https://ninja-build.org/, Ninja} à |
6214 | l'ensemble des entrées, et ils peuvent être modifiés avec les paramètres | |
6215 | @code{#:meson} et @code{#:ninja} si requis. Le Meson par défaut est | |
6216 | @code{meson-for-build}, qui est spécial parce qu'il ne nettoie pas le | |
6217 | @code{RUNPATH} des binaires et les bibliothèques qu'il installe. | |
bf5c74e7 | 6218 | |
15f1bff4 JL |
6219 | Ce système de construction est une extension de @var{gnu-build-system}, mais |
6220 | avec les phases suivantes modifiées pour Meson : | |
bf5c74e7 | 6221 | |
15f1bff4 | 6222 | @table @code |
bf5c74e7 | 6223 | |
15f1bff4 JL |
6224 | @item configure |
6225 | La phase lance @code{meson} avec les drapeaux spécifiés dans | |
6226 | @code{#:configure-flags}. Le drapeau @code{--build-type} est toujours | |
6227 | initialisé à @code{plain} à moins que quelque chose d'autre ne soit spécifié | |
6228 | dans @code{#:build-type}. | |
bf5c74e7 | 6229 | |
15f1bff4 JL |
6230 | @item build |
6231 | La phase lance @code{ninja} pour construire le paquet en parallèle par | |
6232 | défaut, mais cela peut être changé avec @code{#:parallel-build?}. | |
bf5c74e7 | 6233 | |
15f1bff4 JL |
6234 | @item check |
6235 | La phase lance @code{ninja} avec la cible spécifiée dans | |
6236 | @code{#:test-target}, qui est @code{"test"} par défaut. | |
bf5c74e7 | 6237 | |
15f1bff4 JL |
6238 | @item install |
6239 | La phase lance @code{ninja install} et ne peut pas être changée. | |
6240 | @end table | |
bf5c74e7 | 6241 | |
15f1bff4 JL |
6242 | En dehors de cela, le système de construction ajoute aussi la phase suivante |
6243 | : | |
bf5c74e7 | 6244 | |
15f1bff4 | 6245 | @table @code |
bf5c74e7 | 6246 | |
15f1bff4 JL |
6247 | @item fix-runpath |
6248 | Cette phase s'assure que tous les binaire peuvent trouver les bibliothèques | |
6249 | dont ils ont besoin. Elle cherche les bibliothèques requises dans les | |
6250 | sous-répertoires du paquet en construction et les ajoute au @code{RUNPATH} | |
6251 | là où c'est nécessaire. Elle supprime aussi les références aux | |
6252 | bibliothèques laissées là par la phase de construction par | |
6253 | @code{meson-for-build} comme les dépendances des tests, qui ne sont pas | |
6254 | vraiment requises pour le programme. | |
bf5c74e7 | 6255 | |
15f1bff4 JL |
6256 | @item glib-or-gtk-wrap |
6257 | Cette phase est la phase fournie par @code{glib-or-gtk-build-system} et | |
6258 | n'est pas activée par défaut. Elle peut l'être avec @code{#:glib-or-gtk?}. | |
bf5c74e7 | 6259 | |
15f1bff4 JL |
6260 | @item glib-or-gtk-compile-schemas |
6261 | Cette phase est la phase fournie par @code{glib-or-gtk-build-system} et | |
6262 | n'est pas activée par défaut. Elle peut l'être avec @code{#:glib-or-gtk?}. | |
6263 | @end table | |
6264 | @end defvr | |
bf5c74e7 | 6265 | |
15f1bff4 JL |
6266 | Enfin, pour les paquets qui n'ont pas besoin de choses sophistiquées, un |
6267 | système de construction « trivial » est disponible. Il est trivial dans le | |
6268 | sens où il ne fournit en gros aucun support : il n'apporte pas de dépendance | |
6269 | implicite, et n'a pas de notion de phase de construction. | |
524756d1 | 6270 | |
15f1bff4 JL |
6271 | @defvr {Variable Scheme} trivial-build-system |
6272 | Cette variable est exportée par @code{(guix build-system trivial)}. | |
524756d1 | 6273 | |
15f1bff4 JL |
6274 | Ce système de construction requiert un argument @code{#:builder}. Cet |
6275 | argument doit être une expression Scheme qui construit la sortie du paquet — | |
6276 | comme avec @code{build-expression->derivation} (@pxref{Dérivations, | |
6277 | @code{build-expression->derivation}}). | |
6278 | @end defvr | |
bf5c74e7 | 6279 | |
15f1bff4 JL |
6280 | @node Le dépôt |
6281 | @section Le dépôt | |
bf5c74e7 | 6282 | |
15f1bff4 JL |
6283 | @cindex dépôt |
6284 | @cindex éléments du dépôt | |
6285 | @cindex chemins dans le dépôt | |
524756d1 | 6286 | |
15f1bff4 JL |
6287 | Conceptuellement, le @dfn{dépôt} est l'endroit où les dérivations qui ont |
6288 | bien été construites sont stockées — par défaut, @file{/gnu/store}. Les | |
6289 | sous-répertoires dans le dépôt s'appellent des @dfn{éléments du dépôt} ou | |
6290 | parfois des @dfn{chemins du dépôt}. Le dépôt a une base de données associée | |
6291 | qui contient des informations comme les chemins du dépôt auxquels se | |
6292 | réfèrent chaque chemin du dépôt et la liste des éléments du dépôt | |
6293 | @emph{valides} — les résultats d'une construction réussie. Cette base de | |
6294 | données se trouve dans @file{@var{localstatedir}/guix/db} où | |
6295 | @var{localstatedir} est le répertoire d'états spécifié @i{via} @option | |
6296 | {--localstatedir} à la configuration, typiquement @file{/var}. | |
bf5c74e7 | 6297 | |
15f1bff4 JL |
6298 | C'est @emph{toujours} le démon qui accède au dépôt pour le compte de ses |
6299 | clients (@pxref{Invoquer guix-daemon}). Pour manipuler le dépôt, les | |
6300 | clients se connectent au démon par un socket Unix-domain, envoient une | |
6301 | requête dessus et lisent le résultat — ce sont des appels de procédures | |
6302 | distantes, ou RPC. | |
524756d1 | 6303 | |
15f1bff4 JL |
6304 | @quotation Remarque |
6305 | Les utilisateurs ne doivent @emph{jamais} modifier les fichiers dans | |
6306 | @file{/gnu/store} directement. Cela entraînerait des incohérences et | |
6307 | casserait l'hypothèse d'immutabilité du modèle fonctionnel de Guix | |
6308 | (@pxref{Introduction}). | |
524756d1 | 6309 | |
15f1bff4 JL |
6310 | @xref{Invoquer guix gc, @command{guix gc --verify}}, pour des informations |
6311 | sur la manière de vérifier l'intégrité du dépôt et d'essayer de réparer des | |
6312 | modifications accidentelles. | |
6313 | @end quotation | |
524756d1 | 6314 | |
15f1bff4 JL |
6315 | Le module @code{(guix store)} fournit des procédures pour se connecter au |
6316 | démon et pour effectuer des RPC. Elles sont décrites plus bas. Par défaut, | |
6317 | @code{open-connection}, et donc toutes les commandes @command{guix} se | |
6318 | connectent au démon local ou à l'URI spécifiée par la variable | |
6319 | d'environnement @code{GUIX_DAEMON_SOCKET}. | |
524756d1 | 6320 | |
15f1bff4 JL |
6321 | @defvr {Variable d'environnement} GUIX_DAEMON_SOCKET |
6322 | Lorsqu'elle est initialisée, la valeur de cette variable devrait être un nom | |
6323 | de fichier ou une URI qui désigne l'extrémité du démon. Lorsque c'est un | |
6324 | nom de fichier, il dénote un socket Unix-domain où se connecter. En plus | |
6325 | des noms de fichiers, les schémas d'URI supportés sont : | |
524756d1 JL |
6326 | |
6327 | @table @code | |
15f1bff4 JL |
6328 | @item file |
6329 | @itemx unix | |
6330 | Pour les sockets Unix-domain. @code{file:///var/guix/daemon-socket/socket} | |
6331 | est équivalent à @file{/var/guix/daemon-socket/socket}. | |
bf5c74e7 | 6332 | |
15f1bff4 JL |
6333 | @item guix |
6334 | @cindex démon, accès distant | |
6335 | @cindex accès distant au démon | |
6336 | @cindex démon, paramètres de grappes | |
6337 | @cindex grappes, paramètres du démon | |
6338 | Ces URI dénotent des connexions par TCP/IP, sans chiffrement ni | |
6339 | authentification de l'hôte distant. L'URI doit spécifier le nom d'hôte et | |
6340 | éventuellement un numéro de port (par défaut 44146) : | |
bf5c74e7 | 6341 | |
15f1bff4 JL |
6342 | @example |
6343 | guix://master.guix.example.org:1234 | |
6344 | @end example | |
bf5c74e7 | 6345 | |
15f1bff4 JL |
6346 | Ce paramétrage est adapté aux réseaux locaux, comme dans le cas de grappes |
6347 | de serveurs, où seuls des noms de confiance peuvent se connecter au démon de | |
6348 | construction sur @code{master.guix.example.org}. | |
bf5c74e7 | 6349 | |
15f1bff4 JL |
6350 | L'option @code{--listen} de @command{guix-daemon} peut être utilisé pour lui |
6351 | dire d'écouter des connexions TCP (@pxref{Invoquer guix-daemon, | |
6352 | @code{--listen}}). | |
bf5c74e7 | 6353 | |
15f1bff4 JL |
6354 | @item ssh |
6355 | @cindex accès SSH au démon de construction | |
6356 | Ces URI vous permettent de vous connecter au démon à distance à travers | |
6357 | SSH@footnote{Cette fonctionnalité requiert Guile-SSH | |
6358 | (@pxref{Prérequis}).}. | |
bf5c74e7 JL |
6359 | |
6360 | @example | |
15f1bff4 | 6361 | ssh://charlie@@guix.example.org:22 |
bf5c74e7 JL |
6362 | @end example |
6363 | ||
15f1bff4 JL |
6364 | Comme pour @command{guix copy}, les fichiers de configuration du client |
6365 | OpenSSH sont respectés (@pxref{Invoquer guix copy}). | |
6366 | @end table | |
bf5c74e7 | 6367 | |
15f1bff4 | 6368 | Des schémas d'URI supplémentaires pourraient être supportés dans le futur. |
bf5c74e7 | 6369 | |
15f1bff4 JL |
6370 | @c XXX: Remove this note when the protocol incurs fewer round trips |
6371 | @c and when (guix derivations) no longer relies on file system access. | |
6372 | @quotation Remarque | |
6373 | La capacité de se connecter à un démon de construction distant est considéré | |
6374 | comme expérimental à la version @value{VERSION}. Contactez-nous pour | |
6375 | partager vos problèmes ou des suggestions que vous pourriez avoir | |
6376 | (@pxref{Contribuer}). | |
6377 | @end quotation | |
6378 | @end defvr | |
bf5c74e7 | 6379 | |
15f1bff4 JL |
6380 | @deffn {Procédure Scheme} open-connection [@var{uri}] [#:reserve-space? #t] |
6381 | Se connecte au démon à travers le socket Unix-domain à @var{uri} (une chaîne | |
6382 | de caractères). Lorsque @var{reserve-space?} est vrai, cela demande de | |
6383 | réserver un peu de place supplémentaire sur le système de fichiers pour que | |
6384 | le ramasse-miette puisse opérer au cas où le disque serait plein. Renvoie | |
6385 | un objet serveur. | |
bf5c74e7 | 6386 | |
15f1bff4 JL |
6387 | @var{file} a pour valeur par défaut @var{%default-socket-path}, qui est |
6388 | l'emplacement normal en fonction des options données à @command{configure}. | |
6389 | @end deffn | |
bf5c74e7 | 6390 | |
15f1bff4 JL |
6391 | @deffn {Procédure Scheme} close-connection @var{server} |
6392 | Ferme la connexion au @var{serveur}. | |
6393 | @end deffn | |
bf5c74e7 | 6394 | |
15f1bff4 JL |
6395 | @defvr {Variable Scheme} current-build-output-port |
6396 | Cette variable est liée à un paramètre SRFI-39, qui se réfère au port où les | |
6397 | journaux de construction et d'erreur envoyés par le démon devraient être | |
6398 | écrits. | |
6399 | @end defvr | |
bf5c74e7 | 6400 | |
15f1bff4 JL |
6401 | Les procédures qui font des RPC prennent toutes un objet serveur comme |
6402 | premier argument. | |
bf5c74e7 | 6403 | |
15f1bff4 JL |
6404 | @deffn {Procédure Scheme} valid-path? @var{server} @var{path} |
6405 | @cindex éléments du dépôt invalides | |
6406 | Renvoie @code{#t} lorsque @var{path} désigne un élément du dépôt valide et | |
6407 | @code{#f} sinon (un élément invalide peut exister sur le disque mais rester | |
6408 | invalide, par exemple parce que c'est le résultat d'une construction annulée | |
6409 | ou échouée). | |
bf5c74e7 | 6410 | |
15f1bff4 JL |
6411 | A @code{&store-protocol-error} condition is raised if @var{path} is not |
6412 | prefixed by the store directory (@file{/gnu/store}). | |
6413 | @end deffn | |
bf5c74e7 | 6414 | |
15f1bff4 JL |
6415 | @deffn {Procédure Scheme} add-text-to-store @var{server} @var{name} @var{text} [@var{references}] |
6416 | Ajoute @var{text} dans le fichier @var{name} dans le dépôt et renvoie son | |
6417 | chemin. @var{references} est la liste des chemins du dépôt référencés par | |
6418 | le chemin du dépôt qui en résulte. | |
6419 | @end deffn | |
bf5c74e7 | 6420 | |
15f1bff4 JL |
6421 | @deffn {Procédure Scheme} build-derivations @var{server} @var{derivations} |
6422 | Construit @var{derivaton} (ne liste d'objets @code{<derivation>} ou de | |
6423 | chemins de dérivations) et retourne quand le travailleur a fini de les | |
6424 | construire. Renvoie @code{#t} en cas de réussite. | |
6425 | @end deffn | |
bf5c74e7 | 6426 | |
15f1bff4 JL |
6427 | Remarque que le module @code{(guix monads)} fournit une monade ainsi que des |
6428 | version monadiques des procédures précédentes, avec le but de rendre plus | |
6429 | facile de travailler avec le code qui accède au dépôt (@pxref{La monade du dépôt}). | |
bf5c74e7 | 6430 | |
15f1bff4 JL |
6431 | @c FIXME |
6432 | @i{Cette section est actuellement incomplète.} | |
bf5c74e7 | 6433 | |
15f1bff4 JL |
6434 | @node Dérivations |
6435 | @section Dérivations | |
adfb167f | 6436 | |
15f1bff4 JL |
6437 | @cindex dérivations |
6438 | Les actions de construction à bas-niveau et l'environnement dans lequel | |
6439 | elles sont effectuées sont représentés par des @dfn{dérivations}. Une | |
6440 | dérivation contient cet ensemble d'informations : | |
bf5c74e7 | 6441 | |
15f1bff4 JL |
6442 | @itemize |
6443 | @item | |
6444 | Les sorties de la dérivation — les dérivations produisent au moins un | |
6445 | fichier ou répertoire dans le dépôt, mais peuvent en produire plus. | |
bf5c74e7 | 6446 | |
15f1bff4 JL |
6447 | @item |
6448 | Les entrées de la dérivation, qui peuvent être d'autres dérivations ou des | |
6449 | fichiers dans le dépôt (correctifs, scripts de construction, etc). | |
bf5c74e7 | 6450 | |
15f1bff4 JL |
6451 | @item |
6452 | Le type de système ciblé par la dérivation — p.ex.@: @code{x86_64-linux}. | |
bf5c74e7 | 6453 | |
15f1bff4 JL |
6454 | @item |
6455 | Le nom de fichier d'un script de construction dans le dépôt avec les | |
6456 | arguments à lui passer. | |
bf5c74e7 | 6457 | |
15f1bff4 JL |
6458 | @item |
6459 | Une liste de variables d'environnement à définir. | |
bf5c74e7 | 6460 | |
15f1bff4 | 6461 | @end itemize |
bf5c74e7 | 6462 | |
15f1bff4 JL |
6463 | @cindex chemin de dérivation |
6464 | Les dérivations permettent aux client du démon de communiquer des actions de | |
6465 | construction dans le dépôt. Elles existent sous deux formes : en tant que | |
6466 | représentation en mémoire, à la fois côté client et démon, et en tant que | |
6467 | fichiers dans le dépôt dont le nom fini par @code{.drv} — on dit que ce sont | |
6468 | des @dfn{chemins de dérivations}. Les chemins de dérivations peuvent être | |
6469 | passés à la procédure @code{build-derivations} pour effectuer les actions de | |
6470 | construction qu'ils prescrivent (@pxref{Le dépôt}). | |
bf5c74e7 | 6471 | |
15f1bff4 JL |
6472 | @cindex dérivations à sortie fixe |
6473 | Des opérations comme le téléchargement de fichiers et la récupération de | |
6474 | sources gérés par un logiciel de contrôle de version pour lesquels le hash | |
6475 | du contenu est connu à l'avance sont modélisés par des @dfn{dérivations à | |
6476 | sortie fixe}. Contrairement aux dérivation habituelles, les sorties d'une | |
6477 | dérivation à sortie fixe sont indépendantes de ses entrées — p.ex.@: un code | |
6478 | source téléchargé produit le même résultat quelque soit la méthode de | |
6479 | téléchargement utilisée. | |
bf5c74e7 | 6480 | |
15f1bff4 JL |
6481 | Le module @code{(guix derivations)} fournit une représentation des |
6482 | dérivations comme des objets Scheme, avec des procédures pour créer et | |
6483 | manipuler des dérivations. La primitive de plus bas-niveau pour créer une | |
6484 | dérivation est la procédure @code{derivation} : | |
bf5c74e7 | 6485 | |
15f1bff4 JL |
6486 | @deffn {Procédure Scheme} derivation @var{store} @var{name} @var{builder} @ |
6487 | @var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @ | |
6488 | [#:recursive? #f] [#:inputs '()] [#:env-vars '()] @ | |
6489 | [#:system (%current-system)] [#:references-graphs #f] @ | |
6490 | [#:allowed-references #f] [#:disallowed-references #f] @ | |
6491 | [#:leaked-env-vars #f] [#:local-build? #f] @ | |
6492 | [#:substitutable? #t] [#:properties '()] | |
6493 | Construit une dérivation avec les arguments donnés et renvoie l'objet | |
6494 | @code{<derivation>} obtenu. | |
bf5c74e7 | 6495 | |
15f1bff4 JL |
6496 | Lorsque @var{hash} et @var{hash-algo} sont donnés, une @dfn{dérivation à |
6497 | sortie fixe} est créée — c.-à-d.@: une dérivation dont le résultat est connu | |
6498 | à l'avance, comme dans le cas du téléchargement d'un fichier. Si, en plus, | |
6499 | @var{recursive?} est vrai, alors la sortie fixe peut être un fichier | |
6500 | exécutable ou un répertoire et @var{hash} doit être le hash d'une archive | |
6501 | contenant la sortie. | |
bf5c74e7 | 6502 | |
15f1bff4 JL |
6503 | Lorsque @var{references-graphs} est vrai, il doit s'agir d'une liste de |
6504 | paires de noms de fichiers et de chemins du dépôt. Dans ce cas, le graphe | |
6505 | des références de chaque chemin du dépôt est exporté dans l'environnement de | |
6506 | construction dans le fichier correspondant, dans un simple format texte. | |
bf5c74e7 | 6507 | |
15f1bff4 JL |
6508 | Lorsque @var{allowed-references} est vrai, il doit s'agir d'une liste |
6509 | d'éléments du dépôt ou de sorties auxquelles la sortie de la dérivations | |
6510 | peut faire référence. De même, @var{disallowed-references}, si vrai, doit | |
6511 | être une liste de choses que la sortie ne doit @emph{pas} référencer. | |
bf5c74e7 | 6512 | |
15f1bff4 JL |
6513 | Lorsque @var{leaked-env-vars} est vrai, il doit s'agir d'une liste de |
6514 | chaînes de caractères qui désignent les variables d'environnements qui | |
6515 | peuvent « fuiter » de l'environnement du démon dans l'environnement de | |
6516 | construction. Ce n'est possible que pour les dérivations à sortie fixe — | |
6517 | c.-à-d.@: lorsque @var{hash} est vrai. L'utilisation principale est de | |
6518 | permettre à des variables comme @code{http_proxy} d'être passées aux | |
6519 | dérivations qui téléchargent des fichiers. | |
6520 | ||
6521 | Lorsque @var{local-build?} est vrai, déclare que la dérivation n'est pas un | |
6522 | bon candidat pour le déchargement et devrait plutôt être construit | |
6523 | localement (@pxref{Réglages du délestage du démon}). C'est le cas des petites | |
6524 | dérivations où le coût du transfert de données est plus important que les | |
6525 | bénéfices. | |
bf5c74e7 | 6526 | |
15f1bff4 JL |
6527 | Lorsque que @var{substitutable?} est faux, déclare que les substituts de la |
6528 | sortie de la dérivation ne devraient pas être utilisés | |
6529 | (@pxref{Substituts}). Cela est utile par exemple pour construire des paquets | |
6530 | qui utilisent des détails du jeu d'instruction du CPU hôte. | |
bf5c74e7 | 6531 | |
15f1bff4 JL |
6532 | @var{properties} doit être une liste d'association décrivant les « |
6533 | propriétés » de la dérivation. Elle est gardée telle-quelle, sans être | |
6534 | interprétée, dans la dérivation. | |
6535 | @end deffn | |
bf5c74e7 | 6536 | |
15f1bff4 JL |
6537 | @noindent |
6538 | Voici un exemple avec un script shell comme constructeur, en supposant que | |
6539 | @var{store} est une connexion ouverte au démon et @var{bash} pointe vers un | |
6540 | exécutable Bash dans le dépôt : | |
bf5c74e7 | 6541 | |
15f1bff4 JL |
6542 | @lisp |
6543 | (use-modules (guix utils) | |
6544 | (guix store) | |
6545 | (guix derivations)) | |
bf5c74e7 | 6546 | |
15f1bff4 JL |
6547 | (let ((builder ; ajoute le script Bash au dépôt |
6548 | (add-text-to-store store "my-builder.sh" | |
6549 | "echo hello world > $out\n" '()))) | |
6550 | (derivation store "foo" | |
6551 | bash `("-e" ,builder) | |
6552 | #:inputs `((,bash) (,builder)) | |
6553 | #:env-vars '(("HOME" . "/homeless")))) | |
6554 | @result{} #<derivation /gnu/store/@dots{}-foo.drv => /gnu/store/@dots{}-foo> | |
6555 | @end lisp | |
bf5c74e7 | 6556 | |
15f1bff4 JL |
6557 | Comme on pourrait s'en douter, cette primitive est difficile à utiliser |
6558 | directement. Une meilleure approche est d'écrire les scripts de | |
6559 | construction en Scheme, bien sur ! Le mieux à faire pour cela est d'écrire | |
6560 | le code de construction comme une « G-expression » et de la passer à | |
6561 | @code{gexp->derivation}. Pour plus d'informations, @pxref{G-Expressions}. | |
bf5c74e7 | 6562 | |
15f1bff4 JL |
6563 | Il fut un temps où @code{gexp->derivation} n'existait pas et où construire |
6564 | une dérivation donc le code de construction était écrit en Scheme se faisait | |
6565 | avec @code{build-expression->derivation}, documenté plus bas. Cette | |
6566 | procédure est maintenant obsolète, remplacée par @code{gexp->derivation} qui | |
6567 | est meilleure. | |
bf5c74e7 | 6568 | |
15f1bff4 JL |
6569 | @deffn {Procédure Scheme} build-expression->derivation @var{store} @ |
6570 | @var{name} @var{exp} @ | |
6571 | [#:system (%current-system)] [#:inputs '()] @ | |
6572 | [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @ | |
6573 | [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ | |
6574 | [#:references-graphs #f] [#:allowed-references #f] @ | |
6575 | [#:disallowed-references #f] @ | |
6576 | [#:local-build? #f] [#:substitutable? #t] [#:guile-for-build #f] | |
6577 | Renvoie une dérivation qui exécute l'expression Scheme @var{exp} comme un | |
6578 | constructeur pour la dérivation @var{name}. @var{inputs} doit être une | |
6579 | liste de tuples @code{(name drv-path sub-drv)} ; lorsque @var{sub-drv} est | |
6580 | omis, @code{"out"} est utilisé. @var{modules} est une liste de noms de | |
6581 | modules Guile du chemin de recherche actuel qui seront copiés dans le dépôt, | |
6582 | compilés et rendus disponibles dans le chemin de chargement pendant | |
6583 | l'exécution de @var{exp} — p.@: ex.@: @code{((guix build utils) (guix build | |
6584 | gnu-build-system))}. | |
bf5c74e7 | 6585 | |
15f1bff4 JL |
6586 | @var{exp} est évaluée dans une environnement où @code{%outputs} est lié à |
6587 | une liste de paires de sortie/chemin, et où @code{%build-inputs} est lié à | |
6588 | une liste de paires de chaînes de caractères et de chemin de sortie | |
6589 | construite à partir de @var{inputs}. Éventuellement, @var{env-vars} est une | |
6590 | liste de paires de chaînes de caractères spécifiant le nom et la valeur de | |
6591 | variables d'environnement visibles pour le constructeur. Le constructeur | |
6592 | termine en passant le résultat de @var{exp} à @code{exit} ; ainsi, lorsque | |
6593 | @var{exp} renvoie @code{#f}, la construction est considérée en échec. | |
bf5c74e7 | 6594 | |
15f1bff4 JL |
6595 | @var{exp} est construite avec @var{guile-for-build} (une dérivation). |
6596 | Lorsque @var{guile-for-build} est omis où est @code{#f}, la valeur du fluide | |
6597 | @code{%guile-for-build} est utilisée à la place. | |
bf5c74e7 | 6598 | |
15f1bff4 JL |
6599 | Voir la procédure @code{derivation} pour la signification de |
6600 | @var{references-graph}, @var{allowed-references}, | |
6601 | @var{disallowed-references}, @var{local-build?} et @var{substitutable?}. | |
6602 | @end deffn | |
bf5c74e7 | 6603 | |
15f1bff4 JL |
6604 | @noindent |
6605 | Voici un exemple de dérivation à sortie unique qui crée un répertoire avec | |
6606 | un fichier : | |
bf5c74e7 | 6607 | |
15f1bff4 JL |
6608 | @lisp |
6609 | (let ((builder '(let ((out (assoc-ref %outputs "out"))) | |
6610 | (mkdir out) ; create /gnu/store/@dots{}-goo | |
6611 | (call-with-output-file (string-append out "/test") | |
6612 | (lambda (p) | |
6613 | (display '(hello guix) p)))))) | |
6614 | (build-expression->derivation store "goo" builder)) | |
bf5c74e7 | 6615 | |
15f1bff4 JL |
6616 | @result{} #<derivation /gnu/store/@dots{}-goo.drv => @dots{}> |
6617 | @end lisp | |
bf5c74e7 | 6618 | |
bf5c74e7 | 6619 | |
15f1bff4 JL |
6620 | @node La monade du dépôt |
6621 | @section La monade du dépôt | |
bf5c74e7 | 6622 | |
15f1bff4 | 6623 | @cindex monad |
bf5c74e7 | 6624 | |
15f1bff4 JL |
6625 | Les procédures qui travaillent sur le dépôt décrites dans les sections |
6626 | précédentes prennent toutes une connexion ouverte au démon de construction | |
6627 | comme premier argument. Bien que le modèle sous-jacent soit fonctionnel, | |
6628 | elles ont soit des effets de bord, soit dépendent de l'état actuel du dépôt. | |
bf5c74e7 | 6629 | |
15f1bff4 JL |
6630 | Le premier point est embêtant : on doit se balader avec la connexion au |
6631 | démon dans toutes ces fonctions, ce qui rend impossible le fait de composer | |
6632 | des fonctions qui ne prennent pas ce paramètre avec des fonctions qui le | |
6633 | prennent. Le deuxième point est problématique : comme les opérations sur le | |
6634 | dépôt ont des effets de bord ou dépendent d'états externes, elles doivent | |
6635 | être enchaînés correctement. | |
bf5c74e7 | 6636 | |
15f1bff4 JL |
6637 | @cindex valeurs monadiques |
6638 | @cindex fonctions monadiques | |
6639 | C'est là que le module @code{(guix monads)} arrive à la rescousse. Ce | |
6640 | module fournit un cadre pour travailler avec des @dfn{monads}, en | |
6641 | particulier une monade très utile pour notre usage, la @dfn{monade du | |
6642 | dépôt}. Les monades sont des constructions qui permettent deux choses : | |
6643 | associer un « contexte » avec une valeur (dans notre cas, le contexte est le | |
6644 | dépôt) et construire une séquence de calculs (ici les calculs comprennent | |
6645 | des accès au dépôt). Les valeurs dans une monade — les valeurs qui | |
6646 | contiennent ce contexte supplémentaire — sont appelées des @dfn{valeurs | |
6647 | monadiques} ; les procédures qui renvoient ce genre de valeur sont appelées | |
6648 | des @dfn{procédures monadiques}. | |
bf5c74e7 | 6649 | |
15f1bff4 | 6650 | Considérez cette procédure « normale » : |
bf5c74e7 JL |
6651 | |
6652 | @example | |
15f1bff4 JL |
6653 | (define (sh-symlink store) |
6654 | ;; Renvoie une dérivation qui crée un lien symbolique vers l'exécutable « bash ». | |
6655 | (let* ((drv (package-derivation store bash)) | |
6656 | (out (derivation->output-path drv)) | |
6657 | (sh (string-append out "/bin/bash"))) | |
6658 | (build-expression->derivation store "sh" | |
6659 | `(symlink ,sh %output)))) | |
bf5c74e7 JL |
6660 | @end example |
6661 | ||
15f1bff4 JL |
6662 | En utilisant @code{(guix monads)} et @code{(guix gexp)}, on peut la réécrire |
6663 | en une fonction monadique : | |
bf5c74e7 JL |
6664 | |
6665 | @example | |
15f1bff4 JL |
6666 | (define (sh-symlink) |
6667 | ;; Pareil, mais renvoie une valeur monadique. | |
6668 | (mlet %store-monad ((drv (package->derivation bash))) | |
6669 | (gexp->derivation "sh" | |
6670 | #~(symlink (string-append #$drv "/bin/bash") | |
6671 | #$output)))) | |
bf5c74e7 JL |
6672 | @end example |
6673 | ||
15f1bff4 JL |
6674 | Il y a plusieurs choses à remarquer avec cette deuxième version : le |
6675 | paramètre @code{store} est maintenant implicitement « enfilé » dans les | |
6676 | appels aux procédures monadiques @code{package->derivation} et | |
6677 | @code{gexp->derivation}, et la valeur monadique renvoyée par | |
6678 | @code{package->derivation} est @dfn{liée} avec @code{mlet} plutôt qu'avec un | |
6679 | simple @code{let}. | |
bf5c74e7 | 6680 | |
15f1bff4 JL |
6681 | Il se trouve que l'appel à @code{package->derivation} peut même être omis |
6682 | puisqu'il aura lieu implicitement, comme nous le verrons plus tard | |
6683 | (@pxref{G-Expressions}) : | |
bf5c74e7 JL |
6684 | |
6685 | @example | |
15f1bff4 JL |
6686 | (define (sh-symlink) |
6687 | (gexp->derivation "sh" | |
6688 | #~(symlink (string-append #$bash "/bin/bash") | |
6689 | #$output))) | |
bf5c74e7 JL |
6690 | @end example |
6691 | ||
15f1bff4 JL |
6692 | @c See |
6693 | @c <https://syntaxexclamation.wordpress.com/2014/06/26/escaping-continuations/> | |
6694 | @c for the funny quote. | |
6695 | L'appel à la procédure monadique @code{sh-symlink} n'a aucun effet. En | |
6696 | anglais on pourrait dire « you exit a monad like you exit a building on | |
6697 | fire: by running »@footnote{NdT : « on sort d'une monade comme d'un immeuble | |
6698 | en flamme, en courant ». Le jeu de mot est perdu à la traduction : courir | |
6699 | et lancer utilisent le même verbe @i{run} en anglais.}. Donc, pour sortir de | |
6700 | la monade et obtenir l'effet escompté, on doit utiliser | |
6701 | @code{run-with-store}. | |
bf5c74e7 JL |
6702 | |
6703 | @example | |
15f1bff4 JL |
6704 | (run-with-store (open-connection) (sh-symlink)) |
6705 | @result{} /gnu/store/...-sh-symlink | |
bf5c74e7 JL |
6706 | @end example |
6707 | ||
15f1bff4 JL |
6708 | Remarquez que le module @code{(guix monad-repl)} étend la console Guile avec |
6709 | de nouvelles « méta-commandes » pour rendre plus facile la manipulation de | |
6710 | procédures monadiques : @code{run-in-store} et @code{enter-store-monad}. La | |
6711 | première est utilisée pour « lancer » une seule valeur monadique à travers | |
6712 | le dépôt : | |
adfb167f | 6713 | |
15f1bff4 JL |
6714 | @example |
6715 | scheme@@(guile-user)> ,run-in-store (package->derivation hello) | |
6716 | $1 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}> | |
6717 | @end example | |
6718 | ||
6719 | La deuxième entre dans une console récursive, où toutes les valeurs de | |
6720 | retour sont automatiquement lancées à travers le dépôt : | |
adfb167f JL |
6721 | |
6722 | @example | |
15f1bff4 JL |
6723 | scheme@@(guile-user)> ,enter-store-monad |
6724 | store-monad@@(guile-user) [1]> (package->derivation hello) | |
6725 | $2 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}> | |
6726 | store-monad@@(guile-user) [1]> (text-file "foo" "Hello!") | |
6727 | $3 = "/gnu/store/@dots{}-foo" | |
6728 | store-monad@@(guile-user) [1]> ,q | |
6729 | scheme@@(guile-user)> | |
adfb167f JL |
6730 | @end example |
6731 | ||
15f1bff4 JL |
6732 | @noindent |
6733 | Remarquez qu'on ne peut pas renvoyer de valeur non monadique dans la console | |
6734 | @code{store-monad}. | |
adfb167f | 6735 | |
15f1bff4 JL |
6736 | Les formes syntaxiques principales pour utiliser des monades en général sont |
6737 | disponibles dans le module @code{(guix monads)} et sont décrites ci-dessous. | |
adfb167f | 6738 | |
15f1bff4 JL |
6739 | @deffn {Syntaxe Scheme} with-monad @var{monad} @var{body} ... |
6740 | Évalue n'importe quelle forme @code{>>=} ou @code{return} dans @var{body} | |
6741 | comme une @var{monad}. | |
6742 | @end deffn | |
bf5c74e7 | 6743 | |
15f1bff4 JL |
6744 | @deffn {Syntaxe Scheme} return @var{val} |
6745 | Renvoie une valeur monadique qui encapsule @var{val}. | |
6746 | @end deffn | |
bf5c74e7 | 6747 | |
15f1bff4 JL |
6748 | @deffn {Syntaxe Scheme} >>= @var{mval} @var{mproc} ... |
6749 | @dfn{Lie} une valeur monadique @var{mval}, en passant son « contenu » aux | |
6750 | procédures monadiques @var{mproc}@dots{}@footnote{Cette opération est | |
6751 | souvent appelée « bind », mais ce nom dénote une procédure qui n'a rien à | |
6752 | voir en Guile. Ainsi, nous empruntons ce symbole quelque peu cryptique au | |
6753 | langage Haskell}. Il peut y avoir une ou plusieurs @code{mproc}, comme dans | |
6754 | cet exemple : | |
bf5c74e7 | 6755 | |
15f1bff4 JL |
6756 | @example |
6757 | (run-with-state | |
6758 | (with-monad %state-monad | |
6759 | (>>= (return 1) | |
6760 | (lambda (x) (return (+ 1 x))) | |
6761 | (lambda (x) (return (* 2 x))))) | |
6762 | 'some-state) | |
bf5c74e7 | 6763 | |
15f1bff4 JL |
6764 | @result{} 4 |
6765 | @result{} some-state | |
6766 | @end example | |
6767 | @end deffn | |
bf5c74e7 | 6768 | |
15f1bff4 JL |
6769 | @deffn {Syntaxe Scheme} mlet @var{monad} ((@var{var} @var{mval}) ...) @ |
6770 | @var{body} ... | |
6771 | @deffnx {Syntaxe Scheme} mlet* @var{monad} ((@var{var} @var{mval}) ...) @ | |
6772 | @var{body} ... | |
6773 | Lie les variables @var{var} aux valeurs monadiques @var{mval} dans | |
6774 | @var{body}, une séquence d'expressions. Comme avec l'opérateur de liaison, | |
6775 | on peut réfléchir comme si on « ouvrait » la valeur non-monadique « contenue | |
6776 | » dans @var{mval} et comme si on faisait en sorte que @var{var} se réfère à | |
6777 | cette valeur pure, non-monadique, dans la portée de @var{body}. La forme | |
6778 | (@var{var} -> @var{val}) lie @var{var} à la valeur « normale » @var{val}, | |
6779 | comme @code{let}. L'opération de liaison a lieu en séquence de la gauche | |
6780 | vers la droite. La dernière expression de @var{body} doit être une | |
6781 | expression monadique et son résultat deviendra le résultat de @code{mlet} ou | |
6782 | @code{mlet*} lorsque lancé dans la @var{monad}. | |
bf5c74e7 | 6783 | |
15f1bff4 JL |
6784 | @code{mlet*} est à @code{mlet} ce que @code{let*} est à @code{let} |
6785 | (@pxref{Local Bindings,,, guile, GNU Guile Reference Manual}). | |
6786 | @end deffn | |
bf5c74e7 | 6787 | |
15f1bff4 JL |
6788 | @deffn {Système Scheme} mbegin @var{monad} @var{mexp} ... |
6789 | Lie @var{mexp} et les expressions monadiques suivantes en séquence, et | |
6790 | renvoie le résultat de la dernière expression. Chaque expression dans la | |
6791 | séquence doit être une expression monadique. | |
bf5c74e7 | 6792 | |
15f1bff4 JL |
6793 | Cette procédure est similaire à @code{mlet}, sauf que les valeurs de retour |
6794 | des expressions monadiques sont ignorées. Dans ce sens, elle est analogue à | |
6795 | @code{begin}, mais appliqué à des expressions monadiques. | |
6796 | @end deffn | |
bf5c74e7 | 6797 | |
15f1bff4 JL |
6798 | @deffn {Système Scheme} mwhen @var{condition} @var{mexp0} @var{mexp*} ... |
6799 | Lorsque la @var{condition} est vraie, évalue la séquence des expressions | |
6800 | monadiques @var{mexp0}..@var{mexp*} comme dans un @code{mbegin}. Lorsque la | |
6801 | @var{condition} est fausse, renvoie @code{*unspecified*} dans la monade | |
6802 | actuelle. Chaque expression dans la séquence doit être une expression | |
6803 | monadique. | |
6804 | @end deffn | |
bf5c74e7 | 6805 | |
15f1bff4 JL |
6806 | @deffn {Système Scheme} munless @var{condition} @var{mexp0} @var{mexp*} ... |
6807 | Lorsque la @var{condition} est fausse, évalue la séquence des expressions | |
6808 | monadiques @var{mexp0}..@var{mexp*} comme dans un @code{mbegin}. Lorsque la | |
6809 | @var{condition} est vraie, renvoie @code{*unspecified*} dans la monade | |
6810 | actuelle. Chaque expression dans la séquence doit être une expression | |
6811 | monadique. | |
6812 | @end deffn | |
bf5c74e7 | 6813 | |
15f1bff4 JL |
6814 | @cindex monade d'état |
6815 | Le module @code{(guix monads)} fournit la @dfn{monade d'état} qui permet à | |
6816 | une valeur supplémentaire — l'état — d'être enfilée à travers les appels de | |
6817 | procédures. | |
bf5c74e7 | 6818 | |
15f1bff4 JL |
6819 | @defvr {Variable Scheme} %state-monad |
6820 | La monade d'état. les procédure dans la monade d'état peuvent accéder et | |
6821 | modifier l'état qui est enfilé. | |
bf5c74e7 | 6822 | |
15f1bff4 JL |
6823 | Considérez l'exemple ci-dessous. La procédure @code{square} renvoie une |
6824 | valeur dans la monade d'état. Elle renvoie le carré de son argument, mais | |
6825 | incrémente aussi la valeur actuelle de l'état : | |
bf5c74e7 | 6826 | |
15f1bff4 JL |
6827 | @example |
6828 | (define (square x) | |
6829 | (mlet %state-monad ((count (current-state))) | |
6830 | (mbegin %state-monad | |
6831 | (set-current-state (+ 1 count)) | |
6832 | (return (* x x))))) | |
bf5c74e7 | 6833 | |
15f1bff4 JL |
6834 | (run-with-state (sequence %state-monad (map square (iota 3))) 0) |
6835 | @result{} (0 1 4) | |
6836 | @result{} 3 | |
6837 | @end example | |
bf5c74e7 | 6838 | |
15f1bff4 JL |
6839 | Lorsqu'on la lance à travers @var{%state-monad}, on obtient cet valeur |
6840 | d'état supplémentaire, qui est le nombre d'appels à @code{square}. | |
6841 | @end defvr | |
bf5c74e7 | 6842 | |
15f1bff4 JL |
6843 | @deffn {Procédure monadique} current-state |
6844 | Renvoie l'état actuel dans une valeur monadique. | |
6845 | @end deffn | |
bf5c74e7 | 6846 | |
15f1bff4 JL |
6847 | @deffn {Procédure monadique} set-current-state @var{value} |
6848 | Initialise l'état actuel à @var{value} et renvoie l'état précédent dans une | |
6849 | valeur monadique. | |
6850 | @end deffn | |
bf5c74e7 | 6851 | |
15f1bff4 JL |
6852 | @deffn {Procédure monadique} state-push @var{value} |
6853 | Pousse @var{value} sur l'état actuel, qui est supposé être une liste, et | |
6854 | renvoie l'état précédent dans une valeur monadique. | |
6855 | @end deffn | |
bf5c74e7 | 6856 | |
15f1bff4 JL |
6857 | @deffn {Procédure monadique} state-pop |
6858 | Récupère (pop) une valeur dans l'état actuel et la renvoie comme une valeur | |
6859 | monadique. L'état est supposé être une liste. | |
6860 | @end deffn | |
bf5c74e7 | 6861 | |
15f1bff4 JL |
6862 | @deffn {Procédure Scheme} run-with-state @var{mval} [@var{state}] |
6863 | Lance la valeur monadique @var{mval} avec @var{state} comme valeur | |
6864 | initiale. Renvoie deux valeurs : la valeur du résultat et l'état du | |
6865 | résultat. | |
6866 | @end deffn | |
bf5c74e7 | 6867 | |
15f1bff4 JL |
6868 | L'interface principale avec la monade du dépôt, fournit par le module |
6869 | @code{(guix store)}, est la suivante. | |
bf5c74e7 | 6870 | |
15f1bff4 JL |
6871 | @defvr {Variable Scheme} %store-monad |
6872 | La monade du dépôt — un alias pour @var{%state-monad}. | |
bf5c74e7 | 6873 | |
15f1bff4 JL |
6874 | Les valeurs dans la monade du dépôt encapsulent des accès au dépôt. Lorsque |
6875 | son effet est requis, une valeur de la monade du dépôt doit être « évaluée » | |
6876 | en la passant à la procédure @code{run-with-store} (voir plus bas). | |
6877 | @end defvr | |
bf5c74e7 | 6878 | |
15f1bff4 JL |
6879 | @deffn {Procédure Scheme} run-with-store @var{store} @var{mval} [#:guile-for-build] [#:system (%current-system)] |
6880 | Lance @var{mval}, une valeur monadique dans la monade du dépôt, dans | |
6881 | @var{store}, une connexion ouvert au dépôt. | |
6882 | @end deffn | |
3cacfa9e | 6883 | |
15f1bff4 JL |
6884 | @deffn {Procédure monadique} text-file @var{name} @var{text} [@var{references}] |
6885 | Renvoie une valeur monadique correspondant au nom de fichier dans le dépôt | |
6886 | du fichier contenant @var{text}, une chaîne de caractères. @var{references} | |
6887 | est une liste d'éléments du dépôt auxquels le fichier texte en résultat se | |
6888 | réfère ; c'est la liste vide par défaut. | |
6889 | @end deffn | |
bf5c74e7 | 6890 | |
15f1bff4 JL |
6891 | @deffn {Procédure monadique} binary-file @var{name} @var{data} [@var{references}] |
6892 | Renvoie une valeur monadique correspondant au nom de fichier absolu dans le | |
6893 | dépôt du fichier contenant @var{data}, un vecteur d'octets. | |
6894 | @var{references} est une liste d'éléments du dépôt auxquels le fichier | |
6895 | binaire en résultat se réfère ; c'est la liste vide par défaut. | |
6896 | @end deffn | |
6897 | ||
6898 | @deffn {Procédure monadique} interned-file @var{file} [@var{name}] @ | |
6899 | [#:recursive? #t] [#:select? (const #t)] | |
6900 | Renvoie le nom de @var{file} une fois ajouté au dépôt. Utilise @var{name} | |
6901 | comme nom dans le dépôt ou le nom de fichier de @var{file} si @var{name} est | |
6902 | omis. | |
bf5c74e7 | 6903 | |
15f1bff4 JL |
6904 | Lorsque @var{recursive?} est vraie, le contenu de @var{file} est ajouté |
6905 | récursivement ; si @var{file} désigne un fichier simple et que | |
6906 | @var{recursive?} est vrai, son contenu est ajouté et ses bits de permissions | |
6907 | sont préservés. | |
bf5c74e7 | 6908 | |
15f1bff4 JL |
6909 | Lorsque @var{recursive?} est vraie, appelle @code{(@var{select?} @var{file} |
6910 | @var{stat})} pour chaque répertoire où @var{file} est le nom de fichier | |
6911 | absolu de l'entrée et @var{stat} est le résultat de @code{lstat} ; à | |
6912 | l'exception des entrées pour lesquelles @var{select?} ne renvoie pas vrai. | |
bf5c74e7 | 6913 | |
15f1bff4 | 6914 | L'exemple ci-dessous ajoute un fichier au dépôt, sous deux noms différents : |
bf5c74e7 | 6915 | |
15f1bff4 JL |
6916 | @example |
6917 | (run-with-store (open-connection) | |
6918 | (mlet %store-monad ((a (interned-file "README")) | |
6919 | (b (interned-file "README" "LEGU-MIN"))) | |
6920 | (return (list a b)))) | |
bf5c74e7 | 6921 | |
15f1bff4 JL |
6922 | @result{} ("/gnu/store/rwm@dots{}-README" "/gnu/store/44i@dots{}-LEGU-MIN") |
6923 | @end example | |
bf5c74e7 | 6924 | |
15f1bff4 | 6925 | @end deffn |
bf5c74e7 | 6926 | |
15f1bff4 JL |
6927 | Le module @code{(guix packages)} exporte les procédures monadiques liées aux |
6928 | paquets suivantes : | |
bf5c74e7 | 6929 | |
15f1bff4 JL |
6930 | @deffn {Procédure monadique} package-file @var{package} [@var{file}] @ |
6931 | [#:system (%current-system)] [#:target #f] @ | |
6932 | [#:output "out"] | |
6933 | Renvoie une valeur monadique qui contient le nom de fichier absolu de | |
6934 | @var{file} dans le répertoire @var{output} de @var{package}. Lorsque | |
6935 | @var{file} est omis, renvoie le nom du répertoire @var{output} de | |
6936 | @var{package}. Lorsque @var{target} est vrai, l'utilise comme un triplet de | |
6937 | cible pour la compilation croisée. | |
6938 | @end deffn | |
bf5c74e7 | 6939 | |
15f1bff4 JL |
6940 | @deffn {Procédure monadique} package->derivation @var{package} [@var{system}] |
6941 | @deffnx {Procédure monadique} package->cross-derivation @var{package} @ | |
6942 | @var{target} [@var{system}] | |
6943 | Version monadique de @code{package-derivation} et | |
6944 | @code{package-cross-derivation} (@pxref{Définition des paquets}). | |
6945 | @end deffn | |
bf5c74e7 | 6946 | |
bf5c74e7 | 6947 | |
15f1bff4 JL |
6948 | @node G-Expressions |
6949 | @section G-Expressions | |
bf5c74e7 | 6950 | |
15f1bff4 JL |
6951 | @cindex G-expression |
6952 | @cindex quoting du code de construction | |
6953 | On a donc des « dérivations » qui représentent une séquence d'actions de | |
6954 | construction à effectuer pour produire un élément du dépôt | |
6955 | (@pxref{Dérivations}). Ces actions de construction sont effectuées | |
6956 | lorsqu'on demande au démon de construire effectivement les dérivations ; | |
6957 | elles sont lancées par le démon dans un conteneur (@pxref{Invoquer guix-daemon}). | |
bf5c74e7 | 6958 | |
15f1bff4 JL |
6959 | @cindex strate de code |
6960 | Ça ne devrait pas vous surprendre, mais nous aimons écrire ces actions de | |
6961 | construction en Scheme. Lorsqu'on fait ça, on fini avec deux @dfn{strates} | |
6962 | de code Scheme@footnote{Le terme @dfn{strate} dans ce contexte a été inventé | |
6963 | par Manuel Serrano et ses collaborateurs dans le contexte de leur travaux | |
6964 | sur Hop. Oleg Kiselyov, qui a écrit des | |
6965 | @url{http://okmij.org/ftp/meta-programming/#meta-scheme, essais perspicaces | |
6966 | et du code sur le sujet}, utilise le terme de « mise en scène » pour ce | |
6967 | genre de génération de code.} : le « code hôte » — le code qui défini les | |
6968 | paquets, parle au démon, etc — et le « code côté construction » — le code | |
6969 | qui effectue effectivement les actions de construction, comme créer des | |
6970 | répertoires, invoquer @code{make}, etc. | |
bf5c74e7 | 6971 | |
15f1bff4 JL |
6972 | Pour décrire une dérivation et ses actions de construction, on a typiquement |
6973 | besoin d'intégrer le code de construction dans le code hôte. Ça revient à | |
6974 | manipuler le code de construction comme de la donnée, et l'homoiconicité de | |
6975 | Scheme — le code a une représentation directe en tant que donnée — est très | |
6976 | utile pour cela. Mais on a besoin de plus que le mécanisme de | |
6977 | @code{quasiquote} en Scheme pour construire des expressions de construction. | |
bf5c74e7 | 6978 | |
15f1bff4 JL |
6979 | Le module @code{(guix gexp)} implémente les @dfn{G-expressions}, une forme |
6980 | de S-expression adaptée aux expressions de construction. Les G-expression, | |
6981 | ou @dfn{gexps}, consistent en gros en trois formes syntaxiques : | |
6982 | @code{gexp}, @code{ungexp} et @code{ungexp-splicing} (ou plus simplement : | |
6983 | @code{#~}, @code{#$} et @code{#$@@}), qui sont comparable à | |
6984 | @code{quasiquote}, @code{unquote} et @code{unquote-splicing} respectivement | |
6985 | (@pxref{Expression Syntax, @code{quasiquote},, guile, GNU Guile Reference | |
6986 | Manual}). Cependant il y a des différences majeures : | |
bf5c74e7 | 6987 | |
15f1bff4 JL |
6988 | @itemize |
6989 | @item | |
6990 | Les Gexps sont conçues pour être écrites dans un fichier et être lancées ou | |
6991 | manipulées par d'autres processus. | |
bf5c74e7 | 6992 | |
15f1bff4 JL |
6993 | @item |
6994 | Lorsqu'un objet de haut-niveau comme un paquet ou une dérivation est | |
6995 | unquotée dans une gexp, le résultat est comme si le nom de fichier de son | |
6996 | résultat avait été introduit. | |
bf5c74e7 | 6997 | |
15f1bff4 JL |
6998 | @item |
6999 | Les gexps transportent des informations sur les paquets ou les dérivations | |
7000 | auxquels elles se réfèrent, et ces dépendances sont automatiquement ajoutées | |
7001 | comme des entrées du processus de construction qui les utilise. | |
7002 | @end itemize | |
bf5c74e7 | 7003 | |
15f1bff4 JL |
7004 | @cindex abaissement, des objets haut-niveau dans les gepxs |
7005 | Ce mécanisme n'est pas limité aux paquets et aux dérivations : on peut | |
7006 | définir des @dfn{compilateurs} capable « d'abaisser » d'autres objets de | |
7007 | haut-niveau ou des fichiers dans le dépôt, pour que ces objets puissent | |
7008 | aussi être insérés dans des gexps. Par exemple, des objets haut-niveau | |
7009 | utiles qui pourraient être insérées dans une gexp sont les « objets | |
7010 | simili-fichiers », qui rendent facile l'ajout de fichiers dans le dépôt et | |
7011 | les références vers eux dans les dérivations et autres (voir | |
7012 | @code{local-file} et @code{plain-file} ci-dessous). | |
bf5c74e7 | 7013 | |
15f1bff4 | 7014 | Pour illustrer cette idée, voici un exemple de gexp : |
bf5c74e7 JL |
7015 | |
7016 | @example | |
15f1bff4 JL |
7017 | (define build-exp |
7018 | #~(begin | |
7019 | (mkdir #$output) | |
7020 | (chdir #$output) | |
7021 | (symlink (string-append #$coreutils "/bin/ls") | |
7022 | "list-files"))) | |
bf5c74e7 JL |
7023 | @end example |
7024 | ||
15f1bff4 JL |
7025 | Cette gexp peut être passée à @code{gexp->derivation} ; on obtient une |
7026 | dérivation qui construit une répertoire contenant exactement un lien | |
7027 | symbolique à @file{/gnu/store/@dots{}-coreutils-8.22/bin/ls} : | |
bf5c74e7 JL |
7028 | |
7029 | @example | |
15f1bff4 | 7030 | (gexp->derivation "the-thing" build-exp) |
bf5c74e7 JL |
7031 | @end example |
7032 | ||
15f1bff4 JL |
7033 | Comme on pourrait s'y attendre, la chaîne |
7034 | @code{"/gnu/store/@dots{}-coreutils-8.22"} est substituée à la place de la | |
7035 | référence au paquet @var{coreutils} dans le code de construction final, et | |
7036 | @var{coreutils} est automatiquement devenu une entrée de la dérivation. De | |
7037 | même, @code{#$output} (équivalent à @code{(ungexp output)}) est remplacé par | |
7038 | une chaîne de caractères contenant le nom du répertoire de la sortie de la | |
7039 | dérivation. | |
bf5c74e7 | 7040 | |
15f1bff4 JL |
7041 | @cindex compilation croisée |
7042 | Dans le contexte d'une compilation croisée, il est utile de distinguer entre | |
7043 | des références à la construction @emph{native} d'un paquet — qui peut être | |
7044 | lancé par l'hôte — et des références à la construction croisée d'un paquet. | |
7045 | Pour cela, @code{#+} joue le même rôle que @code{#$}, mais référence une | |
7046 | construction native d'un paquet : | |
bf5c74e7 JL |
7047 | |
7048 | @example | |
15f1bff4 JL |
7049 | (gexp->derivation "vi" |
7050 | #~(begin | |
7051 | (mkdir #$output) | |
7052 | (system* (string-append #+coreutils "/bin/ln") | |
7053 | "-s" | |
7054 | (string-append #$emacs "/bin/emacs") | |
7055 | (string-append #$output "/bin/vi"))) | |
7056 | #:target "mips64el-linux-gnu") | |
bf5c74e7 JL |
7057 | @end example |
7058 | ||
15f1bff4 JL |
7059 | @noindent |
7060 | Dans l'exemple ci-dessus, la construction native de @var{coreutils} est | |
7061 | utilisée, pour que @command{ln} puisse effectivement être lancé sur l'hôte ; | |
7062 | mais ensuite la construction croisée d'@var{emacs} est utilisée. | |
bf5c74e7 | 7063 | |
15f1bff4 JL |
7064 | @cindex modules importés, pour les gexps |
7065 | @findex with-imported-modules | |
7066 | Une autre fonctionnalité, ce sont les @dfn{modules importés} : parfois vous | |
7067 | voudriez pouvoir utiliser certains modules Guile de « l'environnement hôte » | |
7068 | dans la gexp, donc ces modules devraient être importés dans « | |
7069 | l'environnement de construction ». La forme @code{with-imported-modules} | |
7070 | vous permet d'exprimer ça : | |
bf5c74e7 JL |
7071 | |
7072 | @example | |
15f1bff4 JL |
7073 | (let ((build (with-imported-modules '((guix build utils)) |
7074 | #~(begin | |
7075 | (use-modules (guix build utils)) | |
7076 | (mkdir-p (string-append #$output "/bin")))))) | |
7077 | (gexp->derivation "empty-dir" | |
7078 | #~(begin | |
7079 | #$build | |
7080 | (display "success!\n") | |
7081 | #t))) | |
bf5c74e7 JL |
7082 | @end example |
7083 | ||
15f1bff4 JL |
7084 | @noindent |
7085 | Dans cet exemple, le module @code{(guix build utils)} est automatiquement | |
7086 | récupéré dans l'environnement de construction isolé de notre gexp, pour que | |
7087 | @code{(use-modules (guix build utils))} fonctionne comme on s'y attendrait. | |
bf5c74e7 | 7088 | |
15f1bff4 JL |
7089 | @cindex closure de module |
7090 | @findex source-module-closure | |
7091 | Typiquement, vous voudriez que la @emph{closure} complète du module soit | |
7092 | importé — c.-à-d.@: le module lui-même et tous les modules dont il dépend — | |
7093 | plutôt que seulement le module ; sinon, une tentative de chargement du | |
7094 | module échouera à cause des modules dépendants manquants. La procédure | |
7095 | @code{source-module-closure} calcule la closure d'un module en cherchant | |
7096 | dans ses en-têtes sources, ce qui est pratique dans ce cas : | |
bf5c74e7 | 7097 | |
15f1bff4 JL |
7098 | @example |
7099 | (use-modules (guix modules)) ;pour 'source-module-closure' | |
bf5c74e7 | 7100 | |
15f1bff4 JL |
7101 | (with-imported-modules (source-module-closure |
7102 | '((guix build utils) | |
7103 | (gnu build vm))) | |
7104 | (gexp->derivation "something-with-vms" | |
7105 | #~(begin | |
7106 | (use-modules (guix build utils) | |
7107 | (gnu build vm)) | |
7108 | @dots{}))) | |
7109 | @end example | |
7110 | ||
7111 | @cindex extensions, des gexps | |
7112 | @findex with-extensions | |
7113 | Dans la même idée, parfois vous pouvez souhaiter importer non seulement des | |
7114 | modules en Scheme pur, mais aussi des « extensions » comme des liaisons | |
7115 | Guile de bibliothèques C ou d'autres paquet « complets ». Disons que vous | |
7116 | voulez utiliser le paquet @code{guile-json} du côté de la construction, | |
7117 | voici comme procéder : | |
bf5c74e7 JL |
7118 | |
7119 | @example | |
15f1bff4 JL |
7120 | (use-modules (gnu packages guile)) ;pour 'guile-json' |
7121 | ||
7122 | (with-extensions (list guile-json) | |
7123 | (gexp->derivation "something-with-json" | |
7124 | #~(begin | |
7125 | (use-modules (json)) | |
7126 | @dots{}))) | |
bf5c74e7 JL |
7127 | @end example |
7128 | ||
15f1bff4 | 7129 | La forme syntaxique pour construire des gexps est résumée ci-dessous. |
bf5c74e7 | 7130 | |
15f1bff4 JL |
7131 | @deffn {Syntaxe Scheme} #~@var{exp} |
7132 | @deffnx {Syntaxe Scheme} (gexp @var{exp}) | |
7133 | Renvoie une G-expression contenant @var{exp}. @var{exp} peut contenir une | |
7134 | ou plusieurs de ces formes : | |
bf5c74e7 | 7135 | |
15f1bff4 JL |
7136 | @table @code |
7137 | @item #$@var{obj} | |
7138 | @itemx (ungexp @var{obj}) | |
7139 | Introduit une référence à @var{obj}. @var{obj} peut être d'un des types | |
7140 | supportés, par exemple un paquet ou une dérivation, auquel cas la forme | |
7141 | @code{ungexp} est remplacée par le nom de fichier de sa sortie — p.@: ex.@: | |
7142 | @code{"/gnu/store/@dots{}-coreutils-8.22}. | |
bf5c74e7 | 7143 | |
15f1bff4 JL |
7144 | Si @var{boj} est une liste, elle est traversée et les références aux objets |
7145 | supportés sont substitués de manière similaire. | |
bf5c74e7 | 7146 | |
15f1bff4 JL |
7147 | Si @var{obj} est une autre gexp, son contenu est inséré et ses dépendances |
7148 | sont ajoutées à celle de la gexp qui l'entoure. | |
524756d1 | 7149 | |
15f1bff4 | 7150 | Si @var{obj} est un autre type d'objet, il est inséré tel quel. |
524756d1 | 7151 | |
15f1bff4 JL |
7152 | @item #$@var{obj}:@var{output} |
7153 | @itemx (ungexp @var{obj} @var{output}) | |
7154 | Cette forme est similaire à la précédente, mais se réfère explicitement à la | |
7155 | sortie @var{output} de l'objet @var{obj} — c'est utile lorsque @var{obj} | |
7156 | produit plusieurs sorties (@pxref{Des paquets avec plusieurs résultats}). | |
524756d1 | 7157 | |
15f1bff4 JL |
7158 | @item #+@var{obj} |
7159 | @itemx #+@var{obj}:output | |
7160 | @itemx (ungexp-native @var{obj}) | |
7161 | @itemx (ungexp-native @var{obj} @var{output}) | |
7162 | Comme @code{ungexp}, mais produit une référence à la construction | |
7163 | @emph{native} de @var{obj} lorsqu'elle est utilisée dans une compilation | |
7164 | croisée. | |
524756d1 | 7165 | |
15f1bff4 JL |
7166 | @item #$output[:@var{output}] |
7167 | @itemx (ungexp output [@var{output}]) | |
7168 | Insère une référence à la sortie @var{output} de la dérivation, ou à la | |
7169 | sortie principale lorsque @var{output} est omis. | |
bf5c74e7 | 7170 | |
15f1bff4 | 7171 | Cela ne fait du sens que pour les gexps passées à @code{gexp->derivation}. |
bf5c74e7 | 7172 | |
15f1bff4 JL |
7173 | @item #$@@@var{lst} |
7174 | @itemx (ungexp-splicing @var{lst}) | |
7175 | Comme au dessus, mais recolle (@i{splice}) le contenu de @var{lst} dans la | |
7176 | liste qui la contient. | |
bf5c74e7 | 7177 | |
15f1bff4 JL |
7178 | @item #+@@@var{lst} |
7179 | @itemx (ungexp-native-splicing @var{lst}) | |
7180 | Comme au dessus, mais se réfère à la construction native des objets listés | |
7181 | dans @var{lst}. | |
bf5c74e7 | 7182 | |
bf5c74e7 JL |
7183 | @end table |
7184 | ||
15f1bff4 JL |
7185 | Les G-expressions crées par @code{gexp} ou @code{#~} sont des objets à |
7186 | l'exécution du type @code{gexp?} (voir plus bas). | |
7187 | @end deffn | |
bf5c74e7 | 7188 | |
15f1bff4 JL |
7189 | @deffn {Syntaxe Scheme} with-imported-modules @var{modules} @var{body}@dots{} |
7190 | Marque les gexps définies dans @var{body}@dots{} comme requérant | |
7191 | @var{modules} dans leur environnement d'exécution. | |
bf5c74e7 | 7192 | |
15f1bff4 JL |
7193 | Chaque élément dans @var{module} peut être le nom d'un module, comme |
7194 | @code{(guix build utils)} ou le nom d'un module suivi d'une flèche, suivie | |
7195 | d'un objet simili-fichier : | |
bf5c74e7 JL |
7196 | |
7197 | @example | |
15f1bff4 JL |
7198 | `((guix build utils) |
7199 | (guix gcrypt) | |
7200 | ((guix config) => ,(scheme-file "config.scm" | |
7201 | #~(define-module @dots{})))) | |
bf5c74e7 JL |
7202 | @end example |
7203 | ||
15f1bff4 JL |
7204 | @noindent |
7205 | Dans l'exemple au dessus, les deux premiers modules sont récupérés dans le | |
7206 | chemin de recherche, et le dernier est créé à partir d'un objet | |
7207 | simili-fichier. | |
bf5c74e7 | 7208 | |
15f1bff4 JL |
7209 | Cette forme a une portée @emph{lexicale} : elle a un effet sur les gexp |
7210 | directement définies dans @var{body}@dots{}, mais pas sur celles définies | |
7211 | dans des procédures appelées par @var{body}@dots{}. | |
7212 | @end deffn | |
bf5c74e7 | 7213 | |
15f1bff4 JL |
7214 | @deffn {Syntaxe Scheme} with-extensions @var{extensions} @var{body}@dots{} |
7215 | Marque les gexps définies dans @var{body}@dots{} comme requérant | |
7216 | @var{extensions} dans leur environnement de construction et d'exécution. | |
7217 | @var{extensions} est typiquement une liste d'objets paquets comme définis | |
7218 | dans le module @code{(gnu packages guile)}. | |
bf5c74e7 | 7219 | |
15f1bff4 JL |
7220 | Concrètement, les paquets listés dans @var{extensions} sont ajoutés au |
7221 | chemin de chargement lors de la compilation des modules importés dans | |
7222 | @var{body}@dots{} ; ils sont aussi ajoutés au chemin de chargement de la | |
7223 | gexp renvoyée par @var{body}@dots{}. | |
7224 | @end deffn | |
bf5c74e7 | 7225 | |
15f1bff4 JL |
7226 | @deffn {Procédure Scheme} gexp? @var{obj} |
7227 | Renvoie @code{#t} si @var{obj} est une G-expression. | |
7228 | @end deffn | |
bf5c74e7 | 7229 | |
15f1bff4 JL |
7230 | Les G-expressions sont conçues pour être écrites sur le disque, soit en tant |
7231 | que code pour construire une dérivation, soit en tant que fichier normal | |
7232 | dans le dépôt. Les procédure monadiques suivantes vous permettent de faire | |
7233 | cela (@pxref{La monade du dépôt}, pour plus d'information sur les monads). | |
bf5c74e7 | 7234 | |
15f1bff4 JL |
7235 | @deffn {Procédure monadique} gexp->derivation @var{name} @var{exp} @ |
7236 | [#:system (%current-system)] [#:target #f] [#:graft? #t] @ | |
7237 | [#:hash #f] [#:hash-algo #f] @ | |
7238 | [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ | |
7239 | [#:module-path @var{%load-path}] @ | |
7240 | [#:effective-version "2.2"] @ | |
7241 | [#:references-graphs #f] [#:allowed-references #f] @ | |
7242 | [#:disallowed-references #f] @ [#:leaked-env-vars #f] @ | |
7243 | [#:script-name (string-append @var{name} "-builder")] @ | |
7244 | [#:deprecation-warnings #f] @ | |
7245 | [#:local-build? #f] [#:substitutable? #t] @ | |
7246 | [#:properties '()] [#:guile-for-build #f] | |
7247 | Renvoie une dérivation @var{name} qui lance @var{exp} (une gexp) avec | |
7248 | @var{guile-for-build} (une dérivation) sur @var{system} ; @var{exp} est | |
7249 | stocké dans un fichier appelé @var{script-name}. Lorsque @var{target} est | |
7250 | vraie, elle est utilisée comme triplet de cible de compilation croisée pour | |
7251 | les paquets référencés par @var{exp}. | |
bf5c74e7 | 7252 | |
15f1bff4 JL |
7253 | @var{modules} est devenu obsolète en faveur de |
7254 | @code{with-imported-modules}. Sa signification est de rendre @var{modules} | |
7255 | disponibles dans le contexte d'évaluation de @var{exp} ; @var{modules} est | |
7256 | une liste de noms de modules Guile qui sont cherchés dans @var{module-path} | |
7257 | pour les copier dans le dépôt, les compiler et les rendre disponibles dans | |
7258 | le chemin de chargement pendant l'exécution de @var{exp} — p.@: ex.@: | |
7259 | @code{((guix build utils) (guix build gnu-build-system))}. | |
bf5c74e7 | 7260 | |
15f1bff4 JL |
7261 | @var{effective-version} détermine la chaîne à utiliser lors d'ajout |
7262 | d'extensions de @var{exp} (voir @code{with-extensions}) au chemin de | |
7263 | recherche — p.@: ex.@: @code{"2.2"}. | |
524756d1 | 7264 | |
15f1bff4 JL |
7265 | @var{graft?} détermine si les paquets référencés par @var{exp} devraient |
7266 | être greffés si possible. | |
bf5c74e7 | 7267 | |
15f1bff4 JL |
7268 | Lorsque @var{references-graphs} est vrai, il doit s'agir d'une liste de |
7269 | tuples de la forme suivante : | |
bf5c74e7 JL |
7270 | |
7271 | @example | |
15f1bff4 JL |
7272 | (@var{file-name} @var{package}) |
7273 | (@var{file-name} @var{package} @var{output}) | |
7274 | (@var{file-name} @var{derivation}) | |
7275 | (@var{file-name} @var{derivation} @var{output}) | |
7276 | (@var{file-name} @var{store-item}) | |
bf5c74e7 JL |
7277 | @end example |
7278 | ||
15f1bff4 JL |
7279 | La partie droite des éléments de @var{references-graphs} est automatiquement |
7280 | transformée en une entrée du processus de construction @var{exp}. Dans | |
7281 | l'environnement de construction, chaque @var{file-name} contient le graphe | |
7282 | des références de l'élément correspondant, dans un format texte simple. | |
bf5c74e7 | 7283 | |
15f1bff4 JL |
7284 | @var{allowed-references} doit soit être @code{#f}, soit une liste de noms de |
7285 | sorties ou de paquets. Dans ce dernier cas, la liste dénote les éléments du | |
7286 | dépôt auxquels le résultat a le droit de faire référence. Toute référence à | |
7287 | un autre élément du dépôt conduira à une erreur à la construction. Comme | |
7288 | pour @var{disallowed-references}, qui peut lister des éléments qui ne | |
7289 | doivent pas être référencés par les sorties. | |
bf5c74e7 | 7290 | |
15f1bff4 JL |
7291 | @var{deprecation-warnings} détermine s'il faut afficher les avertissement |
7292 | d'obsolescence à la compilation de modules. Il peut valoir @code{#f}, | |
7293 | @code{t} ou @code{'detailed}. | |
bf5c74e7 | 7294 | |
15f1bff4 JL |
7295 | Les autres arguments sont les mêmes que pour @code{derivation} |
7296 | (@pxref{Dérivations}). | |
7297 | @end deffn | |
7298 | ||
7299 | @cindex objets simili-fichiers | |
7300 | Les procédures @code{local-file}, @code{plain-file}, @code{computed-file}, | |
7301 | @code{program-file} et @code{scheme-file} ci-dessous renvoient des | |
7302 | @dfn{objets simili-fichiers}. C'est-à-dire, lorsqu'ils sont unquotés dans | |
7303 | une G-expression, ces objets donnent un fichier dans le dépôt. Considérez | |
7304 | cette G-expression : | |
bf5c74e7 JL |
7305 | |
7306 | @example | |
15f1bff4 JL |
7307 | #~(system* #$(file-append glibc "/sbin/nscd") "-f" |
7308 | #$(local-file "/tmp/my-nscd.conf")) | |
bf5c74e7 JL |
7309 | @end example |
7310 | ||
15f1bff4 JL |
7311 | Ici, l'effet est « d'internaliser » @file{/tmp/my-nscd.conf} en le copiant |
7312 | dans le dépôt. Une fois étendu, par exemple via @code{gexp->derivation}, la | |
7313 | G-expression se réfère à cette copie dans @file{/gnu/store} ; ainsi, | |
7314 | modifier ou supprimer le fichier dans @file{/tmp} n'a aucun effet sur ce que | |
7315 | fait la G-expression. @code{plain-file} peut être utilisé de la même | |
7316 | manière ; elle est seulement différente par le fait que le contenu du | |
7317 | fichier est passé directement par une chaîne de caractères. | |
bf5c74e7 | 7318 | |
15f1bff4 JL |
7319 | @deffn {Procédure Scheme} local-file @var{file} [@var{name}] @ |
7320 | [#:recursive? #f] [#:select? (const #t)] | |
7321 | Renvoie un objet représentant un fichier local @var{file} à ajouter au dépôt | |
7322 | ; cet objet peut être utilisé dans une gexp. Si @var{file} est un nom de | |
7323 | fichier relatif, il est récupéré à partir de la position du fichier source | |
7324 | dans lequel il apparaît. @var{file} sera ajouté au dépôt sous le nom | |
7325 | @var{name} — par défaut le nom de base de @var{file}. | |
bf5c74e7 | 7326 | |
15f1bff4 JL |
7327 | Lorsque @var{recursive?} est vraie, le contenu de @var{file} est ajouté |
7328 | récursivement ; si @var{file} désigne un fichier simple et que | |
7329 | @var{recursive?} est vrai, son contenu est ajouté et ses bits de permissions | |
7330 | sont préservés. | |
bf5c74e7 | 7331 | |
15f1bff4 JL |
7332 | Lorsque @var{recursive?} est vraie, appelle @code{(@var{select?} @var{file} |
7333 | @var{stat})} pour chaque répertoire où @var{file} est le nom de fichier | |
7334 | absolu de l'entrée et @var{stat} est le résultat de @code{lstat} ; à | |
7335 | l'exception des entrées pour lesquelles @var{select?} ne renvoie pas vrai. | |
bf5c74e7 | 7336 | |
15f1bff4 JL |
7337 | C'est la version déclarative de la procédure monadique @code{interned-file} |
7338 | (@pxref{La monade du dépôt, @code{interned-file}}). | |
7339 | @end deffn | |
bf5c74e7 | 7340 | |
15f1bff4 JL |
7341 | @deffn {Procédure Scheme} plain-file @var{name} @var{content} |
7342 | Renvoie un objet représentant un fichier texte nommé @var{name} avec pour | |
7343 | contenu @var{content} (une chaîne de caractères ou un vecteur d'octets) à | |
7344 | ajouter un dépôt. | |
adfb167f | 7345 | |
15f1bff4 JL |
7346 | C'est la version déclarative de @code{text-file}. |
7347 | @end deffn | |
bf5c74e7 | 7348 | |
15f1bff4 JL |
7349 | @deffn {Procédure Scheme} computed-file @var{name} @var{gexp} @ |
7350 | [#:options '(#:local-build? #t)] | |
7351 | Renvoie un objet représentant un élément du dépôt @var{name}, un fichier ou | |
7352 | un répertoire calculé par @var{gexp}. @var{options} est une liste | |
7353 | d'arguments supplémentaires à passer à @code{gexp->derivation}. | |
bf5c74e7 | 7354 | |
15f1bff4 JL |
7355 | C'est la version déclarative de @code{gexp->derivation}. |
7356 | @end deffn | |
bf5c74e7 | 7357 | |
15f1bff4 JL |
7358 | @deffn {Procédure monadique} gexp->script @var{name} @var{exp} @ |
7359 | [#:guile (default-guile)] [#:module-path %load-path] | |
7360 | Renvoie un script exécutable @var{name} qui lance @var{exp} avec | |
7361 | @var{guile}, avec les modules importés de @var{exp} dans son chemin de | |
7362 | recherche. Cherche les modules de @var{exp} dans @var{module-path}. | |
524756d1 | 7363 | |
15f1bff4 JL |
7364 | L'exemple ci-dessous construit un script qui invoque simplement la commande |
7365 | @command{ls} : | |
bf5c74e7 | 7366 | |
15f1bff4 JL |
7367 | @example |
7368 | (use-modules (guix gexp) (gnu packages base)) | |
7369 | ||
7370 | (gexp->script "list-files" | |
7371 | #~(execl #$(file-append coreutils "/bin/ls") | |
7372 | "ls")) | |
7373 | @end example | |
7374 | ||
7375 | Lorsqu'elle est « lancée » à travers le dépôt (@pxref{La monade du dépôt, | |
7376 | @code{run-with-store}}), on obtient une dérivation qui produit une fichier | |
7377 | exécutable @file{/gnu/store/@dots{}-list-files} qui ressemble à : | |
bf5c74e7 JL |
7378 | |
7379 | @example | |
15f1bff4 JL |
7380 | #!/gnu/store/@dots{}-guile-2.0.11/bin/guile -ds |
7381 | !# | |
7382 | (execl "/gnu/store/@dots{}-coreutils-8.22"/bin/ls" "ls") | |
bf5c74e7 | 7383 | @end example |
15f1bff4 | 7384 | @end deffn |
bf5c74e7 | 7385 | |
15f1bff4 JL |
7386 | @deffn {Procédure Scheme} program-file @var{name} @var{exp} @ |
7387 | [#:guile #f] [#:module-path %load-path] | |
7388 | Renvoie un objet représentant un élément du dépôt @var{name} qui lance | |
7389 | @var{gexp}. @var{guile} est le paquet Guile à utiliser pour exécuter le | |
7390 | script. Les modules importés par @var{gexp} sont recherchés dans | |
7391 | @var{module-path}. | |
bf5c74e7 | 7392 | |
15f1bff4 JL |
7393 | C'est la version déclarative de @code{gexp->script}. |
7394 | @end deffn | |
bf5c74e7 | 7395 | |
15f1bff4 JL |
7396 | @deffn {Procédure monadique} gexp->file @var{name} @var{exp} @ |
7397 | [#:set-load-path? #t] [#:module-path %load-path] @ | |
7398 | [#:splice? #f] @ | |
7399 | [#:guile (default-guile)] | |
7400 | Renvoie une dérivation qui construit un fichier @var{name} contenant | |
7401 | @var{exp}. Lorsque @var{splice?} est vrai, @var{exp} est considéré comme | |
7402 | une liste d'expressions qui seront splicée dans le fichier qui en résulte. | |
bf5c74e7 | 7403 | |
15f1bff4 JL |
7404 | Lorsque @var{set-load-path?} est vrai, émet du code dans le fichier de |
7405 | résultat pour initialiser @code{%load-path} et @code{%load-compiled-path} | |
7406 | pour honorer les modules importés de @var{exp}. Les modules de @var{exp} | |
7407 | sont trouvés dans @var{module-path}. | |
bf5c74e7 | 7408 | |
15f1bff4 JL |
7409 | Le fichier qui en résulte retient les références à toutes les dépendances de |
7410 | @var{exp} ou un sous-ensemble. | |
7411 | @end deffn | |
bf5c74e7 | 7412 | |
15f1bff4 JL |
7413 | @deffn {Procédure Scheme} scheme-file @var{name} @var{exp} [#:splice? #f] |
7414 | Renvoie un objet représentant le fichier Scheme @var{name} qui contient | |
7415 | @var{exp}. | |
bf5c74e7 | 7416 | |
15f1bff4 JL |
7417 | C'est la version déclarative de @code{gexp->file}. |
7418 | @end deffn | |
bf5c74e7 | 7419 | |
15f1bff4 JL |
7420 | @deffn {Procédure monadique} text-file* @var{name} @var{text} @dots{} |
7421 | Renvoie une valeur monadique qui construit un ficher texte contenant | |
7422 | @var{text}. @var{text} peut lister, en plus de chaînes de caractères, des | |
7423 | objet de n'importe quel type qui peut être utilisé dans une gexp : des | |
7424 | paquets, des dérivations, des fichiers objet locaux, etc. Le fichier du | |
7425 | dépôt qui en résulte en retient toutes les références. | |
7426 | ||
7427 | Cette variante devrait être préférée à @code{text-file} lorsque vous | |
7428 | souhaitez créer des fichiers qui référencent le dépôt. Cela est le cas | |
7429 | typiquement lorsque vous construisez un fichier de configuration qui | |
7430 | contient des noms de fichiers du dépôt, comme ceci : | |
bf5c74e7 JL |
7431 | |
7432 | @example | |
15f1bff4 JL |
7433 | (define (profile.sh) |
7434 | ;; Renvoie le nom d'un script shell dans le dépôt qui initialise | |
7435 | ;; la variable d'environnement « PATH ». | |
7436 | (text-file* "profile.sh" | |
7437 | "export PATH=" coreutils "/bin:" | |
7438 | grep "/bin:" sed "/bin\n")) | |
bf5c74e7 JL |
7439 | @end example |
7440 | ||
15f1bff4 JL |
7441 | Dans cet exemple, le fichier @file{/gnu/store/@dots{}-profile.sh} qui en |
7442 | résulte référence @var{coreutils}, @var{grep} et @var{sed}, ce qui les | |
7443 | empêche d'être glanés tant que le script est accessible. | |
7444 | @end deffn | |
bf5c74e7 | 7445 | |
15f1bff4 JL |
7446 | @deffn {Procédure Scheme} mixed-text-file @var{name} @var{text} @dots{} |
7447 | Renvoie un objet représentant le fichier du dépôt @var{name} contenant | |
7448 | @var{text}. @var{text} est une séquence de chaînes de caractères et de | |
7449 | fichiers simili-objets, comme dans : | |
bf5c74e7 JL |
7450 | |
7451 | @example | |
15f1bff4 JL |
7452 | (mixed-text-file "profile" |
7453 | "export PATH=" coreutils "/bin:" grep "/bin") | |
bf5c74e7 JL |
7454 | @end example |
7455 | ||
15f1bff4 JL |
7456 | C'est la version déclarative de @code{text-file*}. |
7457 | @end deffn | |
bf5c74e7 | 7458 | |
15f1bff4 JL |
7459 | @deffn {Procédure Scheme} file-union @var{name} @var{files} |
7460 | Renvoie un @code{<computed-file>} qui construit un répertoire qui contient | |
7461 | tous les fichiers de @var{files}. Chaque élément de @var{files} doit être | |
7462 | une paire où le premier élément est le nom de fichier à utiliser dans le | |
7463 | nouveau répertoire et le second élément est une gexp dénotant le fichier | |
7464 | cible. Voici un exemple : | |
bf5c74e7 JL |
7465 | |
7466 | @example | |
15f1bff4 JL |
7467 | (file-union "etc" |
7468 | `(("hosts" ,(plain-file "hosts" | |
7469 | "127.0.0.1 localhost")) | |
7470 | ("bashrc" ,(plain-file "bashrc" | |
7471 | "alias ls='ls --color=auto'")))) | |
bf5c74e7 JL |
7472 | @end example |
7473 | ||
15f1bff4 JL |
7474 | Cela crée un répertoire @code{etc} contenant ces deux fichiers. |
7475 | @end deffn | |
7476 | ||
7477 | @deffn {Procédure Scheme} directory-union @var{name} @var{things} | |
7478 | Renvoie un répertoire qui est l'union de @var{things}, où @var{things} est | |
7479 | une liste d'objets simili-fichiers qui dénotent des répertoires. Par exemple | |
7480 | : | |
bf5c74e7 JL |
7481 | |
7482 | @example | |
15f1bff4 | 7483 | (directory-union "guile+emacs" (list guile emacs)) |
bf5c74e7 JL |
7484 | @end example |
7485 | ||
15f1bff4 JL |
7486 | crée un répertoire qui est l'union des paquets @code{guile} et @code{emacs}. |
7487 | @end deffn | |
bf5c74e7 | 7488 | |
15f1bff4 JL |
7489 | @deffn {Procédure Scheme} file-append @var{obj} @var{suffix} @dots{} |
7490 | Renvoie un objet simili-fichier qui correspond à la concaténation de | |
7491 | @var{obj} et @var{suffix} où @var{obj} est un objet abaissable et chaque | |
7492 | @var{suffix} est une chaîne de caractères. | |
7493 | ||
7494 | Par exemple, considérez cette gexp : | |
bf5c74e7 JL |
7495 | |
7496 | @example | |
15f1bff4 JL |
7497 | (gexp->script "run-uname" |
7498 | #~(system* #$(file-append coreutils | |
7499 | "/bin/uname"))) | |
bf5c74e7 JL |
7500 | @end example |
7501 | ||
15f1bff4 | 7502 | On peut obtenir le même effet avec : |
bf5c74e7 JL |
7503 | |
7504 | @example | |
15f1bff4 JL |
7505 | (gexp->script "run-uname" |
7506 | #~(system* (string-append #$coreutils | |
7507 | "/bin/uname"))) | |
bf5c74e7 JL |
7508 | @end example |
7509 | ||
15f1bff4 JL |
7510 | Il y a une différence cependant : dans le cas @code{file-append}, le script |
7511 | qui en résulte contient le nom de fichier absolu comme une chaîne de | |
7512 | caractère alors que dans le deuxième cas, le script contient une expression | |
7513 | @code{(string-append @dots{})} pour construire le nom de fichier @emph{à | |
7514 | l'exécution}. | |
7515 | @end deffn | |
bf5c74e7 | 7516 | |
bf5c74e7 | 7517 | |
15f1bff4 JL |
7518 | Bien sûr, en plus de gexps inclues dans le code « hôte », certains modules |
7519 | contiennent des outils de construction. Pour savoir facilement qu'ils sont | |
7520 | à utiliser dans la strate de construction, ces modules sont gardés dans | |
7521 | l'espace de nom @code{(guix build @dots{})}. | |
bf5c74e7 | 7522 | |
15f1bff4 JL |
7523 | @cindex abaissement, des objets haut-niveau dans les gepxs |
7524 | En interne, les objets de haut-niveau sont @dfn{abaissés}, avec leur | |
7525 | compilateur, soit en des dérivations, soit en des objets du dépôt. Par | |
7526 | exemple, abaisser un paquet crée une dérivation, et abaisser un | |
7527 | @code{plain-file} crée un élément du dépôt. Cela est effectué par la | |
7528 | procédure monadique @code{lower-object}. | |
bf5c74e7 | 7529 | |
15f1bff4 JL |
7530 | @deffn {Procédure monadique} lower-object @var{obj} [@var{system}] @ |
7531 | [#:target #f] | |
7532 | Renvoie la dérivation ou l'élément du dépôt comme une valeur de | |
7533 | @var{%store-monad} qui correspond à @var{obj} pour @var{system}, en | |
7534 | compilant de manière croisée pour @var{target} si @var{target} est vrai. | |
7535 | @var{obj} doit être un objet qui a un compilateur de gexp associé, comme un | |
7536 | @code{<package>}. | |
7537 | @end deffn | |
bf5c74e7 | 7538 | |
15f1bff4 JL |
7539 | @node Invoquer guix repl |
7540 | @section Invoquer @command{guix repl} | |
7541 | ||
7542 | @cindex REPL, read-eval-print loop | |
7543 | La commande @command{guix repl} démarre un @dfn{boucle | |
7544 | lecture-évaluation-affichage} Guile pour la programmation interactive | |
7545 | (@pxref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}). | |
7546 | Comparé au lancement de la commande @command{guile}, @command{guix repl} | |
7547 | garanti que tous les modules Guix et toutes ses dépendances sont disponibles | |
7548 | dans le chemin de recherche. Vous pouvez l'utiliser de cette manière : | |
bf5c74e7 JL |
7549 | |
7550 | @example | |
15f1bff4 JL |
7551 | $ guix repl |
7552 | scheme@@(guile-user)> ,use (gnu packages base) | |
7553 | scheme@@(guile-user)> coreutils | |
7554 | $1 = #<package coreutils@@8.29 gnu/packages/base.scm:327 3e28300> | |
bf5c74e7 JL |
7555 | @end example |
7556 | ||
15f1bff4 JL |
7557 | @cindex inférieurs |
7558 | En plus, @command{guix repl} implémente un protocole REPL simple lisible par | |
7559 | une machine à utiliser avec @code{(guix inferior)}, un dispositif pour | |
7560 | interagir avec des @dfn{inférieurs}, des processus séparés qui font tourner | |
7561 | une version potentiellement différente de Guix. | |
bf5c74e7 | 7562 | |
15f1bff4 | 7563 | Les options disponibles sont les suivante : |
bf5c74e7 JL |
7564 | |
7565 | @table @code | |
15f1bff4 JL |
7566 | @item --type=@var{type} |
7567 | @itemx -t @var{type} | |
7568 | Démarrer un REPL du @var{type} donné, qui peut être l'un de ces types : | |
7569 | ||
7570 | @table @code | |
7571 | @item guile | |
7572 | C'est la valeur par défaut. Elle démarre un REPL Guile standard | |
7573 | fonctionnel. | |
7574 | @item machine | |
7575 | Démarre un REPL qui utilise le protocole lisible par machine. C'est le | |
7576 | protocole que parle le module @code{(guix inferior)}. | |
bf5c74e7 JL |
7577 | @end table |
7578 | ||
15f1bff4 JL |
7579 | @item --listen=@var{extrémité} |
7580 | Par défaut, @command{guix repl} lit depuis l'entrée standard et écrit sur la | |
7581 | sortie standard. Lorsque cette option est passée, il écoutera plutôt les | |
7582 | connexions sur @var{endpoint}. Voici un exemple d'options valides : | |
bf5c74e7 | 7583 | |
15f1bff4 JL |
7584 | @table @code |
7585 | @item --listen=tcp:37146 | |
7586 | Accepte les connexions sur localhost, sur le port 31. | |
bf5c74e7 | 7587 | |
15f1bff4 JL |
7588 | @item --listen=unix:/tmp/socket |
7589 | Accepte les connexions sur le socket Unix-domain @file{/tmp/socket}. | |
7590 | @end table | |
7591 | @end table | |
bf5c74e7 | 7592 | |
15f1bff4 JL |
7593 | @c ********************************************************************* |
7594 | @node Utilitaires | |
7595 | @chapter Utilitaires | |
bf5c74e7 | 7596 | |
15f1bff4 JL |
7597 | cette section décrit les utilitaires en ligne de commande de Guix. certains |
7598 | sont surtout faits pour les développeurs qui écrivent de nouvelles | |
7599 | définitions de paquets tandis que d'autres sont plus utiles pour une | |
7600 | utilisation générale. Ils complètent l'interface de programmation Scheme de | |
7601 | Guix d'une manière pratique. | |
bf5c74e7 | 7602 | |
15f1bff4 JL |
7603 | @menu |
7604 | * Invoquer guix build:: Construire des paquets depuis la ligne de | |
7605 | commande. | |
7606 | * Invoquer guix edit:: Modifier les définitions de paquets. | |
7607 | * Invoquer guix download:: Télécharger un fichier et afficher son hash. | |
7608 | * Invoquer guix hash:: Calculer le hash cryptographique d'un fichier. | |
7609 | * Invoquer guix import:: Importer des définitions de paquets. | |
7610 | * Invoquer guix refresh:: Mettre à jour les définitions de paquets. | |
7611 | * Invoquer guix lint:: Trouver des erreurs dans les définitions de | |
7612 | paquets. | |
7613 | * Invoquer guix size:: Profiler l'utilisation du disque. | |
7614 | * Invoquer guix graph:: Visualiser le graphe des paquets. | |
7615 | * Invoquer guix publish:: Partager des substituts. | |
7616 | * Invoquer guix challenge:: Défier les serveurs de substituts. | |
7617 | * Invoquer guix copy:: Copier vers et depuis un dépôt distant. | |
7618 | * Invoquer guix container:: Isolation de processus. | |
7619 | * Invoquer guix weather:: Mesurer la disponibilité des substituts. | |
7620 | * Invoquer guix processes:: Lister les processus clients. | |
7621 | @end menu | |
bf5c74e7 | 7622 | |
15f1bff4 JL |
7623 | @node Invoquer guix build |
7624 | @section Invoquer @command{guix build} | |
bf5c74e7 | 7625 | |
15f1bff4 JL |
7626 | @cindex construction de paquets |
7627 | @cindex @command{guix build} | |
7628 | La commande @command{guix build} construit des paquets ou des dérivations et | |
7629 | leurs dépendances et affiche les chemins du dépôt qui en résulte. Remarquez | |
7630 | qu'elle ne modifie pas le profil de l'utilisateur — c'est le travail de la | |
7631 | commande @command{guix package} (@pxref{Invoquer guix package}). Ainsi, | |
7632 | elle est surtout utile pour les développeurs de la distribution. | |
7633 | ||
7634 | La syntaxe générale est : | |
bf5c74e7 JL |
7635 | |
7636 | @example | |
15f1bff4 | 7637 | guix build @var{options} @var{package-or-derivation}@dots{} |
bf5c74e7 JL |
7638 | @end example |
7639 | ||
15f1bff4 JL |
7640 | Par exemple, la commande suivante construit la dernière version d'Emacs et |
7641 | de Guile, affiche leur journaux de construction et enfin affiche les | |
7642 | répertoires des résultats : | |
bf5c74e7 | 7643 | |
15f1bff4 JL |
7644 | @example |
7645 | guix build emacs guile | |
7646 | @end example | |
bf5c74e7 | 7647 | |
15f1bff4 | 7648 | De même, la commande suivante construit tous les paquets disponibles : |
bf5c74e7 | 7649 | |
15f1bff4 JL |
7650 | @example |
7651 | guix build --quiet --keep-going \ | |
7652 | `guix package -A | cut -f1,2 --output-delimiter=@@` | |
7653 | @end example | |
bf5c74e7 | 7654 | |
15f1bff4 JL |
7655 | @var{package-or-derivation} peut être soit le nom d'un paquet trouvé dans la |
7656 | distribution logicielle comme @code{coreutils}, soit @code{coreutils@@8.20}, | |
7657 | soit une dérivation comme @file{/gnu/store/@dots{}-coreutils-8.19.drv}. | |
7658 | Dans le premier cas, la commande cherchera un paquet avec le nom | |
7659 | correspondant (et éventuellement la version) dans les modules de la | |
7660 | distribution GNU (@pxref{Modules de paquets}). | |
3cacfa9e | 7661 | |
15f1bff4 JL |
7662 | Autrement, l'option @code{--expression} peut être utilisée pour spécifier |
7663 | une expression Scheme qui s'évalue en un paquet ; c'est utile pour | |
7664 | différencier des paquets avec le même nom ou des variantes de paquets. | |
bf5c74e7 | 7665 | |
15f1bff4 JL |
7666 | Il peut y avoir aucune, une ou plusieurs @var{options}. Les options |
7667 | disponibles sont décrites dans les sous-sections ci-dessous. | |
524756d1 | 7668 | |
15f1bff4 JL |
7669 | @menu |
7670 | * Options de construction communes:: Options de construction pour la | |
7671 | plupart des commandes. | |
7672 | * Options de transformation de paquets:: Créer des variantes de paquets. | |
7673 | * Options de construction supplémentaires:: Options spécifiques à « | |
7674 | guix build ». | |
7675 | * Débogage des échecs de construction:: La vie d'un empaqueteur. | |
7676 | @end menu | |
bf5c74e7 | 7677 | |
15f1bff4 JL |
7678 | @node Options de construction communes |
7679 | @subsection Options de construction communes | |
bf5c74e7 | 7680 | |
15f1bff4 JL |
7681 | Un certain nombre d'options qui contrôlent le processus de construction sont |
7682 | communes avec @command{guix build} et les autres commandes qui peuvent | |
7683 | générer des constructions, comme @command{guix package} ou @command{guix | |
7684 | archive}. Voici ces options : | |
bf5c74e7 | 7685 | |
15f1bff4 | 7686 | @table @code |
bf5c74e7 | 7687 | |
15f1bff4 JL |
7688 | @item --load-path=@var{répertoire} |
7689 | @itemx -L @var{répertoire} | |
7690 | Ajoute @var{répertoire} au début du chemin de recherche de module de paquets | |
7691 | (@pxref{Modules de paquets}). | |
bf5c74e7 | 7692 | |
15f1bff4 JL |
7693 | Cela permet à des utilisateurs de définir leur propres paquets et les rendre |
7694 | disponibles aux outils en ligne de commande. | |
bf5c74e7 | 7695 | |
15f1bff4 JL |
7696 | @item --keep-failed |
7697 | @itemx -K | |
7698 | Garde l'arborescence de construction des constructions en échec. Ainsi, si | |
7699 | une construction échoue, son arborescence de construction est préservée dans | |
7700 | @file{/tmp}, dans un répertoire dont le nom est affiché à la fin du journal | |
7701 | de construction. Cela est utile pour déboguer des échecs de construction. | |
7702 | @xref{Débogage des échecs de construction}, pour des astuces sur la manière de déboguer | |
7703 | des problèmes de construction. | |
bf5c74e7 | 7704 | |
15f1bff4 JL |
7705 | Cette option n'a pas d'effet lors de la connexion à un démon distant avec |
7706 | l'URI @code{guix://} (@pxref{Le dépôt, la variable | |
7707 | @code{GUIX_DAEMON_SOCKET}}). | |
bf5c74e7 | 7708 | |
15f1bff4 JL |
7709 | @item --keep-going |
7710 | @itemx -k | |
7711 | Continue lorsque certaines dérivations échouent ; ne s'arrête que lorsque | |
7712 | toutes les constructions ont soit réussies, soit échouées. | |
bf5c74e7 | 7713 | |
15f1bff4 JL |
7714 | Le comportement par défaut est de s'arrêter dès qu'une des dérivations |
7715 | spécifiées échoue. | |
bf5c74e7 | 7716 | |
15f1bff4 JL |
7717 | @item --dry-run |
7718 | @itemx -n | |
7719 | Ne pas construire les dérivations. | |
bf5c74e7 | 7720 | |
15f1bff4 JL |
7721 | @anchor{option de repli} |
7722 | @item --fallback | |
7723 | Lorsque la substitution d'un binaire pré-compilé échoue, construit les | |
7724 | paquets localement à la place (@pxref{Échec de substitution}). | |
bf5c74e7 | 7725 | |
15f1bff4 JL |
7726 | @item --substitute-urls=@var{urls} |
7727 | @anchor{client-substitute-urls} | |
7728 | Considère @var{urls} comme une liste d'URL de sources de substituts séparés | |
7729 | par des espaces, et remplace la liste par défaut d'URL de | |
7730 | @command{guix-daemon} (@pxref{daemon-substitute-urls,, @command{guix-daemon} | |
7731 | URLs}). | |
bf5c74e7 | 7732 | |
15f1bff4 JL |
7733 | Cela signifie que les substituts peuvent être téléchargés depuis @var{urls}, |
7734 | tant qu'ils sont signés par une clef autorisée par l'administrateur système | |
7735 | (@pxref{Substituts}). | |
bf5c74e7 | 7736 | |
15f1bff4 JL |
7737 | Lorsque @var{urls} est la chaîne vide, cela a pour effet de désactiver la |
7738 | substitution. | |
bf5c74e7 | 7739 | |
15f1bff4 JL |
7740 | @item --no-substitutes |
7741 | Ne pas utiliser de substitut pour les résultats de la construction. | |
7742 | C'est-à-dire, toujours construire localement plutôt que de permettre le | |
7743 | téléchargement de binaires pré-construits (@pxref{Substituts}). | |
bf5c74e7 | 7744 | |
15f1bff4 JL |
7745 | @item --no-grafts |
7746 | Ne par « greffer » les paquets. En pratique, cela signifie que les mises à | |
7747 | jour des paquets disponibles comme des greffes ne sont pas appliquées. | |
7748 | @xref{Mises à jour de sécurité}, pour plus d'information sur les greffes. | |
bf5c74e7 | 7749 | |
15f1bff4 JL |
7750 | @item --rounds=@var{n} |
7751 | Construit chaque dérivation @var{n} fois d'affilé, et renvoie une erreur si | |
7752 | les constructions consécutives ne sont pas identiques bit-à-bit. | |
bf5c74e7 | 7753 | |
15f1bff4 JL |
7754 | Cela est une manière utile pour détecter des processus de construction non |
7755 | déterministes. Les processus de construction non déterministes sont | |
7756 | problématiques car ils rendent pratiquement impossible la | |
7757 | @emph{vérification} par les utilisateurs de l'authenticité de binaires | |
7758 | tiers. @xref{Invoquer guix challenge}, pour plus d'informations. | |
bf5c74e7 | 7759 | |
15f1bff4 JL |
7760 | Remarquez que, les résultats qui diffèrent ne sont pas gardés, donc vous |
7761 | devrez inspecter manuellement chaque erreur — p.@: ex.@: en gardant l'un des | |
7762 | résultats avec @code{guix archive --export} (@pxref{Invoquer guix archive}), | |
7763 | puis en reconstruisant, et enfin en comparant les deux résultats. | |
bf5c74e7 | 7764 | |
15f1bff4 JL |
7765 | @item --no-build-hook |
7766 | N'essaye pas de décharger les constructions via le « crochet de construction | |
7767 | » du démon (@pxref{Réglages du délestage du démon}). C'est-à-dire que tout sera | |
7768 | construit localement plutôt que de décharger les constructions à une machine | |
7769 | distante. | |
bf5c74e7 | 7770 | |
15f1bff4 JL |
7771 | @item --max-silent-time=@var{secondes} |
7772 | Lorsque le processus de construction ou de substitution restent silencieux | |
7773 | pendant plus de @var{secondes}, le terminer et rapporter une erreur de | |
7774 | construction. | |
bf5c74e7 | 7775 | |
15f1bff4 | 7776 | Par défaut, les paramètres du démon sont pris en compte (@pxref{Invoquer guix-daemon, @code{--max-silent-time}}). |
bf5c74e7 | 7777 | |
15f1bff4 JL |
7778 | @item --timeout=@var{secondes} |
7779 | De même, lorsque le processus de construction ou de substitution dure plus | |
7780 | de @var{secondes}, le terminer et rapporter une erreur de construction. | |
bf5c74e7 | 7781 | |
15f1bff4 | 7782 | Par défaut, les paramètres du démon sont pris en compte (@pxref{Invoquer guix-daemon, @code{--timeout}}). |
bf5c74e7 | 7783 | |
15f1bff4 JL |
7784 | @c Note: This option is actually not part of %standard-build-options but |
7785 | @c most programs honor it. | |
7786 | @cindex verbosity, of the command-line tools | |
7787 | @cindex build logs, verbosity | |
7788 | @item -v @var{level} | |
7789 | @itemx --verbosity=@var{level} | |
7790 | Use the given verbosity @var{level}, an integer. Choosing 0 means that no | |
7791 | output is produced, 1 is for quiet output, and 2 shows all the build log | |
7792 | output on standard error. | |
bf5c74e7 | 7793 | |
15f1bff4 JL |
7794 | @item --cores=@var{n} |
7795 | @itemx -c @var{n} | |
7796 | Permet d'utiliser jusqu'à @var{n} cœurs du CPU pour la construction. La | |
7797 | valeur spéciale @code{0} signifie autant de cœurs que possible. | |
bf5c74e7 | 7798 | |
15f1bff4 JL |
7799 | @item --max-jobs=@var{n} |
7800 | @itemx -M @var{n} | |
7801 | 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 | |
7802 | l'option équivalente pour @command{guix-daemon}. | |
7803 | ||
7804 | @item --debug=@var{level} | |
7805 | Produce debugging output coming from the build daemon. @var{level} must be | |
7806 | an integer between 0 and 5; higher means more verbose output. Setting a | |
7807 | level of 4 or more may be helpful when debugging setup issues with the build | |
7808 | daemon. | |
bf5c74e7 JL |
7809 | |
7810 | @end table | |
7811 | ||
15f1bff4 JL |
7812 | Sous le capot, @command{guix build} est surtout un interface à la procédure |
7813 | @code{package-derivation} du module @code{(guix packages)}, et à la | |
7814 | procédure @code{build-derivations} du module @code{(guix derivations)}. | |
7815 | ||
7816 | En plus des options passées explicitement par la ligne de commande, | |
7817 | @command{guix build} et les autres commande @command{guix} qui peuvent | |
7818 | effectuer des construction honorent la variable d'environnement | |
7819 | @code{GUIX_BUILD_OPTIONS}. | |
7820 | ||
7821 | @defvr {Variable d'environnement} GUIX_BUILD_OPTIONS | |
7822 | Les utilisateurs peuvent définir cette variable à une liste d'options de la | |
7823 | ligne de commande qui seront automatiquement utilisées par @command{guix | |
7824 | build} et les autres commandes @command{guix} qui peuvent effectuer des | |
7825 | constructions, comme dans l'exemple suivant : | |
bf5c74e7 JL |
7826 | |
7827 | @example | |
15f1bff4 | 7828 | $ export GUIX_BUILD_OPTIONS="--no-substitutes -c 2 -L /foo/bar" |
bf5c74e7 JL |
7829 | @end example |
7830 | ||
15f1bff4 JL |
7831 | Ces options sont analysées indépendamment, et le résultat est ajouté aux |
7832 | options de la ligne de commande analysées. | |
7833 | @end defvr | |
bf5c74e7 | 7834 | |
15f1bff4 JL |
7835 | |
7836 | @node Options de transformation de paquets | |
7837 | @subsection Options de transformation de paquets | |
7838 | ||
7839 | @cindex variantes de paquets | |
7840 | Un autre ensemble d'options de la ligne de commande supportés par | |
7841 | @command{guix build} et aussi @command{guix package} sont les @dfn{options | |
7842 | de transformation de paquets}. Ce sont des options qui rendent possible la | |
7843 | définition de @dfn{variantes de paquets} — par exemple, des paquets | |
7844 | construit à partir de sources différentes. C'est une manière simple de | |
7845 | créer des paquets personnalisés à la volée sans avoir à taper les | |
7846 | définitions de variantes de paquets (@pxref{Définition des paquets}). | |
bf5c74e7 JL |
7847 | |
7848 | @table @code | |
7849 | ||
15f1bff4 JL |
7850 | @item --with-source=@var{source} |
7851 | @itemx --with-source=@var{paquet}=@var{source} | |
7852 | @itemx --with-source=@var{paquet}@@@var{version}=@var{source} | |
7853 | Utiles @var{source} comme la source de @var{paquet}, et @var{version} comme | |
7854 | son numéro de version. @var{source} doit être un nom de fichier ou une URL, | |
7855 | comme pour @command{guix download} (@pxref{Invoquer guix download}). | |
bf5c74e7 | 7856 | |
15f1bff4 JL |
7857 | Lorsque @var{paquet} est omis, la commande utilisera le nom de paquet |
7858 | spécifié par la base de @var{source} — p.@: ex.@: si @var{source} est | |
7859 | @code{/src/guix-2.0.10.tar.gz}, le paquet correspondant est @code{guile}. | |
bf5c74e7 | 7860 | |
15f1bff4 JL |
7861 | De même, lorsque @var{version} est omis, la chaîne de version est inférée à |
7862 | partir de @var{source} ; dans l'exemple précédent, il s'agit de | |
7863 | @code{2.0.10}. | |
bf5c74e7 | 7864 | |
15f1bff4 JL |
7865 | Cette option permet aux utilisateurs d'essayer des version des paquets |
7866 | différentes de celles fournies par la distribution. L'exemple ci-dessous | |
7867 | télécharge @file{ed-1.7.tar.g} depuis un miroir GNU et l'utilise comme | |
7868 | source pour le paquet @code{ed} : | |
bf5c74e7 | 7869 | |
15f1bff4 JL |
7870 | @example |
7871 | guix build ed --with-source=mirror://gnu/ed/ed-1.7.tar.gz | |
7872 | @end example | |
bf5c74e7 | 7873 | |
15f1bff4 JL |
7874 | En tant que développeur, @code{--with-source} permet de tester facilement |
7875 | des version bêta : | |
bf5c74e7 JL |
7876 | |
7877 | @example | |
15f1bff4 | 7878 | guix build guile --with-source=../guile-2.0.9.219-e1bb7.tar.xz |
bf5c74e7 JL |
7879 | @end example |
7880 | ||
15f1bff4 JL |
7881 | @dots{} ou pour construire un dépôt de gestion de version dans un |
7882 | environnement vierge : | |
bf5c74e7 | 7883 | |
15f1bff4 JL |
7884 | @example |
7885 | $ git clone git://git.sv.gnu.org/guix.git | |
7886 | $ guix build guix --with-source=guix@@1.0=./guix | |
7887 | @end example | |
bf5c74e7 | 7888 | |
15f1bff4 JL |
7889 | @item --with-input=@var{paquet}=@var{remplaçant} |
7890 | Remplace la dépendance sur @var{paquet} par une dépendance à | |
7891 | @var{remplaçant}. @var{paquet} doit être un nom de paquet et | |
7892 | @var{remplaçant} doit être une spécification de paquet comme @code{guile} ou | |
7893 | @code{guile@@1.8}. | |
bf5c74e7 | 7894 | |
15f1bff4 JL |
7895 | Par exemple, la commande suivante construit Guix, mais remplace sa |
7896 | dépendance à la version stable actuelle de Guile par une dépendance à une | |
7897 | ancienne version de Guile, @code{guile@@2.0} : | |
bf5c74e7 | 7898 | |
15f1bff4 JL |
7899 | @example |
7900 | guix build --with-input=guile=guile@@2.0 guix | |
7901 | @end example | |
adfb167f | 7902 | |
15f1bff4 JL |
7903 | C'est un remplacement récursif profond. Donc dans cet exemple, à la fois |
7904 | @code{guix} et ses dépendances @code{guile-json} (qui dépend aussi de | |
7905 | @code{guile}) sont reconstruits avec @code{guile@@2.0}. | |
adfb167f | 7906 | |
15f1bff4 JL |
7907 | Cette option est implémentée avec la procédure Scheme |
7908 | @code{package-input-rewriting} (@pxref{Définition des paquets, | |
7909 | @code{package-input-rewriting}}). | |
7910 | ||
7911 | @item --with-graft=@var{paquet}=@var{remplaçant} | |
7912 | Cette option est similaire à @code{--with-input} mais avec une différence | |
7913 | importante : plutôt que de reconstruire la chaîne de dépendance complète, | |
7914 | @var{remplaçant} est construit puis @dfn{greffé} sur les binaires qui | |
7915 | référençaient initialement @var{paquet}. @xref{Mises à jour de sécurité}, pour plus | |
7916 | d'information sur les greffes. | |
7917 | ||
7918 | Par exemple, la commande ci-dessous greffe la version 3.5.4 de GnuTLS sur | |
7919 | Wget et toutes ses dépendances, en remplaçant les références à la version | |
7920 | actuelle de GnuTLS à laquelle ils se réfèrent actuellement : | |
adfb167f JL |
7921 | |
7922 | @example | |
15f1bff4 | 7923 | guix build --with-graft=gnutls=gnutls@@3.5.4 wget |
adfb167f JL |
7924 | @end example |
7925 | ||
15f1bff4 JL |
7926 | Cela a l'avantage d'être bien plus rapide que de tout reconstruire. Mais il |
7927 | y a un piège : cela ne fonctionne que si @var{paquet} et @var{remplaçant} | |
7928 | sont strictement compatibles — par exemple, s'ils fournissent une | |
7929 | bibliothèque, l'interface binaire applicative (ABI) de ces bibliothèques | |
7930 | doivent être compatibles. Si @var{remplaçant} est incompatible avec | |
7931 | @var{paquet}, alors le paquet qui en résulte peut devenir inutilisable. À | |
7932 | utilisez avec précaution ! | |
7933 | ||
7934 | @item --with-branch=@var{package}=@var{branch} | |
7935 | @cindex Git, using the latest commit | |
7936 | @cindex latest commit, building | |
7937 | Build @var{package} from the latest commit of @var{branch}. The | |
7938 | @code{source} field of @var{package} must be an origin with the | |
7939 | @code{git-fetch} method (@pxref{Référence d'origine}) or a @code{git-checkout} | |
7940 | object; the repository URL is taken from that @code{source}. Git | |
7941 | sub-modules of the repository are fetched, recursively. | |
7942 | ||
7943 | For instance, the following command builds @code{guile-sqlite3} from the | |
7944 | latest commit of its @code{master} branch, and then builds @code{guix} | |
7945 | (which depends on it) and @code{cuirass} (which depends on @code{guix}) | |
7946 | against this specific @code{guile-sqlite3} build: | |
adfb167f JL |
7947 | |
7948 | @example | |
15f1bff4 | 7949 | guix build --with-branch=guile-sqlite3=master cuirass |
adfb167f JL |
7950 | @end example |
7951 | ||
15f1bff4 JL |
7952 | @cindex intégration continue |
7953 | Obviously, since it uses the latest commit of the given branch, the result | |
7954 | of such a command varies over time. Nevertheless it is a convenient way to | |
7955 | rebuild entire software stacks against the latest commit of one or more | |
7956 | packages. This is particularly useful in the context of continuous | |
7957 | integration (CI). | |
adfb167f | 7958 | |
15f1bff4 JL |
7959 | Checkouts are kept in a cache under @file{~/.cache/guix/checkouts} to speed |
7960 | up consecutive accesses to the same repository. You may want to clean it up | |
7961 | once in a while to save disk space. | |
bf5c74e7 | 7962 | |
15f1bff4 JL |
7963 | @item --with-commit=@var{package}=@var{commit} |
7964 | This is similar to @code{--with-branch}, except that it builds from | |
7965 | @var{commit} rather than the tip of a branch. @var{commit} must be a valid | |
7966 | Git commit SHA1 identifier. | |
7967 | @end table | |
bf5c74e7 | 7968 | |
15f1bff4 JL |
7969 | @node Options de construction supplémentaires |
7970 | @subsection Options de construction supplémentaires | |
7971 | ||
7972 | Les options de la ligne de commande ci-dessous sont spécifiques à | |
7973 | @command{guix build}. | |
bf5c74e7 | 7974 | |
15f1bff4 | 7975 | @table @code |
bf5c74e7 | 7976 | |
15f1bff4 JL |
7977 | @item --quiet |
7978 | @itemx -q | |
7979 | Build quietly, without displaying the build log; this is equivalent to | |
7980 | @code{--verbosity=0}. Upon completion, the build log is kept in @file{/var} | |
7981 | (or similar) and can always be retrieved using the @option{--log-file} | |
7982 | option. | |
bf5c74e7 | 7983 | |
15f1bff4 JL |
7984 | @item --file=@var{fichier} |
7985 | @itemx -f @var{fichier} | |
7986 | Construit le paquet, la dérivation ou l'objet simili-fichier en lequel le | |
7987 | code dans @var{file} s'évalue (@pxref{G-Expressions, file-like objects}). | |
bf5c74e7 | 7988 | |
15f1bff4 JL |
7989 | Par exemple, @var{file} peut contenir une définition de paquet comme ceci |
7990 | (@pxref{Définition des paquets}) : | |
bf5c74e7 | 7991 | |
15f1bff4 JL |
7992 | @example |
7993 | @verbatiminclude package-hello.scm | |
7994 | @end example | |
bf5c74e7 | 7995 | |
15f1bff4 JL |
7996 | @item --expression=@var{expr} |
7997 | @itemx -e @var{expr} | |
7998 | Construit le paquet ou la dérivation en lequel @var{expr} s'évalue. | |
bf5c74e7 | 7999 | |
15f1bff4 JL |
8000 | Par exemple, @var{expr} peut être @code{(@@ (gnu packages guile) |
8001 | guile-1.8)}, qui désigne sans ambiguïté cette variante spécifique de la | |
8002 | version 1.8 de Guile. | |
bf5c74e7 | 8003 | |
15f1bff4 JL |
8004 | Autrement, @var{exp} peut être une G-expression, auquel cas elle est |
8005 | utilisée comme un programme de construction passé à @code{gexp->derivation} | |
8006 | (@pxref{G-Expressions}). | |
bf5c74e7 | 8007 | |
15f1bff4 JL |
8008 | Enfin, @var{expr} peut se référer à une procédure monadique à au moins un |
8009 | argument (@pxref{La monade du dépôt}). La procédure doit renvoyer une | |
8010 | dérivation comme une valeur monadique, qui est ensuite lancée à travers | |
8011 | @code{run-with-store}. | |
bf5c74e7 | 8012 | |
15f1bff4 JL |
8013 | @item --source |
8014 | @itemx -S | |
8015 | Construit les dérivation source des paquets, plutôt que des paquets | |
8016 | eux-mêmes. | |
bf5c74e7 | 8017 | |
15f1bff4 JL |
8018 | Par exemple, @code{guix build -S gcc} renvoie quelque chose comme |
8019 | @file{/gnu/store/@dots{}-gcc-4.7.2.tar.bz2}, qui est l'archive des sources | |
8020 | de GCC. | |
bf5c74e7 | 8021 | |
15f1bff4 JL |
8022 | L'archive des sources renvoyée est le résultat de l'application des |
8023 | correctifs et des extraits de code éventuels spécifiés dans le champ | |
8024 | @code{origin} du paquet (@pxref{Définition des paquets}). | |
bf5c74e7 | 8025 | |
15f1bff4 JL |
8026 | @item --sources |
8027 | Récupère et renvoie la source de @var{package-or-derivation} et toute ses | |
8028 | dépendances, récursivement. C'est pratique pour obtenir une copie locale de | |
8029 | tous les codes sources requis pour construire @var{packages}, ce qui vous | |
8030 | permet de les construire plus tard même sans accès réseau. C'est une | |
8031 | extension de l'option @code{--source} et peut accepter l'un des arguments | |
8032 | facultatifs suivants : | |
bf5c74e7 | 8033 | |
15f1bff4 JL |
8034 | @table @code |
8035 | @item package | |
8036 | Cette valeur fait que l'option @code{--sources} se comporte comme l'option | |
8037 | @code{--source}. | |
bf5c74e7 | 8038 | |
15f1bff4 JL |
8039 | @item all |
8040 | Construit les dérivations des sources de tous les paquets, dont les sources | |
8041 | qui pourraient être listées dans @code{inputs}. C'est la valeur par défaut. | |
bf5c74e7 JL |
8042 | |
8043 | @example | |
15f1bff4 JL |
8044 | $ guix build --sources tzdata |
8045 | The following derivations will be built: | |
8046 | /gnu/store/@dots{}-tzdata2015b.tar.gz.drv | |
8047 | /gnu/store/@dots{}-tzcode2015b.tar.gz.drv | |
3cacfa9e LC |
8048 | @end example |
8049 | ||
15f1bff4 JL |
8050 | @item transitive |
8051 | Build the source derivations of all packages, as well of all transitive | |
8052 | inputs to the packages. This can be used e.g.@: to prefetch package source | |
8053 | for later offline building. | |
3cacfa9e LC |
8054 | |
8055 | @example | |
15f1bff4 JL |
8056 | $ guix build --sources=transitive tzdata |
8057 | The following derivations will be built: | |
8058 | /gnu/store/@dots{}-tzcode2015b.tar.gz.drv | |
8059 | /gnu/store/@dots{}-findutils-4.4.2.tar.xz.drv | |
8060 | /gnu/store/@dots{}-grep-2.21.tar.xz.drv | |
8061 | /gnu/store/@dots{}-coreutils-8.23.tar.xz.drv | |
8062 | /gnu/store/@dots{}-make-4.1.tar.xz.drv | |
8063 | /gnu/store/@dots{}-bash-4.3.tar.xz.drv | |
8064 | @dots{} | |
bf5c74e7 JL |
8065 | @end example |
8066 | ||
bf5c74e7 JL |
8067 | @end table |
8068 | ||
15f1bff4 JL |
8069 | @item --system=@var{système} |
8070 | @itemx -s @var{système} | |
8071 | Tenter de construire pour le @var{système} — p.@: ex.@: @code{i686-linux} — | |
8072 | plutôt que pour le type de système de l'hôte de construction. | |
bf5c74e7 | 8073 | |
15f1bff4 JL |
8074 | @quotation Remarque |
8075 | Le drapeau @code{--system} est utilisé pour une compilation @emph{native} et | |
8076 | ne doit pas être confondu avec une compilation croisée. Voir | |
8077 | @code{--target} ci-dessous pour des informations sur la compilation croisée. | |
8078 | @end quotation | |
bf5c74e7 | 8079 | |
15f1bff4 JL |
8080 | Par exemple, passer @code{--system=i686-linux} sur un système |
8081 | @code{x86_64-linux} ou @code{--system=armhf-linux} sur un système | |
8082 | @code{aarch64-linux} vous permet de construire des paquets dans un | |
8083 | environnement entièrement 32-bits. C'est une exemple d'utilisation de cette | |
8084 | option sur les systèmes Linux, qui peuvent émuler plusieurs personnalités. | |
bf5c74e7 | 8085 | |
15f1bff4 JL |
8086 | @quotation Remarque |
8087 | La possibilité de construire pour un système @code{armhf-linux} est activé | |
8088 | sans condition sur les machines @code{aarch64-linux}, bien que certaines | |
8089 | puces aarch64 n'en soient pas capables, comme les ThunderX. | |
8090 | @end quotation | |
bf5c74e7 | 8091 | |
15f1bff4 JL |
8092 | De même, lorsque l'émulation transparente avec QEMU et @code{binfnmt_misc} |
8093 | est activée (@pxref{Services de virtualisation, | |
8094 | @code{qemu-binfmt-service-type}}), vous pouvez construire pour n'importe | |
8095 | quel système pour lequel un gestionnaire QEMU @code{binfmt_misc} est | |
8096 | installé. | |
bf5c74e7 | 8097 | |
15f1bff4 JL |
8098 | Les constructions pour un autre système que celui de la machine que vous |
8099 | utilisez peuvent aussi être déchargées à une machine distante de la bonne | |
8100 | architecture. @xref{Réglages du délestage du démon}, pour plus d'information sur le | |
8101 | déchargement. | |
bf5c74e7 | 8102 | |
15f1bff4 JL |
8103 | @item --target=@var{triplet} |
8104 | @cindex compilation croisée | |
8105 | Effectuer une compilation croisée pour @var{triplet} qui doit être un | |
8106 | triplet GNU valide, comme @code{"mips64el-linux-gnu"} (@pxref{Specifying | |
8107 | target triplets, GNU configuration triplets,, autoconf, Autoconf}). | |
bf5c74e7 | 8108 | |
15f1bff4 JL |
8109 | @anchor{vérification de la construction} |
8110 | @item --check | |
8111 | @cindex déterminisme, vérification | |
8112 | @cindex reproductibilité, vérification | |
8113 | Reconstruit les @var{package-or-derivation}, qui sont déjà disponibles dans | |
8114 | le dépôt et lève une erreur si les résultats des constructions ne sont pas | |
8115 | identiques bit-à-bit. | |
8116 | ||
8117 | Ce mécanisme vous permet de vérifier si les substituts précédemment | |
8118 | installés sont authentiques (@pxref{Substituts}) ou si le résultat de la | |
8119 | construction d'un paquet est déterministe. @xref{Invoquer guix challenge} | |
8120 | pour plus d'informations et pour les outils. | |
8121 | ||
8122 | Lorsqu'utilisé avec @option{--keep-failed}, la sortie différente est gardée | |
8123 | dans le dépôt sous @file{/gnu/store/@dots{}-check}. Cela rend plus facile | |
8124 | l'étude des différences entre les deux résultats. | |
8125 | ||
8126 | @item --repair | |
8127 | @cindex réparer les éléments du dépôt | |
8128 | @cindex corruption, récupérer de | |
8129 | Essaye de réparer les éléments du dépôt spécifiés, s'ils sont corrompus, en | |
8130 | les téléchargeant ou en les construisant à nouveau. | |
8131 | ||
8132 | Cette opération n'est pas atomique et donc restreinte à l'utilisateur | |
8133 | @code{root} | |
8134 | ||
8135 | @item --derivations | |
8136 | @itemx -d | |
8137 | Renvoie les chemins de dérivation, et non les chemins de sortie, des paquets | |
8138 | donnés. | |
8139 | ||
8140 | @item --root=@var{fichier} | |
8141 | @itemx -r @var{fichier} | |
8142 | @cindex racines du GC, ajout | |
8143 | @cindex ajout de racines au ramasse-miettes | |
8144 | Fait de @var{fichier} un lien symbolique vers le résultat, et l'enregistre | |
8145 | en tant que racine du ramasse-miettes. | |
8146 | ||
8147 | En conséquence, les résultats de cette invocation de @command{guix build} | |
8148 | sont protégés du ramasse-miettes jusqu'à ce que @var{fichier} soit | |
8149 | supprimé. Lorsque cette option est omise, les constructions sont | |
8150 | susceptibles d'être glanées. | |
8151 | ||
8152 | @item --log-file | |
8153 | @cindex journaux de construction, accès | |
8154 | Renvoie les noms des journaux de construction ou les URL des | |
8155 | @var{package-or-derivation} donnés ou lève une erreur si les journaux de | |
8156 | construction sont absents. | |
bf5c74e7 | 8157 | |
15f1bff4 JL |
8158 | Cela fonctionne indépendamment de la manière dont les paquets ou les |
8159 | dérivations sont spécifiées. Par exemple, les invocations suivantes sont | |
8160 | équivalentes : | |
bf5c74e7 JL |
8161 | |
8162 | @example | |
15f1bff4 JL |
8163 | guix build --log-file `guix build -d guile` |
8164 | guix build --log-file `guix build guile` | |
8165 | guix build --log-file guile | |
8166 | guix build --log-file -e '(@@ (gnu packages guile) guile-2.0)' | |
bf5c74e7 JL |
8167 | @end example |
8168 | ||
15f1bff4 JL |
8169 | Si un journal n'est pas disponible localement, à moins que |
8170 | @code{--no-substitutes} ne soit passé, la commande cherche un journal | |
8171 | correspondant sur l'un des serveurs de substituts (tels que spécifiés avec | |
8172 | @code{--substitute-urls}.) | |
8173 | ||
8174 | Donc par exemple, imaginons que vous souhaitiez voir le journal de | |
8175 | construction de GDB sur MIPS, mais que vous n'avez qu'une machine | |
8176 | @code{x86_64} : | |
bf5c74e7 JL |
8177 | |
8178 | @example | |
15f1bff4 JL |
8179 | $ guix build --log-file gdb -s mips64el-linux |
8180 | https://@value{SUBSTITUTE-SERVER}/log/@dots{}-gdb-7.10 | |
bf5c74e7 JL |
8181 | @end example |
8182 | ||
15f1bff4 JL |
8183 | Vous pouvez accéder librement à un vaste bibliothèque de journaux de |
8184 | construction ! | |
8185 | @end table | |
524756d1 | 8186 | |
15f1bff4 JL |
8187 | @node Débogage des échecs de construction |
8188 | @subsection Débogage des échecs de construction | |
524756d1 | 8189 | |
15f1bff4 JL |
8190 | @cindex échecs de construction, débogage |
8191 | Lors de la définition d'un nouveau paquet (@pxref{Définition des paquets}), vous | |
8192 | passerez probablement du temps à déboguer et modifier la construction | |
8193 | jusqu'à ce que ça marche. Pour cela, vous devez effectuer les commandes de | |
8194 | construction vous-même dans un environnement le plus proche possible de | |
8195 | celui qu'utilise le démon de construction. | |
3cacfa9e | 8196 | |
15f1bff4 JL |
8197 | Pour cela, la première chose à faire est d'utiliser l'option |
8198 | @option{--keep-failed} ou @option{-K} de @command{guix build}, qui gardera | |
8199 | l'arborescence de construction dans @file{/tmp} ou le répertoire spécifié | |
8200 | par @code{TMPDIR} (@pxref{Invoquer guix build, @code{--keep-failed}}). | |
bf5c74e7 | 8201 | |
15f1bff4 JL |
8202 | À partir de là, vous pouvez vous déplacer dans l'arborescence de |
8203 | construction et sourcer le fichier @file{environment-variables}, qui | |
8204 | contient toutes les variables d'environnement qui étaient définies lorsque | |
8205 | la construction a échoué. Disons que vous déboguez un échec de construction | |
8206 | dans le paquet @code{foo} ; une session typique ressemblerait à cela : | |
bf5c74e7 JL |
8207 | |
8208 | @example | |
15f1bff4 JL |
8209 | $ guix build foo -K |
8210 | @dots{} @i{build fails} | |
8211 | $ cd /tmp/guix-build-foo.drv-0 | |
8212 | $ source ./environment-variables | |
8213 | $ cd foo-1.2 | |
bf5c74e7 JL |
8214 | @end example |
8215 | ||
15f1bff4 JL |
8216 | Maintenant, vous pouvez invoquer les commandes comme si vous étiez le démon |
8217 | (presque) et corriger le processus de construction. | |
bf5c74e7 | 8218 | |
15f1bff4 JL |
8219 | Parfois il arrive que, par exemple, les tests d'un paquet réussissent |
8220 | lorsque vous les lancez manuellement mais échouent quand ils sont lancés par | |
8221 | le démon. Cela peut arriver parce que le démon tourne dans un conteneur où, | |
8222 | contrairement à notre environnement au-dessus, l'accès réseau est | |
8223 | indisponible, @file{/bin/sh} n'existe pas, etc (@pxref{Réglages de l'environnement de construction}). | |
bf5c74e7 | 8224 | |
15f1bff4 JL |
8225 | Dans ce cas, vous pourriez avoir besoin de lancer le processus de |
8226 | construction dans un conteneur similaire à celui que le démon crée : | |
bf5c74e7 | 8227 | |
15f1bff4 JL |
8228 | @example |
8229 | $ guix build -K foo | |
8230 | @dots{} | |
8231 | $ cd /tmp/guix-build-foo.drv-0 | |
8232 | $ guix environment --no-grafts -C foo --ad-hoc strace gdb | |
8233 | [env]# source ./environment-variables | |
8234 | [env]# cd foo-1.2 | |
8235 | @end example | |
bf5c74e7 | 8236 | |
15f1bff4 JL |
8237 | Ici, @command{guix environment -C} crée un conteneur et démarre un nouveau |
8238 | shell dedans (@pxref{Invoquer guix environment}). La partie | |
8239 | @command{--ad-hoc strace gdb} ajoute les commandes @command{strace} et | |
8240 | @command{gdb} dans le conteneur, ce qui pourrait s'avérer utile pour le | |
8241 | débogage. L'option @option{--no-grafts} s'assure qu'on obtient le même | |
8242 | environnement, avec des paquets non greffés (@pxref{Mises à jour de sécurité}, pour | |
8243 | plus d'informations sur les greffes). | |
bf5c74e7 | 8244 | |
15f1bff4 JL |
8245 | Pour obtenir un conteneur plus proche de ce qui serait utilisé par le démon |
8246 | de construction, on peut enlever @file{/bin/sh} : | |
bf5c74e7 | 8247 | |
15f1bff4 JL |
8248 | @example |
8249 | [env]# rm /bin/sh | |
8250 | @end example | |
bf5c74e7 | 8251 | |
15f1bff4 JL |
8252 | Ne vous inquiétez pas, c'est sans danger : tout cela se passe dans un |
8253 | conteneur jetable créé par @command{guix environment}. | |
bf5c74e7 | 8254 | |
15f1bff4 JL |
8255 | La commande @command{strace} n'est probablement pas dans le chemin de |
8256 | recherche, mais on peut lancer : | |
bf5c74e7 | 8257 | |
15f1bff4 JL |
8258 | @example |
8259 | [env]# $GUIX_ENVIRONMENT/bin/strace -f -o log make check | |
8260 | @end example | |
bf5c74e7 | 8261 | |
15f1bff4 JL |
8262 | De cette manière, non seulement vous aurez reproduit les variables |
8263 | d'environnement utilisées par le démon, mais vous lancerez aussi le | |
8264 | processus de construction dans un conteneur similaire à celui utilisé par le | |
8265 | démon. | |
bf5c74e7 | 8266 | |
bf5c74e7 | 8267 | |
15f1bff4 JL |
8268 | @node Invoquer guix edit |
8269 | @section Invoquer @command{guix edit} | |
bf5c74e7 | 8270 | |
15f1bff4 JL |
8271 | @cindex @command{guix edit} |
8272 | @cindex définition de paquets, modification | |
8273 | Tant de paquets, tant de fichiers source ! La commande @command{guix edit} | |
8274 | facilite la vie des utilisateurs et des empaqueteurs en plaçant leur éditeur | |
8275 | sur le fichier source qui contient la définition des paquets spécifiés. Par | |
8276 | exemple : | |
bf5c74e7 JL |
8277 | |
8278 | @example | |
15f1bff4 | 8279 | guix edit gcc@@4.9 vim |
bf5c74e7 JL |
8280 | @end example |
8281 | ||
15f1bff4 JL |
8282 | @noindent |
8283 | lance le programme spécifié dans la variable d'environnement @code{VISUAL} | |
8284 | ou @code{EDITOR} pour visionner la recette de GCC@tie{}4.9.3 et celle de | |
8285 | Vim. | |
bf5c74e7 | 8286 | |
15f1bff4 JL |
8287 | Si vous utilisez une copie du dépôt Git de Guix (@pxref{Construire depuis Git}), |
8288 | ou que vous avez créé vos propres paquets dans @code{GUIX_PACKAGE_PATH} | |
8289 | (@pxref{Modules de paquets}), vous pourrez modifier les recettes des paquets. | |
8290 | Sinon, vous pourrez examiner les recettes en lecture-seule des paquets | |
8291 | actuellement dans le dépôt. | |
bf5c74e7 | 8292 | |
bf5c74e7 | 8293 | |
15f1bff4 JL |
8294 | @node Invoquer guix download |
8295 | @section Invoquer @command{guix download} | |
bf5c74e7 | 8296 | |
15f1bff4 JL |
8297 | @cindex @command{guix download} |
8298 | @cindex télécharger les sources des paquets | |
8299 | En écrivant des définitions de paquets, les développeurs ont généralement | |
8300 | besoin de télécharger une archive des sources, calculer son hash SHA256 et | |
8301 | écrire ce hash dans la définition du paquet (@pxref{Définition des paquets}). | |
8302 | L'outil @command{guix download} aide à cette tâche : il télécharge un | |
8303 | fichier à l'URL donné, l'ajoute au dépôt et affiche à la fois son nom dans | |
8304 | le dépôt et son hash SHA56. | |
bf5c74e7 | 8305 | |
15f1bff4 JL |
8306 | Le fait que le fichier téléchargé soit ajouté au dépôt préserve la bande |
8307 | passante : lorsque les développeurs finissent par construire le paquet | |
8308 | nouvellement défini avec @command{guix build}, l'archive des sources n'aura | |
8309 | pas besoin d'être téléchargée de nouveau puisqu'elle se trouvera déjà dans | |
8310 | le dépôt. C'est aussi une manière pratique de garder des fichiers | |
8311 | temporairement, qui pourront ensuite être supprimés (@pxref{Invoquer guix gc}). | |
8312 | ||
8313 | La commande @command{guix download} supporte les mêmes URI que celles | |
8314 | utilisées dans les définitions de paquets. En particulier, elle supporte | |
8315 | les URI @code {mirror://}. Les URI @code{http} (HTTP sur TLS) sont | |
8316 | supportées @emph{si} les liaisons Guile de GnuTLS sont disponibles dans | |
8317 | l'environnement de l'utilisateur ; si elle ne sont pas disponibles, une | |
8318 | erreur est renvoyée. @xref{Guile Preparations, how to install the GnuTLS | |
8319 | bindings for Guile,, gnutls-guile, GnuTLS-Guile}, pour plus d'informations. | |
8320 | ||
8321 | @command{guix download} vérifie les certificats du serveur HTTPS en | |
8322 | chargeant les autorités de certification X.509 depuis le répertoire vers | |
8323 | lequel pointe la variable d'environnement @code{SSL_CERT_DIR} (@pxref{Certificats X.509}), à moins que @option{--no-check-certificate} ne soit utilisé. | |
8324 | ||
8325 | Les options suivantes sont disponibles : | |
bf5c74e7 JL |
8326 | |
8327 | @table @code | |
15f1bff4 JL |
8328 | @item --format=@var{fmt} |
8329 | @itemx -f @var{fmt} | |
8330 | Écrit le hash dans le format spécifié par @var{fmt}. Pour plus | |
8331 | d'informations sur les valeurs valides pour @var{fmt}, @pxref{Invoquer guix hash}. | |
bf5c74e7 | 8332 | |
15f1bff4 JL |
8333 | @item --no-check-certificate |
8334 | Ne pas valider les certificats HTTPS des serveurs. | |
bf5c74e7 | 8335 | |
15f1bff4 JL |
8336 | Lorsque vous utilisez cette option, vous n'avez @emph{absolument aucune |
8337 | garanti} que vous communiquez avec le serveur authentique responsable de | |
8338 | l'URL donnée, ce qui vous rend vulnérable à des attaques de « l'homme du | |
8339 | milieu ». | |
bf5c74e7 | 8340 | |
15f1bff4 JL |
8341 | @item --output=@var{fichier} |
8342 | @itemx -o @var{fichier} | |
8343 | Enregistre le fichier téléchargé dans @var{fichier} plutôt que de l'ajouter | |
8344 | au dépôt. | |
8345 | @end table | |
bf5c74e7 | 8346 | |
15f1bff4 JL |
8347 | @node Invoquer guix hash |
8348 | @section Invoquer @command{guix hash} | |
bf5c74e7 | 8349 | |
15f1bff4 JL |
8350 | @cindex @command{guix hash} |
8351 | La commande @command{guix hash} calcul le hash SHA256 d'un fichier. C'est | |
8352 | surtout un outil pour simplifier la vie des contributeurs de la distribution | |
8353 | : il calcul le hash cryptographique d'un fichier, qui peut être utilisé dans | |
8354 | la définition d'un paquet (@pxref{Définition des paquets}). | |
bf5c74e7 | 8355 | |
15f1bff4 | 8356 | La syntaxe générale est : |
bf5c74e7 JL |
8357 | |
8358 | @example | |
15f1bff4 | 8359 | guix hash @var{option} @var{fichier} |
bf5c74e7 JL |
8360 | @end example |
8361 | ||
15f1bff4 JL |
8362 | Lorsque @var{fichier} est @code{-} (un tiret), @command{guix hash} calcul le |
8363 | hash des données lues depuis l'entrée standard. @command{guix hash} a les | |
8364 | options suivantes : | |
bf5c74e7 | 8365 | |
15f1bff4 | 8366 | @table @code |
bf5c74e7 | 8367 | |
15f1bff4 JL |
8368 | @item --format=@var{fmt} |
8369 | @itemx -f @var{fmt} | |
8370 | Écrit le hash dans le format spécifié par @var{fmt}. | |
bf5c74e7 | 8371 | |
15f1bff4 JL |
8372 | Les formats supportés sont : @code{nix-base32}, @code{base32}, @code{base16} |
8373 | (@code{hex} et @code{hexadecimal} peuvent aussi être utilisés). | |
bf5c74e7 | 8374 | |
15f1bff4 JL |
8375 | Si l'option @option {--format} n'est pas spécifiée, @command{guix hash} |
8376 | affichera le hash en @code{nix-base32}. Cette représentation est utilisée | |
8377 | dans les définitions des paquets. | |
bf5c74e7 | 8378 | |
15f1bff4 JL |
8379 | @item --recursive |
8380 | @itemx -r | |
8381 | Calcule le hash sur @var{fichier} récursivement. | |
bf5c74e7 | 8382 | |
15f1bff4 JL |
8383 | @c FIXME: Replace xref above with xref to an ``Archive'' section when |
8384 | @c it exists. | |
8385 | Dans ce cas, le hash est calculé sur une archive contenant @var{fichier}, | |
8386 | dont ses enfants si c'est un répertoire. Certaines métadonnées de | |
8387 | @var{fichier} fait partie de l'archive ; par exemple lorsque @var{fichier} | |
8388 | est un fichier normal, le hash est différent que le @var{fichier} soit | |
8389 | exécutable ou non. Les métadonnées comme un horodatage n'ont aucun impact | |
8390 | sur le hash (@pxref{Invoquer guix archive}). | |
bf5c74e7 | 8391 | |
15f1bff4 JL |
8392 | @item --exclude-vcs |
8393 | @itemx -x | |
8394 | Lorsqu'elle est combinée à @option{--recursive}, exclut les répertoires de | |
8395 | système de contrôle de version (@file{.bzr}, @file{.git}, @file{.hg}, etc). | |
8396 | ||
8397 | @vindex git-fetch | |
8398 | Par exemple, voici comment calculer le hash d'un dépôt Git, ce qui est utile | |
8399 | avec la méthode @code{git-fetch} (@pxref{Référence d'origine}) : | |
bf5c74e7 JL |
8400 | |
8401 | @example | |
15f1bff4 JL |
8402 | $ git clone http://example.org/foo.git |
8403 | $ cd foo | |
8404 | $ guix hash -rx . | |
bf5c74e7 | 8405 | @end example |
15f1bff4 | 8406 | @end table |
bf5c74e7 | 8407 | |
15f1bff4 JL |
8408 | @node Invoquer guix import |
8409 | @section Invoquer @command{guix import} | |
8410 | ||
8411 | @cindex importer des paquets | |
8412 | @cindex paquets importés | |
8413 | @cindex conversion de paquets | |
8414 | @cindex Invoquer @command{guix import} | |
8415 | La commande @command{guix import} est utile pour les gens qui voudraient | |
8416 | ajouter un paquet à la distribution avec aussi peu de travail que possible — | |
8417 | une demande légitime. La commande connaît quelques dépôts logiciels d'où | |
8418 | elle peut « importer » des métadonnées de paquets. Le résultat est une | |
8419 | définition de paquet, ou un modèle de définition, dans le format reconnu par | |
8420 | Guix (@pxref{Définition des paquets}). | |
8421 | ||
8422 | La syntaxe générale est : | |
bf5c74e7 JL |
8423 | |
8424 | @example | |
15f1bff4 | 8425 | guix import @var{importer} @var{options}@dots{} |
bf5c74e7 | 8426 | @end example |
bf5c74e7 | 8427 | |
15f1bff4 JL |
8428 | @var{importer} spécifie la source depuis laquelle importer des métadonnées |
8429 | de paquets, et @var{options} spécifie un identifiant de paquet et d'autres | |
8430 | options spécifiques à @var{importer}. Actuellement les « importateurs » | |
8431 | disponibles sont : | |
bf5c74e7 JL |
8432 | |
8433 | @table @code | |
15f1bff4 JL |
8434 | @item gnu |
8435 | Importe des métadonnées d'un paquet GNU donné. Cela fournit un modèle pour | |
8436 | la dernière version de ce paquet GNU, avec le hash de son archive, le | |
8437 | synopsis et la description canonique. | |
bf5c74e7 | 8438 | |
15f1bff4 JL |
8439 | Les informations supplémentaires comme les dépendances du paquet et sa |
8440 | licence doivent être renseignées manuellement. | |
bf5c74e7 | 8441 | |
15f1bff4 JL |
8442 | Par exemple, la commande suivante renvoie une définition de paquets pour |
8443 | GNU@tie{}Hello : | |
bf5c74e7 JL |
8444 | |
8445 | @example | |
15f1bff4 | 8446 | guix import gnu hello |
bf5c74e7 JL |
8447 | @end example |
8448 | ||
15f1bff4 | 8449 | Les options spécifiques sont : |
bf5c74e7 | 8450 | |
15f1bff4 JL |
8451 | @table @code |
8452 | @item --key-download=@var{politique} | |
8453 | Comme pour @code{guix refresh}, spécifie la politique de gestion des clefs | |
8454 | OpenPGP manquantes lors de la vérification de la signature d'un paquet. | |
8455 | @xref{Invoquer guix refresh, @code{--key-download}}. | |
bf5c74e7 JL |
8456 | @end table |
8457 | ||
15f1bff4 JL |
8458 | @item pypi |
8459 | @cindex pypi | |
8460 | Import metadata from the @uref{https://pypi.python.org/, Python Package | |
8461 | Index}. Information is taken from the JSON-formatted description available | |
8462 | at @code{pypi.python.org} and usually includes all the relevant information, | |
8463 | including package dependencies. For maximum efficiency, it is recommended | |
8464 | to install the @command{unzip} utility, so that the importer can unzip | |
8465 | Python wheels and gather data from them. | |
bf5c74e7 | 8466 | |
15f1bff4 JL |
8467 | La commande ci-dessous importe les métadonnées du paquet Python |
8468 | @code{itsdangerous} : | |
bf5c74e7 | 8469 | |
15f1bff4 JL |
8470 | @example |
8471 | guix import pypi itsdangerous | |
8472 | @end example | |
bf5c74e7 | 8473 | |
15f1bff4 JL |
8474 | @table @code |
8475 | @item --recursive | |
8476 | @itemx -r | |
8477 | Traverse le graphe des dépendances du paquet amont donné et génère les | |
8478 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | |
8479 | @end table | |
bf5c74e7 | 8480 | |
15f1bff4 JL |
8481 | @item gem |
8482 | @cindex gem | |
8483 | Import metadata from @uref{https://rubygems.org/, RubyGems}. Information is | |
8484 | taken from the JSON-formatted description available at @code{rubygems.org} | |
8485 | and includes most relevant information, including runtime dependencies. | |
8486 | There are some caveats, however. The metadata doesn't distinguish between | |
8487 | synopses and descriptions, so the same string is used for both fields. | |
8488 | Additionally, the details of non-Ruby dependencies required to build native | |
8489 | extensions is unavailable and left as an exercise to the packager. | |
bf5c74e7 | 8490 | |
15f1bff4 JL |
8491 | La commande ci-dessous importe les métadonnées pour le paquet Ruby |
8492 | @code{rails} : | |
bf5c74e7 JL |
8493 | |
8494 | @example | |
15f1bff4 | 8495 | guix import gem rails |
bf5c74e7 | 8496 | @end example |
adfb167f | 8497 | |
15f1bff4 JL |
8498 | @table @code |
8499 | @item --recursive | |
8500 | @itemx -r | |
8501 | Traverse le graphe des dépendances du paquet amont donné et génère les | |
8502 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | |
bf5c74e7 JL |
8503 | @end table |
8504 | ||
15f1bff4 JL |
8505 | @item cpan |
8506 | @cindex CPAN | |
8507 | Import metadata from @uref{https://www.metacpan.org/, MetaCPAN}. | |
8508 | Information is taken from the JSON-formatted metadata provided through | |
8509 | @uref{https://fastapi.metacpan.org/, MetaCPAN's API} and includes most | |
8510 | relevant information, such as module dependencies. License information | |
8511 | should be checked closely. If Perl is available in the store, then the | |
8512 | @code{corelist} utility will be used to filter core modules out of the list | |
8513 | of dependencies. | |
bf5c74e7 | 8514 | |
15f1bff4 JL |
8515 | La commande ci-dessous importe les métadonnées du module Perl |
8516 | @code{Acme::Boolean} : | |
bf5c74e7 JL |
8517 | |
8518 | @example | |
15f1bff4 | 8519 | guix import cpan Acme::Boolean |
bf5c74e7 JL |
8520 | @end example |
8521 | ||
15f1bff4 JL |
8522 | @item cran |
8523 | @cindex CRAN | |
8524 | @cindex Bioconductor | |
8525 | Importe des métadonnées de @uref{https://cran.r-project.org/, CRAN}, le | |
8526 | dépôt central de @uref{http://r-project.org, l'environnement statistique et | |
8527 | graphique GUN@tie{}R}. | |
8528 | ||
8529 | Les informations sont extraites du fichier @file{DESCRIPTION} du paquet. | |
8530 | ||
8531 | La commande ci-dessous importe les métadonnées du paquet R @code{Cairo} : | |
bf5c74e7 JL |
8532 | |
8533 | @example | |
15f1bff4 | 8534 | guix import cran Cairo |
bf5c74e7 JL |
8535 | @end example |
8536 | ||
15f1bff4 JL |
8537 | Lorsque l'option @code{--recursive} est utilisée, l'importateur traversera |
8538 | le graphe des dépendances du paquet amont récursivement et générera des | |
8539 | expressions de paquets pour tous ceux qui ne sont pas déjà dans Guix. | |
8540 | ||
8541 | Lorsque l'option @code{--archive=bioconductor} est utilisée, les métadonnées | |
8542 | sont importées de @uref{https://www.bioconductor.org/, Bioconductor}, un | |
8543 | répertoire de paquets R pour l'analyse et la compréhension de données | |
8544 | génomiques volumineuses en bioinformatique. | |
8545 | ||
8546 | Les informations sont extraites du fichier @file{DESCRIPTION} d'un paquet | |
8547 | publié sur l'interface web du dépôt SVN de Bioconductor. | |
bf5c74e7 | 8548 | |
15f1bff4 JL |
8549 | La commande ci-dessous importe les métadonnées du paquet R |
8550 | @code{GenomicRanges} : | |
bf5c74e7 JL |
8551 | |
8552 | @example | |
15f1bff4 | 8553 | guix import cran --archive=bioconductor GenomicRanges |
bf5c74e7 JL |
8554 | @end example |
8555 | ||
15f1bff4 JL |
8556 | @item texlive |
8557 | @cindex TeX Live | |
8558 | @cindex CTAN | |
8559 | Importe les métadonnées de @uref{http://www.ctan.org/, CTAN}, l'archive TeX | |
8560 | réseau complète pour les paquets TeX qui font partie de la | |
8561 | @uref{https://www.tug.org/texlive/, distribution TeX Live}. | |
bf5c74e7 | 8562 | |
15f1bff4 JL |
8563 | Les informations sur les paquets sont obtenues à travers l'API XML fournie |
8564 | par CTAN, tandis que le code source est téléchargé depuis le dépôt SVN du | |
8565 | projet Tex Live. Cette méthode est utilisée parce que CTAN ne garde pas | |
8566 | d'archives versionnées. | |
bf5c74e7 | 8567 | |
15f1bff4 JL |
8568 | La commande ci-dessous importe les métadonnées du paquet TeX @code{fontspec} |
8569 | : | |
bf5c74e7 JL |
8570 | |
8571 | @example | |
15f1bff4 | 8572 | guix import texlive fontspec |
bf5c74e7 JL |
8573 | @end example |
8574 | ||
15f1bff4 JL |
8575 | Lorsque l'option @code{--archive=DIRECTORY} est utilisée, le code source |
8576 | n'est pas téléchargé depuis le sous-répertoire @file{latex} du | |
8577 | l'arborescence @file{texmf-dist/source} dans le dépôt SVN de TeX Live, mais | |
8578 | depuis le répertoire voisin spécifié sous la même racine. | |
8579 | ||
8580 | La commande ci-dessous importe les métadonnées du paquet @code{ifxetex} | |
8581 | depuis CTAN en récupérant les sources depuis le répertoire | |
8582 | @file{texmf/source/generic} : | |
bf5c74e7 JL |
8583 | |
8584 | @example | |
15f1bff4 | 8585 | guix import texlive --archive=generic ifxetex |
bf5c74e7 JL |
8586 | @end example |
8587 | ||
15f1bff4 JL |
8588 | @item json |
8589 | @cindex JSON, import | |
8590 | Import package metadata from a local JSON file. Consider the following | |
8591 | example package definition in JSON format: | |
bf5c74e7 JL |
8592 | |
8593 | @example | |
15f1bff4 JL |
8594 | @{ |
8595 | "name": "hello", | |
8596 | "version": "2.10", | |
8597 | "source": "mirror://gnu/hello/hello-2.10.tar.gz", | |
8598 | "build-system": "gnu", | |
8599 | "home-page": "https://www.gnu.org/software/hello/", | |
8600 | "synopsis": "Hello, GNU world: An example GNU package", | |
8601 | "description": "GNU Hello prints a greeting.", | |
8602 | "license": "GPL-3.0+", | |
8603 | "native-inputs": ["gcc@@6"] | |
8604 | @} | |
bf5c74e7 JL |
8605 | @end example |
8606 | ||
15f1bff4 JL |
8607 | Les noms des champs sont les mêmes que pour les enregistrements de |
8608 | @code{<package>} (@xref{Définition des paquets}). Les référence à d'autres | |
8609 | paquets sont fournies comme des listes JSON de chaînes de spécifications de | |
8610 | paquets comme @code{guile} ou @code{guile@@2.0}. | |
8611 | ||
8612 | L'importateur supporte aussi une définition plus explicite des sources avec | |
8613 | les champs habituels pour les enregistrements @code{<origin>} : | |
bf5c74e7 JL |
8614 | |
8615 | @example | |
15f1bff4 JL |
8616 | @{ |
8617 | @dots{} | |
8618 | "source": @{ | |
8619 | "method": "url-fetch", | |
8620 | "uri": "mirror://gnu/hello/hello-2.10.tar.gz", | |
8621 | "sha256": @{ | |
8622 | "base32": "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i" | |
8623 | @} | |
8624 | @} | |
8625 | @dots{} | |
8626 | @} | |
bf5c74e7 JL |
8627 | @end example |
8628 | ||
15f1bff4 JL |
8629 | La commande ci-dessous lit les métadonnées du fichier JSON @code{hello.json} |
8630 | et renvoie une expression de paquet : | |
bf5c74e7 JL |
8631 | |
8632 | @example | |
15f1bff4 | 8633 | guix import json hello.json |
bf5c74e7 JL |
8634 | @end example |
8635 | ||
15f1bff4 JL |
8636 | @item nix |
8637 | Importe les métadonnées d'une copie locale des source de | |
8638 | @uref{http://nixos.org/nixpkgs/, la distribution Nixpkgs}@footnote{Cela | |
8639 | repose sur la commande @command{nix-instantiate} de | |
8640 | @uref{http://nixos.org/nix/, Nix}.}. Les définitions de paquets dans | |
8641 | Nixpkgs sont habituellement écrites en un mélange entre le langage Nix et | |
8642 | Bash. Cette commande n'importe que la structure de haut-niveau du paquet | |
8643 | qui est écrite dans le langage Nix. Elle inclut normalement tous les champs | |
8644 | de base de la définition d'un paquet. | |
bf5c74e7 | 8645 | |
15f1bff4 JL |
8646 | Lorsque vous importez un paquet GNU, le synopsis et la description sont |
8647 | replacés par la version canonique en amont. | |
bf5c74e7 | 8648 | |
15f1bff4 | 8649 | Normalement, vous devrez d'abord faire : |
bf5c74e7 JL |
8650 | |
8651 | @example | |
15f1bff4 | 8652 | export NIX_REMOTE=daemon |
bf5c74e7 JL |
8653 | @end example |
8654 | ||
15f1bff4 JL |
8655 | @noindent |
8656 | pour que @command{nix-instantiate} n'essaye pas d'ouvrir la base de données | |
8657 | de Nix. | |
bf5c74e7 | 8658 | |
15f1bff4 JL |
8659 | Par exemple, la commande ci-dessous importe la définition du paquet de |
8660 | LibreOffice (plus précisément, elle importe la définition du paquet lié à | |
8661 | l'attribut de plus haut-niveau @code{libreoffice}) : | |
bf5c74e7 JL |
8662 | |
8663 | @example | |
15f1bff4 | 8664 | guix import nix ~/path/to/nixpkgs libreoffice |
bf5c74e7 JL |
8665 | @end example |
8666 | ||
15f1bff4 JL |
8667 | @item hackage |
8668 | @cindex hackage | |
8669 | Importe les métadonnées de l'archive de paquets centrale de la communauté | |
8670 | Haskell, @uref{https://hackage.haskell.org/, Hackage}. Les informations | |
8671 | sont récupérées depuis les fichiers Cabal et incluent toutes les | |
8672 | informations utiles, dont les dépendances des paquets. | |
bf5c74e7 | 8673 | |
15f1bff4 JL |
8674 | Les options spécifiques sont : |
8675 | ||
8676 | @table @code | |
8677 | @item --stdin | |
8678 | @itemx -s | |
8679 | Lit un fichier Cabal depuis l'entrée standard. | |
8680 | @item --no-test-dependencies | |
8681 | @itemx -t | |
8682 | N'inclut pas les dépendances requises uniquement par les suites de tests. | |
8683 | @item --cabal-environment=@var{alist} | |
8684 | @itemx -e @var{alist} | |
8685 | @var{alist} est une alist Scheme qui définie l'environnement dans lequel les | |
8686 | conditions de Cabal sont évaluées. Les clefs acceptées sont : @code{os}, | |
8687 | @code{arch}, @code{impl} et une représentation sous forme de chaîne de | |
8688 | caractères du nom d'un drapeau. La valeur associée à un drapeau doit être | |
8689 | le symbole @code{true} ou @code{false}. La valeur associée aux autres clefs | |
8690 | doivent se conformer avec la définition du format de fichiers Cabal. La | |
8691 | valeur par défaut associée avec les clefs @code{os}, @code{arch} et | |
8692 | @code{impl} sont respectivement @samp{linux}, @samp{x86_64} et @samp{ghc}. | |
8693 | @item --recursive | |
8694 | @itemx -r | |
8695 | Traverse le graphe des dépendances du paquet amont donné et génère les | |
8696 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | |
8697 | @end table | |
8698 | ||
8699 | La commande ci-dessous importe les métadonnées de la dernière version du | |
8700 | paquet Haskell @code{HTTP} sans inclure les dépendances des tests et en | |
8701 | spécifiant la valeur du drapeau @samp{network-uri} comme étant @code{false} | |
8702 | : | |
bf5c74e7 JL |
8703 | |
8704 | @example | |
15f1bff4 | 8705 | guix import hackage -t -e "'((\"network-uri\" . false))" HTTP |
bf5c74e7 JL |
8706 | @end example |
8707 | ||
15f1bff4 JL |
8708 | Une version spécifique du paquet peut éventuellement être spécifiée en |
8709 | faisant suivre le nom du paquet par un arobase et un numéro de version comme | |
8710 | dans l'exemple suivant : | |
bf5c74e7 JL |
8711 | |
8712 | @example | |
15f1bff4 | 8713 | guix import hackage mtl@@2.1.3.1 |
bf5c74e7 JL |
8714 | @end example |
8715 | ||
15f1bff4 JL |
8716 | @item stackage |
8717 | @cindex stackage | |
8718 | L'importateur @code{stackage} est une enveloppe autour de l'importateur | |
8719 | @code{hackage}. Il prend un nom de paquet, recherche la version incluse | |
8720 | dans une version au support étendu (LTS) de @uref{https://www.stackage.org, | |
8721 | Stackage} et utilise l'importateur @code{hackage} pour récupérer les | |
8722 | métadonnées. Remarquez que c'est à vous de choisir une version LTS | |
8723 | compatible avec le compilateur GHC utilisé par Guix. | |
bf5c74e7 | 8724 | |
15f1bff4 | 8725 | Les options spécifiques sont : |
bf5c74e7 | 8726 | |
15f1bff4 JL |
8727 | @table @code |
8728 | @item --no-test-dependencies | |
8729 | @itemx -t | |
8730 | N'inclut pas les dépendances requises uniquement par les suites de tests. | |
8731 | @item --lts-version=@var{version} | |
8732 | @itemx -l @var{version} | |
8733 | @var{version} est la version LTS désirée. Si elle est omise, la dernière | |
8734 | version est utilisée. | |
8735 | @item --recursive | |
8736 | @itemx -r | |
8737 | Traverse le graphe des dépendances du paquet amont donné et génère les | |
8738 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | |
8739 | @end table | |
bf5c74e7 | 8740 | |
15f1bff4 JL |
8741 | La commande ci-dessous importe les métadonnées du paquet Haskell @code{HTTP} |
8742 | inclus dans la version LTS 7.18 de Stackage : | |
bf5c74e7 JL |
8743 | |
8744 | @example | |
15f1bff4 | 8745 | guix import stackage --lts-version=7.18 HTTP |
bf5c74e7 JL |
8746 | @end example |
8747 | ||
15f1bff4 JL |
8748 | @item elpa |
8749 | @cindex elpa | |
8750 | Importe les métadonnées du dépôt de paquets ELPA (Emacs Lisp Package | |
8751 | Archive) (@pxref{Packages,,, emacs, The GNU Emacs Manual}). | |
8752 | ||
8753 | Les options spécifiques sont : | |
8754 | ||
8755 | @table @code | |
8756 | @item --archive=@var{repo} | |
8757 | @itemx -a @var{repo} | |
8758 | @var{repo} identifie le dépôt d'archive depuis lequel récupérer les | |
8759 | informations. Actuellement les dépôts supportés et leurs identifiants sont | |
8760 | : | |
8761 | @itemize - | |
8762 | @item | |
8763 | @uref{http://elpa.gnu.org/packages, GNU}, qu'on peut choisir avec | |
8764 | l'identifiant @code{gnu}. C'est la valeur par défaut. | |
bf5c74e7 | 8765 | |
15f1bff4 JL |
8766 | Les paquets de @code{elpa.gnu.org} avec l'une des clefs contenues dans le |
8767 | porte-clef GnuPG @file{share/emacs/25.1/etc/package-keyring.gpg} (ou | |
8768 | similaire) dans le paquet @code{emacs} (@pxref{Package Installation, ELPA | |
8769 | package signatures,, emacs, The GNU Emacs Manual}). | |
bf5c74e7 | 8770 | |
15f1bff4 JL |
8771 | @item |
8772 | @uref{http://stable.melpa.org/packages, MELPA-Stable}, qu'on peut | |
8773 | sélectionner avec l'identifiant @code{melpa-stable}. | |
bf5c74e7 | 8774 | |
15f1bff4 JL |
8775 | @item |
8776 | @uref{http://melpa.org/packages, MELPA}, qu'on peut sélectionner avec | |
8777 | l'identifiant @code{melpa}. | |
8778 | @end itemize | |
bf5c74e7 | 8779 | |
15f1bff4 JL |
8780 | @item --recursive |
8781 | @itemx -r | |
8782 | Traverse le graphe des dépendances du paquet amont donné et génère les | |
8783 | expressions de paquets de tous ceux qui ne sont pas déjà dans Guix. | |
8784 | @end table | |
bf5c74e7 | 8785 | |
15f1bff4 JL |
8786 | @item crate |
8787 | @cindex crate | |
8788 | Importe les métadonnées du répertoire des paquets Rust | |
8789 | @uref{https://crates.io, crates.io}. | |
bf5c74e7 | 8790 | |
15f1bff4 JL |
8791 | @item opam |
8792 | @cindex OPAM | |
8793 | @cindex OCaml | |
8794 | Importe les métadonnées du répertoire de paquets | |
8795 | @uref{https://opam.ocaml.org/, OPAM} utilisé par la communauté OCaml | |
8796 | @end table | |
bf5c74e7 | 8797 | |
15f1bff4 JL |
8798 | La structure du code de @command{guix import} est modulaire. Il serait |
8799 | utile d'avoir plus d'importateurs pour d'autres formats de paquets et votre | |
8800 | aide est la bienvenue sur ce sujet (@pxref{Contribuer}). | |
bf5c74e7 | 8801 | |
15f1bff4 JL |
8802 | @node Invoquer guix refresh |
8803 | @section Invoquer @command{guix refresh} | |
524756d1 | 8804 | |
15f1bff4 JL |
8805 | @cindex @command{guix refresh} |
8806 | L'audience première de la commande @command{guix refresh} est l'ensemble des | |
8807 | développeurs de la distribution logicielle GNU. Par défaut, elle rapporte | |
8808 | les paquets fournis par la distribution qui sont en retard par rapport aux | |
8809 | dernières versions disponibles en amont, comme ceci : | |
524756d1 | 8810 | |
15f1bff4 JL |
8811 | @example |
8812 | $ guix refresh | |
8813 | gnu/packages/gettext.scm:29:13: gettext serait mis à jour de 0.18.1.1 à 0.18.2.1 | |
8814 | gnu/packages/glib.scm:77:12: glib serait mis à jour de 2.34.3 à 2.37.0 | |
8815 | @end example | |
524756d1 | 8816 | |
15f1bff4 JL |
8817 | Autrement, on peut spécifier les paquets à considérer, auquel cas un |
8818 | avertissement est émis pour les paquets qui n'ont pas de gestionnaire de | |
8819 | mise à jour associé : | |
524756d1 JL |
8820 | |
8821 | @example | |
15f1bff4 JL |
8822 | $ guix refresh coreutils guile guile-ssh |
8823 | gnu/packages/ssh.scm:205:2 : avertissement : aucun gestionnaire de mise à jour pour guile-ssh | |
8824 | gnu/packages/guile.scm:136:12 : guile serait mis à jour de 2.0.12 à 2.0.13 | |
bf5c74e7 JL |
8825 | @end example |
8826 | ||
15f1bff4 JL |
8827 | @command{guix refresh} navigue le dépôt amont de chaque paquet et détermine |
8828 | le numéro de version le plus élevé parmi les versions publiées. La commande | |
8829 | sait comment mettre à jour certains types de paquets : les paquets GNU, les | |
8830 | paquets ELPA, etc. — voir la documentation pour @option{--type} ci-dessous. | |
8831 | Il y a beaucoup de paquet cependant pour lesquels il manque une méthode pour | |
8832 | déterminer si une nouvelle version est disponible en amont. Cependant, le | |
8833 | mécanisme est extensible, alors n'hésitez pas à nous contacter pour ajouter | |
8834 | une nouvelle méthode ! | |
bf5c74e7 | 8835 | |
15f1bff4 | 8836 | @table @code |
bf5c74e7 | 8837 | |
15f1bff4 JL |
8838 | @item --recursive |
8839 | Consider the packages specified, and all the packages upon which they | |
8840 | depend. | |
bf5c74e7 JL |
8841 | |
8842 | @example | |
15f1bff4 JL |
8843 | $ guix refresh --recursive coreutils |
8844 | gnu/packages/acl.scm:35:2: warning: no updater for acl | |
8845 | gnu/packages/m4.scm:30:12: info: 1.4.18 is already the latest version of m4 | |
8846 | gnu/packages/xml.scm:68:2: warning: no updater for expat | |
8847 | gnu/packages/multiprecision.scm:40:12: info: 6.1.2 is already the latest version of gmp | |
8848 | @dots{} | |
bf5c74e7 JL |
8849 | @end example |
8850 | ||
15f1bff4 | 8851 | @end table |
bf5c74e7 | 8852 | |
15f1bff4 JL |
8853 | Parfois les noms en amont diffèrent du nom de paquet utilisé par Guix et |
8854 | @command{guix refresh} a besoin d'un peu d'aide. La plupart des | |
8855 | gestionnaires de mise à jour honorent la propriété @code{upstream-name} dans | |
8856 | les définitions de paquets, ce qui peut être utilisé à cette fin : | |
bf5c74e7 JL |
8857 | |
8858 | @example | |
15f1bff4 JL |
8859 | (define-public network-manager |
8860 | (package | |
8861 | (name "network-manager") | |
8862 | ;; @dots{} | |
8863 | (properties '((upstream-name . "NetworkManager"))))) | |
bf5c74e7 | 8864 | @end example |
bf5c74e7 | 8865 | |
15f1bff4 JL |
8866 | Lorsque l'option @code{--update} est utilisée, elle modifie les fichiers |
8867 | source de la distribution pour mettre à jour le numéro de version et le hash | |
8868 | de l'archive source de ces recettes de paquets (@pxref{Définition des paquets}). | |
8869 | Cela est effectué en téléchargeant la dernière version de l'archive des | |
8870 | sources de chaque paquet et des signatures associées, en authentifiant | |
8871 | l'archive téléchargée avec sa signature en utilisant @command{gpg} puis en | |
8872 | calculant son hash. Lorsque la clef publique utilisée pour signer l'archive | |
8873 | manque du porte-clefs de l'utilisateur, le gestionnaire tente de la | |
8874 | récupérer automatiquement d'un serveur de clef public ; si cela réussi, la | |
8875 | clef est ajoutée au porte-clefs de l'utilisateur, sinon @command{guix | |
8876 | refresh} rapporte une erreur. | |
bf5c74e7 | 8877 | |
15f1bff4 | 8878 | Les options suivantes sont supportées : |
bf5c74e7 | 8879 | |
15f1bff4 | 8880 | @table @code |
bf5c74e7 | 8881 | |
15f1bff4 JL |
8882 | @item --expression=@var{expr} |
8883 | @itemx -e @var{expr} | |
8884 | Considérer le paquet évalué par @var{expr}. | |
bf5c74e7 | 8885 | |
15f1bff4 JL |
8886 | C'est utile pour précisément se référer à un paquet, comme dans cet exemple |
8887 | : | |
bf5c74e7 | 8888 | |
15f1bff4 JL |
8889 | @example |
8890 | guix refresh -l -e '(@@@@ (gnu packages commencement) glibc-final)' | |
8891 | @end example | |
bf5c74e7 | 8892 | |
15f1bff4 JL |
8893 | Cette commande liste les paquets qui dépendent de la libc « finale » (en |
8894 | gros tous les paquets). | |
bf5c74e7 | 8895 | |
15f1bff4 JL |
8896 | @item --update |
8897 | @itemx -u | |
8898 | Met à jour les fichiers source de la distribution (les recettes de paquets) | |
8899 | en place. Cette option est généralement utilisée depuis une copie du dépôt | |
8900 | git de Guix (@pxref{Lancer Guix avant qu'il ne soit installé}) : | |
bf5c74e7 JL |
8901 | |
8902 | @example | |
15f1bff4 | 8903 | $ ./pre-inst-env guix refresh -s non-core -u |
bf5c74e7 JL |
8904 | @end example |
8905 | ||
15f1bff4 JL |
8906 | @xref{Définition des paquets}, pour plus d'information sur les définitions des |
8907 | paquets. | |
bf5c74e7 | 8908 | |
15f1bff4 JL |
8909 | @item --select=[@var{subset}] |
8910 | @itemx -s @var{subset} | |
8911 | Choisi tous les paquets dans @var{subset}, entre @code{core} et | |
8912 | @code{non-core}. | |
bf5c74e7 | 8913 | |
15f1bff4 JL |
8914 | Le sous-ensemble @code{core} se réfère à tous les paquets du cœur de la |
8915 | distribution — c.-à-d.@: les paquets qui sont utilisés pour construire « | |
8916 | tout le reste ». Cela comprend GCC, libc, Binutils, Bash, etc. | |
8917 | Habituellement, changer l'un de ces paquets dans la distribution implique de | |
8918 | reconstruire tous les autres. Ainsi, ces mises à jour sont une nuisance | |
8919 | pour les utilisateurs, en terme de temps de compilation et de bande passante | |
8920 | utilisés pour effectuer la mise à jour. | |
bf5c74e7 | 8921 | |
15f1bff4 JL |
8922 | Le sous-ensemble @code{non-core} se réfère au reste des paquets. C'est |
8923 | habituellement utile dans les cas où une mise à jour des paquets du cœur | |
8924 | serait dérangeante. | |
bf5c74e7 | 8925 | |
15f1bff4 JL |
8926 | @item --manifest=@var{fichier} |
8927 | @itemx -m @var{fichier} | |
8928 | Choisi tous les paquets du manifeste dans @var{file}. C'est utile pour | |
8929 | vérifier qu'aucun des paquets du manifeste utilisateur ne peut être mis à | |
8930 | jour. | |
8931 | ||
8932 | @item --type=@var{updater} | |
8933 | @itemx -t @var{updater} | |
8934 | Chois uniquement les paquets pris en charge par @var{updater} | |
8935 | (éventuellement une liste de gestionnaires de mise à jour séparés par des | |
8936 | virgules). Actuellement, @var{updater} peut être l'une des valeurs suivantes | |
8937 | : | |
8938 | ||
8939 | @table @code | |
8940 | @item gnu | |
8941 | le gestionnaire de mise à jour pour les paquets GNU ; | |
8942 | @item gnome | |
8943 | le gestionnaire de mise à jour pour les paquets GNOME ; | |
8944 | @item kde | |
8945 | le gestionnaire de mise à jour pour les paquets KDE ; | |
8946 | @item xorg | |
8947 | le gestionnaire de mise à jour pour les paquets X.org ; | |
8948 | @item kernel.org | |
8949 | le gestionnaire de mise à jour pour les paquets hébergés sur kernel.org ; | |
8950 | @item elpa | |
8951 | le gestionnaire de mise à jour pour les paquets @uref{http://elpa.gnu.org/, | |
8952 | ELPA} ; | |
8953 | @item cran | |
8954 | le gestionnaire de mise à jour pour les paquets | |
8955 | @uref{https://cran.r-project.org/, CRAN} ; | |
8956 | @item bioconductor | |
8957 | le gestionnaire de mise à jour pour les paquets | |
8958 | @uref{https://www.bioconductor.org/, Bioconductor} ; | |
8959 | @item cpan | |
8960 | le gestionnaire de mise à jour pour les paquets @uref{http://www.cpan.org/, | |
8961 | CPAN} ; | |
8962 | @item pypi | |
8963 | le gestionnaire de mise à jour pour les paquets | |
8964 | @uref{https://pypi.python.org, PyPI} ; | |
8965 | @item gem | |
8966 | le gestionnaire de mise à jour pour les paquets @uref{https://rubygems.org, | |
8967 | RubyGems} ; | |
8968 | @item github | |
8969 | le gestionnaire de mise à jour pour les paquets @uref{https://github.com, | |
8970 | GitHub} ; | |
8971 | @item hackage | |
8972 | le gestionnaire de mise à jour pour les paquets | |
8973 | @uref{https://hackage.haskell.org, Hackage} ; | |
8974 | @item stackage | |
8975 | le gestionnaire de mise à jour pour les paquets | |
8976 | @uref{https://www.stackage.org, Stackage} ; | |
8977 | @item crate | |
8978 | le gestionnaire de mise à jour pour les paquets @uref{https://crates.io, | |
8979 | Crates} ; | |
8980 | @end table | |
bf5c74e7 | 8981 | |
15f1bff4 JL |
8982 | Par exemple, la commande suivante ne vérifie que les mises à jour des |
8983 | paquets Emacs hébergés sur @code{elpa.gnu.org} et les paquets CRAN : | |
bf5c74e7 JL |
8984 | |
8985 | @example | |
15f1bff4 JL |
8986 | $ guix refresh --type=elpa,cran |
8987 | gnu/packages/statistics.scm:819:13 : r-testthat serait mis à jour de 0.10.0 à 0.11.0 | |
8988 | gnu/packages/emacs.scm:856:13 : emacs-auctex serait mis à jour de 11.88.6 à 11.88.9 | |
bf5c74e7 JL |
8989 | @end example |
8990 | ||
15f1bff4 | 8991 | @end table |
bf5c74e7 | 8992 | |
15f1bff4 JL |
8993 | En plus, on peut passer à @command{guix refresh} un ou plusieurs noms de |
8994 | paquets, comme dans cet exemple : | |
bf5c74e7 JL |
8995 | |
8996 | @example | |
15f1bff4 | 8997 | $ ./pre-inst-env guix refresh -u emacs idutils gcc@@4.8 |
bf5c74e7 JL |
8998 | @end example |
8999 | ||
9000 | @noindent | |
15f1bff4 JL |
9001 | La commande au-dessus met à jour spécifiquement les paquets @code{emacs} et |
9002 | @code{idutils}. L'option @code{--select} n'aurait aucun effet dans ce cas. | |
bf5c74e7 | 9003 | |
15f1bff4 JL |
9004 | Pour déterminer s'il faut mettre à jour un paquet, il est parfois pratique |
9005 | de savoir quels paquets seraient affectés par la mise à jour pour pouvoir | |
9006 | vérifier la compatibilité. Pour cela l'option suivante peut être utilisée | |
9007 | avec un ou plusieurs noms de paquets passés à @command{guix refresh} : | |
bf5c74e7 JL |
9008 | |
9009 | @table @code | |
524756d1 | 9010 | |
15f1bff4 JL |
9011 | @item --list-updaters |
9012 | @itemx -L | |
9013 | Liste les gestionnaires de mise à jour et quitte (voir l'option | |
9014 | @option{--type} plus haut). | |
524756d1 | 9015 | |
15f1bff4 JL |
9016 | Pour chaque gestionnaire, affiche le pourcentage de paquets qu'il couvre ; à |
9017 | la fin, affiche le pourcentage de paquets couverts par tous les | |
9018 | gestionnaires. | |
524756d1 | 9019 | |
15f1bff4 JL |
9020 | @item --list-dependent |
9021 | @itemx -l | |
9022 | Liste les paquets de plus haut-niveau qui devraient être reconstruits après | |
9023 | la mise à jour d'un ou plusieurs paquets. | |
524756d1 | 9024 | |
15f1bff4 JL |
9025 | @xref{Invoquer guix graph, le type @code{reverse-package} de @command{guix |
9026 | graph}}, pour des informations sur la manière de visualiser la liste des | |
9027 | paquets dépendant d'un autre. | |
bf5c74e7 | 9028 | |
bf5c74e7 JL |
9029 | @end table |
9030 | ||
15f1bff4 JL |
9031 | Soyez conscients que l'option @code{--list-dependent} ne fait |
9032 | @emph{qu'approximer} les reconstructions qui seraient requises par une mise | |
9033 | à jour. Plus de reconstructions pourraient être requises dans certaines | |
9034 | circonstances. | |
bf5c74e7 JL |
9035 | |
9036 | @example | |
15f1bff4 JL |
9037 | $ guix refresh --list-dependent flex |
9038 | Building the following 120 packages would ensure 213 dependent packages are rebuilt: | |
9039 | hop@@2.4.0 geiser@@0.4 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 @dots{} | |
bf5c74e7 JL |
9040 | @end example |
9041 | ||
15f1bff4 JL |
9042 | La commande ci-dessus liste un ensemble de paquets qui peuvent être |
9043 | construits pour vérifier la compatibilité d'une mise à jour de @code{flex}. | |
bf5c74e7 | 9044 | |
15f1bff4 | 9045 | @table @code |
bf5c74e7 | 9046 | |
15f1bff4 JL |
9047 | @item --list-transitive |
9048 | List all the packages which one or more packages depend upon. | |
bf5c74e7 | 9049 | |
15f1bff4 JL |
9050 | @example |
9051 | $ guix refresh --list-transitive flex | |
9052 | flex@@2.6.4 depends on the following 25 packages: perl@@5.28.0 help2man@@1.47.6 | |
9053 | 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{} | |
9054 | @end example | |
bf5c74e7 | 9055 | |
15f1bff4 | 9056 | @end table |
bf5c74e7 | 9057 | |
15f1bff4 JL |
9058 | The command above lists a set of packages which, when changed, would cause |
9059 | @code{flex} to be rebuilt. | |
bf5c74e7 | 9060 | |
15f1bff4 JL |
9061 | Les options suivante peuvent être utilisées pour personnaliser les |
9062 | opérations avec GnuPG : | |
bf5c74e7 | 9063 | |
15f1bff4 | 9064 | @table @code |
bf5c74e7 | 9065 | |
15f1bff4 JL |
9066 | @item --gpg=@var{commande} |
9067 | Utilise @var{commande} comme la commande de GnuPG 2.x. @var{commande} est | |
9068 | recherchée dans @code{PATH}. | |
bf5c74e7 | 9069 | |
15f1bff4 JL |
9070 | @item --keyring=@var{fichier} |
9071 | Utilise @var{fichier} comme porte-clefs pour les clefs amont. @var{fichier} | |
9072 | doit être dans le @dfn{format keybox}. Les fichiers Keybox ont d'habitude | |
9073 | un nom qui fini par @file{.kbx} et GNU@tie{}Privacy Guard (GPG) peut | |
9074 | manipuler ces fichiers (@pxref{kbxutil, @command{kbxutil},, gnupg, Using the | |
9075 | Privacy Guard}, pour plus d'informations sur un outil pour manipuler des | |
9076 | fichiers keybox). | |
bf5c74e7 | 9077 | |
15f1bff4 JL |
9078 | Lorsque cette option est omise, @command{guix refresh} utilise |
9079 | @file{~/.config/guix/upstream/trustedkeys.kbx} comme porte-clefs pour les | |
9080 | clefs de signature amont. Les signatures OpenPGP sont vérifiées avec ces | |
9081 | clefs ; les clefs manquantes sont aussi téléchargées dans ce porte-clefs | |
9082 | (voir @option{--key-download} plus bas). | |
bf5c74e7 | 9083 | |
15f1bff4 JL |
9084 | Vous pouvez exporter les clefs de votre porte-clefs GPG par défaut dans un |
9085 | fichier keybox avec une commande telle que : | |
524756d1 | 9086 | |
15f1bff4 JL |
9087 | @example |
9088 | gpg --export rms@@gnu.org | kbxutil --import-openpgp >> mykeyring.kbx | |
9089 | @end example | |
524756d1 | 9090 | |
15f1bff4 JL |
9091 | De même, vous pouvez récupérer des clefs dans un fichier keybox spécifique |
9092 | comme ceci : | |
bf5c74e7 JL |
9093 | |
9094 | @example | |
15f1bff4 JL |
9095 | gpg --no-default-keyring --keyring mykeyring.kbx \ |
9096 | --recv-keys @value{OPENPGP-SIGNING-KEY-ID} | |
bf5c74e7 JL |
9097 | @end example |
9098 | ||
15f1bff4 JL |
9099 | @ref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU |
9100 | Privacy Guard} pour plus d'informations sur l'option @option{--keyring} de | |
9101 | GPG. | |
bf5c74e7 | 9102 | |
15f1bff4 JL |
9103 | @item --key-download=@var{politique} |
9104 | Gère les clefs OpenPGP manquantes d'après la @var{politique}, qui peut être | |
9105 | l'une des suivantes : | |
bf5c74e7 | 9106 | |
15f1bff4 JL |
9107 | @table @code |
9108 | @item always | |
9109 | Toujours télécharger les clefs manquantes depuis un serveur de clefs et les | |
9110 | ajouter au porte-clefs de l'utilisateur. | |
bf5c74e7 | 9111 | |
15f1bff4 JL |
9112 | @item never |
9113 | Ne jamais essayer de télécharger les clefs OpenPGP manquante. Quitter à la | |
9114 | place. | |
bf5c74e7 | 9115 | |
15f1bff4 JL |
9116 | @item interactive |
9117 | Lorsqu'on rencontre un paquet signé par une clef OpenPGP inconnue, demander | |
9118 | à l'utilisateur s'il souhaite la télécharger ou non. C'est le comportement | |
9119 | par défaut. | |
9120 | @end table | |
bf5c74e7 | 9121 | |
15f1bff4 JL |
9122 | @item --key-server=@var{host} |
9123 | Utiliser @var{host} comme serveur de clefs OpenPGP lors de l'importe d'une | |
9124 | clef publique. | |
bf5c74e7 | 9125 | |
15f1bff4 | 9126 | @end table |
bf5c74e7 | 9127 | |
15f1bff4 JL |
9128 | The @code{github} updater uses the @uref{https://developer.github.com/v3/, |
9129 | GitHub API} to query for new releases. When used repeatedly e.g.@: when | |
9130 | refreshing all packages, GitHub will eventually refuse to answer any further | |
9131 | API requests. By default 60 API requests per hour are allowed, and a full | |
9132 | refresh on all GitHub packages in Guix requires more than this. | |
9133 | Authentication with GitHub through the use of an API token alleviates these | |
9134 | limits. To use an API token, set the environment variable | |
9135 | @code{GUIX_GITHUB_TOKEN} to a token procured from | |
9136 | @uref{https://github.com/settings/tokens} or otherwise. | |
bf5c74e7 | 9137 | |
15f1bff4 JL |
9138 | |
9139 | @node Invoquer guix lint | |
9140 | @section Invoquer @command{guix lint} | |
9141 | ||
9142 | @cindex @command{guix lint} | |
9143 | @cindex paquets, chercher des erreurs | |
9144 | La commande @command{guix lint} est conçue pour aider les développeurs à | |
9145 | éviter des erreurs commune et à utiliser un style cohérent lors de | |
9146 | l'écriture de recettes de paquets. Elle lance des vérifications sur un | |
9147 | ensemble de paquets donnés pour trouver des erreurs communes dans leur | |
9148 | définition. Les @dfn{vérifieurs} disponibles comprennent (voir | |
9149 | @code{--list-checkers} pour une liste complète) : | |
bf5c74e7 JL |
9150 | |
9151 | @table @code | |
15f1bff4 JL |
9152 | @item synopsis |
9153 | @itemx description | |
9154 | Vérifie certaines règles typographiques et stylistiques dans les | |
9155 | descriptions et les synopsis. | |
bf5c74e7 | 9156 | |
15f1bff4 JL |
9157 | @item inputs-should-be-native |
9158 | Identifie les entrées qui devraient sans doute plutôt être des entrées | |
9159 | natives. | |
bf5c74e7 | 9160 | |
15f1bff4 JL |
9161 | @item source |
9162 | @itemx home-page | |
9163 | @itemx mirror-url | |
9164 | @itemx github-url | |
9165 | @itemx source-file-name | |
9166 | Probe @code{home-page} and @code{source} URLs and report those that are | |
9167 | invalid. Suggest a @code{mirror://} URL when applicable. If the | |
9168 | @code{source} URL redirects to a GitHub URL, recommend usage of the GitHub | |
9169 | URL. Check that the source file name is meaningful, e.g.@: is not just a | |
9170 | version number or ``git-checkout'', without a declared @code{file-name} | |
9171 | (@pxref{Référence d'origine}). | |
bf5c74e7 | 9172 | |
15f1bff4 JL |
9173 | @item source-unstable-tarball |
9174 | Parse the @code{source} URL to determine if a tarball from GitHub is | |
9175 | autogenerated or if it is a release tarball. Unfortunately GitHub's | |
9176 | autogenerated tarballs are sometimes regenerated. | |
bf5c74e7 | 9177 | |
15f1bff4 JL |
9178 | @item cve |
9179 | @cindex vulnérabilités | |
9180 | @cindex CVE, Common Vulnerabilities and Exposures | |
9181 | Rapporte les vulnérabilités connues trouvées dans les bases de données CVE | |
9182 | (Common Vulnerabilities and Exposures) de l'année en cours et des années | |
9183 | précédentes @uref{https://nvd.nist.gov/download.cfm#CVE_FEED, publié par le | |
9184 | NIST américain}. | |
bf5c74e7 | 9185 | |
15f1bff4 JL |
9186 | Pour voir les informations sur une vulnérabilité en particulier, visitez les |
9187 | pages : | |
bf5c74e7 | 9188 | |
15f1bff4 JL |
9189 | @itemize |
9190 | @item | |
9191 | @indicateurl{https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-ANNÉE-ABCD} | |
9192 | @item | |
9193 | @indicateurl{https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-ANNÉE-ABCD} | |
9194 | @end itemize | |
bf5c74e7 | 9195 | |
15f1bff4 JL |
9196 | @noindent |
9197 | où @code{CVE-ANNÉE-ABCD} est l'identifiant CVE — p.@: ex.@: | |
9198 | @code{CVE-2015-7554}. | |
bf5c74e7 | 9199 | |
15f1bff4 JL |
9200 | Les développeurs de paquets peuvent spécifier dans les recettes des paquets |
9201 | le nom @uref{https://nvd.nist.gov/cpe.cfm,CPE (Common Platform Enumeration)} | |
9202 | et la version du paquet s'ils diffèrent du nom et de la version que Guix | |
9203 | utilise, comme dans cet exemple : | |
bf5c74e7 JL |
9204 | |
9205 | @example | |
15f1bff4 JL |
9206 | (package |
9207 | (name "grub") | |
9208 | ;; @dots{} | |
9209 | ;; CPE calls this package "grub2". | |
9210 | (properties '((cpe-name . "grub2") | |
9211 | (cpe-version . "2.3"))) | |
bf5c74e7 JL |
9212 | @end example |
9213 | ||
15f1bff4 JL |
9214 | @c See <http://www.openwall.com/lists/oss-security/2017/03/15/3>. |
9215 | Certaines entrées dans la base de données CVE ne spécifient pas la version | |
9216 | du paquet auquel elles s'appliquent et lui restera donc attachée pour | |
9217 | toujours. Les développeurs qui trouvent des alertes CVE et ont vérifiés | |
9218 | qu'elles peuvent être ignorées peuvent les déclarer comme dans cet exemple : | |
bf5c74e7 | 9219 | |
15f1bff4 JL |
9220 | @example |
9221 | (package | |
9222 | (name "t1lib") | |
9223 | ;; @dots{} | |
9224 | ;; Ces CVE ne s'appliquent plus et peuvent être ignorée sans problème. | |
9225 | (properties `((lint-hidden-cve . ("CVE-2011-0433" | |
9226 | "CVE-2011-1553" | |
9227 | "CVE-2011-1554" | |
9228 | "CVE-2011-5244"))))) | |
9229 | @end example | |
9230 | ||
9231 | @item formatting | |
9232 | Avertit le développeurs lorsqu'il y a des problèmes de formatage du code | |
9233 | source évident : des espaces en fin de ligne, des tabulations, etc. | |
9234 | @end table | |
bf5c74e7 | 9235 | |
3cacfa9e | 9236 | La syntaxe générale est : |
bf5c74e7 JL |
9237 | |
9238 | @example | |
15f1bff4 | 9239 | guix lint @var{options} @var{package}@dots{} |
bf5c74e7 JL |
9240 | @end example |
9241 | ||
15f1bff4 JL |
9242 | Si aucun paquet n'est donné par la ligne de commande, tous les paquets |
9243 | seront vérifiés. Les @var{options} peuvent contenir aucune ou plus des | |
9244 | options suivantes : | |
bf5c74e7 JL |
9245 | |
9246 | @table @code | |
15f1bff4 JL |
9247 | @item --list-checkers |
9248 | @itemx -l | |
9249 | Liste et décrit tous les vérificateurs disponibles qui seront lancés sur les | |
9250 | paquets puis quitte. | |
bf5c74e7 | 9251 | |
15f1bff4 JL |
9252 | @item --checkers |
9253 | @itemx -c | |
9254 | N'active que les vérificateurs spécifiés dans une liste de noms séparés par | |
9255 | des virgules parmi la liste renvoyée par @code{--list-checkers}. | |
bf5c74e7 | 9256 | |
15f1bff4 | 9257 | @end table |
bf5c74e7 | 9258 | |
15f1bff4 JL |
9259 | @node Invoquer guix size |
9260 | @section Invoquer @command{guix size} | |
bf5c74e7 | 9261 | |
15f1bff4 JL |
9262 | @cindex taille |
9263 | @cindex paquet, taille | |
9264 | @cindex closure | |
9265 | @cindex @command{guix size} | |
9266 | La commande @command{guix size} aide les développeurs à dresser un profil de | |
9267 | l'utilisation du disque que font les paquets. C'est facile de négliger | |
9268 | l'impact d'une dépendance supplémentaire ajoutée à un paquet, ou l'impact de | |
9269 | l'utilisation d'une sortie unique pour un paquet qui pourrait être | |
9270 | facilement séparé (@pxref{Des paquets avec plusieurs résultats}). Ce sont les | |
9271 | problèmes que @command{guix size} peut typiquement mettre en valeur. | |
bf5c74e7 | 9272 | |
15f1bff4 JL |
9273 | On peut passer un ou plusieurs spécifications de paquets à la commande, |
9274 | comme @code{gcc@@4.8} ou @code{guile:debug}, ou un nom de fichier dans le | |
9275 | dépôt. Regardez cet exemple : | |
9276 | ||
9277 | @example | |
9278 | $ guix size coreutils | |
9279 | store item total self | |
9280 | /gnu/store/@dots{}-gcc-5.5.0-lib 60.4 30.1 38.1% | |
9281 | /gnu/store/@dots{}-glibc-2.27 30.3 28.8 36.6% | |
9282 | /gnu/store/@dots{}-coreutils-8.28 78.9 15.0 19.0% | |
9283 | /gnu/store/@dots{}-gmp-6.1.2 63.1 2.7 3.4% | |
9284 | /gnu/store/@dots{}-bash-static-4.4.12 1.5 1.5 1.9% | |
9285 | /gnu/store/@dots{}-acl-2.2.52 61.1 0.4 0.5% | |
9286 | /gnu/store/@dots{}-attr-2.4.47 60.6 0.2 0.3% | |
9287 | /gnu/store/@dots{}-libcap-2.25 60.5 0.2 0.2% | |
9288 | total: 78.9 MiB | |
9289 | @end example | |
bf5c74e7 | 9290 | |
15f1bff4 JL |
9291 | @cindex closure |
9292 | Les éléments du dépôt listés ici constituent la @dfn{clôture transitive} de | |
9293 | Coreutils — c.-à-d.@: Coreutils et toutes ses dépendances, récursivement — | |
9294 | comme ce qui serait renvoyé par : | |
bf5c74e7 JL |
9295 | |
9296 | @example | |
15f1bff4 | 9297 | $ guix gc -R /gnu/store/@dots{}-coreutils-8.23 |
bf5c74e7 JL |
9298 | @end example |
9299 | ||
15f1bff4 JL |
9300 | Ici, la sortie possède trois colonnes à côté de chaque élément du dépôt. La |
9301 | première colonne, nommée « total », montre la taille en mébioctet (Mio) de | |
9302 | la clôture de l'élément du dépôt — c'est-à-dire sa propre taille plus la | |
9303 | taille de ses dépendances. La colonne suivante, nommée « lui-même », montre | |
9304 | la taille de l'élément lui-même. La dernière colonne montre le ration de la | |
9305 | taille de l'élément lui-même par rapport à celle de tous les éléments | |
9306 | montrés. | |
bf5c74e7 | 9307 | |
15f1bff4 JL |
9308 | Dans cet exemple, on voit que la clôture de Coreutils pèse 79@tie{}Mio, dont |
9309 | la plupart est dû à la libc et aux bibliothèques à l'exécution de GCC (ce | |
9310 | n'est pas un problème en soit que la libc et les bibliothèques de GCC | |
9311 | représentent une grande part de la clôture parce qu'elles sont toujours | |
9312 | disponibles sur le système de toute façon). | |
bf5c74e7 | 9313 | |
15f1bff4 JL |
9314 | Lorsque les paquets passés à @command{guix size} sont disponibles dans le |
9315 | dépôt@footnote{Plus précisément, @command{guix size} cherche les variantes | |
9316 | @emph{non greffées} des paquets donnés, tels qu'ils sont renvoyés par | |
9317 | @code{guix build @var{paquet} --no-graft}. @xref{Mises à jour de sécurité} pour des | |
9318 | informations sur les greffes}, @command{guix size} demande au démon de | |
9319 | déterminer ses dépendances, et mesure sa taille dans le dépôt, comme avec | |
9320 | @command{du -ms --apparent-size} (@pxref{du invocation,,, coreutils, GNU | |
9321 | Coreutils}). | |
bf5c74e7 | 9322 | |
15f1bff4 JL |
9323 | Lorsque les paquets donnés ne sont @emph{pas} dans le dépôt, @command{guix |
9324 | size} rapporte les informations en se basant sur les substituts disponibles | |
9325 | (@pxref{Substituts}). Cela permet de profiler l'utilisation du disque des | |
9326 | éléments du dépôt même s'ils ne sont pas sur le disque, mais disponibles à | |
9327 | distance. | |
bf5c74e7 | 9328 | |
15f1bff4 | 9329 | Vous pouvez aussi spécifier plusieurs noms de paquets : |
bf5c74e7 JL |
9330 | |
9331 | @example | |
15f1bff4 JL |
9332 | $ guix size coreutils grep sed bash |
9333 | store item total self | |
9334 | /gnu/store/@dots{}-coreutils-8.24 77.8 13.8 13.4% | |
9335 | /gnu/store/@dots{}-grep-2.22 73.1 0.8 0.8% | |
9336 | /gnu/store/@dots{}-bash-4.3.42 72.3 4.7 4.6% | |
9337 | /gnu/store/@dots{}-readline-6.3 67.6 1.2 1.2% | |
9338 | @dots{} | |
9339 | total: 102.3 MiB | |
bf5c74e7 JL |
9340 | @end example |
9341 | ||
15f1bff4 JL |
9342 | @noindent |
9343 | Dans cet exemple on voit que la combinaison des quatre paquets prend | |
9344 | 102.3@tie{}Mio en tout, ce qui est bien moins que la somme des clôtures | |
9345 | puisqu'ils ont beaucoup de dépendances en commun. | |
bf5c74e7 | 9346 | |
15f1bff4 | 9347 | Les options disponibles sont : |
bf5c74e7 | 9348 | |
15f1bff4 | 9349 | @table @option |
bf5c74e7 | 9350 | |
15f1bff4 JL |
9351 | @item --substitute-urls=@var{urls} |
9352 | Utilise les informations de substituts de @var{urls}. | |
9353 | @xref{client-substitute-urls, the same option for @code{guix build}}. | |
bf5c74e7 | 9354 | |
15f1bff4 JL |
9355 | @item --sort=@var{clef} |
9356 | Trie les lignes en fonction de la @var{clef}, l'une des options suivantes : | |
524756d1 | 9357 | |
15f1bff4 JL |
9358 | @table @code |
9359 | @item self | |
9360 | la taille de chaque élément (par défaut) ; | |
9361 | @item closure | |
9362 | la taille totale de la clôture de l'élément. | |
9363 | @end table | |
524756d1 | 9364 | |
15f1bff4 JL |
9365 | @item --map-file=@var{fichier} |
9366 | Écrit un schéma de l'utilisation du disque au format PNG dans @var{fichier}. | |
524756d1 | 9367 | |
15f1bff4 | 9368 | Pour l'exemple au-dessus, le schéma ressemble à ceci : |
524756d1 | 9369 | |
15f1bff4 JL |
9370 | @image{images/coreutils-size-map,5in,, schéma de l'utilisation du disque de |
9371 | Coreutils produit par @command{guix size}} | |
bf5c74e7 | 9372 | |
15f1bff4 JL |
9373 | Cette option requiert l'installation de |
9374 | @uref{http://wingolog.org/software/guile-charting/, Guile-Charting} et qu'il | |
9375 | soit visible dans le chemin de recherche des modules Guile. Lorsque ce | |
9376 | n'est pas le cas, @command{guix size} plante en essayant de le charger. | |
bf5c74e7 | 9377 | |
3cacfa9e LC |
9378 | @item --system=@var{système} |
9379 | @itemx -s @var{système} | |
15f1bff4 | 9380 | Considère les paquets pour @var{système} — p.@: ex.@: @code{x86_64-linux}. |
bf5c74e7 | 9381 | |
bf5c74e7 JL |
9382 | @end table |
9383 | ||
15f1bff4 JL |
9384 | @node Invoquer guix graph |
9385 | @section Invoque @command{guix graph} | |
adfb167f | 9386 | |
15f1bff4 JL |
9387 | @cindex DAG |
9388 | @cindex @command{guix graph} | |
9389 | @cindex dépendances des paquets | |
9390 | Les paquets et leurs dépendances forment un @dfn{graphe}, plus précisément | |
9391 | un graphe orienté acyclique (DAG). Il peut vite devenir difficile d'avoir | |
9392 | une représentation mentale du DAG d'un paquet, donc la commande | |
9393 | @command{guix graph} fournit une représentation visuelle du DAG. Par | |
9394 | défaut, @command{guix graph} émet un représentation du DAG dans le format | |
9395 | d'entrée de @uref{http://www.graphviz.org/, Graphviz}, pour que sa sortie | |
9396 | puisse être passée directement à la commande @command{dot} de Graphviz. | |
9397 | Elle peut aussi émettre une page HTML avec du code Javascript pour afficher | |
9398 | un « digramme d'accords » dans un navigateur Web, grâce à la bibliothèque | |
9399 | @uref{https://d3js.org/, d3.js}, ou émettre des requêtes Cypher pour | |
9400 | construire un graphe dans une base de donnée de graphes supportant le | |
9401 | langage de requêtes @uref{http://www.opencypher.org/, openCypher}. La | |
9402 | syntaxe générale est : | |
adfb167f JL |
9403 | |
9404 | @example | |
15f1bff4 JL |
9405 | guix graph @var{options} @var{paquet}@dots{} |
9406 | @end example | |
adfb167f | 9407 | |
15f1bff4 JL |
9408 | Par exemple, la commande suivante génère un fichier PDF représentant le DAG |
9409 | du paquet pour GNU@tie{}Core Utilities, qui montre ses dépendances à la | |
9410 | compilation : | |
adfb167f | 9411 | |
15f1bff4 JL |
9412 | @example |
9413 | guix graph coreutils | dot -Tpdf > dag.pdf | |
adfb167f JL |
9414 | @end example |
9415 | ||
15f1bff4 | 9416 | La sortie ressemble à ceci : |
adfb167f | 9417 | |
15f1bff4 | 9418 | @image{images/coreutils-graph,2in,,Graphe de dépendance de GNU Coreutils} |
adfb167f | 9419 | |
15f1bff4 JL |
9420 | Joli petit graphe, non ? |
9421 | ||
9422 | Mais il y a plus qu'un seul graphe ! Celui au-dessus est concis : c'est le | |
9423 | graphe des objets paquets, en omettant les entrées implicites comme GCC, | |
9424 | libc, grep, etc. Il est souvent utile d'avoir ces graphes concis, mais | |
9425 | parfois on veut voir plus de détails. @command{guix graph} supporte | |
9426 | plusieurs types de graphes, qui vous permettent de choisir le niveau de | |
9427 | détails : | |
9428 | ||
9429 | @table @code | |
9430 | @item package | |
9431 | C'est le type par défaut utilisé dans l'exemple plus haut. Il montre le DAG | |
9432 | des objets paquets, sans les dépendances implicites. C'est concis, mais | |
9433 | omet pas mal de détails. | |
9434 | ||
9435 | @item reverse-package | |
9436 | Cela montre le DAG @emph{inversé} des paquets. Par exemple : | |
adfb167f JL |
9437 | |
9438 | @example | |
15f1bff4 | 9439 | guix graph --type=reverse-package ocaml |
adfb167f | 9440 | @end example |
bf5c74e7 | 9441 | |
15f1bff4 | 9442 | ...@: yields the graph of packages that depend on OCaml. |
bf5c74e7 | 9443 | |
15f1bff4 JL |
9444 | Remarquez que pour les paquets du cœur de la distribution, cela crée des |
9445 | graphes énormes. Si vous voulez seulement voir le nombre de paquets qui | |
9446 | dépendent d'un paquet donnés, utilisez @command{guix refresh | |
9447 | --list-dependent} (@pxref{Invoquer guix refresh, | |
9448 | @option{--list-dependent}}). | |
9449 | ||
9450 | @item bag-emerged | |
9451 | C'est le DAG du paquet, @emph{avec} les entrées implicites. | |
9452 | ||
9453 | Par exemple, la commande suivante : | |
bf5c74e7 JL |
9454 | |
9455 | @example | |
15f1bff4 | 9456 | guix graph --type=bag-emerged coreutils | dot -Tpdf > dag.pdf |
bf5c74e7 JL |
9457 | @end example |
9458 | ||
15f1bff4 JL |
9459 | ...@: yields this bigger graph: |
9460 | ||
9461 | @image{images/coreutils-bag-graph,,5in,Graphe des dépendances détaillé de | |
9462 | GNU Coreutils} | |
bf5c74e7 | 9463 | |
15f1bff4 JL |
9464 | En bas du graphe, on voit toutes les entrées implicites de |
9465 | @var{gnu-build-system} (@pxref{Systèmes de construction, @code{gnu-build-system}}). | |
bf5c74e7 | 9466 | |
15f1bff4 JL |
9467 | Maintenant, remarquez que les dépendances de ces entrées implicites — |
9468 | c'est-à-dire les @dfn{dépendances de bootstrap} (@pxref{Bootstrapping}) — ne | |
9469 | sont pas affichées, pour rester concis. | |
bf5c74e7 | 9470 | |
15f1bff4 JL |
9471 | @item bag |
9472 | Comme @code{bag-emerged} mais cette fois inclus toutes les dépendances de | |
9473 | bootstrap. | |
bf5c74e7 | 9474 | |
15f1bff4 JL |
9475 | @item bag-with-origins |
9476 | Comme @code{bag}, mais montre aussi les origines et leurs dépendances. | |
bf5c74e7 | 9477 | |
15f1bff4 JL |
9478 | @item dérivation |
9479 | C'est la représentation lu plus détaillée : elle montre le DAG des | |
9480 | dérivations (@pxref{Dérivations}) et des éléments du dépôt. Comparé à la | |
9481 | représentation ci-dessus, beaucoup plus de nœuds sont visibles, dont les | |
9482 | scripts de construction, les correctifs, les modules Guile, etc. | |
bf5c74e7 | 9483 | |
15f1bff4 JL |
9484 | Pour ce type de graphe, il est aussi possible de passer un nom de fichier |
9485 | @file{.drv} à la place d'un nom de paquet, comme dans : | |
bf5c74e7 | 9486 | |
15f1bff4 JL |
9487 | @example |
9488 | guix graph -t derivation `guix system build -d my-config.scm` | |
9489 | @end example | |
9490 | ||
9491 | @item module | |
9492 | C'est le graphe des @dfn{modules de paquets} (@pxref{Modules de paquets}). Par | |
9493 | exemple, la commande suivante montre le graphe des modules de paquets qui | |
9494 | définissent le paquet @code{guile} : | |
bf5c74e7 | 9495 | |
15f1bff4 JL |
9496 | @example |
9497 | guix graph -t module guile | dot -Tpdf > module-graph.pdf | |
9498 | @end example | |
bf5c74e7 JL |
9499 | @end table |
9500 | ||
15f1bff4 JL |
9501 | Tous les types ci-dessus correspondent aux @emph{dépendances à la |
9502 | construction}. Le type de graphe suivant représente les @emph{dépendances à | |
9503 | l'exécution} : | |
bf5c74e7 | 9504 | |
15f1bff4 JL |
9505 | @table @code |
9506 | @item references | |
9507 | C'est le graphe des @dfn{references} d'une sortie d'un paquet, telles que | |
9508 | renvoyées par @command{guix gc --references} (@pxref{Invoquer guix gc}). | |
bf5c74e7 | 9509 | |
15f1bff4 JL |
9510 | Si la sortie du paquet donnée n'est pas disponible dans le dépôt, |
9511 | @command{guix graph} essayera d'obtenir les informations sur les dépendances | |
9512 | à travers les substituts. | |
bf5c74e7 | 9513 | |
15f1bff4 JL |
9514 | Vous pouvez aussi passer un nom de fichier du dépôt plutôt qu'un nom de |
9515 | paquet. Par exemple, la commande ci-dessous produit le graphe des | |
9516 | références de votre profile (qui peut être gros !) : | |
bf5c74e7 | 9517 | |
15f1bff4 JL |
9518 | @example |
9519 | guix graph -t references `readlink -f ~/.guix-profile` | |
9520 | @end example | |
bf5c74e7 | 9521 | |
15f1bff4 JL |
9522 | @item referrers |
9523 | C'est le graphe des @dfn{référents} d'un élément du dépôt, tels que renvoyés | |
9524 | par @command{guix gc --referrers} (@pxref{Invoquer guix gc}). | |
bf5c74e7 | 9525 | |
15f1bff4 JL |
9526 | Cela repose exclusivement sur les informations de votre dépôt. Par exemple, |
9527 | supposons que Inkscape est actuellement disponible dans 10 profils sur votre | |
9528 | machine ; @command{guix graph -t referrers inkscape} montrera le graphe dont | |
9529 | la racine est Inkscape avec 10 profils qui y sont liés. | |
bf5c74e7 | 9530 | |
15f1bff4 JL |
9531 | Cela peut aider à déterminer ce qui empêche un élément du dépôt d'être |
9532 | glané. | |
bf5c74e7 | 9533 | |
15f1bff4 | 9534 | @end table |
bf5c74e7 | 9535 | |
15f1bff4 | 9536 | Les options disponibles sont les suivante : |
bf5c74e7 | 9537 | |
15f1bff4 JL |
9538 | @table @option |
9539 | @item --type=@var{type} | |
9540 | @itemx -t @var{type} | |
9541 | Produit un graphe en sortie de type @var{type} où @var{type} doit être l'un | |
9542 | des types au-dessus. | |
bf5c74e7 | 9543 | |
15f1bff4 JL |
9544 | @item --list-types |
9545 | Liste les types de graphes supportés. | |
bf5c74e7 | 9546 | |
15f1bff4 JL |
9547 | @item --backend=@var{moteur} |
9548 | @itemx -b @var{moteur} | |
9549 | Produit un graphe avec le @var{moteur} choisi. | |
bf5c74e7 | 9550 | |
15f1bff4 JL |
9551 | @item --list-backends |
9552 | Liste les moteurs de graphes supportés. | |
bf5c74e7 | 9553 | |
15f1bff4 | 9554 | Actuellement les moteurs disponibles sont Graphviz et d3.js. |
bf5c74e7 | 9555 | |
15f1bff4 JL |
9556 | @item --expression=@var{expr} |
9557 | @itemx -e @var{expr} | |
9558 | Considérer le paquet évalué par @var{expr}. | |
bf5c74e7 | 9559 | |
15f1bff4 JL |
9560 | C'est utile pour précisément se référer à un paquet, comme dans cet exemple |
9561 | : | |
bf5c74e7 | 9562 | |
15f1bff4 JL |
9563 | @example |
9564 | guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)' | |
9565 | @end example | |
bf5c74e7 | 9566 | |
15f1bff4 JL |
9567 | @item --system=@var{système} |
9568 | @itemx -s @var{système} | |
9569 | Affiche le graphe pour @var{système} — p.@: ex.@: @code{i686-linux}. | |
bf5c74e7 | 9570 | |
15f1bff4 JL |
9571 | Le graphe de dépendance des paquets est la plupart du temps indépendant de |
9572 | l'architecture, mais il y a quelques parties qui dépendent de l'architecture | |
9573 | que cette option vous permet de visualiser. | |
9574 | @end table | |
bf5c74e7 | 9575 | |
bf5c74e7 | 9576 | |
bf5c74e7 | 9577 | |
15f1bff4 JL |
9578 | @node Invoquer guix publish |
9579 | @section Invoquer @command{guix publish} | |
bf5c74e7 | 9580 | |
15f1bff4 JL |
9581 | @cindex @command{guix publish} |
9582 | Le but de @command{guix publish} est de vous permettre de partager | |
9583 | facilement votre dépôt avec d'autres personnes qui peuvent ensuite | |
9584 | l'utiliser comme serveur de substituts (@pxref{Substituts}). | |
bf5c74e7 | 9585 | |
15f1bff4 JL |
9586 | When @command{guix publish} runs, it spawns an HTTP server which allows |
9587 | anyone with network access to obtain substitutes from it. This means that | |
9588 | any machine running Guix can also act as if it were a build farm, since the | |
9589 | HTTP interface is compatible with Hydra, the software behind the | |
9590 | @code{@value{SUBSTITUTE-SERVER}} build farm. | |
bf5c74e7 | 9591 | |
15f1bff4 JL |
9592 | Pour des raisons de sécurité, chaque substitut est signé, ce qui permet aux |
9593 | destinataires de vérifier leur authenticité et leur intégrité | |
9594 | (@pxref{Substituts}). Comme @command{guix publish} utilise la clef de | |
9595 | signature du système, qui n'est lisible que par l'administrateur système, il | |
9596 | doit être lancé en root ; l'option @code{--user} lui fait baisser ses | |
9597 | privilèges le plus tôt possible. | |
bf5c74e7 | 9598 | |
15f1bff4 JL |
9599 | La pair de clefs pour les signatures doit être générée avant de lancer |
9600 | @command{guix publish}, avec @command{guix archive --generate-key} | |
9601 | (@pxref{Invoquer guix archive}). | |
bf5c74e7 | 9602 | |
15f1bff4 | 9603 | La syntaxe générale est : |
bf5c74e7 JL |
9604 | |
9605 | @example | |
15f1bff4 | 9606 | guix publish @var{options}@dots{} |
bf5c74e7 JL |
9607 | @end example |
9608 | ||
15f1bff4 JL |
9609 | Lancer @command{guix publish} sans arguments supplémentaires lancera un |
9610 | serveur HTTP sur le port 8080 : | |
bf5c74e7 JL |
9611 | |
9612 | @example | |
15f1bff4 | 9613 | guix publish |
bf5c74e7 JL |
9614 | @end example |
9615 | ||
15f1bff4 | 9616 | 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 : |
bf5c74e7 | 9617 | |
15f1bff4 JL |
9618 | @example |
9619 | guix-daemon --substitute-urls=http://example.org:8080 | |
9620 | @end example | |
bf5c74e7 | 9621 | |
15f1bff4 JL |
9622 | Par défaut, @command{guix publish} compresse les archives à la volée quand |
9623 | il les sert. Ce mode « à la volée » est pratique puisqu'il ne demande | |
9624 | aucune configuration et est disponible immédiatement. Cependant, lorsqu'il | |
9625 | s'agit de servir beaucoup de clients, nous recommandons d'utiliser l'option | |
9626 | @option{--cache}, qui active le cache des archives avant de les envoyer aux | |
9627 | clients — voir les détails plus bas. La commande @command{guix weather} | |
9628 | fournit un manière pratique de vérifier ce qu'un serveur fournit | |
9629 | (@pxref{Invoquer guix weather}). | |
bf5c74e7 | 9630 | |
15f1bff4 JL |
9631 | En bonus, @command{guix publish} sert aussi un miroir adressé par le contenu |
9632 | des fichiers source référencées dans les enregistrements @code{origin} | |
9633 | (@pxref{Référence d'origine}). Par exemple, en supposant que @command{guix | |
9634 | publish} tourne sur @code{example.org}, l'URL suivante renverra le fichier | |
9635 | brut @file{hello-2.10.tar.gz} avec le hash SHA256 donné (représenté sous le | |
9636 | format @code{nix-base32}, @pxref{Invoquer guix hash}) : | |
bf5c74e7 JL |
9637 | |
9638 | @example | |
15f1bff4 | 9639 | http://example.org/file/hello-2.10.tar.gz/sha256/0ssi1@dots{}ndq1i |
bf5c74e7 JL |
9640 | @end example |
9641 | ||
15f1bff4 JL |
9642 | Évidemment, ces URL ne fonctionnent que pour des fichiers dans le dépôt ; |
9643 | dans les autres cas, elles renvoie une erreur 404 (« Introuvable »). | |
9644 | ||
9645 | @cindex journaux de construction, publication | |
9646 | Les journaux de construction sont disponibles à partir des URL @code{/log} | |
9647 | comme ceci : | |
bf5c74e7 JL |
9648 | |
9649 | @example | |
15f1bff4 | 9650 | http://example.org/log/gwspk@dots{}-guile-2.2.3 |
bf5c74e7 JL |
9651 | @end example |
9652 | ||
15f1bff4 JL |
9653 | @noindent |
9654 | Lorsque @command{guix-daemon} est configuré pour sauvegarder les journaux de | |
9655 | 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, | |
9656 | avec un en-tête @code{Content-Type} ou @code{Content-Encoding} approprié. | |
9657 | Nous recommandons de lancer @command{guix-daemon} avec | |
9658 | @code{--log-compression=gzip} parce que les navigateurs web les | |
9659 | décompressent automatiquement, ce qui n'est pas le cas avec la compression | |
9660 | bzip2. | |
bf5c74e7 | 9661 | |
15f1bff4 | 9662 | Les options suivantes sont disponibles : |
bf5c74e7 | 9663 | |
15f1bff4 JL |
9664 | @table @code |
9665 | @item --port=@var{port} | |
9666 | @itemx -p @var{port} | |
9667 | Écoute les requêtes HTTP sur le @var{port} | |
bf5c74e7 | 9668 | |
15f1bff4 JL |
9669 | @item --listen=@var{hôte} |
9670 | Écoute sur l'interface réseau de @var{hôte}. Par défaut, la commande | |
9671 | accepte les connexions de n'importe quelle interface. | |
bf5c74e7 | 9672 | |
15f1bff4 JL |
9673 | @item --user=@var{utilisateur} |
9674 | @itemx -u @var{utilisateur} | |
9675 | Charge les privilèges de @var{utilisateur} le plus vite possible — | |
9676 | c.-à-d. une fois que la socket du serveur est ouverte et que la clef de | |
9677 | signature a été lue. | |
bf5c74e7 | 9678 | |
15f1bff4 JL |
9679 | @item --compression[=@var{niveau}] |
9680 | @itemx -C [@var{niveau}] | |
9681 | Compresse les données au @var{niveau} donné. Lorsque le @var{niveau} est | |
9682 | zéro, désactive la compression. L'intervalle 1 à 9 correspond aux | |
9683 | différents niveaux de compression gzip : 1 est le plus rapide et 9 est la | |
9684 | meilleure (mais gourmande en CPU). Le niveau par défaut est 3. | |
bf5c74e7 | 9685 | |
15f1bff4 JL |
9686 | À moins que @option{--cache} ne soit utilisé, la compression se fait à la |
9687 | volée et les flux compressés ne sont pas cachés. Ainsi, pour réduire la | |
9688 | charge sur la machine qui fait tourner @command{guix publish}, c'est une | |
9689 | bonne idée de choisir un niveau de compression faible, de lancer | |
9690 | @command{guix publish} derrière un serveur de cache ou d'utiliser | |
9691 | @option{--cache}. Utilise @option{--cache} a l'avantage qu'il permet à | |
9692 | @command{guix publish} d'ajouter l'en-tête HTTP @code{Content-Length} à sa | |
9693 | réponse. | |
bf5c74e7 | 9694 | |
15f1bff4 JL |
9695 | @item --cache=@var{répertoire} |
9696 | @itemx -c @var{répertoire} | |
9697 | Cache les archives et les métadonnées (les URL @code{.narinfo}) dans | |
9698 | @var{répertoire} et ne sert que les archives dans ce cache. | |
bf5c74e7 | 9699 | |
15f1bff4 JL |
9700 | Lorsque cette option est omise, les archives et les métadonnées sont crées à |
9701 | la volée. Cela réduit la bande passante disponible, surtout quand la | |
9702 | compression est activée puisqu'elle pourrait être limitée par le CPU. Un | |
9703 | autre inconvénient au mode par défaut est que la taille des archives n'est | |
9704 | pas connue à l'avance, donc @command{guix publish} n'ajoute pas l'en-tête | |
9705 | @code{Content-Length} à ses réponses, ce qui empêche les clients de savoir | |
9706 | la quantité de données à télécharger. | |
bf5c74e7 | 9707 | |
15f1bff4 JL |
9708 | À l'inverse, lorsque @option{--cache} est utilisée, la première requête pour |
9709 | un élément du dépôt (via une URL @code{.narinfo}) renvoie une erreur 404 et | |
9710 | déclenche la création de l'archive — en calculant son @code{.narinfo} et en | |
9711 | compressant l'archive au besoin. Une fois l'archive cachée dans | |
9712 | @var{répertoire}, les requêtes suivantes réussissent et sont servies | |
9713 | directement depuis le cache, ce qui garanti que les clients ont la meilleure | |
9714 | bande passante possible. | |
bf5c74e7 | 9715 | |
15f1bff4 JL |
9716 | Le processus de création est effectué par des threads de travail. Par |
9717 | défaut, un thread par cœur du CPU est créé, mais cela peut être | |
9718 | personnalisé. Voir @option{--workers} plus bas. | |
bf5c74e7 | 9719 | |
15f1bff4 JL |
9720 | Lorsque l'option @option{--ttl} est utilisée, les entrées cachées sont |
9721 | automatiquement supprimées lorsqu'elles expirent. | |
bf5c74e7 | 9722 | |
15f1bff4 JL |
9723 | @item --workers=@var{N} |
9724 | Lorsque @option{--cache} est utilisée, demande l'allocation de @var{N} | |
9725 | thread de travail pour créer les archives. | |
bf5c74e7 | 9726 | |
15f1bff4 JL |
9727 | @item --ttl=@var{ttl} |
9728 | Produit des en-têtes HTTP @code{Cache-Control} qui expriment une durée de | |
9729 | vie (TTL) de @var{ttl}. @var{ttl} peut dénoter une durée : @code{5d} | |
9730 | signifie 5 jours, @code{1m} signifie un mois, etc. | |
bf5c74e7 | 9731 | |
15f1bff4 JL |
9732 | Cela permet au Guix de l'utilisateur de garder les informations en cache |
9733 | pendant @var{ttl}. Cependant, remarquez que @code{guix publish} ne garanti | |
9734 | pas lui-même que les éléments du dépôt qu'il fournit seront toujours | |
9735 | disponible pendant la durée @var{ttl}. | |
9736 | ||
9737 | En plus, lorsque @option{--cache} est utilisée, les entrées cachées qui | |
9738 | n'ont pas été demandé depuis @var{ttl} et n'ont pas d'élément correspondant | |
9739 | dans le dépôt peuvent être supprimées. | |
bf5c74e7 | 9740 | |
15f1bff4 JL |
9741 | @item --nar-path=@var{chemin} |
9742 | Utilise @var{chemin} comme préfixe des URL de fichier « nar » | |
9743 | (@pxref{Invoquer guix archive, normalized archives}). | |
bf5c74e7 | 9744 | |
15f1bff4 JL |
9745 | Par défaut, les nars sont présents à l'URL comme |
9746 | @code{/nar/gzip/@dots{}-coreutils-8.25}. Cette option vous permet de | |
9747 | changer la partie @code{/nar} en @var{chemin}. | |
bf5c74e7 | 9748 | |
15f1bff4 JL |
9749 | @item --public-key=@var{fichier} |
9750 | @itemx --private-key=@var{fichier} | |
9751 | Utilise les @var{fichier}s spécifiques comme pair de clefs utilisées pour | |
9752 | signer les éléments avant de les publier. | |
bf5c74e7 | 9753 | |
15f1bff4 JL |
9754 | Les fichiers doivent correspondre à la même pair de clefs (la clef privée |
9755 | est utilisée pour signer et la clef publique est seulement ajouté aux | |
9756 | métadonnées de la signature). Ils doivent contenir les clefs dans le format | |
9757 | s-expression canonique produit par @command{guix archive --generate-key} | |
9758 | (@pxref{Invoquer guix archive}). Par défaut, | |
9759 | @file{/etc/guix/signing-key.pub} et @file{/etc/guix/signing-key.sec} sont | |
9760 | utilisés. | |
bf5c74e7 | 9761 | |
15f1bff4 JL |
9762 | @item --repl[=@var{port}] |
9763 | @itemx -r [@var{port}] | |
9764 | Crée un serveur REPL Guile (@pxref{REPL Servers,,, guile, GNU Guile | |
9765 | Reference Manual}) sur @var{pport} (37146 par défaut). C'est surtout utile | |
9766 | pour déboguer un serveur @command{guix publish} qui tourne. | |
9767 | @end table | |
bf5c74e7 | 9768 | |
15f1bff4 JL |
9769 | Enabling @command{guix publish} on Guix System is a one-liner: just |
9770 | instantiate a @code{guix-publish-service-type} service in the | |
9771 | @code{services} field of the @code{operating-system} declaration | |
9772 | (@pxref{guix-publish-service-type, @code{guix-publish-service-type}}). | |
bf5c74e7 | 9773 | |
15f1bff4 JL |
9774 | Si vous avez installé Guix sur une « distro extérieure », suivez ces |
9775 | instructions : | |
9776 | ||
9777 | @itemize | |
9778 | @item | |
9779 | Si votre distro hôte utilise le système d'init systemd : | |
bf5c74e7 JL |
9780 | |
9781 | @example | |
15f1bff4 JL |
9782 | # ln -s ~root/.guix-profile/lib/systemd/system/guix-publish.service \ |
9783 | /etc/systemd/system/ | |
9784 | # systemctl start guix-publish && systemctl enable guix-publish | |
bf5c74e7 JL |
9785 | @end example |
9786 | ||
15f1bff4 JL |
9787 | @item |
9788 | Si votre distribution hôte utilise le système d'initialisation Upstart : | |
bf5c74e7 JL |
9789 | |
9790 | @example | |
15f1bff4 JL |
9791 | # ln -s ~root/.guix-profile/lib/upstart/system/guix-publish.conf /etc/init/ |
9792 | # start guix-publish | |
bf5c74e7 JL |
9793 | @end example |
9794 | ||
15f1bff4 JL |
9795 | @item |
9796 | Sinon, procédez de manière similaire avec votre système d'init de votre | |
9797 | distro. | |
9798 | @end itemize | |
bf5c74e7 | 9799 | |
15f1bff4 JL |
9800 | @node Invoquer guix challenge |
9801 | @section Invoquer @command{guix challenge} | |
bf5c74e7 | 9802 | |
15f1bff4 JL |
9803 | @cindex constructions reproductibles |
9804 | @cindex constructions vérifiables | |
9805 | @cindex @command{guix challenge} | |
9806 | @cindex défi | |
9807 | Est-ce que les binaires fournis par ce serveur correspondent réellement au | |
9808 | code source qu'il dit avoir construit ? Est-ce que le processus de | |
9809 | construction d'un paquet est déterministe ? Ce sont les question auxquelles | |
9810 | la commande @command{guix challenge} essaye de répondre. | |
bf5c74e7 | 9811 | |
15f1bff4 JL |
9812 | La première question est évidemment importante : avant d'utiliser un serveur |
9813 | de substituts (@pxref{Substituts}), il vaut mieux @emph{vérifier} qu'il | |
9814 | fournit les bons binaires et donc le @emph{défier}. La deuxième est ce qui | |
9815 | permet la première : si les constructions des paquets sont déterministes | |
9816 | alors des constructions indépendantes du paquet devraient donner le même | |
9817 | résultat, bit à bit ; si un serveur fournit un binaire différent de celui | |
9818 | obtenu localement, il peut être soit corrompu, soit malveillant. | |
bf5c74e7 | 9819 | |
15f1bff4 JL |
9820 | On sait que le hash qui apparaît dans @file{/gnu/store} est le hash de |
9821 | toutes les entrées du processus qui construit le fichier ou le répertoire — | |
9822 | les compilateurs, les bibliothèques, les scripts de construction, | |
9823 | etc. (@pxref{Introduction}). En supposant que les processus de construction | |
9824 | sont déterministes, un nom de fichier dans le dépôt devrait correspondre | |
9825 | exactement à une sortie de construction. @command{guix challenge} vérifie | |
9826 | si il y a bien effectivement une seule correspondance en comparant les | |
9827 | sorties de plusieurs constructions indépendantes d'un élément du dépôt | |
9828 | donné. | |
bf5c74e7 | 9829 | |
15f1bff4 | 9830 | La sortie de la commande ressemble à : |
bf5c74e7 | 9831 | |
15f1bff4 JL |
9832 | @smallexample |
9833 | $ guix challenge --substitute-urls="https://@value{SUBSTITUTE-SERVER} https://guix.example.org" | |
9834 | updating list of substitutes from 'https://@value{SUBSTITUTE-SERVER}'... 100.0% | |
9835 | updating list of substitutes from 'https://guix.example.org'... 100.0% | |
9836 | /gnu/store/@dots{}-openssl-1.0.2d contents differ: | |
9837 | local hash: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q | |
9838 | https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-openssl-1.0.2d: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q | |
9839 | https://guix.example.org/nar/@dots{}-openssl-1.0.2d: 1zy4fmaaqcnjrzzajkdn3f5gmjk754b43qkq47llbyak9z0qjyim | |
9840 | /gnu/store/@dots{}-git-2.5.0 contents differ: | |
9841 | local hash: 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha | |
9842 | https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0: 069nb85bv4d4a6slrwjdy8v1cn4cwspm3kdbmyb81d6zckj3nq9f | |
9843 | https://guix.example.org/nar/@dots{}-git-2.5.0: 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73 | |
9844 | /gnu/store/@dots{}-pius-2.1.1 contents differ: | |
9845 | local hash: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax | |
9846 | https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-pius-2.1.1: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax | |
9847 | https://guix.example.org/nar/@dots{}-pius-2.1.1: 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs | |
bf5c74e7 | 9848 | |
15f1bff4 | 9849 | @dots{} |
bf5c74e7 | 9850 | |
15f1bff4 JL |
9851 | 6,406 éléments du dépôt ont été analysés : |
9852 | - 4,749 (74.1%) étaient identiques | |
9853 | - 525 (8.2%) étaient différents | |
9854 | - 1,132 (17.7%) étaient impossibles à évaluer | |
9855 | @end smallexample | |
bf5c74e7 | 9856 | |
15f1bff4 JL |
9857 | @noindent |
9858 | Dans cet exemple, @command{guix challenge} scanne d'abord le dépôt pour | |
9859 | déterminer l'ensemble des dérivations construites localement — en opposition | |
9860 | aux éléments qui ont été téléchargées depuis un serveur de substituts — puis | |
9861 | demande leur avis à tous les serveurs de substituts. Il rapporte ensuite | |
9862 | les éléments du dépôt pour lesquels les serveurs ont obtenu un résultat | |
9863 | différent de la construction locale. | |
bf5c74e7 | 9864 | |
15f1bff4 JL |
9865 | @cindex non-déterminisme, dans les constructions des paquets |
9866 | As an example, @code{guix.example.org} always gets a different answer. | |
9867 | Conversely, @code{@value{SUBSTITUTE-SERVER}} agrees with local builds, | |
9868 | except in the case of Git. This might indicate that the build process of | |
9869 | Git is non-deterministic, meaning that its output varies as a function of | |
9870 | various things that Guix does not fully control, in spite of building | |
9871 | packages in isolated environments (@pxref{Fonctionnalités}). Most common sources | |
9872 | of non-determinism include the addition of timestamps in build results, the | |
9873 | inclusion of random numbers, and directory listings sorted by inode number. | |
9874 | See @uref{https://reproducible-builds.org/docs/}, for more information. | |
9875 | ||
9876 | Pour trouver ce qui ne va pas avec le binaire de Git, on peut faire quelque | |
9877 | chose comme cela (@pxref{Invoquer guix archive}) : | |
bf5c74e7 JL |
9878 | |
9879 | @example | |
15f1bff4 JL |
9880 | $ wget -q -O - https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0 \ |
9881 | | guix archive -x /tmp/git | |
9882 | $ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git | |
bf5c74e7 JL |
9883 | @end example |
9884 | ||
15f1bff4 JL |
9885 | This command shows the difference between the files resulting from the local |
9886 | build, and the files resulting from the build on | |
9887 | @code{@value{SUBSTITUTE-SERVER}} (@pxref{Overview, Comparing and Merging | |
9888 | Files,, diffutils, Comparing and Merging Files}). The @command{diff} | |
9889 | command works great for text files. When binary files differ, a better | |
9890 | option is @uref{https://diffoscope.org/, Diffoscope}, a tool that helps | |
9891 | visualize differences for all kinds of files. | |
9892 | ||
9893 | Une fois que vous avez fait ce travail, vous pourrez dire si les différences | |
9894 | sont dues au non-déterminisme du processus de construction ou à la | |
9895 | malhonnêteté du serveur. Nous avons fait beaucoup d'effort pour éliminer | |
9896 | les sources de non-déterminisme dans les paquets pour rendre plus facile la | |
9897 | vérification des substituts, mais bien sûr, c'est un processus qui | |
9898 | n'implique pas que Guix, mais une grande partie de la communauté des | |
9899 | logiciels libres. Pendant ce temps, @command{guix challenge} est un outil | |
9900 | pour aider à corriger le problème. | |
9901 | ||
9902 | If you are writing packages for Guix, you are encouraged to check whether | |
9903 | @code{@value{SUBSTITUTE-SERVER}} and other substitute servers obtain the | |
9904 | same build result as you did with: | |
bf5c74e7 JL |
9905 | |
9906 | @example | |
15f1bff4 | 9907 | $ guix challenge @var{paquet} |
bf5c74e7 JL |
9908 | @end example |
9909 | ||
15f1bff4 JL |
9910 | @noindent |
9911 | où @var{paquet} est une spécification de paquet comme @code{guile@@2.0} ou | |
9912 | @code{glibc:debug}. | |
bf5c74e7 | 9913 | |
15f1bff4 | 9914 | La syntaxe générale est : |
bf5c74e7 JL |
9915 | |
9916 | @example | |
15f1bff4 | 9917 | guix challenge @var{options} [@var{paquets}@dots{}] |
bf5c74e7 JL |
9918 | @end example |
9919 | ||
15f1bff4 JL |
9920 | Lorsqu'une différence est trouvée entre l'empreinte d'un élément construit |
9921 | localement et celle d'un substitut fournit par un serveur, ou parmi les | |
9922 | substituts fournis par différents serveurs, la commande l'affiche comme dans | |
9923 | l'exemple ci-dessus et sa valeur de sortie est 2 (les autres valeurs | |
9924 | différentes de 0 indiquent d'autres sortes d'erreurs). | |
bf5c74e7 | 9925 | |
15f1bff4 | 9926 | L'option qui compte est : |
bf5c74e7 | 9927 | |
15f1bff4 | 9928 | @table @code |
bf5c74e7 | 9929 | |
15f1bff4 JL |
9930 | @item --substitute-urls=@var{urls} |
9931 | Considère @var{urls} comme la liste des URL des sources de substituts | |
9932 | séparés par des espaces avec lesquels comparer les paquets locaux. | |
bf5c74e7 | 9933 | |
15f1bff4 JL |
9934 | @item --verbose |
9935 | @itemx -v | |
9936 | Montre des détails sur les correspondances (contenu identique) en plus des | |
9937 | informations sur différences. | |
bf5c74e7 | 9938 | |
15f1bff4 | 9939 | @end table |
bf5c74e7 | 9940 | |
15f1bff4 JL |
9941 | @node Invoquer guix copy |
9942 | @section Invoquer @command{guix copy} | |
524756d1 | 9943 | |
15f1bff4 JL |
9944 | @cindex copier des éléments du dépôt par SSH |
9945 | @cindex SSH, copie d'éléments du dépôt | |
9946 | @cindex partager des éléments du dépôt entre plusieurs machines | |
9947 | @cindex transférer des éléments du dépôt entre plusieurs machines | |
9948 | La commande @command{guix copy} copie des éléments du dépôt d'une machine | |
9949 | vers le dépôt d'une autre machine à travers une connexion SSH@footnote{Cette | |
9950 | commande n'est disponible que si Guile-SSH est trouvé. @xref{Prérequis}, | |
9951 | pour des détails}. Par exemple, la commande suivante copie le paquet | |
9952 | @code{coreutils}, le profil utilisateur et toutes leurs dépendances sur | |
9953 | @var{hôte}, en tant qu'utilisateur @var{utilisateur} : | |
bf5c74e7 JL |
9954 | |
9955 | @example | |
15f1bff4 JL |
9956 | guix copy --to=@var{utilisateur}@@@var{hôte} \ |
9957 | coreutils `readlink -f ~/.guix-profile` | |
bf5c74e7 JL |
9958 | @end example |
9959 | ||
15f1bff4 JL |
9960 | Si certains éléments à copier sont déjà présents sur @var{hôte}, ils ne sont |
9961 | pas envoyés. | |
9962 | ||
9963 | La commande ci-dessous récupère @code{libreoffice} et @code{gimp} depuis | |
9964 | @var{hôte}, en supposant qu'ils y sont présents : | |
bf5c74e7 JL |
9965 | |
9966 | @example | |
15f1bff4 | 9967 | guix copy --from=@var{hôte} libreoffice gimp |
bf5c74e7 JL |
9968 | @end example |
9969 | ||
15f1bff4 JL |
9970 | La connexion SSH est établie avec le client Guile-SSH, qui set compatible |
9971 | avec OpenSSH : il honore @file{~/.ssh/known_hosts} et @file{~/.ssh/config} | |
9972 | et utilise l'agent SSH pour l'authentification. | |
bf5c74e7 | 9973 | |
15f1bff4 JL |
9974 | La clef utilisée pour signer les éléments qui sont envoyés doit être |
9975 | acceptée par la machine distante. De même, la clef utilisée pour la machine | |
9976 | distante depuis laquelle vous récupérez des éléments doit être dans | |
9977 | @file{/etc/guix/acl} pour qu'ils soient acceptés par votre propre démon. | |
9978 | @xref{Invoquer guix archive}, pour plus d'informations sur | |
9979 | l'authentification des éléments du dépôt. | |
bf5c74e7 | 9980 | |
15f1bff4 | 9981 | La syntaxe générale est : |
bf5c74e7 JL |
9982 | |
9983 | @example | |
15f1bff4 | 9984 | guix copy [--to=@var{spec}|--from=@var{spec}] @var{items}@dots{} |
bf5c74e7 JL |
9985 | @end example |
9986 | ||
15f1bff4 | 9987 | Vous devez toujours spécifier l'une des options suivantes : |
bf5c74e7 | 9988 | |
15f1bff4 JL |
9989 | @table @code |
9990 | @item --to=@var{spec} | |
9991 | @itemx --from=@var{spec} | |
9992 | Spécifie l'hôte où envoyer ou d'où recevoir les éléments. @var{spec} doit | |
9993 | être une spécification SSH comme @code{example.org}, | |
9994 | @code{charlie@@example.org} ou @code{charlie@@example.org:2222}. | |
9995 | @end table | |
bf5c74e7 | 9996 | |
15f1bff4 JL |
9997 | L'option @var{items} peut être des noms de paquets, comme @code{gimp} ou des |
9998 | éléments du dépôt comme @file{/gnu/store/@dots{}-idutils-4.6}. | |
bf5c74e7 | 9999 | |
15f1bff4 JL |
10000 | Lorsque vous spécifiez le nom d'un paquet à envoyer, il est d'abord |
10001 | construit au besoin, sauf si l'option @option{--dry-run} est spécifiée. Les | |
10002 | options de construction communes sont supportées (@pxref{Options de construction communes}). | |
bf5c74e7 | 10003 | |
bf5c74e7 | 10004 | |
15f1bff4 JL |
10005 | @node Invoquer guix container |
10006 | @section Invoquer @command{guix container} | |
10007 | @cindex conteneur | |
10008 | @cindex @command{guix container} | |
10009 | @quotation Remarque | |
10010 | À la version @value{VERSION}, cet outil est toujours expérimental. | |
10011 | L'interface est sujette à changement radicaux dans le futur. | |
10012 | @end quotation | |
bf5c74e7 | 10013 | |
15f1bff4 JL |
10014 | Le but de @command{guix container} est de manipuler des processus qui |
10015 | tournent dans un environnement séparé, connus sous le nom de « conteneur », | |
10016 | typiquement créés par les commandes @command{guix environment} | |
10017 | (@pxref{Invoquer guix environment}) et @command{guix system container} | |
10018 | (@pxref{Invoquer guix system}). | |
bf5c74e7 | 10019 | |
15f1bff4 | 10020 | La syntaxe générale est : |
bf5c74e7 JL |
10021 | |
10022 | @example | |
15f1bff4 | 10023 | guix container @var{action} @var{options}@dots{} |
bf5c74e7 JL |
10024 | @end example |
10025 | ||
15f1bff4 JL |
10026 | @var{action} spécifie les opérations à effectuer avec un conteneur, et |
10027 | @var{options} spécifie les arguments spécifiques au contexte pour l'action. | |
1d8d69c8 | 10028 | |
15f1bff4 | 10029 | Les actions suivantes sont disponibles : |
bf5c74e7 | 10030 | |
15f1bff4 JL |
10031 | @table @code |
10032 | @item exec | |
10033 | Exécute une commande dans le contexte d'un conteneur lancé. | |
10034 | ||
10035 | La syntaxe est : | |
bf5c74e7 JL |
10036 | |
10037 | @example | |
15f1bff4 | 10038 | guix container exec @var{pid} @var{programme} @var{arguments}@dots{} |
bf5c74e7 JL |
10039 | @end example |
10040 | ||
15f1bff4 JL |
10041 | @var{pid} spécifie le PID du conteneur lancé. @var{programme} spécifie le |
10042 | nom du fichier exécutable dans le système de fichiers racine du conteneur. | |
10043 | @var{arguments} sont les options supplémentaires à passer à @var{programme}. | |
bf5c74e7 | 10044 | |
15f1bff4 JL |
10045 | The following command launches an interactive login shell inside a Guix |
10046 | system container, started by @command{guix system container}, and whose | |
10047 | process ID is 9001: | |
bf5c74e7 JL |
10048 | |
10049 | @example | |
15f1bff4 | 10050 | guix container exec 9001 /run/current-system/profile/bin/bash --login |
bf5c74e7 JL |
10051 | @end example |
10052 | ||
15f1bff4 JL |
10053 | Remarquez que @var{pid} ne peut pas être le processus parent d'un |
10054 | conteneur. Ce doit être le PID 1 du conteneur ou l'un de ses processus | |
10055 | fils. | |
1d8d69c8 | 10056 | |
15f1bff4 JL |
10057 | @end table |
10058 | ||
10059 | @node Invoquer guix weather | |
10060 | @section Invoquer @command{guix weather} | |
1d8d69c8 | 10061 | |
15f1bff4 JL |
10062 | Vous pouvez parfois grogner lorsque les substituts ne sont pas disponibles |
10063 | et que vous devez construire les paquets vous-même (@pxref{Substituts}). La | |
10064 | commande @command{guix weather} rapporte la disponibilité des substituts sur | |
10065 | les serveurs spécifiés pour que vous sachiez si vous allez raller | |
10066 | aujourd'hui. Cela peut parfois être une information utile pour les | |
10067 | utilisateurs, mais elle est surtout utile pour les personnes qui font | |
10068 | tourner @command{guix publish} (@pxref{Invoquer guix publish}). | |
1d8d69c8 | 10069 | |
15f1bff4 JL |
10070 | @cindex statistiques sur les substituts |
10071 | @cindex disponibilité des substituts | |
10072 | @cindex substituts, disponibilité | |
10073 | @cindex weather, disponibilité des substituts | |
10074 | Voici un exemple : | |
bf5c74e7 | 10075 | |
15f1bff4 JL |
10076 | @example |
10077 | $ guix weather --substitute-urls=https://guix.example.org | |
10078 | calcul de 5,872 dérivations de paquets pour x86_64-linux… | |
10079 | recherche de 6,128 éléments du dépôt sur https://guix.example.org… | |
10080 | mise à jour de la liste des substituts depuis 'https://guix.example.org'... 100.0% | |
10081 | https://guix.example.org | |
10082 | 43.4% substituts disponibles (2,658 sur 6,128) | |
10083 | 7,032.5 Mo de fichiers nar (compressés) | |
10084 | 19,824.2 Mo sur le disque (décompressés) | |
10085 | 0.030 secondes par requêtes (182.9 secondes au total) | |
10086 | 33.5 requêtes par seconde | |
bf5c74e7 | 10087 | |
15f1bff4 JL |
10088 | 9.8% (342 sur 3,470) des éléments manquants sont dans la queue |
10089 | 867 constructions dans la queue | |
10090 | x86_64-linux : 518 (59.7%) | |
10091 | i686-linux : 221 (25.5%) | |
10092 | aarch64-linux : 128 (14.8%) | |
10093 | vitesse de construction : 23.41 constructions par heure | |
10094 | x86_64-linux : 11.16 constructions par heure | |
10095 | i686-linux : 6.03 constructions par heure | |
10096 | aarch64-linux : 6.41 constructions par heure | |
10097 | @end example | |
bf5c74e7 | 10098 | |
15f1bff4 JL |
10099 | @cindex intégration continue, statistiques |
10100 | As you can see, it reports the fraction of all the packages for which | |
10101 | substitutes are available on the server---regardless of whether substitutes | |
10102 | are enabled, and regardless of whether this server's signing key is | |
10103 | authorized. It also reports the size of the compressed archives (``nars'') | |
10104 | provided by the server, the size the corresponding store items occupy in the | |
10105 | store (assuming deduplication is turned off), and the server's throughput. | |
10106 | The second part gives continuous integration (CI) statistics, if the server | |
10107 | supports it. In addition, using the @option{--coverage} option, | |
10108 | @command{guix weather} can list ``important'' package substitutes missing on | |
10109 | the server (see below). | |
bf5c74e7 | 10110 | |
15f1bff4 JL |
10111 | Pour cela, @command{guix weather} récupère par HTTP(S) les métadonnées |
10112 | (@dfn{narinfos}@ de tous les éléments du dépôts pertinents. Comme | |
10113 | @command{guix challenge}, il ignore les signatures de ces substituts, ce qui | |
10114 | n'est pas dangereux puisque la commande ne fait que récupérer des | |
10115 | statistiques et n'installe pas ces substituts. | |
bf5c74e7 | 10116 | |
15f1bff4 JL |
10117 | Entre autres choses, il est possible de demander des types de système |
10118 | particuliers et des ensembles de paquets particuliers. Les options | |
10119 | disponibles sont listées plus bas. | |
bf5c74e7 | 10120 | |
15f1bff4 JL |
10121 | @table @code |
10122 | @item --substitute-urls=@var{urls} | |
10123 | @var{urls} est la liste des URL des serveurs de substituts séparés par des | |
10124 | espaces. Lorsque cette option n'est pas renseignée, l'ensemble des serveurs | |
10125 | de substituts par défaut est utilisé. | |
bf5c74e7 | 10126 | |
15f1bff4 JL |
10127 | @item --system=@var{système} |
10128 | @itemx -s @var{système} | |
10129 | Effectue des requêtes pour les substituts @var{système} — p.@: ex.@: | |
10130 | @code{aarch64-linux}. Cette option peut être répétée, auquel cas | |
10131 | @command{guix weather} demandera les substituts de plusieurs types de | |
10132 | systèmes. | |
bf5c74e7 | 10133 | |
15f1bff4 JL |
10134 | @item --manifest=@var{fichier} |
10135 | Plutôt que de demander des substituts pour tous les paquets, demande | |
10136 | uniquement les paquets spécifiés dans @var{fichier}. @var{fichier} doit | |
10137 | contenir un @dfn{manifeste} comme avec l'option @code{-m} de @command{guix | |
10138 | package} (@pxref{Invoquer guix package}). | |
bf5c74e7 | 10139 | |
15f1bff4 JL |
10140 | @item --coverage[=@var{count}] |
10141 | @itemx -c [@var{count}] | |
10142 | Report on substitute coverage for packages: list packages with at least | |
10143 | @var{count} dependents (zero by default) for which substitutes are | |
10144 | unavailable. Dependent packages themselves are not listed: if @var{b} | |
10145 | depends on @var{a} and @var{a} has no substitutes, only @var{a} is listed, | |
10146 | even though @var{b} usually lacks substitutes as well. The result looks | |
10147 | like this: | |
10148 | ||
10149 | @example | |
10150 | $ guix weather --substitute-urls=https://ci.guix.fr.info -c 10 | |
10151 | computing 8,983 package derivations for x86_64-linux... | |
10152 | looking for 9,343 store items on https://ci.guix.fr.info... | |
10153 | updating substitutes from 'https://ci.guix.fr.info'... 100.0% | |
10154 | https://ci.guix.fr.info | |
10155 | 64.7% substitutes available (6,047 out of 9,343) | |
10156 | @dots{} | |
10157 | 2502 packages are missing from 'https://ci.guix.fr.info' for 'x86_64-linux', among which: | |
10158 | 58 kcoreaddons@@5.49.0 /gnu/store/@dots{}-kcoreaddons-5.49.0 | |
10159 | 46 qgpgme@@1.11.1 /gnu/store/@dots{}-qgpgme-1.11.1 | |
10160 | 37 perl-http-cookiejar@@0.008 /gnu/store/@dots{}-perl-http-cookiejar-0.008 | |
10161 | @dots{} | |
bf5c74e7 JL |
10162 | @end example |
10163 | ||
15f1bff4 JL |
10164 | What this example shows is that @code{kcoreaddons} and presumably the 58 |
10165 | packages that depend on it have no substitutes at @code{ci.guix.fr.info}; | |
10166 | likewise for @code{qgpgme} and the 46 packages that depend on it. | |
bf5c74e7 | 10167 | |
15f1bff4 JL |
10168 | If you are a Guix developer, or if you are taking care of this build farm, |
10169 | you'll probably want to have a closer look at these packages: they may | |
10170 | simply fail to build. | |
10171 | @end table | |
bf5c74e7 | 10172 | |
15f1bff4 JL |
10173 | @node Invoquer guix processes |
10174 | @section Invoquer @command{guix processes} | |
bf5c74e7 | 10175 | |
15f1bff4 JL |
10176 | La commande @command{guix processes} peut être utile pour les développeurs |
10177 | et les administrateurs systèmes, surtout sur des machines multi-utilisateurs | |
10178 | et sur les fermes de construction : elle liste les sessions actuelles (les | |
10179 | connexions au démon), ainsi que des informations sur les processus en | |
10180 | question@footnote{Les sessions distantes, lorsque @command{guix-daemon} est | |
10181 | démarré avec @option{--listen} en spécifiant un point d'entrée TCP, ne sont | |
10182 | @emph{pas} listées.}. Voici un exemple des informations qu'elle renvoie : | |
bf5c74e7 | 10183 | |
15f1bff4 JL |
10184 | @example |
10185 | $ sudo guix processes | |
10186 | SessionPID: 19002 | |
10187 | ClientPID: 19090 | |
10188 | ClientCommand: guix environment --ad-hoc python | |
bf5c74e7 | 10189 | |
15f1bff4 JL |
10190 | SessionPID: 19402 |
10191 | ClientPID: 19367 | |
10192 | ClientCommand: guix publish -u guix-publish -p 3000 -C 9 @dots{} | |
bf5c74e7 | 10193 | |
15f1bff4 JL |
10194 | SessionPID: 19444 |
10195 | ClientPID: 19419 | |
10196 | ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{} | |
10197 | LockHeld: /gnu/store/@dots{}-perl-ipc-cmd-0.96.lock | |
10198 | LockHeld: /gnu/store/@dots{}-python-six-bootstrap-1.11.0.lock | |
10199 | LockHeld: /gnu/store/@dots{}-libjpeg-turbo-2.0.0.lock | |
10200 | ChildProcess: 20495: guix offload x86_64-linux 7200 1 28800 | |
10201 | ChildProcess: 27733: guix offload x86_64-linux 7200 1 28800 | |
10202 | ChildProcess: 27793: guix offload x86_64-linux 7200 1 28800 | |
bf5c74e7 JL |
10203 | @end example |
10204 | ||
15f1bff4 JL |
10205 | Dans cet exemple, on voit que @command{guix-daemon} a trois clients directs |
10206 | : @command{guix environment}, @command{guix publish} et l'outil | |
10207 | d'intégration continue Cuirass ; leur identifiant de processus (PID) est | |
10208 | donné par le champ @code{ClientPID}. Le champ @code{SessionPID} fournit le | |
10209 | PID du sous-processus @command{guix-daemon} de cette session particulière. | |
2cf2c778 | 10210 | |
15f1bff4 JL |
10211 | Les champs @code{LockHeld} montrent quels éléments du dépôt sont |
10212 | actuellement verrouillés par cette session, ce qui correspond aux éléments | |
10213 | du dépôt qui sont en train d'être construits ou d'être substitués (le champ | |
10214 | @code{LockHeld} n'est pas montré si @command{guix processes} n'est pas lancé | |
10215 | en root). Enfin, en regardant le champ @code{ChildProcess}, on comprend que | |
10216 | ces trois constructions sont déchargées (@pxref{Réglages du délestage du démon}). | |
2cf2c778 | 10217 | |
15f1bff4 JL |
10218 | La sortie est dans le format Recutils pour qu'on puisse utiliser la commande |
10219 | @command{recsel} pour sélectionner les sessions qui nous intéressent | |
10220 | (@pxref{Selection Expressions,,, recutils, GNU recutils manual}). Par | |
10221 | exemple, la commande montre la ligne de commande et le PID du client qui | |
10222 | effectue la construction d'un paquet Perl : | |
2cf2c778 JL |
10223 | |
10224 | @example | |
15f1bff4 JL |
10225 | $ sudo guix processes | \ |
10226 | recsel -p ClientPID,ClientCommand -e 'LockHeld ~ "perl"' | |
10227 | ClientPID: 19419 | |
10228 | ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{} | |
2cf2c778 JL |
10229 | @end example |
10230 | ||
2cf2c778 | 10231 | |
bf5c74e7 | 10232 | @node Configuration système |
15f1bff4 | 10233 | @chapter Configuration système |
bf5c74e7 | 10234 | |
1d8d69c8 JL |
10235 | @cindex configuration du système |
10236 | La distribution système Guix utilise un mécanisme de configuration du | |
10237 | système cohérent. On veut dire par là que tous les aspects de la | |
10238 | configuration globale du système — comme la disponibilité des services | |
10239 | système, des fuseaux horaires, des paramètres linguistiques, des comptes | |
10240 | utilisateurs — sont déclarés à un seul endroit. Une telle | |
10241 | @dfn{configuration système} peut être @dfn{instanciée}, c'est-à-dire entrer | |
10242 | en vigueur. | |
bf5c74e7 JL |
10243 | |
10244 | @c Yes, we're talking of Puppet, Chef, & co. here. ↑ | |
1d8d69c8 JL |
10245 | L'un des avantages de placer toute la configuration du système sous le |
10246 | contrôle de Guix est de permettre les mises à jour transactionnelles du | |
10247 | système ce qui rend possible le fait de revenir en arrière à une | |
10248 | instanciation précédent du système, si quelque chose se passait mal avec le | |
10249 | nouveau (@pxref{Fonctionnalités}). Un autre avantage est de rendre facile la | |
10250 | réplication de la même configuration sur plusieurs machines différentes ou à | |
10251 | différents moments dans le temps, sans avoir à recourir à des outils | |
10252 | d'administrations supplémentaires au-dessus des outils du système. | |
10253 | ||
10254 | Cette section décrit ce mécanisme. Tout d'abord nous nous concentrons sur | |
10255 | le point de vue de l'administrateur système en expliquant comment le système | |
10256 | est configuré et instancié. Ensuite nous montrons comment ce mécanisme peut | |
10257 | être étendu, par exemple pour supporter de nouveaux services systèmes. | |
bf5c74e7 JL |
10258 | |
10259 | @menu | |
3cacfa9e LC |
10260 | * Utiliser le système de configuration:: Personnaliser votre système |
10261 | GNU@. | |
bf5c74e7 JL |
10262 | * Référence de système d'exploitation:: Détail sur la déclaration de |
10263 | système d'exploitation. | |
10264 | * Systèmes de fichiers:: Configurer les montages de systèmes de | |
10265 | fichiers. | |
10266 | * Périphériques mappés:: Gestion des périphériques de bloc. | |
10267 | * Comptes utilisateurs:: Spécifier des comptes utilisateurs. | |
10268 | * Régionalisation:: Paramétrer la langue et les conventions | |
10269 | culturelles. | |
10270 | * Services:: Spécifier les services du système. | |
10271 | * Programmes setuid:: Programmes tournant avec les privilèges root. | |
3cacfa9e | 10272 | * Certificats X.509:: Authentifier les serveurs HTTPS@. |
bf5c74e7 JL |
10273 | * Name Service Switch:: Configurer le « name service switch » de la |
10274 | libc. | |
10275 | * Disque de RAM initial:: Démarrage de Linux-Libre. | |
10276 | * Configuration du chargeur d'amorçage:: Configurer le chargeur | |
10277 | d'amorçage. | |
10278 | * Invoquer guix system:: Instantier une configuration du système. | |
15f1bff4 | 10279 | * Running Guix in a VM:: How to run Guix System in a virtual machine. |
bf5c74e7 JL |
10280 | * Définir des services:: Ajouter de nouvelles définitions de services. |
10281 | @end menu | |
10282 | ||
10283 | @node Utiliser le système de configuration | |
15f1bff4 | 10284 | @section Utiliser le système de configuration |
bf5c74e7 | 10285 | |
1d8d69c8 JL |
10286 | Le système d'exploitation est configuré en fournissant une déclaration |
10287 | @code{operating-system} dans un fichier qui peut être passé à la command | |
10288 | @command{guix system} (@pxref{Invoquer guix system}). Une configuration | |
10289 | simple, avec les services systèmes par défaut, le noyau Linux-Libre par | |
10290 | défaut, un disque de RAM initial et un chargeur d'amorçage ressemble à ceci | |
10291 | : | |
bf5c74e7 JL |
10292 | |
10293 | @findex operating-system | |
10294 | @lisp | |
10295 | @include os-config-bare-bones.texi | |
10296 | @end lisp | |
10297 | ||
1d8d69c8 JL |
10298 | Cet exemple devrait se comprendre de lui-même. Certains champs définis |
10299 | ci-dessus, comme @code{host-name} et @code{bootloader} sont obligatoires. | |
10300 | D'autres comme @code{packages} et @code{services} peuvent être omis auquel | |
10301 | cas ils ont une valeur par défaut. | |
bf5c74e7 | 10302 | |
1d8d69c8 JL |
10303 | Ci-dessous nous discutons des effets de certains des champs les plus |
10304 | importants (@pxref{Référence de système d'exploitation}, pour des détails sur tous | |
10305 | les champs disponibles) et comment @dfn{instancier} le système | |
10306 | d'exploitation avec @command{guix system}. | |
bf5c74e7 | 10307 | |
15f1bff4 | 10308 | @unnumberedsubsec Bootloader |
524756d1 | 10309 | |
adfb167f JL |
10310 | @cindex ancien système de démarrage, sur les machines Intel |
10311 | @cindex démarrage BIOS, sur les machines Intel | |
10312 | @cindex démarrage UEFI | |
10313 | @cindex démarrage EFI | |
10314 | Le champ @code{bootloader} décrit la méthode qui sera utilisée pour démarrer | |
10315 | votre système. Les machines basées sur les processeurs Intel peuvent | |
10316 | démarrer dans l'ancien mode BIOS, comme dans l'exemple au-dessus. | |
10317 | Cependant, les machines plus récentes s'appuient sur l'UEFI (@dfn{Unified | |
10318 | Extensible Firmware Interface}) pour démarrer. Dans ce cas, le champ | |
10319 | @code{bootloader} devrait contenir quelque chose comme cela : | |
524756d1 JL |
10320 | |
10321 | @example | |
10322 | (bootloader-configuration | |
10323 | (bootloader grub-efi-bootloader) | |
10324 | (target "/boot/efi")) | |
10325 | @end example | |
10326 | ||
adfb167f JL |
10327 | @xref{Configuration du chargeur d'amorçage}, pour plus d'informations sur les options de |
10328 | configuration disponibles. | |
524756d1 | 10329 | |
15f1bff4 | 10330 | @unnumberedsubsec Paquets visibles sur tout le système |
bf5c74e7 JL |
10331 | |
10332 | @vindex %base-packages | |
1d8d69c8 JL |
10333 | Le champ @code{packages} liste les paquets qui seront visibles sur tout le |
10334 | système, pour tous les comptes utilisateurs — c.-à-d.@: dans la variable | |
adfb167f JL |
10335 | d'environnement @code{PATH} de tous les utilisateurs — en plus des profils |
10336 | utilisateurs (@pxref{Invoquer guix package}). La variable | |
1d8d69c8 JL |
10337 | @var{%base-packages} fournit tous les outils qu'on pourrait attendre pour |
10338 | les taches de base de l'administrateur et de l'utilisateur — dont les GNU | |
10339 | Core Utilities, les GNU Networking Utilities, l'éditeur de texte léger GNU | |
adfb167f JL |
10340 | Zile, @command{find}, @command{grep}, etc. L'exemple au-dessus ajoute |
10341 | GNU@tie{}Screen à ces paquets, récupéré depuis le module @code{(gnu packages | |
10342 | screen)} (@pxref{Modules de paquets}). Vous pouvez utiliser la syntaxe | |
10343 | @code{(list paquet sortie)} pour ajouter une sortie spécifique d'un paquet : | |
bf5c74e7 JL |
10344 | |
10345 | @lisp | |
10346 | (use-modules (gnu packages)) | |
10347 | (use-modules (gnu packages dns)) | |
10348 | ||
10349 | (operating-system | |
10350 | ;; ... | |
10351 | (packages (cons (list bind "utils") | |
10352 | %base-packages))) | |
10353 | @end lisp | |
10354 | ||
10355 | @findex specification->package | |
1d8d69c8 JL |
10356 | Se référer aux paquets par le nom de leur variable, comme @code{bind} |
10357 | ci-dessus, a l'avantage d'être sans ambiguïté ; cela permet aussi de se | |
10358 | rendre rapidement compte de coquilles quand on a des « variables non liées | |
10359 | ». L'inconvénient est qu'on a besoin de savoir dans quel module est défini | |
10360 | le paquet, et de modifier la ligne @code{use-package-modules} en | |
10361 | conséquence. Pour éviter cela, on peut utiliser la procédure | |
10362 | @code{specification->package} du module @code{(gnu packages)}, qui renvoie | |
10363 | le meilleur paquet pour un nom donné ou un nom et une version : | |
bf5c74e7 JL |
10364 | |
10365 | @lisp | |
10366 | (use-modules (gnu packages)) | |
10367 | ||
10368 | (operating-system | |
10369 | ;; ... | |
10370 | (packages (append (map specification->package | |
10371 | '("tcpdump" "htop" "gnupg@@2.0")) | |
10372 | %base-packages))) | |
10373 | @end lisp | |
10374 | ||
15f1bff4 | 10375 | @unnumberedsubsec Services systèmes |
bf5c74e7 JL |
10376 | |
10377 | @cindex services | |
10378 | @vindex %base-services | |
15f1bff4 JL |
10379 | The @code{services} field lists @dfn{system services} to be made available |
10380 | when the system starts (@pxref{Services}). The @code{operating-system} | |
10381 | declaration above specifies that, in addition to the basic services, we want | |
10382 | the OpenSSH secure shell daemon listening on port 2222 (@pxref{Services réseau, @code{openssh-service-type}}). Under the hood, | |
10383 | @code{openssh-service-type} arranges so that @command{sshd} is started with | |
10384 | the right command-line options, possibly with supporting configuration files | |
10385 | generated as needed (@pxref{Définir des services}). | |
1d8d69c8 JL |
10386 | |
10387 | @cindex personnalisation des services | |
bf5c74e7 | 10388 | @findex modify-services |
1d8d69c8 JL |
10389 | Parfois, plutôt que d'utiliser les services de base tels-quels, on peut |
10390 | vouloir les personnaliser. Pour cela, utilisez @code{modify-services} | |
10391 | (@pxref{Référence de service, @code{modify-services}}) pour modifier la liste. | |
bf5c74e7 | 10392 | |
1d8d69c8 JL |
10393 | Par exemple, supposons que vous souhaitiez modifier @code{guix-daemon} et |
10394 | Mingetty (l'écran de connexion en console) dans la liste | |
10395 | @var{%base-services} (@pxref{Services de base, @code{%base-services}}). Pour | |
10396 | cela, vous pouvez écrire ce qui suit dans votre déclaration de système | |
10397 | d'exploitation : | |
bf5c74e7 JL |
10398 | |
10399 | @lisp | |
10400 | (define %my-services | |
1d8d69c8 | 10401 | ;; Ma propre liste de services. |
bf5c74e7 JL |
10402 | (modify-services %base-services |
10403 | (guix-service-type config => | |
10404 | (guix-configuration | |
10405 | (inherit config) | |
10406 | (use-substitutes? #f) | |
10407 | (extra-options '("--gc-keep-derivations")))) | |
10408 | (mingetty-service-type config => | |
10409 | (mingetty-configuration | |
10410 | (inherit config))))) | |
bf5c74e7 JL |
10411 | (operating-system |
10412 | ;; @dots{} | |
10413 | (services %my-services)) | |
10414 | @end lisp | |
10415 | ||
1d8d69c8 JL |
10416 | Cela modifie la configuration — c.-à-d.@: les paramètres du service — de |
10417 | l'instance de @code{guix-service-type}, et de toutes les instances de | |
10418 | @code{mingetty-service-type} dans la liste @var{%base-services}. Remarquez | |
10419 | comment on fait cela : d'abord, on s'arrange pour que la configuration de | |
10420 | départ soit liée à l'identifiant @code{config} dans @var{body} puis on écrit | |
10421 | @var{body} pour qu'il s'évalue en la configuration désirée. En particulier, | |
10422 | remarquez comment on utilise @code{inherit} pour créer une nouvelle | |
10423 | configuration qui a les même valeurs que l'ancienne configuration, avec | |
10424 | seulement quelques modifications. | |
10425 | ||
10426 | @cindex chiffrement du disque | |
10427 | La configuration pour une utilisation de « bureau » typique, avec une | |
10428 | partition racine chiffrée, le serveur d'affichage X11, GNOME et Xfce (les | |
10429 | utilisateurs peuvent choisir l'environnement de bureau sur l'écran de | |
10430 | connexion en appuyant sur @kbd{F1}), la gestion du réseau, la gestion de | |
10431 | l'énergie, et bien plus, ressemblerait à ceci : | |
bf5c74e7 JL |
10432 | |
10433 | @lisp | |
10434 | @include os-config-desktop.texi | |
10435 | @end lisp | |
10436 | ||
adfb167f JL |
10437 | Un système graphique avec un choix de gestionnaires de fenêtres légers |
10438 | plutôt que des environnement de bureaux complets ressemblerait à cela : | |
bf5c74e7 JL |
10439 | |
10440 | @lisp | |
10441 | @include os-config-lightweight-desktop.texi | |
10442 | @end lisp | |
10443 | ||
1d8d69c8 JL |
10444 | Cet exemple se réfère au système de fichier @file{/boot/efi} par son UUID, |
10445 | @code{1234-ABCD}. Remplacez cet UUID par le bon UUID de votre système, | |
10446 | renvoyé par la commande @command{blkid}. | |
bf5c74e7 | 10447 | |
1d8d69c8 JL |
10448 | @xref{Services de bureaux}, pour la liste exacte des services fournis par |
10449 | @var{%desktop-services}. @xref{Certificats X.509}, pour des informations | |
10450 | sur le paquet @code{nss-certs} utilisé ici. | |
bf5c74e7 | 10451 | |
1d8d69c8 JL |
10452 | Encore une fois, @var{%desktop-services} n'est qu'une liste d'objets |
10453 | service. Si vous voulez en supprimer des services, vous pouvez le faire | |
10454 | avec des procédures pour les listes (@pxref{SRFI-1 Filtering and | |
10455 | Partitioning,,, guile, GNU Guile Reference Manual}). Par exemple, | |
10456 | l'expression suivante renvoie une liste qui contient tous les services dans | |
10457 | @var{%desktop-services} sauf le service Avahi : | |
bf5c74e7 JL |
10458 | |
10459 | @example | |
10460 | (remove (lambda (service) | |
10461 | (eq? (service-kind service) avahi-service-type)) | |
10462 | %desktop-services) | |
10463 | @end example | |
10464 | ||
15f1bff4 | 10465 | @unnumberedsubsec Instancier le système |
1d8d69c8 JL |
10466 | |
10467 | En supposant que la déclaration @code{operating-system} est stockée dans le | |
10468 | fichier @file{my-system-config.scm}, la commande @command{guix system | |
10469 | reconfigure my-system-config.scm} instancie cette configuration et en fait | |
10470 | l'entrée par défaut dans GRUB (@pxref{Invoquer guix system}). | |
10471 | ||
10472 | Pour changer la configuration du système, on met normalement à jour ce | |
10473 | fichier et on relance @command{guix system reconfigure}. On ne devrait | |
10474 | jamais avoir à modifier de fichiers dans @file{/etc} ou à lancer des | |
10475 | commandes qui modifient l'état du système comme @command{useradd} ou | |
10476 | @command{grub-install}. En fait, vous devez les éviter parce que non | |
10477 | seulement ça annulerait vos garanties, mais ça empêcherait aussi de revenir | |
10478 | à des versions précédents du système, si vous en avez besoin. | |
10479 | ||
10480 | @cindex revenir en arrière dans la configuration du système | |
10481 | En parlant de revenir en arrière, à chaque fois que vous lancez | |
10482 | @command{guix system reconfigure}, une nouvelle @dfn{génération} du système | |
10483 | est crée — sans modifier ou supprimer les générations précédentes. Les | |
10484 | anciennes générations du système ont une entrée dans le menu du chargeur | |
10485 | d'amorçage, ce qui vous permet de démarrer dessus au cas où quelque chose se | |
10486 | serait mal passé avec la dernière génération. C'est rassurant, non ? La | |
10487 | commande @command{guix system list-generations} liste les générations du | |
10488 | système disponibles sur le disque. Il est possible de revenir à une | |
10489 | ancienne génération via les commandes @command{guix system roll-back} et | |
10490 | @command{guix system switch-generation}. | |
10491 | ||
adfb167f JL |
10492 | Bien que la commande @command{guix system reconfigure} ne modifiera pas les |
10493 | générations précédentes, vous devez faire attention lorsque votre génération | |
10494 | actuelle n'est pas la dernière (p.@: ex.@: après avoir invoqué @command{guix | |
10495 | system roll-back}), puisque l'opération pourrait remplacer une génération | |
10496 | suivante (@pxref{Invoquer guix system}). | |
bf5c74e7 | 10497 | |
15f1bff4 | 10498 | @unnumberedsubsec L'interface de programmation |
bf5c74e7 | 10499 | |
1d8d69c8 | 10500 | Au niveau Scheme, la grosse déclaration @code{operating-system} est |
15f1bff4 | 10501 | instanciée avec la procédure monadique suivante (@pxref{La monade du dépôt}) : |
bf5c74e7 | 10502 | |
adfb167f | 10503 | @deffn {Procédure monadique} operating-system-derivation os |
1d8d69c8 JL |
10504 | Renvoie une dérivation qui construit @var{os}, un objet |
10505 | @code{operating-system} (@pxref{Dérivations}). | |
bf5c74e7 | 10506 | |
1d8d69c8 JL |
10507 | La sortie de la dérivation est un répertoire qui se réfère à tous les |
10508 | paquets et d'autres fichiers supports requis pour instancier @var{os}. | |
bf5c74e7 JL |
10509 | @end deffn |
10510 | ||
15f1bff4 JL |
10511 | This procedure is provided by the @code{(gnu system)} module. Along with |
10512 | @code{(gnu services)} (@pxref{Services}), this module contains the guts of | |
10513 | Guix System. Make sure to visit it! | |
bf5c74e7 JL |
10514 | |
10515 | ||
10516 | @node Référence de système d'exploitation | |
15f1bff4 | 10517 | @section Référence de @code{operating-system} |
bf5c74e7 | 10518 | |
1d8d69c8 JL |
10519 | Cette section résume toutes les options disponibles dans les déclarations |
10520 | @code{operating-system} (@pxref{Utiliser le système de configuration}). | |
bf5c74e7 | 10521 | |
1d8d69c8 JL |
10522 | @deftp {Type de données} operating-system |
10523 | C'est le type de données représentant une configuration d'un système | |
10524 | d'exploitation. On veut dire par là toute la configuration globale du | |
10525 | système, mais pas la configuration par utilisateur (@pxref{Utiliser le système de configuration}). | |
bf5c74e7 JL |
10526 | |
10527 | @table @asis | |
1d8d69c8 JL |
10528 | @item @code{kernel} (par défaut : @var{linux-libre}) |
10529 | L'objet paquet d'un noyau de système d'exploitation à | |
10530 | utiliser@footnote{Actuellement seul le noyau Linux-libre est supporté. Dans | |
10531 | le futur, il sera possible d'utiliser GNU@tie{}Hurd.}. | |
10532 | ||
10533 | @item @code{kernel-arguments} (par défaut : @code{'()}) | |
10534 | Liste de chaînes ou de gexps représentant des arguments supplémentaires à | |
10535 | passer sur la ligne de commande du noyau — p.@: ex.@: | |
10536 | @code{("console=ttyS0")}. | |
bf5c74e7 JL |
10537 | |
10538 | @item @code{bootloader} | |
1d8d69c8 | 10539 | L'objet de configuration du chargeur d'amorçage. @xref{Configuration du chargeur d'amorçage}. |
bf5c74e7 | 10540 | |
1d8d69c8 | 10541 | @item @code{initrd-modules} (par défaut : @code{%base-initrd-modules}) |
bf5c74e7 | 10542 | @cindex initrd |
1d8d69c8 JL |
10543 | @cindex disque de RAM initial |
10544 | La liste des modules du noyau linux requis dans l'image disque de RAM | |
10545 | initiale. @xref{Disque de RAM initial}. | |
bf5c74e7 | 10546 | |
1d8d69c8 | 10547 | @item @code{initrd} (par défaut : @code{base-initrd}) |
adfb167f JL |
10548 | Une procédure qui renvoie un disque de RAM initial pour le noyau Linux. Ce |
10549 | champ est fournit pour pouvoir personnaliser son système à bas-niveau et | |
10550 | n'est que rarement utile dans le cas général. @xref{Disque de RAM initial}. | |
bf5c74e7 | 10551 | |
1d8d69c8 | 10552 | @item @code{firmware} (par défaut : @var{%base-firmware}) |
bf5c74e7 | 10553 | @cindex firmware |
1d8d69c8 JL |
10554 | Liste les paquets de microgiciels chargeables pour le noyau de système |
10555 | d'exploitation. | |
bf5c74e7 | 10556 | |
1d8d69c8 JL |
10557 | La valeur par défaut contient les microgiciels requis pour les périphériques |
10558 | WiFi Atheros et Broadcom (modules @code{ath9k} et @code{b43-open} de | |
10559 | Linux-libre, respectivement). @xref{Considérations matérielles}, pour plus | |
10560 | d'info sur les périphériques supportés. | |
bf5c74e7 JL |
10561 | |
10562 | @item @code{host-name} | |
1d8d69c8 | 10563 | Le nom d'hôte. |
bf5c74e7 JL |
10564 | |
10565 | @item @code{hosts-file} | |
1d8d69c8 JL |
10566 | @cindex fichier hosts |
10567 | Un objet simili-fichier (@pxref{G-Expressions, file-like objects}) à | |
10568 | utiliser comme @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C | |
10569 | Library Reference Manual}). La valeur par défaut est un fichier avec des | |
10570 | entrées pour @code{localhost} et @var{host-name}. | |
bf5c74e7 | 10571 | |
1d8d69c8 JL |
10572 | @item @code{mapped-devices} (par défaut : @code{'()}) |
10573 | Une liste de périphériques mappés. @xref{Périphériques mappés}. | |
bf5c74e7 JL |
10574 | |
10575 | @item @code{file-systems} | |
1d8d69c8 | 10576 | Une liste de systèmes de fichiers. @xref{Systèmes de fichiers}. |
bf5c74e7 | 10577 | |
1d8d69c8 JL |
10578 | @item @code{swap-devices} (par défaut : @code{'()}) |
10579 | @cindex espaces d'échange | |
10580 | Une liste de chaînes identifiant les périphériques ou les fichiers utilisé | |
10581 | pour « l'espace d'échange » (@pxref{Memory Concepts,,, libc, The GNU C | |
10582 | Library Reference Manual}). Par exemple, @code{'("/dev/sda3")} ou | |
10583 | @code{'("/swapfile")}. Il est possible de spécifier un fichier d'échange | |
10584 | sur un périphérique mappé, tant que le périphérique nécessaire et le système | |
10585 | de fichiers sont aussi spécifiés. @xref{Périphériques mappés} et @ref{Systèmes de fichiers}. | |
bf5c74e7 | 10586 | |
1d8d69c8 JL |
10587 | @item @code{users} (par défaut : @code{%base-user-accounts}) |
10588 | @itemx @code{groups} (par défaut : @var{%base-groups}) | |
10589 | Liste les comptes utilisateurs et les groupes. @xref{Comptes utilisateurs}. | |
bf5c74e7 | 10590 | |
1d8d69c8 JL |
10591 | Si la liste @code{users} n'a pas de compte lié à l'UID@tie{}0, un compte « |
10592 | root » avec l'UID@tie{}0 est automatiquement ajouté. | |
bf5c74e7 | 10593 | |
1d8d69c8 JL |
10594 | @item @code{skeletons} (par défaut : @code{(default-skeletons)}) |
10595 | Une liste de couples composés d'un nom de fichier cible et d'un objet | |
10596 | simili-fichier (@pxref{G-Expressions, file-like objects}). Ce sont les | |
10597 | fichiers squelettes qui seront ajoutés au répertoire personnel des comptes | |
10598 | utilisateurs nouvellement créés. | |
bf5c74e7 | 10599 | |
1d8d69c8 | 10600 | Par exemple, un valeur valide ressemblerait à cela : |
bf5c74e7 JL |
10601 | |
10602 | @example | |
10603 | `((".bashrc" ,(plain-file "bashrc" "echo Hello\n")) | |
10604 | (".guile" ,(plain-file "guile" | |
10605 | "(use-modules (ice-9 readline)) | |
10606 | (activate-readline)"))) | |
10607 | @end example | |
10608 | ||
1d8d69c8 JL |
10609 | @item @code{issue} (par défaut : @var{%default-issue}) |
10610 | Une chaîne qui dénote le contenu du fichier @file{/etc/issue} qui est | |
10611 | affiché lorsqu'un utilisateur se connecte sur la console. | |
bf5c74e7 | 10612 | |
1d8d69c8 JL |
10613 | @item @code{packages} (par défaut : @var{%base-packages}) |
10614 | L'ensemble des paquets installés dans le profil global, qui est accessible à | |
10615 | partir de @file{/run/current-system/profile}. | |
bf5c74e7 | 10616 | |
1d8d69c8 JL |
10617 | L'ensemble par défaut contient les utilitaires de base et c'est une bonne |
10618 | pratique d'installer les utilitaires non essentiels dans les profils | |
10619 | utilisateurs (@pxref{Invoquer guix package}). | |
bf5c74e7 JL |
10620 | |
10621 | @item @code{timezone} | |
1d8d69c8 | 10622 | Une chaîne identifiant un fuseau horaire — p.@: ex.@: @code{"Europe/Paris"}. |
bf5c74e7 | 10623 | |
1d8d69c8 JL |
10624 | Vous pouvez lancer la commande @command{tzselect} pour trouver le fuseau |
10625 | horaire correspondant à votre région. Si vous choisissez un nom de fuseau | |
10626 | horaire invalide, @command{guix system} échouera. | |
bf5c74e7 | 10627 | |
1d8d69c8 JL |
10628 | @item @code{locale} (par défaut : @code{"en_US.utf8"}) |
10629 | Le nom du paramètre régional par défaut (@pxref{Locale Names,,, libc, The | |
10630 | GNU C Library Reference Manual}). @xref{Régionalisation}, pour plus d'informations. | |
bf5c74e7 | 10631 | |
1d8d69c8 JL |
10632 | @item @code{locale-definitions} (par défaut : @var{%default-locale-definitions}) |
10633 | La liste des définitions de locales à compiler et qui devraient être | |
10634 | utilisées à l'exécution. @xref{Régionalisation}. | |
bf5c74e7 | 10635 | |
1d8d69c8 JL |
10636 | @item @code{locale-libcs} (par défaut : @code{(list @var{glibc})}) |
10637 | La liste des paquets GNU@tie{}libc dont les données des paramètres | |
10638 | linguistiques sont utilisées pour construire les définitions des paramètres | |
10639 | linguistiques. @xref{Régionalisation}, pour des considérations sur la compatibilité | |
10640 | qui justifient cette option. | |
bf5c74e7 | 10641 | |
1d8d69c8 JL |
10642 | @item @code{name-service-switch} (par défaut : @var{%default-nss}) |
10643 | La configuration de NSS de la libc (name service switch) — un objet | |
10644 | @code{<name-service-switch>}. @xref{Name Service Switch}, pour des détails. | |
bf5c74e7 | 10645 | |
1d8d69c8 JL |
10646 | @item @code{services} (par défaut : @var{%base-services}) |
10647 | Une liste d'objets services qui dénotent les services du système. | |
10648 | @xref{Services}. | |
bf5c74e7 | 10649 | |
1d8d69c8 | 10650 | @item @code{pam-services} (par défaut : @code{(base-pam-services)}) |
bf5c74e7 JL |
10651 | @cindex PAM |
10652 | @cindex pluggable authentication modules | |
10653 | @c FIXME: Add xref to PAM services section. | |
1d8d69c8 | 10654 | Services PAM (@dfn{pluggable authentication module}) Linux. |
bf5c74e7 | 10655 | |
1d8d69c8 JL |
10656 | @item @code{setuid-programs} (par défaut : @var{%setuid-programs}) |
10657 | Liste de G-expressions qui s'évaluent en chaînes de caractères qui dénotent | |
10658 | les programmes setuid. @xref{Programmes setuid}. | |
bf5c74e7 | 10659 | |
1d8d69c8 JL |
10660 | @item @code{sudoers-file} (par défaut : @var{%sudoers-specification}) |
10661 | @cindex fichier sudoers | |
10662 | Le contenu du fichier @file{/etc/sudoers} comme un objet simili-fichier | |
10663 | (@pxref{G-Expressions, @code{local-file} et @code{plain-file}}). | |
bf5c74e7 | 10664 | |
1d8d69c8 JL |
10665 | Ce fichier spécifier quels utilisateurs peuvent utiliser la commande |
10666 | @command{sudo}, ce qu'ils ont le droit de faire, et quels privilèges ils | |
10667 | peuvent gagner. La valeur par défaut est que seul @code{root} et les | |
10668 | membres du groupe @code{wheel} peuvent utiliser @code{sudo}. | |
bf5c74e7 JL |
10669 | |
10670 | @end table | |
10671 | @end deftp | |
10672 | ||
10673 | @node Systèmes de fichiers | |
15f1bff4 | 10674 | @section Systèmes de fichiers |
bf5c74e7 | 10675 | |
1d8d69c8 JL |
10676 | La liste des systèmes de fichiers à monter est spécifiée dans le champ |
10677 | @code{file-systems} de la déclaration de système d'exploitation | |
10678 | (@pxref{Utiliser le système de configuration}). Chaque système de fichier est | |
10679 | déclaré avec la forme @code{file-system}, comme ceci : | |
bf5c74e7 JL |
10680 | |
10681 | @example | |
10682 | (file-system | |
10683 | (mount-point "/home") | |
10684 | (device "/dev/sda3") | |
10685 | (type "ext4")) | |
10686 | @end example | |
10687 | ||
1d8d69c8 JL |
10688 | Comme d'habitude, certains de ces champs sont obligatoire — comme le montre |
10689 | l'exemple au-dessus — alors que d'autres peuvent être omis. Ils sont | |
10690 | décrits plus bas. | |
bf5c74e7 | 10691 | |
1d8d69c8 JL |
10692 | @deftp {Type de données} file-system |
10693 | Les objets de ce type représentent des systèmes de fichiers à monter. Ils | |
10694 | contiennent les membres suivants : | |
bf5c74e7 JL |
10695 | |
10696 | @table @asis | |
10697 | @item @code{type} | |
1d8d69c8 JL |
10698 | C'est une chaîne de caractères spécifiant le type du système de fichier — |
10699 | p.@: ex.@: @code{"ext4"}. | |
bf5c74e7 JL |
10700 | |
10701 | @item @code{mount-point} | |
1d8d69c8 | 10702 | Désigne l'emplacement où le système de fichier sera monté. |
bf5c74e7 JL |
10703 | |
10704 | @item @code{device} | |
1d8d69c8 JL |
10705 | Ce champ nomme le système de fichier « source ». il peut être l'une de ces |
10706 | trois choses : une étiquette de système de fichiers, un UUID de système de | |
10707 | fichier ou le nom d'un nœud dans @file{/dev}. Les étiquettes et les UUID | |
10708 | offrent une manière de se référer à des systèmes de fichiers sans avoir à | |
10709 | coder en dur le nom de périphérique@footnote{Remarquez que, s'il est tentant | |
10710 | d'utiliser @file{/dev/disk/by-uuid} et autres chemins similaires pour | |
10711 | obtenir le même résultat, ce n'est pas recommandé : ces nœuds de | |
10712 | périphériques spéciaux sont créés par le démon udev et peuvent ne pas être | |
10713 | disponibles au moment de monter le périphérique.}. | |
3cacfa9e LC |
10714 | |
10715 | @findex file-system-label | |
1d8d69c8 JL |
10716 | Les étiquettes de systèmes de fichiers sont crées avec la procédure |
10717 | @code{file-system-label}, les UUID avec @code{uuid} et les nœuds de | |
10718 | @file{/dev} sont de simples chaînes de caractères. Voici un exemple d'un | |
10719 | système de fichiers référencé par son étiquette, donnée par la commande | |
10720 | @command{e2label} : | |
bf5c74e7 | 10721 | |
3cacfa9e LC |
10722 | @example |
10723 | (file-system | |
10724 | (mount-point "/home") | |
10725 | (type "ext4") | |
10726 | (device (file-system-label "my-home"))) | |
10727 | @end example | |
bf5c74e7 | 10728 | |
3cacfa9e | 10729 | @findex uuid |
1d8d69c8 JL |
10730 | Les UUID sont convertis à partir de leur représentation en chaîne de |
10731 | caractères (montrée par la command @command{tune2fs -l}) en utilisant la | |
10732 | forme @code{uuid}@footnote{La forme @code{uuid} s'attend à des UUID sur 16 | |
10733 | octets définis dans la @uref{https://tools.ietf.org/html/rfc4122, | |
10734 | RFC@tie{}4122}. C'est la forme des UUID utilisées par la famille de | |
10735 | systèmes de fichiers ext2 et d'autres, mais ce n'est pas le même type d'UUID | |
10736 | que ceux qui se trouvent sur les systèmes de fichiers FAT par exemple}, | |
10737 | comme ceci : | |
bf5c74e7 JL |
10738 | |
10739 | @example | |
10740 | (file-system | |
10741 | (mount-point "/home") | |
10742 | (type "ext4") | |
bf5c74e7 JL |
10743 | (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))) |
10744 | @end example | |
10745 | ||
1d8d69c8 JL |
10746 | Lorsque la source d'un système de fichiers est un périphérique mappé |
10747 | (@pxref{Périphériques mappés}), sont champ @code{device} @emph{doit} se référer au | |
10748 | nom du périphérique mappé — p.@: ex.@: @file{"/dev/mapper/root-partition"}. | |
10749 | Cela est requis pour que le système sache que monter ce système de fichier | |
10750 | dépend de la présence du périphérique mappé correspondant. | |
10751 | ||
10752 | @item @code{flags} (par défaut : @code{'()}) | |
10753 | C'est une liste de symboles qui dénotent des drapeaux de montage. Les | |
10754 | drapeaux reconnus sont @code{read-only}, @code{bind-mount}, @code{no-dev} | |
10755 | (interdit l'accès aux fichiers spéciaux), @code{no-suid} (ignore les bits | |
10756 | setuid et setgid) et @code{no-exec} (interdit l'exécution de programmes). | |
10757 | ||
10758 | @item @code{options} (par défaut : @code{#f}) | |
10759 | C'est soit @code{#f} soit une chaîne de caractères dénotant des options de | |
10760 | montage. | |
10761 | ||
10762 | @item @code{mount?} (par défaut : @code{#t}) | |
10763 | Cette valeur indique s'il faut monter automatiquement le système de fichier | |
10764 | au démarrage du système. Lorsque la valeur est @code{#f}, le système de | |
10765 | fichier reçoit une entrée dans @file{/etc/fstab} (lue par la commande | |
10766 | @command{mount}) mais n'est pas monté automatiquement. | |
10767 | ||
10768 | @item @code{needed-for-boot?} (par défaut : @code{#f}) | |
10769 | Cette valeur booléenne indique si le système de fichier est nécessaire au | |
10770 | démarrage. Si c'est vrai alors le système de fichier est monté au | |
10771 | chargement du disque de RAM initial. C'est toujours le cas par exemple du | |
10772 | système de fichiers racine. | |
10773 | ||
10774 | @item @code{check?} (par défaut : @code{#t}) | |
10775 | Cette valeur booléenne indique si le système de fichier doit être vérifié | |
10776 | avant de le monter. | |
10777 | ||
10778 | @item @code{create-mount-point?} (par défaut : @code{#f}) | |
10779 | Lorsque cette valeur est vraie, le point de montage est créé s'il n'existe | |
10780 | pas déjà. | |
10781 | ||
10782 | @item @code{dependencies} (par défaut : @code{'()}) | |
10783 | C'est une liste d'objets @code{<file-system>} ou @code{<mapped-device>} qui | |
10784 | représentent les systèmes de fichiers qui doivent être montés ou les | |
10785 | périphériques mappés qui doivent être ouverts avant (et monté ou fermés | |
10786 | après) celui-ci. | |
10787 | ||
10788 | Par exemple, considérons une hiérarchie de montage : @file{/sys/fs/cgroup} | |
10789 | est une dépendance de @file{/sys/fs/cgroup/cpu} et | |
10790 | @file{/sys/fs/cgroup/memory}. | |
10791 | ||
10792 | Un autre exemple est un système de fichier qui dépend d'un périphérique | |
10793 | mappé, par exemple pour une partition chiffrée (@pxref{Périphériques mappés}). | |
bf5c74e7 JL |
10794 | @end table |
10795 | @end deftp | |
10796 | ||
1d8d69c8 JL |
10797 | Le module @code{(gnu system file-systems)} exporte les variables utiles |
10798 | suivantes. | |
bf5c74e7 | 10799 | |
1d8d69c8 JL |
10800 | @defvr {Variable Scheme} %base-file-systems |
10801 | Ce sont les systèmes de fichiers essentiels qui sont requis sur les systèmes | |
10802 | normaux, comme @var{%pseudo-terminal-file-system} et @var{%immutable-store} | |
10803 | (voir plus bas). Les déclarations de systèmes d'exploitation devraient au | |
10804 | moins les contenir. | |
bf5c74e7 JL |
10805 | @end defvr |
10806 | ||
1d8d69c8 JL |
10807 | @defvr {Variable Scheme} %pseudo-terminal-file-system |
10808 | C'est le système de fichier monté sur @file{/dev/pts}. Il supporte les | |
10809 | @dfn{pseudo-terminaux} créés via @code{openpty} et les fonctions similaires | |
10810 | (@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference Manual}). Les | |
10811 | pseudo-terminaux sont utilisés par les émulateurs de terminaux comme | |
10812 | @command{xterm}. | |
bf5c74e7 JL |
10813 | @end defvr |
10814 | ||
1d8d69c8 JL |
10815 | @defvr {Variable Scheme} %shared-memory-file-system |
10816 | Ce système de fichier est monté dans @file{/dev/shm} et est utilisé pour le | |
10817 | partage de mémoire entre processus (@pxref{Memory-mapped I/O, | |
10818 | @code{shm_open},, libc, The GNU C Library Reference Manual}). | |
bf5c74e7 JL |
10819 | @end defvr |
10820 | ||
1d8d69c8 JL |
10821 | @defvr {Variable Scheme} %immutable-store |
10822 | Ce système de fichiers effectue un « montage lié » en lecture-seule de | |
10823 | @file{/gnu/store}, ce qui en fait un répertoire en lecture-seule pour tous | |
10824 | les utilisateurs dont @code{root}. Cela évite que des logiciels qui | |
10825 | tournent en @code{root} ou des administrateurs systèmes ne modifient | |
10826 | accidentellement le dépôt. | |
bf5c74e7 | 10827 | |
1d8d69c8 JL |
10828 | Le démon lui-même est toujours capable d'écrire dans le dépôt : il est |
10829 | remonté en lecture-écriture dans son propre « espace de nom ». | |
bf5c74e7 JL |
10830 | @end defvr |
10831 | ||
1d8d69c8 JL |
10832 | @defvr {Variable Scheme} %binary-format-file-system |
10833 | Le système de fichiers @code{binfmt_misc}, qui permet de gérer n'importe | |
10834 | quel type de fichiers exécutables à déléguer en espace utilisateur. Cela | |
10835 | demande que le module du noyau @code{binfmt.ko} soit chargé. | |
bf5c74e7 JL |
10836 | @end defvr |
10837 | ||
1d8d69c8 JL |
10838 | @defvr {Variable Scheme} %fuse-control-file-system |
10839 | Le système de fichiers @code{fusectl}, qui permet à des utilisateurs non | |
10840 | privilégiés de monter et de démonter des systèmes de fichiers FUSE en espace | |
10841 | utilisateur. Cela requiert que le module du noyau @code{fuse.ko} soit | |
10842 | chargé. | |
bf5c74e7 JL |
10843 | @end defvr |
10844 | ||
10845 | @node Périphériques mappés | |
15f1bff4 | 10846 | @section Périphériques mappés |
bf5c74e7 | 10847 | |
1d8d69c8 JL |
10848 | @cindex mappage de périphériques |
10849 | @cindex périphériques mappés | |
10850 | Le noyau Linux a une notion de @dfn{mappage de périphériques} : un | |
10851 | périphérique bloc, comme une partition sur un disque dur, peut être | |
10852 | @dfn{mappé} sur un autre périphérique, typiquement dans @code{/dev/mapper}, | |
10853 | avec des calculs supplémentaires sur les données qui naviguent entre les | |
10854 | deux@footnote{Remarquez que le Hurd ne fait pas de différence entre le | |
10855 | concept de « périphérique mappé » et celle d'un système de fichiers : les | |
10856 | deux correspondent à la @emph{traduction} des opérations d'entrée-sortie | |
10857 | faites sur un fichier en des opérations sur ce qui le contient. Ainsi, le | |
10858 | Hurd implémente les périphériques mappés, comme les systèmes de fichiers, | |
10859 | avec le mécanisme des @dfn{traducteurs} générique (@pxref{Translators,,, | |
10860 | hurd, The GNU Hurd Reference Manual}).}. Un exemple typique est le mappage | |
10861 | de périphériques chiffrés : toutes les écritures sont sur le périphérique | |
10862 | mappé sont chiffrées, toutes les lectures déchiffrées, de manière | |
10863 | transparente. Guix étend cette notion en considérant que tout périphérique | |
10864 | ou ensemble de périphériques qui sont @dfn{transformés} d'une certaine | |
10865 | manière créent un nouveau périphérique ; par exemple, les périphériques RAID | |
10866 | sont obtenus en @dfn{assemblant} plusieurs autres périphériques, comme des | |
10867 | disque ou des partitions, en un nouveau périphérique en tant qu'unique | |
10868 | partition. Un autre exemple, qui n'est pas encore disponible, sont les | |
10869 | volumes logiques LVM. | |
10870 | ||
10871 | Les périphériques mappés sont déclarés avec la forme @code{mapped-device}, | |
10872 | définie comme suit ; par exemple, voir ci-dessous. | |
10873 | ||
10874 | @deftp {Type de données} mapped-device | |
10875 | Les objets de ce type représentent des mappages de périphériques qui seront | |
10876 | effectués au démarrage du système. | |
bf5c74e7 JL |
10877 | |
10878 | @table @code | |
10879 | @item source | |
1d8d69c8 JL |
10880 | C'est soit une chaîne qui spécifie le nom d'un périphérique bloc à mapper, |
10881 | comme @code{"/dev/sda3"}, soit une liste de plusieurs périphériques à | |
10882 | assembler pour en créer un nouveau. | |
bf5c74e7 JL |
10883 | |
10884 | @item target | |
1d8d69c8 JL |
10885 | Cette chaîne spécifie le nom du périphérique mappé qui en résulte. Pour les |
10886 | mappeurs noyaux comme les périphériques chiffrés de type | |
10887 | @code{luks-device-mapping}, spécifier @code{"ma-partition"} crée le | |
10888 | périphérique @code{"/dev/mapper/ma-partition"}. Pour les périphériques RAID | |
10889 | de type @code{raid-device-mapping}, il faut donner le nom complet comme | |
10890 | @code{"/dev/md0"}. | |
bf5c74e7 JL |
10891 | |
10892 | @item type | |
1d8d69c8 JL |
10893 | Ce doit être un objets @code{mapped-device-kind}, qui spécifie comment |
10894 | @var{source} est mappés sur @var{target}. | |
bf5c74e7 JL |
10895 | @end table |
10896 | @end deftp | |
10897 | ||
1d8d69c8 JL |
10898 | @defvr {Variable Scheme} luks-device-mapping |
10899 | Cela définie les périphériques blocs chiffrés en LUKS avec | |
10900 | @command{cryptsetup} du paquet du même nom. Elle s'appuie sur le module du | |
10901 | noyau Linux @code{dm-crypt}. | |
bf5c74e7 JL |
10902 | @end defvr |
10903 | ||
1d8d69c8 JL |
10904 | @defvr {Variable Scheme} raid-device-mapping |
10905 | Cela définie un périphérique RAID qui est assemblé avec la commande | |
10906 | @code{mdadm} du paquet du même nom. Elle nécessite un module noyau Linux | |
10907 | approprié pour le niveau RAID chargé, comme @code{raid456} pour RAID-4, | |
10908 | RAID-5 et RAID-6 ou @code{raid10} pour RAID-10. | |
bf5c74e7 JL |
10909 | @end defvr |
10910 | ||
1d8d69c8 | 10911 | @cindex chiffrement du disque |
bf5c74e7 | 10912 | @cindex LUKS |
1d8d69c8 JL |
10913 | L'exemple suivant spécifie un mappage de @file{/dev/sda3} vers |
10914 | @file{/dev/mapper/home} avec LUKS — | |
10915 | @url{https://gitlab.com/cryptsetup/cryptsetup,Linux Unified Key Setup}, un | |
10916 | mécanisme standard pour chiffrer les disques. Le périphérique | |
10917 | @file{/dev/mapper/home} peut ensuite être utilisé comme @code{device} d'une | |
10918 | déclaration @code{file-system} (@pxref{Systèmes de fichiers}). | |
bf5c74e7 JL |
10919 | |
10920 | @example | |
10921 | (mapped-device | |
10922 | (source "/dev/sda3") | |
10923 | (target "home") | |
10924 | (type luks-device-mapping)) | |
10925 | @end example | |
10926 | ||
1d8d69c8 JL |
10927 | Autrement, pour devenir indépendant du numéro de périphérique, on peut |
10928 | obtenir l'UUID LUKS (@dfn{l'identifiant unique}) du périphérique source avec | |
10929 | une commande comme : | |
bf5c74e7 JL |
10930 | |
10931 | @example | |
10932 | cryptsetup luksUUID /dev/sda3 | |
10933 | @end example | |
10934 | ||
1d8d69c8 | 10935 | et l'utiliser ainsi : |
bf5c74e7 JL |
10936 | |
10937 | @example | |
10938 | (mapped-device | |
10939 | (source (uuid "cb67fc72-0d54-4c88-9d4b-b225f30b0f44")) | |
10940 | (target "home") | |
10941 | (type luks-device-mapping)) | |
10942 | @end example | |
10943 | ||
1d8d69c8 JL |
10944 | @cindex chiffrement de l'espace d'échange |
10945 | Il est aussi désirable de chiffrer l'espace d'échange, puisque l'espace | |
10946 | d'échange peut contenir des données sensibles. Une manière de faire cela | |
10947 | est d'utiliser un fichier d'échange dans un système de fichiers sur un | |
10948 | périphérique mappé avec un chiffrement LUKS. De cette manière, le fichier | |
10949 | d'échange est chiffré parce que tout le périphérique est chiffré. | |
10950 | @xref{Préparer l'installation,,Disk Partitioning}, pour un exemple. | |
bf5c74e7 | 10951 | |
1d8d69c8 JL |
10952 | Un périphérique RAID formé des partitions @file{/dev/sda1} et |
10953 | @file{/dev/sdb1} peut être déclaré ainsi : | |
bf5c74e7 JL |
10954 | |
10955 | @example | |
10956 | (mapped-device | |
10957 | (source (list "/dev/sda1" "/dev/sdb1")) | |
10958 | (target "/dev/md0") | |
10959 | (type raid-device-mapping)) | |
10960 | @end example | |
10961 | ||
1d8d69c8 JL |
10962 | Le périphérique @file{/dev/md0} peut ensuite être utilisé comme |
10963 | @code{device} d'une déclaration @code{file-system} (@pxref{Systèmes de fichiers}). | |
10964 | Remarquez que le niveau de RAID n'a pas besoin d'être donné ; il est choisi | |
10965 | pendant la création initiale du périphérique RAID et est ensuite déterminé | |
10966 | automatiquement. | |
bf5c74e7 JL |
10967 | |
10968 | ||
10969 | @node Comptes utilisateurs | |
15f1bff4 | 10970 | @section Comptes utilisateurs |
bf5c74e7 | 10971 | |
1d8d69c8 JL |
10972 | @cindex utilisateurs |
10973 | @cindex comptes | |
10974 | @cindex comptes utilisateurs | |
10975 | Les comptes utilisateurs et les groupes sont gérés entièrement par la | |
10976 | déclaration @code{operating-system}. Ils sont spécifiés avec les formes | |
10977 | @code{user-account} et @code{user-group} : | |
bf5c74e7 JL |
10978 | |
10979 | @example | |
10980 | (user-account | |
10981 | (name "alice") | |
10982 | (group "users") | |
1d8d69c8 JL |
10983 | (supplementary-groups '("wheel" ;permet d'utiliser sudo, etc. |
10984 | "audio" ;carte son | |
10985 | "video" ;périphériques réseaux comme les webcams | |
10986 | "cdrom")) ;le bon vieux CD-ROM | |
bf5c74e7 JL |
10987 | (comment "Bob's sister") |
10988 | (home-directory "/home/alice")) | |
10989 | @end example | |
10990 | ||
1d8d69c8 JL |
10991 | Lors du démarrage ou à la fin de @command{guix system reconfigure}, le |
10992 | système s'assure que seuls les comptes utilisateurs et les groupes spécifiés | |
10993 | dans la déclaration @code{operating-system} existent, et avec les propriétés | |
10994 | spécifiées. Ainsi, les modifications ou les créations de comptes ou de | |
10995 | groupes effectuées directement en invoquant des commandes comme | |
10996 | @command{useradd} sont perdue à la reconfiguration ou au redémarrage. Cela | |
10997 | permet de s'assurer que le système reste exactement tel que déclaré. | |
bf5c74e7 | 10998 | |
1d8d69c8 JL |
10999 | @deftp {Type de données} user-account |
11000 | Les objets de se type représentent les comptes utilisateurs. Les membres | |
11001 | suivants peuvent être spécifiés : | |
bf5c74e7 JL |
11002 | |
11003 | @table @asis | |
11004 | @item @code{name} | |
1d8d69c8 | 11005 | Le nom du compte utilisateur. |
bf5c74e7 JL |
11006 | |
11007 | @item @code{group} | |
1d8d69c8 JL |
11008 | @cindex groupes |
11009 | C'est le nom (une chaîne) ou un identifiant (un nombre) du groupe | |
11010 | utilisateur auquel ce compte appartient. | |
bf5c74e7 | 11011 | |
1d8d69c8 JL |
11012 | @item @code{supplementary-groups} (par défaut : @code{'()}) |
11013 | Éventuellement, cela peut être définie comme une liste de noms de groupes | |
11014 | auxquels ce compte appartient. | |
bf5c74e7 | 11015 | |
1d8d69c8 JL |
11016 | @item @code{uid} (par défaut : @code{#f}) |
11017 | C'est l'ID utilisateur de ce compte (un nombre) ou @code{#f}. Dans ce | |
11018 | dernier cas, le nombre est choisi automatiquement par le système à la | |
11019 | création du compte. | |
bf5c74e7 | 11020 | |
1d8d69c8 JL |
11021 | @item @code{comment} (par défaut : @code{""}) |
11022 | Un commentaire à propos du compte, comme le nom complet de l'utilisateur. | |
bf5c74e7 JL |
11023 | |
11024 | @item @code{home-directory} | |
1d8d69c8 | 11025 | C'est le nom du répertoire personnel du compte. |
bf5c74e7 | 11026 | |
1d8d69c8 JL |
11027 | @item @code{create-home-directory?} (par défaut : @code{#t}) |
11028 | Indique si le répertoire personnel du compte devrait être créé s'il n'existe | |
11029 | pas déjà. | |
bf5c74e7 | 11030 | |
1d8d69c8 JL |
11031 | @item @code{shell} (par défaut : Bash) |
11032 | C'est une G-expression qui dénote un nom de fichier d'un programme utilisé | |
11033 | comme shell (@pxref{G-Expressions}). | |
bf5c74e7 | 11034 | |
1d8d69c8 JL |
11035 | @item @code{system?} (par défaut : @code{#f}) |
11036 | C'est une valeur booléenne qui indique si le compte est un compte « système | |
11037 | ». Les comptes systèmes sont parfois traités à part ; par exemple, les | |
11038 | gestionnaires de connexion graphiques ne les liste pas. | |
bf5c74e7 JL |
11039 | |
11040 | @anchor{user-account-password} | |
1d8d69c8 JL |
11041 | @item @code{password} (par défaut : @code{#f}) |
11042 | Vous laisseriez normalement ce champ à @code{#f} et initialiseriez les mots | |
11043 | de passe utilisateurs en tant que @code{root} avec la commande | |
11044 | @command{passwd}, puis laisseriez l'utilisateur le changer avec | |
11045 | @command{passwd}. Les mots de passes définis avec @command{passwd} sont | |
11046 | bien sûr préservés après redémarrage et reconfiguration. | |
11047 | ||
11048 | Si vous voulez @emph{vraiment} définir un mot de passe pour un compte, alors | |
11049 | ce champ doit contenir le mot de passe chiffré, comme une chaîne de | |
11050 | caractère. @xref{crypt,,, libc, The GNU C Library Reference Manual}, pour | |
11051 | plus d'information sur le chiffrement des mots de passe et | |
11052 | @ref{Encryption,,, guile, GNU Guile Reference Manual}, pour des informations | |
11053 | sur la procédure @code{crypt} de Guile. | |
bf5c74e7 JL |
11054 | |
11055 | @end table | |
11056 | @end deftp | |
11057 | ||
1d8d69c8 JL |
11058 | @cindex groupes |
11059 | Les déclarations de groupes sont encore plus simple : | |
bf5c74e7 JL |
11060 | |
11061 | @example | |
11062 | (user-group (name "students")) | |
11063 | @end example | |
11064 | ||
1d8d69c8 JL |
11065 | @deftp {Type de données} user-group |
11066 | C'est le type pour, hé bien, les comptes utilisateurs. Il n'y a que | |
11067 | quelques champs : | |
bf5c74e7 JL |
11068 | |
11069 | @table @asis | |
11070 | @item @code{name} | |
1d8d69c8 | 11071 | Le nom du groupe. |
bf5c74e7 | 11072 | |
1d8d69c8 JL |
11073 | @item @code{id} (par défaut : @code{#f}) |
11074 | L'identifiant du groupe (un nombre). S'il est @code{#f}, un nouveau nombre | |
11075 | est alloué automatiquement lorsque le groupe est créé. | |
bf5c74e7 | 11076 | |
1d8d69c8 JL |
11077 | @item @code{system?} (par défaut : @code{#f}) |
11078 | Cette valeur booléenne indique si le groupe est un groupe « système ». les | |
11079 | groupes systèmes ont un numéro d'ID bas. | |
bf5c74e7 | 11080 | |
1d8d69c8 JL |
11081 | @item @code{password} (par défaut : @code{#f}) |
11082 | Quoi, les groupes utilisateurs peuvent avoir des mots de passe ? On dirait | |
11083 | bien. À moins que la valeur ne soit @code{#f}, ce champ spécifie le mot de | |
11084 | passe du groupe. | |
bf5c74e7 JL |
11085 | |
11086 | @end table | |
11087 | @end deftp | |
11088 | ||
1d8d69c8 JL |
11089 | Par simplicité, une variable liste les groupes utilisateurs de base auxquels |
11090 | on pourrait s'attendre : | |
bf5c74e7 | 11091 | |
1d8d69c8 JL |
11092 | @defvr {Variable Scheme} %base-groups |
11093 | C'est la liste des groupes utilisateur de base que les utilisateurs et les | |
11094 | paquets s'attendent à trouver sur le système. Cela comprend des groupes | |
11095 | comme « root », « wheel » et « users », ainsi que des groupes utilisés pour | |
11096 | contrôler l'accès à certains périphériques, comme « audio », « disk » et « | |
11097 | cdrom ». | |
bf5c74e7 JL |
11098 | @end defvr |
11099 | ||
1d8d69c8 JL |
11100 | @defvr {Variable Scheme} %base-user-accounts |
11101 | C'est la liste des compte du système de base que les programmes peuvent | |
11102 | s'attendre à trouver sur un système GNU/Linux, comme le compte « nobody ». | |
bf5c74e7 | 11103 | |
1d8d69c8 JL |
11104 | Remarquez que le compte « root » n'est pas défini ici. C'est un cas |
11105 | particulier et il est automatiquement ajouté qu'il soit spécifié ou non. | |
bf5c74e7 JL |
11106 | @end defvr |
11107 | ||
11108 | @node Régionalisation | |
15f1bff4 | 11109 | @section Régionalisation |
bf5c74e7 | 11110 | |
1d8d69c8 JL |
11111 | @cindex paramètres linguistiques |
11112 | Un @dfn{paramètre linguistique} définie les conventions culturelles d'une | |
11113 | langue et d'une région particulières (@pxref{Régionalisation,,, libc, The GNU C | |
11114 | Library Reference Manual}). Chaque paramètre linguistique a un nom de la | |
11115 | forme @code{@var{langue}_@var{territoire}.@var{jeudecaractères}} — p.@: | |
11116 | ex.@: @code{fr_LU.utf8} désigne le paramètre linguistique pour le français, | |
11117 | avec les conventions culturelles du Luxembourg, en utilisant l'encodage | |
11118 | UTF-8. | |
11119 | ||
11120 | @cindex définition des paramètres linguistiques | |
11121 | Normalement, vous voudrez spécifier les paramètres linguistiques par défaut | |
11122 | pour la machine en utilisant le champ @code{locale} de la déclaration | |
11123 | @code{operating-system} (@pxref{Référence de système d'exploitation, @code{locale}}). | |
11124 | ||
11125 | Les paramètres régionaux choisis sont automatiquement ajoutés aux | |
11126 | définitions des @dfn{paramètres régionaux} connues par le système au besoin, | |
11127 | avec le jeu de caractères inféré à partir de son nom, p.@: ex.@: | |
11128 | @code{bo_CN.utf8} supposera qu'il faut utiliser le jeu de caractères | |
11129 | @code{UTF-8}. Des définitions supplémentaires peuvent être spécifiées dans | |
11130 | le champ @code{locale-definitions} de @code{operating-system} — c'est utile | |
11131 | par exemple si le jeu de caractères n'a pas été inféré à partir du nom. | |
11132 | L'ensemble par défaut de définitions comprend certains paramètres | |
11133 | linguistiques parmi les plus utilisés, mais pas toutes les variantes | |
11134 | disponibles, pour gagner de la place. | |
11135 | ||
11136 | Par exemple, pour ajouter les paramètres pour le frison septentrional en | |
11137 | Allemagne, la valeur de ce champ serait : | |
bf5c74e7 JL |
11138 | |
11139 | @example | |
11140 | (cons (locale-definition | |
11141 | (name "fy_DE.utf8") (source "fy_DE")) | |
11142 | %default-locale-definitions) | |
11143 | @end example | |
11144 | ||
1d8d69c8 JL |
11145 | De me, pour gagner de la place, on peut vouloir lister dans |
11146 | @code{locale-definitions} seulement les paramètres qui sont vraiment | |
11147 | utilisés, comme dans : | |
bf5c74e7 JL |
11148 | |
11149 | @example | |
11150 | (list (locale-definition | |
11151 | (name "ja_JP.eucjp") (source "ja_JP") | |
11152 | (charset "EUC-JP"))) | |
11153 | @end example | |
11154 | ||
11155 | @vindex LOCPATH | |
1d8d69c8 JL |
11156 | Les définitions des paramètres linguistiques compilées sont disponibles dans |
11157 | @file{/run/current-system/locale/X.Y}, où @code{X.Y} est la version de la | |
11158 | libc, ce qui est l'emplacement par défaut où la GNU@tie{}libc fournie par | |
11159 | Guix cherche les données de régionalisation. Cet emplacement peut être | |
11160 | modifié avec la variable d'environnement @code{LOCPATH} | |
11161 | (@pxref{locales-and-locpath, @code{LOCPATH} and locale packages}). | |
bf5c74e7 | 11162 | |
1d8d69c8 JL |
11163 | La forme @code{locale-definition} est fournie par le module @code{(gnu |
11164 | system locale)}. Des détails sont disponibles plus bas. | |
bf5c74e7 | 11165 | |
1d8d69c8 JL |
11166 | @deftp {Type de données} locale-definition |
11167 | C'est le type de données d'une définition de paramètres linguistiques. | |
bf5c74e7 JL |
11168 | |
11169 | @table @asis | |
11170 | ||
11171 | @item @code{name} | |
1d8d69c8 JL |
11172 | Le nom du paramètre linguistique. @xref{Locale Names,,, libc, The GNU C |
11173 | Library Reference Manual}, pour en savoir plus sur les noms de paramètres | |
11174 | linguistiques. | |
bf5c74e7 JL |
11175 | |
11176 | @item @code{source} | |
1d8d69c8 JL |
11177 | Le nom de la source pour ce paramètre linguistique. C'est typiquement la |
11178 | partie @code{@var{langue}_@var{territoire}} du nom du paramètre. | |
bf5c74e7 | 11179 | |
1d8d69c8 JL |
11180 | @item @code{charset} (par défaut : @code{"UTF-8"}) |
11181 | Le « jeu de caractères » d'un paramètre linguistique, | |
11182 | @uref{http://www.iana.org/assignments/character-sets, défini par l'IANA}. | |
bf5c74e7 JL |
11183 | |
11184 | @end table | |
11185 | @end deftp | |
11186 | ||
1d8d69c8 JL |
11187 | @defvr {Variable Scheme} %default-locale-definitions |
11188 | Une liste des paramètres linguistiques UTF-8 couramment utilisés, utilisée | |
11189 | comme valeur par défaut pour le champ @code{locale-definitions} des | |
11190 | déclarations @code{operating-system}. | |
11191 | ||
11192 | @cindex nom de paramètre linguistique | |
11193 | @cindex jeu de caractère normalisé dans les noms de paramètres linguistiques | |
11194 | Ces définitions de paramètres linguistiques utilisent le @dfn{jeu de | |
11195 | caractère normalisé} pour la partie qui suit le point dans le nom | |
11196 | (@pxref{Using gettextized software, normalized codeset,, libc, The GNU C | |
11197 | Library Reference Manual}). Donc par exemple il y a @code{uk_UA.utf8} mais | |
11198 | @emph{pas}, disons, @code{uk_UA.UTF-8}. | |
bf5c74e7 JL |
11199 | @end defvr |
11200 | ||
15f1bff4 | 11201 | @subsection Considérations sur la compatibilité des données linguistiques |
bf5c74e7 | 11202 | |
1d8d69c8 JL |
11203 | @cindex incompatibilité, des données linguistiques |
11204 | Les déclaration @code{operating-system} fournissent un champ | |
11205 | @code{locale-libcs} pour spécifier les paquets GNU@tie{}libc à utiliser pour | |
11206 | compiler les déclarations de paramètres linguistiques | |
11207 | (@pxref{Référence de système d'exploitation}). « Pourquoi je devrais m'en soucier ? | |
11208 | », vous demandez-vous sûrement. Hé bien il se trouve que le format binaire | |
11209 | des données linguistique est parfois incompatible d'une version de la libc à | |
11210 | une autre. | |
bf5c74e7 JL |
11211 | |
11212 | @c See <https://sourceware.org/ml/libc-alpha/2015-09/msg00575.html> | |
11213 | @c and <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>. | |
1d8d69c8 JL |
11214 | Par exemple, un programme lié à la libc version 2.21 est incapable de lire |
11215 | les données linguistiques produites par la libc 2.22 ; pire, ce programme | |
11216 | @emph{plante} plutôt que d'ignorer les données linguistiques | |
11217 | incompatibles@footnote{Les version 2.23 et supérieures de la GNU@tie{}libc | |
11218 | sauteront simplement les données linguistiques incompatibles, ce qui est | |
11219 | déjà mieux.}. De même, un programme lié à la libc 2.22 peut lire la plupart | |
11220 | mais pas toutes les données linguistiques de la libc 2.21 (spécifiquement | |
11221 | les données @code{LC_COLLATE} sont incompatibles) ; donc les appels à | |
11222 | @code{setlocale} peuvent échouer, mais les programmes ne plantent pas. | |
11223 | ||
15f1bff4 JL |
11224 | The ``problem'' with Guix is that users have a lot of freedom: They can |
11225 | choose whether and when to upgrade software in their profiles, and might be | |
11226 | using a libc version different from the one the system administrator used to | |
11227 | build the system-wide locale data. | |
1d8d69c8 JL |
11228 | |
11229 | Heureusement, les utilisateurs non privilégiés peuvent aussi installer leur | |
11230 | propres données linguistiques et définir @var{GUIX_LOCPATH} comme il le faut | |
11231 | (@pxref{locales-and-locpath, @code{GUIX_LOCPATH} and locale packages}). | |
11232 | ||
11233 | Cependant, c'est encore mieux si les données linguistiques du système dans | |
11234 | @file{/run/current-system/locale} étaient construites avec les versions de | |
11235 | la libc utilisées sur le système, pour que tous les programmes puissent y | |
11236 | accéder — c'est surtout crucial sur un système multi-utilisateurs. Pour | |
11237 | cela, l'administrateur peut spécifier plusieurs paquets de la libc dans le | |
11238 | champ @code{locale-libcs} de @code{operating-system} : | |
bf5c74e7 JL |
11239 | |
11240 | @example | |
11241 | (use-package-modules base) | |
11242 | ||
11243 | (operating-system | |
11244 | ;; @dots{} | |
11245 | (locale-libcs (list glibc-2.21 (canonical-package glibc)))) | |
11246 | @end example | |
11247 | ||
1d8d69c8 JL |
11248 | cet exemple créera un système contenant les définitions des paramètres |
11249 | linguistiques pour la libc 2.21 et pour la version actuelle de la libc dans | |
bf5c74e7 JL |
11250 | @file{/run/current-system/locale}. |
11251 | ||
11252 | ||
11253 | @node Services | |
15f1bff4 | 11254 | @section Services |
bf5c74e7 | 11255 | |
1d8d69c8 JL |
11256 | @cindex services systèmes |
11257 | Une part importante de la préparation d'une déclaration | |
11258 | @code{operating-system} est la liste des @dfn{services systèmes} et de leur | |
11259 | configuration (@pxref{Utiliser le système de configuration}). Les services | |
11260 | systèmes sont typiquement des démons lancés au démarrage ou d'autres actions | |
11261 | requises à ce moment-là — p.@: ex.@: configurer les accès réseaux. | |
11262 | ||
15f1bff4 JL |
11263 | Guix has a broad definition of ``service'' (@pxref{Composition de services}), |
11264 | but many services are managed by the GNU@tie{}Shepherd (@pxref{Services Shepherd}). On a running system, the @command{herd} command allows you to | |
11265 | list the available services, show their status, start and stop them, or do | |
11266 | other specific operations (@pxref{Jump Start,,, shepherd, The GNU Shepherd | |
11267 | Manual}). For example: | |
bf5c74e7 JL |
11268 | |
11269 | @example | |
11270 | # herd status | |
11271 | @end example | |
11272 | ||
1d8d69c8 JL |
11273 | La commande ci-dessus, lancée en @code{root}, liste les services |
11274 | actuellement définis. La commande @command{herd doc} montre un synopsis du | |
adfb167f | 11275 | service donné et ses actions associées : |
bf5c74e7 JL |
11276 | |
11277 | @example | |
11278 | # herd doc nscd | |
11279 | Run libc's name service cache daemon (nscd). | |
adfb167f JL |
11280 | |
11281 | # herd doc nscd action invalidate | |
11282 | invalidate: Invalidate the given cache--e.g., 'hosts' for host name lookups. | |
bf5c74e7 JL |
11283 | @end example |
11284 | ||
1d8d69c8 JL |
11285 | Les sous-commandes @command{start}, @command{stop} et @command{restart} ont |
11286 | l'effet auquel on s'attend. Par exemple, les commande suivantes stoppent le | |
11287 | service nscd et redémarrent le serveur d'affichage Xorg : | |
bf5c74e7 JL |
11288 | |
11289 | @example | |
11290 | # herd stop nscd | |
11291 | Service nscd has been stopped. | |
11292 | # herd restart xorg-server | |
11293 | Service xorg-server has been stopped. | |
11294 | Service xorg-server has been started. | |
11295 | @end example | |
11296 | ||
1d8d69c8 JL |
11297 | Les sections suivantes documentent les services disponibles, en commençant |
11298 | par les services de base qui peuvent être utilisés avec une déclaration | |
11299 | @code{operating-system}. | |
bf5c74e7 JL |
11300 | |
11301 | @menu | |
11302 | * Services de base:: Services systèmes essentiels. | |
3cacfa9e LC |
11303 | * Exécution de tâches planifiées:: Le service mcron. |
11304 | * Rotation des journaux:: Le service rottlog. | |
15f1bff4 | 11305 | * Services réseau:: Paramètres réseau, démon SSH, etc. |
3cacfa9e LC |
11306 | * Système de fenêtrage X:: Affichage graphique. |
11307 | * Services d'impression:: Support pour les imprimantes locales et | |
11308 | distantes. | |
11309 | * Services de bureaux:: D-Bus et les services de bureaux. | |
2cf2c778 | 11310 | * Services de son:: Services ALSA et Pulseaudio. |
3cacfa9e LC |
11311 | * Services de bases de données:: Bases SQL, clefs-valeurs, etc. |
11312 | * Services de courriels:: IMAP, POP3, SMTP, et tout ça. | |
11313 | * Services de messagerie:: Services de messagerie. | |
11314 | * Services de téléphonie:: Services de téléphonie. | |
11315 | * Services de surveillance:: Services de surveillance. | |
11316 | * Services Kerberos:: Services Kerberos. | |
11317 | * Services web:: Services web. | |
11318 | * Services de certificats:: Certificats TLS via Let's Encrypt. | |
11319 | * Services DNS:: Démons DNS@. | |
11320 | * Services VPN:: Démons VPN | |
11321 | * Système de fichiers en réseau:: Services liés à NFS@. | |
11322 | * Intégration continue:: Le service Cuirass. | |
adfb167f JL |
11323 | * Services de gestion de l'énergie:: Augmenter la durée de vie de la |
11324 | batterie. | |
3cacfa9e LC |
11325 | * Services audio:: MPD@. |
11326 | * Services de virtualisation:: Services de virtualisation. | |
11327 | * Services de contrôle de version:: Fournit des accès distants à des | |
11328 | dépôts Git. | |
11329 | * Services de jeu:: Serveurs de jeu. | |
11330 | * Services divers:: D'autres services. | |
bf5c74e7 JL |
11331 | @end menu |
11332 | ||
11333 | @node Services de base | |
15f1bff4 | 11334 | @subsection Services de base |
bf5c74e7 | 11335 | |
1d8d69c8 | 11336 | Le module @code{(gnu services base)} fournit des définitions de services |
15f1bff4 | 11337 | pour les services de base qu'on peut attendre du système. Les services |
1d8d69c8 | 11338 | exportés par ce module sort listés ci-dessous. |
bf5c74e7 | 11339 | |
1d8d69c8 JL |
11340 | @defvr {Variable Scheme} %base-services |
11341 | 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 | |
11342 | attendre du système : un service de connexion (mingetty) sur chaque tty, | |
11343 | syslogd, le démon de cache de noms de la libc (nscd), le gestionnaire de | |
11344 | périphériques udev, et plus. | |
bf5c74e7 | 11345 | |
1d8d69c8 JL |
11346 | C'est la valeur par défaut du champ @code{services} des déclarations |
11347 | @code{operating-system}. Habituellement, lors de la personnalisation d'un | |
11348 | système, vous voudrez ajouter des services à ceux de @var{%base-services}, | |
11349 | comme ceci : | |
bf5c74e7 JL |
11350 | |
11351 | @example | |
15f1bff4 JL |
11352 | (append (list (service avahi-service-type) |
11353 | (service openssh-service-type)) | |
11354 | %base-services) | |
bf5c74e7 JL |
11355 | @end example |
11356 | @end defvr | |
11357 | ||
1d8d69c8 JL |
11358 | @defvr {Variable Scheme} special-files-service-type |
11359 | C'est le service qui met en place des « fichiers spéciaux » comme | |
11360 | @file{/bin/sh} ; une instance de ce service fait partie de | |
11361 | @code{%base-services}. | |
bf5c74e7 | 11362 | |
1d8d69c8 JL |
11363 | La valeur associée avec les services @code{special-files-service-type} doit |
11364 | être une liste de couples dont le premier élément est le « fichier spécial » | |
11365 | et le deuxième sa cible. Par défaut il s'agit de : | |
bf5c74e7 JL |
11366 | |
11367 | @cindex @file{/bin/sh} | |
1d8d69c8 | 11368 | @cindex @file{sh}, dans @file{/bin} |
bf5c74e7 JL |
11369 | @example |
11370 | `(("/bin/sh" ,(file-append @var{bash} "/bin/sh"))) | |
11371 | @end example | |
11372 | ||
11373 | @cindex @file{/usr/bin/env} | |
1d8d69c8 JL |
11374 | @cindex @file{env}, dans @file{/usr/bin} |
11375 | Si vous voulez ajouter, disons, @code{/usr/bin/env} à votre système, vous | |
11376 | pouvez changer cela en : | |
bf5c74e7 JL |
11377 | |
11378 | @example | |
11379 | `(("/bin/sh" ,(file-append @var{bash} "/bin/sh")) | |
11380 | ("/usr/bin/env" ,(file-append @var{coreutils} "/bin/env"))) | |
11381 | @end example | |
11382 | ||
1d8d69c8 JL |
11383 | Comme il fait parti de @code{%base-services}, vous pouvez utiliser |
11384 | @code{modify-services} pour personnaliser l'ensemble des fichiers spéciaux | |
11385 | (@pxref{Référence de service, @code{modify-services}}). Mais une manière plus | |
11386 | simple d'ajouter un fichier spécial est d'utiliser la procédure | |
11387 | @code{extra-special-file} (voir plus bas). | |
bf5c74e7 JL |
11388 | @end defvr |
11389 | ||
1d8d69c8 JL |
11390 | @deffn {Procédure Scheme} extra-special-file @var{file} @var{target} |
11391 | Utilise @var{target} comme « fichier spécial » @var{file}. | |
bf5c74e7 | 11392 | |
1d8d69c8 JL |
11393 | Par exemple, ajouter l'une des lignes suivantes au champ @code{services} de |
11394 | votre déclaration de système d'exploitation crée un lien symbolique | |
11395 | @file{/usr/bin/env} : | |
bf5c74e7 JL |
11396 | |
11397 | @example | |
11398 | (extra-special-file "/usr/bin/env" | |
11399 | (file-append coreutils "/bin/env")) | |
11400 | @end example | |
11401 | @end deffn | |
11402 | ||
1d8d69c8 JL |
11403 | @deffn {Procédure Scheme} host-name-service @var{name} |
11404 | Renvoie un service qui paramètre le nom d'hôte à @var{name}. | |
bf5c74e7 JL |
11405 | @end deffn |
11406 | ||
1d8d69c8 JL |
11407 | @deffn {Procédure Scheme} login-service @var{config} |
11408 | Renvoie un service pour lancer login en suivant @var{config}, un objet | |
11409 | @code{<login-configuration>} qui spécifie le message du jour, entre autres | |
11410 | choses. | |
bf5c74e7 JL |
11411 | @end deffn |
11412 | ||
1d8d69c8 JL |
11413 | @deftp {Type de données} login-configuration |
11414 | Le type de données qui représente la configuration de login. | |
bf5c74e7 JL |
11415 | |
11416 | @table @asis | |
11417 | ||
11418 | @item @code{motd} | |
1d8d69c8 JL |
11419 | @cindex message du jour |
11420 | Un objet simili-fichier contenant le « message du jour ». | |
bf5c74e7 | 11421 | |
1d8d69c8 JL |
11422 | @item @code{allow-empty-passwords?} (par défaut : @code{#t}) |
11423 | Permet les mots de passes vides par défaut pour que les utilisateurs | |
11424 | puissent se connecter au compte « root » la première fois après sa création. | |
bf5c74e7 JL |
11425 | |
11426 | @end table | |
11427 | @end deftp | |
11428 | ||
1d8d69c8 JL |
11429 | @deffn {Procédure Scheme} mingetty-service @var{config} |
11430 | Renvoie un service qui lance mingetty en suivant @var{config}, un objet | |
11431 | @code{<mingetty-configuration>}, qui spécifie le tty à lancer entre autres | |
11432 | choses. | |
bf5c74e7 JL |
11433 | @end deffn |
11434 | ||
1d8d69c8 JL |
11435 | @deftp {Type de données} mingetty-configuration |
11436 | C'est le type de données représentant la configuration de Mingetty, qui | |
11437 | fournit l'implémentation par défaut de l'écran de connexion des consoles | |
11438 | virtuelles. | |
bf5c74e7 JL |
11439 | |
11440 | @table @asis | |
11441 | ||
11442 | @item @code{tty} | |
1d8d69c8 JL |
11443 | Le nom de la console sur laquelle tourne ce Mingetty, p.@: ex.@: |
11444 | @code{"tty1"}. | |
bf5c74e7 | 11445 | |
1d8d69c8 JL |
11446 | @item @code{auto-login} (par défaut : @code{#f}) |
11447 | Lorsque la valeur est vraie, ce champ doit être une chaîne de caractère | |
11448 | dénotant le nom d'utilisateur pour lequel le système se connecte | |
11449 | automatiquement. Lorsque la valeur est @code{#f}, il faut entrer un nom | |
11450 | d'utilisateur et un mot de passe pour se connecter. | |
bf5c74e7 | 11451 | |
1d8d69c8 JL |
11452 | @item @code{login-program} (par défaut : @code{#f}) |
11453 | Ce doit être soit @code{#f}, auquel cas le programme de connexion par défaut | |
11454 | est utilisé (@command{login} de la suite d'outils Shadow), soit une gexp | |
11455 | dénotant le nom d'un programme de connexion. | |
bf5c74e7 | 11456 | |
1d8d69c8 JL |
11457 | @item @code{login-pause?} (par défaut : @code{#f}) |
11458 | Lorsque la valeur est @code{#t} en plus de @var{auto-login}, l'utilisateur | |
11459 | devrai appuyer sur une touche avant que le shell de connexion ne soit lancé. | |
bf5c74e7 | 11460 | |
1d8d69c8 JL |
11461 | @item @code{mingetty} (par défaut : @var{mingetty}) |
11462 | Le paquet Mingetty à utiliser. | |
bf5c74e7 JL |
11463 | |
11464 | @end table | |
11465 | @end deftp | |
11466 | ||
1d8d69c8 JL |
11467 | @deffn {Procédure Scheme} agetty-service @var{config} |
11468 | Renvoie un service pour lancer agetty en suivant @var{config}, un objet | |
11469 | @code{<agetty-configuration>}, qui spécifie le tty à lancer, entre autres | |
11470 | choses. | |
bf5c74e7 JL |
11471 | @end deffn |
11472 | ||
1d8d69c8 JL |
11473 | @deftp {Type de données} agetty-configuration |
11474 | Ce type de données représente la configuration de agetty, qui implémente | |
11475 | l'écran de connexion des consoles virtuelles et series. Voir la page de | |
11476 | manuel de @code{agetty(8)} pour plus d'informations. | |
bf5c74e7 JL |
11477 | |
11478 | @table @asis | |
11479 | ||
11480 | @item @code{tty} | |
1d8d69c8 JL |
11481 | Le nom de la console sur laquelle agetty est lancé p.@: ex.@: |
11482 | @code{"ttyS0"}. Cet argument est facultatif, il aura par défaut une valeur | |
11483 | raisonnable d'un port série utilisé par le noyau Linux. | |
11484 | ||
11485 | Pour cela, s'il y a une valeur pour une option @code{agetty.tty} sur la | |
11486 | ligne de commande du noyau, agetty extraira le nom du périphérique du port | |
11487 | série à partir de cette option. | |
11488 | ||
11489 | Sinon et s'il y a une valeur pour une option @code{console} avec un tty sur | |
11490 | la ligne de commande du noyau Linux, agetty extraira le nom du périphérique | |
11491 | du port série et l'utilisera. | |
11492 | ||
adfb167f JL |
11493 | In both cases, agetty will leave the other serial device settings (baud rate |
11494 | etc.)@: alone---in the hope that Linux pinned them to the correct values. | |
1d8d69c8 JL |
11495 | |
11496 | @item @code{baud-rate} (par défaut : @code{#f}) | |
11497 | Une chaîne qui contient une liste d'un ou plusieurs taux de baud séparés par | |
11498 | des virgules, en ordre décroissant. | |
11499 | ||
11500 | @item @code{term} (par défaut : @code{#f}) | |
11501 | Une chaîne contenant la valeur utilisée pour la variable d'environnement | |
11502 | @code{TERM}. | |
11503 | ||
11504 | @item @code{eight-bits?} (par défaut : @code{#f}) | |
11505 | Lorsque la valeur est @code{#t}, le tty est supposé être propre pour les | |
11506 | caractères 8-bit et la détection de parité est désactivée. | |
11507 | ||
11508 | @item @code{auto-login} (par défaut : @code{#f}) | |
11509 | Lorsqu'un nom de connexion est passé comme une chaîne de caractères, | |
11510 | l'utilisateur spécifié sera automatiquement connecté sans demande du nom | |
11511 | d'utilisateur ni du mot de passe. | |
11512 | ||
11513 | @item @code{no-reset?} (par défaut : @code{#f}) | |
11514 | Lorsque la valeur est @code{#t}, ne vide pas les cflags du terminal (modes | |
11515 | de contrôle). | |
11516 | ||
11517 | @item @code{host} (par défaut : @code{#f}) | |
11518 | Cette option accepte une chaîne contenant le « login_host », qui sera écrit | |
11519 | dans le fichier @file{/var/run/utmpx}. | |
11520 | ||
11521 | @item @code{remote?} (par défaut : @code{#f}) | |
11522 | Lorsque la valeur est @code{#t} en plus de @var{host}, cette option ajoutera | |
11523 | une option fakehost @code{-r} à la ligne de commande du programme de | |
11524 | connexion spécifié dans @var{login-program}. | |
11525 | ||
11526 | @item @code{flow-control?} (par défaut : @code{#f}) | |
11527 | Lorsque la valeur est @code{#t}, active le contrôle de flux matériel | |
11528 | (RTS/CTS). | |
11529 | ||
11530 | @item @code{no-issue?} (par défaut : @code{#f}) | |
11531 | Lorsque la valeur est @code{#t}, le contenu du fichier @file{/etc/issue} ne | |
11532 | sera pas affiché avant de présenter l'écran de connexion. | |
11533 | ||
11534 | @item @code{init-string} (par défaut : @code{#f}) | |
11535 | Cette option accepte une chaîne de caractères qui sera envoyée au tty ou au | |
11536 | modem avant toute autre chose. Elle peut être utilisée pour initialiser un | |
11537 | modem. | |
11538 | ||
11539 | @item @code{no-clear?} (par défaut : @code{#f}) | |
11540 | Lorsque la valeur est @code{#t}, agetty ne nettoiera pas l'écran avant de | |
11541 | montrer l'écran de connexion. | |
11542 | ||
11543 | @item @code{login-program} (par défaut : (file-append shadow "/bin/login")) | |
11544 | Cette option doit être soit une gexp dénotant le nom d'un programme de | |
11545 | connexion, soit non définie, auquel cas la valeur par défaut est la commande | |
11546 | @command{login} de la suite d'outils Shadow. | |
11547 | ||
11548 | @item @code{local-line} (par défaut : @code{#f}) | |
11549 | Contrôle le drapeau CLOCAL. Cette option accepte l'un des trois symboles | |
11550 | comme argument, @code{'auto}, @code{'always} ou @code{'never}. Si la valeur | |
11551 | est @code{#f}, la valeur par défaut choisie par agetty est @code{'auto}… | |
11552 | ||
11553 | @item @code{extract-baud?} (par défaut : @code{#f}) | |
11554 | Lorsque la valeur est @code{#t}, dit à agetty d'essayer d'extraire la taux | |
11555 | de baud depuis les messages de statut produits par certains modems. | |
11556 | ||
11557 | @item @code{skip-login?} (par défaut : @code{#f}) | |
11558 | Lorsque la valeur est @code{#t}, ne demande par de nom d'utilisateur. Elle | |
11559 | peut être utilisée avec le champ @var{login-program} pour utiliser des | |
11560 | systèmes de connexion non standards. | |
11561 | ||
11562 | @item @code{no-newline?} (par défaut : @code{#f}) | |
11563 | Lorsque la valeur est @code{#t}, n'affiche pas de retour à la ligne avant | |
11564 | d'afficher le fichier @file{/etc/issue}. | |
bf5c74e7 JL |
11565 | |
11566 | @c Is this dangerous only when used with login-program, or always? | |
1d8d69c8 JL |
11567 | @item @code{login-options} (par défaut : @code{#f}) |
11568 | Cette option accepte une chaîne de caractères contenant des options passées | |
11569 | au programme login. Lorsqu'utilisé avec @var{login-program}, soyez | |
11570 | conscient qu'un utilisateur malicieux pourrait essayer de rentrer un nom | |
11571 | d'utilisateur contenant des options incluses qui pourraient être analysées | |
11572 | par le programme de connexion. | |
11573 | ||
11574 | @item @code{login-pause} (par défaut : @code{#f}) | |
11575 | Lorsque la valeur est @code{#t}, attend qu'une touche soit appuyée avant de | |
11576 | montrer l'écran de connexion. Cela peut être utilisé avec @var{auto-login} | |
11577 | pour sauvegarder de la mémoire en lançant les shells de manière fainéante. | |
11578 | ||
11579 | @item @code{chroot} (par défaut : @code{#f}) | |
11580 | Change de racine dans le répertoire donné. Cette option accepte un chemin | |
11581 | en tant que chaîne de caractères. | |
11582 | ||
11583 | @item @code{hangup?} (par défaut : @code{#f}) | |
11584 | Utilise l'appel système Linux @code{vhangup} pour raccrocher virtuellement | |
11585 | le terminal spécifié. | |
11586 | ||
11587 | @item @code{keep-baud?} (par défaut : @code{#f}) | |
11588 | Lorsque la valeur est @code{#t}, essaye de garder le taux de baud existant. | |
11589 | Les taux de baud de @var{baud-rate} sont utilisés lorsque agetty reçoit un | |
11590 | caractères @key{BREAK}. | |
11591 | ||
11592 | @item @code{timeout} (par défaut : @code{#f}) | |
11593 | Lorsque la valeur est un nombre entier, termine la session si aucun nom | |
11594 | d'utilisateur n'a pu être lu après @var{timeout} secondes. | |
11595 | ||
11596 | @item @code{detect-case?} (par défaut : @code{#f}) | |
11597 | Lorsque la valeur est @code{#t}, active le support pour la détection des | |
11598 | terminaux en majuscule uniquement. Ce paramètre détectera qu'un nom | |
11599 | d'utilisateur qui ne contient que des majuscules indique un terminal en | |
11600 | majuscule et effectuera des conversion de majuscule en minuscule. Remarquez | |
11601 | que cela ne fonctionne pas avec les caractères unicode. | |
11602 | ||
11603 | @item @code{wait-cr?} (par défaut : @code{#f}) | |
11604 | Lorsque la valeur est @code{#t}, attend que l'utilisateur ou le modem envoie | |
11605 | un retour chariot ou un saut de ligne avant d'afficher @file{/etc/issue} ou | |
11606 | l'écran de connexion. Cela est typiquement utilisé avec l'option | |
11607 | @var{init-string}. | |
11608 | ||
11609 | @item @code{no-hints?} (par défaut : @code{#f}) | |
11610 | Lorsque la valeur est @code{#t}, n'affiche par les astuces à propos des | |
11611 | verrouillages numériques, majuscule et défilement. | |
11612 | ||
11613 | @item @code{no-hostname?} (par défaut : @code{#f}) | |
11614 | Par défaut, le nom d'hôte est affiché. Lorsque la valeur est @code{#t}, | |
11615 | aucun nom d'hôte ne sera affiché. | |
11616 | ||
11617 | @item @code{long-hostname?} (par défaut : @code{#f}) | |
11618 | Par défaut, le nom d'hôte n'est affiché qu'après le premier point. Lorsque | |
11619 | la valeur est @code{#t}, le nom d'hôte pleinement qualifié renvoyé par | |
11620 | @code{gethostname} ou @code{getaddrinfo} sera affiché. | |
11621 | ||
11622 | @item @code{erase-characters} (par défaut : @code{#f}) | |
11623 | Cette option accepte une chaîne de caractères de caractères supplémentaires | |
11624 | qui devraient être interprétés comme des effacements lorsque l'utilisateur | |
11625 | les tape dans leur nom d'utilisateur. | |
11626 | ||
11627 | @item @code{kill-characters} (par défaut : @code{#f}) | |
11628 | Cette option accepte une chaîne de caractères qui devrait être interprété | |
11629 | comme signifiant « ignore tous les caractères précédent » (aussi appelé un | |
11630 | caractère « kill ») lorsque l'utilisateur tape son nom d'utilisateur. | |
11631 | ||
11632 | @item @code{chdir} (par défaut : @code{#f}) | |
11633 | Cette option accepte, en tant que chaîne de caractères, un chemin vers un | |
11634 | répertoire dans lequel se trouvera la commande avant la connexion. | |
11635 | ||
11636 | @item @code{delay} (par défaut : @code{#f}) | |
11637 | Cette option accepte, en tant qu'entier, le nombre de secondes à attendre | |
11638 | avant d'ouvrir le tty et afficher l'écran de connexion. | |
11639 | ||
11640 | @item @code{nice} (par défaut : @code{#f}) | |
11641 | Cette option accepte, en tant qu'entier, la valeur « nice » avec laquelle le | |
11642 | programme @command{login} tourne. | |
11643 | ||
11644 | @item @code{extra-options} (par défaut : @code{'()}) | |
11645 | Cette option fournie un « mécanisme de secours » pour que l'utilisateur | |
11646 | puisse ajouter des arguments de la ligne de commande arbitraires à | |
11647 | @command{agetty} comme une liste de chaînes de caractères. | |
bf5c74e7 JL |
11648 | |
11649 | @end table | |
11650 | @end deftp | |
11651 | ||
1d8d69c8 JL |
11652 | @deffn {Procédure Scheme} kmscon-service-type @var{config} |
11653 | Renvoie un service qui lance | |
11654 | @uref{https://www.freedesktop.org/wiki/Software/kmscon,kmscon} d'après | |
11655 | @var{config}, un objet @code{<kmscon-configuration>}, qui spécifie le tty | |
11656 | sur lequel tourner, entre autres choses. | |
bf5c74e7 JL |
11657 | @end deffn |
11658 | ||
1d8d69c8 JL |
11659 | @deftp {Type de données} kmscon-configuration |
11660 | C'est le type de données représentant la configuration de Kscon, qui | |
11661 | implémente l'écran de chargement de la console virtuelle. | |
bf5c74e7 JL |
11662 | |
11663 | @table @asis | |
11664 | ||
11665 | @item @code{virtual-terminal} | |
1d8d69c8 | 11666 | Le nom de la console sur laquelle Kmscon tourne, p.@: ex.@: @code{"tty1"}. |
bf5c74e7 | 11667 | |
1d8d69c8 JL |
11668 | @item @code{login-program} (par défaut : @code{#~(string-append #$shadow "/bin/login")}) |
11669 | Une gexp qui dénote le nom d'un programme de connexion. le programme de | |
11670 | connexion par défaut est @command{login} de la suite d'outils Shadow. | |
bf5c74e7 | 11671 | |
1d8d69c8 JL |
11672 | @item @code{login-arguments} (par défaut : @code{'("-p")}) |
11673 | Une liste d'arguments à passer à @command{login}. | |
bf5c74e7 | 11674 | |
adfb167f JL |
11675 | @item @code{auto-login} (par défaut : @code{#f}) |
11676 | Lorsqu'un nom de connexion est passé comme une chaîne de caractères, | |
11677 | l'utilisateur spécifié sera automatiquement connecté sans demande du nom | |
11678 | d'utilisateur ni du mot de passe. | |
11679 | ||
1d8d69c8 JL |
11680 | @item @code{hardware-acceleration?} (par défaut : #f) |
11681 | S'il faut utiliser l'accélération matérielle. | |
bf5c74e7 | 11682 | |
1d8d69c8 JL |
11683 | @item @code{kmscon} (par défaut : @var{kmscon}) |
11684 | Le paquet Kmscon à utiliser. | |
bf5c74e7 JL |
11685 | |
11686 | @end table | |
11687 | @end deftp | |
11688 | ||
11689 | @cindex name service cache daemon | |
11690 | @cindex nscd | |
1d8d69c8 JL |
11691 | @deffn {Procédure Scheme} nscd-service [@var{config}] [#:glibc glibc] @ |
11692 | [#:name-services '()] | |
11693 | Renvoie un service qui lance le démon de cache de services de noms de la | |
11694 | libc (nscd) avec la @var{config} donnée — un objet | |
11695 | @code{<nscd-configuration>}. @xref{Name Service Switch}, pour un exemple. | |
adfb167f JL |
11696 | |
11697 | Parce que c'est pratique, le service du Shepherd pour nscd fournit les | |
11698 | actions suivantes : | |
11699 | ||
11700 | @table @code | |
11701 | @item invalidate | |
11702 | @cindex invalidation du cache, nscd | |
11703 | @cindex nscd, invalidation du cache | |
15f1bff4 | 11704 | Cela invalide le cache donné. Par exemple, en laçant : |
adfb167f JL |
11705 | |
11706 | @example | |
11707 | herd invalidate nscd hosts | |
11708 | @end example | |
11709 | ||
11710 | @noindent | |
11711 | on invalide le cache de noms d'hôtes de nscd. | |
11712 | ||
11713 | @item statistiques | |
11714 | Lancer @command{herd statistics nscd} affiche des informations sur | |
11715 | l'utilisation de nscd et des caches. | |
11716 | @end table | |
11717 | ||
bf5c74e7 JL |
11718 | @end deffn |
11719 | ||
1d8d69c8 JL |
11720 | @defvr {Variable Scheme} %nscd-default-configuration |
11721 | C'est la valeur par défaut de @code{<nscd-configuration>} (voir plus bas) | |
11722 | utilisée par @code{nscd-service}. Elle utilise les caches définis par | |
11723 | @var{%nscd-default-caches} ; voir plus bas. | |
bf5c74e7 JL |
11724 | @end defvr |
11725 | ||
1d8d69c8 JL |
11726 | @deftp {Type de données} nscd-configuration |
11727 | C'est le type de données qui représente la configuration du démon de cache | |
11728 | de services de noms (nscd). | |
bf5c74e7 JL |
11729 | |
11730 | @table @asis | |
11731 | ||
1d8d69c8 JL |
11732 | @item @code{name-services} (par défaut : @code{'()}) |
11733 | Liste des paquets dénotant des @dfn{services de noms} qui doivent être | |
11734 | visible pour nscd, p.@: ex.@: @code{(list @var{nss-mdns})}. | |
bf5c74e7 | 11735 | |
1d8d69c8 | 11736 | @item @code{glibc} (par défaut : @var{glibc}) |
15f1bff4 | 11737 | Objet de paquet qui dénote la Bibliothèque C de GNU qui fournit la commande |
1d8d69c8 | 11738 | @command{nscd}. |
bf5c74e7 | 11739 | |
1d8d69c8 JL |
11740 | @item @code{log-file} (par défaut : @code{"/var/log/nscd.log"}) |
11741 | Nom du fichier journal de nscd. C'est là que les sorties de débogage sont | |
11742 | envoyée lorsque @code{debug-level} est strictement positif. | |
bf5c74e7 | 11743 | |
1d8d69c8 JL |
11744 | @item @code{debug-level} (par défaut : @code{0}) |
11745 | Entier qui dénote le niveau de débogage. Les entiers les plus grands | |
11746 | signifient plus de sortie de débogage. | |
bf5c74e7 | 11747 | |
1d8d69c8 JL |
11748 | @item @code{caches} (par défaut : @var{%nscd-default-caches}) |
11749 | Liste d'objets @code{<nscd-cache>} qui dénotent des choses à mettre en cache | |
11750 | ; voir plus bas. | |
bf5c74e7 JL |
11751 | |
11752 | @end table | |
11753 | @end deftp | |
11754 | ||
1d8d69c8 JL |
11755 | @deftp {Type de données} nscd-cache |
11756 | Type de données représentant une base de données de cache de nscd et ses | |
11757 | paramètres. | |
bf5c74e7 JL |
11758 | |
11759 | @table @asis | |
11760 | ||
11761 | @item @code{database} | |
1d8d69c8 JL |
11762 | C'est un symbole qui représente le nom de la base de donnée à mettre en |
11763 | cache. Les valeurs valide sont @code{passwd}, @code{group}, @code{hosts} et | |
11764 | @code{services} qui désignent les bases de données NSS correspondantes | |
11765 | (@pxref{NSS Basics,,, libc, The GNU C Library Reference Manual}). | |
bf5c74e7 JL |
11766 | |
11767 | @item @code{positive-time-to-live} | |
1d8d69c8 JL |
11768 | @itemx @code{negative-time-to-live} (par défaut : @code{20}) |
11769 | Un entier qui représente le nombre de secondes pendant lesquelles un | |
11770 | résultat positif ou négatif reste en cache. | |
bf5c74e7 | 11771 | |
1d8d69c8 JL |
11772 | @item @code{check-files?} (par défaut : @code{#t}) |
11773 | Indique s'il faut vérifier des mises à jours dans les fichiers correspondant | |
11774 | à @var{database}. | |
bf5c74e7 | 11775 | |
1d8d69c8 JL |
11776 | Par exemple, lorsque @var{database} est @code{hosts}, ce drapeau indique à |
11777 | nscd de vérifier s'il y a des mises à jour de @file{/etc/hosts} et de les | |
11778 | prendre en compte. | |
bf5c74e7 | 11779 | |
1d8d69c8 JL |
11780 | @item @code{persistent?} (par défaut : @code{#t}) |
11781 | Indique si le cache devrait être stocké de manière persistante sur le | |
11782 | disque. | |
bf5c74e7 | 11783 | |
1d8d69c8 JL |
11784 | @item @code{shared?} (par défaut : @code{#t}) |
11785 | Indique si le cache devrait être partagé entre les utilisateurs. | |
bf5c74e7 | 11786 | |
1d8d69c8 JL |
11787 | @item @code{max-database-size} (par défaut : 32@tie{}MiB) |
11788 | Taille maximale en octets de la base de données en cache. | |
bf5c74e7 JL |
11789 | |
11790 | @c XXX: 'suggested-size' and 'auto-propagate?' seem to be expert | |
11791 | @c settings, so leave them out. | |
11792 | ||
11793 | @end table | |
11794 | @end deftp | |
11795 | ||
1d8d69c8 JL |
11796 | @defvr {Variable Scheme} %nscd-default-caches |
11797 | Liste d'objets @code{<nscd-cache>} utilisés par défaut par | |
11798 | @code{nscd-configuration} (voir plus haut). | |
bf5c74e7 | 11799 | |
1d8d69c8 JL |
11800 | Elle active la mise en cache persistante et agressive des recherches de |
11801 | services et de noms d'hôtes. Ces derniers fournissent une recherche de noms | |
11802 | d'hôtes plus performante, résiliente face à des serveurs de noms peu fiables | |
11803 | et une protection de votre vie privée plus efficace — souvent le résultat | |
11804 | des recherches de noms d'hôtes sont dans le cache local, donc les serveurs | |
11805 | de nom externes n'ont même pas besoin d'être questionnés. | |
bf5c74e7 JL |
11806 | @end defvr |
11807 | ||
11808 | @anchor{syslog-configuration-type} | |
11809 | @cindex syslog | |
11810 | @cindex logging | |
1d8d69c8 JL |
11811 | @deftp {Type de données} syslog-configuration |
11812 | Ce type de données représente la configuration du démon syslog. | |
bf5c74e7 JL |
11813 | |
11814 | @table @asis | |
1d8d69c8 JL |
11815 | @item @code{syslogd} (par défaut : @code{#~(string-append #$inetutils "/libexec/syslogd")}) |
11816 | Le démon syslog à utiliser. | |
bf5c74e7 | 11817 | |
1d8d69c8 JL |
11818 | @item @code{config-file} (par défaut : @code{%default-syslog.conf}) |
11819 | Le fichier de configuration de syslog à utiliser. | |
bf5c74e7 JL |
11820 | |
11821 | @end table | |
11822 | @end deftp | |
11823 | ||
11824 | @anchor{syslog-service} | |
11825 | @cindex syslog | |
1d8d69c8 JL |
11826 | @deffn {Procédure Scheme} syslog-service @var{config} |
11827 | Renvoie un service qui lance un démon syslog en suivant @var{config}. | |
bf5c74e7 | 11828 | |
1d8d69c8 JL |
11829 | @xref{syslogd invocation,,, inetutils, GNU Inetutils}, pour plus |
11830 | d'informations sur la syntaxe du fichier de configuration. | |
bf5c74e7 JL |
11831 | @end deffn |
11832 | ||
adfb167f JL |
11833 | @defvr {Variable Scheme} guix-service-type |
11834 | C'est le type de service qui lance le démon de construction, | |
11835 | @command{guix-daemon} (@pxref{Invoquer guix-daemon}). Sa valeur doit être | |
11836 | un enregistrement @code{guix-configuration} décrit plus bas. | |
11837 | @end defvr | |
11838 | ||
bf5c74e7 | 11839 | @anchor{guix-configuration-type} |
1d8d69c8 JL |
11840 | @deftp {Type de données} guix-configuration |
11841 | Ce type de données représente la configuration du démon de construction de | |
11842 | Guix. @xref{Invoquer guix-daemon} pour plus d'informations. | |
bf5c74e7 JL |
11843 | |
11844 | @table @asis | |
1d8d69c8 JL |
11845 | @item @code{guix} (par défaut : @var{guix}) |
11846 | Le paquet Guix à utiliser. | |
bf5c74e7 | 11847 | |
1d8d69c8 JL |
11848 | @item @code{build-group} (par défaut : @code{"guixbuild"}) |
11849 | Nom du groupe des comptes utilisateurs de construction. | |
bf5c74e7 | 11850 | |
1d8d69c8 JL |
11851 | @item @code{build-accounts} (par défaut : @code{10}) |
11852 | Nombre de comptes utilisateurs de construction à créer. | |
bf5c74e7 | 11853 | |
1d8d69c8 | 11854 | @item @code{authorize-key?} (par défaut : @code{#t}) |
3cacfa9e | 11855 | @cindex substituts, autorisations |
15f1bff4 JL |
11856 | Whether to authorize the substitute keys listed in |
11857 | @code{authorized-keys}---by default that of @code{@value{SUBSTITUTE-SERVER}} | |
11858 | (@pxref{Substituts}). | |
bf5c74e7 JL |
11859 | |
11860 | @vindex %default-authorized-guix-keys | |
1d8d69c8 | 11861 | @item @code{authorized-keys} (par défaut : @var{%default-authorized-guix-keys}) |
15f1bff4 JL |
11862 | The list of authorized key files for archive imports, as a list of |
11863 | string-valued gexps (@pxref{Invoquer guix archive}). By default, it | |
11864 | contains that of @code{@value{SUBSTITUTE-SERVER}} (@pxref{Substituts}). | |
bf5c74e7 | 11865 | |
1d8d69c8 JL |
11866 | @item @code{use-substitutes?} (par défaut : @code{#t}) |
11867 | S'il faut utiliser les substituts. | |
bf5c74e7 | 11868 | |
1d8d69c8 JL |
11869 | @item @code{substitute-urls} (par défaut : @var{%default-substitute-urls}) |
11870 | La liste des URL où trouver des substituts par défaut. | |
bf5c74e7 | 11871 | |
1d8d69c8 JL |
11872 | @item @code{max-silent-time} (par défaut : @code{0}) |
11873 | @itemx @code{timeout} (par défaut : @code{0}) | |
11874 | Le nombre de secondes de silence et le nombre de secondes d'inactivité, | |
11875 | respectivement, après lesquelles un processus de construction son délai | |
11876 | d'attente. Une valeur de zéro désactive le délai d'attente. | |
bf5c74e7 | 11877 | |
1d8d69c8 JL |
11878 | @item @code{log-compression} (par défaut : @code{'bzip2}) |
11879 | Le type de compression utilisé par les journaux de construction — parmi | |
11880 | @code{gzip}, @code{bzip2} et @code{none}. | |
bf5c74e7 | 11881 | |
1d8d69c8 JL |
11882 | @item @code{extra-options} (par défaut : @code{'()}) |
11883 | Liste d'options supplémentaires de la ligne de commande pour | |
11884 | @command{guix-daemon}. | |
bf5c74e7 | 11885 | |
1d8d69c8 JL |
11886 | @item @code{log-file} (par défaut : @code{"/var/log/guix-daemon.log"}) |
11887 | Le fichier où les sorties standard et d'erreur de @command{guix-daemon} sont | |
11888 | écrites. | |
bf5c74e7 | 11889 | |
1d8d69c8 JL |
11890 | @item @code{http-proxy} (par défaut : @code{#f}) |
11891 | Le serveur mandataire HTTP à utiliser pour télécharger les dérivations à | |
11892 | sortie fixe et les substituts. | |
bf5c74e7 | 11893 | |
1d8d69c8 JL |
11894 | @item @code{tmpdir} (par défaut : @code{#f}) |
11895 | Un répertoire où @command{guix-daemon} effectuera ses constructions. | |
bf5c74e7 JL |
11896 | |
11897 | @end table | |
11898 | @end deftp | |
11899 | ||
1d8d69c8 JL |
11900 | @deffn {Procédure Scheme} udev-service [#:udev @var{eudev} #:rules @code{'()}] |
11901 | Lance @var{udev}, qui rempli le répertoire @file{/dev} dynamiquement. Les | |
11902 | règles udev peuvent être fournies comme une liste de fichier via la variable | |
11903 | @var{rules}. Les procédures @var{udev-rule} et @var{file->udev-rule} de | |
11904 | @code{(gnu services base)} simplifient la création de ces fichiers de règle. | |
15f1bff4 | 11905 | @end deffn |
bf5c74e7 | 11906 | |
1d8d69c8 JL |
11907 | @deffn {Procédure Scheme} udev-rule [@var{file-name} @var{contents}] |
11908 | Renvoie un fichier de règle udev nommé @var{file-name} contenant les règles | |
15f1bff4 | 11909 | définie par le littéral @var{contents}. |
bf5c74e7 | 11910 | |
1d8d69c8 JL |
11911 | Dans l'exemple suivant, on définie une règle pour un périphérique USB qui |
11912 | sera stockée dans le fichier @file{90-usb-thing.rules}. La règle lance un | |
11913 | script à la détection du périphérique USB avec l'identifiant de produit | |
11914 | donné. | |
bf5c74e7 JL |
11915 | |
11916 | @example | |
11917 | (define %example-udev-rule | |
11918 | (udev-rule | |
11919 | "90-usb-thing.rules" | |
11920 | (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", " | |
11921 | "ATTR@{product@}==\"Example\", " | |
11922 | "RUN+=\"/path/to/script\""))) | |
11923 | @end example | |
15f1bff4 JL |
11924 | |
11925 | The @command{herd rules udev} command, as root, returns the name of the | |
11926 | directory containing all the active udev rules. | |
bf5c74e7 JL |
11927 | @end deffn |
11928 | ||
1d8d69c8 JL |
11929 | Ici on montre comment le service @var{udev-service} par défaut peut être |
11930 | étendu avec cette règle. | |
bf5c74e7 JL |
11931 | |
11932 | @example | |
11933 | (operating-system | |
11934 | ;; @dots{} | |
11935 | (services | |
11936 | (modify-services %desktop-services | |
11937 | (udev-service-type config => | |
11938 | (udev-configuration (inherit config) | |
11939 | (rules (append (udev-configuration-rules config) | |
11940 | (list %example-udev-rule)))))))) | |
11941 | @end example | |
11942 | ||
1d8d69c8 JL |
11943 | @deffn {Procédure Scheme} file->udev-rule [@var{file-name} @var{file}] |
11944 | Renvoie un fichier udev nommé @var{file-name} contenant les règles définies | |
11945 | dans @var{file}, un objet simili-fichier. | |
bf5c74e7 | 11946 | |
1d8d69c8 | 11947 | L'exemple suivant montre comment utiliser un fichier de règles existant. |
bf5c74e7 JL |
11948 | |
11949 | @example | |
1d8d69c8 JL |
11950 | (use-modules (guix download) ;pour url-fetch |
11951 | (guix packages) ;pour origin | |
bf5c74e7 JL |
11952 | ;; @dots{}) |
11953 | ||
11954 | (define %android-udev-rules | |
11955 | (file->udev-rule | |
11956 | "51-android-udev.rules" | |
11957 | (let ((version "20170910")) | |
11958 | (origin | |
11959 | (method url-fetch) | |
11960 | (uri (string-append "https://raw.githubusercontent.com/M0Rf30/" | |
11961 | "android-udev-rules/" version "/51-android.rules")) | |
11962 | (sha256 | |
11963 | (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003")))))) | |
11964 | @end example | |
11965 | @end deffn | |
11966 | ||
1d8d69c8 JL |
11967 | En plus, les définitions des paquets de Guix peuvent être inclus dans |
11968 | @var{rules} pour étendre les règles avec les définitions trouvées dans leur | |
11969 | sous-répertoire @file{lib/udev/rules.d}. Au lieu de l'exemple | |
11970 | @var{file->udev-rule} précédent, on aurait pu utiliser le paquet | |
11971 | @var{android-udev-rules} qui existe dans le module @code{(gnu packages | |
11972 | android)}. | |
bf5c74e7 | 11973 | |
1d8d69c8 JL |
11974 | L'exemple suivant montre comment utiliser le paquet @var{android-udev-rules} |
11975 | pour que l'outil Android @command{adb} puisse détecter les appareils sans | |
15f1bff4 | 11976 | privilège root. Il détaille aussi comment créer le groupe @code{adbusers}, |
1d8d69c8 JL |
11977 | requis pour le bon fonctionnement des règles définies dans le paquet |
11978 | @var{android-udev-rules}. Pour créer ce groupe, on doit le définir dans les | |
11979 | @var{supplementary-groups} de la déclaration @var{user-account} ainsi que | |
11980 | dans le champ @var{groups} de l'enregistrement @var{operating-system}. | |
bf5c74e7 JL |
11981 | |
11982 | @example | |
11983 | (use-modules (gnu packages android) ;for android-udev-rules | |
11984 | (gnu system shadow) ;for user-group | |
11985 | ;; @dots{}) | |
11986 | ||
11987 | (operating-system | |
11988 | ;; @dots{} | |
11989 | (users (cons (user-acount | |
11990 | ;; @dots{} | |
11991 | (supplementary-groups | |
11992 | '("adbusers" ;for adb | |
11993 | "wheel" "netdev" "audio" "video")) | |
11994 | ;; @dots{}))) | |
11995 | ||
11996 | (groups (cons (user-group (system? #t) (name "adbusers")) | |
11997 | %base-groups)) | |
11998 | ||
11999 | ;; @dots{} | |
12000 | ||
12001 | (services | |
15f1bff4 JL |
12002 | (modify-services %desktop-services |
12003 | (udev-service-type | |
12004 | config => | |
12005 | (udev-configuration (inherit config) | |
12006 | (rules (cons android-udev-rules | |
12007 | (udev-configuration-rules config)))))))) | |
bf5c74e7 | 12008 | @end example |
bf5c74e7 | 12009 | |
1d8d69c8 JL |
12010 | @defvr {Variable Scheme} urandom-seed-service-type |
12011 | Garde de l'entropie dans @var{%random-seed-file} pour démarrer | |
12012 | @file{/dev/urandom} au redémarrage. Ce service essaye aussi de démarrer | |
12013 | @file{/dev/urandom} à partir de @file{/dev/hwrng} au démarrage si | |
12014 | @file{/dev/hwrng} existe et peut être lu. | |
bf5c74e7 JL |
12015 | @end defvr |
12016 | ||
1d8d69c8 JL |
12017 | @defvr {Variable Scheme} %random-seed-file |
12018 | C'est le nom du fichier où des octets aléatoires sont sauvegardés par | |
12019 | @var{urandom-seed-service} pour démarrer @file{/dev/urandom} au | |
12020 | redémarrage. Sa valeur par défaut est @file{/var/lib/random-seed}. | |
bf5c74e7 JL |
12021 | @end defvr |
12022 | ||
1d8d69c8 JL |
12023 | @cindex disposition clavier |
12024 | @cindex clavier | |
12025 | @deffn {Procédure Scheme} console-keymap-service @var{files} ... | |
12026 | @cindex disposition du clavier | |
12027 | Renvoie un service qui charge les dispositions claviers de @var{files} avec | |
12028 | la commande @command{loadkeys}. Vraisemblablement, vous voudrez charger une | |
12029 | disposition par défaut, ce qui se fait ainsi : | |
bf5c74e7 JL |
12030 | |
12031 | @example | |
12032 | (console-keymap-service "dvorak") | |
12033 | @end example | |
12034 | ||
1d8d69c8 JL |
12035 | Ou par exemple pour un clavier suédois, vous pourriez avoir besoin de |
12036 | combiner les dispositions suivantes : | |
bf5c74e7 JL |
12037 | @example |
12038 | (console-keymap-service "se-lat6" "se-fi-lat6") | |
12039 | @end example | |
12040 | ||
1d8d69c8 JL |
12041 | Vous pouvez aussi spécifier le nom de fichier (ou les noms de fichiers) |
12042 | complets de vos dispositions. Voir @code{man loadkeys} pour des détails. | |
bf5c74e7 JL |
12043 | |
12044 | @end deffn | |
12045 | ||
1d8d69c8 | 12046 | @cindex souris |
bf5c74e7 | 12047 | @cindex gpm |
2cf2c778 | 12048 | @defvr {Variable Scheme} gpm-service-type |
1d8d69c8 JL |
12049 | C'est le type du service qui lance GPM, le @dfn{démon de souris à but |
12050 | général}, qui fournit le support de la souris sur la console Linux. GPM | |
12051 | permet aux utilisateurs d'utiliser la souris dans la console, entre autres | |
12052 | pour sélectionner, copier et coller du texte. | |
3cacfa9e | 12053 | |
1d8d69c8 JL |
12054 | La valeur pour les services de ce type doit être un @code{gpm-configuration} |
12055 | (voir plus bas). Ce service ne fait pas partie de @var{%base-services}. | |
3cacfa9e LC |
12056 | @end defvr |
12057 | ||
1d8d69c8 | 12058 | @deftp {Type de données} gpm-configuration |
2cf2c778 | 12059 | Type de données représentant la configuration de GPM. |
3cacfa9e LC |
12060 | |
12061 | @table @asis | |
2cf2c778 | 12062 | @item @code{options} (par défaut : @code{%default-gpm-options}) |
1d8d69c8 JL |
12063 | Les options de la ligne de commande à passer à @command{gpm}. L'ensemble |
12064 | des options par défaut dit à @command{gpm} d'écouter les événements de la | |
12065 | souris dans @file{/dev/input/mice}. @xref{Command Line,,, gpm, gpm manual}, | |
12066 | pour plus d'informations. | |
3cacfa9e | 12067 | |
2cf2c778 JL |
12068 | @item @code{gpm} (par défaut : @code{gpm}) |
12069 | Le paquet GPM à utiliser. | |
3cacfa9e LC |
12070 | |
12071 | @end table | |
12072 | @end deftp | |
bf5c74e7 JL |
12073 | |
12074 | @anchor{guix-publish-service-type} | |
1d8d69c8 JL |
12075 | @deffn {Variable Scheme} guix-publish-service-type |
12076 | 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 | |
12077 | plus bas. | |
bf5c74e7 | 12078 | |
1d8d69c8 JL |
12079 | Ce service suppose que @file{/etc/guix} contient déjà une paire de clefs |
12080 | 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. | |
bf5c74e7 JL |
12081 | @end deffn |
12082 | ||
1d8d69c8 JL |
12083 | @deftp {Type de données} guix-publish-configuration |
12084 | Le type de données représentant la configuration du service @code{guix | |
12085 | publish}. | |
bf5c74e7 JL |
12086 | |
12087 | @table @asis | |
1d8d69c8 JL |
12088 | @item @code{guix} (par défaut : @code{guix}) |
12089 | Le paquet Guix à utiliser. | |
bf5c74e7 | 12090 | |
1d8d69c8 JL |
12091 | @item @code{port} (par défaut : @code{80}) |
12092 | Le port TCP sur lequel écouter les connexions. | |
bf5c74e7 | 12093 | |
1d8d69c8 JL |
12094 | @item @code{host} (par défaut : @code{"localhost"}) |
12095 | L'hôte (et donc, l'interface réseau) sur lequel écouter. Utilisez | |
12096 | @code{"0.0.0.0"} pour écouter sur toutes les interfaces réseaux. | |
bf5c74e7 | 12097 | |
3cacfa9e | 12098 | @item @code{compression-level} (par défaut : @code{3}) |
1d8d69c8 JL |
12099 | Le niveau de compression gzip auquel les substituts sont compressés. |
12100 | Utilisez @code{0} pour désactiver complètement la compression, et @code{9} | |
12101 | pour avoir le meilleur taux de compression contre une plus grande | |
12102 | utilisation du CPU. | |
12103 | ||
12104 | @item @code{nar-path} (par défaut : @code{"nar"}) | |
12105 | Le chemin d'URL où les « nars » se trouvent. @xref{Invoquer guix publish, | |
12106 | @code{--nar-path}}, pour des détails. | |
12107 | ||
12108 | @item @code{cache} (par défaut : @code{#f}) | |
12109 | Lorsque la valeur est @code{#f}, désactive le cache et génère les archives à | |
12110 | la demande. Sinon, cela devrait être le nom d'un répertoire — p.@: ex.@: | |
12111 | @code{"/var/cache/guix/publish"} — où @command{guix publish} gère le cache | |
12112 | 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 | |
12113 | impliqués. | |
12114 | ||
12115 | @item @code{workers} (par défaut : @code{#f}) | |
12116 | Lorsque la valeur est un entier, c'est le nombre de threads de travail | |
12117 | utilisés pour le cache ; lorsque la valeur est @code{#f}, le nombre de | |
12118 | processeurs est utilisé. @xref{Invoquer guix publish, @option{--workers}}, | |
12119 | pour plus d'informations. | |
12120 | ||
12121 | @item @code{ttl} (par défaut : @code{#f}) | |
12122 | Lorsque la valeur est un entier, il dénote la @dfn{durée de vie} en secondes | |
12123 | des archives publiées. @xref{Invoquer guix publish, @option{--ttl}}, pour | |
12124 | plus d'informations. | |
bf5c74e7 JL |
12125 | @end table |
12126 | @end deftp | |
12127 | ||
12128 | @anchor{rngd-service} | |
1d8d69c8 JL |
12129 | @deffn {Procédure Scheme} rngd-service [#:rng-tools @var{rng-tools}] @ |
12130 | [#:device "/dev/hwrng"] | |
12131 | Renvoie un service qui lance le programme @command{rngd} de @var{rng-tools} | |
12132 | pour ajouter @var{device} à la réserve d'entropie du noyau. Le service | |
12133 | échouera si @var{device} n'existe pas. | |
bf5c74e7 JL |
12134 | @end deffn |
12135 | ||
12136 | @anchor{pam-limits-service} | |
1d8d69c8 | 12137 | @cindex limites de session |
bf5c74e7 | 12138 | @cindex ulimit |
1d8d69c8 JL |
12139 | @cindex priorités |
12140 | @cindex temps réel | |
bf5c74e7 | 12141 | @cindex jackd |
1d8d69c8 | 12142 | @deffn {Procédure Scheme} pam-limits-service [#:limits @code{'()}] |
bf5c74e7 | 12143 | |
1d8d69c8 JL |
12144 | Renvoie un service qui installe un fichier de configuration pour le |
12145 | @uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html, module | |
12146 | @code{pam_limits}}. La procédure prend éventuellement une liste de valeurs | |
12147 | @code{pam-limits-entry} qui peuvent être utilisées pour spécifier les | |
12148 | limites @code{ulimit} et les priorités des sessions utilisateurs. | |
bf5c74e7 | 12149 | |
1d8d69c8 JL |
12150 | La définition de limites suivante défini deux limites matérielles et |
12151 | logicielles pour toutes les sessions connectées des utilisateurs du groupe | |
12152 | @code{realtime} : | |
bf5c74e7 JL |
12153 | |
12154 | @example | |
12155 | (pam-limits-service | |
12156 | (list | |
12157 | (pam-limits-entry "@@realtime" 'both 'rtprio 99) | |
12158 | (pam-limits-entry "@@realtime" 'both 'memlock 'unlimited))) | |
12159 | @end example | |
12160 | ||
1d8d69c8 JL |
12161 | La première entrée augment la priorité en temps réel maximale des processus |
12162 | non privilégiés ; la deuxième entrée abandonne les restrictions sur l'espace | |
12163 | d'adressage maximal qui peut être verrouillé en mémoire. Ces paramètres | |
12164 | sont souvent utilisés sur les systèmes audio temps-réel. | |
bf5c74e7 JL |
12165 | @end deffn |
12166 | ||
3cacfa9e | 12167 | @node Exécution de tâches planifiées |
15f1bff4 | 12168 | @subsection Exécution de tâches planifiées |
bf5c74e7 JL |
12169 | |
12170 | @cindex cron | |
12171 | @cindex mcron | |
1d8d69c8 JL |
12172 | @cindex tâches planifiées |
12173 | Le module @code{(gnu services mcron)} fournit une interface pour | |
12174 | GNU@tie{}mcron, un démon qui lance des tâches planifiées (@pxref{Top,,, | |
12175 | mcron, GNU@tie{}mcron}). GNU@tie{}mcron est similaire au démon Unix | |
15f1bff4 | 12176 | traditionnel @command{cron} ; la principale différence est qu'il est |
1d8d69c8 JL |
12177 | implémenté en Guile Scheme, qui fournit beaucoup de flexibilité lors de la |
12178 | spécification de la planification des tâches et de leurs actions. | |
12179 | ||
15f1bff4 | 12180 | L'exemple en dessous définit un système d'exploitation qui lance les |
1d8d69c8 JL |
12181 | commandes @command{updatebd} (@pxref{Invoking updatedb,,, find, Finding |
12182 | Files}) et @command{guix gc} (@pxref{Invoquer guix gc}) tous les jours, | |
12183 | ainsi que la commande @command{mkid} en tant qu'utilisateur non privilégié | |
12184 | (@pxref{mkid invocation,,, idutils, ID Database Utilities}). Il utilise des | |
12185 | gexps pour introduire des définitions de tâches qui sont passées à mcron | |
12186 | (@pxref{G-Expressions}). | |
bf5c74e7 JL |
12187 | |
12188 | @lisp | |
12189 | (use-modules (guix) (gnu) (gnu services mcron)) | |
12190 | (use-package-modules base idutils) | |
12191 | ||
12192 | (define updatedb-job | |
1d8d69c8 JL |
12193 | ;; Lance « updatedb » à 3h du matin chaque jour. Ici nous spécifions |
12194 | ;; l'action de la tâche comme une procédure Scheme. | |
bf5c74e7 JL |
12195 | #~(job '(next-hour '(3)) |
12196 | (lambda () | |
12197 | (execl (string-append #$findutils "/bin/updatedb") | |
12198 | "updatedb" | |
12199 | "--prunepaths=/tmp /var/tmp /gnu/store")))) | |
12200 | ||
12201 | (define garbage-collector-job | |
1d8d69c8 JL |
12202 | ;; Lance le ramasse-miettes tous les jours à minuit cinq. |
12203 | ;; L'action de la tâche est une commande shell. | |
bf5c74e7 JL |
12204 | #~(job "5 0 * * *" ;Vixie cron syntax |
12205 | "guix gc -F 1G")) | |
12206 | ||
12207 | (define idutils-job | |
1d8d69c8 JL |
12208 | ;; Met à jour la base de données d'index en tant que « charlie » à 12h15 |
12209 | ;; et 19h15. La commande est lancée depuis le répertoire personnel de l'utilisateur. | |
bf5c74e7 JL |
12210 | #~(job '(next-minute-from (next-hour '(12 19)) '(15)) |
12211 | (string-append #$idutils "/bin/mkid src") | |
12212 | #:user "charlie")) | |
12213 | ||
12214 | (operating-system | |
12215 | ;; @dots{} | |
15f1bff4 JL |
12216 | (services (cons (service mcron-service-type |
12217 | (mcron-configuration | |
12218 | (jobs (list garbage-collector-job | |
12219 | updatedb-job | |
12220 | idutils-job)))) | |
bf5c74e7 JL |
12221 | %base-services))) |
12222 | @end lisp | |
12223 | ||
1d8d69c8 JL |
12224 | @xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}, pour |
12225 | plus d'informations sur les spécifications des tâche de mcron. Ci-dessous | |
12226 | est la référence du service mcron. | |
bf5c74e7 | 12227 | |
adfb167f JL |
12228 | Sur un système lancé, vous pouvez utiliser l'action @code{schedule} du |
12229 | service pour visualiser les travaux mcron qui seront exécutés ensuite : | |
524756d1 JL |
12230 | |
12231 | @example | |
12232 | # herd schedule mcron | |
12233 | @end example | |
12234 | ||
12235 | @noindent | |
adfb167f JL |
12236 | Cet exemple ci-dessus montre les cinq tâches qui seront exécutés, mais vous |
12237 | pouvez spécifier le nombre de tâches à afficher : | |
524756d1 JL |
12238 | |
12239 | @example | |
12240 | # herd schedule mcron 10 | |
12241 | @end example | |
12242 | ||
1d8d69c8 JL |
12243 | @defvr {Variable Scheme} mcron-service-type |
12244 | C'est le type du service @code{mcron}, dont la valeur est un objet | |
12245 | @code{mcron-configuration} | |
bf5c74e7 | 12246 | |
1d8d69c8 JL |
12247 | Ce type de service peut être la cible d'une extension de service qui lui |
12248 | 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 | |
12249 | qui fournissent des tâches mcron à lancer. | |
bf5c74e7 JL |
12250 | @end defvr |
12251 | ||
1d8d69c8 JL |
12252 | @deftp {Type de données} mcron-configuration |
12253 | Type données qui représente la configuration de mcron. | |
bf5c74e7 JL |
12254 | |
12255 | @table @asis | |
1d8d69c8 JL |
12256 | @item @code{mcron} (par défaut : @var{mcron}) |
12257 | Le paquet mcron à utiliser. | |
bf5c74e7 JL |
12258 | |
12259 | @item @code{jobs} | |
1d8d69c8 JL |
12260 | C'est la liste des gexps (@pxref{G-Expressions}), où chaque gexp correspond |
12261 | à une spécification de tâche de mcron (@pxref{Syntax, mcron job | |
12262 | specifications,, mcron, GNU@tie{}mcron}). | |
bf5c74e7 JL |
12263 | @end table |
12264 | @end deftp | |
12265 | ||
12266 | ||
3cacfa9e | 12267 | @node Rotation des journaux |
15f1bff4 | 12268 | @subsection Rotation des journaux |
bf5c74e7 JL |
12269 | |
12270 | @cindex rottlog | |
1d8d69c8 | 12271 | @cindex journaux, rotation |
bf5c74e7 | 12272 | @cindex logging |
1d8d69c8 JL |
12273 | Les fichiers journaux comme ceux qui se trouvent dans @file{/var/log} ont |
12274 | tendance à grandir sans fin, donc c'est une bonne idée de le @dfn{faire | |
12275 | tourner} de temps à autres — c.-à-d.@: archiver leur contenu dans des | |
12276 | fichiers séparés, potentiellement compressés. Le module @code{(gnu services | |
12277 | admin)} fournit une interface pour GNU@tie{}Rot[t]log, un outil de rotation | |
12278 | de journaux (@pxref{Top,,, rottlog, GNU Rot[t]log Manual}). | |
bf5c74e7 | 12279 | |
1d8d69c8 JL |
12280 | L'exemple ci-dessous définit un système d'exploitation qui fournit la |
12281 | rotation des journaux avec les paramètres par défaut, pour les journaux les | |
12282 | plus courants. | |
bf5c74e7 JL |
12283 | |
12284 | @lisp | |
12285 | (use-modules (guix) (gnu)) | |
12286 | (use-service-modules admin mcron) | |
12287 | (use-package-modules base idutils) | |
12288 | ||
12289 | (operating-system | |
12290 | ;; @dots{} | |
12291 | (services (cons (service rottlog-service-type) | |
12292 | %base-services))) | |
12293 | @end lisp | |
12294 | ||
1d8d69c8 JL |
12295 | @defvr {Variable Scheme} rottlog-service-type |
12296 | C'est le type du service Rotlog, dont la valeur est un objet | |
12297 | @code{rottlog-configuration}. | |
bf5c74e7 | 12298 | |
1d8d69c8 JL |
12299 | D'autres services peuvent étendre celui-ci avec de nouveaux objets |
12300 | @code{log-rotation} (voir plus bas), en augmentant ainsi l'ensemble des | |
12301 | fichiers à faire tourner. | |
bf5c74e7 | 12302 | |
1d8d69c8 JL |
12303 | Ce type de service peut définir des taches (@pxref{Exécution de tâches planifiées}) |
12304 | pour lancer le service rottlog. | |
bf5c74e7 JL |
12305 | @end defvr |
12306 | ||
1d8d69c8 JL |
12307 | @deftp {Type de données} rottlog-configuration |
12308 | Type de données représentant la configuration de rottlog. | |
bf5c74e7 JL |
12309 | |
12310 | @table @asis | |
1d8d69c8 JL |
12311 | @item @code{rottlog} (par défaut : @code{rottlog}) |
12312 | Le paquet Rottlog à utiliser. | |
bf5c74e7 | 12313 | |
1d8d69c8 JL |
12314 | @item @code{rc-file} (par défaut : @code{(file-append rottlog "/etc/rc")}) |
12315 | Le fichier de configuration Rottlog à utiliser (@pxref{Mandatory RC | |
12316 | Variables,,, rottlog, GNU Rot[t]log Manual}). | |
bf5c74e7 | 12317 | |
1d8d69c8 JL |
12318 | @item @code{rotations} (par défaut : @code{%default-rotations}) |
12319 | Une liste d'objets @code{log-rotation} définis plus bas. | |
bf5c74e7 JL |
12320 | |
12321 | @item @code{jobs} | |
1d8d69c8 JL |
12322 | C'est une liste de gexps où chaque gexp correspond à une spécification de |
12323 | tache de mcron (@pxref{Exécution de tâches planifiées}). | |
bf5c74e7 JL |
12324 | @end table |
12325 | @end deftp | |
12326 | ||
1d8d69c8 JL |
12327 | @deftp {Type de données} log-rotation |
12328 | Type de données représentant la rotation d'un groupe de fichiers journaux. | |
bf5c74e7 | 12329 | |
1d8d69c8 JL |
12330 | En reprenant un exemple du manuel de Rottlog (@pxref{Period Related File |
12331 | Examples,,, rottlog, GNU Rot[t]log Manual}), on peut définir la rotation | |
12332 | d'un journal de cette manière : | |
bf5c74e7 JL |
12333 | |
12334 | @example | |
12335 | (log-rotation | |
12336 | (frequency 'daily) | |
12337 | (files '("/var/log/apache/*")) | |
12338 | (options '("storedir apache-archives" | |
12339 | "rotate 6" | |
12340 | "notifempty" | |
12341 | "nocompress"))) | |
12342 | @end example | |
12343 | ||
1d8d69c8 | 12344 | La liste des champs est la suivante : |
bf5c74e7 JL |
12345 | |
12346 | @table @asis | |
1d8d69c8 JL |
12347 | @item @code{frequency} (par défaut : @code{'weekly}) |
12348 | La fréquence de rotation, un symbole. | |
bf5c74e7 JL |
12349 | |
12350 | @item @code{files} | |
1d8d69c8 | 12351 | La liste des fichiers ou des motifs de noms de fichiers à faire tourner. |
bf5c74e7 | 12352 | |
1d8d69c8 JL |
12353 | @item @code{options} (par défaut : @code{'()}) |
12354 | La liste des options de rottlog pour cette rotation (@pxref{Configuration | |
bf5c74e7 JL |
12355 | parameters,,, rottlog, GNU Rot[t]lg Manual}). |
12356 | ||
1d8d69c8 JL |
12357 | @item @code{post-rotate} (par défaut : @code{#f}) |
12358 | Soit @code{#f}, soit une gexp à exécuter une fois la rotation terminée. | |
bf5c74e7 JL |
12359 | @end table |
12360 | @end deftp | |
12361 | ||
1d8d69c8 JL |
12362 | @defvr {Variable Scheme} %default-rotations |
12363 | Spécifie la rotation hebdomadaire de @var{%rotated-files} et de quelques | |
12364 | autres fichiers. | |
bf5c74e7 JL |
12365 | @end defvr |
12366 | ||
1d8d69c8 JL |
12367 | @defvr {Variable Scheme} %rotated-files |
12368 | La liste des fichiers contrôlés par syslog à faire tourner. Par défaut il | |
12369 | s'agit de : @code{'("/var/log/messages" "/var/log/secure")} | |
bf5c74e7 JL |
12370 | @end defvr |
12371 | ||
3cacfa9e | 12372 | @node Services réseau |
15f1bff4 | 12373 | @subsection Services réseau |
bf5c74e7 | 12374 | |
1d8d69c8 JL |
12375 | Le module @code{(gnu services networking)} fournit des services pour |
12376 | configurer les interfaces réseaux. | |
bf5c74e7 | 12377 | |
1d8d69c8 | 12378 | @cindex DHCP, service réseau |
adfb167f JL |
12379 | @defvr {Variable Scheme} dhcp-client-service-type |
12380 | C'est le type de services qui lance @var{dhcp}, un client DHC (protocole de | |
12381 | configuration d'hôte dynamique) sur toutes les interfaces réseau | |
12382 | non-loopback. Sa valeur est le paquet du client DHCP à utiliser, | |
12383 | @code{isc-dhcp} par défaut. | |
12384 | @end defvr | |
bf5c74e7 | 12385 | |
1d8d69c8 JL |
12386 | @deffn {Procédure Scheme} dhcpd-service-type |
12387 | Ce type définie un service qui lance un démon DHCP. Pour créer un service | |
12388 | de ce type, vous devez appliquer un objet @code{<dhcpd-configuration>}. Par | |
12389 | exemple : | |
3cacfa9e LC |
12390 | |
12391 | @example | |
12392 | (service dhcpd-service-type | |
12393 | (dhcpd-configuration | |
12394 | (config-file (local-file "my-dhcpd.conf")) | |
12395 | (interfaces '("enp0s25")))) | |
12396 | @end example | |
12397 | @end deffn | |
12398 | ||
1d8d69c8 | 12399 | @deftp {Type de données} dhcpd-configuration |
3cacfa9e | 12400 | @table @asis |
1d8d69c8 JL |
12401 | @item @code{package} (par défaut : @code{isc-dhcp}) |
12402 | Le paquet qui fournit le démon DHCP. ce paquet doit fournir le démon | |
12403 | @file{sbin/dhcpd} relativement à son répertoire de sortie. Le paquet par | |
12404 | défaut est le @uref{http://www.isc.org/products/DHCP, serveur DHCP d'ISC} | |
12405 | @item @code{config-file} (par défaut : @code{#f}) | |
12406 | Le fichier de configuration à utiliser. Il est requis. Il sera passé à | |
12407 | @code{dhcpd} via son option @code{-cf}. La valeur peut être n'importe quel | |
12408 | objet « simili-fichier » (@pxref{G-Expressions, file-like objects}). Voir | |
12409 | @code{man dhcpd.conf} pour des détails sur la syntaxe du fichier de | |
12410 | configuration. | |
12411 | @item @code{version} (par défaut : @code{"4"}) | |
12412 | La version de DHCP à utiliser. Le serveur DHCP d'ISC supporte les valeur « | |
12413 | 4 », « 6 » et « 4o6 ». Elles correspondent aux options @code{-4}, @code{-6} | |
12414 | et @code{-4o6} du programme @code{dhcpd}. Voir @code{man dhcpd} pour plus | |
12415 | de détails. | |
12416 | @item @code{run-directory} (par défaut : @code{"/run/dhcpd"}) | |
12417 | Le répertoire d'exécution à utiliser. Au moment de l'activation du service, | |
12418 | ce répertoire sera créé s'il n'existe pas. | |
12419 | @item @code{pid-file} (par défaut : @code{"/run/dhcpd/dhcpd.pid"}) | |
12420 | Le fichier de PID à utiliser. Cela correspond à l'option @code{-pf} de | |
12421 | @code{dhcpd}. Voir @code{man dhcpd} pour plus de détails. | |
12422 | @item @code{interfaces} (par défaut : @code{'()}) | |
12423 | Les noms des interfaces réseaux sur lesquelles dhcpd écoute. Si cette liste | |
12424 | n'est pas vide, alors ses éléments (qui doivent être des chaînes de | |
12425 | caractères) seront ajoutés à l'invocation de @code{dhcpd} lors du démarrage | |
12426 | du démon. Il n'est pas forcément nécessaire de spécifier des interfaces ici | |
12427 | ; voir @code{man dhcpd} pour plus de détails. | |
3cacfa9e LC |
12428 | @end table |
12429 | @end deftp | |
12430 | ||
1d8d69c8 | 12431 | @defvr {Variable Scheme} static-networking-service-type |
bf5c74e7 | 12432 | @c TODO Document <static-networking> data structures. |
1d8d69c8 | 12433 | C'est le type des interfaces réseaux configurés statiquement. |
bf5c74e7 JL |
12434 | @end defvr |
12435 | ||
1d8d69c8 | 12436 | @deffn {Procédure Scheme} static-networking-service @var{interface} @var{ip} @ |
adfb167f JL |
12437 | [#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] @ |
12438 | [#:requirement @code{'(udev)}] | |
12439 | Renvoie un service qui démarre @var{interface} avec l'adresse @var{ip}. Si | |
12440 | @var{netmask} est vrai, il sera utilisé comme masque de sous-réseau. Si | |
12441 | @var{gateway} est vrai, ce doit être une chaîne de caractères qui spécifie | |
12442 | la passerelle par défaut du réseau. @var{requirement} peut être utilisé | |
12443 | pour déclarer une dépendance sur un autre service avant de configurer | |
12444 | l'interface. | |
bf5c74e7 | 12445 | |
1d8d69c8 JL |
12446 | On peut appeler cette procédure plusieurs fois, une fois par interface |
12447 | réseau qui nous intéresse. Dans les coulisses, elle étend | |
12448 | @code{static-networking-service-type} avec les interfaces réseaux | |
12449 | supplémentaires à gérer. | |
adfb167f JL |
12450 | |
12451 | Par exemple : | |
12452 | ||
12453 | @example | |
12454 | (static-networking-service "eno1" "192.168.1.82" | |
12455 | #:gateway "192.168.1.2" | |
12456 | #:name-servers '("192.168.1.2")) | |
12457 | @end example | |
bf5c74e7 JL |
12458 | @end deffn |
12459 | ||
12460 | @cindex wicd | |
1d8d69c8 | 12461 | @cindex sans-fil |
bf5c74e7 | 12462 | @cindex WiFi |
1d8d69c8 JL |
12463 | @cindex gestion du réseau |
12464 | @deffn {Procédure Scheme} wicd-service [#:wicd @var{wicd}] | |
12465 | Renvoie un service qui lance @url{https://launchpad.net/wicd,Wicd}, un démon | |
15f1bff4 | 12466 | de gestion réseau qui cherche à simplifier la configuration des réseaux |
1d8d69c8 JL |
12467 | filaires et sans fil. |
12468 | ||
12469 | Ce service ajoute le paquet @var{wicd} au profil global, pour fournir des | |
12470 | commandes pour interagir avec le démon et configurer le réseau : | |
12471 | @command{wicd-client}, une interface graphique et les interfaces | |
12472 | utilisateurs @command{wicd-cli} et @command{wicd-curses}. | |
bf5c74e7 JL |
12473 | @end deffn |
12474 | ||
3cacfa9e LC |
12475 | @cindex ModemManager |
12476 | ||
2cf2c778 | 12477 | @defvr {Variable Scheme} modem-manager-service-type |
1d8d69c8 JL |
12478 | C'est le type de service pour le service |
12479 | @uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager}. La | |
12480 | valeur de ce type de service est un enregistrement | |
12481 | @code{modem-manager-configuration}. | |
3cacfa9e | 12482 | |
1d8d69c8 | 12483 | Ce service fait partie de @code{%desktop-services} (@pxref{Services de bureaux}). |
3cacfa9e LC |
12484 | @end defvr |
12485 | ||
1d8d69c8 | 12486 | @deftp {Type de données} modem-manager-configuration |
2cf2c778 | 12487 | Type de donnée représentant la configuration de ModemManager. |
3cacfa9e LC |
12488 | |
12489 | @table @asis | |
2cf2c778 JL |
12490 | @item @code{modem-manager} (par défaut : @code{modem-manager}) |
12491 | Le paquet ModemManager à utiliser. | |
3cacfa9e LC |
12492 | |
12493 | @end table | |
12494 | @end deftp | |
12495 | ||
bf5c74e7 JL |
12496 | @cindex NetworkManager |
12497 | ||
1d8d69c8 JL |
12498 | @defvr {Variable Scheme} network-manager-service-type |
12499 | C'est le type de service pour le service | |
12500 | @uref{https://wiki.gnome.org/Projects/NetworkManager, NetworkManager}. La | |
12501 | valeur pour ce type de service est un enregistrement | |
12502 | @code{network-manager-configuration}. | |
bf5c74e7 | 12503 | |
1d8d69c8 | 12504 | Ce service fait partie de @code{%desktop-services} (@pxref{Services de bureaux}). |
bf5c74e7 JL |
12505 | @end defvr |
12506 | ||
1d8d69c8 JL |
12507 | @deftp {Type de données} network-manager-configuration |
12508 | Type de données représentant la configuration de NetworkManager. | |
bf5c74e7 JL |
12509 | |
12510 | @table @asis | |
1d8d69c8 JL |
12511 | @item @code{network-manager} (par défaut : @code{network-manager}) |
12512 | Le paquet NetworkManager à utiliser. | |
bf5c74e7 | 12513 | |
1d8d69c8 JL |
12514 | @item @code{dns} (par défaut : @code{"default"}) |
12515 | Mode de gestion pour le DNS, qui affecte la manière dont NetworkManager | |
12516 | utilise le fichier de configuration @code{resolv.conf} | |
bf5c74e7 JL |
12517 | |
12518 | @table @samp | |
12519 | @item default | |
1d8d69c8 JL |
12520 | NetworkManager mettra à jour @code{resolv.conf} pour refléter les serveurs |
12521 | de noms fournis par les connexions actives. | |
bf5c74e7 JL |
12522 | |
12523 | @item dnsmasq | |
1d8d69c8 JL |
12524 | NetworkManager lancera @code{dnsmasq} en tant que serveur de cache local, en |
12525 | utilisant une configuration « DNS disjointe » si vous êtes connecté par un | |
12526 | VPN puis mettra à jour @code{resolv.conf} pour pointer vers le serveur de | |
12527 | nom local. | |
bf5c74e7 JL |
12528 | |
12529 | @item none | |
1d8d69c8 | 12530 | NetworkManager ne modifiera pas @code{resolv.conf}. |
bf5c74e7 JL |
12531 | @end table |
12532 | ||
1d8d69c8 JL |
12533 | @item @code{vpn-plugins} (par défaut : @code{'()}) |
12534 | C'est la liste des greffons disponibles pour les VPN (réseaux privés | |
12535 | virtuels). Un exemple est le paquet @code{network-manager-openvpn}, qui | |
12536 | permet à NetworkManager de gérer des VPN via OpenVPN. | |
bf5c74e7 JL |
12537 | |
12538 | @end table | |
12539 | @end deftp | |
12540 | ||
12541 | @cindex Connman | |
1d8d69c8 JL |
12542 | @deffn {Variable Scheme} connman-service-type |
12543 | C'est le type de service pour lancer @url{https://01.org/connman,Connman}, | |
12544 | un gestionnaire de connexions réseaux. | |
bf5c74e7 | 12545 | |
1d8d69c8 JL |
12546 | Sa valeur doit être un enregistrement @code{connman-configuration} comme |
12547 | dans cet exemple : | |
bf5c74e7 JL |
12548 | |
12549 | @example | |
12550 | (service connman-service-type | |
12551 | (connman-configuration | |
12552 | (disable-vpn? #t))) | |
12553 | @end example | |
12554 | ||
1d8d69c8 | 12555 | Voir plus bas pour des détails sur @code{connman-configuration}. |
bf5c74e7 JL |
12556 | @end deffn |
12557 | ||
1d8d69c8 JL |
12558 | @deftp {Type de données} connman-configuration |
12559 | Type de données représentant la configuration de connman. | |
bf5c74e7 JL |
12560 | |
12561 | @table @asis | |
1d8d69c8 JL |
12562 | @item @code{connman} (par défaut : @var{connman}) |
12563 | Le paquet connman à utiliser. | |
bf5c74e7 | 12564 | |
1d8d69c8 | 12565 | @item @code{disable-vpn?} (par défaut : @code{#f}) |
adfb167f | 12566 | Lorsque la valeur est vraie, désactive le greffon vpn de connman. |
bf5c74e7 JL |
12567 | @end table |
12568 | @end deftp | |
12569 | ||
12570 | @cindex WPA Supplicant | |
1d8d69c8 | 12571 | @defvr {Variable Scheme} wpa-supplicant-service-type |
adfb167f | 12572 | C'est le type du service qui lance@url{https://w1.fi/wpa_supplicant/,WPA |
1d8d69c8 | 12573 | supplicant}, un démon d'authentification requis pour s'authentifier sur des |
adfb167f JL |
12574 | WiFi chiffrés ou des réseaux ethernet. |
12575 | @end defvr | |
bf5c74e7 | 12576 | |
adfb167f JL |
12577 | @deftp {Type de données} wpa-supplicant-configuration |
12578 | Type données qui représente la configuration de WPA Supplicant. | |
bf5c74e7 | 12579 | |
adfb167f JL |
12580 | Il prend les paramètres suivants : |
12581 | ||
12582 | @table @asis | |
12583 | @item @code{wpa-supplicant} (par défaut : @code{wpa-supplicant}) | |
12584 | Le paquet WPA Supplicant à utiliser. | |
12585 | ||
12586 | @item @code{dbus?} (par défaut : @code{#t}) | |
12587 | Indique s'il faut écouter les requêtes sur D-Bus. | |
12588 | ||
12589 | @item @code{pid-file} (par défaut : @code{"/var/run/wpa_supplicant.pid"}) | |
12590 | Où stocker votre fichier de PID. | |
12591 | ||
12592 | @item @code{interface} (par défaut : @code{#f}) | |
12593 | Si une valeur est indiquée, elle doit spécifier le nom d'une interface | |
12594 | réseau que WPA supplicant contrôlera. | |
12595 | ||
12596 | @item @code{config-file} (par défaut : @code{#f}) | |
12597 | Fichier de configuration facultatif à utiliser. | |
12598 | ||
12599 | @item @code{extra-options} (par défaut : @code{'()}) | |
12600 | Liste d'arguments de la ligne de commande supplémentaires à passer au démon. | |
12601 | @end table | |
12602 | @end deftp | |
12603 | ||
12604 | @cindex iptables | |
12605 | @defvr {Variable Scheme} iptables-service-type | |
12606 | This is the service type to set up an iptables configuration. iptables is a | |
12607 | packet filtering framework supported by the Linux kernel. This service | |
12608 | supports configuring iptables for both IPv4 and IPv6. A simple example | |
12609 | configuration rejecting all incoming connections except those to the ssh | |
12610 | port 22 is shown below. | |
bf5c74e7 | 12611 | |
adfb167f JL |
12612 | @lisp |
12613 | (service iptables-service-type | |
12614 | (iptables-configuration | |
12615 | (ipv4-rules (plain-file "iptables.rules" "*filter | |
12616 | :INPUT ACCEPT | |
12617 | :FORWARD ACCEPT | |
12618 | :OUTPUT ACCEPT | |
12619 | -A INPUT -p tcp --dport 22 -j ACCEPT | |
12620 | -A INPUT -j REJECT --reject-with icmp-port-unreachable | |
12621 | COMMIT | |
12622 | ")) | |
12623 | (ipv6-rules (plain-file "ip6tables.rules" "*filter | |
12624 | :INPUT ACCEPT | |
12625 | :FORWARD ACCEPT | |
12626 | :OUTPUT ACCEPT | |
12627 | -A INPUT -p tcp --dport 22 -j ACCEPT | |
12628 | -A INPUT -j REJECT --reject-with icmp6-port-unreachable | |
12629 | COMMIT | |
12630 | ")))) | |
bf5c74e7 JL |
12631 | @end lisp |
12632 | @end defvr | |
12633 | ||
adfb167f JL |
12634 | @deftp {Type de données} iptables-configuration |
12635 | Type de données représentant la configuration d'iptables. | |
12636 | ||
12637 | @table @asis | |
12638 | @item @code{iptables} (par défaut : @code{iptables}) | |
12639 | Le paquet iptables qui fournit @code{iptables-restore} et | |
12640 | @code{ip6tables-restore}. | |
12641 | @item @code{ipv4-rules} (par défaut : @code{%iptables-accept-all-rules}) | |
12642 | Les règles iptables à utiliser. Elles seront passées à | |
12643 | @code{iptables-restore}. Cela peut être un objet « simili-fichier » | |
12644 | (@pxref{G-Expressions, file-like objects}). | |
12645 | @item @code{ipv6-rules} (par défaut : @code{%iptables-accept-all-rules}) | |
12646 | Les règles iptables à utiliser. Elles seront passées à | |
12647 | @code{ip6tables-restore}. Cela peut être un objet « simili-fichier » | |
12648 | (@pxref{G-Expressions, file-like objects}). | |
12649 | @end table | |
12650 | @end deftp | |
12651 | ||
12652 | @cindex NTP (Network Time Protocol), service | |
1d8d69c8 | 12653 | @cindex horloge |
adfb167f JL |
12654 | @defvr {Variable Scheme} ntp-service-type |
12655 | This is the type of the service running the @uref{http://www.ntp.org, | |
12656 | Network Time Protocol (NTP)} daemon, @command{ntpd}. The daemon will keep | |
12657 | the system clock synchronized with that of the specified NTP servers. | |
12658 | ||
12659 | La valeur de ce service est un objet @code{ntpd-configuration}, décrit | |
12660 | ci-dessous. | |
12661 | @end defvr | |
12662 | ||
12663 | @deftp {Type de données} ntp-configuration | |
12664 | C'est le type de données représentant la configuration du service NTP. | |
12665 | ||
12666 | @table @asis | |
12667 | @item @code{servers} (par défaut : @code{%ntp-servers}) | |
12668 | C'est la liste des serveurs (noms d'hôtes) avec lesquels @command{ntpd} sera | |
12669 | synchronisé. | |
12670 | ||
12671 | @item @code{allow-large-adjustment?} (par défaut : @code{#f}) | |
12672 | Détermine si @code{ntpd} peut faire un ajustement initial de plus de | |
12673 | 1@tie{}000 secondes. | |
12674 | ||
12675 | @item @code{ntp} (par défaut : @code{ntp}) | |
12676 | Le paquet NTP à utiliser. | |
12677 | @end table | |
12678 | @end deftp | |
bf5c74e7 | 12679 | |
1d8d69c8 | 12680 | @defvr {Variable Scheme} %ntp-servers |
adfb167f JL |
12681 | Liste de noms d'hôtes à utiliser comme serveurs NTP par défaut. Ce sont les |
12682 | serveurs du @uref{https://www.ntppool.org/fr/, projet NTP Pool} | |
bf5c74e7 JL |
12683 | @end defvr |
12684 | ||
12685 | @cindex OpenNTPD | |
1d8d69c8 JL |
12686 | @deffn {Procédure Scheme} openntpd-service-type |
12687 | Lance le démon NTP @command{ntpd}, implémenté par | |
12688 | @uref{http://www.openntpd.org, OpenNTPD}. Le démon gardera l'horloge | |
12689 | système synchronisée avec celle des serveurs donnés. | |
bf5c74e7 JL |
12690 | |
12691 | @example | |
12692 | (service | |
12693 | openntpd-service-type | |
12694 | (openntpd-configuration | |
12695 | (listen-on '("127.0.0.1" "::1")) | |
12696 | (sensor '("udcf0 correction 70000")) | |
12697 | (constraint-from '("www.gnu.org")) | |
12698 | (constraints-from '("https://www.google.com/")) | |
12699 | (allow-large-adjustment? #t))) | |
12700 | ||
12701 | @end example | |
12702 | @end deffn | |
12703 | ||
1d8d69c8 | 12704 | @deftp {Type de données} openntpd-configuration |
bf5c74e7 | 12705 | @table @asis |
1d8d69c8 JL |
12706 | @item @code{openntpd} (par défaut : @code{(file-append openntpd "/sbin/ntpd")}) |
12707 | L'exécutable openntpd à utiliser. | |
12708 | @item @code{listen-on} (par défaut : @code{'("127.0.0.1" "::1")}) | |
12709 | Une liste d'adresses IP locales ou de noms d'hôtes que devrait écouter le | |
12710 | démon ntpd. | |
12711 | @item @code{query-from} (par défaut : @code{'()}) | |
12712 | Une liste d'adresses IP que le démon devrait utiliser pour les requêtes | |
12713 | sortantes. | |
12714 | @item @code{sensor} (par défaut : @code{'()}) | |
12715 | Spécifie une liste de senseurs de différences de temps que ntpd devrait | |
12716 | utiliser. @code{ntpd} écoutera chaque senseur qui existe et ignorera ceux | |
12717 | qui n'existent pas. Voir @uref{https://man.openbsd.org/ntpd.conf, la | |
12718 | documentation en amont} pour plus d'informations. | |
12719 | @item @code{server} (par défaut : @var{%ntp-servers}) | |
12720 | Spécifie une liste d'adresses IP ou de noms d'hôtes de serveurs NTP avec | |
12721 | lesquels se synchroniser. | |
12722 | @item @code{servers} (par défaut : @code{'()}) | |
12723 | Spécifie une liste d'adresses IP ou de noms d'hôtes de banques de serveurs | |
12724 | NTP avec lesquelles se synchroniser. | |
12725 | @item @code{constraint-from} (par défaut : @code{'()}) | |
12726 | @code{ntpd} peut être configuré pour demander la « Date » à des serveurs | |
12727 | HTTPS de confiance via TLS. Cette information de temps n'est pas utilisée | |
12728 | pour sa précision mais agit comme une contrainte authentifiée, ce qui réduit | |
12729 | l'impact d'une attaque par l'homme du milieu sur le protocole NTP non | |
12730 | authentifié. Spécifie une liste d'URL, d'adresses IP ou de noms d'hôtes de | |
12731 | serveurs HTTPS qui fournissent cette contrainte. | |
12732 | @item @code{constraints-from} (par défaut : @code{'()}) | |
12733 | Comme pour @code{constraint-from}, spécifie une liste d'URL, d'adresses IP | |
12734 | ou de noms d'hôtes de serveurs HTTPS qui fournissent une contrainte. Si les | |
12735 | noms d'hôtes sont résolus en plusieurs adresses IP, @code{ntpd} calculera la | |
12736 | contrainte médiane. | |
12737 | @item @code{allow-large-adjustment?} (par défaut : @code{#f}) | |
12738 | Détermine si @code{ntpd} peut faire un ajustement initial de plus de 180 | |
12739 | secondes. | |
bf5c74e7 JL |
12740 | @end table |
12741 | @end deftp | |
12742 | ||
12743 | @cindex inetd | |
1d8d69c8 JL |
12744 | @deffn {Variable Scheme} inetd-service-type |
12745 | Ce service lance le démon @command{inetd} (@pxref{inetd invocation,,, | |
15f1bff4 | 12746 | inetutils, GNU Inetutils}). @command{inetd} écoute des connexions sur des |
1d8d69c8 JL |
12747 | sockets internet et démarre le programme spécifié uniquement lorsqu'une |
12748 | connexion arrive sur l'un de ces sockets. | |
12749 | ||
12750 | La valeur de ce service est un objet @code{inetd-configuration}. L'exemple | |
12751 | suivant configure le démon @command{inetd} pour qu'il fournisse le service | |
15f1bff4 | 12752 | @command{echo}, ainsi qu'un service smtp qui transfère le trafic smtp par |
1d8d69c8 JL |
12753 | ssh à un serveur @code{smtp-server} derrière une passerelle @code{hostname} |
12754 | : | |
bf5c74e7 JL |
12755 | |
12756 | @example | |
12757 | (service | |
12758 | inetd-service-type | |
12759 | (inetd-configuration | |
12760 | (entries (list | |
12761 | (inetd-entry | |
12762 | (name "echo") | |
12763 | (socket-type 'stream) | |
12764 | (protocol "tcp") | |
12765 | (wait? #f) | |
12766 | (user "root")) | |
12767 | (inetd-entry | |
12768 | (node "127.0.0.1") | |
12769 | (name "smtp") | |
12770 | (socket-type 'stream) | |
12771 | (protocol "tcp") | |
12772 | (wait? #f) | |
12773 | (user "root") | |
12774 | (program (file-append openssh "/bin/ssh")) | |
12775 | (arguments | |
12776 | '("ssh" "-qT" "-i" "/path/to/ssh_key" | |
12777 | "-W" "smtp-server:25" "user@@hostname"))))) | |
12778 | @end example | |
12779 | ||
1d8d69c8 | 12780 | Voir plus bas pour plus de détails sur @code{inetd-configuration}. |
bf5c74e7 JL |
12781 | @end deffn |
12782 | ||
1d8d69c8 JL |
12783 | @deftp {Type de données} inetd-configuration |
12784 | Type de données représentant la configuration de @command{inetd}. | |
bf5c74e7 JL |
12785 | |
12786 | @table @asis | |
1d8d69c8 JL |
12787 | @item @code{program} (par défaut : @code{(file-append inetutils "/libexec/inetd")}) |
12788 | L'exécutable @command{inetd} à utiliser. | |
bf5c74e7 | 12789 | |
1d8d69c8 JL |
12790 | @item @code{entries} (par défaut : @code{'()}) |
12791 | Une liste d'entrées de services @command{inetd}. Chaque entrée devrait être | |
12792 | crée avec le constructeur @code{inetd-entry}. | |
bf5c74e7 JL |
12793 | @end table |
12794 | @end deftp | |
12795 | ||
1d8d69c8 JL |
12796 | @deftp {Type de données} inetd-entry |
12797 | Type de données représentant une entrée dans la configuration | |
12798 | d'@command{inetd}. Chaque entrée correspond à un socket sur lequel | |
12799 | @command{inetd} écoutera les requêtes. | |
bf5c74e7 JL |
12800 | |
12801 | @table @asis | |
1d8d69c8 JL |
12802 | @item @code{node} (par défaut : @code{#f}) |
12803 | Chaîne de caractères facultative, un liste d'adresses locales séparées par | |
12804 | des virgules que @command{inetd} devrait utiliser pour écouter ce service. | |
12805 | @xref{Configuration file,,, inetutils, GNU Inetutils} pour une description | |
12806 | complète de toutes les options. | |
bf5c74e7 | 12807 | @item @code{name} |
1d8d69c8 JL |
12808 | Une chaîne de caractères dont le nom doit correspondre à une entrée de |
12809 | @code{/etc/services}. | |
bf5c74e7 | 12810 | @item @code{socket-type} |
1d8d69c8 | 12811 | Un symbole parmi @code{'stream}, @code{'dgram}, @code{'raw}, @code{'rdm} ou |
bf5c74e7 JL |
12812 | @code{'seqpacket}. |
12813 | @item @code{protocol} | |
1d8d69c8 JL |
12814 | Une chaîne de caractères qui doit correspondre à une entrée dans |
12815 | @code{/etc/protocols}. | |
12816 | @item @code{wait?} (par défaut : @code{#t}) | |
12817 | Indique si @command{inetd} devrait attendre que le serveur ait quitté avant | |
12818 | d'écouter de nouvelles demandes de service. | |
bf5c74e7 | 12819 | @item @code{user} |
adfb167f JL |
12820 | A string containing the user (and, optionally, group) name of the user as |
12821 | whom the server should run. The group name can be specified in a suffix, | |
12822 | separated by a colon or period, i.e.@: @code{"user"}, @code{"user:group"} or | |
12823 | @code{"user.group"}. | |
1d8d69c8 JL |
12824 | @item @code{program} (par défaut : @code{"internal"}) |
12825 | Le programme du serveur qui servira les requêtes, ou @code{"internal"} si | |
12826 | @command{inetd} devrait utiliser un service inclus. | |
3cacfa9e | 12827 | @item @code{arguments} (par défaut : @code{'()}) |
adfb167f JL |
12828 | A list strings or file-like objects, which are the server program's |
12829 | arguments, starting with the zeroth argument, i.e.@: the name of the program | |
12830 | itself. For @command{inetd}'s internal services, this entry must be | |
12831 | @code{'()} or @code{'("internal")}. | |
bf5c74e7 JL |
12832 | @end table |
12833 | ||
1d8d69c8 JL |
12834 | @xref{Configuration file,,, inetutils, GNU Inetutils} pour trouver une |
12835 | discussion plus détaillée de chaque champ de configuration. | |
bf5c74e7 JL |
12836 | @end deftp |
12837 | ||
12838 | @cindex Tor | |
adfb167f JL |
12839 | @defvr {Variable Scheme} tor-service-type |
12840 | C'est le type pour un service qui lance le démon de navigation anonyme | |
12841 | @uref{https://torproject.org, Tor}. Le service est configuré avec un | |
12842 | enregistrement @code{<tor-configuration>}. Par défaut, le démon Tor est | |
12843 | lancé en tant qu'utilisateur non privilégié @code{tor}, membre du groupe | |
12844 | @code{tor}. | |
12845 | ||
12846 | @end defvr | |
12847 | ||
adfb167f JL |
12848 | @deftp {Type de données} tor-configuration |
12849 | @table @asis | |
12850 | @item @code{tor} (par défaut : @code{tor}) | |
12851 | Le paquet qui fournit le démon Tor. Ce paquet doit fournir le démon | |
12852 | @file{bin/tor} relativement à son répertoire de sortie. Le paquet par | |
12853 | défaut est le l'implémentation du @uref{https://www.torproject.org, projet | |
12854 | Tor}. | |
12855 | ||
12856 | @item @code{config-file} (par défaut : @code{(plain-file "empty" "")}) | |
12857 | Le fichier de configuration à utiliser. Il sera ajouté au fichier de | |
12858 | configuration par défaut, et le fichier de configuration final sera passé à | |
12859 | @code{tor} via son option @code{-f}. Cela peut être n'importe quel objet « | |
12860 | simili-fichier » (@pxref{G-Expressions, file-like objects}). Voir @code{man | |
12861 | tor} pour plus de détails sur la syntaxe du fichier de configuration. | |
12862 | ||
12863 | @item @code{hidden-services} (par défaut : @code{'()}) | |
12864 | La liste des enregistrements @code{<hidden-service>} à utiliser. Pour | |
12865 | n'importe quel service cache que vous ajoutez à cette liste, la | |
12866 | configuration appropriée pour activer le service caché sera automatiquement | |
12867 | ajouté au fichier de configuration par défaut. Vous pouvez aussi créer des | |
12868 | enregistrements @code{<hidden-service>} avec la procédure | |
12869 | @code{tor-hidden-service} décrite plus bas. | |
12870 | ||
12871 | @item @code{socks-socket-type} (par défaut : @code{'tcp}) | |
12872 | Le type de socket par défaut que Tor devrait utiliser pour les socket | |
12873 | SOCKS. Cela doit être soit @code{'tcp} soit @code{'unix}. S'il s'agit de | |
12874 | @code{'tcp}, alors Tor écoutera pas défaut sur le port TCP 9050 sur | |
12875 | l'interface de boucle locale (c.-à-d.@: localhost). S'il s'agit de | |
12876 | @code{'unix}, Tor écoutera sur le socket UNIX domain | |
12877 | @file{/var/run/tor/socks-sock}, qui sera inscriptible pour les membres du | |
12878 | groupe @code{tor}. | |
12879 | ||
12880 | Si vous voulez personnaliser le socket SOCKS plus avant, laissez | |
12881 | @code{socks-socket-type} à sa valeur par défaut de @code{'tcp} et utilisez | |
12882 | @code{config-file} pour remplacer les valeurs par défaut avec votre propre | |
12883 | option @code{SocksPort}. | |
12884 | @end table | |
12885 | @end deftp | |
12886 | ||
1d8d69c8 JL |
12887 | @cindex service caché |
12888 | @deffn {Procédure Scheme} tor-hidden-service @var{name} @var{mapping} | |
12889 | Définie un @dfn{service caché} pour Tor nommé @var{name} qui implémente | |
12890 | @var{mapping}. @var{mapping} est une liste de paires de port et d'hôte, | |
12891 | comme dans : | |
bf5c74e7 JL |
12892 | |
12893 | @example | |
12894 | '((22 "127.0.0.1:22") | |
12895 | (80 "127.0.0.1:8080")) | |
12896 | @end example | |
12897 | ||
1d8d69c8 JL |
12898 | Dans cet exemple, le port 22 du service caché est relié au port local 22 et |
12899 | le port 80 est relié au port local 8080. | |
bf5c74e7 | 12900 | |
1d8d69c8 JL |
12901 | Cela crée un répertoire @file{/var/lib/tor/hidden-services/@var{name}} où le |
12902 | fichier @file{hostname} contient le nom d'hôte @code{.onion} pour le service | |
12903 | caché. | |
bf5c74e7 | 12904 | |
1d8d69c8 JL |
12905 | Voir @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the |
12906 | Tor project's documentation} pour trouver plus d'information. | |
bf5c74e7 JL |
12907 | @end deffn |
12908 | ||
1d8d69c8 | 12909 | Le module @code{(gnu services rsync)} fournit les services suivant : |
bf5c74e7 | 12910 | |
1d8d69c8 JL |
12911 | Vous pourriez vouloir un démon rsync si vous voulez que des fichiers soient |
12912 | disponibles pour que n'importe qui (ou juste vous) puisse télécharger des | |
12913 | fichiers existants ou en téléverser des nouveaux. | |
bf5c74e7 | 12914 | |
1d8d69c8 JL |
12915 | @deffn {Variable Scheme} rsync-service-type |
12916 | C'est le type pour le démon @uref{https://rsync.samba.org, rsync}, qui prend | |
12917 | un enregistrement @command{rsync-configuration} comme dans cet exemple : | |
bf5c74e7 JL |
12918 | |
12919 | @example | |
12920 | (service rsync-service-type) | |
12921 | @end example | |
12922 | ||
1d8d69c8 JL |
12923 | Voir plus pas pour trouver des détails à propos de |
12924 | @code{rsync-configuration}. | |
bf5c74e7 JL |
12925 | @end deffn |
12926 | ||
1d8d69c8 JL |
12927 | @deftp {Type de données} rsync-configuration |
12928 | Type de données représentant la configuration de @code{rsync-service}. | |
bf5c74e7 JL |
12929 | |
12930 | @table @asis | |
1d8d69c8 JL |
12931 | @item @code{package} (par défaut : @var{rsync}) |
12932 | Le paquet @code{rsync} à utiliser. | |
bf5c74e7 | 12933 | |
1d8d69c8 JL |
12934 | @item @code{port-number} (par défaut : @code{873}) |
12935 | Le port TCP sur lequel @command{rsync} écoute les connexions entrantes. Si | |
12936 | le port est inférieur à @code{1024}, @command{rsync} doit être démarré en | |
12937 | tant qu'utilisateur et groupe @code{root}. | |
bf5c74e7 | 12938 | |
1d8d69c8 JL |
12939 | @item @code{pid-file} (par défaut : @code{"/var/run/rsyncd/rsyncd.pid"}) |
12940 | Nom du fichier où @command{rsync} écrit son PID. | |
bf5c74e7 | 12941 | |
1d8d69c8 JL |
12942 | @item @code{lock-file} (par défaut : @code{"/var/run/rsyncd/rsyncd.lock"}) |
12943 | Nom du fichier où @command{rsync} écrit son fichier de verrouillage. | |
bf5c74e7 | 12944 | |
1d8d69c8 JL |
12945 | @item @code{log-file} (par défaut : @code{"/var/log/rsyncd.log"}) |
12946 | Nom du fichier où @command{rsync} écrit son fichier de journal. | |
bf5c74e7 | 12947 | |
1d8d69c8 JL |
12948 | @item @code{use-chroot?} (par défaut : @var{#t}) |
12949 | S'il faut utiliser un chroot pour le répertoire partagé de @command{rsync}. | |
bf5c74e7 | 12950 | |
1d8d69c8 JL |
12951 | @item @code{share-path} (par défaut : @file{/srv/rsync}) |
12952 | Emplacement du répertoire partagé de @command{rsync}. | |
bf5c74e7 | 12953 | |
1d8d69c8 JL |
12954 | @item @code{share-comment} (par défaut : @code{"Rsync share"}) |
12955 | Commentaire du répertoire partagé de @command{rsync}. | |
bf5c74e7 | 12956 | |
1d8d69c8 JL |
12957 | @item @code{read-only?} (par défaut : @var{#f}) |
12958 | Permission en écriture sur le répertoire partagé. | |
bf5c74e7 | 12959 | |
1d8d69c8 JL |
12960 | @item @code{timeout} (par défaut : @code{300}) |
12961 | Délai d'attente d'entrée-sortie en secondes. | |
bf5c74e7 | 12962 | |
1d8d69c8 JL |
12963 | @item @code{user} (par défaut : @var{"root"}) |
12964 | Propriétaire du processus @code{rsync}. | |
bf5c74e7 | 12965 | |
1d8d69c8 JL |
12966 | @item @code{group} (par défaut : @var{"root"}) |
12967 | Groupe du processus @code{rsync}. | |
bf5c74e7 | 12968 | |
1d8d69c8 JL |
12969 | @item @code{uid} (par défaut : @var{"rsyncd"}) |
12970 | Nom d'utilisateur ou ID utilisateur en tant que lequel les transferts de | |
12971 | fichiers ont lieu si le démon a été lancé en @code{root}. | |
bf5c74e7 | 12972 | |
1d8d69c8 JL |
12973 | @item @code{gid} (par défaut : @var{"rsyncd"}) |
12974 | Nom du groupe ou ID du groupe qui sera utilisé lors de l'accès au module. | |
bf5c74e7 JL |
12975 | |
12976 | @end table | |
12977 | @end deftp | |
12978 | ||
1d8d69c8 | 12979 | En plus, @code{(gnu services ssh)} fournit les services suivant. |
bf5c74e7 | 12980 | @cindex SSH |
1d8d69c8 | 12981 | @cindex serveur SSH |
bf5c74e7 | 12982 | |
1d8d69c8 | 12983 | @deffn {Procédure Scheme} lsh-service [#:host-key "/etc/lsh/host-key"] @ |
bf5c74e7 | 12984 | [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ |
1d8d69c8 JL |
12985 | [#:allow-empty-passwords? #f] [#:root-login? #f] @ |
12986 | [#:syslog-output? #t] [#:x11-forwarding? #t] @ | |
12987 | [#:tcp/ip-forwarding? #t] [#:password-authentication? #t] @ | |
12988 | [#:public-key-authentication? #t] [#:initialize? #t] | |
12989 | Lance le programme @command{lshd} de @var{lsh} pour écouter sur le port | |
12990 | @var{port-number}. @var{host-key} doit désigner un fichier contenant la | |
12991 | clef d'hôte et ne doit être lisible que par root. | |
12992 | ||
12993 | Lorsque @var{daemonic?} est vrai, @command{lshd} se détachera du terminal | |
12994 | qui le contrôle et enregistrera ses journaux avec syslogd, à moins que | |
12995 | @var{syslog-output?} ne soit faux. Évidemment, cela rend aussi lsh-service | |
12996 | dépendant de l'existence d'un service syslogd. Lorsque @var{pid-file?} est | |
12997 | vrai, @command{lshd} écrit son PID dans le fichier @var{pid-file}. | |
12998 | ||
12999 | Lorsque @var{initialize?} est vrai, la graine et la clef d'hôte seront créés | |
13000 | lors de l'activation du service s'ils n'existent pas encore. Cela peut | |
13001 | prendre du temps et demande une interaction. | |
13002 | ||
13003 | Lorsque @var{initialize?} est faux, c'est à l'utilisateur d'initialiser le | |
13004 | générateur d'aléatoire (@pxref{lsh-make-seed,,, lsh, LSH Manual}) et de crée | |
13005 | une paire de clefs dont la clef privée sera stockée dans le fichier | |
13006 | @var{host-key} (@pxref{lshd basics,,, lsh, LSH Manual}). | |
13007 | ||
13008 | Lorsque @var{interfaces} est vide, lshd écoute les connexions sur toutes les | |
13009 | interfaces réseau ; autrement, @var{interfaces} doit être une liste de noms | |
13010 | d'hôtes et d'adresses. | |
13011 | ||
13012 | @var{allow-empty-passwords?} spécifie si les connexions avec des mots de | |
13013 | passes vides sont acceptés et @var{root-login?} spécifie si la connexion en | |
13014 | root est acceptée. | |
13015 | ||
13016 | Les autres options devraient être évidentes. | |
bf5c74e7 JL |
13017 | @end deffn |
13018 | ||
13019 | @cindex SSH | |
1d8d69c8 JL |
13020 | @cindex serveur SSH |
13021 | @deffn {Variable Scheme} openssh-service-type | |
13022 | C'est le type pour le démon ssh @uref{http://www.openssh.org, OpenSSH}, | |
13023 | @command{sshd}. Sa valeur doit être un enregistrement | |
13024 | @code{openssh-configuration} comme dans cet exemple : | |
bf5c74e7 JL |
13025 | |
13026 | @example | |
13027 | (service openssh-service-type | |
13028 | (openssh-configuration | |
13029 | (x11-forwarding? #t) | |
13030 | (permit-root-login 'without-password) | |
13031 | (authorized-keys | |
13032 | `(("alice" ,(local-file "alice.pub")) | |
13033 | ("bob" ,(local-file "bob.pub")))))) | |
13034 | @end example | |
13035 | ||
1d8d69c8 | 13036 | Voir plus bas pour trouver des détails sur @code{openssh-configuration}. |
bf5c74e7 | 13037 | |
1d8d69c8 JL |
13038 | Ce service peut être étendu avec des clefs autorisées supplémentaires, comme |
13039 | dans cet exemple : | |
bf5c74e7 JL |
13040 | |
13041 | @example | |
13042 | (service-extension openssh-service-type | |
13043 | (const `(("charlie" | |
13044 | ,(local-file "charlie.pub"))))) | |
13045 | @end example | |
13046 | @end deffn | |
13047 | ||
1d8d69c8 JL |
13048 | @deftp {Type de données} openssh-configuration |
13049 | C'est l'enregistrement de la configuration de la commande @command{sshd} | |
13050 | d'OpenSSH. | |
bf5c74e7 JL |
13051 | |
13052 | @table @asis | |
1d8d69c8 JL |
13053 | @item @code{pid-file} (par défaut : @code{"/var/run/sshd.pid"}) |
13054 | Nom du fichier où @command{sshd} écrit son PID. | |
13055 | ||
13056 | @item @code{port-number} (par défaut : @code{22}) | |
13057 | Port TCP sur lequel @command{sshd} écoute les connexions entrantes. | |
13058 | ||
13059 | @item @code{permit-root-login} (par défaut : @code{#f}) | |
13060 | Ce champ détermine si et quand autoriser les connexions en root. Si la | |
13061 | valeur est @code{#f}, les connexions en root sont désactivées ; si la valeur | |
13062 | est @code{#t}, elles sont autorisées. S'il s'agit du symbole | |
13063 | @code{'without-password}, alors les connexions root sont autorisées mais pas | |
13064 | par une authentification par mot de passe. | |
13065 | ||
13066 | @item @code{allow-empty-passwords?} (par défaut : @code{#f}) | |
13067 | Lorsque la valeur est vraie, les utilisateurs avec un mot de passe vide | |
13068 | peuvent se connecter. Sinon, ils ne peuvent pas. | |
13069 | ||
13070 | @item @code{password-authentication?} (par défaut : @code{#t}) | |
13071 | Lorsque la valeur est vraie, les utilisateurs peuvent se connecter avec leur | |
13072 | mot de passe. Sinon, ils doivent utiliser une autre méthode | |
13073 | d'authentification. | |
13074 | ||
13075 | @item @code{public-key-authentication?} (par défaut : @code{#t}) | |
13076 | Lorsque la valeur est vraie, les utilisateurs peuvent se connecter avec leur | |
13077 | clef publique. Sinon, les utilisateurs doivent utiliser une autre méthode | |
13078 | d'authentification. | |
13079 | ||
13080 | Les clefs publiques autorisées sont stockées dans | |
13081 | @file{~/.ssh/authorized_keys}. Ce n'est utilisé que par le protocole | |
13082 | version 2. | |
13083 | ||
13084 | @item @code{x11-forwarding?} (par défaut : @code{#f}) | |
13085 | Lorsque la valeur est vraie, le transfert de connexion du client graphique | |
13086 | X11 est activé — en d'autre termes, les options @option{-X} et @option{-Y} | |
13087 | de @command{ssh} fonctionneront. | |
bf5c74e7 | 13088 | |
adfb167f JL |
13089 | @item @code{allow-agent-forwarding?} (par défaut : @code{#t}) |
13090 | Indique s'il faut autoriser la redirection d'agent. | |
524756d1 | 13091 | |
adfb167f JL |
13092 | @item @code{allow-tcp-forwarding?} (par défaut : @code{#t}) |
13093 | Indique s'il faut autoriser la redirection TCP. | |
524756d1 | 13094 | |
adfb167f JL |
13095 | @item @code{gateway-ports?} (par défaut : @code{#f}) |
13096 | Indique s'il faut autoriser les ports de passerelle. | |
524756d1 | 13097 | |
1d8d69c8 | 13098 | @item @code{challenge-response-authentication?} (par défaut : @code{#f}) |
adfb167f JL |
13099 | Specifies whether challenge response authentication is allowed (e.g.@: via |
13100 | PAM). | |
bf5c74e7 | 13101 | |
1d8d69c8 JL |
13102 | @item @code{use-pam?} (par défaut : @code{#t}) |
13103 | Active l'interface avec le module d'authentification greffable, PAM. Si la | |
13104 | valeur est @code{#t}, cela activera l'authentification PAM avec | |
13105 | @code{challenge-response-authentication?} et | |
13106 | @code{password-authentication?}, en plus des modules de compte et de session | |
13107 | de PAM pour tous les types d'authentification. | |
bf5c74e7 | 13108 | |
1d8d69c8 JL |
13109 | Comme l'authentification par défi de PAM sert généralement un rôle |
13110 | équivalent à l'authentification par mot de passe, vous devriez désactiver | |
13111 | soit @code{challenge-response-authentication?}, soit | |
bf5c74e7 JL |
13112 | @code{password-authentication?}. |
13113 | ||
1d8d69c8 JL |
13114 | @item @code{print-last-log?} (par défaut : @code{#t}) |
13115 | Spécifie si @command{sshd} devrait afficher la date et l'heure de dernière | |
13116 | connexion des utilisateurs lorsqu'un utilisateur se connecte de manière | |
13117 | interactive. | |
bf5c74e7 | 13118 | |
1d8d69c8 | 13119 | @item @code{subsystems} (par défaut : @code{'(("sftp" "internal-sftp"))}) |
adfb167f | 13120 | Configures external subsystems (e.g.@: file transfer daemon). |
bf5c74e7 | 13121 | |
1d8d69c8 JL |
13122 | C'est une liste de paires, composées chacune du nom du sous-système et d'une |
13123 | commande (avec éventuellement des arguments) à exécuter à la demande du | |
13124 | sous-système. | |
bf5c74e7 | 13125 | |
1d8d69c8 JL |
13126 | La commande @command{internal-sftp} implémente un serveur SFTP dans le |
13127 | processus. Autrement, on peut spécifier la commande @command{sftp-server} : | |
bf5c74e7 JL |
13128 | @example |
13129 | (service openssh-service-type | |
13130 | (openssh-configuration | |
13131 | (subsystems | |
13132 | `(("sftp" ,(file-append openssh "/libexec/sftp-server")))))) | |
13133 | @end example | |
13134 | ||
1d8d69c8 JL |
13135 | @item @code{accepted-environment} (par défaut : @code{'()}) |
13136 | Liste de chaînes de caractères qui décrivent les variables d'environnement | |
13137 | qui peuvent être exportées. | |
bf5c74e7 | 13138 | |
1d8d69c8 | 13139 | Chaque chaîne a sa propre ligne. Voir l'option @code{AcceptEnv} dans |
bf5c74e7 JL |
13140 | @code{man sshd_config}. |
13141 | ||
1d8d69c8 JL |
13142 | Cet exemple permet aux clients ssh d'exporter la variable @code{COLORTERM}. |
13143 | Elle est initialisée par les émulateurs de terminaux qui supportent les | |
13144 | couleurs. Vous pouvez l'utiliser dans votre fichier de ressource de votre | |
13145 | shell pour activer les couleurs sur la ligne de commande si cette variable | |
13146 | est initialisée. | |
bf5c74e7 JL |
13147 | |
13148 | @example | |
13149 | (service openssh-service-type | |
13150 | (openssh-configuration | |
13151 | (accepted-environment '("COLORTERM")))) | |
13152 | @end example | |
13153 | ||
1d8d69c8 JL |
13154 | @item @code{authorized-keys} (par défaut : @code{'()}) |
13155 | @cindex clefs autorisées, SSH | |
13156 | @cindex SSH, clefs autorisées | |
13157 | C'est la liste des clefs autorisées. Chaque élément de la liste est un nom | |
13158 | d'utilisateur suivit d'un ou plusieurs objets simili-fichiers qui | |
13159 | représentent les clefs publiques SSH. Par exemple : | |
bf5c74e7 JL |
13160 | |
13161 | @example | |
13162 | (openssh-configuration | |
13163 | (authorized-keys | |
13164 | `(("rekado" ,(local-file "rekado.pub")) | |
13165 | ("chris" ,(local-file "chris.pub")) | |
13166 | ("root" ,(local-file "rekado.pub") ,(local-file "chris.pub"))))) | |
13167 | @end example | |
13168 | ||
13169 | @noindent | |
1d8d69c8 JL |
13170 | enregistre les clefs publiques spécifiées pour les comptes @code{rekado}, |
13171 | @code{chris} et @code{root}. | |
bf5c74e7 | 13172 | |
1d8d69c8 | 13173 | Des clefs autorisées supplémentaires peuvent être spécifiées via |
bf5c74e7 JL |
13174 | @code{service-extension}. |
13175 | ||
1d8d69c8 | 13176 | Remarquez que cela n'interfère @emph{pas} avec l'utilisation de |
bf5c74e7 | 13177 | @file{~/.ssh/authorized_keys}. |
adfb167f JL |
13178 | |
13179 | @item @code{log-level} (par défaut : @code{'info}) | |
13180 | C'est le symbole qui spécifie le niveau de journalisation : @code{quiet}, | |
13181 | @code{fatal}, @code{error}, @code{info}, @code{verbose}, @code{debug}, etc. | |
13182 | Voir la page de manuel de @file{sshd_config} pour trouver la liste complète | |
13183 | des noms de niveaux. | |
13184 | ||
15f1bff4 JL |
13185 | @item @code{extra-content} (par défaut : @code{""}) |
13186 | This field can be used to append arbitrary text to the configuration file. | |
13187 | It is especially useful for elaborate configurations that cannot be | |
13188 | expressed otherwise. This configuration, for example, would generally | |
13189 | disable root logins, but permit them from one specific IP address: | |
13190 | ||
13191 | @example | |
13192 | (openssh-configuration | |
13193 | (extra-content "\ | |
13194 | Match Address 192.168.0.1 | |
13195 | PermitRootLogin yes")) | |
13196 | @end example | |
13197 | ||
bf5c74e7 JL |
13198 | @end table |
13199 | @end deftp | |
13200 | ||
1d8d69c8 JL |
13201 | @deffn {Procédure Scheme} dropbear-service [@var{config}] |
13202 | Lance le @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,démon SSH | |
13203 | Dropbear} avec la configuration @var{config} donnée, un objet | |
13204 | @code{<dropbear-configuration>}. | |
bf5c74e7 | 13205 | |
1d8d69c8 | 13206 | Par exemple, pour spécifier un service Dropbear qui écoute sur le port 1234, |
15f1bff4 | 13207 | ajoutez cet appel au champ @code{services} de votre système d'exploitation : |
bf5c74e7 JL |
13208 | |
13209 | @example | |
13210 | (dropbear-service (dropbear-configuration | |
13211 | (port-number 1234))) | |
13212 | @end example | |
13213 | @end deffn | |
13214 | ||
1d8d69c8 JL |
13215 | @deftp {Type de données} dropbear-configuration |
13216 | Ce type de données représente la configuration d'un démon SSH Dropbear. | |
bf5c74e7 JL |
13217 | |
13218 | @table @asis | |
1d8d69c8 JL |
13219 | @item @code{dropbear} (par défaut : @var{dropbear}) |
13220 | Le paquet Dropbear à utiliser. | |
bf5c74e7 | 13221 | |
1d8d69c8 JL |
13222 | @item @code{port-number} (par défaut : 22) |
13223 | Le port TCP sur lequel le démon attend des connexions entrantes. | |
bf5c74e7 | 13224 | |
1d8d69c8 JL |
13225 | @item @code{syslog-output?} (par défaut : @code{#t}) |
13226 | Indique s'il faut activer la sortie vers syslog. | |
bf5c74e7 | 13227 | |
1d8d69c8 JL |
13228 | @item @code{pid-file} (par défaut : @code{"/var/run/dropbear.pid"}) |
13229 | Nom du fichier de PID du démon. | |
bf5c74e7 | 13230 | |
1d8d69c8 JL |
13231 | @item @code{root-login?} (par défaut : @code{#f}) |
13232 | Indique s'il faut autoriser les connexions en @code{root}. | |
bf5c74e7 | 13233 | |
1d8d69c8 JL |
13234 | @item @code{allow-empty-passwords?} (par défaut : @code{#f}) |
13235 | Indique s'il faut autoriser les mots de passes vides. | |
bf5c74e7 | 13236 | |
1d8d69c8 JL |
13237 | @item @code{password-authentication?} (par défaut : @code{#t}) |
13238 | Indique s'il faut autoriser l'authentification par mot de passe. | |
bf5c74e7 JL |
13239 | @end table |
13240 | @end deftp | |
13241 | ||
1d8d69c8 JL |
13242 | @defvr {Variable Scheme} %facebook-host-aliases |
13243 | Cette variable contient une chaîne de caractères à utiliser dans | |
13244 | @file{/etc/hosts} (@pxref{Host Names,,, libc, The GNU C Library Reference | |
13245 | Manual}). Chaque ligne contient une entrée qui fait correspondre les noms | |
13246 | des serveurs connus du service en ligne Facebook — p.@: ex.@: | |
13247 | @code{www.facebook.com} — à l'hôte local — @code{127.0.0.1} ou son | |
13248 | équivalent en IPv6, @code{::1}. | |
bf5c74e7 | 13249 | |
1d8d69c8 JL |
13250 | Cette variable est typiquement utilisée dans le champ @code{hosts-file} |
13251 | d'une déclaration @code{operating-system} (@pxref{Référence de système d'exploitation, @file{/etc/hosts}}) : | |
bf5c74e7 JL |
13252 | |
13253 | @example | |
13254 | (use-modules (gnu) (guix)) | |
13255 | ||
13256 | (operating-system | |
1d8d69c8 | 13257 | (host-name "mamachine") |
bf5c74e7 JL |
13258 | ;; ... |
13259 | (hosts-file | |
1d8d69c8 JL |
13260 | ;; Crée un fichier /etc/hosts avec des alias pour « localhost » |
13261 | ;; et « mamachine », ainsi que pour les serveurs de Facebook. | |
bf5c74e7 JL |
13262 | (plain-file "hosts" |
13263 | (string-append (local-host-aliases host-name) | |
13264 | %facebook-host-aliases)))) | |
13265 | @end example | |
13266 | ||
1d8d69c8 JL |
13267 | Ce mécanisme peut éviter que des programmes qui tournent localement, comme |
13268 | des navigateurs Web, ne se connectent à Facebook. | |
bf5c74e7 JL |
13269 | @end defvr |
13270 | ||
1d8d69c8 JL |
13271 | Le module @code{(gnu services avahi)} fourni la définition suivante. |
13272 | ||
15f1bff4 JL |
13273 | @defvr {Scheme Variable} avahi-service-type |
13274 | This is the service that runs @command{avahi-daemon}, a system-wide | |
13275 | mDNS/DNS-SD responder that allows for service discovery and | |
13276 | ``zero-configuration'' host name lookups (see @uref{http://avahi.org/}). | |
13277 | Its value must be a @code{zero-configuration} record---see below. | |
13278 | ||
13279 | This service extends the name service cache daemon (nscd) so that it can | |
13280 | resolve @code{.local} host names using | |
13281 | @uref{http://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}. @xref{Name Service Switch}, for information on host name resolution. | |
13282 | ||
13283 | Additionally, add the @var{avahi} package to the system profile so that | |
13284 | commands such as @command{avahi-browse} are directly usable. | |
13285 | @end defvr | |
13286 | ||
13287 | @deftp {Data Type} avahi-configuration | |
13288 | Data type representation the configuration for Avahi. | |
13289 | ||
13290 | @table @asis | |
13291 | ||
13292 | @item @code{host-name} (default: @code{#f}) | |
13293 | If different from @code{#f}, use that as the host name to publish for this | |
13294 | machine; otherwise, use the machine's actual host name. | |
13295 | ||
13296 | @item @code{publish?} (default: @code{#t}) | |
13297 | When true, allow host names and services to be published (broadcast) over | |
13298 | the network. | |
13299 | ||
13300 | @item @code{publish-workstation?} (default: @code{#t}) | |
13301 | When true, @command{avahi-daemon} publishes the machine's host name and IP | |
13302 | address via mDNS on the local network. To view the host names published on | |
13303 | your local network, you can run: | |
13304 | ||
13305 | @example | |
13306 | avahi-browse _workstation._tcp | |
13307 | @end example | |
13308 | ||
13309 | @item @code{wide-area?} (default: @code{#f}) | |
13310 | When true, DNS-SD over unicast DNS is enabled. | |
13311 | ||
13312 | @item @code{ipv4?} (default: @code{#t}) | |
13313 | @itemx @code{ipv6?} (default: @code{#t}) | |
13314 | These fields determine whether to use IPv4/IPv6 sockets. | |
13315 | ||
13316 | @item @code{domains-to-browse} (default: @code{'()}) | |
13317 | This is a list of domains to browse. | |
13318 | @end table | |
13319 | @end deftp | |
bf5c74e7 | 13320 | |
1d8d69c8 JL |
13321 | @deffn {Variable Scheme} openvswitch-service-type |
13322 | C'est le type du service @uref{http://www.openvswitch.org, Open vSwitch}, | |
13323 | dont la valeur devrait être un objet @code{openvswitch-configuration}. | |
bf5c74e7 JL |
13324 | @end deffn |
13325 | ||
1d8d69c8 JL |
13326 | @deftp {Type de données} openvswitch-configuration |
13327 | Type de données représentant la configuration de Open vSwitch, un | |
13328 | commutateur virtuel multiniveaux conçu pour rendre possible l'automatisation | |
13329 | massive des réseaux avec des extensions programmables. | |
bf5c74e7 JL |
13330 | |
13331 | @table @asis | |
1d8d69c8 JL |
13332 | @item @code{package} (par défaut : @var{openvswitch}) |
13333 | Objet de paquet de Open vSwitch. | |
bf5c74e7 JL |
13334 | |
13335 | @end table | |
13336 | @end deftp | |
13337 | ||
3cacfa9e | 13338 | @node Système de fenêtrage X |
15f1bff4 | 13339 | @subsection Système de fenêtrage X |
bf5c74e7 JL |
13340 | |
13341 | @cindex X11 | |
1d8d69c8 JL |
13342 | @cindex Système de fenêtrage X |
13343 | @cindex gestionnaire de connexion | |
13344 | Le support pour le système d'affichage graphique X Window — en particulier | |
13345 | Xorg — est fournit par le module @code{(gnu services xorg)}. Remarquez | |
13346 | qu'il n'y a pas de procédure @code{xorg-service}. À la place, le serveur X | |
13347 | est démarré par le @dfn{gestionnaire de connexion}, par défaut SLiM. | |
13348 | ||
13349 | @cindex gestionnaire de fenêtre | |
13350 | Pour utiliser X11, vous devez installer au moins un @dfn{gestionnaire de | |
13351 | fenêtre} — par exemple les paquets @code{windowmaker} ou @code{openbox} — de | |
13352 | préférence en l'ajoutant au champ @code{packages} de votre définition de | |
13353 | système d'exploitation (@pxref{Référence de système d'exploitation, system-wide | |
13354 | packages}). | |
13355 | ||
13356 | @defvr {Variable Scheme} slim-service-type | |
13357 | C'est de type pour le gestionnaire de connexion graphique SLiM pour X11. | |
13358 | ||
13359 | @cindex types de sessions (X11) | |
13360 | @cindex X11, types de sessions | |
13361 | SLiM cherche des @dfn{types de sessions} définies par les fichiers | |
13362 | @file{.desktop} dans @file{/run/current-system/profile/share/xsessions} et | |
13363 | permet aux utilisateurs de choisir une session depuis l'écran de connexion | |
13364 | avec @kbd{F1}. Les paquets comme @code{xfce}, @code{sawfish} et | |
13365 | @code{ratpoison} fournissent des fichiers @file{.desktop} ; les ajouter à | |
13366 | l'ensemble des paquets du système les rendra automatiquement disponibles sur | |
13367 | l'écran de connexion. | |
13368 | ||
13369 | En plus, les fichiers @file{~/.xsession} sont honorées. Lorsqu'il est | |
13370 | disponible, @file{~/.xsession} doit être un fichier exécutable qui démarre | |
13371 | un gestionnaire de fenêtre au un autre client X. | |
bf5c74e7 JL |
13372 | @end defvr |
13373 | ||
1d8d69c8 JL |
13374 | @deftp {Type de données} slim-configuration |
13375 | Type de données représentant la configuration de @code{slim-service-type}. | |
bf5c74e7 JL |
13376 | |
13377 | @table @asis | |
1d8d69c8 JL |
13378 | @item @code{allow-empty-passwords?} (par défaut : @code{#t}) |
13379 | S'il faut autoriser les connexions avec un mot de passe vide. | |
bf5c74e7 | 13380 | |
1d8d69c8 JL |
13381 | @item @code{auto-login?} (par défaut : @code{#f}) |
13382 | @itemx @code{default-user} (par défaut : @code{""}) | |
13383 | Lorsque @code{auto-login?} est faux, SLiM présent un écran de connexion. | |
bf5c74e7 | 13384 | |
1d8d69c8 JL |
13385 | Lorsque @code{auto-login?} est vrai, SLiM se connecte directement en tant |
13386 | que @code{default-user}. | |
bf5c74e7 | 13387 | |
1d8d69c8 JL |
13388 | @item @code{theme} (par défaut : @code{%default-slim-theme}) |
13389 | @itemx @code{theme-name} (par défaut : @code{%default-slim-theme-name}) | |
13390 | Le thème graphique à utiliser et son nom. | |
bf5c74e7 | 13391 | |
1d8d69c8 JL |
13392 | @item @code{auto-login-session} (par défaut : @code{#f}) |
13393 | Si la valeur est vraie, elle doit être le nom d'un exécutable à démarrer | |
13394 | comme session par défaut — p.@: ex.@: @code{(file-append windowmaker | |
13395 | "/bin/windowmaker")}. | |
bf5c74e7 | 13396 | |
1d8d69c8 JL |
13397 | Si la valeur est fausse, une session décrite par l'un des fichiers |
13398 | @file{.desktop} disponibles dans @code{/run/current-system/profile} et | |
13399 | @code{~/.guix-profile} sera utilisée. | |
bf5c74e7 | 13400 | |
3cacfa9e | 13401 | @quotation Remarque |
1d8d69c8 JL |
13402 | Vous devez installer au moins un gestionnaire de fenêtres dans le profil du |
13403 | système ou dans votre profil utilisateur. Sinon, si | |
13404 | @code{auto-login-session} est faux, vous ne serez jamais capable de vous | |
13405 | connecter. | |
bf5c74e7 JL |
13406 | @end quotation |
13407 | ||
1d8d69c8 JL |
13408 | @item @code{startx} (par défaut : @code{(xorg-start-command)}) |
13409 | La commande utilisée pour démarrer le serveur graphique X11. | |
bf5c74e7 | 13410 | |
1d8d69c8 JL |
13411 | @item @code{xauth} (par défaut : @code{xauth}) |
13412 | Le paquet XAuth à utiliser. | |
bf5c74e7 | 13413 | |
1d8d69c8 JL |
13414 | @item @code{shepherd} (par défaut : @code{shepherd}) |
13415 | Le paquet Shepherd à utiliser pour invoquer @command{halt} et | |
13416 | @command{reboot}. | |
bf5c74e7 | 13417 | |
1d8d69c8 JL |
13418 | @item @code{sessreg} (par défaut : @code{sessreg}) |
13419 | Le paquet sessreg à utiliser pour enregistrer la session. | |
bf5c74e7 | 13420 | |
1d8d69c8 JL |
13421 | @item @code{slim} (par défaut : @code{slim}) |
13422 | Le paquet SLiM à utiliser. | |
bf5c74e7 JL |
13423 | @end table |
13424 | @end deftp | |
13425 | ||
1d8d69c8 JL |
13426 | @defvr {Variable Scheme} %default-theme |
13427 | @defvrx {Variable Scheme} %default-theme-name | |
13428 | Le thème SLiM par défaut et son nom. | |
bf5c74e7 JL |
13429 | @end defvr |
13430 | ||
13431 | ||
1d8d69c8 JL |
13432 | @deftp {Type de données} sddm-configuration |
13433 | C'est le type de données représentant la configuration du service sddm. | |
bf5c74e7 JL |
13434 | |
13435 | @table @asis | |
1d8d69c8 JL |
13436 | @item @code{display-server} (par défaut : "x11") |
13437 | Choisit le serveur d'affichage à utiliser pour l'écran d'accueil. Les | |
13438 | valeurs valides sont « x11 » et « wayland ». | |
bf5c74e7 | 13439 | |
1d8d69c8 JL |
13440 | @item @code{numlock} (par défaut : "on") |
13441 | Les valeurs valides sont « on », « off » ou « none ». | |
bf5c74e7 | 13442 | |
1d8d69c8 JL |
13443 | @item @code{halt-command} (par défaut : @code{#~(string-apppend #$shepherd "/sbin/halt")}) |
13444 | La commande à lancer à l'arrêt du système. | |
bf5c74e7 | 13445 | |
1d8d69c8 JL |
13446 | @item @code{reboot-command} (par défaut : @code{#~(string-append #$shepherd "/sbin/reboot")}) |
13447 | La commande à lancer lors du redémarrage du système. | |
bf5c74e7 | 13448 | |
1d8d69c8 JL |
13449 | @item @code{theme} (par défaut : "maldives") |
13450 | Le thème à utiliser. Les thèmes par défaut fournis par SDDM sont « elarun » | |
13451 | et « maldives ». | |
bf5c74e7 | 13452 | |
1d8d69c8 JL |
13453 | @item @code{themes-directory} (par défaut : "/run/current-system/profile/share/sddm/themes") |
13454 | Le répertoire où se trouvent les thèmes. | |
bf5c74e7 | 13455 | |
1d8d69c8 JL |
13456 | @item @code{faces-directory} (par défaut : "/run/current-system/profile/share/sddm/faces") |
13457 | Répertoire où se trouvent les avatars. | |
bf5c74e7 | 13458 | |
1d8d69c8 JL |
13459 | @item @code{default-path} (par défaut : "/run/current-system/profile/bin") |
13460 | Le PATH par défaut à utiliser. | |
bf5c74e7 | 13461 | |
1d8d69c8 JL |
13462 | @item @code{minimum-uid} (par défaut : 1000) |
13463 | UID minimum pour être affiché dans SDDM. | |
bf5c74e7 | 13464 | |
1d8d69c8 JL |
13465 | @item @code{maximum-uid} (par défaut : 2000) |
13466 | UID maximum pour être affiché dans SDDM. | |
bf5c74e7 | 13467 | |
1d8d69c8 JL |
13468 | @item @code{remember-last-user?} (par défaut : #t) |
13469 | S'il faut se rappeler le dernier utilisateur connecté. | |
bf5c74e7 | 13470 | |
1d8d69c8 JL |
13471 | @item @code{remember-last-session?} (par défaut : #t) |
13472 | S'il faut se rappeler la dernière session. | |
bf5c74e7 | 13473 | |
1d8d69c8 JL |
13474 | @item @code{hide-users} (par défaut : "") |
13475 | Les noms d'utilisateurs à cacher sur l'écran d'accueil de SDDM. | |
bf5c74e7 | 13476 | |
1d8d69c8 JL |
13477 | @item @code{hide-shells} (par défaut : @code{#~(string-append #$shadow "/sbin/nologin")}) |
13478 | Les utilisateurs avec les shells listés seront cachés sur l'écran d'accueil | |
13479 | de SDDM. | |
bf5c74e7 | 13480 | |
1d8d69c8 JL |
13481 | @item @code{session-command} (par défaut : @code{#~(string-append #$sddm "/share/sddm/scripts/wayland-session")}) |
13482 | Le script à lancer avant de démarrer une session wayland. | |
bf5c74e7 | 13483 | |
1d8d69c8 JL |
13484 | @item @code{sessions-directory} (par défaut : "/run/current-system/profile/share/wayland-sessions") |
13485 | Le répertoire où trouver les fichiers .desktop qui démarrent des sessions | |
13486 | wayland. | |
bf5c74e7 | 13487 | |
1d8d69c8 JL |
13488 | @item @code{xorg-server-path} (par défaut : @code{xorg-start-command}) |
13489 | Chemin vers xorg-server. | |
bf5c74e7 | 13490 | |
1d8d69c8 JL |
13491 | @item @code{xauth-path} (par défaut : @code{#~(string-append #$xauth "/bin/xauth")}) |
13492 | Chemin vers xauth. | |
bf5c74e7 | 13493 | |
1d8d69c8 JL |
13494 | @item @code{xephyr-path} (par défaut : @code{#~(string-append #$xorg-server "/bin/Xephyr")}) |
13495 | Chemin vers Xephyr. | |
bf5c74e7 | 13496 | |
1d8d69c8 JL |
13497 | @item @code{xdisplay-start} (par défaut : @code{#~(string-append #$sddm "/share/sddm/scripts/Xsetup")}) |
13498 | Le script à lancer après avoir démarré xorg-server. | |
bf5c74e7 | 13499 | |
1d8d69c8 JL |
13500 | @item @code{xdisplay-stop} (par défaut : @code{#~(string-append #$sddm "/share/sddm/scripts/Xstop")}) |
13501 | Le script à lancer avant d'arrêter xorg-server. | |
bf5c74e7 | 13502 | |
2cf2c778 | 13503 | @item @code{xsession-command} (par défaut : @code{xinitrc}) |
1d8d69c8 | 13504 | Le script à lancer avant de démarrer une session X. |
bf5c74e7 | 13505 | |
1d8d69c8 JL |
13506 | @item @code{xsessions-directory} (par défaut : "/run/current-system/profile/share/xsessions") |
13507 | Répertoire où trouver les fichiers .desktop pour les sessions X. | |
bf5c74e7 | 13508 | |
1d8d69c8 JL |
13509 | @item @code{minimum-vt} (par défaut : 7) |
13510 | VT minimal à utiliser. | |
bf5c74e7 | 13511 | |
1d8d69c8 JL |
13512 | @item @code{xserver-arguments} (par défaut : "-nolisten tcp") |
13513 | Arguments à passer à xorg-server. | |
bf5c74e7 | 13514 | |
1d8d69c8 JL |
13515 | @item @code{auto-login-user} (par défaut : "") |
13516 | Utilisateur à utiliser pour la connexion automatique. | |
bf5c74e7 | 13517 | |
1d8d69c8 JL |
13518 | @item @code{auto-login-session} (par défaut : "") |
13519 | Le fichier desktop à utiliser pour la connexion automatique. | |
bf5c74e7 | 13520 | |
1d8d69c8 JL |
13521 | @item @code{relogin?} (par défaut : #f) |
13522 | S'il faut se reconnecter après la déconnexion. | |
bf5c74e7 JL |
13523 | |
13524 | @end table | |
13525 | @end deftp | |
13526 | ||
1d8d69c8 JL |
13527 | @cindex gestionnaire de connexion |
13528 | @cindex connexion X11 | |
13529 | @deffn {Procédure Scheme} sddm-service config | |
13530 | Renvoie un service qui démarre le gestionnaire de connexion graphique SDDM | |
13531 | avec une configuration de type @code{<sddm-configuration>}. | |
bf5c74e7 JL |
13532 | |
13533 | @example | |
13534 | (sddm-service (sddm-configuration | |
13535 | (auto-login-user "Alice") | |
13536 | (auto-login-session "xfce.desktop"))) | |
13537 | @end example | |
13538 | @end deffn | |
13539 | ||
1d8d69c8 | 13540 | @deffn {Procédure Scheme} xorg-start-command [#:guile] @ |
15f1bff4 JL |
13541 | [#:modules %default-xorg-modules] @ [#:fonts %default-xorg-fonts] @ |
13542 | [#:configuration-file (xorg-configuration-file @dots{})] @ [#:xorg-server | |
13543 | @var{xorg-server}] [#:xserver-arguments '("-nolisten" "tcp")] Return a | |
13544 | @code{startx} script in which @var{modules}, a list of X module packages, | |
13545 | and @var{fonts}, a list of X font directories, are available. See | |
13546 | @code{xorg-wrapper} for more details on the arguments. The result should be | |
13547 | used in place of @code{startx}. | |
1d8d69c8 JL |
13548 | |
13549 | Habituellement le serveur X est démarré par un gestionnaire de connexion. | |
bf5c74e7 JL |
13550 | @end deffn |
13551 | ||
15f1bff4 JL |
13552 | @cindex @code{-listen tcp}, for X11. |
13553 | This procedure is useful to override command line options for the X server, | |
13554 | such as having it listen to over TCP: | |
13555 | ||
13556 | @example | |
13557 | (operating-system | |
13558 | ... | |
13559 | (services | |
13560 | (modify-services %desktop-services | |
13561 | (slim-service-type config => | |
13562 | (slim-configuration | |
13563 | (inherit config) | |
13564 | (startx (xorg-start-command | |
13565 | #:xserver-arguments '("-listen" "tcp")))))))) | |
13566 | @end example | |
13567 | ||
1d8d69c8 JL |
13568 | @deffn {Procédure Scheme} xorg-configuration-file @ |
13569 | [#:modules %default-xorg-modules] @ | |
13570 | [#:fonts %default-xorg-fonts] @ | |
13571 | [#:drivers '()] [#:resolutions '()] [#:extra-config '()] | |
13572 | Renvoie un fichier de configuration pour le serveur Xorg qui contient des | |
13573 | chemins de recherche pour tous les pilotes communs. | |
13574 | ||
13575 | @var{modules} doit être une liste de @dfn{paquets de modules} chargés par le | |
13576 | serveur Xorg — p.@: ex.@: @code{xf86-video-vesa}, @code{xf86-input-keyboard} | |
13577 | etc. @var{fonts} doit être une liste de répertoires de polices à ajouter au | |
13578 | @dfn{chemin de polices} du serveur. | |
13579 | ||
13580 | @var{drivers} doit être soit la liste vide, auquel cas Xorg choisis un | |
13581 | pilote graphique automatiquement, soit une liste de noms de pilotes qui | |
13582 | seront essayés dans cet ordre — p.@: ex.@: @code{("modesetting" "vesa")}. | |
13583 | ||
13584 | De même, lorsque @var{resolutions} est la liste vide, Xorg choisis une | |
13585 | résolution d'écran appropriée ; autrement, ce doit être une liste de | |
13586 | résolutions — p.@: ex.@: @code{((1024 768) (640 480))}. | |
13587 | ||
13588 | Enfin, @var{extra-config} est une liste de chaînes de caractères ou d'objets | |
13589 | ajoutés au fichier de configuration. Elle est utilisée pour passer du texte | |
13590 | supplémentaire à être ajouté directement au fichier de configuration. | |
13591 | ||
13592 | @cindex disposition clavier | |
13593 | @cindex disposition du clavier | |
13594 | Cette procédure est particulièrement utile pour configurer une disposition | |
13595 | de clavier différente de la disposition US par défaut. Par exemple, pour | |
13596 | utiliser la disposition « bépo » par défaut sur le gestionnaire d'affichage | |
13597 | : | |
7f3f72b2 JL |
13598 | |
13599 | @example | |
13600 | (define bepo-evdev | |
13601 | "Section \"InputClass\" | |
13602 | Identifier \"evdev keyboard catchall\" | |
13603 | Driver \"evdev\" | |
13604 | MatchIsKeyboard \"on\" | |
13605 | Option \"xkb_layout\" \"fr\" | |
13606 | Option \"xkb_variant\" \"bepo\" | |
13607 | EndSection") | |
13608 | ||
13609 | (operating-system | |
13610 | ... | |
13611 | (services | |
13612 | (modify-services %desktop-services | |
13613 | (slim-service-type config => | |
13614 | (slim-configuration | |
13615 | (inherit config) | |
13616 | (startx (xorg-start-command | |
13617 | #:configuration-file | |
13618 | (xorg-configuration-file | |
13619 | #:extra-config | |
13620 | (list bepo-evdev))))))))) | |
13621 | @end example | |
13622 | ||
1d8d69c8 JL |
13623 | La ligne @code{MatchIsKeyboard} spécifie que nous n'appliquons la |
13624 | configuration qu'aux claviers. Sans cette ligne, d'autres périphériques | |
13625 | comme les pavés tactiles ne fonctionneront pas correctement parce qu'ils | |
13626 | seront associés au mauvais pilote. Dans cet exemple, l'utilisateur | |
13627 | utiliserait typiquement @code{setxkbmap fr bepo} pour utiliser sa | |
13628 | disposition de clavier préférée une fois connecté. Le premier argument | |
13629 | correspond à la disposition, tandis que le second argument correspond à la | |
13630 | variante. La ligne @code{xkb_variant} peut être omise pour choisir la | |
13631 | variante par défaut. | |
bf5c74e7 JL |
13632 | @end deffn |
13633 | ||
1d8d69c8 JL |
13634 | @deffn {Procédure Scheme} screen-locker-service @var{package} [@var{program}] |
13635 | Ajoute @var{package}, un paquet pour un verrouiller l'écran ou un | |
13636 | économiseur d'écran dont la commande est @var{program}, à l'ensemble des | |
13637 | programmes setuid et lui ajoute une entrée PAM. Par exemple : | |
bf5c74e7 JL |
13638 | |
13639 | @lisp | |
13640 | (screen-locker-service xlockmore "xlock") | |
13641 | @end lisp | |
13642 | ||
1d8d69c8 | 13643 | rend utilisable le bon vieux XlockMore. |
bf5c74e7 JL |
13644 | @end deffn |
13645 | ||
13646 | ||
3cacfa9e | 13647 | @node Services d'impression |
15f1bff4 | 13648 | @subsection Services d'impression |
bf5c74e7 | 13649 | |
1d8d69c8 | 13650 | @cindex support des imprimantes avec CUPS |
15f1bff4 JL |
13651 | The @code{(gnu services cups)} module provides a Guix service definition for |
13652 | the CUPS printing service. To add printer support to a Guix system, add a | |
13653 | @code{cups-service} to the operating system definition: | |
bf5c74e7 | 13654 | |
1d8d69c8 JL |
13655 | @deffn {Variable Scheme} cups-service-type |
13656 | Le type de service pour un serveur d'impression CUPS. Sa valeur devrait | |
13657 | être une configuration CUPS valide (voir plus bas). Pour utiliser les | |
13658 | paramètres par défaut, écrivez simplement : | |
bf5c74e7 JL |
13659 | @example |
13660 | (service cups-service-type) | |
13661 | @end example | |
13662 | @end deffn | |
13663 | ||
1d8d69c8 JL |
13664 | La configuration de CUPS contrôle les paramètres de base de votre |
13665 | installation CUPS : sur quelles interfaces il doit écouter, que faire si un | |
13666 | travail échoue, combien de journalisation il faut faire, etc. Pour ajouter | |
13667 | une imprimante, vous devrez visiter l'URL @url{http://localhost:631} ou | |
13668 | utiliser un outil comme les services de configuration d'imprimante de | |
13669 | GNOME. Par défaut, la configuration du service CUPS générera un certificat | |
13670 | auto-signé si besoin, pour les connexions sécurisée avec le serveur | |
13671 | d'impression. | |
bf5c74e7 | 13672 | |
adfb167f | 13673 | Supposons que vous souhaitiez activer l'interface Web de CUPS et ajouter le |
15f1bff4 | 13674 | support pour les imprimantes Epson via le paquet @code{escpr} et pour les |
adfb167f JL |
13675 | imprimantes HP via le paquet @code{hplip-minimal}. Vous pouvez le faire |
13676 | directement, comme ceci (vous devez utiliser le module @code{(gnu packages | |
13677 | cups)}) : | |
bf5c74e7 JL |
13678 | |
13679 | @example | |
13680 | (service cups-service-type | |
13681 | (cups-configuration | |
13682 | (web-interface? #t) | |
13683 | (extensions | |
524756d1 | 13684 | (list cups-filters escpr hplip-minimal)))) |
bf5c74e7 JL |
13685 | @end example |
13686 | ||
adfb167f JL |
13687 | Remarque : si vous souhaitez utiliser la GUI basée sur Qt5 qui provient du |
13688 | paquet hplip, nous vous suggérons d'installer le paquet @code{hplip}, soit | |
13689 | dans votre configuration d'OS, soit en tant qu'utilisateur. | |
524756d1 | 13690 | |
1d8d69c8 JL |
13691 | Les paramètres de configuration disponibles sont les suivants. Chaque |
13692 | définition des paramètres est précédé par son type ; par exemple, | |
13693 | @samp{string-list foo} indique que le paramètre @code{foo} devrait être | |
13694 | spécifié comme une liste de chaînes de caractères. Il y a aussi une manière | |
13695 | de spécifier la configuration comme une chaîne de caractères, si vous avez | |
13696 | un vieux fichier @code{cupsd.conf} que vous voulez porter depuis un autre | |
13697 | système ; voir la fin pour plus de détails. | |
bf5c74e7 JL |
13698 | |
13699 | @c The following documentation was initially generated by | |
13700 | @c (generate-documentation) in (gnu services cups). Manually maintained | |
13701 | @c documentation is better, so we shouldn't hesitate to edit below as | |
13702 | @c needed. However if the change you want to make to this documentation | |
13703 | @c can be done in an automated way, it's probably easier to change | |
13704 | @c (generate-documentation) than to make it below and have to deal with | |
13705 | @c the churn as CUPS updates. | |
13706 | ||
13707 | ||
1d8d69c8 | 13708 | Les champs de @code{cups-configuration} disponibles sont : |
bf5c74e7 | 13709 | |
1d8d69c8 JL |
13710 | @deftypevr {paramètre de @code{cups-configuration}} package cups |
13711 | Le paquet CUPS. | |
bf5c74e7 JL |
13712 | @end deftypevr |
13713 | ||
1d8d69c8 JL |
13714 | @deftypevr {paramètre de @code{cups-configuration}} package-list extensions |
13715 | Pilotes et autres extensions du paquet CUPS. | |
bf5c74e7 JL |
13716 | @end deftypevr |
13717 | ||
1d8d69c8 JL |
13718 | @deftypevr {paramètre de @code{cups-configuration}} files-configuration files-configuration |
13719 | Configuration de l'emplacement où écrire les journaux, quels répertoires | |
13720 | utiliser pour les travaux d'impression et les paramètres de configuration | |
13721 | privilégiés liés. | |
bf5c74e7 | 13722 | |
1d8d69c8 | 13723 | Les champs @code{files-configuration} disponibles sont : |
bf5c74e7 | 13724 | |
1d8d69c8 JL |
13725 | @deftypevr {paramètre de @code{files-configuration}} log-location access-log |
13726 | Définit le fichier de journal d'accès. Spécifier un nom de fichier vide | |
13727 | désactive la génération de journaux d'accès. La valeur @code{stderr} fait | |
13728 | que les entrées du journal seront envoyés sur l'erreur standard lorsque | |
13729 | l'ordonnanceur est lancé au premier plan ou vers le démon de journal système | |
13730 | lorsqu'il tourne en tache de fond. La valeur @code{syslog} fait que les | |
13731 | entrées du journal sont envoyées au démon de journalisation du système. Le | |
13732 | nom du serveur peut être inclus dans les noms de fichiers avec la chaîne | |
13733 | @code{%s}, comme dans @code{/var/log/cups/%s-access_log}. | |
bf5c74e7 | 13734 | |
1d8d69c8 | 13735 | La valeur par défaut est @samp{"/var/log/cups/access_log"}. |
bf5c74e7 JL |
13736 | @end deftypevr |
13737 | ||
1d8d69c8 JL |
13738 | @deftypevr {paramètre de @code{files-configuration}} file-name cache-dir |
13739 | L'emplacement où CUPS devrait mettre les données en cache. | |
bf5c74e7 | 13740 | |
1d8d69c8 | 13741 | La valeur par défaut est @samp{"/var/cache/cups"}. |
bf5c74e7 JL |
13742 | @end deftypevr |
13743 | ||
1d8d69c8 JL |
13744 | @deftypevr {paramètre de @code{files-configuration}} string config-file-perm |
13745 | Spécifie les permissions pour tous les fichiers de configuration que | |
13746 | l'ordonnanceur écrit. | |
bf5c74e7 | 13747 | |
1d8d69c8 JL |
13748 | Remarquez que les permissions pour le fichier printers.conf sont |
13749 | actuellement masqués pour ne permettre que l'accès par l'utilisateur de | |
13750 | l'ordonnanceur (typiquement root). La raison est que les URI des | |
13751 | imprimantes contiennent des informations d'authentification sensibles qui ne | |
13752 | devraient pas être connues sur le système. Il n'est pas possible de | |
13753 | désactiver cette fonctionnalité de sécurité. | |
bf5c74e7 | 13754 | |
1d8d69c8 | 13755 | La valeur par défaut est @samp{"0640"}. |
bf5c74e7 JL |
13756 | @end deftypevr |
13757 | ||
1d8d69c8 JL |
13758 | @deftypevr {paramètre de @code{files-configuration}} log-location error-log |
13759 | Définit le fichier de journal d'erreur. Spécifier un nom de fichier vide | |
13760 | désactive la génération de journaux d'erreur. La valeur @code{stderr} fait | |
13761 | que les entrées du journal seront envoyés sur l'erreur standard lorsque | |
13762 | l'ordonnanceur est lancé au premier plan ou vers le démon de journal système | |
13763 | lorsqu'il tourne en tache de fond. La valeur @code{syslog} fait que les | |
13764 | entrées du journal sont envoyées au démon de journalisation du système. Le | |
13765 | nom du serveur peut être inclus dans les noms de fichiers avec la chaîne | |
13766 | @code{%s}, comme dans @code{/var/log/cups/%s-error_log}. | |
bf5c74e7 | 13767 | |
1d8d69c8 | 13768 | La valeur par défaut est @samp{"/var/log/cups/error_log"}. |
bf5c74e7 JL |
13769 | @end deftypevr |
13770 | ||
1d8d69c8 JL |
13771 | @deftypevr {paramètre de @code{files-configuration}} string fatal-errors |
13772 | Spécifie quelles erreurs sont fatales, qui font terminer l'ordonnanceur. | |
13773 | Les types de chaînes sont : | |
bf5c74e7 JL |
13774 | |
13775 | @table @code | |
13776 | @item none | |
1d8d69c8 | 13777 | Aucune erreur n'est fatale. |
bf5c74e7 JL |
13778 | |
13779 | @item all | |
1d8d69c8 | 13780 | Toutes les erreurs ci-dessous sont fatales. |
bf5c74e7 JL |
13781 | |
13782 | @item browse | |
1d8d69c8 JL |
13783 | Les erreurs d'initialisation de la navigation sont fatales, par exemple les |
13784 | connexion échouées au démon DNS-SD. | |
bf5c74e7 JL |
13785 | |
13786 | @item config | |
1d8d69c8 | 13787 | Les erreurs de syntaxe du fichier de configuration sont fatale. |
bf5c74e7 JL |
13788 | |
13789 | @item listen | |
1d8d69c8 JL |
13790 | Les erreurs d'écoute ou de port sont fatales, sauf pour les erreurs d'IPv6 |
13791 | sur la boucle locale ou les adresses @code{any}. | |
bf5c74e7 JL |
13792 | |
13793 | @item log | |
1d8d69c8 | 13794 | Les erreurs de création ou d'écriture des fichiers de journal sont fatales. |
bf5c74e7 JL |
13795 | |
13796 | @item permissions | |
1d8d69c8 JL |
13797 | Les mauvaises permissions des fichiers de démarrage sont fatales, par |
13798 | exemple un certificat TLS et des fichiers de clefs avec des permissions | |
13799 | permettant la lecture à tout le monde. | |
bf5c74e7 JL |
13800 | @end table |
13801 | ||
1d8d69c8 | 13802 | La valeur par défaut est @samp{"all -browse"}. |
bf5c74e7 JL |
13803 | @end deftypevr |
13804 | ||
1d8d69c8 JL |
13805 | @deftypevr {paramètre de @code{files-configuration}} boolean file-device? |
13806 | Spécifie si le fichier de pseudo-périphérique peut être utilisé pour de | |
13807 | nouvelles queues d'impression. L'URI @uref{file:///dev/null} est toujours | |
13808 | permise. | |
bf5c74e7 | 13809 | |
1d8d69c8 | 13810 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
13811 | @end deftypevr |
13812 | ||
1d8d69c8 JL |
13813 | @deftypevr {paramètre de @code{files-configuration}} string group |
13814 | Spécifie le nom ou l'ID du groupe qui sera utilisé lors de l'exécution de | |
13815 | programmes externes. | |
bf5c74e7 | 13816 | |
1d8d69c8 | 13817 | La valeur par défaut est @samp{"lp"}. |
bf5c74e7 JL |
13818 | @end deftypevr |
13819 | ||
1d8d69c8 JL |
13820 | @deftypevr {paramètre de @code{files-configuration}} string log-file-perm |
13821 | Spécifie les permissions pour tous les fichiers de journal que | |
13822 | l'ordonnanceur écrit. | |
bf5c74e7 | 13823 | |
1d8d69c8 | 13824 | La valeur par défaut est @samp{"0644"}. |
bf5c74e7 JL |
13825 | @end deftypevr |
13826 | ||
1d8d69c8 JL |
13827 | @deftypevr {paramètre de @code{files-configuration}} log-location page-log |
13828 | Définit le fichier de journal de page. Spécifier un nom de fichier vide | |
13829 | désactive la génération de journaux de pages. La valeur @code{stderr} fait | |
13830 | que les entrées du journal seront envoyés sur l'erreur standard lorsque | |
13831 | l'ordonnanceur est lancé au premier plan ou vers le démon de journal système | |
13832 | lorsqu'il tourne en tache de fond. La valeur @code{syslog} fait que les | |
13833 | entrées du journal sont envoyées au démon de journalisation du système. Le | |
13834 | nom du serveur peut être inclus dans les noms de fichiers avec la chaîne | |
13835 | @code{%s}, comme dans @code{/var/log/cups/%s-page_log}. | |
bf5c74e7 | 13836 | |
1d8d69c8 | 13837 | La valeur par défaut est @samp{"/var/log/cups/page_log"}. |
bf5c74e7 JL |
13838 | @end deftypevr |
13839 | ||
1d8d69c8 JL |
13840 | @deftypevr {paramètre de @code{files-configuration}} string remote-root |
13841 | Spécifie le nom d'utilisateur associé aux accès non authentifiés par des | |
13842 | clients qui se disent être l'utilisateur root. La valeur par défaut est | |
13843 | @code{remroot}. | |
bf5c74e7 | 13844 | |
1d8d69c8 | 13845 | La valeur par défaut est @samp{"remroot"}. |
bf5c74e7 JL |
13846 | @end deftypevr |
13847 | ||
1d8d69c8 JL |
13848 | @deftypevr {paramètre de @code{files-configuration}} file-name request-root |
13849 | Spécifie le répertoire qui contient les travaux d'impression et d'autres | |
13850 | données des requêtes HTTP. | |
bf5c74e7 | 13851 | |
1d8d69c8 | 13852 | La valeur par défaut est @samp{"/var/spool/cups"}. |
bf5c74e7 JL |
13853 | @end deftypevr |
13854 | ||
1d8d69c8 JL |
13855 | @deftypevr {paramètre de @code{files-configuration}} sandboxing sandboxing |
13856 | Spécifie le niveau d'isolation de sécurité appliqué aux filtres | |
13857 | d'impression, aux moteurs et aux autres processus fils de l'ordonnanceur ; | |
13858 | soit @code{relaxed} soit @code{strict}. Cette directive n'est actuellement | |
13859 | utilisée et supportée que sur macOS. | |
bf5c74e7 | 13860 | |
1d8d69c8 | 13861 | La valeur par défaut est @samp{strict}. |
bf5c74e7 JL |
13862 | @end deftypevr |
13863 | ||
1d8d69c8 JL |
13864 | @deftypevr {paramètre de @code{files-configuration}} file-name server-keychain |
13865 | Spécifie l'emplacement des certifications TLS et des clefs privées. CUPS | |
13866 | cherchera les clefs publiques et privées dans ce répertoire : un fichier | |
13867 | @code{.crt} pour un certificat encodé en PEM et le fichier @code{.key} | |
13868 | correspondant pour la clef privée encodée en PEM. | |
bf5c74e7 | 13869 | |
1d8d69c8 | 13870 | La valeur par défaut est @samp{"/etc/cups/ssl"}. |
bf5c74e7 JL |
13871 | @end deftypevr |
13872 | ||
1d8d69c8 JL |
13873 | @deftypevr {paramètre de @code{files-configuration}} file-name server-root |
13874 | Spécifie le répertoire contenant les fichiers de configuration du serveur. | |
bf5c74e7 | 13875 | |
1d8d69c8 | 13876 | La valeur par défaut est @samp{"/etc/cups"}. |
bf5c74e7 JL |
13877 | @end deftypevr |
13878 | ||
1d8d69c8 JL |
13879 | @deftypevr {paramètre de @code{files-configuration}} boolean sync-on-close? |
13880 | Spécifie si l'ordonnanceur appelle fsync(2) après avoir écrit la | |
13881 | configuration ou les fichiers d'état. | |
bf5c74e7 | 13882 | |
1d8d69c8 | 13883 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
13884 | @end deftypevr |
13885 | ||
1d8d69c8 JL |
13886 | @deftypevr {paramètre de @code{files-configuration}} space-separated-string-list system-group |
13887 | Spécifie le groupe ou les groupes à utiliser pour l'authentification du | |
13888 | groupe @code{@@SYSTEM}. | |
bf5c74e7 JL |
13889 | @end deftypevr |
13890 | ||
1d8d69c8 JL |
13891 | @deftypevr {paramètre de @code{files-configuration}} file-name temp-dir |
13892 | Spécifie le répertoire où les fichiers temporaires sont stockés. | |
bf5c74e7 | 13893 | |
1d8d69c8 | 13894 | La valeur par défaut est @samp{"/var/spool/cups/tmp"}. |
bf5c74e7 JL |
13895 | @end deftypevr |
13896 | ||
1d8d69c8 JL |
13897 | @deftypevr {paramètre de @code{files-configuration}} string user |
13898 | Spécifie le nom d'utilisateur ou l'ID utilisé pour lancer des programmes | |
13899 | externes. | |
bf5c74e7 | 13900 | |
1d8d69c8 | 13901 | La valeur par défaut est @samp{"lp"}. |
bf5c74e7 JL |
13902 | @end deftypevr |
13903 | @end deftypevr | |
13904 | ||
1d8d69c8 JL |
13905 | @deftypevr {paramètre de @code{cups-configuration}} access-log-level access-log-level |
13906 | Spécifie le niveau de journalisation pour le fichier AccessLog. Le niveau | |
13907 | @code{config} enregistre les ajouts, suppressions et modifications | |
13908 | d'imprimantes et de classes et lorsque les fichiers de configuration sont | |
13909 | accédés ou mis à jour. Le niveau @code{actions} enregistre la soumission, | |
13910 | la suspension, la libération, la modification et l'annulation des travaux et | |
13911 | toutes les conditions de @code{config}. Le niveau @code{all} enregistre | |
13912 | toutes les requêtes. | |
bf5c74e7 | 13913 | |
1d8d69c8 | 13914 | La valeur par défaut est @samp{actions}. |
bf5c74e7 JL |
13915 | @end deftypevr |
13916 | ||
1d8d69c8 JL |
13917 | @deftypevr {paramètre de @code{cups-configuration}} boolean auto-purge-jobs? |
13918 | Spécifie s'il faut vider l'historique des travaux automatiquement lorsqu'il | |
13919 | n'est plus nécessaire pour les quotas. | |
bf5c74e7 | 13920 | |
1d8d69c8 | 13921 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
13922 | @end deftypevr |
13923 | ||
1d8d69c8 JL |
13924 | @deftypevr {paramètre de @code{cups-configuration}} browse-local-protocols browse-local-protocols |
13925 | Spécifie les protocoles à utiliser pour partager les imprimantes sur le | |
13926 | réseau local. | |
bf5c74e7 | 13927 | |
1d8d69c8 | 13928 | La valeur par défaut est @samp{dnssd}. |
bf5c74e7 JL |
13929 | @end deftypevr |
13930 | ||
1d8d69c8 JL |
13931 | @deftypevr {paramètre de @code{cups-configuration}} boolean browse-web-if? |
13932 | Spécifie si l'interface web de CUPS est publiée. | |
bf5c74e7 | 13933 | |
1d8d69c8 | 13934 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
13935 | @end deftypevr |
13936 | ||
1d8d69c8 JL |
13937 | @deftypevr {paramètre de @code{cups-configuration}} boolean browsing? |
13938 | Spécifie si les imprimantes partagées sont publiées. | |
bf5c74e7 | 13939 | |
1d8d69c8 | 13940 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
13941 | @end deftypevr |
13942 | ||
1d8d69c8 JL |
13943 | @deftypevr {paramètre de @code{cups-configuration}} string classification |
13944 | Spécifie la classification de sécurité du serveur. N'importe quel nom de | |
13945 | bannière peut être utilisé, comme « classifié », « confidentiel », « secret | |
13946 | », « top secret » et « déclassifié » ou la bannière peut être omise pour | |
13947 | désactiver les fonctions d'impression sécurisées. | |
bf5c74e7 | 13948 | |
1d8d69c8 | 13949 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
13950 | @end deftypevr |
13951 | ||
1d8d69c8 JL |
13952 | @deftypevr {paramètre de @code{cups-configuration}} boolean classify-override? |
13953 | Spécifie si les utilisateurs peuvent remplacer la classification (page de | |
13954 | couverture) des travaux d'impression individuels avec l'option | |
13955 | @code{job-sheets}. | |
bf5c74e7 | 13956 | |
1d8d69c8 | 13957 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
13958 | @end deftypevr |
13959 | ||
1d8d69c8 JL |
13960 | @deftypevr {paramètre de @code{cups-configuration}} default-auth-type default-auth-type |
13961 | Spécifie le type d'authentification par défaut à utiliser. | |
bf5c74e7 | 13962 | |
1d8d69c8 | 13963 | La valeur par défaut est @samp{Basic}. |
bf5c74e7 JL |
13964 | @end deftypevr |
13965 | ||
1d8d69c8 JL |
13966 | @deftypevr {paramètre de @code{cups-configuration}} default-encryption default-encryption |
13967 | Spécifie si le chiffrement sera utilisé pour les requêtes authentifiées. | |
bf5c74e7 | 13968 | |
1d8d69c8 | 13969 | La valeur par défaut est @samp{Required}. |
bf5c74e7 JL |
13970 | @end deftypevr |
13971 | ||
1d8d69c8 JL |
13972 | @deftypevr {paramètre de @code{cups-configuration}} string default-language |
13973 | Spécifie la langue par défaut à utiliser pour le contenu textuel et web. | |
bf5c74e7 | 13974 | |
1d8d69c8 | 13975 | La valeur par défaut est @samp{"en"}. |
bf5c74e7 JL |
13976 | @end deftypevr |
13977 | ||
1d8d69c8 JL |
13978 | @deftypevr {paramètre de @code{cups-configuration}} string default-paper-size |
13979 | Spécifie la taille de papier par défaut pour les nouvelles queues | |
13980 | d'impression. @samp{"Auto"} utilise la valeur par défaut du paramètre de | |
13981 | régionalisation, tandis que @samp{"None"} spécifie qu'il n'y a pas de taille | |
13982 | par défaut. Des noms de tailles spécifique sont par exemple @samp{"Letter"} | |
13983 | et @samp{"A4"}. | |
bf5c74e7 | 13984 | |
1d8d69c8 | 13985 | La valeur par défaut est @samp{"Auto"}. |
bf5c74e7 JL |
13986 | @end deftypevr |
13987 | ||
1d8d69c8 JL |
13988 | @deftypevr {paramètre de @code{cups-configuration}} string default-policy |
13989 | Spécifie la politique d'accès par défaut à utiliser. | |
bf5c74e7 | 13990 | |
1d8d69c8 | 13991 | La valeur par défaut est @samp{"default"}. |
bf5c74e7 JL |
13992 | @end deftypevr |
13993 | ||
1d8d69c8 JL |
13994 | @deftypevr {paramètre de @code{cups-configuration}} boolean default-shared? |
13995 | Spécifie si les imprimantes locales sont partagées par défaut. | |
bf5c74e7 | 13996 | |
1d8d69c8 | 13997 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
13998 | @end deftypevr |
13999 | ||
1d8d69c8 JL |
14000 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer dirty-clean-interval |
14001 | Spécifie le délai pour mettre à jour les fichiers de configuration et | |
14002 | d'état. Une valeur de 0 fait que la mise à jour arrive aussi vite que | |
14003 | possible, typiquement en quelques millisecondes. | |
bf5c74e7 | 14004 | |
1d8d69c8 | 14005 | La valeur par défaut est @samp{30}. |
bf5c74e7 JL |
14006 | @end deftypevr |
14007 | ||
1d8d69c8 JL |
14008 | @deftypevr {paramètre de @code{cups-configuration}} error-policy error-policy |
14009 | Spécifie ce qu'il faut faire si une erreur a lieu. Les valeurs possibles | |
14010 | sont @code{abort-job}, qui supprimera les travaux d'impression en échec ; | |
14011 | @code{retry-job}, qui tentera de nouveau l'impression plus tard ; | |
14012 | @code{retry-this-job}, qui retentera l'impression immédiatement ; et | |
14013 | @code{stop-printer} qui arrête l'imprimante. | |
bf5c74e7 | 14014 | |
1d8d69c8 | 14015 | La valeur par défaut est @samp{stop-printer}. |
bf5c74e7 JL |
14016 | @end deftypevr |
14017 | ||
1d8d69c8 JL |
14018 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer filter-limit |
14019 | Spécifie le coût maximum des filtres qui sont lancés en même temps, pour | |
14020 | minimiser les problèmes de ressources de disque, de mémoire et de CPU. Une | |
14021 | limite de 0 désactive la limite de filtrage. Une impression standard vers | |
15f1bff4 | 14022 | une imprimante non-PostScript requiert une limite de filtre d'environ 200. |
1d8d69c8 JL |
14023 | Une imprimante PostScript requiert environ la moitié (100). Mettre en place |
14024 | la limite en dessous de ces valeurs limitera l'ordonnanceur à un seul | |
14025 | travail d'impression à la fois. | |
bf5c74e7 | 14026 | |
1d8d69c8 | 14027 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
14028 | @end deftypevr |
14029 | ||
1d8d69c8 JL |
14030 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer filter-nice |
14031 | Spécifie la priorité des filtres de l'ordonnanceur qui sont lancés pour | |
14032 | imprimer un travail. La valeur va de 0, la plus grande priorité, à 19, la | |
14033 | plus basse priorité. | |
bf5c74e7 | 14034 | |
1d8d69c8 | 14035 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
14036 | @end deftypevr |
14037 | ||
1d8d69c8 JL |
14038 | @deftypevr {paramètre de @code{cups-configuration}} host-name-lookups host-name-lookups |
14039 | Spécifie s'il faut faire des résolutions inverses sur les clients qui se | |
14040 | connectent. Le paramètre @code{double} fait que @code{cupsd} vérifie que le | |
14041 | nom d'hôte résolu depuis l'adresse correspond à l'une des adresses renvoyées | |
14042 | par ce nom d'hôte. Les résolutions doubles évitent aussi que des clients | |
14043 | avec des adresses non enregistrées ne s'adressent à votre serveur. | |
14044 | N'initialisez cette valeur qu'à @code{#t} ou @code{double} que si c'est | |
14045 | absolument nécessaire. | |
bf5c74e7 | 14046 | |
1d8d69c8 | 14047 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
14048 | @end deftypevr |
14049 | ||
1d8d69c8 JL |
14050 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer job-kill-delay |
14051 | Spécifie le nombre de secondes à attendre avant de tuer les filtres et les | |
14052 | moteurs associés avec un travail annulé ou suspendu. | |
bf5c74e7 | 14053 | |
1d8d69c8 | 14054 | La valeur par défaut est @samp{30}. |
bf5c74e7 JL |
14055 | @end deftypevr |
14056 | ||
1d8d69c8 JL |
14057 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer job-retry-interval |
14058 | Spécifie l'intervalle des nouvelles tentatives en secondes. C'est | |
14059 | typiquement utilisé pour les queues de fax mais peut aussi être utilisé avec | |
14060 | des queues d'impressions normales dont la politique d'erreur est | |
14061 | @code{retry-job} ou @code{retry-current-job}. | |
bf5c74e7 | 14062 | |
1d8d69c8 | 14063 | La valeur par défaut est @samp{30}. |
bf5c74e7 JL |
14064 | @end deftypevr |
14065 | ||
1d8d69c8 JL |
14066 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer job-retry-limit |
14067 | Spécifie le nombre de nouvelles tentatives pour les travaux. C'est | |
14068 | typiquement utilisé pour les queues de fax mais peut aussi être utilisé pour | |
14069 | les queues d'impressions dont la politique d'erreur est @code{retry-job} ou | |
14070 | @code{retry-current-job}. | |
bf5c74e7 | 14071 | |
1d8d69c8 | 14072 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
14073 | @end deftypevr |
14074 | ||
1d8d69c8 JL |
14075 | @deftypevr {paramètre de @code{cups-configuration}} boolean keep-alive? |
14076 | Spécifie s'il faut supporter les connexion HTTP keep-alive. | |
bf5c74e7 | 14077 | |
1d8d69c8 | 14078 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
14079 | @end deftypevr |
14080 | ||
1d8d69c8 JL |
14081 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer keep-alive-timeout |
14082 | Spécifie combien de temps les connexions inactives avec les clients restent | |
14083 | ouvertes, en secondes. | |
bf5c74e7 | 14084 | |
1d8d69c8 | 14085 | La valeur par défaut est @samp{30}. |
bf5c74e7 JL |
14086 | @end deftypevr |
14087 | ||
1d8d69c8 JL |
14088 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer limit-request-body |
14089 | Spécifie la taille maximale des fichiers à imprimer, des requêtes IPP et des | |
14090 | données de formulaires HTML. Une limite de 0 désactive la vérification de | |
14091 | la limite. | |
bf5c74e7 | 14092 | |
1d8d69c8 | 14093 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
14094 | @end deftypevr |
14095 | ||
1d8d69c8 JL |
14096 | @deftypevr {paramètre de @code{cups-configuration}} multiline-string-list listen |
14097 | Écoute sur les interfaces spécifiées. Les valeurs valides sont de la forme | |
15f1bff4 | 14098 | @var{adresse}:@var{port}, où @var{adresse} est soit une adresse IPv6 dans |
1d8d69c8 JL |
14099 | des crochets, soit une adresse IPv4, soit @code{*} pour indiquer toutes les |
14100 | adresses. Les valeurs peuvent aussi être des noms de fichiers de socket | |
14101 | UNIX domain. La directive Listen est similaire à la directive Port mais | |
14102 | vous permet de restreindre l'accès à des interfaces ou des réseaux | |
14103 | spécifiques. | |
bf5c74e7 JL |
14104 | @end deftypevr |
14105 | ||
1d8d69c8 JL |
14106 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer listen-back-log |
14107 | Spécifie le nombre de connexions en attente qui seront permises. Ça | |
14108 | n'affecte normalement que les serveurs très actifs qui ont atteint la limite | |
14109 | MaxClients, mais peut aussi être déclenché par un grand nombre de connexions | |
14110 | simultanées. Lorsque la limite est atteinte, le système d'exploitation | |
14111 | refusera les connexions supplémentaires jusqu'à ce que l'ordonnanceur | |
14112 | accepte les connexions en attente. | |
bf5c74e7 | 14113 | |
1d8d69c8 | 14114 | La valeur par défaut est @samp{128}. |
bf5c74e7 JL |
14115 | @end deftypevr |
14116 | ||
1d8d69c8 JL |
14117 | @deftypevr {paramètre de @code{cups-configuration}} location-access-control-list location-access-controls |
14118 | Spécifie un ensemble de contrôles d'accès supplémentaires. | |
bf5c74e7 | 14119 | |
1d8d69c8 | 14120 | Les champs de @code{location-access-controls} disponibles sont : |
bf5c74e7 | 14121 | |
1d8d69c8 JL |
14122 | @deftypevr {paramètre de @code{location-access-controls}} file-name path |
14123 | Spécifie le chemin d'URI auquel les contrôles d'accès s'appliquent. | |
bf5c74e7 JL |
14124 | @end deftypevr |
14125 | ||
1d8d69c8 JL |
14126 | @deftypevr {paramètre de @code{location-access-controls}} access-control-list access-controls |
14127 | Les contrôles d'accès pour tous les accès à ce chemin, dans le même format | |
14128 | que le champ @code{access-controls} de @code{operation-access-control}. | |
bf5c74e7 | 14129 | |
1d8d69c8 | 14130 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
14131 | @end deftypevr |
14132 | ||
1d8d69c8 JL |
14133 | @deftypevr {paramètre de @code{location-access-controls}} method-access-control-list method-access-controls |
14134 | Contrôles d'accès pour les accès spécifiques à la méthode à ce chemin. | |
bf5c74e7 | 14135 | |
1d8d69c8 | 14136 | La valeur par défaut est @samp{()}. |
bf5c74e7 | 14137 | |
1d8d69c8 | 14138 | Les champs de @code{method-access-controls} disponibles sont : |
bf5c74e7 | 14139 | |
1d8d69c8 JL |
14140 | @deftypevr {paramètre de @code{method-access-controls}} boolean reverse? |
14141 | Si la valeur est @code{#t}, applique les contrôles d'accès à toutes les | |
14142 | méthodes sauf les méthodes listées. Sinon, applique le contrôle uniquement | |
14143 | aux méthodes listées. | |
bf5c74e7 | 14144 | |
1d8d69c8 | 14145 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
14146 | @end deftypevr |
14147 | ||
1d8d69c8 JL |
14148 | @deftypevr {paramètre de @code{method-access-controls}} method-list methods |
14149 | Les méthodes auxquelles ce contrôle d'accès s'applique. | |
bf5c74e7 | 14150 | |
1d8d69c8 | 14151 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
14152 | @end deftypevr |
14153 | ||
1d8d69c8 JL |
14154 | @deftypevr {paramètre de @code{method-access-controls}} access-control-list access-controls |
14155 | Directives de contrôle d'accès, comme une liste de chaînes de caractères. | |
14156 | Chaque chaîne devrait être une directive, comme « Order allow, deny ». | |
bf5c74e7 | 14157 | |
1d8d69c8 | 14158 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
14159 | @end deftypevr |
14160 | @end deftypevr | |
14161 | @end deftypevr | |
14162 | ||
1d8d69c8 JL |
14163 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer log-debug-history |
14164 | Spécifie le nombre de messages de débogage qui sont retenu pour la | |
14165 | journalisation si une erreur arrive dans un travail d'impression. Les | |
14166 | messages de débogage sont journalisés indépendamment du paramètre LogLevel. | |
bf5c74e7 | 14167 | |
1d8d69c8 | 14168 | La valeur par défaut est @samp{100}. |
bf5c74e7 JL |
14169 | @end deftypevr |
14170 | ||
1d8d69c8 JL |
14171 | @deftypevr {paramètre de @code{cups-configuration}} log-level log-level |
14172 | Spécifie le niveau de journalisation du fichier ErrorLog. La valeur | |
14173 | @code{none} arrête toute journalisation alors que que @code{debug2} | |
14174 | enregistre tout. | |
bf5c74e7 | 14175 | |
1d8d69c8 | 14176 | La valeur par défaut est @samp{info}. |
bf5c74e7 JL |
14177 | @end deftypevr |
14178 | ||
1d8d69c8 JL |
14179 | @deftypevr {paramètre de @code{cups-configuration}} log-time-format log-time-format |
14180 | Spécifie le format de la date et de l'heure dans les fichiers de journaux. | |
14181 | La valeur @code{standard} enregistre les secondes entières alors que | |
14182 | @code{usecs} enregistre les microsecondes. | |
bf5c74e7 | 14183 | |
1d8d69c8 | 14184 | La valeur par défaut est @samp{standard}. |
bf5c74e7 JL |
14185 | @end deftypevr |
14186 | ||
1d8d69c8 JL |
14187 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-clients |
14188 | Spécifie le nombre maximum de clients simultanés qui sont autorisés par | |
14189 | l'ordonnanceur. | |
bf5c74e7 | 14190 | |
1d8d69c8 | 14191 | La valeur par défaut est @samp{100}. |
bf5c74e7 JL |
14192 | @end deftypevr |
14193 | ||
1d8d69c8 JL |
14194 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-clients-per-host |
14195 | Spécifie le nombre maximum de clients simultanés permis depuis une même | |
14196 | adresse. | |
bf5c74e7 | 14197 | |
1d8d69c8 | 14198 | La valeur par défaut est @samp{100}. |
bf5c74e7 JL |
14199 | @end deftypevr |
14200 | ||
1d8d69c8 JL |
14201 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-copies |
14202 | Spécifie le nombre maximum de copies qu'un utilisateur peut imprimer pour | |
14203 | chaque travail. | |
bf5c74e7 | 14204 | |
1d8d69c8 | 14205 | La valeur par défaut est @samp{9999}. |
bf5c74e7 JL |
14206 | @end deftypevr |
14207 | ||
1d8d69c8 JL |
14208 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-hold-time |
14209 | Spécifie la durée maximum qu'un travail peut rester dans l'état de | |
14210 | suspension @code{indefinite} avant qu'il ne soit annulé. La valeur 0 | |
14211 | désactive l'annulation des travaux suspendus. | |
bf5c74e7 | 14212 | |
1d8d69c8 | 14213 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
14214 | @end deftypevr |
14215 | ||
1d8d69c8 JL |
14216 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-jobs |
14217 | Spécifie le nombre maximum de travaux simultanés autorisés. La valeur 0 | |
14218 | permet un nombre illimité de travaux. | |
bf5c74e7 | 14219 | |
1d8d69c8 | 14220 | La valeur par défaut est @samp{500}. |
bf5c74e7 JL |
14221 | @end deftypevr |
14222 | ||
1d8d69c8 JL |
14223 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-jobs-per-printer |
14224 | Spécifie le nombre maximum de travaux simultanés autorisés par imprimante. | |
14225 | La valeur 0 permet au plus MaxJobs travaux par imprimante. | |
bf5c74e7 | 14226 | |
1d8d69c8 | 14227 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
14228 | @end deftypevr |
14229 | ||
1d8d69c8 JL |
14230 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-jobs-per-user |
14231 | Spécifie le nombre maximum de travaux simultanés permis par utilisateur. La | |
14232 | valeur 0 permet au plus MaxJobs travaux par utilisateur. | |
bf5c74e7 | 14233 | |
1d8d69c8 | 14234 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
14235 | @end deftypevr |
14236 | ||
1d8d69c8 JL |
14237 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-job-time |
14238 | Spécifie la durée maximum qu'un travail peut prendre avant qu'il ne soit | |
14239 | annulé, en secondes. Indiquez 0 pour désactiver l'annulation des travaux « | |
14240 | coincés ». | |
bf5c74e7 | 14241 | |
1d8d69c8 | 14242 | La valeur par défaut est @samp{10800}. |
bf5c74e7 JL |
14243 | @end deftypevr |
14244 | ||
1d8d69c8 JL |
14245 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer max-log-size |
14246 | Spécifie la taille maximale des fichiers de journaux avant qu'on ne les | |
14247 | fasse tourner, en octets. La valeur 0 désactive la rotation. | |
bf5c74e7 | 14248 | |
1d8d69c8 | 14249 | La valeur par défaut est @samp{1048576}. |
bf5c74e7 JL |
14250 | @end deftypevr |
14251 | ||
1d8d69c8 JL |
14252 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer multiple-operation-timeout |
14253 | Spécifie la durée maximale à permettre entre les fichiers d'un travail en | |
14254 | contenant plusieurs, en secondes. | |
bf5c74e7 | 14255 | |
1d8d69c8 | 14256 | La valeur par défaut est @samp{300}. |
bf5c74e7 JL |
14257 | @end deftypevr |
14258 | ||
1d8d69c8 JL |
14259 | @deftypevr {paramètre de @code{cups-configuration}} string page-log-format |
14260 | Spécifie le format des lignes PageLog. Les séquences qui commencent par un | |
14261 | pourcent (@samp{%}) sont remplacées par l'information correspondante, tandis | |
14262 | que les autres caractères sont copiés littéralement. Les séquences pourcent | |
14263 | suivantes sont reconnues : | |
bf5c74e7 JL |
14264 | |
14265 | @table @samp | |
14266 | @item %% | |
1d8d69c8 | 14267 | insère un seul caractères pourcent |
bf5c74e7 JL |
14268 | |
14269 | @item %@{name@} | |
1d8d69c8 | 14270 | insère la valeur de l'attribut IPP spécifié |
bf5c74e7 JL |
14271 | |
14272 | @item %C | |
1d8d69c8 | 14273 | insère le nombre de copies pour la page actuelle |
bf5c74e7 JL |
14274 | |
14275 | @item %P | |
1d8d69c8 | 14276 | insère le numéro de page actuelle |
bf5c74e7 JL |
14277 | |
14278 | @item %T | |
1d8d69c8 | 14279 | insère la date et l'heure actuelle dans un format de journal commun |
bf5c74e7 JL |
14280 | |
14281 | @item %j | |
1d8d69c8 | 14282 | insère l'ID du travail |
bf5c74e7 JL |
14283 | |
14284 | @item %p | |
1d8d69c8 | 14285 | insère le nom de l'imprimante |
bf5c74e7 JL |
14286 | |
14287 | @item %u | |
1d8d69c8 | 14288 | insère le nom d'utilisateur |
bf5c74e7 JL |
14289 | @end table |
14290 | ||
1d8d69c8 JL |
14291 | Si la valeur est la chaîne vide, le PageLog est désactivée. La chaîne |
14292 | @code{%p %u %j %T %P %C %@{job-billing@} %@{job-originating-host-name@} | |
14293 | %@{job-name@} %@{media@} %@{sides@}} crée un PageLog avec les entrées | |
14294 | standards. | |
bf5c74e7 | 14295 | |
1d8d69c8 | 14296 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
14297 | @end deftypevr |
14298 | ||
1d8d69c8 JL |
14299 | @deftypevr {paramètre de @code{cups-configuration}} environment-variables environment-variables |
14300 | Passe les variables d'environnement spécifiées aux processus fils ; une | |
14301 | liste de chaînes de caractères. | |
bf5c74e7 | 14302 | |
1d8d69c8 | 14303 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
14304 | @end deftypevr |
14305 | ||
1d8d69c8 JL |
14306 | @deftypevr {paramètre de @code{cups-configuration}} policy-configuration-list policies |
14307 | Spécifie des politiques de contrôle d'accès nommées. | |
bf5c74e7 | 14308 | |
1d8d69c8 | 14309 | Les champs de @code{policy-configuration} disponibles sont : |
bf5c74e7 | 14310 | |
1d8d69c8 JL |
14311 | @deftypevr {paramètre de @code{policy-configuration}} string name |
14312 | Nom de la politique. | |
bf5c74e7 JL |
14313 | @end deftypevr |
14314 | ||
1d8d69c8 JL |
14315 | @deftypevr {paramètre de @code{policy-configuration}} string job-private-access |
14316 | Spécifie une liste d'accès pour les valeurs privées du travail. | |
14317 | @code{@@ACL} correspond aux valeurs requesting-user-name-allowed ou | |
14318 | requesting-user-name-denied de l'imprimante. @code{@@OWNER} correspond au | |
14319 | propriétaire du travail. @code{@@SYSTEM} correspond aux groupes listés dans | |
14320 | le champ @code{system-group} de la configuration @code{files-config}, qui | |
14321 | est réifié dans le fichier @code{cups-files.conf(5)}. Les autres éléments | |
14322 | possibles de la liste d'accès sont des noms d'utilisateurs spécifiques et | |
14323 | @code{@@@var{group}} pour indiquer les membres d'un groupe spécifique. La | |
14324 | liste d'accès peut aussi être simplement @code{all} ou @code{default}. | |
bf5c74e7 | 14325 | |
1d8d69c8 | 14326 | La valeur par défaut est @samp{"@@OWNER @@SYSTEM"}. |
bf5c74e7 JL |
14327 | @end deftypevr |
14328 | ||
1d8d69c8 JL |
14329 | @deftypevr {paramètre de @code{policy-configuration}} string job-private-values |
14330 | Spécifie la liste des valeurs de travaux à rendre privée, ou @code{all}, | |
14331 | @code{default}, ou @code{none}. | |
bf5c74e7 | 14332 | |
1d8d69c8 | 14333 | La valeur par défaut est @samp{"job-name job-originating-host-name |
bf5c74e7 JL |
14334 | job-originating-user-name phone"}. |
14335 | @end deftypevr | |
14336 | ||
1d8d69c8 JL |
14337 | @deftypevr {paramètre de @code{policy-configuration}} string subscription-private-access |
14338 | Spécifie un liste d'accès pour les valeurs privées de la souscription. | |
14339 | @code{@@ACL} correspond aux valeurs requesting-user-name-allowed ou | |
14340 | requesting-user-name-denied de l'imprimante. @code{@@OWNER} correspond au | |
14341 | propriétaire du travail. @code{@@SYSTEM} correspond aux groupes listés dans | |
14342 | le champ @code{system-group} de la configuration @code{files-config}, qui | |
14343 | est réifié dans le fichier @code{cups-files.conf(5)}. Les autres éléments | |
14344 | possibles de la liste d'accès sont des noms d'utilisateurs spécifiques et | |
14345 | @code{@@@var{group}} pour indiquer les membres d'un groupe spécifique. La | |
14346 | liste d'accès peut aussi être simplement @code{all} ou @code{default}. | |
bf5c74e7 | 14347 | |
1d8d69c8 | 14348 | La valeur par défaut est @samp{"@@OWNER @@SYSTEM"}. |
bf5c74e7 JL |
14349 | @end deftypevr |
14350 | ||
1d8d69c8 JL |
14351 | @deftypevr {paramètre de @code{policy-configuration}} string subscription-private-values |
14352 | Spécifie la liste des valeurs de travaux à rendre privée, ou @code{all}, | |
14353 | @code{default}, ou @code{none}. | |
bf5c74e7 | 14354 | |
1d8d69c8 JL |
14355 | La valeur par défaut est @samp{"notify-events notify-pull-method |
14356 | notify-recipient-uri notify-subscriber-user-name notify-user-data"}. | |
bf5c74e7 JL |
14357 | @end deftypevr |
14358 | ||
1d8d69c8 JL |
14359 | @deftypevr {paramètre de @code{policy-configuration}} operation-access-control-list access-controls |
14360 | Contrôle d'accès par les actions IPP. | |
bf5c74e7 | 14361 | |
1d8d69c8 | 14362 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
14363 | @end deftypevr |
14364 | @end deftypevr | |
14365 | ||
1d8d69c8 JL |
14366 | @deftypevr {paramètre de @code{cups-configuration}} boolean-or-non-negative-integer preserve-job-files |
14367 | Spécifie si les fichiers de travaux (les documents) sont préservés après | |
14368 | qu'un travail est imprimé. Si une valeur numérique est spécifiée, les | |
14369 | fichiers de travaux sont préservés pour le nombre de secondes indiquées | |
14370 | après l'impression. Sinon, une valeur booléenne s'applique indéfiniment. | |
bf5c74e7 | 14371 | |
1d8d69c8 | 14372 | La valeur par défaut est @samp{86400}. |
bf5c74e7 JL |
14373 | @end deftypevr |
14374 | ||
1d8d69c8 JL |
14375 | @deftypevr {paramètre de @code{cups-configuration}} boolean-or-non-negative-integer preserve-job-history |
14376 | Spécifie si l'historique des travaux est préservé après qu'un travail est | |
14377 | imprimé. Si une valeur numérique est spécifiée, l'historique des travaux | |
14378 | est préservé pour le nombre de secondes indiquées après l'impression. Si la | |
14379 | valeur est @code{#t}, l'historique des travaux est préservé jusqu'à | |
14380 | atteindre la limite MaxJobs. | |
bf5c74e7 | 14381 | |
1d8d69c8 | 14382 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
14383 | @end deftypevr |
14384 | ||
1d8d69c8 JL |
14385 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer reload-timeout |
14386 | Spécifie la durée d'attente pour la fin des travaux avant de redémarrer | |
14387 | l'ordonnanceur. | |
bf5c74e7 | 14388 | |
1d8d69c8 | 14389 | La valeur par défaut est @samp{30}. |
bf5c74e7 JL |
14390 | @end deftypevr |
14391 | ||
1d8d69c8 JL |
14392 | @deftypevr {paramètre de @code{cups-configuration}} string rip-cache |
14393 | Spécifie la quantité de mémoire maximale à utiliser pour convertir des | |
14394 | documents en bitmaps pour l'imprimante. | |
bf5c74e7 | 14395 | |
1d8d69c8 | 14396 | La valeur par défaut est @samp{"128m"}. |
bf5c74e7 JL |
14397 | @end deftypevr |
14398 | ||
1d8d69c8 JL |
14399 | @deftypevr {paramètre de @code{cups-configuration}} string server-admin |
14400 | Spécifie l'adresse de courriel de l'administrateur système. | |
bf5c74e7 | 14401 | |
1d8d69c8 | 14402 | La valeur par défaut est @samp{"root@@localhost.localdomain"}. |
bf5c74e7 JL |
14403 | @end deftypevr |
14404 | ||
1d8d69c8 JL |
14405 | @deftypevr {paramètre de @code{cups-configuration}} host-name-list-or-* server-alias |
14406 | La directive ServerAlias est utilisée pour la validation des en-tête HTTP | |
14407 | Host lorsque les clients se connectent à l'ordonnanceur depuis des | |
14408 | interfaces externes. Utiliser le nom spécial @code{*} peut exposer votre | |
14409 | système à des attaques connues de recombinaison DNS dans le navigateur, même | |
14410 | lorsque vous accédez au site à travers un pare-feu. Si la découverte | |
14411 | automatique des autres noms ne fonctionne pas, nous vous recommandons de | |
14412 | lister chaque nom alternatif avec une directive SeverAlias plutôt que | |
14413 | d'utiliser @code{*}. | |
bf5c74e7 | 14414 | |
1d8d69c8 | 14415 | La valeur par défaut est @samp{*}. |
bf5c74e7 JL |
14416 | @end deftypevr |
14417 | ||
1d8d69c8 JL |
14418 | @deftypevr {paramètre de @code{cups-configuration}} string server-name |
14419 | Spécifie le nom d'hôte pleinement qualifié du serveur. | |
bf5c74e7 | 14420 | |
1d8d69c8 | 14421 | La valeur par défaut est @samp{"localhost"}. |
bf5c74e7 JL |
14422 | @end deftypevr |
14423 | ||
1d8d69c8 JL |
14424 | @deftypevr {paramètre de @code{cups-configuration}} server-tokens server-tokens |
14425 | Spécifie les informations incluses dans les en-têtes Server des réponses | |
14426 | HTTP. @code{None} désactive l'en-tête Server. @code{ProductOnly} rapporte | |
14427 | @code{CUPS}. @code{Major} rapporte @code{CUPS 2}. @code{Minor} rapporte | |
14428 | @code{CUPS 2.0}. @code{Minimal} rapporte @code{CUPS 2.0.0}. @code{OS} | |
14429 | rapporte @code{CUPS 2.0.0 (@var{uname})} où @var{uname} est la sortie de la | |
14430 | commande @code{uname}. @code{Full} rapporte @code{CUPS 2.0.0 (@var{uname}) | |
14431 | IPP/2.0}. | |
bf5c74e7 | 14432 | |
1d8d69c8 | 14433 | La valeur par défaut est @samp{Minimal}. |
bf5c74e7 JL |
14434 | @end deftypevr |
14435 | ||
1d8d69c8 JL |
14436 | @deftypevr {paramètre de @code{cups-configuration}} string set-env |
14437 | Indique que la variable d'environnement spécifiée doit être passée aux | |
14438 | processus fils. | |
bf5c74e7 | 14439 | |
1d8d69c8 | 14440 | La valeur par défaut est @samp{"variable value"}. |
bf5c74e7 JL |
14441 | @end deftypevr |
14442 | ||
1d8d69c8 JL |
14443 | @deftypevr {paramètre de @code{cups-configuration}} multiline-string-list ssl-listen |
14444 | Écoute des connexions chiffrées sur les interfaces spécifiées. Les valeurs | |
14445 | valides sont de la forme @var{adresse}:@var{port}, où @var{adresse} est soit | |
14446 | une adresse IPv6 dans des crochets, soit une adresse IPv4, soit @code{*} | |
14447 | pour indiquer toutes les interfaces. | |
bf5c74e7 | 14448 | |
1d8d69c8 | 14449 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
14450 | @end deftypevr |
14451 | ||
1d8d69c8 JL |
14452 | @deftypevr {paramètre de @code{cups-configuration}} ssl-options ssl-options |
14453 | Indique les options de chiffrement. Par défaut, CUPS ne supporte que le | |
14454 | chiffrement avec TLS 1.0 ou plus avec des suites de chiffrement connues pour | |
14455 | être sures. L'option @code{AllowRC4} active les suites de chiffrement | |
14456 | 128-bits RC4, qui sont requises pour certains vieux clients qui | |
14457 | n'implémentent pas les nouvelles. L'option @code{AllowSSL3} active SSL | |
14458 | v3.0, qui est requis par certains vieux clients qui ne supportent pas TLS | |
14459 | v1.0. | |
bf5c74e7 | 14460 | |
1d8d69c8 | 14461 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
14462 | @end deftypevr |
14463 | ||
1d8d69c8 JL |
14464 | @deftypevr {paramètre de @code{cups-configuration}} boolean strict-conformance? |
14465 | Spécifie si l'ordonnanceur demande aux clients d'adhérer aux spécifications | |
14466 | IPP. | |
bf5c74e7 | 14467 | |
1d8d69c8 | 14468 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
14469 | @end deftypevr |
14470 | ||
1d8d69c8 JL |
14471 | @deftypevr {paramètre de @code{cups-configuration}} non-negative-integer timeout |
14472 | Spécifie le délai d'attente des requêtes HTTP, en secondes. | |
bf5c74e7 | 14473 | |
1d8d69c8 | 14474 | La valeur par défaut est @samp{300}. |
bf5c74e7 JL |
14475 | |
14476 | @end deftypevr | |
14477 | ||
1d8d69c8 JL |
14478 | @deftypevr {paramètre de @code{cups-configuration}} boolean web-interface? |
14479 | Spécifie si l'interface web est activée. | |
bf5c74e7 | 14480 | |
1d8d69c8 | 14481 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
14482 | @end deftypevr |
14483 | ||
1d8d69c8 JL |
14484 | Maintenant, vous vous dîtes peut-être « oh la la, cher manuel de Guix, je |
14485 | t'aime bien mais arrête maintenant avec ces options de configuration | |
14486 | »@footnote{NdT : je vous rassure, c'est aussi mon sentiment au moment de | |
14487 | traduire ces lignes. Et pour moi, c'est encore loin d'être fini.}. En | |
14488 | effet. cependant, encore un point supplémentaire : vous pouvez avoir un | |
14489 | fichier @code{cupsd.conf} existant que vous pourriez vouloir utiliser. Dans | |
14490 | ce cas, vous pouvez passer un @code{opaque-cups-configuration} en | |
14491 | configuration d'un @code{cups-service-type}. | |
bf5c74e7 | 14492 | |
1d8d69c8 | 14493 | Les champs de @code{opaque-cups-configuration} disponibles sont : |
bf5c74e7 | 14494 | |
1d8d69c8 JL |
14495 | @deftypevr {paramètre de @code{opaque-cups-configuration}} package cups |
14496 | Le paquet CUPS. | |
bf5c74e7 JL |
14497 | @end deftypevr |
14498 | ||
1d8d69c8 JL |
14499 | @deftypevr {paramètre de @code{opaque-cups-configuration}} string cupsd.conf |
14500 | Le contenu de @code{cupsd.conf}, en tant que chaîne de caractères. | |
bf5c74e7 JL |
14501 | @end deftypevr |
14502 | ||
1d8d69c8 JL |
14503 | @deftypevr {paramètre de @code{opaque-cups-configuration}} string cups-files.conf |
14504 | Le contenu du fichier @code{cups-files.conf}, en tant que chaîne de | |
14505 | caractères. | |
bf5c74e7 JL |
14506 | @end deftypevr |
14507 | ||
1d8d69c8 JL |
14508 | Par exemple, si vos fichiers @code{cupsd.conf} et @code{cups-files.conf} |
14509 | sont dans des chaînes du même nom, pouvez instancier un service CUPS de | |
14510 | cette manière : | |
bf5c74e7 JL |
14511 | |
14512 | @example | |
14513 | (service cups-service-type | |
14514 | (opaque-cups-configuration | |
14515 | (cupsd.conf cupsd.conf) | |
14516 | (cups-files.conf cups-files.conf))) | |
14517 | @end example | |
14518 | ||
14519 | ||
3cacfa9e | 14520 | @node Services de bureaux |
15f1bff4 | 14521 | @subsection Services de bureaux |
bf5c74e7 | 14522 | |
1d8d69c8 JL |
14523 | Le module @code{(gnu services desktop)} fournit des services qui sont |
14524 | habituellement utiles dans le contexte d'une installation « de bureau » — | |
14525 | c'est-à-dire sur une machine qui fait tourner un service d'affichage | |
14526 | graphique, éventuellement avec des interfaces utilisateurs graphiques, etc. | |
14527 | Il définit aussi des services qui fournissent des environnements de bureau | |
14528 | spécifiques comme GNOME, XFCE et MATE. | |
14529 | ||
14530 | Pour simplifier les choses, le module définit une variable contenant | |
14531 | l'ensemble des services que les utilisateurs s'attendent en général à avoir | |
14532 | sur une machine avec un environnement graphique et le réseau : | |
14533 | ||
14534 | @defvr {Variable Scheme} %desktop-services | |
14535 | C'est la liste des services qui étend @var{%base-services} en ajoutant ou en | |
14536 | ajustant des services pour une configuration « de bureau » typique. | |
14537 | ||
14538 | En particulier, il ajoute un gestionnaire de connexion graphique (@pxref{Système de fenêtrage X, @code{slim-service}}), des verrouilleurs d'écran, un outil de | |
14539 | gestion réseau (@pxref{Services réseau, | |
14540 | @code{network-manager-service-type}}), des services de gestion de l'énergie | |
14541 | et des couleurs, le gestionnaire de connexion et de session @code{elogind}, | |
14542 | le service de privilèges Polkit, le service de géolocalisation GeoClue, le | |
14543 | démon Accounts Service qui permet aux utilisateurs autorisés de changer leur | |
14544 | mot de passe, un client NTP (@pxref{Services réseau}), le démon Avahi, | |
14545 | et le service name service switch est configuré pour pouvoir utiliser | |
14546 | @code{nss-mdns} (@pxref{Name Service Switch, mDNS}). | |
bf5c74e7 JL |
14547 | @end defvr |
14548 | ||
1d8d69c8 JL |
14549 | La variable @var{%desktop-services} peut être utilisée comme champ |
14550 | @code{services} d'une déclaration @code{operating-system} | |
14551 | (@pxref{Référence de système d'exploitation, @code{services}}). | |
14552 | ||
14553 | En plus, les procédures @code{gnome-desktop-service}, | |
14554 | @code{xfce-desktop-service}, @code{mate-desktop-service} et | |
14555 | @code{enlightenment-desktop-service-type} peuvent ajouter GNOME, XFCE, MATE | |
14556 | ou Enlightenment à un système. « Ajouter GNOME » signifie que les services | |
14557 | du système comme les utilitaires d'ajustement de la luminosité et de gestion | |
14558 | de l'énergie sont ajoutés au système, en étendant @code{polkit} et | |
14559 | @code{dbus} de la bonne manière, ce qui permet à GNOME d'opérer avec des | |
14560 | privilèges plus élevés sur un nombre limité d'interfaces systèmes | |
14561 | spécialisées. En plus, ajouter un service construit par | |
14562 | @code{gnome-desktop-service} ajoute le métapaquet GNOME au profil du | |
14563 | système. de même, ajouter le service XFCE ajoute le métapaquet @code{xfce} | |
14564 | au profil système, mais il permet aussi au gestionnaire de fichiers Thunar | |
14565 | d'ouvrir une fenêtre de gestion des fichier « en mode root », si | |
14566 | l'utilisateur s'authentifie avec le mot de passe administrateur via | |
14567 | l'interface graphique polkit standard. « Ajouter MATE » signifie que | |
14568 | @code{polkit} et @code{dbus} sont étendue de la bonne manière, ce qui permet | |
14569 | à MATE d'opérer avec des privilèges plus élevés sur un nombre limité | |
14570 | d'interface systèmes spécialisées. « Ajouter ENLIGHTENMENT » signifie que | |
14571 | @code{dbus} est étendu comme il faut et que plusieurs binaires | |
14572 | d'Enlightenment récupèrent le bit setuid, ce qui permet au verrouilleur | |
14573 | d'écran d'Enlightenment et à d'autres fonctionnalités de fonctionner | |
14574 | correctement. | |
14575 | ||
14576 | Les environnement de bureau dans Guix utilisent le service d'affichage Xorg | |
14577 | par défaut. Si vous voulez utiliser le protocol de serveur d'affichage plus | |
14578 | récent Wayland, vous devez utiliser @code{sddm-service} à la place de | |
14579 | @code{slim-service} comme gestionnaire de connexion graphique. Vous devriez | |
14580 | ensuite sélectionner la session « GNOME (Wayland) » dans SDDM. Autrement, | |
14581 | vous pouvez essayer de démarrer GNOME sur Wayland manuellement depuis un TTY | |
14582 | avec la commande @command{XDG_SESSION_TYPE=wayland exec dbus-run-session | |
14583 | gnome-session}. Actuellement seul GNOME support Wayland. | |
14584 | ||
14585 | @deffn {Procédure Scheme} gnome-desktop-service | |
14586 | Renvoie un service qui ajoute le paquet @code{gnome} au profil système et | |
14587 | étend polkit avec des actions de @code{gnome-settings-daemon}. | |
bf5c74e7 JL |
14588 | @end deffn |
14589 | ||
1d8d69c8 JL |
14590 | @deffn {Procédure Scheme} xfce-desktop-service |
14591 | Renvoie un service qui ajoute le paquet @code{xfce} au profil du système et | |
14592 | étend polkit avec la capacité pour @code{thunar} de manipuler le système de | |
14593 | fichier en tant que root depuis une session utilisateur, après que | |
14594 | l'utilisateur s'est authentifié avec le mot de passe administrateur. | |
bf5c74e7 JL |
14595 | @end deffn |
14596 | ||
1d8d69c8 JL |
14597 | @deffn {Procédure Scheme} mate-desktop-service |
14598 | Renvoie un service qui ajoute le paquet @code{mate} au profil du système et | |
14599 | étend polkit avec les actions de @code{mate-settings-daemon}. | |
bf5c74e7 JL |
14600 | @end deffn |
14601 | ||
2cf2c778 | 14602 | @deffn {Procédure Scheme} enlightenment-desktop-service-type |
1d8d69c8 JL |
14603 | Renvoie un service qui ajoute le paquet @code{enlightenment} et étend dbus |
14604 | avec les actions de @code{efl} | |
3cacfa9e LC |
14605 | @end deffn |
14606 | ||
1d8d69c8 | 14607 | @deftp {Type de données} enlightenment-desktop-service-configuration |
3cacfa9e | 14608 | @table @asis |
2cf2c778 JL |
14609 | @item @code{enlightenment} (par défaut : @code{enlightenment}) |
14610 | Le paquet enlightenment à utiliser. | |
3cacfa9e LC |
14611 | @end table |
14612 | @end deftp | |
14613 | ||
1d8d69c8 JL |
14614 | Comme les services de bureau GNOME, XFCE et MATE récupèrent tant de paquet, |
14615 | la variable @code{%desktop-services} par défaut n'inclut aucun d'entre eux. | |
14616 | Pour ajouter GNOME, XFCE ou MATE, utilisez @code{cons} pour les ajouter à | |
14617 | @code{%desktop-services} dans le champ @code{services} de votre | |
14618 | @code{operating-system}. | |
bf5c74e7 JL |
14619 | |
14620 | @example | |
14621 | (use-modules (gnu)) | |
14622 | (use-service-modules desktop) | |
14623 | (operating-system | |
14624 | ... | |
1d8d69c8 | 14625 | ;; cons* ajoute les élément à la liste donnée en dernier argument |
bf5c74e7 JL |
14626 | (services (cons* (gnome-desktop-service) |
14627 | (xfce-desktop-service) | |
14628 | %desktop-services)) | |
14629 | ...) | |
14630 | @end example | |
14631 | ||
1d8d69c8 JL |
14632 | Ces environnements de bureau seront alors disponibles comme une option dans |
14633 | la fenêtre de connexion graphique. | |
bf5c74e7 | 14634 | |
1d8d69c8 JL |
14635 | Les définitions de service qui sont vraiment incluses dans |
14636 | @code{%desktop-services} et fournies par @code{(gnu services dbus)} et | |
14637 | @code{(gnu services desktop)} sont décrites plus bas. | |
bf5c74e7 | 14638 | |
1d8d69c8 JL |
14639 | @deffn {Procédure Scheme} dbus-service [#:dbus @var{dbus}] [#:services '()] |
14640 | Renvoie un service qui lance le « bus système », @var{dbus}, avec le support | |
14641 | de @var{services}. | |
bf5c74e7 | 14642 | |
1d8d69c8 JL |
14643 | @uref{http://dbus.freedesktop.org/, D-Bus} est un utilitaire de |
14644 | communication inter-processus. Son bus système est utilisé pour permettre à | |
14645 | des services systèmes de communiquer et d'être notifiés d'événements | |
14646 | systèmes. | |
bf5c74e7 | 14647 | |
1d8d69c8 JL |
14648 | @var{services} doit être une liste de paquets qui fournissent un répertoire |
14649 | @file{etc/dbus-1/system.d} contenant de la configuration D-Bus | |
14650 | supplémentaire et des fichiers de politiques. Par exemple, pour permettre à | |
14651 | avahi-daemon d'utiliser le bus système, @var{services} doit être égal à | |
14652 | @code{(list avahi)}. | |
bf5c74e7 JL |
14653 | @end deffn |
14654 | ||
1d8d69c8 JL |
14655 | @deffn {Procédure Scheme} elogind-service [#:config @var{config}] |
14656 | Renvoie un service qui lance le démon de gestion de connexion et de session | |
14657 | @code{elogind}. @uref{https://github.com/elogind/elogind, Elogind} expose | |
14658 | une interface D-Bus qui peut être utilisée pour connaître quels utilisateurs | |
14659 | sont connectés, le type de session qu'ils sont ouverte, suspendre le | |
14660 | système, désactiver la veille système, redémarrer le système et d'autre | |
14661 | taches. | |
bf5c74e7 | 14662 | |
1d8d69c8 JL |
14663 | Elogind gère la plupart des événements liés à l'énergie du système, par |
14664 | exemple mettre en veille le système quand l'écran est rabattu ou en | |
14665 | l'éteignant quand le bouton de démarrage est appuyé. | |
bf5c74e7 | 14666 | |
1d8d69c8 JL |
14667 | L'argument @var{config} spécifie la configuration d'elogind et devrait être |
14668 | le résultat d'une invocation de @code{(elogind-configuration | |
14669 | (@var{parameter} @var{value})...)}. Les paramètres disponibles et leur | |
14670 | valeur par défaut sont : | |
bf5c74e7 JL |
14671 | |
14672 | @table @code | |
14673 | @item kill-user-processes? | |
14674 | @code{#f} | |
14675 | @item kill-only-users | |
14676 | @code{()} | |
14677 | @item kill-exclude-users | |
14678 | @code{("root")} | |
14679 | @item inhibit-delay-max-seconds | |
14680 | @code{5} | |
14681 | @item handle-power-key | |
14682 | @code{poweroff} | |
14683 | @item handle-suspend-key | |
14684 | @code{suspend} | |
14685 | @item handle-hibernate-key | |
14686 | @code{hibernate} | |
14687 | @item handle-lid-switch | |
14688 | @code{suspend} | |
14689 | @item handle-lid-switch-docked | |
14690 | @code{ignore} | |
14691 | @item power-key-ignore-inhibited? | |
14692 | @code{#f} | |
14693 | @item suspend-key-ignore-inhibited? | |
14694 | @code{#f} | |
14695 | @item hibernate-key-ignore-inhibited? | |
14696 | @code{#f} | |
14697 | @item lid-switch-ignore-inhibited? | |
14698 | @code{#t} | |
14699 | @item holdoff-timeout-seconds | |
14700 | @code{30} | |
14701 | @item idle-action | |
14702 | @code{ignore} | |
14703 | @item idle-action-seconds | |
14704 | @code{(* 30 60)} | |
14705 | @item runtime-directory-size-percent | |
14706 | @code{10} | |
14707 | @item runtime-directory-size | |
14708 | @code{#f} | |
14709 | @item remove-ipc? | |
14710 | @code{#t} | |
14711 | @item suspend-state | |
14712 | @code{("mem" "standby" "freeze")} | |
14713 | @item suspend-mode | |
14714 | @code{()} | |
14715 | @item hibernate-state | |
14716 | @code{("disk")} | |
14717 | @item hibernate-mode | |
14718 | @code{("platform" "shutdown")} | |
14719 | @item hybrid-sleep-state | |
14720 | @code{("disk")} | |
14721 | @item hybrid-sleep-mode | |
14722 | @code{("suspend" "platform" "shutdown")} | |
14723 | @end table | |
14724 | @end deffn | |
14725 | ||
1d8d69c8 JL |
14726 | @deffn {Procédure Scheme} accountsservice-service @ |
14727 | [#:accountsservice @var{accountsservice}] | |
14728 | Renvoie un service qui lance AccountsService, un service système qui peut | |
14729 | lister les comptes disponibles, changer leur mot de passe, etc. | |
14730 | AccountsService s'intègre à Polkit pour permettre aux utilisateurs non | |
14731 | privilégiés de pouvoir modifier la configuration de leur système. | |
14732 | @uref{https://www.freedesktop.org/wiki/Software/AccountsService/, le site de | |
14733 | accountsservice} pour trouver plus d'informations. | |
14734 | ||
14735 | L'argument @var{accountsservice} est le paquet @code{accountsservice} à | |
14736 | exposer comme un service. | |
bf5c74e7 JL |
14737 | @end deffn |
14738 | ||
1d8d69c8 JL |
14739 | @deffn {Procédure Scheme} polkit-service @ |
14740 | [#:polkit @var{polkit}] | |
14741 | Renvoie un service qui lance le | |
14742 | @uref{http://www.freedesktop.org/wiki/Software/polkit/, service de gestion | |
14743 | des privilèges Polkit}, qui permet aux administrateurs systèmes de permettre | |
14744 | l'accès à des opération privilégiées d'une manière structurée. En demandant | |
14745 | au service Polkit, un composant système privilégié peut savoir lorsqu'il | |
14746 | peut donner des privilèges supplémentaires à des utilisateurs normaux. Par | |
14747 | exemple, un utilisateur normal peut obtenir le droit de mettre le système en | |
14748 | veille si l'utilisateur est connecté localement. | |
bf5c74e7 JL |
14749 | @end deffn |
14750 | ||
15f1bff4 JL |
14751 | @defvr {Scheme Variable} upower-service-type |
14752 | Service that runs @uref{http://upower.freedesktop.org/, @command{upowerd}}, | |
14753 | a system-wide monitor for power consumption and battery levels, with the | |
14754 | given configuration settings. | |
14755 | ||
14756 | It implements the @code{org.freedesktop.UPower} D-Bus interface, and is | |
14757 | notably used by GNOME. | |
14758 | @end defvr | |
14759 | ||
14760 | @deftp {Data Type} upower-configuration | |
14761 | Data type representation the configuration for UPower. | |
14762 | ||
14763 | @table @asis | |
14764 | ||
14765 | @item @code{upower} (default: @var{upower}) | |
14766 | Package to use for @code{upower}. | |
14767 | ||
14768 | @item @code{watts-up-pro?} (default: @code{#f}) | |
14769 | Enable the Watts Up Pro device. | |
14770 | ||
14771 | @item @code{poll-batteries?} (default: @code{#t}) | |
14772 | Enable polling the kernel for battery level changes. | |
14773 | ||
14774 | @item @code{ignore-lid?} (default: @code{#f}) | |
14775 | Ignore the lid state, this can be useful if it's incorrect on a device. | |
14776 | ||
14777 | @item @code{use-percentage-for-policy?} (default: @code{#f}) | |
14778 | Whether battery percentage based policy should be used. The default is to | |
14779 | use the time left, change to @code{#t} to use the percentage. | |
14780 | ||
14781 | @item @code{percentage-low} (default: @code{10}) | |
14782 | When @code{use-percentage-for-policy?} is @code{#t}, this sets the | |
14783 | percentage at which the battery is considered low. | |
14784 | ||
14785 | @item @code{percentage-critical} (default: @code{3}) | |
14786 | When @code{use-percentage-for-policy?} is @code{#t}, this sets the | |
14787 | percentage at which the battery is considered critical. | |
14788 | ||
14789 | @item @code{percentage-action} (default: @code{2}) | |
14790 | When @code{use-percentage-for-policy?} is @code{#t}, this sets the | |
14791 | percentage at which action will be taken. | |
14792 | ||
14793 | @item @code{time-low} (default: @code{1200}) | |
14794 | When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining | |
14795 | in seconds at which the battery is considered low. | |
14796 | ||
14797 | @item @code{time-critical} (default: @code{300}) | |
14798 | When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining | |
14799 | in seconds at which the battery is considered critical. | |
14800 | ||
14801 | @item @code{time-action} (default: @code{120}) | |
14802 | When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining | |
14803 | in seconds at which action will be taken. | |
14804 | ||
14805 | @item @code{critical-power-action} (default: @code{'hybrid-sleep}) | |
14806 | The action taken when @code{percentage-action} or @code{time-action} is | |
14807 | reached (depending on the configuration of | |
14808 | @code{use-percentage-for-policy?}). | |
14809 | ||
14810 | Possible values are: | |
14811 | ||
14812 | @itemize @bullet | |
14813 | @item | |
14814 | @code{'power-off} | |
14815 | ||
14816 | @item | |
14817 | @code{'hibernate} | |
14818 | ||
14819 | @item | |
14820 | @code{'hybrid-sleep}. | |
14821 | @end itemize | |
14822 | ||
14823 | @end table | |
14824 | @end deftp | |
bf5c74e7 | 14825 | |
1d8d69c8 JL |
14826 | @deffn {Procédure Scheme} udisks-service [#:udisks @var{udisks}] |
14827 | Renvoie un service pour @uref{http://udisks.freedesktop.org/docs/latest/, | |
14828 | UDisks}, un démon de @dfn{gestion de disques} qui fournit des notifications | |
14829 | et la capacité de monter et démonter des disques à des interfaces | |
14830 | utilisateurs. Les programmes qui parlent à UDisks sont par exemple la | |
14831 | commande @command{udisksctl}, qui fait partie de UDisks et GNOME Disks. | |
bf5c74e7 JL |
14832 | @end deffn |
14833 | ||
1d8d69c8 JL |
14834 | @deffn {Procédure Scheme} colord-service [#:colord @var{colord}] |
14835 | Renvoie un service qui lance @command{colord}, un service système avec une | |
14836 | interface D-Bus pour gérer les profils de couleur des périphériques | |
14837 | d'entrées et de sorties comme les écrans et les scanners. Il est notamment | |
14838 | utilisé par l'outil graphique GNOME Color Manager. Voir | |
14839 | @uref{http://www.freedesktop.org/software/colord/, le site web de colord} | |
14840 | pour plus d'informations. | |
bf5c74e7 JL |
14841 | @end deffn |
14842 | ||
1d8d69c8 JL |
14843 | @deffn {Procédure Scheme} geoclue-application name [#:allowed? #t] [#:system? #f] [#:users '()] |
14844 | Renvoie une configuration qui permet d'accéder aux données de localisation | |
14845 | de GeoClue. @var{name} est l'ID Desktop de l'application, sans la partie en | |
14846 | @code{.desktop}. Si @var{allowed?} est vraie, l'application aura droit | |
14847 | d'accéder aux informations de localisation par défaut. Le booléen | |
14848 | @var{system?} indique si une application est un composant système ou non. | |
14849 | Enfin @var{users} est la liste des UID des utilisateurs pour lesquels cette | |
14850 | application a le droit d'accéder aux informations de géolocalisation. Une | |
14851 | liste d'utilisateurs vide indique que tous les utilisateurs sont autorisés. | |
bf5c74e7 JL |
14852 | @end deffn |
14853 | ||
1d8d69c8 JL |
14854 | @defvr {Variable Scheme} %standard-geoclue-applications |
14855 | la liste standard de configuration des application GeoClue connues, qui | |
14856 | permet à l'utilitaire date-and-time de GNOME de demander l'emplacement | |
14857 | actuel pour initialiser le fuseau horaire et aux navigateurs web IceCat et | |
14858 | Epiphany de demander les informations de localisation. IceCat et Epiphany | |
14859 | demandent tous deux à l'utilisateur avant de permettre à une page web de | |
14860 | connaître l'emplacement de l'utilisateur. | |
bf5c74e7 JL |
14861 | @end defvr |
14862 | ||
1d8d69c8 JL |
14863 | @deffn {Procédure Scheme} geoclue-service [#:colord @var{colord}] @ |
14864 | [#:whitelist '()] @ | |
14865 | [#:wifi-geolocation-url | |
bf5c74e7 JL |
14866 | "https://location.services.mozilla.com/v1/geolocate?key=geoclue"] @ |
14867 | [#:submit-data? #f] [#:wifi-submission-url | |
14868 | "https://location.services.mozilla.com/v1/submit?key=geoclue"] @ | |
1d8d69c8 JL |
14869 | [#:submission-nick "geoclue"] @ |
14870 | [#:applications %standard-geoclue-applications] | |
14871 | Renvoie un service qui lance le service de géolocalisation GeoClue. Ce | |
14872 | service fournit une interface D-Bus pour permettre aux applications de | |
14873 | demande l'accès à la position de l'utilisateur et éventuellement d'ajouter | |
14874 | des informations à des bases de données de géolocalisation en ligne. Voir | |
14875 | @uref{https://wiki.freedesktop.org/www/Software/GeoClue/, le site web de | |
14876 | GeoClue} pour plus d'informations. | |
bf5c74e7 JL |
14877 | @end deffn |
14878 | ||
1d8d69c8 JL |
14879 | @deffn {Procédure Scheme} bluetooth-service [#:bluez @var{bluez}] @ |
14880 | [@w{#:auto-enable? #f}] | |
14881 | Renvoie un service qui lance le démon @command{bluetoothd} qui gère tous les | |
14882 | appareils Bluetooth et fournit un certain nombre d'interfaces D-Bus. | |
14883 | Lorsque @var{auto-enable?} est vraie, le contrôler bluetooth est | |
14884 | automatiquement alimenté au démarrage, ce qui peut être utile lorsque vous | |
14885 | utilisez un clavier ou une souris bluetooth. | |
bf5c74e7 | 14886 | |
1d8d69c8 JL |
14887 | Les utilisateurs doivent être dans le groupe @code{lp} pour accéder au |
14888 | service D-Bus. | |
bf5c74e7 JL |
14889 | @end deffn |
14890 | ||
2cf2c778 | 14891 | @node Services de son |
15f1bff4 | 14892 | @subsection Services de son |
3cacfa9e | 14893 | |
1d8d69c8 | 14894 | @cindex support du son |
3cacfa9e | 14895 | @cindex ALSA |
1d8d69c8 | 14896 | @cindex PulseAudio, support du son |
3cacfa9e | 14897 | |
adfb167f JL |
14898 | Le module @code{(gnu services sound)} fournit un service pour configurer le |
14899 | système ALSA (architecture son linux avancée), qui fait de PulseAudio le | |
14900 | pilote de sortie préféré d'ALSA. | |
3cacfa9e | 14901 | |
2cf2c778 | 14902 | @deffn {Variable Scheme} alsa-service-type |
adfb167f JL |
14903 | C'est le type pour le système @uref{https://alsa-project.org/, Advanced |
14904 | Linux Sound Architecture} (ALSA), qui génère le fichier de configuration | |
15f1bff4 | 14905 | @file{/etc/asound.conf}. La valeur de ce type est un enregistrement |
adfb167f | 14906 | @command{alsa-configuration} comme dans cet exemple : |
3cacfa9e LC |
14907 | |
14908 | @example | |
14909 | (service alsa-service-type) | |
14910 | @end example | |
14911 | ||
1d8d69c8 | 14912 | Voir plus bas pour des détails sur @code{alsa-configuration}. |
3cacfa9e LC |
14913 | @end deffn |
14914 | ||
1d8d69c8 JL |
14915 | @deftp {Type de données} alsa-configuration |
14916 | Type de données représentant la configuration pour @code{alsa-service}. | |
3cacfa9e LC |
14917 | |
14918 | @table @asis | |
adfb167f JL |
14919 | @item @code{alsa-plugins} (par défaut : @var{alsa-plugins}) |
14920 | Le paquet @code{alsa-plugins} à utiliser. | |
524756d1 | 14921 | |
1d8d69c8 JL |
14922 | @item @code{pulseaudio?} (par défaut : @var{#t}) |
14923 | Indique si les applications ALSA devraient utiliser le serveur de son | |
14924 | @uref{http://www.pulseaudio.org/, PulseAudio} de manière transparente pour | |
14925 | elles. | |
3cacfa9e | 14926 | |
1d8d69c8 JL |
14927 | Utiliser PulseAudio vous permet dans lancer plusieurs applications qui |
14928 | produisent du son en même temps et de les contrôler individuellement via | |
14929 | @command{pavucontrol} entre autres choses. | |
3cacfa9e | 14930 | |
1d8d69c8 | 14931 | @item @code{extra-options} (par défaut : @var{""}) |
adfb167f | 14932 | Chaîne à ajouter au fichier @file{/etc/asound.conf}. |
3cacfa9e LC |
14933 | |
14934 | @end table | |
14935 | @end deftp | |
14936 | ||
adfb167f JL |
14937 | Les utilisateurs individuels qui veulent modifier la configuration système |
14938 | d'ALSA peuvent le faire avec le fichier @file{~/.asoundrc} : | |
524756d1 JL |
14939 | |
14940 | @example | |
adfb167f | 14941 | # Dans guix, il faut spécifier le chemin absolu des greffons. |
524756d1 JL |
14942 | pcm_type.jack @{ |
14943 | lib "/home/alice/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so" | |
14944 | @} | |
14945 | ||
adfb167f | 14946 | # Faire passer ALSA par Jack : |
524756d1 JL |
14947 | # <http://jackaudio.org/faq/routing_alsa.html>. |
14948 | pcm.rawjack @{ | |
14949 | type jack | |
14950 | playback_ports @{ | |
14951 | 0 system:playback_1 | |
14952 | 1 system:playback_2 | |
14953 | @} | |
14954 | ||
14955 | capture_ports @{ | |
14956 | 0 system:capture_1 | |
14957 | 1 system:capture_2 | |
14958 | @} | |
14959 | @} | |
14960 | ||
14961 | pcm.!default @{ | |
14962 | type plug | |
14963 | slave @{ | |
14964 | pcm "rawjack" | |
14965 | @} | |
14966 | @} | |
14967 | @end example | |
14968 | ||
adfb167f JL |
14969 | Voir @uref{https://www.alsa-project.org/main/index.php/Asoundrc} pour les |
14970 | détails. | |
524756d1 JL |
14971 | |
14972 | ||
3cacfa9e | 14973 | @node Services de bases de données |
15f1bff4 | 14974 | @subsection Services de bases de données |
bf5c74e7 JL |
14975 | |
14976 | @cindex database | |
14977 | @cindex SQL | |
1d8d69c8 JL |
14978 | Le module @code{(gnu services databases)} fournit les services suivants. |
14979 | ||
14980 | @deffn {Procédure Scheme} postgresql-service [#:postgresql postgresql] @ | |
15f1bff4 JL |
14981 | [#:config-file] [#:data-directory ``/var/lib/postgresql/data''] @ [#:port |
14982 | 5432] [#:locale ``en_US.utf8''] [#:extension-packages '()] Return a service | |
14983 | that runs @var{postgresql}, the PostgreSQL database server. | |
1d8d69c8 JL |
14984 | |
14985 | Le démon PostgreSQL charge sa configuration à l'exécution depuis | |
14986 | @var{config-file}, crée une grappe de bases de données avec @var{locale} | |
14987 | comme paramètre de régionalisation par défaut, stockée dans | |
14988 | @var{data-directory}. Il écoute ensuite sur @var{port}. | |
15f1bff4 JL |
14989 | |
14990 | @cindex postgresql extension-packages | |
14991 | Additional extensions are loaded from packages listed in | |
14992 | @var{extension-packages}. Extensions are available at runtime. For | |
14993 | instance, to create a geographic database using the @code{postgis} | |
14994 | extension, a user can configure the postgresql-service as in this example: | |
14995 | ||
14996 | @cindex postgis | |
14997 | @example | |
14998 | (use-package-modules databases geo) | |
14999 | ||
15000 | (operating-system | |
15001 | ... | |
15002 | ;; postgresql is required to run `psql' but postgis is not required for | |
15003 | ;; proper operation. | |
15004 | (packages (cons* postgresql %base-packages)) | |
15005 | (services | |
15006 | (cons* | |
15007 | (postgresql-service #:extension-packages (list postgis)) | |
15008 | %base-services))) | |
15009 | @end example | |
15010 | ||
15011 | Then the extension becomes visible and you can initialise an empty | |
15012 | geographic database in this way: | |
15013 | ||
15014 | @example | |
15015 | psql -U postgres | |
15016 | > create database postgistest; | |
15017 | > \connect postgistest; | |
15018 | > create extension postgis; | |
15019 | > create extension postgis_topology; | |
15020 | @end example | |
15021 | ||
15022 | There is no need to add this field for contrib extensions such as hstore or | |
15023 | dblink as they are already loadable by postgresql. This field is only | |
15024 | required to add extensions provided by other packages. | |
bf5c74e7 JL |
15025 | @end deffn |
15026 | ||
1d8d69c8 JL |
15027 | @deffn {Procédure Scheme} mysql-service [#:config (mysql-configuration)] |
15028 | Renvoie un service qui lance @command{mysqld}, le service de bases de | |
15029 | données MySQL ou MariaDB. | |
bf5c74e7 | 15030 | |
1d8d69c8 JL |
15031 | L'argument @var{config} facultatif spécifie la configuration de |
15032 | @command{mysqld}, qui devrait être un objet @code{<mysql-configuration>}. | |
bf5c74e7 JL |
15033 | @end deffn |
15034 | ||
1d8d69c8 JL |
15035 | @deftp {Type de données} mysql-configuration |
15036 | Type de données représentant la configuration de @var{mysql-service}. | |
bf5c74e7 JL |
15037 | |
15038 | @table @asis | |
1d8d69c8 JL |
15039 | @item @code{mysql} (par défaut : @var{mariadb}) |
15040 | Objet paquet du serveur de base de données MySQL, qui peut être soit | |
15041 | @var{mariadb}, soit @var{mysql}. | |
bf5c74e7 | 15042 | |
1d8d69c8 JL |
15043 | Pour MySQL, un mot de passe root temporaire sera affiché à l'activation. |
15044 | Pour MariaDB, le mot de passe root est vide. | |
bf5c74e7 | 15045 | |
1d8d69c8 JL |
15046 | @item @code{port} (par défaut : @code{3306}) |
15047 | Port TCP sur lequel le serveur de base de données écoute les connexions | |
15048 | entrantes. | |
bf5c74e7 JL |
15049 | @end table |
15050 | @end deftp | |
15051 | ||
1d8d69c8 JL |
15052 | @defvr {Variable Scheme} memcached-service-type |
15053 | C'est le type de service pour le service @uref{https://memcached.org/, | |
15054 | Memcached} qui fournit un cache en mémoire distribué. La valeur pour le | |
15055 | type de service est un objet @code{memcached-configuration}. | |
bf5c74e7 JL |
15056 | @end defvr |
15057 | ||
15058 | @example | |
15059 | (service memcached-service-type) | |
15060 | @end example | |
15061 | ||
1d8d69c8 JL |
15062 | @deftp {Type de données} memcached-configuration |
15063 | Type de données représentant la configuration de memcached. | |
bf5c74e7 JL |
15064 | |
15065 | @table @asis | |
1d8d69c8 JL |
15066 | @item @code{memcached} (par défaut : @code{memcached}) |
15067 | Le paquet Memcached à utiliser. | |
bf5c74e7 | 15068 | |
1d8d69c8 JL |
15069 | @item @code{interfaces} (par défaut : @code{'("0.0.0.0")}) |
15070 | Les interfaces réseaux sur lesquelles écouter. | |
bf5c74e7 | 15071 | |
1d8d69c8 JL |
15072 | @item @code{tcp-port} (par défaut : @code{11211}) |
15073 | Port sur lequel accepter les connexions. | |
bf5c74e7 | 15074 | |
1d8d69c8 JL |
15075 | @item @code{udp-port} (par défaut : @code{11211}) |
15076 | Port sur lequel accepter les connexions UDP, une valeur de 0 désactive | |
15077 | l'écoute en UDP. | |
bf5c74e7 | 15078 | |
1d8d69c8 JL |
15079 | @item @code{additional-options} (par défaut : @code{'()}) |
15080 | Options de la ligne de commande supplémentaires à passer à @code{memcached}. | |
bf5c74e7 JL |
15081 | @end table |
15082 | @end deftp | |
15083 | ||
1d8d69c8 JL |
15084 | @defvr {Variable Scheme} mongodb-service-type |
15085 | C'est le type de service pour @uref{https://www.mongodb.com/, MongoDB}. La | |
15086 | valeur de ce service est un objet @code{mongodb-configuration}. | |
bf5c74e7 JL |
15087 | @end defvr |
15088 | ||
15089 | @example | |
15090 | (service mongodb-service-type) | |
15091 | @end example | |
15092 | ||
1d8d69c8 JL |
15093 | @deftp {Type de données} mongodb-configuration |
15094 | Type de données représentant la configuration de mongodb. | |
bf5c74e7 JL |
15095 | |
15096 | @table @asis | |
1d8d69c8 JL |
15097 | @item @code{mongodb} (par défaut : @code{mongodb}) |
15098 | Le paquet MongoDB à utiliser. | |
bf5c74e7 | 15099 | |
1d8d69c8 JL |
15100 | @item @code{config-file} (par défaut : @code{%default-mongodb-configuration-file}) |
15101 | Le fichier de configuration pour MongoDB. | |
bf5c74e7 | 15102 | |
1d8d69c8 JL |
15103 | @item @code{data-directory} (par défaut : @code{"/var/lib/mongodb"}) |
15104 | Cette valeur est utilisée pour créer le répertoire, pour qu'il existe et | |
15105 | appartienne à l'utilisateur mongodb. Il devrait correspondre au | |
15106 | data-directory que MongoDB est configuré pour utiliser dans son fichier de | |
15107 | configuration. | |
bf5c74e7 JL |
15108 | @end table |
15109 | @end deftp | |
15110 | ||
1d8d69c8 JL |
15111 | @defvr {Variable Scheme} redis-service-type |
15112 | C'est le type de service pour la base clef-valeur @uref{https://redis.io/, | |
15113 | Redis} dont la valeur est un objet @code{redis-configuration}. | |
bf5c74e7 JL |
15114 | @end defvr |
15115 | ||
1d8d69c8 JL |
15116 | @deftp {Type de données} redis-configuration |
15117 | Type de données représentant la configuration de redis. | |
bf5c74e7 JL |
15118 | |
15119 | @table @asis | |
1d8d69c8 JL |
15120 | @item @code{redis} (par défaut : @code{redis}) |
15121 | Le paquet Redis à utiliser. | |
bf5c74e7 | 15122 | |
1d8d69c8 JL |
15123 | @item @code{bind} (par défaut : @code{"127.0.0.1"}) |
15124 | Interface réseau sur laquelle écouter. | |
bf5c74e7 | 15125 | |
1d8d69c8 JL |
15126 | @item @code{port} (par défaut : @code{6379}) |
15127 | Port sur lequel accepter les connexions, une valeur de 0 désactive l'écoute | |
15128 | sur un socket TCP. | |
bf5c74e7 | 15129 | |
1d8d69c8 JL |
15130 | @item @code{working-directory} (par défaut : @code{"/var/lib/redis"}) |
15131 | Répertoire dans lequel stocker la base de données et les fichiers liés. | |
bf5c74e7 JL |
15132 | @end table |
15133 | @end deftp | |
15134 | ||
3cacfa9e | 15135 | @node Services de courriels |
15f1bff4 | 15136 | @subsection Services de courriels |
bf5c74e7 | 15137 | |
1d8d69c8 | 15138 | @cindex courriel |
bf5c74e7 | 15139 | @cindex email |
1d8d69c8 JL |
15140 | Le module @code{(gnu services mail)} fournit des définitions de services |
15141 | Guix pour les services de courriel : des serveurs IMAP, POP3 et LMTP ainsi | |
15142 | que des MTA (Mail Transport Agent). Que d'acronymes ! Ces services sont | |
15143 | détaillés dans les sous-sections ci-dessous. | |
bf5c74e7 | 15144 | |
1d8d69c8 | 15145 | @subsubheading Service Dovecot |
bf5c74e7 | 15146 | |
1d8d69c8 JL |
15147 | @deffn {Procédure Scheme} dovecot-service [#:config (dovecot-configuration)] |
15148 | Renvoie un service qui lance le serveur de courriel IMAP/POP3/LMTP Dovecot. | |
bf5c74e7 JL |
15149 | @end deffn |
15150 | ||
1d8d69c8 JL |
15151 | Par défaut, Dovecot n'a pas besoin de beaucoup de configuration ; l'objet de |
15152 | configuration par défaut créé par @code{(dovecot-configuration)} suffira si | |
15153 | votre courriel est livré dans @code{~/Maildir}. Un certificat auto-signé | |
15154 | sera généré pour les connexions TLS, bien que Dovecot écoutera aussi sur les | |
15155 | ports non chiffrés par défaut. Il y a quelques options cependant, que les | |
15156 | administrateurs peuvent avoir besoin de changer et comme c'est le cas avec | |
15157 | d'autres services, Guix permet aux administrateurs systèmes de spécifier ces | |
15158 | paramètres via une interface Scheme unifiée. | |
bf5c74e7 | 15159 | |
1d8d69c8 JL |
15160 | Par exemple, pour spécifier que les courriels se trouvent dans |
15161 | @code{maildir~/.mail}, on peut instancier Dovecot de cette manière : | |
bf5c74e7 JL |
15162 | |
15163 | @example | |
15164 | (dovecot-service #:config | |
15165 | (dovecot-configuration | |
15166 | (mail-location "maildir:~/.mail"))) | |
15167 | @end example | |
15168 | ||
1d8d69c8 JL |
15169 | Les paramètres de configuration disponibles sont les suivants. Chaque |
15170 | définition des paramètres est précédé par son type ; par exemple, | |
15171 | @samp{string-list foo} indique que le paramètre @code{foo} devrait être | |
15172 | spécifié comme une liste de chaînes de caractères. Il y a aussi une manière | |
15173 | de spécifier la configuration comme une chaîne de caractères, si vous avez | |
15174 | un vieux fichier @code{dovecot.conf} que vous voulez porter depuis un autre | |
15175 | système ; voir la fin pour plus de détails. | |
bf5c74e7 JL |
15176 | |
15177 | @c The following documentation was initially generated by | |
15178 | @c (generate-documentation) in (gnu services mail). Manually maintained | |
15179 | @c documentation is better, so we shouldn't hesitate to edit below as | |
15180 | @c needed. However if the change you want to make to this documentation | |
15181 | @c can be done in an automated way, it's probably easier to change | |
15182 | @c (generate-documentation) than to make it below and have to deal with | |
15183 | @c the churn as dovecot updates. | |
15184 | ||
1d8d69c8 | 15185 | Les champs de @code{dovecot-configuration} disponibles sont : |
bf5c74e7 | 15186 | |
1d8d69c8 JL |
15187 | @deftypevr {paramètre de @code{dovecot-configuration}} package dovecot |
15188 | Le paquet dovecot | |
bf5c74e7 JL |
15189 | @end deftypevr |
15190 | ||
1d8d69c8 JL |
15191 | @deftypevr {paramètre de @code{dovecot-configuration}} comma-separated-string-list listen |
15192 | Une liste d'IP ou d'hôtes à écouter pour les connexions. @samp{*} écoute | |
15193 | sur toutes les interfaces IPv4, @samp{::} écoute sur toutes les interfaces | |
15194 | IPv6. Si vous voulez spécifier des ports différents de la valeur par défaut | |
15195 | ou quelque chose de plus complexe, complétez les champs d'adresse et de port | |
15196 | de @samp{inet-listener} des services spécifiques qui vous intéressent. | |
bf5c74e7 JL |
15197 | @end deftypevr |
15198 | ||
1d8d69c8 JL |
15199 | @deftypevr {paramètre de @code{dovecot-configuration}} protocol-configuration-list protocols |
15200 | Liste des protocoles que vous voulez servir. Les protocoles disponibles | |
15201 | comprennent @samp{imap}, @samp{pop3} et @samp{lmtp}. | |
bf5c74e7 | 15202 | |
1d8d69c8 | 15203 | Les champs @code{protocol-configuration} disponibles sont : |
bf5c74e7 | 15204 | |
1d8d69c8 JL |
15205 | @deftypevr {paramètre de @code{protocol-configuration}} string name |
15206 | Le nom du protocole. | |
bf5c74e7 JL |
15207 | @end deftypevr |
15208 | ||
1d8d69c8 JL |
15209 | @deftypevr {paramètre de @code{protocol-configuration}} string auth-socket-path |
15210 | Le chemin d'un socket UNIX vers le serveur d'authentification maître pour | |
15211 | trouver les utilisateurs. C'est utilisé par imap (pour les utilisateurs | |
15212 | partagés) et lda. Sa valeur par défaut est | |
bf5c74e7 JL |
15213 | @samp{"/var/run/dovecot/auth-userdb"}. |
15214 | @end deftypevr | |
15215 | ||
1d8d69c8 JL |
15216 | @deftypevr {paramètre de @code{protocol-configuration}} space-separated-string-list mail-plugins |
15217 | Liste de greffons à charger séparés par des espaces. | |
bf5c74e7 JL |
15218 | @end deftypevr |
15219 | ||
1d8d69c8 JL |
15220 | @deftypevr {paramètre de @code{protocol-configuration}} non-negative-integer mail-max-userip-connections |
15221 | Nombre maximum de connexions IMAP permises pour un utilisateur depuis chaque | |
15222 | adresse IP. Remarque : la comparaison du nom d'utilisateur est sensible à | |
15223 | la casse. Par défaut @samp{10}. | |
bf5c74e7 JL |
15224 | @end deftypevr |
15225 | ||
15226 | @end deftypevr | |
15227 | ||
1d8d69c8 JL |
15228 | @deftypevr {paramètre de @code{dovecot-configuration}} service-configuration-list services |
15229 | Liste des services à activer. Les services disponibles comprennent | |
15230 | @samp{imap}, @samp{imap-login}, @samp{pop3}, @samp{pop3-login}, @samp{auth} | |
15231 | et @samp{lmtp}. | |
bf5c74e7 | 15232 | |
1d8d69c8 | 15233 | Les champs de @code{service-configuration} disponibles sont : |
bf5c74e7 | 15234 | |
1d8d69c8 JL |
15235 | @deftypevr {paramètre de @code{service-configuration}} string kind |
15236 | Le type de service. Les valeurs valides comprennent @code{director}, | |
15237 | @code{imap-login}, @code{pop3-login}, @code{lmtp}, @code{imap}, @code{pop3}, | |
15238 | @code{auth}, @code{auth-worker}, @code{dict}, @code{tcpwrap}, | |
15239 | @code{quota-warning} ou n'importe quoi d'autre. | |
bf5c74e7 JL |
15240 | @end deftypevr |
15241 | ||
1d8d69c8 JL |
15242 | @deftypevr {paramètre de @code{service-configuration}} listener-configuration-list listeners |
15243 | Les auditeurs du service. Un auditeur est soit un | |
15244 | @code{unix-listener-configuration}, soit un | |
15245 | @code{fifo-listener-configuration}, soit un | |
15246 | @code{inet-listener-configuration}. La valeur par défaut est @samp{()}. | |
bf5c74e7 | 15247 | |
1d8d69c8 | 15248 | Les champs de @code{unix-listener-configuration} disponibles sont : |
bf5c74e7 | 15249 | |
1d8d69c8 JL |
15250 | @deftypevr {paramètre de @code{unix-listener-configuration}} string path |
15251 | Chemin vers le fichier, relativement au champ @code{base-dir}. C'est aussi | |
15252 | utilisé comme nom de section. | |
bf5c74e7 JL |
15253 | @end deftypevr |
15254 | ||
1d8d69c8 JL |
15255 | @deftypevr {paramètre de @code{unix-listener-configuration}} string mode |
15256 | Le mode d'accès pour le socket. La valeur par défaut est @samp{"0600"}. | |
bf5c74e7 JL |
15257 | @end deftypevr |
15258 | ||
1d8d69c8 JL |
15259 | @deftypevr {paramètre de @code{unix-listener-configuration}} string user |
15260 | L'utilisateur à qui appartient le socket. La valeur par défaut est | |
15261 | @samp{""} | |
bf5c74e7 JL |
15262 | @end deftypevr |
15263 | ||
1d8d69c8 JL |
15264 | @deftypevr {paramètre de @code{unix-listener-configuration}} string group |
15265 | Le groupe auquel appartient le socket. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15266 | @end deftypevr |
15267 | ||
15268 | ||
1d8d69c8 | 15269 | Les champs de @code{fifo-listener-configuration} disponibles sont : |
bf5c74e7 | 15270 | |
1d8d69c8 JL |
15271 | @deftypevr {paramètre de @code{fifo-listener-configuration}} string path |
15272 | Chemin vers le fichier, relativement au champ @code{base-dir}. C'est aussi | |
15273 | utilisé comme nom de section. | |
bf5c74e7 JL |
15274 | @end deftypevr |
15275 | ||
1d8d69c8 JL |
15276 | @deftypevr {paramètre de @code{fifo-listener-configuration}} string mode |
15277 | Le mode d'accès pour le socket. La valeur par défaut est @samp{"0600"}. | |
bf5c74e7 JL |
15278 | @end deftypevr |
15279 | ||
1d8d69c8 JL |
15280 | @deftypevr {paramètre de @code{fifo-listener-configuration}} string user |
15281 | L'utilisateur à qui appartient le socket. La valeur par défaut est | |
15282 | @samp{""} | |
bf5c74e7 JL |
15283 | @end deftypevr |
15284 | ||
1d8d69c8 JL |
15285 | @deftypevr {paramètre de @code{fifo-listener-configuration}} string group |
15286 | Le groupe auquel appartient le socket. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15287 | @end deftypevr |
15288 | ||
15289 | ||
1d8d69c8 | 15290 | Les champs de @code{inet-listener-configuration} disponibles sont : |
bf5c74e7 | 15291 | |
1d8d69c8 JL |
15292 | @deftypevr {paramètre de @code{inet-listener-configuration}} string protocol |
15293 | Le protocole à écouter. | |
bf5c74e7 JL |
15294 | @end deftypevr |
15295 | ||
1d8d69c8 JL |
15296 | @deftypevr {paramètre de @code{inet-listener-configuration}} string address |
15297 | L'adresse sur laquelle écouter, ou la chaîne vide pour toutes les adresses. | |
15298 | La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15299 | @end deftypevr |
15300 | ||
1d8d69c8 JL |
15301 | @deftypevr {paramètre de @code{inet-listener-configuration}} non-negative-integer port |
15302 | Le port sur lequel écouter. | |
bf5c74e7 JL |
15303 | @end deftypevr |
15304 | ||
1d8d69c8 JL |
15305 | @deftypevr {paramètre de @code{inet-listener-configuration}} boolean ssl? |
15306 | S'il faut utiliser SSL pour ce service ; @samp{yes}, @samp{no} ou | |
15307 | @samp{required}. La valeur par défaut est @samp{#t}. | |
bf5c74e7 JL |
15308 | @end deftypevr |
15309 | ||
15310 | @end deftypevr | |
15311 | ||
adfb167f JL |
15312 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer client-limit |
15313 | Connexions de clients simultanées maximum par processus. Une fois ce nombre | |
15314 | de connections atteint, la connexion suivante fera en sorte que Dovecot | |
15315 | démarre un autre processus. Si la valeur est 0, @code{default-client-limit} | |
15316 | est utilisé à la place. | |
15317 | ||
15318 | La valeur par défaut est @samp{0}. | |
15319 | ||
15320 | @end deftypevr | |
15321 | ||
1d8d69c8 JL |
15322 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer service-count |
15323 | Nombre de connexions à gérer avant de démarrer un nouveau processus. | |
15324 | Typiquement les valeurs utiles sont 0 (sans limite) ou 1. 1 est plus sûr, | |
15325 | mais 0 est plus rapide. <doc/wiki/LoginProcess.txt>. La valeur par défaut | |
15326 | est @samp{1}. | |
adfb167f JL |
15327 | |
15328 | @end deftypevr | |
15329 | ||
15330 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer process-limit | |
15331 | Nombre de processus maximum qui peut exister pour ce service. Si la valeur | |
15332 | est 0, @code{default-process-limit} est utilisé à la place. | |
15333 | ||
15334 | La valeur par défaut est @samp{0}. | |
15335 | ||
bf5c74e7 JL |
15336 | @end deftypevr |
15337 | ||
1d8d69c8 JL |
15338 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer process-min-avail |
15339 | Nombre de processus à toujours garder en attente de connexions. La valeur | |
15340 | par défaut est @samp{0}. | |
bf5c74e7 JL |
15341 | @end deftypevr |
15342 | ||
1d8d69c8 JL |
15343 | @deftypevr {paramètre de @code{service-configuration}} non-negative-integer vsz-limit |
15344 | Si vous mettez @samp{service-count 0}, vous avez sans doute besoin | |
15345 | d'augmenter ce paramètre. La valeur par défaut est @samp{256000000}. | |
bf5c74e7 JL |
15346 | @end deftypevr |
15347 | ||
15348 | @end deftypevr | |
15349 | ||
1d8d69c8 JL |
15350 | @deftypevr {paramètre de @code{dovecot-configuration}} dict-configuration dict |
15351 | Configuration du dictionnaire, créé par le constructeur | |
15352 | @code{dict-configuration}. | |
bf5c74e7 | 15353 | |
1d8d69c8 | 15354 | Les champs de @code{dict-configuration} disponibles sont : |
bf5c74e7 | 15355 | |
1d8d69c8 JL |
15356 | @deftypevr {paramètre de @code{dict-configuration}} free-form-fields entries |
15357 | Une liste de paires de clefs-valeurs que ce dictionnaire contient. La | |
15358 | valeur par défaut est @samp{()}. | |
bf5c74e7 JL |
15359 | @end deftypevr |
15360 | ||
15361 | @end deftypevr | |
15362 | ||
1d8d69c8 JL |
15363 | @deftypevr {paramètre de @code{dovecot-configuration}} passdb-configuration-list passdbs |
15364 | Une liste de configurations passdb, chacune créée par le constructeur | |
15365 | @code{passdb-configuration}. | |
bf5c74e7 | 15366 | |
1d8d69c8 | 15367 | Les champs de @code{passdb-configuration} disponibles sont : |
bf5c74e7 | 15368 | |
1d8d69c8 JL |
15369 | @deftypevr {paramètre de @code{passdb-configuration}} string driver |
15370 | Le pilote à utiliser par passdb. Les valeur valides comprennent @samp{pam}, | |
15371 | @samp{passwd}, @samp{shadow}, @samp{bsdauth} et @samp{static}. La valeur | |
15372 | par défaut est @samp{"pam"}. | |
bf5c74e7 JL |
15373 | @end deftypevr |
15374 | ||
1d8d69c8 JL |
15375 | @deftypevr {paramètre de @code{passdb-configuration}} space-separated-string-list args |
15376 | Liste d'arguments pour le pilote passdb séparés par des espaces. La valeur | |
15377 | par défaut est @samp{""}. | |
bf5c74e7 JL |
15378 | @end deftypevr |
15379 | ||
15380 | @end deftypevr | |
15381 | ||
1d8d69c8 JL |
15382 | @deftypevr {paramètre de @code{dovecot-configuration}} userdb-configuration-list userdbs |
15383 | Liste des configurations userdb, chacune créée par le constructeur | |
15384 | @code{userdb-configuration}. | |
bf5c74e7 | 15385 | |
1d8d69c8 | 15386 | Les champs de @code{userdb-configuration} disponibles sont : |
bf5c74e7 | 15387 | |
1d8d69c8 JL |
15388 | @deftypevr {paramètre de @code{userdb-configuration}} string driver |
15389 | Le pilote que userdb devrait utiliser. Les valeurs valides comprennent | |
15390 | @samp{passwd} et @samp{static}. La valeur par défaut est @samp{"passwd"}. | |
bf5c74e7 JL |
15391 | @end deftypevr |
15392 | ||
1d8d69c8 JL |
15393 | @deftypevr {paramètre de @code{userdb-configuration}} space-separated-string-list args |
15394 | Liste des arguments du pilote userdb séparés par des espaces. La valeur par | |
15395 | défaut est @samp{""}. | |
bf5c74e7 JL |
15396 | @end deftypevr |
15397 | ||
1d8d69c8 JL |
15398 | @deftypevr {paramètre de @code{userdb-configuration}} free-form-args override-fields |
15399 | Remplace des champs de passwd. La valeur par défaut est @samp{()}. | |
bf5c74e7 JL |
15400 | @end deftypevr |
15401 | ||
15402 | @end deftypevr | |
15403 | ||
1d8d69c8 JL |
15404 | @deftypevr {paramètre de @code{dovecot-configuration}} plugin-configuration plugin-configuration |
15405 | Configuration du greffon, créé par le constructeur | |
15406 | @code{plugin-configuration}. | |
bf5c74e7 JL |
15407 | @end deftypevr |
15408 | ||
1d8d69c8 JL |
15409 | @deftypevr {paramètre de @code{dovecot-configuration}} list-of-namespace-configuration namespaces |
15410 | Liste d'espaces de noms. Chaque élément de la liste est créé par le | |
15411 | constructeur @code{namespace-configuration}. | |
bf5c74e7 | 15412 | |
1d8d69c8 | 15413 | Les champs de @code{namespace-configuration} disponibles sont : |
bf5c74e7 | 15414 | |
1d8d69c8 JL |
15415 | @deftypevr {paramètre de @code{namespace-configuration}} string name |
15416 | Nom de cet espace de nom. | |
bf5c74e7 JL |
15417 | @end deftypevr |
15418 | ||
1d8d69c8 JL |
15419 | @deftypevr {paramètre de @code{namespace-configuration}} string type |
15420 | Type d'espace de nom : @samp{private}, @samp{shared} ou @samp{public}. La | |
15421 | valeur par défaut est @samp{"private"}. | |
bf5c74e7 JL |
15422 | @end deftypevr |
15423 | ||
1d8d69c8 JL |
15424 | @deftypevr {paramètre de @code{namespace-configuration}} string separator |
15425 | Séparateur de hiérarchie à utiliser. Vous devriez utiliser le même | |
15426 | séparateur pour tous les espaces de noms ou certains clients seront confus. | |
15427 | @samp{/} est généralement une bonne valeur. La valeur par défaut dépend | |
15428 | cependant du format de stockage sous-jacent. La valeur par défaut est | |
15429 | @samp{""}. | |
bf5c74e7 JL |
15430 | @end deftypevr |
15431 | ||
1d8d69c8 JL |
15432 | @deftypevr {paramètre de @code{namespace-configuration}} string prefix |
15433 | Préfixe requis pour accéder à cet espace de nom. Ce paramètres doit être | |
15434 | différent pour tous les espaces de noms. Par exemple @samp{Public/}. La | |
15435 | valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15436 | @end deftypevr |
15437 | ||
1d8d69c8 JL |
15438 | @deftypevr {paramètre de @code{namespace-configuration}} string location |
15439 | Emplacement physique de la boîte aux lettres. C'est le même format que | |
15440 | mail_location, qui est aussi la valeur par défaut. La valeur par défaut est | |
15441 | @samp{""}. | |
bf5c74e7 JL |
15442 | @end deftypevr |
15443 | ||
1d8d69c8 JL |
15444 | @deftypevr {paramètre de @code{namespace-configuration}} boolean inbox? |
15445 | Il ne peut y avoir qu'un INBOX, et ce paramètre définit l'espace de nom qui | |
15446 | le possède. La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
15447 | @end deftypevr |
15448 | ||
1d8d69c8 JL |
15449 | @deftypevr {paramètre de @code{namespace-configuration}} boolean hidden? |
15450 | Si l'espace de nom est caché, il n'est pas publié auprès des clients par | |
15451 | l'extension NAMESPACE. Vous voudrez aussi sans doute indiquer @samp{list? | |
15452 | #f}. C'est surtout utile lors de la conversion depuis un autre serveur avec | |
15453 | des espaces de noms différents que vous voulez rendre obsolètes sans les | |
15454 | casser. Par exemple vous pouvez cacher les espaces de noms avec les | |
15455 | préfixes @samp{~/mail/}, @samp{~%u/mail/} et @samp{mail/}. La valeur par | |
15456 | défaut est @samp{#f}. | |
bf5c74e7 JL |
15457 | @end deftypevr |
15458 | ||
1d8d69c8 JL |
15459 | @deftypevr {paramètre de @code{namespace-configuration}} boolean list? |
15460 | Montre les boîtes aux lettres sons cet espace de nom avec la commande LIST. | |
15461 | Cela rend l'espace de nom visible pour les clients qui ne supportent pas | |
15462 | l'extension NAMESPACE. La valeur spéciale @code{children} liste les boîtes | |
15463 | aux lettres filles mais cache le préfixe de l'espace de nom. La valeur par | |
15464 | défaut est @samp{#t}. | |
bf5c74e7 JL |
15465 | @end deftypevr |
15466 | ||
1d8d69c8 JL |
15467 | @deftypevr {paramètre de @code{namespace-configuration}} boolean subscriptions? |
15468 | Les espaces de noms gèrent leur propre souscription. Si la valeur est | |
15469 | @code{#f}, l'espace de nom parent s'en charge. Le préfixe vide devrait | |
15470 | toujours avoir cette valeur à @code{#t}. La valeur par défaut est | |
15471 | @samp{#t}. | |
bf5c74e7 JL |
15472 | @end deftypevr |
15473 | ||
1d8d69c8 JL |
15474 | @deftypevr {paramètre de @code{namespace-configuration}} mailbox-configuration-list mailboxes |
15475 | Liste des boîtes aux lettres prédéfinies dans cet espace de nom. La valeur | |
15476 | par défaut est @samp{()}. | |
bf5c74e7 | 15477 | |
1d8d69c8 | 15478 | Les champs de @code{mailbox-configuration} disponibles sont : |
bf5c74e7 | 15479 | |
1d8d69c8 JL |
15480 | @deftypevr {paramètre de @code{mailbox-configuration}} string name |
15481 | Nom de cette boîte aux lettres. | |
bf5c74e7 JL |
15482 | @end deftypevr |
15483 | ||
1d8d69c8 JL |
15484 | @deftypevr {paramètre de @code{mailbox-configuration}} string auto |
15485 | @samp{create} créera automatiquement cette boîte aux lettres. | |
15486 | @samp{subscribe} créera et souscrira à la boîte aux lettres. La valeur par | |
15487 | défaut est @samp{"no"}. | |
bf5c74e7 JL |
15488 | @end deftypevr |
15489 | ||
1d8d69c8 JL |
15490 | @deftypevr {paramètre de @code{mailbox-configuration}} space-separated-string-list special-use |
15491 | Liste des attributs @code{SPECIAL-USE} IMAP spécifiés par la RFC 6154. Les | |
15492 | valeurs valides sont @code{\All}, @code{\Archive}, @code{\Drafts}, | |
15493 | @code{\Flagged}, @code{\Junk}, @code{\Sent} et @code{\Trash}. La valeur par | |
15494 | défaut est @samp{()}. | |
bf5c74e7 JL |
15495 | @end deftypevr |
15496 | ||
15497 | @end deftypevr | |
15498 | ||
15499 | @end deftypevr | |
15500 | ||
1d8d69c8 JL |
15501 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name base-dir |
15502 | Répertoire de base où stocker les données d'exécution. La valeur par défaut | |
15503 | est @samp{"/var/run/dovecot/"}. | |
bf5c74e7 JL |
15504 | @end deftypevr |
15505 | ||
1d8d69c8 JL |
15506 | @deftypevr {paramètre de @code{dovecot-configuration}} string login-greeting |
15507 | Message d'accueil pour les clients. La valeur par défaut est @samp{"Dovecot | |
15508 | ready."}. | |
bf5c74e7 JL |
15509 | @end deftypevr |
15510 | ||
1d8d69c8 JL |
15511 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list login-trusted-networks |
15512 | Liste des groupes d'adresses de confiance. Les connexions depuis ces IP | |
15513 | sont autorisées à modifier leurs adresses IP et leurs ports (pour la | |
15514 | connexion et la vérification d'authentification). | |
15515 | @samp{disable-plaintext-auth} est aussi ignoré pour ces réseaux. | |
15516 | Typiquement vous voudrez spécifier votre mandataire IMAP ici. La valeur par | |
15517 | défaut est @samp{()}. | |
bf5c74e7 JL |
15518 | @end deftypevr |
15519 | ||
1d8d69c8 | 15520 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list login-access-sockets |
adfb167f | 15521 | List of login access check sockets (e.g.@: tcpwrap). Defaults to @samp{()}. |
bf5c74e7 JL |
15522 | @end deftypevr |
15523 | ||
1d8d69c8 | 15524 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean verbose-proctitle? |
adfb167f JL |
15525 | Show more verbose process titles (in ps). Currently shows user name and IP |
15526 | address. Useful for seeing who is actually using the IMAP processes (e.g.@: | |
15527 | shared mailboxes or if the same uid is used for multiple accounts). | |
15528 | Defaults to @samp{#f}. | |
bf5c74e7 JL |
15529 | @end deftypevr |
15530 | ||
1d8d69c8 | 15531 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean shutdown-clients? |
adfb167f JL |
15532 | Should all processes be killed when Dovecot master process shuts down. |
15533 | Setting this to @code{#f} means that Dovecot can be upgraded without forcing | |
15534 | existing client connections to close (although that could also be a problem | |
15535 | if the upgrade is e.g.@: due to a security fix). Defaults to @samp{#t}. | |
bf5c74e7 JL |
15536 | @end deftypevr |
15537 | ||
1d8d69c8 JL |
15538 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer doveadm-worker-count |
15539 | Si la valeur n'est pas zéro, lance les commandes de courriel via ce nombre | |
15540 | de connexions au serveur doveadm au lieu de les lancer dans le même | |
15541 | processus. La valeur par défaut est @samp{0}. | |
bf5c74e7 JL |
15542 | @end deftypevr |
15543 | ||
1d8d69c8 JL |
15544 | @deftypevr {paramètre de @code{dovecot-configuration}} string doveadm-socket-path |
15545 | Socket UNIX ou hôte:port utilisé pour se connecter au serveur doveadm. La | |
15546 | valeur par défaut est @samp{"doveadm-server"}. | |
bf5c74e7 JL |
15547 | @end deftypevr |
15548 | ||
1d8d69c8 JL |
15549 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list import-environment |
15550 | Liste des variables d'environnement qui sont préservées au démarrage de | |
15551 | Dovecot et passées à tous ses processus fils. Vous pouvez aussi donner des | |
15552 | paires clef=valeur pour toujours spécifier ce paramètre. | |
bf5c74e7 JL |
15553 | @end deftypevr |
15554 | ||
1d8d69c8 | 15555 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean disable-plaintext-auth? |
adfb167f JL |
15556 | Disable LOGIN command and all other plaintext authentications unless SSL/TLS |
15557 | is used (LOGINDISABLED capability). Note that if the remote IP matches the | |
15558 | local IP (i.e.@: you're connecting from the same computer), the connection | |
15559 | is considered secure and plaintext authentication is allowed. See also | |
15560 | ssl=required setting. Defaults to @samp{#t}. | |
bf5c74e7 JL |
15561 | @end deftypevr |
15562 | ||
1d8d69c8 | 15563 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer auth-cache-size |
adfb167f JL |
15564 | Authentication cache size (e.g.@: @samp{#e10e6}). 0 means it's disabled. |
15565 | Note that bsdauth, PAM and vpopmail require @samp{cache-key} to be set for | |
15566 | caching to be used. Defaults to @samp{0}. | |
bf5c74e7 JL |
15567 | @end deftypevr |
15568 | ||
1d8d69c8 JL |
15569 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-cache-ttl |
15570 | Durée de vie des données en cache. Après l'expiration du TTL | |
15571 | l'enregistrement en cache n'est plus utilisé *sauf* si la requête à la base | |
15572 | de données principale revoie une erreur interne. Nous essayons aussi de | |
15573 | gérer les changements de mot de passe automatiquement : si | |
15574 | l'authentification précédente de l'utilisateur était réussie mais pas | |
15575 | celle-ci, le cache n'est pas utilisé. Pour l'instant cela fonctionne avec | |
15576 | l'authentification en texte clair uniquement. La valeur par défaut est | |
15577 | @samp{"1 hour"}. | |
bf5c74e7 JL |
15578 | @end deftypevr |
15579 | ||
1d8d69c8 JL |
15580 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-cache-negative-ttl |
15581 | TTL pour les résultats négatifs (l'utilisateur n'est pas trouvé ou le mot de | |
15582 | passe ne correspond pas). 0 désactive la mise en cache complètement. La | |
15583 | valeur par défaut est @samp{"1 hour"}. | |
bf5c74e7 JL |
15584 | @end deftypevr |
15585 | ||
1d8d69c8 JL |
15586 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list auth-realms |
15587 | Liste des domaines pour les mécanismes d'authentification SASL qui en ont | |
15588 | besoin. Vous pouvez laisser ce paramètre vide si vous ne voulez pas | |
15589 | utiliser plusieurs domaines. Beaucoup de clients utilisent le premier | |
15590 | domaine listé ici, donc gardez celui par défaut en premier. La valeur par | |
15591 | défaut est @samp{()} | |
bf5c74e7 JL |
15592 | @end deftypevr |
15593 | ||
1d8d69c8 JL |
15594 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-default-realm |
15595 | Domaine par défaut à utiliser si aucun n'est spécifié. C'est utilisé pour | |
15596 | les domaines SASL et pour ajouter @@domaine au nom d'utilisateur dans les | |
15597 | authentification en texte clair. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15598 | @end deftypevr |
15599 | ||
1d8d69c8 JL |
15600 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-username-chars |
15601 | Liste des caractères autorisés dans les noms d'utilisateur. Si le nom | |
15602 | d'utilisateur donné par l'utilisateur contient un caractère qui n'est pas | |
15603 | listé ici, la connexion échoue automatiquement. C'est juste une | |
15604 | vérification supplémentaire pour s'assure que l'utilisateur ne puisse pas | |
15605 | exploiter des vulnérabilités potentielles d'échappement de guillemets avec | |
15606 | les bases de données SQL/LDAP. Si vous voulez autoriser tous les | |
15607 | caractères, indiquez la liste vide. | |
bf5c74e7 JL |
15608 | @end deftypevr |
15609 | ||
1d8d69c8 JL |
15610 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-username-translation |
15611 | Traduction de caractères dans les noms d'utilisateur avant qu'ils ne soient | |
15612 | cherchés en base. La valeur contient une série de caractère de -> à. Par | |
15613 | exemple @samp{#@@/@@} signifie que @samp{#} et @samp{/} sont traduits en | |
15614 | @samp{@@}. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15615 | @end deftypevr |
15616 | ||
1d8d69c8 | 15617 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-username-format |
adfb167f JL |
15618 | Username formatting before it's looked up from databases. You can use the |
15619 | standard variables here, e.g.@: %Lu would lowercase the username, %n would | |
15620 | drop away the domain if it was given, or @samp{%n-AT-%d} would change the | |
15621 | @samp{@@} into @samp{-AT-}. This translation is done after | |
15622 | @samp{auth-username-translation} changes. Defaults to @samp{"%Lu"}. | |
bf5c74e7 JL |
15623 | @end deftypevr |
15624 | ||
1d8d69c8 | 15625 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-master-user-separator |
adfb167f JL |
15626 | If you want to allow master users to log in by specifying the master |
15627 | username within the normal username string (i.e.@: not using SASL | |
15628 | mechanism's support for it), you can specify the separator character here. | |
15629 | The format is then <username><separator><master username>. UW-IMAP uses | |
15630 | @samp{*} as the separator, so that could be a good choice. Defaults to | |
15631 | @samp{""}. | |
bf5c74e7 JL |
15632 | @end deftypevr |
15633 | ||
1d8d69c8 JL |
15634 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-anonymous-username |
15635 | Nom d'utilisateur à utiliser pour les utilisateurs qui se connectent avec le | |
15636 | mécanisme SASL ANONYMOUS. La valeur par défaut est @samp{"anonymous"}. | |
bf5c74e7 JL |
15637 | @end deftypevr |
15638 | ||
1d8d69c8 | 15639 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer auth-worker-max-count |
adfb167f JL |
15640 | Maximum number of dovecot-auth worker processes. They're used to execute |
15641 | blocking passdb and userdb queries (e.g.@: MySQL and PAM). They're | |
15642 | automatically created and destroyed as needed. Defaults to @samp{30}. | |
bf5c74e7 JL |
15643 | @end deftypevr |
15644 | ||
1d8d69c8 JL |
15645 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-gssapi-hostname |
15646 | Nom d'hôte à utiliser dans les noms GSSAPI principaux. La valeur par défaut | |
15647 | est d'utiliser le nom renvoyé par gethostname(). Utilisez @samp{$ALL} (avec | |
15648 | des guillemets) pour permettre toutes les entrées keytab. La valeur par | |
15649 | défaut est @samp{""}. | |
bf5c74e7 JL |
15650 | @end deftypevr |
15651 | ||
1d8d69c8 JL |
15652 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-krb5-keytab |
15653 | Keytab Kerberos à utiliser pour le mécanisme GSSAPI. Utilisera la valeur | |
15654 | par défaut du système (typiquement @file{/etc/krb5.keytab}) s'il n'est pas | |
15655 | spécifié. Vous pourriez avoir besoin de faire en sorte que le service | |
15656 | d'authentification tourne en root pour pouvoir lire ce fichier. La valeur | |
15657 | par défaut est @samp{""}. | |
bf5c74e7 JL |
15658 | @end deftypevr |
15659 | ||
1d8d69c8 JL |
15660 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-use-winbind? |
15661 | Effectue l'authentification NTLM et GSS-SPNEGO avec le démon winbind de | |
15662 | Samba et l'utilitaire @samp{ntlm-auth}. | |
15663 | <doc/wiki/Authentication/Mechanisms/Winbind.txt>. La valeur par défaut est | |
15664 | @samp{#f}. | |
bf5c74e7 JL |
15665 | @end deftypevr |
15666 | ||
1d8d69c8 JL |
15667 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name auth-winbind-helper-path |
15668 | Chemin du binaire @samp{ntlm-auth} de samba. La valeur par défaut est | |
bf5c74e7 JL |
15669 | @samp{"/usr/bin/ntlm_auth"}. |
15670 | @end deftypevr | |
15671 | ||
1d8d69c8 JL |
15672 | @deftypevr {paramètre de @code{dovecot-configuration}} string auth-failure-delay |
15673 | Durée d'attente avant de répondre à des authentifications échouées. La | |
15674 | valeur par défaut est @samp{"2 secs"}. | |
bf5c74e7 JL |
15675 | @end deftypevr |
15676 | ||
1d8d69c8 JL |
15677 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-ssl-require-client-cert? |
15678 | Requiert un certification client SSL valide ou l'authentification échoue. | |
15679 | La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
15680 | @end deftypevr |
15681 | ||
1d8d69c8 JL |
15682 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-ssl-username-from-cert? |
15683 | Prend le nom d'utilisateur du certificat SSL client, avec | |
15684 | @code{X509_NAME_get_text_by_NID()} qui renvoie le CommonName du DN du | |
15685 | sujet. La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
15686 | @end deftypevr |
15687 | ||
1d8d69c8 JL |
15688 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list auth-mechanisms |
15689 | Liste des mécanismes d'authentification souhaités. Les mécanismes supportés | |
15690 | sont : @samp{plain}, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, | |
15691 | @samp{ntlm}, @samp{rpa}, @samp{apop}, @samp{anonymous}, @samp{gssapi}, | |
15692 | @samp{otp}, @samp{skey} et @samp{gss-spnego}. Remarquez : Voir aussi le | |
15693 | paramètre @samp{disable-plaintext-auth}. | |
bf5c74e7 JL |
15694 | @end deftypevr |
15695 | ||
1d8d69c8 JL |
15696 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list director-servers |
15697 | Liste des IP ou des noms d'hôtes des serveurs directeurs, dont soi-même. | |
15698 | Les ports peuvent être spécifiés avec ip:port. Le port par défaut est le | |
15699 | même que le @samp{inet-listener} du service directeur. La valeur par défaut | |
15700 | est @samp{()}. | |
bf5c74e7 JL |
15701 | @end deftypevr |
15702 | ||
1d8d69c8 JL |
15703 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list director-mail-servers |
15704 | Liste des IP ou des noms d'hôtes de tous les serveurs de courriel de la | |
15705 | grappe. Les intervalles sont aussi permis, comme 10.0.0.10-10.0.0.30. La | |
15706 | valeur par défaut est @samp{()}. | |
bf5c74e7 JL |
15707 | @end deftypevr |
15708 | ||
1d8d69c8 JL |
15709 | @deftypevr {paramètre de @code{dovecot-configuration}} string director-user-expire |
15710 | Combien de temps avant de rediriger les utilisateurs à un serveur spécifique | |
15711 | après qu'il n'y a plus de connexion. La valeur par défaut est @samp{"15 | |
15712 | min"}. | |
bf5c74e7 JL |
15713 | @end deftypevr |
15714 | ||
1d8d69c8 JL |
15715 | @deftypevr {paramètre de @code{dovecot-configuration}} string director-username-hash |
15716 | La manière de traduire le nom d'utilisateur avant de le hasher. Les valeurs | |
15717 | utiles comprennent %Ln si l'utilisateur peut se connecter avec ou sans | |
15718 | @@domain, %Ld si les boîtes aux lettres sont partagées dans le domaine. La | |
15719 | valeur par défaut est @samp{"%Lu"}. | |
bf5c74e7 JL |
15720 | @end deftypevr |
15721 | ||
1d8d69c8 JL |
15722 | @deftypevr {paramètre de @code{dovecot-configuration}} string log-path |
15723 | Fichier de journal à utiliser pour les messages d'erreur. @samp{syslog} | |
15724 | journalise vers syslog, @samp{/dev/stderr} vers la sortie d'erreur. La | |
15725 | valeur par défaut est @samp{"syslog"}. | |
bf5c74e7 JL |
15726 | @end deftypevr |
15727 | ||
1d8d69c8 JL |
15728 | @deftypevr {paramètre de @code{dovecot-configuration}} string info-log-path |
15729 | Fichier de journal à utiliser pour les messages d'information. La valeur | |
15730 | par défaut est @samp{log-path}. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15731 | @end deftypevr |
15732 | ||
1d8d69c8 JL |
15733 | @deftypevr {paramètre de @code{dovecot-configuration}} string debug-log-path |
15734 | Fichier de journal à utiliser pour les messages de débogage. La valeur par | |
15735 | défaut est @samp{info-log-path}. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15736 | @end deftypevr |
15737 | ||
1d8d69c8 JL |
15738 | @deftypevr {paramètre de @code{dovecot-configuration}} string syslog-facility |
15739 | Dispositif syslog à utiliser si vous journalisez avec syslog. Normalement | |
15740 | si vous ne voulez pas utiliser @samp{mail}, vous voudrez utiliser | |
15741 | local0..local7. D'autres dispositifs standard sont supportés. La valeur | |
15742 | par défaut est @samp{"mail"}. | |
bf5c74e7 JL |
15743 | @end deftypevr |
15744 | ||
1d8d69c8 | 15745 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-verbose? |
adfb167f JL |
15746 | Indique s'il faut enregistrer les tentatives de connexion échouées et la |
15747 | raison de leur échec. La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
15748 | @end deftypevr |
15749 | ||
1d8d69c8 | 15750 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-verbose-passwords? |
bf5c74e7 JL |
15751 | In case of password mismatches, log the attempted password. Valid values |
15752 | are no, plain and sha1. sha1 can be useful for detecting brute force | |
15753 | password attempts vs. user simply trying the same password over and over | |
adfb167f JL |
15754 | again. You can also truncate the value to n chars by appending ":n" (e.g.@: |
15755 | sha1:6). Defaults to @samp{#f}. | |
bf5c74e7 JL |
15756 | @end deftypevr |
15757 | ||
1d8d69c8 | 15758 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-debug? |
adfb167f JL |
15759 | Journaux encore plus verbeux pour le débogage. Cela montre par exemple les |
15760 | requêtes SQL effectuées. La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
15761 | @end deftypevr |
15762 | ||
1d8d69c8 | 15763 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean auth-debug-passwords? |
adfb167f JL |
15764 | Dans le cas où le mot de passe était incorrect, indique s'il faut |
15765 | enregistrer les mots de passe et les schémas utilisés pour que le problème | |
15766 | puisse être débogué. Activer cette option active aussi @samp{auth-debug}. | |
15767 | La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
15768 | @end deftypevr |
15769 | ||
1d8d69c8 | 15770 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-debug? |
adfb167f JL |
15771 | Indique s'il faut activer le débogage du traitement des courriels. Cela |
15772 | peut vous aider à comprendre pourquoi Dovecot ne trouve pas vos courriels. | |
15773 | La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
15774 | @end deftypevr |
15775 | ||
1d8d69c8 | 15776 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean verbose-ssl? |
adfb167f JL |
15777 | Indique s'il faut montrer les erreurs au niveau SSL. La valeur par défaut |
15778 | est @samp{#f}. | |
bf5c74e7 JL |
15779 | @end deftypevr |
15780 | ||
1d8d69c8 | 15781 | @deftypevr {paramètre de @code{dovecot-configuration}} string log-timestamp |
adfb167f JL |
15782 | Préfixe à utiliser devant chaque ligne écrite dans le fichier journal. Les |
15783 | codes % sont au format strftime(3). La valeur par défaut est @samp{"\"%b %d | |
15784 | %H:%M:%S \""}. | |
bf5c74e7 JL |
15785 | @end deftypevr |
15786 | ||
1d8d69c8 | 15787 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list login-log-format-elements |
adfb167f JL |
15788 | Liste des éléments qu'il faut enregistrer. Les éléments qui ont une |
15789 | variable non vide sont agrégés pour former une chaîne de mots séparés par | |
15790 | des virgules. | |
bf5c74e7 JL |
15791 | @end deftypevr |
15792 | ||
1d8d69c8 | 15793 | @deftypevr {paramètre de @code{dovecot-configuration}} string login-log-format |
adfb167f JL |
15794 | Format du journal de connexion. %s contient la chaîne |
15795 | @samp{login-log-format-elements}, %$ contient la donnée à enregistrer. La | |
15796 | valeur par défaut est @samp{"%$: %s"}. | |
bf5c74e7 JL |
15797 | @end deftypevr |
15798 | ||
1d8d69c8 | 15799 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-log-prefix |
adfb167f JL |
15800 | Préfixe à utiliser devant chaque ligne du fichier de journal pour les |
15801 | processus traitant les courriels. Voir doc/wiki/Variables.txt pour trouver | |
15802 | la liste des variables que vous pouvez utiliser. La valeur par défaut est | |
bf5c74e7 JL |
15803 | @samp{"\"%s(%u)<%@{pid@}><%@{session@}>: \""}. |
15804 | @end deftypevr | |
15805 | ||
1d8d69c8 | 15806 | @deftypevr {paramètre de @code{dovecot-configuration}} string deliver-log-format |
adfb167f JL |
15807 | Format à utiliser pour enregistrer les livraisons de courriels. Vous pouvez |
15808 | utiliser ces variables : | |
bf5c74e7 JL |
15809 | @table @code |
15810 | @item %$ | |
adfb167f | 15811 | Delivery status message (e.g.@: @samp{saved to INBOX}) |
bf5c74e7 JL |
15812 | @item %m |
15813 | Message-ID | |
15814 | @item %s | |
adfb167f | 15815 | Objet |
bf5c74e7 | 15816 | @item %f |
adfb167f | 15817 | Adresse « de » |
bf5c74e7 | 15818 | @item %p |
adfb167f | 15819 | Taille physique |
bf5c74e7 | 15820 | @item %w |
adfb167f | 15821 | Taille virtuelle. |
bf5c74e7 | 15822 | @end table |
1d8d69c8 | 15823 | La valeur par défaut est @samp{"msgid=%m: %$"}. |
bf5c74e7 JL |
15824 | @end deftypevr |
15825 | ||
1d8d69c8 | 15826 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-location |
adfb167f JL |
15827 | Emplacement des boîtes à lettre des utilisateurs. La valeur par défaut est |
15828 | vide, ce qui signifie que Dovecot essaiera de trouver les boîte aux lettres | |
15829 | automatiquement. Cela ne fonctionnera pas si l'utilisateur n'a aucun | |
15830 | courriel, donc il vaut mieux indiquer explicitement le bon emplacement à | |
15831 | Dovecot. | |
bf5c74e7 | 15832 | |
adfb167f | 15833 | If you're using mbox, giving a path to the INBOX file (e.g.@: /var/mail/%u) |
bf5c74e7 JL |
15834 | isn't enough. You'll also need to tell Dovecot where the other mailboxes |
15835 | are kept. This is called the "root mail directory", and it must be the | |
15836 | first path given in the @samp{mail-location} setting. | |
15837 | ||
adfb167f | 15838 | Il y a quelques variables spéciales que vous pouvez utiliser : |
bf5c74e7 JL |
15839 | |
15840 | @table @samp | |
15841 | @item %u | |
adfb167f | 15842 | nom d'utilisateur |
bf5c74e7 | 15843 | @item %n |
adfb167f JL |
15844 | la partie « utilisateur » dans « utilisateur@@domaine », comme %u s'il n'y a |
15845 | pas de domaine. | |
bf5c74e7 | 15846 | @item %d |
adfb167f JL |
15847 | la partie « domaine » dans « utilisateur@@domaine », vide s'il n'y a pas de |
15848 | domaine | |
bf5c74e7 | 15849 | @item %h |
adfb167f | 15850 | répertoire personnel |
bf5c74e7 JL |
15851 | @end table |
15852 | ||
adfb167f | 15853 | Voir doc/wiki/Variables.txt pour la liste complète. Quelques exemple : |
bf5c74e7 JL |
15854 | @table @samp |
15855 | @item maildir:~/Maildir | |
15856 | @item mbox:~/mail:INBOX=/var/mail/%u | |
15857 | @item mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/% | |
15858 | @end table | |
1d8d69c8 | 15859 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
15860 | @end deftypevr |
15861 | ||
1d8d69c8 | 15862 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-uid |
adfb167f JL |
15863 | Utilisateur et groupe système utilisé pour accéder aux courriels. Si vous |
15864 | utilisez multiple, userdb peut remplacer ces valeurs en renvoyant les champs | |
15865 | uid et gid. Vous pouvez utiliser soit des nombres, soit des noms. | |
15866 | <doc/wiki/UserIds.txt>. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15867 | @end deftypevr |
15868 | ||
1d8d69c8 | 15869 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-gid |
bf5c74e7 | 15870 | |
1d8d69c8 | 15871 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
15872 | @end deftypevr |
15873 | ||
1d8d69c8 | 15874 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-privileged-group |
adfb167f JL |
15875 | Groupe à activer temporairement pour les opérations privilégiées. |
15876 | Actuellement cela est utilisé uniquement avec INBOX lors de sa création | |
15877 | initiale et quand le verrouillage échoie. Typiquement, vous pouvez utiliser | |
15878 | « mail » pour donner accès à /var/mail. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
15879 | @end deftypevr |
15880 | ||
1d8d69c8 | 15881 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-access-groups |
bf5c74e7 JL |
15882 | Grant access to these supplementary groups for mail processes. Typically |
15883 | these are used to set up access to shared mailboxes. Note that it may be | |
adfb167f JL |
15884 | dangerous to set these if users can create symlinks (e.g.@: if "mail" group |
15885 | is set here, ln -s /var/mail ~/mail/var could allow a user to delete others' | |
bf5c74e7 JL |
15886 | mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading |
15887 | it). Defaults to @samp{""}. | |
15888 | @end deftypevr | |
15889 | ||
1d8d69c8 | 15890 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-full-filesystem-access? |
bf5c74e7 JL |
15891 | Allow full file system access to clients. There's no access checks other |
15892 | than what the operating system does for the active UID/GID. It works with | |
adfb167f JL |
15893 | both maildir and mboxes, allowing you to prefix mailboxes names with e.g.@: |
15894 | /path/ or ~user/. Defaults to @samp{#f}. | |
bf5c74e7 JL |
15895 | @end deftypevr |
15896 | ||
1d8d69c8 | 15897 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mmap-disable? |
adfb167f JL |
15898 | Ne pas du tout utiliser mmap(). Cela est requis si vous stockez les index |
15899 | dans des systèmes de fichiers partagés (NFS ou clusterfs). La valeur par | |
15900 | défaut est @samp{#f}. | |
bf5c74e7 JL |
15901 | @end deftypevr |
15902 | ||
1d8d69c8 | 15903 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean dotlock-use-excl? |
adfb167f JL |
15904 | S'appuyer sur @samp{O_EXCL} lors de la création de fichiers de |
15905 | verrouillage. NFS supporte @samp{O_EXCL} depuis la version 3, donc cette | |
15906 | option est sûre de nos jours. La valeur par défaut est @samp{#t}. | |
bf5c74e7 JL |
15907 | @end deftypevr |
15908 | ||
1d8d69c8 | 15909 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-fsync |
adfb167f | 15910 | Quand utiliser les appels à fsync() ou fdatasync() : |
bf5c74e7 JL |
15911 | @table @code |
15912 | @item optimized | |
adfb167f | 15913 | Lorsque cela est nécessaire pour éviter de perdre des données importantes |
bf5c74e7 | 15914 | @item always |
adfb167f | 15915 | Useful with e.g.@: NFS when write()s are delayed |
bf5c74e7 | 15916 | @item never |
adfb167f JL |
15917 | Ne l'utilisez pas (ça a de meilleures performances, mais les crashs font |
15918 | perdre toutes les données). | |
bf5c74e7 | 15919 | @end table |
1d8d69c8 | 15920 | La valeur par défaut est @samp{"optimized"}. |
bf5c74e7 JL |
15921 | @end deftypevr |
15922 | ||
1d8d69c8 | 15923 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-nfs-storage? |
adfb167f JL |
15924 | Le stockage des courriels se fait sur NFS. Utilisez cette option pour que |
15925 | Dovecot vide les caches NFS lorsque c'est nécessaire. Si vous utilisez | |
15926 | seulement un simple serveur de courriel, ce n'est pas nécessaire. La valeur | |
15927 | par défaut est @samp{#f}. | |
bf5c74e7 JL |
15928 | @end deftypevr |
15929 | ||
1d8d69c8 | 15930 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-nfs-index? |
adfb167f JL |
15931 | Les fichiers d'index de courriels sont sur un système de fichiers NFS. Pour |
15932 | utiliser cette option, vous aurez besoin de @samp{mmap-disable? #t} et | |
15933 | @samp{fsync-disable? #f}. La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
15934 | @end deftypevr |
15935 | ||
1d8d69c8 | 15936 | @deftypevr {paramètre de @code{dovecot-configuration}} string lock-method |
adfb167f JL |
15937 | Méthode de verrouillage des fichiers d'index. Les alternatives sont fcntl, |
15938 | flock et dotlock. Le verrouillage-point (dotlocking) utilise des astuces | |
15939 | qui peuvent créer plus d'utilisation du disque que les autres méthodes de | |
15940 | verrouillage. Pour les utilisateurs de NFS, flock ne marche pas, et | |
15941 | rappelez-vous de modifier @samp{mmap-disable}. La valeur par défaut est | |
15942 | @samp{"fcntl"}. | |
bf5c74e7 JL |
15943 | @end deftypevr |
15944 | ||
1d8d69c8 | 15945 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name mail-temp-dir |
adfb167f JL |
15946 | Le répertoire dans lequel LDA/LMTP stockent temporairement les courriels de |
15947 | plus de 128 Ko. La valeur par défaut est @samp{"/tmp"}. | |
bf5c74e7 JL |
15948 | @end deftypevr |
15949 | ||
1d8d69c8 | 15950 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer first-valid-uid |
adfb167f JL |
15951 | L'intervalle d'UID valides pour les utilisateurs. Cette option est surtout |
15952 | utile pour s'assurer que les utilisateurs ne peuvent pas s'authentifier en | |
15953 | tant que démon ou qu'un autre utilisateur système. Remarquez que la | |
15954 | connexion en root est interdite en dur dans le binaire de dovecot et qu'on | |
15955 | ne peut pas l'autoriser même si @samp{first-valid-uid} vaut 0. La valeur | |
15956 | par défaut est @samp{500}. | |
bf5c74e7 JL |
15957 | @end deftypevr |
15958 | ||
1d8d69c8 | 15959 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer last-valid-uid |
bf5c74e7 | 15960 | |
1d8d69c8 | 15961 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
15962 | @end deftypevr |
15963 | ||
1d8d69c8 | 15964 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer first-valid-gid |
adfb167f JL |
15965 | Li'ntervalle de GID valides pour les utilisateurs. Les utilisateurs qui ont |
15966 | un GID non-valide comme numéro de groupe primaire ne peuvent pas se | |
15967 | connecter. Si l'utilisateur appartient à un groupe avec un GID non valide, | |
15968 | ce groupe n'est pas utilisable. La valeur par défaut est @samp{1}. | |
bf5c74e7 JL |
15969 | @end deftypevr |
15970 | ||
1d8d69c8 | 15971 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer last-valid-gid |
bf5c74e7 | 15972 | |
1d8d69c8 | 15973 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
15974 | @end deftypevr |
15975 | ||
1d8d69c8 | 15976 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mail-max-keyword-length |
adfb167f JL |
15977 | Longueur maximale autorisée pour les mots-clefs. Elle n'est utilisée que |
15978 | lors de la création de nouveaux mots-clefs. La valeur par défaut est | |
15979 | @samp{50}. | |
bf5c74e7 JL |
15980 | @end deftypevr |
15981 | ||
1d8d69c8 | 15982 | @deftypevr {paramètre de @code{dovecot-configuration}} colon-separated-file-name-list valid-chroot-dirs |
bf5c74e7 | 15983 | List of directories under which chrooting is allowed for mail processes |
adfb167f | 15984 | (i.e.@: /var/mail will allow chrooting to /var/mail/foo/bar too). This |
bf5c74e7 JL |
15985 | setting doesn't affect @samp{login-chroot} @samp{mail-chroot} or auth chroot |
15986 | settings. If this setting is empty, "/./" in home dirs are ignored. | |
15987 | WARNING: Never add directories here which local users can modify, that may | |
15988 | lead to root exploit. Usually this should be done only if you don't allow | |
15989 | shell access for users. <doc/wiki/Chrooting.txt>. Defaults to @samp{()}. | |
15990 | @end deftypevr | |
15991 | ||
1d8d69c8 | 15992 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-chroot |
bf5c74e7 JL |
15993 | Default chroot directory for mail processes. This can be overridden for |
15994 | specific users in user database by giving /./ in user's home directory | |
adfb167f JL |
15995 | (e.g.@: /home/./user chroots into /home). Note that usually there is no |
15996 | real need to do chrooting, Dovecot doesn't allow users to access files | |
15997 | outside their mail directory anyway. If your home directories are prefixed | |
15998 | with the chroot directory, append "/."@: to @samp{mail-chroot}. | |
bf5c74e7 JL |
15999 | <doc/wiki/Chrooting.txt>. Defaults to @samp{""}. |
16000 | @end deftypevr | |
16001 | ||
1d8d69c8 | 16002 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name auth-socket-path |
adfb167f JL |
16003 | Chemin de socket UNIX vers le serveur d'authentification maître pour trouver |
16004 | les utilisateurs. C'est utilisé par imap (pour les utilisateurs partagés) | |
16005 | et lda. La valeur par défaut est @samp{"/var/run/dovecot/auth-userdb"}. | |
bf5c74e7 JL |
16006 | @end deftypevr |
16007 | ||
1d8d69c8 | 16008 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name mail-plugin-dir |
adfb167f | 16009 | Répertoire où trouver les greffons. La valeur par défaut est |
bf5c74e7 JL |
16010 | @samp{"/usr/lib/dovecot"}. |
16011 | @end deftypevr | |
16012 | ||
1d8d69c8 | 16013 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list mail-plugins |
bf5c74e7 | 16014 | List of plugins to load for all services. Plugins specific to IMAP, LDA, |
adfb167f | 16015 | etc.@: are added to this list in their own .conf files. Defaults to |
bf5c74e7 JL |
16016 | @samp{()}. |
16017 | @end deftypevr | |
16018 | ||
1d8d69c8 | 16019 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mail-cache-min-mail-count |
adfb167f JL |
16020 | Le nombre minimal de courriels dans une boîte aux lettres avant de mettre à |
16021 | jour le fichier de cache. Cela permet d'optimiser le comportement de | |
16022 | Dovecot pour qu'il fasse moins d'écriture disque contre plus de lecture | |
16023 | disque. La valeur par défaut est @samp{0}. | |
bf5c74e7 JL |
16024 | @end deftypevr |
16025 | ||
1d8d69c8 | 16026 | @deftypevr {paramètre de @code{dovecot-configuration}} string mailbox-idle-check-interval |
adfb167f JL |
16027 | Lorsque la commande IDLE est lancée, la boîte aux lettres est vérifiée de |
16028 | temps en temps pour voir s'il y a de nouveaux messages ou d'autres | |
16029 | changements. Ce paramètre défini le temps d'attente minimum entre deux | |
16030 | vérifications. Dovecot peut aussi utilise dnotify, inotify et kqueue pour | |
16031 | trouver immédiatement les changements. La valeur par défaut est @samp{"30 | |
16032 | secs"}. | |
bf5c74e7 JL |
16033 | @end deftypevr |
16034 | ||
1d8d69c8 | 16035 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mail-save-crlf? |
adfb167f JL |
16036 | Sauvegarder les courriels avec CR+LF plutôt que seulement LF. Cela permet |
16037 | de consommer moins de CPU en envoyant ces courriels, surtout avec l'appel | |
16038 | système sendfile() de Linux et FreeBSD. Mais cela crée un peu plus | |
16039 | d'utilisation du disque, ce qui peut aussi le ralentir. Remarquez aussi que | |
16040 | si d'autres logiciels lisent les mbox/maildirs, ils peuvent se tromper dans | |
16041 | leur traitement de ces CR supplémentaires et causer des problèmes. La | |
16042 | valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
16043 | @end deftypevr |
16044 | ||
1d8d69c8 | 16045 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean maildir-stat-dirs? |
adfb167f JL |
16046 | Par défaut la commande LIST renvoie toutes les entrées du maildir qui |
16047 | commencent par un point. Activer cette option permet à Dovecot de renvoyer | |
16048 | uniquement les entrées qui sont des répertoires. Cela se fait avec stat() | |
16049 | sur chaque entrée, ce qui cause plus d'utilisation du disque. For systems | |
16050 | setting struct @samp{dirent->d_type} this check is free and it's done always | |
16051 | regardless of this setting). La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
16052 | @end deftypevr |
16053 | ||
1d8d69c8 | 16054 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean maildir-copy-with-hardlinks? |
adfb167f JL |
16055 | Lors de la copie d'un message, le faire avec des liens en dur si possible. |
16056 | Cela améliore un peu la performance et n'a que peu de chance d'avoir des | |
16057 | effets secondaires. | |
bf5c74e7 JL |
16058 | @end deftypevr |
16059 | ||
1d8d69c8 | 16060 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean maildir-very-dirty-syncs? |
adfb167f JL |
16061 | Suppose que Dovecot est le seul MUA qui accède à Maildir : scanne le |
16062 | répertoire cur/ seulement lorsque son mtime change de manière inattendue ou | |
16063 | lorsqu'il ne peut pas trouver le courriel autrement. La valeur par défaut | |
16064 | est @samp{#f}. | |
bf5c74e7 JL |
16065 | @end deftypevr |
16066 | ||
1d8d69c8 | 16067 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list mbox-read-locks |
adfb167f JL |
16068 | La méthode de verrouillage à utiliser pour verrouiller le boîtes aux lettres |
16069 | mbox. Il y en a quatre : | |
bf5c74e7 JL |
16070 | |
16071 | @table @code | |
16072 | @item dotlock | |
adfb167f JL |
16073 | Crée un fichier <mailbox>.lock. C'est la solution la plus ancienne et la |
16074 | plus sûr pour NFS. Si vous voulez utiliser /var/mail/, les utilisateurs | |
16075 | auront besoin de l'accès en écriture à ce répertoire. | |
bf5c74e7 | 16076 | @item dotlock-try |
adfb167f JL |
16077 | Comme pour dotlock, mais si elle échoue à cause d'un problème de permission |
16078 | ou parce qu'il n'y a pas assez d'espace disque, l'ignore. | |
bf5c74e7 | 16079 | @item fcntl |
adfb167f JL |
16080 | Utilisez cette méthode si possible. Elle fonctionne aussi avec NFS si vous |
16081 | utilisez lockd. | |
bf5c74e7 | 16082 | @item flock |
adfb167f | 16083 | Peut ne pas exister sur tous les systèmes. Ne fonctionne pas avec NFS. |
bf5c74e7 | 16084 | @item lockf |
adfb167f | 16085 | Peut ne pas exister sur tous les systèmes. Ne fonctionne pas avec NFS. |
bf5c74e7 JL |
16086 | @end table |
16087 | ||
adfb167f JL |
16088 | Vous pouvez utiliser plusieurs méthodes de verrouillage ; dans ce cas |
16089 | l'ordre dans lequel elles sont déclarées est important pour éviter des | |
16090 | interblocages si d'autres MTA/MUA utilisent aussi plusieurs méthodes. | |
16091 | Certains systèmes d'exploitation ne permettent pas d'utiliser certaines | |
16092 | méthodes en même temps. | |
bf5c74e7 JL |
16093 | @end deftypevr |
16094 | ||
1d8d69c8 | 16095 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list mbox-write-locks |
bf5c74e7 JL |
16096 | |
16097 | @end deftypevr | |
16098 | ||
1d8d69c8 | 16099 | @deftypevr {paramètre de @code{dovecot-configuration}} string mbox-lock-timeout |
adfb167f JL |
16100 | Temps d'attente maximal pour un verrou (tous les verrous) avant |
16101 | d'abandonner. La valeur par défaut est @samp{"5 mins"}. | |
bf5c74e7 JL |
16102 | @end deftypevr |
16103 | ||
1d8d69c8 | 16104 | @deftypevr {paramètre de @code{dovecot-configuration}} string mbox-dotlock-change-timeout |
adfb167f JL |
16105 | Si le fichier dotlock existe mais que la boîte aux lettres n'est pas |
16106 | modifiée, remplacer le fichier de verrouillage après ce temps d'attente. La | |
16107 | valeur par défaut est @samp{"2 mins"}. | |
bf5c74e7 JL |
16108 | @end deftypevr |
16109 | ||
1d8d69c8 | 16110 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mbox-dirty-syncs? |
adfb167f JL |
16111 | Lorsqu'un mbox change ne manière inattendue, il faut le lire en entier pour |
16112 | savoir ce qui a changé. Si le mbox est assez grand cela peut prendre | |
16113 | beaucoup de temps. Comme le changement est habituellement un simple | |
16114 | courriel supplémentaire, il serait plus rapide de lire le nouveaux | |
16115 | courriels. Si ce paramètre est activé, Dovecot fait cela mais revient | |
16116 | toujours à relire le fichier mbox complet si le fichier n'est pas comme | |
16117 | attendu. Le seul réel inconvénient à ce paramètre est que certains MUA | |
16118 | changent les drapeaux des messages, et dans ce cas Dovecot ne s'en rend pas | |
16119 | immédiatement compte. Remarquez qu'une synchronisation complète est | |
16120 | effectuée avec les commandes SELECT, EXAMINE, EXPUNGE et CHECK. La valeur | |
16121 | par défaut est @samp{#t}. | |
bf5c74e7 JL |
16122 | @end deftypevr |
16123 | ||
1d8d69c8 | 16124 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mbox-very-dirty-syncs? |
adfb167f JL |
16125 | Comme @samp{mbox-dirty-syncs}, mais ne synchronise pas complètement même |
16126 | avec les commandes SELECT, EXAMINE, EXPUNGE ou CHECK. Si l'option n'est pas | |
15f1bff4 | 16127 | activée, @samp{mbox-dirty-syncs} est ignorée. La valeur par défaut est |
adfb167f | 16128 | @samp{#f}. |
bf5c74e7 JL |
16129 | @end deftypevr |
16130 | ||
1d8d69c8 | 16131 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mbox-lazy-writes? |
adfb167f JL |
16132 | Attendre avant d'écrire les en-têtes mbox jusqu'à la prochaine |
16133 | synchronisation des écritures (les commandes EXPUNGE et CHECK et quand on | |
16134 | ferme la boîte aux lettres). C'est surtout utile pour POP3 où les clients | |
16135 | suppriment souvent tous les courriels. L'inconvénient c'est que vos | |
16136 | changements ne sont pas immédiatement visibles pour les autres MUA. La | |
16137 | valeur par défaut est @samp{#t}. | |
bf5c74e7 JL |
16138 | @end deftypevr |
16139 | ||
1d8d69c8 | 16140 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mbox-min-index-size |
adfb167f JL |
16141 | If mbox size is smaller than this (e.g.@: 100k), don't write index files. |
16142 | If an index file already exists it's still read, just not updated. Defaults | |
16143 | to @samp{0}. | |
bf5c74e7 JL |
16144 | @end deftypevr |
16145 | ||
1d8d69c8 | 16146 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mdbox-rotate-size |
adfb167f JL |
16147 | Taille du fichier dbox maximale avant rotation. La valeur par défaut est |
16148 | @samp{10000000}. | |
bf5c74e7 JL |
16149 | @end deftypevr |
16150 | ||
1d8d69c8 | 16151 | @deftypevr {paramètre de @code{dovecot-configuration}} string mdbox-rotate-interval |
adfb167f JL |
16152 | Âge maximum du fichier dbox avant rotation. Typiquement en jours. Les |
16153 | jours commencent à minuit, donc 1d signifie aujourd'hui, 2d pour hier, etc. | |
16154 | 0 pour désactiver la vérification. La valeur par défaut est @samp{"1d"}. | |
bf5c74e7 JL |
16155 | @end deftypevr |
16156 | ||
1d8d69c8 | 16157 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean mdbox-preallocate-space? |
adfb167f JL |
16158 | Lors de la création des fichiers mdbox, préallouer immédiatement leur taille |
16159 | à @samp{mdbox-rotate-size}. Ce paramètre ne fonctionne actuellement que | |
16160 | dans Linux avec certains systèmes de fichiers (ext4, xfs). La valeur par | |
16161 | défaut est @samp{#f}. | |
bf5c74e7 JL |
16162 | @end deftypevr |
16163 | ||
1d8d69c8 | 16164 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-attachment-dir |
adfb167f JL |
16165 | Les formats sdbox et mdbox supportent la sauvegarde des pièces-jointes dans |
16166 | des fichiers externes, ce qui permet de les stocker une seule fois. Les | |
16167 | autres moteurs ne le supportent pas pour le moment. | |
bf5c74e7 | 16168 | |
adfb167f JL |
16169 | ATTENTION : Cette fonctionnalité n'a pas été beaucoup testée. Utilisez-la à |
16170 | vos risques et périls. | |
bf5c74e7 | 16171 | |
adfb167f JL |
16172 | Racine du répertoire où stocker les pièces-jointes. Désactivé si vide. La |
16173 | valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
16174 | @end deftypevr |
16175 | ||
1d8d69c8 | 16176 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer mail-attachment-min-size |
adfb167f JL |
16177 | Les pièces-jointes plus petites que cela ne sont pas enregistrées à part. |
16178 | Il est aussi possible d'écrire un greffon pour désactiver l'enregistrement | |
16179 | externe de certaines pièces-jointes spécifiques. La valeur par défaut est | |
16180 | @samp{128000}. | |
bf5c74e7 JL |
16181 | @end deftypevr |
16182 | ||
1d8d69c8 | 16183 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-attachment-fs |
adfb167f JL |
16184 | Moteur du système de fichier à utiliser pour sauvegarder les pièces-jointes |
16185 | : | |
bf5c74e7 JL |
16186 | @table @code |
16187 | @item posix | |
adfb167f JL |
16188 | Pas de SiS (single instance storage) par Dovecot (mais cela peut aider la |
16189 | déduplication du système de fichier) | |
bf5c74e7 | 16190 | @item sis posix |
adfb167f | 16191 | SiS avec comparaison bit-à-bit immédiate pendant la sauvegarde |
bf5c74e7 | 16192 | @item sis-queue posix |
adfb167f | 16193 | SiS avec déduplication et comparaison différées |
bf5c74e7 | 16194 | @end table |
1d8d69c8 | 16195 | La valeur par défaut est @samp{"sis posix"}. |
bf5c74e7 JL |
16196 | @end deftypevr |
16197 | ||
1d8d69c8 | 16198 | @deftypevr {paramètre de @code{dovecot-configuration}} string mail-attachment-hash |
bf5c74e7 JL |
16199 | Hash format to use in attachment filenames. You can add any text and |
16200 | variables: @code{%@{md4@}}, @code{%@{md5@}}, @code{%@{sha1@}}, | |
16201 | @code{%@{sha256@}}, @code{%@{sha512@}}, @code{%@{size@}}. Variables can be | |
adfb167f JL |
16202 | truncated, e.g.@: @code{%@{sha256:80@}} returns only first 80 bits. |
16203 | Defaults to @samp{"%@{sha1@}"}. | |
bf5c74e7 JL |
16204 | @end deftypevr |
16205 | ||
1d8d69c8 | 16206 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer default-process-limit |
bf5c74e7 | 16207 | |
1d8d69c8 | 16208 | La valeur par défaut est @samp{100}. |
bf5c74e7 JL |
16209 | @end deftypevr |
16210 | ||
1d8d69c8 | 16211 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer default-client-limit |
bf5c74e7 | 16212 | |
1d8d69c8 | 16213 | La valeur par défaut est @samp{1000}. |
bf5c74e7 JL |
16214 | @end deftypevr |
16215 | ||
1d8d69c8 | 16216 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer default-vsz-limit |
adfb167f JL |
16217 | Limite VSZ (taille mémoire virtuelle) par défaut pour les processus de |
16218 | service. C'est surtout pour attraper et tuer les processus qui font fuiter | |
16219 | la mémoire avant qu'ils ne l'utilisent en entier. La valeur par défaut est | |
16220 | @samp{256000000}. | |
bf5c74e7 JL |
16221 | @end deftypevr |
16222 | ||
1d8d69c8 | 16223 | @deftypevr {paramètre de @code{dovecot-configuration}} string default-login-user |
adfb167f JL |
16224 | Utilisateur de connexion utilisé en interne par les processus de connexion. |
16225 | C'est l'utilisateur avec la confiance minimale pour Dovecot. Il ne devrait | |
16226 | avoir accès à rien du tout. La valeur par défaut est @samp{"dovenull"}. | |
bf5c74e7 JL |
16227 | @end deftypevr |
16228 | ||
1d8d69c8 | 16229 | @deftypevr {paramètre de @code{dovecot-configuration}} string default-internal-user |
adfb167f JL |
16230 | Utilisateur utilisé en interne par les processus non privilégiés. Il |
16231 | devrait être différent de l'utilisateur de connexion, pour que les processus | |
16232 | de connexion ne puissent pas perturber les autres processus. La valeur par | |
16233 | défaut est @samp{"dovecot"}. | |
bf5c74e7 JL |
16234 | @end deftypevr |
16235 | ||
1d8d69c8 | 16236 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl? |
adfb167f JL |
16237 | Support SSL/TLS : yes, no, required. <doc/wiki/SSL.txt>. La valeur par |
16238 | défaut est @samp{"required"}. | |
bf5c74e7 JL |
16239 | @end deftypevr |
16240 | ||
1d8d69c8 | 16241 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-cert |
adfb167f JL |
16242 | Certificat SSL/TLS X.509 encodé en PEM (clef publique). La valeur par |
16243 | défaut est @samp{"</etc/dovecot/default.pem"}. | |
bf5c74e7 JL |
16244 | @end deftypevr |
16245 | ||
1d8d69c8 | 16246 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-key |
adfb167f JL |
16247 | Clef privée SSL/TLS encodée en PEM. La clef est ouverte avant l'abandon des |
16248 | privilèges root, donc laissez-la non-lisible pour les utilisateurs. La | |
16249 | valeur par défaut est @samp{"</etc/dovecot/private/default.pem"}. | |
bf5c74e7 JL |
16250 | @end deftypevr |
16251 | ||
1d8d69c8 | 16252 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-key-password |
adfb167f JL |
16253 | Si le fichier de clef est protégé par un mot de passe, donnez-le ici. |
16254 | Autrement, donnez-le en démarrant dovecot avec le paramètre -p. Comme ce | |
16255 | fichier est souvent lisible pour tout le monde, vous pourriez vouloir placer | |
16256 | ce paramètre dans un autre fichier. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
16257 | @end deftypevr |
16258 | ||
1d8d69c8 | 16259 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-ca |
bf5c74e7 JL |
16260 | PEM encoded trusted certificate authority. Set this only if you intend to |
16261 | use @samp{ssl-verify-client-cert? #t}. The file should contain the CA | |
adfb167f | 16262 | certificate(s) followed by the matching CRL(s). (e.g.@: @samp{ssl-ca |
bf5c74e7 JL |
16263 | </etc/ssl/certs/ca.pem}). Defaults to @samp{""}. |
16264 | @end deftypevr | |
16265 | ||
1d8d69c8 | 16266 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean ssl-require-crl? |
adfb167f JL |
16267 | Indique si les certificats clients doivent réussir la vérification du CRL. |
16268 | La valeur par défaut est @samp{#t}. | |
bf5c74e7 JL |
16269 | @end deftypevr |
16270 | ||
1d8d69c8 | 16271 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean ssl-verify-client-cert? |
adfb167f JL |
16272 | Demande aux clients d'envoyer un certificat. Si vous voulez aussi le |
16273 | requérir, indiquez @samp{auth-ssl-require-client-cert? #t} dans la section | |
16274 | auth. La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
16275 | @end deftypevr |
16276 | ||
1d8d69c8 | 16277 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-cert-username-field |
adfb167f JL |
16278 | Le champ du certificat à utiliser pour le nom d'utilisateur. Les choix |
16279 | habituels sont commonName et X500UniqueIdentifier. Vous devrez aussi | |
16280 | indiquer @samp{auth-ssl-username-from-cert? #t}. La valeur par défaut est | |
16281 | @samp{"commonName"}. | |
bf5c74e7 JL |
16282 | @end deftypevr |
16283 | ||
1d8d69c8 | 16284 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-min-protocol |
adfb167f JL |
16285 | Version minimale de SSL à accepter. La valeur par défaut est |
16286 | @samp{"TLSv1"}. | |
bf5c74e7 JL |
16287 | @end deftypevr |
16288 | ||
1d8d69c8 | 16289 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-cipher-list |
adfb167f | 16290 | Méthodes de chiffrement à utiliser. La valeur par défaut est |
bf5c74e7 JL |
16291 | @samp{"ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@@STRENGTH"}. |
16292 | @end deftypevr | |
16293 | ||
1d8d69c8 | 16294 | @deftypevr {paramètre de @code{dovecot-configuration}} string ssl-crypto-device |
adfb167f JL |
16295 | Moteur cryptographique SSL à utiliser. Pour les valeur valides, lancez « |
16296 | openssl engine ». La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
16297 | @end deftypevr |
16298 | ||
1d8d69c8 | 16299 | @deftypevr {paramètre de @code{dovecot-configuration}} string postmaster-address |
adfb167f JL |
16300 | Adresse à utiliser pour envoyer les courriels de rejet. %d correspond au |
16301 | domaine du destinataire. La valeur par défaut est @samp{"postmaster@@%d"}. | |
bf5c74e7 JL |
16302 | @end deftypevr |
16303 | ||
1d8d69c8 | 16304 | @deftypevr {paramètre de @code{dovecot-configuration}} string hostname |
adfb167f JL |
16305 | Hostname to use in various parts of sent mails (e.g.@: in Message-Id) and |
16306 | in LMTP replies. Default is the system's real hostname@@domain. Defaults | |
16307 | to @samp{""}. | |
bf5c74e7 JL |
16308 | @end deftypevr |
16309 | ||
1d8d69c8 | 16310 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean quota-full-tempfail? |
adfb167f JL |
16311 | Si l'utilisateur dépasse le quota, renvoie un échec temporaire au lieu de |
16312 | rejeter le courriel. La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
16313 | @end deftypevr |
16314 | ||
1d8d69c8 | 16315 | @deftypevr {paramètre de @code{dovecot-configuration}} file-name sendmail-path |
adfb167f JL |
16316 | Binaire à utiliser pour envoyer des courriels. La valeur par défaut est |
16317 | @samp{"/usr/sbin/sendmail"}. | |
bf5c74e7 JL |
16318 | @end deftypevr |
16319 | ||
1d8d69c8 | 16320 | @deftypevr {paramètre de @code{dovecot-configuration}} string submission-host |
adfb167f JL |
16321 | Si la valeur est non vide, envoyer les courriels à ce serveur SMTP |
16322 | hôte[:port] au lieu de sendmail. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
16323 | @end deftypevr |
16324 | ||
1d8d69c8 | 16325 | @deftypevr {paramètre de @code{dovecot-configuration}} string rejection-subject |
adfb167f JL |
16326 | En-tête d'objet à utiliser pour les courriels de rejet. Vous pouvez |
16327 | utiliser les mêmes variables que pour @samp{rejection-reason} ci-dessous. | |
16328 | La valeur par défaut est @samp{"Rejected: %s"}. | |
bf5c74e7 JL |
16329 | @end deftypevr |
16330 | ||
1d8d69c8 | 16331 | @deftypevr {paramètre de @code{dovecot-configuration}} string rejection-reason |
adfb167f JL |
16332 | Message d'erreur pour les humains dans les courriels de rejet. Vous pouvez |
16333 | utiliser ces variables : | |
bf5c74e7 JL |
16334 | |
16335 | @table @code | |
16336 | @item %n | |
16337 | CRLF | |
16338 | @item %r | |
adfb167f | 16339 | raison |
bf5c74e7 | 16340 | @item %s |
adfb167f | 16341 | objet du courriel de départ |
bf5c74e7 | 16342 | @item %t |
adfb167f | 16343 | destinataire |
bf5c74e7 | 16344 | @end table |
1d8d69c8 JL |
16345 | La valeur par défaut est @samp{"Your message to <%t> was automatically |
16346 | rejected:%n%r"}. | |
bf5c74e7 JL |
16347 | @end deftypevr |
16348 | ||
1d8d69c8 | 16349 | @deftypevr {paramètre de @code{dovecot-configuration}} string recipient-delimiter |
adfb167f JL |
16350 | Caractère de délimitation entre la partie locale et le détail des adresses |
16351 | de courriel. La valeur par défaut est @samp{"+"}. | |
bf5c74e7 JL |
16352 | @end deftypevr |
16353 | ||
1d8d69c8 | 16354 | @deftypevr {paramètre de @code{dovecot-configuration}} string lda-original-recipient-header |
adfb167f JL |
16355 | En-tête où l'adresse du destinataire d'origine (l'adresse RCPT TO de SMTP) |
16356 | est récupérée si elle n'est pas disponible ailleurs. Le paramètre -a de | |
16357 | dovecot-lda le remplace. L'en-tête couramment utilisée pour cela est | |
16358 | X-Original-To. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
16359 | @end deftypevr |
16360 | ||
1d8d69c8 | 16361 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean lda-mailbox-autocreate? |
adfb167f JL |
16362 | Sauvegarder un courriel dans un fichier qui n'existe pas devrait-il le créer |
16363 | ? La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
16364 | @end deftypevr |
16365 | ||
1d8d69c8 | 16366 | @deftypevr {paramètre de @code{dovecot-configuration}} boolean lda-mailbox-autosubscribe? |
adfb167f JL |
16367 | Devrait-on aussi se souscrire aux boîtes aux lettres nouvellement créées ? |
16368 | La valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
16369 | @end deftypevr |
16370 | ||
1d8d69c8 | 16371 | @deftypevr {paramètre de @code{dovecot-configuration}} non-negative-integer imap-max-line-length |
adfb167f JL |
16372 | Longueur maximale de la ligne de commande IMAP. Certains clients génèrent |
16373 | des lignes de commandes très longues avec des boîtes aux lettres énormes, | |
16374 | donc vous pourriez avoir besoin d'augmenter cette limite si vous obtenez les | |
16375 | erreurs « Too long argument » ou « IMAP command line too large ». La valeur | |
16376 | par défaut est @samp{64000}. | |
bf5c74e7 JL |
16377 | @end deftypevr |
16378 | ||
1d8d69c8 | 16379 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-logout-format |
adfb167f | 16380 | Format de la chaîne de déconnexion IMAP : |
bf5c74e7 JL |
16381 | @table @code |
16382 | @item %i | |
adfb167f | 16383 | nombre d'octets lus par le client |
bf5c74e7 | 16384 | @item %o |
adfb167f | 16385 | nombre total d'octets envoyés au client. |
bf5c74e7 | 16386 | @end table |
adfb167f JL |
16387 | Voir @file{doc/wiki/Variables.txt} pour une liste de toutes les variables |
16388 | utilisables. La valeur par défaut est @samp{"in=%i out=%o | |
16389 | deleted=%@{deleted@} expunged=%@{expunged@} trashed=%@{trashed@} | |
16390 | hdr_count=%@{fetch_hdr_count@} hdr_bytes=%@{fetch_hdr_bytes@} | |
16391 | body_count=%@{fetch_body_count@} body_bytes=%@{fetch_body_bytes@}"}. | |
bf5c74e7 JL |
16392 | @end deftypevr |
16393 | ||
1d8d69c8 | 16394 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-capability |
bf5c74e7 | 16395 | Override the IMAP CAPABILITY response. If the value begins with '+', add |
adfb167f | 16396 | the given capabilities on top of the defaults (e.g.@: +XFOO XBAR). Defaults |
bf5c74e7 JL |
16397 | to @samp{""}. |
16398 | @end deftypevr | |
16399 | ||
1d8d69c8 | 16400 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-idle-notify-interval |
adfb167f JL |
16401 | Temps d'attente entre les notifications « OK Still here » lorsque le client |
16402 | est en IDLE. La valeur par défaut est @samp{"2 mins"}. | |
bf5c74e7 JL |
16403 | @end deftypevr |
16404 | ||
1d8d69c8 | 16405 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-id-send |
adfb167f JL |
16406 | Noms des champs ID et de leur valeur à envoyer aux clients. « * » signifie |
16407 | la valeur par défaut. Les champs suivants ont actuellement des valeurs par | |
16408 | défaut : name, version, os, os-version, support-url, support-email. La | |
16409 | valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
16410 | @end deftypevr |
16411 | ||
1d8d69c8 | 16412 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-id-log |
adfb167f JL |
16413 | Champs ID envoyés par le client à enregistrer. « * » signifie tout. La |
16414 | valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
16415 | @end deftypevr |
16416 | ||
1d8d69c8 | 16417 | @deftypevr {paramètre de @code{dovecot-configuration}} space-separated-string-list imap-client-workarounds |
adfb167f | 16418 | Contournements pour divers bogues de certains client : |
bf5c74e7 JL |
16419 | |
16420 | @table @code | |
16421 | @item delay-newmail | |
15f1bff4 | 16422 | Envoi des notifications de nouveau message EXISTS/RECENT seulement en |
adfb167f JL |
16423 | réponse aux commandes NOOP et CHECK. Certains clients les ignorent |
16424 | autrement, par exemple OSX Mail (< v2.1). Outlook Express est encore plus | |
16425 | cassé, sans cela il peut montrer des erreurs de type « Le message n'est plus | |
16426 | sur le serveur ». Remarquez que OE6 est toujours cassé même avec ce | |
16427 | contournement si la synchronisation est à « En-têtes seulement ». | |
bf5c74e7 JL |
16428 | |
16429 | @item tb-extra-mailbox-sep | |
adfb167f JL |
16430 | Thunderbird se mélange les pinceaux avec LAYOUT=fs (mbox et dbox) et ajoute |
16431 | un suffixe @samp{/} supplémentaire sur les noms des boîtes aux lettres. | |
16432 | Cette option fait que dovecot ignore le @samp{/} supplémentaire au lieu de | |
16433 | le traiter comme un nom de boîte aux lettres invalide. | |
bf5c74e7 JL |
16434 | |
16435 | @item tb-lsub-flags | |
adfb167f | 16436 | Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g.@: mbox). This |
bf5c74e7 JL |
16437 | makes Thunderbird realize they aren't selectable and show them greyed out, |
16438 | instead of only later giving "not selectable" popup error. | |
16439 | @end table | |
1d8d69c8 | 16440 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
16441 | @end deftypevr |
16442 | ||
1d8d69c8 | 16443 | @deftypevr {paramètre de @code{dovecot-configuration}} string imap-urlauth-host |
adfb167f JL |
16444 | Hôte autorisé dans les URL URLAUTH envoyés par les clients. « * » les |
16445 | autorise tous. La valeur par défaut est @samp{""}. | |
bf5c74e7 JL |
16446 | @end deftypevr |
16447 | ||
16448 | ||
15f1bff4 JL |
16449 | Whew! Lots of configuration options. The nice thing about it though is that |
16450 | Guix has a complete interface to Dovecot's configuration language. This | |
16451 | allows not only a nice way to declare configurations, but also offers | |
16452 | reflective capabilities as well: users can write code to inspect and | |
16453 | transform configurations from within Scheme. | |
bf5c74e7 | 16454 | |
adfb167f JL |
16455 | Cependant, vous pourriez avoir un fichier @code{dovecot.conf} déjà tout |
16456 | prêt. Dans ce cas, vous pouvez passer un objet | |
16457 | @code{opaque-dovecot-configuration} comme paramètre @code{#:config} à | |
16458 | @code{dovecot-service}. Comme son nom l'indique, une configuration opaque | |
16459 | n'a pas les capacités de réflexions. | |
bf5c74e7 | 16460 | |
1d8d69c8 | 16461 | Les champs de @code{opaque-dovecot-configuration} disponibles sont : |
bf5c74e7 | 16462 | |
1d8d69c8 JL |
16463 | @deftypevr {paramètre de @code{opaque-dovecot-configuration}} package dovecot |
16464 | Le paquet dovecot | |
bf5c74e7 JL |
16465 | @end deftypevr |
16466 | ||
1d8d69c8 | 16467 | @deftypevr {paramètre de @code{opaque-dovecot-configuration}} string string |
adfb167f | 16468 | Le contenu de @code{dovecot.conf}, en tant que chaîne de caractères. |
bf5c74e7 JL |
16469 | @end deftypevr |
16470 | ||
adfb167f JL |
16471 | Par exemple, si votre @code{dovecot.conf} est simplement la chaîne vide, |
16472 | vous pouvez instancier un service dovecot comme cela : | |
bf5c74e7 JL |
16473 | |
16474 | @example | |
16475 | (dovecot-service #:config | |
16476 | (opaque-dovecot-configuration | |
16477 | (string ""))) | |
16478 | @end example | |
16479 | ||
adfb167f | 16480 | @subsubheading Service OpenSMTPD |
bf5c74e7 | 16481 | |
1d8d69c8 | 16482 | @deffn {Variable Scheme} opensmtpd-service-type |
adfb167f JL |
16483 | C'est le type de service de @uref{https://www.opensmtpd.org, OpenSMTPD}, |
16484 | dont la valeur devrait être un objet @code{opensmtpd-configuration} comme | |
16485 | dans cet exemple : | |
bf5c74e7 JL |
16486 | |
16487 | @example | |
16488 | (service opensmtpd-service-type | |
16489 | (opensmtpd-configuration | |
16490 | (config-file (local-file "./my-smtpd.conf")))) | |
16491 | @end example | |
16492 | @end deffn | |
16493 | ||
1d8d69c8 | 16494 | @deftp {Type de données} opensmtpd-configuration |
adfb167f | 16495 | Type de données représentant la configuration de opensmtpd. |
bf5c74e7 JL |
16496 | |
16497 | @table @asis | |
1d8d69c8 | 16498 | @item @code{package} (par défaut : @var{opensmtpd}) |
adfb167f | 16499 | Objet de paquet du serveur SMTP OpenSMTPD. |
bf5c74e7 | 16500 | |
1d8d69c8 | 16501 | @item @code{config-file} (par défaut : @var{%default-opensmtpd-file}) |
adfb167f JL |
16502 | Objet simili-fichier du fichier de configuration de OpenSMTPD à utiliser. |
16503 | Par défaut il écoute sur l'interface de boucle locale et accepte les | |
16504 | courriels des utilisateurs et des démons de la machine locale, et autorise | |
15f1bff4 | 16505 | l'envoi de courriels à des serveurs distants. Lancez @command{man |
adfb167f | 16506 | smtpd.conf} pour plus d'information. |
bf5c74e7 JL |
16507 | |
16508 | @end table | |
16509 | @end deftp | |
16510 | ||
adfb167f | 16511 | @subsubheading Service Exim |
bf5c74e7 | 16512 | |
adfb167f JL |
16513 | @cindex agent de transfert de courriel (MTA) |
16514 | @cindex MTA (agent de transfert de courriel) | |
bf5c74e7 JL |
16515 | @cindex SMTP |
16516 | ||
1d8d69c8 | 16517 | @deffn {Variable Scheme} exim-service-type |
adfb167f JL |
16518 | C'est le type de l'agent de transfert de courriel (MTA) |
16519 | @uref{https://exim.org, Exim}, dont la valeur devrait être un objet | |
16520 | @code{exim-configuration} comme dans cet exemple : | |
bf5c74e7 JL |
16521 | |
16522 | @example | |
16523 | (service exim-service-type | |
16524 | (exim-configuration | |
16525 | (config-file (local-file "./my-exim.conf")))) | |
16526 | @end example | |
16527 | @end deffn | |
16528 | ||
adfb167f JL |
16529 | Pour utilise le service @code{exim-service-type} vous devez aussi avoir un |
16530 | service @code{mail-aliases-service-type} dans votre @code{operating-system} | |
16531 | (même sans alias). | |
bf5c74e7 | 16532 | |
1d8d69c8 | 16533 | @deftp {Type de données} exim-configuration |
adfb167f | 16534 | Type de données représentant la configuration d'exim. |
bf5c74e7 JL |
16535 | |
16536 | @table @asis | |
1d8d69c8 | 16537 | @item @code{package} (par défaut : @var{exim}) |
adfb167f | 16538 | Objet de paquet du serveur Exim. |
bf5c74e7 | 16539 | |
1d8d69c8 | 16540 | @item @code{config-file} (par défaut : @code{#f}) |
adfb167f JL |
16541 | Objet simili-fichier du fichier de configuration d'Exim à utiliser. Si sa |
16542 | valeur est @code{#f} alors le service utilisera la configuration par défaut | |
16543 | du paquet fournit dans @code{package}. Le fichier de configuration qui en | |
16544 | résulte est chargé après avoir mis en place les variables de configuration | |
16545 | @code{exim_user} et @code{exim_group}. | |
bf5c74e7 JL |
16546 | |
16547 | @end table | |
16548 | @end deftp | |
16549 | ||
adfb167f | 16550 | @subsubheading Service d'alias de courriel |
bf5c74e7 | 16551 | |
adfb167f JL |
16552 | @cindex alias de courriel |
16553 | @cindex alias, pour les adresses de courriel | |
bf5c74e7 | 16554 | |
1d8d69c8 | 16555 | @deffn {Variable Scheme} mail-aliases-service-type |
adfb167f JL |
16556 | C'est le type de service qui fournit @code{/etc/aliases} et qui spécifie |
16557 | comment délivrer les courriels aux utilisateurs du système. | |
bf5c74e7 JL |
16558 | |
16559 | @example | |
16560 | (service mail-aliases-service-type | |
16561 | '(("postmaster" "bob") | |
16562 | ("bob" "bob@@example.com" "bob@@example2.com"))) | |
16563 | @end example | |
16564 | @end deffn | |
16565 | ||
adfb167f JL |
16566 | La configuration pour un service @code{mail-aliases-service-type} est une |
16567 | liste associative qui dénote comment délivrer les courriels qui arrivent au | |
16568 | système. Chaque entrée est de la forme @code{(alias adresses ...)} avec | |
16569 | @code{alias} qui spécifie l'alias local et @code{adresses} qui spécifie où | |
16570 | délivrer les courriels de cet utilisateur. | |
bf5c74e7 | 16571 | |
adfb167f JL |
16572 | Les alias n'ont pas besoin de correspondre à des utilisateurs locaux du |
16573 | système. Dans l'exemple au-dessus, il n'y a pas besoin d'une entrée | |
16574 | @code{postmaster} dans la liste @code{user-accounts} du | |
16575 | @code{operating-system} pour délivrer les courriels à destination de | |
16576 | @code{postmaster} à @code{bob} (qui ensuite délivrerait le courriel à | |
16577 | @code{bob@@example.com} et @code{bob@@example2.com}). | |
bf5c74e7 | 16578 | |
3cacfa9e | 16579 | @node Services de messagerie |
15f1bff4 | 16580 | @subsection Services de messagerie |
bf5c74e7 | 16581 | |
15f1bff4 | 16582 | @cindex messagerie instantanée |
bf5c74e7 JL |
16583 | @cindex jabber |
16584 | @cindex XMPP | |
adfb167f JL |
16585 | Le module @code{(gnu services messaging)} fournit des définitions de |
16586 | services Guix pour les services de messageries instantanées : actuellement | |
16587 | seul Prosody est supporté. | |
bf5c74e7 | 16588 | |
adfb167f | 16589 | @subsubheading Service Prosody |
bf5c74e7 | 16590 | |
1d8d69c8 | 16591 | @deffn {Variable Scheme} prosody-service-type |
adfb167f JL |
16592 | C'est le type pour le @uref{https://prosody.im, le serveur de communication |
16593 | XMPP Prosody}. Sa valeur doit être un enregistrement | |
16594 | @code{prosody-configuration} comme dans cet exemple : | |
bf5c74e7 JL |
16595 | |
16596 | @example | |
16597 | (service prosody-service-type | |
16598 | (prosody-configuration | |
16599 | (modules-enabled (cons "groups" "mam" %default-modules-enabled)) | |
16600 | (int-components | |
16601 | (list | |
16602 | (int-component-configuration | |
16603 | (hostname "conference.example.net") | |
16604 | (plugin "muc") | |
16605 | (mod-muc (mod-muc-configuration))))) | |
16606 | (virtualhosts | |
16607 | (list | |
16608 | (virtualhost-configuration | |
16609 | (domain "example.net")))))) | |
16610 | @end example | |
16611 | ||
adfb167f | 16612 | Voir plus bas pour des détails sur @code{prosody-configuration}. |
bf5c74e7 JL |
16613 | |
16614 | @end deffn | |
16615 | ||
adfb167f JL |
16616 | Par défaut, Prosody n'a pas besoin de beaucoup de configuration. Seul un |
16617 | champ @code{virtualhosts} est requis : il spécifie le domaine que vous | |
16618 | voulez voir Prosody servir. | |
bf5c74e7 | 16619 | |
adfb167f JL |
16620 | Vous pouvez effectuer plusieurs vérifications de la configuration générée |
16621 | avec la commande @code{prosodyctl check}. | |
bf5c74e7 | 16622 | |
adfb167f JL |
16623 | Prosodyctl vous aidera aussi à importer des certificats du répertoire |
16624 | @code{letsencrypt} pour que l'utilisateur @code{prosody} puisse y accéder. | |
16625 | Voir @url{https://prosody.im/doc/letsencrypt}. | |
bf5c74e7 JL |
16626 | |
16627 | @example | |
16628 | prosodyctl --root cert import /etc/letsencrypt/live | |
16629 | @end example | |
16630 | ||
1d8d69c8 JL |
16631 | Les paramètres de configuration disponibles sont les suivants. Chaque |
16632 | définition des paramètres est précédé par son type ; par exemple, | |
16633 | @samp{string-list foo} indique que le paramètre @code{foo} devrait être | |
16634 | spécifié comme une liste de chaînes de caractères. Les types précédés de | |
16635 | @code{maybe-} signifient que le paramètre n'apparaîtra pas dans | |
16636 | @code{prosody.cfg.lua} lorsque sa valeur est @code{'disabled}. | |
bf5c74e7 | 16637 | |
adfb167f JL |
16638 | Il y a aussi une manière de spécifier la configuration en tant que chaîne de |
16639 | caractères si vous avez un vieux fichier @code{prosody.cfg.lua} que vous | |
16640 | voulez porter depuis un autre système ; voir la fin pour plus de détails. | |
bf5c74e7 | 16641 | |
adfb167f JL |
16642 | Le type @code{file-object} désigne soit un objet simili-fichier |
16643 | (@pxref{G-Expressions, file-like objects}), soit un nom de fichier. | |
bf5c74e7 JL |
16644 | |
16645 | @c The following documentation was initially generated by | |
16646 | @c (generate-documentation) in (gnu services messaging). Manually maintained | |
16647 | @c documentation is better, so we shouldn't hesitate to edit below as | |
16648 | @c needed. However if the change you want to make to this documentation | |
16649 | @c can be done in an automated way, it's probably easier to change | |
16650 | @c (generate-documentation) than to make it below and have to deal with | |
16651 | @c the churn as Prosody updates. | |
16652 | ||
1d8d69c8 | 16653 | Les champs de @code{prosody-configuration} disponibles sont : |
bf5c74e7 | 16654 | |
1d8d69c8 | 16655 | @deftypevr {paramètre de @code{prosody-configuration}} package prosody |
adfb167f | 16656 | Le paquet Prosody. |
bf5c74e7 JL |
16657 | @end deftypevr |
16658 | ||
1d8d69c8 | 16659 | @deftypevr {paramètre de @code{prosody-configuration}} file-name data-path |
adfb167f JL |
16660 | Emplacement du répertoire de stockage des données de Prosody. Voir |
16661 | @url{https://prosody.im/doc/configure}. La valeur par défaut est | |
bf5c74e7 JL |
16662 | @samp{"/var/lib/prosody"}. |
16663 | @end deftypevr | |
16664 | ||
1d8d69c8 | 16665 | @deftypevr {paramètre de @code{prosody-configuration}} file-object-list plugin-paths |
adfb167f JL |
16666 | Répertoires de greffons supplémentaires. Ils sont analysés dans l'ordre |
16667 | spécifié. Voir @url{https://prosody.im/doc/plugins_directory}. La valeur | |
16668 | par défaut est @samp{()}. | |
bf5c74e7 JL |
16669 | @end deftypevr |
16670 | ||
1d8d69c8 | 16671 | @deftypevr {paramètre de @code{prosody-configuration}} file-name certificates |
adfb167f JL |
16672 | Chaque hôte virtuel et composant a besoin d'un certificat pour que les |
16673 | clients et les serveurs puissent vérifier son identité. Prosody chargera | |
16674 | automatiquement les clefs et les certificats dans le répertoire spécifié | |
16675 | ici. La valeur par défaut est @samp{"/etc/prosody/certs"}. | |
bf5c74e7 JL |
16676 | @end deftypevr |
16677 | ||
1d8d69c8 | 16678 | @deftypevr {paramètre de @code{prosody-configuration}} string-list admins |
adfb167f JL |
16679 | C'est une liste des comptes administrateurs de ce serveur. Remarquez que |
16680 | vous devez créer les comptes séparément. Voir | |
16681 | @url{https://prosody.im/doc/admins} et | |
16682 | @url{https://prosody.im/doc/creating_accounts}. Par exemple : @code{(admins | |
16683 | '("user1@@example.com" "user2@@example.net"))}. La valeur par défaut est | |
16684 | @samp{()}. | |
bf5c74e7 JL |
16685 | @end deftypevr |
16686 | ||
1d8d69c8 | 16687 | @deftypevr {paramètre de @code{prosody-configuration}} boolean use-libevent? |
adfb167f JL |
16688 | Active l'utilisation de libevent pour de meilleures performances sous une |
16689 | forte charge. Voir @url{https://prosody.im/doc/libevent}. La valeur par | |
16690 | défaut est @samp{#f}. | |
bf5c74e7 JL |
16691 | @end deftypevr |
16692 | ||
1d8d69c8 | 16693 | @deftypevr {paramètre de @code{prosody-configuration}} module-list modules-enabled |
adfb167f JL |
16694 | C'est la liste des modules que Prosody chargera au démarrage. Il cherchera |
16695 | @code{mod_modulename.lua} dans le répertoire des greffons, donc assurez-vous | |
16696 | qu'il existe aussi. La documentation des modules se trouve sur | |
16697 | @url{https://prosody.im/doc/modules}. La valeur par défaut est | |
16698 | @samp{("roster" "saslauth" "tls" "dialback" "disco" "carbons" "private" | |
16699 | "blocklist" "vcard" "version" "uptime" "time" "ping" "pep" "register" | |
16700 | "admin_adhoc")}. | |
bf5c74e7 JL |
16701 | @end deftypevr |
16702 | ||
1d8d69c8 | 16703 | @deftypevr {paramètre de @code{prosody-configuration}} string-list modules-disabled |
adfb167f JL |
16704 | @samp{"offline"},@samp{"c2s"} et @samp{"s2s"} sont chargés automatiquement, |
16705 | mais si vous voulez les désactiver, ajoutez-les à cette liste. La valeur | |
16706 | par défaut est @samp{()}. | |
bf5c74e7 JL |
16707 | @end deftypevr |
16708 | ||
1d8d69c8 | 16709 | @deftypevr {paramètre de @code{prosody-configuration}} file-object groups-file |
adfb167f JL |
16710 | Chemin vers un fichier texte où les groupes partagés sont définis. Si ce |
16711 | chemin est vide alors @samp{mod_groups} ne fait rien. Voir | |
16712 | @url{https://prosody.im/doc/modules/mod_groups}. La valeur par défaut est | |
bf5c74e7 JL |
16713 | @samp{"/var/lib/prosody/sharedgroups.txt"}. |
16714 | @end deftypevr | |
16715 | ||
1d8d69c8 | 16716 | @deftypevr {paramètre de @code{prosody-configuration}} boolean allow-registration? |
adfb167f JL |
16717 | Désactive la création de compte par défaut, pour la sécurité. Voir |
16718 | @url{https://prosody.im/doc/creating_accounts}. La valeur par défaut est | |
16719 | @samp{#f}. | |
bf5c74e7 JL |
16720 | @end deftypevr |
16721 | ||
1d8d69c8 | 16722 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-ssl-configuration ssl |
adfb167f JL |
16723 | Ce sont les paramètres liés à SSL/TLS. La plupart sont désactivés pour |
16724 | pouvoir utiliser les paramètres par défaut de Prosody. Si vous ne comprenez | |
16725 | pas complètement ces options, ne les ajoutez pas à votre configuration, il | |
16726 | est aisé de diminuer la sécurité de votre serveur en les modifiant. Voir | |
16727 | @url{https://prosody.im/doc/advanced_ssl_config}. | |
bf5c74e7 | 16728 | |
1d8d69c8 | 16729 | Les champs de @code{ssl-configuration} disponibles sont : |
bf5c74e7 | 16730 | |
1d8d69c8 | 16731 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string protocol |
adfb167f | 16732 | Cela détermine la poignée de main à utiliser. |
bf5c74e7 JL |
16733 | @end deftypevr |
16734 | ||
1d8d69c8 | 16735 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-file-name key |
adfb167f | 16736 | Chemin vers votre fichier de clef privée. |
bf5c74e7 JL |
16737 | @end deftypevr |
16738 | ||
1d8d69c8 | 16739 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-file-name certificate |
adfb167f | 16740 | Chemin vers votre fichier de certificat. |
bf5c74e7 JL |
16741 | @end deftypevr |
16742 | ||
1d8d69c8 | 16743 | @deftypevr {paramètre de @code{ssl-configuration}} file-object capath |
adfb167f JL |
16744 | Chemin vers le répertoire contenant les certificats racines que vous voulez |
16745 | voir Prosody utiliser lors de la vérification des certificats des serveurs | |
16746 | distants. La valeur par défaut est @samp{"/etc/ssl/certs"}. | |
bf5c74e7 JL |
16747 | @end deftypevr |
16748 | ||
1d8d69c8 | 16749 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-file-object cafile |
adfb167f JL |
16750 | Chemin vers un fichier contenant les certificats racines auxquels Prosody |
16751 | devra faire confiance. Comme @code{capath} mais avec les certificats | |
16752 | concaténés ensemble. | |
bf5c74e7 JL |
16753 | @end deftypevr |
16754 | ||
1d8d69c8 | 16755 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string-list verify |
adfb167f JL |
16756 | Une liste d'options de vérification (qui correspondent globalement aux |
16757 | drapeaux @code{set_verify()} d'OpenSSL). | |
bf5c74e7 JL |
16758 | @end deftypevr |
16759 | ||
1d8d69c8 | 16760 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string-list options |
adfb167f JL |
16761 | Une liste d'options générales liées à SSL/TLS. Elles correspondent |
16762 | globalement à @code{set_options()} d'OpenSSL. Pour une liste complète des | |
16763 | options disponibles dans LuaSec, voir les sources de LuaSec. | |
bf5c74e7 JL |
16764 | @end deftypevr |
16765 | ||
1d8d69c8 | 16766 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-non-negative-integer depth |
adfb167f JL |
16767 | Longueur maximale d'une chaîne d'autorités de certifications avant la |
16768 | racine. | |
bf5c74e7 JL |
16769 | @end deftypevr |
16770 | ||
1d8d69c8 | 16771 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string ciphers |
adfb167f JL |
16772 | Une chaîne de méthodes de chiffrement OpenSSL. Cela choisi les méthodes de |
16773 | chiffrement que Prosody offrira aux clients, et dans quel ordre de | |
16774 | préférence. | |
bf5c74e7 JL |
16775 | @end deftypevr |
16776 | ||
1d8d69c8 | 16777 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-file-name dhparam |
adfb167f JL |
16778 | Un chemin vers un fichier contenant les paramètres pour l'échange de clef |
16779 | Diffie-Hellman. Vous pouvez créer un tel fichier avec : @code{openssl | |
16780 | dhparam -out /etc/prosody/certs/dh-2048.pem 2048} | |
bf5c74e7 JL |
16781 | @end deftypevr |
16782 | ||
1d8d69c8 | 16783 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string curve |
adfb167f JL |
16784 | Courbe pour Diffie-Hellman sur courbe elliptique. La valeur par défaut de |
16785 | Prosody est @samp{"secp384r1"}. | |
bf5c74e7 JL |
16786 | @end deftypevr |
16787 | ||
1d8d69c8 | 16788 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string-list verifyext |
adfb167f | 16789 | Une liste d'options de vérification « supplémentaires ». |
bf5c74e7 JL |
16790 | @end deftypevr |
16791 | ||
1d8d69c8 | 16792 | @deftypevr {paramètre de @code{ssl-configuration}} maybe-string password |
adfb167f | 16793 | Mot de passe pour les clefs privées chiffrées. |
bf5c74e7 JL |
16794 | @end deftypevr |
16795 | ||
16796 | @end deftypevr | |
16797 | ||
1d8d69c8 | 16798 | @deftypevr {paramètre de @code{prosody-configuration}} boolean c2s-require-encryption? |
adfb167f JL |
16799 | S'il faut forcer toutes les connexions client-serveur à être chiffrées ou |
16800 | non. Voir @url{https://prosody.im/doc/modules/mod_tls}. La valeur par | |
16801 | défaut est @samp{#f}. | |
bf5c74e7 JL |
16802 | @end deftypevr |
16803 | ||
1d8d69c8 | 16804 | @deftypevr {paramètre de @code{prosody-configuration}} string-list disable-sasl-mechanisms |
adfb167f JL |
16805 | Ensemble de mécanismes qui ne seront jamais offerts. Voir |
16806 | @url{https://prosody.im/doc/modules/mod_saslauth}. La valeur par défaut est | |
bf5c74e7 JL |
16807 | @samp{("DIGEST-MD5")}. |
16808 | @end deftypevr | |
16809 | ||
1d8d69c8 | 16810 | @deftypevr {paramètre de @code{prosody-configuration}} boolean s2s-require-encryption? |
adfb167f JL |
16811 | S'il faut forcer toutes les connexion serveur-serveur à être chiffrées ou |
16812 | non. Voir @url{https://prosody.im/doc/modules/mod_tls}. La valeur par | |
16813 | défaut est @samp{#f}. | |
bf5c74e7 JL |
16814 | @end deftypevr |
16815 | ||
1d8d69c8 | 16816 | @deftypevr {paramètre de @code{prosody-configuration}} boolean s2s-secure-auth? |
adfb167f JL |
16817 | S'il faut requérir le chiffrement et l'authentification du certificat. Cela |
16818 | fournit une sécurité idéale, mais demande que les serveurs avec lesquels | |
16819 | vous communiquez supportent le chiffrement ET présentent un certificat | |
16820 | valide et de confiance. Voir @url{https://prosody.im/doc/s2s#security}. La | |
16821 | valeur par défaut est @samp{#f}. | |
bf5c74e7 JL |
16822 | @end deftypevr |
16823 | ||
1d8d69c8 | 16824 | @deftypevr {paramètre de @code{prosody-configuration}} string-list s2s-insecure-domains |
adfb167f JL |
16825 | Beaucoup de serveurs ne supportent pas le chiffrement ou ont un certificat |
16826 | invalide ou auto-signé. Vous pouvez lister les domaines ici qui n'ont pas | |
16827 | besoin de s'authentifier avec des certificats. Ils seront authentifiés par | |
16828 | DNS. Voir @url{https://prosody.im/doc/s2s#security}. La valeur par défaut | |
16829 | est @samp{()}. | |
bf5c74e7 JL |
16830 | @end deftypevr |
16831 | ||
1d8d69c8 | 16832 | @deftypevr {paramètre de @code{prosody-configuration}} string-list s2s-secure-domains |
adfb167f JL |
16833 | Même si vous laissez @code{s2s-secure-auth?} désactivé, vous pouvez toujours |
16834 | demander un certificat valide pour certains domaine en spécifiant la liste | |
16835 | ici. Voir @url{https://prosody.im/doc/s2s#security}. La valeur par défaut | |
16836 | est @samp{()}. | |
bf5c74e7 JL |
16837 | @end deftypevr |
16838 | ||
1d8d69c8 | 16839 | @deftypevr {paramètre de @code{prosody-configuration}} string authentication |
adfb167f JL |
16840 | Choisi le moteur d'authentification à utiliser. Le moteur par défaut stocke |
16841 | les mots de passes en texte clair et utilise la configuration de stockage | |
16842 | des données de Prosody pour stocker les données authentifiées. Si vous | |
16843 | n'avez pas confiance dans le serveur, lisez | |
16844 | @url{https://prosody.im/doc/modules/mod_auth_internal_hashed} pour plus | |
16845 | d'information sur l'utilisation du moteur hashed. Voir aussi | |
16846 | @url{https://prosody.im/doc/authentication}. La valeur par défaut est | |
bf5c74e7 JL |
16847 | @samp{"internal_plain"}. |
16848 | @end deftypevr | |
16849 | ||
1d8d69c8 | 16850 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-string log |
15f1bff4 JL |
16851 | Set logging options. Advanced logging configuration is not yet supported by |
16852 | the Guix Prosody Service. See @url{https://prosody.im/doc/logging}. | |
16853 | Defaults to @samp{"*syslog"}. | |
bf5c74e7 JL |
16854 | @end deftypevr |
16855 | ||
1d8d69c8 | 16856 | @deftypevr {paramètre de @code{prosody-configuration}} file-name pidfile |
adfb167f JL |
16857 | Fichier où écrire le PID. Voir |
16858 | @url{https://prosody.im/doc/modules/mod_posix}. La valeur par défaut est | |
16859 | @samp{"/var/run/prosody/prosody.pid"}. | |
bf5c74e7 JL |
16860 | @end deftypevr |
16861 | ||
1d8d69c8 | 16862 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-non-negative-integer http-max-content-size |
adfb167f | 16863 | Taille maximum autorisée pour le corps HTTP (en octets). |
bf5c74e7 JL |
16864 | @end deftypevr |
16865 | ||
1d8d69c8 | 16866 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-string http-external-url |
adfb167f JL |
16867 | Certains modules exposent leur propre URL de diverses manières. Cette URL |
16868 | est construite à partir du protocole, de l'hôte et du port utilisé. Si | |
16869 | Prosody se trouve derrière un proxy, l'URL publique sera | |
16870 | @code{http-external-url} à la place. Voir | |
bf5c74e7 JL |
16871 | @url{https://prosody.im/doc/http#external_url}. |
16872 | @end deftypevr | |
16873 | ||
1d8d69c8 | 16874 | @deftypevr {paramètre de @code{prosody-configuration}} virtualhost-configuration-list virtualhosts |
adfb167f JL |
16875 | Un hôte dans Prosody est un domaine sur lequel les comptes utilisateurs sont |
16876 | créés. Par exemple si vous voulez que vos utilisateurs aient une adresse | |
16877 | comme @samp{"john.smith@@example.com"} vous devrez ajouter un hôte | |
16878 | @samp{"example.com"}. Toutes les options de cette liste seront appliquées | |
16879 | uniquement à cet hôte. | |
bf5c74e7 | 16880 | |
adfb167f JL |
16881 | Remarque : le nom d'hôte « virtuel » est utilisé dans la configuration pour |
16882 | éviter de le confondre avec le nom d'hôte physique réel de la machine qui | |
16883 | héberge Prosody. Une seule instance de Prosody peut servir plusieurs | |
16884 | domaines, chacun défini comme une entrée VirtualHost dans la configuration | |
16885 | de Prosody. Ainsi, un serveur qui n'héberge qu'un seul domaine n'aura | |
16886 | qu'une entrée VirtualHost. | |
bf5c74e7 | 16887 | |
adfb167f | 16888 | Voir @url{https://prosody.im/doc/configure#virtual_host_settings}. |
bf5c74e7 | 16889 | |
1d8d69c8 | 16890 | Les champs de @code{virtualhost-configuration} disponibles sont : |
bf5c74e7 | 16891 | |
adfb167f | 16892 | tous ces champs de @code{prosody-configuration} : @code{admins}, |
bf5c74e7 JL |
16893 | @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, |
16894 | @code{groups-file}, @code{allow-registration?}, @code{ssl}, | |
16895 | @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, | |
16896 | @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, | |
16897 | @code{s2s-insecure-domains}, @code{s2s-secure-domains}, | |
16898 | @code{authentication}, @code{log}, @code{http-max-content-size}, | |
adfb167f | 16899 | @code{http-external-url}, @code{raw-content}, plus : |
1d8d69c8 | 16900 | @deftypevr {paramètre de @code{virtualhost-configuration}} string domain |
adfb167f | 16901 | Domaine que vous souhaitez que Prosody serve. |
bf5c74e7 JL |
16902 | @end deftypevr |
16903 | ||
16904 | @end deftypevr | |
16905 | ||
1d8d69c8 | 16906 | @deftypevr {paramètre de @code{prosody-configuration}} int-component-configuration-list int-components |
adfb167f JL |
16907 | Les composant sont des services supplémentaires qui sont disponibles pour |
16908 | les clients, habituellement sur un sous-domaine du serveur principal (comme | |
16909 | @samp{"mycomponent.example.com"}). Des exemples de composants sont des | |
16910 | serveurs de chatroom, des répertoires utilisateurs ou des passerelles vers | |
16911 | d'autres protocoles. | |
16912 | ||
16913 | Les composants internes sont implémentés dans des greffons spécifiques à | |
16914 | Prosody. Pour ajouter un composant interne, vous n'avez qu'à remplir le | |
16915 | champ de nom d'hôte et le greffon que vous voulez utiliser pour le | |
16916 | composant. | |
16917 | ||
16918 | Voir @url{https://prosody.im/doc/components}. La valeur par défaut est | |
16919 | @samp{()}. | |
bf5c74e7 | 16920 | |
1d8d69c8 | 16921 | Les champs de @code{int-component-configuration} disponibles sont : |
bf5c74e7 | 16922 | |
adfb167f | 16923 | tous ces champs de @code{prosody-configuration} : @code{admins}, |
bf5c74e7 JL |
16924 | @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, |
16925 | @code{groups-file}, @code{allow-registration?}, @code{ssl}, | |
16926 | @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, | |
16927 | @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, | |
16928 | @code{s2s-insecure-domains}, @code{s2s-secure-domains}, | |
16929 | @code{authentication}, @code{log}, @code{http-max-content-size}, | |
adfb167f | 16930 | @code{http-external-url}, @code{raw-content}, plus : |
1d8d69c8 | 16931 | @deftypevr {paramètre de @code{int-component-configuration}} string hostname |
adfb167f | 16932 | Nom d'hôte du composant. |
bf5c74e7 JL |
16933 | @end deftypevr |
16934 | ||
1d8d69c8 | 16935 | @deftypevr {paramètre de @code{int-component-configuration}} string plugin |
adfb167f | 16936 | Greffon que vous voulez utiliser pour ce composant. |
bf5c74e7 JL |
16937 | @end deftypevr |
16938 | ||
1d8d69c8 | 16939 | @deftypevr {paramètre de @code{int-component-configuration}} maybe-mod-muc-configuration mod-muc |
adfb167f JL |
16940 | Le chat multi-utilisateur (MUC) est le modules de Prosody qui vous permet de |
16941 | créer des chatrooms/conférences pour les utilisateurs XMPP. | |
bf5c74e7 | 16942 | |
adfb167f JL |
16943 | Des informations générales sur la configuration des chatrooms |
16944 | multi-utilisateurs se trouvent dans la documentation sur les chatrooms | |
16945 | (@url{https://prosody.im/doc/chatrooms}), que vous devriez lire si vous les | |
16946 | découvrez. | |
bf5c74e7 | 16947 | |
adfb167f | 16948 | Voir aussi @url{https://prosody.im/doc/modules/mod_muc}. |
bf5c74e7 | 16949 | |
1d8d69c8 | 16950 | Les champs de @code{mod-muc-configuration} disponibles sont : |
bf5c74e7 | 16951 | |
1d8d69c8 | 16952 | @deftypevr {paramètre de @code{mod-muc-configuration}} string name |
adfb167f JL |
16953 | Le nom à renvoyer dans les réponses de découverte de services. La valeur |
16954 | par défaut est @samp{"Prosody Chatrooms"}. | |
bf5c74e7 JL |
16955 | @end deftypevr |
16956 | ||
1d8d69c8 | 16957 | @deftypevr {paramètre de @code{mod-muc-configuration}} string-or-boolean restrict-room-creation |
bf5c74e7 JL |
16958 | If @samp{#t}, this will only allow admins to create new chatrooms. |
16959 | Otherwise anyone can create a room. The value @samp{"local"} restricts room | |
adfb167f JL |
16960 | creation to users on the service's parent domain. E.g.@: |
16961 | @samp{user@@example.com} can create rooms on @samp{rooms.example.com}. The | |
16962 | value @samp{"admin"} restricts to service administrators only. Defaults to | |
16963 | @samp{#f}. | |
bf5c74e7 JL |
16964 | @end deftypevr |
16965 | ||
1d8d69c8 | 16966 | @deftypevr {paramètre de @code{mod-muc-configuration}} non-negative-integer max-history-messages |
adfb167f JL |
16967 | Nombre maximum de messages d'historique qui seront envoyés aux membres qui |
16968 | viennent de rejoindre le salon. La valeur par défaut est @samp{20}. | |
bf5c74e7 JL |
16969 | @end deftypevr |
16970 | ||
16971 | @end deftypevr | |
16972 | ||
16973 | @end deftypevr | |
16974 | ||
1d8d69c8 | 16975 | @deftypevr {paramètre de @code{prosody-configuration}} ext-component-configuration-list ext-components |
adfb167f JL |
16976 | Les composants externes utilisent XEP-0114, que la plupart des composants |
16977 | supportent. Pour ajouter un composant externe, vous remplissez simplement | |
16978 | le champ de nom d'hôte. Voir @url{https://prosody.im/doc/components}. La | |
16979 | valeur par défaut est @samp{()}. | |
bf5c74e7 | 16980 | |
1d8d69c8 | 16981 | Les champs de @code{ext-component-configuration} disponibles sont : |
bf5c74e7 | 16982 | |
adfb167f | 16983 | tous ces champs de @code{prosody-configuration} : @code{admins}, |
bf5c74e7 JL |
16984 | @code{use-libevent?}, @code{modules-enabled}, @code{modules-disabled}, |
16985 | @code{groups-file}, @code{allow-registration?}, @code{ssl}, | |
16986 | @code{c2s-require-encryption?}, @code{disable-sasl-mechanisms}, | |
16987 | @code{s2s-require-encryption?}, @code{s2s-secure-auth?}, | |
16988 | @code{s2s-insecure-domains}, @code{s2s-secure-domains}, | |
16989 | @code{authentication}, @code{log}, @code{http-max-content-size}, | |
adfb167f | 16990 | @code{http-external-url}, @code{raw-content}, plus : |
1d8d69c8 | 16991 | @deftypevr {paramètre de @code{ext-component-configuration}} string component-secret |
adfb167f | 16992 | Mot de passe que le composant utilisera pour s'authentifier. |
bf5c74e7 JL |
16993 | @end deftypevr |
16994 | ||
1d8d69c8 | 16995 | @deftypevr {paramètre de @code{ext-component-configuration}} string hostname |
adfb167f | 16996 | Nom d'hôte du composant. |
bf5c74e7 JL |
16997 | @end deftypevr |
16998 | ||
16999 | @end deftypevr | |
17000 | ||
1d8d69c8 | 17001 | @deftypevr {paramètre de @code{prosody-configuration}} non-negative-integer-list component-ports |
adfb167f JL |
17002 | Ports sur lesquels Prosody écoutera les connexions des composants. La |
17003 | valeur par défaut est @samp{(5347)}. | |
bf5c74e7 JL |
17004 | @end deftypevr |
17005 | ||
1d8d69c8 | 17006 | @deftypevr {paramètre de @code{prosody-configuration}} string component-interface |
adfb167f JL |
17007 | Interface sur laquelle Prosody écoutera les connexions des composants. La |
17008 | valeur par défaut est @samp{"127.0.0.1"}. | |
bf5c74e7 JL |
17009 | @end deftypevr |
17010 | ||
1d8d69c8 | 17011 | @deftypevr {paramètre de @code{prosody-configuration}} maybe-raw-content raw-content |
adfb167f | 17012 | Contenu brut qui sera ajouté au fichier de configuration. |
bf5c74e7 JL |
17013 | @end deftypevr |
17014 | ||
adfb167f JL |
17015 | Il se peut que vous ayez juste envie de lancer un fichier |
17016 | @code{prosody.cfg.lua} directement. Dans ce cas, vous pouvez passer un | |
17017 | enregistrement @code{opaque-prosody-configuration} comme valeur à | |
17018 | @code{prosody-service-type}. Comme son nom l'indique, une configuration | |
17019 | opaque n'a pas de capacités de réflexion simples. Les champs disponibles de | |
17020 | @code{opaque-prosody-configuration} sont : | |
bf5c74e7 | 17021 | |
1d8d69c8 | 17022 | @deftypevr {paramètre de @code{opaque-prosody-configuration}} package prosody |
adfb167f | 17023 | Le paquet prosody. |
bf5c74e7 JL |
17024 | @end deftypevr |
17025 | ||
1d8d69c8 | 17026 | @deftypevr {paramètre de @code{opaque-prosody-configuration}} string prosody.cfg.lua |
adfb167f | 17027 | Le contenu de @code{prosody.cfg.lua} à utiliser. |
bf5c74e7 JL |
17028 | @end deftypevr |
17029 | ||
adfb167f JL |
17030 | Par exemple, si votre @code{prosody.cfg.lua} est juste la chaîne vide, vous |
17031 | pouvez instancier un service prosody comme ceci : | |
bf5c74e7 JL |
17032 | |
17033 | @example | |
17034 | (service prosody-service-type | |
17035 | (opaque-prosody-configuration | |
17036 | (prosody.cfg.lua ""))) | |
17037 | @end example | |
17038 | ||
17039 | @c end of Prosody auto-generated documentation | |
17040 | ||
adfb167f | 17041 | @subsubheading Service BitlBee |
bf5c74e7 JL |
17042 | |
17043 | @cindex IRC (Internet Relay Chat) | |
adfb167f JL |
17044 | @cindex passerelle IRC |
17045 | @url{http://bitlbee.org,BitlBee} est une passerelle qui fournit une | |
17046 | interface IRC vers une variété de protocoles de messagerie instantanée comme | |
17047 | XMPP. | |
bf5c74e7 | 17048 | |
1d8d69c8 | 17049 | @defvr {Variable Scheme} bitlbee-service-type |
adfb167f JL |
17050 | C'est le type de service pour le démon de passerelle IRC |
17051 | @url{http://bitlbee.org,BitlBee}. Sa valeur est un | |
17052 | @code{bitlbee-configuration} (voir plus bas). | |
bf5c74e7 | 17053 | |
15f1bff4 | 17054 | Pour que BitlBee écoute sur le port 6667 sur localhost, ajoutez cette ligne |
adfb167f | 17055 | à vos services : |
bf5c74e7 JL |
17056 | |
17057 | @example | |
17058 | (service bitlbee-service-type) | |
17059 | @end example | |
17060 | @end defvr | |
17061 | ||
1d8d69c8 | 17062 | @deftp {Type de données} bitlbee-configuration |
adfb167f | 17063 | C'est la configuration de BitlBee, avec les champs suivants : |
bf5c74e7 JL |
17064 | |
17065 | @table @asis | |
1d8d69c8 JL |
17066 | @item @code{interface} (par défaut : @code{"127.0.0.1"}) |
17067 | @itemx @code{port} (par défaut : @code{6667}) | |
adfb167f JL |
17068 | Écoute sur l'interface réseau correspondant à l'adresse IP dans |
17069 | @var{interface}, sur @var{port}. | |
bf5c74e7 | 17070 | |
adfb167f JL |
17071 | Lorsque @var{interface} vaut @code{127.0.0.1}, seuls les clients locaux |
17072 | peuvent se connecter ; lorsqu'elle vaut @code{0.0.0.0}, les connexions | |
17073 | peuvent venir de n'importe quelle interface réseau. | |
bf5c74e7 | 17074 | |
1d8d69c8 JL |
17075 | @item @code{package} (par défaut : @code{bitlbee}) |
17076 | Le paquet BitlBee à utiliser. | |
bf5c74e7 | 17077 | |
2cf2c778 | 17078 | @item @code{plugins} (par défaut : @code{'()}) |
adfb167f JL |
17079 | Liste des paquets de greffons à utiliser — p.@: ex.@: |
17080 | @code{bitlbee-discord}. | |
3cacfa9e | 17081 | |
1d8d69c8 | 17082 | @item @code{extra-settings} (par défaut : @code{""}) |
adfb167f JL |
17083 | Partie de configuration ajoutée telle-quelle au fichier de configuration de |
17084 | BitlBee. | |
bf5c74e7 JL |
17085 | @end table |
17086 | @end deftp | |
17087 | ||
15f1bff4 JL |
17088 | @subsubheading Quassel Service |
17089 | ||
17090 | @cindex IRC (Internet Relay Chat) | |
17091 | @url{https://quassel-irc.org/,Quassel} is a distributed IRC client, meaning | |
17092 | that one or more clients can attach to and detach from the central core. | |
17093 | ||
17094 | @defvr {Scheme Variable} quassel-service-type | |
17095 | This is the service type for the @url{https://quassel-irc.org/,Quassel} IRC | |
17096 | backend daemon. Its value is a @code{quassel-configuration} (see below). | |
17097 | @end defvr | |
17098 | ||
17099 | @deftp {Data Type} quassel-configuration | |
17100 | This is the configuration for Quassel, with the following fields: | |
17101 | ||
17102 | @table @asis | |
17103 | @item @code{quassel} (default: @code{quassel}) | |
17104 | The Quassel package to use. | |
17105 | ||
17106 | @item @code{interface} (default: @code{"::,0.0.0.0"}) | |
17107 | @item @code{port} (default: @code{4242}) | |
17108 | Listen on the network interface(s) corresponding to the IPv4 or IPv6 | |
17109 | interfaces specified in the comma delimited @var{interface}, on @var{port}. | |
17110 | ||
17111 | @item @code{loglevel} (default: @code{"Info"}) | |
17112 | The level of logging desired. Accepted values are Debug, Info, Warning and | |
17113 | Error. | |
17114 | @end table | |
17115 | @end deftp | |
17116 | ||
3cacfa9e | 17117 | @node Services de téléphonie |
15f1bff4 | 17118 | @subsection Services de téléphonie |
bf5c74e7 | 17119 | |
adfb167f JL |
17120 | @cindex Murmur (serveur VoIP) |
17121 | @cindex serveur VoIP | |
17122 | Cette section décrit comment configurer et lancer un serveur Murmur. Murmur | |
17123 | est le serveur de la suite de voix-sur-IP (VoIP) @uref{https://mumble.info, | |
17124 | Mumble}. | |
bf5c74e7 | 17125 | |
1d8d69c8 | 17126 | @deftp {Type de données} murmur-configuration |
adfb167f JL |
17127 | Le type de service pour le serveur Murmur. Voici un exemple de |
17128 | configuration : | |
bf5c74e7 JL |
17129 | |
17130 | @example | |
17131 | (service murmur-service-type | |
17132 | (murmur-configuration | |
17133 | (welcome-text | |
15f1bff4 | 17134 | "Welcome to this Mumble server running on Guix!") |
bf5c74e7 JL |
17135 | (cert-required? #t) ;disallow text password logins |
17136 | (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem") | |
17137 | (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem"))) | |
17138 | @end example | |
17139 | ||
adfb167f | 17140 | Après avoir reconfiguré votre système, vous pouvez manuellement indiquer le |
15f1bff4 | 17141 | mot de passe @code{SuperUser} de murmur avec la commande qui s'affiche |
adfb167f | 17142 | pendant la phase d'activation. |
bf5c74e7 | 17143 | |
adfb167f JL |
17144 | Il est recommandé d'enregistrer un compte utilisateur Mumble normal et de |
17145 | lui donner les droits admin ou modérateur. Vous pouvez utiliser le client | |
17146 | @code{mumble} pour vous connecter en tant que nouvel utilisateur normal, | |
17147 | vous enregistrer et vous déconnecter. Pour l'étape suivante, connectez-vous | |
17148 | avec le nom @code{SuperUser} en utilisant le mot de passe @code{SuperUser} | |
17149 | que vous avez indiqué précédemment et accordez les droits administrateur ou | |
17150 | modérateur à vous utilisateur mumble nouvellement enregistré et créez | |
17151 | quelques salons. | |
bf5c74e7 | 17152 | |
1d8d69c8 | 17153 | Les champs de @code{murmur-configuration} disponibles sont : |
bf5c74e7 JL |
17154 | |
17155 | @table @asis | |
1d8d69c8 | 17156 | @item @code{package} (par défaut : @code{mumble}) |
adfb167f | 17157 | Paquet qui contient @code{bin/murmurd}. |
bf5c74e7 | 17158 | |
1d8d69c8 | 17159 | @item @code{user} (par défaut : @code{"murmur"}) |
adfb167f | 17160 | Utilisateur qui lancera le serveur Murmur. |
bf5c74e7 | 17161 | |
1d8d69c8 | 17162 | @item @code{group} (par défaut : @code{"murmur"}) |
adfb167f | 17163 | Groupe de l'utilisateur qui lancera le serveur Murmur. |
bf5c74e7 | 17164 | |
1d8d69c8 | 17165 | @item @code{port} (par défaut : @code{64738}) |
adfb167f | 17166 | Port sur lequel le serveur écoutera. |
bf5c74e7 | 17167 | |
1d8d69c8 | 17168 | @item @code{welcome-text} (par défaut : @code{""}) |
adfb167f | 17169 | Texte de bienvenue envoyé aux clients lors de leur connexion. |
bf5c74e7 | 17170 | |
1d8d69c8 | 17171 | @item @code{server-password} (par défaut : @code{""}) |
adfb167f | 17172 | Mot de passe que les clients devront entrer pour se connecter. |
bf5c74e7 | 17173 | |
1d8d69c8 | 17174 | @item @code{max-users} (par défaut : @code{100}) |
adfb167f JL |
17175 | Nombre maximum d'utilisateurs qui peuvent se connecter à ce serveur en même |
17176 | temps. | |
bf5c74e7 | 17177 | |
1d8d69c8 | 17178 | @item @code{max-user-bandwidth} (par défaut : @code{#f}) |
adfb167f | 17179 | Trafic de voix maximum qu'un utilisateur peut envoyer par seconde. |
bf5c74e7 | 17180 | |
1d8d69c8 | 17181 | @item @code{database-file} (par défaut : @code{"/var/lib/murmur/db.sqlite"}) |
adfb167f JL |
17182 | Nom de fichier de la base de données sqlite. L'utilisateur du service |
17183 | deviendra propriétaire du répertoire. | |
bf5c74e7 | 17184 | |
1d8d69c8 | 17185 | @item @code{log-file} (par défaut : @code{"/var/log/murmur/murmur.log"}) |
adfb167f JL |
17186 | Nom du fichier de journal. L'utilisateur du service deviendra propriétaire |
17187 | du répertoire. | |
bf5c74e7 | 17188 | |
1d8d69c8 | 17189 | @item @code{autoban-attempts} (par défaut : @code{10}) |
adfb167f JL |
17190 | Nombre maximum de connexions qu'un utilisateur peut faire pendant |
17191 | @code{autoban-timeframe} sans être banni automatiquement pour | |
17192 | @code{autoban-time}. | |
bf5c74e7 | 17193 | |
1d8d69c8 | 17194 | @item @code{autoban-timeframe} (par défaut : @code{120}) |
adfb167f | 17195 | Durée du temps pendant lequel le nombre de connexions est compté. |
bf5c74e7 | 17196 | |
1d8d69c8 | 17197 | @item @code{autoban-time} (par défaut : @code{300}) |
adfb167f | 17198 | Durée du bannissement automatique en secondes. |
bf5c74e7 | 17199 | |
1d8d69c8 | 17200 | @item @code{opus-threshold} (par défaut : @code{100}) |
adfb167f JL |
17201 | Pourcentage des clients qui doivent supporter opus avant de passer sur le |
17202 | codec audio opus. | |
bf5c74e7 | 17203 | |
1d8d69c8 | 17204 | @item @code{channel-nesting-limit} (par défaut : @code{10}) |
adfb167f | 17205 | Profondeur maximum des canaux. |
bf5c74e7 | 17206 | |
1d8d69c8 | 17207 | @item @code{channelname-regex} (par défaut : @code{#f}) |
adfb167f JL |
17208 | Une chaîne de la forme d'une expression régulière Qt que les noms de canaux |
17209 | doivent respecter. | |
bf5c74e7 | 17210 | |
1d8d69c8 | 17211 | @item @code{username-regex} (par défaut : @code{#f}) |
adfb167f JL |
17212 | Une chaîne de la forme d'une expression régulière Qt que les noms |
17213 | d'utilisateurs doivent respecter. | |
bf5c74e7 | 17214 | |
1d8d69c8 | 17215 | @item @code{text-message-length} (par défaut : @code{5000}) |
adfb167f JL |
17216 | Taille maximum en octets qu'un utilisateur peut envoyer en un seul message |
17217 | textuel. | |
bf5c74e7 | 17218 | |
1d8d69c8 | 17219 | @item @code{image-message-length} (par défaut : @code{(* 128 1024)}) |
adfb167f | 17220 | Taille maximum en octets qu'un utilisateur peut envoyer en une seule image. |
bf5c74e7 | 17221 | |
1d8d69c8 | 17222 | @item @code{cert-required?} (par défaut : @code{#f}) |
adfb167f JL |
17223 | Si la valeur est @code{#t} les clients utilisant une authentification par |
17224 | mot de passe faible ne seront pas acceptés. Les utilisateurs doivent | |
17225 | compléter l'assistant de configuration des certificats pour rejoindre le | |
17226 | serveur. | |
bf5c74e7 | 17227 | |
adfb167f JL |
17228 | @item @code{remember-channel?} (paramètre de : @code{#f}) |
17229 | Indique si murmur devrait se rappeler du dernier canal dans lequel étaient | |
17230 | les utilisateurs au moment de leur déconnexion et les y remettre lorsqu'ils | |
17231 | se reconnectent. | |
bf5c74e7 | 17232 | |
1d8d69c8 | 17233 | @item @code{allow-html?} (par défaut : @code{#f}) |
adfb167f JL |
17234 | Indique si le html est autorisé dans les messages textuels, les commentaires |
17235 | utilisateurs et les descriptions des canaux. | |
bf5c74e7 | 17236 | |
1d8d69c8 | 17237 | @item @code{allow-ping?} (par défaut : @code{#f}) |
adfb167f JL |
17238 | Mettre à vrai expose le nombre d'utilisateurs, le nombre d'utilisateurs |
17239 | maximum et la bande passante maximale du serveur par client aux utilisateurs | |
17240 | non connectés. Dans le client Mumble, cette information est affichée dans | |
17241 | la boîte de dialogue de connexion. | |
bf5c74e7 | 17242 | |
adfb167f | 17243 | Désactiver ce paramètre empêchera le serveur d'être publiquement listé. |
bf5c74e7 | 17244 | |
1d8d69c8 | 17245 | @item @code{bonjour?} (par défaut : @code{#f}) |
adfb167f JL |
17246 | Indique si le serveur se présente sur le réseau local à travers le protocole |
17247 | bonjour. | |
bf5c74e7 | 17248 | |
1d8d69c8 | 17249 | @item @code{send-version?} (par défaut : @code{#f}) |
adfb167f JL |
17250 | Indique si la version du serveur murmur doit être exposée dans les requêtes |
17251 | ping. | |
bf5c74e7 | 17252 | |
1d8d69c8 | 17253 | @item @code{log-days} (par défaut : @code{31}) |
adfb167f JL |
17254 | Murmur stocke aussi les journaux en base de données, qui sont accessible via |
17255 | RPC. La valeur par défaut est 31 jours, mais vous pouvez le mettre à 0 pour | |
17256 | les garder pour toujours ou à -1 pour désactiver la journalisation dans la | |
17257 | base de données. | |
bf5c74e7 | 17258 | |
1d8d69c8 | 17259 | @item @code{obfuscate-ips?} (par défaut : @code{#t}) |
adfb167f JL |
17260 | Indique si les IP enregistrées doivent être cachées pour protéger la vie |
17261 | privée des utilisateurs. | |
bf5c74e7 | 17262 | |
1d8d69c8 | 17263 | @item @code{ssl-cert} (par défaut : @code{#f}) |
adfb167f | 17264 | Nom de fichier du certificat SSL/TLS utilisé pour les connexions chiffrées. |
bf5c74e7 JL |
17265 | |
17266 | @example | |
17267 | (ssl-cert "/etc/letsencrypt/live/example.com/fullchain.pem") | |
17268 | @end example | |
1d8d69c8 | 17269 | @item @code{ssl-key} (par défaut : @code{#f}) |
adfb167f | 17270 | Chemin de fichier vers la clef privée ssl pour les connexions chiffrées. |
bf5c74e7 JL |
17271 | @example |
17272 | (ssl-key "/etc/letsencrypt/live/example.com/privkey.pem") | |
17273 | @end example | |
17274 | ||
1d8d69c8 | 17275 | @item @code{ssl-dh-params} (par défaut : @code{#f}) |
adfb167f JL |
17276 | Nom de fichier d'un fichier encodé en PEM avec les paramètres Diffie-Hellman |
17277 | pour le chiffrement SSL/TLS. Autrement vous pouvez indiquer | |
17278 | @code{"@@ffdhe2048"}, @code{"@@ffdhe3072"}, @code{"@@ffdhe4096"}, | |
17279 | @code{"@@ffdhe6144"} ou @code{"@@ffdhe8192"} pour utiliser les paramètres | |
17280 | inclus de la RFC 7919. | |
bf5c74e7 | 17281 | |
1d8d69c8 | 17282 | @item @code{ssl-ciphers} (par défaut : @code{#f}) |
adfb167f JL |
17283 | L'option @code{ssl-ciphers} permet de choisir les suites de chiffrement |
17284 | disponibles pour SSL/TLS. | |
bf5c74e7 | 17285 | |
adfb167f JL |
17286 | Cette option est spécifiée en utilisant |
17287 | l'@uref{https://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT, | |
17288 | OpenSSL cipher list notation} | |
bf5c74e7 | 17289 | |
adfb167f JL |
17290 | Nous vous recommandons d'essayer votre chaîne de suites de chiffrements avec |
17291 | « openssl ciphers <chaîne> » avant de l'indiquer ici, pour avoir une idée | |
17292 | des suites de chiffrement que vous aurez. Après avoir indiqué cette option, | |
17293 | nous vous recommandons d'inspecter les journaux de Murmur pour vous assurer | |
17294 | que Murmur utilise les suites de chiffrements auxquelles vous vous attendez. | |
bf5c74e7 | 17295 | |
adfb167f JL |
17296 | Remarque : modifier cette option peut impacter la rétrocompatibilité de |
17297 | votre serveur Murmur, et peut empêcher que des clients Mumble anciens se | |
17298 | connectent. | |
bf5c74e7 | 17299 | |
1d8d69c8 | 17300 | @item @code{public-registration} (par défaut : @code{#f}) |
adfb167f JL |
17301 | Doit être un enregistrement |
17302 | @code{<murmur-public-registration-configuration>} ou @code{#f}. | |
bf5c74e7 | 17303 | |
adfb167f JL |
17304 | Vous pouvez aussi enregistrer votre serveur dans la liste des serveurs |
17305 | publiques que le client @code{mumble} affiche au démarrage. Vous ne pouvez | |
17306 | pas enregistrer votre serveur si vous avez un @code{server-password} ou | |
17307 | @code{allow-ping} à @code{#f}. | |
bf5c74e7 | 17308 | |
adfb167f | 17309 | Cela peut prendre quelques heures avant d'arriver sur la liste publique. |
bf5c74e7 | 17310 | |
1d8d69c8 | 17311 | @item @code{file} (par défaut : @code{#f}) |
adfb167f JL |
17312 | Version alternative de cette configuration : si vous indiquez quelque chose, |
17313 | le reste est ignoré. | |
bf5c74e7 JL |
17314 | @end table |
17315 | @end deftp | |
17316 | ||
1d8d69c8 | 17317 | @deftp {Type de données} murmur-public-registration-configuration |
adfb167f | 17318 | Configuration pour l'enregistrement public du service murmur. |
bf5c74e7 JL |
17319 | |
17320 | @table @asis | |
17321 | @item @code{name} | |
adfb167f JL |
17322 | C'est le nom d'affichage de votre serveur. Ne pas le confondre avec le nom |
17323 | d'hôte. | |
bf5c74e7 JL |
17324 | |
17325 | @item @code{password} | |
adfb167f JL |
17326 | Un mot de passe pour identifier votre enregistrement. Les mises à jours |
17327 | suivantes devront utiliser le même mot de passe. Ne le perdez pas. | |
bf5c74e7 JL |
17328 | |
17329 | @item @code{url} | |
adfb167f JL |
17330 | Cela devrait être le lien @code{http://} ou @code{https://} vers votre site |
17331 | web. | |
bf5c74e7 | 17332 | |
1d8d69c8 | 17333 | @item @code{hostname} (par défaut : @code{#f}) |
adfb167f JL |
17334 | Par défaut votre serveur sera listé par son adresse IP. Si cette option est |
17335 | indiquée votre serveur sera listé par son nom d'hôte. | |
bf5c74e7 JL |
17336 | @end table |
17337 | @end deftp | |
17338 | ||
17339 | ||
17340 | ||
3cacfa9e | 17341 | @node Services de surveillance |
15f1bff4 | 17342 | @subsection Services de surveillance |
bf5c74e7 | 17343 | |
adfb167f | 17344 | @subsubheading Service Tailon |
bf5c74e7 | 17345 | |
adfb167f JL |
17346 | @uref{https://tailon.readthedocs.io/, Tailon} est une application web pour |
17347 | visualiser et chercher des fichiers de journaux. | |
bf5c74e7 | 17348 | |
adfb167f JL |
17349 | L'exemple suivant configurera le service avec les valeurs par défaut. Par |
17350 | défaut, on peut accéder à Tailon sur le pour 8080 | |
17351 | (@code{http://localhost:8080}). | |
bf5c74e7 JL |
17352 | |
17353 | @example | |
17354 | (service tailon-service-type) | |
17355 | @end example | |
17356 | ||
adfb167f JL |
17357 | L'exemple suivant personnalise un peu plus la configuration de Tailon, en |
17358 | ajoutant @command{sed} à la liste des commandes autorisées. | |
bf5c74e7 JL |
17359 | |
17360 | @example | |
17361 | (service tailon-service-type | |
17362 | (tailon-configuration | |
17363 | (config-file | |
17364 | (tailon-configuration-file | |
17365 | (allowed-commands '("tail" "grep" "awk" "sed")))))) | |
17366 | @end example | |
17367 | ||
17368 | ||
1d8d69c8 | 17369 | @deftp {Type de données} tailon-configuration |
adfb167f JL |
17370 | Type de données représentant la configuration de Tailon. Ce type a les |
17371 | paramètres suivants : | |
bf5c74e7 JL |
17372 | |
17373 | @table @asis | |
1d8d69c8 | 17374 | @item @code{config-file} (par défaut : @code{(tailon-configuration-file)}) |
adfb167f JL |
17375 | Le fichier de configuration à utiliser pour Tailon. Ce champ peut contenir |
17376 | un enregistrement @dfn{tailon-configuration-file} ou n'importe quelle gexp | |
bf5c74e7 JL |
17377 | (@pxref{G-Expressions}). |
17378 | ||
adfb167f JL |
17379 | Par exemple, pour utiliser un fichier local à la place, on peut utiliser la |
17380 | fonction @code{local-file} : | |
bf5c74e7 JL |
17381 | |
17382 | @example | |
17383 | (service tailon-service-type | |
17384 | (tailon-configuration | |
17385 | (config-file (local-file "./my-tailon.conf")))) | |
17386 | @end example | |
17387 | ||
1d8d69c8 JL |
17388 | @item @code{package} (par défaut : @code{tailon}) |
17389 | Le paquet tailon à utiliser. | |
bf5c74e7 JL |
17390 | |
17391 | @end table | |
17392 | @end deftp | |
17393 | ||
1d8d69c8 | 17394 | @deftp {Type de données} tailon-configuration-file |
adfb167f JL |
17395 | Type de données représentant les options de configuration de Tailon. Ce |
17396 | type a les paramètres suivants : | |
bf5c74e7 JL |
17397 | |
17398 | @table @asis | |
1d8d69c8 | 17399 | @item @code{files} (par défaut : @code{(list "/var/log")}) |
adfb167f JL |
17400 | Liste des fichiers à afficher. La liste peut inclure des chaînes pour des |
17401 | fichiers simple ou des répertoires, ou une liste, où le premier élément est | |
17402 | le nom d'un sous-section et le reste des fichiers ou des répertoires de | |
17403 | cette sous-section. | |
bf5c74e7 | 17404 | |
1d8d69c8 | 17405 | @item @code{bind} (par défaut : @code{"localhost:8080"}) |
adfb167f | 17406 | Adresse et port sur lesquels Tailon écoute. |
bf5c74e7 | 17407 | |
1d8d69c8 | 17408 | @item @code{relative-root} (par défaut : @code{#f}) |
adfb167f JL |
17409 | Chemin de l'URL à utiliser pour Tailon, ou @code{#f} pour ne pas utiliser de |
17410 | chemin. | |
bf5c74e7 | 17411 | |
1d8d69c8 | 17412 | @item @code{allow-transfers?} (par défaut : @code{#t}) |
adfb167f | 17413 | Permet de télécharger les journaux dans l'interface web. |
bf5c74e7 | 17414 | |
1d8d69c8 | 17415 | @item @code{follow-names?} (par défaut : @code{#t}) |
adfb167f | 17416 | Permet de surveiller des fichiers qui n'existent pas encore. |
bf5c74e7 | 17417 | |
1d8d69c8 | 17418 | @item @code{tail-lines} (par défaut : @code{200}) |
adfb167f | 17419 | Nombre de lignes à lire initialement dans chaque fichier. |
bf5c74e7 | 17420 | |
1d8d69c8 | 17421 | @item @code{allowed-commands} (par défaut : @code{(list "tail" "grep" "awk")}) |
adfb167f | 17422 | Commandes autorisées. Par défaut, @code{sed} est désactivé. |
bf5c74e7 | 17423 | |
1d8d69c8 | 17424 | @item @code{debug?} (par défaut : @code{#f}) |
adfb167f | 17425 | Configurez @code{debug?} à @code{#t} pour montrer les messages de débogage. |
bf5c74e7 | 17426 | |
1d8d69c8 | 17427 | @item @code{wrap-lines} (par défaut : @code{#t}) |
adfb167f JL |
17428 | État initial du retour à la ligne dans l'interface web. Configurez l'option |
17429 | à @code{#t} pour retourner à la ligne (par défaut) ou à @code{#f} pour ne | |
17430 | pas retourner à la ligne au début. | |
bf5c74e7 | 17431 | |
15f1bff4 JL |
17432 | @item @code{http-auth} (par défaut : @code{#f}) |
17433 | Type d'authentification HTTP à utiliser. Indiquez @code{#f} pour désactiver | |
17434 | l'authentification (par défaut). Les valeur supportées sont @code{"digest"} | |
17435 | et @code{"basic"}. | |
17436 | ||
17437 | @item @code{users} (par défaut : @code{#f}) | |
17438 | Si l'authentification HTTP est activée (voir @code{http-auth}), l'accès sera | |
17439 | restreint aux identifiants fournis ici. Pour configurer des utilisateurs, | |
17440 | utilisez une liste de paires, où le premier élément de la paire est le nom | |
17441 | d'utilisateur et le second élément est le mot de passe. | |
17442 | ||
17443 | @example | |
17444 | (tailon-configuration-file | |
17445 | (http-auth "basic") | |
17446 | (users '(("user1" . "password1") | |
17447 | ("user2" . "password2")))) | |
17448 | @end example | |
17449 | ||
17450 | @end table | |
17451 | @end deftp | |
17452 | ||
17453 | ||
17454 | @subsubheading Service Darkstat | |
17455 | @cindex darkstat | |
17456 | Darkstat est un « renifleur de paquets » qui capture le trafic réseau, | |
17457 | calcul des statistiques sur l'utilisation et sert des rapport sur HTTP. | |
17458 | ||
17459 | @defvar {Variable Scheme} darkstat-service-type | |
17460 | C'est le type de service pour le service | |
17461 | @uref{https://unix4lyfe.org/darkstat/, darkstat}, sa valeur doit être un | |
17462 | enregistrement @code{darkstat-configuration} comme dans cet exemple : | |
17463 | ||
17464 | @example | |
17465 | (service darkstat-service-type | |
17466 | (darkstat-configuration | |
17467 | (interface "eno1"))) | |
17468 | @end example | |
17469 | @end defvar | |
17470 | ||
17471 | @deftp {Type de données} darkstat-configuration | |
17472 | Type de données représentant la configuration de @command{darkstat}. | |
17473 | ||
17474 | @table @asis | |
17475 | @item @code{package} (par défaut : @code{darkstat}) | |
17476 | Le paquet darkstat à utiliser. | |
17477 | ||
17478 | @item @code{interface} | |
17479 | Capture le trafic sur l'interface réseau spécifiée. | |
17480 | ||
17481 | @item @code{port} (par défaut : @code{"667"}) | |
17482 | Lie l'interface web sur le port spécifié. | |
17483 | ||
17484 | @item @code{bind-address} (par défaut : @code{"127.0.0.1"}) | |
17485 | Lie l'interface web sur l'adresse spécifiée. | |
17486 | ||
17487 | @item @code{base} (par défaut : @code{"/"}) | |
17488 | Spécifie le chemin de base des URL. C'est utile si on accède à | |
17489 | @command{darkstat} à travers un proxy inverse. | |
17490 | ||
17491 | @end table | |
17492 | @end deftp | |
17493 | ||
17494 | @subsubheading Service d'export de nœud de Prometheus | |
17495 | ||
17496 | @cindex prometheus-node-exporter | |
17497 | L'exportateur de nœuds de Prometheus rend disponible les statistiques sur le | |
17498 | matériel et le système d'exploitation fournies par le noyau Linux pour le | |
17499 | système de surveillance Prometheus. Ce service devrait être déployé sur | |
17500 | tous les nœuds physiques et les machines virtuelles, où vous voulez | |
17501 | surveiller ces statistiques. | |
17502 | ||
17503 | @defvar {Variable Scheme} prometheus-node-exporter-service-type | |
17504 | C'est le type de service pour le service | |
17505 | @uref{https://github.com/prometheus/node_exporter/, | |
17506 | prometheus-node-exporter}, sa valeur doit être un enregistrement | |
17507 | @code{prometheus-node-exporter-configuration} comme dans cet exemple : | |
17508 | ||
17509 | @example | |
17510 | (service prometheus-node-exporter-service-type | |
17511 | (prometheus-node-exporter-configuration | |
17512 | (web-listen-address ":9100"))) | |
17513 | @end example | |
17514 | @end defvar | |
17515 | ||
17516 | @deftp {Type de données} prometheus-node-exporter-configuration | |
17517 | Type de données représentant la configuration de @command{node_exporter} | |
17518 | ||
17519 | @table @asis | |
17520 | @item @code{package} (par défaut : @code{go-github-com-prometheus-node-exporter}) | |
17521 | Le paquet prometheus-node-exporter à utiliser. | |
17522 | ||
17523 | @item @code{web-listen-address} (par défaut : @code{":9100"}) | |
17524 | Lie l'interface web sur l'adresse spécifiée. | |
17525 | ||
17526 | @end table | |
17527 | @end deftp | |
17528 | ||
17529 | @subsubheading Zabbix server | |
17530 | @cindex zabbix zabbix-server | |
17531 | Zabbix provides monitoring metrics, among others network utilization, CPU | |
17532 | load and disk space consumption: | |
17533 | ||
17534 | @itemize | |
17535 | @item High performance, high capacity (able to monitor hundreds of thousands of devices). | |
17536 | @item Auto-discovery of servers and network devices and interfaces. | |
17537 | @item Low-level discovery, allows to automatically start monitoring new items, file systems or network interfaces among others. | |
17538 | @item Distributed monitoring with centralized web administration. | |
17539 | @item Native high performance agents. | |
17540 | @item SLA, and ITIL KPI metrics on reporting. | |
17541 | @item High-level (business) view of monitored resources through user-defined visual console screens and dashboards. | |
17542 | @item Remote command execution through Zabbix proxies. | |
17543 | @end itemize | |
17544 | ||
17545 | @c %start of fragment | |
17546 | ||
17547 | Available @code{zabbix-server-configuration} fields are: | |
17548 | ||
17549 | @deftypevr {@code{zabbix-server-configuration} parameter} package zabbix-server | |
17550 | The zabbix-server package. | |
17551 | ||
17552 | @end deftypevr | |
17553 | ||
17554 | @deftypevr {@code{zabbix-server-configuration} parameter} string user | |
17555 | User who will run the Zabbix server. | |
17556 | ||
17557 | Defaults to @samp{"zabbix"}. | |
17558 | ||
17559 | @end deftypevr | |
17560 | ||
17561 | @deftypevr {@code{zabbix-server-configuration} parameter} group group | |
17562 | Group who will run the Zabbix server. | |
17563 | ||
17564 | Defaults to @samp{"zabbix"}. | |
17565 | ||
17566 | @end deftypevr | |
17567 | ||
17568 | @deftypevr {@code{zabbix-server-configuration} parameter} string db-host | |
17569 | Database host name. | |
17570 | ||
17571 | Defaults to @samp{"127.0.0.1"}. | |
17572 | ||
17573 | @end deftypevr | |
17574 | ||
17575 | @deftypevr {@code{zabbix-server-configuration} parameter} string db-name | |
17576 | Database name. | |
17577 | ||
17578 | Defaults to @samp{"zabbix"}. | |
17579 | ||
17580 | @end deftypevr | |
17581 | ||
17582 | @deftypevr {@code{zabbix-server-configuration} parameter} string db-user | |
17583 | Database user. | |
17584 | ||
17585 | Defaults to @samp{"zabbix"}. | |
17586 | ||
17587 | @end deftypevr | |
17588 | ||
17589 | @deftypevr {@code{zabbix-server-configuration} parameter} string db-password | |
17590 | Database password. Please, use @code{include-files} with | |
17591 | @code{DBPassword=SECRET} inside a specified file instead. | |
17592 | ||
17593 | La valeur par défaut est @samp{""}. | |
17594 | ||
17595 | @end deftypevr | |
17596 | ||
17597 | @deftypevr {@code{zabbix-server-configuration} parameter} number db-port | |
17598 | Database port. | |
17599 | ||
17600 | Defaults to @samp{5432}. | |
17601 | ||
17602 | @end deftypevr | |
17603 | ||
17604 | @deftypevr {@code{zabbix-server-configuration} parameter} string log-type | |
17605 | Specifies where log messages are written to: | |
17606 | ||
17607 | @itemize @bullet | |
17608 | @item | |
17609 | @code{system} - syslog. | |
17610 | ||
17611 | @item | |
17612 | @code{file} - file specified with @code{log-file} parameter. | |
17613 | ||
17614 | @item | |
17615 | @code{console} - standard output. | |
17616 | ||
17617 | @end itemize | |
17618 | ||
17619 | La valeur par défaut est @samp{""}. | |
17620 | ||
17621 | @end deftypevr | |
17622 | ||
17623 | @deftypevr {@code{zabbix-server-configuration} parameter} string log-file | |
17624 | Log file name for @code{log-type} @code{file} parameter. | |
17625 | ||
17626 | Defaults to @samp{"/var/log/zabbix/server.log"}. | |
17627 | ||
17628 | @end deftypevr | |
17629 | ||
17630 | @deftypevr {@code{zabbix-server-configuration} parameter} string pid-file | |
17631 | Name of PID file. | |
17632 | ||
17633 | Defaults to @samp{"/var/run/zabbix/zabbix_server.pid"}. | |
17634 | ||
17635 | @end deftypevr | |
17636 | ||
17637 | @deftypevr {@code{zabbix-server-configuration} parameter} string ssl-ca-location | |
17638 | The location of certificate authority (CA) files for SSL server certificate | |
17639 | verification. | |
17640 | ||
17641 | Defaults to @samp{"/etc/ssl/certs/ca-certificates.crt"}. | |
17642 | ||
17643 | @end deftypevr | |
17644 | ||
17645 | @deftypevr {@code{zabbix-server-configuration} parameter} string ssl-cert-location | |
17646 | Location of SSL client certificates. | |
17647 | ||
17648 | Defaults to @samp{"/etc/ssl/certs"}. | |
17649 | ||
17650 | @end deftypevr | |
17651 | ||
17652 | @deftypevr {@code{zabbix-server-configuration} parameter} string extra-options | |
17653 | Extra options will be appended to Zabbix server configuration file. | |
17654 | ||
17655 | La valeur par défaut est @samp{""}. | |
17656 | ||
17657 | @end deftypevr | |
17658 | ||
17659 | @deftypevr {@code{zabbix-server-configuration} parameter} include-files include-files | |
17660 | You may include individual files or all files in a directory in the | |
17661 | configuration file. | |
17662 | ||
17663 | La valeur par défaut est @samp{()}. | |
17664 | ||
17665 | @end deftypevr | |
17666 | ||
17667 | @c %end of fragment | |
17668 | ||
17669 | @subsubheading Zabbix agent | |
17670 | @cindex zabbix zabbix-agent | |
17671 | ||
17672 | Zabbix agent gathers information for Zabbix server. | |
17673 | ||
17674 | @c %start of fragment | |
17675 | ||
17676 | Available @code{zabbix-agent-configuration} fields are: | |
17677 | ||
17678 | @deftypevr {@code{zabbix-agent-configuration} parameter} package zabbix-agent | |
17679 | The zabbix-agent package. | |
17680 | ||
17681 | @end deftypevr | |
17682 | ||
17683 | @deftypevr {@code{zabbix-agent-configuration} parameter} string user | |
17684 | User who will run the Zabbix agent. | |
17685 | ||
17686 | Defaults to @samp{"zabbix"}. | |
17687 | ||
17688 | @end deftypevr | |
17689 | ||
17690 | @deftypevr {@code{zabbix-agent-configuration} parameter} group group | |
17691 | Group who will run the Zabbix agent. | |
17692 | ||
17693 | Defaults to @samp{"zabbix"}. | |
17694 | ||
17695 | @end deftypevr | |
17696 | ||
17697 | @deftypevr {@code{zabbix-agent-configuration} parameter} string hostname | |
17698 | Unique, case sensitive hostname which is required for active checks and must | |
17699 | match hostname as configured on the server. | |
17700 | ||
17701 | Defaults to @samp{"Zabbix server"}. | |
17702 | ||
17703 | @end deftypevr | |
17704 | ||
17705 | @deftypevr {@code{zabbix-agent-configuration} parameter} string log-type | |
17706 | Specifies where log messages are written to: | |
17707 | ||
17708 | @itemize @bullet | |
17709 | @item | |
17710 | @code{system} - syslog. | |
17711 | ||
17712 | @item | |
17713 | @code{file} - file specified with @code{log-file} parameter. | |
17714 | ||
17715 | @item | |
17716 | @code{console} - standard output. | |
17717 | ||
17718 | @end itemize | |
17719 | ||
17720 | La valeur par défaut est @samp{""}. | |
17721 | ||
17722 | @end deftypevr | |
17723 | ||
17724 | @deftypevr {@code{zabbix-agent-configuration} parameter} string log-file | |
17725 | Log file name for @code{log-type} @code{file} parameter. | |
17726 | ||
17727 | Defaults to @samp{"/var/log/zabbix/agent.log"}. | |
17728 | ||
17729 | @end deftypevr | |
17730 | ||
17731 | @deftypevr {@code{zabbix-agent-configuration} parameter} string pid-file | |
17732 | Name of PID file. | |
17733 | ||
17734 | Defaults to @samp{"/var/run/zabbix/zabbix_agent.pid"}. | |
17735 | ||
17736 | @end deftypevr | |
17737 | ||
17738 | @deftypevr {@code{zabbix-agent-configuration} parameter} list server | |
17739 | List of IP addresses, optionally in CIDR notation, or hostnames of Zabbix | |
17740 | servers and Zabbix proxies. Incoming connections will be accepted only from | |
17741 | the hosts listed here. | |
17742 | ||
17743 | Defaults to @samp{("127.0.0.1")}. | |
17744 | ||
17745 | @end deftypevr | |
17746 | ||
17747 | @deftypevr {@code{zabbix-agent-configuration} parameter} list server-active | |
17748 | List of IP:port (or hostname:port) pairs of Zabbix servers and Zabbix | |
17749 | proxies for active checks. If port is not specified, default port is used. | |
17750 | If this parameter is not specified, active checks are disabled. | |
17751 | ||
17752 | Defaults to @samp{("127.0.0.1")}. | |
17753 | ||
17754 | @end deftypevr | |
17755 | ||
17756 | @deftypevr {@code{zabbix-agent-configuration} parameter} string extra-options | |
17757 | Extra options will be appended to Zabbix server configuration file. | |
17758 | ||
17759 | La valeur par défaut est @samp{""}. | |
17760 | ||
17761 | @end deftypevr | |
17762 | ||
17763 | @deftypevr {@code{zabbix-agent-configuration} parameter} include-files include-files | |
17764 | You may include individual files or all files in a directory in the | |
17765 | configuration file. | |
17766 | ||
17767 | La valeur par défaut est @samp{()}. | |
17768 | ||
17769 | @end deftypevr | |
17770 | ||
17771 | @c %end of fragment | |
17772 | ||
17773 | @subsubheading Zabbix front-end | |
17774 | @cindex zabbix zabbix-front-end | |
17775 | ||
17776 | This service provides a WEB interface to Zabbix server. | |
17777 | ||
17778 | @c %start of fragment | |
17779 | ||
17780 | Available @code{zabbix-front-end-configuration} fields are: | |
17781 | ||
17782 | @deftypevr {@code{zabbix-front-end-configuration} parameter} nginx-server-configuration-list nginx | |
17783 | Configuration Nginx. | |
17784 | ||
17785 | @end deftypevr | |
17786 | ||
17787 | @deftypevr {@code{zabbix-front-end-configuration} parameter} string db-host | |
17788 | Database host name. | |
17789 | ||
17790 | La valeur par défaut est @samp{"localhost"}. | |
17791 | ||
17792 | @end deftypevr | |
17793 | ||
17794 | @deftypevr {@code{zabbix-front-end-configuration} parameter} number db-port | |
17795 | Database port. | |
bf5c74e7 | 17796 | |
15f1bff4 | 17797 | Defaults to @samp{5432}. |
bf5c74e7 | 17798 | |
15f1bff4 | 17799 | @end deftypevr |
bf5c74e7 | 17800 | |
15f1bff4 JL |
17801 | @deftypevr {@code{zabbix-front-end-configuration} parameter} string db-name |
17802 | Database name. | |
bf5c74e7 | 17803 | |
15f1bff4 | 17804 | Defaults to @samp{"zabbix"}. |
bf5c74e7 | 17805 | |
15f1bff4 | 17806 | @end deftypevr |
bf5c74e7 | 17807 | |
15f1bff4 JL |
17808 | @deftypevr {@code{zabbix-front-end-configuration} parameter} string db-user |
17809 | Database user. | |
bf5c74e7 | 17810 | |
15f1bff4 | 17811 | Defaults to @samp{"zabbix"}. |
bf5c74e7 | 17812 | |
15f1bff4 | 17813 | @end deftypevr |
bf5c74e7 | 17814 | |
15f1bff4 JL |
17815 | @deftypevr {@code{zabbix-front-end-configuration} parameter} string db-password |
17816 | Database password. Please, use @code{db-secret-file} instead. | |
bf5c74e7 | 17817 | |
15f1bff4 | 17818 | La valeur par défaut est @samp{""}. |
bf5c74e7 | 17819 | |
15f1bff4 | 17820 | @end deftypevr |
bf5c74e7 | 17821 | |
15f1bff4 JL |
17822 | @deftypevr {@code{zabbix-front-end-configuration} parameter} string db-secret-file |
17823 | Secret file which will be appended to @file{zabbix.conf.php} file. This | |
17824 | file contains credentials for use by Zabbix front-end. You are expected to | |
17825 | create it manually. | |
bf5c74e7 | 17826 | |
15f1bff4 | 17827 | La valeur par défaut est @samp{""}. |
bf5c74e7 | 17828 | |
15f1bff4 | 17829 | @end deftypevr |
bf5c74e7 | 17830 | |
15f1bff4 JL |
17831 | @deftypevr {@code{zabbix-front-end-configuration} parameter} string zabbix-host |
17832 | Zabbix server hostname. | |
524756d1 | 17833 | |
15f1bff4 | 17834 | La valeur par défaut est @samp{"localhost"}. |
524756d1 | 17835 | |
15f1bff4 | 17836 | @end deftypevr |
524756d1 | 17837 | |
15f1bff4 JL |
17838 | @deftypevr {@code{zabbix-front-end-configuration} parameter} number zabbix-port |
17839 | Zabbix server port. | |
524756d1 | 17840 | |
15f1bff4 | 17841 | Defaults to @samp{10051}. |
524756d1 | 17842 | |
15f1bff4 | 17843 | @end deftypevr |
524756d1 | 17844 | |
524756d1 | 17845 | |
15f1bff4 | 17846 | @c %end of fragment |
bf5c74e7 | 17847 | |
3cacfa9e | 17848 | @node Services Kerberos |
15f1bff4 | 17849 | @subsection Services Kerberos |
bf5c74e7 JL |
17850 | @cindex Kerberos |
17851 | ||
adfb167f JL |
17852 | Le module @code{(gnu services kerberos)} fournit des services liés au |
17853 | protocole d'authentification @dfn{Kerberos}. | |
bf5c74e7 | 17854 | |
adfb167f | 17855 | @subsubheading Service Krb5 |
bf5c74e7 | 17856 | |
adfb167f JL |
17857 | Les programmes qui utilisent une bibliothèque cliente Kerberos s'attendent à |
17858 | trouver un fichier de configuration dans @file{/etc/krb5.conf}. Ce service | |
17859 | génère un tel fichier à partir d'une définition fournie par la déclaration | |
17860 | de système d'exploitation. Il ne démarre aucun démon. | |
bf5c74e7 | 17861 | |
adfb167f JL |
17862 | Aucun fichier « keytab » n'est fourni par ce service — vous devez les créer |
17863 | explicitement. Ce service est connu pour fonctionner avec la bibliothèque | |
17864 | cliente MIT, @code{mit-krb5}. Les autres implémentations n'ont pas été | |
17865 | testées. | |
bf5c74e7 | 17866 | |
1d8d69c8 | 17867 | @defvr {Variable Scheme} krb5-service-type |
adfb167f | 17868 | Un type de service pour les clients Kerberos 5. |
bf5c74e7 JL |
17869 | @end defvr |
17870 | ||
17871 | @noindent | |
adfb167f | 17872 | Voici un exemple d'utilisation : |
bf5c74e7 JL |
17873 | @lisp |
17874 | (service krb5-service-type | |
17875 | (krb5-configuration | |
17876 | (default-realm "EXAMPLE.COM") | |
17877 | (allow-weak-crypto? #t) | |
17878 | (realms (list | |
17879 | (krb5-realm | |
17880 | (name "EXAMPLE.COM") | |
17881 | (admin-server "groucho.example.com") | |
17882 | (kdc "karl.example.com")) | |
17883 | (krb5-realm | |
17884 | (name "ARGRX.EDU") | |
17885 | (admin-server "kerb-admin.argrx.edu") | |
17886 | (kdc "keys.argrx.edu")))))) | |
17887 | @end lisp | |
17888 | ||
17889 | @noindent | |
adfb167f | 17890 | Cet exemple fournit une configuration cliente Kerberos@tie{}5 qui : |
bf5c74e7 | 17891 | @itemize |
adfb167f JL |
17892 | @item Reconnais deux domaines : « EXAMPLE.COM » et « ARGREX.EDU », tous deux |
17893 | aillant des serveurs d'administration et des centres de distribution de | |
17894 | clefs distincts ; | |
17895 | @item Utilisera le domaine « EXAMPLE.COM » pr défaut si le domaine n'est pas spécifié | |
17896 | explicitement par les clients ; | |
17897 | @item Acceptera les services qui ne supportent que des types de chiffrements connus pour être faibles. | |
bf5c74e7 JL |
17898 | @end itemize |
17899 | ||
adfb167f JL |
17900 | Les types @code{krb5-realm} et @code{krb5-configuration} ont de nombreux |
17901 | champs. Seuls les plus communs sont décrits ici. Pour une liste complète, | |
17902 | et plus de détails sur chacun d'entre eux, voir la documentation de MIT | |
17903 | @uref{http://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html,,krb5.conf}. | |
bf5c74e7 JL |
17904 | |
17905 | ||
1d8d69c8 | 17906 | @deftp {Type de données} krb5-realm |
adfb167f | 17907 | @cindex domaine, kerberos |
bf5c74e7 JL |
17908 | @table @asis |
17909 | @item @code{name} | |
adfb167f JL |
17910 | Ce champ est une chaîne identifiant le nom d'un domaine. Une convention |
17911 | courante est d'utiliser le nom pleinement qualifié de votre organisation, | |
17912 | converti en majuscule. | |
bf5c74e7 JL |
17913 | |
17914 | @item @code{admin-server} | |
adfb167f JL |
17915 | Ce champ est une chaîne identifiant l'hôte où le serveur d'administration |
17916 | tourne. | |
bf5c74e7 JL |
17917 | |
17918 | @item @code{kdc} | |
adfb167f JL |
17919 | Ce champ est une chaîne identifiant le centre de distribution de clefs pour |
17920 | ce domaine. | |
bf5c74e7 JL |
17921 | @end table |
17922 | @end deftp | |
17923 | ||
1d8d69c8 | 17924 | @deftp {Type de données} krb5-configuration |
bf5c74e7 JL |
17925 | |
17926 | @table @asis | |
1d8d69c8 | 17927 | @item @code{allow-weak-crypto?} (par défaut : @code{#f}) |
adfb167f JL |
17928 | Si ce drapeau est @code{#t} les services qui n'offrent que des algorithmes |
17929 | de chiffrement faibles seront acceptés. | |
bf5c74e7 | 17930 | |
1d8d69c8 | 17931 | @item @code{default-realm} (par défaut : @code{#f}) |
adfb167f JL |
17932 | Ce champ devrait être une chaîne identifiant le domaine Kerberos par défaut |
17933 | pour le client. Vous devriez mettre le nom de votre domaine Kerberos dans | |
17934 | ce champ. Si cette valeur est @code{#f} alors un domaine doit être spécifié | |
17935 | pour chaque principal Kerberos à l'invocation des programmes comme | |
17936 | @command{kinit}. | |
bf5c74e7 JL |
17937 | |
17938 | @item @code{realms} | |
adfb167f JL |
17939 | Cela doit être une liste non-vide d'objets @code{krb5-realm}, auxquels les |
17940 | clients peuvent accéder. Normalement, l'un d'entre eux aura un champ | |
17941 | @code{name} qui correspond au champ @code{default-realm}. | |
bf5c74e7 JL |
17942 | @end table |
17943 | @end deftp | |
17944 | ||
17945 | ||
adfb167f | 17946 | @subsubheading Service PAM krb5 |
bf5c74e7 JL |
17947 | @cindex pam-krb5 |
17948 | ||
adfb167f JL |
17949 | Le service @code{pam-krb5} permet la connexion et la gestion des mots de |
17950 | passe par Kerberos. Vous aurez besoin de ce service si vous voulez que les | |
17951 | applications qui utilisent PAM puissent authentifier automatiquement les | |
17952 | utilisateurs avec Kerberos. | |
bf5c74e7 | 17953 | |
1d8d69c8 | 17954 | @defvr {Variable Scheme} pam-krb5-service-type |
adfb167f | 17955 | Un type de service pour le module PAM Kerberos 5. |
bf5c74e7 JL |
17956 | @end defvr |
17957 | ||
1d8d69c8 | 17958 | @deftp {Type de données} pam-krb5-configuration |
adfb167f JL |
17959 | Type de données représentant la configuration du module PAM Kerberos 5. Ce |
17960 | type a les paramètres suivants : | |
bf5c74e7 | 17961 | @table @asis |
1d8d69c8 JL |
17962 | @item @code{pam-krb5} (par défaut : @code{pam-krb5}) |
17963 | Le paquet pam-krb5 à utiliser. | |
bf5c74e7 | 17964 | |
1d8d69c8 | 17965 | @item @code{minimum-uid} (par défaut : @code{1000}) |
adfb167f JL |
17966 | Le plus petite ID utilisateur pour lequel les authentifications Kerberos |
17967 | devraient être tentées. Les comptes locaux avec une valeur plus petite | |
17968 | échoueront silencieusement leur authentification Kerberos. | |
bf5c74e7 JL |
17969 | @end table |
17970 | @end deftp | |
17971 | ||
17972 | ||
3cacfa9e | 17973 | @node Services web |
15f1bff4 | 17974 | @subsection Services web |
bf5c74e7 JL |
17975 | |
17976 | @cindex web | |
17977 | @cindex www | |
17978 | @cindex HTTP | |
adfb167f JL |
17979 | Le module @code{(gnu services web)} fournit le serveur Apache HTTP, le |
17980 | serveur web nginx et aussi un démon fastcgi. | |
bf5c74e7 | 17981 | |
adfb167f | 17982 | @subsubheading Serveur Apache HTTP |
bf5c74e7 | 17983 | |
1d8d69c8 | 17984 | @deffn {Variable Scheme} httpd-service-type |
adfb167f JL |
17985 | Type de service pour le serveur @uref{https://httpd.apache.org/,Apache HTTP} |
17986 | (@dfn{httpd}). La valeur de ce type de service est un enregistrement | |
17987 | @code{httpd-configuration}. | |
bf5c74e7 | 17988 | |
adfb167f | 17989 | Un exemple de configuration simple est donné ci-dessous. |
bf5c74e7 JL |
17990 | |
17991 | @example | |
17992 | (service httpd-service-type | |
17993 | (httpd-configuration | |
17994 | (config | |
17995 | (httpd-config-file | |
17996 | (server-name "www.example.com") | |
17997 | (document-root "/srv/http/www.example.com"))))) | |
17998 | @end example | |
17999 | ||
adfb167f JL |
18000 | D'autres services peuvent aussi étendre @code{httpd-service-type} pour être |
18001 | ajouté à la configuration. | |
bf5c74e7 JL |
18002 | |
18003 | @example | |
18004 | (simple-service 'my-extra-server httpd-service-type | |
18005 | (list | |
18006 | (httpd-virtualhost | |
18007 | "*:80" | |
18008 | (list (string-append | |
18009 | "ServerName "www.example.com | |
18010 | DocumentRoot \"/srv/http/www.example.com\""))))) | |
18011 | @end example | |
18012 | @end deffn | |
18013 | ||
adfb167f JL |
18014 | Les détails des types d'enregistrement @code{httpd-configuration}, |
18015 | @code{httpd-module}, @code{httpd-config-file} et @code{httpd-virtualhost} | |
18016 | sont donnés plus bas. | |
bf5c74e7 | 18017 | |
1d8d69c8 | 18018 | @deffn {Type de données} httpd-configuration |
adfb167f | 18019 | Ce type de données représente la configuration du service httpd. |
bf5c74e7 JL |
18020 | |
18021 | @table @asis | |
1d8d69c8 JL |
18022 | @item @code{package} (par défaut : @code{httpd}) |
18023 | Le paquet httpd à utiliser. | |
bf5c74e7 | 18024 | |
1d8d69c8 | 18025 | @item @code{pid-file} (par défaut : @code{"/var/run/httpd"}) |
adfb167f | 18026 | Le fichier de pid utilisé par le service shepherd. |
bf5c74e7 | 18027 | |
1d8d69c8 | 18028 | @item @code{config} (par défaut : @code{(httpd-config-file)}) |
adfb167f JL |
18029 | Le fichier de configuration à utiliser avec le service httpd. La valeur par |
18030 | défaut est un enregistrement @code{httpd-config-file} mais cela peut aussi | |
18031 | être un G-expression qui génère un fichier, par exemple un | |
18032 | @code{plain-file}. Un fichier en dehors du dépôt peut aussi être spécifié | |
18033 | avec une chaîne de caractères. | |
bf5c74e7 JL |
18034 | |
18035 | @end table | |
18036 | @end deffn | |
18037 | ||
1d8d69c8 | 18038 | @deffn {Type de données} httpd-module |
adfb167f | 18039 | Ce type de données représente un module pour le service httpd. |
bf5c74e7 JL |
18040 | |
18041 | @table @asis | |
18042 | @item @code{name} | |
adfb167f | 18043 | Le nom du module. |
bf5c74e7 JL |
18044 | |
18045 | @item @code{file} | |
adfb167f JL |
18046 | Le fichier pour le module. Cela peut être relatif au paquet httpd utilisé, |
18047 | l'emplacement absolu d'un fichier ou une G-expression pour un fichier dans | |
18048 | le dépôt, par exemple @code{(file-append mod-wsgi "/modules/mod_wsgi.so")}. | |
bf5c74e7 JL |
18049 | |
18050 | @end table | |
18051 | @end deffn | |
18052 | ||
adfb167f JL |
18053 | @defvr {Variable Scheme} %default-httpd-modules |
18054 | Une liste par défaut des objets @code{httpd-module}. | |
18055 | @end defvr | |
18056 | ||
1d8d69c8 | 18057 | @deffn {Type de données} httpd-config-file |
adfb167f JL |
18058 | Ce type de données représente un fichier de configuration pour le service |
18059 | httpd. | |
bf5c74e7 JL |
18060 | |
18061 | @table @asis | |
1d8d69c8 | 18062 | @item @code{modules} (par défaut : @code{%default-httpd-modules}) |
adfb167f JL |
18063 | Les modules à charger. Les modules supplémentaires peuvent être ajoutés ici |
18064 | ou chargés par des configuration supplémentaires. | |
18065 | ||
18066 | Par exemple, pour gérer les requêtes pour des fichiers PHP, vous pouvez | |
18067 | utiliser le module @code{mod_proxy_fcgi} d'Apache avec | |
18068 | @code{php-fpm-service-type} : | |
18069 | ||
18070 | @example | |
18071 | (service httpd-service-type | |
18072 | (httpd-configuration | |
18073 | (config | |
18074 | (httpd-config-file | |
18075 | (modules (cons* | |
18076 | (httpd-module | |
18077 | (name "proxy_module") | |
18078 | (file "modules/mod_proxy.so")) | |
18079 | (httpd-module | |
18080 | (name "proxy_fcgi_module") | |
18081 | (file "modules/mod_proxy_fcgi.so")) | |
18082 | %default-httpd-modules)) | |
18083 | (extra-config (list "\ | |
18084 | <FilesMatch \\.php$> | |
18085 | SetHandler \"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\" | |
18086 | </FilesMatch>")))))) | |
18087 | (service php-fpm-service-type | |
18088 | (php-fpm-configuration | |
18089 | (socket "/var/run/php-fpm.sock") | |
18090 | (socket-group "httpd"))) | |
18091 | @end example | |
bf5c74e7 | 18092 | |
1d8d69c8 | 18093 | @item @code{server-root} (par défaut : @code{httpd}) |
adfb167f JL |
18094 | Le @code{ServerRoot} dans le fichier de configuration, par défaut le paquet |
18095 | httpd. Les directives comme @code{Include} et @code{LoadModule} sont prises | |
18096 | relativement à la racine du serveur. | |
bf5c74e7 | 18097 | |
1d8d69c8 | 18098 | @item @code{server-name} (par défaut : @code{#f}) |
adfb167f JL |
18099 | Le @code{ServerName} dans le fichier de configuration, utilisé pour |
18100 | spécifier le schéma de requête, le nom d'hôte et le port que le serveur | |
18101 | utilise pour s'identifier. | |
bf5c74e7 | 18102 | |
adfb167f JL |
18103 | Cela n'a pas besoin d'être dans la configuration du serveur, et peut être |
18104 | spécifié dans les hôtes virtuels. La valeur par défaut est @code{#f} pour | |
18105 | ne pas spécifier de @code{ServerName}. | |
bf5c74e7 | 18106 | |
1d8d69c8 | 18107 | @item @code{document-root} (par défaut : @code{"/srv/http"}) |
adfb167f | 18108 | Le @code{DocumentRoot} depuis lequel les fichiers seront servis. |
bf5c74e7 | 18109 | |
1d8d69c8 | 18110 | @item @code{listen} (par défaut : @code{'("80")}) |
adfb167f JL |
18111 | La liste des valeurs pour les directives @code{Listen} dans le fichier de |
18112 | configuration. La valeur devrait être une liste de chaînes, où chacune | |
18113 | spécifie le port sur lequel écouter et éventuellement une adresse IP et un | |
18114 | protocole à utiliser. | |
bf5c74e7 | 18115 | |
1d8d69c8 | 18116 | @item @code{pid-file} (par défaut : @code{"/var/run/httpd"}) |
adfb167f JL |
18117 | Le @code{PidFile} à utiliser. Cela devrait correspondre à @code{pid-file} |
18118 | indiqué dans @code{httpd-configuration} pour que le service Shepherd soit | |
18119 | correctement configuré. | |
bf5c74e7 | 18120 | |
1d8d69c8 | 18121 | @item @code{error-log} (par défaut : @code{"/var/log/httpd/error_log"}) |
adfb167f | 18122 | Le @code{ErrorLog} où le serveur écrit les journaux d'erreurs. |
bf5c74e7 | 18123 | |
1d8d69c8 | 18124 | @item @code{user} (par défaut : @code{"httpd"}) |
adfb167f | 18125 | Le @code{User} en tant que lequel le serveur répondra aux requêtes. |
bf5c74e7 | 18126 | |
1d8d69c8 | 18127 | @item @code{group} (par défaut : @code{"httpd"}) |
adfb167f | 18128 | Le @code{Group} que le serveur utilisera pour répondre aux requêtes. |
bf5c74e7 | 18129 | |
1d8d69c8 | 18130 | @item @code{extra-config} (par défaut : @code{(list "TypesConfig etc/httpd/mime.types")}) |
adfb167f JL |
18131 | Une liste plate de chaînes et de G-expressions qui seront ajoutées à la fin |
18132 | du fichier de configuration. | |
bf5c74e7 | 18133 | |
adfb167f JL |
18134 | N'importe quelle valeur avec laquelle le service est étendu sera ajouté à |
18135 | cette liste. | |
bf5c74e7 JL |
18136 | |
18137 | @end table | |
18138 | @end deffn | |
18139 | ||
1d8d69c8 | 18140 | @deffn {Type de données} httpd-virtualhost |
adfb167f JL |
18141 | Ce type de données représente la configuration d'un hôte virtuel pour le |
18142 | service httpd. | |
bf5c74e7 | 18143 | |
adfb167f | 18144 | Ils devraient être ajoutés à extra-config dans httpd-service. |
bf5c74e7 JL |
18145 | |
18146 | @example | |
18147 | (simple-service 'my-extra-server httpd-service-type | |
18148 | (list | |
18149 | (httpd-virtualhost | |
18150 | "*:80" | |
18151 | (list (string-append | |
18152 | "ServerName "www.example.com | |
18153 | DocumentRoot \"/srv/http/www.example.com\""))))) | |
18154 | @end example | |
18155 | ||
18156 | @table @asis | |
18157 | @item @code{addresses-and-ports} | |
adfb167f | 18158 | L'adresse et le port pour la directive @code{VirtualHost}. |
bf5c74e7 JL |
18159 | |
18160 | @item @code{contents} | |
adfb167f JL |
18161 | Le contenu de la directive @code{VirtualHost}, cela devrait être une liste |
18162 | de chaîne et de G-expressions. | |
bf5c74e7 JL |
18163 | |
18164 | @end table | |
18165 | @end deffn | |
18166 | ||
18167 | @subsubheading NGINX | |
18168 | ||
1d8d69c8 | 18169 | @deffn {Variable Scheme} nginx-service-type |
adfb167f JL |
18170 | Type de service pour le serveur web @uref{https://nginx.org/,NGinx}. La |
18171 | valeur de ce service est un enregistrement @code{<nginx-configuration>}. | |
bf5c74e7 | 18172 | |
adfb167f | 18173 | Un exemple de configuration simple est donné ci-dessous. |
bf5c74e7 JL |
18174 | |
18175 | @example | |
18176 | (service nginx-service-type | |
18177 | (nginx-configuration | |
18178 | (server-blocks | |
18179 | (list (nginx-server-configuration | |
18180 | (server-name '("www.example.com")) | |
18181 | (root "/srv/http/www.example.com")))))) | |
18182 | @end example | |
18183 | ||
adfb167f JL |
18184 | En plus d'ajouter des blocs de serveurs dans la configuration du service |
18185 | directement, ce service peut être étendu par d'autres services pour ajouter | |
18186 | des blocs de serveurs, comme dans cet exemple : | |
bf5c74e7 JL |
18187 | |
18188 | @example | |
18189 | (simple-service 'my-extra-server nginx-service-type | |
18190 | (list (nginx-server-configuration | |
18191 | (root "/srv/http/extra-website") | |
18192 | (try-files (list "$uri" "$uri/index.html"))))) | |
18193 | @end example | |
18194 | @end deffn | |
18195 | ||
adfb167f JL |
18196 | Au démarrage, @command{nginx} n'a pas encore lu son fichier de |
18197 | configuration, donc il utilise les fichiers par défaut pour les messages | |
18198 | d'erreur. S'il échoue à charger sa configuration, c'est là où les messages | |
18199 | seront enregistrés. Après la lecture du fichier de configuration, le | |
18200 | fichier de journal d'erreur par défaut change en fonction de celle-ci. Dans | |
15f1bff4 | 18201 | notre cas, les messages d'erreur au démarrage se trouvent dans |
adfb167f JL |
18202 | @file{/var/run/nginx/logs/error.log} et après la configuration dans |
18203 | @file{/var/log/nginx/error.log}. Ce second emplacement peut être modifié | |
18204 | avec l'option de configuration @var{log-directory}. | |
bf5c74e7 | 18205 | |
1d8d69c8 | 18206 | @deffn {Type de données} nginx-configuration |
adfb167f JL |
18207 | Ce type de données représente la configuration de NGinx. Certaines |
18208 | configurations peuvent se faire ici et d'autres fournissent des types | |
18209 | d'enregistrement ou éventuellement, on peut fournir un fichier de | |
18210 | configuration. | |
bf5c74e7 JL |
18211 | |
18212 | @table @asis | |
1d8d69c8 JL |
18213 | @item @code{nginx} (par défaut : @code{nginx}) |
18214 | Le paquet nginx à utiliser. | |
bf5c74e7 | 18215 | |
1d8d69c8 | 18216 | @item @code{log-directory} (par défaut : @code{"/var/log/nginx"}) |
adfb167f | 18217 | Le répertoire dans lequel NGinx écrira ses fichiers journaux. |
bf5c74e7 | 18218 | |
1d8d69c8 | 18219 | @item @code{run-directory} (par défaut : @code{"/var/run/nginx"}) |
adfb167f JL |
18220 | Le répertoire dans lequel NGinx créera un fichier de pid et écrira des |
18221 | fichiers temporaires. | |
bf5c74e7 | 18222 | |
1d8d69c8 | 18223 | @item @code{server-blocks} (par défaut : @code{'()}) |
adfb167f JL |
18224 | Une liste de @dfn{blocs serveur} à créer dans le fichier de configuration |
18225 | généré, dont les éléments sont de type @code{<nginx-server-configuration>}. | |
bf5c74e7 | 18226 | |
adfb167f JL |
18227 | L'exemple suivant paramètre NGinx pour servir @code{www.example.com} depuis |
18228 | le répertoire @code{/srv/http/www.example.com} sans utiliser HTTPS. | |
bf5c74e7 JL |
18229 | @example |
18230 | (service nginx-service-type | |
18231 | (nginx-configuration | |
18232 | (server-blocks | |
18233 | (list (nginx-server-configuration | |
18234 | (server-name '("www.example.com")) | |
18235 | (root "/srv/http/www.example.com")))))) | |
18236 | @end example | |
18237 | ||
1d8d69c8 | 18238 | @item @code{upstream-blocks} (par défaut : @code{'()}) |
adfb167f JL |
18239 | Une liste de @dfn{blocs amont} à créer dans le fichier de configuration |
18240 | généré, dont les éléments sont de type | |
18241 | @code{<nginx-upstream-configuration>}. | |
bf5c74e7 | 18242 | |
adfb167f JL |
18243 | Configurer les serveurs amont à travers les @code{upstream-blocks} peut être |
18244 | utile en combinaison avec @code{locations} dans les enregistrements | |
18245 | @code{<nginx-server-configuration>}. L'exemple suivant crée une | |
18246 | configuration de serveur avec une configuration « location » qui sera | |
18247 | mandataire pour une configuration amont, qui gérera les requêtes avec deux | |
18248 | serveurs. | |
bf5c74e7 JL |
18249 | |
18250 | @example | |
18251 | (service | |
18252 | nginx-service-type | |
18253 | (nginx-configuration | |
18254 | (server-blocks | |
18255 | (list (nginx-server-configuration | |
18256 | (server-name '("www.example.com")) | |
18257 | (root "/srv/http/www.example.com") | |
18258 | (locations | |
18259 | (list | |
18260 | (nginx-location-configuration | |
18261 | (uri "/path1") | |
18262 | (body '("proxy_pass http://server-proxy;")))))))) | |
18263 | (upstream-blocks | |
18264 | (list (nginx-upstream-configuration | |
18265 | (name "server-proxy") | |
18266 | (servers (list "server1.example.com" | |
18267 | "server2.example.com"))))))) | |
18268 | @end example | |
18269 | ||
1d8d69c8 | 18270 | @item @code{file} (par défaut : @code{#f}) |
adfb167f JL |
18271 | Si un fichier de configuration @var{file} est fourni, il sera utilisé au |
18272 | lieu de générer un fichier de configuration à partir des | |
18273 | @code{log-directory}, @code{run-directory}, @code{server-blocks} et | |
18274 | @code{upstream-blocks} fournis. Pour un bon fonctionnement, ces arguments | |
18275 | devraient correspondre à ce qui se trouve dans @var{file} pour s'assurer que | |
18276 | les répertoires sont créé lorsque le service est activé. | |
bf5c74e7 | 18277 | |
adfb167f JL |
18278 | Cela peut être utile si vous avez déjà un fichier de configuration existant |
18279 | ou s'il n'est pas possible de faire ce dont vous avez besoin avec les autres | |
18280 | parties de l'enregistrement nginx-configuration. | |
bf5c74e7 | 18281 | |
1d8d69c8 | 18282 | @item @code{server-names-hash-bucket-size} (par défaut : @code{#f}) |
adfb167f JL |
18283 | Taille du seau pour les tables de hashage des noms de serveurs, par dauft |
18284 | @code{#f} pour utilise la taille des lignes de cache du processeur. | |
bf5c74e7 | 18285 | |
1d8d69c8 | 18286 | @item @code{server-names-hash-bucket-max-size} (par défaut : @code{#f}) |
adfb167f | 18287 | Taille maximum des seaux pour les tables de hashage des serveurs de noms. |
bf5c74e7 | 18288 | |
2cf2c778 | 18289 | @item @code{extra-content} (par défaut : @code{""}) |
adfb167f JL |
18290 | Contenu supplémentaire du bloc @code{http}. Cela devrait être une chaîne ou |
18291 | un G-expression. | |
2cf2c778 | 18292 | |
bf5c74e7 JL |
18293 | @end table |
18294 | @end deffn | |
18295 | ||
1d8d69c8 | 18296 | @deftp {Type de données} nginx-server-configuration |
adfb167f JL |
18297 | Type de données représentant la configuration d'un bloc serveur de nginx. |
18298 | Ce type a les paramètres suivants : | |
bf5c74e7 JL |
18299 | |
18300 | @table @asis | |
1d8d69c8 | 18301 | @item @code{listen} (par défaut : @code{'("80" "443 ssl")}) |
adfb167f JL |
18302 | Chaque directive @code{listen} indique l'adresse et le port pour le |
18303 | protocole IP ou le chemin d'un socket UNIX-domain sur lequel le serveur | |
18304 | acceptera les connexions. On peut spécifier l'adresse et le port, ou juste | |
18305 | l'adresse ou juste le port. Une adresse peut aussi être un nom d'hôte, par | |
18306 | exemple : | |
bf5c74e7 JL |
18307 | |
18308 | @example | |
18309 | '("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000") | |
18310 | @end example | |
18311 | ||
1d8d69c8 | 18312 | @item @code{server-name} (par défaut : @code{(list 'default)}) |
adfb167f JL |
18313 | Une liste de noms de serveurs que ce serveur représente. @code{'default} |
18314 | représente le serveur par défaut pour les connexions qui ne correspondent à | |
18315 | aucun autre serveur. | |
bf5c74e7 | 18316 | |
1d8d69c8 | 18317 | @item @code{root} (par défaut : @code{"/srv/http"}) |
adfb167f | 18318 | Racine du site web que sert nginx. |
bf5c74e7 | 18319 | |
1d8d69c8 | 18320 | @item @code{locations} (par défaut : @code{'()}) |
adfb167f JL |
18321 | Une liste d'enregistrements @dfn{nginx-location-configuration} ou |
18322 | @dfn{nginx-named-location-configuration} à utiliser dans ce bloc serveur. | |
bf5c74e7 | 18323 | |
1d8d69c8 | 18324 | @item @code{index} (par défaut : @code{(list "index.html")}) |
adfb167f JL |
18325 | Fichiers d'index à chercher lorsque les clients demandent un répertoire. |
18326 | S'il ne peut pas être trouvé, Nginx enverra la liste des fichiers dans le | |
18327 | répertoire. | |
bf5c74e7 | 18328 | |
1d8d69c8 | 18329 | @item @code{try-files} (par défaut : @code{'()}) |
adfb167f JL |
18330 | Une liste de fichiers dont l'existence doit être vérifiée dans l'ordre |
18331 | spécifié. @code{nginx} utilisera le premier fichier trouvé pour satisfaire | |
18332 | la requête. | |
bf5c74e7 | 18333 | |
1d8d69c8 | 18334 | @item @code{ssl-certificate} (par défaut : @code{#f}) |
adfb167f JL |
18335 | Où trouver les certificats pour les connexions sécurisées. Indiquez |
18336 | @code{#f} si vous n'avez pas de certificats et que vous ne voulez pas | |
18337 | utiliser HTTPS. | |
bf5c74e7 | 18338 | |
1d8d69c8 | 18339 | @item @code{ssl-certificate-key} (par défaut : @code{#f}) |
adfb167f JL |
18340 | Où trouver la clef privée pour les connexions sécurisées. Indiquez |
18341 | @code{#f} si vous n'avez pas de clef et que vous ne voulez pas utiliser | |
18342 | HTTPS. | |
bf5c74e7 | 18343 | |
1d8d69c8 | 18344 | @item @code{server-tokens?} (par défaut : @code{#f}) |
adfb167f | 18345 | Indique si le serveur devrait ajouter sa configuration dans les réponses. |
bf5c74e7 | 18346 | |
1d8d69c8 | 18347 | @item @code{raw-content} (par défaut : @code{'()}) |
adfb167f | 18348 | Une liste de lignes brutes à ajouter dans le bloc serveur. |
bf5c74e7 JL |
18349 | |
18350 | @end table | |
18351 | @end deftp | |
18352 | ||
1d8d69c8 | 18353 | @deftp {Type de données} nginx-upstream-configuration |
adfb167f JL |
18354 | Type de données représentant la configuration d'un bloc @code{upstream} |
18355 | nginx. Ce type a les paramètres suivants : | |
bf5c74e7 JL |
18356 | |
18357 | @table @asis | |
18358 | @item @code{name} | |
adfb167f | 18359 | Nome de ces groupe de serveurs. |
bf5c74e7 | 18360 | |
adfb167f | 18361 | @item @code{serveurs} |
bf5c74e7 | 18362 | Specify the addresses of the servers in the group. The address can be |
adfb167f JL |
18363 | specified as a IP address (e.g.@: @samp{127.0.0.1}), domain name (e.g.@: |
18364 | @samp{backend1.example.com}) or a path to a UNIX socket using the prefix | |
18365 | @samp{unix:}. For addresses using an IP address or domain name, the default | |
18366 | port is 80, and a different port can be specified explicitly. | |
bf5c74e7 JL |
18367 | |
18368 | @end table | |
18369 | @end deftp | |
18370 | ||
1d8d69c8 | 18371 | @deftp {Type de données} nginx-location-configuration |
adfb167f JL |
18372 | Type de données représentant la configuration d'un bloc @code{location} |
18373 | nginx. Ce type a les paramètres suivants : | |
bf5c74e7 JL |
18374 | |
18375 | @table @asis | |
18376 | @item @code{uri} | |
adfb167f | 18377 | URI qui correspond à ce bloc. |
bf5c74e7 JL |
18378 | |
18379 | @anchor{nginx-location-configuration body} | |
18380 | @item @code{body} | |
adfb167f | 18381 | Corps du block location, spécifié comme une liste de chaînes de caractères. |
15f1bff4 | 18382 | Cela peut contenir de nombreuses directives de configuration. Par exemple, |
adfb167f JL |
18383 | pour passer des requêtes à un groupe de serveurs amont définis dans un bloc |
18384 | @code{nginx-upstream-configuration}, la directive suivante peut être | |
18385 | spécifiée dans le corps : @samp{(list "proxy_pass http://upstream-name;")}. | |
bf5c74e7 JL |
18386 | |
18387 | @end table | |
18388 | @end deftp | |
18389 | ||
1d8d69c8 | 18390 | @deftp {Type de données} nginx-named-location-configuration |
adfb167f JL |
18391 | Type de données représentant la configuration d'un bloc location nginx |
18392 | nommé. Les blocs location nommés sont utilisé les redirections de requêtes | |
18393 | et pas pour le traitement des requêtes normales. Ce type a les paramètres | |
18394 | suivants : | |
bf5c74e7 JL |
18395 | |
18396 | @table @asis | |
18397 | @item @code{name} | |
adfb167f | 18398 | Nom pour identifier ce bloc location. |
bf5c74e7 JL |
18399 | |
18400 | @item @code{body} | |
adfb167f JL |
18401 | @xref{nginx-location-configuration body}, comme le corps d'un bloc location |
18402 | nommé peut être utilisé de la même manière que | |
18403 | @code{nginx-location-configuration body}. Une restriction est que le corps | |
18404 | d'un bloc location nommé ne peut pas contenir de bloc location. | |
bf5c74e7 JL |
18405 | |
18406 | @end table | |
18407 | @end deftp | |
18408 | ||
adfb167f JL |
18409 | @subsubheading Cache Varnish |
18410 | @cindex Varnish | |
18411 | Varnish est un serveur de cache rapide qui se trouve entre les applications | |
18412 | web et les utilisateurs. Il sert de serveur mandataire pour les requêtes | |
18413 | des clients et met les URL accédées en cache pour que plusieurs requêtes à | |
18414 | la même ressource ne crée qu'une requête au moteur. | |
18415 | ||
18416 | @defvr {Variable Scheme} varnish-service-type | |
18417 | Type de service pour le démon Varnish. | |
18418 | @end defvr | |
18419 | ||
18420 | @deftp {Type de données} varnish-configuration | |
18421 | Type de données représentant la configuration du service @code{varnish}. Ce | |
18422 | type a les paramètres suivants : | |
18423 | ||
18424 | @table @asis | |
18425 | @item @code{package} (par défaut : @code{varnish}) | |
18426 | Le paquet Varnish à utiliser. | |
18427 | ||
18428 | @item @code{name} (par défaut : @code{"default"}) | |
18429 | Un nom pour cet instance de Varnish. Varnish va créer un répertoire dans | |
18430 | @file{/var/varnish/} avec ce nom et gardera des fichiers temporaires à cet | |
18431 | endroit. Si le nom commence par une barre oblique, il est interprété comme | |
18432 | un nom de répertoire absolu. | |
18433 | ||
18434 | Pass the @code{-n} argument to other Varnish programs to connect to the | |
18435 | named instance, e.g.@: @command{varnishncsa -n default}. | |
18436 | ||
18437 | @item @code{backend} (par défaut : @code{"localhost:8080"}) | |
18438 | Le moteur à utiliser. Cette option n'a pas d'effet si @code{vcl} est vrai. | |
18439 | ||
18440 | @item @code{vcl} (par défaut : #f) | |
18441 | Le programme @dfn{VCL} (Varnish Configuration Language) à lancer. Si la | |
18442 | valeur est @code{#f}, Varnsh servira de mandataire pour @code{backend} avec | |
18443 | la configuration par défaut. Sinon, ce doit être un objet simili-fichier | |
18444 | avec une syntaxe VCL valide. | |
18445 | ||
18446 | @c Varnish does not support HTTPS, so keep this URL to avoid confusion. | |
18447 | Par exemple, pour créer un miroir de @url{http://www.gnu.org,www.gnu.org} | |
18448 | avec VCL vous pouvez faire quelque chose comme cela : | |
18449 | ||
18450 | @example | |
18451 | (define %gnu-mirror | |
18452 | (plain-file | |
18453 | "gnu.vcl" | |
18454 | "vcl 4.1; | |
18455 | backend gnu @{ .host = "www.gnu.org"; @}")) | |
18456 | ||
18457 | (operating-system | |
18458 | ... | |
18459 | (services (cons (service varnish-service-type | |
18460 | (varnish-configuration | |
18461 | (listen '(":80")) | |
18462 | (vcl %gnu-mirror))) | |
18463 | %base-services))) | |
18464 | @end example | |
18465 | ||
18466 | On peut inspecter la configuration d'une instance Varnish actuellement | |
18467 | lancée en utilisant le programme @command{varnishadm}. | |
18468 | ||
18469 | Consultez le @url{https://varnish-cache.org/docs/,guide utilisateur de | |
18470 | varnish} et le @url{https://book.varnish-software.com/4.0/,livre varnish} | |
18471 | pour une documentation complète sur Varnish et son langage de configuration. | |
18472 | ||
18473 | @item @code{listen} (par défaut : @code{'("localhost:80")}) | |
18474 | Liste des adresses sur lesquelles écoute Varnish. | |
18475 | ||
18476 | @item @code{storage} (par défaut : @code{'("malloc,128m")}) | |
18477 | Liste de moteurs de stockage qui seront disponibles en VCL. | |
18478 | ||
18479 | @item @code{parameters} (par défaut : @code{'()}) | |
18480 | Liste des paramètres à l'exécution de la forme @code{'(("parameter" | |
18481 | . "value"))}. | |
18482 | ||
18483 | @item @code{extra-options} (par défaut : @code{'()}) | |
18484 | Arguments supplémentaires à passer au processus @command{varnishd}. | |
18485 | ||
18486 | @end table | |
18487 | @end deftp | |
18488 | ||
18489 | @subsubheading FastCGI | |
bf5c74e7 JL |
18490 | @cindex fastcgi |
18491 | @cindex fcgiwrap | |
adfb167f | 18492 | FastCGI est une interface entre le frontal et le moteur d'un service web. |
15f1bff4 | 18493 | C'est un dispositif quelque peu désuet ; les nouveaux services devraient |
adfb167f JL |
18494 | généralement juste parler HTTP entre le frontal et le moteur. Cependant il |
18495 | y a un certain nombre de services de moteurs comme PHP ou l'accès aux dépôts | |
18496 | Git optimisé en HTTP qui utilisent FastCGI, donc nous le supportons dans | |
18497 | Guix. | |
18498 | ||
18499 | Pour utiliser FastCGI, vous configurez le serveur web frontal (p.@: ex.@: | |
18500 | nginx) pour envoyer un sous-ensemble de ses requêtes au moteur fastcgi, qui | |
18501 | écoute sur un socket UNIX ou TCP local. Il y a un programme @code{fcgiwrap} | |
18502 | intermédiaire qui se trouve entre le processus du moteur et le serveur web. | |
18503 | Le frontal indique quel moteur lancer, en passant cette information au | |
18504 | processus @code{fcgiwrap}. | |
bf5c74e7 | 18505 | |
1d8d69c8 | 18506 | @defvr {Variable Scheme} fcgiwrap-service-type |
adfb167f | 18507 | Un type de service pour le mandataire FastCGI @code{fcgiwrap}. |
bf5c74e7 JL |
18508 | @end defvr |
18509 | ||
1d8d69c8 | 18510 | @deftp {Type de données} fcgiwrap-configuration |
15f1bff4 JL |
18511 | Data type representing the configuration of the @code{fcgiwrap} service. |
18512 | This type has the following parameters: | |
bf5c74e7 | 18513 | @table @asis |
1d8d69c8 JL |
18514 | @item @code{package} (par défaut : @code{fcgiwrap}) |
18515 | Le paquet fcgiwrap à utiliser. | |
bf5c74e7 | 18516 | |
1d8d69c8 | 18517 | @item @code{socket} (par défaut : @code{tcp:127.0.0.1:9000}) |
adfb167f JL |
18518 | Le socket sur lequel le processus @code{fcgiwrap} écoute, en tant que chaîne |
18519 | de caractères. Les valeurs valides de @var{socket} sont | |
18520 | @code{unix:@var{/path/to/unix/socket}}, | |
18521 | @code{tcp:@var{dot.ted.qu.ad}:@var{port}} et | |
bf5c74e7 JL |
18522 | @code{tcp6:[@var{ipv6_addr}]:port}. |
18523 | ||
1d8d69c8 JL |
18524 | @item @code{user} (par défaut : @code{fcgiwrap}) |
18525 | @itemx @code{group} (par défaut : @code{fcgiwrap}) | |
adfb167f JL |
18526 | Les noms de l'utilisateur et du groupe, en tant que chaînes de caractères, |
18527 | sous lesquels lancer le processus @code{fcgiwrap}. Le service | |
18528 | @code{fastcgi} s'assurera que si l'utilisateur demande les noms | |
18529 | d'utilisateurs et de groupes @code{fcgiwrap} l'utilisateur et le groupe | |
18530 | correspondant seront présents sur le système. | |
18531 | ||
18532 | Il est possible de configurer un service web soutenu par FastCGI pour passer | |
18533 | les informations d'authentification HTTP depuis le frontal jusqu'au moteur, | |
18534 | et de permettre à @code{fcgiwrap} dans lancer le processus de moteur avec | |
18535 | l'utilisateur correspondant. Pour activer cette fonctionnalité sur le | |
18536 | moteur, lancez @code{fcgiwrap} en tant qu'utilisateur et groupe | |
18537 | @code{root}. Remarquez que cette fonctionnalité doit aussi être configurée | |
18538 | sur le frontal. | |
bf5c74e7 JL |
18539 | @end table |
18540 | @end deftp | |
18541 | ||
18542 | @cindex php-fpm | |
adfb167f JL |
18543 | PHP-FPM (FastCGI Process Manager) est une implémentation FastCGI de PHP |
18544 | alternative avec quelques fonctionnalités supplémentaires utiles pour les | |
18545 | sites de toutes tailles. | |
bf5c74e7 | 18546 | |
adfb167f | 18547 | Ces fonctionnalités comprennent : |
bf5c74e7 | 18548 | @itemize @bullet |
adfb167f JL |
18549 | @item La création de processus adaptative |
18550 | @item Des statistiques de base (comme le mod_status d'Apache) | |
18551 | @item La gestion des processus avancée avec arrêt et démarrage sans heurts | |
18552 | @item La possibilité de démarrer des processus de travail avec différents uid/gid/chroot/environnement | |
18553 | et différents php.ini (à la place de safe_mode) | |
18554 | @item L'enregistrement des journaux sur stdout et stderr | |
18555 | @item Le redémarrage d'urgence dans le cas de la destruction accidentelle du cache des opcodes | |
18556 | @item Le support des téléversements accélérés | |
18557 | @item Le support de « showlog » | |
18558 | @item Des améliorations à FastCGI, comme fastcgi_finish_request() - | |
18559 | une fonction spéciale pour terminer la requête et nettoyer toutes les | |
18560 | données tout en continuant à faire d'autres choses qui prennent du temps | |
18561 | (conversion vidéo, gestion des stats, etc…). | |
bf5c74e7 | 18562 | @end itemize |
adfb167f | 18563 | ...@: and much more. |
bf5c74e7 | 18564 | |
1d8d69c8 | 18565 | @defvr {Variable Scheme} php-fpm-service-type |
adfb167f | 18566 | Un type de service pour @code{php-fpm}. |
bf5c74e7 JL |
18567 | @end defvr |
18568 | ||
1d8d69c8 | 18569 | @deftp {Type de données} php-fpm-configuration |
adfb167f | 18570 | Type de données pour la configuration du service php-fpm. |
bf5c74e7 | 18571 | @table @asis |
1d8d69c8 JL |
18572 | @item @code{php} (par défaut : @code{php}) |
18573 | Le paquet php à utiliser. | |
18574 | @item @code{socket} (par défaut : @code{(string-append "/var/run/php" (version-major (package-version php)) "-fpm.sock")}) | |
15f1bff4 | 18575 | L'adresse sur laquelle accepter les requêtes FastCGI. Les syntaxes valides |
adfb167f | 18576 | sont : |
bf5c74e7 JL |
18577 | @table @asis |
18578 | @item @code{"ip.add.re.ss:port"} | |
adfb167f | 18579 | Écoute sur un socket TCP sur l'adresse spécifiée sur un port spécifié. |
bf5c74e7 | 18580 | @item @code{"port"} |
adfb167f | 18581 | Écoute sur un socket TCP sur toutes les adresse sur un port spécifique. |
bf5c74e7 | 18582 | @item @code{"/path/to/unix/socket"} |
adfb167f | 18583 | Écoute sur un socket unix. |
bf5c74e7 JL |
18584 | @end table |
18585 | ||
1d8d69c8 | 18586 | @item @code{user} (par défaut : @code{php-fpm}) |
adfb167f | 18587 | Utilisateur à qui appartiendra le processus de travail de php. |
1d8d69c8 | 18588 | @item @code{group} (par défaut : @code{php-fpm}) |
adfb167f | 18589 | Groupe du processus de travail. |
1d8d69c8 | 18590 | @item @code{socket-user} (par défaut : @code{php-fpm}) |
adfb167f | 18591 | Utilisateur qui peut parler au socket php-fpm. |
1d8d69c8 | 18592 | @item @code{socket-group} (par défaut : @code{php-fpm}) |
adfb167f | 18593 | Groupe qui peut parler au socket php-fpm. |
1d8d69c8 | 18594 | @item @code{pid-file} (par défaut : @code{(string-append "/var/run/php" (version-major (package-version php)) "-fpm.pid")}) |
adfb167f JL |
18595 | Le pid de php-fpm est écrit dans ce fichier une fois que le service a |
18596 | démarré. | |
1d8d69c8 | 18597 | @item @code{log-file} (par défaut : @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.log")}) |
adfb167f | 18598 | Fichier de journal pour le processus maître de php-fpm. |
1d8d69c8 | 18599 | @item @code{process-manager} (par défaut : @code{(php-fpm-dynamic-process-manager-configuration)}) |
adfb167f JL |
18600 | Configuration détaillée pour le gestionnaire de processus de php-fpm. Il |
18601 | doit s'agir soit de : | |
bf5c74e7 | 18602 | @table @asis |
adfb167f JL |
18603 | @item @code{<php-fpm-dynamic-process-manager-configuration>,} |
18604 | @item @code{<php-fpm-static-process-manager-configuration> ou} | |
bf5c74e7 JL |
18605 | @item @code{<php-fpm-on-demand-process-manager-configuration>} |
18606 | @end table | |
1d8d69c8 | 18607 | @item @code{display-errors} (par défaut : @code{#f}) |
adfb167f JL |
18608 | Détermine si les erreurs et les avertissements php doivent être envoyés aux |
18609 | clients et affichés dans leur navigateur. Cela est utile pour un | |
18610 | développement php local, mais un risque pour la sécurité pour les sites | |
18611 | publics, comme les messages d'erreur peuvent révéler des mots de passes et | |
18612 | des données personnelles. | |
15f1bff4 JL |
18613 | @item @code{timezone} (default @code{#f}) |
18614 | Specifies @code{php_admin_value[date.timezone]} parameter. | |
1d8d69c8 | 18615 | @item @code{workers-logfile} (par défaut : @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")}) |
adfb167f JL |
18616 | Ce fichier enregistrera la sortie @code{stderr} des processus de travail de |
18617 | php. On peut indiquer @code{#f} pour désactiver la journalisation. | |
1d8d69c8 | 18618 | @item @code{file} (par défaut : @code{#f}) |
adfb167f JL |
18619 | Une version alternative de la configuration complète. Vous pouvez utiliser |
18620 | la fonction @code{mixed-text-file} ou un chemin de fichier absolu. | |
bf5c74e7 JL |
18621 | @end table |
18622 | @end deftp | |
18623 | ||
adfb167f JL |
18624 | @deftp {Type de données} php-fpm-dynamic-process-manager-configuration |
18625 | Type de données pour le gestionnaire de processus @code{dynamic} de | |
18626 | php-fpm. Avec le gestionnaire de processus @code{dynamic}, des processus de | |
18627 | travail de secours sont gardés en fonction des limites configurées. | |
bf5c74e7 | 18628 | @table @asis |
1d8d69c8 | 18629 | @item @code{max-children} (par défaut : @code{5}) |
adfb167f | 18630 | Nombre maximum de processus de travail. |
1d8d69c8 | 18631 | @item @code{start-servers} (par défaut : @code{2}) |
adfb167f | 18632 | Nombre de processus de travail au démarrage. |
1d8d69c8 | 18633 | @item @code{min-spare-servers} (par défaut : @code{1}) |
adfb167f JL |
18634 | Nombre de processus de travail de secours minimum qui doivent rester à |
18635 | disposition. | |
1d8d69c8 | 18636 | @item @code{max-spare-servers} (par défaut : @code{3}) |
adfb167f JL |
18637 | Nombre maximum de processus de travail de secours qui peuvent rester à |
18638 | disposition. | |
bf5c74e7 JL |
18639 | @end table |
18640 | @end deftp | |
18641 | ||
adfb167f JL |
18642 | @deftp {Type de données} php-fpm-static-process-manager-configuration |
18643 | Type de données pour le gestionnaire de processus @code{static} de php-fpm. | |
18644 | Avec le gestionnaire de processus @code{static}, un nombre constant de | |
18645 | processus de travail est créé. | |
bf5c74e7 | 18646 | @table @asis |
1d8d69c8 | 18647 | @item @code{max-children} (par défaut : @code{5}) |
adfb167f | 18648 | Nombre maximum de processus de travail. |
bf5c74e7 JL |
18649 | @end table |
18650 | @end deftp | |
18651 | ||
adfb167f JL |
18652 | @deftp {Type de données} php-fpm-on-demand-process-manager-configuration |
18653 | Type de données pour le gestionnaire de processus @code{on-demand} de | |
18654 | php-fpm. Avec le gestionnaire de processus @code{on-demand}, les processus | |
18655 | de travail ne sont créés que lorsque les requêtes arrivent. | |
bf5c74e7 | 18656 | @table @asis |
1d8d69c8 | 18657 | @item @code{max-children} (par défaut : @code{5}) |
adfb167f | 18658 | Nombre maximum de processus de travail. |
1d8d69c8 | 18659 | @item @code{process-idle-timeout} (par défaut : @code{10}) |
adfb167f | 18660 | La durée en secondes après laquelle un processus sans requête sera tué. |
bf5c74e7 JL |
18661 | @end table |
18662 | @end deftp | |
18663 | ||
18664 | ||
1d8d69c8 | 18665 | @deffn {Procédure Scheme} nginx-php-fpm-location @ |
adfb167f JL |
18666 | [#:nginx-package nginx] @ |
18667 | [socket (string-append "/var/run/php" @ | |
18668 | (version-major (package-version php)) @ | |
18669 | "-fpm.sock")] | |
18670 | Une fonction d'aide pour ajouter rapidement php à un | |
18671 | @code{nginx-server-configuration}. | |
bf5c74e7 JL |
18672 | @end deffn |
18673 | ||
adfb167f | 18674 | Une configuration simple de services pour php ressemble à ceci : |
bf5c74e7 | 18675 | @example |
adfb167f | 18676 | (services (cons* (service dhcp-client-service-type) |
bf5c74e7 JL |
18677 | (service php-fpm-service-type) |
18678 | (service nginx-service-type | |
18679 | (nginx-server-configuration | |
18680 | (server-name '("example.com")) | |
18681 | (root "/srv/http/") | |
18682 | (locations | |
18683 | (list (nginx-php-location))) | |
15f1bff4 | 18684 | (listen '("80")) |
bf5c74e7 JL |
18685 | (ssl-certificate #f) |
18686 | (ssl-certificate-key #f))) | |
18687 | %base-services)) | |
18688 | @end example | |
18689 | ||
18690 | @cindex cat-avatar-generator | |
adfb167f JL |
18691 | Le générateur d'avatar de chat est un simple service pour démontrer |
18692 | l'utilisation de php-fpm dans @code{Nginx}. Il permet de générer des | |
18693 | avatars de chats à partir d'une graine, par exemple le hash de l'adresse de | |
18694 | courriel d'un utilisateur. | |
bf5c74e7 | 18695 | |
15f1bff4 | 18696 | @deffn {Scheme Procedure} cat-avatar-generator-service @ |
adfb167f JL |
18697 | [#:cache-dir "/var/cache/cat-avatar-generator"] @ |
18698 | [#:package cat-avatar-generator] @ | |
18699 | [#:configuration (nginx-server-configuration)] | |
18700 | Renvoie un nginx-server-configuration qui hérite de @code{configuration}. | |
18701 | Il étend la configuration nginx pour ajouter un bloc de serveur qui sert | |
18702 | @code{package}, une version de cat-avatar-generator. Pendant l'exécution, | |
18703 | cat-avatar-generator pourra utiliser @code{cache-dir} comme répertoire de | |
18704 | cache. | |
bf5c74e7 JL |
18705 | @end deffn |
18706 | ||
adfb167f | 18707 | Une configuration simple de cat-avatar-generator ressemble à ceci : |
bf5c74e7 JL |
18708 | @example |
18709 | (services (cons* (cat-avatar-generator-service | |
18710 | #:configuration | |
18711 | (nginx-server-configuration | |
18712 | (server-name '("example.com")))) | |
18713 | ... | |
18714 | %base-services)) | |
18715 | @end example | |
18716 | ||
3cacfa9e LC |
18717 | @subsubheading Hpcguix-web |
18718 | ||
18719 | @cindex hpcguix-web | |
adfb167f JL |
18720 | Le programme @uref{hpcguix-web, |
18721 | https://github.com/UMCUGenetics/hpcguix-web/} est une interface web | |
18722 | personnalisable pour naviguer dans les paquets Guix, initialement conçue | |
18723 | pour les utilisateurs des grappes de calcul de haute performance (HPC). | |
3cacfa9e | 18724 | |
2cf2c778 | 18725 | @defvr {Variable Scheme} hpcguix-web-service-type |
adfb167f | 18726 | Le type de service pour @code{hpcguix-web}. |
3cacfa9e LC |
18727 | @end defvr |
18728 | ||
1d8d69c8 | 18729 | @deftp {Type de données} hpcguix-web-configuration |
adfb167f | 18730 | Type de données pour la configuration du service hpcguix-web. |
3cacfa9e LC |
18731 | |
18732 | @table @asis | |
18733 | @item @code{specs} | |
adfb167f JL |
18734 | Une gexp (@pxref{G-Expressions}) spécifiant la configuration du service |
18735 | hpcguix-web. Les éléments principaux disponibles dans cette spec sont : | |
3cacfa9e LC |
18736 | |
18737 | @table @asis | |
2cf2c778 JL |
18738 | @item @code{title-prefix} (par défaut : @code{"hpcguix | "}) |
18739 | Le préfixe du titre des pages. | |
3cacfa9e | 18740 | |
2cf2c778 JL |
18741 | @item @code{guix-command} (par défaut : @code{"guix"}) |
18742 | La commande @command{guix} | |
3cacfa9e | 18743 | |
2cf2c778 JL |
18744 | @item @code{package-filter-proc} (par défaut : @code{(const #t)}) |
18745 | Une procédure qui spécifie comment filtrer les paquets qui seront affichés. | |
3cacfa9e | 18746 | |
1d8d69c8 | 18747 | @item @code{package-page-extension-proc} (par défaut : @code{(const '())}) |
adfb167f | 18748 | Paquet d'extensions pour @code{hpcguix-web}. |
3cacfa9e | 18749 | |
2cf2c778 | 18750 | @item @code{menu} (par défaut : @code{'()}) |
adfb167f JL |
18751 | Entrée supplémentaire dans la page @code{menu}. |
18752 | ||
18753 | @item @code{channels} (par défaut : @code{%default-channels}) | |
18754 | Liste des canaux depuis lesquels la liste des paquets est construite | |
18755 | (@pxref{Canaux}). | |
18756 | ||
18757 | @item @code{package-list-expiration} (par défaut : @code{(* 12 3600)}) | |
18758 | Le temps d'expiration, en secondes, après lequel la liste des paquets est | |
18759 | reconstruite depuis les dernières instance des canaux donnés. | |
3cacfa9e LC |
18760 | @end table |
18761 | ||
adfb167f | 18762 | Voir le dépôt hpcguix-web pour un |
3cacfa9e | 18763 | @uref{https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm, |
adfb167f | 18764 | exemple complet} |
3cacfa9e | 18765 | |
1d8d69c8 | 18766 | @item @code{package} (par défaut : @code{hpcguix-web}) |
2cf2c778 | 18767 | Le paquet hpcguix-web à utiliser. |
3cacfa9e LC |
18768 | @end table |
18769 | @end deftp | |
18770 | ||
adfb167f | 18771 | Une déclaration de service hpcguix-web typique ressemble à cela : |
3cacfa9e LC |
18772 | |
18773 | @example | |
18774 | (service hpcguix-web-service-type | |
18775 | (hpcguix-web-configuration | |
18776 | (specs | |
18777 | #~(define site-config | |
18778 | (hpcweb-configuration | |
18779 | (title-prefix "Guix-HPC - ") | |
18780 | (menu '(("/about" "ABOUT")))))))) | |
18781 | @end example | |
18782 | ||
adfb167f JL |
18783 | @quotation Remarque |
18784 | Le service hpcguix-web met régulièrement à jour la liste des paquets qu'il | |
18785 | publie en récupérant les canaux depuis Git. Pour cela, il doit accéder aux | |
18786 | certificats X.509 pour qu'il puisse authentifier les serveurs Git quand il | |
18787 | communique en HTTPS, et il suppose que @file{/etc/ssl/certs} contient ces | |
18788 | certificats. | |
18789 | ||
18790 | Ainsi, assurez-vous d'ajouter @code{nss-certs} ou un autre paquet de | |
18791 | certificats dans le champ @code{packages} de votre configuration. | |
18792 | @ref{Certificats X.509} pour plus d'informations sur les certificats X.509. | |
18793 | @end quotation | |
18794 | ||
3cacfa9e | 18795 | @node Services de certificats |
15f1bff4 | 18796 | @subsection Services de certificats |
bf5c74e7 JL |
18797 | |
18798 | @cindex Web | |
18799 | @cindex HTTP, HTTPS | |
18800 | @cindex Let's Encrypt | |
adfb167f JL |
18801 | @cindex certificats TLS |
18802 | Le module @code{(gnu services certbot)} fournit un service qui récupère | |
18803 | automatiquement un certificat TLS valide de l'autorité de certification | |
18804 | Let's Encrypt. Ces certificats peuvent ensuite être utilisés pour servir du | |
18805 | contenu de manière sécurisée sur HTTPS et d'autres protocoles basés sur TLS, | |
18806 | en sachant que le client sera capable de vérifier l'authenticité du serveur. | |
18807 | ||
18808 | @url{https://letsencrypt.org/, Let's Encrypt} fournit l'outil @code{certbot} | |
18809 | pour automatiser le processus de certification. Cet outil génère d'abord un | |
18810 | clef sur le serveur de manière sécurisée. Ensuite il demande à l'autorité | |
18811 | de certification Let's Encrypt de signer la clef. La CA vérifie que la | |
18812 | requête provient de l'hôte en question en utilisant un protocole de | |
18813 | défi-réponse, ce qui requiert que le serveur fournisse sa réponse par HTTP. | |
18814 | Si ce protocole se passe sans encombre, la CA signe la clef et on obtient un | |
18815 | certificat. Ce certificat est valide pour une durée limitée et donc, pour | |
18816 | continuer à fournir des services en TLS, le serveur doit régulièrement | |
18817 | demander à la CA de renouveler sa signature. | |
bf5c74e7 JL |
18818 | |
18819 | The certbot service automates this process: the initial key generation, the | |
18820 | initial certification request to the Let's Encrypt service, the web server | |
18821 | challenge/response integration, writing the certificate to disk, the | |
18822 | automated periodic renewals, and the deployment tasks associated with the | |
adfb167f JL |
18823 | renewal (e.g.@: reloading services, copying keys with different |
18824 | permissions). | |
bf5c74e7 | 18825 | |
adfb167f JL |
18826 | Certbot est lancé deux fois par jour, à une minute aléatoire dans l'heure. |
18827 | Il ne fera rien sauf si vos certificats doivent être renouvelés ou sont | |
18828 | révoqués, mais le lancer régulièrement permettra à vos services de rester en | |
18829 | ligne si Let's Encrypt décide de révoquer votre certificat. | |
bf5c74e7 | 18830 | |
adfb167f JL |
18831 | En utilisant ce service, vous acceptez le document « ACME Subscriber |
18832 | Agreement », qu'on peut trouver ici : | |
18833 | @url{https://acme-v01.api.letsencrypt.org/directory}. | |
bf5c74e7 | 18834 | |
1d8d69c8 | 18835 | @defvr {Variable Scheme} certbot-service-type |
adfb167f JL |
18836 | Un type de service pour le client Let's Encrypt @code{certbot}. Sa valeur |
18837 | doit être un enregistrement @code{certbot-configuration} comme dans cet | |
18838 | exemple : | |
bf5c74e7 JL |
18839 | |
18840 | @example | |
18841 | (define %nginx-deploy-hook | |
18842 | (program-file | |
18843 | "nginx-deploy-hook" | |
18844 | #~(let ((pid (call-with-input-file "/var/run/nginx/pid" read))) | |
18845 | (kill pid SIGHUP)))) | |
18846 | ||
18847 | (service certbot-service-type | |
18848 | (certbot-configuration | |
18849 | (email "foo@@example.net") | |
18850 | (certificates | |
18851 | (list | |
18852 | (certificate-configuration | |
18853 | (domains '("example.net" "www.example.net")) | |
18854 | (deploy-hook %nginx-deploy-hook)) | |
18855 | (certificate-configuration | |
18856 | (domains '("bar.example.net"))))))) | |
18857 | @end example | |
18858 | ||
adfb167f | 18859 | Voir plus bas pour des détails sur @code{certbot-configuration}. |
bf5c74e7 JL |
18860 | @end defvr |
18861 | ||
1d8d69c8 | 18862 | @deftp {Type de données} certbot-configuration |
adfb167f JL |
18863 | Type données représentant la configuration du service @code{certbot}. Ce |
18864 | type a les paramètres suivants : | |
bf5c74e7 JL |
18865 | |
18866 | @table @asis | |
1d8d69c8 JL |
18867 | @item @code{package} (par défaut : @code{certbot}) |
18868 | Le paquet certbot à utiliser. | |
bf5c74e7 | 18869 | |
1d8d69c8 | 18870 | @item @code{webroot} (par défaut : @code{/var/www}) |
adfb167f JL |
18871 | Le répertoire depuis lequel servir les fichiers du défi/réponse de Let's |
18872 | Encrypt. | |
bf5c74e7 | 18873 | |
1d8d69c8 | 18874 | @item @code{certificates} (par défaut : @code{()}) |
adfb167f JL |
18875 | Une liste de @code{certificates-configuration} pour lesquels générer des |
18876 | certificats et demander des signatures. Chaque certificat a un @code{name} | |
18877 | et plusieurs @code{domains}. | |
bf5c74e7 JL |
18878 | |
18879 | @item @code{email} | |
adfb167f JL |
18880 | Courriel obligatoire utilisé pour la création de compte, le contact en cas |
18881 | de problème et des notifications importantes sur le compte. | |
bf5c74e7 | 18882 | |
1d8d69c8 | 18883 | @item @code{rsa-key-size} (par défaut : @code{2048}) |
adfb167f | 18884 | Taille de la clef RSA. |
bf5c74e7 | 18885 | |
adfb167f | 18886 | @item @code{default-location} (par défaut : @i{voir plus bas}) |
15f1bff4 JL |
18887 | Le @code{nginx-location-configuration} par défaut. Comme @code{certbot} |
18888 | doit pouvoir servir les défis et les réponses, il doit être capable de | |
18889 | lancer un serveur web. Cela se fait en étendant le service web @code{nginx} | |
18890 | avec un @code{nginx-server-configuration} qui écoute sur les @var{domains} | |
18891 | sur le port 80 et qui a un @code{nginx-location-configuration} pour le | |
18892 | chemin @code{/.well-known/} utilisé par Let's Encrypt. @xref{Services web} | |
18893 | pour plus d'information sur les types de données de la configuration de | |
18894 | nginx. | |
bf5c74e7 | 18895 | |
adfb167f JL |
18896 | Les requêtes vers d'autres URL correspondra à @code{default-location}, qui, |
18897 | s'il est présent, sera ajout é à tous les @code{nginx-server-configuration}. | |
bf5c74e7 | 18898 | |
adfb167f JL |
18899 | Par défaut, le @code{default-location} sera une redirection de |
18900 | @code{http://@var{domain}/…} vers @code{https://@var{domain}/…}, en vous | |
18901 | laissant définir ce que vous voulez servir sur votre site en @code{https}. | |
bf5c74e7 | 18902 | |
adfb167f | 18903 | Passez @code{#f} pour ne pas utiliser de location par défaut. |
bf5c74e7 JL |
18904 | @end table |
18905 | @end deftp | |
18906 | ||
1d8d69c8 | 18907 | @deftp {Type de données} certificate-configuration |
adfb167f JL |
18908 | Type de données représentant la configuration d'un certificat. Ce type a |
18909 | les paramètres suivants : | |
bf5c74e7 JL |
18910 | |
18911 | @table @asis | |
adfb167f JL |
18912 | @item @code{name} (par défaut : @i{voir plus bas}) |
18913 | Ce nom est utilisé par Certbot pour ses tâches quotidiennes et dans les | |
18914 | chemins de fichiers ; il n'affecte pas le contenu des certificats | |
18915 | eux-mêmes. Pour voir les noms des certificats, lancez @code{certbot | |
18916 | certificates}. | |
bf5c74e7 | 18917 | |
adfb167f | 18918 | Sa valeur par défaut est le premier domaine spécifié. |
bf5c74e7 | 18919 | |
1d8d69c8 | 18920 | @item @code{domains} (par défaut : @code{()}) |
adfb167f JL |
18921 | Le premier domaine spécifié sera le CN du sujet du certificat, et tous les |
18922 | domaines seront les noms alternatifs du sujet dans le certificat. | |
bf5c74e7 | 18923 | |
1d8d69c8 | 18924 | @item @code{deploy-hook} (par défaut : @code{#f}) |
adfb167f JL |
18925 | Commande à lancer dans un shell une fois par certificat récupéré avec |
18926 | succès. Pour cette commande, la variable @code{$RENEWED_LINEAGE} pointera | |
18927 | sur le sous-répertoire live (par exemple, | |
18928 | @samp{"/etc/letsencrypt/live/example.com"}) contenant le nouveau certificat | |
18929 | et la clef ; la variable @code{$RENEWED_DOMAINS} contiendra les noms de | |
18930 | domaines séparés par des espaces (par exemple @samp{"example.com | |
18931 | www.example.com"}). | |
bf5c74e7 JL |
18932 | |
18933 | @end table | |
18934 | @end deftp | |
18935 | ||
adfb167f JL |
18936 | Pour chaque @code{certificate-configuration}, le certificat est sauvegardé |
18937 | dans @code{/etc/letsencrypt/live/@var{name}/fullchain.pem} et la clef est | |
18938 | sauvegardée dans @code{/etc/letsencrypt/live/@var{name}/privkey.pem}. | |
3cacfa9e | 18939 | @node Services DNS |
15f1bff4 | 18940 | @subsection Services DNS |
bf5c74e7 JL |
18941 | @cindex DNS (domain name system) |
18942 | @cindex domain name system (DNS) | |
18943 | ||
adfb167f JL |
18944 | Le module @code{(gnu services dns)} fournit des services liés au |
18945 | @dfn{système de noms de domaines} (DNS). Il fournit un service de serveur | |
18946 | pour héberger un serveur DNS @emph{faisant autorité} pour plusieurs zones, | |
18947 | en esclave ou en maître. Ce service utilise @uref{https://www.knot-dns.cz/, | |
18948 | Knot DNS}. Il fournit aussi un service de cache et de renvoie DNS pour le | |
18949 | LAN, qui utilise @uref{http://www.thekelleys.org.uk/dnsmasq/doc.html, | |
18950 | dnsmasq}. | |
3cacfa9e | 18951 | |
2cf2c778 | 18952 | @subsubheading Service Knot |
bf5c74e7 | 18953 | |
adfb167f JL |
18954 | Voici un exemple de configuration pour un serveur faisant autorité sur deux |
18955 | zone, un maître et un esclave : | |
bf5c74e7 JL |
18956 | |
18957 | @lisp | |
18958 | (define-zone-entries example.org.zone | |
18959 | ;; Name TTL Class Type Data | |
18960 | ("@@" "" "IN" "A" "127.0.0.1") | |
18961 | ("@@" "" "IN" "NS" "ns") | |
18962 | ("ns" "" "IN" "A" "127.0.0.1")) | |
18963 | ||
18964 | (define master-zone | |
18965 | (knot-zone-configuration | |
18966 | (domain "example.org") | |
18967 | (zone (zone-file | |
18968 | (origin "example.org") | |
18969 | (entries example.org.zone))))) | |
18970 | ||
18971 | (define slave-zone | |
18972 | (knot-zone-configuration | |
18973 | (domain "plop.org") | |
18974 | (dnssec-policy "default") | |
18975 | (master (list "plop-master")))) | |
18976 | ||
18977 | (define plop-master | |
18978 | (knot-remote-configuration | |
18979 | (id "plop-master") | |
18980 | (address (list "208.76.58.171")))) | |
18981 | ||
18982 | (operating-system | |
18983 | ;; ... | |
18984 | (services (cons* (service knot-service-type | |
18985 | (knot-configuration | |
18986 | (remotes (list plop-master)) | |
18987 | (zones (list master-zone slave-zone)))) | |
18988 | ;; ... | |
18989 | %base-services))) | |
18990 | @end lisp | |
18991 | ||
1d8d69c8 | 18992 | @deffn {Variable Scheme} knot-service-type |
adfb167f JL |
18993 | C'est le type pour le serveur DNS Knot. |
18994 | ||
18995 | Knot DNS est un serveur DNS faisant autorité, ce qui signifie qu'il peut | |
18996 | servir plusieurs zones, c'est-à-dire des noms de domaines que vous achetez à | |
18997 | un registrar. Ce serveur n'est pas un résolveur, ce qui signifie qu'il ne | |
18998 | peut pas résoudre les noms pour lesquels il ne fait pas autorité. Ce | |
18999 | serveur peut être configuré pour servir des zones comme un serveur maître ou | |
19000 | comme un serveur esclave, en fonction des zones. Les zones esclaves | |
19001 | récupèrent leurs données des maîtres, et seront servies comme faisant | |
19002 | autorité. Du point de vue d'un résolveur, il n'y a pas de différence entre | |
19003 | un maître et un esclave@footnote{NdT : Voir la conférence en Français de | |
19004 | Stéphane Bortzmeyer pour en apprendre plus sur le DNS : | |
19005 | @url{https://iletaitunefoisinternet.fr/dns-bortzmeyer/index.html}}. | |
19006 | ||
19007 | Les types de données suivants sont utilisés pour configurer le serveur DNS | |
19008 | Knot : | |
bf5c74e7 JL |
19009 | @end deffn |
19010 | ||
1d8d69c8 | 19011 | @deftp {Type de données} knot-key-configuration |
adfb167f | 19012 | Type de données représentant une clef. Ce type a les paramètres suivants : |
bf5c74e7 JL |
19013 | |
19014 | @table @asis | |
1d8d69c8 | 19015 | @item @code{id} (par défaut : @code{""}) |
adfb167f JL |
19016 | Un identifiant pour d'autres champs de configuration qui se réfèrent à cette |
19017 | clef. Les ID doivent être uniques et non vides. | |
bf5c74e7 | 19018 | |
1d8d69c8 | 19019 | @item @code{algorithm} (par défaut : @code{#f}) |
adfb167f | 19020 | L'algorithme à utiliser. Choisissez entre @code{#f}, @code{'hmac-md5}, |
bf5c74e7 | 19021 | @code{'hmac-sha1}, @code{'hmac-sha224}, @code{'hmac-sha256}, |
adfb167f | 19022 | @code{'hmac-sha384} et @code{'hmac-sha512}. |
bf5c74e7 | 19023 | |
1d8d69c8 | 19024 | @item @code{secret} (par défaut : @code{""}) |
adfb167f | 19025 | La clef secrète elle-même. |
bf5c74e7 JL |
19026 | |
19027 | @end table | |
19028 | @end deftp | |
19029 | ||
1d8d69c8 | 19030 | @deftp {Type de données} knot-acl-configuration |
adfb167f JL |
19031 | Type de données représentant une configuration de liste de contrôle d'accès |
19032 | (ACL). Ce type a les paramètres suivants : | |
bf5c74e7 JL |
19033 | |
19034 | @table @asis | |
1d8d69c8 | 19035 | @item @code{id} (par défaut : @code{""}) |
adfb167f JL |
19036 | Un identifiant pour d'autres champs de configuration qui se réfèrent à cette |
19037 | clef. Les ID doivent être uniques et non vides. | |
bf5c74e7 | 19038 | |
1d8d69c8 | 19039 | @item @code{address} (par défaut : @code{'()}) |
adfb167f JL |
19040 | Une liste ordonnée d'adresses IP, de sous-réseaux ou d'intervalles de |
19041 | réseaux représentés par des chaînes de caractères. La requête doit | |
19042 | correspondre à l'une d'entre elles. La valeur vide signifie que l'adresse | |
19043 | n'a pas besoin de correspondre. | |
bf5c74e7 | 19044 | |
1d8d69c8 | 19045 | @item @code{key} (par défaut : @code{'()}) |
adfb167f JL |
19046 | Une liste ordonnées de références à des clefs représentés par des chaînes. |
19047 | La chaîne doit correspondre à un ID définie dans un | |
19048 | @code{knot-key-configuration}. Aucune clef signifie qu'une clef n'est pas | |
19049 | nécessaire pour correspondre à l'ACL. | |
bf5c74e7 | 19050 | |
1d8d69c8 | 19051 | @item @code{action} (par défaut : @code{'()}) |
adfb167f JL |
19052 | Une liste ordonnée d'actions permises ou interdites par cet ACL. Les |
19053 | valeurs possibles sont une liste de zéro ou plus d'éléments entre | |
19054 | @code{'transfer}, @code{'notify} et @code{'update}. | |
bf5c74e7 | 19055 | |
1d8d69c8 | 19056 | @item @code{deny?} (par défaut : @code{#f}) |
adfb167f JL |
19057 | Lorsque la valeur est vraie, l'ACL définie des restrictions. Les actions |
19058 | listées sont interdites. Lorsque la valeur est fausse, les actions listées | |
19059 | sont autorisées. | |
bf5c74e7 JL |
19060 | |
19061 | @end table | |
19062 | @end deftp | |
19063 | ||
1d8d69c8 | 19064 | @deftp {Type de données} zone-entry |
adfb167f JL |
19065 | Type de données représentant une entrée dans un fichier de zone. Ce type a |
19066 | les paramètres suivants : | |
bf5c74e7 JL |
19067 | |
19068 | @table @asis | |
1d8d69c8 | 19069 | @item @code{name} (par défaut : @code{"@@"}) |
adfb167f JL |
19070 | Le nom de l'enregistrement. @code{"@@"} se réfère à l'origine de la zone. |
19071 | Les noms sont relatifs à l'origine de la zone. Par exemple, dans la zone | |
19072 | @code{example.org}, @code{"ns.example.org"} se réfère en fait à | |
19073 | @code{ns.example.org.example.org}. Les noms qui finissent par un point sont | |
19074 | absolus, ce qui signifie que @code{"ns.example.org."} se réfère bien à | |
19075 | @code{ns.example.org}. | |
bf5c74e7 | 19076 | |
1d8d69c8 | 19077 | @item @code{ttl} (par défaut : @code{""}) |
adfb167f JL |
19078 | La durée de vie (TTL) de cet enregistrement. S'il n'est pas indiqué, le TTL |
19079 | par défaut est utilisé. | |
bf5c74e7 | 19080 | |
1d8d69c8 | 19081 | @item @code{class} (par défaut : @code{"IN"}) |
adfb167f JL |
19082 | La classe de l'enregistrement. Knot ne supporte actuellement que |
19083 | @code{"IN"} et partiellement @code{"CH"}. | |
bf5c74e7 | 19084 | |
1d8d69c8 | 19085 | @item @code{type} (par défaut : @code{"A"}) |
adfb167f JL |
19086 | Le type d'enregistrement. Les types usuels sont A (une adresse IPv4), NS |
19087 | (serveur de nom) et MX (serveur de courriel). Bien d'autres types sont | |
19088 | définis. | |
bf5c74e7 | 19089 | |
1d8d69c8 | 19090 | @item @code{data} (par défaut : @code{""}) |
adfb167f JL |
19091 | Les données contenues dans l'enregistrement. Par exemple une adresse IP |
19092 | associée à un enregistrement A, ou un nom de domaine associé à un | |
19093 | enregistrement NS. Rappelez-vous que les noms de domaines sont relatifs à | |
19094 | l'origine à moins qu'ils ne finissent par un point. | |
bf5c74e7 JL |
19095 | |
19096 | @end table | |
19097 | @end deftp | |
19098 | ||
1d8d69c8 | 19099 | @deftp {Type de données} zone-file |
adfb167f JL |
19100 | Type données représentant le contenu d'un fichier de zone. Ce type a les |
19101 | paramètres suivants : | |
bf5c74e7 JL |
19102 | |
19103 | @table @asis | |
1d8d69c8 | 19104 | @item @code{entries} (par défaut : @code{'()}) |
adfb167f JL |
19105 | La liste des entrées. On s'occupe de l'enregistrement SOA, donc vous n'avez |
19106 | pas besoin de l'ajouter dans la liste des entrées. Cette liste devrait | |
19107 | contenir une entrée pour votre serveur DNS primaire faisant autorité. En | |
19108 | plus d'utiliser une liste des entrées directement, vous pouvez utiliser | |
19109 | @code{define-zone-entries} pour définir un objet contenant la liste des | |
19110 | entrées plus facilement, que vous pouvez ensuite passer au champ | |
19111 | @code{entries} de @code{zone-file}. | |
bf5c74e7 | 19112 | |
1d8d69c8 | 19113 | @item @code{origin} (par défaut : @code{""}) |
adfb167f | 19114 | Le nom de votre zone. Ce paramètre ne peut pas être vide. |
bf5c74e7 | 19115 | |
1d8d69c8 | 19116 | @item @code{ns} (par défaut : @code{"ns"}) |
adfb167f JL |
19117 | Le domaine de votre serveur DNS primaire faisant autorité. Le nom est |
19118 | relatif à l'origine, à moins qu'il finisse par un point. Il est nécessaire | |
19119 | que ce serveur DNS primaire corresponde à un enregistrement NS dans la zone | |
19120 | et qu'il soit associé à une adresse IP dans la liste des entrées. | |
bf5c74e7 | 19121 | |
1d8d69c8 | 19122 | @item @code{mail} (par défaut : @code{"hostmaster"}) |
adfb167f JL |
19123 | Une adresse de courriel pour vous contacter en tant que propriétaire de la |
19124 | zone. Cela se transforme en @code{<mail>@@<origin>}. | |
bf5c74e7 | 19125 | |
1d8d69c8 | 19126 | @item @code{serial} (par défaut : @code{1}) |
adfb167f JL |
19127 | Le numéro de série de la zone. Comme c'est utilisé pour vérifier les |
19128 | changements à la fois par les esclaves et par les résolveurs, il est | |
19129 | nécessaire qu'il ne décroisse @emph{jamais}. Incrémentez-le toujours quand | |
19130 | vous faites un changement sur votre zone. | |
bf5c74e7 | 19131 | |
1d8d69c8 | 19132 | @item @code{refresh} (par défaut : @code{(* 2 24 3600)}) |
adfb167f JL |
19133 | La fréquence à laquelle les esclaves demanderont un transfert de zone. |
19134 | Cette valeur est un nombre de secondes. On peut le calculer avec des | |
19135 | multiplications ou avec @code{(string->duration)}. | |
bf5c74e7 | 19136 | |
1d8d69c8 | 19137 | @item @code{retry} (par défaut : @code{(* 15 60)}) |
adfb167f JL |
19138 | La période après laquelle un esclave essaiera de contacter son maître |
19139 | lorsqu'il échoue à le faire la première fois. | |
bf5c74e7 | 19140 | |
1d8d69c8 | 19141 | @item @code{expiry} (par défaut : @code{(* 14 24 3600)}) |
adfb167f JL |
19142 | TTL par défaut des enregistrements. Les enregistrements existants sont |
19143 | considérés corrects pour au moins cette durée. Après cette période, les | |
19144 | résolveurs invalideront leur cache et vérifieront de nouveau qu'ils existent | |
19145 | toujours. | |
bf5c74e7 | 19146 | |
1d8d69c8 | 19147 | @item @code{nx} (par défaut : @code{3600}) |
adfb167f JL |
19148 | TTL par défaut des enregistrement inexistants. Ce TTL est habituellement |
19149 | court parce que vous voulez que vous nouveaux domaines soient disponibles | |
19150 | pour tout le monde le plus rapidement possible. | |
bf5c74e7 JL |
19151 | |
19152 | @end table | |
19153 | @end deftp | |
19154 | ||
1d8d69c8 | 19155 | @deftp {Type de données} knot-remote-configuration |
adfb167f JL |
19156 | Type de données représentant une configuration de serveurs distants. Ce |
19157 | type a les paramètres suivants : | |
bf5c74e7 JL |
19158 | |
19159 | @table @asis | |
1d8d69c8 | 19160 | @item @code{id} (par défaut : @code{""}) |
adfb167f JL |
19161 | Un identifiant pour que les autres champs de configuration se réfèrent à ce |
19162 | serveur distant. les ID doivent être uniques et non vides. | |
bf5c74e7 | 19163 | |
1d8d69c8 | 19164 | @item @code{address} (par défaut : @code{'()}) |
adfb167f JL |
19165 | Une liste ordonnée d'adresses IP de destination. Ces adresses sont essayées |
19166 | en séquence. Un port facultatif peut être donné avec le séparateur @@. Par | |
19167 | exemple @code{(list "1.2.3.4" "2.3.4.5@@53")}. Le port par défaut est le | |
19168 | 53. | |
bf5c74e7 | 19169 | |
1d8d69c8 | 19170 | @item @code{via} (par défaut : @code{'()}) |
adfb167f JL |
19171 | Une liste ordonnée d'adresses IP sources. Une liste vide fera choisir une |
19172 | IP source appropriée à Knot. Un port facultatif peut être donné avec le | |
19173 | séparateur @@. La valeur par défaut est de choisir aléatoirement. | |
bf5c74e7 | 19174 | |
1d8d69c8 | 19175 | @item @code{key} (par défaut : @code{#f}) |
adfb167f JL |
19176 | Une référence à une clef, c'est-à-dire une chaîne contenant l'identifiant |
19177 | d'une clef définie dans un champ @code{knot-key-configuration}. | |
bf5c74e7 JL |
19178 | |
19179 | @end table | |
19180 | @end deftp | |
19181 | ||
1d8d69c8 | 19182 | @deftp {Type de données} knot-keystore-configuration |
adfb167f JL |
19183 | Type de données représentant une base de clefs pour garder les clefs |
19184 | dnssec. Ce type a les paramètres suivants : | |
bf5c74e7 JL |
19185 | |
19186 | @table @asis | |
1d8d69c8 | 19187 | @item @code{id} (par défaut : @code{""}) |
adfb167f | 19188 | L'id de cette base de clefs. Il ne doit pas être vide. |
bf5c74e7 | 19189 | |
1d8d69c8 | 19190 | @item @code{backend} (par défaut : @code{'pem}) |
adfb167f JL |
19191 | Le moteur de stockage des clefs. Cela peut être @code{'pem} ou |
19192 | @code{'pkcs11}. | |
bf5c74e7 | 19193 | |
1d8d69c8 | 19194 | @item @code{config} (par défaut : @code{"/var/lib/knot/keys/keys"}) |
adfb167f | 19195 | La chaîne de configuration pour le moteur. Voici un exemple pour PKCS#11 : |
bf5c74e7 | 19196 | @code{"pkcs11:token=knot;pin-value=1234 |
adfb167f JL |
19197 | /gnu/store/.../lib/pkcs11/libsofthsm2.so"}. Pour le moteur pem, la chaîne |
19198 | représente un chemin dans le système de fichiers. | |
bf5c74e7 JL |
19199 | |
19200 | @end table | |
19201 | @end deftp | |
19202 | ||
1d8d69c8 | 19203 | @deftp {Type de données} knot-policy-configuration |
adfb167f JL |
19204 | Type de données représentant une politique dnssec. Knot DNS est capable de |
19205 | signer automatiquement vos zones. Il peut soit générer et gérer vos clefs | |
19206 | automatiquement ou utiliser des clefs que vous générez. | |
19207 | ||
19208 | Dnssec est habituellement implémenté avec deux clefs : une KSK (key signing | |
19209 | key) qui est utilisé pour signer une seconde, la ZSK (zone signing key) qui | |
19210 | est utilisée pour signer la zone. Pour pouvoir être de confiance, la KSK | |
19211 | doit être présente dans la zone parente (normalement un domaine de haut | |
19212 | niveau). Si votre registrar supporte dnssec, vous devrez leur envoyer le | |
19213 | hash de votre KSK pour qu'il puisse ajouter un enregistrement DS dans la | |
19214 | zone parente. Ce n'est pas automatique et vous devrez le faire à chaque | |
19215 | fois que vous changerez votre KSK. | |
19216 | ||
19217 | La politique définie aussi la durée de vie des clefs. Habituellement, la | |
19218 | ZSK peut être changée facilement et utilise des fonctions cryptographiques | |
19219 | plus faibles (avec un paramètre plus faible) pour signer les enregistrements | |
19220 | rapidement, donc elles sont changées très régulièrement. La KSK en revanche | |
19221 | requiert une interaction manuelle avec le registrar, donc elle change moins | |
19222 | souvent et utilise des paramètres plus robustes puisqu'elle ne signe qu'un | |
19223 | seul enregistrement. | |
19224 | ||
19225 | Ce type a les paramètres suivants : | |
bf5c74e7 JL |
19226 | |
19227 | @table @asis | |
1d8d69c8 | 19228 | @item @code{id} (par défaut : @code{""}) |
adfb167f | 19229 | L'id de la politique. Il ne doit pas être vide. |
bf5c74e7 | 19230 | |
1d8d69c8 | 19231 | @item @code{keystore} (par défaut : @code{"default"}) |
adfb167f JL |
19232 | Une référence à une base de clefs, c'est-à-dire une chaîne contenant |
19233 | l'identifiant d'une base de clefs définie dans un champ | |
19234 | @code{knot-keystore-configuration}. L'identifiant @code{"default"} signifie | |
19235 | la base par défaut (une base de données kasp initialisée par ce service). | |
bf5c74e7 | 19236 | |
1d8d69c8 | 19237 | @item @code{manual?} (par défaut : @code{#f}) |
adfb167f | 19238 | Indique si la clef est gérée manuellement ou automatiquement. |
bf5c74e7 | 19239 | |
1d8d69c8 | 19240 | @item @code{single-type-signing?} (par défaut : @code{#f}) |
adfb167f | 19241 | Lorsque la valeur est @code{#t}, utilise le schéma de signature Single-Type |
bf5c74e7 | 19242 | |
1d8d69c8 | 19243 | @item @code{algorithm} (par défaut : @code{"ecdsap256sha256"}) |
adfb167f | 19244 | Un algorithme de clef de signature et de signatures. |
bf5c74e7 | 19245 | |
1d8d69c8 | 19246 | @item @code{ksk-size} (par défaut : @code{256}) |
adfb167f JL |
19247 | La longueur de la KSK. Remarquez que cette valeur est correcte pour |
19248 | l'algorithme par défaut, mais ne serait pas sécurisée pour d'autres | |
19249 | algorithmes. | |
bf5c74e7 | 19250 | |
1d8d69c8 | 19251 | @item @code{zsk-size} (par défaut : @code{256}) |
adfb167f JL |
19252 | La longueur de la ZSK. Remarquez que cette valeur est correcte pour |
19253 | l'algorithme par défaut, mais ne serait pas sécurisée pour d'autres | |
19254 | algorithmes. | |
bf5c74e7 | 19255 | |
1d8d69c8 | 19256 | @item @code{dnskey-ttl} (par défaut : @code{'default}) |
adfb167f JL |
19257 | La valeur du TTL pour les enregistrements DNSKEY ajoutés au sommet de la |
19258 | zone. La valeur spéciale @code{'default} signifie la même valeur que le TTL | |
19259 | du SOA de la zone. | |
bf5c74e7 | 19260 | |
1d8d69c8 | 19261 | @item @code{zsk-lifetime} (par défaut : @code{(* 30 24 3600)}) |
adfb167f JL |
19262 | La période entre la publication d'une ZSK et l'initialisation d'un nouveau |
19263 | changement. | |
bf5c74e7 | 19264 | |
1d8d69c8 | 19265 | @item @code{propagation-delay} (par défaut : @code{(* 24 3600)}) |
adfb167f JL |
19266 | Un délai supplémentaire pour chaque étape du changement. Cette valeur |
19267 | devrait être assez grande pour couvrir le temps de propagation des données | |
19268 | entre le serveur primaire et tous les secondaires. | |
bf5c74e7 | 19269 | |
1d8d69c8 | 19270 | @item @code{rrsig-lifetime} (par défaut : @code{(* 14 24 3600)}) |
adfb167f | 19271 | Une période de validité des nouvelles signatures. |
bf5c74e7 | 19272 | |
1d8d69c8 | 19273 | @item @code{rrsig-refresh} (par défaut : @code{(* 7 24 3600)}) |
adfb167f JL |
19274 | Une période qui indique combien de temps avant l'expiration d'une signature |
19275 | elle sera rafraîchie. | |
bf5c74e7 | 19276 | |
1d8d69c8 | 19277 | @item @code{nsec3?} (par défaut : @code{#f}) |
adfb167f | 19278 | Lorsque la valeur est @code{#t}, on utilisera NSEC3 au lien de NSEC. |
bf5c74e7 | 19279 | |
1d8d69c8 | 19280 | @item @code{nsec3-iterations} (par défaut : @code{5}) |
adfb167f | 19281 | Le nombre de fois supplémentaires que le hash est effectué. |
bf5c74e7 | 19282 | |
1d8d69c8 | 19283 | @item @code{nsec3-salt-length} (par défaut : @code{8}) |
adfb167f JL |
19284 | La longueur du champ de sel en octets, ajouté au nom du propriétaire avant |
19285 | de hasher. | |
bf5c74e7 | 19286 | |
1d8d69c8 | 19287 | @item @code{nsec3-salt-lifetime} (par défaut : @code{(* 30 24 3600)}) |
adfb167f | 19288 | La période de validité des nouveaux champs sel. |
bf5c74e7 JL |
19289 | |
19290 | @end table | |
19291 | @end deftp | |
19292 | ||
1d8d69c8 | 19293 | @deftp {Type de données} knot-zone-configuration |
adfb167f JL |
19294 | Type de données représentant la zone servie par Knot. ce type a les |
19295 | paramètres suivants : | |
bf5c74e7 JL |
19296 | |
19297 | @table @asis | |
1d8d69c8 | 19298 | @item @code{domain} (par défaut : @code{""}) |
adfb167f | 19299 | Le domaine servi par cette configuration. Il ne doit pas être vide. |
bf5c74e7 | 19300 | |
1d8d69c8 | 19301 | @item @code{file} (par défaut : @code{""}) |
adfb167f JL |
19302 | Le fichier où la zone est sauvegardée. Ce paramètre est ignoré pour les |
19303 | zones maîtres. La valeur vide signifie l'emplacement par défaut qui dépend | |
19304 | du nom de domaine. | |
bf5c74e7 | 19305 | |
1d8d69c8 | 19306 | @item @code{zone} (par défaut : @code{(zone-file)}) |
adfb167f JL |
19307 | Le contenu du fichier de zone. Ce paramètre est ignoré par les zones |
19308 | esclaves. Il doit contenir un enregistrement zone-file. | |
bf5c74e7 | 19309 | |
1d8d69c8 | 19310 | @item @code{master} (par défaut : @code{'()}) |
adfb167f JL |
19311 | Une liste des serveurs distants maîtres. Lorsque la liste est vide, cette |
19312 | zone est un maître. Lorsque la valeur est indiquée, cette zone est un | |
19313 | esclave. C'est al liste des identifiants des serveurs distants. | |
bf5c74e7 | 19314 | |
1d8d69c8 | 19315 | @item @code{ddns-master} (par défaut : @code{#f}) |
adfb167f JL |
19316 | Le maître principal. Lorsque la valeur est vide, la valeur par défaut est |
19317 | le premier maître de la liste des maîtres. | |
bf5c74e7 | 19318 | |
1d8d69c8 | 19319 | @item @code{notify} (par défaut : @code{'()}) |
adfb167f | 19320 | Une liste d'identifiants de groupe de serveurs esclaves. |
bf5c74e7 | 19321 | |
1d8d69c8 | 19322 | @item @code{acl} (par défaut : @code{'()}) |
adfb167f | 19323 | Une liste d'identifiants d'ACL. |
bf5c74e7 | 19324 | |
1d8d69c8 | 19325 | @item @code{semantic-checks?} (par défaut : @code{#f}) |
adfb167f JL |
19326 | Lorsque la valeur est indiquée, cela ajoute plus de vérifications |
19327 | sémantiques à la zone. | |
bf5c74e7 | 19328 | |
1d8d69c8 | 19329 | @item @code{disable-any?} (par défaut : @code{#f}) |
adfb167f | 19330 | Lorsque la valeur est vraie, cela interdit les requêtes de type ANY. |
bf5c74e7 | 19331 | |
1d8d69c8 | 19332 | @item @code{zonefile-sync} (par défaut : @code{0}) |
adfb167f JL |
19333 | Le délai entre une modification en mémoire et sur le disque. 0 signifie une |
19334 | synchronisation immédiate. | |
bf5c74e7 | 19335 | |
1d8d69c8 | 19336 | @item @code{serial-policy} (par défaut : @code{'increment}) |
adfb167f | 19337 | Une politique entre @code{'increment} et @code{'unixtime}. |
bf5c74e7 JL |
19338 | |
19339 | @end table | |
19340 | @end deftp | |
19341 | ||
1d8d69c8 | 19342 | @deftp {Type de données} knot-configuration |
15f1bff4 | 19343 | Type de données représentant la configuration de Knot. Ce type a les |
adfb167f | 19344 | paramètres suivants : |
bf5c74e7 JL |
19345 | |
19346 | @table @asis | |
1d8d69c8 | 19347 | @item @code{knot} (par défaut : @code{knot}) |
adfb167f | 19348 | Le paquet Knot. |
bf5c74e7 | 19349 | |
1d8d69c8 | 19350 | @item @code{run-directory} (par défaut : @code{"/var/run/knot"}) |
adfb167f JL |
19351 | Le répertoire de travail. Ce répertoire sera utilisé pour le fichier pid et |
19352 | les sockets. | |
bf5c74e7 | 19353 | |
1d8d69c8 | 19354 | @item @code{listen-v4} (par défaut : @code{"0.0.0.0"}) |
adfb167f | 19355 | Une adresse IP sur laquelle écouter. |
bf5c74e7 | 19356 | |
1d8d69c8 | 19357 | @item @code{listen-v6} (par défaut : @code{"::"}) |
adfb167f | 19358 | Une adresse IP sur laquelle écouter. |
bf5c74e7 | 19359 | |
1d8d69c8 | 19360 | @item @code{listen-port} (par défaut : @code{53}) |
adfb167f | 19361 | Un port sur lequel écouter. |
bf5c74e7 | 19362 | |
1d8d69c8 | 19363 | @item @code{keys} (par défaut : @code{'()}) |
adfb167f | 19364 | La liste des knot-key-configuration utilisés par cette configuration. |
bf5c74e7 | 19365 | |
1d8d69c8 | 19366 | @item @code{acls} (par défaut : @code{'()}) |
adfb167f | 19367 | La liste des knot-acl-configuration utilisés par cette configuration. |
bf5c74e7 | 19368 | |
1d8d69c8 | 19369 | @item @code{remotes} (par défaut : @code{'()}) |
adfb167f | 19370 | La liste des knot-remote-configuration utilisés par cette configuration. |
bf5c74e7 | 19371 | |
1d8d69c8 | 19372 | @item @code{zones} (par défaut : @code{'()}) |
adfb167f | 19373 | La liste des knot-zone-configuration utilisés par cette configuration. |
bf5c74e7 JL |
19374 | |
19375 | @end table | |
19376 | @end deftp | |
19377 | ||
2cf2c778 | 19378 | @subsubheading Services Dnsmasq |
3cacfa9e | 19379 | |
2cf2c778 | 19380 | @deffn {Variable Scheme} dnsmasq-service-type |
adfb167f JL |
19381 | C'est le type du service dnsmasq, dont la valeur devrait être un objet |
19382 | @code{dnsmasq-configuration} comme dans cet exemple : | |
3cacfa9e LC |
19383 | |
19384 | @example | |
19385 | (service dnsmasq-service-type | |
19386 | (dnsmasq-configuration | |
19387 | (no-resolv? #t) | |
19388 | (servers '("192.168.1.1")))) | |
19389 | @end example | |
19390 | @end deffn | |
19391 | ||
1d8d69c8 | 19392 | @deftp {Type de données} dnsmasq-configuration |
2cf2c778 | 19393 | Type de données qui représente la configuration de dnsmasq. |
3cacfa9e LC |
19394 | |
19395 | @table @asis | |
1d8d69c8 | 19396 | @item @code{package} (par défaut : @var{dnsmasq}) |
adfb167f | 19397 | L'objet de paquet du serveur dnsmasq. |
3cacfa9e | 19398 | |
2cf2c778 | 19399 | @item @code{no-hosts?} (par défaut : @code{#f}) |
adfb167f | 19400 | Lorsque la valeur est vraie, ne pas lire les noms d'hôte dans /etc/hosts. |
3cacfa9e | 19401 | |
2cf2c778 | 19402 | @item @code{port} (par défaut : @code{53}) |
adfb167f JL |
19403 | Le port sur lequel écouter. Le mettre à zéro désactive complètement les |
19404 | réponses DNS, ce qui ne laisse que les fonctions DHCP et TFTP. | |
3cacfa9e | 19405 | |
2cf2c778 | 19406 | @item @code{local-service?} (par défaut : @code{#t}) |
adfb167f JL |
19407 | Accepte les requêtes DNS seulement des hôtes dont les adresses sont sur le |
19408 | sous-réseau local, c.-à-d.@: sur un sous-réseau pour lequel une interface | |
19409 | existe sur le serveur. | |
3cacfa9e | 19410 | |
2cf2c778 | 19411 | @item @code{listen-addresses} (par défaut : @code{'()}) |
adfb167f | 19412 | Écoute sur le adresses IP données. |
3cacfa9e | 19413 | |
2cf2c778 | 19414 | @item @code{resolv-file} (par défaut : @code{"/etc/resolv.conf"}) |
adfb167f | 19415 | Le fichier où lire l'adresse IP des serveurs de noms en amont. |
3cacfa9e | 19416 | |
2cf2c778 | 19417 | @item @code{no-resolv?} (par défaut : @code{#f}) |
adfb167f | 19418 | Lorsque la valeur est vraie, ne pas lire @var{resolv-file}. |
3cacfa9e | 19419 | |
1d8d69c8 | 19420 | @item @code{servers} (par défaut : @code{'()}) |
adfb167f | 19421 | Spécifiez l'adresse IP des serveurs en amont directement. |
3cacfa9e | 19422 | |
2cf2c778 | 19423 | @item @code{cache-size} (par défaut : @code{150}) |
adfb167f | 19424 | Indique la taille du cache de dnsmasq. Indiquer 0 désactive le cache. |
3cacfa9e | 19425 | |
2cf2c778 | 19426 | @item @code{negative-cache?} (par défaut : @code{#t}) |
adfb167f | 19427 | Lorsque la valeur est fausse, désactive le cache des réponses négatives. |
3cacfa9e LC |
19428 | |
19429 | @end table | |
19430 | @end deftp | |
bf5c74e7 | 19431 | |
adfb167f JL |
19432 | @subsubheading Service ddclient |
19433 | ||
19434 | @cindex ddclient | |
15f1bff4 | 19435 | Le service ddclient décrit plus bas lance le démon ddclient, qui prend en |
adfb167f JL |
19436 | charge la mise à jour automatique des entrées DNS pour les fournisseurs de |
19437 | service comme @uref{https://dyn.com/dns/, Dyn}. | |
19438 | ||
19439 | L'exemple suivant montre comment instantier le service avec sa configuration | |
19440 | par défaut : | |
19441 | ||
19442 | @example | |
19443 | (service ddclient-service-type) | |
19444 | @end example | |
19445 | ||
19446 | Remarquez que ddclient a besoin d'accéder à des identifiants stockés dans un | |
19447 | @dfn{fichier de secrets}, par défaut @file{/etc/ddclient/secrets} (voir | |
19448 | @code{secret-file} plus bas). On s'attend à ce que vous créiez ce fichier | |
19449 | manuellement, de manière externe à guix (vous @emph{pourriez} ajouter ce | |
19450 | fichier dans une partie de votre configuration, par exemple avec | |
19451 | @code{plain-file}, mais il serait lisible pour tout le monde via | |
19452 | @file{/gnu/store}). Vois les exemples dans le répertoire | |
19453 | @file{share/ddclient} du paquet @code{ddclient}. | |
19454 | ||
19455 | @c %start of fragment | |
19456 | ||
19457 | Les champs de @code{ddclient-configuration} disponibles sont : | |
19458 | ||
19459 | @deftypevr {paramètre de @code{ddclient-configuration}} package ddclient | |
19460 | Le paquet ddclient. | |
19461 | ||
19462 | @end deftypevr | |
19463 | ||
19464 | @deftypevr {paramètre de @code{ddclient-configuration}} integer daemon | |
19465 | La période après laquelle ddclient réessaiera de vérifier l'IP et le nom de | |
19466 | domaine. | |
19467 | ||
19468 | La valeur par défaut est @samp{300}. | |
19469 | ||
19470 | @end deftypevr | |
19471 | ||
19472 | @deftypevr {paramètre de @code{ddclient-configuration}} boolean syslog | |
19473 | Utiliser syslog pour la sortie. | |
19474 | ||
19475 | La valeur par défaut est @samp{#t}. | |
19476 | ||
19477 | @end deftypevr | |
19478 | ||
19479 | @deftypevr {paramètre de @code{ddclient-configuration}} string mail | |
19480 | Courriel de l'utilisateur. | |
19481 | ||
19482 | La valeur par défaut est @samp{"root"}. | |
19483 | ||
19484 | @end deftypevr | |
19485 | ||
19486 | @deftypevr {paramètre de @code{ddclient-configuration}} string mail-failure | |
19487 | Courriel de l'utilisateur pour les échecs. | |
19488 | ||
19489 | La valeur par défaut est @samp{"root"}. | |
19490 | ||
19491 | @end deftypevr | |
19492 | ||
19493 | @deftypevr {paramètre de @code{ddclient-configuration}} string pid | |
19494 | Le fichier de PID de ddclient. | |
19495 | ||
19496 | La valeur par défaut est @samp{"/var/run/ddclient/ddclient.pid"}. | |
19497 | ||
19498 | @end deftypevr | |
19499 | ||
19500 | @deftypevr {paramètre de @code{ddclient-configuration}} boolean ssl | |
19501 | Activer le support de SSL. | |
19502 | ||
19503 | La valeur par défaut est @samp{#t}. | |
19504 | ||
19505 | @end deftypevr | |
19506 | ||
19507 | @deftypevr {paramètre de @code{ddclient-configuration}} string user | |
19508 | Spécifie le nm d'utilisateur ou l'ID qui est utilisé pour lancer le | |
19509 | programme ddclient. | |
19510 | ||
19511 | La valeur par défaut est @samp{"ddclient"}. | |
19512 | ||
19513 | @end deftypevr | |
19514 | ||
19515 | @deftypevr {paramètre de @code{ddclient-configuration}} string group | |
19516 | Groupe de l'utilisateur qui lancera le programme ddclient. | |
19517 | ||
19518 | La valeur par défaut est @samp{"ddclient"}. | |
19519 | ||
19520 | @end deftypevr | |
19521 | ||
19522 | @deftypevr {paramètre de @code{ddclient-configuration}} string secret-file | |
19523 | Fichier de secrets qui sera ajouté au fichier @file{ddclient.conf}. Ce | |
19524 | fichier contient les paramètres d'authentification utilisés par ddclient. | |
19525 | On s'attend à ce que vous le créiez manuellement. | |
19526 | ||
19527 | La valeur par défaut est @samp{"/etc/ddclient/secrets.conf"}. | |
19528 | ||
19529 | @end deftypevr | |
19530 | ||
19531 | @deftypevr {paramètre de @code{ddclient-configuration}} list extra-options | |
19532 | Options supplémentaires qui seront ajoutées au fichier @file{ddclient.conf}. | |
19533 | ||
19534 | La valeur par défaut est @samp{()}. | |
19535 | ||
19536 | @end deftypevr | |
19537 | ||
19538 | ||
19539 | @c %end of fragment | |
19540 | ||
19541 | ||
3cacfa9e | 19542 | @node Services VPN |
15f1bff4 | 19543 | @subsection Services VPN |
adfb167f JL |
19544 | @cindex VPN (réseau privé virtuel) |
19545 | @cindex réseau privé virtuel (VPN) | |
bf5c74e7 | 19546 | |
adfb167f JL |
19547 | Le module @code{(gnu services vpn)} fournit des services liés aux |
19548 | @dfn{réseaux privés virtuels} (VPN). Il fournit un srevice @emph{client} | |
19549 | pour que votre machine se connecte à un VPN et un service @emph{serveur} | |
19550 | pour que votre machine héberge un VPN. Les deux services utilisent | |
19551 | @uref{https://openvpn.net/, OpenVPN}. | |
bf5c74e7 | 19552 | |
1d8d69c8 | 19553 | @deffn {Procédure Scheme} openvpn-client-service @ |
bf5c74e7 JL |
19554 | [#:config (openvpn-client-configuration)] |
19555 | ||
adfb167f JL |
19556 | Renvoie un service qui lance @command{openvpn}, un démon VPN, en tant que |
19557 | client. | |
bf5c74e7 JL |
19558 | @end deffn |
19559 | ||
1d8d69c8 | 19560 | @deffn {Procédure Scheme} openvpn-server-service @ |
bf5c74e7 JL |
19561 | [#:config (openvpn-server-configuration)] |
19562 | ||
adfb167f JL |
19563 | Renvoie un service qui lance @command{openvpn}, un démon VPN, en tant que |
19564 | serveur. | |
bf5c74e7 | 19565 | |
adfb167f | 19566 | Les deux services peuvent être lancés en même temps. |
bf5c74e7 JL |
19567 | @end deffn |
19568 | ||
19569 | @c %automatically generated documentation | |
19570 | ||
1d8d69c8 | 19571 | Les champs de @code{openvpn-client-configuration} disponibles sont : |
bf5c74e7 | 19572 | |
1d8d69c8 | 19573 | @deftypevr {paramètre de @code{openvpn-client-configuration}} package openvpn |
adfb167f | 19574 | Le paquet OpenVPN. |
bf5c74e7 JL |
19575 | |
19576 | @end deftypevr | |
19577 | ||
1d8d69c8 | 19578 | @deftypevr {paramètre de @code{openvpn-client-configuration}} string pid-file |
adfb167f | 19579 | Le fichier de PID d'OpenVPN. |
bf5c74e7 | 19580 | |
1d8d69c8 | 19581 | La valeur par défaut est @samp{"/var/run/openvpn/openvpn.pid"}. |
bf5c74e7 JL |
19582 | |
19583 | @end deftypevr | |
19584 | ||
1d8d69c8 | 19585 | @deftypevr {paramètre de @code{openvpn-client-configuration}} proto proto |
adfb167f JL |
19586 | Le protocole (UDP ou TCP) utilisé pour ouvrir un canal entre les clients et |
19587 | les serveurs. | |
bf5c74e7 | 19588 | |
1d8d69c8 | 19589 | La valeur par défaut est @samp{udp}. |
bf5c74e7 JL |
19590 | |
19591 | @end deftypevr | |
19592 | ||
1d8d69c8 | 19593 | @deftypevr {paramètre de @code{openvpn-client-configuration}} dev dev |
adfb167f | 19594 | Le périphérique utilisé pour représenter la connexion VPN. |
bf5c74e7 | 19595 | |
1d8d69c8 | 19596 | La valeur par défaut est @samp{tun}. |
bf5c74e7 JL |
19597 | |
19598 | @end deftypevr | |
19599 | ||
1d8d69c8 | 19600 | @deftypevr {paramètre de @code{openvpn-client-configuration}} string ca |
adfb167f | 19601 | L'autorité de certification qui sert à vérifier les connexions. |
bf5c74e7 | 19602 | |
1d8d69c8 | 19603 | La valeur par défaut est @samp{"/etc/openvpn/ca.crt"}. |
bf5c74e7 JL |
19604 | |
19605 | @end deftypevr | |
19606 | ||
1d8d69c8 | 19607 | @deftypevr {paramètre de @code{openvpn-client-configuration}} string cert |
adfb167f JL |
19608 | Le certificat de la machine sur laquelle tourne le démon. Il devrait être |
19609 | signé par l'autorité indiquée dans @code{ca}. | |
bf5c74e7 | 19610 | |
1d8d69c8 | 19611 | La valeur par défaut est @samp{"/etc/openvpn/client.crt"}. |
bf5c74e7 JL |
19612 | |
19613 | @end deftypevr | |
19614 | ||
1d8d69c8 | 19615 | @deftypevr {paramètre de @code{openvpn-client-configuration}} string key |
adfb167f JL |
19616 | La clef de la machine sur laquelle tourne le démon. Elle doit être la clef |
19617 | dont le certificat est donné dans @code{cert}. | |
bf5c74e7 | 19618 | |
1d8d69c8 | 19619 | La valeur par défaut est @samp{"/etc/openvpn/client.key"}. |
bf5c74e7 JL |
19620 | |
19621 | @end deftypevr | |
19622 | ||
1d8d69c8 | 19623 | @deftypevr {paramètre de @code{openvpn-client-configuration}} boolean comp-lzo? |
adfb167f | 19624 | Indique s'il faut utiliser l'algorithme de compression lzo. |
bf5c74e7 | 19625 | |
1d8d69c8 | 19626 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
19627 | |
19628 | @end deftypevr | |
19629 | ||
1d8d69c8 | 19630 | @deftypevr {paramètre de @code{openvpn-client-configuration}} boolean persist-key? |
adfb167f | 19631 | Ne pas relire les fichiers de clefs entre les SIGUSR1 et les --ping-restart. |
bf5c74e7 | 19632 | |
1d8d69c8 | 19633 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
19634 | |
19635 | @end deftypevr | |
19636 | ||
1d8d69c8 | 19637 | @deftypevr {paramètre de @code{openvpn-client-configuration}} boolean persist-tun? |
adfb167f JL |
19638 | Ne pas fermer et rouvrir les périphériques TUN/TAP ou lancer de scripts de |
19639 | démarrage/d'arrêt entre les SIGUSR1 et les --ping-restart. | |
bf5c74e7 | 19640 | |
1d8d69c8 | 19641 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
19642 | |
19643 | @end deftypevr | |
19644 | ||
1d8d69c8 | 19645 | @deftypevr {paramètre de @code{openvpn-client-configuration}} number verbosity |
adfb167f | 19646 | Niveau de verbosité. |
bf5c74e7 | 19647 | |
1d8d69c8 | 19648 | La valeur par défaut est @samp{3}. |
bf5c74e7 JL |
19649 | |
19650 | @end deftypevr | |
19651 | ||
1d8d69c8 | 19652 | @deftypevr {paramètre de @code{openvpn-client-configuration}} tls-auth-client tls-auth |
adfb167f JL |
19653 | Ajoute une couche d'authentification HMAC supplémentaire au dessus du canal |
19654 | de contrôle TLS pour se protéger contre les attaques DoS. | |
bf5c74e7 | 19655 | |
1d8d69c8 | 19656 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
19657 | |
19658 | @end deftypevr | |
19659 | ||
1d8d69c8 | 19660 | @deftypevr {paramètre de @code{openvpn-client-configuration}} key-usage verify-key-usage? |
adfb167f JL |
19661 | Indique s'il faut vérifier que le certificat du serveur a l'extension |
19662 | d'utilisation. | |
bf5c74e7 | 19663 | |
1d8d69c8 | 19664 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
19665 | |
19666 | @end deftypevr | |
19667 | ||
1d8d69c8 | 19668 | @deftypevr {paramètre de @code{openvpn-client-configuration}} bind bind? |
adfb167f | 19669 | Se lier à un port spécifique. |
bf5c74e7 | 19670 | |
1d8d69c8 | 19671 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
19672 | |
19673 | @end deftypevr | |
19674 | ||
1d8d69c8 | 19675 | @deftypevr {paramètre de @code{openvpn-client-configuration}} resolv-retry resolv-retry? |
adfb167f | 19676 | Réessayer de résoudre l'adresse du serveur. |
bf5c74e7 | 19677 | |
1d8d69c8 | 19678 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
19679 | |
19680 | @end deftypevr | |
19681 | ||
1d8d69c8 | 19682 | @deftypevr {paramètre de @code{openvpn-client-configuration}} openvpn-remote-list remote |
adfb167f | 19683 | Une liste de serveurs distants sur lesquels se connecter. |
bf5c74e7 | 19684 | |
1d8d69c8 | 19685 | La valeur par défaut est @samp{()}. |
bf5c74e7 | 19686 | |
1d8d69c8 | 19687 | Les champs de @code{openvpn-remote-configuration} disponibles sont : |
bf5c74e7 | 19688 | |
1d8d69c8 | 19689 | @deftypevr {paramètre de @code{openvpn-remote-configuration}} string name |
adfb167f | 19690 | Nom du serveur. |
bf5c74e7 | 19691 | |
1d8d69c8 | 19692 | La valeur par défaut est @samp{"my-server"}. |
bf5c74e7 JL |
19693 | |
19694 | @end deftypevr | |
19695 | ||
1d8d69c8 | 19696 | @deftypevr {paramètre de @code{openvpn-remote-configuration}} number port |
adfb167f | 19697 | Numéro de port sur lequel écoute le serveur. |
bf5c74e7 | 19698 | |
1d8d69c8 | 19699 | La valeur par défaut est @samp{1194}. |
bf5c74e7 JL |
19700 | |
19701 | @end deftypevr | |
19702 | ||
19703 | @end deftypevr | |
19704 | @c %end of automatic openvpn-client documentation | |
19705 | ||
19706 | @c %automatically generated documentation | |
19707 | ||
1d8d69c8 | 19708 | Les champs de @code{openvpn-server-configuration} disponibles sont : |
bf5c74e7 | 19709 | |
1d8d69c8 | 19710 | @deftypevr {paramètre de @code{openvpn-server-configuration}} package openvpn |
adfb167f | 19711 | Le paquet OpenVPN. |
bf5c74e7 JL |
19712 | |
19713 | @end deftypevr | |
19714 | ||
1d8d69c8 | 19715 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string pid-file |
adfb167f | 19716 | Le fichier de PID d'OpenVPN. |
bf5c74e7 | 19717 | |
1d8d69c8 | 19718 | La valeur par défaut est @samp{"/var/run/openvpn/openvpn.pid"}. |
bf5c74e7 JL |
19719 | |
19720 | @end deftypevr | |
19721 | ||
1d8d69c8 | 19722 | @deftypevr {paramètre de @code{openvpn-server-configuration}} proto proto |
adfb167f JL |
19723 | Le protocole (UDP ou TCP) utilisé pour ouvrir un canal entre les clients et |
19724 | les serveurs. | |
bf5c74e7 | 19725 | |
1d8d69c8 | 19726 | La valeur par défaut est @samp{udp}. |
bf5c74e7 JL |
19727 | |
19728 | @end deftypevr | |
19729 | ||
1d8d69c8 | 19730 | @deftypevr {paramètre de @code{openvpn-server-configuration}} dev dev |
adfb167f | 19731 | Le périphérique utilisé pour représenter la connexion VPN. |
bf5c74e7 | 19732 | |
1d8d69c8 | 19733 | La valeur par défaut est @samp{tun}. |
bf5c74e7 JL |
19734 | |
19735 | @end deftypevr | |
19736 | ||
1d8d69c8 | 19737 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string ca |
adfb167f | 19738 | L'autorité de certification qui sert à vérifier les connexions. |
bf5c74e7 | 19739 | |
1d8d69c8 | 19740 | La valeur par défaut est @samp{"/etc/openvpn/ca.crt"}. |
bf5c74e7 JL |
19741 | |
19742 | @end deftypevr | |
19743 | ||
1d8d69c8 | 19744 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string cert |
adfb167f JL |
19745 | Le certificat de la machine sur laquelle tourne le démon. Il devrait être |
19746 | signé par l'autorité indiquée dans @code{ca}. | |
bf5c74e7 | 19747 | |
1d8d69c8 | 19748 | La valeur par défaut est @samp{"/etc/openvpn/client.crt"}. |
bf5c74e7 JL |
19749 | |
19750 | @end deftypevr | |
19751 | ||
1d8d69c8 | 19752 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string key |
adfb167f JL |
19753 | La clef de la machine sur laquelle tourne le démon. Elle doit être la clef |
19754 | dont le certificat est donné dans @code{cert}. | |
bf5c74e7 | 19755 | |
1d8d69c8 | 19756 | La valeur par défaut est @samp{"/etc/openvpn/client.key"}. |
bf5c74e7 JL |
19757 | |
19758 | @end deftypevr | |
19759 | ||
1d8d69c8 | 19760 | @deftypevr {paramètre de @code{openvpn-server-configuration}} boolean comp-lzo? |
adfb167f | 19761 | Indique s'il faut utiliser l'algorithme de compression lzo. |
bf5c74e7 | 19762 | |
1d8d69c8 | 19763 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
19764 | |
19765 | @end deftypevr | |
19766 | ||
1d8d69c8 | 19767 | @deftypevr {paramètre de @code{openvpn-server-configuration}} boolean persist-key? |
adfb167f | 19768 | Ne pas relire les fichiers de clefs entre les SIGUSR1 et les --ping-restart. |
bf5c74e7 | 19769 | |
1d8d69c8 | 19770 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
19771 | |
19772 | @end deftypevr | |
19773 | ||
1d8d69c8 | 19774 | @deftypevr {paramètre de @code{openvpn-server-configuration}} boolean persist-tun? |
adfb167f JL |
19775 | Ne pas fermer et rouvrir les périphériques TUN/TAP ou lancer de scripts de |
19776 | démarrage/d'arrêt entre les SIGUSR1 et les --ping-restart. | |
bf5c74e7 | 19777 | |
1d8d69c8 | 19778 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
19779 | |
19780 | @end deftypevr | |
19781 | ||
1d8d69c8 | 19782 | @deftypevr {paramètre de @code{openvpn-server-configuration}} number verbosity |
adfb167f | 19783 | Niveau de verbosité. |
bf5c74e7 | 19784 | |
1d8d69c8 | 19785 | La valeur par défaut est @samp{3}. |
bf5c74e7 JL |
19786 | |
19787 | @end deftypevr | |
19788 | ||
1d8d69c8 | 19789 | @deftypevr {paramètre de @code{openvpn-server-configuration}} tls-auth-server tls-auth |
adfb167f JL |
19790 | Ajoute une couche d'authentification HMAC supplémentaire au dessus du canal |
19791 | de contrôle TLS pour se protéger contre les attaques DoS. | |
bf5c74e7 | 19792 | |
1d8d69c8 | 19793 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
19794 | |
19795 | @end deftypevr | |
19796 | ||
1d8d69c8 | 19797 | @deftypevr {paramètre de @code{openvpn-server-configuration}} number port |
adfb167f | 19798 | Spécifie le numéro de port sur lequel les serveurs écoutent. |
bf5c74e7 | 19799 | |
1d8d69c8 | 19800 | La valeur par défaut est @samp{1194}. |
bf5c74e7 JL |
19801 | |
19802 | @end deftypevr | |
19803 | ||
1d8d69c8 | 19804 | @deftypevr {paramètre de @code{openvpn-server-configuration}} ip-mask server |
adfb167f JL |
19805 | Une ip et un masque de sous-réseau spécifiant le sous-réseau dans le réseau |
19806 | virtuel. | |
bf5c74e7 | 19807 | |
1d8d69c8 | 19808 | La valeur par défaut est @samp{"10.8.0.0 255.255.255.0"}. |
bf5c74e7 JL |
19809 | |
19810 | @end deftypevr | |
19811 | ||
1d8d69c8 | 19812 | @deftypevr {paramètre de @code{openvpn-server-configuration}} cidr6 server-ipv6 |
adfb167f | 19813 | Une notation CIDR pour spécifier le sous-réseau IPv6 dans le réseau virtuel. |
bf5c74e7 | 19814 | |
1d8d69c8 | 19815 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
19816 | |
19817 | @end deftypevr | |
19818 | ||
1d8d69c8 | 19819 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string dh |
adfb167f | 19820 | Le fichier de paramètres Diffie-Hellman. |
bf5c74e7 | 19821 | |
1d8d69c8 | 19822 | La valeur par défaut est @samp{"/etc/openvpn/dh2048.pem"}. |
bf5c74e7 JL |
19823 | |
19824 | @end deftypevr | |
19825 | ||
1d8d69c8 | 19826 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string ifconfig-pool-persist |
adfb167f | 19827 | Le fichier qui enregistre les IP des clients. |
bf5c74e7 | 19828 | |
1d8d69c8 | 19829 | La valeur par défaut est @samp{"/etc/openvpn/ipp.txt"}. |
bf5c74e7 JL |
19830 | |
19831 | @end deftypevr | |
19832 | ||
1d8d69c8 | 19833 | @deftypevr {paramètre de @code{openvpn-server-configuration}} gateway redirect-gateway? |
adfb167f JL |
19834 | Lorsque la valeur est vraie, le serveur agira comme une passerelle pour ses |
19835 | clients. | |
bf5c74e7 | 19836 | |
1d8d69c8 | 19837 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
19838 | |
19839 | @end deftypevr | |
19840 | ||
1d8d69c8 | 19841 | @deftypevr {paramètre de @code{openvpn-server-configuration}} boolean client-to-client? |
adfb167f JL |
19842 | Lorsque la valeur est vraie, les clients sont autorisés à se parler entre |
19843 | eux dans le VPN. | |
bf5c74e7 | 19844 | |
1d8d69c8 | 19845 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
19846 | |
19847 | @end deftypevr | |
19848 | ||
1d8d69c8 | 19849 | @deftypevr {paramètre de @code{openvpn-server-configuration}} keepalive keepalive |
adfb167f JL |
19850 | Fait que des messages de ping sont envoyés régulièrement dans les deux sens |
19851 | pour que chaque côté sache quand l'autre n'est plus disponible. | |
19852 | @code{keepalive} a besoin d'une paire. Le premier élément est la période | |
15f1bff4 | 19853 | d'envoi du ping, et le second élément est le délai d'attente avant de |
adfb167f | 19854 | considéré que l'autre côté n'est plus disponible. |
bf5c74e7 JL |
19855 | |
19856 | @end deftypevr | |
19857 | ||
1d8d69c8 | 19858 | @deftypevr {paramètre de @code{openvpn-server-configuration}} number max-clients |
adfb167f | 19859 | Le nombre maximum de clients. |
bf5c74e7 | 19860 | |
1d8d69c8 | 19861 | La valeur par défaut est @samp{100}. |
bf5c74e7 JL |
19862 | |
19863 | @end deftypevr | |
19864 | ||
1d8d69c8 | 19865 | @deftypevr {paramètre de @code{openvpn-server-configuration}} string status |
adfb167f JL |
19866 | Le fichier de statut. Ce fichier montre un court rapport sur les connexions |
19867 | actuelles. Il est tronqué et réécrit toutes les minutes. | |
bf5c74e7 | 19868 | |
1d8d69c8 | 19869 | La valeur par défaut est @samp{"/var/run/openvpn/status"}. |
bf5c74e7 JL |
19870 | |
19871 | @end deftypevr | |
19872 | ||
1d8d69c8 | 19873 | @deftypevr {paramètre de @code{openvpn-server-configuration}} openvpn-ccd-list client-config-dir |
adfb167f | 19874 | La liste des configuration pour certains clients. |
bf5c74e7 | 19875 | |
1d8d69c8 | 19876 | La valeur par défaut est @samp{()}. |
bf5c74e7 | 19877 | |
1d8d69c8 | 19878 | Les champs de @code{openvpn-ccd-configuration} disponibles sont : |
bf5c74e7 | 19879 | |
1d8d69c8 | 19880 | @deftypevr {paramètre de @code{openvpn-ccd-configuration}} string name |
adfb167f | 19881 | Nom du client. |
bf5c74e7 | 19882 | |
1d8d69c8 | 19883 | La valeur par défaut est @samp{"client"}. |
bf5c74e7 JL |
19884 | |
19885 | @end deftypevr | |
19886 | ||
1d8d69c8 | 19887 | @deftypevr {paramètre de @code{openvpn-ccd-configuration}} ip-mask iroute |
adfb167f | 19888 | Le réseau du client. |
bf5c74e7 | 19889 | |
1d8d69c8 | 19890 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
19891 | |
19892 | @end deftypevr | |
19893 | ||
1d8d69c8 | 19894 | @deftypevr {paramètre de @code{openvpn-ccd-configuration}} ip-mask ifconfig-push |
adfb167f | 19895 | IP du client sur le VPN. |
bf5c74e7 | 19896 | |
1d8d69c8 | 19897 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
19898 | |
19899 | @end deftypevr | |
19900 | ||
19901 | @end deftypevr | |
19902 | ||
19903 | ||
19904 | @c %end of automatic openvpn-server documentation | |
19905 | ||
19906 | ||
3cacfa9e | 19907 | @node Système de fichiers en réseau |
15f1bff4 | 19908 | @subsection Système de fichiers en réseau |
bf5c74e7 JL |
19909 | @cindex NFS |
19910 | ||
adfb167f JL |
19911 | Le module @code{(gnu services nfs)} fournit les services suivants, qui sont |
19912 | tous utilisés pour monter et exporter des arborescences de répertoires en | |
19913 | @dfn{network file systems} (NFS). | |
bf5c74e7 | 19914 | |
adfb167f | 19915 | @subsubheading Service RPC Bind |
bf5c74e7 JL |
19916 | @cindex rpcbind |
19917 | ||
adfb167f JL |
19918 | Le service RPC Bind fournit un dispositif pour faire correspondre les |
19919 | numéros de programmes à des adresses universelles. De nombreux services | |
19920 | liés à NFS utilisent ce dispositif. Donc il est automatiquement démarré | |
19921 | lorsqu'un service qui en dépend est démarré. | |
bf5c74e7 | 19922 | |
1d8d69c8 | 19923 | @defvr {Variable Scheme} rpcbind-service-type |
adfb167f | 19924 | Un type de service pour le démon RPC portmapper. |
bf5c74e7 JL |
19925 | @end defvr |
19926 | ||
19927 | ||
1d8d69c8 | 19928 | @deftp {Type de données} rpcbind-configuration |
adfb167f JL |
19929 | Type données représentant la configuration du service RPC Bind. Ce type a |
19930 | les paramètres suivants : | |
bf5c74e7 | 19931 | @table @asis |
1d8d69c8 JL |
19932 | @item @code{rpcbind} (par défaut : @code{rpcbind}) |
19933 | Le paquet rpcbind à utiliser. | |
bf5c74e7 | 19934 | |
1d8d69c8 | 19935 | @item @code{warm-start?} (par défaut : @code{#t}) |
adfb167f JL |
19936 | Si ce paramètre est @code{#t}, alors le démon lira un fichier d'état au |
19937 | démarrage ce qui lui fait recharger les informations d'états sauvegardés par | |
19938 | une instance précédente. | |
bf5c74e7 JL |
19939 | @end table |
19940 | @end deftp | |
19941 | ||
19942 | ||
adfb167f | 19943 | @subsubheading Pseudo-système de fichiers Pipefs |
bf5c74e7 JL |
19944 | @cindex pipefs |
19945 | @cindex rpc_pipefs | |
19946 | ||
adfb167f JL |
19947 | Le système de fichiers pipefs est utilisé pour transférer des données liées |
19948 | à NFS entre le noyau et les programmes en espace utilisateur. | |
bf5c74e7 | 19949 | |
1d8d69c8 | 19950 | @defvr {Variable Scheme} pipefs-service-type |
adfb167f | 19951 | Un type de service pour le pseudo-système de fichiers pipefs. |
bf5c74e7 JL |
19952 | @end defvr |
19953 | ||
1d8d69c8 | 19954 | @deftp {Type de données} pipefs-configuration |
adfb167f JL |
19955 | Type de données représentant la configuration du service du pseudo-système |
19956 | de fichiers pipefs. Ce type a les paramètres suivants : | |
bf5c74e7 | 19957 | @table @asis |
1d8d69c8 | 19958 | @item @code{mount-point} (par défaut : @code{"/var/lib/nfs/rpc_pipefs"}) |
adfb167f | 19959 | Le répertoire dans lequel le système de fichiers est attaché. |
bf5c74e7 JL |
19960 | @end table |
19961 | @end deftp | |
19962 | ||
19963 | ||
adfb167f | 19964 | @subsubheading Service de démon GSS |
bf5c74e7 JL |
19965 | @cindex GSSD |
19966 | @cindex GSS | |
adfb167f | 19967 | @cindex système de sécurité global |
bf5c74e7 | 19968 | |
adfb167f JL |
19969 | Le démon du @dfn{système de sécurité global} (GSS) fournit une sécurité |
19970 | forte pour les protocoles basés sur des RPC. Avant d'échanger des requêtes | |
19971 | RPC, un client RPC doit établir un contexte sécurisé. Typiquement cela se | |
19972 | fait avec la commande Kerberos @command{kinit} ou automatiquement à la | |
19973 | connexion avec les services PAM (@pxref{Services Kerberos}). | |
bf5c74e7 | 19974 | |
1d8d69c8 | 19975 | @defvr {Variable Scheme} gss-service-type |
adfb167f | 19976 | Un type de service pour le démon du système de sécurité global (GSS). |
bf5c74e7 JL |
19977 | @end defvr |
19978 | ||
1d8d69c8 | 19979 | @deftp {Type de données} gss-configuration |
adfb167f JL |
19980 | Type de données représentant la configuration du service du démon GSS. Ce |
19981 | type a les paramètres suivants : | |
bf5c74e7 | 19982 | @table @asis |
1d8d69c8 | 19983 | @item @code{nfs-utils} (par défaut : @code{nfs-utils}) |
adfb167f | 19984 | Le paquet dans lequel la commande @command{rpc.gssd} se trouve. |
bf5c74e7 | 19985 | |
1d8d69c8 | 19986 | @item @code{pipefs-directory} (par défaut : @code{"/var/lib/nfs/rpc_pipefs"}) |
adfb167f | 19987 | Le répertoire où le système de fichier pipefs doit être monté. |
bf5c74e7 JL |
19988 | |
19989 | @end table | |
19990 | @end deftp | |
19991 | ||
19992 | ||
adfb167f | 19993 | @subsubheading Service de démon IDMAP |
bf5c74e7 | 19994 | @cindex idmapd |
adfb167f | 19995 | @cindex correspondance de nom |
bf5c74e7 | 19996 | |
adfb167f JL |
19997 | Le service du démon idmap fournit une correspondance entre les ID |
19998 | utilisateur et les noms d'utilisateurs. Typiquement, cela est requis pour | |
19999 | accéder aux systèmes de fichiers montés via NFSv4. | |
bf5c74e7 | 20000 | |
1d8d69c8 | 20001 | @defvr {Variable Scheme} idmap-service-type |
adfb167f | 20002 | Un type de service pour le démon de correspondance d'identité (IDMAP). |
bf5c74e7 JL |
20003 | @end defvr |
20004 | ||
1d8d69c8 | 20005 | @deftp {Type de données} idmap-configuration |
adfb167f JL |
20006 | Type de données représentant la configuration du service du démon IDMAP. Ce |
20007 | type a les paramètres suivants : | |
bf5c74e7 | 20008 | @table @asis |
1d8d69c8 | 20009 | @item @code{nfs-utils} (par défaut : @code{nfs-utils}) |
adfb167f | 20010 | Le paquet dans lequel se trouve la commande @command{rpc.idmapd}. |
bf5c74e7 | 20011 | |
1d8d69c8 | 20012 | @item @code{pipefs-directory} (par défaut : @code{"/var/lib/nfs/rpc_pipefs"}) |
adfb167f | 20013 | Le répertoire où le système de fichier pipefs doit être monté. |
bf5c74e7 | 20014 | |
1d8d69c8 | 20015 | @item @code{domain} (par défaut : @code{#f}) |
adfb167f JL |
20016 | Le nom de domaine NFSv4 local. Il faut que ce soit une chaîne de caractères |
20017 | ou @code{#f}. Si la valeur est @code{#f} le démon utilisera le nom de | |
20018 | domaine pleinement qualifié de l'hôte. | |
bf5c74e7 JL |
20019 | |
20020 | @end table | |
20021 | @end deftp | |
20022 | ||
3cacfa9e | 20023 | @node Intégration continue |
15f1bff4 | 20024 | @subsection Intégration continue |
bf5c74e7 | 20025 | |
adfb167f JL |
20026 | @cindex intégration continue |
20027 | @uref{https://git.savannah.gnu.org/cgit/guix/guix-cuirass.git, Cuirass} est | |
20028 | un outil d'intégration continue pour Guix. On peut l'utiliser aussi bien | |
20029 | pour le développement que pour fournir des substituts à d'autres | |
20030 | (@pxref{Substituts}). | |
bf5c74e7 | 20031 | |
adfb167f | 20032 | Le module @code{(gnu services cuirass)} fournit le service suivant. |
bf5c74e7 | 20033 | |
1d8d69c8 | 20034 | @defvr {Procédure Scheme} cuirass-service-type |
adfb167f JL |
20035 | Le type du service Cuirass. Sa valeur doit être un objet |
20036 | @code{cuirass-configuration}, décrit ci-dessous. | |
bf5c74e7 JL |
20037 | @end defvr |
20038 | ||
adfb167f JL |
20039 | Pour ajouter des travaux de construction, vous devez indiquer le champ |
20040 | @code{specifications} de la configuration. Voici un exemple de service qui | |
20041 | récupère le dépôt Guix et construit les paquets depuis un manifeste. | |
20042 | Certains des paquets sont définis dans l'entrée @code{"custom-packages"}, | |
20043 | qui est l'équivalent de @code{GUIX_PACKAGE_PATH}. | |
20044 | ||
20045 | @example | |
20046 | (define %cuirass-specs | |
20047 | #~(list | |
20048 | '((#:name . "my-manifest") | |
20049 | (#:load-path-inputs . ("guix")) | |
20050 | (#:package-path-inputs . ("custom-packages")) | |
20051 | (#:proc-input . "guix") | |
20052 | (#:proc-file . "build-aux/cuirass/gnu-system.scm") | |
20053 | (#:proc . cuirass-jobs) | |
20054 | (#:proc-args . ((subset . "manifests") | |
20055 | (systems . ("x86_64-linux")) | |
20056 | (manifests . (("config" . "guix/manifest.scm"))))) | |
20057 | (#:inputs . (((#:name . "guix") | |
20058 | (#:url . "git://git.savannah.gnu.org/guix.git") | |
20059 | (#:load-path . ".") | |
20060 | (#:branch . "master") | |
20061 | (#:no-compile? . #t)) | |
20062 | ((#:name . "config") | |
20063 | (#:url . "git://git.example.org/config.git") | |
20064 | (#:load-path . ".") | |
20065 | (#:branch . "master") | |
20066 | (#:no-compile? . #t)) | |
20067 | ((#:name . "custom-packages") | |
20068 | (#:url . "git://git.example.org/custom-packages.git") | |
20069 | (#:load-path . ".") | |
20070 | (#:branch . "master") | |
20071 | (#:no-compile? . #t))))))) | |
20072 | ||
20073 | (service cuirass-service-type | |
20074 | (cuirass-configuration | |
20075 | (specifications %cuirass-specs))) | |
20076 | @end example | |
20077 | ||
20078 | Tandis que les informations liés aux travaux de construction sont | |
20079 | directement dans les spécifications, les paramètres globaux pour le | |
20080 | processus @command{cuirass} sont accessibles dans les autres champs de | |
20081 | @code{cuirass-configuration}. | |
bf5c74e7 | 20082 | |
1d8d69c8 | 20083 | @deftp {Type de données} cuirass-configuration |
adfb167f | 20084 | Type de données représentant la configuration de Cuirass. |
bf5c74e7 JL |
20085 | |
20086 | @table @asis | |
1d8d69c8 | 20087 | @item @code{log-file} (par défaut : @code{"/var/log/cuirass.log"}) |
adfb167f | 20088 | Emplacement du fichier de journal. |
bf5c74e7 | 20089 | |
1d8d69c8 | 20090 | @item @code{cache-directory} (par défaut : @code{"/var/cache/cuirass"}) |
adfb167f | 20091 | Emplacement du cache du dépôt. |
bf5c74e7 | 20092 | |
1d8d69c8 | 20093 | @item @code{user} (par défaut : @code{"cuirass"}) |
adfb167f | 20094 | Propriétaire du processus @code{cuirass}. |
bf5c74e7 | 20095 | |
1d8d69c8 | 20096 | @item @code{group} (par défaut : @code{"cuirass"}) |
adfb167f | 20097 | Groupe du propriétaire du processus @code{cuirass}. |
bf5c74e7 | 20098 | |
1d8d69c8 | 20099 | @item @code{interval} (par défaut : @code{60}) |
adfb167f JL |
20100 | Nombre de secondes entre les mises à jour du dépôt suivis des travaux de |
20101 | Cuirass. | |
bf5c74e7 | 20102 | |
adfb167f JL |
20103 | @item @code{database} (par défaut : @code{"/var/lib/cuirass/cuirass.db"}) |
20104 | Emplacement de la base de données sqlite qui contient les résultats de | |
20105 | construction et les spécifications précédemment ajoutées. | |
20106 | ||
20107 | @item @code{ttl} (par défaut : @code{(* 30 24 3600)}) | |
20108 | Spécifie la durée de vie (TTL) en seconde des racines du ramasse-miette qui | |
20109 | sont enregistrés comme des résultats de construction. Cela signifie que les | |
20110 | résultats de construction ne seront pas glanés pendant au moins @var{ttl} | |
20111 | secondes. | |
bf5c74e7 | 20112 | |
1d8d69c8 | 20113 | @item @code{port} (par défaut : @code{8081}) |
adfb167f | 20114 | Numéro de port utilisé pour le serveur HTTP. |
bf5c74e7 | 20115 | |
524756d1 | 20116 | @item --listen=@var{hôte} |
adfb167f JL |
20117 | Écoute sur l'interface réseau de @var{host}. La valeur par défaut est |
20118 | d'accepter les connexions depuis localhost. | |
bf5c74e7 | 20119 | |
1d8d69c8 | 20120 | @item @code{specifications} (par défaut : @code{#~'()}) |
adfb167f JL |
20121 | Une gexp (@pxref{G-Expressions}) qui s'évalue en une liste de |
20122 | spécifications, où une spécification est une liste d'association | |
20123 | (@pxref{Associations Lists,,, guile, GNU Guile Reference Manual}) dont les | |
20124 | clefs sont des mots-clefs (@code{#:exemple-de-mot-clef}) comme dans | |
20125 | l'exemple plus haut. | |
bf5c74e7 | 20126 | |
1d8d69c8 | 20127 | @item @code{use-substitutes?} (par défaut : @code{#f}) |
adfb167f JL |
20128 | Cela permet d'utiliser des substituts pour éviter de construire toutes les |
20129 | dépendance d'un travail depuis les sources. | |
bf5c74e7 | 20130 | |
1d8d69c8 | 20131 | @item @code{one-shot?} (par défaut : @code{#f}) |
adfb167f | 20132 | N'évaluer les spécification et construire les dérivations qu'une seule fois. |
bf5c74e7 | 20133 | |
1d8d69c8 | 20134 | @item @code{fallback?} (par défaut : @code{#f}) |
adfb167f JL |
20135 | Lorsque la substitution d'un binaire pré-construit échoue, revenir à la |
20136 | construction locale du paquet. | |
bf5c74e7 | 20137 | |
1d8d69c8 JL |
20138 | @item @code{cuirass} (par défaut : @code{cuirass}) |
20139 | Le paquet Cuirass à utiliser. | |
bf5c74e7 JL |
20140 | @end table |
20141 | @end deftp | |
20142 | ||
adfb167f | 20143 | @node Services de gestion de l'énergie |
15f1bff4 | 20144 | @subsection Services de gestion de l'énergie |
bf5c74e7 | 20145 | |
524756d1 | 20146 | @cindex tlp |
adfb167f JL |
20147 | @cindex gestion de l'énergie avec TLP |
20148 | @subsubheading démon TLP | |
524756d1 | 20149 | |
adfb167f JL |
20150 | Le module @code{(gnu services pm)} fournit une définition de service Guix |
20151 | pour l'outil de gestion d'énergie Linux TLP. | |
bf5c74e7 | 20152 | |
adfb167f JL |
20153 | TLP active plusieurs modes un espace utilisateur et dans le noyau. |
20154 | Contrairement à @code{upower-service}, ce n'est pas un outil passif de | |
20155 | surveillance, puisqu'il applique des paramètres personnalisés à chaque fois | |
20156 | qu'il détecte une nouvelle source d'énergie. Vous pouvez trouver plus | |
20157 | d'informations sur @uref{http://linrunner.de/en/tlp/tlp.html, la page | |
20158 | d'accueil de TLP}. | |
bf5c74e7 | 20159 | |
1d8d69c8 | 20160 | @deffn {Variable Scheme} tlp-service-type |
adfb167f JL |
20161 | Le type de service pour l'outil TLP. Sa valeur devrait être une |
20162 | configuration valide de TLP (voir plus bas). Pour utiliser les paramètres | |
20163 | par défaut, écrivez simplement : | |
bf5c74e7 JL |
20164 | @example |
20165 | (service tlp-service-type) | |
20166 | @end example | |
20167 | @end deffn | |
20168 | ||
adfb167f JL |
20169 | Par défaut TLP n'a pas besoin de beaucoup de configuration mais la plupart |
20170 | des paramètres de TLP peuvent être modifiés avec @code{tlp-configuration}. | |
bf5c74e7 | 20171 | |
adfb167f JL |
20172 | Chaque définition de paramètre est précédée par son type ; par exemple, |
20173 | @samp{boolean foo} indique que le paramètre @code{foo} doit être spécifié | |
20174 | comme un booléen. Les types qui commencent par @code{maybe-} dénotent des | |
20175 | paramètres qui n'apparaîtront pas dans la configuration de TLP lorsque leur | |
20176 | valeur est @code{'disabled}. | |
bf5c74e7 JL |
20177 | |
20178 | @c The following documentation was initially generated by | |
20179 | @c (generate-tlp-documentation) in (gnu services pm). Manually maintained | |
20180 | @c documentation is better, so we shouldn't hesitate to edit below as | |
20181 | @c needed. However if the change you want to make to this documentation | |
20182 | @c can be done in an automated way, it's probably easier to change | |
20183 | @c (generate-documentation) than to make it below and have to deal with | |
20184 | @c the churn as TLP updates. | |
20185 | ||
1d8d69c8 | 20186 | Les champs de @code{tlp-configuration} disponibles sont : |
bf5c74e7 | 20187 | |
1d8d69c8 | 20188 | @deftypevr {paramètre de @code{tlp-configuration}} package tlp |
adfb167f | 20189 | Le paquet TLP. |
bf5c74e7 JL |
20190 | |
20191 | @end deftypevr | |
20192 | ||
1d8d69c8 | 20193 | @deftypevr {paramètre de @code{tlp-configuration}} boolean tlp-enable? |
adfb167f | 20194 | Indiquez vrai si vous souhaitez activer TLP. |
bf5c74e7 | 20195 | |
1d8d69c8 | 20196 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
20197 | |
20198 | @end deftypevr | |
20199 | ||
1d8d69c8 | 20200 | @deftypevr {paramètre de @code{tlp-configuration}} string tlp-default-mode |
adfb167f JL |
20201 | Mode par défaut lorsqu'aucune source d'énergie ne peut être détectée. Les |
20202 | possibilités sont AC et BAT. | |
bf5c74e7 | 20203 | |
1d8d69c8 | 20204 | La valeur par défaut est @samp{"AC"}. |
bf5c74e7 JL |
20205 | |
20206 | @end deftypevr | |
20207 | ||
1d8d69c8 | 20208 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer disk-idle-secs-on-ac |
adfb167f JL |
20209 | Nombre de secondes que le noyau Linux doit attendre après que les disques |
20210 | s'arrêtent pour se synchroniser quand il est sur secteur. | |
bf5c74e7 | 20211 | |
1d8d69c8 | 20212 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
20213 | |
20214 | @end deftypevr | |
20215 | ||
1d8d69c8 | 20216 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer disk-idle-secs-on-bat |
adfb167f | 20217 | Comme @code{disk-idle-ac} mais en mode batterie. |
bf5c74e7 | 20218 | |
1d8d69c8 | 20219 | La valeur par défaut est @samp{2}. |
bf5c74e7 JL |
20220 | |
20221 | @end deftypevr | |
20222 | ||
1d8d69c8 | 20223 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer max-lost-work-secs-on-ac |
adfb167f | 20224 | Périodicité du nettoyage des pages invalidées, en secondes. |
bf5c74e7 | 20225 | |
1d8d69c8 | 20226 | La valeur par défaut est @samp{15}. |
bf5c74e7 JL |
20227 | |
20228 | @end deftypevr | |
20229 | ||
1d8d69c8 | 20230 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer max-lost-work-secs-on-bat |
adfb167f | 20231 | Comme @code{max-lost-work-secs-on-ac} mais en mode batterie. |
bf5c74e7 | 20232 | |
1d8d69c8 | 20233 | La valeur par défaut est @samp{60}. |
bf5c74e7 JL |
20234 | |
20235 | @end deftypevr | |
20236 | ||
1d8d69c8 | 20237 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list cpu-scaling-governor-on-ac |
adfb167f JL |
20238 | Gouverneur de fréquence d'horloge sur secteur. Avec le pilote intel_pstate, |
20239 | les possibilités sont powersave et performance. Avec le pilote | |
20240 | acpi-cpufreq, les possibilités sont ondemand, powersave, performance et | |
20241 | conservative. | |
bf5c74e7 | 20242 | |
1d8d69c8 | 20243 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20244 | |
20245 | @end deftypevr | |
20246 | ||
1d8d69c8 | 20247 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list cpu-scaling-governor-on-bat |
adfb167f | 20248 | Comme @code{cpu-scaling-governor-on-ac} mais en mode batterie. |
bf5c74e7 | 20249 | |
1d8d69c8 | 20250 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20251 | |
20252 | @end deftypevr | |
20253 | ||
1d8d69c8 | 20254 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-scaling-min-freq-on-ac |
adfb167f | 20255 | Indique la fréquence d'horloge minimale pour le gouverneur sur secteur. |
bf5c74e7 | 20256 | |
1d8d69c8 | 20257 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20258 | |
20259 | @end deftypevr | |
20260 | ||
1d8d69c8 | 20261 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-scaling-max-freq-on-ac |
adfb167f | 20262 | Indique la fréquence d'horloge maximale pour le gouverneur sur secteur. |
bf5c74e7 | 20263 | |
1d8d69c8 | 20264 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20265 | |
20266 | @end deftypevr | |
20267 | ||
1d8d69c8 | 20268 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-scaling-min-freq-on-bat |
adfb167f | 20269 | Indique la fréquence d'horloge minimale pour le gouverneur sur batterie. |
bf5c74e7 | 20270 | |
1d8d69c8 | 20271 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20272 | |
20273 | @end deftypevr | |
20274 | ||
1d8d69c8 | 20275 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-scaling-max-freq-on-bat |
adfb167f | 20276 | Indique la fréquence d'horloge maximale pour le gouverneur sur batterie. |
bf5c74e7 | 20277 | |
1d8d69c8 | 20278 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20279 | |
20280 | @end deftypevr | |
20281 | ||
1d8d69c8 | 20282 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-min-perf-on-ac |
adfb167f JL |
20283 | Limite le P-état minimum pour contrôler la dissipation de puissance dans le |
20284 | CPU, sur secteur. Les valeurs sont indiqués comme un pourcentage des | |
20285 | performances disponibles. | |
bf5c74e7 | 20286 | |
1d8d69c8 | 20287 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20288 | |
20289 | @end deftypevr | |
20290 | ||
1d8d69c8 | 20291 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-max-perf-on-ac |
adfb167f JL |
20292 | Limite le P-état maximum pour contrôler la dissipation de puissance dans le |
20293 | CPU, sur secteur. Les valeurs sont indiqués comme un pourcentage des | |
20294 | performances disponibles. | |
bf5c74e7 | 20295 | |
1d8d69c8 | 20296 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20297 | |
20298 | @end deftypevr | |
20299 | ||
1d8d69c8 | 20300 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-min-perf-on-bat |
adfb167f | 20301 | Comme @code{cpu-min-perf-on-ac} mais en mode batterie. |
bf5c74e7 | 20302 | |
1d8d69c8 | 20303 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20304 | |
20305 | @end deftypevr | |
20306 | ||
1d8d69c8 | 20307 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-non-negative-integer cpu-max-perf-on-bat |
adfb167f | 20308 | Comme @code{cpu-max-perf-on-ac} mais en mode batterie. |
bf5c74e7 | 20309 | |
1d8d69c8 | 20310 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20311 | |
20312 | @end deftypevr | |
20313 | ||
1d8d69c8 | 20314 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-boolean cpu-boost-on-ac? |
adfb167f | 20315 | Active la fonctionnalité turbo boost du CPU sur secteur. |
bf5c74e7 | 20316 | |
1d8d69c8 | 20317 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20318 | |
20319 | @end deftypevr | |
20320 | ||
1d8d69c8 | 20321 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-boolean cpu-boost-on-bat? |
adfb167f | 20322 | Comme @code{cpu-boost-on-ac?} mais en mode batterie. |
bf5c74e7 | 20323 | |
1d8d69c8 | 20324 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20325 | |
20326 | @end deftypevr | |
20327 | ||
1d8d69c8 | 20328 | @deftypevr {paramètre de @code{tlp-configuration}} boolean sched-powersave-on-ac? |
adfb167f JL |
20329 | Permet au noyau Linux de minimiser le nombre de cœurs/hyper-threads CPU |
20330 | utilisés lorsque la charge est faible. | |
bf5c74e7 | 20331 | |
1d8d69c8 | 20332 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
20333 | |
20334 | @end deftypevr | |
20335 | ||
1d8d69c8 | 20336 | @deftypevr {paramètre de @code{tlp-configuration}} boolean sched-powersave-on-bat? |
adfb167f | 20337 | Comme @code{sched-powersave-on-ac?} mais en mode batterie. |
bf5c74e7 | 20338 | |
1d8d69c8 | 20339 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
20340 | |
20341 | @end deftypevr | |
20342 | ||
1d8d69c8 | 20343 | @deftypevr {paramètre de @code{tlp-configuration}} boolean nmi-watchdog? |
adfb167f | 20344 | Active le chien de garde NMI du noyau Linux. |
bf5c74e7 | 20345 | |
1d8d69c8 | 20346 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
20347 | |
20348 | @end deftypevr | |
20349 | ||
1d8d69c8 | 20350 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-string phc-controls |
adfb167f JL |
20351 | Pour les noyaux Linux avec le correctif PHC, change le voltage du CPU. Une |
20352 | valeur serait par exemple @samp{"F:V F:V F:V F:V"}. | |
bf5c74e7 | 20353 | |
1d8d69c8 | 20354 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20355 | |
20356 | @end deftypevr | |
20357 | ||
1d8d69c8 | 20358 | @deftypevr {paramètre de @code{tlp-configuration}} string energy-perf-policy-on-ac |
adfb167f JL |
20359 | Indique le niveau de performance du CPU par rapport à la politique de |
20360 | gestion de l'énergie sur secteur. Les possibilités sont performance, normal | |
20361 | et powersave. | |
bf5c74e7 | 20362 | |
1d8d69c8 | 20363 | La valeur par défaut est @samp{"performance"}. |
bf5c74e7 JL |
20364 | |
20365 | @end deftypevr | |
20366 | ||
1d8d69c8 | 20367 | @deftypevr {paramètre de @code{tlp-configuration}} string energy-perf-policy-on-bat |
adfb167f | 20368 | Comme @code{energy-perf-policy-ac} mais en mode batterie. |
bf5c74e7 | 20369 | |
1d8d69c8 | 20370 | La valeur par défaut est @samp{"powersave"}. |
bf5c74e7 JL |
20371 | |
20372 | @end deftypevr | |
20373 | ||
1d8d69c8 | 20374 | @deftypevr {paramètre de @code{tlp-configuration}} space-separated-string-list disks-devices |
adfb167f | 20375 | Périphériques de disque dur. |
bf5c74e7 JL |
20376 | |
20377 | @end deftypevr | |
20378 | ||
1d8d69c8 | 20379 | @deftypevr {paramètre de @code{tlp-configuration}} space-separated-string-list disk-apm-level-on-ac |
adfb167f | 20380 | Niveau de gestion de l'énergie avancé des disques durs. |
bf5c74e7 JL |
20381 | |
20382 | @end deftypevr | |
20383 | ||
1d8d69c8 | 20384 | @deftypevr {paramètre de @code{tlp-configuration}} space-separated-string-list disk-apm-level-on-bat |
adfb167f | 20385 | Comme @code{disk-apm-bat} mais en mode batterie. |
bf5c74e7 JL |
20386 | |
20387 | @end deftypevr | |
20388 | ||
1d8d69c8 | 20389 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list disk-spindown-timeout-on-ac |
adfb167f JL |
20390 | Délai d'attente pour arrêter de faire tourner les disques. Une valeur doit |
20391 | être spécifiée pour chaque disque dur déclaré. | |
bf5c74e7 | 20392 | |
1d8d69c8 | 20393 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20394 | |
20395 | @end deftypevr | |
20396 | ||
1d8d69c8 | 20397 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list disk-spindown-timeout-on-bat |
adfb167f | 20398 | Comme @code{disk-spindown-timeout-on-ac} mais en mode batterie. |
bf5c74e7 | 20399 | |
1d8d69c8 | 20400 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20401 | |
20402 | @end deftypevr | |
20403 | ||
1d8d69c8 | 20404 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list disk-iosched |
adfb167f JL |
20405 | Sélectionne l'ordonnanceur d'entrées-sorties pour le disque. Une valeur |
20406 | doit être spécifiée pour chaque disque déclaré. Les possibilités sont par | |
20407 | exemple cfq, deadline et noop. | |
bf5c74e7 | 20408 | |
1d8d69c8 | 20409 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20410 | |
20411 | @end deftypevr | |
20412 | ||
1d8d69c8 | 20413 | @deftypevr {paramètre de @code{tlp-configuration}} string sata-linkpwr-on-ac |
adfb167f JL |
20414 | Niveau de gestion de l'énergie des lien SATA aggressive (ALPM). Les |
20415 | possibilités sont min_power, medium_power et max_performance. | |
bf5c74e7 | 20416 | |
1d8d69c8 | 20417 | La valeur par défaut est @samp{"max_performance"}. |
bf5c74e7 JL |
20418 | |
20419 | @end deftypevr | |
20420 | ||
1d8d69c8 | 20421 | @deftypevr {paramètre de @code{tlp-configuration}} string sata-linkpwr-on-bat |
adfb167f | 20422 | Comme @code{sata-linkpwr-ac} mais en mode batterie. |
bf5c74e7 | 20423 | |
1d8d69c8 | 20424 | La valeur par défaut est @samp{"min_power"}. |
bf5c74e7 JL |
20425 | |
20426 | @end deftypevr | |
20427 | ||
1d8d69c8 | 20428 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-string sata-linkpwr-blacklist |
adfb167f | 20429 | Exclu les périphériques SATA spécifiés de la gestion de l'énergie des liens. |
bf5c74e7 | 20430 | |
1d8d69c8 | 20431 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20432 | |
20433 | @end deftypevr | |
20434 | ||
1d8d69c8 | 20435 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-on-off-boolean ahci-runtime-pm-on-ac? |
adfb167f JL |
20436 | Active la gestion de l'énergie à l'exécution pour les contrôleurs AHCI et |
20437 | les disques, sur secteur | |
bf5c74e7 | 20438 | |
1d8d69c8 | 20439 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20440 | |
20441 | @end deftypevr | |
20442 | ||
1d8d69c8 | 20443 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-on-off-boolean ahci-runtime-pm-on-bat? |
adfb167f | 20444 | Comme @code{ahci-runtime-pm-on-ac} mais en mode batterie. |
bf5c74e7 | 20445 | |
1d8d69c8 | 20446 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20447 | |
20448 | @end deftypevr | |
20449 | ||
1d8d69c8 | 20450 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer ahci-runtime-pm-timeout |
adfb167f | 20451 | Secondes d'inactivités avant de suspendre les disques. |
bf5c74e7 | 20452 | |
1d8d69c8 | 20453 | La valeur par défaut est @samp{15}. |
bf5c74e7 JL |
20454 | |
20455 | @end deftypevr | |
20456 | ||
1d8d69c8 | 20457 | @deftypevr {paramètre de @code{tlp-configuration}} string pcie-aspm-on-ac |
adfb167f JL |
20458 | Niveau de gestion de l'énergie des états actifs de PCI Express. Les |
20459 | possibilités sont default, performance et powersave. | |
bf5c74e7 | 20460 | |
1d8d69c8 | 20461 | La valeur par défaut est @samp{"performance"}. |
bf5c74e7 JL |
20462 | |
20463 | @end deftypevr | |
20464 | ||
1d8d69c8 | 20465 | @deftypevr {paramètre de @code{tlp-configuration}} string pcie-aspm-on-bat |
adfb167f | 20466 | Comme @code{pcie-aspm-ac} mais en mode batterie. |
bf5c74e7 | 20467 | |
1d8d69c8 | 20468 | La valeur par défaut est @samp{"powersave"}. |
bf5c74e7 JL |
20469 | |
20470 | @end deftypevr | |
20471 | ||
1d8d69c8 | 20472 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-power-profile-on-ac |
adfb167f JL |
20473 | Niveau de vitesse de l'horloge des cartes graphiques Radeon. Les |
20474 | possibilités sont low, mid, high, auto et default. | |
bf5c74e7 | 20475 | |
1d8d69c8 | 20476 | La valeur par défaut est @samp{"high"}. |
bf5c74e7 JL |
20477 | |
20478 | @end deftypevr | |
20479 | ||
1d8d69c8 | 20480 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-power-profile-on-bat |
adfb167f | 20481 | Comme @code{radeon-power-ac} mais en mode batterie. |
bf5c74e7 | 20482 | |
1d8d69c8 | 20483 | La valeur par défaut est @samp{"low"}. |
bf5c74e7 JL |
20484 | |
20485 | @end deftypevr | |
20486 | ||
1d8d69c8 | 20487 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-dpm-state-on-ac |
adfb167f JL |
20488 | Méthode de gestion de l'énergie dynamique de Radeon (DPM). Les possibilités |
20489 | sont battery et performance. | |
bf5c74e7 | 20490 | |
1d8d69c8 | 20491 | La valeur par défaut est @samp{"performance"}. |
bf5c74e7 JL |
20492 | |
20493 | @end deftypevr | |
20494 | ||
1d8d69c8 | 20495 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-dpm-state-on-bat |
adfb167f | 20496 | Comme @code{radeon-dpm-state-ac} mais en mode batterie. |
bf5c74e7 | 20497 | |
1d8d69c8 | 20498 | La valeur par défaut est @samp{"battery"}. |
bf5c74e7 JL |
20499 | |
20500 | @end deftypevr | |
20501 | ||
1d8d69c8 | 20502 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-dpm-perf-level-on-ac |
adfb167f | 20503 | Niveau de performance de DPM. Les possibilités sont auto, low et high. |
bf5c74e7 | 20504 | |
1d8d69c8 | 20505 | La valeur par défaut est @samp{"auto"}. |
bf5c74e7 JL |
20506 | |
20507 | @end deftypevr | |
20508 | ||
1d8d69c8 | 20509 | @deftypevr {paramètre de @code{tlp-configuration}} string radeon-dpm-perf-level-on-bat |
adfb167f | 20510 | Comme @code{radeon-dpm-perf-ac} mais en mode batterie. |
bf5c74e7 | 20511 | |
1d8d69c8 | 20512 | La valeur par défaut est @samp{"auto"}. |
bf5c74e7 JL |
20513 | |
20514 | @end deftypevr | |
20515 | ||
1d8d69c8 | 20516 | @deftypevr {paramètre de @code{tlp-configuration}} on-off-boolean wifi-pwr-on-ac? |
adfb167f | 20517 | Mode de gestion de l'énergie wifi. |
bf5c74e7 | 20518 | |
1d8d69c8 | 20519 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
20520 | |
20521 | @end deftypevr | |
20522 | ||
1d8d69c8 | 20523 | @deftypevr {paramètre de @code{tlp-configuration}} on-off-boolean wifi-pwr-on-bat? |
adfb167f | 20524 | Comme @code{wifi-power-ac?} mais en mode batterie. |
bf5c74e7 | 20525 | |
1d8d69c8 | 20526 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
20527 | |
20528 | @end deftypevr | |
20529 | ||
1d8d69c8 | 20530 | @deftypevr {paramètre de @code{tlp-configuration}} y-n-boolean wol-disable? |
adfb167f | 20531 | Désactive wake on LAN. |
bf5c74e7 | 20532 | |
1d8d69c8 | 20533 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
20534 | |
20535 | @end deftypevr | |
20536 | ||
1d8d69c8 | 20537 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer sound-power-save-on-ac |
adfb167f JL |
20538 | Durée d'attente en secondes avant d'activer la gestion de l'énergie audio |
20539 | sur les périphériques Intel HDA et AC97. La valeur 0 désactive la gestion | |
20540 | de l'énergie. | |
bf5c74e7 | 20541 | |
1d8d69c8 | 20542 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
20543 | |
20544 | @end deftypevr | |
20545 | ||
1d8d69c8 | 20546 | @deftypevr {paramètre de @code{tlp-configuration}} non-negative-integer sound-power-save-on-bat |
adfb167f | 20547 | Comme @code{sound-powersave-ac} mais en mode batterie. |
bf5c74e7 | 20548 | |
1d8d69c8 | 20549 | La valeur par défaut est @samp{1}. |
bf5c74e7 JL |
20550 | |
20551 | @end deftypevr | |
20552 | ||
1d8d69c8 | 20553 | @deftypevr {paramètre de @code{tlp-configuration}} y-n-boolean sound-power-save-controller? |
adfb167f JL |
20554 | Désactive le contrôleur en mode de gestion de l'énergie sur les |
20555 | périphériques Intel HDA. | |
bf5c74e7 | 20556 | |
1d8d69c8 | 20557 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
20558 | |
20559 | @end deftypevr | |
20560 | ||
1d8d69c8 | 20561 | @deftypevr {paramètre de @code{tlp-configuration}} boolean bay-poweroff-on-bat? |
adfb167f JL |
20562 | Active le périphérique optique AltraBay/MediaBay en mode batterie. Le |
20563 | périphérique peut être de nouveau alimenté en lâchant (et en réinsérant) le | |
20564 | levier d'éjection ou en appuyant sur le bouton d'éjection sur les modèles | |
20565 | plus récents. | |
bf5c74e7 | 20566 | |
1d8d69c8 | 20567 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
20568 | |
20569 | @end deftypevr | |
20570 | ||
1d8d69c8 | 20571 | @deftypevr {paramètre de @code{tlp-configuration}} string bay-device |
adfb167f | 20572 | Nom du périphérique optique à éteindre. |
bf5c74e7 | 20573 | |
1d8d69c8 | 20574 | La valeur par défaut est @samp{"sr0"}. |
bf5c74e7 JL |
20575 | |
20576 | @end deftypevr | |
20577 | ||
1d8d69c8 | 20578 | @deftypevr {paramètre de @code{tlp-configuration}} string runtime-pm-on-ac |
adfb167f JL |
20579 | Gestion de l'énergie à l'exécution sur les bus PCI(e). Les possibilités |
20580 | sont on et auto. | |
bf5c74e7 | 20581 | |
1d8d69c8 | 20582 | La valeur par défaut est @samp{"on"}. |
bf5c74e7 JL |
20583 | |
20584 | @end deftypevr | |
20585 | ||
1d8d69c8 | 20586 | @deftypevr {paramètre de @code{tlp-configuration}} string runtime-pm-on-bat |
adfb167f | 20587 | Comme @code{runtime-pm-ac} mais en mode batterie. |
bf5c74e7 | 20588 | |
1d8d69c8 | 20589 | La valeur par défaut est @samp{"auto"}. |
bf5c74e7 JL |
20590 | |
20591 | @end deftypevr | |
20592 | ||
1d8d69c8 | 20593 | @deftypevr {paramètre de @code{tlp-configuration}} boolean runtime-pm-all? |
adfb167f JL |
20594 | Gestion de l'énergie à l'exécution pour tous les bus PCI(e), sauf ceux en |
20595 | liste noire. | |
bf5c74e7 | 20596 | |
1d8d69c8 | 20597 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
20598 | |
20599 | @end deftypevr | |
20600 | ||
1d8d69c8 | 20601 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-space-separated-string-list runtime-pm-blacklist |
adfb167f JL |
20602 | Exclue les adresses des périphériques PCI(e) spécifiés de la gestion de |
20603 | l'énergie à l'exécution. | |
bf5c74e7 | 20604 | |
1d8d69c8 | 20605 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20606 | |
20607 | @end deftypevr | |
20608 | ||
1d8d69c8 | 20609 | @deftypevr {paramètre de @code{tlp-configuration}} space-separated-string-list runtime-pm-driver-blacklist |
adfb167f JL |
20610 | Exclue les périphériques PCI(e) assignés aux pilotes spécifiés de la gestion |
20611 | de l'énergie à l'exécution. | |
bf5c74e7 JL |
20612 | |
20613 | @end deftypevr | |
20614 | ||
1d8d69c8 | 20615 | @deftypevr {paramètre de @code{tlp-configuration}} boolean usb-autosuspend? |
adfb167f | 20616 | Active la fonctionnalité de mise en veille automatique de l'USB. |
bf5c74e7 | 20617 | |
1d8d69c8 | 20618 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
20619 | |
20620 | @end deftypevr | |
20621 | ||
1d8d69c8 | 20622 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-string usb-blacklist |
adfb167f JL |
20623 | Exclue les périphériques spécifiés de la mise en veille automatique de |
20624 | l'USB. | |
bf5c74e7 | 20625 | |
1d8d69c8 | 20626 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20627 | |
20628 | @end deftypevr | |
20629 | ||
1d8d69c8 | 20630 | @deftypevr {paramètre de @code{tlp-configuration}} boolean usb-blacklist-wwan? |
adfb167f | 20631 | Exclue les périphériques WWAN de la mise en veille automatique de l'USB. |
bf5c74e7 | 20632 | |
1d8d69c8 | 20633 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
20634 | |
20635 | @end deftypevr | |
20636 | ||
1d8d69c8 | 20637 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-string usb-whitelist |
adfb167f JL |
20638 | Inclue les périphériques spécifiés dans la mise en veille automatique de |
20639 | l'USB, même s'ils sont déjà exclus par le pilote ou via | |
20640 | @code{usb-blacklist-wwan?}. | |
bf5c74e7 | 20641 | |
1d8d69c8 | 20642 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20643 | |
20644 | @end deftypevr | |
20645 | ||
1d8d69c8 | 20646 | @deftypevr {paramètre de @code{tlp-configuration}} maybe-boolean usb-autosuspend-disable-on-shutdown? |
adfb167f | 20647 | Active la mise en veille de l'USB avant l'arrêt. |
bf5c74e7 | 20648 | |
1d8d69c8 | 20649 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
20650 | |
20651 | @end deftypevr | |
20652 | ||
1d8d69c8 | 20653 | @deftypevr {paramètre de @code{tlp-configuration}} boolean restore-device-state-on-startup? |
adfb167f JL |
20654 | Restaure l'état des périphériques radio (bluetooth, wifi, wwan) du dernier |
20655 | arrêt au démarrage du système. | |
bf5c74e7 | 20656 | |
1d8d69c8 | 20657 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
20658 | |
20659 | @end deftypevr | |
20660 | ||
524756d1 | 20661 | @cindex thermald |
adfb167f JL |
20662 | @cindex gestion de la fréquence du CPU avec thermald |
20663 | @subsubheading démon Thermald | |
bf5c74e7 | 20664 | |
adfb167f JL |
20665 | Le module @code{(gnu services pm)} fournit une interface pour thermald, un |
20666 | service de gestion de l'horloge CPU qui aide à éviter la surchauffe. | |
bf5c74e7 | 20667 | |
1d8d69c8 | 20668 | @defvr {Variable Scheme} thermald-service-type |
adfb167f JL |
20669 | C'est le type de service pour @uref{https://01.org/linux-thermal-daemon/, |
20670 | thermald}, le démon de température de Linux, responsable du contrôle de | |
20671 | l'état thermique des processeurs et d'éviter la surchauffe. | |
bf5c74e7 JL |
20672 | @end defvr |
20673 | ||
1d8d69c8 | 20674 | @deftp {Type de données} thermald-configuration |
adfb167f JL |
20675 | Type de données représentant la configuration de |
20676 | @code{thermald-service-type}. | |
bf5c74e7 JL |
20677 | |
20678 | @table @asis | |
1d8d69c8 | 20679 | @item @code{ignore-cpuid-check?} (par défaut : @code{#f}) |
adfb167f | 20680 | Ignore la vérification des modèles CPU supportés avec cpuid. |
bf5c74e7 | 20681 | |
1d8d69c8 | 20682 | @item @code{thermald} (par défaut : @var{thermald}) |
adfb167f | 20683 | Objet du paquet de thermald. |
bf5c74e7 JL |
20684 | |
20685 | @end table | |
20686 | @end deftp | |
20687 | ||
3cacfa9e | 20688 | @node Services audio |
15f1bff4 | 20689 | @subsection Services audio |
bf5c74e7 | 20690 | |
adfb167f JL |
20691 | Le module @code{(gnu services audio)} fournit un service qui lance MPD (le |
20692 | démon de lecture de musique). | |
bf5c74e7 JL |
20693 | |
20694 | @cindex mpd | |
20695 | @subsubheading Music Player Daemon | |
20696 | ||
adfb167f JL |
20697 | Le démon de lecture de musique (MPD) est un service qui joue de la musique |
20698 | tout en étant contrôlé depuis la machine locale ou à travers le réseau par | |
20699 | divers clients. | |
bf5c74e7 | 20700 | |
adfb167f JL |
20701 | L'exemple suivant montre comment on peut lancer @code{mpd} en tant |
20702 | qu'utilisateur @code{"bob"} sur le port @code{6666}. Il utilise pulseaudio | |
20703 | pour la sortie audio. | |
bf5c74e7 JL |
20704 | |
20705 | @example | |
20706 | (service mpd-service-type | |
20707 | (mpd-configuration | |
20708 | (user "bob") | |
20709 | (port "6666"))) | |
20710 | @end example | |
20711 | ||
1d8d69c8 | 20712 | @defvr {Variable Scheme} mpd-service-type |
adfb167f | 20713 | Le type de service pour @command{mpd}. |
bf5c74e7 JL |
20714 | @end defvr |
20715 | ||
1d8d69c8 | 20716 | @deftp {Type de données} mpd-configuration |
adfb167f | 20717 | Type de données représentant la configuration de @command{mpd}. |
bf5c74e7 JL |
20718 | |
20719 | @table @asis | |
1d8d69c8 | 20720 | @item @code{user} (par défaut : @code{"mpd"}) |
adfb167f | 20721 | L'utilisateur qui lance mpd. |
bf5c74e7 | 20722 | |
1d8d69c8 | 20723 | @item @code{music-dir} (par défaut : @code{"~/Music"}) |
adfb167f | 20724 | Le répertoire à scanner pour trouver les fichiers de musique. |
bf5c74e7 | 20725 | |
1d8d69c8 | 20726 | @item @code{playlist-dir} (par défaut : @code{"~/.mpd/playlists"}) |
adfb167f | 20727 | Le répertoire où stocker les playlists. |
bf5c74e7 | 20728 | |
1d8d69c8 | 20729 | @item @code{port} (par défaut : @code{"6600"}) |
adfb167f | 20730 | Le port sur lequel lancer mpd. |
bf5c74e7 | 20731 | |
1d8d69c8 | 20732 | @item @code{address} (par défaut : @code{"any"}) |
adfb167f JL |
20733 | L'adresse sur laquelle se lie mpd. Pour utiliser un socket Unix domain, un |
20734 | chemin absolu peut être spécifié ici. | |
bf5c74e7 JL |
20735 | |
20736 | @end table | |
20737 | @end deftp | |
20738 | ||
3cacfa9e | 20739 | @node Services de virtualisation |
15f1bff4 | 20740 | @subsection services de virtualisation |
bf5c74e7 | 20741 | |
adfb167f JL |
20742 | Le module @code{(gnu services virtualization)} fournit des services pour les |
20743 | démons libvirt et virtlog, ainsi que d'autres services liés à la | |
20744 | virtualisation. | |
bf5c74e7 | 20745 | |
adfb167f JL |
20746 | @subsubheading démon libvirt |
20747 | @code{libvirtd} est le démon côté serveur du système de gestion de | |
20748 | virtualisation libvirt. Ce démon tourne sur des serveurs hôtes et effectue | |
20749 | les taches de gestion requises pour les clients virtualisés. | |
bf5c74e7 | 20750 | |
1d8d69c8 | 20751 | @deffn {Variable Scheme} libvirt-service-type |
adfb167f JL |
20752 | C'est le type du @uref{https://libvirt.org, démon libvirt}. Sa valeur doit |
20753 | être un @code{libvirt-configuration}. | |
bf5c74e7 JL |
20754 | |
20755 | @example | |
20756 | (service libvirt-service-type | |
20757 | (libvirt-configuration | |
20758 | (unix-sock-group "libvirt") | |
20759 | (tls-port "16555"))) | |
20760 | @end example | |
20761 | @end deffn | |
20762 | ||
20763 | @c Auto-generated with (generate-libvirt-documentation) | |
1d8d69c8 | 20764 | Les champs de @code{libvirt-configuration} disponibles sont : |
bf5c74e7 | 20765 | |
1d8d69c8 | 20766 | @deftypevr {paramètre de @code{libvirt-configuration}} package libvirt |
adfb167f | 20767 | Paquet libvirt. |
bf5c74e7 JL |
20768 | |
20769 | @end deftypevr | |
20770 | ||
1d8d69c8 | 20771 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean listen-tls? |
adfb167f JL |
20772 | Indique s'il faut écouter des connexions TLS sécurisées sur le port TCP/IP |
20773 | public. Vous devez remplir le champ @code{listen} pour que cela ait un | |
20774 | effet. | |
bf5c74e7 | 20775 | |
adfb167f JL |
20776 | Il est nécessaire de mettre en place une CA et de créer un certificat |
20777 | serveur avant d'utiliser cette fonctionnalité. | |
bf5c74e7 | 20778 | |
1d8d69c8 | 20779 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
20780 | |
20781 | @end deftypevr | |
20782 | ||
1d8d69c8 | 20783 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean listen-tcp? |
adfb167f JL |
20784 | Écoute des connexions non-chiffrées sur le port TCP/IP public. Vous devez |
20785 | remplir le champ @code{listen} pour que cela ait un effet. | |
bf5c74e7 | 20786 | |
adfb167f JL |
20787 | L'utilisation des sockets TCP requiert une authentification SASL par |
20788 | défaut. Seuls les mécanismes SASL qui supportent le chiffrement des données | |
20789 | sont permis. Il s'agit de DIGEST_MD5 et GSSAPI (Kerberos5). | |
bf5c74e7 | 20790 | |
1d8d69c8 | 20791 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
20792 | |
20793 | @end deftypevr | |
20794 | ||
1d8d69c8 | 20795 | @deftypevr {paramètre de @code{libvirt-configuration}} string tls-port |
adfb167f JL |
20796 | Pour pour accepter les connexions TLS sécurisées. Il peut s'agir d'un |
20797 | numéro de port ou d'un nom de service. | |
bf5c74e7 | 20798 | |
1d8d69c8 | 20799 | La valeur par défaut est @samp{"16514"}. |
bf5c74e7 JL |
20800 | |
20801 | @end deftypevr | |
20802 | ||
1d8d69c8 | 20803 | @deftypevr {paramètre de @code{libvirt-configuration}} string tcp-port |
adfb167f JL |
20804 | Pour sur lequel accepter les connexions TCP non sécurisées. Cela peut être |
20805 | un numéro de port ou un nom de service. | |
bf5c74e7 | 20806 | |
1d8d69c8 | 20807 | La valeur par défaut est @samp{"16509"}. |
bf5c74e7 JL |
20808 | |
20809 | @end deftypevr | |
20810 | ||
1d8d69c8 | 20811 | @deftypevr {paramètre de @code{libvirt-configuration}} string listen-addr |
adfb167f | 20812 | Adresse IP ou nom d'hôte utilisé pour les connexions des clients. |
bf5c74e7 | 20813 | |
1d8d69c8 | 20814 | La valeur par défaut est @samp{"0.0.0.0"}. |
bf5c74e7 JL |
20815 | |
20816 | @end deftypevr | |
20817 | ||
1d8d69c8 | 20818 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean mdns-adv? |
adfb167f | 20819 | Indique s'il faut publier le service libvirt en mDNS. |
bf5c74e7 | 20820 | |
adfb167f JL |
20821 | Autrement, vous pouvez désactiver cela pour tous les services en stoppant le |
20822 | démon Avahi. | |
bf5c74e7 | 20823 | |
1d8d69c8 | 20824 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
20825 | |
20826 | @end deftypevr | |
20827 | ||
1d8d69c8 | 20828 | @deftypevr {paramètre de @code{libvirt-configuration}} string mdns-name |
adfb167f | 20829 | Nom publié par défaut sur mDNS. Cela doit être unique sur le réseau local. |
bf5c74e7 | 20830 | |
1d8d69c8 | 20831 | La valeur par défaut est @samp{"Virtualization Host <hostname>"}. |
bf5c74e7 JL |
20832 | |
20833 | @end deftypevr | |
20834 | ||
1d8d69c8 | 20835 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-group |
adfb167f JL |
20836 | Groupe propriétaire du socket Unix domain. Cela peut être utilisé pour |
20837 | permettre à un ensemble d'utilisateurs « de confiance » de gérer les | |
20838 | fonctionnalités sans devenir root. | |
bf5c74e7 | 20839 | |
1d8d69c8 | 20840 | La valeur par défaut est @samp{"root"}. |
bf5c74e7 JL |
20841 | |
20842 | @end deftypevr | |
20843 | ||
1d8d69c8 | 20844 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-ro-perms |
adfb167f JL |
20845 | Permission Unix pour le socket en lecture seule. Il est utilisé pour |
20846 | surveiller le statut des VM uniquement. | |
bf5c74e7 | 20847 | |
1d8d69c8 | 20848 | La valeur par défaut est @samp{"0777"}. |
bf5c74e7 JL |
20849 | |
20850 | @end deftypevr | |
20851 | ||
1d8d69c8 | 20852 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-rw-perms |
adfb167f JL |
20853 | Permission Unix pour le socket en lecture-écriture. La valeur par défaut |
20854 | n'autorise que root. Si PolicyKit est activé sur le socket, la valeur par | |
20855 | défaut change et permet tout le monde (c.-à-d.@: 0777). | |
bf5c74e7 | 20856 | |
1d8d69c8 | 20857 | La valeur par défaut est @samp{"0770"}. |
bf5c74e7 JL |
20858 | |
20859 | @end deftypevr | |
20860 | ||
1d8d69c8 | 20861 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-admin-perms |
adfb167f JL |
20862 | permissions Unix pour le socket d'administration. La valeur par défaut ne |
20863 | permet que le propriétaire (root), ne la changez pas à moins que vous ne | |
20864 | soyez sûr de savoir à qui vous exposez cet accès. | |
bf5c74e7 | 20865 | |
1d8d69c8 | 20866 | La valeur par défaut est @samp{"0777"}. |
bf5c74e7 JL |
20867 | |
20868 | @end deftypevr | |
20869 | ||
1d8d69c8 | 20870 | @deftypevr {paramètre de @code{libvirt-configuration}} string unix-sock-dir |
adfb167f | 20871 | Le répertoire dans lequel les sockets sont créés. |
bf5c74e7 | 20872 | |
1d8d69c8 | 20873 | La valeur par défaut est @samp{"/var/run/libvirt"}. |
bf5c74e7 JL |
20874 | |
20875 | @end deftypevr | |
20876 | ||
1d8d69c8 | 20877 | @deftypevr {paramètre de @code{libvirt-configuration}} string auth-unix-ro |
adfb167f JL |
20878 | Schéma d'authentification pour les socket Unix en lecture-seule. Par défaut |
20879 | les permissions des socket permettent à n'importe qui de se connecter. | |
bf5c74e7 | 20880 | |
1d8d69c8 | 20881 | La valeur par défaut est @samp{"polkit"}. |
bf5c74e7 JL |
20882 | |
20883 | @end deftypevr | |
20884 | ||
1d8d69c8 | 20885 | @deftypevr {paramètre de @code{libvirt-configuration}} string auth-unix-rw |
adfb167f JL |
20886 | Schéma d'authentification pour les socket UNIX en lecture-écriture. Par |
20887 | défaut les permissions du socket ne permettent que root. Si le support de | |
20888 | PolicyKit a été compilé dans libvirt, la valeur par défaut utilise | |
20889 | l'authentification « polkit ». | |
bf5c74e7 | 20890 | |
1d8d69c8 | 20891 | La valeur par défaut est @samp{"polkit"}. |
bf5c74e7 JL |
20892 | |
20893 | @end deftypevr | |
20894 | ||
1d8d69c8 | 20895 | @deftypevr {paramètre de @code{libvirt-configuration}} string auth-tcp |
adfb167f JL |
20896 | Schéma d'authentification pour les sockets TCP. Si vous n'avez pas activé |
20897 | SASL, alors tout le trafic TCP est en clair. Ne le faites pas en dehors de | |
20898 | scénario de développement ou de test. | |
bf5c74e7 | 20899 | |
1d8d69c8 | 20900 | La valeur par défaut est @samp{"sasl"}. |
bf5c74e7 JL |
20901 | |
20902 | @end deftypevr | |
20903 | ||
1d8d69c8 | 20904 | @deftypevr {paramètre de @code{libvirt-configuration}} string auth-tls |
adfb167f JL |
20905 | Schéma d'authentification pour les sockets TLS. Les sockets TLS sont déjà |
20906 | chiffrés par la couche TLS, et une authentification limitée est effectuée | |
20907 | avec les certificats. | |
bf5c74e7 | 20908 | |
adfb167f JL |
20909 | Il est possible d'utiliser de n'importe quel mécanisme d'authentification |
20910 | SASL en utilisant « sasl » pour cette option. | |
bf5c74e7 | 20911 | |
1d8d69c8 | 20912 | La valeur par défaut est @samp{"none"}. |
bf5c74e7 JL |
20913 | |
20914 | @end deftypevr | |
20915 | ||
1d8d69c8 | 20916 | @deftypevr {paramètre de @code{libvirt-configuration}} optional-list access-drivers |
adfb167f | 20917 | Schéma de contrôle d'accès à l'API. |
bf5c74e7 | 20918 | |
adfb167f JL |
20919 | Par défaut un utilisateur authentifié peut accéder à toutes les API. Les |
20920 | pilotes d'accès peuvent placer des restrictions là-dessus. | |
bf5c74e7 | 20921 | |
1d8d69c8 | 20922 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
20923 | |
20924 | @end deftypevr | |
20925 | ||
1d8d69c8 | 20926 | @deftypevr {paramètre de @code{libvirt-configuration}} string key-file |
adfb167f JL |
20927 | Chemin de fichier de la clef du serveur. Si la valeur est une chaîne vide, |
20928 | aucune clef privée n'est chargée. | |
bf5c74e7 | 20929 | |
1d8d69c8 | 20930 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
20931 | |
20932 | @end deftypevr | |
20933 | ||
1d8d69c8 | 20934 | @deftypevr {paramètre de @code{libvirt-configuration}} string cert-file |
adfb167f JL |
20935 | Chemin de fichier de la clef du serveur. Si la chaîne est vide, aucun |
20936 | certificat n'est chargé. | |
bf5c74e7 | 20937 | |
1d8d69c8 | 20938 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
20939 | |
20940 | @end deftypevr | |
20941 | ||
1d8d69c8 | 20942 | @deftypevr {paramètre de @code{libvirt-configuration}} string ca-file |
adfb167f JL |
20943 | Chemin de fichier de la clef du serveur. Si la chaîne est vide, aucun |
20944 | certificat de CA n'est chargé. | |
bf5c74e7 | 20945 | |
1d8d69c8 | 20946 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
20947 | |
20948 | @end deftypevr | |
20949 | ||
1d8d69c8 | 20950 | @deftypevr {paramètre de @code{libvirt-configuration}} string crl-file |
adfb167f JL |
20951 | Chemin de la liste de révocation des certificats. Si la chaîne est vide, |
20952 | aucun CRL n'est chargé. | |
bf5c74e7 | 20953 | |
1d8d69c8 | 20954 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
20955 | |
20956 | @end deftypevr | |
20957 | ||
1d8d69c8 | 20958 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean tls-no-sanity-cert |
adfb167f | 20959 | Désactive la vérification de nos propres certificats serveurs. |
bf5c74e7 | 20960 | |
adfb167f JL |
20961 | Lorsque libvirtd démarre il effectue des vérifications de routine sur ses |
20962 | propres certificats. | |
bf5c74e7 | 20963 | |
1d8d69c8 | 20964 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
20965 | |
20966 | @end deftypevr | |
20967 | ||
1d8d69c8 | 20968 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean tls-no-verify-cert |
adfb167f | 20969 | Désactive la vérification des certificats clients. |
bf5c74e7 | 20970 | |
adfb167f JL |
20971 | La vérification des certificats clients est le mécanisme d'authentification |
20972 | principal. Tout client qui ne présent pas de certificat signé par la CA | |
20973 | sera rejeté. | |
bf5c74e7 | 20974 | |
1d8d69c8 | 20975 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
20976 | |
20977 | @end deftypevr | |
20978 | ||
1d8d69c8 | 20979 | @deftypevr {paramètre de @code{libvirt-configuration}} optional-list tls-allowed-dn-list |
adfb167f | 20980 | Liste blanche des Distinguished Name x509 autorisés. |
bf5c74e7 | 20981 | |
1d8d69c8 | 20982 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
20983 | |
20984 | @end deftypevr | |
20985 | ||
1d8d69c8 | 20986 | @deftypevr {paramètre de @code{libvirt-configuration}} optional-list sasl-allowed-usernames |
adfb167f JL |
20987 | Liste blanche des noms d'utilisateur SASL permis. Le format des noms |
20988 | d'utilisateurs dépend du mécanisme d'authentification SASL. | |
bf5c74e7 | 20989 | |
1d8d69c8 | 20990 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
20991 | |
20992 | @end deftypevr | |
20993 | ||
1d8d69c8 | 20994 | @deftypevr {paramètre de @code{libvirt-configuration}} string tls-priority |
adfb167f JL |
20995 | Modifie la chaîne de priorité TLS par défaut fixée à la compilation. La |
20996 | valeur par défaut est typiquement « NORMAL » à moins qu'elle n'ait été | |
20997 | modifiée à la compilation. Ne l'indiquez que si vous voulez que libvirt | |
20998 | agisse différemment des paramètres par défaut globaux. | |
bf5c74e7 | 20999 | |
1d8d69c8 | 21000 | La valeur par défaut est @samp{"NORMAL"}. |
bf5c74e7 JL |
21001 | |
21002 | @end deftypevr | |
21003 | ||
1d8d69c8 | 21004 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-clients |
adfb167f | 21005 | Nombre maximum de connexions clientes en même temps sur tous les sockets. |
bf5c74e7 | 21006 | |
1d8d69c8 | 21007 | La valeur par défaut est @samp{5000}. |
bf5c74e7 JL |
21008 | |
21009 | @end deftypevr | |
21010 | ||
1d8d69c8 | 21011 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-queued-clients |
adfb167f JL |
21012 | Longueur maximum de la queue de connexions en attente d'acceptation du |
21013 | démon. Remarquez que certains protocoles supportant la retransmission | |
21014 | peuvent obéir à ce paramètre pour qu'une connexion ultérieure réussisse. | |
bf5c74e7 | 21015 | |
1d8d69c8 | 21016 | La valeur par défaut est @samp{1000}. |
bf5c74e7 JL |
21017 | |
21018 | @end deftypevr | |
21019 | ||
1d8d69c8 | 21020 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-anonymous-clients |
adfb167f JL |
21021 | Longueur maximum de la queue des clients acceptés mais pas authentifiés. |
21022 | Indiquez zéro pour désactiver ce paramètre. | |
bf5c74e7 | 21023 | |
1d8d69c8 | 21024 | La valeur par défaut est @samp{20}. |
bf5c74e7 JL |
21025 | |
21026 | @end deftypevr | |
21027 | ||
1d8d69c8 | 21028 | @deftypevr {paramètre de @code{libvirt-configuration}} integer min-workers |
adfb167f | 21029 | Nombre de processus de travail démarrés initialement. |
bf5c74e7 | 21030 | |
1d8d69c8 | 21031 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21032 | |
21033 | @end deftypevr | |
21034 | ||
1d8d69c8 | 21035 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-workers |
adfb167f | 21036 | Nombre maximum de threads de travail. |
bf5c74e7 | 21037 | |
adfb167f JL |
21038 | Si le nombre de clients actifs dépasse @code{min-workers}, plus de threads |
21039 | seront démarrés, jusqu'à la limite de max_workers. Typiquement vous voulez | |
21040 | que max_workers soit égal au nombre maximum de clients permis. | |
bf5c74e7 | 21041 | |
1d8d69c8 | 21042 | La valeur par défaut est @samp{20}. |
bf5c74e7 JL |
21043 | |
21044 | @end deftypevr | |
21045 | ||
1d8d69c8 | 21046 | @deftypevr {paramètre de @code{libvirt-configuration}} integer prio-workers |
adfb167f JL |
21047 | Nombre de travailleurs prioritaires. Si tous les threads de travail du |
21048 | groupe ci-dessus sont bloqués, certains appels marqués comme prioritaires | |
21049 | (notamment domainDestroy) peuvent être exécutés par ce groupe. | |
bf5c74e7 | 21050 | |
1d8d69c8 | 21051 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21052 | |
21053 | @end deftypevr | |
21054 | ||
1d8d69c8 | 21055 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-requests |
adfb167f | 21056 | Limite globale totale sur les appels RPC concurrents. |
bf5c74e7 | 21057 | |
1d8d69c8 | 21058 | La valeur par défaut est @samp{20}. |
bf5c74e7 JL |
21059 | |
21060 | @end deftypevr | |
21061 | ||
1d8d69c8 | 21062 | @deftypevr {paramètre de @code{libvirt-configuration}} integer max-client-requests |
15f1bff4 JL |
21063 | Limite de requêtes concurrentes depuis une connexion cliente unique. Pour |
21064 | éviter qu'un client ne monopolise le serveur, vous devriez indiquer une | |
21065 | petite partie des paramètres global max_requests et max_workers. | |
bf5c74e7 | 21066 | |
1d8d69c8 | 21067 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21068 | |
21069 | @end deftypevr | |
21070 | ||
1d8d69c8 | 21071 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-min-workers |
15f1bff4 | 21072 | Comme @code{min-workers} mais pour l'interface d'administration. |
bf5c74e7 | 21073 | |
1d8d69c8 | 21074 | La valeur par défaut est @samp{1}. |
bf5c74e7 JL |
21075 | |
21076 | @end deftypevr | |
21077 | ||
1d8d69c8 | 21078 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-max-workers |
15f1bff4 | 21079 | Comme @code{max-workers} mais pour l'interface d'administration. |
bf5c74e7 | 21080 | |
1d8d69c8 | 21081 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21082 | |
21083 | @end deftypevr | |
21084 | ||
1d8d69c8 | 21085 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-max-clients |
15f1bff4 | 21086 | Comme @code{max-clients} mais pour l'interface d'administration. |
bf5c74e7 | 21087 | |
1d8d69c8 | 21088 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21089 | |
21090 | @end deftypevr | |
21091 | ||
1d8d69c8 | 21092 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-max-queued-clients |
15f1bff4 | 21093 | Comme @code{max-queued-clients} mais pour l'interface d'administration. |
bf5c74e7 | 21094 | |
1d8d69c8 | 21095 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21096 | |
21097 | @end deftypevr | |
21098 | ||
1d8d69c8 | 21099 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-max-client-requests |
15f1bff4 | 21100 | Comme @code{max-client-requests} mais pour l'interface d'administration. |
bf5c74e7 | 21101 | |
1d8d69c8 | 21102 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21103 | |
21104 | @end deftypevr | |
21105 | ||
1d8d69c8 | 21106 | @deftypevr {paramètre de @code{libvirt-configuration}} integer log-level |
15f1bff4 JL |
21107 | Niveau de journalisation. 4 : erreurs, 3 : avertissements, 2 : information, |
21108 | 1 : débogage. | |
bf5c74e7 | 21109 | |
1d8d69c8 | 21110 | La valeur par défaut est @samp{3}. |
bf5c74e7 JL |
21111 | |
21112 | @end deftypevr | |
21113 | ||
1d8d69c8 | 21114 | @deftypevr {paramètre de @code{libvirt-configuration}} string log-filters |
15f1bff4 | 21115 | Filtres de journalisation. |
bf5c74e7 | 21116 | |
15f1bff4 JL |
21117 | Un filtre qui permet de sélectionner plusieurs niveaux de journalisation |
21118 | pour une catégorie donnée. Le format d'un filtre est : | |
bf5c74e7 JL |
21119 | |
21120 | @itemize @bullet | |
21121 | @item | |
adfb167f | 21122 | x:nom |
bf5c74e7 JL |
21123 | |
21124 | @item | |
adfb167f | 21125 | x:+nom |
bf5c74e7 JL |
21126 | |
21127 | @end itemize | |
21128 | ||
15f1bff4 JL |
21129 | où @code{nom} est une chaîne de caractères qui correspond à la catégorie |
21130 | donnée dans @code{VIR_LOG_INIT()} au début de chaque fichier source de | |
21131 | libvirt, p.@: ex.@: « remote », « qemu » ou « util.json » (le nom dans le | |
21132 | filtre peut être une sous-chaîne du nom complet de la catégorie, pour | |
21133 | pouvoir correspondre à plusieurs catégories similaires), le préfixe | |
21134 | facultatif « + » dit à libvirt d'enregistrer les traces de piles pour chaque | |
21135 | message qui correspond au nom, et @code{x} est le niveau minimal des | |
21136 | messages qui devraient être enregistrés : | |
bf5c74e7 JL |
21137 | |
21138 | @itemize @bullet | |
21139 | @item | |
15f1bff4 | 21140 | 1 : DEBUG |
bf5c74e7 JL |
21141 | |
21142 | @item | |
15f1bff4 | 21143 | 2 : INFO |
bf5c74e7 JL |
21144 | |
21145 | @item | |
15f1bff4 | 21146 | 3 : WARNING |
bf5c74e7 JL |
21147 | |
21148 | @item | |
15f1bff4 | 21149 | 4 : ERROR |
bf5c74e7 JL |
21150 | |
21151 | @end itemize | |
21152 | ||
15f1bff4 JL |
21153 | On peut définir plusieurs filtres dans une seule déclaration de filtres, ils |
21154 | doivent juste être séparés par des espaces. | |
bf5c74e7 | 21155 | |
1d8d69c8 | 21156 | La valeur par défaut est @samp{"3:remote 4:event"}. |
bf5c74e7 JL |
21157 | |
21158 | @end deftypevr | |
21159 | ||
1d8d69c8 | 21160 | @deftypevr {paramètre de @code{libvirt-configuration}} string log-outputs |
15f1bff4 | 21161 | Sorties de débogage. |
bf5c74e7 | 21162 | |
15f1bff4 JL |
21163 | Une sortie est l'un des endroits où les journaux sont enregistrés. Le |
21164 | format d'une sortie peut être : | |
bf5c74e7 JL |
21165 | |
21166 | @table @code | |
21167 | @item x:stderr | |
15f1bff4 | 21168 | la sortie va vers stderr |
bf5c74e7 | 21169 | |
15f1bff4 JL |
21170 | @item x:syslog:nom |
21171 | utilise syslog comme sortie et utilise le nom donné comme identifiant | |
bf5c74e7 | 21172 | |
15f1bff4 JL |
21173 | @item x:file:chemin_fichier |
21174 | la sortie va vers un fichier, avec le chemin donné | |
bf5c74e7 JL |
21175 | |
21176 | @item x:journald | |
15f1bff4 | 21177 | la sortie va vers le système de journalisation journald |
bf5c74e7 JL |
21178 | |
21179 | @end table | |
21180 | ||
15f1bff4 JL |
21181 | Dans tous les cas, le préfixe x est le niveau minimal, qui agit comme un |
21182 | filtre | |
bf5c74e7 JL |
21183 | |
21184 | @itemize @bullet | |
21185 | @item | |
15f1bff4 | 21186 | 1 : DEBUG |
bf5c74e7 JL |
21187 | |
21188 | @item | |
15f1bff4 | 21189 | 2 : INFO |
bf5c74e7 JL |
21190 | |
21191 | @item | |
15f1bff4 | 21192 | 3 : WARNING |
bf5c74e7 JL |
21193 | |
21194 | @item | |
15f1bff4 | 21195 | 4 : ERROR |
bf5c74e7 JL |
21196 | |
21197 | @end itemize | |
21198 | ||
15f1bff4 JL |
21199 | Plusieurs sorties peuvent être définies, elles doivent juste être séparées |
21200 | par des espaces. | |
bf5c74e7 | 21201 | |
1d8d69c8 | 21202 | La valeur par défaut est @samp{"3:stderr"}. |
bf5c74e7 JL |
21203 | |
21204 | @end deftypevr | |
21205 | ||
1d8d69c8 | 21206 | @deftypevr {paramètre de @code{libvirt-configuration}} integer audit-level |
15f1bff4 | 21207 | Permet de modifier l'utilisation du sous-système d'audit. |
bf5c74e7 JL |
21208 | |
21209 | @itemize @bullet | |
21210 | @item | |
15f1bff4 | 21211 | 0 : désactive tout audit |
bf5c74e7 JL |
21212 | |
21213 | @item | |
15f1bff4 | 21214 | 1 : active l'audit, seulement s'il est activé sur l'hôte |
bf5c74e7 JL |
21215 | |
21216 | @item | |
15f1bff4 | 21217 | 2 : active l'audit, et quitte s'il est désactivé sur l'hôte. |
bf5c74e7 JL |
21218 | |
21219 | @end itemize | |
21220 | ||
1d8d69c8 | 21221 | La valeur par défaut est @samp{1}. |
bf5c74e7 JL |
21222 | |
21223 | @end deftypevr | |
21224 | ||
1d8d69c8 | 21225 | @deftypevr {paramètre de @code{libvirt-configuration}} boolean audit-logging |
15f1bff4 JL |
21226 | Envoie les messages d'audit via l'infrastructure de journalisation de |
21227 | libvirt | |
bf5c74e7 | 21228 | |
1d8d69c8 | 21229 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21230 | |
21231 | @end deftypevr | |
21232 | ||
1d8d69c8 | 21233 | @deftypevr {paramètre de @code{libvirt-configuration}} optional-string host-uuid |
15f1bff4 | 21234 | UUID de l'hôte. L'UUID ne doit pas avoir tous ses nombres identiques. |
bf5c74e7 | 21235 | |
1d8d69c8 | 21236 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
21237 | |
21238 | @end deftypevr | |
21239 | ||
1d8d69c8 | 21240 | @deftypevr {paramètre de @code{libvirt-configuration}} string host-uuid-source |
15f1bff4 | 21241 | Source où lire l'UUID de l'hôte. |
bf5c74e7 JL |
21242 | |
21243 | @itemize @bullet | |
21244 | @item | |
15f1bff4 | 21245 | @code{smbios} : récupère l'UUID à partir de @code{dmidecode -s system-uuid} |
bf5c74e7 JL |
21246 | |
21247 | @item | |
15f1bff4 | 21248 | @code{machine-id} : récupère l'UUID à partir de @code{/etc/machine-id} |
bf5c74e7 JL |
21249 | |
21250 | @end itemize | |
21251 | ||
15f1bff4 JL |
21252 | Si @code{dmidecode} ne fournit pas un UUID valide, un UUID temporaire sera |
21253 | généré. | |
bf5c74e7 | 21254 | |
1d8d69c8 | 21255 | La valeur par défaut est @samp{"smbios"}. |
bf5c74e7 JL |
21256 | |
21257 | @end deftypevr | |
21258 | ||
1d8d69c8 | 21259 | @deftypevr {paramètre de @code{libvirt-configuration}} integer keepalive-interval |
15f1bff4 JL |
21260 | Un message keepalive est envoyé au client après @code{keepalive_interval} |
21261 | secondes d'inactivité pour vérifier si le client répond toujours. Si la | |
21262 | valeur est -1, libvirtd n'enverra jamais de requête keepalive ; cependant | |
21263 | les clients peuvent toujours en envoyer et le démon y répondra. | |
bf5c74e7 | 21264 | |
1d8d69c8 | 21265 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21266 | |
21267 | @end deftypevr | |
21268 | ||
1d8d69c8 | 21269 | @deftypevr {paramètre de @code{libvirt-configuration}} integer keepalive-count |
15f1bff4 JL |
21270 | Nombre maximum de messages keepalive qui peuvent être envoyés au client sans |
21271 | réponse avant que la connexion ne soit considérée comme cassée. | |
bf5c74e7 | 21272 | |
15f1bff4 JL |
21273 | En d'autres termes, la connexion est approximativement fermée après |
21274 | @code{keepalive_interval * (keepalive_count + 1)} secondes après le dernier | |
21275 | message reçu de la part du client. Lorsque @code{keepalive-count} est à 0, | |
21276 | les connexions seront automatiquement fermées après | |
21277 | @code{keepalive-interval} secondes d'inactivité sans envoyer le moindre | |
21278 | message keepalive. | |
bf5c74e7 | 21279 | |
1d8d69c8 | 21280 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21281 | |
21282 | @end deftypevr | |
21283 | ||
1d8d69c8 | 21284 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-keepalive-interval |
15f1bff4 | 21285 | Comme précédemment, mais pour l'interface d'administration. |
bf5c74e7 | 21286 | |
1d8d69c8 | 21287 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21288 | |
21289 | @end deftypevr | |
21290 | ||
1d8d69c8 | 21291 | @deftypevr {paramètre de @code{libvirt-configuration}} integer admin-keepalive-count |
15f1bff4 | 21292 | Comme précédemment, mais pour l'interface d'administration. |
bf5c74e7 | 21293 | |
1d8d69c8 | 21294 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21295 | |
21296 | @end deftypevr | |
21297 | ||
1d8d69c8 | 21298 | @deftypevr {paramètre de @code{libvirt-configuration}} integer ovs-timeout |
15f1bff4 | 21299 | Délai d'attente pour les appels Open vSwitch. |
bf5c74e7 | 21300 | |
15f1bff4 JL |
21301 | L'utilitaire @code{ovs-vsctl} est utilisé pour la configuration et son |
21302 | option de délai d'attente est à 5 secondes pour éviter qu'une attente | |
21303 | infinie ne bloque libvirt. | |
bf5c74e7 | 21304 | |
1d8d69c8 | 21305 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21306 | |
21307 | @end deftypevr | |
21308 | ||
21309 | @c %end of autogenerated docs | |
21310 | ||
adfb167f | 21311 | @subsubheading démon Virrlog |
15f1bff4 JL |
21312 | Le service virtlogd est un démon côté serveur qui fait partie de libvirt, |
21313 | utilisé pour gérer les journaux des consoles des machines virtuelles. | |
bf5c74e7 | 21314 | |
15f1bff4 JL |
21315 | Ce démon n'est pas utilisé directement par les clients libvirt, mais il est |
21316 | appelé pour eux par @code{libvirtd}. En maintenant les journaux dans un | |
21317 | démon séparé, le démon @code{libvirtd} principal peut être redémarré sans | |
21318 | risque de perte de journaux. Le démon @code{virtlogd} a la possibilité de | |
21319 | ré-exécuter exec() sur lui-même quand il reçoit @code{SIGUSR1}, pour | |
21320 | permettre des mises à jour à chaux sans temps mort. | |
bf5c74e7 | 21321 | |
1d8d69c8 | 21322 | @deffn {Variable Scheme} virtlog-service-type |
15f1bff4 | 21323 | Le type de service pour le démon virtlogd. Sa valeur doit être un |
bf5c74e7 JL |
21324 | @code{virtlog-configuration}. |
21325 | ||
21326 | @example | |
21327 | (service virtlog-service-type | |
21328 | (virtlog-configuration | |
21329 | (max-clients 1000))) | |
21330 | @end example | |
21331 | @end deffn | |
21332 | ||
1d8d69c8 | 21333 | @deftypevr {paramètre de @code{virtlog-configuration}} integer log-level |
15f1bff4 JL |
21334 | Niveau de journalisation. 4 : erreurs, 3 : avertissements, 2 : information, |
21335 | 1 : débogage. | |
bf5c74e7 | 21336 | |
1d8d69c8 | 21337 | La valeur par défaut est @samp{3}. |
bf5c74e7 JL |
21338 | |
21339 | @end deftypevr | |
21340 | ||
1d8d69c8 | 21341 | @deftypevr {paramètre de @code{virtlog-configuration}} string log-filters |
15f1bff4 | 21342 | Filtres de journalisation. |
bf5c74e7 | 21343 | |
15f1bff4 JL |
21344 | Un filtre qui permet de sélectionner plusieurs niveaux de journalisation |
21345 | pour une catégorie donnée. Le format d'un filtre est : | |
bf5c74e7 JL |
21346 | |
21347 | @itemize @bullet | |
21348 | @item | |
adfb167f | 21349 | x:nom |
bf5c74e7 JL |
21350 | |
21351 | @item | |
adfb167f | 21352 | x:+nom |
bf5c74e7 JL |
21353 | |
21354 | @end itemize | |
21355 | ||
15f1bff4 JL |
21356 | où @code{nom} est une chaîne de caractères qui correspond à la catégorie |
21357 | donnée dans @code{VIR_LOG_INIT()} au début de chaque fichier source de | |
21358 | libvirt, p.@: ex.@: « remote », « qemu » ou « util.json » (le nom dans le | |
21359 | filtre peut être une sous-chaîne du nom complet de la catégorie, pour | |
21360 | pouvoir correspondre à plusieurs catégories similaires), le préfixe | |
21361 | facultatif « + » dit à libvirt d'enregistrer les traces de piles pour chaque | |
21362 | message qui correspond au nom, et @code{x} est le niveau minimal des | |
21363 | messages qui devraient être enregistrés : | |
bf5c74e7 JL |
21364 | |
21365 | @itemize @bullet | |
21366 | @item | |
15f1bff4 | 21367 | 1 : DEBUG |
bf5c74e7 JL |
21368 | |
21369 | @item | |
15f1bff4 | 21370 | 2 : INFO |
bf5c74e7 JL |
21371 | |
21372 | @item | |
15f1bff4 | 21373 | 3 : WARNING |
bf5c74e7 JL |
21374 | |
21375 | @item | |
15f1bff4 | 21376 | 4 : ERROR |
bf5c74e7 JL |
21377 | |
21378 | @end itemize | |
21379 | ||
15f1bff4 JL |
21380 | On peut définir plusieurs filtres dans une seule déclaration de filtres, ils |
21381 | doivent juste être séparés par des espaces. | |
bf5c74e7 | 21382 | |
1d8d69c8 | 21383 | La valeur par défaut est @samp{"3:remote 4:event"}. |
bf5c74e7 JL |
21384 | |
21385 | @end deftypevr | |
21386 | ||
1d8d69c8 | 21387 | @deftypevr {paramètre de @code{virtlog-configuration}} string log-outputs |
15f1bff4 | 21388 | Sorties de débogage. |
bf5c74e7 | 21389 | |
15f1bff4 JL |
21390 | Une sortie est l'un des endroits où les journaux sont enregistrés. Le |
21391 | format d'une sortie peut être : | |
bf5c74e7 JL |
21392 | |
21393 | @table @code | |
21394 | @item x:stderr | |
15f1bff4 | 21395 | la sortie va vers stderr |
bf5c74e7 | 21396 | |
15f1bff4 JL |
21397 | @item x:syslog:nom |
21398 | utilise syslog comme sortie et utilise le nom donné comme identifiant | |
bf5c74e7 | 21399 | |
15f1bff4 JL |
21400 | @item x:file:chemin_fichier |
21401 | la sortie va vers un fichier, avec le chemin donné | |
bf5c74e7 JL |
21402 | |
21403 | @item x:journald | |
15f1bff4 | 21404 | la sortie va vers le système de journalisation journald |
bf5c74e7 JL |
21405 | |
21406 | @end table | |
21407 | ||
15f1bff4 JL |
21408 | Dans tous les cas, le préfixe x est le niveau minimal, qui agit comme un |
21409 | filtre | |
bf5c74e7 JL |
21410 | |
21411 | @itemize @bullet | |
21412 | @item | |
15f1bff4 | 21413 | 1 : DEBUG |
bf5c74e7 JL |
21414 | |
21415 | @item | |
15f1bff4 | 21416 | 2 : INFO |
bf5c74e7 JL |
21417 | |
21418 | @item | |
15f1bff4 | 21419 | 3 : WARNING |
bf5c74e7 JL |
21420 | |
21421 | @item | |
15f1bff4 | 21422 | 4 : ERROR |
bf5c74e7 JL |
21423 | |
21424 | @end itemize | |
21425 | ||
15f1bff4 JL |
21426 | Plusieurs sorties peuvent être définies, elles doivent juste être séparées |
21427 | par des espaces. | |
bf5c74e7 | 21428 | |
1d8d69c8 | 21429 | La valeur par défaut est @samp{"3:stderr"}. |
bf5c74e7 JL |
21430 | |
21431 | @end deftypevr | |
21432 | ||
1d8d69c8 | 21433 | @deftypevr {paramètre de @code{virtlog-configuration}} integer max-clients |
adfb167f | 21434 | Nombre maximum de connexions clientes en même temps sur tous les sockets. |
bf5c74e7 | 21435 | |
1d8d69c8 | 21436 | La valeur par défaut est @samp{1024}. |
bf5c74e7 JL |
21437 | |
21438 | @end deftypevr | |
21439 | ||
1d8d69c8 | 21440 | @deftypevr {paramètre de @code{virtlog-configuration}} integer max-size |
15f1bff4 | 21441 | Taille de fichier maximale avant roulement. |
bf5c74e7 | 21442 | |
adfb167f | 21443 | La valeur par défaut est @samp{2MB}. |
bf5c74e7 JL |
21444 | |
21445 | @end deftypevr | |
21446 | ||
1d8d69c8 | 21447 | @deftypevr {paramètre de @code{virtlog-configuration}} integer max-backups |
15f1bff4 | 21448 | Nombre maximal de fichiers de sauvegardes à garder. |
bf5c74e7 | 21449 | |
adfb167f | 21450 | La valeur par défaut est @samp{3}. |
bf5c74e7 JL |
21451 | |
21452 | @end deftypevr | |
21453 | ||
adfb167f | 21454 | @subsubheading Émulation transparente avec QEMU |
bf5c74e7 | 21455 | |
adfb167f | 21456 | @cindex émulation |
bf5c74e7 | 21457 | @cindex @code{binfmt_misc} |
15f1bff4 JL |
21458 | @code{qemu-binfmt-service-type} fournit le support de l'émulation |
21459 | transparente de binaires construits pour des architectures différentes — | |
21460 | p.@: ex.@: il permet d'exécuter de manière transparente des programmes ARMv | |
21461 | sur une machine x86_64. Cela se fait en combinant l'émulateur | |
21462 | @uref{https://www.qemu.org, QEMU} et la fonctionnalité @code{binfmt_misc} du | |
21463 | noyau Linux. | |
bf5c74e7 | 21464 | |
1d8d69c8 | 21465 | @defvr {Variable Scheme} qemu-binfmt-service-type |
15f1bff4 JL |
21466 | Le type du service QEMU/binfmt pour l'émulation transparente. Sa valeur |
21467 | doit être un objet @code{qemu-binfmt-configuration}, qui spécifie le paquet | |
21468 | QEMU à utiliser ainsi que l'architecture que vous voulez émuler : | |
bf5c74e7 JL |
21469 | |
21470 | @example | |
21471 | (service qemu-binfmt-service-type | |
21472 | (qemu-binfmt-configuration | |
21473 | (platforms (lookup-qemu-platforms "arm" "aarch64" "ppc")))) | |
21474 | @end example | |
21475 | ||
15f1bff4 JL |
21476 | Dans cet exemple, on active l'émulation transparente pour les plateformes |
21477 | ARM et aarch64. Lancer @code{herd stop qemu-binfmt} l'éteint et lancer | |
21478 | @code{herd start qemu-binfmt} le rallume (@pxref{Invoking herd, the | |
bf5c74e7 JL |
21479 | @command{herd} command,, shepherd, The GNU Shepherd Manual}). |
21480 | @end defvr | |
21481 | ||
1d8d69c8 | 21482 | @deftp {Type de données} qemu-binfmt-configuration |
15f1bff4 | 21483 | La configuration du service @code{qemu-binfmt}. |
bf5c74e7 JL |
21484 | |
21485 | @table @asis | |
1d8d69c8 | 21486 | @item @code{platforms} (par défaut : @code{'()}) |
15f1bff4 JL |
21487 | La liste des plates-formes émulées par QEMU. Chaque élément doit être un |
21488 | objet @dfn{platform object} tel que renvoyé par @code{lookup-qemu-platforms} | |
21489 | (voir plus bas). | |
bf5c74e7 | 21490 | |
1d8d69c8 | 21491 | @item @code{guix-support?} (par défaut : @code{#f}) |
15f1bff4 JL |
21492 | Lorsque la valeur est vraie, QEMU et toutes ses dépendances sont ajoutés à |
21493 | l'environnement de construction de @command{guix-daemon} (@pxref{Invoquer guix-daemon, @code{--chroot-directory} option}). Cela permet d'utiliser les | |
21494 | gestionnaires @code{binfmt_misc} dans l'environnement de cosntruction, ce | |
21495 | qui signifie que vous pouvez construire des programmes pour d'autres | |
21496 | architectures de manière transparente. | |
bf5c74e7 | 21497 | |
15f1bff4 JL |
21498 | Par exemple, supposons que vous soyez sur une machine x86_64 et que vous |
21499 | avez ce services : | |
bf5c74e7 JL |
21500 | |
21501 | @example | |
21502 | (service qemu-binfmt-service-type | |
21503 | (qemu-binfmt-configuration | |
21504 | (platforms (lookup-qemu-platforms "arm")) | |
21505 | (guix-support? #t))) | |
21506 | @end example | |
21507 | ||
adfb167f | 21508 | Vous pouvez lancer : |
bf5c74e7 JL |
21509 | |
21510 | @example | |
21511 | guix build -s armhf-linux inkscape | |
21512 | @end example | |
21513 | ||
21514 | @noindent | |
15f1bff4 JL |
21515 | et cela construira Inkscape pour ARMv7 @emph{comme s'il s'agissait d'une |
21516 | construction native}, de manière transparente avec QEMU pour émuler un CPU | |
21517 | ARMv7. Plutôt pratique si vous voulez tester un paquet construit pour une | |
21518 | architecture à laquelle vous n'avez pas accès ! | |
bf5c74e7 | 21519 | |
1d8d69c8 JL |
21520 | @item @code{qemu} (par défaut : @code{qemu}) |
21521 | Le paquet QEMU à utiliser. | |
bf5c74e7 JL |
21522 | @end table |
21523 | @end deftp | |
21524 | ||
1d8d69c8 | 21525 | @deffn {Procédure Scheme} lookup-qemu-platforms @var{platforms}@dots{} |
15f1bff4 JL |
21526 | Renvoie la liste des objets de plates-formes QEMU correspondant à |
21527 | @var{platforms}@dots{}. @var{platforms} doit être une liste de chaînes de | |
21528 | caractères correspondant aux noms de plates-formes, comme @code{"arm"}, | |
21529 | @code{"sparc"}, @code{"mips64el"} etc. | |
bf5c74e7 JL |
21530 | @end deffn |
21531 | ||
1d8d69c8 | 21532 | @deffn {Procédure Scheme} qemu-platform? @var{obj} |
15f1bff4 | 21533 | Renvoie vrai s i@var{obj} est un objet de plate-forme. |
bf5c74e7 JL |
21534 | @end deffn |
21535 | ||
1d8d69c8 | 21536 | @deffn {Procédure Scheme} qemu-platform-name @var{platform} |
15f1bff4 | 21537 | Renvoie le nom de @var{platform} — une chaîne comme @code{"arm"}. |
bf5c74e7 JL |
21538 | @end deffn |
21539 | ||
3cacfa9e | 21540 | @node Services de contrôle de version |
15f1bff4 | 21541 | @subsection Services de contrôle de version |
bf5c74e7 | 21542 | |
15f1bff4 JL |
21543 | Le module @code{(gnu services version-control)} fournit un service pour |
21544 | permettre l'accès à distance à des dépôts Git locaux. Il y a trois options | |
21545 | : en utilisant @code{git-daemon-service} qui fournit un accès aux dépôts via | |
21546 | le protocole non sécurisé @code{git://} basé sur TCP, en étendant le serveur | |
21547 | web @code{nginx} pour relayer les requêtes vers @code{git-http-backend} ou | |
21548 | en fournissant une interface web avec @code{cgit-service-type}. | |
bf5c74e7 | 21549 | |
1d8d69c8 | 21550 | @deffn {Procédure Scheme} git-daemon-service [#:config (git-daemon-configuration)] |
bf5c74e7 | 21551 | |
15f1bff4 JL |
21552 | Renvoie un service qui lance @command{git daemon}, un serveur TCP simple |
21553 | pour exposer des dépôts sur le protocole Git pour des accès anonymes. | |
bf5c74e7 | 21554 | |
15f1bff4 JL |
21555 | L'argument facultatif @var{config} devrait être un objet |
21556 | @code{<git-daemon-configuration>}, par défaut il permet l'accès en | |
21557 | lecture-seule aux dépôts exportés@footnote{En créant le fichier magique « | |
21558 | git-daemon-export-ok » dans le répertoire du dépôt.} dans @file{/srv/git}. | |
bf5c74e7 JL |
21559 | |
21560 | @end deffn | |
21561 | ||
1d8d69c8 | 21562 | @deftp {Type de données} git-daemon-configuration |
15f1bff4 | 21563 | Type de données représentnt la configuration de @code{git-daemon-service}. |
bf5c74e7 JL |
21564 | |
21565 | @table @asis | |
1d8d69c8 | 21566 | @item @code{package} (par défaut : @var{git}) |
15f1bff4 | 21567 | Objet de paquet du système de contrôle de version distribué Git. |
bf5c74e7 | 21568 | |
1d8d69c8 | 21569 | @item @code{export-all?} (par défaut : @var{#f}) |
15f1bff4 JL |
21570 | Indique s'il faut permettre l'accès à tous les dépôts Git, même s'ils n'ont |
21571 | pas le fichier @file{git-daemon-export-ok}. | |
bf5c74e7 | 21572 | |
adfb167f | 21573 | @item @code{base-path} (par défaut : @file{/srv/git}) |
15f1bff4 JL |
21574 | Indique s'il faut traduire toutes les requêtes de chemins relativement au |
21575 | chemin actuel. Si vous lancez le démon git avec @var{(base-path | |
21576 | "/srv/git")} sur example.com, si vous essayez ensuite de récupérer | |
21577 | @code{git://example.com/hello.git}, le démon git interprétera ce chemin | |
21578 | comme étant @code{/srv/git/hello.git}. | |
bf5c74e7 | 21579 | |
1d8d69c8 | 21580 | @item @code{user-path} (par défaut : @var{#f}) |
15f1bff4 JL |
21581 | Indique s'il faut permettre la notation @code{~user} dans les requêtes. |
21582 | Lorsque spécifié avec une chaîne vide, les requêtes à | |
21583 | @code{git://host/~alice/foo} sont des requêtes d'accès au dépôt @code{foo} | |
21584 | dans le répertoire personnel de l'utilisateur @code{alice}. Si | |
21585 | @var{(user-path "chemin")} est spécifié, la même requête est interprétée | |
21586 | comme accédant au répertoire @code{chemin/foo} dans le répertoire personnel | |
21587 | de l'utilisateur @code{alice}. | |
bf5c74e7 | 21588 | |
1d8d69c8 | 21589 | @item @code{listen} (par défaut : @var{'()}) |
15f1bff4 JL |
21590 | Indique s'il faut écouter sur des adresses IP ou des noms d'hôtes |
21591 | particuliers, par défaut tous. | |
bf5c74e7 | 21592 | |
1d8d69c8 | 21593 | @item @code{port} (par défaut : @var{#f}) |
15f1bff4 | 21594 | Indique s'il faut écouter sur un port particulier, par défaut le 9418. |
bf5c74e7 | 21595 | |
1d8d69c8 | 21596 | @item @code{whitelist} (par défaut : @var{'()}) |
15f1bff4 | 21597 | Si la liste n'est pas vide, n'autoriser l'accès qu'aux dossiers spécifiés. |
bf5c74e7 | 21598 | |
1d8d69c8 | 21599 | @item @code{extra-options} (par défaut : @var{'()}) |
15f1bff4 JL |
21600 | Options supplémentaires qui seront passées à @code{git daemon}, lancez |
21601 | @command{man git-daemon} pour plus d'informations. | |
bf5c74e7 JL |
21602 | |
21603 | @end table | |
21604 | @end deftp | |
21605 | ||
15f1bff4 JL |
21606 | Le protocole @code{git://} ne permet pas l'authentification. Lorsque vous |
21607 | récupérez un dépôt via @code{git://}, vous ne pouvez pas savoir si les | |
21608 | données que vous recevez ont été modifiées ou si elles viennent bien de | |
21609 | l'hôte spécifié, et votre connexion pourrait être espionnée. Il est | |
21610 | préférable d'utiliser un protocole de transport authentifié et chiffré, | |
21611 | comme @code{https}. Bien que Git vous permette de servir des dépôts avec un | |
21612 | serveur web peu sophistiqué basé sur les fichiers, il y a un protocole plus | |
21613 | rapide implémenté par le programme @code{git-http-backend}. Ce programme | |
21614 | est le moteur des services web Git corrects. Il est conçu pour se trouver | |
21615 | derrière un mandataire FastCGI. @xref{Services web} pour plus | |
21616 | d'informations sur la manière de lancer le démon @code{fcgiwrap} nécessaire. | |
21617 | ||
21618 | Guix a un type de données de configuration séparé pour servir des dépôts Git | |
21619 | par HTTP. | |
bf5c74e7 | 21620 | |
1d8d69c8 | 21621 | @deftp {Type de données} git-http-configuration |
15f1bff4 | 21622 | Type de données représentant la configuration de @code{git-http-service}. |
bf5c74e7 JL |
21623 | |
21624 | @table @asis | |
1d8d69c8 | 21625 | @item @code{package} (par défaut : @var{git}) |
15f1bff4 | 21626 | Objet de paquet du système de contrôle de version distribué Git. |
bf5c74e7 | 21627 | |
adfb167f | 21628 | @item @code{git-root} (par défaut : @file{/srv/git}) |
15f1bff4 | 21629 | Répertoire contenant les dépôts Git à exposer au monde. |
bf5c74e7 | 21630 | |
1d8d69c8 | 21631 | @item @code{export-all?} (par défaut : @var{#f}) |
15f1bff4 JL |
21632 | Indique s'il faut exposer l'accès de tous les dépôts Git dans |
21633 | @var{git-root}, même s'ils n'ont pas le fichier @file{git-daemon-export-ok}. | |
bf5c74e7 | 21634 | |
adfb167f | 21635 | @item @code{uri-path} (par défaut : @file{/git/}) |
15f1bff4 JL |
21636 | Préfixe du chemin pour l'accès Git. Avec le préfixe @code{/git/} par |
21637 | défaut, cela traduira @code{http://@var{server}/git/@var{repo}.git} en | |
21638 | @code{/sr/git/@var{repo}.git}. Les requêtes dont les chemins d'URI ne | |
21639 | commencent pas par ce préfixe ne seront pas passées à cette instance de Git. | |
bf5c74e7 | 21640 | |
1d8d69c8 | 21641 | @item @code{fcgiwrap-socket} (par défaut : @code{127.0.0.1:9000}) |
15f1bff4 | 21642 | Le socket sur lequel le démon @code{fcgiwrap} écoute. @xref{Services web}. |
bf5c74e7 JL |
21643 | @end table |
21644 | @end deftp | |
21645 | ||
15f1bff4 JL |
21646 | Il n'y a pas de @code{git-http-service-type}, actuellement ; à la place vous |
21647 | pouvez créer un @code{nginx-location-configuration} à partir d'un | |
21648 | @code{git-http-configuration} puis ajouter cela au serveur web. | |
bf5c74e7 | 21649 | |
1d8d69c8 | 21650 | @deffn {Procédure Scheme} git-http-nginx-location-configuration @ |
15f1bff4 JL |
21651 | [config=(git-http-configuration)] |
21652 | Calcule un @code{nginx-location-configuration} qui correspond à la | |
21653 | configuration http Git donnée. Voici un exemple de définition de service | |
21654 | nginx qui sert le répertoire @file{/srv/git} par défaut en HTTPS : | |
bf5c74e7 JL |
21655 | |
21656 | @example | |
21657 | (service nginx-service-type | |
21658 | (nginx-configuration | |
21659 | (server-blocks | |
21660 | (list | |
21661 | (nginx-server-configuration | |
21662 | (listen '("443 ssl")) | |
21663 | (server-name "git.my-host.org") | |
21664 | (ssl-certificate | |
21665 | "/etc/letsencrypt/live/git.my-host.org/fullchain.pem") | |
21666 | (ssl-certificate-key | |
21667 | "/etc/letsencrypt/live/git.my-host.org/privkey.pem") | |
21668 | (locations | |
21669 | (list | |
21670 | (git-http-nginx-location-configuration | |
21671 | (git-http-configuration (uri-path "/")))))))))) | |
21672 | @end example | |
21673 | ||
15f1bff4 JL |
21674 | Ce exemple suppose que vous utilisez Let's Encrypt pour récupérer votre |
21675 | certificat TLS. @xref{Services de certificats}. Le service @code{certbot} par | |
21676 | défaut redirigera tout le trafic HTTP de @code{git.my-host.org} en HTTPS. | |
21677 | Vous devrez aussi ajouter un mandataire @code{fcgiwrap} à vos services | |
21678 | systèmes. @xref{Services web}. | |
bf5c74e7 JL |
21679 | @end deffn |
21680 | ||
adfb167f | 21681 | @subsubheading Service Cgit |
bf5c74e7 | 21682 | |
adfb167f JL |
21683 | @cindex service cgit |
21684 | @cindex git, interface web | |
21685 | @uref{https://git.zx2c4.com/cgit/, Cgit} est une interface web pour des | |
21686 | dépôts Git écrite en C. | |
bf5c74e7 | 21687 | |
15f1bff4 JL |
21688 | L'exemple suivant configurera le service avec les valeurs par défaut. Par |
21689 | défaut, on peut accéder à Cgit sur le port (@code{http://localhost:80}). | |
bf5c74e7 JL |
21690 | |
21691 | @example | |
21692 | (service cgit-service-type) | |
21693 | @end example | |
21694 | ||
15f1bff4 JL |
21695 | Le type @code{file-object} désigne soit un objet simili-fichier |
21696 | (@pxref{G-Expressions, file-like objects}), soit une chaîne. | |
bf5c74e7 JL |
21697 | |
21698 | @c %start of fragment | |
21699 | ||
1d8d69c8 | 21700 | Les champs de @code{cgit-configuration} disponibles sont : |
bf5c74e7 | 21701 | |
1d8d69c8 | 21702 | @deftypevr {paramètre de @code{cgit-configuration}} package package |
adfb167f | 21703 | Le paquet cgit. |
bf5c74e7 JL |
21704 | |
21705 | @end deftypevr | |
21706 | ||
1d8d69c8 | 21707 | @deftypevr {paramètre de @code{cgit-configuration}} nginx-server-configuration-list nginx |
adfb167f | 21708 | Configuration Nginx. |
bf5c74e7 JL |
21709 | |
21710 | @end deftypevr | |
21711 | ||
1d8d69c8 | 21712 | @deftypevr {paramètre de @code{cgit-configuration}} file-object about-filter |
15f1bff4 JL |
21713 | Spécifie une commande qui doit être invoquée pour formater le contenu des |
21714 | pages « à propos » (au plus haut niveau et pour chaque dépôt). | |
bf5c74e7 | 21715 | |
1d8d69c8 | 21716 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
21717 | |
21718 | @end deftypevr | |
21719 | ||
1d8d69c8 | 21720 | @deftypevr {paramètre de @code{cgit-configuration}} string agefile |
15f1bff4 JL |
21721 | Spécifie un chemin, relativement à chaque dépôt, qui peut être utilisé pour |
21722 | spécifier la date et l'heure du plus récent commit du dépôt. | |
bf5c74e7 | 21723 | |
1d8d69c8 | 21724 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
21725 | |
21726 | @end deftypevr | |
21727 | ||
1d8d69c8 | 21728 | @deftypevr {paramètre de @code{cgit-configuration}} file-object auth-filter |
15f1bff4 | 21729 | Spécifie une commande qui sera invoquée pour authentifier l'accès au dépôt. |
bf5c74e7 | 21730 | |
1d8d69c8 | 21731 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
21732 | |
21733 | @end deftypevr | |
21734 | ||
1d8d69c8 | 21735 | @deftypevr {paramètre de @code{cgit-configuration}} string branch-sort |
15f1bff4 JL |
21736 | Drapeau qui, lorsqu'il vaut @samp{age}, active le trie par date dans la |
21737 | liste des branches, et le trie par nom lorsqu'il vaut @samp{name}. | |
bf5c74e7 | 21738 | |
1d8d69c8 | 21739 | La valeur par défaut est @samp{"name"}. |
bf5c74e7 JL |
21740 | |
21741 | @end deftypevr | |
21742 | ||
1d8d69c8 | 21743 | @deftypevr {paramètre de @code{cgit-configuration}} string cache-root |
15f1bff4 | 21744 | Chemin utilisé pour stocker les entrées de cache de cgit. |
bf5c74e7 | 21745 | |
1d8d69c8 | 21746 | La valeur par défaut est @samp{"/var/cache/cgit"}. |
bf5c74e7 JL |
21747 | |
21748 | @end deftypevr | |
21749 | ||
1d8d69c8 | 21750 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-static-ttl |
15f1bff4 JL |
21751 | Nombre qui spécifie le temps de vie, en minute, des versions en cache des |
21752 | pages du dépôt accédées par leur SHA-1. | |
bf5c74e7 | 21753 | |
1d8d69c8 | 21754 | La valeur par défaut est @samp{-1}. |
bf5c74e7 JL |
21755 | |
21756 | @end deftypevr | |
21757 | ||
1d8d69c8 | 21758 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-dynamic-ttl |
15f1bff4 JL |
21759 | Nombre qui spécifie le temps de vie, en minutes, des version en cache des |
21760 | pages du dépôt accédées sans leur SHA1. | |
bf5c74e7 | 21761 | |
1d8d69c8 | 21762 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21763 | |
21764 | @end deftypevr | |
21765 | ||
1d8d69c8 | 21766 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-repo-ttl |
15f1bff4 JL |
21767 | Nombre qui spécifie le temps de vie, en minute, des version en cache de la |
21768 | page de résumé du dépôt. | |
bf5c74e7 | 21769 | |
1d8d69c8 | 21770 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21771 | |
21772 | @end deftypevr | |
21773 | ||
1d8d69c8 | 21774 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-root-ttl |
15f1bff4 JL |
21775 | Nombre qui spécifie le temps de vie, en minutes, de la version en cache de |
21776 | la page d'index du dépôt. | |
bf5c74e7 | 21777 | |
1d8d69c8 | 21778 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21779 | |
21780 | @end deftypevr | |
21781 | ||
1d8d69c8 | 21782 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-scanrc-ttl |
15f1bff4 JL |
21783 | Nombre qui spécifie le temps de vie, en minutes, de la version en cache du |
21784 | résultat du scan d'un chemin dans le dépôt Git. | |
bf5c74e7 | 21785 | |
1d8d69c8 | 21786 | La valeur par défaut est @samp{15}. |
bf5c74e7 JL |
21787 | |
21788 | @end deftypevr | |
21789 | ||
1d8d69c8 | 21790 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-about-ttl |
15f1bff4 JL |
21791 | Nombre qui spécifie le temps de vie, en minutes, de la version en cache de |
21792 | la page « à propos » du dépôt. | |
bf5c74e7 | 21793 | |
1d8d69c8 | 21794 | La valeur par défaut est @samp{15}. |
bf5c74e7 JL |
21795 | |
21796 | @end deftypevr | |
21797 | ||
1d8d69c8 | 21798 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-snapshot-ttl |
15f1bff4 JL |
21799 | Nombre qui spécifie le temps de vie, en minutes, de la version en cache des |
21800 | archives. | |
bf5c74e7 | 21801 | |
1d8d69c8 | 21802 | La valeur par défaut est @samp{5}. |
bf5c74e7 JL |
21803 | |
21804 | @end deftypevr | |
21805 | ||
1d8d69c8 | 21806 | @deftypevr {paramètre de @code{cgit-configuration}} integer cache-size |
15f1bff4 JL |
21807 | Le nombre maximum d'entrées dans le cache de cgit. Lorsque la valeur est |
21808 | @samp{0}, le cache est désactivé. | |
bf5c74e7 | 21809 | |
1d8d69c8 | 21810 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
21811 | |
21812 | @end deftypevr | |
21813 | ||
1d8d69c8 | 21814 | @deftypevr {paramètre de @code{cgit-configuration}} boolean case-sensitive-sort? |
15f1bff4 | 21815 | Indique si le tri des éléments est sensible à la casse. |
bf5c74e7 | 21816 | |
1d8d69c8 | 21817 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
21818 | |
21819 | @end deftypevr | |
21820 | ||
1d8d69c8 | 21821 | @deftypevr {paramètre de @code{cgit-configuration}} list clone-prefix |
15f1bff4 JL |
21822 | Liste des préfixes communs qui, lorsqu'ils sont combinés à l'URL du dépôt, |
21823 | génèrent des URL de clone valides pour le dépôt. | |
bf5c74e7 | 21824 | |
1d8d69c8 | 21825 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
21826 | |
21827 | @end deftypevr | |
21828 | ||
1d8d69c8 | 21829 | @deftypevr {paramètre de @code{cgit-configuration}} list clone-url |
15f1bff4 | 21830 | Liste des modèles @code{clone-url} |
bf5c74e7 | 21831 | |
1d8d69c8 | 21832 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
21833 | |
21834 | @end deftypevr | |
21835 | ||
1d8d69c8 | 21836 | @deftypevr {paramètre de @code{cgit-configuration}} file-object commit-filter |
15f1bff4 | 21837 | Commande qui sera invoquée pour formater les messages de commit. |
bf5c74e7 | 21838 | |
1d8d69c8 | 21839 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
21840 | |
21841 | @end deftypevr | |
21842 | ||
1d8d69c8 | 21843 | @deftypevr {paramètre de @code{cgit-configuration}} string commit-sort |
15f1bff4 JL |
21844 | Drapeau qui, s'il vaut @samp{date}, active le tri par date strict dans le |
21845 | messages de commit, et le tri topologique strict lorsqu'il vaut @samp{topo}. | |
bf5c74e7 | 21846 | |
1d8d69c8 | 21847 | La valeur par défaut est @samp{"git log"}. |
bf5c74e7 JL |
21848 | |
21849 | @end deftypevr | |
21850 | ||
1d8d69c8 | 21851 | @deftypevr {paramètre de @code{cgit-configuration}} file-object css |
15f1bff4 | 21852 | URL qui spécifie le document css à inclure dans les pages cgit. |
bf5c74e7 | 21853 | |
1d8d69c8 | 21854 | La valeur par défaut est @samp{"/share/cgit/cgit.css"}. |
bf5c74e7 JL |
21855 | |
21856 | @end deftypevr | |
21857 | ||
1d8d69c8 | 21858 | @deftypevr {paramètre de @code{cgit-configuration}} file-object email-filter |
15f1bff4 JL |
21859 | Spécifie une commande qui sera invoquée pour formater les noms et l'adresse |
21860 | de courriel des commiteurs, des auteurs et des taggueurs, représentés à | |
21861 | plusieurs endroits dans l'interface cgit. | |
bf5c74e7 | 21862 | |
1d8d69c8 | 21863 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
21864 | |
21865 | @end deftypevr | |
21866 | ||
1d8d69c8 | 21867 | @deftypevr {paramètre de @code{cgit-configuration}} boolean embedded? |
15f1bff4 JL |
21868 | Drapeau qui, s'il vaut @samp{#t}, fera générer un fragment HTML à cgit qu'il |
21869 | sera possible d'inclure dans d'autres pages HTML. | |
bf5c74e7 | 21870 | |
1d8d69c8 | 21871 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21872 | |
21873 | @end deftypevr | |
21874 | ||
1d8d69c8 | 21875 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-commit-graph? |
15f1bff4 JL |
21876 | Drapeau qui, lorsqu'il vaut @samp{#t}, fera afficher un historique en |
21877 | ASCII-art à gauche des messages de commit dans la page de log du dépôt. | |
bf5c74e7 | 21878 | |
1d8d69c8 | 21879 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21880 | |
21881 | @end deftypevr | |
21882 | ||
1d8d69c8 | 21883 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-filter-overrides? |
15f1bff4 JL |
21884 | Drapeau qui, lorsqu'il vaut @samp{#t}, permet à tous les paramètres de |
21885 | filtrage d'être modifiés dans des fichiers cgitrc spécifiques au dépôt. | |
bf5c74e7 | 21886 | |
1d8d69c8 | 21887 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21888 | |
21889 | @end deftypevr | |
21890 | ||
1d8d69c8 | 21891 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-follow-links? |
15f1bff4 JL |
21892 | Drapeau qui, s'il vaut @samp{#t}, permet aux utilisateurs de suivre un |
21893 | fichier dans la vue « log ». | |
bf5c74e7 | 21894 | |
1d8d69c8 | 21895 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21896 | |
21897 | @end deftypevr | |
21898 | ||
1d8d69c8 | 21899 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-http-clone? |
15f1bff4 JL |
21900 | Si la valeur est @samp{#t}, cgit agira comme un point d'accès HTTP idiot |
21901 | pour les clones Git. | |
bf5c74e7 | 21902 | |
1d8d69c8 | 21903 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
21904 | |
21905 | @end deftypevr | |
21906 | ||
1d8d69c8 | 21907 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-index-links? |
15f1bff4 JL |
21908 | Drapeau qui, s'il vaut @samp{#t}, fera générer des liens « résumé », « |
21909 | commit » et « arborescence » supplémentaires poru chaque dépôt dans l'index | |
21910 | des dépôts. | |
bf5c74e7 | 21911 | |
1d8d69c8 | 21912 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21913 | |
21914 | @end deftypevr | |
21915 | ||
1d8d69c8 | 21916 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-index-owner? |
15f1bff4 JL |
21917 | Drapeau qui, s'il vaut @samp{#t}, fera afficher le propriétaire de chaque |
21918 | dépôt dans l'index des dépôts. | |
bf5c74e7 | 21919 | |
1d8d69c8 | 21920 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
21921 | |
21922 | @end deftypevr | |
21923 | ||
1d8d69c8 | 21924 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-log-filecount? |
15f1bff4 JL |
21925 | Drapeau qui, s'il vaut @samp{#t}, fera afficher à cgit le nombre de fichiers |
21926 | modifiés pour chaque commit sur la page de log du dépôt. | |
bf5c74e7 | 21927 | |
1d8d69c8 | 21928 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21929 | |
21930 | @end deftypevr | |
21931 | ||
1d8d69c8 | 21932 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-log-linecount? |
15f1bff4 JL |
21933 | Drapeau qui, s'il vaut @samp{#t}, fera afficher à cgit le nombre de lignes |
21934 | ajoutées et enlevées pour chaque commit de la page de log du dépôt. | |
bf5c74e7 | 21935 | |
1d8d69c8 | 21936 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21937 | |
21938 | @end deftypevr | |
21939 | ||
1d8d69c8 | 21940 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-remote-branches? |
15f1bff4 JL |
21941 | Drapeau qui, s'il vaut @samp{#t}, fera afficher les branches distantes dans |
21942 | les vues du résumé et des références. | |
bf5c74e7 | 21943 | |
1d8d69c8 | 21944 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21945 | |
21946 | @end deftypevr | |
21947 | ||
1d8d69c8 | 21948 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-subject-links? |
15f1bff4 JL |
21949 | Drapeau qui, s'il vaut @samp{1}, fera utiliser à cgit le sujet du commit |
21950 | parent comme texte du lien lors de la génération des liens vers les commits | |
21951 | parents dans la vue des commits. | |
bf5c74e7 | 21952 | |
1d8d69c8 | 21953 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21954 | |
21955 | @end deftypevr | |
21956 | ||
1d8d69c8 | 21957 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-html-serving? |
15f1bff4 JL |
21958 | Drapeau qui, s'il vaut @samp{#t}, fera utiliser à cgit l esujet du commit |
21959 | parent comme texte du lien lors de la génération des liens vers le commit | |
21960 | parent dans la vue des commits. | |
bf5c74e7 | 21961 | |
1d8d69c8 | 21962 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21963 | |
21964 | @end deftypevr | |
21965 | ||
1d8d69c8 | 21966 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-tree-linenumbers? |
15f1bff4 JL |
21967 | Drapeau qui, s'il vaut @samp{#t}, fera générer à cgit des liens vers le |
21968 | numéro de ligne pour les blobs en texte brut affichés dans la vue de | |
21969 | l'arborescence. | |
bf5c74e7 | 21970 | |
1d8d69c8 | 21971 | La valeur par défaut est @samp{#t}. |
bf5c74e7 JL |
21972 | |
21973 | @end deftypevr | |
21974 | ||
1d8d69c8 | 21975 | @deftypevr {paramètre de @code{cgit-configuration}} boolean enable-git-config? |
15f1bff4 JL |
21976 | Drapeau qui, s'il vaut @samp{#t}, permettra à cgit d'utiliser la |
21977 | configuration Git pour spécifier des paramètres spécifiques au dépôt. | |
bf5c74e7 | 21978 | |
1d8d69c8 | 21979 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
21980 | |
21981 | @end deftypevr | |
21982 | ||
1d8d69c8 | 21983 | @deftypevr {paramètre de @code{cgit-configuration}} file-object favicon |
15f1bff4 | 21984 | URL utilisée comme lien vers un icône pour cgit. |
bf5c74e7 | 21985 | |
1d8d69c8 | 21986 | La valeur par défaut est @samp{"/favicon.ico"}. |
bf5c74e7 JL |
21987 | |
21988 | @end deftypevr | |
21989 | ||
1d8d69c8 | 21990 | @deftypevr {paramètre de @code{cgit-configuration}} string footer |
bf5c74e7 | 21991 | The content of the file specified with this option will be included verbatim |
adfb167f JL |
21992 | at the bottom of all pages (i.e.@: it replaces the standard "generated |
21993 | by..."@: message). | |
bf5c74e7 | 21994 | |
1d8d69c8 | 21995 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
21996 | |
21997 | @end deftypevr | |
21998 | ||
1d8d69c8 | 21999 | @deftypevr {paramètre de @code{cgit-configuration}} string head-include |
15f1bff4 JL |
22000 | Le contenu du fichier spécifié dans cette option sera inclus directement |
22001 | dans la section HEAD HTML de toutes les pages. | |
bf5c74e7 | 22002 | |
1d8d69c8 | 22003 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22004 | |
22005 | @end deftypevr | |
22006 | ||
1d8d69c8 | 22007 | @deftypevr {paramètre de @code{cgit-configuration}} string header |
15f1bff4 JL |
22008 | Le contenu du fichier spécifié avec cette option sera inclus directement au |
22009 | début de toutes les pages. | |
bf5c74e7 | 22010 | |
1d8d69c8 | 22011 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22012 | |
22013 | @end deftypevr | |
22014 | ||
1d8d69c8 | 22015 | @deftypevr {paramètre de @code{cgit-configuration}} file-object include |
15f1bff4 JL |
22016 | Nom d'un fichier de configuration à inclure avant que le reste du fichier de |
22017 | configuration actuel ne soit analysé. | |
bf5c74e7 | 22018 | |
1d8d69c8 | 22019 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22020 | |
22021 | @end deftypevr | |
22022 | ||
1d8d69c8 | 22023 | @deftypevr {paramètre de @code{cgit-configuration}} string index-header |
15f1bff4 JL |
22024 | Le contenu du fichier spécifié avec cette option sera inclus directement au |
22025 | dessus de l'index des dépôts. | |
bf5c74e7 | 22026 | |
1d8d69c8 | 22027 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22028 | |
22029 | @end deftypevr | |
22030 | ||
1d8d69c8 | 22031 | @deftypevr {paramètre de @code{cgit-configuration}} string index-info |
15f1bff4 JL |
22032 | Le contenu du fichier spécifié avec cette option sera inclus directement en |
22033 | dessous de l'en-tête sur la page d'index du dépôt. | |
bf5c74e7 | 22034 | |
1d8d69c8 | 22035 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22036 | |
22037 | @end deftypevr | |
22038 | ||
1d8d69c8 | 22039 | @deftypevr {paramètre de @code{cgit-configuration}} boolean local-time? |
15f1bff4 JL |
22040 | Drapeau qui, s'il vaut @samp{#t}, fera afficher à cgit l'heure et la date de |
22041 | commit et de tag dans le fuseau horaire du serveur. | |
bf5c74e7 | 22042 | |
1d8d69c8 | 22043 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
22044 | |
22045 | @end deftypevr | |
22046 | ||
1d8d69c8 | 22047 | @deftypevr {paramètre de @code{cgit-configuration}} file-object logo |
15f1bff4 JL |
22048 | URL qui spécifie la source d'une image utilisé comme logo sur toutes les |
22049 | pages cgit. | |
bf5c74e7 | 22050 | |
1d8d69c8 | 22051 | La valeur par défaut est @samp{"/share/cgit/cgit.png"}. |
bf5c74e7 JL |
22052 | |
22053 | @end deftypevr | |
22054 | ||
1d8d69c8 | 22055 | @deftypevr {paramètre de @code{cgit-configuration}} string logo-link |
15f1bff4 | 22056 | URL chargée lors du clic sur l'image du logo de cgit. |
bf5c74e7 | 22057 | |
1d8d69c8 | 22058 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22059 | |
22060 | @end deftypevr | |
22061 | ||
1d8d69c8 | 22062 | @deftypevr {paramètre de @code{cgit-configuration}} file-object owner-filter |
15f1bff4 JL |
22063 | Commande qui sera invoquée pour formater la colonne propriétaire sur la page |
22064 | principale. | |
bf5c74e7 | 22065 | |
1d8d69c8 | 22066 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22067 | |
22068 | @end deftypevr | |
22069 | ||
1d8d69c8 | 22070 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-atom-items |
15f1bff4 | 22071 | Nombre d'éléments à afficher dans la vue des flux atom. |
bf5c74e7 | 22072 | |
1d8d69c8 | 22073 | La valeur par défaut est @samp{10}. |
bf5c74e7 JL |
22074 | |
22075 | @end deftypevr | |
22076 | ||
1d8d69c8 | 22077 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-commit-count |
15f1bff4 | 22078 | Nombre d'éléments à lister par page dans la vue « log ». |
bf5c74e7 | 22079 | |
1d8d69c8 | 22080 | La valeur par défaut est @samp{50}. |
bf5c74e7 JL |
22081 | |
22082 | @end deftypevr | |
22083 | ||
1d8d69c8 | 22084 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-message-length |
15f1bff4 | 22085 | Nombre caractères de messages de commit à afficher dans la vue « log ». |
bf5c74e7 | 22086 | |
1d8d69c8 | 22087 | La valeur par défaut est @samp{80}. |
bf5c74e7 JL |
22088 | |
22089 | @end deftypevr | |
22090 | ||
1d8d69c8 | 22091 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-repo-count |
15f1bff4 JL |
22092 | Spécifie le nombre d'éléments à lister par page sur la page de l'index des |
22093 | dépôts. | |
bf5c74e7 | 22094 | |
1d8d69c8 | 22095 | La valeur par défaut est @samp{50}. |
bf5c74e7 JL |
22096 | |
22097 | @end deftypevr | |
22098 | ||
1d8d69c8 | 22099 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-repodesc-length |
15f1bff4 JL |
22100 | Spécifie le nombre maximum de caractères de description de dépôts à afficher |
22101 | sur la page d'index des dépôts. | |
bf5c74e7 | 22102 | |
1d8d69c8 | 22103 | La valeur par défaut est @samp{80}. |
bf5c74e7 JL |
22104 | |
22105 | @end deftypevr | |
22106 | ||
1d8d69c8 | 22107 | @deftypevr {paramètre de @code{cgit-configuration}} integer max-blob-size |
15f1bff4 JL |
22108 | Spécifie la taille maximale d'un blob pour lequel afficher du HTML en |
22109 | kilo-octets. | |
bf5c74e7 | 22110 | |
1d8d69c8 | 22111 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
22112 | |
22113 | @end deftypevr | |
22114 | ||
1d8d69c8 | 22115 | @deftypevr {paramètre de @code{cgit-configuration}} string max-stats |
15f1bff4 JL |
22116 | Période de statistiques maximale. Les valeurs valides sont @samp{week}, |
22117 | @samp{month}, @samp{quarter} et @samp{year}. | |
bf5c74e7 | 22118 | |
1d8d69c8 | 22119 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22120 | |
22121 | @end deftypevr | |
22122 | ||
1d8d69c8 | 22123 | @deftypevr {paramètre de @code{cgit-configuration}} mimetype-alist mimetype |
15f1bff4 | 22124 | Type mime pour l'extension de fichier spécifiée. |
bf5c74e7 | 22125 | |
1d8d69c8 JL |
22126 | La valeur par défaut est @samp{((gif "image/gif") (html "text/html") (jpg |
22127 | "image/jpeg") (jpeg "image/jpeg") (pdf "application/pdf") (png "image/png") | |
22128 | (svg "image/svg+xml"))}. | |
bf5c74e7 JL |
22129 | |
22130 | @end deftypevr | |
22131 | ||
1d8d69c8 | 22132 | @deftypevr {paramètre de @code{cgit-configuration}} file-object mimetype-file |
15f1bff4 | 22133 | Spécifie le fichier à utiliser pour la recherche automatique de type mime. |
bf5c74e7 | 22134 | |
1d8d69c8 | 22135 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22136 | |
22137 | @end deftypevr | |
22138 | ||
1d8d69c8 | 22139 | @deftypevr {paramètre de @code{cgit-configuration}} string module-link |
15f1bff4 JL |
22140 | Texte qui sera utilisé comme chaîne de formatage pour un lien hypertexte |
22141 | lorsqu'un sous-module est affiché dans la liste du répertoire. | |
bf5c74e7 | 22142 | |
1d8d69c8 | 22143 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22144 | |
22145 | @end deftypevr | |
22146 | ||
1d8d69c8 | 22147 | @deftypevr {paramètre de @code{cgit-configuration}} boolean nocache? |
15f1bff4 | 22148 | Si la valeur est @samp{#t}, le cache est désactivé. |
bf5c74e7 | 22149 | |
1d8d69c8 | 22150 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
22151 | |
22152 | @end deftypevr | |
22153 | ||
1d8d69c8 | 22154 | @deftypevr {paramètre de @code{cgit-configuration}} boolean noplainemail? |
15f1bff4 JL |
22155 | Si la valeur est @samp{#t}, l'affichage des adresse de courriel des auteurs |
22156 | sera désactivé. | |
bf5c74e7 | 22157 | |
1d8d69c8 | 22158 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
22159 | |
22160 | @end deftypevr | |
22161 | ||
1d8d69c8 | 22162 | @deftypevr {paramètre de @code{cgit-configuration}} boolean noheader? |
15f1bff4 JL |
22163 | Drapeau qui, s'il vaut @samp{#t}, fera omettre à cgit l'en-tête standard sur |
22164 | toutes les pages. | |
bf5c74e7 | 22165 | |
1d8d69c8 | 22166 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
22167 | |
22168 | @end deftypevr | |
22169 | ||
1d8d69c8 | 22170 | @deftypevr {paramètre de @code{cgit-configuration}} project-list project-list |
15f1bff4 JL |
22171 | UNe liste de sous-répertoires dans @code{repository-directory}, relativement |
22172 | à lui, qui devrait être chargé comme des dépôts Git. Une liste vide | |
22173 | signifie que tous les sous-répertoires seront chargés. | |
bf5c74e7 | 22174 | |
1d8d69c8 | 22175 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
22176 | |
22177 | @end deftypevr | |
22178 | ||
1d8d69c8 | 22179 | @deftypevr {paramètre de @code{cgit-configuration}} file-object readme |
15f1bff4 | 22180 | Texte utilisé comme valeur par défaut pour @code{cgit-repo-readme}. |
bf5c74e7 | 22181 | |
1d8d69c8 | 22182 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22183 | |
22184 | @end deftypevr | |
22185 | ||
1d8d69c8 | 22186 | @deftypevr {paramètre de @code{cgit-configuration}} boolean remove-suffix? |
15f1bff4 JL |
22187 | Si la valeur est @code{#t} et que @code{repository-directory} est activé, si |
22188 | un dépôt avec un suffixe de @code{.git} est trouvé, ce suffixe sera supprimé | |
22189 | de l'URL et du nom. | |
bf5c74e7 | 22190 | |
1d8d69c8 | 22191 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
22192 | |
22193 | @end deftypevr | |
22194 | ||
1d8d69c8 | 22195 | @deftypevr {paramètre de @code{cgit-configuration}} integer renamelimit |
15f1bff4 | 22196 | Nombre maximum de fichiers à considérer lors de la détection des renommages. |
bf5c74e7 | 22197 | |
1d8d69c8 | 22198 | La valeur par défaut est @samp{-1}. |
bf5c74e7 JL |
22199 | |
22200 | @end deftypevr | |
22201 | ||
1d8d69c8 | 22202 | @deftypevr {paramètre de @code{cgit-configuration}} string repository-sort |
15f1bff4 | 22203 | La manière dont les dépôt de chaque section sont rangés. |
bf5c74e7 | 22204 | |
1d8d69c8 | 22205 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22206 | |
22207 | @end deftypevr | |
22208 | ||
1d8d69c8 | 22209 | @deftypevr {paramètre de @code{cgit-configuration}} robots-list robots |
15f1bff4 | 22210 | Texte utilisé comme contenu du méta-attribut @code{robots}. |
bf5c74e7 | 22211 | |
1d8d69c8 | 22212 | La valeur par défaut est @samp{("noindex" "nofollow")}. |
bf5c74e7 JL |
22213 | |
22214 | @end deftypevr | |
22215 | ||
1d8d69c8 | 22216 | @deftypevr {paramètre de @code{cgit-configuration}} string root-desc |
15f1bff4 | 22217 | Texte affiché en dessous de l'en-tête de la page d'index des dépôts. |
bf5c74e7 | 22218 | |
1d8d69c8 | 22219 | La valeur par défaut est @samp{"a fast webinterface for the git dscm"}. |
bf5c74e7 JL |
22220 | |
22221 | @end deftypevr | |
22222 | ||
1d8d69c8 | 22223 | @deftypevr {paramètre de @code{cgit-configuration}} string root-readme |
15f1bff4 JL |
22224 | Le contenu du fichier spécifié avec cette option sera inclus directement en |
22225 | dessous du lien « à propos » sur la page d'index du dépôt. | |
bf5c74e7 | 22226 | |
1d8d69c8 | 22227 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22228 | |
22229 | @end deftypevr | |
22230 | ||
1d8d69c8 | 22231 | @deftypevr {paramètre de @code{cgit-configuration}} string root-title |
15f1bff4 | 22232 | Texte affiché sur la page d'index des dépôts. |
bf5c74e7 | 22233 | |
1d8d69c8 | 22234 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22235 | |
22236 | @end deftypevr | |
22237 | ||
1d8d69c8 | 22238 | @deftypevr {paramètre de @code{cgit-configuration}} boolean scan-hidden-path |
15f1bff4 JL |
22239 | Si la valeur est @samp{#t} et que repository-directory est activé, |
22240 | repository-directory recherchera de manière récursive dans les répertoires | |
22241 | dont le nom commence par un point. Sinon, repository-directory restera hors | |
22242 | de ces répertoires, considérés comme « cachés ». Remarquez que cela ne | |
22243 | s'applique pas au répertoire « .git » dans le dépôts. | |
bf5c74e7 | 22244 | |
1d8d69c8 | 22245 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
22246 | |
22247 | @end deftypevr | |
22248 | ||
1d8d69c8 | 22249 | @deftypevr {paramètre de @code{cgit-configuration}} list snapshots |
15f1bff4 JL |
22250 | Texte qui spécifie l'ensemble des formats d'archives par défaut pour |
22251 | lesquelles cgit générera un lien. | |
bf5c74e7 | 22252 | |
1d8d69c8 | 22253 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
22254 | |
22255 | @end deftypevr | |
22256 | ||
1d8d69c8 | 22257 | @deftypevr {paramètre de @code{cgit-configuration}} repository-directory repository-directory |
15f1bff4 | 22258 | Nom du répertoire à scanner pour trouver les dépôts (représente |
bf5c74e7 JL |
22259 | @code{scan-path}). |
22260 | ||
1d8d69c8 | 22261 | La valeur par défaut est @samp{"/srv/git"}. |
bf5c74e7 JL |
22262 | |
22263 | @end deftypevr | |
22264 | ||
1d8d69c8 | 22265 | @deftypevr {paramètre de @code{cgit-configuration}} string section |
15f1bff4 JL |
22266 | Le nom de la section de dépôts actuelle — tous les dépôts définis après ce |
22267 | point hériterons du nom de section actuel. | |
bf5c74e7 | 22268 | |
1d8d69c8 | 22269 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22270 | |
22271 | @end deftypevr | |
22272 | ||
1d8d69c8 | 22273 | @deftypevr {paramètre de @code{cgit-configuration}} string section-sort |
15f1bff4 JL |
22274 | Drapeau qui, s'il vaut @samp{1}, triera les sections dans la liste des |
22275 | dépôts par nom. | |
bf5c74e7 | 22276 | |
1d8d69c8 | 22277 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22278 | |
22279 | @end deftypevr | |
22280 | ||
1d8d69c8 | 22281 | @deftypevr {paramètre de @code{cgit-configuration}} integer section-from-path |
15f1bff4 JL |
22282 | Un nombre qui, s'il est défini avant repository-directory, spécifier combien |
22283 | d'éléments de chemin de chaque chemin de dépôt utiliser comme nom de section | |
22284 | par défaut. | |
bf5c74e7 | 22285 | |
1d8d69c8 | 22286 | La valeur par défaut est @samp{0}. |
bf5c74e7 JL |
22287 | |
22288 | @end deftypevr | |
22289 | ||
1d8d69c8 | 22290 | @deftypevr {paramètre de @code{cgit-configuration}} boolean side-by-side-diffs? |
15f1bff4 JL |
22291 | Si la valeur est @samp{#t}, afficher des diffs côte à côte au lieu des |
22292 | unidiffs par défaut. | |
bf5c74e7 | 22293 | |
1d8d69c8 | 22294 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
22295 | |
22296 | @end deftypevr | |
22297 | ||
1d8d69c8 | 22298 | @deftypevr {paramètre de @code{cgit-configuration}} file-object source-filter |
15f1bff4 JL |
22299 | Spécifie une commande qui sera invoquée pour formater les blobs en texte |
22300 | brut dans la vue de l'arborescence. | |
bf5c74e7 | 22301 | |
1d8d69c8 | 22302 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22303 | |
22304 | @end deftypevr | |
22305 | ||
1d8d69c8 | 22306 | @deftypevr {paramètre de @code{cgit-configuration}} integer summary-branches |
15f1bff4 | 22307 | Spécifie le nombre de branches à afficher dans la vue de résumé du dépôt. |
bf5c74e7 | 22308 | |
1d8d69c8 | 22309 | La valeur par défaut est @samp{10}. |
bf5c74e7 JL |
22310 | |
22311 | @end deftypevr | |
22312 | ||
1d8d69c8 | 22313 | @deftypevr {paramètre de @code{cgit-configuration}} integer summary-log |
15f1bff4 JL |
22314 | Spécifie le nombre d'élément du journal à afficher dans la vue résumé du |
22315 | dépôt. | |
bf5c74e7 | 22316 | |
1d8d69c8 | 22317 | La valeur par défaut est @samp{10}. |
bf5c74e7 JL |
22318 | |
22319 | @end deftypevr | |
22320 | ||
1d8d69c8 | 22321 | @deftypevr {paramètre de @code{cgit-configuration}} integer summary-tags |
15f1bff4 | 22322 | Spécifie le nombre de tags à afficher dans la vue résumé du dépôt. |
bf5c74e7 | 22323 | |
1d8d69c8 | 22324 | La valeur par défaut est @samp{10}. |
bf5c74e7 JL |
22325 | |
22326 | @end deftypevr | |
22327 | ||
1d8d69c8 | 22328 | @deftypevr {paramètre de @code{cgit-configuration}} string strict-export |
15f1bff4 JL |
22329 | Nom de fichier qui, s'il est spécifié, doit être présent dans le dépôt pour |
22330 | que cgit accorde l'accès à ce dépôt. | |
bf5c74e7 | 22331 | |
1d8d69c8 | 22332 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22333 | |
22334 | @end deftypevr | |
22335 | ||
1d8d69c8 | 22336 | @deftypevr {paramètre de @code{cgit-configuration}} string virtual-root |
15f1bff4 JL |
22337 | URL qui, si elle est spécifiée, sera utilisée comme racine pour tous les |
22338 | liens cgit. | |
bf5c74e7 | 22339 | |
1d8d69c8 | 22340 | La valeur par défaut est @samp{"/"}. |
bf5c74e7 JL |
22341 | |
22342 | @end deftypevr | |
22343 | ||
1d8d69c8 | 22344 | @deftypevr {paramètre de @code{cgit-configuration}} repository-cgit-configuration-list repositories |
15f1bff4 | 22345 | Une liste d'enregistrements @dfn{cgit-repo} à utiliser avec config. |
bf5c74e7 | 22346 | |
1d8d69c8 | 22347 | La valeur par défaut est @samp{()}. |
bf5c74e7 | 22348 | |
1d8d69c8 | 22349 | Les champs de @code{repository-cgit-configuration} disponibles sont : |
bf5c74e7 | 22350 | |
1d8d69c8 | 22351 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-list snapshots |
15f1bff4 JL |
22352 | Un masque de formats d'archives pour ce dépôt pour lesquelles cgit générera |
22353 | un lien, restreint par le paramètre @code{snapshots} global. | |
bf5c74e7 | 22354 | |
1d8d69c8 | 22355 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
22356 | |
22357 | @end deftypevr | |
22358 | ||
1d8d69c8 | 22359 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object source-filter |
15f1bff4 | 22360 | Modifie le @code{source-filter} par défaut. |
bf5c74e7 | 22361 | |
1d8d69c8 | 22362 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22363 | |
22364 | @end deftypevr | |
22365 | ||
1d8d69c8 | 22366 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string url |
15f1bff4 | 22367 | URL relative utilisée pour accéder au dépôt. |
bf5c74e7 | 22368 | |
1d8d69c8 | 22369 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22370 | |
22371 | @end deftypevr | |
22372 | ||
1d8d69c8 | 22373 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object about-filter |
15f1bff4 | 22374 | Modifie le paramètre @code{about-filter} par défaut. |
bf5c74e7 | 22375 | |
1d8d69c8 | 22376 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22377 | |
22378 | @end deftypevr | |
22379 | ||
1d8d69c8 | 22380 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string branch-sort |
15f1bff4 JL |
22381 | Drapeau qui, s'il vaut @samp{age}, active le tri par date dans la liste des |
22382 | branches, et lorsqu'il vaut @samp{name}, le tri par nom. | |
bf5c74e7 | 22383 | |
1d8d69c8 | 22384 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22385 | |
22386 | @end deftypevr | |
22387 | ||
1d8d69c8 | 22388 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-list clone-url |
15f1bff4 | 22389 | Un liste d'URL qui peuvent être utilisées pour cloner ce dépôt. |
bf5c74e7 | 22390 | |
1d8d69c8 | 22391 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
22392 | |
22393 | @end deftypevr | |
22394 | ||
1d8d69c8 | 22395 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object commit-filter |
15f1bff4 | 22396 | Modifie le paramètre @code{commit-filter} par défaut. |
bf5c74e7 | 22397 | |
1d8d69c8 | 22398 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22399 | |
22400 | @end deftypevr | |
22401 | ||
1d8d69c8 | 22402 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string commit-sort |
15f1bff4 JL |
22403 | Drapeau qui, s'il vaut @samp{date}, active le tri par date strict dans le |
22404 | messages de commit, et le tri topologique strict lorsqu'il vaut @samp{topo}. | |
bf5c74e7 | 22405 | |
1d8d69c8 | 22406 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22407 | |
22408 | @end deftypevr | |
22409 | ||
1d8d69c8 | 22410 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string defbranch |
15f1bff4 JL |
22411 | Le nom de la branche par défaut de ce dépôt. Si cette branche n'existe pas |
22412 | dans le dépôt, le premier nom de branche (trié) sera utilisé par défaut. | |
22413 | Par défaut la branche pointée par HEAD, ou « master » s'il n'y a pas de HEAD | |
22414 | convenable. | |
bf5c74e7 | 22415 | |
1d8d69c8 | 22416 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22417 | |
22418 | @end deftypevr | |
22419 | ||
1d8d69c8 | 22420 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string desc |
15f1bff4 | 22421 | La valeur à afficher comme description du dépôt. |
bf5c74e7 | 22422 | |
1d8d69c8 | 22423 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22424 | |
22425 | @end deftypevr | |
22426 | ||
1d8d69c8 | 22427 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string homepage |
15f1bff4 | 22428 | La valeur à afficher comme page d'accueil du dépôt. |
bf5c74e7 | 22429 | |
1d8d69c8 | 22430 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22431 | |
22432 | @end deftypevr | |
22433 | ||
1d8d69c8 | 22434 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object email-filter |
15f1bff4 | 22435 | Modifie le paramètre @code{email-filter} par défaut. |
bf5c74e7 | 22436 | |
1d8d69c8 | 22437 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22438 | |
22439 | @end deftypevr | |
22440 | ||
adfb167f | 22441 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-commit-graph? |
15f1bff4 JL |
22442 | Un drapeau qui peut être utilisé pour désactiver le paramètre |
22443 | @code{enable-commit-graph?} global. | |
bf5c74e7 | 22444 | |
1d8d69c8 | 22445 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
22446 | |
22447 | @end deftypevr | |
22448 | ||
adfb167f | 22449 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-log-filecount? |
15f1bff4 JL |
22450 | Un drapeau qui peut être utilisé pour désactiver le paramètre |
22451 | @code{enable-log-filecount?} global. | |
bf5c74e7 | 22452 | |
1d8d69c8 | 22453 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
22454 | |
22455 | @end deftypevr | |
22456 | ||
adfb167f | 22457 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-log-linecount? |
15f1bff4 JL |
22458 | Un drapeau qui peut être utilisé pour désactiver le paramètre |
22459 | @code{enable-log-linecount?} global. | |
bf5c74e7 | 22460 | |
1d8d69c8 | 22461 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
22462 | |
22463 | @end deftypevr | |
22464 | ||
adfb167f | 22465 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-remote-branches? |
15f1bff4 JL |
22466 | Drapeau qui, s'il vaut @samp{#t}, fera afficher les branches distantes dans |
22467 | les vues du résumé et des références. | |
bf5c74e7 | 22468 | |
1d8d69c8 | 22469 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
22470 | |
22471 | @end deftypevr | |
22472 | ||
adfb167f | 22473 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-subject-links? |
15f1bff4 JL |
22474 | Un drapeau qui peut être utilisé pour modifier le paramètre |
22475 | @code{enable-subject-links?} global. | |
bf5c74e7 | 22476 | |
1d8d69c8 | 22477 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
22478 | |
22479 | @end deftypevr | |
22480 | ||
adfb167f | 22481 | @deftypevr {paramètre de @code{repository-cgit-configuration}} maybe-repo-boolean enable-html-serving? |
15f1bff4 JL |
22482 | Un drapeau qui peut être utilisé pour modifier le paramètre |
22483 | @code{enable-html-serving?} global. | |
bf5c74e7 | 22484 | |
1d8d69c8 | 22485 | La valeur par défaut est @samp{disabled}. |
bf5c74e7 JL |
22486 | |
22487 | @end deftypevr | |
22488 | ||
1d8d69c8 | 22489 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-boolean hide? |
15f1bff4 | 22490 | Drapeau qui, s'il vaut @code{#t}, cache le dépôt de l'index des dépôts. |
bf5c74e7 | 22491 | |
1d8d69c8 | 22492 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
22493 | |
22494 | @end deftypevr | |
22495 | ||
1d8d69c8 | 22496 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-boolean ignore? |
15f1bff4 | 22497 | Drapeau qui, s'il vaut @code{#t}, ignore le dépôt. |
bf5c74e7 | 22498 | |
1d8d69c8 | 22499 | La valeur par défaut est @samp{#f}. |
bf5c74e7 JL |
22500 | |
22501 | @end deftypevr | |
22502 | ||
1d8d69c8 | 22503 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object logo |
15f1bff4 JL |
22504 | URL qui spécifie la source d'une image qui sera utilisée comme logo sur les |
22505 | pages de ce dépôt. | |
bf5c74e7 | 22506 | |
1d8d69c8 | 22507 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22508 | |
22509 | @end deftypevr | |
22510 | ||
1d8d69c8 | 22511 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string logo-link |
15f1bff4 | 22512 | URL chargée lors du clic sur l'image du logo de cgit. |
bf5c74e7 | 22513 | |
1d8d69c8 | 22514 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22515 | |
22516 | @end deftypevr | |
22517 | ||
1d8d69c8 | 22518 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-file-object owner-filter |
15f1bff4 | 22519 | Modifie le paramètre @code{owner-filter} par défaut. |
bf5c74e7 | 22520 | |
1d8d69c8 | 22521 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22522 | |
22523 | @end deftypevr | |
22524 | ||
1d8d69c8 | 22525 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string module-link |
15f1bff4 JL |
22526 | Texte qui sera utilisé comme chaîne de formatage pour un lien hypertexte |
22527 | lorsqu'un sous-module est affiché dans une liste de fichiers. Les arguments | |
22528 | pour la chaîne de formatage sont le chemin et le SHA1 du commit du | |
22529 | sous-module. | |
bf5c74e7 | 22530 | |
1d8d69c8 | 22531 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22532 | |
22533 | @end deftypevr | |
22534 | ||
1d8d69c8 | 22535 | @deftypevr {paramètre de @code{repository-cgit-configuration}} module-link-path module-link-path |
15f1bff4 JL |
22536 | Texte qui sera utilisé comme chaîne de formatage lorsqu'un sous-module avec |
22537 | un chemin spécifié sera affiché dans une liste de fichiers. | |
bf5c74e7 | 22538 | |
1d8d69c8 | 22539 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
22540 | |
22541 | @end deftypevr | |
22542 | ||
1d8d69c8 | 22543 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string max-stats |
15f1bff4 | 22544 | Modifie la période de statistique maximale par défaut. |
bf5c74e7 | 22545 | |
1d8d69c8 | 22546 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22547 | |
22548 | @end deftypevr | |
22549 | ||
1d8d69c8 | 22550 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string name |
15f1bff4 | 22551 | La valeur à afficher comme nom de dépôt. |
bf5c74e7 | 22552 | |
1d8d69c8 | 22553 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22554 | |
22555 | @end deftypevr | |
22556 | ||
1d8d69c8 | 22557 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string owner |
15f1bff4 | 22558 | Une valeur utilisée pour identifier le propriétaire du dépôt. |
bf5c74e7 | 22559 | |
1d8d69c8 | 22560 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22561 | |
22562 | @end deftypevr | |
22563 | ||
1d8d69c8 | 22564 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string path |
15f1bff4 | 22565 | Un chemin absolu vers le répertoire du dépôt. |
bf5c74e7 | 22566 | |
1d8d69c8 | 22567 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22568 | |
22569 | @end deftypevr | |
22570 | ||
1d8d69c8 | 22571 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string readme |
15f1bff4 JL |
22572 | Un chemin (relatif au dépôt) qui spécifie un fichier à inclure directement |
22573 | comme page « À propos » pour ce dépôt. | |
bf5c74e7 | 22574 | |
1d8d69c8 | 22575 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22576 | |
22577 | @end deftypevr | |
22578 | ||
1d8d69c8 | 22579 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-string section |
15f1bff4 JL |
22580 | Le nom de la section de dépôts actuelle — tous les dépôts définis après ce |
22581 | point hériterons du nom de section actuel. | |
bf5c74e7 | 22582 | |
1d8d69c8 | 22583 | La valeur par défaut est @samp{""}. |
bf5c74e7 JL |
22584 | |
22585 | @end deftypevr | |
22586 | ||
1d8d69c8 | 22587 | @deftypevr {paramètre de @code{repository-cgit-configuration}} repo-list extra-options |
15f1bff4 | 22588 | Options supplémentaires ajoutées à la fin du fichier cgitrc. |
bf5c74e7 | 22589 | |
1d8d69c8 | 22590 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
22591 | |
22592 | @end deftypevr | |
22593 | ||
22594 | @end deftypevr | |
22595 | ||
1d8d69c8 | 22596 | @deftypevr {paramètre de @code{cgit-configuration}} list extra-options |
15f1bff4 | 22597 | Options supplémentaires ajoutées à la fin du fichier cgitrc. |
bf5c74e7 | 22598 | |
1d8d69c8 | 22599 | La valeur par défaut est @samp{()}. |
bf5c74e7 JL |
22600 | |
22601 | @end deftypevr | |
22602 | ||
22603 | ||
22604 | @c %end of fragment | |
22605 | ||
15f1bff4 JL |
22606 | Cependant, vous pourriez vouloir simplement récupérer un @code{cgitrc} et |
22607 | l'utiliser. Dans ce cas, vous pouvez passer un | |
22608 | @code{opaque-cgit-configuration} comme enregistrement à | |
22609 | @code{cgit-service-type}. Comme son nom l'indique, une configuration opaque | |
22610 | n'a pas de capacité de réflexion facile. | |
bf5c74e7 | 22611 | |
1d8d69c8 | 22612 | Les champs de @code{opaque-cgit-configuration} disponibles sont : |
bf5c74e7 | 22613 | |
1d8d69c8 | 22614 | @deftypevr {paramètre de @code{opaque-cgit-configuration}} package cgit |
15f1bff4 | 22615 | Le paquet cgit. |
bf5c74e7 JL |
22616 | @end deftypevr |
22617 | ||
1d8d69c8 | 22618 | @deftypevr {paramètre de @code{opaque-cgit-configuration}} string string |
15f1bff4 | 22619 | Le contenu de @code{cgitrc}, en tant que chaîne de caractère. |
bf5c74e7 JL |
22620 | @end deftypevr |
22621 | ||
15f1bff4 JL |
22622 | Par exemple, si votre @code{cgitrc} est juste la chaîne vide, vous pouvez |
22623 | instancier un service cgit ainsi : | |
bf5c74e7 JL |
22624 | |
22625 | @example | |
22626 | (service cgit-service-type | |
22627 | (opaque-cgit-configuration | |
22628 | (cgitrc ""))) | |
22629 | @end example | |
22630 | ||
adfb167f JL |
22631 | @subsubheading Service Gitolite |
22632 | ||
22633 | @cindex service Gitolite | |
22634 | @cindex Git, hébergement | |
15f1bff4 JL |
22635 | @uref{http://gitolite.com/gitolite/, Gitolite} est un outil pour héberger |
22636 | des dépôts Git sur un serveur central. | |
adfb167f | 22637 | |
15f1bff4 JL |
22638 | Gitolite peut gérer plusieurs dépôts et utilisateurs et supporte une |
22639 | configuration flexible des permissions pour les utilisateurs sur ces dépôts. | |
adfb167f | 22640 | |
15f1bff4 JL |
22641 | L'exemple suivant configure Gitolite en utilisant l'utilisateur @code{git} |
22642 | par défaut et la clef SSH fournie. | |
adfb167f JL |
22643 | |
22644 | @example | |
22645 | (service gitolite-service-type | |
22646 | (gitolite-configuration | |
22647 | (admin-pubkey (plain-file | |
22648 | "yourname.pub" | |
22649 | "ssh-rsa AAAA... guix@@example.com")))) | |
22650 | @end example | |
22651 | ||
15f1bff4 JL |
22652 | Gitolite est configuré via un dépôt d'administration spécial que vous pouvez |
22653 | cloner. Par exemple, si vous hébergez Gitolite sur @code{example.com}, vous | |
22654 | pouvez lancer la commande suivante pour cloner le dépôt d'administration : | |
adfb167f JL |
22655 | |
22656 | @example | |
22657 | git clone git@@example.com:gitolite-admin | |
22658 | @end example | |
22659 | ||
15f1bff4 JL |
22660 | Lorsque le service Gitolite est activé, la clef @code{admin-pubkey} fournie |
22661 | sera insérée dans le répertoire @file{keydir} du dépôt gitolite-admin. Si | |
22662 | cela change le dépôt, un commit sera effectué avec le message « gitolite | |
22663 | setup by GNU Guix ». | |
adfb167f JL |
22664 | |
22665 | @deftp {Type de données} gitolite-configuration | |
22666 | Type de données représentant la configuration de | |
22667 | @code{gitolite-service-type}. | |
22668 | ||
22669 | @table @asis | |
22670 | @item @code{package} (par défaut : @var{gitolite}) | |
22671 | Le paquet Gitolite à utiliser. | |
22672 | ||
22673 | @item @code{user} (par défaut : @var{git}) | |
15f1bff4 JL |
22674 | Utilisateur pour utiliser Gitolite. Cela sera l'utilisateur à utiliser pour |
22675 | accéder à Gitolite par SSH. | |
adfb167f JL |
22676 | |
22677 | @item @code{group} (par défaut : @var{git}) | |
22678 | Groupe à utiliser pour Gitolite. | |
22679 | ||
22680 | @item @code{home-directory} (par défaut : @var{"/var/lib/gitolite"}) | |
22681 | Répertoire dans lequel stocker la configuration et les dépôts de Gitolite. | |
22682 | ||
22683 | @item @code{rc-file} (par défaut : @var{(gitolite-rc-file)}) | |
22684 | Un objet « simili-fichier » (@pxref{G-Expressions, file-like objects}) | |
22685 | représentant la configuration de Gitolite. | |
22686 | ||
22687 | @item @code{admin-pubkey} (par défaut : @var{#f}) | |
22688 | Un objet « simili-fichier » (@pxref{G-Expressions, file-like objects}) | |
22689 | utilisé pour paramétrer Gitolite. Il sera inséré dans le répertoire | |
22690 | @file{keydir} dans le dépôt gitolite-admin. | |
22691 | ||
15f1bff4 JL |
22692 | Pour spécifier la clef SSH comme chaîne de caractère, utilisez la fonction |
22693 | @code{plain-file}. | |
adfb167f JL |
22694 | |
22695 | @example | |
22696 | (plain-file "yourname.pub" "ssh-rsa AAAA... guix@@example.com") | |
22697 | @end example | |
22698 | ||
22699 | @end table | |
22700 | @end deftp | |
22701 | ||
22702 | @deftp {Type de données} gitolite-rc-file | |
22703 | Type de données représentant le fichier RC de Gitolite. | |
22704 | ||
22705 | @table @asis | |
22706 | @item @code{umask} (par défaut : @code{#o0077}) | |
15f1bff4 JL |
22707 | Cela contrôle les permissions que Gitolite propose sur les dépôts et leur |
22708 | contenu. | |
adfb167f | 22709 | |
15f1bff4 JL |
22710 | Une valeur comme @code{#o0027} donnera accès en lecture au groupe utilisé |
22711 | par Gitolite (par défaut : @code{git}). Cel aest nécessaire lorsque vous | |
22712 | utilise Gitolite avec un logiciel comme cgit ou gitweb. | |
adfb167f JL |
22713 | |
22714 | @item @code{git-config-keys} (par défaut : @code{""}) | |
15f1bff4 JL |
22715 | Gitolite vous permet de modifier les configurations git avec le mot-clef « |
22716 | config ». Ce paramètre vous permet de contrôler les clefs de configuration | |
22717 | acceptables. | |
adfb167f JL |
22718 | |
22719 | @item @code{roles} (par défaut : @code{'(("READERS" . 1) ("WRITERS" . ))}) | |
15f1bff4 JL |
22720 | Indique les noms des rôles qui peuvent être utilisés par les utilisateurs |
22721 | avec la commande perms. | |
adfb167f JL |
22722 | |
22723 | @item @code{enable} (par défaut : @code{'("help" "desc" "info" "perms" "writable" "ssh-authkeys" "git-config" "daemon" "gitweb")}) | |
15f1bff4 JL |
22724 | Ce paramètre contrôle les commandes et les fonctionnalités à activer dans |
22725 | Gitolite. | |
adfb167f JL |
22726 | |
22727 | @end table | |
22728 | @end deftp | |
22729 | ||
bf5c74e7 | 22730 | |
3cacfa9e | 22731 | @node Services de jeu |
15f1bff4 | 22732 | @subsection Services de jeu |
bf5c74e7 | 22733 | |
15f1bff4 | 22734 | @subsubheading Le service de la Bataille pour Wesnoth |
bf5c74e7 | 22735 | @cindex wesnothd |
15f1bff4 JL |
22736 | @uref{https://wesnoth.org, La Bataille pour Wesnoth} est un jeu de stratégie |
22737 | en tour par tour dans un univers fantastique, avec plusieurs campagnes solo | |
22738 | et des parties multijoueurs (en réseau et en local). | |
bf5c74e7 | 22739 | |
1d8d69c8 | 22740 | @defvar {Variable Scheme} wesnothd-service-type |
15f1bff4 JL |
22741 | Type de service pour le service wesnothd. Sa valeur doit être un objet |
22742 | @code{wesnothd-configuration}. Pour lancer wesnothd avec la configuration | |
22743 | par défaut, instanciez-le ainsi : | |
bf5c74e7 JL |
22744 | |
22745 | @example | |
22746 | (service wesnothd-service-type) | |
22747 | @end example | |
22748 | @end defvar | |
22749 | ||
1d8d69c8 | 22750 | @deftp {Type de données} wesnothd-configuration |
15f1bff4 | 22751 | Type de donées représentant la configuration de @command{wesnothd}. |
bf5c74e7 JL |
22752 | |
22753 | @table @asis | |
1d8d69c8 | 22754 | @item @code{package} (par défaut : @code{wesnoth-server}) |
15f1bff4 | 22755 | Le paquet de serveur de wesnoth à utiliser. |
bf5c74e7 | 22756 | |
1d8d69c8 | 22757 | @item @code{port} (par défaut : @code{15000}) |
15f1bff4 | 22758 | Le pour sur lequel lier le serveur. |
bf5c74e7 JL |
22759 | @end table |
22760 | @end deftp | |
22761 | ||
3cacfa9e | 22762 | @node Services divers |
15f1bff4 | 22763 | @subsection Services divers |
bf5c74e7 | 22764 | |
15f1bff4 | 22765 | @cindex empreinte digitale |
adfb167f | 22766 | @subsubheading Service d'empreintes digitales |
2cf2c778 | 22767 | |
adfb167f JL |
22768 | Le module @code{(gnu services fingerprint)} fournit un service DBus pour |
22769 | lire et identifier les empreintes digitales via un lecteur d'empreinte. | |
2cf2c778 | 22770 | |
adfb167f | 22771 | @defvr {Variable Scheme} fprintd-service-type |
15f1bff4 JL |
22772 | Le type de service pour @command{fprintd}, qui fournit des capacités de |
22773 | lecture d'empreinte. | |
2cf2c778 JL |
22774 | |
22775 | @example | |
22776 | (service fprintd-service-type) | |
22777 | @end example | |
22778 | @end defvr | |
22779 | ||
bf5c74e7 | 22780 | @cindex sysctl |
15f1bff4 | 22781 | @subsubheading Service de contrôle du système |
bf5c74e7 | 22782 | |
15f1bff4 JL |
22783 | Le module @code{(gnu services sysctl)} fournit un service pour configurer |
22784 | les paramètres du noyau au démarrage. | |
bf5c74e7 | 22785 | |
1d8d69c8 | 22786 | @defvr {Variable Scheme} sysctl-service-type |
15f1bff4 JL |
22787 | Le type de service pour @command{sysctl}, qui modifie les paramètres du |
22788 | noyau dans @file{/proc/sys/}. Pour activer le transfert d'IPv4, vous pouvez | |
22789 | l'instancier ainsi : | |
bf5c74e7 JL |
22790 | |
22791 | @example | |
22792 | (service sysctl-service-type | |
22793 | (sysctl-configuration | |
22794 | (settings '(("net.ipv4.ip_forward" . "1"))))) | |
22795 | @end example | |
22796 | @end defvr | |
22797 | ||
1d8d69c8 | 22798 | @deftp {Type de données} sysctl-configuration |
15f1bff4 | 22799 | Le type de données représentant la configuration de @command{sysctl}. |
bf5c74e7 JL |
22800 | |
22801 | @table @asis | |
1d8d69c8 | 22802 | @item @code{sysctl} (par défaut : @code{(file-append procps "/sbin/sysctl"}) |
15f1bff4 | 22803 | L'exécutable @command{sysctl} à utiliser. |
bf5c74e7 | 22804 | |
1d8d69c8 | 22805 | @item @code{settings} (par défaut : @code{'()}) |
15f1bff4 | 22806 | Une liste d'association spécifiant les paramètres du noyau et leur valeur. |
bf5c74e7 JL |
22807 | @end table |
22808 | @end deftp | |
22809 | ||
1d8d69c8 | 22810 | @cindex pcscd |
15f1bff4 | 22811 | @subsubheading Service du démon PC/SC Smart Card |
1d8d69c8 | 22812 | |
15f1bff4 JL |
22813 | Le module @code{(gnu services security-token)} fournit le service suivant |
22814 | qui lance @command{pcscd}, le démon PC/SC Smart Card. @command{pcscd} est | |
22815 | le démon pour pcsc-lite et MuscleCard. C'est un gestionnaire de ressource | |
22816 | qui coordonne les communications avec les lecteurs de smart cards, les smart | |
22817 | cards et les jetons cryptographiques connectés au système. | |
1d8d69c8 | 22818 | |
adfb167f JL |
22819 | @defvr {Variable Scheme} pcscd-service-type |
22820 | Le type de service pour le service @command{pcscd}. Sa valeur doit être un | |
22821 | objet @code{pcscd-configuration}. Pour lancer pcscd dans sa configuration | |
22822 | par défaut, instantiez-le avec : | |
1d8d69c8 JL |
22823 | |
22824 | @example | |
22825 | (service pcscd-service-type) | |
22826 | @end example | |
22827 | @end defvr | |
22828 | ||
adfb167f JL |
22829 | @deftp {Type de données} pcscd-configuration |
22830 | Type de données représentant la configuration de @command{pcscd}. | |
1d8d69c8 JL |
22831 | |
22832 | @table @asis | |
adfb167f JL |
22833 | @item @code{pcsc-lite} (par défaut : @code{pcsc-lite}) |
22834 | Le paquet pcsc-lite qui fournit pcscd. | |
22835 | @item @code{usb-drivers} (par défaut : @code{(list ccid)}) | |
15f1bff4 JL |
22836 | Liste des paquets qui fournissent des pilotes USB à pcscd. Les pilotes |
22837 | doivent être dans @file{pcsc/drivers} dans le répertoire du dépôt du paquet. | |
1d8d69c8 JL |
22838 | @end table |
22839 | @end deftp | |
22840 | ||
bf5c74e7 | 22841 | @cindex lirc |
15f1bff4 | 22842 | @subsubheading Service Lirc |
bf5c74e7 | 22843 | |
15f1bff4 | 22844 | Le module @code{(gnu services lirc)} fournit le service suivant. |
bf5c74e7 | 22845 | |
1d8d69c8 | 22846 | @deffn {Procédure Scheme} lirc-service [#:lirc lirc] @ |
15f1bff4 JL |
22847 | [#:device #f] [#:driver #f] [#:config-file #f] @ |
22848 | [#:extra-options '()] | |
22849 | Renvoie un service qui lance @url{http://www.lirc.org,LIRC}, un démon qui | |
22850 | décode les signaux infrarouges des télécommandes. | |
bf5c74e7 | 22851 | |
15f1bff4 JL |
22852 | Éventuellement, @var{device}, @var{driver} et @var{config-file} (le nom du |
22853 | fichier de configuration) peuvent être spécifiés. Voir le manuel de | |
22854 | @command{lircd} pour plus de détails. | |
bf5c74e7 | 22855 | |
15f1bff4 JL |
22856 | Enfin, @var{extra-options} est une liste d'options de la ligne de commande |
22857 | supplémentaires à passer à @command{lircd}. | |
bf5c74e7 JL |
22858 | @end deffn |
22859 | ||
22860 | @cindex spice | |
15f1bff4 | 22861 | @subsubheading Service Spice |
bf5c74e7 | 22862 | |
15f1bff4 | 22863 | Le module @code{(gnu services spice)} fournit le service suivant. |
bf5c74e7 | 22864 | |
1d8d69c8 | 22865 | @deffn {Procédure Scheme} spice-vdagent-service [#:spice-vdagent] |
15f1bff4 JL |
22866 | Renvoie un service qui lance @url{http://www.spice-space.org,VDAGENT}, un |
22867 | démon qui permet le partage du presse-papier avec une vm et de configurer la | |
22868 | résolution d'affichage du client lorsque la fenêtre de la console graphique | |
22869 | est redimensionnée. | |
bf5c74e7 JL |
22870 | @end deffn |
22871 | ||
15f1bff4 JL |
22872 | @subsection Services de dictionnaires |
22873 | @cindex dictionnaire | |
22874 | Le module @code{(gnu services dict)} fournit le service suivant : | |
bf5c74e7 | 22875 | |
1d8d69c8 | 22876 | @deffn {Procédure Scheme} dicod-service [#:config (dicod-configuration)] |
15f1bff4 JL |
22877 | Renvoie un service qui lance le démon @command{dicod}, une implémentation du |
22878 | serveur DICT (@pxref{Dicod,,, dico, GNU Dico Manual}). | |
bf5c74e7 | 22879 | |
15f1bff4 JL |
22880 | L'argument @var{config} facultatif spécifie la configuration pour |
22881 | @command{dicod}, qui devrait être un objet @code{<dicod-configuration>}, par | |
22882 | défaut il sert le dictionnaire international collaboratif de GNU pour | |
22883 | l'anglais. | |
bf5c74e7 | 22884 | |
15f1bff4 JL |
22885 | Vous pouvez ajouter @command{open localhost} à votre fichier @file{~/.dico} |
22886 | pour faire de @code{localhost} le serveur par défaut du client | |
22887 | @command{dico} (@pxref{Initialization File,,, dico, GNU Dico Manual}). | |
bf5c74e7 JL |
22888 | @end deffn |
22889 | ||
1d8d69c8 | 22890 | @deftp {Type de données} dicod-configuration |
15f1bff4 | 22891 | Type de données représentant la configuration de dicod. |
bf5c74e7 JL |
22892 | |
22893 | @table @asis | |
1d8d69c8 | 22894 | @item @code{dico} (par défaut : @var{dico}) |
15f1bff4 | 22895 | Objet de paquet du serveur de dictionnaire GNU Dico. |
bf5c74e7 | 22896 | |
1d8d69c8 | 22897 | @item @code{interfaces} (par défaut : @var{'("localhost")}) |
15f1bff4 JL |
22898 | C'est la liste des adresses IP et des ports et éventuellement des noms de |
22899 | fichiers de socket sur lesquels écouter (@pxref{Server Settings, | |
22900 | @code{listen} directive,, dico, GNU Dico Manual}). | |
bf5c74e7 | 22901 | |
1d8d69c8 | 22902 | @item @code{handlers} (par défaut : @var{'()}) |
15f1bff4 JL |
22903 | Liste des objets @code{<dicod-handler>} qui définissent des gestionnaires |
22904 | (des instances de modules). | |
bf5c74e7 | 22905 | |
1d8d69c8 | 22906 | @item @code{databases} (par défaut : @var{(list %dicod-database:gcide)}) |
15f1bff4 JL |
22907 | Liste d'objets @code{<dicod-database>} qui définissent des dictionnaires à |
22908 | servir. | |
bf5c74e7 JL |
22909 | @end table |
22910 | @end deftp | |
22911 | ||
1d8d69c8 | 22912 | @deftp {Type de données} dicod-handler |
15f1bff4 JL |
22913 | Type de données représentant un gestionnaire de dictionnaire (instance de |
22914 | module). | |
bf5c74e7 JL |
22915 | |
22916 | @table @asis | |
22917 | @item @code{name} | |
15f1bff4 | 22918 | Nom du gestionnaire (instance de module). |
bf5c74e7 | 22919 | |
1d8d69c8 | 22920 | @item @code{module} (par défaut : @var{#f}) |
15f1bff4 JL |
22921 | Nom du module dicod du gestionnaire (instance). Si la valeur est @code{#f}, |
22922 | le module a le même nom que le gestionnaire. (@pxref{Modules,,, dico, GNU | |
22923 | Dico Manual}). | |
bf5c74e7 JL |
22924 | |
22925 | @item @code{options} | |
15f1bff4 JL |
22926 | Liste de chaînes ou de gexps représentant les arguments pour le gestionnaire |
22927 | de module. | |
bf5c74e7 JL |
22928 | @end table |
22929 | @end deftp | |
22930 | ||
1d8d69c8 | 22931 | @deftp {Type de données} dicod-database |
15f1bff4 | 22932 | Type de données représentant une base de données de dictionnaire. |
bf5c74e7 JL |
22933 | |
22934 | @table @asis | |
22935 | @item @code{name} | |
15f1bff4 | 22936 | Nom de la base de données, qui sera utilisée dans les commande DICT. |
bf5c74e7 JL |
22937 | |
22938 | @item @code{handler} | |
15f1bff4 JL |
22939 | Nom du gestionnaire dicod (instance de module) utilisé par cette base de |
22940 | données (@pxref{Handlers,,, dico, GNU Dico Manual}). | |
bf5c74e7 | 22941 | |
1d8d69c8 | 22942 | @item @code{complex?} (par défaut : @var{#f}) |
15f1bff4 JL |
22943 | Indique si la configuration est pour une base de données complexe. La |
22944 | configuration complexe a besoin d'un objet @code{<dicod-handler>} | |
22945 | correspondant, sinon inutile. | |
bf5c74e7 JL |
22946 | |
22947 | @item @code{options} | |
15f1bff4 JL |
22948 | Liste de chaînes ou de gexps représentant les arguments pour la base de |
22949 | données (@pxref{Databases,,, dico, GNU Dico Manual}). | |
bf5c74e7 JL |
22950 | @end table |
22951 | @end deftp | |
22952 | ||
1d8d69c8 | 22953 | @defvr {Variable Scheme} %dicod-database:gcide |
15f1bff4 JL |
22954 | Un objet @code{<dicod-database>} servant le dictionnaire international |
22955 | collaboratif en anglais via le paquet @code{gcide}. | |
bf5c74e7 JL |
22956 | @end defvr |
22957 | ||
15f1bff4 | 22958 | Voici un exemple de configuration de @code{dicod-service}. |
bf5c74e7 JL |
22959 | |
22960 | @example | |
22961 | (dicod-service #:config | |
22962 | (dicod-configuration | |
22963 | (handlers (list (dicod-handler | |
22964 | (name "wordnet") | |
22965 | (module "dictorg") | |
22966 | (options | |
22967 | (list #~(string-append "dbdir=" #$wordnet)))))) | |
22968 | (databases (list (dicod-database | |
22969 | (name "wordnet") | |
22970 | (complex? #t) | |
22971 | (handler "wordnet") | |
22972 | (options '("database=wn"))) | |
22973 | %dicod-database:gcide)))) | |
22974 | @end example | |
22975 | ||
15f1bff4 JL |
22976 | @cindex Docker |
22977 | @subsubheading Docker Service | |
22978 | ||
22979 | The @code{(gnu services docker)} module provides the following service. | |
22980 | ||
22981 | @defvr {Scheme Variable} docker-service-type | |
22982 | ||
22983 | This is the type of the service that runs | |
22984 | @url{http://www.docker.com,Docker}, a daemon that can execute application | |
22985 | bundles (sometimes referred to as ``containers'') in isolated environments. | |
22986 | ||
22987 | @end defvr | |
22988 | ||
22989 | @deftp {Data Type} docker-configuration | |
22990 | This is the data type representing the configuration of Docker and | |
22991 | Containerd. | |
22992 | ||
22993 | @table @asis | |
22994 | ||
22995 | @item @code{package} (default: @code{docker}) | |
22996 | The Docker package to use. | |
22997 | ||
22998 | @item @code{containerd} (default: @var{containerd}) | |
22999 | The Containerd package to use. | |
23000 | ||
23001 | @end table | |
23002 | @end deftp | |
23003 | ||
bf5c74e7 | 23004 | @node Programmes setuid |
15f1bff4 JL |
23005 | @section Programmes setuid |
23006 | ||
23007 | @cindex programmes setuid | |
23008 | Certains programmes doivent être lancés avec les privilèges « root » même | |
23009 | lorsqu'ils sont lancés par un utilisateur non privilégié. Un exemple | |
23010 | notoire est le programme @command{passwd}, que les utilisateurs peuvent | |
23011 | appeler pour modifier leur mot de passe et qui doit accéder à | |
23012 | @file{/etc/passwd} et @file{/etc/shadow} — ce qui est normalement réservé à | |
23013 | root, pour des raisons de sécurité évidentes. Pour contourner cela, ces | |
23014 | exécutables sont @dfn{setuid-root}, ce qui signifie qu'ils seront toujours | |
23015 | lancés avec les privilèges root (@pxref{How Change Persona,,, libc, The GNU | |
23016 | C Library Reference Manual}, pour plus d'informations sur le mécanisme | |
23017 | setuid). | |
23018 | ||
23019 | Le dépôt lui-même ne @emph{peut pas} contenir de programmes setuid ; cela | |
23020 | serait un problème de sécurité puisque n'importe quel utilisateur du système | |
23021 | peut écrire une dérivation qui rempli le dépôt (@pxref{Le dépôt}). Donc, | |
23022 | un mécanisme différent est utilisé : au lieu de changer le bit setuid | |
23023 | directement sur les fichiers qui sont dans le dépôt, nous laissons à | |
23024 | l'administrateur système le soit de @emph{déclarer} les programmes qui | |
23025 | devraient être setuid root. | |
23026 | ||
23027 | Le champ @code{setuid-programs} d'une déclaration @code{operating-system} | |
23028 | contient une liste de G-expressions qui dénotent les noms des programmes à | |
23029 | rendre setuid-root (@pxref{Utiliser le système de configuration}). Par exemple, | |
23030 | le programme @command{passwd}, qui fait partie du paquet Shadow, peut être | |
23031 | désigné par cette G-expression (@pxref{G-Expressions}) : | |
bf5c74e7 JL |
23032 | |
23033 | @example | |
23034 | #~(string-append #$shadow "/bin/passwd") | |
23035 | @end example | |
23036 | ||
15f1bff4 JL |
23037 | Un ensemble de programmes par défaut est défini par la variable |
23038 | @code{%setuid-programs} du module @code{(gnu system)}. | |
bf5c74e7 | 23039 | |
1d8d69c8 | 23040 | @defvr {Variable Scheme} %setuid-programs |
15f1bff4 JL |
23041 | Une liste de G-expressions qui dénotent les programmes communément |
23042 | setuid-root. | |
bf5c74e7 | 23043 | |
15f1bff4 JL |
23044 | La liste inclus des commandes comme @command{passwd}, @command{ping}, |
23045 | @command{su} et @command{sudo}. | |
bf5c74e7 JL |
23046 | @end defvr |
23047 | ||
15f1bff4 JL |
23048 | Sous le capot, les programmes setuid sont créés dans le répertoire |
23049 | @file{/run/setuid-programs} au moment de l'activation du système. Les | |
23050 | fichiers dans ce répertoire se réfèrent aux « vrais » binaires, qui sont | |
23051 | dans le dépot. | |
bf5c74e7 JL |
23052 | |
23053 | @node Certificats X.509 | |
15f1bff4 | 23054 | @section Certificats X.509 |
bf5c74e7 | 23055 | |
15f1bff4 JL |
23056 | @cindex HTTPS, certificats |
23057 | @cindex certificats X.509 | |
bf5c74e7 | 23058 | @cindex TLS |
15f1bff4 JL |
23059 | Les serveurs web disponibles par HTTPS (c'est-à-dire HTTP sur le mécanisme |
23060 | de la couche de transport sécurisée, TLS) envoient aux clients un | |
23061 | @dfn{certificat X.509} que les clients peuvent utiliser pour | |
23062 | @emph{authentifier} le serveur. Pour cela, les clients vérifient que le | |
23063 | certificat du serveur est signé par une @dfn{autorité de certification} (AC | |
23064 | ou CA). Mais pour vérifier la signature de la CA, les clients doivent | |
23065 | d'abord avoir récupéré le certificat de la CA. | |
23066 | ||
23067 | Les navigateurs web comme GNU@tie{}IceCat incluent leur propre liste de | |
23068 | certificats, pour qu'ils puissent vérifier les signatures des CA | |
23069 | directement. | |
23070 | ||
23071 | Cependant, la plupart des autres programmes qui peuvent parler HTTPS — | |
23072 | @command{wget}, @command{git}, @command{w3m}, etc — doivent savoir où | |
23073 | trouver les certificats des CA. | |
bf5c74e7 JL |
23074 | |
23075 | @cindex @code{nss-certs} | |
15f1bff4 JL |
23076 | In Guix, this is done by adding a package that provides certificates to the |
23077 | @code{packages} field of the @code{operating-system} declaration | |
23078 | (@pxref{Référence de système d'exploitation}). Guix includes one such package, | |
bf5c74e7 JL |
23079 | @code{nss-certs}, which is a set of CA certificates provided as part of |
23080 | Mozilla's Network Security Services. | |
23081 | ||
15f1bff4 JL |
23082 | Remarquez qu'il ne fait @emph{pas} partie de @var{%base-packages}, donc vous |
23083 | devez explicitement l'ajouter. Le répertoire @file{/etc/ssl/certs}, là où | |
23084 | la plupart des applications et bibliothèques vont rechercher les certificats | |
23085 | par défaut, pointe vers les certificats installés globalement. | |
23086 | ||
23087 | Les utilisateurs non privilégiés, dont les utilisateurs de Guix sur une | |
23088 | distro externe, peuvent aussi installer leur propre paquet de certificats | |
23089 | dans leur profil. Un certain nombre de variables d'environnement doivent | |
23090 | être définies pour que les applications et les bibliothèques puissent les | |
23091 | trouver. En particulier, la bibliothèque OpenSSL honore les variables | |
23092 | @code{SSL_CERT_DIR} et @code{SSL_CERT_FILE}. Certaines applications | |
23093 | ajoutent leurs propres variables, par exemple le système de contrôle de | |
23094 | version Git honore le lot de certificats pointé par la variable | |
23095 | d'environnement @code{GIT_SSL_CAINFO}. Ainsi, vous lanceriez quelque chose | |
23096 | comme ceci : | |
bf5c74e7 JL |
23097 | |
23098 | @example | |
23099 | $ guix package -i nss-certs | |
23100 | $ export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs" | |
23101 | $ export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt" | |
23102 | $ export GIT_SSL_CAINFO="$SSL_CERT_FILE" | |
23103 | @end example | |
23104 | ||
15f1bff4 JL |
23105 | Un autre exemple serait R, qui requière que la variable d'environnement |
23106 | @code{CURL_CA_BUNDLE} pointe sur le lot de certificats, donc vous lanceriez | |
23107 | quelque chose comme ceci : | |
bf5c74e7 JL |
23108 | |
23109 | @example | |
23110 | $ guix package -i nss-certs | |
23111 | $ export CURL_CA_BUNDLE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt" | |
23112 | @end example | |
23113 | ||
15f1bff4 JL |
23114 | Pour d'autres applications vous pourriez avoir besoin de chercher la |
23115 | variable d'environnement requise dans leur documentation. | |
bf5c74e7 JL |
23116 | |
23117 | ||
23118 | @node Name Service Switch | |
15f1bff4 | 23119 | @section Name Service Switch |
bf5c74e7 JL |
23120 | |
23121 | @cindex name service switch | |
23122 | @cindex NSS | |
15f1bff4 JL |
23123 | Le module @code{(gnu system nss)} fournit des liaisons pour le fichier de |
23124 | configuration du @dfn{name service switch} ou @dfn{NSS} de la libc | |
23125 | (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference | |
23126 | Manual}). En résumé, NSS est un mécanisme qui permet à la libc d'être | |
23127 | étendue avec de nouvelles méthodes de résolution de « noms » dans les bases | |
23128 | de données du système, comme les noms d'hôtes, les noms des services, les | |
23129 | comptes utilisateurs et bien plus (@pxref{Name Service Switch, System | |
bf5c74e7 JL |
23130 | Databases and Name Service Switch,, libc, The GNU C Library Reference |
23131 | Manual}). | |
23132 | ||
15f1bff4 JL |
23133 | La configuration de NSS spécifie, pour chaque base de données du système, |
23134 | quelle méthode de résolution utiliser, et comment les diverses méthodes sont | |
23135 | enchaînées — par exemple, sous certaines circonstances, NSS devrait essayer | |
23136 | la méthode suivante de la liste. La configuration de NSS est donnée dans le | |
23137 | champ @code{name-service-switch} de la déclaration @code{operating-system} | |
23138 | (@pxref{Référence de système d'exploitation, @code{name-service-switch}}). | |
bf5c74e7 JL |
23139 | |
23140 | @cindex nss-mdns | |
15f1bff4 JL |
23141 | @cindex .local, résolution de nom d'hôte |
23142 | Par exemple, la déclation ci-dessous configure NSS pour utiliser le | |
23143 | @uref{http://0pointer.de/lennart/projects/nss-mdns/, moteur | |
23144 | @code{nss-mdns}}, qui supporte la résolution de nom d'hôte sur le DNS | |
23145 | multicast (mDNS) pour les noms d'hôtes terminant par @code{.local} : | |
bf5c74e7 JL |
23146 | |
23147 | @example | |
23148 | (name-service-switch | |
23149 | (hosts (list %files ;first, check /etc/hosts | |
23150 | ||
15f1bff4 JL |
23151 | ;; Si ce qui précède n'a pas fonctionné, essayer |
23152 | ;; avec « mdns_minimal ». | |
bf5c74e7 JL |
23153 | (name-service |
23154 | (name "mdns_minimal") | |
23155 | ||
15f1bff4 JL |
23156 | ;; « mdns_minimal » fait autorité pour |
23157 | ;; « .local ». Lorsqu'il renvoie « pas trouvé », | |
23158 | ;; inutile d'essayer la méthode suivante. | |
bf5c74e7 JL |
23159 | (reaction (lookup-specification |
23160 | (not-found => return)))) | |
23161 | ||
15f1bff4 | 23162 | ;; Puis revenir sur DNS. |
bf5c74e7 JL |
23163 | (name-service |
23164 | (name "dns")) | |
23165 | ||
15f1bff4 | 23166 | ;; Enfin, essayer avec « mdns complet ». |
bf5c74e7 JL |
23167 | (name-service |
23168 | (name "mdns"))))) | |
23169 | @end example | |
23170 | ||
15f1bff4 JL |
23171 | Ne vous inquiétez pas : la variable @code{%mdns-host-lookup-nss} (voir plus |
23172 | bas) contient cette configuration, donc vous n'avez pas besoin de tout taper | |
23173 | si vous voulez simplement que la résolution de nom en @code{.local} | |
23174 | fonctionne. | |
bf5c74e7 JL |
23175 | |
23176 | Note that, in this case, in addition to setting the | |
23177 | @code{name-service-switch} of the @code{operating-system} declaration, you | |
15f1bff4 JL |
23178 | also need to use @code{avahi-service-type} (@pxref{Services réseau, |
23179 | @code{avahi-service-type}}), or @var{%desktop-services}, which includes it | |
3cacfa9e | 23180 | (@pxref{Services de bureaux}). Doing this makes @code{nss-mdns} accessible to |
bf5c74e7 JL |
23181 | the name service cache daemon (@pxref{Services de base, @code{nscd-service}}). |
23182 | ||
15f1bff4 JL |
23183 | Pour votre confort, les variables suivantes contiennent des configurations |
23184 | NSS typiques. | |
bf5c74e7 | 23185 | |
1d8d69c8 | 23186 | @defvr {Variable Scheme} %default-nss |
15f1bff4 | 23187 | C'est la configuration NSS par défaut, un objet @code{name-service-switch}. |
bf5c74e7 JL |
23188 | @end defvr |
23189 | ||
1d8d69c8 | 23190 | @defvr {Variable Scheme} %mdns-host-lookup-nss |
15f1bff4 JL |
23191 | C'est la configuration NSS avec le support de la résolution de noms sur DNS |
23192 | multicast (mDNS) pour les noms d'hôtes en @code{.local}. | |
bf5c74e7 JL |
23193 | @end defvr |
23194 | ||
15f1bff4 JL |
23195 | La référence pour la configuration de NSS est donnée ci-dessous. C'est une |
23196 | correspondance directe avec le format de fichier de la bibliothèque C, donc | |
23197 | référez-vous au manuel de la bibliothèque C pour plus d'informations | |
23198 | (@pxref{NSS Configuration File,,, libc, The GNU C Library Reference | |
23199 | Manual}). Comparé au format de fichier de configuration de NSS, cette | |
23200 | configuration a l'avantage non seulement d'ajouter ces bonnes vieilles | |
23201 | parenthèses, mais aussi des vérifications statiques ; vous saurez s'il y a | |
23202 | des erreurs de syntaxe et des coquilles dès que vous lancerez @command{guix | |
bf5c74e7 JL |
23203 | system}. |
23204 | ||
1d8d69c8 | 23205 | @deftp {Type de données} name-service-switch |
bf5c74e7 | 23206 | |
15f1bff4 JL |
23207 | C'est le type de données représentant la configuration de NSS. Chaque champ |
23208 | ci-dessous représente l'un des système de bases de données supportés. | |
bf5c74e7 JL |
23209 | |
23210 | @table @code | |
23211 | @item aliases | |
23212 | @itemx ethers | |
23213 | @itemx group | |
23214 | @itemx gshadow | |
23215 | @itemx hosts | |
23216 | @itemx initgroups | |
23217 | @itemx netgroup | |
23218 | @itemx networks | |
23219 | @itemx password | |
23220 | @itemx public-key | |
23221 | @itemx rpc | |
23222 | @itemx services | |
23223 | @itemx shadow | |
15f1bff4 JL |
23224 | Les bases de données du système gérées par NSS. Chaque champ doit être une |
23225 | liste d'objets @code{<name-service>} (voir plus bas). | |
bf5c74e7 JL |
23226 | @end table |
23227 | @end deftp | |
23228 | ||
1d8d69c8 | 23229 | @deftp {Type de données} name-service |
bf5c74e7 | 23230 | |
15f1bff4 JL |
23231 | C'est le type de données représentant un service de noms et l'action de |
23232 | résolution associée. | |
bf5c74e7 JL |
23233 | |
23234 | @table @code | |
23235 | @item name | |
15f1bff4 | 23236 | Une chaîne dénotant le service de nom (@pxref{Services in the NSS |
bf5c74e7 JL |
23237 | configuration,,, libc, The GNU C Library Reference Manual}). |
23238 | ||
15f1bff4 JL |
23239 | Remarquez que les services de dnoms listés ici doivent être visibles à |
23240 | nscd. Cela se fait en passant la liste des paquets fournissant les services | |
23241 | de noms à l'argument @code{#:name-services} de @code{nscd-service} | |
bf5c74e7 JL |
23242 | (@pxref{Services de base, @code{nscd-service}}). |
23243 | ||
23244 | @item reaction | |
15f1bff4 | 23245 | Une action spécifiée par la macro @code{lookup-specification} |
bf5c74e7 | 23246 | (@pxref{Actions in the NSS configuration,,, libc, The GNU C Library |
15f1bff4 | 23247 | Reference Manual}). Par exemple : |
bf5c74e7 JL |
23248 | |
23249 | @example | |
23250 | (lookup-specification (unavailable => continue) | |
23251 | (success => return)) | |
23252 | @end example | |
23253 | @end table | |
23254 | @end deftp | |
23255 | ||
23256 | @node Disque de RAM initial | |
15f1bff4 | 23257 | @section Disque de RAM initial |
bf5c74e7 JL |
23258 | |
23259 | @cindex initrd | |
1d8d69c8 | 23260 | @cindex disque de RAM initial |
15f1bff4 JL |
23261 | Pour le démarrage, on passe au noyau Linux-Libre un @dfn{disque de RAM |
23262 | initial} ou @dfn{initrd}. Un initrd contient un système de fichier racine | |
23263 | temporaire ainsi qu'un script d'initialisation. Ce dernier est responsable | |
23264 | du montage du vrai système de fichier racine et du chargement des modules du | |
23265 | noyau qui peuvent être nécessaires à cette tâche. | |
23266 | ||
23267 | Le champ @code{initrd-modules} d'une déclaration @code{operating-system} | |
23268 | vous permet de spécifier les modules du noyau Linux-Libre qui doivent être | |
23269 | disponibles dans l'initrd. En particulier, c'est là où vous devez lister | |
23270 | les modules requis pour effectivement piloter le disque dur où se trouve la | |
23271 | partition racine — bien que la valeur par défaut de @code{initrd-modules} | |
23272 | couvre la plupart des cas. Par exemple, en supposant que vous ayez besoin | |
23273 | du module @code{megaraid_sas} en plus des modules par défaut pour accéder à | |
23274 | votre système de fichiers racine, vous écririez : | |
bf5c74e7 JL |
23275 | |
23276 | @example | |
23277 | (operating-system | |
23278 | ;; @dots{} | |
23279 | (initrd-modules (cons "megaraid_sas" %base-initrd-modules))) | |
23280 | @end example | |
23281 | ||
1d8d69c8 | 23282 | @defvr {Variable Scheme} %base-initrd-modules |
15f1bff4 | 23283 | C'est la liste des modules du noyau inclus dans l'initrd par défaut. |
bf5c74e7 JL |
23284 | @end defvr |
23285 | ||
15f1bff4 JL |
23286 | En plus, si vous avez besoin de paramétrages plus bas niveau, le champ |
23287 | @code{initrd} d'une déclaration @code{operating-system} vous permet de | |
23288 | spécifier quel initrd vous voudriez utiliser. Le module @code{(gnu system | |
23289 | linux-initrd)} fournit trois manières de construire un initrd : la procédure | |
23290 | @code{base-initrd} de haut niveau et les procédures @code{raw-initrd} et | |
23291 | @code{expression->initrd} de bas niveau. | |
bf5c74e7 | 23292 | |
15f1bff4 JL |
23293 | La procédure @code{base-initrd} est conçue pour couvrir la plupart des |
23294 | usages courants. Par exemple, si vous voulez ajouter des modules du noyau à | |
23295 | charger au démarrage, vous pouvez définir le champ @code{initrd} de votre | |
23296 | déclaration de système d'exploitation ainsi : | |
bf5c74e7 JL |
23297 | |
23298 | @example | |
23299 | (initrd (lambda (file-systems . rest) | |
15f1bff4 JL |
23300 | ;; Crée un initrd standard mais paramètre le réseau |
23301 | ;; avec les paramètres que QEMU attend par défaut. | |
bf5c74e7 JL |
23302 | (apply base-initrd file-systems |
23303 | #:qemu-networking? #t | |
23304 | rest))) | |
23305 | @end example | |
23306 | ||
15f1bff4 JL |
23307 | La procédure @code{base-initrd} gère aussi les cas d'utilisation courants |
23308 | qui concernent l'utilisation du système comme client QEMU, ou comme un | |
23309 | système « live » avec un système de fichier racine volatile. | |
bf5c74e7 | 23310 | |
15f1bff4 JL |
23311 | La procédure @code{base-initrd} est construite à partir de la procédure |
23312 | @code{raw-initrd}. Contrairement à @code{base-initrd}, @code{raw-initrd} ne | |
23313 | fait rien à haut-niveau, comme essayer de deviner les modules du noyau et | |
23314 | les paquets qui devraient être inclus dans l'initrd. Un exemple | |
23315 | d'utilisation de @code{raw-initrd} serait si un utilisateur a une | |
23316 | configuration personnalisée du noyau Linux et que les modules du noyau | |
23317 | inclus par défaut par @code{base-initrd} ne sont pas disponibles. | |
bf5c74e7 | 23318 | |
15f1bff4 JL |
23319 | Le disque de RAM initial produit par @code{base-initrd} ou @code{raw-initrd} |
23320 | honore plusieurs options passées par la ligne de commande du noyau Linux | |
23321 | (c'est-à-dire les arguments passés via la commande @code{linux} de GRUB ou | |
23322 | l'option @code{-append} de QEMU), notamment : | |
bf5c74e7 JL |
23323 | |
23324 | @table @code | |
23325 | @item --load=@var{boot} | |
15f1bff4 JL |
23326 | Dit au disque de RAM initial de charger @var{boot}, un fichier contenant un |
23327 | programme Scheme, une fois qu'il a monté le système de fichier racine. | |
bf5c74e7 | 23328 | |
15f1bff4 | 23329 | Guix uses this option to yield control to a boot program that runs the |
bf5c74e7 JL |
23330 | service activation programs and then spawns the GNU@tie{}Shepherd, the |
23331 | initialization system. | |
23332 | ||
23333 | @item --root=@var{root} | |
15f1bff4 JL |
23334 | Monte @var{root} comme système de fichier racine. @var{root} peut être un |
23335 | nom de périphérique comme @code{/dev/sda1}, une étiquette de système de | |
23336 | fichiers ou un UUID de système de fichiers. | |
bf5c74e7 | 23337 | |
3cacfa9e | 23338 | @item --system=@var{système} |
15f1bff4 JL |
23339 | S'assure que @file{/run/booted-system} et @file{/run/current-system} |
23340 | pointent vers @var{system}. | |
bf5c74e7 JL |
23341 | |
23342 | @item modprobe.blacklist=@var{modules}@dots{} | |
15f1bff4 JL |
23343 | @cindex module, black-list |
23344 | @cindex black-list, des modules du noyau | |
23345 | Dit au disque de RAM initial ainsi qu'à la commande @command{modprobe} (du | |
23346 | paquet kmod) de refuser de charger @var{modules}. @var{modules} doit être | |
23347 | une liste de noms de modules séparés par des virgules — p.@: ex.@: | |
23348 | @code{usbkbd,9pnet}. | |
bf5c74e7 JL |
23349 | |
23350 | @item --repl | |
15f1bff4 JL |
23351 | Démarre une boucle lecture-évaluation-affichage (REPL) depuis le disque de |
23352 | RAM initial avant qu'il n'essaye de charger les modules du noyau et de | |
23353 | monter le système de fichiers racine. Notre équipe commerciale appelle cela | |
23354 | @dfn{boot-to-Guile}. Le Schemeur en vous va adorer. @xref{Using Guile | |
23355 | Interactively,,, guile, GNU Guile Reference Manual}, pour plus d'information | |
23356 | sur le REPL de Guile. | |
bf5c74e7 JL |
23357 | |
23358 | @end table | |
23359 | ||
15f1bff4 JL |
23360 | Maintenant que vous connaissez toutes les fonctionnalités des disques de RAM |
23361 | initiaux produits par @code{base-initrd} et @code{raw-initrd}, voici comment | |
23362 | l'utiliser le personnalisé plus avant. | |
bf5c74e7 JL |
23363 | |
23364 | @cindex initrd | |
1d8d69c8 | 23365 | @cindex disque de RAM initial |
adfb167f | 23366 | @deffn {Procédure Scheme} raw-initrd @var{file-systems} @ |
15f1bff4 JL |
23367 | [#:linux-modules '()] [#:mapped-devices '()] @ |
23368 | [#:helper-packages '()] [#:qemu-networking? #f] [#:volatile-root? #f] | |
23369 | Renvoie une dérivation qui construit un initrd. @var{file-systems} est une | |
23370 | liste de systèmes de fichiers à monter par l'initrd, éventuellement en plus | |
23371 | du système de fichier racine spécifié sur la ligne de commande du noyau via | |
23372 | @code{--root}. @var{linux-modules} est une liste de modules du noyau à | |
23373 | charger au démarrage. @var{mapped-devices} est une liste de correspondances | |
23374 | de périphériques à réaliser avant que les @var{file-systems} ne soient | |
23375 | montés (@pxref{Périphériques mappés}). @var{helper-packages} est une liste de | |
23376 | paquets à copier dans l'initrd. Elle peut inclure @code{e2fsck/static} ou | |
23377 | d'autres paquets requis par l'initrd pour vérifier le système de fichiers | |
23378 | racine. | |
23379 | ||
23380 | Lorsque @var{qemu-networking?} est vrai, paramètre le réseau avec les | |
23381 | paramètres QEMU standards. Lorsque @var{virtio?} est vrai, charge des | |
23382 | modules supplémentaires pour que l'initrd puisse être utilisé comme client | |
23383 | QEMU avec les pilotes I/O para-virtualisés. | |
23384 | ||
23385 | Lorsque @var{volatile-root?} est vrai, le système de fichier racine est | |
23386 | inscriptible mais tous les changements seront perdus. | |
bf5c74e7 JL |
23387 | @end deffn |
23388 | ||
adfb167f | 23389 | @deffn {Procédure Scheme} base-initrd @var{file-systems} @ |
15f1bff4 JL |
23390 | [#:mapped-devices '()] [#:qemu-networking? #f] [#:volatile-root? #f] @ |
23391 | [#:linux-modules '()] | |
23392 | Renvoie un objet simili-fichier contenant un initrd générique, avec les | |
23393 | modules du noyau de @var{linux}. @var{file-systems} est une liste de | |
23394 | systèmes de fichiers à monter par l'initrd, éventuellement en plus du | |
23395 | système de fichiers racine spécifié sur la ligne de commande du noyau via | |
23396 | @code{--root}. @var{mapped-devices} est une liste de correspondances de | |
23397 | périphériques à réaliser avant de monter les @var{file-systems}. | |
23398 | ||
23399 | @var{qemu-networking?} et @var{volatile-root?} se comportent comme pour | |
bf5c74e7 JL |
23400 | @code{raw-initrd}. |
23401 | ||
15f1bff4 JL |
23402 | L'initrd est automatiquement remplie avec tous les modules du noyau requis |
23403 | pour @var{file-systems} et pour les options données. On peut lister des | |
23404 | modules supplémentaires dans @var{linux-modules}. Ils seront ajoutés à | |
23405 | l'initrd et chargés au démarrage dans l'ordre dans lequel ils apparaissent. | |
bf5c74e7 JL |
23406 | @end deffn |
23407 | ||
15f1bff4 JL |
23408 | Inutile de le dire, les initrds que nous produisons et utilisons incluent |
23409 | une version de Guile liée statiquement, et le programme d'initialisation est | |
23410 | un programme Guile. Cela donne beaucoup de flexibilité. La procédure | |
23411 | @code{expression->initrd} construit un tel initrd, étant donné le programme | |
23412 | à lancer dans cet initrd. | |
bf5c74e7 | 23413 | |
adfb167f | 23414 | @deffn {Procédure Scheme} expression->initrd @var{exp} @ |
15f1bff4 JL |
23415 | [#:guile %guile-static-stripped] [#:name "guile-initrd"] |
23416 | Renvoie un objet simili-fichier contenant un initrd Linux (une archive cpio | |
23417 | compressée avec gzip) contenant @var{guile} et qui évalue @var{exp}, une | |
23418 | G-expression, au démarrage. Toutes les dérivations référencées par | |
23419 | @var{exp} sont automatiquement copiées dans l'initrd. | |
bf5c74e7 JL |
23420 | @end deffn |
23421 | ||
23422 | @node Configuration du chargeur d'amorçage | |
15f1bff4 | 23423 | @section Configuration du chargeur d'amorçage |
bf5c74e7 JL |
23424 | |
23425 | @cindex bootloader | |
15f1bff4 | 23426 | @cindex chargeur d'amorçage |
bf5c74e7 | 23427 | |
15f1bff4 JL |
23428 | Le système d'exploitation supporte plusieurs chargeurs d'amorçage. La |
23429 | configuration du chargeur d'amorçage se fait avec la déclaration | |
23430 | @code{bootloader-configuration}. Tous les champs de cette structure sont | |
23431 | indépendants du chargeur d'amorçage sauf un, @code{bootloader} qui indique | |
23432 | le chargeur d'amorçage à configurer et à installer. | |
bf5c74e7 | 23433 | |
15f1bff4 JL |
23434 | Certains chargeurs d'amorçage ne respectent pas tous les champs de |
23435 | @code{bootloader-configuration}. Par exemple, le chargeur d'amorçage | |
23436 | extlinux ne supporte pas les thèmes et ignore donc le champ @code{theme}. | |
bf5c74e7 | 23437 | |
1d8d69c8 | 23438 | @deftp {Type de données} bootloader-configuration |
15f1bff4 | 23439 | Le type d'une déclaration de configuration de chargeur d'amorçage. |
bf5c74e7 JL |
23440 | |
23441 | @table @asis | |
23442 | ||
23443 | @item @code{bootloader} | |
15f1bff4 JL |
23444 | @cindex EFI, chargeur d'amorçage |
23445 | @cindex UEFI, chargeur d'amorçage | |
23446 | @cindex BIOS, chargeur d'amorçage | |
23447 | Le chargeur d'amorçage à utiliser, comme objet @code{bootloader}. Pour | |
23448 | l'instant @code{grub-bootloader}, @code{grub-efi-bootloader}, | |
23449 | @code{extlinux-bootloader} et @code{u-boot-bootloader} sont supportés. | |
524756d1 JL |
23450 | |
23451 | @vindex grub-efi-bootloader | |
15f1bff4 JL |
23452 | @code{grub-efi-bootloader} permet de démarrer sur un système moderne qui |
23453 | utilise l'UEFI (@dfn{Unified Extensible Firmware Interface}). C'est ce que | |
23454 | vous devriez utiliser si l'image d'installation contient un répertoire | |
23455 | @file{/sys/firmware/efi} lorsque vous démarrez dessus sur votre machine. | |
524756d1 JL |
23456 | |
23457 | @vindex grub-bootloader | |
15f1bff4 JL |
23458 | @code{grub-bootloader} vous permet de démarrer en particulier sur des |
23459 | machines Intel en mode BIOS « legacy ». | |
bf5c74e7 | 23460 | |
adfb167f JL |
23461 | @cindex ARM, chargeurs d'amorçage |
23462 | @cindex AArch64, chargeurs d'amorçage | |
15f1bff4 JL |
23463 | Les chargeurs d'amorçage disponibles sont décrits dans les modules |
23464 | @code{(gnu bootloader @dots{})}. En particulier, @code{(gnu bootloader | |
23465 | u-boot)} contient des définitions de chargeurs d'amorçage pour une large | |
23466 | gamme de systèmes ARM et AArch, à l'aide du | |
23467 | @uref{http://www.denx.de/wiki/U-Boot/, chargeur d'amorçage U-Boot} | |
bf5c74e7 JL |
23468 | |
23469 | @item @code{target} | |
15f1bff4 JL |
23470 | C'est une chaîne qui dénote la cible sur laquelle installer le chargeur |
23471 | d'amorçage. | |
524756d1 | 23472 | |
15f1bff4 JL |
23473 | L'interprétation dépend du chargeur d'amorçage en question. Pour |
23474 | @code{grub-bootloader} par exemple, cela devrait être un nom de périphérique | |
23475 | compris par la commande @command{installer} du chargeur d'amorçage, comme | |
23476 | @code{/dev/sda} ou @code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU | |
23477 | GRUB Manual}). Pour @code{grub-efi-bootloader}, cela devrait être le point | |
23478 | de montage du système de fichiers EFI, typiquement @file{/boot/efi}. | |
bf5c74e7 | 23479 | |
1d8d69c8 | 23480 | @item @code{menu-entries} (par défaut : @code{()}) |
15f1bff4 JL |
23481 | Une liste éventuellement vide d'objets @code{menu-entry} (voir plus bas), |
23482 | dénotant les entrées qui doivent apparaître dans le menu du chargeur | |
23483 | d'amorçage, en plus de l'entrée pour le système actuel et l'entrée pointant | |
23484 | vers les générations précédentes. | |
bf5c74e7 | 23485 | |
1d8d69c8 | 23486 | @item @code{default-entry} (par défaut : @code{0}) |
15f1bff4 JL |
23487 | L'index de l'entrée du menu de démarrage par défaut. L'index 0 correspond |
23488 | au système actuel. | |
bf5c74e7 | 23489 | |
1d8d69c8 | 23490 | @item @code{timeout} (par défaut : @code{5}) |
15f1bff4 JL |
23491 | Le nombre de secondes à attendre une entrée clavier avant de démarrer. |
23492 | Indiquez 0 pour démarre immédiatement, et -1 pour attendre indéfiniment. | |
bf5c74e7 | 23493 | |
1d8d69c8 | 23494 | @item @code{theme} (par défaut : @var{#f}) |
15f1bff4 JL |
23495 | L'objet de thème du chargeur d'amorçage décrivant le thème utilisé. Si |
23496 | aucun thème n'est fournit, certains chargeurs d'amorçage peuvent utiliser un | |
23497 | thème par défaut, c'est le cas de GRUB. | |
bf5c74e7 | 23498 | |
1d8d69c8 | 23499 | @item @code{terminal-outputs} (par défaut : @code{'gfxterm}) |
15f1bff4 JL |
23500 | Les terminaux de sortie utilisés par le menu de démarrage du chargeur |
23501 | d'amorçage, en tant que liste de symboles. GRUB accepte les valeurs | |
23502 | @code{console}, @code{serial}, @code{serial_@{0-3@}}, @code{gfxterm}, | |
23503 | @code{vga_text}, @code{mda_text}, @code{morse} et @code{pkmodem}. Ce champ | |
23504 | correspond à la variable GRUB @code{GRUB_TERMINAL_OUTPUT} (@pxref{Simple | |
23505 | configuration,,, grub,GNU GRUB manual}). | |
bf5c74e7 | 23506 | |
1d8d69c8 | 23507 | @item @code{terminal-inputs} (par défaut : @code{'()}) |
15f1bff4 JL |
23508 | Les terminaux d'entrée utilisés par le menu de démarrage du chargeur |
23509 | d'amorçage, en tant que liste de symboles. Pour GRUB, la valeur par défaut | |
23510 | est le terminal natif de la plate-forme déterminé à l'exécution. GRUB | |
23511 | accepte les valeurs @code{console}, @code{serial}, @code{serial_@{0-3@}}, | |
23512 | @code{at_keyboard} et @code{usb_keyboard}. Ce champ correspond à la | |
23513 | variable GRUB @code{GRUB_TERMINAL_INPUT} (@pxref{Simple configuration,,, | |
23514 | grub,GNU GRUB manual}). | |
bf5c74e7 | 23515 | |
1d8d69c8 | 23516 | @item @code{serial-unit} (par défaut : @code{#f}) |
15f1bff4 JL |
23517 | L'unitié série utilisée par le chargeur d'amorçage, en tant qu'entier entre |
23518 | 0 et 3. Pour GRUB, il est choisi à l'exécution ; actuellement GRUB choisi | |
23519 | 0, ce qui correspond à COM1 (@pxref{Serial terminal,,, grub,GNU GRUB | |
23520 | manual}). | |
bf5c74e7 | 23521 | |
1d8d69c8 | 23522 | @item @code{serial-speed} (par défaut : @code{#f}) |
15f1bff4 JL |
23523 | La vitesse de l'interface série, en tant qu'entier. Pour GRUB, la valeur |
23524 | par défaut est choisie à l'exécution ; actuellement GRUB choisi | |
23525 | 9600@tie{}bps (@pxref{Serial terminal,,, grub,GNU GRUB manual}). | |
bf5c74e7 JL |
23526 | @end table |
23527 | ||
23528 | @end deftp | |
23529 | ||
23530 | @cindex dual boot | |
15f1bff4 JL |
23531 | @cindex menu de démarrage |
23532 | Si vous voulez lister des entrées du menu de démarrage supplémentaires via | |
23533 | le champ @code{menu-entries} ci-dessus, vous devrez les créer avec la forme | |
23534 | @code{menu-entry}. Par exemple, imaginons que vous souhaitiez pouvoir | |
23535 | démarrer sur une autre distro (c'est difficile à concevoir !), vous pourriez | |
23536 | alors définir une entrée du menu comme ceci : | |
bf5c74e7 JL |
23537 | |
23538 | @example | |
23539 | (menu-entry | |
15f1bff4 | 23540 | (label "L'autre distro") |
bf5c74e7 JL |
23541 | (linux "/boot/old/vmlinux-2.6.32") |
23542 | (linux-arguments '("root=/dev/sda2")) | |
23543 | (initrd "/boot/old/initrd")) | |
23544 | @end example | |
23545 | ||
15f1bff4 | 23546 | Les détails suivent. |
bf5c74e7 | 23547 | |
1d8d69c8 | 23548 | @deftp {Type de données} menu-entry |
15f1bff4 | 23549 | Le type d'une entrée dans le menu du chargeur d'amorçage. |
bf5c74e7 JL |
23550 | |
23551 | @table @asis | |
23552 | ||
23553 | @item @code{label} | |
15f1bff4 | 23554 | L'étiquette à montrer dans le menu — p.@: ex.@: @code{"GNU"}. |
bf5c74e7 JL |
23555 | |
23556 | @item @code{linux} | |
15f1bff4 | 23557 | L'image du noyau Linux à démarrer, par exemple : |
bf5c74e7 JL |
23558 | |
23559 | @example | |
23560 | (file-append linux-libre "/bzImage") | |
23561 | @end example | |
23562 | ||
15f1bff4 JL |
23563 | Pour GRUB, il est aussi possible de spécifier un périphérique explicitement |
23564 | dans le chemin de fichier avec la convention de nommage de GRUB | |
23565 | (@pxref{Naming convention,,, grub, GNU GRUB manual}), par exemple : | |
bf5c74e7 JL |
23566 | |
23567 | @example | |
23568 | "(hd0,msdos1)/boot/vmlinuz" | |
23569 | @end example | |
23570 | ||
15f1bff4 JL |
23571 | Si le périphérique est spécifié explicitement comme au-dessus, le champ |
23572 | @code{device} est complètement ignoré. | |
bf5c74e7 | 23573 | |
1d8d69c8 | 23574 | @item @code{linux-arguments} (par défaut : @code{()}) |
15f1bff4 JL |
23575 | La liste des arguments de la ligne de commande du noyau supplémentaires — |
23576 | p.@: ex.@: @code{("console=ttyS0")}. | |
bf5c74e7 JL |
23577 | |
23578 | @item @code{initrd} | |
15f1bff4 JL |
23579 | Une G-expression ou une chaîne dénotant le nom de fichier du disque de RAM |
23580 | initial à utiliser (@pxref{G-Expressions}). | |
1d8d69c8 | 23581 | @item @code{device} (par défaut : @code{#f}) |
15f1bff4 JL |
23582 | Le périphérique où le noyau et l'initrd se trouvent — c.-à-d.@: pour GRUB, |
23583 | l'option @dfn{root} de cette entrée de menu (@pxref{root,,, grub, GNU GRUB | |
23584 | manual}). | |
bf5c74e7 | 23585 | |
15f1bff4 JL |
23586 | Cela peut être une étiquette de système de fichiers (une chaîne), un UUID de |
23587 | système de fichiers (un vecteur d'octets, @pxref{Systèmes de fichiers}) ou | |
23588 | @code{#f}, auquel cas le chargeur d'amorçage recherchera le périphérique | |
23589 | contenant le fichier spécifié par le champ @code{linux} (@pxref{search,,, | |
23590 | grub, GNU GRUB manual}). Cela ne doit @emph{pas} être un nom de | |
23591 | périphérique donné par l'OS comme @file{/dev/sda1}. | |
bf5c74e7 JL |
23592 | |
23593 | @end table | |
23594 | @end deftp | |
23595 | ||
23596 | @c FIXME: Write documentation once it's stable. | |
15f1bff4 JL |
23597 | Pour l'instant seul GRUB supporte les thèmes. On crée un thème GRUB avec la |
23598 | forme @code{grub-theme}, qui n'est pas encore documentée. | |
bf5c74e7 | 23599 | |
1d8d69c8 | 23600 | @defvr {Variable Scheme} %default-theme |
15f1bff4 JL |
23601 | C'est le thème par défaut de GRUB utilisé par le système d'exploitation si |
23602 | aucun champ @code{theme} n'est spécifié dans l'enregistrement | |
23603 | @code{bootloader-configuration}. | |
bf5c74e7 | 23604 | |
15f1bff4 | 23605 | Il contient une image de fond sympathique avec les logos de GNU et de Guix. |
bf5c74e7 JL |
23606 | @end defvr |
23607 | ||
23608 | ||
23609 | @node Invoquer guix system | |
15f1bff4 | 23610 | @section Invoquer @code{guix system} |
bf5c74e7 | 23611 | |
15f1bff4 JL |
23612 | Une fois que vous avez écrit une déclaration de système d'exploitation comme |
23613 | nous l'avons vu dans les sections précédentes, elle peut être instanciée | |
23614 | avec la commande @command{guix system}. Voici le résumé de la commande : | |
bf5c74e7 JL |
23615 | |
23616 | @example | |
23617 | guix system @var{options}@dots{} @var{action} @var{file} | |
23618 | @end example | |
23619 | ||
15f1bff4 JL |
23620 | @var{file} doit être le nom d'un fichier contenant une déclaration |
23621 | @code{operating-system}. @var{action} spécifie comme le système | |
23622 | d'exploitation est instancié. Actuellement les valeurs suivantes sont | |
23623 | supportées : | |
bf5c74e7 JL |
23624 | |
23625 | @table @code | |
23626 | @item search | |
15f1bff4 JL |
23627 | Affiche les définitions des types de services disponibles qui correspondent |
23628 | aux expressions régulières données, triées par pertinence. | |
bf5c74e7 JL |
23629 | |
23630 | @example | |
23631 | $ guix system search console font | |
23632 | name: console-fonts | |
15f1bff4 | 23633 | location: gnu/services/base.scm:773:2 |
bf5c74e7 | 23634 | extends: shepherd-root |
15f1bff4 JL |
23635 | 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 |
23636 | + de tty/police comme ceci : | |
bf5c74e7 JL |
23637 | + |
23638 | + '(("tty1" . "LatGrkCyr-8x16")) | |
15f1bff4 | 23639 | relevance: 16 |
bf5c74e7 JL |
23640 | |
23641 | name: mingetty | |
15f1bff4 | 23642 | location: gnu/services/base.scm:1144:2 |
bf5c74e7 | 23643 | extends: shepherd-root |
15f1bff4 JL |
23644 | description: Fournit la connexion en console avec le programme `mingetty'. |
23645 | relevance: 4 | |
bf5c74e7 JL |
23646 | |
23647 | name: login | |
15f1bff4 | 23648 | location: gnu/services/base.scm:819:2 |
bf5c74e7 | 23649 | extends: pam |
15f1bff4 JL |
23650 | description: Fournit un service de connexion en console tel que spécifié par sa valeur de configuration, un objet `login-configuration'. |
23651 | relevance: 4 | |
bf5c74e7 JL |
23652 | |
23653 | @dots{} | |
23654 | @end example | |
23655 | ||
15f1bff4 JL |
23656 | Comme pour @command{guix package --search}, le résultat est écrit au format |
23657 | @code{recutils}, ce qui rend facile le filtrage de la sortie (@pxref{Top, | |
23658 | GNU recutils databases,, recutils, GNU recutils manual}). | |
bf5c74e7 JL |
23659 | |
23660 | @item reconfigure | |
23661 | Build the operating system described in @var{file}, activate it, and switch | |
23662 | to it@footnote{This action (and the related actions @code{switch-generation} | |
15f1bff4 JL |
23663 | and @code{roll-back}) are usable only on systems already running Guix |
23664 | System.}. | |
bf5c74e7 JL |
23665 | |
23666 | This effects all the configuration specified in @var{file}: user accounts, | |
23667 | system services, global package list, setuid programs, etc. The command | |
23668 | starts system services specified in @var{file} that are not currently | |
adfb167f JL |
23669 | running; if a service is currently running this command will arrange for it |
23670 | to be upgraded the next time it is stopped (e.g.@: by @code{herd stop X} or | |
23671 | @code{herd restart X}). | |
bf5c74e7 | 23672 | |
15f1bff4 JL |
23673 | Cette commande crée une nouvelle génération dont le numéro est un de plus |
23674 | que la génération actuelle (rapportée par @command{guix system | |
23675 | list-generations}). Si cette génération existe déjà, elle sera réécrite. | |
23676 | Ce comportement correspond à celui de @command{guix package} | |
23677 | (@pxref{Invoquer guix package}). | |
bf5c74e7 | 23678 | |
15f1bff4 JL |
23679 | Elle ajoute aussi une entrée de menu du chargeur d'amorçage pour la nouvelle |
23680 | configuration, à moins que @option{--no-bootloader} ne soit passé. Pour | |
23681 | GRUB, elle déplace les entrées pour les anciennes configurations dans un | |
23682 | sous-menu, ce qui vous permet de choisir une ancienne génération au | |
23683 | démarrage si vous en avez besoin. | |
bf5c74e7 | 23684 | |
3cacfa9e | 23685 | @quotation Remarque |
bf5c74e7 JL |
23686 | @c The paragraph below refers to the problem discussed at |
23687 | @c <http://lists.gnu.org/archive/html/guix-devel/2014-08/msg00057.html>. | |
15f1bff4 JL |
23688 | Il est grandement recommandé de lancer @command{guix pull} une fois avant de |
23689 | lancer @command{guix system reconfigure} pour la première fois | |
23690 | (@pxref{Invoquer guix pull}). Sans cela, vous verriez une version plus | |
23691 | ancienne de Guix une fois @command{reconfigure} terminé. | |
bf5c74e7 JL |
23692 | @end quotation |
23693 | ||
23694 | @item switch-generation | |
3cacfa9e | 23695 | @cindex générations |
15f1bff4 JL |
23696 | Passe à une génération existante du système. Cette action change |
23697 | automatiquement le profil système vers la génération spécifiée. Elle | |
23698 | réarrange aussi les entrées existantes du menu du chargeur d'amorçage du | |
23699 | système. Elle fait de l'entrée du menu pour la génération spécifiée | |
23700 | l'entrée par défaut et déplace les entrées pour les autres générations dans | |
23701 | un sous-menu, si cela est supporté par le chargeur d'amorçage utilisé. Lors | |
23702 | du prochain démarrage du système, la génération du système spécifiée sera | |
23703 | utilisée. | |
bf5c74e7 | 23704 | |
15f1bff4 JL |
23705 | Le chargeur d'amorçage lui-même n'est pas réinstallé avec cette commande. |
23706 | Ainsi, le chargeur d'amorçage est utilisé avec un fichier de configuration | |
23707 | plus à jour. | |
bf5c74e7 | 23708 | |
15f1bff4 JL |
23709 | La génération cible peut être spécifiée explicitement par son numéro de |
23710 | génération. Par exemple, l'invocation suivante passerait à la génération 7 | |
23711 | du système : | |
bf5c74e7 JL |
23712 | |
23713 | @example | |
23714 | guix system switch-generation 7 | |
23715 | @end example | |
23716 | ||
15f1bff4 JL |
23717 | La génération cible peut aussi être spécifiée relativement à la génération |
23718 | actuelle avec la forme @code{+N} ou @code{-N}, où @code{+3} signifie « trois | |
23719 | générations après la génération actuelle » et @code{-1} signifie « une | |
23720 | génération précédent la génération actuelle ». Lorsque vous spécifiez un | |
23721 | nombre négatif comme @code{-1}, il doit être précédé de @code{--} pour | |
23722 | éviter qu'il ne soit compris comme une option. Par exemple : | |
bf5c74e7 JL |
23723 | |
23724 | @example | |
23725 | guix system switch-generation -- -1 | |
23726 | @end example | |
23727 | ||
15f1bff4 JL |
23728 | Actuellement, l'effet de l'invocation de cette action est @emph{uniquement} |
23729 | de passer au profil du système vers une autre génération existante et de | |
23730 | réarranger le menu du chargeur d'amorçage. Pour vraiment commencer à | |
23731 | utiliser la génération spécifiée, vous devez redémarrer après avoir lancé | |
23732 | cette action. Dans le futur, elle sera corrigée pour faire la même chose | |
23733 | que @command{reconfigure}, comme réactiver et désactiver les services. | |
bf5c74e7 | 23734 | |
15f1bff4 | 23735 | Cette action échouera si la génération spécifiée n'existe pas. |
bf5c74e7 JL |
23736 | |
23737 | @item roll-back | |
3cacfa9e | 23738 | @cindex revenir en arrière |
15f1bff4 JL |
23739 | Passe à la génération précédente du système. Au prochain démarrage, la |
23740 | génération précédente sera utilisée. C'est le contraire de | |
23741 | @command{reconfigure}, et c'est exactement comme invoquer | |
23742 | @command{switch-generation} avec pour argument @code{-1}. | |
23743 | ||
23744 | Actuellement, comme pour @command{switch-generation}, vous devez redémarrer | |
23745 | après avoir lancé cette action pour vraiment démarrer sur la génération | |
23746 | précédente du système. | |
23747 | ||
23748 | @item delete-generations | |
23749 | @cindex deleting system generations | |
23750 | @cindex saving space | |
23751 | Delete system generations, making them candidates for garbage collection | |
23752 | (@pxref{Invoquer guix gc}, for information on how to run the ``garbage | |
23753 | collector''). | |
23754 | ||
23755 | This works in the same way as @command{guix package --delete-generations} | |
23756 | (@pxref{Invoquer guix package, @code{--delete-generations}}). With no | |
23757 | arguments, all system generations but the current one are deleted: | |
23758 | ||
23759 | @example | |
23760 | guix system delete-generations | |
23761 | @end example | |
bf5c74e7 | 23762 | |
15f1bff4 JL |
23763 | You can also select the generations you want to delete. The example below |
23764 | deletes all the system generations that are more than two month old: | |
23765 | ||
23766 | @example | |
23767 | guix system delete-generations 2m | |
23768 | @end example | |
23769 | ||
23770 | Running this command automatically reinstalls the bootloader with an updated | |
23771 | list of menu entries---e.g., the ``old generations'' sub-menu in GRUB no | |
23772 | longer lists the generations that have been deleted. | |
bf5c74e7 JL |
23773 | |
23774 | @item build | |
15f1bff4 JL |
23775 | Construit la dérivation du système d'exploitation, ce qui comprend tous les |
23776 | fichiers de configuration et les programmes requis pour démarrer et lancer | |
23777 | le système. Cette action n'installe rien. | |
bf5c74e7 JL |
23778 | |
23779 | @item init | |
23780 | Populate the given directory with all the files necessary to run the | |
23781 | operating system specified in @var{file}. This is useful for first-time | |
15f1bff4 | 23782 | installations of Guix System. For instance: |
bf5c74e7 JL |
23783 | |
23784 | @example | |
23785 | guix system init my-os-config.scm /mnt | |
23786 | @end example | |
23787 | ||
15f1bff4 JL |
23788 | copie tous les éléments du dépôt requis par la configuration spécifiée dans |
23789 | @file{my-os-config.scm} dans @file{/mnt}. Cela comprend les fichiers de | |
23790 | configuration, les paquets, etc. Elle crée aussi d'autres fichiers | |
23791 | essentiels requis pour que le système fonctionne correctement — p.@: ex.@: | |
23792 | les répertoires @file{/etc}, @file{/var} et @file{/run} et le fichier | |
23793 | @file{/bin/sh}. | |
bf5c74e7 | 23794 | |
15f1bff4 JL |
23795 | Cette commande installe aussi le chargeur d'amorçage sur la cible spécifiée |
23796 | dans @file{my-os-config}, à moins que l'option @option{--no-bootloader} ne | |
23797 | soit passée. | |
bf5c74e7 JL |
23798 | |
23799 | @item vm | |
15f1bff4 | 23800 | @cindex machine virtuelle |
bf5c74e7 JL |
23801 | @cindex VM |
23802 | @anchor{guix system vm} | |
23803 | Build a virtual machine that contains the operating system declared in | |
15f1bff4 JL |
23804 | @var{file}, and return a script to run that virtual machine (VM). |
23805 | ||
23806 | @quotation Remarque | |
23807 | The @code{vm} action and others below can use KVM support in the Linux-libre | |
23808 | kernel. Specifically, if the machine has hardware virtualization support, | |
23809 | the corresponding KVM kernel module should be loaded, and the | |
23810 | @file{/dev/kvm} device node must exist and be readable and writable by the | |
23811 | user and by the build users of the daemon (@pxref{Réglages de l'environnement de construction}). | |
23812 | @end quotation | |
23813 | ||
23814 | Arguments given to the script are passed to QEMU as in the example below, | |
23815 | which enables networking and requests 1@tie{}GiB of RAM for the emulated | |
23816 | machine: | |
bf5c74e7 JL |
23817 | |
23818 | @example | |
23819 | $ /gnu/store/@dots{}-run-vm.sh -m 1024 -net user | |
23820 | @end example | |
23821 | ||
15f1bff4 | 23822 | La VM partage sont dépôt avec le système hôte. |
bf5c74e7 | 23823 | |
15f1bff4 JL |
23824 | Vous pouvez partager des fichiers supplémentaires entre l'hôte et la VM avec |
23825 | les options en ligne de commande @code{--share} et @code{--expose} : la | |
23826 | première spécifie un répertoire à partager avec accès en écriture, tandis | |
23827 | que le deuxième fournit un accès en lecture-seule au répertoire partagé. | |
bf5c74e7 | 23828 | |
15f1bff4 JL |
23829 | L'exemple ci-dessous crée une VM dans laquelle le répertoire personnel de |
23830 | l'utilisateur est accessible en lecture-seule, et où le répertoire | |
23831 | @file{/exchange} est une correspondance en lecture-écriture à | |
23832 | @file{$HOME/tmp} sur l'hôte : | |
bf5c74e7 JL |
23833 | |
23834 | @example | |
23835 | guix system vm my-config.scm \ | |
23836 | --expose=$HOME --share=$HOME/tmp=/exchange | |
23837 | @end example | |
23838 | ||
15f1bff4 JL |
23839 | Sur GNU/Linux, le comportement par défaut consiste à démarrer directement |
23840 | sur le noyau ; cela a l'avantage de n'avoir besoin que d'une toute petite | |
23841 | image disque puisque le dépôt de l'hôte peut ensuite être monté. | |
bf5c74e7 | 23842 | |
15f1bff4 JL |
23843 | L'option @code{--full-boot} force une séquence de démarrage complète, en |
23844 | commençant par le chargeur d'amorçage. Cela requiert plus d'espace disque | |
23845 | puisqu'une image racine contenant au moins le noyau, l'initrd et les | |
23846 | fichiers de données du chargeur d'amorçage doit être créé. On peut utiliser | |
23847 | l'option @code{--image-size} pour spécifier la taille de l'image. | |
bf5c74e7 | 23848 | |
15f1bff4 JL |
23849 | @cindex Images système, création en divers formats |
23850 | @cindex Créer des images systèmes sous différents formats | |
bf5c74e7 JL |
23851 | @item vm-image |
23852 | @itemx disk-image | |
23853 | @itemx docker-image | |
15f1bff4 JL |
23854 | Renvoie une machine virtuelle, une image disque ou une image Docker du |
23855 | système d'exploitation déclaré dans @var{file} qui se suffit à elle-même. | |
23856 | Par défaut, @command{guix system} estime la taille de l'image requise pour | |
23857 | stocker le système, mais vous pouvez utiliser l'option @option{--image-size} | |
23858 | pour spécifier une valeur. Les images Docker sont construites pour contenir | |
23859 | exactement ce dont elles ont besoin, donc l'option @option{--image-size} est | |
23860 | ignorée dans le cas de @code{docker-image}. | |
bf5c74e7 | 23861 | |
15f1bff4 JL |
23862 | Vous pouvez spécifier le type de système de fichiers racine avec l'option |
23863 | @option{--file-system-type}. La valeur par défaut est @code{ext4}. | |
bf5c74e7 JL |
23864 | |
23865 | When using @code{vm-image}, the returned image is in qcow2 format, which the | |
15f1bff4 | 23866 | QEMU emulator can efficiently use. @xref{Running Guix in a VM}, for more |
bf5c74e7 JL |
23867 | information on how to run the image in a virtual machine. |
23868 | ||
15f1bff4 JL |
23869 | Lorsque vous utilisez @code{disk-image}, une image disque brute est produite |
23870 | ; elle peut être copiée telle quelle sur un périphérique USB. En supposant | |
23871 | que @code{/dev/sdc} est le périphérique correspondant à une clef USB, on | |
23872 | peut copier l'image dessus avec la commande suivante : | |
bf5c74e7 JL |
23873 | |
23874 | @example | |
23875 | # dd if=$(guix system disk-image my-os.scm) of=/dev/sdc | |
23876 | @end example | |
23877 | ||
15f1bff4 JL |
23878 | En utilisant @code{docker-image}, on produit une image Docker. Guix |
23879 | construit l'image de zéro, et non à partir d'une image Docker de base | |
23880 | pré-existante. En conséquence, elle contient @emph{exactly} ce que vous | |
23881 | avez défini dans le fichier de configuration du système. Vous pouvez | |
23882 | ensuite charger l'image et lancer un conteneur Docker avec des commande | |
23883 | comme : | |
bf5c74e7 JL |
23884 | |
23885 | @example | |
23886 | image_id="$(docker load < guixsd-docker-image.tar.gz)" | |
23887 | docker run -e GUIX_NEW_SYSTEM=/var/guix/profiles/system \\ | |
23888 | --entrypoint /var/guix/profiles/system/profile/bin/guile \\ | |
23889 | $image_id /var/guix/profiles/system/boot | |
23890 | @end example | |
23891 | ||
23892 | This command starts a new Docker container from the specified image. It | |
15f1bff4 JL |
23893 | will boot the Guix system in the usual manner, which means it will start any |
23894 | services you have defined in the operating system configuration. Depending | |
23895 | on what you run in the Docker container, it may be necessary to give the | |
23896 | container additional permissions. For example, if you intend to build | |
23897 | software using Guix inside of the Docker container, you may need to pass the | |
23898 | @option{--privileged} option to @code{docker run}. | |
bf5c74e7 | 23899 | |
524756d1 | 23900 | @item conteneur |
15f1bff4 JL |
23901 | Renvoie un script qui lance le système d'exploitation déclaré dans |
23902 | @var{file} dans un conteneur. Les conteneurs sont un ensemble de mécanismes | |
23903 | d'isolation légers fournis par le noyau Linux-libre. Les conteneurs sont | |
23904 | substantiellement moins gourmands en ressources que les machines virtuelles | |
23905 | complètes car le noyau, les objets partagés et d'autres ressources peuvent | |
23906 | être partagés avec le système hôte ; cela signifie aussi une isolation moins | |
23907 | complète. | |
bf5c74e7 | 23908 | |
15f1bff4 JL |
23909 | Actuellement, le script doit être lancé en root pour pouvoir supporter plus |
23910 | d'un utilisateur et d'un groupe. Le conteneur partage son dépôt avec le | |
23911 | système hôte. | |
bf5c74e7 | 23912 | |
15f1bff4 JL |
23913 | Comme avec l'action @code{vm} (@pxref{guix system vm}), des systèmes de |
23914 | fichiers supplémentaires peuvent être partagés entre l'hôte et le conteneur | |
23915 | avec les options @option{--share} et @option{--expose} : | |
bf5c74e7 JL |
23916 | |
23917 | @example | |
23918 | guix system container my-config.scm \ | |
23919 | --expose=$HOME --share=$HOME/tmp=/exchange | |
23920 | @end example | |
23921 | ||
3cacfa9e | 23922 | @quotation Remarque |
15f1bff4 | 23923 | Cette option requiert Linux-libre ou supérieur. |
bf5c74e7 JL |
23924 | @end quotation |
23925 | ||
23926 | @end table | |
23927 | ||
15f1bff4 JL |
23928 | @var{options} peut contenir n'importe quelle option commune de construction |
23929 | (@pxref{Options de construction communes}). En plus, @var{options} peut contenir l'une | |
23930 | de ces options : | |
bf5c74e7 JL |
23931 | |
23932 | @table @option | |
23933 | @item --expression=@var{expr} | |
23934 | @itemx -e @var{expr} | |
23935 | Consider the operating-system @var{expr} evaluates to. This is an | |
23936 | alternative to specifying a file which evaluates to an operating system. | |
15f1bff4 | 23937 | This is used to generate the Guix system installer @pxref{Construire l'image d'installation}). |
bf5c74e7 | 23938 | |
3cacfa9e LC |
23939 | @item --system=@var{système} |
23940 | @itemx -s @var{système} | |
15f1bff4 JL |
23941 | Essaye de construire pour @var{system} au lieu du type du système hôte. |
23942 | Cela fonction comme pour @command{guix build} (@pxref{Invoquer guix build}). | |
bf5c74e7 JL |
23943 | |
23944 | @item --derivation | |
23945 | @itemx -d | |
15f1bff4 JL |
23946 | Renvoie le nom du fichier de dérivation du système d'exploitation donné sans |
23947 | rien construire. | |
bf5c74e7 JL |
23948 | |
23949 | @item --file-system-type=@var{type} | |
23950 | @itemx -t @var{type} | |
15f1bff4 JL |
23951 | Pour l'action @code{disk-image}, crée un système de fichier du @var{type} |
23952 | donné sur l'image. | |
bf5c74e7 | 23953 | |
15f1bff4 | 23954 | Lorsque cette option est omise, @command{guix system} utilise @code{ext4}. |
bf5c74e7 | 23955 | |
15f1bff4 JL |
23956 | @cindex format ISO-9660 |
23957 | @cindex format d'image de CD | |
23958 | @cindex format d'image de DVD | |
23959 | @code{--file-system-type=iso9660} produit une image ISO-9660, qu'il est | |
23960 | possible de graver sur un CD ou un DVD. | |
bf5c74e7 JL |
23961 | |
23962 | @item --image-size=@var{size} | |
15f1bff4 JL |
23963 | Pour les actions @code{vm-image} et @code{disk-image}, crée une image de la |
23964 | taille donnée @var{size}. @var{size} peut être un nombre d'octets ou | |
23965 | contenir un suffixe d'unité (@pxref{Block size, size specifications,, | |
bf5c74e7 JL |
23966 | coreutils, GNU Coreutils}). |
23967 | ||
15f1bff4 JL |
23968 | Lorsque cette option est omise, @command{guix system} calcule une estimation |
23969 | de la taille de l'image en fonction de la taille du système déclaré dans | |
bf5c74e7 JL |
23970 | @var{file}. |
23971 | ||
524756d1 JL |
23972 | @item --root=@var{fichier} |
23973 | @itemx -r @var{fichier} | |
23974 | Fait de @var{fichier} un lien symbolique vers le résultat, et l'enregistre | |
23975 | en tant que racine du ramasse-miettes. | |
bf5c74e7 JL |
23976 | |
23977 | @item --skip-checks | |
15f1bff4 JL |
23978 | Passe les vérifications de sécurité avant l'installation. |
23979 | ||
23980 | Par défaut, @command{guix system init} et @command{guix system reconfigure} | |
23981 | effectuent des vérifications de sécurité : ils s'assurent que les systèmes | |
23982 | de fichiers qui apparaissent dans la déclaration @code{operating-system} | |
23983 | existent vraiment (@pxref{Systèmes de fichiers}) et que les modules de noyau Linux | |
23984 | qui peuvent être requis au démarrage sont listés dans @code{initrd-modules} | |
23985 | (@pxref{Disque de RAM initial}). Passer cette option saute ces vérifications | |
23986 | complètement. | |
23987 | ||
23988 | @cindex on-error | |
23989 | @cindex on-error strategy | |
23990 | @cindex error strategy | |
bf5c74e7 | 23991 | @item --on-error=@var{strategy} |
15f1bff4 JL |
23992 | Applique @var{strategy} lorsqu'une erreur arrive lors de la lecture de |
23993 | @var{file}. @var{strategy} peut être l'une des valeurs suivantes : | |
bf5c74e7 JL |
23994 | |
23995 | @table @code | |
23996 | @item nothing-special | |
15f1bff4 JL |
23997 | Rapporte l'erreur de manière concise et quitte. C'est la stratégie par |
23998 | défaut. | |
bf5c74e7 JL |
23999 | |
24000 | @item backtrace | |
15f1bff4 | 24001 | Pareil, mais affiche aussi une trace de débogage. |
bf5c74e7 JL |
24002 | |
24003 | @item debug | |
15f1bff4 JL |
24004 | Rapporte l'erreur et entre dans le débogueur Guile. À partir de là, vous |
24005 | pouvez lancer des commandes comme @code{,bt} pour obtenir une trace de | |
24006 | débogage, @code{,locals} pour afficher les valeurs des variables locales et | |
24007 | plus généralement inspecter l'état du programme. @xref{Debug Commands,,, | |
24008 | guile, GNU Guile Reference Manual}, pour une liste de commandes de débogage | |
24009 | disponibles. | |
bf5c74e7 JL |
24010 | @end table |
24011 | @end table | |
24012 | ||
bf5c74e7 | 24013 | Once you have built, configured, re-configured, and re-re-configured your |
15f1bff4 | 24014 | Guix installation, you may find it useful to list the operating system |
bf5c74e7 JL |
24015 | generations available on disk---and that you can choose from the bootloader |
24016 | boot menu: | |
24017 | ||
24018 | @table @code | |
24019 | ||
24020 | @item list-generations | |
15f1bff4 JL |
24021 | Affiche un résumé de chaque génération du système d'exploitation disponible |
24022 | sur le disque, dans un format lisible pour un humain. C'est similaire à | |
24023 | l'option @option{--list-generations} de @command{guix package} | |
24024 | (@pxref{Invoquer guix package}). | |
bf5c74e7 | 24025 | |
15f1bff4 JL |
24026 | Éventuellement, on peut spécifier un motif, avec la même syntaxe utilisée |
24027 | pour @command{guix package --list-generations}, pour restreindre la liste | |
24028 | des générations affichées. Par exemple, la commande suivante affiche les | |
24029 | générations de moins de 10 jours : | |
bf5c74e7 JL |
24030 | |
24031 | @example | |
24032 | $ guix system list-generations 10d | |
24033 | @end example | |
24034 | ||
24035 | @end table | |
24036 | ||
15f1bff4 JL |
24037 | La commande @command{guix system} a même plus à proposer ! Les |
24038 | sous-commandes suivantes vous permettent de visualiser comme vos services | |
24039 | systèmes sont liés les uns aux autres : | |
bf5c74e7 JL |
24040 | |
24041 | @anchor{system-extension-graph} | |
24042 | @table @code | |
24043 | ||
24044 | @item extension-graph | |
15f1bff4 JL |
24045 | Affiche le @dfn{graphe d'extension des services} du système d'exploitation |
24046 | défini dans @var{file} au format Dot/Graphviz sur la sortie standard | |
24047 | (@pxref{Composition de services}, pour plus d'informations sur l'extension des | |
24048 | services). | |
bf5c74e7 | 24049 | |
15f1bff4 | 24050 | La commande : |
bf5c74e7 JL |
24051 | |
24052 | @example | |
24053 | $ guix system extension-graph @var{file} | dot -Tpdf > services.pdf | |
24054 | @end example | |
24055 | ||
15f1bff4 JL |
24056 | produit un fichier PDF montrant les relations d'extension entre les |
24057 | services. | |
bf5c74e7 JL |
24058 | |
24059 | @anchor{system-shepherd-graph} | |
24060 | @item shepherd-graph | |
15f1bff4 JL |
24061 | Affiche le @dfn{graphe de dépendance} des services shepherd du système |
24062 | d'exploitation défini dans @var{file} au format Dot/Graphviz sur la sortie | |
24063 | standard. @xref{Services Shepherd}, pour plus d'informations et un exemple | |
24064 | de graphe. | |
bf5c74e7 JL |
24065 | |
24066 | @end table | |
24067 | ||
15f1bff4 JL |
24068 | @node Running Guix in a VM |
24069 | @section Running Guix in a Virtual Machine | |
bf5c74e7 | 24070 | |
15f1bff4 JL |
24071 | @cindex machine virtuelle |
24072 | To run Guix in a virtual machine (VM), one can either use the pre-built Guix | |
24073 | VM image distributed at | |
524756d1 | 24074 | @indicateurl{https://alpha.gnu.org/gnu/guix/guixsd-vm-image-@value{VERSION}.@var{system}.xz} |
bf5c74e7 JL |
24075 | , or build their own virtual machine image using @command{guix system |
24076 | vm-image} (@pxref{Invoquer guix system}). The returned image is in qcow2 | |
24077 | format, which the @uref{http://qemu.org/, QEMU emulator} can efficiently | |
24078 | use. | |
24079 | ||
24080 | @cindex QEMU | |
15f1bff4 JL |
24081 | Si vous construisez votre propre image, vous devez la copier en dehors du |
24082 | dépôt (@pxref{Le dépôt}) et vous donner la permission d'écrire sur la copie | |
24083 | avant de pouvoir l'utiliser. Lorsque vous invoquez QEMU, vous devez choisir | |
24084 | un émulateur système correspondant à votre plate-forme matérielle. Voici | |
24085 | une invocation minimale de QEMU qui démarrera le résultat de @command{guix | |
24086 | system vm-image} sur un matériel x8_64. | |
bf5c74e7 JL |
24087 | |
24088 | @example | |
24089 | $ qemu-system-x86_64 \ | |
24090 | -net user -net nic,model=virtio \ | |
24091 | -enable-kvm -m 256 /tmp/qemu-image | |
24092 | @end example | |
24093 | ||
15f1bff4 | 24094 | Voici la signification de ces options : |
bf5c74e7 JL |
24095 | |
24096 | @table @code | |
24097 | @item qemu-system-x86_64 | |
15f1bff4 JL |
24098 | Cela spécifie la plate-forme matérielle à émuler. Elle doit correspondre à |
24099 | l'hôte. | |
bf5c74e7 JL |
24100 | |
24101 | @item -net user | |
15f1bff4 JL |
24102 | Active la pile réseau non privilégiée en mode utilisateur. L'OS émulé peut |
24103 | accéder à l'hôte mais pas l'inverse. C'est la manière la plus simple de | |
24104 | connecter le client. | |
bf5c74e7 JL |
24105 | |
24106 | @item -net nic,model=virtio | |
15f1bff4 JL |
24107 | Vous devez créer une interface réseau d'un modèle donné. Si vous ne créez |
24108 | pas de NIC, le démarrage échouera. En supposant que votre plate-forme est | |
24109 | x86_64, vous pouvez récupérer une liste des modèles de NIC disponibles en | |
24110 | lançant @command{qemu-system-x86_64 -net nic,model=help}. | |
bf5c74e7 JL |
24111 | |
24112 | @item -enable-kvm | |
15f1bff4 JL |
24113 | Si votre système a des extensions de virtualisation matérielle, activer le |
24114 | support des machines virtuelles de Linux (KVM) accélérera les choses. | |
bf5c74e7 JL |
24115 | |
24116 | @item -m 256 | |
15f1bff4 JL |
24117 | RAM disponible sur l'OS émulé, en mébioctets. La valeur par défaut est |
24118 | 128@tie{}Mo, ce qui peut ne pas suffire pour certaines opérations. | |
bf5c74e7 JL |
24119 | |
24120 | @item /tmp/qemu-image | |
15f1bff4 | 24121 | Le nom de fichier de l'image qcow2. |
bf5c74e7 JL |
24122 | @end table |
24123 | ||
15f1bff4 JL |
24124 | Le script @command{run-vm.sh} par défaut renvoyé par une invocation de |
24125 | @command{guix system vm} n'ajoute pas le drapeau @command{-net user} par | |
24126 | défaut. Pour avoir accès au réseau dans la vm, ajoutez le | |
24127 | @code{(dhcp-client-service)} à votre définition et démarrez la VM avec | |
24128 | @command{`guix system vm config.scm` -net user}. Un problème important avec | |
24129 | @command{-net user} pour le réseau, est que @command{ping} ne fonctionnera | |
24130 | pas, car il utilise le protocole ICMP. Vous devrez utiliser une autre | |
24131 | commande pour vérifier la connectivité réseau, par exemple @command{guix | |
bf5c74e7 JL |
24132 | download}. |
24133 | ||
15f1bff4 | 24134 | @subsection Se connecter par SSH |
bf5c74e7 JL |
24135 | |
24136 | @cindex SSH | |
1d8d69c8 | 24137 | @cindex serveur SSH |
15f1bff4 JL |
24138 | Pour activer SSH dans une VM vous devez ajouter un serveur SSH comme |
24139 | @code{(dropbear-service)} ou @code{(lsh-service)} à votre VM. Le service | |
24140 | @code{(lsh-service)} ne peut actuellement pas démarrer sans supervision. Il | |
24141 | a besoin que vous tapiez quelques caractères pour initialiser le générateur | |
24142 | d'aléatoire. En plus vous devez transférer le port 22, par défaut, à | |
24143 | l'hôte. Vous pouvez faire cela avec : | |
bf5c74e7 JL |
24144 | |
24145 | @example | |
24146 | `guix system vm config.scm` -net user,hostfwd=tcp::10022-:22 | |
24147 | @end example | |
24148 | ||
15f1bff4 | 24149 | Pour vous connecter à la VM vous pouvez lancer |
bf5c74e7 JL |
24150 | |
24151 | @example | |
24152 | ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022 | |
24153 | @end example | |
24154 | ||
15f1bff4 JL |
24155 | Le @command{-p} donne le port auquel vous voulez vous connecter à |
24156 | @command{ssh}, @command{-o UserKnownHostsFile=/dev/null} évite que | |
24157 | @command{ssh} ne se plaigne à chaque fois que vous modifiez le fichier | |
24158 | @command{config.scm} et @command{-o StrictHostKeyChecking=no} évite que vous | |
24159 | n'ayez à autoriser une connexion à un hôte inconnu à chaque fois que vous | |
24160 | vous connectez. | |
bf5c74e7 | 24161 | |
15f1bff4 | 24162 | @subsection Utiliser @command{virt-viewer} avec Spice |
bf5c74e7 | 24163 | |
15f1bff4 JL |
24164 | Alternativement au client graphique @command{qemu} par défaut vous pouvez |
24165 | utiliser @command{remote-viewer} du paquet @command{virt-viewer}. Pour vous | |
24166 | connecter, passez le drapeau @command{-spice port=5930,disable-ticketing} à | |
24167 | @command{qemu}. Voir les sections précédentes pour plus d'informations sur | |
24168 | comment faire cela. | |
bf5c74e7 | 24169 | |
15f1bff4 JL |
24170 | Spice a aussi de chouettes fonctionnalités comme le partage de votre |
24171 | presse-papier avec la VM. Pour activer cela vous devrez aussi passer les | |
24172 | drapeaux suivants à @command{qemu} : | |
bf5c74e7 JL |
24173 | |
24174 | @example | |
24175 | -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5 | |
24176 | -chardev spicevmc,name=vdagent,id=vdagent | |
24177 | -device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent, | |
24178 | name=com.redhat.spice.0 | |
24179 | @end example | |
24180 | ||
15f1bff4 | 24181 | Vous devrez aussi ajouter le @pxref{Services divers, Spice service}. |
bf5c74e7 JL |
24182 | |
24183 | @node Définir des services | |
15f1bff4 | 24184 | @section Définir des services |
bf5c74e7 | 24185 | |
15f1bff4 JL |
24186 | Les sections précédentes montrent les services disponibles et comment on |
24187 | peut les combiner dans une déclaration @code{operating-system}. Mais, déjà, | |
24188 | comment les définir ? Et qu'est-ce qu'un service au fait ? | |
bf5c74e7 JL |
24189 | |
24190 | @menu | |
24191 | * Composition de services:: Le modèle de composition des services. | |
24192 | * Types service et services:: Types et services. | |
3cacfa9e | 24193 | * Référence de service:: Référence de l'API@. |
bf5c74e7 JL |
24194 | * Services Shepherd:: Un type de service particulier. |
24195 | @end menu | |
24196 | ||
24197 | @node Composition de services | |
15f1bff4 | 24198 | @subsection Composition de services |
bf5c74e7 JL |
24199 | |
24200 | @cindex services | |
15f1bff4 JL |
24201 | @cindex démons |
24202 | Ici nous définissons un @dfn{service} comme étant, assez largement, quelque | |
24203 | chose qui étend la fonctionnalité d'un système d'exploitation. Souvent un | |
24204 | service est un processus — un @dfn{démon} — démarré lorsque le système | |
24205 | démarre : un serveur ssh, un serveur web, le démon de construction de Guix, | |
24206 | etc. Parfois un service est un démon dont l'exécution peut être déclenchée | |
24207 | par un autre démon — p.@: ex.@: un serveur FTP démarré par @command{inetd} | |
24208 | ou un service D-Bus activé par @command{dbus-daemon}. Parfois, un service | |
24209 | ne correspond pas à un démon. Par exemple, le service « de comptes » | |
24210 | récupère la liste des comptes utilisateurs et s'assure qu'ils existent bien | |
24211 | lorsque le système est lancé ; le service « udev » récupère les règles de | |
24212 | gestion des périphériques et les rend disponible au démon eudev ; le service | |
24213 | @file{/etc} rempli le répertoire @file{/etc} du système. | |
24214 | ||
24215 | @cindex extensions de service | |
24216 | Guix system services are connected by @dfn{extensions}. For instance, the | |
24217 | secure shell service @emph{extends} the Shepherd---the initialization | |
bf5c74e7 | 24218 | system, running as PID@tie{}1---by giving it the command lines to start and |
3cacfa9e | 24219 | stop the secure shell daemon (@pxref{Services réseau, |
15f1bff4 JL |
24220 | @code{openssh-service-type}}); the UPower service extends the D-Bus service |
24221 | by passing it its @file{.service} specification, and extends the udev | |
24222 | service by passing it device management rules (@pxref{Services de bureaux, | |
bf5c74e7 JL |
24223 | @code{upower-service}}); the Guix daemon service extends the Shepherd by |
24224 | passing it the command lines to start and stop the daemon, and extends the | |
24225 | account service by passing it a list of required build user accounts | |
24226 | (@pxref{Services de base}). | |
24227 | ||
15f1bff4 JL |
24228 | En définitive, les services et leurs relation « d'extensions » forment un |
24229 | graphe orienté acyclique (DAG). Si nous représentons les services comme des | |
24230 | boîtes et les extensions comme des flèches, un système typique pourrait | |
24231 | fournir quelque chose comme cela : | |
bf5c74e7 | 24232 | |
15f1bff4 | 24233 | @image{images/service-graph,,5in,Graphe d'extension des services typique.} |
bf5c74e7 | 24234 | |
15f1bff4 JL |
24235 | @cindex service système |
24236 | En bas, on voit le @dfn{service système} qui produit le répertoire contenant | |
24237 | tout et lançant et démarrant le système, renvoyé par la commande | |
24238 | @command{guix system build}. @xref{Référence de service}, pour apprendre les | |
24239 | autres types de services montrés ici. @xref{system-extension-graph, the | |
24240 | @command{guix system extension-graph} command}, pour plus d'informations sur | |
24241 | la manière de générer cette représentation pour une définition de système | |
24242 | d'exploitation particulière. | |
bf5c74e7 | 24243 | |
15f1bff4 | 24244 | @cindex types de services |
bf5c74e7 JL |
24245 | Technically, developers can define @dfn{service types} to express these |
24246 | relations. There can be any number of services of a given type on the | |
24247 | system---for instance, a system running two instances of the GNU secure | |
15f1bff4 | 24248 | shell server (lsh) has two instances of @code{lsh-service-type}, with |
bf5c74e7 JL |
24249 | different parameters. |
24250 | ||
15f1bff4 JL |
24251 | La section suivante décrit l'interface de programmation des types de |
24252 | services et des services. | |
bf5c74e7 JL |
24253 | |
24254 | @node Types service et services | |
15f1bff4 | 24255 | @subsection Types service et services |
bf5c74e7 | 24256 | |
15f1bff4 JL |
24257 | Un @dfn{type de service} est un nœud dans le DAG décrit plus haut. |
24258 | Commençons avec un exemple simple, le type de service pour le démon de | |
24259 | construction de Guix (@pxref{Invoquer guix-daemon}) : | |
bf5c74e7 JL |
24260 | |
24261 | @example | |
24262 | (define guix-service-type | |
24263 | (service-type | |
24264 | (name 'guix) | |
24265 | (extensions | |
24266 | (list (service-extension shepherd-root-service-type guix-shepherd-service) | |
24267 | (service-extension account-service-type guix-accounts) | |
24268 | (service-extension activation-service-type guix-activation))) | |
24269 | (default-value (guix-configuration)))) | |
24270 | @end example | |
24271 | ||
24272 | @noindent | |
15f1bff4 | 24273 | Il définit trois choses : |
bf5c74e7 JL |
24274 | |
24275 | @enumerate | |
24276 | @item | |
15f1bff4 | 24277 | Un nom, dont le seul but de rendre l'inspection et le débogage plus faciles. |
bf5c74e7 JL |
24278 | |
24279 | @item | |
15f1bff4 JL |
24280 | Une liste d'@dfn{extensions de services}, où chaque extension désigne le |
24281 | type de service cible et une procédure qui, étant donné les paramètres du | |
24282 | service, renvoie une liste d'objets pour étendre le service de ce type. | |
bf5c74e7 | 24283 | |
15f1bff4 JL |
24284 | Chaque type de service a au moins une extension de service. La seule |
24285 | exception est le @dfn{type de service boot}, qui est le service ultime. | |
bf5c74e7 JL |
24286 | |
24287 | @item | |
15f1bff4 | 24288 | Éventuellement, une valeur par défaut pour les instances de ce type. |
bf5c74e7 JL |
24289 | @end enumerate |
24290 | ||
15f1bff4 | 24291 | Dans cet exemple, @var{guix-service-type} étend trois services : |
bf5c74e7 JL |
24292 | |
24293 | @table @var | |
24294 | @item shepherd-root-service-type | |
15f1bff4 JL |
24295 | La procédure @var{guix-shepherd-service} définit comment le service du |
24296 | Shepherd est étendu. En fait, elle renvoie un objet | |
24297 | @code{<shepherd-service>} qui définit comment @command{guix-daemon} est | |
24298 | démarré et stoppé (@pxref{Services Shepherd}). | |
bf5c74e7 JL |
24299 | |
24300 | @item account-service-type | |
15f1bff4 JL |
24301 | Cette extension pour ce service est calculée par @var{guix-accounts}, qui |
24302 | renvoie une liste d'objets @code{user-group} et @code{user-account} | |
24303 | représentant les comptes des utilisateurs de construction (@pxref{Invoquer guix-daemon}). | |
bf5c74e7 JL |
24304 | |
24305 | @item activation-service-type | |
15f1bff4 JL |
24306 | Ici, @var{guix-activation} est une procédure qui renvoie une gexp, qui est |
24307 | un bout de code qui s'exécute au moment de l'activation — p.@: ex.@: lorsque | |
24308 | le service est démarré. | |
bf5c74e7 JL |
24309 | @end table |
24310 | ||
15f1bff4 | 24311 | Un service de ce type est instancié de cette manière : |
bf5c74e7 JL |
24312 | |
24313 | @example | |
24314 | (service guix-service-type | |
24315 | (guix-configuration | |
24316 | (build-accounts 5) | |
24317 | (use-substitutes? #f))) | |
24318 | @end example | |
24319 | ||
15f1bff4 JL |
24320 | Le deuxième argument de la forme @code{service} est une valeur représentant |
24321 | les paramètres de cet instance spécifique du service. | |
24322 | @xref{guix-configuration-type, @code{guix-configuration}}, pour plus | |
24323 | d'informations sur le type de données @code{guix-configuration}. Lorsque la | |
24324 | valeur est omise, la valeur par défaut spécifiée par | |
24325 | @code{guix-service-type} est utilisée : | |
bf5c74e7 JL |
24326 | |
24327 | @example | |
24328 | (service guix-service-type) | |
24329 | @end example | |
24330 | ||
15f1bff4 JL |
24331 | @var{guix-service-type} est très simple car il étend d'autres services mais |
24332 | ne peut pas être étendu. | |
bf5c74e7 JL |
24333 | |
24334 | @c @subsubsubsection Extensible Service Types | |
24335 | ||
15f1bff4 | 24336 | Le type de service pour un service @emph{extensible} ressemble à ceci : |
bf5c74e7 JL |
24337 | |
24338 | @example | |
24339 | (define udev-service-type | |
24340 | (service-type (name 'udev) | |
24341 | (extensions | |
24342 | (list (service-extension shepherd-root-service-type | |
24343 | udev-shepherd-service))) | |
24344 | ||
15f1bff4 | 24345 | (compose concatenate) ; concatène la liste des règles |
bf5c74e7 JL |
24346 | (extend (lambda (config rules) |
24347 | (match config | |
24348 | (($ <udev-configuration> udev initial-rules) | |
24349 | (udev-configuration | |
15f1bff4 | 24350 | (udev udev) ; le paquet udev à utiliser |
bf5c74e7 JL |
24351 | (rules (append initial-rules rules))))))))) |
24352 | @end example | |
24353 | ||
15f1bff4 JL |
24354 | C'est le type de service pour le |
24355 | @uref{https://wiki.gentoo.org/wiki/Project:Eudev, le démon de gestion des | |
24356 | périphériques eudev}. Comparé à l'exemple précédent, en plus d'une | |
24357 | extension de @var{shepherd-root-service-type}, on trouve deux nouveaux | |
24358 | champs : | |
bf5c74e7 JL |
24359 | |
24360 | @table @code | |
24361 | @item compose | |
15f1bff4 JL |
24362 | C'est la procédure pour @dfn{composer} la liste des extensions de services |
24363 | de ce type. | |
bf5c74e7 | 24364 | |
15f1bff4 JL |
24365 | Les services peuvent étendre le service udev en lui passant des listes de |
24366 | règles ; on compose ces extensions simplement en les concaténant. | |
bf5c74e7 JL |
24367 | |
24368 | @item extend | |
15f1bff4 JL |
24369 | Cette procédure définie comme la valeur du service est @dfn{étendue} avec la |
24370 | composition des extensions. | |
bf5c74e7 | 24371 | |
15f1bff4 JL |
24372 | Les extensions Udev sont composés en une liste de règles, mais la valeur du |
24373 | service udev est elle-même un enregistrement @code{<udev-configuration>}. | |
24374 | Donc ici, nous étendons cet enregistrement en ajoutant la liste des règle | |
24375 | contribuées à la liste des règles qu'il contient déjà. | |
bf5c74e7 JL |
24376 | |
24377 | @item description | |
15f1bff4 JL |
24378 | C'est une chaîne donnant un aperçu du type de service. Elle peut contenir |
24379 | du balisage Texinfo (@pxref{Overview,,, texinfo, GNU Texinfo}). La commande | |
24380 | @command{guix system search} permet de rechercher dans ces chaînes et de les | |
24381 | afficher (@pxref{Invoquer guix system}). | |
bf5c74e7 JL |
24382 | @end table |
24383 | ||
15f1bff4 JL |
24384 | Il ne peut y avoir qu'une instance d'un type de service extensible comme |
24385 | @var{udev-service-type}. S'il y en avait plus, les spécification | |
24386 | @code{service-extension} seraient ambiguës. | |
bf5c74e7 | 24387 | |
15f1bff4 JL |
24388 | Toujours ici ? La section suivante fournit une référence de l'interface de |
24389 | programmation des services. | |
bf5c74e7 JL |
24390 | |
24391 | @node Référence de service | |
15f1bff4 | 24392 | @subsection Référence de service |
bf5c74e7 | 24393 | |
15f1bff4 JL |
24394 | 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 |
24395 | les services et les types de services. Cette interface est fournie par le | |
24396 | module @code{(gnu services)}. | |
bf5c74e7 | 24397 | |
1d8d69c8 | 24398 | @deffn {Procédure Scheme} service @var{type} [@var{value}] |
15f1bff4 JL |
24399 | Renvoie un nouveau service de type @var{type}, un objet |
24400 | @code{<service-type>} (voir plus bas). @var{value}peut être n'importe quel | |
24401 | objet ; il représente les paramètres de cette instance particulière du | |
24402 | service. | |
bf5c74e7 | 24403 | |
15f1bff4 JL |
24404 | Lorsque @var{value} est omise, la valeur par défaut spécifiée par @var{type} |
24405 | est utilisée ; si @var{type} ne spécifie pas de valeur par défaut, une | |
24406 | erreur est levée. | |
bf5c74e7 | 24407 | |
15f1bff4 | 24408 | Par exemple ceci : |
bf5c74e7 JL |
24409 | |
24410 | @example | |
24411 | (service openssh-service-type) | |
24412 | @end example | |
24413 | ||
24414 | @noindent | |
15f1bff4 | 24415 | est équivalent à ceci : |
bf5c74e7 JL |
24416 | |
24417 | @example | |
24418 | (service openssh-service-type | |
24419 | (openssh-configuration)) | |
24420 | @end example | |
24421 | ||
15f1bff4 JL |
24422 | Dans les deux cas le résultat est une instance de |
24423 | @code{openssh-service-type} avec la configuration par défaut. | |
bf5c74e7 JL |
24424 | @end deffn |
24425 | ||
1d8d69c8 | 24426 | @deffn {Procédure Scheme} service? @var{obj} |
15f1bff4 | 24427 | Renvoie vrai si @var{obj} est un service. |
bf5c74e7 JL |
24428 | @end deffn |
24429 | ||
1d8d69c8 | 24430 | @deffn {Procédure Scheme} service-kind @var{service} |
15f1bff4 | 24431 | Renvoie le type de @var{service} — c.-à-d.@: un objet @code{<service-type>}. |
bf5c74e7 JL |
24432 | @end deffn |
24433 | ||
1d8d69c8 | 24434 | @deffn {Procédure Scheme} service-value @var{service} |
15f1bff4 | 24435 | Renvoie la valeur associée à @var{service}. Elle représente ses paramètres. |
bf5c74e7 JL |
24436 | @end deffn |
24437 | ||
15f1bff4 | 24438 | Voici un exemple de la manière dont un service est créé et manipulé : |
bf5c74e7 JL |
24439 | |
24440 | @example | |
24441 | (define s | |
24442 | (service nginx-service-type | |
24443 | (nginx-configuration | |
24444 | (nginx nginx) | |
24445 | (log-directory log-directory) | |
24446 | (run-directory run-directory) | |
24447 | (file config-file)))) | |
24448 | ||
24449 | (service? s) | |
24450 | @result{} #t | |
24451 | ||
24452 | (eq? (service-kind s) nginx-service-type) | |
24453 | @result{} #t | |
24454 | @end example | |
24455 | ||
15f1bff4 JL |
24456 | La forme @code{modify-services} fournit une manière pratique de modifier les |
24457 | paramètres de certains services d'une liste comme @var{%base-services} | |
24458 | (@pxref{Services de base, @code{%base-services}}). Elle s'évalue en une liste | |
24459 | de services. Bien sûr, vous pouvez toujours utiliser les combinateurs de | |
24460 | liste standards comme @code{map} et @code{fold} pour cela (@pxref{SRFI-1, | |
24461 | List Library,, guile, GNU Guile Reference Manual}) ; @code{modify-services} | |
24462 | fournit simplement une manière plus concise pour ce besoin commun. | |
bf5c74e7 | 24463 | |
15f1bff4 | 24464 | @deffn {Syntaxe Scheme} modify-services @var{services} @ |
bf5c74e7 JL |
24465 | (@var{type} @var{variable} => @var{body}) @dots{} |
24466 | ||
15f1bff4 JL |
24467 | Modifie les services listés dans @var{services} en fonction des clauses |
24468 | données. Chaque clause à la forme : | |
bf5c74e7 JL |
24469 | |
24470 | @example | |
24471 | (@var{type} @var{variable} => @var{body}) | |
24472 | @end example | |
24473 | ||
15f1bff4 JL |
24474 | où @var{type} est un type de service — p.@: ex.@: @code{guix-service-type} — |
24475 | et @var{variable} est un identifiant lié dans @var{body} aux paramètres du | |
24476 | service — p.@: ex.@: une instance de @code{guix-configuration} — du service | |
24477 | original de ce @var{type}. | |
bf5c74e7 | 24478 | |
15f1bff4 JL |
24479 | La variable @var{body} devrait s'évaluer en de nouveaux paramètres de |
24480 | service, qui seront utilisés pour configurer le nouveau service. Ce nouveau | |
24481 | service remplacera l'original dans la liste qui en résulte. Comme les | |
24482 | paramètres d'un service sont créés avec @code{define-record-type*}, vous | |
24483 | pouvez écrire un @var{body} court qui s'évalue en de nouveaux paramètres | |
24484 | pour le services en utilisant @code{inherit}, fourni par | |
24485 | @code{define-record-type*}. | |
bf5c74e7 | 24486 | |
15f1bff4 | 24487 | @xref{Utiliser le système de configuration} pour des exemples d'utilisation. |
bf5c74e7 JL |
24488 | |
24489 | @end deffn | |
24490 | ||
15f1bff4 JL |
24491 | Suit l'interface de programmation des types de services. Vous devrez la |
24492 | connaître pour écrire de nouvelles définitions de services, mais pas | |
24493 | forcément lorsque vous cherchez des manières simples de personnaliser votre | |
24494 | déclaration @code{operating-system}. | |
bf5c74e7 | 24495 | |
1d8d69c8 | 24496 | @deftp {Type de données} service-type |
adfb167f | 24497 | @cindex type de service |
15f1bff4 | 24498 | C'est la représentation d'un @dfn{type de service} (@pxref{Types service et services}). |
bf5c74e7 JL |
24499 | |
24500 | @table @asis | |
24501 | @item @code{name} | |
15f1bff4 JL |
24502 | C'est un symbole, utilisé seulement pour simplifier l'inspection et le |
24503 | débogage. | |
bf5c74e7 JL |
24504 | |
24505 | @item @code{extensions} | |
15f1bff4 | 24506 | Une liste non-vide d'objets @code{<service-extension>} (voir plus bas). |
bf5c74e7 | 24507 | |
1d8d69c8 | 24508 | @item @code{compose} (par défaut : @code{#f}) |
15f1bff4 JL |
24509 | S'il s'agit de @code{#f}, le type de service dénote des services qui ne |
24510 | peuvent pas être étendus — c.-à-d.@: qui ne reçoivent pas de « valeurs » | |
24511 | d'autres services. | |
bf5c74e7 | 24512 | |
15f1bff4 JL |
24513 | Sinon, ce doit être une procédure à un argument. La procédure est appelée |
24514 | par @code{fold-services} et on lui passe une liste de valeurs collectées par | |
24515 | les extensions. Elle peut renvoyer n'importe quelle valeur simple. | |
bf5c74e7 | 24516 | |
1d8d69c8 | 24517 | @item @code{extend} (par défaut : @code{#f}) |
15f1bff4 JL |
24518 | Si la valeur est @code{#f}, les services de ce type ne peuvent pas être |
24519 | étendus. | |
24520 | ||
24521 | Sinon, il doit s'agir 'une procédure à deux arguments : @code{fold-services} | |
24522 | l'appelle et lui passe la valeur initiale du service comme premier argument | |
24523 | et le résultat de l'application de @code{compose} sur les valeurs | |
24524 | d'extension en second argument. Elle doit renvoyer une valeur qui est une | |
24525 | valeur de paramètre valide pour l'instance du service. | |
bf5c74e7 JL |
24526 | @end table |
24527 | ||
15f1bff4 | 24528 | @xref{Types service et services}, pour des exemples. |
bf5c74e7 JL |
24529 | @end deftp |
24530 | ||
1d8d69c8 | 24531 | @deffn {Procédure Scheme} service-extension @var{target-type} @ |
15f1bff4 JL |
24532 | @var{compute} |
24533 | Renvoie une nouvelle extension pour les services de type @var{target-type}. | |
24534 | @var{compute} doit être une procédure à un argument : @code{fold-services} | |
24535 | l'appelle et lui passe la valeur associée au service qui fournit cette | |
24536 | extension ; elle doit renvoyer une valeur valide pour le service cible. | |
bf5c74e7 JL |
24537 | @end deffn |
24538 | ||
1d8d69c8 | 24539 | @deffn {Procédure Scheme} service-extension? @var{obj} |
15f1bff4 | 24540 | Renvoie vrai si @var{obj} est une extension de service. |
bf5c74e7 JL |
24541 | @end deffn |
24542 | ||
15f1bff4 JL |
24543 | Parfois, vous voudrez simplement étendre un service existant. Cela implique |
24544 | de créer un nouveau type de service et de spécifier l'extension qui vous | |
24545 | intéresse, ce qui peut être assez verbeux ; la procédure | |
24546 | @code{simple-service} fournit un raccourci pour ce cas. | |
bf5c74e7 | 24547 | |
1d8d69c8 | 24548 | @deffn {Procédure Scheme} simple-service @var{name} @var{target} @var{value} |
15f1bff4 JL |
24549 | Renvoie un service qui étend @var{target} avec @var{value}. Cela fonctionne |
24550 | en créant un type de service singleton @var{name}, dont le service renvoyé | |
24551 | est une instance. | |
bf5c74e7 | 24552 | |
15f1bff4 JL |
24553 | Par exemple, cela étend mcron (@pxref{Exécution de tâches planifiées}) avec une |
24554 | tâche supplémentaire : | |
bf5c74e7 JL |
24555 | |
24556 | @example | |
24557 | (simple-service 'my-mcron-job mcron-service-type | |
24558 | #~(job '(next-hour (3)) "guix gc -F 2G")) | |
24559 | @end example | |
24560 | @end deffn | |
24561 | ||
15f1bff4 JL |
24562 | Au cœur de l'abstraction des services se cache la procédure |
24563 | @code{fold-services}, responsable de la « compilation » d'une liste de | |
24564 | services en un répertoire unique qui contient tout ce qui est nécessaire au | |
24565 | démarrage et à l'exécution du système — le répertoire indiqué par la | |
24566 | commande @command{guix system build} (@pxref{Invoquer guix system}). En | |
24567 | soit, elle propage les extensions des services le long du graphe des | |
24568 | services, en mettant à jour chaque paramètre des nœuds sur son chemin, | |
24569 | jusqu'à atteindre le nœud racine. | |
bf5c74e7 | 24570 | |
1d8d69c8 | 24571 | @deffn {Procédure Scheme} fold-services @var{services} @ |
15f1bff4 JL |
24572 | [#:target-type @var{system-service-type}] |
24573 | Replie @var{services} en propageant leurs extensions jusqu'à la racine de | |
24574 | type @var{target-type} ; renvoie le service racine ajusté de cette manière. | |
bf5c74e7 JL |
24575 | @end deffn |
24576 | ||
15f1bff4 JL |
24577 | Enfin, le module @code{(gnu services)} définie aussi divers types de |
24578 | services essentiels, dont certains sont listés ci-dessous. | |
bf5c74e7 | 24579 | |
1d8d69c8 | 24580 | @defvr {Variable Scheme} system-service-type |
15f1bff4 JL |
24581 | C'est la racine du graphe des services. Il produit le répertoire du système |
24582 | renvoyé par la commande @command{guix system build}. | |
bf5c74e7 JL |
24583 | @end defvr |
24584 | ||
1d8d69c8 | 24585 | @defvr {Variable Scheme} boot-service-type |
15f1bff4 JL |
24586 | Le type du service « boot », qui produit le @dfn{script de démarrage}. Le |
24587 | script de démarrage est ce que le disque de RAM initial lance au démarrage. | |
bf5c74e7 JL |
24588 | @end defvr |
24589 | ||
1d8d69c8 | 24590 | @defvr {Variable Scheme} etc-service-type |
15f1bff4 JL |
24591 | Le type du service @file{/etc}. Ce service est utilisé pour créer des |
24592 | fichiers dans @file{/etc} et peut être étendu en lui passant des tuples | |
24593 | nom/fichier comme ceci : | |
bf5c74e7 JL |
24594 | |
24595 | @example | |
15f1bff4 | 24596 | (list `("issue" ,(plain-file "issue" "Bienvenue !\n"))) |
bf5c74e7 JL |
24597 | @end example |
24598 | ||
15f1bff4 JL |
24599 | Dans cet exemple, l'effet serait d'ajouter un fichier @file{/etc/issue} |
24600 | pointant vers le fichier donné. | |
bf5c74e7 JL |
24601 | @end defvr |
24602 | ||
1d8d69c8 | 24603 | @defvr {Variable Scheme} setuid-program-service-type |
15f1bff4 JL |
24604 | Le type du « service setuid ». Ce service récupère des listes de noms de |
24605 | fichiers exécutables, passés en tant que gexps, et les ajoute à l'ensemble | |
24606 | des programmes setuid root sur le système (@pxref{Programmes setuid}). | |
bf5c74e7 JL |
24607 | @end defvr |
24608 | ||
1d8d69c8 | 24609 | @defvr {Variable Scheme} profile-service-type |
15f1bff4 JL |
24610 | De type du service qui rempli le @dfn{profil du système} — c.-à-d.@: les |
24611 | programmes dans @file{/run/current-system/profile}. Les autres services | |
24612 | peuvent l'étendre en lui passant des listes de paquets à ajouter au profil | |
24613 | du système. | |
bf5c74e7 JL |
24614 | @end defvr |
24615 | ||
24616 | ||
24617 | @node Services Shepherd | |
15f1bff4 | 24618 | @subsection Services Shepherd |
bf5c74e7 | 24619 | |
adfb167f | 24620 | @cindex services shepherd |
bf5c74e7 | 24621 | @cindex PID 1 |
15f1bff4 | 24622 | @cindex système d'init |
bf5c74e7 | 24623 | The @code{(gnu services shepherd)} module provides a way to define services |
15f1bff4 JL |
24624 | managed by the GNU@tie{}Shepherd, which is the initialization system---the |
24625 | first process that is started when the system boots, also known as | |
24626 | PID@tie{}1 (@pxref{Introduction,,, shepherd, The GNU Shepherd Manual}). | |
bf5c74e7 | 24627 | |
15f1bff4 JL |
24628 | Les services dans le Shepherd peuvent dépendre les uns des autres. Par |
24629 | exemple, le démon SSH peut avoir besoin d'être démarré après le démon | |
24630 | syslog, qui à son tour doit être démarré après le montage des systèmes de | |
24631 | fichiers. Le système d'exploitation simple déclaré précédemment | |
24632 | (@pxref{Utiliser le système de configuration}) crée un graphe de service comme | |
24633 | ceci : | |
bf5c74e7 | 24634 | |
15f1bff4 | 24635 | @image{images/shepherd-graph,,5in,Graphe de service typique du shepherd.} |
bf5c74e7 | 24636 | |
15f1bff4 JL |
24637 | Vous pouvez générer un tel graphe pour n'importe quelle définition de |
24638 | système d'exploitation avec la commande @command{guix system shepherd-graph} | |
bf5c74e7 JL |
24639 | (@pxref{system-shepherd-graph, @command{guix system shepherd-graph}}). |
24640 | ||
15f1bff4 JL |
24641 | La variable @var{%shepherd-root-service} est un objet de service |
24642 | représentant le PID@tie{}1, de type @var{shepherd-root-service-type} ; il | |
24643 | peut être étendu en lui passant des listes d'objets | |
24644 | @code{<shepherd-service>}. | |
bf5c74e7 | 24645 | |
1d8d69c8 | 24646 | @deftp {Type de données} shepherd-service |
15f1bff4 | 24647 | Le type de données représentant un service géré par le Shepherd. |
bf5c74e7 JL |
24648 | |
24649 | @table @asis | |
24650 | @item @code{provision} | |
15f1bff4 | 24651 | C'est une liste de symboles dénotant ce que le service fournit. |
bf5c74e7 | 24652 | |
15f1bff4 JL |
24653 | Ce sont les noms qui peuvent être passés à @command{herd start}, |
24654 | @command{herd status} et les commandes similaires (@pxref{Invoking herd,,, | |
bf5c74e7 | 24655 | shepherd, The GNU Shepherd Manual}). @xref{Slots of services, the |
15f1bff4 JL |
24656 | @code{provides} slot,, shepherd, The GNU Shepherd Manual}, pour plus de |
24657 | détails. | |
bf5c74e7 | 24658 | |
1d8d69c8 | 24659 | @item @code{requirements} (par défaut : @code{'()}) |
15f1bff4 | 24660 | Liste de symboles dénotant les services du Shepherd dont celui-ci dépend. |
bf5c74e7 | 24661 | |
1d8d69c8 | 24662 | @item @code{respawn?} (par défaut : @code{#t}) |
15f1bff4 JL |
24663 | Indique s'il faut redémarrer le service lorsqu'il s'arrête, par exemple si |
24664 | le processus sous-jacent meurt. | |
bf5c74e7 JL |
24665 | |
24666 | @item @code{start} | |
1d8d69c8 | 24667 | @itemx @code{stop} (par défaut : @code{#~(const #f)}) |
15f1bff4 JL |
24668 | Les champs @code{start} et @code{stop} se réfèrent à la capacité du Shepherd |
24669 | de démarrer et d'arrêter des processus (@pxref{Service De- and | |
24670 | Constructors,,, shepherd, The GNU Shepherd Manual}). Ils sont donnés comme | |
24671 | des G-expressions qui sont étendues dans le fichier de configuration du | |
24672 | Shepherd (@pxref{G-Expressions}). | |
bf5c74e7 | 24673 | |
adfb167f JL |
24674 | @item @code{actions} (par défaut : @code{'()}) |
24675 | @cindex action, des services Shepherd | |
15f1bff4 JL |
24676 | C'est une liste d'objets @code{shepherd-action} (voir plus bas) définissant |
24677 | des @dfn{actions} supportées par le service, en plus des actions | |
24678 | @code{start} et @code{stop} standards. Les actions listées ici sont | |
24679 | disponibles en tant que sous-commande de @command{herd}. | |
524756d1 JL |
24680 | |
24681 | @example | |
24682 | herd @var{action} @var{service} [@var{arguments}@dots{}] | |
24683 | @end example | |
24684 | ||
bf5c74e7 | 24685 | @item @code{documentation} |
15f1bff4 | 24686 | Une chaîne de documentation, montrée lorsqu'on lance : |
bf5c74e7 JL |
24687 | |
24688 | @example | |
24689 | herd doc @var{service-name} | |
24690 | @end example | |
24691 | ||
15f1bff4 | 24692 | où @var{service-name} est l'un des symboles dans @var{provision} |
bf5c74e7 JL |
24693 | (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual}). |
24694 | ||
1d8d69c8 | 24695 | @item @code{modules} (par défaut : @var{%default-modules}) |
15f1bff4 JL |
24696 | C'est la liste des modules qui doivent être dans le contexte lorsque |
24697 | @code{start} et @code{stop} sont évalués. | |
bf5c74e7 JL |
24698 | |
24699 | @end table | |
24700 | @end deftp | |
24701 | ||
adfb167f | 24702 | @deftp {Type de données} shepherd-action |
15f1bff4 JL |
24703 | C'est le type de données qui définie des actions supplémentaires |
24704 | implémentées par un service Shepherd (voir au-dessus). | |
524756d1 JL |
24705 | |
24706 | @table @code | |
24707 | @item name | |
adfb167f | 24708 | Symbole nommant l'action |
524756d1 JL |
24709 | |
24710 | @item documentation | |
15f1bff4 JL |
24711 | C'est une chaîne de documentation pour l'action. Elle peut être consultée |
24712 | avec : | |
524756d1 JL |
24713 | |
24714 | @example | |
24715 | herd doc @var{service} action @var{action} | |
24716 | @end example | |
24717 | ||
24718 | @item procedure | |
15f1bff4 JL |
24719 | Cela devrait être une gexp qui s'évalue en une procédure à au moins un |
24720 | argument, la « valeur de lancement » du service (@pxref{Slots of services,,, | |
24721 | shepherd, The GNU Shepherd Manual}). | |
524756d1 JL |
24722 | @end table |
24723 | ||
15f1bff4 JL |
24724 | L'exemple suivant définie une action nommée @code{dire-bonjour} qui salue |
24725 | amicalement l'utilisateur : | |
524756d1 JL |
24726 | |
24727 | @example | |
24728 | (shepherd-action | |
15f1bff4 JL |
24729 | (name 'dire-bonjour) |
24730 | (documentation "Dit salut !") | |
524756d1 | 24731 | (procedure #~(lambda (running . args) |
15f1bff4 | 24732 | (format #t "Salut, l'ami ! arguments : ~s\n" |
524756d1 JL |
24733 | args) |
24734 | #t))) | |
24735 | @end example | |
24736 | ||
15f1bff4 JL |
24737 | En supposant que cette action est ajoutée dans le service @code{example}, |
24738 | vous pouvez écrire : | |
524756d1 JL |
24739 | |
24740 | @example | |
15f1bff4 JL |
24741 | # herd dire-bonjour example |
24742 | Salut, l'ami ! arguments : () | |
24743 | # herd dire-bonjour example a b c | |
24744 | Salut, l'ami ! arguments : ("a" "b" "c") | |
524756d1 JL |
24745 | @end example |
24746 | ||
15f1bff4 JL |
24747 | Comme vous pouvez le voir, c'est une manière assez sophistiquée de dire |
24748 | bonjour. @xref{Service Convenience,,, shepherd, The GNU Shepherd Manual}, | |
24749 | pour plus d'informations sur les actions. | |
524756d1 JL |
24750 | @end deftp |
24751 | ||
1d8d69c8 | 24752 | @defvr {Variable Scheme} shepherd-root-service-type |
15f1bff4 JL |
24753 | Le type de service pour le « service racine » du Shepherd — c.-à-d.@: le |
24754 | PID@tie{}1. | |
bf5c74e7 | 24755 | |
15f1bff4 JL |
24756 | C'est le type de service que les extensions ciblent lorqu'elles veulent |
24757 | créer un service shepherd (@pxref{Types service et services}, pour un | |
24758 | exemple). Chaque extension doit passer une liste de | |
24759 | @code{<shepherd-service>}. | |
bf5c74e7 JL |
24760 | @end defvr |
24761 | ||
1d8d69c8 | 24762 | @defvr {Variable Scheme} %shepherd-root-service |
15f1bff4 | 24763 | Ce service représente le PID@tie{}1. |
bf5c74e7 JL |
24764 | @end defvr |
24765 | ||
24766 | ||
24767 | @node Documentation | |
15f1bff4 JL |
24768 | @chapter Documentation |
24769 | ||
24770 | @cindex documentation, recherche | |
24771 | @cindex chercher de la documentation | |
24772 | @cindex Info, format de documentation | |
24773 | @cindex man, pages de manuel | |
24774 | @cindex pages de manuel | |
24775 | Dans la plupart des cas les paquets installés avec Guix ont une | |
24776 | documentation. Il y a deux formats de documentation principaux : « Info », | |
24777 | un format hypertexte navigable utilisé par les logiciels GNU et les « pages | |
24778 | de manuel » (ou « pages de man »), le format de documentation linéaire | |
24779 | traditionnel chez Unix. Les manuels Info sont disponibles via la commande | |
24780 | @command{info} ou avec Emacs, et les pages de man sont accessibles via la | |
24781 | commande @command{man}. | |
24782 | ||
24783 | Vous pouvez chercher de la documentation pour les logiciels installés sur | |
24784 | votre système par mot-clef. Par exemple, la commande suivante recherche des | |
24785 | informations sur « TLS » dans les manuels Info : | |
bf5c74e7 JL |
24786 | |
24787 | @example | |
24788 | $ info -k TLS | |
24789 | "(emacs)Network Security" -- STARTTLS | |
24790 | "(emacs)Network Security" -- TLS | |
24791 | "(gnutls)Core TLS API" -- gnutls_certificate_set_verify_flags | |
24792 | "(gnutls)Core TLS API" -- gnutls_certificate_set_verify_function | |
24793 | @dots{} | |
24794 | @end example | |
24795 | ||
24796 | @noindent | |
15f1bff4 | 24797 | La commande suivante recherche le même mot-clef dans les pages de man : |
bf5c74e7 JL |
24798 | |
24799 | @example | |
24800 | $ man -k TLS | |
24801 | SSL (7) - OpenSSL SSL/TLS library | |
24802 | certtool (1) - GnuTLS certificate tool | |
24803 | @dots {} | |
24804 | @end example | |
24805 | ||
15f1bff4 JL |
24806 | Ces recherches sont purement locales à votre ordinateur donc vous savez que |
24807 | la documentation trouvée correspond à ce qui est effectivement installé, | |
24808 | vous pouvez y accéder hors ligne et votre vie privée est préservée. | |
bf5c74e7 | 24809 | |
15f1bff4 JL |
24810 | Une fois que vous avez ces résultats, vous pouvez visualiser la |
24811 | documentation appropriée avec, disons : | |
bf5c74e7 JL |
24812 | |
24813 | @example | |
24814 | $ info "(gnutls)Core TLS API" | |
24815 | @end example | |
24816 | ||
24817 | @noindent | |
15f1bff4 | 24818 | ou : |
bf5c74e7 JL |
24819 | |
24820 | @example | |
24821 | $ man certtool | |
24822 | @end example | |
24823 | ||
15f1bff4 JL |
24824 | Les manuels Info contiennent des sections et des indexs ainsi que des |
24825 | hyperliens comme ce qu'on trouve sur les pages Web. Le lecteur | |
24826 | @command{info} (@pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}) | |
24827 | et sa contre-partie dans Emacs (@pxref{Misc Help,,, emacs, The GNU Emacs | |
24828 | Manual}) fournissent des raccourcis claviers intuitifs pour naviguer dans | |
24829 | les manuels @xref{Getting Started,,, info, Info: An Introduction} pour | |
24830 | trouver une introduction sur la navigation dans info. | |
bf5c74e7 JL |
24831 | |
24832 | @node Installer les fichiers de débogage | |
15f1bff4 | 24833 | @chapter Installer les fichiers de débogage |
bf5c74e7 | 24834 | |
15f1bff4 JL |
24835 | @cindex fichiers de débogage |
24836 | Les binaires des programmes, produits par les compilateurs GCC par exemple, | |
24837 | sont typiquement écrits au format ELF, avec une section contenant des | |
24838 | @dfn{informations de débogage}. Les informations de débogage sont ce qui | |
24839 | permet au débogueur, GDB, de relier le code binaire et le code source ; | |
24840 | elles sont requises pour déboguer un programme compilé dans de bonnes | |
24841 | conditions. | |
bf5c74e7 JL |
24842 | |
24843 | Le problème avec les informations de débogage est qu'elles prennent pas mal | |
24844 | de place sur le disque. Par exemple, les informations de débogage de la | |
24845 | bibliothèque C de GNU prend plus de 60 Mo. Ainsi, en tant qu'utilisateur, | |
24846 | garder toutes les informations de débogage de tous les programmes installés | |
24847 | n'est souvent pas une possibilité. Cependant, l'économie d'espace ne devrait | |
24848 | pas empêcher le débogage — en particulier, dans le système GNU, qui devrait | |
24849 | faciliter pour ses utilisateurs l'exercice de leurs libertés | |
24850 | (@pxref{Distribution GNU}). | |
24851 | ||
15f1bff4 JL |
24852 | Heureusement, les utilitaires binaires de GNU (Binutils) et GDB fournissent |
24853 | un mécanisme qui permet aux utilisateurs d'avoir le meilleur des deux mondes | |
24854 | : les informations de débogage peuvent être nettoyées des binaires et | |
24855 | stockées dans des fichiers séparés. GDB peut ensuite charger les | |
24856 | informations de débogage depuis ces fichiers, lorsqu'elles sont disponibles | |
bf5c74e7 JL |
24857 | (@pxref{Separate Debug Files,,, gdb, Debugging with GDB}). |
24858 | ||
15f1bff4 JL |
24859 | La distribution GNU se sert de cela pour stocker les informations de |
24860 | débogage dans le sous-répertoire @code{lib/debug} d'une sortie séparée du | |
24861 | paquet appelée sans grande imagination @code{debug} (@pxref{Des paquets avec plusieurs résultats}). Les utilisateurs peuvent choisir d'installer la sortie | |
24862 | @code{debug} d'un paquet lorsqu'ils en ont besoin. Par exemple, la commande | |
24863 | suivante installe les informations de débogage pour la bibliothèque C de GNU | |
24864 | et pour GNU Guile. | |
bf5c74e7 JL |
24865 | |
24866 | @example | |
24867 | guix package -i glibc:debug guile:debug | |
24868 | @end example | |
24869 | ||
15f1bff4 JL |
24870 | On doit ensuite dire à GDB de chercher les fichiers de débogage dans le |
24871 | profil de l'utilisateur, en remplissant la variable | |
24872 | @code{debug-file-directory} (vous pourriez aussi l'instancier depuis le | |
24873 | fichier @file{~/.gdbinit}, @pxref{Startup,,, gdb, Debugging with GDB}) : | |
bf5c74e7 JL |
24874 | |
24875 | @example | |
24876 | (gdb) set debug-file-directory ~/.guix-profile/lib/debug | |
24877 | @end example | |
24878 | ||
15f1bff4 JL |
24879 | À partir de maintenant, GDB récupérera les informations de débogage dans les |
24880 | fichiers @code{.debug} de @file{~/.guix-profile/lib/debug}. | |
bf5c74e7 | 24881 | |
15f1bff4 JL |
24882 | EN plus, vous voudrez sans doute que GDB puisse montrer le code source |
24883 | débogué. Pour cela, vous devrez désarchiver le code source du paquet qui | |
24884 | 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 | |
24885 | @code{directory} (@pxref{Source Path, @code{directory},, gdb, Debugging with | |
24886 | GDB}). | |
bf5c74e7 JL |
24887 | |
24888 | @c XXX: keep me up-to-date | |
15f1bff4 JL |
24889 | Le mécanisme de la sortie @code{debug} dans Guix est implémenté par le |
24890 | @code{gnu-build-system} (@pxref{Systèmes de construction}). Actuellement, ce n'est pas | |
24891 | obligatoire — les informations de débogage sont disponibles uniquement si | |
24892 | les définitions déclarent explicitement une sortie @code{debug}. Cela | |
24893 | pourrait être modifié tout en permettant aux paquets de s'en passer dans le | |
24894 | futur si nos serveurs de construction peuvent tenir la charge. Pour | |
24895 | vérifier si un paquet a une sortie @code{debug}, utilisez @command{guix | |
24896 | package --list-available} (@pxref{Invoquer guix package}). | |
bf5c74e7 JL |
24897 | |
24898 | ||
24899 | @node Mises à jour de sécurité | |
15f1bff4 | 24900 | @chapter Mises à jour de sécurité |
bf5c74e7 | 24901 | |
15f1bff4 | 24902 | @cindex mises à jour de sécurité |
524756d1 | 24903 | @cindex vulnérabilités |
15f1bff4 JL |
24904 | Parfois, des vulnérabilités importantes sont découvertes dans les paquets |
24905 | logiciels et doivent être corrigées. Les développeurs de Guix essayent de | |
24906 | suivre les vulnérabilités connues et d'appliquer des correctifs aussi vite | |
24907 | que possible dans la branche @code{master} de Guix (nous n'avons pas encore | |
24908 | de branche « stable » contenant seulement des mises à jour de sécurité). | |
24909 | L'outil @command{guix lint} aide les développeurs à trouver les versions | |
24910 | vulnérables des paquets logiciels dans la distribution. | |
bf5c74e7 JL |
24911 | |
24912 | @smallexample | |
24913 | $ guix lint -c cve | |
15f1bff4 JL |
24914 | gnu/packages/base.scm:652:2: glibc@@2.21: probablement vulnérable à CVE-2015-1781, CVE-2015-7547 |
24915 | gnu/packages/gcc.scm:334:2: gcc@@4.9.3: probablement vulnérable à CVE-2015-5276 | |
24916 | gnu/packages/image.scm:312:2: openjpeg@@2.1.0: probablement vulnérable à CVE-2016-1923, CVE-2016-1924 | |
bf5c74e7 JL |
24917 | @dots{} |
24918 | @end smallexample | |
24919 | ||
15f1bff4 | 24920 | @xref{Invoquer guix lint}, pour plus d'informations. |
bf5c74e7 | 24921 | |
3cacfa9e | 24922 | @quotation Remarque |
15f1bff4 JL |
24923 | À la version @value{VERSION}, la fonctionnalité ci-dessous est considérée |
24924 | comme « bêta ». | |
bf5c74e7 JL |
24925 | @end quotation |
24926 | ||
24927 | Guix suit une discipline de gestion de paquets fonctionnelle | |
24928 | (@pxref{Introduction}), ce qui implique que lorsqu'un paquet change, | |
24929 | @emph{tous les paquets qui en dépendent} doivent être reconstruits. Cela | |
24930 | peut grandement ralentir le déploiement de corrections dans les paquets du | |
24931 | cœur comme libc ou bash comme presque toute la distribution aurait besoin | |
24932 | d'être reconstruite. Cela aide d'utiliser des binaires pré-construits | |
24933 | (@pxref{Substituts}), mais le déploiement peut toujours prendre plus de | |
24934 | temps de souhaité. | |
24935 | ||
1d8d69c8 | 24936 | @cindex greffes |
15f1bff4 JL |
24937 | Pour corriger cela, Guix implémente les @dfn{greffes}, un mécanisme qui |
24938 | permet un déploiement rapide des mises à jour de sécurité critiques sans le | |
24939 | coût associé à une reconstruction complète de la distribution. L'idée est | |
24940 | de reconstruire uniquement le paquet qui doit être corrigé puis de le « | |
24941 | greffer » sur les paquets qui sont explicitement installés par l'utilisateur | |
24942 | et qui se référaient avant au paquet d'origine. Le coût d'une greffe est | |
24943 | typiquement très bas, et plusieurs ordres de grandeurs moins élevé que de | |
24944 | reconstruire tout la chaîne de dépendance. | |
24945 | ||
24946 | @cindex remplacement de paquet, pour les greffes | |
24947 | Par exemple, supposons qu'une mise à jour de sécurité doive être appliquée à | |
24948 | Bash. Les développeurs de Guix fourniront une définition de paquet pour le | |
24949 | Bash « corrigé », disons @var{bash-fixed}, de la manière habituelle | |
24950 | (@pxref{Définition des paquets}). Ensuite, la définition originale du paquet est | |
24951 | augmentée avec un champ @code{replacement} qui pointe vers le paquet | |
24952 | contenant le correctif de sécurité : | |
bf5c74e7 JL |
24953 | |
24954 | @example | |
24955 | (define bash | |
24956 | (package | |
24957 | (name "bash") | |
24958 | ;; @dots{} | |
24959 | (replacement bash-fixed))) | |
24960 | @end example | |
24961 | ||
15f1bff4 JL |
24962 | À partir de maintenant, tout paquet dépendant directement ou indirectement |
24963 | de Bash — rapporté par @command{guix gc --requisites} (@pxref{Invoquer guix gc}) — installé est automatiquement « réécrit » pour se référer à | |
24964 | @var{bash-fixed} au lieu de @var{bash}. Ce processus de greffe prend du | |
24965 | temps en proportion de la taille du paquet, typiquement moins d'une minute | |
24966 | pour un paquet de taille « moyenne » sur une machine récente. La greffe est | |
24967 | récursive : lorsqu'une dépendance indirecte a besoin d'être greffée, la | |
24968 | greffe se « propage » jusqu'au paquet que l'utilisateur installe. | |
bf5c74e7 | 24969 | |
15f1bff4 JL |
24970 | Actuellement la longueur du nom et la version de la greffe et du paquet |
24971 | qu'il remplace (@var{bash-fixed} et @var{bash} dans l'exemple ci-dessus) | |
24972 | doivent être identiques. Cette restriction vient surtout du fait que la | |
24973 | greffe fonctionne en corrigeant les fichiers, dont des fichiers binaires, | |
24974 | directement. D'autres restrictions peuvent apparaître : par exemple, si | |
24975 | vous ajoutez une greffe à un paquet fournissant une bibliothèque partagée, | |
24976 | la bibliothèque partagée originale et son remplacement doivent avoir le même | |
24977 | @code{SONAME} et être compatibles au niveau binaire. | |
bf5c74e7 | 24978 | |
15f1bff4 JL |
24979 | L'option en ligne de commande @option{--no-grafts} vous permet d'éviter les |
24980 | greffes (@pxref{Options de construction communes, @option{--no-grafts}}). Donc la | |
24981 | commande : | |
bf5c74e7 JL |
24982 | |
24983 | @example | |
24984 | guix build bash --no-grafts | |
24985 | @end example | |
24986 | ||
24987 | @noindent | |
15f1bff4 | 24988 | renvoie le nom de fichier dans les dépôt du Bash original, alors que : |
bf5c74e7 JL |
24989 | |
24990 | @example | |
24991 | guix build bash | |
24992 | @end example | |
24993 | ||
24994 | @noindent | |
15f1bff4 JL |
24995 | renvoie le nom de fichier du Bash « corrigé » de remplacement. Cela vous |
24996 | permet de distinguer les deux variantes de Bash. | |
bf5c74e7 | 24997 | |
15f1bff4 JL |
24998 | Pour vérifier à quel Bash votre profil se réfère, vous pouvez lancer |
24999 | (@pxref{Invoquer guix gc}) : | |
bf5c74e7 JL |
25000 | |
25001 | @example | |
25002 | guix gc -R `readlink -f ~/.guix-profile` | grep bash | |
25003 | @end example | |
25004 | ||
25005 | @noindent | |
25006 | @dots{} and compare the store file names that you get with those above. | |
15f1bff4 | 25007 | Likewise for a complete Guix system generation: |
bf5c74e7 JL |
25008 | |
25009 | @example | |
25010 | guix gc -R `guix system build my-config.scm` | grep bash | |
25011 | @end example | |
25012 | ||
15f1bff4 JL |
25013 | Enfin, pour vérifier quelles processus Bash lancés vous utilisez, vous |
25014 | pouvez utiliser la commande @command{lsof} : | |
bf5c74e7 JL |
25015 | |
25016 | @example | |
25017 | lsof | grep /gnu/store/.*bash | |
25018 | @end example | |
25019 | ||
25020 | ||
bf5c74e7 | 25021 | @node Bootstrapping |
15f1bff4 | 25022 | @chapter Bootstrapping |
bf5c74e7 JL |
25023 | |
25024 | @c Adapted from the ELS 2013 paper. | |
25025 | ||
15f1bff4 JL |
25026 | @cindex bootstrap |
25027 | ||
25028 | Dans notre contexte, le bootstrap se réfère à la manière dont la | |
25029 | distribution est construite « à partir de rien ». Rappelez-vous que | |
25030 | l'environnement de construction d'une dérivation ne contient rien d'autre | |
25031 | que les entrées déclarées (@pxref{Introduction}). Donc il y a un problème | |
25032 | évident de poule et d'œuf : comment le premier paquet est-il construit ? | |
25033 | Comment le premier compilateur est-il construit ? Remarquez que c'est une | |
25034 | question qui intéressera uniquement le hacker curieux, pas l'utilisateur | |
25035 | normal, donc vous pouvez sauter cette section sans avoir honte si vous vous | |
25036 | considérez comme un « utilisateur normal ». | |
25037 | ||
25038 | @cindex binaires de bootstrap | |
25039 | Le système GNU est surtout fait de code C, avec la libc en son cœur. Le | |
25040 | système de construction GNU lui-même suppose la disponibilité d'un shell | |
25041 | Bourne et d'outils en ligne de commande fournis par GNU Coreutils, Awk, | |
25042 | Findutils, sed et grep. En plus, les programmes de construction — les | |
25043 | programmes qui exécutent @code{./configure}, @code{make} etc — sont écrits | |
25044 | en Guile Scheme (@pxref{Dérivations}). En conséquence, pour pouvoir | |
25045 | construire quoi que ce soit, de zéro, Guix a besoin de binaire | |
25046 | pré-construits de Guile, GCC, Binutils, la libc et des autres paquets | |
25047 | mentionnés plus haut — les @dfn{binaires de bootstrap}. | |
25048 | ||
25049 | Ces binaires de bootstrap sont pris comme des acquis, bien qu'on puisse les | |
25050 | recréer (ça arrive plus tard). | |
25051 | ||
25052 | @unnumberedsec Se préparer à utiliser les binaires de bootstrap | |
bf5c74e7 JL |
25053 | |
25054 | @c As of Emacs 24.3, Info-mode displays the image, but since it's a | |
25055 | @c large image, it's hard to scroll. Oh well. | |
15f1bff4 JL |
25056 | @image{images/bootstrap-graph,6in,,Graphe de dépendance des premières |
25057 | dérivations de bootstrap} | |
bf5c74e7 | 25058 | |
15f1bff4 JL |
25059 | La figure ci-dessus montre le tout début du graphe de dépendances de la |
25060 | distribution, correspondant aux définitions des paquets du module @code{(gnu | |
25061 | packages bootstrap)}. Une figure similaire peut être générée avec | |
25062 | @command{guix graph} (@pxref{Invoquer guix graph}), de cette manière : | |
bf5c74e7 JL |
25063 | |
25064 | @example | |
25065 | guix graph -t derivation \ | |
25066 | -e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \ | |
25067 | | dot -Tps > t.ps | |
25068 | @end example | |
25069 | ||
15f1bff4 JL |
25070 | À ce niveau de détails, les choses sont légèrement complexes. Tout d'abord, |
25071 | Guile lui-même consiste en an exécutable ELF, avec plusieurs fichiers Scheme | |
25072 | sources et compilés qui sont chargés dynamiquement quand il est exécuté. | |
25073 | Cela est stocké dans l'archive @file{guile-2.0.7.tar.xz} montrée dans ce | |
25074 | graphe. Cette archive fait parti de la distribution « source » de Guix, et | |
25075 | est insérée dans le dépôt avec @code{add-to-store} (@pxref{Le dépôt}). | |
25076 | ||
25077 | Mais comment écrire une dérivation qui décompresse cette archive et l'ajoute | |
25078 | au dépôt ? Pour résoudre ce problème, la dérivation | |
25079 | @code{guile-bootstrap-2.0.drv} — la première qui est construite — utilise | |
25080 | @code{bash} comme constructeur, qui lance @code{build-bootstrap-guile.sh}, | |
25081 | qui à son tour appelle @code{tar} pour décompresser l'archive. Ainsi, | |
25082 | @file{bash}, @file{tar}, @file{xz} et @file{mkdir} sont des binaires liés | |
25083 | statiquement, qui font aussi partie de la distribution source de Guix, dont | |
25084 | le seul but est de permettre à l'archive de Guile d'être décompressée. | |
25085 | ||
25086 | Une fois que @code{guile-bootstrap-2.0.drv} est construit, nous avons un | |
25087 | Guile fonctionnel qui peut être utilisé pour exécuter les programmes de | |
25088 | construction suivants. Sa première tâche consiste à télécharger les | |
25089 | archives contenant les autres binaires pré-construits — c'est ce que la | |
25090 | dérivation @code{.tar.xz.drv} fait. Les modules Guix comme | |
25091 | @code{ftp-client.scm} sont utilisés pour cela. Les dérivations | |
25092 | @code{module-import.drv} importent ces modules dans un répertoire dans le | |
25093 | dépôt, en utilisant la disposition d'origine. Les dérivations | |
25094 | @code{module-import-compiled.drv} compilent ces modules, et les écrivent | |
25095 | dans un répertoire de sortie avec le bon agencement. Cela correspond à | |
25096 | l'argument @code{#:modules} de @code{build-expression->derivation} | |
25097 | (@pxref{Dérivations}). | |
25098 | ||
25099 | Enfin, les diverses archives sont décompressées par les dérivations | |
25100 | @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, etc, à partir de | |
25101 | quoi nous avons une chaîne de compilation C fonctionnelle. | |
25102 | ||
25103 | ||
25104 | @unnumberedsec Construire les outils de construction | |
25105 | ||
25106 | Le bootstrap est complet lorsque nous avons une chaîne d'outils complète qui | |
25107 | ne dépend pas des outils de bootstrap pré-construits dont on vient de | |
25108 | parler. Ce pré-requis d'indépendance est vérifié en s'assurant que les | |
25109 | fichiers de la chaîne d'outil finale ne contiennent pas de référence vers | |
25110 | les répertoires @file{/gnu/store} des entrées de bootstrap. Le processus | |
25111 | qui mène à cette chaîne d'outils « finale » est décrit par les définitions | |
25112 | de paquets qui se trouvent dans le module @code{(gnu packages | |
25113 | commencement)}. | |
25114 | ||
25115 | La commande @command{guix graph} nous permet de « dézoomer » comparé au | |
25116 | graphe précédent, en regardant au niveau des objets de paquets plutôt que | |
25117 | des dérivations individuelles — rappelez-vous qu'un paquet peut se traduire | |
25118 | en plusieurs dérivations, typiquement une dérivation pour télécharger ses | |
25119 | sources, une pour les modules Guile dont il a besoin et une pour | |
25120 | effectivement compiler le paquet depuis les sources. La commande : | |
bf5c74e7 JL |
25121 | |
25122 | @example | |
25123 | guix graph -t bag \ | |
25124 | -e '(@@@@ (gnu packages commencement) | |
25125 | glibc-final-with-bootstrap-bash)' | dot -Tps > t.ps | |
25126 | @end example | |
25127 | ||
25128 | @noindent | |
15f1bff4 JL |
25129 | produit le graphe de dépendances qui mène à la bibliothèque C « finale |
25130 | »@footnote{Vous remarquerez qu'elle s'appelle @code{glibc-intermediate}, ce | |
25131 | qui suggère qu'elle n'est pas @emph{tout à fait} finale, mais c'est une | |
25132 | bonne approximation tout de même.}, que voici : | |
bf5c74e7 | 25133 | |
1d8d69c8 JL |
25134 | @image{images/bootstrap-packages,6in,,Graphe de dépendance des premiers |
25135 | paquets} | |
bf5c74e7 JL |
25136 | |
25137 | @c See <http://lists.gnu.org/archive/html/gnu-system-discuss/2012-10/msg00000.html>. | |
15f1bff4 JL |
25138 | Le premier outil construit avec les binaires de bootstrap est GNU@tie{}Make |
25139 | — appelé @code{make-boot0} ci-dessus — qui est un prérequis de tous les | |
25140 | paquets suivants . Ensuite, Findutils et Diffutils sont construits. | |
bf5c74e7 | 25141 | |
15f1bff4 JL |
25142 | Ensuite vient la première passe de Binutils et GCC, construits comme des |
25143 | pseudo outils croisés — c.-à-d.@: dont @code{--target} égal à | |
25144 | @code{--host}. Ils sont utilisés pour construire la libc. Grâce à cette | |
25145 | astuce de compilation croisée, la libc est garantie de ne contenir aucune | |
25146 | référence à la chaîne d'outils initiale. | |
bf5c74e7 | 25147 | |
15f1bff4 JL |
25148 | À partir de là, les Bintulis et GCC finaux (pas visibles ci-dessus) sont |
25149 | construits. GCC utilise @code{ld} du Binutils final et lie les programme | |
25150 | avec la libc qui vient d'être construite. Cette chaîne d'outils est | |
25151 | utilisée pour construire les autres paquets utilisés par Guix et par le | |
25152 | système de construction de GNU : Guile, Bash, Coreutils, etc. | |
bf5c74e7 | 25153 | |
15f1bff4 JL |
25154 | Et voilà ! À partir de là nous avons l'ensemble complet des outils auxquels |
25155 | s'attend le système de construction GNU. Ils sont dans la variable | |
25156 | @code{%final-inputs} du module @code{(gnu packages commencement)} et sont | |
25157 | implicitement utilisés par tous les paquets qui utilisent le | |
25158 | @code{gnu-build-system} (@pxref{Systèmes de construction, @code{gnu-build-system}}). | |
bf5c74e7 JL |
25159 | |
25160 | ||
15f1bff4 | 25161 | @unnumberedsec Construire les binaires de bootstrap |
bf5c74e7 | 25162 | |
15f1bff4 JL |
25163 | @cindex binaires de bootstrap |
25164 | Comme la chaîne d'outils finale ne dépend pas des binaires de bootstrap, ils | |
25165 | ont rarement besoin d'être mis à jour. Cependant, il est utile d'avoir une | |
25166 | manière de faire cela automatiquement, dans le cas d'une mise à jour et | |
25167 | c'est ce que le module @code{(gnu packages make-bootstrap)} fournit. | |
bf5c74e7 | 25168 | |
15f1bff4 JL |
25169 | La commande suivante construit les archives contenant les binaires de |
25170 | bootstrap (Guile, Binutils, GCC, la libc et une archive contenant un mélange | |
25171 | de Coreutils et d'autres outils en ligne de commande de base) : | |
bf5c74e7 JL |
25172 | |
25173 | @example | |
25174 | guix build bootstrap-tarballs | |
25175 | @end example | |
25176 | ||
15f1bff4 JL |
25177 | Les archives générées sont celles qui devraient être référencées dans le |
25178 | module @code{(gnu packages bootstrap)} au début de cette section. | |
bf5c74e7 | 25179 | |
15f1bff4 JL |
25180 | Vous êtes toujours là ? Alors peut-être que maintenant vous vous demandez, |
25181 | quand est-ce qu'on atteint un point fixe ? C'est une question intéressante | |
25182 | ! La réponse est inconnue, mais si vous voulez enquêter plus profondément | |
25183 | (et que vous avez les ressources en puissance de calcul et en capacité de | |
25184 | stockage pour cela), dites-le nous. | |
bf5c74e7 | 25185 | |
15f1bff4 | 25186 | @unnumberedsec Réduire l'ensemble des binaires de bootstrap |
bf5c74e7 | 25187 | |
15f1bff4 JL |
25188 | Nous binaires de bootstrap incluent actuellement GCC, Guile, etc. C'est |
25189 | beaucoup de code binaire ! Pourquoi est-ce un problème ? C'est un problème | |
25190 | parce que ces gros morceaux de code binaire sont en pratique impossibles à | |
25191 | auditer, ce qui fait qu'il est difficile d'établir quel code source les a | |
25192 | produit. Chaque binaire non auditable nous rend aussi vulnérable à des | |
25193 | portes dérobées dans les compilateurs comme le décrit Ken Thompson dans le | |
25194 | papier de 1984 @emph{Reflections on Trusting Trust}. | |
bf5c74e7 | 25195 | |
15f1bff4 JL |
25196 | Cela est rendu moins inquiétant par le fait que les binaires de bootstrap |
25197 | ont été générés par une révision antérieure de Guix. Cependant, il leur | |
25198 | manque le niveau de transparence que l'on obtient avec le reste des paquets | |
25199 | du graphe de dépendance, où Guix nous donne toujours une correspondance | |
25200 | source-binaire. Ainsi, notre but est de réduire l'ensemble des binaires de | |
25201 | bootstrap au minimum. | |
bf5c74e7 | 25202 | |
15f1bff4 JL |
25203 | Le @uref{http://bootstrappable.org, site web Bootstrappable.org} liste les |
25204 | projets en cours à ce sujet. L'un d'entre eux parle de remplacer le GCC de | |
25205 | bootstrap par une série d'assembleurs, d'interpréteurs et de compilateurs | |
25206 | d'une complexité croissante, qui pourraient être construits à partir des | |
25207 | sources à partir d'un assembleur simple et auditable. Votre aide est la | |
25208 | bienvenue ! | |
bf5c74e7 JL |
25209 | |
25210 | ||
25211 | @node Porter | |
15f1bff4 | 25212 | @chapter Porter vers une nouvelle plateforme |
bf5c74e7 | 25213 | |
15f1bff4 JL |
25214 | Comme nous en avons discuté plus haut, la distribution GNU est |
25215 | auto-contenue, et cela est possible en se basant sur des « binaires de | |
25216 | bootstrap » pré-construits (@pxref{Bootstrapping}). Ces binaires sont | |
25217 | spécifiques au noyau de système d'exploitation, à l'architecture CPU et à | |
25218 | l'interface applicative binaire (ABI). Ainsi, pour porter la distribution | |
25219 | sur une plateforme qui n'est pas encore supportée, on doit construire ces | |
25220 | binaires de bootstrap et mettre à jour le module @code{(gnu packages | |
25221 | bootstrap)} pour les utiliser sur cette plateforme. | |
bf5c74e7 | 25222 | |
15f1bff4 JL |
25223 | Heureusement, Guix peut effectuer une @emph{compilation croisée} de ces |
25224 | binaires de bootstrap. Lorsque tout va bien, et en supposant que la chaîne | |
25225 | d'outils GNU supporte la plateforme cible, cela peut être aussi simple que | |
25226 | de lancer une commande comme ceci : | |
bf5c74e7 JL |
25227 | |
25228 | @example | |
25229 | guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs | |
25230 | @end example | |
25231 | ||
15f1bff4 JL |
25232 | Pour que cela fonctione, la procédure @code{glibc-dynamic-linker} dans |
25233 | @code{(gnu packages bootstrap)} doit être augmentée pour renvoyer le bon nom | |
25234 | de fichier pour l'éditeur de lien dynamique de la libc sur cette plateforme | |
25235 | ; de même, il faut indiquer cette nouvelle platefore à | |
25236 | @code{system->linux-architecture} dans @code{(gnu packages linux)}. | |
25237 | ||
25238 | Une fois qu'ils sont construits, le module @code{(gnu packages bootstrap)} | |
25239 | doit être mis à jour pour se référer à ces binaires sur la plateforme | |
25240 | cible. C'est à dire que les hashs et les URL des archives de bootstrap pour | |
25241 | la nouvelle plateforme doivent être ajoutés avec ceux des plateformes | |
25242 | actuellement supportées. L'archive de bootstrap de Guile est traitée | |
25243 | séparément : elle doit être disponible localement, et @file{gnu/local.mk} a | |
25244 | une règle pour la télécharger pour les architectures supportées ; vous devez | |
25245 | également ajouter une règle pour la nouvelle plateforme. | |
25246 | ||
25247 | En pratique, il peut y avoir des complications. Déjà, il se peut que le | |
25248 | triplet GNU étendu qui spécifie l'ABI (comme le suffixe @code{eabi} | |
25249 | ci-dessus) ne soit pas reconnu par tous les outils GNU. Typiquement, la | |
25250 | glibc en reconnais certains, alors que GCC utilise un drapeau de configure | |
25251 | @code{--with-abi} supplémentaire (voir @code{gcc.scm} pour trouver des | |
25252 | exemples où ce cas est géré). Ensuite, certains des paquets requis | |
25253 | pourraient échouer à se construire pour cette plateforme. Enfin, les | |
25254 | binaires générés pourraient être cassé pour une raison ou une autre. | |
bf5c74e7 JL |
25255 | |
25256 | @c ********************************************************************* | |
25257 | @include contributing.fr.texi | |
25258 | ||
25259 | @c ********************************************************************* | |
25260 | @node Remerciements | |
25261 | @chapter Remerciements | |
25262 | ||
3cacfa9e | 25263 | Guix se base sur le @uref{http://nixos.org/nix/, gestionnaire de paquets |
15f1bff4 | 25264 | Nix} conçu et implémenté par Eelco Dolstra, avec des contributions d'autres |
3cacfa9e LC |
25265 | personnes (voir le fichier @file{nix/AUTHORS} dans Guix). Nix a inventé la |
25266 | gestion de paquet fonctionnelle et promu des fonctionnalités sans précédents | |
25267 | comme les mises à jour de paquets transactionnelles et les retours en | |
25268 | arrière, les profils par utilisateurs et les processus de constructions | |
25269 | transparents pour les références. Sans ce travail, Guix n'existerait pas. | |
25270 | ||
25271 | Les distributions logicielles basées sur Nix, Nixpkgs et NixOS, ont aussi | |
25272 | été une inspiration pour Guix. | |
25273 | ||
25274 | GNU@tie{}Guix lui-même est un travail collectif avec des contributions d'un | |
25275 | grand nombre de personnes. Voyez le fichier @file{AUTHORS} dans Guix pour | |
25276 | plus d'information sur ces personnes de qualité. Le fichier @file{THANKS} | |
25277 | liste les personnes qui ont aidé en rapportant des bogues, en prenant soin | |
25278 | de l'infrastructure, en fournissant des images et des thèmes, en faisant des | |
25279 | suggestions et bien plus. Merci ! | |
bf5c74e7 JL |
25280 | |
25281 | ||
25282 | @c ********************************************************************* | |
25283 | @node La licence GNU Free Documentation | |
25284 | @appendix La licence GNU Free Documentation | |
25285 | @cindex license, GNU Free Documentation License | |
25286 | @include fdl-1.3.texi | |
25287 | ||
25288 | @c ********************************************************************* | |
25289 | @node Index des concepts | |
25290 | @unnumbered Index des concepts | |
25291 | @printindex cp | |
25292 | ||
25293 | @node Index de programmation | |
25294 | @unnumbered Index de programmation | |
25295 | @syncodeindex tp fn | |
25296 | @syncodeindex vr fn | |
25297 | @printindex fn | |
25298 | ||
25299 | @bye | |
25300 | ||
25301 | @c Local Variables: | |
25302 | @c ispell-local-dictionary: "american"; | |
25303 | @c End: |