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