Weiter: Umgebungsvariablen, Zurück: lilypond aufrufen, NachOben: Benutzung auf der Kommandozeile
lilypond
Die folgenden Kommandozeilenoptionen werden von lilypond unterstützt:
-e,--evaluate=
expr-e
Option kann auch mehrfach angegeben werden, die Ausdrücke
werden nacheinander ausgewertet.
Da der Ausdruck im guile-user
Modul ausgewertet wird, ist bei der
Definitionen innerhalb von expr folgendes Vorgehen nötig. An der
Kommandozeile wird z.B. a
im guile-user
Modul definiert:
lilypond -e '(define-public a 42)'
Am Beginn der .ly-Datei muss dann das guile-user
Modul noch geladen werden, bevor die Definition von a verfügbar ist:
#(use-modules (guile-user))
-f,--format=
Formatsvg
, ps
, pdf
und png
.
Beispiel: lilypond -fpng
Dateiname.ly
-d,--define-default=
Variable=
Wertno-
dem Namen
Variable der Variable vorangestellt werden. So ist etwa
-dno-point-and-click
dasselbe wie
-dpoint-and-click='#f'
Hier sind ein paar interessante Optionen:
lilypond -dhelp
zeigt alle verfügbaren -d
Optionen.
-dpaper-size=\"letter\"
Die Zeichenkette, die das Format angibt, muss in Anführungszeichen mit Backslash
( \"
) stehen.
.ly
Datei nicht.
Wenn LilyPond über einen Webserver verfügbar gemacht wird, MUSS unbedingt
eine die Optionen --safe
oder --jail
angegeben werden.
Die --safe
Option verhindert, dass in der .ly-Datei angegebener
Scheme-Code das System gefährden kann, wie etwa in folgendem Beispiel:
#(system "rm -rf /") { c4^#(ly:export (ly:gulp-file "/etc/passwd")) }
Mit der -dsafe
Option werden alle Scheme-Ausdrücke einem speziellen
sicheren Modus ausgewertet. Dieser Modus ist vom GUILE safe-r5rs Modul
abgeleitet und fügt noch zahlreiche weitere erlaubte Funktionen der
LilyPond Programm-Schnittstelle hinzu. Diese Funktionen sind in
scm/safe-lily.scm angegeben.
Zusätzliche verbietet der sichere Modus auch \include
Befehle.
Im sicheren Modus ist es nicht möglich, LilyPond-Variablen nach Scheme zu exportieren.
-dsafe
erkennt jedoch 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 --jail
Option ist
eine sicherere Alternative, benötigt allerdings auch mehr Aufwand zur
Einrichtung.
ps
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.
eps
Dies ist die Standardeinstellung von lilypond-book.
svg
scm
null
-dno-print-pages
.
Beispiel: lilypond -dbackend=svg
Dateiname.ly
-dno-print-pages
ist in Verbindung mit -dpreview
nützlich.
-h,--help
-H,--header=
FELD\header
-Block in die Datei
Dateiname.FELD aus.
--include, -I=
Verzeichnis-i,--init=
Initialisierungsdatei-o,--output=
DATEI.pdf
für pdf).
--ps
--png
--ps
. Die Auflösung in DPI der Grafik kann festgelegt
werden durch
-dresolution=110
--pdf
--ps
.
-j,--jail=
Benutzer,
Gruppe,
Jail-Verzeichnis,
ArbeitsverzeichnisDie --jail
Option ist eine flexiblere Alternative zu --safe
, wenn
LilyPond über das Internet verfügbar gemacht wird oder LilyPond-Quelldateien
von Dritten automatisch vararbeitet werden.
Sie funktioniert dergestalt, dass das Wurzelverzeichnis von
lilypond auf Jail-Verzeichnis gesetzt wird, bevor die
tatsächliche Kompilierung der .ly-Datei beginnt. Der Benutzer und die Gruppe
werden auf die angegebenen Werte gesetzt und das aktuelle Arbeitsverzeichnis
wird ebenfalls auf den angegebenen Wert Arbeitsverzeichnis gesetzt.
Diese Einstellungen garantieren (zumindest in der Theorie), dass es nicht
möglich ist, aus dem Jail auszubrechen. Damit --jail
funktioniert, muss
lilypond allerdings als root ausgeführt werden, was normalerweise
auf sichere Art mit dem Kommando sudo erreicht werden kann.
Das Jail-Verzeichnis zu erstellen ist etwas heikel, da LilyPond alle zur Ausführung nötigen Bibliotheken und Dateien innerhalb des Jail-Verzeichnisses finden muss. Ein typisches Setup besteht aus folgenden Punkten:
noexec
, nodev
und 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 ‚loop‘-Gerät
einbinden. Ein getrenntes Dateisystem garantiert auch, dass LilyPond nicht
mehr Festplattenspeicher benutzt als erlaubt.
lily
/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 Arbeitsverzeichnis an
lilypond
übergeben werden.
Falls Probleme auftreten, ist es am einfachsten, Lilypond mittels
strace zu starten, wodurch Sie relativ leicht feststellen können,
welche Dateien im Jail noch fehlen.
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 sudo. Außerdem
ist es eine gute Idee, die LilyPond zur Verfügung stehende CPU-Zeit zu
limitieren (z. B. mit ulimit -t) und – falls das Betriebssystem
dies unterstützt – auch den zur Verfügung stehenden Hauptspeicher.
-v,--version
-V,--verbose
-w,--warranty