Manifesto apt per l'aggiornamento del dispositivo

Il manifesto apt è un file JSON che descrive i dettagli dell'aggiornamento richiesti dal gestore di aggiornamento apt. Questo file può essere importato in Aggiornamento dispositivo per hub IoT proprio come qualsiasi altro aggiornamento.

Per altre informazioni, vedere Importare un aggiornamento all'aggiornamento del dispositivo per hub IoT.

Panoramica

Quando un manifesto apt viene recapitato a un agente di aggiornamento del dispositivo come aggiornamento, l'agente elabora il manifesto ed esegue le operazioni necessarie. Queste operazioni includono il download e l'installazione dei pacchetti specificati nel file manifesto apt e le relative dipendenze da un repository designato.

Device Update supporta apt updateType e apt update handler. Questo supporto consente all'agente di Aggiornamento dispositivi di valutare i pacchetti Debian installati e aggiornare i pacchetti necessari.

SCHEMA

Un file manifesto apt è un file JSON con uno schema con versioni.

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

Ad esempio:

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

Ogni manifesto apt include le proprietà seguenti:

  • Nome: nome per questo manifesto apt. Questo può essere qualsiasi nome o ID significativo per gli scenari. Ad esempio, contoso-iot-edge.
  • Versione: numero di versione per questo manifesto apt. Ad esempio, 1.0.0.0.
  • Pacchetti: elenco di oggetti contenenti proprietà specifiche del pacchetto.
    • Nome: nome o ID del pacchetto. Ad esempio, iotedge.
    • Versione: i criteri di versione desiderati per il pacchetto. Ad esempio, 1.0.8-2. Il valore della versione non deve contenere un segno di uguale. Se la versione viene omessa, verrà installata la versione più recente disponibile del pacchetto specificato.

Attualmente è supportato solo il numero di versione esatto. Il numero di versione è la versione del pacchetto Debian desiderata in formato [epoch:]upstream_version[-debian_revision], dove l'epoca è un segno int e upstream_version può includere alfanumerici e caratteri come ".","+","-" e "~". Deve iniziare con una cifra.

Nota

'1.0.8' è uguale a '1.0.8-0'

Ad esempio, "name":"iotedge" ed "version":"1.0.8-2" è equivalente all'installazione di un pacchetto usando il comando apt-get install iotedge=1.0.8-2

Per altre informazioni sulla versione dei pacchetti Debian, vedere il manuale dei criteri Debian

Nota

La gestione pacchetti apt ignora i requisiti di controllo delle versioni forniti da un pacchetto quando vengono risolti automaticamente i pacchetti dipendenti da installare. A meno che le versioni esplicite dei pacchetti dipendenti vengano usate più recenti, anche se il pacchetto stesso può specificare un requisito rigoroso (=) in una determinata versione. Questa risoluzione automatica può causare errori relativi a una dipendenza non soddisfatta. Altre informazioni

Se si aggiorna una versione specifica del daemon di sicurezza di Azure IoT Edge, è necessario includere la versione desiderata del pacchetto e il aziot-edge relativo pacchetto dipendente aziot-identity-service nel manifesto apt. Per altre informazioni, vedere Come aggiornare IoT Edge.

Un manifesto apt può essere usato per aggiornare l'agente di aggiornamento del dispositivo e le relative dipendenze. Elencare il nome dell'agente di aggiornamento del dispositivo e la versione desiderata nel manifesto apt, come per qualsiasi altro pacchetto. Questo manifesto apt può quindi essere importato e distribuito tramite l'aggiornamento del dispositivo per hub IoT pipeline.

Rimozione di pacchetti

È anche possibile usare un manifesto apt per rimuovere i pacchetti installati dal dispositivo. Un singolo manifesto apt può essere usato per rimuovere, aggiungere e aggiornare più pacchetti.

Per rimuovere un pacchetto, aggiungere un segno meno "-" dopo il nome del pacchetto. Non è consigliabile includere un numero di versione per i pacchetti che si sta rimuovendo. La rimozione di un pacchetto tramite un manifesto apt non rimuove le relative dipendenze e configurazioni.

Ad esempio:

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

Questo manifesto apt rimuoverà il pacchetto "foo" dai dispositivi distribuiti.

I criteri installati per un manifesto apt sono <name>-<version> il nome <name> del manifesto apt ed <version> è la versione del manifesto apt. Ad esempio, contoso-iot-edge-1.0.0.0.

Linee guida sulla creazione di un manifesto apt

Durante la creazione del manifesto apt, esistono alcune linee guida da tenere presente:

  • Assicurarsi sempre che il manifesto apt sia un file json ben formato.
  • Ogni manifesto apt deve avere una versione univoca. Provare a usare una metodologia standardizzata per incrementare la versione del manifesto apt, in modo che sia utile per gli scenari e possa essere facilmente seguita.
  • Quando si tratta dello stato desiderato di ogni singolo pacchetto, specificare il nome esatto e la versione del pacchetto che si desidera installare nel dispositivo. Convalidare sempre i valori rispetto al repository del pacchetto che si intende usare come origine per il pacchetto.
  • Assicurarsi che i pacchetti nel manifesto apt siano elencati nell'ordine in cui devono essere installati/rimossi.
  • Convalidare sempre l'installazione dei pacchetti in un dispositivo di test per assicurarsi che il risultato sia desiderato.
  • Quando si installa una versione specifica di un pacchetto (ad esempio, ), è consigliabile avere anche nel manifesto apt le versioni esplicite dei pacchetti dipendenti da installare (ad esempiolibiothsm 1.0.9-1, iotedge 1.0.9-1)
  • Anche se non è obbligatorio, assicurarsi sempre che il manifesto apt sia cumulativo per evitare di ottenere il dispositivo in uno stato sconosciuto. Un aggiornamento cumulativo garantisce che i dispositivi dispongano della versione desiderata di ogni pacchetto che si preoccupa anche se il dispositivo ha ignorato una distribuzione di aggiornamento apt a causa di un errore nell'installazione o in modalità offline

Ad esempio:

Manifesto apt di base

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

Aggiornamento non valido

Questo aggiornamento include il pacchetto della barra, ma non il pacchetto foo.

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

Aggiornamento valido

Questo aggiornamento include il pacchetto foo e include anche il pacchetto della barra.

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

Passaggi successivi

Importare un aggiornamento in Aggiornamento dispositivi