
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 で同様のエラーを受け取っていました。私の場合、これは pseudo ユーティリティが失敗したためでしたが、Yocto はエラーを明確に表示せず、停止しました。代わりに、chmod -R dir
通常のユーザーとして実行できなくなるまで続行されました。ユーティリティ 'Pseudo' は、呼び出しを傍受し、sqlite db で追跡するために使用されますchown
。chmod
これらは、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