
Estou compilando um projeto Yocto com BitBake.
Uma receita do BitBake tenta alterar a permissão de alguns diretórios e arquivos usando chown
o comando. O problema é que o comando falha por causa deoperação de mudança de propriedade não permitida.
O comando BitBake é iniciado pelo usuário luca, que também é um sudoers. Se eu digitar ls -l
o que vejo na pasta problemática é:
-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
Obviamente se eu digitar manualmente, por exemplo, sudo chowwn 777 image
funciona, mas não consigo alterar o script BitBake que causa o erro.
O que há de errado com minhas permissões e usuário?
Responder1
No final fiz o chmod 777 de toda a pasta de fontes e tudo começou a funcionar. Provavelmente permissões em scripts ou arquivos executivos. Obrigado a todos pelo apoio.
Responder2
Eu estava recebendo erros semelhantes no bitbake. No meu caso, isso ocorreu devido à falha do pseudo-utilitário, mas o Yocto não mostrou claramente os erros e parou. Em vez disso, continuou até não poder mais funcionar chmod -R dir
como usuário normal. O utilitário 'Pseudo' é usado para interceptar chown
, chmod
chamadas e rastreá-las em um banco de dados sqlite. Eles agem como se estivessem alterando as permissões do arquivo RFS, mas na verdade não exigem root. No meu caso, se você procurou o erro no pacote que falhou:
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.
Isso ocorreu porque alguém já havia definido recursos de segurança para atividades de desenvolvimento anteriores com:
setcap cap_net_admin,cap_net_raw+eip /bin/bash or to /usr/bin/python. To fix: setcap -r /bin/bash
Esta postagem difícil de encontrar me deu uma pista sobre isso:http://lists.openembedded.org/pipermail/openembedded-core/2012-February/056779.html