This service is available only in Japanese-language.
【前提:問題】
rpmビルドを実施すると、十数回に1回の確率で、≪shのシンボリックリンクが不正になる≫現象が発生します。
→詳細は、「sh -> /bin/bash」(OKのケース)であるはずが、
「sh -> /bin/busybox.nosuid」(NGのケース)となっています。
【判明している事実】
「busybox」になっている場合(NGのケース)は、≪/etc/rpm-postinsts/100-bash≫というファイルが差分として残っています。
【ご教授いただきたい内容】
この、≪/etc/rpm-postinsts/100-bash≫というファイルが作られる目的はなんでしょうか。
それが残っていることが、≪意図せずシンボリックリンクがbusybox≫になってしまうことにつながるのでしょうか。
ご存知の方、教えていただけないでしょうか。
yakuhito
2018/12/19 (水) 11:00
使用しているBSP、BSPのバージョン、エラーの発生したレシピをお知らせください。
/etc/rpm-postinsts/100-bash* ファイルは、meta/lib/oe/package_manager.py で生成をおこなっております。
本来、/bin/bash が存在することが前提のスクリプトが動作しない場合、/bin/bash が生成された後に
実行するスクリプトとして登録されているものと推測しております。
nkr606
2018/12/20 (木) 11:21
ご回答ありがとうございます。
ご回答ありがとうございます。
RPMビルド時の全体の動きについてご教示ください。
/etc/rpm-postinsts/配下にあるスクリプトはtargetの初回起動時に実行されると理解しております。
この処理は、
「ビルド時にあるスクリプトが動作しなかった場合を想定して、/etc/rpm-postinsts/配下にファイルを残しtargetの初回起動時に実行することで補う仕組み」
と認識しましたが正しいでしょうか。
現象の発生頻度からはタイミングの問題でありRPMビルドでは起こりうる事象で、それを補う仕組みが/etc/rpm-postinsts/であるという認識です。
上記認識が正しい場合、targetの初回起動時以外で回避する方法などありますでしょうか。
例えば、ビルド完了後に/etc/rpm-postinsts/配下のスクリプトを手動で実施するなど。
> 使用しているBSP、BSPのバージョン、エラーの発生したレシピをお知らせください。
ビルド時のログを確認していますが、エラーが発生しているレシピを特定できておりません。
BSPの情報については少々お待ち頂けますでしょうか。
BSPのバージョンによって上記動作が異なるのであればその旨ご連絡いただけますと幸いです。
【補足】
100-bashの中身は、
update-alternativesで/bin/sh -> /bin/bashを作る処理です。
yakuhito
2018/12/21 (金) 14:50
タイミング依存の解消が必要と考えます
bitbakeの場合、依存関係を調整したうえで並列buildを実行しています。
今回のケースでは /bin/bash が生成される前に/bin/bashに依存するレシピが走っている
可能性があります。
どのレシピがどのタイミングで/etc/rpm-postinsts/ 以下のファイルを生成しているのか
特定することが重要と考えます。
nkr606
2018/12/25 (火) 11:14
ご回答ありがとうございます。
ご回答ありがとうございます。
> どのレシピがどのタイミングで/etc/rpm-postinsts/ 以下のファイルを生成しているのか
> 特定することが重要と考えます。
この観点で調査を進めたいと思います。
ありがとうございます。