【发布时间】:2016-03-04 15:42:41
【问题描述】:
我正在尝试使用 yocto 为 zedboard 构建图像。我的第一个构建在尝试将一堆文件放入根目录时失败了。它作为一个元层中的 do_install 命令的一部分失败。该命令执行了这条 chown 行:
chown -R root:root ${D}
我以普通的非 root 用户身份运行 bitbake。我不应该能够以非root身份编译它吗?
只是为了测试,我创建了一个新文件并尝试 chown 到 root:root 并以完全相同的方式失败。
我在这里错过了什么?
更新:看起来这与使用伪有关。我尝试在没有任何附加层(没有 xilinx、openembedded 等)的情况下构建 poky,但它仍然失败并出现相同的错误。我尝试了 jethro 和 fido 版本都出现了同样的错误。
更新 2:显然在 meta/conf/bitbake.conf 中禁用了伪。我不知道为什么或如何继续知道这一点:
# Use pseudo as the fakeroot implementation
PSEUDO_LOCALSTATEDIR ?= "${WORKDIR}/pseudo/"
PSEUDO_PASSWD ?= "${STAGING_DIR_TARGET}:${STAGING_DIR_NATIVE}"
export PSEUDO_DISABLED = "1"
#export PSEUDO_PREFIX = "${STAGING_DIR_NATIVE}${prefix_native}"
#export PSEUDO_BINDIR = "${STAGING_DIR_NATIVE}${bindir_native}"
#export PSEUDO_LIBDIR = "${STAGING_DIR_NATIVE}$PSEUDOBINDIR/../lib/pseudo/lib
FAKEROOTBASEENV = "PSEUDO_BINDIR=${STAGING_BINDIR_NATIVE} PSEUDO_LIBDIR=${STAGING_BINDIR_NATIVE}/../lib/pseudo/lib PSEUDO_PREFIX=${STAGING_BINDIR_NATIVE}/../../ PSEUDO_DISABLED=1"
FAKEROOTCMD = "${STAGING_BINDIR_NATIVE}/pseudo"
FAKEROOTENV = "PSEUDO_PREFIX=${STAGING_DIR_NATIVE}${prefix_native} PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR} PSEUDO_PASSWD=${PSEUDO_PASSWD} PSEUDO_NOSYMLINKEXP=1 PSEUDO_DISABLED=0"
FAKEROOTNOENV = "PSEUDO_UNLOAD=1"
FAKEROOTDIRS = "${PSEUDO_LOCALSTATEDIR}"
PREFERRED_PROVIDER_virtual/fakeroot-native ?= "pseudo-native"
【问题讨论】:
-
我在虚拟 CentOS 7 上构建 fido 时遇到了同样的问题。在原生 Arch 上构建 morty 不会遇到此错误。如果你问我在 Arch 上构建 fido 时会发生什么:由于一些 python 错误,它立即失败。
标签: linux yocto bitbake openembedded