Dela via


Azure Device Update för IoT Hub apt-manifest

Den här artikeln beskriver apt-manifestet, en JSON-fil som beskriver uppdateringsinformation som krävs av apt-uppdateringshanteraren. Du kan importera den här filen till Enhetsuppdatering precis som andra uppdateringar. Mer information finns i Importera en uppdatering till Enhetsuppdatering.

När du levererar ett apt-manifest 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-uppdateringstypen och uppdateringshanteraren. Med det här stödet kan enhetsuppdateringsagenten utvärdera de installerade Debian-paketen och uppdatera de nödvändiga paketen.

Du kan använda ett apt-manifest för att uppdatera själva enhetsuppdateringsagenten och dess beroenden. Visa en lista över namnet på enhetsuppdateringsagenten och önskad version i apt-manifestet på samma sätt som andra paket. Du kan sedan importera det här apt-manifestet och distribuera det via pipelinen För enhetsuppdatering.

Schema

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:

  • Namn: Ett namn för det här apt-manifestet, som kan vara ett beskrivande namn eller ID som passar ditt scenario. 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: Paketnamnet eller ID:t, till exempel iotedge.
    • Version: Det önskade villkoret för paketversionen, 1.0.8-2till exempel .

Versionshantering

APT-manifestet stöder endast exakta versionsnummer. Versionsnumret är den önskade Debian-paketversionen i formatet <epoch>:<upstream_version>-<debian_revision>, där epoch är en osignerad int och upstream_version börjar med en siffra och kan innehålla alfanumeriska tecken som ., ,, +, -och ~. Versionsvärdet får inte innehålla ett likhetstecken.

Och motsvarar till exempel "name":"iotedge""version":"1.0.8-2" att installera ett paket med kommandot apt-get install iotedge=1.0.8-2. Versionen 1.0.8 är lika med 1.0.8-0.

Om versionen utelämnas installerar Enhetsuppdatering den senaste tillgängliga versionen av det angivna paketet. Mer information om hur Debian-paket är versionshanterade finns i Debians policyhandbok.

Kommentar

Apt-pakethanteraren ignorerar versionskraven som anges av ett paket när de beroende paket som ska installeras matchas automatiskt. Om inte explicita versioner av beroende paket ges använder de 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.

När du installerar en specifik version av ett paket är det därför bäst att även inkludera explicita versioner av de beroende paket som ska installeras. Mer information finns i apt-get som inte korrekt löser ett beroende av en fast version i ett Debian/Ubuntu-paket.

Om du uppdaterar en specifik version av Azure IoT Edge-säkerhetsdaemonen bör du inkludera den önskade versionen 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.

Installerade villkor

Det rekommenderade installerade villkorsvärdet för ett apt-manifest är <name>-<version>, där <name> är namnet på apt-manifestet och <version> är dess version. Exempel: contoso-iot-edge-1.0.0.0

Borttagning av paket

Du kan också använda ett apt-manifest för att ta bort installerade paket från enheter. Du kan använda ett enda apt-manifest 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. Inkludera inte 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.

Följande apt-manifest tar till exempel bort paketet contoso1 från alla enheter som det distribueras till.

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

Riktlinjer för skapande av Apt-manifest

Tänk på följande riktlinjer när du skapar ett apt-manifest:

  • Kontrollera att apt-manifestet är en välformulerad JSON-fil.

  • Ge varje apt-manifest en unik version. Prova att komma med en standardiserad metod för att öka versionen av apt-manifestet, så det är vettigt för dina scenarier och är lätt att följa.

  • För ö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 innehållet i källpaketlagringsplatsen.

  • Visa en lista över paketen i apt-manifestet i den ordning de ska installeras eller tas bort.

  • Verifiera alltid installationen av paket på en testenhet för att säkerställa önskat resultat.

  • När du installerar en specifik version av ett paket, till exempel iotedge 1.0.9-1, inkluderar du även explicita versioner av de beroende paket som ska installeras, till exempel libiothsm 1.0.9-1.

  • Även om det inte krävs, undviker alltid kumulativt apt-manifest att enheter hamnar i ett okänt tillstånd. En kumulativ uppdatering säkerställer att dina enheter har önskad version av varje relevant paket, även om enheten hoppades över en uppdatering på grund av installationsfel eller offline.

    Tänk till exempel på följande base apt-manifest:

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

    Följande version 2.0-uppdatering innehåller contoso2 paketet, men inte contoso1 paketet. Alla enheter som tar emot 2.0-uppdateringen kanske inte har contoso1 paketet.

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

    Följande kumulativa version 2.0-uppdatering innehåller både paketen contoso1 och contoso2 :

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