Manifest apt usługi Device Update

Manifest apt to plik JSON opisujący szczegóły aktualizacji wymagane przez program obsługi aktualizacji apt. Ten plik można zaimportować do usługi Device Update dla IoT Hub tak samo jak w przypadku każdej innej aktualizacji.

Aby uzyskać więcej informacji, zobacz Importowanie aktualizacji do usługi Device Update dla IoT Hub.

Omówienie

Gdy manifest apt jest dostarczany do agenta usługi Device Update jako aktualizacja, agent przetwarza manifest i wykonuje niezbędne operacje. Te operacje obejmują pobieranie i instalowanie pakietów określonych w pliku manifestu apt oraz ich zależności z wyznaczonego repozytorium.

Usługa Device Update obsługuje procedurę obsługi apt updateType i apt update. Ta obsługa umożliwia agentowi usługi Device Update ocenę zainstalowanych pakietów Debian i zaktualizowanie niezbędnych pakietów.

Schemat

Plik manifestu apt jest plikiem JSON ze schematem w wersji.

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

Przykład:

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

Każdy manifest apt zawiera następujące właściwości:

  • Nazwa: nazwa tego manifestu apt. Może to być dowolna nazwa lub identyfikator, który ma znaczenie dla Twoich scenariuszy. Na przykład contoso-iot-edge.
  • Wersja: numer wersji dla tego manifestu apt. Na przykład 1.0.0.0.
  • Pakiety: lista obiektów zawierających właściwości specyficzne dla pakietu.
    • Nazwa: nazwa lub identyfikator pakietu. Na przykład iotedge.
    • Wersja: żądane kryteria wersji pakietu. Na przykład 1.0.8-2. Wartość wersji nie powinna zawierać znaku równości. Jeśli wersja zostanie pominięta, zostanie zainstalowana najnowsza dostępna wersja określonego pakietu.

Obecnie obsługiwany jest tylko dokładny numer wersji. Numer wersji jest żądaną wersją pakietu Debian w formacie [epoch:]upstream_version[-debian_revision], gdzie epoka jest niepodpisaną int i upstream_version może zawierać alfanumeryczne i znaki, takie jak ".","+","-" i "~". Powinna zaczynać się od cyfry.

Uwaga

Wartość "1.0.8" jest równa "1.0.8-0"

Na przykład "name":"iotedge" element i "version":"1.0.8-2" jest odpowiednikiem instalowania pakietu przy użyciu polecenia apt-get install iotedge=1.0.8-2

Aby uzyskać więcej informacji o tym, jak pakiety Debian są wersjonowane, zobacz podręcznik zasad Debian

Uwaga

Menedżer pakietów apt ignoruje wymagania dotyczące przechowywania wersji podane przez pakiet, gdy pakiety zależne do zainstalowania są automatycznie rozwiązywane. O ile nie zostaną podane jawne wersje pakietów zależnych, będą używać najnowszej wersji, mimo że sam pakiet może określać ścisłe wymaganie (=) dla danej wersji. To automatyczne rozwiązanie może prowadzić do błędów dotyczących niezaspokojonych zależności. Więcej informacji

Jeśli aktualizujesz określoną wersję demona zabezpieczeń usługi Azure IoT Edge, należy uwzględnić żądaną wersję aziot-edge pakietu i jego zależny aziot-identity-service pakiet w manifeście apt. Aby uzyskać więcej informacji, zobacz Jak zaktualizować IoT Edge.

Manifest apt może służyć do aktualizowania agenta usługi Device Update i jego zależności. Wyświetl nazwę agenta aktualizacji urządzenia i żądaną wersję w manifeście apt, tak jak w przypadku dowolnego innego pakietu. Ten manifest apt można następnie zaimportować i wdrożyć za pośrednictwem usługi Device Update dla potoku IoT Hub.

Usuwanie pakietów

Możesz również użyć manifestu apt, aby usunąć zainstalowane pakiety z urządzenia. Pojedynczy manifest apt może służyć do usuwania, dodawania i aktualizowania wielu pakietów.

Aby usunąć pakiet, dodaj znak minus "-" po nazwie pakietu. Nie należy uwzględniać numeru wersji dla usuwanych pakietów. Usunięcie pakietu za pomocą manifestu apt nie powoduje usunięcia jego zależności i konfiguracji.

Przykład:

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

Ten manifest apt usunie pakiet "foo" z urządzeń, w których jest wdrażany.

Zainstalowane kryteria manifestu apt to <name>-<version> miejsce, w którym <name> jest nazwą manifestu apt i <version> jest wersją manifestu apt. Na przykład contoso-iot-edge-1.0.0.0.

Wskazówki dotyczące tworzenia manifestu apt

Podczas tworzenia manifestu apt istnieją pewne wytyczne, które należy wziąć pod uwagę:

  • Zawsze upewnij się, że manifest apt jest poprawnie sformułowanym plikiem json.
  • Każdy manifest apt powinien mieć unikatową wersję. Spróbuj wymyślić ustandaryzowaną metodologię, aby zwiększać wersję manifestu apt, dzięki czemu ma sens w scenariuszach i można ją łatwo obserwować.
  • Jeśli chodzi o żądany stan każdego pojedynczego pakietu, określ dokładną nazwę i wersję pakietu, który chcesz zainstalować na urządzeniu. Zawsze sprawdzaj poprawność wartości względem repozytorium pakietów, które ma być używane jako źródło pakietu.
  • Upewnij się, że pakiety w manifeście apt są wymienione w kolejności, w której powinny być zainstalowane/usunięte.
  • Zawsze sprawdzaj poprawność instalacji pakietów na urządzeniu testowym, aby upewnić się, że wynik jest pożądany.
  • Podczas instalowania określonej wersji pakietu (na przykład iotedge 1.0.9-1) najlepszym rozwiązaniem jest również zainstalowanie jawnych wersji pakietów zależnych (na przykład libiothsm 1.0.9-1) w manifeście apt.
  • Mimo że nie jest to wymagane, zawsze upewnij się, że manifest apt jest skumulowany, aby uniknąć przechodzenia urządzenia do nieznanego stanu. Aktualizacja zbiorcza gwarantuje, że urządzenia mają żądaną wersję każdego pakietu, którego dotyczy problem, nawet jeśli urządzenie pominąło wdrożenie aktualizacji apt z powodu awarii instalacji lub zostało przełączone w tryb offline

Przykład:

Podstawowy manifest apt

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

Nieprawidłowa aktualizacja

Ta aktualizacja zawiera pakiet słupkowy, ale nie pakiet foo.

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

Dobra aktualizacja

Ta aktualizacja obejmuje pakiet foo, a także pakiet słupkowy.

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

Następne kroki

Importowanie aktualizacji do usługi Device Update