我正在嘗試使用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錯誤,它會立即失敗。 –