chown -R 在 Yocto-Project 配方中不起作用

chown -R not working in Yocto-Project recipe

抱歉,我的母语不是英语。

我正在尝试使用 Yocto-Project 配方文件安装我的 Web 应用程序。

PR = "r0"
PV = "1.0"

LIC_FILES_CHKSUM = "file://COPYING;md5=d41d8cd98f00b204e9800998ecf8427e"

SRC_URI = "\
    file://sources \
    file://COPYING \
"
S = "${WORKDIR}"

do_install() {
    install -d ${D}${localstatedir}/www
    cp -r ${S}/sources/* ${D}${localstatedir}/www/
    chown -R www-data:www-data ${D}${localstatedir}/www/
    chmod -R 775 ${D}${localstatedir}/www/cgi-bin
}

但是 /var/www 仍然属于 root:root 而不是 www-data:www-data 希望的那样。

问题

那么我如何chown /var/www目录回溯到www-data:www-data

编辑

我看过以下演示文稿的第 9 页:https://wiki.yoctoproject.org/wiki/images/e/e6/Custom_Users_Groups_in_Yocto1.1.pdf .

我创建了这个食谱文件来模仿这个页面。

sudo chown -R wwwdata:wwwdata /var/www/ 使所需文件夹及其内部文件夹或文件的所有权递归

首先,chownchmod 应该按照您使用它们的方式在 YP/OE 食谱中工作。

问题可能是您在命令的路径参数中遗漏了 /。根据文档 [1] ${D} 没有尾随 /.

因此以下应该有效:

do_install() {
  install -d ${D}/${localstatedir}/www
  cp -r ${S}/sources/* ${D}/${localstatedir}/www/
  chown -R www-data:www-data ${D}/${localstatedir}/www/
  chmod -R 775 ${D}/${localstatedir}/www/cgi-bin
}

(如果不是请 post 你的 bitbake 日志)

[1] https://www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html#var-D