Aggiornamento dei dispositivi di Azure per hub IoT manifesto apt
Questo articolo descrive il manifesto apt, un file JSON che descrive i dettagli degli aggiornamenti richiesti dal gestore di aggiornamento apt. È possibile importare questo file in Aggiornamento dispositivi esattamente come qualsiasi altro aggiornamento. Per altre informazioni, vedere Importare un aggiornamento in Aggiornamento dispositivi.
Quando si recapita un manifesto apt 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 il tipo di aggiornamento apt e il gestore di aggiornamento. Questo supporto consente all'agente di Aggiornamento dispositivi di valutare i pacchetti Debian installati e aggiornare i pacchetti necessari.
È possibile usare un manifesto apt per aggiornare l'agente di Aggiornamento dispositivi stesso e le relative dipendenze. Elencare il nome dell'agente di aggiornamento del dispositivo e la versione desiderata nel manifesto apt come qualsiasi altro pacchetto. È quindi possibile importare questo manifesto apt e distribuirlo tramite la pipeline di Aggiornamento dispositivi.
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: un nome per questo manifesto apt, che può essere qualsiasi nome o ID significativo adatto allo scenario. 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: criteri di versione del pacchetto desiderati,
1.0.8-2
ad esempio .
-
Nome: nome o ID del pacchetto, ad esempio
Controllo delle versioni
Il manifesto apt supporta solo numeri di versione esatti. Il numero di versione è la versione desiderata del pacchetto Debian nel formato , dove epoch
è un int senza segno e inizia con una cifra e upstream_version
può includere caratteri alfanumerici e caratteri come .
, +
,
, -
, e ~
.<epoch>:<upstream_version>-<debian_revision>
Il valore della versione non deve contenere un segno di uguale.
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
. La versione 1.0.8
è uguale a 1.0.8-0
.
Se la versione viene omessa, Aggiornamento dispositivo installa la versione più recente disponibile del pacchetto specificato. Per altre informazioni sulla versione dei pacchetti Debian, vedere il manuale dei criteri Debian.
Nota
Lo strumento di 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, usano 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.
Pertanto, quando si installa una versione specifica di un pacchetto, è consigliabile includere anche le versioni esplicite dei pacchetti dipendenti da installare. Per altre informazioni, vedere apt-get non risolve correttamente una dipendenza da una versione fissa in un pacchetto Debian/Ubuntu.
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.
Criteri installati
Il valore dei criteri installati consigliato per un manifesto apt è <name>-<version>
, dove <name>
è il nome del manifesto apt ed <version>
è la relativa versione. Ad esempio: contoso-iot-edge-1.0.0.0
.
Rimozione del pacchetto
È anche possibile usare un manifesto apt per rimuovere i pacchetti installati dai dispositivi. È possibile usare un singolo manifesto apt per rimuovere, aggiungere e aggiornare più pacchetti.
Per rimuovere un pacchetto, aggiungere un segno -
meno dopo il nome del pacchetto. Non 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, il manifesto apt seguente rimuove il pacchetto contoso1
da tutti i dispositivi in cui viene distribuito.
{
"name": "contoso-video",
"version": "2.0.0.1",
"packages": [
{
"name" : "contoso1-"
}
]
}
Linee guida per la creazione di manifesti Apt
Quando si crea un manifesto apt, tenere presenti le linee guida seguenti:
Assicurarsi che il manifesto apt sia un file JSON ben formato.
Assegnare a ogni manifesto apt una versione univoca. Provare a trovare una metodologia standardizzata per incrementare la versione del manifesto apt, quindi ha senso per gli scenari ed è facile da seguire.
Per lo 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 contenuto del repository del pacchetto di origine.
Elencare i pacchetti nel manifesto apt nell'ordine in cui devono essere installati o rimossi.
Convalidare sempre l'installazione dei pacchetti in un dispositivo di test per garantire il risultato desiderato.
Quando si installa una versione specifica di un pacchetto, ad esempio , includere anche le versioni esplicite dei pacchetti dipendenti da installare, ad esempio
iotedge 1.0.9-1
libiothsm 1.0.9-1
.Anche se non richiesto, rendere sempre cumulativo il manifesto apt evita di ottenere i dispositivi in uno stato sconosciuto. Un aggiornamento cumulativo garantisce che i dispositivi abbiano la versione desiderata di ogni pacchetto pertinente, anche se il dispositivo ha ignorato un aggiornamento a causa di un errore di installazione o offline.
Si consideri ad esempio il manifesto apt di base seguente:
{ "name": "contoso-iot-edge", "version": "1.0", "packages": [ { "name": "contoso1", "version": "1.0.1" } ] }
L'aggiornamento della versione 2.0 seguente include il
contoso2
pacchetto, ma non ilcontoso1
pacchetto. Tutti i dispositivi che ricevono l'aggiornamento 2.0 potrebbero non avere ilcontoso1
pacchetto.{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso2", "version": "3.0.2" } ] }
L'aggiornamento cumulativo della versione 2.0 seguente include entrambi i
contoso1
pacchetti econtoso2
:{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso1", "version": "1.0.1" }, { "name": "contoso2", "version": "3.0.2" } ] }