Yocto Project : : Open Source

IMAGE_FEATURE: package-management

Jay.P Morgan 2024. 6. 1. 04:58

 

  1. IMAGE_FEATURS "package-management"

 

  • PACKAGE_CLASSES = "package_ipk"인 경우에 대해 설명함
  • 이 기능을 넣어 Image에 적용 시키면,Rootfs에서,
    이러한 기능이 작동되는 과정에서, /etc/opkg/*.conf 파일을 생성해줌
  • 특히,
    에서, 현재 Build과정 중에 ${PACKAGE_FEED_URIS}, ${PACKAGE_FEED_BASE_PATHS}, ${PACKAGE_FEED_ARCH}가 적용되어 있으면, openembedded-core/meta/lib/oe/package_manager.py에서,
    insert_feeds_uris가 적용되어, feed용.conf가 /etc/opkg/feed용.conf가 적용된다.
  • ipk일 경우 아래가 적용된다.

 

 

 

  1.1 ${PACKAGE_FEED_URIS}, ${PACKAGE_FEED_BASE_PATHS}

 

local.conf

PACKAGE_FEED_URIS = "http://<server_ip>/"
PACKAGE_FEED_BASE_PATHS = "ipk_server"
  • 패키지 피드의 base URL은 아래 처럼 구성된다.
${PACKAGE_FEED_URIS}/${PACKAGE_FEED_BASE_PATHS}/${PACKAGE_FEED_ARCHS}.


qemu로 core-image-minimal을 구동 시켜보자.

$ runqemu core-image-minimal nographic
  • opkg관련 파일은 있지만 opkg 매니징 파일 (opkg.conf, opkg 바이너리)등 이 없다.

 

  • local.conf에 IMAGE_FEATURES에 package-management를 추가한다.
  • 그리고 재 빌드 한다.
$ bitbake core-image-minimal
$ runqemu core-image-minimal nographic
$ opkg
  • opkg 바이너리 확인
  • opkg 설정 파일 확인


 

 

  2. Package Indexing

 

  1. 패키지 인덱스 Refresh.
    매 빌드 후, 연결한 서버의 Package Feed Update.
    $ bitbake package-index
  • build/deploy/<ipk|rpm|deb>/에 패키지 포맷 별 Package List 생성

pacakge-index

  • 위의 Package List를 만들어주는 bitbake recipe 이자 tool
  • FILE=open-embedded/meta/recipes-core/meta/package-index.bb

 

 

  3. local package server

 

  1. poky core-image-minimal 에서, EXTRA_IMAGE_FEATURES += "package-management"를 사용
  2. local.conf에
    PACKAGE_FEED_URIS = "http://<server_ip>/"
    PACKAGE_FEED_BASE_PATHS = "ipk_server"
    를 적용하면, core-image-minimal 이미지의 /etc/opkg에, base-feeds.conf가 생성되고, 내부에 아래와 같은 conf 파일이 생성되어 feed할 수 있다.
    openembedded-core/meta/oe/lib/package_manager.py

  1. 그렇다면, 이 패키지 피드 서버를 local에서 구현해보자!
    deploypath/ipk
    에 core-image-minimal을 구성하기 위한 build된 package들이 arch별로 나뉘어 있다.
    Packages (Package index) file을 생성하자.
    $ bitbake package-index

    여기서, Package Deploy Server를 구현하자.
    $ python3 -m http.server

 

 

출처: https://velog.io/@markyang92/posts?tag=Yocto