Yocto Recipe中安装带空格文件名至RootFS的问题求助
解决Yocto中带空格的文件无法安装到RootFS的问题
针对带空格文件安装失败的问题,核心是BitBake语法和shell脚本对空格的解析规则导致的,以下是修正后的bbappend配方及说明:
修正后的完整配方
SRC_URI += " \ \"file://Wired connection 1.nmconnection\" \ \"file://Wired connection 2.nmconnection\" \ " FILES:${PN} += " \ \"${sysconfdir}/NetworkManager/system-connections/Wired connection 1.nmconnection\" \ \"${sysconfdir}/NetworkManager/system-connections/Wired connection 2.nmconnection\" \ " do_install:append() { install -d ${D}${sysconfdir}/NetworkManager/system-connections install -m 0644 "${WORKDIR}/Wired connection 1.nmconnection" "${D}${sysconfdir}/NetworkManager/system-connections" install -m 0644 "${WORKDIR}/Wired connection 2.nmconnection" "${D}${sysconfdir}/NetworkManager/system-connections" }
关键修改点说明
- SRC_URI部分:用转义双引号
\"...\"包裹每个带空格的文件路径,BitBake会将整个路径识别为单个源条目,不会因空格拆分。 - FILES变量部分:同样用转义双引号包裹带空格的目标路径,确保BitBake正确识别为单个文件,避免把空格后的内容当作新条目。
- do_install中的install命令:在shell环境下直接用双引号
"..."包裹路径参数,防止shell将空格解析为参数分隔符,导致找不到文件。
简化写法(可选)
如果你的.nmconnection文件都在同一目录下,可使用通配符简化配置,避免逐个处理带空格的文件名:
SRC_URI += "file://*.nmconnection" FILES:${PN} += "${sysconfdir}/NetworkManager/system-connections/*.nmconnection" do_install:append() { install -d ${D}${sysconfdir}/NetworkManager/system-connections install -m 0644 ${WORKDIR}/*.nmconnection "${D}${sysconfdir}/NetworkManager/system-connections" }
内容的提问来源于stack exchange,提问作者user2695267
相关产品推荐
相关产品推荐

