¿Qué está creando ./var/lib en mi imagen de yocto?

¿Qué está creando ./var/lib en mi imagen de yocto?

tl; drYocto crea un directorio vacío var/liben mi imagen, incluso después de que ROOTFS_POSTPROCESS_COMMAND. ¿Por qué y cómo puedo deshacerme de él?


Estoy intentando crear una imagen de yocto con un conjunto exacto predefinido de archivos y directorios, sin los archivos rootfs habituales. Para empezar, intento crear una imagen completamente vacía.

Para fines de prueba, estoy usando un clon limpio de yocto jethro MACHINE ??= "qemux86"con conf/local.conf. Empecemos con esta receta.

meta-selftest/recipes-test/images/test-empty-image.bb

que viene con el clon yocto. Es muy simple:

SUMMARY = "An empty image."
IMAGE_INSTALL = ""
IMAGE_LINGUAS = ""
PACKAGE_INSTALL = ""

inherit image

El edificio bitbake test-empty-imageme da los siguientes archivos en la imagen:

$ tar tf tmp/deploy/images/qemux86/test-empty-image-qemux86.tar.bz2 
./
./etc/
./etc/version
./etc/default/
./etc/default/postinst
./etc/ld.so.cache
./etc/rpm/
./etc/rpm/platform
./etc/rpm/sysinfo/
./etc/rpm/sysinfo/Dirnames
./etc/timestamp
./var/
./var/lib/

Intentemos eliminar los archivos y carpetas restantes agregando esto a la receta:

remove_dirs () {
        rm -rf ${IMAGE_ROOTFS}/etc
        rm -rf ${IMAGE_ROOTFS}/var 
}
ROOTFS_POSTPROCESS_COMMAND += "remove_dirs ; "

Esto funciona para etc, pero no para var:

$ tar tf tmp/deploy/images/qemux86/test-empty-image-qemux86.tar.bz2
./
./var/
./var/lib/

Para una mayor depuración, agrego declaraciones de registro a la función de limpieza:

remove_dirs () {
        echo "################# Listing before rm -rf:" >> ${IMAGE_ROOTFS}/listing.txt
        ls ${IMAGE_ROOTFS} >> ${IMAGE_ROOTFS}/listing.txt
        rm -rf ${IMAGE_ROOTFS}/etc
        rm -rf ${IMAGE_ROOTFS}/var 
        echo "################# Listing after rm -rf:" >> ${IMAGE_ROOTFS}/listing.txt
        ls ${IMAGE_ROOTFS} >> ${IMAGE_ROOTFS}/listing.txt
}

lo que da como resultado el archivo listing.txt:

################# Listing before rm -rf:
etc
listing.txt
oe_install
var
################# Listing after rm -rf:
listing.txt
oe_install

Por lo tanto, el directorio var/libdefinitivamente se elimina ROOTFS_POSTPROCESS_COMMAND, pero aparentemente se vuelve a crear más tarde. ¿Cómo puedo deshacerme de este directorio?

Respuesta1

Esto es bastante molesto y en el pasado tuve el mismo problema. Haga lo siguiente en su receta de imagen:

IMAGE_PREPROCESS_COMMAND += "remove_dirs"

Esto debería ejecutarse después de la parte ROOTFS.

VerEntrada manual de Yocto para IMAGE_PREPROCESS_COMMAND

información relacionada