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