[ << Exécution de lilypond ] | [Racine][Table des matières][Index][ ? ] | [ Mise à jour avec convert-ly >> ] | ||
[ < Utilisation habituelle ] | [ Plus haut: Exécution de lilypond ] | [ Lancement de LilyPond > ] |
1.2 Utilisation en ligne de commande
Nous nous intéresserons ici aux spécificités de LilyPond employé en
ligne de commande. La ligne de commande permet de faire appel à
certaines options particulières. D’autre part, certains utilitaires
associés, tel que midi2ly
, ne sont disponibles qu’en ligne de
commande.
Par « ligne de commande », nous entendons l’interface de commande du système. Les utilisateurs de Windows seront certainement plus familiers des termes « fenêtre DOS » ou « invite de commande ». Quant aux utilisateurs de MacOS X, ils connaissent assurément les termes « console » et « terminal ». Les paramétrages spécifiques au système MacOS font l’objet d’un chapitre particulier.
Notre propos n’est pas ici d’expliquer ce qu’est l’interface de commande pour un système informatique ni comment elle fonctionne. Aussi, si vous ne savez de quoi il retourne, nous vous renvoyons aux nombreuses documentations que vous pourrez trouver sur ce sujet.
Lancement de LilyPond | ||
Options basiques de lilypond | ||
Options avancées de lilypond | ||
Variables d’environnement | ||
Exécution de LilyPond en mode protégé |
[ << Exécution de lilypond ] | [Racine][Table des matières][Index][ ? ] | [ Mise à jour avec convert-ly >> ] | ||
[ < Utilisation en ligne de commande ] | [ Plus haut: Utilisation en ligne de commande ] | [ > ] |
Lancement de LilyPond
L’exécutable lilypond
en ligne de commande se lance ainsi :
lilypond [option]… fichier…
Lorsque le fichier est fourni sans extension, LilyPond présume qu’il
s’agit de ‘.ly’. Pour interpréter directement l’entrée standard
(stdin), fournissez un tiret (-
) en lieu et place de
fichier.
Le traitement de ‘monfichier.ly’ produira ‘monfichier.pdf’ par défaut. Vous pouvez spécifier plusieurs fichiers à la fois ; ils seront traités indépendamment les uns des autres.1
Lorsque ‘monfichier.ly’ contient plus d’une section \book
,
les fichiers produits – à partir du deuxième – seront numérotés. Par
ailleurs, la valeur affectée à output-suffix
sera insérée entre la
racine et le numéro. Par exemple, un fichier racine qui
contiendrait
#(define output-suffix "violon") \score { … } #(define output-suffix "cello") \score { … }
fournira grâce à LilyPond ‘racine-violon.pdf’ et ‘racine-cello-1.pdf’.
[ << Exécution de lilypond ] | [Racine][Table des matières][Index][ ? ] | [ Mise à jour avec convert-ly >> ] | ||
[ < Lancement de LilyPond ] | [ Plus haut: Lancement de LilyPond ] | [ Options basiques de lilypond > ] |
Utilisation de LilyPond avec les fonctionnalités standard de l’interpréteur
Dans la mesure où LilyPond est une application qui fonctionne en ligne de commande, les fonctionnalités de l’interpréteur utilisé pour lancer LilyPond peuvent se révéler utiles.
Par exemple,
lilypond *.ly
traite tous les fichiers LilyPond présents dans le répertoire en cours.
Rediriger, par exemple dans un fichier, ce qui est émis à l’écran peut s’avérer utile.
lilypond fichier.ly 1> stdout.log lilypond fichier.ly 2> stderr.log lilypond fichier.ly &> tous.log
Les commandes ci-dessus redirigeront respectivement le « verbiage normal », les erreurs ou tout, dans un fichier texte.
Consultez avant tout la documentation de votre interpréteur habituel – terminal, console, etc. – pour vérifier qu’il prend en charge les options dans cette syntaxe.
Voici comment traiter un jeu de fichiers répartis dans un répertoire donné ainsi que tous ses différents sous-répertoires. Les fichiers résultants sont regroupés dans le répertoire à partir duquel la commande a été exécutée, non selon l’emplacement des fichiers sources.
find . -name '*.ly' -exec lilypond '{}' \;
Cette commande, bien qu’effective uniquement dans un terminal, devrait être fonctionnelle aussi pour les utilisateurs de MacOS X.
Les utilisateurs de windows utiliseront l’instruction
forfiles /s /M *.ly /c "cmd /c lilypond @file"
dans l’interpréteur de commandes
, qui se trouve normalement sous
Démarrer > Accessoires > Interpréteur de commandes
ou, pour la
version 8, en faisant une recherche sur « interpréteur de commande ».
Par ailleurs, il est possible de spécifier de manière explicite le chemin
d’accès au dossier comportant des sous-répertoires où se trouvent les
fichiers sources, à l’aide de l’option /p
:
forfiles /s /p C:\Documents\MesPartitions /M *.ly /c "cmd /c lilypond @file"
Dans le cas où ce chemin d’accès comporte des espaces, l’intégralité de ce chemin devra être borné par des guillemets informatiques :
forfiles /s /p "C:\Documents\Mes Partitions" /M *.ly /c "cmd /c lilypond @file"
[ << Exécution de lilypond ] | [Racine][Table des matières][Index][ ? ] | [ Mise à jour avec convert-ly >> ] | ||
[ < ] | [ Plus haut: Utilisation en ligne de commande ] | [ Options avancées de lilypond > ] |
Options basiques de lilypond
Différentes options sont disponibles en ligne de commande :
-
-d
,--define-default=
var[=
val] Voir Options avancées de
lilypond
.-
-e
,--evaluate=
expr Évalue l’expression Scheme expr avant d’analyser tout fichier ‘.ly’. Lorsque vous spécifiez l’option ‘-e’ à plusieurs reprises, l’évaluation est faite en séquence.
Dans la mesure où l’expression est évaluée par le module
guile-user
, vous devez, dès lors que expr utilise des définitions telles que(define-public a 42)
, spécifierlilypond -e '(define-public a 42)'
en ligne de commande, et ajouter la ligne
#(use-modules (guile-user))
en tête de votre fichier ‘.ly’.
Note : Les utilisateurs de Windows doivent utiliser des guillemets doubles
"
en lieu et place des guillemets simples'
.-
-E
,--eps
Génère des fichiers EPS.
Cette option revient à fournir à la ligne de cxommande de LilyPond les options
--ps
,-dbackend=eps
et-daux-files='#f'
.-
-f
,--format=
format Détermine le format à produire. Il peut s’agir de
ps
,pdf
oupng
.Exemple :
lilypond -fpng monfichier.ly
Les formats
svg
eteps
s’obtiennent à l’aide de l’option-dbackend
– voir Options avancées delilypond
.-
-h
,--help
Affiche un résumé des commandes.
-
-H
,--header=
CHAMP Recopie le champ d’entête dans le fichier ‘RACINE.CHAMP’.
Par exemple, si un fichier ‘toto.ly’ contient
\header { title = "tutu" } \score { c1 }
La commande
lilypond -H title toto.ly
produit un fichier texte plat ‘toto.title’ contenant la chaîne
tutu
.-
-i
,--init=
fichier Définit fichier (par défaut ‘init.ly’) en tant que fichier d’initialisation.
-
-I
,--include=
répertoire Ajoute répertoire, de façon relative, au chemin de recherche pour les inclusions. Par défaut, seul le répertoire courant est consulté.
Vous pouvez mentionner plusieurs fois l’option ‘-I’, auquel cas la recherche commencera dans le premier répertoire inclus et, si le fichier en question ne s’y trouve pas, les répertoires suivants seront examinés l’un après l’autre.
Note : L’utilisation du tilde (
~
) avec l’option ‘-I’ peut produire des résultats inattendus selon le shell.Les utilisateurs de Windows doivent ajouter une oblique (
/
finale au chemin d’accès.-
-j
,--jail=
user,
group,
jail,
dir [Cette option n’est disponible que dès lors que l’environnement dispose de la fontionnalité
chroot
. Windows, plus particulièrement, ne le prend pas en charge.] Lancelilypond
dans un environnement protégé.L’option ‘--jail’ est une alternative qui offre plus de flexibilité que l’option ‘--safe’ lorsque LilyPond est installé sur un serveur web ou traite des fichiers externes – voir Options avancées de
lilypond
.L’option ‘--jail’ va détourner la racine de
lilypond
sur jail juste avant d’effectuer la compilation à proprement parler. L’utilisateur et le groupe sont modifiés en conséquence, et le répertoire en cours devient dir. Ces réglages assurent – du moins en théorie – l’impossibilité de s’échapper de la cellule. Notez cependant que, pour que l’option ‘--jail’ soit fonctionnelle,lilypond
doit être lancé en tant qu’administrateur – ce qui se réalise aisément à l’aide de la commandesudo
.La création d’un environnement sécurisé requiert quelques précautions dans la mesure où LilyPond doit disposer de tout ce dont il a besoin pour compiler le fichier source à l’intérieur de la cellule. L’ermitage, avant d’être viable, requiert donc les étapes suivantes :
- Création d’un système de fichiers indépendant
L’intérêt d’un système de fichiers dédié à LilyPond réside dans le fait qu’on peut le brider à l’aide des options
noexec
,nodev
etnosuid
. Il sera de fait impossible de lancer des exécutables ou d’écrire sur un périphérique à partir de LilyPond. Si vous n’avez pas l’intention de créer un tel système sur une partition séparée, vous pouvez avoir recours à un pseudo-périphérique (loop device) monté à partir d’un simple fichier de taille raisonnable. D’autre part, le recours à un système de fichiers indépendant permet de limiter l’espace dévolu à LilyPond.- Création d’un utilisateur spécifique
L’utilisation de LilyPond au sein de la cellule devrait être réservé à un utilisateur aux droits restreints. Il faudra donc créer un utilisateur et un groupe spécifiques – disons
lily
/lily
– qui n’aura accès en écriture qu’à un unique répertoire déterminé par la valeur de dir.- Agencement des lieux
LilyPond a besoin d’un certain nombre de fichiers pour pouvoir tourner correctement. Ces fichiers devront donc tous se retrouver dans l’environnement protégé, distribués selon la même arborescence que dans le système d’origine. Ainsi l’intégralité de l’installation de LilyPond (en principe ‘/usr/share/lilypond’) doit y être dupliquée.
En cas de problème, lancer LilyPond en utilisant
strace
vous permettra de déterminer quels fichiers manquent à l’appel.- Lancement de LilyPond
Dans un environnement protégé monté avec l’option
noexec
, il est impossible de lancer un quelconque programme extérieur. LilyPond ne saurait donc avoir recours à un moteur de traitement qui le mettrait dans cette situation. Comme nous l’avons vu plus haut, LilyPond sera lancé avec les privilèges de l’administrateur – privilèges qu’il perd aussitôt –, ce qui peut nécessiter le recours à la commandesudo
. Il est par ailleurs judicieux de limiter le temps processeur alloué à LilyPond – grâce àulimit -t
par exemple – ainsi que, si votre système le permet, la taille de la mémoire. Voir aussi Exécution de LilyPond en mode protégé.
-
-l
,--loglevel=
degré Règle le niveau de verbosité des messages console à degré. Les différentes valeurs sont :
-
NONE
Aucun verbiage, même pas les messages d’erreur.
-
ERROR
Uniquement les messages d’erreur ; pas de message d’avertissement ni de progression.
-
WARN
Messages d’avertissement ou d’erreur ; pas d’information de progression.
-
BASIC_PROGRESS
Information de progression basique (réussite) et avertissements ou erreurs.
-
PROGRESS
Toutes les informations de progression, avertissements et erreurs.
-
INFO
Informations de progression, avertissements et erreurs, ainsi que d’autres informations relatives à l’exécution. Ceci est la valeur par défaut.
-
DEBUG
Tout ce qui peut être affiché, y compris le verbiage utile au débogage.
-
-
-o
,--output=
FICHIER -
-o
,--output=
RÉPERTOIRE Détermine le nom par défaut du fichier résultant à FICHIER ; lorsque l’argument RÉPERTOIRE correspond à un répertoire déjà existant, c’est là que les fichiers résultants seront déposés. Le suffixe adéquat sera ajouté (par ex. ‘.pdf’ pour du PDF) dans tous les cas.
-
-O
,--pspdfopt=
clé Détermine l’optimisation des PS/PDF résultants à clé. Les valeurs possibles sont :
-
size
Génère un un document PS, EPS ou PDF le plus léger possible. Il s’agit de la valeur par défaut.
L’utilisation de cette valeur revient à lancer les commandes Scheme de LilyPond
-dmusic-font-encodings='#f'
et-dgs-never-embed-fonts='#f'
.-
TeX
Produit des fichiers optimisés pour leur inclusion dans des documents pdfTeX, luatex ou XeTeX.
L’utilisation de cette valeur revient à lancer les commandes Scheme de LilyPond
-dmusic-font-encodings='#t'
et-dgs-never-embed-fonts='#f'
.-
TeX-GS
L’inclusion de plusieurs PDF générés par LilyPond dans un document TeX nécessite l’utilisation de cette option et un retraitement du PDF généré par TeX à l’aide de Ghostscript.
L’utilisation de cette valeur revient à lancer les commandes Scheme de LilyPond
-dmusic-font-encodings='#t'
et-dgs-never-embed-fonts='#t'
.
-
-
--ps
Génère du PostScript. Cette option est équivalente à
-fps
.-
--png
Génère une image par page, au format PNG. Cette option est équivalente à
-fpng
.La résolution de l’image peut se régler à N DPI en ajoutant
-dresolution=N
-
--pdf
Génère du PDF. Ceci est la valeur par défaut, et est équivalant à
-fpdf
.-
-s
,--silent
N’affiche rien de plus que les messages d’erreur. Ceci est équivalent à
-lERROR
.-
-v
,--version
Affiche le numéro de version.
-
-V
,--verbose
Active le mode verbeux : affichage de l’intégralité du chemin d’accès de chaque fichier, et information des temps de traitement. Ceci est équivalent à
-lDEBUG
.-
-w
,--warranty
Affiche les informations de garantie applicables à GNU LilyPond – il est livré SANS GARANTIE !
Options avancées de lilypond
L’option ‘-d’ est l’interface de la ligne de commande à la
fonction Scheme de LilyPond ly:set-option
. Par voie de
conséquence, toutes les options listées ci-après peuvent aussi se
définir au sein même des fichiers ‘.ly’.
-
-d
,--define-default=
nom-option[=
valeur] -
-d
,--define-default=no-
nom-option Affecte la valeur Scheme valeur à l’option interne nom-option du programme. Par exemple, l’option en ligne de commande
-dbackend=svg
équivaut à
#(ly:set-option 'backend 'svg)
dans un fichier source LilyPond.
En l’absence de valeur, le programme utilisera #t, ce qui peut conduire à des résultats inescomptés dès lors que le type escompté de valeur n’est pas boléen. Préfixer nom-option d’un
no-
permet de désactiver une option, autrement dit affecte#f
à valeur. Ainsi,-dno-point-and-click
revient au même que
-dpoint-and-click='#f'
[Note : le caractère ‘#’ introduit un commentaire dans de nombreux
shells ; c’est pourquoi nous recommandons de toujours borner par
des '
les expressions qui le contiennent.]
Voici les différentes options disponibles, ainsi que leur valeur par
défaut. Au sein de code Scheme, la valeur des options est interprétée
par la fonction ly:get-option
.
-
anti-alias-factor
num Adopte une résolution supérieure (selon le facteur num donné),puis réduit au niveau du résultat afin d’éviter les « distorsions » des images
PNG
. La valeur par défauat est de1.0
.-
aux-files
bool Si bool est fixé à
#t
, génère les fichiers.tex
,.texi
et.count
pour le moteur de rendueps
. La valeur par défaut est#t
.-
backend
symbole Détermine symbole comme moteur de traitement de LilyPond. Les valeurs possibles sont :
-
ps
Il s’agit du réglage par défaut. Les fichiers PostScript incluent les fontes
TTF
,Type1
etOTF
, et ce en intégralité. Si vous utilisez des jeux de caractères orientaux, le fichier aura vite fait d’atteindre une taille conséquente.Pour l’obtention d’un fichier PDF, c’est aussi le moteur
ps
qui est utilisé. Les données PS sont ensuite retraitées parps2pdf
, script de Ghostscript, qui par défaut extrait des sous-ensembles des fontes.-
eps
Il s’agit du mode que
lilypond-book
utilise par défaut. Chaque page (système) fera l’objet d’un fichier ‘EPS’ particulier, sans fontes, auquel sera associé un fichier ‘EPS’ qui, lui, contiendra toutes les pages (systèmes) et les fontes.-
null
Ne génère aucun fichier imprimable. Cette option est équivalente à
-dno-print-pages
.-
scm
Recopie littéralement les commandes Scheme internes de formatage.
-
svg
Génère du Scalable Vector Graphics. Cette option permet de créer un fichier SVG par page. Les glyphes musicaux sont codés en tant que graphiques vectoriels mais les fontes textuelles ne sont pas incorporées aux fichiers ‘SVG’ résultants. Quel que soit le programme utilisé pour visionner ces fichiers, il devra avoir accès aux fontes en question pour pouvoir afficher correctement les textes et paroles. Il est préférable de ne pas recourir aux « alias de police » ni aux listes de fontes si la visionneuse de fichier SVG ne peut le traîter correctement. L’option supplémentaire
--svg-woff
– voir ci-après – permet d’utiliser les fontes WOFF (Web Open Font Format) avec le moteursvg
.
-
-
check-internal-types
bool Si bool est déterminé à
#t
, vérifie qu’à chaque propriété est bien affecté un type. La valeur par défaut est#f
.-
clip-systems
bool Si bool est déterminé à
#t
, extrait des fragments musicaux d’une partition. Ceci requiert que la fonctionclip-regions
a été définie au sein du bloc\layout
– voir fragments musicaux Extraction de fragments musicaux. Bien entendu, aucun fragment ne sera extrait si l’on utilise l’option ‘-dno-print-pages’. La valeur par défaut est#f
.-
crop
bool Si bool est déterminé à
#t
, fait correspondre le fichier résultant (musique et entêtes) à la taille de l’image générée. La valeur par défaut est#f
.-
datadir
Détermine le préfixe des fichiers de données (lecture seule).
-
debug-gc
bool Si bool est déterminé à
#t
, génère une copie brute de la mémoire, aux fins de débogage. La valeur par défaut est#f
.-
debug-gc-assert-parsed-dead
bool Pour débogage de la mémoire : si bool est déterminé à
#t
, s’assure que toute référence à des objets analysés est effacée. Il s’agit d’une option interne qui est automatiquement activée par l’option-ddebug-gc
. La valeur par défaut est#f
.-
debug-lexer
bool Si bool est déterminé à
#t
, permet le débogage de l’analyseur lexical flex. La valeur par défaut est#f
.-
debug-page-breaking-scoring
bool Si bool est déterminé à
#t
, purge les calculs des configurations de saut de page. La valeur par défaut est#f
.-
debug-parser
bool Si bool est déterminé à
#t
, permet le débogage de l’analyseur bison. La valeur par défaut est#f
.-
debug-property-callbacks
bool Si bool est déterminé à
#t
, permet le débogage des chaînes de callback cycliques. La valeur par défaut est#f
.-
debug-skylines
bool Si bool est déterminé à
#t
, permet le débogage des lignes d’horizon. La valeur par défaut est#f
.-
delete-intermediate-files
bool Si bool est déterminé à
#t
, supprime les fichiers ‘.ps’ inutiles créés lors de la compilation. La valeur par défaut est#t
.-
dump-cpu-profile
bool Si bool est déterminé à
#t
, génère une copie brute des informations de timing (dépend du système). La valeur par défaut est#f
.-
dump-profile
bool Si bool est déterminé à
#t
, génère une copie brute de la mémoire et des temps de traitement pour chaque fichier. La valeur par défaut est#f
.-
dump-signatures
bool Si bool est déterminé à
#t
, génère une copie des signatures de chaque système. Cette option est utilisée pour les tests de régression. La valeur par défaut est#f
.-
embed-source-code
bool Si bool est déterminé à
#t
, intègre les fichiers source LilyPond au document PDF généré. La valeur par défaut est#f
.-
eps-box-padding
num Décale le bord gauche du typon EPS d’une valeur num donnée en millimètres. La valeur par défaut est
#f
, autrement dit sans décalage.-
font-export-dir
chaîne Détermine à chaîne le répertoire dans lequel exporter les fontes en tant que fichiers PostScript. La valeur par défaut est
#f
, autrement dit le répertoire courant.-
gs-load-fonts
bool Si bool est déterminé à
#t
, charge les fontes grâce à Ghostscript. Cette option a pour conséquence que les fichiers générés par LilyPond ne contiendront que les références des fontes, qui seront ensuite résolues en fontes réelles lors de l’étape de retraitement par Ghostscript. La valeur par défaut est#f
.-
gs-load-lily-fonts
bool Si bool est déterminé à
#t
, limite les fontes chargées par Ghostscript aux seules fontes LilyPond. Cette option a pour conséquence que les fichiers générés par LilyPond ne contiendront les références que des fontes musicales de LilyPond, qui seront ensuite résolues en fontes réelles lors de l’étape de retraitement par Ghostscript. Les autres fontes sont générées normalement. La valeur par défaut est#f
.-
gs-never-embed-fonts
bool Si bool est déterminé à
#t
, intime à Ghostscript d’embarquer les fontes uniquement au format TrueType, sans exception. La valeur par défaut est#f
.-
gui
bool Si bool est déterminé à
#t
, travaille silencieusement, et redirige tout le verbiage dans un fichier journal. La valeur par défaut est#f
.Note à l’attention des utilisateurs de Windows : toutes les informations concernant le traitement apparaissent au fur et à mesure dans l’interpréteur de commandes lorsque vous lancez le programme ‘lilypond.exe’, à l’inverse de ‘lilypond-windows.exe’ qui vous renvoie simplement la main. L’option ‘-dgui’ vous permettra alors de rediriger ces informations dans un fichier journal.
-
help
bool Si bool est déterminé à
#t
, affiche cette aide. La valeur par défaut est#f
.-
include-book-title-preview
bool Si bool est déterminé à
#t
, inclut les titres de l’ouvrage dans les images de prévisualisation. La valeur par défaut est#t
.-
include-eps-fonts
bool Si bool est déterminé à
#t
, inclut les fontes dans chaque fichier EPS contenant un système. La valeur par défaut est#t
.-
include-settings
chaîne Inclut le fichier chaîne contenant les réglages globaux, qui sera inclus avant traitement de la partition. La valeur par défaut est
#f
, autrement dit absence de fichier de réglages.-
job-count
num Traite plusieurs fichiers en parallèle, selon le nombre num de jobs. La valeur par défaut est
#f
, autrement dit sans traitement parallèle.-
log-file
chaîne Redirige la sortie dans le fichier journal ‘chaîne.log’. La valeur par défaut est
#f
, autrement dit absence de fichier de journalisation.-
max-markup-depth
num Détermine à num la profondeur maximale de l’arborescence de markups. Si un markup était plus profond, part du principe qu’on aboutira pas, émet un avertissement et renvoie alors un markup vide. La valeur par défaut est
1024
.-
midi-extension
chaîne Détermine à chaîne l’extension par défaut des fichiers MIDI.La valeur par défaut est
"midi"
.-
music-strings-to-paths
bool Si bool est déterminé à
#t
, convertit les chaînes textuelles en chemins lorsque les glyphes font partie d’une fonte musicale. La valeur par défaut est#f
.-
paper-size
chaîne-entre-guillemets Détermine la taille par défaut du papier à chaîne-entre-guillemets. Veillez à ne pas oublier d’encadrer la valeur par des guillemets échappés (
\"
).La valeur par défaut est"\"a4\""
.-
pixmap-format
symbole Détermine le format de sortie en images pixélisées pour Ghostscript à symbole. La valeur par défaut est
png16m
.-
point-and-click
bool Si bool est déterminé à
#t
, ajoute les liens « point & click » à la sortie PDF ou SVG – voir Pointer-cliquer. La valeur par défaut est#t
.-
preview
bool Si bool est déterminé à
#t
, génère une prévisualisation en plus de la sortie normale. La valeur par défaut est#f
.Cette option, disponible dans tous les formats de sortie imprimables – rendus
pdf
,png
,ps
,eps
etsvg
– génère un fichier de la forme ‘fichierSource.preview.
rendu’ comprenant le titrage et le premier système. S’il existe plusieurs sections\book
ou\bookpart
, ce fichier contiendra les titrage et premier système de chacun des\book
,\bookpart
et\score
, dès lors que la variableprint-all-headers
du bloc\paper
est activée.Pour l’éviter, utilisez conjointement l’une des options ‘-dprint-pages’ ou ‘-dno-print-pages’ selon vos besoins.
-
print-pages
bool Si bool est déterminé à
#t
, génère l’intégralité des pages de la partition. La valeur par défaut est#t
.L’option ‘-dno-print-pages’ est particulièrement utile lorsqu’utilisée conjointement avec les options ‘-dpreview’ et ‘-dcrop’.
-
profile-property-accesses
bool Si bool est déterminé à
#t
, enregistre des statistiques des appels à la fonctionget_property()
. La valeur par défaut est#f
.-
protected-scheme-parsing
bool Si bool est déterminé à
#t
, continue en dépit des erreurs que l’analyseur syntaxique détecterait dans du code Scheme inclus. Lorsque basculé sur#f
, stoppe le traitement s’il y a erreur et affiche une trace de la pile. La valeur par défaut est#t
.-
read-file-list
chaîne Spécifie un fichier ‘chaîne’ listant les différents fichiers sources à traiter. La valeur par défaut est
#f
, autrement dit absence de fichier de liste.-
relative-includes
bool Face à une instruction
\include
, recherche les fichiers à inclure relativement à l’endroit où se trouve le fichier en cours de traitement si bool est déterminé à#t
, plutôt que par rapport au fichier maître. La valeur par défaut est#f
.-
resolution
num Détermine la résolution des pixmaps
PNG
à générer à numdpi
. La valeur par défaut est101
.-
safe
#f Si bool est déterminé à
#t
, ne pas avoir une confiance aveugle dans le code ‘.ly’. La valeur par défaut est#f
.Lorsque LilyPond est accessible au travers d’un serveur web, il est impératif d’utiliser les options ‘--safe’ ou ‘--jail’. L’option ‘--safe’ aura pour effet d’empêcher tout code Scheme inclus de mettre en péril votre installation grâce à quelque chose du style
% trop dangereux à écrire sans faute #(s ystem "rm -rf /") % malveillant mais pas destructeur { c4^$(ly:gulp-file "/etc/passwd") }
L’option
-dsafe
forcera l’évaluation, au fil de l’eau et par un module sécurisé, des expressions Scheme contenues dans le fichier source. Ce module sécuritaire, dérivé du module GUILE ‘safe-r5rs’, ajoute un certain nombre de fonctions – listées dans ‘scm/safe-lily.scm’ – à l’API de LilyPond.De plus, le mode safe ne permet ni l’utilisation de directives
\include
ni le recours aux obliques inversées (backslash) dans les chaînes TeX. L’import de variables LilyPond dans du code Scheme n’est pas possible en mode sécurisé.L’option
-dsafe
ne détecte pas l’utilisation abusive des ressources. Il est donc possible que le programme finisse par rester sans réponse si on lui envoie une boucle sans fin. C’est la raison pour laquelle nous recommandons, lorsque LilyPond tourne sur un serveur accessible au public, d’en limiter aussi bien les ressources processeur que mémoire.Notez bien que l’utilisation du mode sécuritaire empêchera aussi la compilation d’un certain nombre de fragments LilyPond.
L’option
--jail
est dans ce cas une excellente alternative en terme de sécurité, même si elle requiert plus de temps à mettre en place – voir Options basiques delilypond
.-
separate-log-files
bool Pour les fichiers ‘fichier1.ly’, ‘fichier2.ly’, etc. enregistre le déroulement dans les journaux ‘fichier1.log’, ‘fichier2.log’… si bool est déterminé à
#t
. La valeur par défaut est#f
.-
show-available-fonts
bool Si bool est déterminé à
#t
, liste le nom des fontes disponibles tel que le ressort la bibliothèque fontconfig. LilyPond ajoute à cette liste les réglages et la configuration de fontconfig. La valeur par défaut est#t
.-
strict-infinity-checking
bool Si bool est déterminé à
#t
, force le crash en présence des points d’exception de virgule flottanteInf
ouNaN
– infini ou non-nombre. La valeur par défaut est#f
.-
strip-output-dir
bool Si bool est déterminé à
#t
, supprime, lors du nommage des fichiers résultant, la partie correspondant au répertoire des fichiers sources. La valeur par défaut est#t
.-
strokeadjust
bool Si bool est déterminé à
#t
, force l’ajustement des traits PostScript. Cette option trouve toute son utilité pour générer du PDF à partir de PostScript – l’ajustement des traits est en principe automatiquement activé pour les périphériques bitmap à faible résolution. Sans cette option, les visionneurs de PDF ont tendance à ne pas rendre de manière constante l’épaisseur des hampes dans les résolutions habituelles des écrans. Bien que n’affectant pas notoirement la qualité d’impression, cette option accroit notablement la taille des fichiers PDF. La valeur par défaut est#f
.-
svg-woff
bool Cette option est obligatoire dès lors que sont utilisées, avec le moteur
svg
, les fontes Web Open Font Format (WOFF). Un fichier SVG sera généré pour chacune des pages produites. En dehors des glyphes musicaux propres à LilyPond, aucune autre information ne sera incluse. Quelque soit le visionneur de SVG utilisé, il devra avoir à disposition les fontes requises pour pouvoir afficher les éléments textuels et les paroles. Dans la mesure où le visionneur pourrait ne pas savoir le gérer, mieux vaut s’abstenir de recourir aux alias ou listes de fontes. La valeur par défaut est#f
.Lorsque celles-ci sont utilisées correctement, nul n’est besoin d’installer les fontes que les fichiers SVG utiliseront dans l’environnement du visionneur. Néanmoins, LilyPond ne dispose pas de fichier de fonte
woff
textuelle. La présence du fichier de fontewoff
est un prérequis.-
trace-memory-frequency
bool Si bool est déterminé à
#t
, enregistre l’utilisation de la cellule Scheme pour ‘fichier.ly’ plusieurs fois par seconde, dans les fichiers ‘fichier.stacks’ et ‘fichier.graph’. La valeur par défaut est#f
.-
trace-scheme-coverage
bool Si bool est déterminé à
#t
, enregistre la couverture des fichiers Scheme dans ‘fichier.cov’ lors du traitement de ‘fichier.ly’. La valeur par défaut est#f
.-
verbose
Passe en mode verbeux, ce qui correspond à un niveau de journalisation
DEBUG
(lecture seule).-
warning-as-error
bool Si bool est déterminé à
#t
, considère tous les messages d’avertissement et « erreur de programmation » comme étant de véritables erreurs. La valeur par défaut est#f
.
Variables d’environnement
lilypond
reconnaît les variables d’environnement
suivantes :
-
LILYPOND_DATADIR
Cette variable spécifie le répertoire où seront recherchés par défaut les différentes versions des messages ainsi qu’un certain nombre de fichiers nécessaires au traitement. Il devrait contenir les sous-répertoires ‘ly/’, ‘ps/’, ‘tex/’, etc.
-
LANG
Cette variable détermine la langue dans laquelle seront émis les messages.
-
LILYPOND_LOGLEVEL
Cette variable détermine le niveau par défaut de verbosité. En l’absence de niveau explicite – autrement dit la ligne de commande ne comporte pas de ‘--loglevel’ – c’est cette valeur qui sera utilisée.
-
LILYPOND_GC_YIELD
Cette variable permet d’ajuster l’empreinte mémoire et le rendement de la machine. Il s’agit en fait d’un pourcentage d’allocation de mémoire : lorsqu’il est élevé, le programme favorisera l’utilisation de la mémoire ; une faible valeur consommera plus de temps processeur. Par défaut, cette valeur est fixée à
70
.
Exécution de LilyPond en mode protégé
Paramétrer un serveur afin qu’il puisse faire fonctionner LilyPond en
mode protégé sur un pseudo-périphérique est une tâche sensible. Les
différentes étapes à suivre sont répertoriées ci-dessous. Les exemples
qu’elle comportent proviennent d’une distribution GNU/Linux Ubuntu et
nécessiteront l’utilisation de sudo
autant que de besoin.
- Installation des paquetages nécessaires : LilyPond, Ghostscript et ImageMagick.
- Création de l’utilisateur
lily
:adduser lily
Ceci, par la même occasion, créera un groupe spécifique pour l’utilisateur
lily
ainsi que son répertoire personnel/home/lily
. - Création, dans le répertoire personnel de l’utilisateur
lily
, d’un espace agissant en tant que système de fichiers :dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
Cette commande a créé un fichier de 200 MB utilisable par le « système protégé ».
- Création d’un pseudo-périphérique, génération d’un système de
fichiers et chargement de celui-ci, puis création d’un répertoire
accessible en écriture pour l’utilisateur
lily
:mkdir /mnt/lilyloop losetup /dev/loop0 /home/lily/loopfile mkfs -t ext3 /dev/loop0 200000 mount -t ext3 /dev/loop0 /mnt/lilyloop mkdir /mnt/lilyloop/lilyhome chown lily /mnt/lilyloop/lilyhome
- Affectation, au niveau configuration du serveur, de
/mnt/lilyloop
en tant que JAIL et/lilyhome
en tant que DIR. - Création d’une arborescence, dans l’espace protégé, et recopie de
tous les fichiers nécessaires – voir le script plus loin.
Le recours à l’utilitaire
sed
permet de créer les commandes de copie de tout ce qui est nécessaire à un exécutable donné :for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \ do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \ cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \ \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
Exemple de script fonctionnel en 32-bit sur Ubuntu 8.04
#!/bin/sh ## les réglages par défaut username=lily home=/home loopdevice=/dev/loop0 jaildir=/mnt/lilyloop # le préfixe (sans slash au début !) lilyprefix=usr/local # le répertoire du système où lilypond est installé lilydir=/$lilyprefix/lilypond/ userhome=$home/$username loopfile=$userhome/loopfile adduser $username dd if=/dev/zero of=$loopfile bs=1k count=200000 mkdir $jaildir losetup $loopdevice $loopfile mkfs -t ext3 $loopdevice 200000 mount -t ext3 $loopdevice $jaildir mkdir $jaildir/lilyhome chown $username $jaildir/lilyhome cd $jaildir mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp chmod a+w tmp cp -r -L $lilydir $lilyprefix cp -L /bin/sh /bin/rm bin cp -L /usr/bin/convert /usr/bin/gs usr/bin cp -L /usr/share/fonts/truetype usr/share/fonts # la formule magique de recopie des bibliothèques for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \ "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \ \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \ 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \ | sed '/.*=>.*/d'; done | sh -s # les fichiers partagés pour Ghostscript... cp -L -r /usr/share/ghostscript usr/share # les fichiers partagés pour ImageMagick cp -L -r /usr/lib/ImageMagick* usr/lib ### Partant du principe que test.ly est dans /mnt/lilyloop/lilyhome, ### on devrait pouvoir lancer : ### Attention : /$lilyprefix/bin/lilypond est un script qui ### définit LD_LIBRARY_PATH - c'est primordial /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
Notes de bas de page
[1] Le statut de GUILE n’étant pas réinitialisé après traitement d’un fichier ‘.ly’, veillez à ne pas modifier les réglages par défaut du système à partir d’assertions en Scheme.
Autres langues : English, català, deutsch, español, magyar, italiano, 日本語.
About automatic language selection.