[eside-ghost] unionfs.sh
Jon Ander Hernández
hernandez en movimage.com
Mie Mayo 10 05:19:37 CEST 2006
Aupi!!
Aquellos que estuvisteis en la charla de las X de la semana eside
pensaréis... ummm eso de unionfs me suena a algo que contó el JonAn en
la charla de las X de la semana eside y que se saco de la manga en medio
de la presentación, pues efectivamente esto es !! xDDD.
El caso es que me cree un mini sistema de paquetes que me era muy cómodo
porque podía añadir y quitar paquetes en caliente, y me permitía
instalar aplicaciones en /usr con un make install sin preocuparme de que
me sobreescribiera o me estropeara la instalación normal y me quedará
sin sistema.
La idea me vino de stowfs que es el sistema de paquetes de GNU para hurd
que usa unionfs a saquete (aunque hablamos de el unionfs de Hurd, no el
de Linux) y de los módulos de las distros basadas en los scripts linux
live como slax (http://slax.linuxlive.org).
Idea :
- Quiero que instalar Xorg desde el cvs y que se instale en /usr para no
volverme loco con los prefixes, pero no quiero sobreescribir mi
instalación normal.
- Cada aplicación la guardo dentro de una imagen de un sistema de
archivos comprimido llamado squashfs, para que nos entendamos es como
usar un tar.gz pero con la ventaja de que el squashfs lo puedo montar y
el tar.gz no.
- Al compilar necesito tener las cabeceras de varios programas en /usr
pero quiero que el /usr no sea el de mi instalación normal (que también
tiene xorg), sino que quiero que sean las librerías que he guardado en
un paquete de squashfs y el /usr de una ubuntu minimal con las caberas
necesarias para compilar Xorg.
Solución unionfs.sh
Como crear un paquete :
$ export uniondirfrom=/mnt/ubuntu-minimal/usr
$ # le decimos que no monte el /usr de nuestra install normal
$ unionfs -i
$ # monta el unionfs uniendo /mnt/ubuntu-minimal/usr como ro
y /unionfs/cambios como rw
$ cd programa_de_marras
$ ./configure --prefix=/usr
$ make && sudo make install && make clean
$ cd -
$ mksquashfs /unionfs/cambios/ /unionfs/modulos/programa_de_marras.mo
$ # creamos el fichero squashfs
$ sudo find /unionfs/cambios -mindepth 1 -exec rm {} \;
$ # sudo rm -R /unionfs/cambios no borra los ficheros ocultos osea los
que empiecen por . ojo!!
Y listo!!
Como cargar un paquete :
$ unionfs.sh -m
programa_de_marras.mo
$ # el -m nos lista los modulos/paquetes disponibles
$ unionfs.sh -a programa_de_marras.mo
$ # nos carga el contenido de programa_de_marras.mo en /usr
$ unionfs.sh -l
/unionfs/cambios (rw)
/unionfs/mounts/programa_de_marras.mo (r-)
/usr (r-)
$ # nos muestra lo que esta montado en /usr
$ unionfs.sh -r programa_de_marras.mo
$ # nos descarga el paquete
$ unionfs.sh -l
/unionfs/cambios (rw)
/usr (r-)
$ unionfs.sh -u
$ # nos desmonta el unionfs y /usr vuelve a ser un directorio normal
dentro de / (y por lo tanto readwritable).
Y bueno ahora ya sabéis usar mi script!! Espero que os guste!!
Un saludete!!
JonAn.
P.D: El libunionfs01.sh tenéis unas variables que podéis cambiar a
vuestro gusto y también se pueden definir como variables de entorno :
---
[ ! ${uniondir} ] && uniondir=/usr
[ ! ${uniondirfrom} ] && uniondirfrom=/usr
[ ! ${changedir} ] && changedir=/unionfs/changedir
[ ! ${mountdir} ] && mountdir=/unionfs/mounts
[ ! ${moduledir} ] && moduledir=/unionfs/modules
---
P.D2: En los kernels precompilados de ubuntu y debian ya vienen los
módulos de unionfs y squashfs, lo que no vienen son las utilidades que
tenéis que instalar con :
apt-get install unionfs-utils squashfs-tools
P.D3: Los comandos los he escrito a pelo y no los he comprobado espero
que funcionen !! suerte!! xDDD.
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : libunionfs01.sh
Tipo : application/x-shellscript
Tamaño : 2151 bytes
Descripción: no disponible
Url : https://listas.deusto.es/mailman/private/eside-ghost/attachments/20060510/2b51d530/libunionfs01.bin
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : unionfs.sh
Tipo : application/x-shellscript
Tamaño : 848 bytes
Descripción: no disponible
Url : https://listas.deusto.es/mailman/private/eside-ghost/attachments/20060510/2b51d530/unionfs.bin
Más información sobre la lista de distribución eside-ghost