
Я компилирую проект Yocto с помощью BitBake.
Рецепт 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. Они действуют так, как будто изменяют ваши разрешения файла 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