저는 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
루트가 소유할 수 있는 대상 디렉터리에 파일을 만들 수 있는 권한이 없습니다. 어쩌면 D
홈 디렉토리 어딘가에 해당 변수를 설정한 다음 do_install
.