Manifesto apt di Aggiornamento dispositivi
Il manifesto apt è un file JSON che descrive i dettagli di aggiornamento richiesti dal gestore di aggiornamento apt. Questo file può essere importato in Aggiornamento dispositivi per hub IoT esattamente come qualsiasi altro aggiornamento.
Per altre informazioni, vedere Importare un aggiornamento in Aggiornamento dispositivi per hub IoT.
Panoramica
Quando un manifesto apt viene recapitato a un agente di Aggiornamento dispositivi 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 versione.
{
"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 del manifesto apt. Può trattarsi di 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.
-
Name: 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.
-
Name: nome o ID del pacchetto. Ad esempio,
Attualmente è supportato solo il numero di versione esatto. Il numero di versione è la versione desiderata del pacchetto Debian nel formato [epoch:]upstream_version[-debian_revision], dove epoch è unsigned int e upstream_version può includere caratteri 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 tramite il comando apt-get install iotedge=1.0.8-2
Per altre informazioni sul controllo delle versioni 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 i pacchetti dipendenti da installare vengono risolti automaticamente. A meno che non vengano fornite versioni esplicite dei pacchetti dipendenti, useranno la versione più recente, 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 dispositivi 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 da rimuovere. 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 in cui viene distribuito.
Valore consigliato per i criteri installati
I criteri installati per un manifesto apt sono <name>-<version>
dove <name>
è il nome del manifesto apt ed <version>
è la versione del manifesto apt. Ad esempio, contoso-iot-edge-1.0.0.0
.
Linee guida per la creazione di un manifesto apt
Durante la creazione del manifesto apt, è necessario tenere presenti alcune linee guida:
- Assicurarsi sempre che il manifesto apt sia un file JSON ben formato.
- Ogni manifesto apt deve avere una versione univoca. Provare a creare una metodologia standardizzata per incrementare la versione del manifesto apt, in modo che abbia senso 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 vuole 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,
iotedge 1.0.9-1
), è consigliabile avere anche nel manifesto apt le versioni esplicite dei pacchetti dipendenti da installare (ad esempio,libiothsm 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 abbiano la versione desiderata di ogni pacchetto a cui si è interessati, anche se il dispositivo ha ignorato una distribuzione di aggiornamento apt a causa di un errore nell'installazione o essere portato 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 a barre, 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 a barre.
{
"name": "contoso-iot-edge",
"version": "2.0",
"packages": [
{
"name": "foo",
"version": "1.0.1"
},
{
"name": "bar",
"version": "3.0.2"
}
]
}