1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
4 Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09
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..
13 @c Translators: Reinhold Kainhofer, Till Paala
14 @c Translation checkers: Till Paala
16 @node lilypond starten
17 @chapter @command{lilypond} starten
18 @translationof Running lilypond
20 Dieses Kapitel behandelt die technischen Details, wie Lilypond ausgeführt werden kann.
24 * Übliche Programmbenutzung::
25 * Benutzung auf der Kommandozeile::
27 * Häufige Fehlermeldungen::
30 @node Übliche Programmbenutzung
31 @section Übliche Programmbenutzung
32 @translationof Normal usage
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.
40 @node Benutzung auf der Kommandozeile
41 @section Benutzung auf der Kommandozeile
42 @translationof Command-line usage
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.
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,
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.
65 * Optionen auf der Kommandozeile für lilypond::
66 * Umgebungsvariablen::
67 * LilyPond in chroot-Kerker::
70 @node lilypond aufrufen
71 @unnumberedsubsec @command{lilypond} aufrufen
72 @translationof Invoking lilypond
74 @cindex @command{lilypond} aufrufen
75 @cindex Kommandozeilen-Optionen für @command{lilypond}
76 @cindex Optionen an der Kommandozeile
78 Das @command{lilypond} Programm kann folgendermaßen von der Kommandozeile
82 lilypond [@var{Option}]@dots{} @var{Dateiname}@dots{}
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{-})
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.}
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
106 #(define output-suffix "Geige")
108 #(define output-suffix "Cello")
113 erzeugt daher die Dateien @var{Dateiname}@file{-Geige.pdf} und
114 @var{Dateiname}@file{-Cello-1.pdf}.
118 @unnumberedsubsubsec Häufige Kommandozeilenbefehle
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:
127 @code{lilypond file.ly 1>stdout.log} um normale Ausgabe zu erhalten
129 @code{lilypond file.ly 2>stderr.log} um Fehlermeldungen zu erhalten
132 @code{lilypond file.ly &>all.log} um alle Meldungen zu erhalten
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
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
147 Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt:
149 @cindex @command{lilypond} auf der Kommandozeile
150 @cindex Kommandozeile, @command{lilypond} aufrufen
151 @cindex Optionen, Kommandozeile
152 @cindex Terminal, @command{lilypond} aufrufen
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
162 @cindex Point and Click, Kommandozeile
174 Folgende Optionen werden unterstützt:
176 @cindex Hilfe, Kommandozeile
181 Die Ausführung von @code{lilypond -dhelp} zeigt alle verfügbaren
182 @option{-d}-Optionen.
184 @cindex Papierformat, Kommandozeile
187 Setzt das Standard-Papierformat,
189 -dpaper-size=\"letter\"
193 Die Zeichenkette, die das Format angibt, muss in Anführungszeichen mit Backslash
194 ( @code{\"} ) stehen.
196 @cindex sicher, Kommandozeile
197 @cindex safe, Kommandozeile
200 Vertraut der @file{.ly} Datei nicht.
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:
211 c4^$(ly:gulp-file "/etc/passwd")
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.
222 Zusätzliche verbietet der sichere Modus auch @code{\include} Befehle.
224 Im sicheren Modus ist es nicht möglich, LilyPond-Variablen nach Scheme
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.
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
239 @cindex Ausgabeformat, Definition von
242 Gibt an, welches Ausgabeformat das LilyPond Backend benutzt. Mögliche Werte
243 für diese Option sind:
247 PostScript-Ausgabeformat.
249 @cindex PostScript Ausgabeformat
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.
256 @cindex PostScript Ausgabeformat
257 @cindex EPS (encapsulated PostScript)
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.
264 Dies ist die Standardeinstellung von @command{lilypond-book}.
266 @cindex SVG (scalable vector graphics)
267 @cindex Vektorgraphik (SVG)
271 SVG-Ausgabe (Scalable Vector Graphics).
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.
285 gibt die rohen Scheme-basierenden Zeichenbefehle aus (@qq{Scheme-dump}),
286 wie sie intern von LilyPond benutzt werden.
289 Keine Partitur wird ausgegeben, hat gleichen Effekt wie @option{-dno-print-pages}.
293 Beispiel: @code{lilypond -dbackend=svg @var{Dateiname}.ly}
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.
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.
310 Stiller Durchlauf, alle Ausgabe wird in eine Log-Datei umgeleitet.
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.
319 Erzeugt vollständige Seiten (Standardeinstellung). @option{-dno-print-pages}
320 ist in Verbindung mit @option{-dpreview} nützlich.
324 @cindex Scheme, Auswertung von Ausdrücken
325 @cindex Auswertung von Ausdrücken, Scheme
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.
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:
338 lilypond -e '(define-public a 42)'
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:
345 #(use-modules (guile-user))
348 @warning{Windows-Benutzer müssen doppelte anstelle der einfachen
349 Anführungsstriche einsetzen.}
351 @cindex Ausgabeformat
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}.
357 Beispiel: @code{lilypond -fpng @var{Dateiname}.ly}
360 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
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.
366 @item -i,--init=@var{Initialisierungsdatei}
367 Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der
368 Standardwert ist @file{init.ly}.
370 @item -I, --include=@var{Verzeichnis}
371 Fügt @var{Verzeichnis} zur Liste der Suchpfade hinzu.
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.
380 @cindex Kerker, Programm ausführen
381 @cindex Jail, Programm ausführen
383 @item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis}
384 Führt @command{lilypond} in einem chroot-Jail aus.
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.
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.
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
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.
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.
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.
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.
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.
447 @cindex Ausgabe, Ausführlichkeit
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:
456 Keine Ausgabe, nicht einmal Fehlermeldungen.
459 Nur Fehlermeldungen, keine Warnungen oder Fortschrittsmeldungen.
462 Warnungen und Fehlermeldungen, keine Fortschrittsmeldungen.
465 Grundlegende Fortschrittsmeldungen (Erfolg), Warnungen und Fehler.
468 Alle Fortschrittsmeldungen, Warnungen und Fehler.
470 @item INFO (Standard)
471 Fortschrittmeldungen, Warnungen, Fehlermeldungen und weiter
472 Information über die Ausführung.
475 Alle möglichen Meldungen, die auch mit der Fehlersuche (Debug) zu tun
480 @cindex Verzeichnis, Ausgabe speichern in
481 @cindex Ausgabedateiname
482 @cindex Dateiname der Ausgabe bestimmen
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).
491 @cindex PostScript-Ausgabe
497 @cindex Portable Network Graphics (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
508 @cindex Portable Document Format (PDF)
511 Erzeugt PDF-Dateien. Dies impliziert @code{--ps}.
514 Gibt die Versionsnummer aus.
517 Gibt ausführliche informative Meldungen aus: Zeigt die vollen Dateipfade
518 aller gelesenen Dateien sowie Informationen über die Laufzeit.
521 Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht
522 @strong{KEINERLEI GARANTIE}!)
527 @node Umgebungsvariablen
528 @unnumberedsubsec Umgebungsvariablen
529 @translationof Environment variables
532 @cindex LILYPOND_LOGLEVEL
533 @cindex LILYPOND_DATADIR
534 @cindex Variablen, Umgebungs-
535 @cindex Umgebungsvariablen
537 @command{lilypond} erkennt und benützt die folgenden Umgebungsvariablen:
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.
545 Gibt die Sprache an, in der Warnungen und Fehlermeldungen ausgegeben werden.
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.
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}.
561 @node LilyPond in chroot-Kerker
562 @unnumberedsubsec LilyPond in chroot-Kerker
563 @translationof LilyPond in chroot jail
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.
572 @item Installieren Sie die nötigen Pakete: LilyPond, GhostScript und ImageMagick.
574 @item Erstellen Sie einen neuen Benutzer mit dem Namen @code{lily}:
581 Hierdurch wird auch eine Gruppe @code{lily} und ein Heimat-Ordner
582 @code{/home/lily} für den neuen Benutzer erstellt.
584 @item Im Heimat-Ordner des Benutzers @code{lily} erstellen Sie eine Datei, die als
585 eigenes Dateisystem eingesetzt wird:
588 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
592 In diesem Beispiel wird eine 200-MB-Datei als Kerker-Dateisystem erstellt.
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:
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
607 @item In der Konfiguration des Servers ist der Kerker (JAIL) @code{/mnt/lilyloop}
608 und das Verzeichnis (DIR) @code{/lilyhome}.
610 @item Erstellen Sie einen großen Verzeichnisbaum in dem Kerker, indem Sie die
611 notwendigen Dateien dorthin kopiert, wie das Beispielskript unten zeigt.
613 Sie könne @code{sed} benutzen, um die notwendigen Kopierbefehle für ein
614 bestimmtes Programm zu erstellen:
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
625 @subheading Beispiel-Skript für 32-bit Ubuntu 8.04
633 loopdevice=/dev/loop0
634 jaildir=/mnt/lilyloop
635 # the prefix (without the leading slash!)
637 # the directory where lilypond is installed on the system
638 lilydir=/$lilyprefix/lilypond/
640 userhome=$home/$username
641 loopfile=$userhome/loopfile
643 dd if=/dev/zero of=$loopfile bs=1k count=200000
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
652 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
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
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
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
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
680 @node Fehlermeldungen
681 @section Fehlermeldungen
682 @translationof Error messages
684 @cindex error messages
685 @cindex Fehlermeldungen
687 Während der Verarbeitung einer Dateien können diverse Meldungen an der
688 Kommandozeile auftreten:
692 @item Warnung (Warning)
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.
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.
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.
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.
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.
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!
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
743 @var{Dateiname}:@var{Zeile}:@var{Spalte}: @var{Meldung}
744 @var{Fehlerhafte Eingabezeile}
747 Ein Zeilenumbruch wird in der fehlerhaften Zeile an jener Stelle eingefügt,
748 wo der Fehler aufgetreten ist. Zum Beispiel
751 test.ly:2:19: Fehler: keine gültige Dauer: 5
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.
764 Mehr Information darüber findet sich in @ref{Häufige Fehlermeldungen}.
768 @node Häufige Fehlermeldungen
769 @section Häufige Fehlermeldungen
770 @translationof Common errors
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.
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::
786 @node Noten laufen aus der Seite heraus
787 @unnumberedsubsec Noten laufen aus der Seite heraus
788 @translationof Music runs off the page
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.
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.}
806 Die falsche Dauer kann einfach gefunden werden, wenn Taktstrichüberprüfung
807 eingesetzt wird, siehe @ruser{Takt- und Taktzahlüberprüfung}.
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}.
814 @node Ein zusätzliches System erscheint
815 @unnumberedsubsec Ein zusätzliches System erscheint
816 @translationof An extra staff appears
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.
830 @lilypond[quote,verbatim,relative=2]
831 \override Staff.NoteHead #'color = #red
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:
841 @lilypond[quote,verbatim,relative=2]
843 \override Staff.NoteHead #'color = #red
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
854 @lilypond[quote,verbatim]
856 \relative c' { c4 d e f }
860 Indem man die @code{Voice}-Kontexte explizit erstellt, kann das Problem
863 @lilypond[quote,verbatim]
866 \relative c' { c4 d e f }
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}
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.
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.
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}.
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.
902 @node Fehlermeldung Ungebundene Variable %
903 @unnumberedsubsec Fehlermeldung Ungebundene Variable %
904 @translationof Error message Unbound variable %
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.
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{;}).
916 @node Fehlermeldung FT_Get_Glyph_Name
917 @unnumberedsubsec Fehlermeldung FT_Get_Glyph_Name
918 @translationof Error message FT_Get_Glyph_Name
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}.
925 @node Warnung über absteigende staff affinities
926 @unnumberedsubsec Warnung über absteigende staff affinities
927 @translationof Warning staff affinities should only decrease
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
936 \override VerticalAxisGroup #'staff-affinity = ##f
939 Zu Einzelheiten siehe @qq{Abstand von Nicht-Notensystemzeilen} in
940 @ruser{Flexible vertikale Abstände in Systemgruppen}.