[ << Eseguire lilypond ] | [Top][Contents][Index] | [ Aggiornare i file con convert-ly >> ] |
| [ < Algoritmo di riposizionamento ] | [ Up: Uso da linea di comando ] | [ Messaggi di errore > ] |
LilyPond in una gabbia chroot
Configurare un server perché esegua LilyPond in una gabbia chroot è un lavoro
complesso. La procedura è spiegata sotto. Gli esempi si riferiscono a
Ubuntu GNU/Linux e potrebbero richiedere l’uso di sudo in alcune situazioni.
- Installa i pacchetti necessari: LilyPond, Ghostscript e ImageMagick.
- Crea un nuovo utente dal nome
lily:adduser lily
Questo comando creerà anche un nuovo gruppo per l’utente
lily, e una cartella home,/home/lily - Nella cartella home dell’utente
lilycrea un file da usare come filesystem separato:dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
In questo esempio è stato creato un file di 200MB da usare come filesystem della gabbia.
- Crea un dispositivo di loop, crea e monta un filesystem, quindi crea
una cartella scrivibile dall’utente
lily: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
- Nella configurazione dei server, JAIL sarà
/mnt/lilyloope DIR sarà/lilyhome. - Crea un grande albero delle directory nella gabbia copiando i file
necessari, come mostrato nello script di esempio più in basso.
Puoi usare
sedper creare i comandi di copia necessari per un certo eseguibile: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
Script di esempio per Ubuntu 8.04 a 32-bit
#!/bin/sh
## Impostazioni predefinite
username=lily
home=/home
loopdevice=/dev/loop0
jaildir=/mnt/lilyloop
# Il prefisso (senza la barra iniziale!)
lilyprefix=usr/local
# La directory di sistema in cui è installato lilypond
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
# Ora la magica ricopiatura della libreria
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
# I file condivisi per Ghostscript...
cp -L -r /usr/share/ghostscript usr/share
# I file condivisi per ImageMagick
cp -L -r /usr/lib/ImageMagick* usr/lib
### Ora, assumendo di avere test.ly in /mnt/lilyloop/lilyhome,
### si dovrebbe poter eseguire:
### Nota che /$lilyprefix/bin/lilypond è uno script, che imposta la variabile
### LD_LIBRARY_PATH - questo è cruciale
/$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
[ << Eseguire lilypond ] | [Top][Contents][Index] | [ Aggiornare i file con convert-ly >> ] |
| [ < Algoritmo di riposizionamento ] | [ Up: Uso da linea di comando ] | [ Messaggi di errore > ] |