1.2.3 Umgebungsvariablen
lilypond
erkennt und benützt die folgenden Umgebungsvariablen:
-
LILYPOND_DATADIR
Diese Variable gibt das Verzeichnis an, wo Lilypond seine eigenen Dateien, Meldungen und Übersetzungen finden kann. Dieses Verzeichnis sollte Unterverzeichnisse ‘ly/’, ‘ps/’, ‘tex/’, etc. beinhalten.
-
LANG
Gibt die Sprache an, in der Warnungen und Fehlermeldungen ausgegeben werden.
-
LILYPOND_GC_YIELD
Eine Variable (von 1 bis 100), die die Speicherverwaltung regelt. Bei niedrigeren Werten wird mehr Prozessor-Zeit, dafür weniger Hauptspeicher benötigt. Voreinstellung ist ein Wert von
70
.
[ << lilypond starten ] | [Anfang][Inhalt][Index][ ? ] | [ Dateien mit convert-ly aktualisieren >> ] | ||
[ < Umgebungsvariablen ] | [ Nach oben : Benutzung auf der Kommandozeile ] | [ Fehlermeldungen > ] |
LilyPond in chroot-Kerker
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
sudo
an den entsprechenden Stellen.
- Installieren Sie die nötigen Pakete: LilyPond, GhostScript und ImageMagick.
- Erstellen Sie einen neuen Benutzer mit dem Namen
lily
:adduser lily
Hierdurch wird auch eine Gruppe
lily
und ein Heimat-Ordner/home/lily
für den neuen Benutzer erstellt. - Im Heimat-Ordner des Benutzers
lily
erstellen Sie eine Datei, die als eigenes Dateisystem eingesetzt wird:dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
In diesem Beispiel wird eine 200-MB-Datei als Kerker-Dateisystem erstellt.
- Erstellen Sie ein loop device, erstellen Sie ein Dateisystem und
mounten Sie es, dann erstellen Sie dort einen Ordner, in dem der Benutzer
lily
Schreibrechte hat: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
- In der Konfiguration des Servers ist der Kerker (JAIL)
/mnt/lilyloop
und das Verzeichnis (DIR)/lilyhome
. - Erstellen Sie einen großen Verzeichnisbaum in dem Kerker, indem Sie die
notwendigen Dateien dorthin kopiert, wie das Beispielskript unten zeigt.
Sie könne
sed
benutzen, um die notwendigen Kopierbefehle für ein bestimmtes Programm zu erstellen: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
Beispiel-Skript für 32-bit Ubuntu 8.04
#!/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
[ << lilypond starten ] | [Anfang][Inhalt][Index][ ? ] | [ Dateien mit convert-ly aktualisieren >> ] | ||
[ < Umgebungsvariablen ] | [ Nach oben : Benutzung auf der Kommandozeile ] | [ Fehlermeldungen > ] |