【问题标题】:bbappend file for replacing a file用于替换文件的 bbappend 文件
【发布时间】:2018-03-08 12:31:19
【问题描述】:

我在 yocto 中创建了一个新层:meta-abc,一个配方:abc-efg_0.1.bb 和一个 .bbapend:abc-efg_01.bbapend 文件。 使用 bbappend 文件,我想覆盖来自英特尔爱迪生板的文件。 更准确地说,来自 /etc/wpa_supplicant/ 的 wpa_supplicant.conf。 这个 wpa_supplicant.conf 已经从另一个层(meta-intel-edison-distro)创建。 我可以在 /etc/ 中写入我的文件,这样我的食谱和我的 bbappend 文件就可以工作了。 我可以 bitbake 我的食谱,但是当我尝试创建图像时,我会收到以下消息:

" * check_data_file_clashes:包 abc-efg 想要安装文件 /home/atr-int/Desktop/Yocto/yocto-edison/build_edison/tmp/work/edison-poky-linux/edison-image/1.0-r0/ rootfs/etc/wpa_supplicant/wpa_supplicant.conf 但是该文件已经由 package * wpa-supplicant 提供 * opkg_install_cmd:无法安装包 abc-etc。 " 这是我的 bbappend 文件内容:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

SRC_URI += "file://wpa_supplicant.conf"

do_install_append() {
install -d ${D}${sysconfdir}/wpa_supplicant
install -m 0755 ${WORKDIR}/wpa_supplicant.conf 
    ${D}${sysconfdir}/wpa_supplicant
}

任何人都可以给我任何提示吗? 谢谢。

【问题讨论】:

    标签: yocto intel-edison


    【解决方案1】:

    您不应该从另一个配方重写wpa_supplicant.conf,因为文件会发生冲突。

    相反,将您的 abc-efg_01.bbapend 重命名为 wpa-supplicant_%.bbappend,它应该可以工作。

    如果由于某种原因您需要在abc-efg 中包含wpa_supplicant.conf,则需要添加一个wpa-supplicant_%.bbappend,您需要在其中删除wpa_supplicant.conf

    【讨论】:

    • 我需要用我自己的配置替换 wpa_supplicant.conf(我想做的是自动将我的 intel-edison 连接到 WiFi)。这就是为什么我真的需要用我创建的那个替换已经从“meta-intel-edison”层生成的那个。
    • 是的,您在自己的层中使用 bbappend 替换 wpa_supplicant.conf 文件。不要创建额外的配方,除非您有其他要求。
    • 谢谢。我这样做了,现在我的文件在正确的位置被覆盖了。 :)
    • 你认为你能帮我解决我遇到的其他问题吗?
    • 我正在尝试链接到 wpa_supplicant.service。我的版本是:do_install_append() { ln -s '$/lib/systemd/system/wpa_supplicant.service' '${D}${sysconfdir}/systemd/system/multi-user.target.wants/wpa_supplicant.service'在我对 .bbappend 和图像进行 bitbake 并将其闪存到我的板上后,/etc/.../system/multi-user.target.wants 中没有“wpa_supplicant.service”的链接。你知道我还能做什么吗?谢谢。
    【解决方案2】:

    使用 bbappend 文件为 p910nd 安装额外文件:

    p910nd 目录布局

    .
    ├── files
    │   ├── p910nd.conf
    │   └── p910nd.init
    └── p910nd_0.97.bbappend
    

    bbappend 文件的内容

    SUMMARY = "install init script"
    FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
    SRC_URI += "file://p910nd.init"
    SRC_URI += "file://p910nd.conf"
    
    RDEPENDS_${PN} += "bash"
    
    do_install_append() {
             install -D -m 0644 ${WORKDIR}/p910nd.conf ${D}${sysconfdir}/default/p910nd
             install -D -m 0755 ${WORKDIR}/p910nd.init ${D}/etc/init.d/p910nd
    }
    

    在我的测试中,如果文件已安装在目标中,do_install_append 也会覆盖该文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      相关资源
      最近更新 更多