Delen via


Azure Device Update voor IoT Hub apt-manifest

In dit artikel wordt het apt-manifest beschreven, een JSON-bestand dat updatedetails beschrijft die vereist zijn voor de apt-updatehandler. U kunt dit bestand net als elke andere update importeren in Device Update. Zie Een update importeren naar Device Update voor meer informatie.

Wanneer u een apt-manifest levert aan een Device Update-agent als update, verwerkt de agent het manifest en voert de benodigde bewerkingen uit. Deze bewerkingen omvatten het downloaden en installeren van de pakketten die zijn opgegeven in het apt-manifestbestand en de bijbehorende afhankelijkheden van een aangewezen opslagplaats.

Device Update ondersteunt het apt-updatetype en de updatehandler. Met deze ondersteuning kan de Device Update-agent de geïnstalleerde Debian-pakketten evalueren en de benodigde pakketten bijwerken.

U kunt een apt-manifest gebruiken om de Device Update-agent zelf en de bijbehorende afhankelijkheden bij te werken. Vermeld de naam van de agent voor apparaatupdates en de gewenste versie in het apt-manifest, net zoals elk ander pakket. Vervolgens kunt u dit apt-manifest importeren en implementeren via de Device Update-pijplijn.

Schema

Een apt-manifestbestand is een JSON-bestand met een versieschema.

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

Voorbeeld:

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

Elk apt-manifest bevat de volgende eigenschappen:

  • Naam: Een naam voor dit apt-manifest, wat elke betekenisvolle naam of id kan zijn die bij uw scenario past. Bijvoorbeeld: contoso-iot-edge.
  • Versie: Een versienummer voor dit apt-manifest, bijvoorbeeld 1.0.0.0.
  • Pakketten: een lijst met objecten die pakketspecifieke eigenschappen bevatten.
    • Naam: de pakketnaam of -id, bijvoorbeeld iotedge.
    • Versie: De gewenste pakketversiecriteria, bijvoorbeeld 1.0.8-2.

Versiebeheer

Het apt-manifest ondersteunt alleen exacte versienummers. Het versienummer is de gewenste Debian-pakketversie in indeling <epoch>:<upstream_version>-<debian_revision>, waarbij epoch een niet-ondertekende int is en upstream_version begint met een cijfer en kan alfanumerieke tekens en tekens bevatten zoals ., ,, +, , -en ~. De versiewaarde mag geen gelijkteken bevatten.

En is bijvoorbeeld "name":"iotedge""version":"1.0.8-2" gelijk aan het installeren van een pakket met behulp van de opdracht apt-get install iotedge=1.0.8-2. Versie 1.0.8 is gelijk aan 1.0.8-0.

Als de versie wordt weggelaten, installeert Device Update de meest recente beschikbare versie van het opgegeven pakket. Zie de Debian-beleidshandleiding voor meer informatie over de versie van Debian-pakketten.

Notitie

De apt package manager negeert versiebeheervereisten van een pakket wanneer de afhankelijke pakketten die moeten worden geïnstalleerd, automatisch worden opgelost. Tenzij expliciete versies van afhankelijke pakketten worden gegeven, gebruiken ze de meest recente, ook al kan het pakket zelf een strikte vereiste (=) voor een bepaalde versie opgeven. Deze automatische oplossing kan leiden tot fouten met betrekking tot een niet-uitgevoerde afhankelijkheid.

Wanneer u een specifieke versie van een pakket installeert, kunt u daarom het beste ook de expliciete versies van de afhankelijke pakketten opnemen die moeten worden geïnstalleerd. Zie apt-get niet correct oplossen van een afhankelijkheid van een vaste versie in een Debian/Ubuntu-pakket voor meer informatie.

Als u een specifieke versie van de Azure IoT Edge-beveiligingsdaemon bijwerkt, moet u de gewenste versie van het pakket en het aziot-edge afhankelijke aziot-identity-service pakket in uw apt-manifest opnemen. Zie IoT Edge bijwerken voor meer informatie.

Geïnstalleerde criteria

De aanbevolen geïnstalleerde criteriawaarde voor een apt-manifest is <name>-<version>, waarbij <name> de naam van het apt-manifest en <version> de bijbehorende versie is. Bijvoorbeeld: contoso-iot-edge-1.0.0.0.

Pakketverwijdering

U kunt ook een apt-manifest gebruiken om geïnstalleerde pakketten van apparaten te verwijderen. U kunt één apt-manifest gebruiken om meerdere pakketten te verwijderen, toe te voegen en bij te werken.

Als u een pakket wilt verwijderen, voegt u een minteken - toe achter de pakketnaam. Neem geen versienummer op voor de pakketten die u verwijdert. Als u een pakket verwijdert via een apt-manifest, worden de bijbehorende afhankelijkheden en configuraties niet verwijderd.

Met het volgende apt-manifest wordt het pakket contoso1 bijvoorbeeld verwijderd van alle apparaten waarop het is geïmplementeerd.

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

Richtlijnen voor het maken van apt-manifesten

Houd rekening met de volgende richtlijnen wanneer u een apt-manifest maakt:

  • Zorg ervoor dat het apt-manifest een goed opgemaakt JSON-bestand is.

  • Geef elk apt-manifest een unieke versie. Probeer een gestandaardiseerde methodologie te bedenken om de versie van het apt-manifest te verhogen, dus het is zinvol voor uw scenario's en is eenvoudig te volgen.

  • Geef voor de gewenste status van elk afzonderlijk pakket de exacte naam en versie op van het pakket dat u op uw apparaat wilt installeren. Valideer altijd de waarden op basis van de inhoud van de bronpakketopslagplaats.

  • Vermeld de pakketten in het apt-manifest in de volgorde waarin ze moeten worden geïnstalleerd of verwijderd.

  • Valideer altijd de installatie van pakketten op een testapparaat om het gewenste resultaat te garanderen.

  • Wanneer u bijvoorbeeld iotedge 1.0.9-1een specifieke versie van een pakket installeert, moet u ook de expliciete versies van de afhankelijke pakketten opnemen die moeten worden geïnstalleerd, bijvoorbeeld libiothsm 1.0.9-1.

  • Hoewel dit niet vereist is, zorgt u ervoor dat uw apt-manifest cumulatief wordt voorkomen dat apparaten een onbekende status krijgen. Een cumulatieve update zorgt ervoor dat uw apparaten de gewenste versie van elk relevant pakket hebben, zelfs als het apparaat een update heeft overgeslagen vanwege een installatiefout of offline is.

    Bekijk bijvoorbeeld het volgende apt-basismanifest:

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

    De volgende update van versie 2.0 bevat het contoso2 pakket, maar niet het contoso1 pakket. Alle apparaten die de 2.0-update ontvangen, hebben mogelijk niet het contoso1 pakket.

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

    De volgende cumulatieve update van versie 2.0 bevat zowel de als contoso2 de contoso1 pakketten:

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