This service is available only in Japanese-language.
Yoctoイメージに、ntp, ntpdataアプリケーションをインストールしたく、
bblayers.conf に下記レイヤーを追加してbitbakeしましたが、Yoctoイメージにはインストールされていませんでした。
${TOPDIR}/../meta-openembedded/meta-networking \
${TOPDIR}/../meta-openembedded/meta-python \
** Yocto imageでの実行結果:コマンドなし
~# ntp
-sh: ntp: command not found
~# ntpdata
-sh: ntpdata: command not found
meta-networking下には確かにntpレシピは存在するので、meta-networkingを追加すれば自然とinstallされると期待しておりました。
ntpレシピ:meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p11.bb
また、downloadフォルダには、レシピに書いてあるようなntp-${PV}.tar.gz は存在しておらず、レシピが実行されていないのでは、と考えております。
解決方法をご教授いただければ幸いです。
よろしくお願い致します。
SO
2022/5/25 (水) 08:34
レシピ名を指定してbitbakeするとビルドが始まりましたが.....
$ bitbake ntp
を実行すると、ntp-4.2.8p11-r0 のfetch, compile installが実行されました(ということは先ほどは実行されていなかったということ。。。)
が、以前として、なぜ bitbake core-image-westonでレシピが実行されなかったのかがよくわかりません。
ご教授いただければ幸いです。
yakuhito
2022/5/25 (水) 09:42
イメージに追加する場合はIMAGE_INSTALL 変数にパッケージ名を記載します
local.conf や イメージレシピのbbappend 内にて、IMAGE_INSTALL_append = " ntp ntpdata " とパッケージ名を記載することで、イメージに指定されたパッケージがインストールされます。
未生成のパッケージ名を指定した場合、次回イメージレシピ名を指定してbitbakeを実行した際に、イメージを構成するパッケージが生成されていないため、パッケージを生成するレシピの構築が行われます。
SO
2022/5/25 (水) 10:47
local.conf に IMAGE_INSTALL_append = " ntp ntpdata " を追加しましたが、、、
local.confに追加して、
$ bitbake core-image-weston
を実行しましたが、下記エラーとなってしまいました。
ERROR: Nothing RPROVIDES 'ntpdata' (but /home/usr/yocto_v2/build/../poky/meta/recipes-graphics/images/core-image-weston.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'ntpdata' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['ntpdata']
ERROR: Required build target 'core-image-weston' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-weston', 'ntpdata']
こちらはどのような意味のエラーでしょうか?
対処法をご教授いただければ幸いです。
H.I
2022/5/25 (水) 11:06
ntpdateで試したらどうなりますか?
ntpdateで試したらどうなりますか?
SO
2022/5/25 (水) 11:32
仰る通りスペルミスでした...
お騒がせしました。
整理すると、以下の①②を実行すると、Yoctoイメージに追加されました。
①bblayers.conf
${TOPDIR}/../meta-openembedded/meta-networking \
${TOPDIR}/../meta-openembedded/meta-python \
②local.conf
IMAGE_INSTALL_append = " ntp ntpdate "
本件に関して、もう少し深堀して質問させていただきたいのですが、
私が行った実験では、①のみだとbitbakeはできるがパッケージは入らない、②のみだとbitbakeでエラーとなりました。
例えば、私のこれまでの経験だと、Yoctoでアプリケーションをインストールしたい場合は、IMAGE_INSTALL_APPEND=" tree "と入れるだけで、レイヤー追加を意識することはありませんでした。
IMAGE_INSTALL_APPEND=だけではダメなアプリと、それだけでよいアプリはどのように見分ければよいでしょうか?
yakuhito
2022/5/25 (水) 13:04
bitbake-layers show-recipes を実行して表示されないレシピは含まれているレイヤーの登録が必要です
bitbake コマンドは conf/bbleyers.conf ファイルを最初に解析し、その中に登録されている各レイヤーのconf/leyer.confを解析し含まれるレシピをBBFILES変数に登録します。
bitbakeを使う上で便利なコマンドとして、bitbake-layers が提供されています。
bitbake-layers show-layers を実行することで、conf/bblayers.conf に登録されていて現在使用可能なレイヤー及び優先度が一覧表示されます。
bitbake-layers show-recipes を実行することで、現在使用可能なレイヤー内に含まれるレシピが一覧表示されます。
プロジェクトを生成する際に、初期化コマンドを実行しますが、yocto projectで提供するpoky/oe-init-build-env の場合、
poky/meta , poky/meta-poky . poky-meta-yocto-bsp の3つのレイヤーのみ登録された conf/bblayers.conf を生成します。
SoCベンダーが提供するBSPは、自社製品向けのBSPを構築するために必要となるレイヤーも併せて配布する場合も多く、使用するレイヤーをプロジェクト生成時にconf/bblayers.conf に一括登録するスクリプトが提供される場合が多いので、もしもベンダーBSPで独自の初期化スクリプトが提供されている場合は、そちらを使用することをお勧めします。