
私はYoctoのビルドプロセスに慣れようとしており、現在はレシピに取り組んでいます。非常にシンプルなレシピがあります
DESCRIPTION = "Hello world"
S = "${WORKDIR}"
SRC_URI="file://bye.sh"
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = "file://${S}/README;md5=e584df0feead52ed7de9b60172adc0cf "
#${D} is /usr and ${bindir} is bin
do_install() {
install -d /test
install -m 0777 bye.sh /test
}
インストール時にディレクトリが見つからない場合は自動的に作成されると言われましたが、このインスタンスではそうはなりません。表示されるエラーは次のとおりです。
Log data follows:
| DEBUG: Executing shell function do_install
| install: cannot create regular file ‘/usr/bin/bye.sh’: Permission denied
| WARNING: /home/builder/project/runqeme_qemux86/build/tmp/work/i586-poky-linux/directory/1.0-r0/temp/run.do_install.22136:1 exit 1 from 'install -m 0777 bye.sh /usr/bin'
| ERROR: Function failed: do_install (log file is located at /home/builder/project/runqeme_qemux86/build/tmp/work/i586-poky-linux/directory/1.0-r0/temp/log.do_install.22136)
そこにディレクトリを構築できないわけではなく、レシピは、特定のディレクトリにない限り、bash ファイルをどこにも保存することを拒否します。
答え1
大規模だが包括的なYocto リファレンスマニュアルそしてその簡単な例典型的なインストールスクリプトは、${D}
例えば のサブディレクトリにファイルを移動します。
install -d ${D}${bindir}
同様の戦術を使用する必要がありますinstall -d ${D}/test
。この変数は次のように説明されていますここ。
セクションを読む5.3.13. インストールインストール段階で何が起こると予想されるかについて説明します。
答え2
宛先ディレクトリにファイルを作成する権限がありません。このディレクトリはおそらく root が所有しています。変数をD
ホーム ディレクトリのどこかに設定して、 を呼び出すことができますdo_install
。