如何通过Yocto向目标根文件系统正确添加文件?报错求助
问题解决:Yocto打包静态HTML文件报错
No file attributes configured 错误原因
该报错是因为Yocto的rpmdeps工具无法识别单个静态HTML文件的属性配置——它默认会分析二进制文件的依赖,但纯静态文本类文件没有可识别的依赖属性,导致打包过程中断。
解决方案
以下提供三种可行的解决方式,按推荐程度排序:
方法1:通过bbappend扩展apache2 recipe(推荐)
既然网页文件属于Apache的站点内容,直接扩展现有apache2的recipe是更符合Yocto最佳实践的做法:
- 将
index.html移动到recipes-httpd/apache2/apache2/目录下 - 修改
apache2_%.bbappend文件:
SRC_URI += "file://index.html" do_install:append() { install -m 0644 ${WORKDIR}/index.html ${D}/usr/share/apache2/default-site/htdocs/index.html } FILES:${PN} += "/usr/share/apache2/default-site/htdocs/index.html"
方法2:修改独立webpage recipe,跳过文件依赖检查
如果坚持使用独立的webpage recipe,添加跳过依赖检查的配置即可:
修改webpage_%.bb文件:
SUMMARY = "Webpage files recipe" DESCRIPTION = "Recipe to put webpage files into target device rootfs" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" SRC_URI = "file://index.html" do_install() { install -d ${D}/usr/share/apache2/default-site/htdocs # HTML文件无需执行权限,改为更规范的0644 install -m 0644 ${WORKDIR}/index.html ${D}/usr/share/apache2/default-site/htdocs/index.html } FILES:${PN} += "/usr/share/apache2/default-site/htdocs/index.html" # 跳过静态文件的依赖属性检查 INSANE_SKIP:${PN} += "file-rdeps"
方法3:修改FILES为目录而非单个文件
将FILES配置改为添加整个目录,让构建系统自动处理目录内的文件属性:
SUMMARY = "Webpage files recipe" DESCRIPTION = "Recipe to put webpage files into target device rootfs" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" SRC_URI = "file://index.html" do_install() { install -d ${D}/usr/share/apache2/default-site/htdocs install -m 0644 ${WORKDIR}/index.html ${D}/usr/share/apache2/default-site/htdocs/index.html } # 改为添加整个目录,替代单个文件的配置 FILES:${PN} += "/usr/share/apache2/default-site/htdocs/" INSANE_SKIP:${PN} += "file-rdeps"
内容的提问来源于stack exchange,提问作者Mateusz Michala
相关产品推荐
相关产品推荐

