我正在使用 BitBake 编译 Yocto 项目。
BitBake 的一个配方尝试使用命令更改某些目录和文件的权限chown
。问题是该命令由于以下原因而失败:不允许更改所有权操作。
BitBake 命令由用户 luca 启动,他也是一个 sudoers。如果我输入,ls -l
我在有问题的文件夹中看到的内容是:
-rw-r--r-- 1 luca luca 1875 May 13 17:10 arm-thumb-mutex_db5.patch
-rw-r--r-- 1 luca luca 33 May 13 17:10 configure.sstate
drwxr-xr-x 16 luca luca 4096 May 13 17:10 db-6.0.30
-rw-r--r-- 1 luca luca 665 May 13 17:10 fix-parallel-build.patch
drwxr-xr-x 3 luca luca 4096 May 13 19:11 image
drwxr-xr-x 2 luca luca 4096 May 13 19:11 temp
显然,如果我手动输入,sudo chowwn 777 image
它可以起作用,但我无法更改导致错误的 BitBake 脚本。
我的权限和用户有什么问题?
答案1
最后,我对整个源文件夹执行了 chmod 777,一切开始工作。可能是脚本或可执行文件的权限。感谢大家的支持。
答案2
我在 bitbake 中收到类似的错误。在我的情况下,这是由于伪实用程序失败,但 Yocto 没有清楚地显示错误并停止。相反,它继续运行,直到无法chmod -R dir
像普通用户一样运行。实用程序“Pseudo”用于拦截chown
、chmod
调用并在 sqlite db 中跟踪它们。它们的行为就像它们正在更改您的 RFS 文件权限,但实际上并不需要 root。在我的情况下,如果您在失败的 pkg 中搜索错误:
build/tmp/work/aarch64-fsl-linux/gcc-runtime/linaro-4.9-r2015.03/temp> grep pseudo *
log.do_install:ERROR: ld.so: object 'libpseudo.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
log.do_install.17098:ERROR: ld.so: object 'libpseudo.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
这是因为之前有人曾为之前的开发活动设置了安全功能:
setcap cap_net_admin,cap_net_raw+eip /bin/bash or to /usr/bin/python. To fix: setcap -r /bin/bash
这篇很难找到的帖子给了我这样的线索:http://lists.openembedded.org/pipermail/openembedded-core/2012-February/056779.html