[ << Execució del LilyPond ] | [Top][Contents][Index] | [ Actualització de fitxers amb convert-ly >> ] |
[ < Variables d’entorn ] | [ Up : Utilització des de la línia d’ordres ] | [ Missatges d’error > ] |
El LilyPond a una gàbia de chroot
La preparació del servidor perquè executi el LilyPond a una gàbia
de chroot és una tasca molt complicada. Els passos estan
relacionats més avall. Els exemples que apareixen en cadascú dels
passos son vàlids per a Ubuntu GNU/Linux, i poden requerir l’ús de
sudo
segons correspongui.
- Instal·leu els paquets necessaris: el LilyPond, el Ghostscript i l’ImageMagick.
- Creeu un usuari nou amb el nom de
lily
:adduser lily
Això també crearà un nou grup per a l’usuari
lily
, i una carpeta personal,/home/lily
- A la carpeta personal de l’usuari
lily
, creeu un fitxer per usar-lo com a sistema de fitxers separat:dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
Aquest exemple crea un fitxer de 200MB per al seu ús com el sistema de fitxers de la gàbia.
- Creeu un dispositiu loop, feu un sistema de fitxers i munteu-lo,
després creeu una carpeta que es pugui escriure per l’usuari
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
- En la configuració dels servidors, JAIL serà
/mnt/lilyloop
i DIR serà/lilyhome
. - Creeu un gran arbre de directoris dins de la gàbia copiant els
fitxers necessaris, com es mostra en el guió d’exemple que apareix
més avall.
Podeu usar
sed
per crear els fitxeres de còpia necessaris per a un executable donat: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
Guió d’exemple per a l’Ubuntu 8.04 de 32 bits
#!/bin/sh ## aquí es fixen els valors predeterminats username=lily home=/home loopdevice=/dev/loop0 jaildir=/mnt/lilyloop # prefix (sense la barra inicial!) lilyprefix=usr/local # el directori en el qual el LilyPond es troba instal·lat en el sistema 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 # Ara la màgia de copiar les biblioteques 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 # Els fitxers compartits per al ghostcript... cp -L -r /usr/share/ghostscript usr/share # Els fitxers compartits per a l'ImageMagick cp -L -r /usr/lib/ImageMagick* usr/lib ### Ara, suposant que tenim test.ly a /mnt/lilyloop/lilyhome, ### hauríem de poder executar: ### Observeu que /$lilyprefix/bin/lilypond és un guió, que estableix ### un valor per a LD_LIBRARY_PATH : això és crucial /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
[ << Execució del LilyPond ] | [Top][Contents][Index] | [ Actualització de fitxers amb convert-ly >> ] |
[ < Variables d’entorn ] | [ Up : Utilització des de la línia d’ordres ] | [ Missatges d’error > ] |