다음을 통해 공유


Azure Device Update for IoT Hub apt 매니페스트

이 문서에서는 apt 업데이트 처리기에 필요한 업데이트 세부 정보를 설명하는 JSON 파일인 apt 매니페스트에 대해 설명합니다. 다른 업데이트와 마찬가지로 이 파일을 디바이스 업데이트로 가져올 수 있습니다. 자세한 내용은 디바이스 업데이트에 대한 업데이트 가져오기를 참조하세요.

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

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

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

스키마

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 매니페스트에는 다음과 같은 속성이 포함됩니다.

  • 이름: 시나리오에 맞는 의미 있는 이름 또는 ID일 수 있는 이 apt 매니페스트의 이름입니다. 예들 들어 contoso-iot-edge입니다.
  • 버전: 이 apt 매니페스트의 버전 번호(예 1.0.0.0: .)
  • 패키지: 패키지 관련 속성을 포함하는 개체의 목록입니다.
    • 이름: 패키지 이름 또는 ID(예 iotedge: .)
    • 버전: 원하는 패키지 버전 조건(예: 1.0.8-2.

버전 관리

apt 매니페스트는 정확한 버전 번호만 지원합니다. 버전 번호는 원하는 Debian 패키지 버전 형식<epoch>:<upstream_version>-<debian_revision>입니다. 여기서 epoch 는 부호 없는 int이고 upstream_version 숫자로 시작하고 영숫자 및 문자(예: ., ,, +-~)를 포함할 수 있습니다. 버전 값에는 등호가 포함되어서는 안 됩니다.

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

버전을 생략하면 디바이스 업데이트가 지정된 패키지의 사용 가능한 최신 버전을 설치합니다. Debian 패키지의 버전 관리 방법에 대한 자세한 내용은 Debian 정책 설명서를 참조 하세요.

참고 항목

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

따라서 특정 버전의 패키지를 설치하는 경우 설치할 종속 패키지의 명시적 버전도 포함하는 것이 가장 좋습니다. 자세한 내용은 Debian/Ubuntu 패키지의 고정 버전에 대한 종속성을 제대로 해결하지 못하는 apt-get을 참조하세요.

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

설치된 조건

apt 매니페스트에 대해 권장되는 설치 조건 값은 <name>-<version><name> apt 매니페스트의 이름이며 <version> 해당 버전입니다. 예들 들어 contoso-iot-edge-1.0.0.0입니다.

패키지 제거

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

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

예를 들어 다음 apt 매니페스트는 배포된 모든 디바이스에서 패키지를 contoso1 제거합니다.

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

Apt 매니페스트 만들기 지침

apt 매니페스트를 만들 때 다음 지침에 유의하세요.

  • apt 매니페스트가 올바른 형식의 JSON 파일인지 확인합니다.

  • 각 apt 매니페스트에 고유한 버전을 제공합니다. 표준화된 방법론을 마련하여 apt 매니페스트의 버전을 증가시키려면 시나리오에 적합하고 따라하기 쉽습니다.

  • 각 개별 패키지의 원하는 상태에 대해 디바이스에 설치하려는 패키지의 정확한 이름과 버전을 지정합니다. 항상 원본 패키지 리포지토리의 내용에 대해 값의 유효성을 검사합니다.

  • 설치하거나 제거해야 하는 순서대로 apt 매니페스트의 패키지를 나열합니다.

  • 항상 테스트 디바이스에 패키지 설치의 유효성을 검사하여 원하는 결과를 확인합니다.

  • 예를 들어 iotedge 1.0.9-1특정 버전의 패키지를 설치하는 경우 설치할 libiothsm 1.0.9-1종속 패키지의 명시적 버전도 포함됩니다.

  • 필수는 아니지만 항상 apt 매니페스트를 누적하면 디바이스를 알 수 없는 상태로 전환할 수 없습니다. 누적 업데이트는 설치 실패 또는 오프라인으로 인해 디바이스가 업데이트를 건너뛴 경우에도 디바이스가 모든 관련 패키지의 원하는 버전을 갖도록 합니다.

    예를 들어 다음 기본 apt 매니페스트를 고려합니다.

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

    다음 버전 2.0 업데이트에는 패키지가 contoso2 포함되지만 패키지는 contoso1 포함되지 않습니다. 2.0 업데이트를 받는 모든 디바이스에는 패키지가 contoso1 없을 수 있습니다.

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

    다음 버전 2.0 누적 업데이트에는 패키지와 contoso2 패키지가 contoso1 모두 포함됩니다.

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