]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/fr/usage/running.itely
Web: Removed Duplicate lines from Authors.itexi
[lilypond.git] / Documentation / fr / usage / running.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2 @ignore
3     Translation of GIT committish: 321993f3a277f69471fcacbb6afc12857faa4e8c
4
5     When revising a translation, copy the HEAD committish of the
6     version that you are working on.  For details, see the Contributors'
7     Guide, node Updating translation committishes..
8 @end ignore
9
10 @c \version "2.15.18"
11
12 @c Translators: Jean-Charles Malahieude
13 @c Translation checkers:
14
15 @node Exécution de lilypond
16 @chapter Exécution de @command{lilypond}
17 @translationof Running lilyPond
18
19 Ce chapitre passe en revue ce qui se passe lorsque vous lancez LilyPond.
20
21 @menu
22 * Utilisation habituelle::
23 * Utilisation en ligne de commande::
24 * Messages d'erreur::
25 * Quelques erreurs des plus courantes::
26 @end menu
27
28 @node Utilisation habituelle
29 @section Utilisation habituelle
30 @translationof Normal usage
31
32 La plupart des utilisateurs de LilyPond le font au travers d'une
33 interface graphique (@emph{GUI} pour @emph{graphical user interface}).
34 Si vous ne l'avez pas encore parcouru, lisez le @rlearning{Tutoriel}.
35 Si vous utilisez un éditeur alternatif pour rédiger vos fichiers
36 LilyPond, référez-vous à la documentation de celui-ci.
37
38
39 @node Utilisation en ligne de commande
40 @section Utilisation en ligne de commande
41 @translationof Command-line usage
42
43 Nous nous intéresserons ici aux spécificités de LilyPond employé en
44 ligne de commande.  La ligne de commande permet de faire appel à
45 certaines options particulières.  D'autre part, certains utilitaires
46 associés, tel que @code{midi2ly}, ne sont disponibles qu'en ligne de
47 commande.
48
49 Par @qq{ligne de commande}, nous entendons l'interface de commande du
50 système.  Les utilisateurs de Windows seront certainement plus familiers
51 des termes @qq{fenêtre DOS} ou @qq{invite de commande}.  Quant aux
52 utilisateurs de MacOS@tie{}X, ils connaissent assurément les termes
53 @qq{console} et @qq{terminal}.  Les paramétrages spécifiques au système
54 MacOS font l'objet d'un @rwebnamed{MacOS X,chapitre particulier}.
55
56 Notre propos n'est pas ici d'expliquer ce qu'est l'interface de
57 commande pour un système informatique ni comment elle fonctionne.
58 Aussi, si vous ne savez de quoi il retourne, nous vous renvoyons aux
59 nombreuses documentations que vous pourrez trouver sur ce sujet.
60
61
62 @menu
63 * Lancement de lilypond::
64 * Options en ligne de commande pour lilypond::
65 * Variables d'environnement::
66 * Exécution de LilyPond en mode protégé::
67 @end menu
68
69 @node Lancement de lilypond
70 @unnumberedsubsec Lancement de @command{lilypond}
71 @translationof Invoking lilypond
72
73 L'exécutable @command{lilypond} en ligne de commande se lance
74 ainsi@tie{}:
75
76 @example
77 lilypond [@var{option}]@dots{} @var{fichier}@dots{}
78 @end example
79
80 Lorsque le fichier est fourni sans extension, LilyPond présume qu'il
81 s'agit de @file{.ly}.  Pour interpréter directement l'entrée standard
82 (@emph{stdin}), fournissez un tiret (@code{-}) en lieu et place de
83 @var{fichier}.
84
85 Le traitement de @file{monfichier.ly} produira @file{monfichier.ps} et
86 @file{monfichier.pdf}.  Vous pouvez spécifier plusieurs fichiers à la
87 fois@tie{}; ils seront traités indépendamment les uns des
88 autres.@footnote{Le statut de GUILE n'étant pas réinitialisé après
89 traitement d'un fichier @file{.ly}, veillez à ne pas modifier les
90 réglages par défaut du système à partir d'assertions en Scheme.}
91
92 Lorsque @file{monfichier.ly} contient plus d'une section @code{\book},
93 les fichiers produits -- à partir du deuxième -- seront numérotés.  Par
94 ailleurs, la valeur affectée à @code{output-suffix} sera insérée entre la
95 racine et le numéro.  Par exemple, un fichier @var{racine} qui
96 contiendrait
97
98 @example
99 #(define output-suffix "violon")
100 \score @{ @dots{} @}
101 #(define output-suffix "cello")
102 \score @{ @dots{} @}
103 @end example
104
105 @noindent
106 fournira grâce à LilyPond @file{@var{racine}-violon.pdf} et
107 @file{@var{racine}-cello-1.pdf}.
108
109
110 @unnumberedsubsubsec Commandes standard de l'interpréteur
111 @translationof Standard shell commands
112
113 Si votre interpréteur -- terminal, console, etc. -- prend en charge les
114 redirections, les commandes qui suivent vous permettront de
115 judicieusement rediriger les affichages de la console dans un
116 fichier@tie{}:
117
118 @itemize
119
120 @item
121 @code{lilypond fichier.ly 1>stdout.log} pour le verbiage normal
122
123 @item
124 @code{lilypond fichier.ly 2>stderr.log} pour les messages d'erreur
125
126 @item
127 @code{lilypond fichier.ly &>tous.log} pour garder une trace de tout ce
128 qui s'est passé
129
130 @end itemize
131
132 Consultez avant tout la documentation de votre interpréteur habituel
133 pour vérifier qu'il prend en charge ces options dans cette syntaxe.
134 Notez bien qu'il s'agit ici de commandes internes à l'interpréteur et
135 qui n'ont rien à voir avec LilyPond.
136
137
138 @node Options en ligne de commande pour lilypond
139 @unnumberedsubsec Options en ligne de commande pour @command{lilypond}
140 @translationof Command line options for lilypond
141
142 @cindex lancement de @command{lilypond}
143 @cindex ligne de commande, options pour @command{lilypond}
144 @cindex options, ligne de commande
145 @cindex switches
146 @cindex commutateurs
147
148 Voici les différentes options disponibles à la ligne de commande@tie{}:
149
150 @table @code
151
152 @item -d,--define-default=@var{var}=@var{val}
153 Affecte la valeur Scheme @var{val} à l'option interne @var{var} du
154 programme.  En l'absence de @var{val}, le programme utilisera @var{#t}.
155 Préfixer @var{var} d'un @code{no-} vous permet de désactiver une option.
156 Ainsi,
157
158 @cindex point and click, ligne de commande
159 @cindex pointer-cliquer, ligne de commande
160
161 @example
162 -dno-point-and-click
163 @end example
164
165 @noindent
166 revient au même que
167 @example
168 -dpoint-and-click=#f
169 @end example
170
171 Voici les options disponibles@tie{}:
172
173 @cindex help, ligne de commande
174
175 @table @code
176
177 @item help
178 Lancer @code{lilypond -dhelp} affichera la liste de toutes les options
179 @code{-d} disponibles.
180
181
182 @cindex paper-size, ligne de commande
183 @item paper-size
184 Détermine la taille par défaut du papier, par exemple
185 @example
186 -dpaper-size=\"letter\"
187 @end example
188
189 @noindent
190 Veillez à ne pas oublier d'encadrer la valeur par des guillemets
191 échappés ( @code{\"} ).
192 @c Match " in previous line to help context-sensitive editors
193
194
195 @cindex safe, ligne de commande
196 @item safe
197 Ne pas avoir une confiance aveugle dans le code @file{.ly}.
198
199 Lorsque LilyPond est accessible au travers d'un serveur web, il est
200 @strong{impératif} d'utiliser les options @option{--safe} ou
201 @option{--jail}.  L'option @option{--safe} aura pour effet d'empêcher
202 tout code Scheme inclus de mettre en péril votre installation grâce à
203 quelque chose du style
204
205 @quotation
206 @verbatim
207 #(system "rm -rf /")
208 {
209   c4^$(ly:gulp-file "/etc/passwd")
210 }
211 @end verbatim
212 @end quotation
213
214 L'option @code{-dsafe} forcera l'évaluation, au fil de l'eau et par un
215 module sécurisé, des expressions Scheme contenues dans le fichier
216 source.  Ce module sécuritaire, dérivé du module GUILE @file{safe-r5rs},
217 ajoute un certain nombre de fonctions -- listées dans
218 @file{scm/safe-lily.scm} -- à l'API de LilyPond.
219
220 De plus, le mode @emph{safe} ne permet ni l'utilisation de directives
221 @code{\include} ni le recours aux obliques inversées (@emph{backslash})
222 dans les chaînes @TeX{}.
223
224 L'import de variables LilyPond dans du code Scheme n'est pas possible
225 en mode sécuritaire.
226
227 L'option @code{-dsafe} @strong{ne détecte pas} l'utilisation abusive des
228 ressources.  Il est donc possible que le programme finisse par rester
229 sans réponse si on lui envoie une boucle sans fin.  C'est la raison pour
230 laquelle nous recommandons, lorsque LilyPond tourne sur un serveur
231 accessible au public, d'en limiter aussi bien les ressources processeur
232 que mémoire.
233
234 Notez bien que l'utilisation du mode sécuritaire empêchera aussi la
235 compilation d'un certain nombre de fragments LilyPond.  L'option
236 @code{--jail} est dans ce cas une excellente alternative en terme de
237 sécurité, même si elle requiert plus de temps à mettre en place.
238
239
240 @cindex format de sortie, définition
241 @item backend
242 Détermine le format de sortie à utiliser par le moteur de traitement.
243 Les types de @code{format} reconnus sont
244
245 @table @code
246 @item ps
247
248 @cindex PostScript output
249 pour du PostScript.
250
251 Les fichiers PostScript incluent les polices TTF, Type1 et OTF, et
252 aucune substitution ne sera opérée pour ces fontes.  Si vous utilisez
253 des caractères orientaux, le fichier aura vite fait d'atteindre une
254 taille conséquente.
255
256
257 @item eps
258 @cindex Postscript encapsulé
259 @cindex EPS (Encapsulated PostScript)
260 pour du PostScript encapsulé.
261
262 Chaque page (système) fera l'objet d'un fichier @file{EPS} particulier,
263 sans fontes, auquel sera associé un fichier @file{EPS} qui, lui,
264 contiendra toutes les pages (systèmes) et les fontes.
265
266 Notez qu'il s'agit du mode que @command{lilypond-book} utilise par défaut.
267
268 @item svg
269 @cindex SVG (Scalable Vector Graphics)
270 pour du SVG (@emph{Scalable Vector Graphics}).
271
272 Cette option permet de créer un fichier SVG par page, sans incorporation
273 des fontes.  Nous vous recommandons d'installer les fontes Century
274 Schoolbook comprises dans le paquetage LilyPond afin d'obtenir le
275 meilleur rendu possible.  Sous UNIX, il suffit de les recopier, à partir
276 du répertoire @file{/usr/share/lilypond/VERSION/fonts/otf/}, dans
277 @file{~/.fonts/}.  Les fichiers SVG alors générés devraient être
278 lisibles par votre éditeur SVG habituel.
279
280 @item scm
281 @cindex Scheme dump
282 pour une recopie brute des commandes Scheme internes de formatage.
283
284 @item null
285 permet de ne pas générer de partition imprimable.  Cette option est
286 équivalente à @code{-dno-print-pages}.
287
288 @end table
289
290 Exemple : @code{lilypond -dbackend=svg @var{monfichier}.ly}
291
292
293 @item preview
294 @cindex preview, ligne de commande
295
296 Cette option, disponible dans tous les formats de sortie imprimables --
297 @code{pdf}, @code{png}, @code{ps}, @code{eps} et @code{svg} -- génère
298 un fichier de la forme @code{monFichier.preview.extension} comprenant le
299 titrage et le premier système.  S'il existe plusieurs sections
300 @code{\book}, @code{\bookpart}, ce fichier contiendra les titrage et
301 premier système de chacun des @code{\book}, @code{\bookpart} et
302 @code{\score}, dès lors que la variable @code{print-all-headers} du bloc
303 @code{\paper} est activée.
304
305 Pour l'éviter, utilisez conjointement l'une des options
306 @option{-dprint-pages} ou @option{-dno-print-pages} selon vos besoins.
307
308 @item gui
309 Travaille silencieusement, et redirige tout le verbiage dans un fichier
310 journal.
311
312 Note à l'attention des utilisateurs de Windows@tie{}: toutes les
313 informations concernant le traitement apparaissent au fur et à mesure
314 dans l'interpréteur de commandes lorsque vous lancez le programme
315 @code{lilypond.exe}, à l'inverse de @w{@code{lilypond-windows.exe}} qui
316 vous renvoie simplement la main.  L'option @option{-dgui} vous permettra
317 alors de rediriger ces informations dans un fichier journal.
318
319 @item print-pages
320 Génère l'intégralité des pages de la partition.  L'option
321 @option{-dno-print-pages} est particulièrement utile lorsqu'utilisée
322 conjointement avec l'option @option{-dpreview}.
323
324 @end table
325
326
327 @cindex Scheme, évaluation d'expression
328 @cindex expression Scheme, évaluation
329 @item -e,--evaluate=@var{expr}
330 Évalue l'expression Scheme @var{expr} avant d'analyser tout fichier
331 @file{.ly}.  Lorsque vous spécifiez l'option @option{-e} à plusieurs
332 reprises, l'évaluation sera faite en séquence.
333
334 Dans la mesure où l'expression est évaluée par le module
335 @code{guile-user}, vous devrez, dès lors que @var{expr} utilise des
336 définitions, spécifier
337
338 @example
339 lilypond -e '(define-public a 42)'
340 @end example
341
342 @noindent
343 en ligne de commande, et ajouter la ligne
344
345 @example
346 #(use-modules (guile-user))
347 @end example
348
349 @noindent
350 en tête de votre fichier @file{.ly}.
351
352 @warning{Les utilisateurs de Windows doivent utiliser des quillements
353 doubles @code{"} en lieu et place des guillemets simples @code{'}.}
354 @c Match " in previous line to help context-sensitive editors
355
356
357 @cindex sortie, format
358 @cindex format de sortie
359 @item -f,--format=@var{format}
360 Détermine le format à produire.  Il peut s'agir de @code{ps}, @code{pdf}
361 ou @code{png}.
362
363 Exemple : @code{lilypond -fpng @var{monfichier}.ly}
364
365
366 @item -h,--help
367 Affiche un résumé des commandes.
368
369
370 @item -H,--header=@var{CHAMP}
371 Recopie le champ d'entête dans le fichier @file{RACINE.@var{CHAMP}}.
372
373
374 @item -i,--init=@var{fichier}
375 Définit @var{fichier} (par défaut @file{init.ly}) en tant que fichier
376 d'initialisation.
377
378
379 @cindex recherche de fichier
380 @cindex chemin de recherche
381 @item -I,--include=@var{répertoire}
382
383 Ajoute @var{répertoire} au chemin de recherche pour les inclusions.
384
385 Vous pouvez mentionner plusieurs fois l'option @option{-I}, auquel cas
386 la recherche commencera dans le premier répertoire inclus et, si le
387 fichier en question ne s'y trouve pas, les répertoires suivants seront
388 examinés l'un après l'autre.
389
390
391 @cindex chroot jail, fonctionnement
392 @item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
393 Lance @command{lilypond} dans un environnement protégé.
394
395 L'option @option{--jail} est une alternative qui offre plus de
396 flexibilité que l'option @option{--safe} lorsque LilyPond est installé
397 sur un serveur web ou traite des fichiers externes.
398
399 L'option @option{--jail} va détourner la racine de @command{lilypond}
400 sur @var{jail} juste avant d'effectuer la compilation à proprement
401 parler.  L'utilisateur et le groupe sont modifiés en conséquence, et le
402 répertoire en cours devient @var{dir}.  Ces réglages assurent -- du
403 moins en théorie -- l'impossibilité de s'échapper de la cellule.  Notez
404 cependant que, pour que l'option @option{--jail} soit fonctionnelle,
405 @command{lilypond} doit être lancé en tant qu'administrateur -- ce qui
406 se réalise aisément à l'aide de la commande @command{sudo}.
407
408 La création d'un environnement sécurisé requiert quelques précautions
409 dans la mesure où LilyPond doit disposer de tout ce dont il a besoin
410 pour compiler le fichier source @strong{à l'intérieur de la cellule}.
411 L'ermitage, avant d'être viable, requiert donc les étapes
412 suivantes@tie{}:
413
414 @table @asis
415
416 @item Création d'un système de fichiers indépendant
417 L'intérêt d'un système de fichiers dédié à LilyPond réside dans le fait
418 qu'on peut le brider à l'aide des options @code{noexec},@code{nodev} et
419 @code{nosuid}.  Il sera de fait impossible de lancer des exécutables ou
420 d'écrire sur un périphérique à partir de LilyPond.  Si vous n'avez pas
421 l'intention de créer un tel système sur une partition séparée, vous
422 pouvez avoir recours à un pseudo-périphérique (@emph{loop device}) monté
423 à partir d'un simple fichier de taille raisonnable.  D'autre part, le
424 recours à un système de fichiers indépendant permet de limiter l'espace
425 dévolu à LilyPond.
426
427 @item Création d'un utilisateur spécifique
428 L'utilisation de LilyPond au sein de la cellule devrait être réservé à
429 un utilisateur aux droits restreints.  Il faudra donc créer un
430 utilisateur et un groupe spécifiques -- disons
431 @w{@code{lily}/@code{lily}} -- qui n'aura accès en écriture qu'à un
432 unique répertoire déterminé par la valeur de @var{dir}.
433
434 @item Agencement des lieux
435 LilyPond a besoin d'un certain nombre de fichiers pour pouvoir tourner
436 correctement.  Ces fichiers devront donc tous se retrouver dans
437 l'environnement protégé, distribués selon la même arborescence que dans
438 le système d'origine.  Ainsi l'intégralité de l'installation de LilyPond
439 (en principe @file{/usr/share/lilypond}) doit y être dupliquée.
440
441 En cas de problème, lancer LilyPond en utilisant @command{strace}
442 devrait vous permettre de déterminer quels fichiers manquent à l'appel.
443
444 @item Lancement de LilyPond
445 Dans un environnement protégé monté avec l'option @code{noexec}, il
446 est impossible de lancer un quelconque programme extérieur.  LilyPond ne
447 saurait donc avoir recours à un moteur de traitement qui le mettrait
448 dans cette situation.  Comme nous l'avons vu plus haut, LilyPond sera
449 lancé avec les privilèges de l'administrateur -- privilèges qu'il perdra
450 aussitôt --, ce qui peut nécessiter le recours à la commande
451 @code{sudo}.  Il est par ailleurs judicieux de limiter le temps
452 processeur aloué à LilyPond -- grâce à @command{ulimit@tie{}-t} par
453 exemple -- ainsi que, si votre système le permet, la taille de la
454 mémoire.
455 @end table
456
457
458 @cindex loglevel
459 @cindex verbosité, définir le degré de
460 @item -l,--loglevel=@var{DEGRÉ}
461 Règle le niveau de verbosité des messages console à @var{DEGRÉ}.  Les
462 différentes valeurs sont@tie{}:
463
464 @table @code
465 @item NONE
466 Aucun verbiage, même pas les messages d'erreur.
467
468 @item ERROR
469 Uniquement les messages d'erreur@tie{}; pas de message d'avertissement
470 ni de progression.
471
472 @item WARN
473 Messages d'avertissement ou d'erreur@tie{}; pas d'information de
474 progression.
475
476 @item BASIC_PROGRESS
477 Information de progression basique (réussite) et avertissements ou erreurs.
478
479 @item PROGRESS
480 Toutes les informations de progression, avertissements et erreurs.
481
482 @item INFO (par défaut)
483 Informations de progression, avertissements et erreurs, ainsi que
484 d'autres informations quant à l'exécution.
485
486 @item DEBUG
487 Tout ce qui peut être affiché, y compris le verbiage utile au débogage.
488
489 @end table
490
491
492 @cindex répertoire de destination
493 @cindex fichier de destination
494 @item -o,--output=@var{FICHIER} ou @var{RÉPERTOIRE}
495 Détermine le nom par défaut du fichier résultant à @var{FICHIER}@tie{};
496 lorsque l'argument @var{RÉPERTOIRE} correspond à un répertoire déjà
497 existant, c'est là que les fichiers résultants seront déposés.  Le
498 suffixe adéquat sera ajouté (p.ex. @file{.pdf} pour du pdf) dans tous
499 les cas.
500
501
502 @cindex PostScript, output
503 @cindex PS (PostScript), output
504 @item --ps
505 Génère du PostScript.
506
507
508 @item --png
509 @cindex Portable Network Graphics (PNG), output
510 @cindex PNG (Portable Network Graphics), output
511 Génère une image par page, au format PNG@tie{}; ceci sous-entend
512 l'utilisation de @option{--ps}.  La résolution de l'image, en DPI, peut
513 se régler en ajoutant par exemple
514 @example
515 -dresolution=110
516 @end example
517
518
519 @item --pdf
520 @cindex Portable Document Format (PDF), output
521 @cindex PDF (Portable Document Format), output
522 Génère du PDF.  Ceci sous-entend l'utilisation de @option{--ps}.
523
524
525 @item -v,--version
526 Affiche le numéro de version.
527
528
529 @item -V,--verbose
530 Active le mode verbeux@tie{}: affichage de l'intégralité du chemin
531 d'accès de chaque fichier, et information des temps de traitement.
532
533
534 @item -w,--warranty
535 Affiche les informations de garantie appliquables à GNU LilyPond -- il
536 est livré @strong{SANS GARANTIE}@tie{}!
537 @end table
538
539
540 @node Variables d'environnement
541 @unnumberedsubsec Variables d'environnement
542 @translationof Environment variables
543
544 @cindex LANG
545 @cindex LILYPOND_DATADIR
546
547 @command{lilypond} reconnaît les variables d'environnement
548 suivantes@tie{}:
549
550 @table @code
551 @item LILYPOND_DATADIR
552 Cette variable spécifie le répertoire où seront recherchés par défaut
553 les différentes versions des messages ainsi qu'un certain nombre de
554 fichiers nécessaires au traitement.  Il devrait contenir les
555 sous-répertoires @file{ly/}, @file{ps/}, @file{tex/}, etc.
556
557 @item LANG
558 Cette variable détermine la langue dans laquelle seront émis les
559 messages.
560
561 @item LILYPOND_LOGLEVEL
562 Cette variable détermine le niveau par défaut de verbosité.  En
563 l'absence de niveau explicite -- autrement dit la ligne de commande ne
564 comporte pas de @option{--loglevel} -- c'est cette valeur qui sera
565 utilisée.
566
567 @item LILYPOND_GC_YIELD
568 Cette variable permet d'ajuster l'empreinte mémoire et le rendement de
569 la machine.  Il s'agit en fait d'un pourcentage d'allocation de
570 mémoire@tie{}: lorsqu'il est élevé, le programme favorisera
571 l'utilisation de la mémoire@tie{}; une faible valeur consommera plus de
572 temps processeur.  Par défaut, cette valeur est fixée à@tie{}@code{70}.
573
574 @end table
575
576
577 @node Exécution de LilyPond en mode protégé
578 @unnumberedsubsec Exécution de LilyPond en mode protégé
579 @translationof LilyPond in chroot jail
580
581 Paramétrer un serveur afin qu'il puisse faire fonctionner LilyPond en
582 mode protégé sur un pseudo-périphérique est une tâche sensible.  Les
583 différentes étapes à suivre sont répertoriées ci-dessous.  Les exemples
584 qu'elle comportent proviennent d'une distribution Linux Ubuntu et
585 nécessiteront l'utilisation de @code{sudo} autant que de besoin.
586
587 @itemize
588
589 @item Installation des paquetages nécessaires@tie{}: LilyPond, GhostScript et
590 ImageMagick.
591
592 @item Création de l'utilisateur @code{lily} :
593
594 @example
595 adduser lily
596 @end example
597
598 @noindent
599 Ceci, par la même occasion, créera un groupe spécifique pour
600 l'utilisateur @code{lily} ainsi que son répertoire personnel
601 @code{/home/lily}.
602
603 @item Création, dans le répertoire personnel de l'utilisateur
604 @code{lily}, d'un espace agissant en tant que système de fichiers@tie{}:
605
606 @example
607 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
608 @end example
609
610 @noindent
611 Cette commande a créé un fichier de 200@tie{}MB utilisable par le
612 @qq{système protégé}.
613
614 @item Création d'un pseudo-périphérique, génération d'un système de
615 fichiers et chargement de celui-ci, puis création d'un répertoire
616 accessible en écriture pour l'utilisateur @code{lily}@tie{}:
617
618 @example
619 mkdir /mnt/lilyloop
620 losetup /dev/loop0 /home/lily/loopfile
621 mkfs -t ext3 /dev/loop0 200000
622 mount -t ext3 /dev/loop0 /mnt/lilyloop
623 mkdir /mnt/lilyloop/lilyhome
624 chown lily /mnt/lilyloop/lilyhome
625 @end example
626
627 @item Affectation, au niveau configuration du serveur, de
628 @code{/mnt/lilyloop} en tant que JAIL et @code{/lilyhome} en tant que
629 DIR.
630
631 @item Création d'une arborescence, dans l'espace protégé, et recopie de
632 tous les fichiers nécessaires -- voir le script plus loin.
633
634 Le recours à l'utilitaire @code{sed} permet de créer les commandes de
635 copie de tout ce qui est nécessaire à un exécutable@tie{}:
636
637 @example
638 for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/;  \
639   do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\&  \
640     cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p  \
641       \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
642 @end example
643
644 @end itemize
645
646 @subheading Exemple de script fonctionnel en 32-bit sur Ubuntu 8.04
647
648 @example
649 #!/bin/sh
650 ## les réglages par défaut
651
652 username=lily
653 home=/home
654 loopdevice=/dev/loop0
655 jaildir=/mnt/lilyloop
656 # le préfixe (sans slash au début !)
657 lilyprefix=usr/local
658 # le répertoire du système où lilypond est installé
659 lilydir=/$lilyprefix/lilypond/
660
661 userhome=$home/$username
662 loopfile=$userhome/loopfile
663 adduser $username
664 dd if=/dev/zero of=$loopfile bs=1k count=200000
665 mkdir $jaildir
666 losetup $loopdevice $loopfile
667 mkfs -t ext3 $loopdevice 200000
668 mount -t ext3 $loopdevice $jaildir
669 mkdir $jaildir/lilyhome
670 chown $username $jaildir/lilyhome
671 cd $jaildir
672
673 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
674 chmod a+w tmp
675
676 cp -r -L $lilydir $lilyprefix
677 cp -L /bin/sh /bin/rm bin
678 cp -L /usr/bin/convert /usr/bin/gs usr/bin
679 cp -L /usr/share/fonts/truetype usr/share/fonts
680
681 # la formule magique de recopie des biblothèques
682 for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh"  \
683   "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=>  \
684     \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed  \
685       's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/'  \
686         | sed '/.*=>.*/d'; done | sh -s
687
688 # les fichiers partagés pour ghostscript...
689       cp -L -r /usr/share/ghostscript usr/share
690 # les fichiers partagés pour ImageMagick
691       cp -L -r /usr/lib/ImageMagick* usr/lib
692
693 ### Partant du principe que test.ly est dans /mnt/lilyloop/lilyhome,
694 ### on devrait pouvoir lancer :
695 ### Attention : /$lilyprefix/bin/lilypond est un script qui
696 ### définit LD_LIBRARY_PATH - c'est primordial
697       /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
698 @end example
699
700
701 @node Messages d'erreur
702 @section Messages d'erreur
703 @translationof Error messages
704
705 @cindex erreur, messages
706
707 Différents messages d'erreur sont susceptibles d'apparaître au cours de
708 la compilation d'un fichier@tie{}:
709
710 @table @emph
711
712 @item Warning -- Avertissement
713 @cindex warning
714 @cindex avertissement
715 Ce type de message est émis lorsque LilyPond détecte quelque chose de
716 suspect.  Si vous avez demandé quelque chose qui sort de l'ordinaire,
717 vous saurez probablement ce à quoi il est fait référence et ignorerez de
718 tels messages sans remord.  Néanmoins, les messages d'avertissement
719 indiquent la plupart du temps une incohérence dans le fichier source.
720
721 @item Error -- Erreur
722 @cindex error
723 LilyPond a détecté une erreur.  L'étape en cours, qu'il s'agisse de
724 l'analyse, de l'interprétation des données ou bien du formatage, sera
725 menée à son terme, puis LilyPond s'arrêtera.
726
727 @item Fatal error -- Erreur fatale
728 @cindex fatal error
729 LilyPond est confronté à une anomalie bloquante.  Ceci ne se produit que
730 très rarement, et la plupart du temps en raison d'une installation
731 défectueuse des fontes.
732
733 @item Scheme error -- Erreur Scheme
734 @cindex trace, Scheme
735 @cindex call trace
736 @cindex Scheme error
737 Les erreurs qui interviennent lors de l'exécution de code Scheme sont
738 gérées par l'interpréteur Scheme.  L'utilisation du mode verbeux
739 (options @option{-V} ou @option{--verbose}) vous permettra de localiser
740 l'appel de fonction délictueux.
741
742 @item Programming error -- Erreur de programmation
743 @cindex Programming error
744 @cindex Erreur de programmation
745 LilyPond est confronté à une incohérence interne.  Ce type de message
746 est destiné à venir en aide aux développeurs et débogueurs.  En règle
747 générale, vous pouvez tout simplement les ignorer.  Parfois, il y en a
748 tant qu'ils masquent ce qui pourrait vous intéresser@dots{}
749
750 @item Aborted (core dumped) -- Abandon
751 @cindex Aborted (core dumped)
752 Ce type de message indique que LilyPond a planté en raison d'une grave
753 erreur de programmation.  La survenance d'un tel message est considérée
754 comme de la plus haute importance.  Si vous y étiez confronté,
755 transmettez un rapport de bogue.
756 @end table
757
758 @cindex errors, message format
759 Lorsque l'avertissement ou l'erreur est directement lié au fichier
760 source, le message est libellé sous la forme
761
762 @example
763 @var{fichier}:@var{ligne}:@var{colonne}: @var{message}
764 @var{contenu de la ligne litigieuse}
765 @end example
766
767 Un saut de ligne est placé dans la ligne de code, indiquant l'endroit
768 précis du problème, comme ici@tie{}:
769
770 @example
771 test.ly:2:19: erreur: n'est pas une durée: 5
772   @{ c'4 e'
773            5 g' @}
774 @end example
775
776 Notez que ces coordonnées constituent l'approximation au mieux par
777 LilyPond dans le code ayant déclenché l'avertissement ou l'erreur.  En
778 règle générale, erreurs et avertissements surviennent lorsque LilyPond
779 rencontre quelque chose d'inattendu.  Lorsque la ligne indiquée ne vous
780 semble pas comporter d'élément litigieux, remontez de quelques lignes
781 dans votre code.
782
783 Vous trouverez d'autres informations sur les erreurs au chapitre
784 @ref{Quelques erreurs des plus courantes}.
785
786
787 @node Quelques erreurs des plus courantes
788 @section Quelques erreurs des plus courantes
789 @translationof Common errors
790
791 Les conditions amenant aux erreurs qui suivent sont fréquentes, bien
792 qu'elles ne soient pas évidentes ni facilement localisables.  Nous
793 espérons que ces explications vous aideront à les résoudre plus
794 facilement.
795
796 @menu
797 * La musique déborde de la page::
798 * Apparition d'une portée supplémentaire::
799 * Erreur renvoyant à ../ly/init.ly::
800 * Message d'erreur Unbound variable %::
801 * Message d'erreur FT_Get_Glyph_Name::
802 * staff-affinities devraient aller en ordre décroissant::
803 @end menu
804
805
806 @node La musique déborde de la page
807 @unnumberedsubsec La musique déborde de la page
808 @translationof Music runs off the page
809
810 Lorsque la musique s'épanche au delà de la marge droite ou bien semble
811 anormalement comprimée, la raison en est le plus souvent une note à la
812 durée erronée@tie{}; cela finit par provoquer le débordement de la
813 dernière note d'une mesure.  Rien ne s'oppose à ce que la dernière note
814 d'une mesure ne s'arrête avant la barre de mesure@tie{}; on considère
815 simplement qu'elle se prolonge sur la mesure suivante.  Des débordements
816 à répétition finissent par générer une musique comprimée ou qui sort de
817 la page, pour la simple et bonne raison que les sauts de ligne
818 automatiques ne peuvent intervenir qu'à la fin d'une mesure complète,
819 autrement dit lorsque toutes les notes sont terminées avant la fin de la
820 mesure.
821
822 @warning{Une durée erronée peut empêcher les sauts de ligne, ce qui
823 conduit à une musique compressée, voire à un débordement de la page.}
824
825 Une erreur de durée sera bien plus facilement localisable si vous
826 positionnez régulièrement des contrôles de barre de mesure -- voir
827 @ruser{Vérification des limites et numéros de mesure}.
828
829 Si vous tenez absolument à enchainer de tels débordements, vous devrez
830 insérer des barres de mesure invisibles là où vous souhaitez positionner
831 un saut de ligne.  Consultez le chapitre @ruser{Barres de mesure} pour
832 plus de détails.
833
834
835 @node Apparition d'une portée supplémentaire
836 @unnumberedsubsec Apparition d'une portée supplémentaire
837 @translationof An extra staff appears
838
839 Lorsque les contextes ne sont pas créés explicitement par la commande
840 @code{\new}, ils le seront si la commande à exécuter n'est pas censée
841 s'appliquer au contexte en cours.  Pour des partitions simples, le fait
842 que les contextes soient automatiquement créés rend bien des services,
843 et c'est d'ailleurs le cas pour la majorité des exemples contenus dans
844 les manuels de LilyPond.  Cependant, la création implicite d'un contexte
845 peut aboutir à l'apparition d'une portée @qq{parasite}.  On s'attend par
846 exemple, en lisant le code qui suit, à ce que toutes les têtes de note
847 soient en rouge, alors que le résultat nous présente deux portées et que
848 les notes, placées sur la portée inférieure, restent en noir.
849
850 @lilypond[quote,verbatim,relative=2]
851 \override Staff.NoteHead #'color = #red
852 \new Staff { a }
853 @end lilypond
854
855 Étant donné qu'aucun contexte @code{Staff} n'existe lorsque la
856 dérogation est introduite, LilyPond le crée implicitement pour lui
857 appliquer la directive considérée.  Survient alors la commande
858 @w{@code{\new Staff}} qui, à son tour, crée une nouvelle portée pour
859 contenir les notes qui suivent.  Voici la syntaxe correcte pour obtenir
860 ces notes en rouge@tie{}:
861
862 @lilypond[quote,verbatim,relative=2]
863 \new Staff {
864   \override Staff.NoteHead #'color = #red
865   a
866 }
867 @end lilypond
868
869 Autre exemple : la présence d'une commande @code{\relative} à
870 l'intérieur d'une section @code{\repeat} génèrera obligatoirement une
871 portée intempestive.  Cela tient au fait que la commande @code{\repeat}
872 va créer deux blocs @code{\relative} qui, chacun à leur tour, créeront
873 implicitement un bloc @code{Staff} assorti d'un bloc @code{Voice}.
874
875 @lilypond[quote,verbatim]
876 \repeat unfold 2 {
877   \relative c' { c4 d e f }
878 }
879 @end lilypond
880
881 La manière adéquate de procéder consiste à inverser les commandes
882 @code{\repeat} et @code{\relative}, comme ceci@tie{}:
883
884 @lilypond[quote,verbatim]
885 \new Voice {
886   \repeat unfold 2 {
887     \relative c' { c4 d e f }
888   }
889 }
890 @end lilypond
891
892
893 @node Erreur renvoyant à ../ly/init.ly
894 @unnumberedsubsec Erreur renvoyant à @code{../ly/init.ly}
895 @translationof Apparent error in ../ly/init.ly
896
897 Certains messages d'erreur relatifs à une erreur de syntaxe dans le
898 fichier @file{../ly/init.ly} peuvent survenir lorsque le fichier est mal
899 formaté.  Cela se produit notamment lors d'un défaut de parité de
900 bornages ou de guillemets.
901
902 L'erreur la plus courante est la simple omission d'une accolade
903 fermante (@code{@}}) à la fin du bloc @code{Score}.  La solution est
904 évidente en pareil cas@tie{}: il suffit de vérifier que le bloc
905 @code{Score} est bien clôturé.  La structure des fichiers LilyPond est
906 abordée plus en détails au chapitre
907 @rlearning{Organisation des fichiers LilyPond}. C'est la raison pour
908 laquelle nous vous invitons à utiliser un éditeur de texte qui prenne en
909 charge le contrôle de parité des parenthèses, crochets et accolades afin
910 de vous éviter de telles erreurs.
911
912 Autre erreur courante, l'absence d'espace entre la dernière syllabe et
913 l'accolade (@code{@}}) clôturant un bloc de paroles.  Lorsqu'il n'y a
914 pas séparation, l'accolade est considérée comme faisant partie
915 intégrante de la syllabe.  C'est la raison pour laquelle nous vous
916 invitons à insérer une espace avant et après @strong{chaque} accolade.
917 D'autres informations à ce sujets sont mentionnées au chapitre
918 @ruser{Saisie des paroles}.
919
920 Lorsqu'il s'agit d'un guillemet fermant (@code{"}) omis, le message
921 d'erreur devrait vous indiquer un numéro de ligne avoisinant.  L'erreur
922 se situe la plupart du temps une ou deux lignes au-dessus de celle
923 indiquée.
924 @c Match quote character "
925
926 @node Message d'erreur Unbound variable %
927 @unnumberedsubsec Message d'erreur Unbound variable %
928 @translationof Error message Unbound variable %
929
930 Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de
931 fichier journal, est associé à un message du type @qq{GUILE a signalé
932 une erreur@dots{}}. Il survient à chaque fois qu'un commentaire
933 @emph{LilyPond} est indûment placé dans une routine @emph{Scheme}.
934
935 Un commentaire LilyPond est introduit par le signe pourcent (@code{%})
936 et ne doit en aucun cas se trouver dans une routine Scheme.  En Scheme,
937 les commentaires s'introduisent par un point-virgule (@code{;}).
938
939
940 @node Message d'erreur FT_Get_Glyph_Name
941 @unnumberedsubsec Message d'erreur FT_Get_Glyph_Name
942 @translationof Error message FT_Get_Glyph_Name
943
944 Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de
945 fichier journal, survient lorsqu'un fichier source contient des
946 caractères non ASCII et qu'il n'a pas été enregistré avec un encodage
947 UTF-8.  Pour plus de détails, reportez-vous au chapitre
948 @ruser{Caractères spéciaux}.
949
950
951 @node staff-affinities devraient aller en ordre décroissant
952 @unnumberedsubsec staff-affinities devraient aller en ordre décroissant
953 @translationof Warning staff affinities should only decrease
954
955 Cet avertissement est émis lorsque la partition ne comporte pas de
956 portée, comme par exemple une feuille de chant avec un contexte
957 @code{ChordName} et un contexte @code{Lyrics}.  Ce message disparaîtra
958 dès lors que autoriserez l'un de ces contextes à se comporter comme une
959 portée, à l'aide de l'instruction
960
961 @example
962 \override VerticalAxisGroup #'staff-affinity = ##f
963 @end example
964
965 @noindent
966 que vous insérerez dès sa création.  Pour plus d'information,
967 reportez-vous à la rubrique
968 @ruser{Espacement des lignes rattachées à des portées}.