Как мне написать рецепт yocto/bitbake, чтобы заменить файл vsftpd.conf по умолчанию моим собственным файлом?

Я хочу заменить файл vsftpd.conf по умолчанию своим собственным файлом! Мой битовый файл выглядит следующим образом:

bbexample_1.0.bb

DESCRIPTION = "Configuration and extra files for TX28"
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""

S = "${WORKDIR}"

SRC_URI += " \
    file://ld.so.conf \
    file://nginx/nginx.conf \
    file://init.d/myscript.sh"

inherit allarch

do_install () {
    install -d ${D}${sysconfdir}
    install -d ${D}${sysconfdir}/nginx
    install -d ${D}${sysconfdir}/init.d
    rm -f ${D}${sysconfdir}/ld.so.conf
    install -m 0755 ${WORKDIR}/ld.so.conf ${D}${sysconfdir}
    install -m 0755 ${WORKDIR}/nginx/nginx.conf ${D}${sysconfdir}/nginx/
    install -m 0755 ${WORKDIR}/init.d/myscript.sh ${D}${sysconfdir}/init.d/
}

bbexample_1.0.bbappend

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

SRC_URI += " \
    file://vsftpd.conf"

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

Но файл не может быть заменен! Что случилось?

2 ответа

Решение

Вы должны добавить к своему рецепту:

FILES_${PN} += " file you installed"

Что вам нужно сделать, это использовать bbappend в вашем собственном слое,

vsftpd рецепт находится в meta-openembedded/meta-networking/recipes-daemons

Таким образом, вам нужно создать файл с именем vstfpd_%.bbappend (% делает его действительным для каждой версии)

Этот файл должен находиться в <your-layer>/meta-networking/recipes-daemons, Вы также должны поставить свой заказ vsftpd.conf в <your-layer>/meta-networking/recipes-daemons/vsftpd папка

Его содержание должно быть:

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

do_install_append(){
    install -m 644 ${WORKDIR}/vsftpd.conf ${D}${sysconfdir}
}

Пример из мета-открытого здесь

Другие вопросы по тегам