2017-12-20 40 views
1

yocto 이미지에 내 자신의 사용자 정의 deb 패키지를 설치하고 싶습니다. 이를 위해 나는 ROOTFS_POSTPROCESS_COMMANDdeb 패키지 설치를위한 bitbake 레서피

SUMMARY = "Recipe for installing deb package" 
DESCRIPTION = "It installs own deb package" 
HOMEPAGE = "" 
LICENSE = "CLOSED" 

inherit bin_package 

my_install_pkg_deb() { 

${STAGING_BINDIR_NATIVE}/dpkg \ 

--root=${IMAGE_ROOTFS}/ --admindir=${IMAGE_ROOTFS}/var/lib/dpkg/ \ 

-i /home/pi1/install/own_1.3-07u_armhf.deb 

} 

ROOTFS_POSTPROCESS_COMMAND += "my_install_pkg_deb; " 

을 사용하여 다음과 같은 mydebpkg.bb 조리법을 사용하고 그러나 이미지를 구축하는 동안 프로세스가 패키지 mydebpkg를 설치할 수없는 오류 을 다음과 같이 실패하고 기능 실패 :을 do_rootfs. 내가 실수하고있는 부분과 deb 패키지를 설치하기위한 올바른 제조법은 무엇입니까?

+0

내가 기억한다면, 데비안 패키지는 yocto .deb 패키지와 호환되지 않습니다. 따라서 Yocto로 자신의 패키지를 생성 한 다음, 다른 모든 패키지와 마찬가지로'IMAGE_INSTALL '을 추가해야합니다. – Nayfe

답변

2

미리 컴파일 된 .deb를 설치하는 것은 어려운 결정이므로, 소스 코드에서 패키지를 컴파일 할 수 있으면 언제든지 그렇게하지 않아야합니다. 그래서

SUMMARY = "Recipe for installing deb package" 
DESCRIPTION = "It installs own deb package" 
HOMEPAGE = "" 
LICENSE = "CLOSED" 

DEPENDS += " dpkg-native " 

SRC_URI += " \ 
    file://own_1.3-07u_armhf.deb.zip \ 
" 

do_install_append() { 
    touch ${STAGING_DIR_NATIVE}/var/lib/dpkg/status 
    ${STAGING_BINDIR_NATIVE}/dpkg --instdir=${D}/ \ 
    --admindir=${STAGING_DIR_NATIVE}/var/lib/dpkg/ \ 
    -i ${WORKDIR}/own_1.3-07u_armhf.deb 
} 

를 : 그렇지 않은 경우,이 같은 일을 건의 할 것 bitbake이 작업 디렉토리에 뎁 파일을 복사 할 수 있도록 SRC_URI 변수를 사용합니다. bitbake가 제공 한 모든 압축 파일을 압축 해제하려고 시도 할 때 파일을 압축하면됩니다. .deb는 다른 압축 파일 일뿐입니다. 따라서 압축하여 압축하여 bitbake가 .deb 파일을 작업 디렉토리로 가져 오도록하십시오. .deb.zip 파일을 /path/to/your/recipe/files 폴더로 옮깁니다. 기억하십시오 : never yocto에서 절대 경로를 사용하십시오! 그런 다음 do_install 함수에서 dpkg를 호출하여 .deb 파일을 패키지의 deploy 디렉토리에 설치합니다. 이 코드는 설치가 성공적으로 완료된 경우 (충돌 해결을 잊지 말 것)와 같이 완전하지 않으므로 패키지에는 설치되었지만 출하되지 않은 파일 및 디렉토리 목록이 표시됩니다. 당신은 당신의 조리법 FILES_${PN} 변수에 추가해야합니다

FILES_${PN} += " \ 
    /usr/bin/some_file \ 
    /etc/some_config_file \ 
    /and_so_on \ 
" 

오류 메시지에서 얻을 수있는 당신을 추가 할 필요 전체 목록. 그리고이 방법은 대상 아키텍처가 호스트 아키텍처와 동일한 경우에만 작동합니다. STAGING_BINDIR_NATIVE 변수를 사용하는 것과 관련하여 패키지에 arm이 포함되어 있다는 것과 관련해서는 그렇지 않습니다.