Yocto 프로젝트에서는 패키지 피드(Package Feed)를 활용하여 다양한 패키지를 관리하고 배포할 수 있다. 패키지 피드란 빌드된 패키지를 호스팅하고 네트워크를 통해 배포할 수 있도록 하는 저장소를 의미한다. 패키지 피드는 보통 IPK, RPM, Deb 포맷을 지원하며, 패키지를 다운로드받고 설치하는 작업을 효율적으로 수행할 수 있다.

패키지 피드를 구성하고 관리하는 일은 Yocto 프로젝트에서 중요한 역할을 하며, 이를 통해 사용자들은 원하는 대상 장치에 필요한 패키지를 쉽게 추가하거나 업데이트할 수 있다. 이 섹션에서는 패키지 피드의 구성 및 관리 방법에 대해 자세히 설명한다.

패키지 피드 구성

  1. 패키지 저장소 설정:
  2. 패키지 저장소는 보통 HTTP 서버, FTP 서버 또는 로컬 파일 시스템을 이용해 설정할 수 있다.
  3. 서버 설정 예제: sh sudo apt-get install apache2 sudo systemctl start apache2 sudo systemctl enable apache2
  4. Yocto 빌드 시스템에서 생성된 패키지를 저장소에 복사: sh rsync -avz ./build/tmp/deploy/ipk/ /var/www/html/ipk/

  5. 패키지 인덱스 생성:

  6. 적절한 패키지 관리 도구를 사용해 패키지 인덱스를 생성해야 한다.
  7. opkg-make-index는 IPK 패키지에 대해 인덱스를 생성하는 도구이다: sh opkg-make-index -r /var/www/html/ipk > /var/www/html/ipk/Packages

패키지 피드 관리

  1. 패키지 업데이트:
  2. 주기적으로 빌드된 패키지를 패키지 피드로 복사하고 인덱스를 업데이트해야 한다.
  3. 새 패키지를 빌드한 후 다음 명령어로 피드를 동기화할 수 있다: sh rsync -avz ./build/tmp/deploy/ipk/ /var/www/html/ipk/ opkg-make-index -r /var/www/html/ipk > /var/www/html/ipk/Packages

  4. 패키지 삭제:

  5. 더 이상 필요하지 않은 패키지를 삭제하고 인덱스를 갱신해야 한다.
  6. 패키지를 삭제한 후 다음 명령어로 인덱스를 업데이트한다: sh rm /var/www/html/ipk/<package-name>.ipk opkg-make-index -r /var/www/html/ipk > /var/www/html/ipk/Packages

패키지 피드를 통한 패키지 설치

  1. 피드 URL 설정:
  2. 대상 장치에서 패키지 관리 도구가 패키지 피드 URL을 참조할 수 있도록 설정해야 한다.
  3. 예를 들어, opkg를 사용하는 경우 /etc/opkg/opkg.conf 파일에 패키지 피드 URL을 추가한다: sh src/gz all http://<your-server-ip>/ipk

  4. 패키지 업데이트 및 설치:

  5. 패키지 데이터를 업데이트한 후, 원하는 패키지를 설치할 수 있다: sh opkg update opkg install <package-name>

패키지 레시피 작성

Yocto 프로젝트에서 패키지 관리는 주요 기능 중 하나로, 특정 소프트웨어 패키지를 만들기 위한 레시피 재작성이 필수적이다. 패키지 레시피는 주로 .bb 파일로 작성되며, 소프트웨어 패키지의 소스 코드 다운로드부터 빌드, 설치, 패키지화까지의 과정을 정의한다.

주요 레시피 변수

  1. SRC_URI:
  2. 소프트웨어의 소스 코드 위치를 지정한다.
  3. 예: sh SRC_URI = "http://example.com/software-${PV}.tar.gz"

  4. DEPENDS:

  5. 현재 레시피가 빌드되기 전에 빌드되어야 하는 다른 레시피를 지정한다.
  6. 예: sh DEPENDS = "libxyz"

  7. do_compile 함수:

  8. 소스 코드를 컴파일하는 방법을 정의한다. 기본적으로 Yocto는 autotools 라든가 cmake를 사용하여 빌드하지만, 커스텀 빌드가 필요한 경우 직접 함수 내에 빌드 명령어를 작성할 수 있다.
  9. 예: sh do_compile() { oe_runmake }

  10. do_install 함수:

  11. 컴파일된 소프트웨어를 패키지화할 때 필요한 설치 과정 정의.
  12. 예: sh do_install() { install -d ${D}${bindir} install -m 0755 software ${D}${bindir}/software }

예제 레시피

다음은 간단한 예제 패키지 레시피이다:

DESCRIPTION = "Example software"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=<checksum>"

SRC_URI = "http://example.com/software-${PV}.tar.gz"
SRC_URI[md5sum] = "<md5sum>"
SRC_URI[sha256sum] = "<sha256sum>"

S = "${WORKDIR}/software-${PV}"

inherit autotools

do_install() {
    install -d ${D}${bindir}
    install -m 0755 software ${D}${bindir}/software
}

패키지 관리 도구

패키지 관리 도구는 Yocto 프로젝트에서 패키지를 설치, 삭제 및 업데이트하는 데 사용된다. 대표적인 도구로는 opkg, rpm, dpkg가 있으며, 각 도구는 각각의 패키지 형식을 지원한다.

opkg

RPM

DPKG

패키지 피드의 구성 및 관리는 Yocto 프로젝트에서 효율적인 소프트웨어 배포를 가능하게 한다. 패키지 레시피의 작성부터 패키지 관리 도구를 통한 설치 및 업데이트까지의 전체 과정을 이해하면, 사용자는 보다 효율적으로 임베디드 시스템 환경을 관리할 수 있다.