X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fcs%2Fusage%2Frunning.itely;fp=Documentation%2Fcs%2Fusage%2Frunning.itely;h=9c70ff117e59214403dd6dde33f4fd06cae145d7;hb=941dff9d2a67080e0dd8474f1e70f0c72ace6424;hp=0000000000000000000000000000000000000000;hpb=5a22d6233a39d3164e1ca043244794c268be4ad0;p=lilypond.git diff --git a/Documentation/cs/usage/running.itely b/Documentation/cs/usage/running.itely new file mode 100644 index 0000000000..9c70ff117e --- /dev/null +++ b/Documentation/cs/usage/running.itely @@ -0,0 +1,878 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*- + +@ignore + Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 + + When revising a translation, copy the HEAD committish of the + version that you are working on. For details, see the Contributors' + Guide, node Updating translation committishes.. +@end ignore + +@c \version "2.14.0" + +@c Translators: Pavel Fric + +@node Spouštíme lilypond +@chapter Spouštíme @command{lilypond} +@translationof Running lilypond + +Dieses Kapitel behandelt die technischen Details, wie Lilypond ausgeführt werden kann. + + +@menu +* Běžné používání programu:: +* Použití v příkazovém řádku:: +* Chybová hlášení:: +* Častá chybová hlášení:: +@end menu + +@node Běžné používání programu +@section Běžné používání programu +@translationof Normal usage + +Die meisten Benutzer führen LilyPond von einer graphischen Benutzeroberfläche +aus. Siehe @rlearning{Übung}, falls Sie dies nicht bereits getan haben. Wenn +Sie einen alternativen Editor für Ihre LilyPond-Dateien verwenden, lesen Sie +bitte die Dokumentation dieses Editors. + + +@node Použití v příkazovém řádku +@section Použití v příkazovém řádku +@translationof Command-line usage + +Dieser Abschnitt enthält zusätzliche Informationen, wie Sie LilyPond +von der Kommandozeile ausführen können. Dies kann erforderlich sein, +um etwa zusätzliche Optionen an das Programm zu übergeben. Außerdem +sind einige Zusatzprogramme (wie etwa @code{midi2ly}) nur von der +Kommandozeile verfügbar. + +Unter @q{Kommandozeile} verstehen wir die Kommandozeile des jeweiligen +Betriebssystems. Windows Benutzern ist sie vielleicht eher unter den +englischen Begriffen @q{DOS shell} oder @q{command shell} bekannt. +MacOS@tie{}X Benutzer kennen sie eher unter @q{Terminal} oder @q{Konsole}. +Einige zusätzliche Einrichtungsarbeiten werden unter MacOS@tie{}X, +siehe @rweb{MacOS X}. + +Wie die Kommandozeile im jeweiligen Betriebssystem benutzt werden kann, +soll in diesem Handbuch nicht näher beschrieben werden. Sehen Sie bitte +im Handbuch Ihres Betriebssystems nach oder informieren Sie sich im +Internet, wenn Sie mit der Kommandozeile nicht vertraut sind. + + +@menu +* Vyvolání lilypondu:: +* Volby lilypondu v příkazovém řádku:: +* Proměnné prostředí:: +* LilyPond v žaláři chroot:: +@end menu + +@node Vyvolání lilypond +@subsection Vyvolání @command{lilypond} +@translationof Invoking lilypond + +@cindex @command{lilypond} aufrufen +@cindex Kommandozeilen-Optionen für @command{lilypond} +@cindex Optionen an der Kommandozeile + +Das @command{lilypond} Programm kann folgendermaßen von der Kommandozeile +aufgerufen werden. + +@example +lilypond [@var{Option}]@dots{} @var{Dateiname}@dots{} +@end example + + +Wird ein @file{Dateiname} ohne Erweiterung angegeben, so wird @file{.ly} als +Standarderweiterung für LilyPond-Dateien benutzt. Um Daten von +@code{stdin} einzulesen, benutzen Sie einfach einen Bindestrich (@code{-}) +als @var{Dateiname}. + +Wenn Lilypond die Datei @file{Dateiname.ly} verarbeitet, werden daraus +die Dateien @file{Dateiname.ps} und @file{Dateiname.pdf} erzeugt. +Es können an @code{lilypond} auch mehrere @file{.ly} Dateien übergeben +werden, die dann einzeln und voneinander unabhängig abgearbeitet +werden.@footnote{Der Zustand von GUILE wird allerdings nicht nach +jeder Datei zurückgesetzt, sodass Achtung geboten ist, wenn in einer +Datei globale Änderungen von Scheme aus durchgeführt werden.} + +Falls @file{Dateiname.ly} mehr als eine @code{\book}-Umgebung enthält, +werden die weiteren Stücke in durchnummerierte Dateien der Form +@file{Dateiname-1.pdf} ausgegeben. Zusätzlich wird der Wert der +Variable @code{output-suffix} zwischen den ursprünglichen Dateinamen +und der Zahl eingefügt. Eine Lilypond-Datei @file{Dateiname.ly} mit dem Inhalt + +@example +#(define output-suffix "Geige") +\score @{ @dots{} @} +#(define output-suffix "Cello") +\score @{ @dots{} @} +@end example + +@noindent +erzeugt daher die Dateien @var{Dateiname}@file{-Geige.pdf} und +@var{Dateiname}@file{-Cello-1.pdf}. + + + +@unnumberedsubsubsec Häufige Kommandozeilenbefehle + +Wenn Ihre Kommandozeile normale Weiterleitungen unterstützt, können +Sie es nützlich finden, mit folgenden Befehlen die Ausgabe der +Kommandozeile in eine Datei zu leiten: + +@itemize + +@item +@code{lilypond file.ly 1>stdout.log} um normale Ausgabe zu erhalten +@item +@code{lilypond file.ly 2>stderr.log} um chybová hlášení zu erhalten + +@item +@code{lilypond file.ly &>all.log} um alle Meldungen zu erhalten + +@end itemize + +Wenden Sie sich an die Dokumentation für Ihre Kommandozeile, um +zu sehen, ob derartige Optionen unterstützt werden oder die Syntax +unterschiedlich ist. Beachten Sie, dass es sich hier um +reine Verwaltungsprogramme handelt, die nichts mit LilyPond zu tun +haben. + + +@node Volby v příkazovém řádku pro lilypond +@subsection Volby v příkazovém řádku pro @command{lilypond} +@translationof Command line options for lilypond + +Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt: + +@cindex @command{lilypond} auf der Kommandozeile +@cindex Kommandozeile, @command{lilypond} aufrufen +@cindex Optionen, Kommandozeile +@cindex Terminal, @command{lilypond} aufrufen + +@table @code + +@item -e,--evaluate=@var{expr} +Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien +gelesen und interpretiert werden. +Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke +werden nacheinander ausgewertet. + +Da der Ausdruck im @code{guile-user} Modul ausgewertet wird, ist bei der +Definitionen innerhalb von @var{expr} folgendes Vorgehen nötig. An der +Kommandozeile wird z.B. @code{a} im @code{guile-user} Modul definiert: + +@example +lilypond -e '(define-public a 42)' +@end example + +@noindent +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: + +@example +#(use-modules (guile-user)) +@end example + + +@item -f,--format=@var{Format} +Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind +@code{svg}, @code{ps}, @code{pdf} und @code{png}. + +Beispiel: @code{lilypond -fpng @var{Dateiname}.ly} + + + +@item -d,--define-default=@var{Variable}=@var{Wert} +Damit wird die interne Programmoption @var{Variable} auf den Scheme-Wert +@var{Wert} gesetzt. Wird kein @var{Wert} angegeben, so wird @var{#t} benutzt. +Um eine Option auszuschalten, kann der Präfix @code{no-} dem Namen +@var{Variable} der Variable vorangestellt werden. So ist etwa + +@cindex Point and Click, Kommandozeile + +@example +-dno-point-and-click +@end example + +@noindent +dasselbe wie +@example +-dpoint-and-click='#f' +@end example + +Hier sind ein paar interessante Optionen: + +@cindex Hilfe, Kommandozeile + +@table @samp +@item help +Die Ausführung von @code{lilypond -dhelp} zeigt alle verfügbaren @code{-d} +Optionen. + +@cindex Papierformat, Kommandozeile + +@item paper-size +Setzt das Standard-Papierformat, +@example +-dpaper-size=\"letter\" +@end example + +@noindent +Die Zeichenkette, die das Format angibt, muss in Anführungszeichen mit Backslash +( @code{\"} ) stehen. + +@cindex sicher, Kommandozeile +@cindex safe, Kommandozeile + +@item safe +Vertraut der @file{.ly} Datei nicht. + +Wenn LilyPond über einen Webserver verfügbar gemacht wird, @b{MUSS} unbedingt +eine die Optionen @code{--safe} oder @code{--jail} angegeben werden. +Die @code{--safe} Option verhindert, dass in der @file{.ly}-Datei angegebener +Scheme-Code das System gefährden kann, wie etwa in folgendem Beispiel: + +@quotation +@verbatim +#(system "rm -rf /") +{ + c4^#(ly:export (ly:gulp-file "/etc/passwd")) +} +@end verbatim +@end quotation + +Mit der @code{-dsafe} Option werden alle Scheme-Ausdrücke einem speziellen +sicheren Modus ausgewertet. Dieser Modus ist vom GUILE @file{safe-r5rs} Modul +abgeleitet und fügt noch zahlreiche weitere erlaubte Funktionen der +LilyPond Programm-Schnittstelle hinzu. Diese Funktionen sind in +@file{scm/safe-lily.scm} angegeben. + +Zusätzliche verbietet der sichere Modus auch @code{\include} Befehle. + +Im sicheren Modus ist es nicht möglich, LilyPond-Variablen nach Scheme +zu exportieren. + +@code{-dsafe} erkennt jedoch @emph{KEINE} Überbeanspruchung der verfügbaren +Ressourcen. In diesem Modus ist es also trotzdem möglich, dass LilyPond in einer +Endlosschleife hängt, z.B. wenn zyklische Datenstrukturen an das Backend +übergeben werden. Wenn LilyPond also auf einem öffentlich zugänglichen +Webserver verfügbar gemacht wird, sollte der Prozess sowohl in der CPU- +als auch in der Speichernutzung limitiert werden. + +Der sichere Modus verhindert auch, dass zahlreiche nützliche +Musikfragmente von LilyPond verarbeitet werden. Die @code{--jail} Option ist +eine sicherere Alternative, benötigt allerdings auch mehr Aufwand zur +Einrichtung. + +@cindex Ausgabeformat, Definition von + +@item backend +Gibt an, welches Ausgabeformat das LilyPond Backend benutzt. Mögliche Werte +für diese Option sind: + +@table @code +@item ps +PostScript-Ausgabeformat. + +@cindex PostScript Ausgabeformat + +Postscript-Dateien enthalten auch TTF-, Type1- und OTF-Schriften. Allerdings +wird die gesamte Schriftart eingefügt und nicht nur die benötigten Zeichen. +Vor allem wenn nicht-westliche Zeichensätze benutzt werden, kann dies zu sehr +großen Dateien führen. + +@cindex PostScript Ausgabeformat +@cindex EPS (encapsulated PostScript) + +@item eps +Erzeugt @q{encapsulated PostScript} (EPS). Jede Seite (oder jedes System) wird +als eigene @file{EPS}-Datei ausgegeben, inklusive Schriftarten. Außerdem wird +eine Datei mit allen Seiten (bzw. Systemen) und Schriftarten erzeugt. + +Dies ist die Standardeinstellung von @command{lilypond-book}. + +@cindex SVG (scalable vector graphics) +@cindex Vektorgraphik (SVG) + +@item svg + +SVG-Ausgabe (Scalable Vector Graphics). + +Hiermit wird eine einzelne SVG-Datei ohne eingebundene Schriften +für jede Seite der Partitur erstellt. Es wird empfohlen, Century +Schoolbook-Schriftarten zu installieren, die auch in der LilyPond-Installation +enthalten sind, um optimales Rendern zu erhalten. Unter UNIX können +diese Schriftarten einfach aus dem LilyPond-Verzeichnis (normalerweise +@file{/usr/share/lilypond/@/VERSION/fonts/otf/}) nach @file{~/.fonts} +kopiert werden. Die SVG-Ausgabe sollte mit allen SVG-Editoren oder +Betrachtungsprogrammen kompatibel sein. + +@cindex Scheme-dump + +@item scm +gibt die rohen Scheme-basierenden Zeichenbefehle aus, wie sie intern von +LilyPond benutzt werden. + +@cindex Scheme dump + +@item null +Keine Partitur wird ausgegeben, hat gleichen Effekt wie @code{-dno-print-pages}. + +@end table + +Beispiel: @code{lilypond -dbackend=svg @var{Dateiname}.ly} + +@cindex Vorschau + +@item preview +Erzeugt eine Ausgabedatei, die nur die Titelzeilen und das erste System +enthält. Wenn @code{\bookpart}-Umgebungen benutzt werden, erscheinen die +Titel und ersten Systeme jedes @code{\bookpart}-Abschnitts in der Datei. +Die Backends @code{ps}, @code{eps} und @code{svg} unterstützen diese Option. + +@item print-pages +Erzeugt vollständige Seiten (Standardeinstellung). @code{-dno-print-pages} +ist in Verbindung mit @code{-dpreview} nützlich. + +@end table + + + +@item -h,--help +Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. + +@item -H,--header=@var{FELD} +Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei +@file{Dateiname.@var{FELD}} aus. + +@item --include, -I=@var{Verzeichnis} +Fügt @var{Verzeichnis} zur Liste der Suchpfade hinzu. + +@cindex Dateisuche +@cindex Suchpfad + +Mehrere -I-Optionen können angegeben werden. Die Suche beginnt mit dem +ersten definierten Verzeichnis und setzt in den weiteren Verzeichnissen +fort, wenn die gesuchte Datei nicht in dem Verzeichnis gefunden wird. + +@item -i,--init=@var{Initialisierungsdatei} +Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der +Standardwert ist @file{init.ly}. + +@cindex Verzeichnis, Ausgabe speichern in +@cindex Ausgabedateiname + +@item -o,--output=@var{DATEI} +Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei +@var{DATEI}. Wenn ein Verzeichnis mit dem Namen existiert, werden die Ausgabedateien +in dieses Verzeichnis gespeichert, wobei der Dateiname der Eingabedatei +benutzt wird. Die entsprechende Dateinamenserweiterung wird angehängt (z.B. +@code{.pdf} für pdf). + +@cindex PostScript-Ausgabe + +@item --ps +Erzeugt PostScript. + +@cindex PNG-Ausgabe +@cindex Portable Network Graphics (PNG) + +@item --png +Erzeugt eine Grafik-Datei im PNG-Format von jeder Seite. Diese Option +impliziert auch @code{--ps}. Die Auflösung in DPI der Grafik kann festgelegt +werden durch +@example +-dresolution=110 +@end example + +@cindex PDF-Ausgabe +@cindex Portable Document Format (PDF) + +@item --pdf +Erzeugt PDF-Dateien. Dies impliziert @code{--ps}. + +@item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis} +Führt @command{lilypond} in einem chroot-Jail aus. + +Die @code{--jail} Option ist eine flexiblere Alternative zu @code{--safe}, wenn +LilyPond über das Internet verfügbar gemacht wird oder LilyPond-Quelldateien +von Dritten automatisch verarbeitet werden. + +Sie funktioniert dergestalt, dass das Wurzelverzeichnis von +@command{lilypond} auf @var{Jail-Verzeichnis} gesetzt wird, bevor die +tatsächliche Kompilierung der @file{.ly}-Datei beginnt. Der Benutzer und die Gruppe +werden auf die angegebenen Werte gesetzt und das aktuelle Arbeitsverzeichnis +wird ebenfalls auf den angegebenen Wert @var{Arbeitsverzeichnis} gesetzt. +Diese Einstellungen garantieren (zumindest in der Theorie), dass es nicht +möglich ist, aus dem Jail auszubrechen. Damit @code{--jail} funktioniert, muss +@command{lilypond} allerdings als root ausgeführt werden, was normalerweise +auf sichere Art mit dem Kommando @command{sudo} erreicht werden kann. + +Das Jail-Verzeichnis zu erstellen ist etwas heikel, da LilyPond alle zur +Ausführung nötigen Bibliotheken und Dateien @emph{innerhalb des +Jail-Verzeichnisses} finden muss. Ein typisches Setup besteht aus folgenden +Punkten: + +@table @asis +@item Erstellung eines getrennten Dateisystems +Ein eigenes Dateisystem muss für LilyPond erstellt werden, sodass es mit +sicheren Einstellungen wie @code{noexec}, @code{nodev} und @code{nosuid} +eingebunden werden kann. Damit ist es unmöglich, Programme von diesem +Dateisystem auszuführen oder direkt auf eine Hardware-Schnittstelle +zuzugreifen. Wenn Sie keine eigene Partition erstellen möchten, können Sie +auch eine Datei der entsprechenden Größe erstellen und sie als @q{loop}-Gerät +einbinden. Ein getrenntes Dateisystem garantiert auch, dass LilyPond nicht +mehr Festplattenspeicher benutzt als erlaubt. + +@item Erstellung eines eigenen Benutzerkontos +Es sollte ein eigener Benutzer und eine eigene Gruppe (z. B. +@code{lily}/@code{lily}) mit geringen Rechten für die Ausführung von LilyPond +innerhalb des Jails benutzt werden. Nur ein einziges Verzeichnis des Jails sollte +für den Benutzer schreibbar sein und als @var{Arbeitsverzeichnis} an +@code{lilypond} übergeben werden. + +@item Einrichtung des Jails +LilyPond muss zahlreiche Dateien für die Ausführung einlesen. All diese +Dateien müssen in das Jail-Verzeichnis kopiert werden (mit denselben Pfaden +wie im tatsächlichen Wurzel-Dateisystem). Die gesamte LilyPond-Installation +(typischerweise @file{/usr/share/lilypond}) sollte kopiert werden. + +Falls Probleme auftreten, ist es am einfachsten, Lilypond mittels +@command{strace} zu starten, wodurch Sie relativ leicht feststellen können, +welche Dateien im Jail noch fehlen. + +@item Ausführung von LilyPond +In einem mit @code{noexec} eingebundenen Jail ist es nicht möglich, externe +Programme auszuführen. Daher muss LilyPond auf eine Art gestartet werden, +die keine weitere Ausführung von Programmen benötigt. Wie bereits erwähnt +muss LilyPond mit Administrator-Rechten gestartet werden (die es allerdings +sofort wieder abgibt), beispielsweise mittels @command{sudo}. Außerdem +ist es eine gute Idee, die LilyPond zur Verfügung stehende CPU-Zeit zu +limitieren (z. B. mit @command{ulimit -t}) und -- falls das Betriebssystem +dies unterstützt -- auch den zur Verfügung stehenden Hauptspeicher. +@end table + + +@item -v,--version +Gibt die Versionsnummer aus. + +@item -V,--verbose +Gibt ausführliche informative Meldungen aus: Zeigt die vollen Dateipfade +aller gelesenen Dateien sowie Informationen über die Laufzeit. + +@item -w,--warranty +Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht +@strong{KEINERLEI GARANTIE}!) +@end table + + +@node Proměnné prostředí +@subsection Proměnné prostředí +@translationof Environment variables + +@cindex LANG +@cindex LILYPOND_DATADIR +@cindex Proměnné, prostředí +@cindex Proměnné prostředí + +@command{lilypond} erkennt und benützt die folgenden proměnné prostředí: +@table @code +@item LILYPOND_DATADIR +Diese Variable gibt das Verzeichnis an, wo Lilypond seine eigenen Dateien, +Meldungen und Übersetzungen finden kann. Dieses Verzeichnis sollte +Unterverzeichnisse @file{ly/}, @file{ps/}, @file{tex/}, etc. beinhalten. + +@item LANG +Gibt die Sprache an, in der Warnungen und chybová hlášení ausgegeben werden. + +@item LILYPOND_GC_YIELD +Mit dieser Variable (mit Werten zwischen 0 und 100) kann die Feinabstimmung +zwischen dem Bedarf an Hauptspeicher und Rechenleistung bei der Ausführung +von LilyPond durchgeführt werden. Bei höheren Werten benutzt LilyPond +mehr Hauptspeicher, benötigt aber weniger Prozessor-Leistung. Bei +niedrigeren Werten wird mehr Prozessor-Zeit, dafür weniger Hauptspeicher +benötigt. Voreinstellung ist ein Wert von @code{70}. + +@end table + + + +@node LilyPond v žaláři chroot +@unnumberedsubsec LilyPond v žaláři chroot +@translationof LilyPond in chroot jail + +Einen Server einzurichten, der LilyPond in einem chroot-Kerker bedient, ist +recht kompliziert. Die einzelnen Schritten finden sich unten aufgeliestet. +Beispiele sind für Ubuntu Linux und erfordern evtl. die Benutzung von +@code{sudo} an den entsprechenden Stellen. + +@itemize + +@item Installieren Sie die nötigen Pakete: LilyPond, GhostScript und ImageMagick. + +@item Erstellen Sie einen neuen Benutzer mit dem Namen @code{lily}: + +@example +adduser lily +@end example + +@noindent +Hierdurch wird auch eine Gruppe @code{lily} und ein Heimat-Ordner +@code{/home/lily} für den neuen Benutzer erstellt. + +@item Im Heimat-Ordner des Benutzers @code{lily} erstellen Sie eine Datei, die als +eigenes Dateisystem eingesetzt wird: + +@example +dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000 +@end example + +@noindent +In diesem Beispiel wird eine 200-MB-Datei als Kerker-Dateisystem erstellt. + +@item Erstellen Sie ein loop device, erstellen Sie ein Dateisystem und +mounten Sie es, dann erstellen Sie dort einen Ordner, in dem der Benutzer +@code{lily} Schreibrechte hat: + +@example +mkdir /mnt/lilyloop +losetup /dev/loop0 /home/lily/loopfile +mkfs -t ext3 /dev/loop0 200000 +mount -t ext3 /dev/loop0 /mnt/lilyloop +mkdir /mnt/lilyloop/lilyhome +chown lily /mnt/lilyloop/lilyhome +@end example + +@item In der Konfiguration des Servers ist der Kerker (JAIL) @code{/mnt/lilyloop} +und das Verzeichnis (DIR) @code{/lilyhome}. + +@item Erstellen Sie einen großen Verzeichnisbaum in dem Kerker, indem Sie die +notwendigen Dateien dorthin kopiert, wie das Beispielskript unten zeigt. + +Sie könne @code{sed} benutzen, um die notwendigen Kopierbefehle für ein +bestimmtes Programm zu erstellen: + +@example +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 +@end example + +@end itemize + +@subheading Beispiel-Skript für 32-bit Ubuntu 8.04 + +@example +#!/bin/sh +## defaults set here + +username=lily +home=/home +loopdevice=/dev/loop0 +jaildir=/mnt/lilyloop +# the prefix (without the leading slash!) +lilyprefix=usr/local +# the directory where lilypond is installed on the system +lilydir=/$lilyprefix/lilypond/ + +userhome=$home/$username +loopfile=$userhome/loopfile +adduser $username +dd if=/dev/zero of=$loopfile bs=1k count=200000 +mkdir $jaildir +losetup $loopdevice $loopfile +mkfs -t ext3 $loopdevice 200000 +mount -t ext3 $loopdevice $jaildir +mkdir $jaildir/lilyhome +chown $username $jaildir/lilyhome +cd $jaildir + +mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp +chmod a+w tmp + +cp -r -L $lilydir $lilyprefix +cp -L /bin/sh /bin/rm bin +cp -L /usr/bin/convert /usr/bin/gs usr/bin +cp -L /usr/share/fonts/truetype usr/share/fonts + +# Now the library copying magic +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 + +# The shared files for ghostscript... + cp -L -r /usr/share/ghostscript usr/share +# The shared files for ImageMagick + cp -L -r /usr/lib/ImageMagick* usr/lib + +### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome, +### you should be able to run: +### Note that /$lilyprefix/bin/lilypond is a script, which sets the +### LD_LIBRARY_PATH - this is crucial + /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly +@end example + + +@node Chybová hlášení +@section Chybová hlášení +@translationof Error messages + +@cindex error messages +@cindex Chybová hlášení + +Während der Verarbeitung einer Dateien können diverse Meldungen an der +Kommandozeile auftreten: + +@table @emph + +@item Warnung (Warning) +@cindex Warnung +Irgendetwas ist verdächtig. Wenn Sie etwas Ungewöhnliches in Ihrer +Datei durchführen, dann werden Sie die Meldung verstehen und können +sie gegebenenfalls ignorieren. Im Normalfall jedoch bedeutet eine +Warnung, dass mit Ihrer Datei etwas nicht stimmt, LilyPond jedoch +trotzdem versucht, die Datei soweit wie möglich korrekt zu übersetzen. + +@item Fehler (Error) +@cindex Fehler +Irgendetwas stimmt definitiv nicht. Der aktuelle Bearbeitungsschritt +(Einlesen, Interpretieren oder Formatieren der Datei) wird noch fertig +ausgeführt, danach bricht die Bearbeitung aber ab. + +@item Fataler Fehler (Fatal error) +@cindex Fataler Fehler +Irgendetwas stimmt definitiv nicht und LilyPond kann nicht weiter +ausgeführt werden. Dies ist nur sehr selten der Fall, meist sind +die Schriftarten nicht korrekt installiert. + +@item Scheme Fehler (Scheme error) +@cindex Fehlerprotokoll, Scheme +@cindex Scheme Fehler +Fehler, die während der Ausführung von Scheme-Code auftreten, werden +vom Scheme-Interpreter aufgefangen und an der Kommandozeile ausgegeben. +Wenn Sie LilyPond mit der @code{--verbose} Option (auch @code{-V}) +ausführen, wird der sogenannte @q{Call trace} ausgegeben, der die +aufgerufenen Funktionen zur Zeit des Fehlers angibt. + +@item Programmierfehler (Programming error) +@cindex Programmierfehler +Eine interne Inkonsistenz ist aufgetreten. Diese chybová hlášení +sollen den Programmierern die Fehlersuche erleichtern und +können meistens einfach ignoriert werden. In manchen Fällen werden +so viele Meldungen ausgegeben, dass die Lesbarkeit der restliche +Ausgabe davon beeinträchtigt wird. + +@item Abgebrochen (core dumped) +Dies bezeichnet einen ernsten Programmierfehler, der das Programm +zum Absturz gebracht hat. Solche Fehler werden als kritisch angesehen. +Falls daher einer auftritt, senden Sie bitte einen Bug-Report! +@end table + +@cindex Chybové hlášení, formát +@cindex Formát chybového hlášení +Wenn Warnungen oder chybová hlášení mit einer konkreten Stelle in der +Eingabedatei verknüpft werden können, dann hat die Meldung die folgende +Form: + +@example +@var{Dateiname}:@var{Zeile}:@var{Spalte}: @var{Meldung} +@var{Fehlerhafte Eingabezeile} +@end example + +Ein Zeilenumbruch wird in der fehlerhaften Zeile an jener Stelle eingefügt, +wo der Fehler aufgetreten ist. Zum Beispiel + +@example +test.ly:2:19: Fehler: keine gültige Dauer: 5 + @{ c'4 e' + 5 g' @} +@end example + +Diese Stellen sind LilyPonds Vermutung, wo die Warnung oder der Fehler +aufgetreten ist, allerdings treten Warnungen und Fehler ja gerade in +unerwarteten Fällen auf. Manchmal kann Lilypond auch eine fehlerhafte +Stelle zwar noch problemlos verarbeiten, ein paar Zeilen später wirkt +sich der Fehler aber dann doch noch aus. In solchen Fällen, wo Sie in +der angegebenen Zeile keinen Fehler erkennen, sollten Sie auch die Zeilen +oberhalb der angegebenen Stelle genauer unter die Lupe nehmen. + +Mehr Information darüber findet sich in @ref{Častá chybová hlášení,,častých chybových hlášeních}. + + + +@node Častá chybová hlášení +@section Častá chybová hlášení +@translationof Common errors + +Chybová hlášení, die unten beschrieben werden, treten of auf, +es ist jedoch nicht immer einfach, die Urache zu finden. Wenn +der Fehler einmal verstanden ist, kann er einfach behoben werden. + + +@menu +* Noty ubíhají pryč ze strany:: +* Ein zusätzliches System erscheint:: +* Zřejmá chyba v @code{../ly/init.ly}:: +* Chybové hlášení Nespojená proměnná %:: +* Chybové hlášení FT_Get_Glyph_Name:: +* Varování: staff affinities by měly jen klesat:: +@end menu + +@node Noty ubíhají pryč ze strany +@unnumberedsubsec Noty ubíhají pryč ze strany +@translationof Music runs off the page + +Noten, die rechts aus der Seite herauslaufen oder sehr komprimiert +aussehen, liegen in fast allen Fällen an einer falschen Notendauer +einer Note, die dazu fürt, dass die letzte Note im Takt über die +Taktgrenze hinwegdauert. Es ist nicht falsch, wenn die letzte +Note eines Taktes über den Takt hinausdauert, weil einfach angenommen +wird, dass sie im nächsten Takt fortgesetzt wird. Aber wenn eine +längere Sequenz dieser überhängenden Noten auftritt, können die +Noten sehr gedrängt aussehen oder über den Seitenrand fließen, weil +die automatische Zeilenumbruchsfunktion einen Umbruch nur am Ende +eines vollständigen Taktes einfügen kann, also wenn alle Noten +zum Ende des Taktstriches auch wirklich aufhören. + +@warning{Eine falsche Dauer kann dazu führen, dass Zeilenumbrüche +nicht möglich sein und die Zeile entweder sehr gedrängt dargestllt +wird oder über den Seitenrand fließt.} + +Die falsche Dauer kann einfach gefunden werden, wenn Taktstrichüberprüfung +eingesetzt wird, siehe @ruser{Takt- und Taktzahlüberprüfung}. + +If you actually intend to have a series of such carry-over measures +you will need to insert an invisible bar line where you want the +line to break. For details, see @ruser{Taktstriche}. + + +@node Ein zusätzliches System erscheint +@unnumberedsubsec Ein zusätzliches System erscheint +@translationof An extra staff appears + +Wenn Kontext nicht explizit mit @code{\new} oder +@code{\context} erstellt werden, werden sie vom Programm erstellt, +sobald ein Befehl angetroffen wird, der im aktuellen Kontext nicht +funktioniert. In einfachen Partituren ist diese automatische +Erstellung sehr nützlich und die meisten Beispiele der LilyPond-Handbücher +benutzen diese Schreiberleicherterung. Manchmal jedoch kann es +vorkommen, dass durch die automatische Erstellung von Systemen aufeinmal +unerwartete Notensysteme erstellt werden. Beispielsweise könnte man +annehmen, dass folgendes Beispiel alle Notenköpfe in dem Notensystem +rot macht, aber als Resultat hat man zwei Systeme, während die +Notenköpfe immernoch schwarz im unteren System erscheinen. + +@lilypond[quote,verbatim,relative=2] +\override Staff.NoteHead #'color = #red +\new Staff { a } +@end lilypond + +Das liegt daran, dass kein @code{Staff}-Kontext existiert, wenn +der @code{\override}-Befehl verarbeitet wird, sodass ein System +für diesen Befehl erstellt wird. Dann aber erstellt @code{\new Staff} +noch ein zusätzliches System, wo die Noten gesetzt werden. Die +richtige Schreibweise wäre: + +@lilypond[quote,verbatim,relative=2] +\new Staff { + \override Staff.NoteHead #'color = #red + a +} +@end lilypond + +Ein zweites Beispiel zeigt, dass ein @code{\relative}-Befehl innerhalb +von @code{\repeat} zwei Systeme erstellt, wobei der zweite etwas verschoben +ist. Das liegt daran, dass @code{\repeat} zwei @code{\relative}-Umgebungen +erstellt, die jede implizit einen @code{Staff}- und @code{Voice}-Kontext +erstellen. + +@lilypond[quote,verbatim] +\repeat unfold 2 { + \relative c' { c4 d e f } +} +@end lilypond + +Indem man die @code{Voice}-Kontexte explizit erstellt, kann das Problem +umgangen werden. + +@lilypond[quote,verbatim] +\new Voice { + \repeat unfold 2 { + \relative c' { c4 d e f } + } +} +@end lilypond + + +@node Zřejmá chyba v @code{../ly/init.ly} +@unnumberedsubsec Zřejmá chyba v @code{../ly/init.ly} +@translationof Apparent error in @code{../ly/init.ly} + +Verschiedene seltsame chybová hlášení können über Syntax-Fehler in +@file{../ly/init.ly} auftauchen, wenn die Eingabedatei nicht richtig +formuliert ist, wenn sie etwa nicht richtig passende Klammerpaare +oder Anführungszeichen enthält. + +Der üblichste Fehler ist das Fehlen einer geschweiften Klammer +(@code{@}}) am Ende der @code{score}-Umbgebung. Die Lösung ist hier +klar: überprüfen Sie, ob die @code{score}-Umgebung richtig beendet +wurde. Die richtige Struktur einer Eingabedatei wird beschrieben +in @rlearning{Wie eine LilyPond-Eingabe-Datei funktioniert}. +Ein Editor, der die Klammerpaare automatisch anzeigt, ist sehr +hilfreich, um derartige Fehler zu vermeiden. + +Eine weitere übliche Fehlerquelle ist kein Leerzeichen zwischen der +letzten Silbe einer @code{lyrics}-Umgebung und der schließenden +Klammer (@code{@}}). Ohne diese Trennung wird die Klammer als +Teil der Silbe gewertet. Es bietet sich immer an, Leerzeichen vor +und hinter @emph{jede} Klammer zu setzen. Wie wichtig das ist, wenn +Gesangstext eingesetzt wird, siehe @ruser{Was ist Gesangtext}. + +Diese Fehlermeldung kann auch mit einem fehlenden schließenden Anführungszeichen +(@code{"}) auftreten. In diesem Fall sollte die begleitende Fehlermeldung +eine Zeilenzahl angeben, die dicht am Fehler liegt. Die nicht paarigen +Anführungszeichen sind meistens ein oder zwei Zeilen darüber. + + +@node Chybové hlášení Nespojená proměnná % +@unnumberedsubsec Chybové hlášení Nespojená proměnná % +@translationof Error message Unbound variable % + +Diese Fehlermeldung erscheint am Ende der Kommandozeilenausgabe oder in der +Log-Datei mit einer Meldung @qq{GUILE signalled an error ...} +jedes Mal, wenn eine Scheme-Routine aufgerufen wird, die +(falscherweise) ein @emph{LilyPond}-Kommentar und kein +@emph{Scheme}-Kommentar enthält. + +LilyPond-Kommentare befginnen mit dem Prozent-Zeichen (@code{%}) und +dürfen nicht in Scheme-Routinen benutzt werden. Scheme-Kommentare beginnen +mit einem Semikolon (@code{;}). + +@node Chybové hlášení FT_Get_Glyph_Name +@unnumberedsubsec Chybové hlášení FT_Get_Glyph_Name +@translationof Error message FT_Get_Glyph_Name + +Diese Fehlermeldung erscheint in der Kommandozeilenausgabe, wenn die +Datei ein Zeichen enthält, das nicht zu ASCII gehört und die Datei +nicht in UTF-8-Kodierung gespeichert wurd. Sie auch @ruser{Zeichenkodierung}. + + +@node Varování: staff affinities by měly jen klesat +@unnumberedsubsec Varování: staff affinities by měly jen klesat +@translationof Warning staff affinities should only decrease + +Diese Warnung erscheint, wenn keine Notensysteme in der Ausgabe vorhanden +sind, wenn etwa nur @code{ChordName}-Kontext und @code{Lyrics}-Kontext +in einem Liedblatt vorhanden sind. Die Warnungen können vermieden werden, +indem man einen der Kontexte als System erscheinen lässt, indem man ihm +zu Beginn hinzufügt: + +@example +\override VerticalAxisGroup #'staff-affinity = ##f +@end example + +Zu Einzelheiten siehe @qq{Abstand von Nicht-Notensystemzeilen} in +@ruser{Flexible vertikale Abstände in Systemgruppen}.