Yocto 配方的安裝指令中的權限被拒絕

Yocto 配方的安裝指令中的權限被拒絕

我正在嘗試熟悉 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.

相關內容