Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Apt-manifestet är en JSON-fil som beskriver en uppdateringsinformation som krävs av apt-uppdateringshanteraren. Den här filen kan importeras till Enhetsuppdatering för IoT Hub precis som andra uppdateringar.
För mer information, se Importera en uppdatering för enheter i IoT Hub.
Översikt
När ett apt-manifest levereras till en enhetsuppdateringsagent som en uppdatering bearbetar agenten manifestet och utför nödvändiga åtgärder. Dessa åtgärder omfattar nedladdning och installation av de paket som anges i apt-manifestfilen och deras beroenden från en utsedd lagringsplats.
Enhetsuppdatering stöder apt updateType och apt uppdateringshanterare. Med det här stödet kan enhetsuppdateringsagenten utvärdera de installerade Debian-paketen och uppdatera de nödvändiga paketen.
Schemat
En apt-manifestfil är en JSON-fil med ett versionsschema.
{
"name": "<name>",
"version": "<version>",
"packages": [
{
"name": "<package name>",
"version": "<version specifier>"
}
]
}
Till exempel:
{
"name": "contoso-iot-edge",
"version": "1.0.0.0",
"packages": [
{
"name" : "thermocontrol",
"version" : "1.0.1"
},
{
"name" : "tempreport",
"version" : "2.0.0"
}
]
}
Varje apt-manifest innehåller följande egenskaper:
-
Name: Namnet på det här APT-manifestet. Detta kan vara det namn eller ID som är meningsfullt för dina scenarier. Till exempel
contoso-iot-edge. -
Version: Ett versionsnummer för det här apt-manifestet. Till exempel
1.0.0.0. -
Paket: En lista över objekt som innehåller paketspecifika egenskaper.
-
Namn: Paketets namn eller ID. Till exempel
iotedge. -
Version: Det önskade versionsvillkoren för paketet. Till exempel
1.0.8-2. Versionsvärdet får inte innehålla ett likhetstecken. Om versionen utelämnas installeras den senaste tillgängliga versionen av det angivna paketet.
-
Namn: Paketets namn eller ID. Till exempel
För närvarande stöds endast exakt versionsnummer. Versionsnumret är den önskade Debianpaketversionen i format [epoch:]upstream_version[-debian_revision], där epok är en osignerad int och upstream_version kan innehålla alfanumeriska tecken som ".","+","-" och "~". Den bör börja med en siffra.
Anmärkning
"1.0.8" är lika med "1.0.8-0"
Till exempel motsvarar "name":"iotedge" och "version":"1.0.8-2" att installera ett paket med kommandot apt-get install iotedge=1.0.8-2
Mer information om hur Debian-paket är versionshanterade finns i Debian policy manual
Anmärkning
APT-pakethanteraren ignorerar versionskraven som anges av ett paket när beroendepaket löses och installeras automatiskt. Om inte explicita versioner av beroende paket ges kommer de att använda den senaste, även om själva paketet kan ange ett strikt krav (=) på en viss version. Den här automatiska lösningen kan leda till fel som rör ett ouppfyllt beroende. Läs mer
Om du uppdaterar en specifik version av Azure IoT Edge-säkerhetsdaemonen bör du inkludera önskad version av aziot-edge-paketet och dess beroende aziot-identity-service paket i ditt apt-manifest.
Mer information finns i Så här uppdaterar du IoT Edge.
Ett apt-manifest kan användas för att uppdatera enhetsuppdateringsagenten och dess beroenden. Ange namnet på enhetsuppdateringsagenten och önskad version i apt-manifestet, precis som för andra paket. Det här apt-manifestet kan sedan importeras och distribueras via Enhetsuppdatering för IoT Hub-pipelinen.
Ta bort paket
Du kan också använda ett apt-manifest för att ta bort installerade paket från enheten. Ett enda apt-manifest kan användas för att ta bort, lägga till och uppdatera flera paket.
Om du vill ta bort ett paket lägger du till ett minustecken "-" efter paketnamnet. Du bör inte inkludera ett versionsnummer för de paket som du tar bort. Om du tar bort ett paket via ett apt-manifest tas inte dess beroenden och konfigurationer bort.
Till exempel:
{
"name": "contoso-video",
"version": "2.0.0.1",
"packages": [
{
"name" : "foo-"
}
]
}
Det här apt-manifestet tar bort paketet "foo" från de enheter som det har distribuerats till.
Rekommenderat värde för installerade villkor
De installerade kriterierna för ett apt-manifest är <name>-<version> där <name> är namnet på apt-manifestet och <version> är versionen av apt-manifestet. Till exempel contoso-iot-edge-1.0.0.0.
Riktlinjer för att skapa ett apt-manifest
När du skapar apt-manifestet finns det några riktlinjer att tänka på:
- Se alltid till att apt-manifestet är en välformulerad json-fil.
- Varje apt-manifest bör ha en unik version. Prova att komma med en standardiserad metod för att öka versionen av apt-manifestet, så att det passar dina scenarier och enkelt kan följas.
- När det gäller önskat tillstånd för varje enskilt paket anger du det exakta namnet och versionen av paketet som du vill installera på enheten. Verifiera alltid värdena mot den paketlagringsplats som du tänker använda som källa för paketet.
- Se till att paketen i apt-manifestet visas i den ordning de ska installeras/tas bort.
- Verifiera alltid installationen av paket på en testenhet för att säkerställa att resultatet önskas.
- När du installerar en specifik version av ett paket (till exempel
iotedge 1.0.9-1) är det bästa praxis att även ha explicita versioner av de beroende paket som ska installeras i apt-manifestet (till exempellibiothsm 1.0.9-1) - Även om det inte är obligatoriskt bör du alltid se till att ditt apt-manifest är kumulativt för att undvika att enheten hamnar i ett okänt tillstånd. En kumulativ uppdatering säkerställer att dina enheter har önskad version av varje paket som du bryr dig om även om enheten har hoppat över en apt-uppdateringsdistribution på grund av fel i installationen eller offline
Till exempel:
Base apt-manifestet
{
"name": "contoso-iot-edge",
"version": "1.0",
"packages": [
{
"name": "foo",
"version": "1.0.1"
}
]
}
Felaktig uppdatering
Den här uppdateringen innehåller bar-paketet, men inte foo-paketet.
{
"name": "contoso-iot-edge",
"version": "2.0",
"packages": [
{
"name": "bar",
"version": "3.0.2"
}
]
}
Bra uppdatering
Den här uppdateringen innehåller foo-paketet och bar-paketet.
{
"name": "contoso-iot-edge",
"version": "2.0",
"packages": [
{
"name": "foo",
"version": "1.0.1"
},
{
"name": "bar",
"version": "3.0.2"
}
]
}