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