尝试使用BBCLASSEXTEND =“nginx”扩展配方,但失败

ssgvzors  于 2023-10-17  发布在  Nginx
关注(0)|答案(1)|浏览(142)

How to install nginx on yocto project
所以在yocto上正确安装nginx后
现在我正在尝试写我自己的配方来替换我在使用BBCLASSEXTEND =“nginx”时修改的default_server
/etc/nginx/sites-available/default_server

SUMMARY = "nginxconfig"

DESCRIPTION = "${SUMMARY}"

LICENSE = "CLOSED"

LIC_FILES_CHKSUM = "mychecksum"

S = "${WORKDIR}"

BBCLASSEXTEND = "nginx"

SRC_URI = " \
            file://default_server \ 
            "



do_install() {
    install -d ${D}/etc/nginx/sites-available
   
    cp -f ${WORKDIR}/default_server ${D}/etc/nginx/sites-available/
    

}

FILES_${PN} += "/etc/nginx/sites-available/* "

但显示错误

/meta-wmt/recipes-wmt/nginxconfig/nginxconfig.bb: 
Could not inherit file classes/nginx.bbclassA

所以我错过了什么在这里我很确定nginx是存在的

zbsbpyhn

zbsbpyhn1#

BBCLASSEXTEND与你试图完成的事情无关。
为了覆盖另一个配方提供的文件,唯一的解决方案是覆盖安装该文件的原始过程,该文件是原始nginx配方的do_install
您可以通过创建nginxbbappend文件来实现这一点:nginx_%.bbappend

**[注意]**如果您的文件仅与nginx的特定版本相关,请在bbappend文件名中指定版本。

现在,你应该有这样的路径:

meta-wmt
   | recipes-httpd
        | nginx
            | nginx_%.bbappend
            | files
                | default_server.site

请注意,原始nginx配方的文件名为:default_server.site,所以将文件命名为相同的名称。继续阅读,你就会知道为什么。
nginx_%.bbappend文件仅包含以下内容:

FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

这里的技巧是,原始的recipe会尝试在FILESEXTRAPATHS中找到default_server.site,正如你所看到的,我们在它上面做了一个prepend,所以包含你的自定义default_server.site的新路径将是它搜索的第一个路径,所以它会抓取你的自定义文件。

相关问题