我正在尝试使用yocto为zedboard构建图像。当它试图将一堆文件转换为root时,我的第一个编译失败。它作为其中一个元层的do_install命令的一部分失败。这条命令执行了这条chown行:yocto/bitbake构建尝试将文件chown到root并失败
chown -R root:root ${D}
我将bitbake作为普通的非root用户运行。我不应该能够将其编译为非root?
只是为了测试我创建了一个新文件,并尝试chown为root:root,并且以完全相同的方式失败。
我在这里错过了什么?
更新:看起来像这与使用伪相关。我试图建立poky没有任何额外的层(没有xilinx,openembedded等),它仍然失败,同样的错误。我尝试了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错误,它会立即失败。 –