다음을 통해 공유


디바이스 업데이트 apt 매니페스트

apt 매니페스트는 apt 업데이트 처리기에 필요한 업데이트 세부 정보를 설명하는 JSON 파일입니다. 이 파일은 다른 업데이트와 마찬가지로 IoT Hub용 디바이스 업데이트로 가져올 수 있습니다.

자세한 내용은 IoT Hub용 디바이스 업데이트 가져오기를 참조하세요.

개요

apt 매니페스트가 업데이트로 디바이스 업데이트 에이전트에 전달되면 에이전트는 매니페스트를 처리하고 필요한 작업을 수행합니다. 이러한 작업에는 apt 매니페스트 파일에 지정된 패키지를 다운로드하고 설치하는 작업과 지정된 리포지토리의 그 종속성이 포함됩니다.

디바이스 업데이트는 apt updateType 및 apt 업데이트 처리기지원합니다. 이 지원을 통해 Device Update 에이전트는 설치된 Debian 패키지를 평가하고 필요한 패키지를 업데이트할 수 있습니다.

스키마

apt 매니페스트 파일은 버전이 지정된 스키마가 있는 JSON 파일입니다.

{
    "name": "<name>",
    "version": "<version>",
    "packages": [
        {
            "name": "<package name>",
            "version": "<version specifier>"
        }
    ]
}

다음은 그 예입니다.

{
    "name": "contoso-iot-edge",
    "version": "1.0.0.0",
    "packages": [
        {
            "name" : "thermocontrol",
            "version" : "1.0.1"
        },
        {
            "name" : "tempreport",
            "version" : "2.0.0"
        }
    ]
}

각 apt 매니페스트에는 다음과 같은 속성이 포함됩니다.

  • 이름: 이 apt 매니페스트의 이름입니다. 이는 시나리오에 의미 있는 이름 또는 ID가 무엇이든 될 수 있습니다. 예: contoso-iot-edge.
  • 버전: 이 apt 매니페스트의 버전 번호입니다. 예: 1.0.0.0.
  • 패키지: 패키지 관련 속성을 포함하는 개체의 목록입니다.
    • 이름: 패키지의 이름 또는 ID입니다. 예: iotedge.
    • 버전: 패키지에 대해 원하는 버전 조건입니다. 예: 1.0.8-2. 버전 값에는 등호가 포함되어서는 안 됩니다. 버전을 생략하면 지정된 패키지의 사용 가능한 최신 버전이 설치됩니다.

현재 정확한 버전 번호만 지원됩니다. 버전 번호는 [epoch:]upstream_version[-debian_revision]형식으로 원하는 Debian 패키지 버전입니다. 여기서 epoch 부호 없는 int이고 upstream_version 영숫자와 ".","+","-" 및 "~"와 같은 문자를 포함할 수 있습니다. 숫자로 시작해야 합니다.

비고

'1.0.8'은 '1.0.8-0'입니다.

예를 들어 "name":"iotedge""version":"1.0.8-2" 명령 apt-get install iotedge=1.0.8-2 사용하여 패키지를 설치하는 것과 같습니다.

Debian 패키지의 버전 관리 방법에 대한 자세한 내용은 Debian 정책 수동을 참조하세요.

비고

apt 패키지 관리자는 설치할 종속 패키지를 자동으로 확인하는 경우 패키지에서 제공하는 버전 관리 요구 사항을 무시합니다. 종속 패키지의 명시적 버전이 제공되지 않는 한 패키지 자체가 지정된 버전에 엄격한 요구 사항(=)을 지정할 수 있더라도 최신 버전을 사용합니다. 이 자동 해결은 충족되지 않는 종속성과 관련된 오류를 발생시킬 수 있습니다. 자세히 알아보기

특정 버전의 Azure IoT Edge 보안 디먼을 업데이트하는 경우 원하는 버전의 aziot-edge 패키지와 해당 종속 aziot-identity-service 패키지를 apt 매니페스트에 포함해야 합니다. 자세한 내용은 IoT Edge를 업데이트하는 방법을 참조하세요.

apt 매니페스트를 사용하여 디바이스 업데이트 에이전트 및 해당 종속성을 업데이트할 수 있습니다. 다른 패키지와 마찬가지로 apt 매니페스트에 디바이스 업데이트 에이전트 이름 및 원하는 버전을 나열합니다. 그런 다음 IoT Hub용 디바이스 업데이트를 통해 이 apt 매니페스트를 가져오고 배포할 수 있습니다.

패키지 제거

apt 매니페스트를 사용하여 디바이스에서 설치된 패키지를 제거할 수도 있습니다. 단일 apt 매니페스트를 사용하여 여러 패키지를 제거, 추가 및 업데이트할 수 있습니다.

패키지를 제거하려면 패키지 이름 옆에 빼기 기호 "-"를 추가합니다. 제거하려는 패키지의 버전 번호를 포함해서는 안 됩니다. apt 매니페스트를 통해 패키지를 제거해도 패키지에 종속된 항목과 구성은 제거되지 않습니다.

다음은 그 예입니다.

{
    "name": "contoso-video",
    "version": "2.0.0.1",
    "packages": [
        {
            "name" : "foo-"
        }
    ]
}

이 apt 매니페스트는 배포된 디바이스에서 패키지 "foo"를 제거합니다.

apt 매니페스트에 대해 설치된 조건은 <name>-<version><name> apt 매니페스트의 이름이고 <version> apt 매니페스트의 버전입니다. 예: contoso-iot-edge-1.0.0.0.

apt 매니페스트 만들기에 대한 지침

apt 매니페스트를 만드는 동안 주의해야 할 몇 가지 지침이 있습니다.

  • 항상 apt 매니페스트가 올바른 형식의 json 파일인지 확인합니다.
  • 각 apt 매니페스트에는 고유한 버전이 있어야 합니다. 시나리오에 적합하고 쉽게 따를 수 있도록 apt 매니페스트의 버전을 증가시키는 표준화된 방법론을 마련해 보세요.
  • 각 개별 패키지의 원하는 상태에 관해서는 디바이스에 설치하려는 패키지의 정확한 이름과 버전을 지정합니다. 항상 패키지의 원본으로 사용하려는 패키지 리포지토리에 대해 값의 유효성을 검사합니다.
  • apt 매니페스트의 패키지가 설치/제거되어야 하는 순서대로 나열되는지 확인합니다.
  • 항상 테스트 디바이스에 패키지 설치의 유효성을 검사하여 결과가 필요한지 확인합니다.
  • 특정 버전의 패키지를 설치할 때(예: iotedge 1.0.9-1) apt 매니페스트에 설치할 종속 패키지의 명시적 버전도 포함하는 것이 좋습니다(예: libiothsm 1.0.9-1).
  • 필수는 아니지만, 항상 apt 매니페스트가 누적되어 디바이스가 예상치 못한 상태에 빠지지 않도록 확인하십시오. 누적 업데이트는 디바이스가 설치 오류로 인해 apt 업데이트 배포를 건너뛰거나 오프라인으로 전환되더라도 관심 있는 모든 패키지의 원하는 버전을 디바이스에 보장합니다.

다음은 그 예입니다.

기본 apt 매니페스트

{
    "name": "contoso-iot-edge",
    "version": "1.0",
    "packages": [
        {
            "name": "foo",
            "version": "1.0.1"
        }
    ]
}

잘못된 업데이트

이 업데이트에는 막대 패키지가 포함되지만 foo 패키지는 포함되지 않습니다.

{
    "name": "contoso-iot-edge",
    "version": "2.0",
    "packages": [
        {
            "name": "bar",
            "version": "3.0.2"
        }
    ]
}

좋은 업데이트

이 업데이트에는 foo 패키지가 포함되며 막대 패키지도 포함됩니다.

{
    "name": "contoso-iot-edge",
    "version": "2.0",
    "packages": [
        {
            "name": "foo",
            "version": "1.0.1"
        },
        {
            "name": "bar",
            "version": "3.0.2"
        }
    ]
}

다음 단계

Device Update에 대한 업데이트 가져오기