什麼在我的 yocto 映像中建立 ./var/lib?

什麼在我的 yocto 映像中建立 ./var/lib?

太長了;博士Yocto 在我的映像中建立了一個空目錄var/lib,即使它已被 明確刪除ROOTFS_POSTPROCESS_COMMAND。為什麼,我怎麼才能擺脫它?


我正在嘗試使用一組精確預先定義的檔案和目錄來建立 yocto 映像,而不使用通常的 rootfs 檔案。首先,我嘗試創建一個完全空的圖像。

出於測試目的,我使用了一個乾淨的 yocto jethro 克隆,MACHINE ??= "qemux86"其中包含conf/local.conf.讓我們從這個食譜開始吧

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

與 yocto 克隆一起提供。這很簡單:

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

inherit image

構建bitbake test-empty-image為我提供了圖像中的以下文件:

$ 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/

讓我們嘗試透過將其附加到配方中來刪除剩餘的檔案和資料夾:

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

這適用於etc,但不適用於var

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

為了進行更多調試,我將日誌記錄語句新增到清理函數中:

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
}

結果是文件listing.txt

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

因此目錄var/lib肯定已被刪除ROOTFS_POSTPROCESS_COMMAND,但顯然是稍後重新建立的。我怎麼才能擺脫這個目錄?

答案1

這很煩人,過去我也遇到同樣的問題。在影像配方中執行以下操作:

IMAGE_PREPROCESS_COMMAND +=“刪除目錄”

這應該在 ROOTFS 部分之後運行。

IMAGE_PREPROCESS_COMMAND 的 Yocto 手動輸入

相關內容