]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/de/usage/running.itely
Imported Upstream version 2.16.0
[lilypond.git] / Documentation / de / usage / running.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
2
3 @ignore
4     Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09
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.16.0"
12
13 @c Translators: Reinhold Kainhofer, Till Paala
14 @c Translation checkers: Till Paala
15
16 @node lilypond starten
17 @chapter @command{lilypond} starten
18 @translationof Running lilypond
19
20 Dieses Kapitel behandelt die technischen Details, wie Lilypond ausgeführt werden kann.
21
22
23 @menu
24 * Übliche Programmbenutzung::
25 * Benutzung auf der Kommandozeile::
26 * Fehlermeldungen::
27 * Häufige Fehlermeldungen::
28 @end menu
29
30 @node Übliche Programmbenutzung
31 @section Übliche Programmbenutzung
32 @translationof Normal usage
33
34 Die meisten Benutzer führen LilyPond von einer graphischen Benutzeroberfläche
35 aus. Siehe @rlearning{Übung}, falls Sie dies nicht bereits getan haben.  Wenn
36 Sie einen alternativen Editor für Ihre LilyPond-Dateien verwenden, lesen Sie
37 bitte die Dokumentation dieses Editors.
38
39
40 @node Benutzung auf der Kommandozeile
41 @section Benutzung auf der Kommandozeile
42 @translationof Command-line usage
43
44 Dieser Abschnitt enthält zusätzliche Informationen, wie Sie LilyPond
45 von der Kommandozeile ausführen können.  Dies kann erforderlich sein,
46 um etwa zusätzliche Optionen an das Programm zu übergeben.  Außerdem
47 sind einige Zusatzprogramme (wie etwa @code{midi2ly}) nur von der
48 Kommandozeile verfügbar.
49
50 Unter @q{Kommandozeile} verstehen wir die Kommandozeile des jeweiligen
51 Betriebssystems. Windows Benutzern ist sie vielleicht eher unter den
52 englischen Begriffen @q{DOS shell} oder @q{command shell} bekannt.
53 MacOS@tie{}X Benutzer kennen sie eher unter @q{Terminal} oder @q{Konsole}.
54 Einige zusätzliche Einrichtungsarbeiten werden unter MacOS@tie{}X,
55 siehe @rweb{MacOS X}.
56
57 Wie die Kommandozeile im jeweiligen Betriebssystem benutzt werden kann,
58 soll in diesem Handbuch nicht näher beschrieben werden. Sehen Sie bitte
59 im Handbuch Ihres Betriebssystems nach oder informieren Sie sich im
60 Internet, wenn Sie mit der Kommandozeile nicht vertraut sind.
61
62
63 @menu
64 * lilypond aufrufen::
65 * Optionen auf der Kommandozeile für lilypond::
66 * Umgebungsvariablen::
67 * LilyPond in chroot-Kerker::
68 @end menu
69
70 @node lilypond aufrufen
71 @unnumberedsubsec @command{lilypond} aufrufen
72 @translationof Invoking lilypond
73
74 @cindex @command{lilypond} aufrufen
75 @cindex Kommandozeilen-Optionen für @command{lilypond}
76 @cindex Optionen an der Kommandozeile
77
78 Das @command{lilypond} Programm kann folgendermaßen von der Kommandozeile
79 aufgerufen werden.
80
81 @example
82 lilypond [@var{Option}]@dots{} @var{Dateiname}@dots{}
83 @end example
84
85
86 Wird ein @file{Dateiname} ohne Erweiterung angegeben, so wird @file{.ly} als
87 Standarderweiterung für LilyPond-Dateien benutzt.  Um Daten von
88 @code{stdin} einzulesen, benutzen Sie einfach einen Bindestrich (@code{-})
89 als @var{Dateiname}.
90
91 Wenn Lilypond die Datei @file{Dateiname.ly} verarbeitet, werden daraus
92 die Dateien @file{Dateiname.ps} und @file{Dateiname.pdf} erzeugt.
93 Es können an @code{lilypond} auch mehrere @file{.ly} Dateien übergeben
94 werden, die dann einzeln und voneinander unabhängig abgearbeitet
95 werden.@footnote{Der Zustand von GUILE wird allerdings nicht nach
96 jeder Datei zurückgesetzt, sodass Achtung geboten ist, wenn in einer
97 Datei globale Änderungen von Scheme aus durchgeführt werden.}
98
99 Falls @file{Dateiname.ly} mehr als eine @code{\book}-Umgebung enthält,
100 werden die weiteren Stücke in durchnummerierte Dateien der Form
101 @file{Dateiname-1.pdf} ausgegeben.  Zusätzlich wird der Wert der
102 Variable @code{output-suffix} zwischen den ursprünglichen Dateinamen
103 und der Zahl eingefügt.  Eine Lilypond-Datei @file{Dateiname.ly} mit dem Inhalt
104
105 @example
106 #(define output-suffix "Geige")
107 \score @{ @dots{} @}
108 #(define output-suffix "Cello")
109 \score @{ @dots{} @}
110 @end example
111
112 @noindent
113 erzeugt daher die Dateien @var{Dateiname}@file{-Geige.pdf} und
114 @var{Dateiname}@file{-Cello-1.pdf}.
115
116
117
118 @unnumberedsubsubsec Häufige Kommandozeilenbefehle
119
120 Wenn Ihre Kommandozeile normale Weiterleitungen unterstützt, können
121 Sie es nützlich finden, mit folgenden Befehlen die Ausgabe der
122 Kommandozeile in eine Datei zu leiten:
123
124 @itemize
125
126 @item
127 @code{lilypond file.ly 1>stdout.log} um normale Ausgabe zu erhalten
128 @item
129 @code{lilypond file.ly 2>stderr.log} um Fehlermeldungen zu erhalten
130
131 @item
132 @code{lilypond file.ly &>all.log} um alle Meldungen zu erhalten
133
134 @end itemize
135
136 Wenden Sie sich an die Dokumentation für Ihre Kommandozeile, um
137 zu sehen, ob derartige Optionen unterstützt werden oder die Syntax
138 unterschiedlich ist.  Beachten Sie, dass es sich hier um
139 reine Verwaltungsprogramme handelt, die nichts mit LilyPond zu tun
140 haben.
141
142
143 @node Optionen auf der Kommandozeile für lilypond
144 @unnumberedsubsec Optionen auf der Kommandozeile für @command{lilypond}
145 @translationof Command line options for lilypond
146
147 Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt:
148
149 @cindex @command{lilypond} auf der Kommandozeile
150 @cindex Kommandozeile, @command{lilypond} aufrufen
151 @cindex Optionen, Kommandozeile
152 @cindex Terminal, @command{lilypond} aufrufen
153
154 @table @code
155
156 @item -d,--define-default=@var{Variable}=@var{Wert}
157 Damit wird die interne Programmoption @var{Variable} auf den Scheme-Wert
158 @var{Wert} gesetzt. Wird kein @var{Wert} angegeben, so wird @var{#t} benutzt.
159 Um eine Option auszuschalten, kann der Präfix @code{no-} dem Namen
160 @var{Variable} der Variable vorangestellt werden. So ist etwa
161
162 @cindex Point and Click, Kommandozeile
163
164 @example
165 -dno-point-and-click
166 @end example
167
168 @noindent
169 dasselbe wie
170 @example
171 -dpoint-and-click=#f
172 @end example
173
174 Folgende Optionen werden unterstützt:
175
176 @cindex Hilfe, Kommandozeile
177
178 @table @code
179
180 @item help
181 Die Ausführung von @code{lilypond -dhelp} zeigt alle verfügbaren
182 @option{-d}-Optionen.
183
184 @cindex Papierformat, Kommandozeile
185
186 @item paper-size
187 Setzt das Standard-Papierformat,
188 @example
189 -dpaper-size=\"letter\"
190 @end example
191
192 @noindent
193 Die Zeichenkette, die das Format angibt, muss in Anführungszeichen mit Backslash
194 ( @code{\"} ) stehen.
195
196 @cindex sicher, Kommandozeile
197 @cindex safe, Kommandozeile
198
199 @item safe
200 Vertraut der @file{.ly} Datei nicht.
201
202 Wenn LilyPond über einen Webserver verfügbar gemacht wird, @b{MUSS} unbedingt
203 eine die Optionen @option{--safe} oder @option{--jail} angegeben werden.
204 Die @option{--safe} Option verhindert, dass in der @file{.ly}-Datei angegebener
205 Scheme-Code das System gefährden kann, wie etwa in folgendem Beispiel:
206
207 @quotation
208 @verbatim
209 #(system "rm -rf /")
210 {
211   c4^$(ly:gulp-file "/etc/passwd")
212 }
213 @end verbatim
214 @end quotation
215
216 Mit der @option{-dsafe} Option werden alle Scheme-Ausdrücke einem speziellen
217 sicheren Modus ausgewertet. Dieser Modus ist vom GUILE @file{safe-r5rs} Modul
218 abgeleitet und fügt noch zahlreiche weitere erlaubte Funktionen der
219 LilyPond Programm-Schnittstelle hinzu. Diese Funktionen sind in
220 @file{scm/safe-lily.scm} angegeben.
221
222 Zusätzliche verbietet der sichere Modus auch @code{\include} Befehle.
223
224 Im sicheren Modus ist es nicht möglich, LilyPond-Variablen nach Scheme
225 zu exportieren.
226
227 @option{-dsafe} erkennt jedoch @emph{KEINE} Überbeanspruchung der verfügbaren
228 Ressourcen. In diesem Modus ist es also trotzdem möglich, dass LilyPond in einer
229 Endlosschleife hängt, z.B. wenn zyklische Datenstrukturen an das Backend
230 übergeben werden. Wenn LilyPond also auf einem öffentlich zugänglichen
231 Webserver verfügbar gemacht wird, sollte der Prozess sowohl in der CPU-
232 als auch in der Speichernutzung limitiert werden.
233
234 Der sichere Modus verhindert auch, dass zahlreiche nützliche
235 Musikfragmente von LilyPond verarbeitet werden. Die @option{--jail}-Option ist
236 eine sicherere Alternative, benötigt allerdings auch mehr Aufwand zur
237 Einrichtung.
238
239 @cindex Ausgabeformat, Definition von
240
241 @item backend
242 Gibt an, welches Ausgabeformat das LilyPond Backend benutzt. Mögliche Werte
243 für diese Option sind:
244
245 @table @code
246 @item ps
247 PostScript-Ausgabeformat.
248
249 @cindex PostScript Ausgabeformat
250
251 Postscript-Dateien enthalten auch TTF-, Type1- und OTF-Schriften. Allerdings
252 wird die gesamte Schriftart eingefügt und nicht nur die benötigten Zeichen.
253 Vor allem wenn nicht-westliche Zeichensätze benutzt werden, kann dies zu sehr
254 großen Dateien führen.
255
256 @cindex PostScript Ausgabeformat
257 @cindex EPS (encapsulated PostScript)
258
259 @item eps
260 Erzeugt @q{encapsulated PostScript} (EPS). Jede Seite (oder jedes System) wird
261 als eigene @file{EPS}-Datei ausgegeben, inklusive Schriftarten. Außerdem wird
262 eine Datei mit allen Seiten (bzw. Systemen) und Schriftarten erzeugt.
263
264 Dies ist die Standardeinstellung von @command{lilypond-book}.
265
266 @cindex SVG (scalable vector graphics)
267 @cindex Vektorgraphik (SVG)
268
269 @item svg
270
271 SVG-Ausgabe (Scalable Vector Graphics).
272
273 Hiermit wird eine einzelne SVG-Datei ohne eingebundene Schriften
274 für jede Seite der Partitur erstellt.  Es wird empfohlen, Century
275 Schoolbook-Schriftarten zu installieren, die auch in der LilyPond-Installation
276 enthalten sind, um optimales Rendern zu erhalten.  Unter UNIX können
277 diese Schriftarten einfach aus dem LilyPond-Verzeichnis (normalerweise
278 @file{/usr/share/lilypond/@/VERSION/fonts/otf/}) nach @file{~/.fonts}
279 kopiert werden.  Die SVG-Ausgabe sollte mit allen SVG-Editoren oder
280 Betrachtungsprogrammen kompatibel sein.
281
282 @cindex Scheme-dump
283
284 @item scm
285 gibt die rohen Scheme-basierenden Zeichenbefehle aus (@qq{Scheme-dump}),
286 wie sie intern von LilyPond benutzt werden.
287
288 @item null
289 Keine Partitur wird ausgegeben, hat gleichen Effekt wie @option{-dno-print-pages}.
290
291 @end table
292
293 Beispiel: @code{lilypond -dbackend=svg @var{Dateiname}.ly}
294
295 @cindex Vorschau
296
297 @item preview
298 Unterstützt von allen Backendes: @code{pdf}, @code{png}, @code{ps},
299 @code{eps} und @code{svg} aber nicht @code{scm} und erzeugt eine
300 Ausgabedatei, die nur die Titelzeilen und das erste System
301 enthält.  Wenn @code{\bookpart}-Umgebungen benutzt werden, erscheinen die
302 Titel und ersten Systeme jedes @code{\bookpart}-Abschnitts in der Datei.
303
304 Zusätzlich wird eine Datei in der Form @code{meineDatei.preview.Endung}
305 erstellt, um das zu vermeiden, können die zusätzlichen Optionen
306 @option{-dprint-pages} oder @option{-dno-print-pages} je nach gewünschtem
307 Ergebnis gewählt werden.
308
309 @item gui
310 Stiller Durchlauf, alle Ausgabe wird in eine Log-Datei umgeleitet.
311
312 Bemerkung für Windows-Benutzer:  Standardmäßig schreibt @code{lilypond.exe}
313 alle Fortschrittinformation in die Kommandozeile, während
314 @code{lilypond-windows.exe} keine Fortschrittinformation angibt und
315 sofort die Eingabeaufforderung anzeigt.  Die Option @option{-dgui} kann
316 in diesem Fall eingesetzt werden, um die Ausgabe in eine Log-Datei umzuleiten.
317
318 @item print-pages
319 Erzeugt vollständige Seiten (Standardeinstellung).  @option{-dno-print-pages}
320 ist in Verbindung mit @option{-dpreview} nützlich.
321
322 @end table
323
324 @cindex Scheme, Auswertung von Ausdrücken
325 @cindex Auswertung von Ausdrücken, Scheme
326
327 @item -e,--evaluate=@var{expr}
328 Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien
329 gelesen und interpretiert werden.
330 Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke
331 werden nacheinander ausgewertet.
332
333 Da der Ausdruck im @code{guile-user} Modul ausgewertet wird, ist bei der
334 Definitionen innerhalb von @var{expr} folgendes Vorgehen nötig. An der
335 Kommandozeile wird z.B. @code{a} im @code{guile-user} Modul definiert:
336
337 @example
338 lilypond -e '(define-public a 42)'
339 @end example
340
341 @noindent
342 Am Beginn der @file{.ly}-Datei muss dann das @code{guile-user} Modul noch geladen werden, bevor die Definition von @var{a} verfügbar ist:
343
344 @example
345 #(use-modules (guile-user))
346 @end example
347
348 @warning{Windows-Benutzer müssen doppelte anstelle der einfachen
349 Anführungsstriche einsetzen.}
350
351 @cindex Ausgabeformat
352
353 @item -f,--format=@var{Format}
354 Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind
355 @code{svg}, @code{ps}, @code{pdf} und @code{png}.
356
357 Beispiel: @code{lilypond -fpng @var{Dateiname}.ly}
358
359 @item -h,--help
360 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
361
362 @item -H,--header=@var{FELD}
363 Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei
364 @file{Dateiname.@var{FELD}} aus.
365
366 @item -i,--init=@var{Initialisierungsdatei}
367 Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der
368 Standardwert ist @file{init.ly}.
369
370 @item -I, --include=@var{Verzeichnis}
371 Fügt @var{Verzeichnis} zur Liste der Suchpfade hinzu.
372
373 @cindex Dateisuche
374 @cindex Suchpfad
375
376 Mehrere -I-Optionen können angegeben werden.  Die Suche beginnt mit dem
377 ersten definierten Verzeichnis und setzt in den weiteren Verzeichnissen
378 fort, wenn die gesuchte Datei nicht in dem Verzeichnis gefunden wird.
379
380 @cindex Kerker, Programm ausführen
381 @cindex Jail, Programm ausführen
382
383 @item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis}
384 Führt @command{lilypond} in einem chroot-Jail aus.
385
386 Die @option{--jail} Option ist eine flexiblere Alternative zu @option{--safe}, wenn
387 LilyPond über das Internet verfügbar gemacht wird oder LilyPond-Quelldateien
388 von Dritten automatisch verarbeitet werden.
389
390 Sie funktioniert dergestalt, dass das Wurzelverzeichnis von
391 @command{lilypond} auf @var{Jail-Verzeichnis} gesetzt wird, bevor die
392 tatsächliche Kompilierung der @file{.ly}-Datei beginnt. Der Benutzer und die Gruppe
393 werden auf die angegebenen Werte gesetzt und das aktuelle Arbeitsverzeichnis
394 wird ebenfalls auf den angegebenen Wert @var{Arbeitsverzeichnis} gesetzt.
395 Diese Einstellungen garantieren (zumindest in der Theorie), dass es nicht
396 möglich ist, aus dem Jail auszubrechen. Damit @option{--jail} funktioniert, muss
397 @command{lilypond} allerdings als root ausgeführt werden, was normalerweise
398 auf sichere Art mit dem Kommando @command{sudo} erreicht werden kann.
399
400 Das Jail-Verzeichnis zu erstellen ist etwas heikel, da LilyPond alle zur
401 Ausführung nötigen Bibliotheken und Dateien @emph{innerhalb des
402 Jail-Verzeichnisses} finden muss. Ein typisches Setup besteht aus folgenden
403 Punkten:
404
405 @table @asis
406
407 @item Erstellung eines getrennten Dateisystems
408 Ein eigenes Dateisystem muss für LilyPond erstellt werden, sodass es mit
409 sicheren Einstellungen wie @code{noexec}, @code{nodev} und @code{nosuid}
410 eingebunden werden kann. Damit ist es unmöglich, Programme von diesem
411 Dateisystem auszuführen oder direkt auf eine Hardware-Schnittstelle
412 zuzugreifen. Wenn Sie keine eigene Partition erstellen möchten, können Sie
413 auch eine Datei der entsprechenden Größe erstellen und sie als @q{loop}-Gerät
414 einbinden. Ein getrenntes Dateisystem garantiert auch, dass LilyPond nicht
415 mehr Festplattenspeicher benutzt als erlaubt.
416
417 @item Erstellung eines eigenen Benutzerkontos
418 Es sollte ein eigener Benutzer und eine eigene Gruppe (z. B.
419 @code{lily}/@code{lily}) mit geringen Rechten für die Ausführung von LilyPond
420 innerhalb des Jails benutzt werden. Nur ein einziges Verzeichnis des Jails sollte
421 für den Benutzer schreibbar sein und als @var{Arbeitsverzeichnis} an
422 @code{lilypond} übergeben werden.
423
424 @item Einrichtung des Jails
425 LilyPond muss zahlreiche Dateien für die Ausführung einlesen. All diese
426 Dateien müssen in das Jail-Verzeichnis kopiert werden (mit denselben Pfaden
427 wie im tatsächlichen Wurzel-Dateisystem). Die gesamte LilyPond-Installation
428 (typischerweise @file{/usr/share/lilypond}) sollte kopiert werden.
429
430 Falls Probleme auftreten, ist es am einfachsten, Lilypond mittels
431 @command{strace} zu starten, wodurch Sie relativ leicht feststellen können,
432 welche Dateien im Jail noch fehlen.
433
434 @item Ausführung von LilyPond
435 In einem mit @code{noexec} eingebundenen Jail ist es nicht möglich, externe
436 Programme auszuführen. Daher muss LilyPond auf eine Art gestartet werden,
437 die keine weitere Ausführung von Programmen benötigt. Wie bereits erwähnt
438 muss LilyPond mit Administrator-Rechten gestartet werden (die es allerdings
439 sofort wieder abgibt), beispielsweise mittels @command{sudo}. Außerdem
440 ist es eine gute Idee, die LilyPond zur Verfügung stehende CPU-Zeit zu
441 limitieren (z. B. mit @command{ulimit -t}) und -- falls das Betriebssystem
442 dies unterstützt -- auch den zur Verfügung stehenden Hauptspeicher.
443
444 @end table
445
446 @cindex Logstufe
447 @cindex Ausgabe, Ausführlichkeit
448
449 @item -l,--loglevel=@var{Logstufe}
450 Passt die Ausführlichkeit der Ausgabe auf der Kommandozeile entsprechend
451 @var{Logstufe} an.  Mögliche Werte sind:
452
453 @table @code
454
455 @item NONE
456 Keine Ausgabe, nicht einmal Fehlermeldungen.
457
458 @item ERROR
459 Nur Fehlermeldungen, keine Warnungen oder Fortschrittsmeldungen.
460
461 @item WARN
462 Warnungen und Fehlermeldungen, keine Fortschrittsmeldungen.
463
464 @item BASIC_PROGRESS
465 Grundlegende Fortschrittsmeldungen (Erfolg), Warnungen und Fehler.
466
467 @item PROGRESS
468 Alle Fortschrittsmeldungen, Warnungen und Fehler.
469
470 @item INFO (Standard)
471 Fortschrittmeldungen, Warnungen, Fehlermeldungen und weiter
472 Information über die Ausführung.
473
474 @item DEBUG
475 Alle möglichen Meldungen, die auch mit der Fehlersuche (Debug) zu tun
476 haben können.
477
478 @end table
479
480 @cindex Verzeichnis, Ausgabe speichern in
481 @cindex Ausgabedateiname
482 @cindex Dateiname der Ausgabe bestimmen
483
484 @item -o,--output=@var{DATEI} oder @var{ORDNER}
485 Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei
486 @var{DATEI}.  Wenn ein Verzeichnis mit dem Namen existiert, werden die Ausgabedateien
487 in dieses Verzeichnis gespeichert, wobei der Dateiname der Eingabedatei
488 benutzt wird.  Die entsprechende Dateinamenserweiterung wird angehängt (z.B.
489 @code{.pdf} für pdf).
490
491 @cindex PostScript-Ausgabe
492
493 @item --ps
494 Erzeugt PostScript.
495
496 @cindex PNG-Ausgabe
497 @cindex Portable Network Graphics (PNG)
498
499 @item --png
500 Erzeugt eine Grafik-Datei im PNG-Format von jeder Seite. Diese Option
501 impliziert auch @code{--ps}. Die Auflösung in DPI der Grafik kann festgelegt
502 werden durch
503 @example
504 -dresolution=110
505 @end example
506
507 @cindex PDF-Ausgabe
508 @cindex Portable Document Format (PDF)
509
510 @item --pdf
511 Erzeugt PDF-Dateien. Dies impliziert @code{--ps}.
512
513 @item -v,--version
514 Gibt die Versionsnummer aus.
515
516 @item -V,--verbose
517 Gibt ausführliche informative Meldungen aus: Zeigt die vollen Dateipfade
518 aller gelesenen Dateien sowie Informationen über die Laufzeit.
519
520 @item -w,--warranty
521 Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht
522 @strong{KEINERLEI GARANTIE}!)
523
524 @end table
525
526
527 @node Umgebungsvariablen
528 @unnumberedsubsec Umgebungsvariablen
529 @translationof Environment variables
530
531 @cindex LANG
532 @cindex LILYPOND_LOGLEVEL
533 @cindex LILYPOND_DATADIR
534 @cindex Variablen, Umgebungs-
535 @cindex Umgebungsvariablen
536
537 @command{lilypond} erkennt und benützt die folgenden Umgebungsvariablen:
538 @table @code
539 @item LILYPOND_DATADIR
540 Diese Variable gibt das Verzeichnis an, wo Lilypond seine eigenen Dateien,
541 Meldungen und Übersetzungen finden kann.  Dieses Verzeichnis sollte
542 Unterverzeichnisse @file{ly/}, @file{ps/}, @file{tex/}, etc. beinhalten.
543
544 @item LANG
545 Gibt die Sprache an, in der Warnungen und Fehlermeldungen ausgegeben werden.
546
547 @item LILYPOND_LOGLEVEL
548 Die standardmäßige Logstufe.  Wenn LilyPond ohne eine explizite
549 Logstufe aufterufen wird (d. h. die Kommandozeilenoption @option{--loglevel}
550 nicht eingesetzt wird), wird dieser Wert benutzt.
551
552 @item LILYPOND_GC_YIELD
553 Eine Variable (von 1 bis 100), die die Speicherverwaltung regelt.  Bei
554 niedrigeren Werten wird mehr Prozessor-Zeit, dafür weniger Hauptspeicher
555 benötigt.  Voreinstellung ist ein Wert von @code{70}.
556
557 @end table
558
559
560
561 @node LilyPond in chroot-Kerker
562 @unnumberedsubsec LilyPond in chroot-Kerker
563 @translationof LilyPond in chroot jail
564
565 Einen Server einzurichten, der LilyPond in einem chroot-Kerker bedient, ist
566 recht kompliziert.  Die einzelnen Schritten finden sich unten aufgeliestet.
567 Beispiele sind für Ubuntu Linux und erfordern evtl. die Benutzung von
568 @code{sudo} an den entsprechenden Stellen.
569
570 @itemize
571
572 @item Installieren Sie die nötigen Pakete: LilyPond, GhostScript und ImageMagick.
573
574 @item Erstellen Sie einen neuen Benutzer mit dem Namen @code{lily}:
575
576 @example
577 adduser lily
578 @end example
579
580 @noindent
581 Hierdurch wird auch eine Gruppe @code{lily} und ein Heimat-Ordner
582 @code{/home/lily} für den neuen Benutzer erstellt.
583
584 @item Im Heimat-Ordner des Benutzers @code{lily} erstellen Sie eine Datei, die als
585 eigenes Dateisystem eingesetzt wird:
586
587 @example
588 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
589 @end example
590
591 @noindent
592 In diesem Beispiel wird eine 200-MB-Datei als Kerker-Dateisystem erstellt.
593
594 @item Erstellen Sie ein loop device, erstellen Sie ein Dateisystem und
595 mounten Sie es, dann erstellen Sie dort einen Ordner, in dem der Benutzer
596 @code{lily} Schreibrechte hat:
597
598 @example
599 mkdir /mnt/lilyloop
600 losetup /dev/loop0 /home/lily/loopfile
601 mkfs -t ext3 /dev/loop0 200000
602 mount -t ext3 /dev/loop0 /mnt/lilyloop
603 mkdir /mnt/lilyloop/lilyhome
604 chown lily /mnt/lilyloop/lilyhome
605 @end example
606
607 @item In der Konfiguration des Servers ist der Kerker (JAIL) @code{/mnt/lilyloop}
608 und das Verzeichnis (DIR) @code{/lilyhome}.
609
610 @item Erstellen Sie einen großen Verzeichnisbaum in dem Kerker, indem Sie die
611 notwendigen Dateien dorthin kopiert, wie das Beispielskript unten zeigt.
612
613 Sie könne @code{sed} benutzen, um die notwendigen Kopierbefehle für ein
614 bestimmtes Programm zu erstellen:
615
616 @example
617 for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/;  \
618   do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\&  \
619     cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p  \
620       \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
621 @end example
622
623 @end itemize
624
625 @subheading Beispiel-Skript für 32-bit Ubuntu 8.04
626
627 @example
628 #!/bin/sh
629 ## defaults set here
630
631 username=lily
632 home=/home
633 loopdevice=/dev/loop0
634 jaildir=/mnt/lilyloop
635 # the prefix (without the leading slash!)
636 lilyprefix=usr/local
637 # the directory where lilypond is installed on the system
638 lilydir=/$lilyprefix/lilypond/
639
640 userhome=$home/$username
641 loopfile=$userhome/loopfile
642 adduser $username
643 dd if=/dev/zero of=$loopfile bs=1k count=200000
644 mkdir $jaildir
645 losetup $loopdevice $loopfile
646 mkfs -t ext3 $loopdevice 200000
647 mount -t ext3 $loopdevice $jaildir
648 mkdir $jaildir/lilyhome
649 chown $username $jaildir/lilyhome
650 cd $jaildir
651
652 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
653 chmod a+w tmp
654
655 cp -r -L $lilydir $lilyprefix
656 cp -L /bin/sh /bin/rm bin
657 cp -L /usr/bin/convert /usr/bin/gs usr/bin
658 cp -L /usr/share/fonts/truetype usr/share/fonts
659
660 # Now the library copying magic
661 for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh"  \
662   "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=>  \
663     \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed  \
664       's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/'  \
665         | sed '/.*=>.*/d'; done | sh -s
666
667 # The shared files for ghostscript...
668       cp -L -r /usr/share/ghostscript usr/share
669 # The shared files for ImageMagick
670       cp -L -r /usr/lib/ImageMagick* usr/lib
671
672 ### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome,
673 ### you should be able to run:
674 ### Note that /$lilyprefix/bin/lilypond is a script, which sets the
675 ### LD_LIBRARY_PATH - this is crucial
676       /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
677 @end example
678
679
680 @node Fehlermeldungen
681 @section Fehlermeldungen
682 @translationof Error messages
683
684 @cindex error messages
685 @cindex Fehlermeldungen
686
687 Während der Verarbeitung einer Dateien können diverse Meldungen an der
688 Kommandozeile auftreten:
689
690 @table @emph
691
692 @item Warnung (Warning)
693 @cindex Warnung
694 Irgendetwas ist verdächtig.  Wenn Sie etwas Ungewöhnliches in Ihrer
695 Datei durchführen, dann werden Sie die Meldung verstehen und können
696 sie gegebenenfalls ignorieren.  Im Normalfall jedoch bedeutet eine
697 Warnung, dass mit Ihrer Datei etwas nicht stimmt, LilyPond jedoch
698 trotzdem versucht, die Datei soweit wie möglich korrekt zu übersetzen.
699
700 @item Fehler (Error)
701 @cindex Fehler
702 Irgendetwas stimmt definitiv nicht.  Der aktuelle Bearbeitungsschritt
703 (Einlesen, Interpretieren oder Formatieren der Datei) wird noch fertig
704 ausgeführt, danach bricht die Bearbeitung aber ab.
705
706 @item Fataler Fehler (Fatal error)
707 @cindex Fataler Fehler
708 Irgendetwas stimmt definitiv nicht und LilyPond kann nicht weiter
709 ausgeführt werden.  Dies ist nur sehr selten der Fall, meist sind
710 die Schriftarten nicht korrekt installiert.
711
712 @item Scheme Fehler (Scheme error)
713 @cindex Fehlerprotokoll, Scheme
714 @cindex Scheme Fehler
715 Fehler, die während der Ausführung von Scheme-Code auftreten, werden
716 vom Scheme-Interpreter aufgefangen und an der Kommandozeile ausgegeben.
717 Wenn Sie LilyPond mit der @option{--verbose} Option (auch @code{-V})
718 ausführen, wird der sogenannte @q{Call trace} ausgegeben, der die
719 aufgerufenen Funktionen zur Zeit des Fehlers angibt.
720
721 @item Programmierfehler (Programming error)
722 @cindex Programmierfehler
723 Eine interne Inkonsistenz ist aufgetreten.  Diese Fehlermeldungen
724 sollen den Programmierern die Fehlersuche erleichtern und
725 können meistens einfach ignoriert werden.  In manchen Fällen werden
726 so viele Meldungen ausgegeben, dass die Lesbarkeit der restliche
727 Ausgabe davon beeinträchtigt wird.
728
729 @item Abgebrochen (core dumped)
730 Dies bezeichnet einen ernsten Programmierfehler, der das Programm
731 zum Absturz gebracht hat.  Solche Fehler werden als kritisch angesehen.
732 Falls daher einer auftritt, senden Sie bitte einen Bug-Report!
733
734 @end table
735
736 @cindex Fehlermeldung, Format
737 @cindex Form der Fehlermeldungen
738 Wenn Warnungen oder Fehlermeldungen mit einer konkreten Stelle in der
739 Eingabedatei verknüpft werden können, dann hat die Meldung die folgende
740 Form:
741
742 @example
743 @var{Dateiname}:@var{Zeile}:@var{Spalte}: @var{Meldung}
744 @var{Fehlerhafte Eingabezeile}
745 @end example
746
747 Ein Zeilenumbruch wird in der fehlerhaften Zeile an jener Stelle eingefügt,
748 wo der Fehler aufgetreten ist.  Zum Beispiel
749
750 @example
751 test.ly:2:19: Fehler: keine gültige Dauer: 5
752   @{ c'4 e'
753              5 g' @}
754 @end example
755
756 Diese Stellen sind LilyPonds Vermutung, wo die Warnung oder der Fehler
757 aufgetreten ist, allerdings treten Warnungen und Fehler ja gerade in
758 unerwarteten Fällen auf.  Manchmal kann Lilypond auch eine fehlerhafte
759 Stelle zwar noch problemlos verarbeiten, ein paar Zeilen später wirkt
760 sich der Fehler aber dann doch noch aus.  In solchen Fällen, wo Sie in
761 der angegebenen Zeile keinen Fehler erkennen, sollten Sie auch die Zeilen
762 oberhalb der angegebenen Stelle genauer unter die Lupe nehmen.
763
764 Mehr Information darüber findet sich in @ref{Häufige Fehlermeldungen}.
765
766
767
768 @node Häufige Fehlermeldungen
769 @section Häufige Fehlermeldungen
770 @translationof Common errors
771
772 Die Fehlermeldungen, die unten beschrieben werden, treten of auf,
773 es ist jedoch nicht immer einfach, die Urache zu finden.  Wenn
774 der Fehler einmal verstanden ist, kann er einfach behoben werden.
775
776
777 @menu
778 * Noten laufen aus der Seite heraus::
779 * Ein zusätzliches System erscheint::
780 * Offensichtlicher Fehler in ../ly/init.ly::
781 * Fehlermeldung Ungebundene Variable %::
782 * Fehlermeldung FT_Get_Glyph_Name::
783 * Warnung über absteigende staff affinities::
784 @end menu
785
786 @node Noten laufen aus der Seite heraus
787 @unnumberedsubsec Noten laufen aus der Seite heraus
788 @translationof Music runs off the page
789
790 Noten, die rechts aus der Seite herauslaufen oder sehr komprimiert
791 aussehen, liegen in fast allen Fällen an einer falschen Notendauer
792 einer Note, die dazu fürt, dass die letzte Note im Takt über die
793 Taktgrenze hinwegdauert.  Es ist nicht falsch, wenn die letzte
794 Note eines Taktes über den Takt hinausdauert, weil einfach angenommen
795 wird, dass sie im nächsten Takt fortgesetzt wird.  Aber wenn eine
796 längere Sequenz dieser überhängenden Noten auftritt, können die
797 Noten sehr gedrängt aussehen oder über den Seitenrand fließen, weil
798 die automatische Zeilenumbruchsfunktion einen Umbruch nur am Ende
799 eines vollständigen Taktes einfügen kann, also wenn alle Noten
800 zum Ende des Taktstriches auch wirklich aufhören.
801
802 @warning{Eine falsche Dauer kann dazu führen, dass Zeilenumbrüche
803 nicht möglich sein und die Zeile entweder sehr gedrängt dargestllt
804 wird oder über den Seitenrand fließt.}
805
806 Die falsche Dauer kann einfach gefunden werden, wenn Taktstrichüberprüfung
807 eingesetzt wird, siehe @ruser{Takt- und Taktzahlüberprüfung}.
808
809 If you actually intend to have a series of such carry-over measures
810 you will need to insert an invisible bar line where you want the
811 line to break.  For details, see @ruser{Taktstriche}.
812
813
814 @node Ein zusätzliches System erscheint
815 @unnumberedsubsec Ein zusätzliches System erscheint
816 @translationof An extra staff appears
817
818 Wenn Kontext nicht explizit mit @code{\new} oder
819 @code{\context} erstellt werden, werden sie vom Programm erstellt,
820 sobald ein Befehl angetroffen wird, der im aktuellen Kontext nicht
821 funktioniert.  In einfachen Partituren ist diese automatische
822 Erstellung sehr nützlich und die meisten Beispiele der LilyPond-Handbücher
823 benutzen diese Schreiberleicherterung.  Manchmal jedoch kann es
824 vorkommen, dass durch die automatische Erstellung von Systemen aufeinmal
825 unerwartete Notensysteme erstellt werden.  Beispielsweise könnte man
826 annehmen, dass folgendes Beispiel alle Notenköpfe in dem Notensystem
827 rot macht, aber als Resultat hat man zwei Systeme, während die
828 Notenköpfe immernoch schwarz im unteren System erscheinen.
829
830 @lilypond[quote,verbatim,relative=2]
831 \override Staff.NoteHead #'color = #red
832 \new Staff { a }
833 @end lilypond
834
835 Das liegt daran, dass kein @code{Staff}-Kontext existiert, wenn
836 der @code{\override}-Befehl verarbeitet wird, sodass ein System
837 für diesen Befehl erstellt wird.  Dann aber erstellt @code{\new Staff}
838 noch ein zusätzliches System, wo die Noten gesetzt werden.  Die
839 richtige Schreibweise wäre:
840
841 @lilypond[quote,verbatim,relative=2]
842 \new Staff {
843   \override Staff.NoteHead #'color = #red
844   a
845 }
846 @end lilypond
847
848 Ein zweites Beispiel zeigt, dass ein @code{\relative}-Befehl innerhalb
849 von @code{\repeat} zwei Systeme erstellt, wobei der zweite etwas verschoben
850 ist.  Das liegt daran, dass @code{\repeat} zwei @code{\relative}-Umgebungen
851 erstellt, die jede implizit einen @code{Staff}- und @code{Voice}-Kontext
852 erstellen.
853
854 @lilypond[quote,verbatim]
855 \repeat unfold 2 {
856   \relative c' { c4 d e f }
857 }
858 @end lilypond
859
860 Indem man die @code{Voice}-Kontexte explizit erstellt, kann das Problem
861 umgangen werden.
862
863 @lilypond[quote,verbatim]
864 \new Voice {
865   \repeat unfold 2 {
866     \relative c' { c4 d e f }
867   }
868 }
869 @end lilypond
870
871
872 @node Offensichtlicher Fehler in ../ly/init.ly
873 @unnumberedsubsec Offensichtlicher Fehler in ../ly/init.ly
874 @translationof Apparent error in @code{../ly/init.ly}
875
876 Verschiedene seltsame Fehlermeldungen können über Syntax-Fehler in
877 @file{../ly/init.ly} auftauchen, wenn die Eingabedatei nicht richtig
878 formuliert ist, wenn sie etwa nicht richtig passende Klammerpaare
879 oder Anführungszeichen enthält.
880
881 Der üblichste Fehler ist das Fehlen einer geschweiften Klammer
882 (@code{@}}) am Ende der @code{score}-Umbgebung.  Die Lösung ist hier
883 klar: überprüfen Sie, ob die @code{score}-Umgebung richtig beendet
884 wurde.  Die richtige Struktur einer Eingabedatei wird beschrieben
885 in @rlearning{Wie eine LilyPond-Eingabe-Datei funktioniert}.
886 Ein Editor, der die Klammerpaare automatisch anzeigt, ist sehr
887 hilfreich, um derartige Fehler zu vermeiden.
888
889 Eine weitere übliche Fehlerquelle ist kein Leerzeichen zwischen der
890 letzten Silbe einer @code{lyrics}-Umgebung und der schließenden
891 Klammer (@code{@}}).  Ohne diese Trennung wird die Klammer als
892 Teil der Silbe gewertet.  Es bietet sich immer an, Leerzeichen vor
893 und hinter @emph{jede} Klammer zu setzen.  Wie wichtig das ist, wenn
894 Gesangstext eingesetzt wird, siehe @ruser{Eingabe von Text}.
895
896 Diese Fehlermeldung kann auch mit einem fehlenden schließenden Anführungszeichen
897 (@code{"}) auftreten.  In diesem Fall sollte die begleitende Fehlermeldung
898 eine Zeilenzahl angeben, die dicht am Fehler liegt.  Die nicht paarigen
899 Anführungszeichen sind meistens ein oder zwei Zeilen darüber.
900
901
902 @node Fehlermeldung Ungebundene Variable %
903 @unnumberedsubsec Fehlermeldung Ungebundene Variable %
904 @translationof Error message Unbound variable %
905
906 Diese Fehlermeldung erscheint am Ende der Kommandozeilenausgabe oder in der
907 Log-Datei mit einer Meldung @qq{GUILE signalled an error ...}
908 jedes Mal, wenn eine Scheme-Routine aufgerufen wird, die
909 (falscherweise) ein @emph{LilyPond}-Kommentar und kein
910 @emph{Scheme}-Kommentar enthält.
911
912 LilyPond-Kommentare befginnen mit dem Prozent-Zeichen (@code{%}) und
913 dürfen nicht in Scheme-Routinen benutzt werden.  Scheme-Kommentare beginnen
914 mit einem Semikolon (@code{;}).
915
916 @node Fehlermeldung FT_Get_Glyph_Name
917 @unnumberedsubsec Fehlermeldung FT_Get_Glyph_Name
918 @translationof Error message FT_Get_Glyph_Name
919
920 Diese Fehlermeldung erscheint in der Kommandozeilenausgabe, wenn die
921 Datei ein Zeichen enthält, das nicht zu ASCII gehört und die Datei
922 nicht in UTF-8-Kodierung gespeichert wurd.  Sie auch @ruser{Zeichenkodierung}.
923
924
925 @node Warnung über absteigende staff affinities
926 @unnumberedsubsec Warnung über absteigende staff affinities
927 @translationof Warning staff affinities should only decrease
928
929 Diese Warnung erscheint, wenn keine Notensysteme in der Ausgabe vorhanden
930 sind, wenn etwa nur @code{ChordName}-Kontext und @code{Lyrics}-Kontext
931 in einem Liedblatt vorhanden sind.  Die Warnungen können vermieden werden,
932 indem man einen der Kontexte als System erscheinen lässt, indem man ihm
933 zu Beginn hinzufügt:
934
935 @example
936 \override VerticalAxisGroup #'staff-affinity = ##f
937 @end example
938
939 Zu Einzelheiten siehe @qq{Abstand von Nicht-Notensystemzeilen} in
940 @ruser{Flexible vertikale Abstände in Systemgruppen}.