Delen via


Apt-manifest voor apparaatupdate

Het apt-manifest is een JSON-bestand dat een updatedetails beschrijft die vereist zijn voor apt update-handler. Dit bestand kan net als elke andere update worden geïmporteerd in Device Update voor IoT Hub.

Zie Een update importeren naar Device Update voor IoT Hub voor meer informatie.

Overzicht

Wanneer een apt-manifest als een update aan een Device Update-agent wordt geleverd, 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 vanuit een aangewezen opslagplaats.

Device Update ondersteunt apt updateType en apt update handler. Dankzij deze ondersteuning kan de Device Update-agent de geïnstalleerde Debian-pakketten evalueren en de benodigde pakketten bijwerken.

Schema

Een apt-manifestbestand is een JSON-bestand met een schema met versiebeheer.

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

Bijvoorbeeld:

{
    "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: De naam voor dit apt-manifest. Dit kan elke naam of id zijn die zinvol is voor uw scenario's. 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 naam of id van het pakket. Bijvoorbeeld iotedge.
    • Versie: De gewenste versiecriteria voor het pakket. Bijvoorbeeld 1.0.8-2. De versiewaarde mag geen gelijkteken bevatten. Als u versie weglaat, wordt de meest recente beschikbare versie van het opgegeven pakket geïnstalleerd.

Momenteel wordt alleen het exacte versienummer ondersteund. Het versienummer is de gewenste Debian-pakketversie in de indeling [epoch:]upstream_version[-debian_revision], waarbij epoch een niet-ondertekende int is en upstream_version alfanumerieke tekens en tekens zoals ".","+","-" en "~" kan bevatten. Het moet beginnen met een cijfer.

Notitie

'1.0.8' is gelijk aan '1.0.8-0'

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

Zie de Debian-beleidshandleiding voor meer informatie over de versie van Debian-pakketten

Notitie

De apt-pakketbeheer 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 (=) opgeven voor een bepaalde versie. Deze automatische oplossing kan leiden tot fouten met betrekking tot een onvervulde afhankelijkheid. 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 bijbehorende afhankelijke aziot-identity-service pakket opnemen in uw apt-manifest. Zie How to update IoT Edge (IoT Edge bijwerken) voor meer informatie.

Een apt-manifest kan worden gebruikt om de Device Update-agent en de bijbehorende afhankelijkheden bij te werken. Vermeld de naam van de agent voor apparaatupdates en de gewenste versie in het apt-manifest, net als voor elk ander pakket. Dit apt-manifest kan vervolgens worden geïmporteerd en geïmplementeerd via de Device Update voor IoT Hub-pijplijn.

Pakketten verwijderen

U kunt ook een apt-manifest gebruiken om geïnstalleerde pakketten van uw apparaat te verwijderen. Eén apt-manifest kan worden gebruikt 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. U moet geen versienummer opnemen voor de pakketten die u verwijdert. Als u een pakket verwijdert via een apt-manifest, worden de afhankelijkheden en configuraties niet verwijderd.

Bijvoorbeeld:

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

Met dit apt-manifest wordt het pakket 'foo' verwijderd van het apparaat of de apparaten waarnaar het is geïmplementeerd.

Het geïnstalleerde criterium voor een apt-manifest is <name>-<version> , waarbij <name> de naam van het apt-manifest en <version> de versie van het apt-manifest is. Bijvoorbeeld contoso-iot-edge-1.0.0.0.

Richtlijnen voor het maken van een apt-manifest

Tijdens het maken van het apt-manifest zijn er enkele richtlijnen waarmee u rekening moet houden:

  • Zorg er altijd voor dat het apt-manifest een goed gevormd json-bestand is.
  • Elk apt-manifest moet een unieke versie hebben. Probeer een gestandaardiseerde methodologie te bedenken om de versie van het apt-manifest te verhogen, zodat deze zinvol is voor uw scenario's en gemakkelijk kan worden gevolgd.
  • Als het gaat om de gewenste status van elk afzonderlijk pakket, geeft u de exacte naam en versie op van het pakket dat u op uw apparaat wilt installeren. Valideer de waarden altijd op basis van de pakketopslagplaats die u wilt gebruiken als bron voor het pakket.
  • Zorg ervoor dat de pakketten in het apt-manifest worden vermeld in de volgorde waarin ze moeten worden geïnstalleerd/verwijderd.
  • Valideer altijd de installatie van pakketten op een testapparaat om ervoor te zorgen dat het resultaat gewenst is.
  • Bij het installeren van een specifieke versie van een pakket (bijvoorbeeld iotedge 1.0.9-1), is het raadzaam om in het apt-manifest ook de expliciete versies van de afhankelijke pakketten te installeren (bijvoorbeeld libiothsm 1.0.9-1)
  • Hoewel dit niet verplicht is, moet u er altijd voor zorgen dat uw apt-manifest cumulatief is om te voorkomen dat uw apparaat een onbekende status krijgt. Een cumulatieve update zorgt ervoor dat uw apparaten de gewenste versie hebben van elk pakket dat u belangrijk vindt, zelfs als het apparaat een geschikte update-implementatie heeft overgeslagen vanwege een fout in de installatie of offline is gehaald

Bijvoorbeeld:

Basis-apt-manifest

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

Ongeldige update

Deze update bevat het staafpakket, maar niet het foo-pakket.

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

Goede update

Deze update bevat het foo-pakket en bevat ook het staafpakket.

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

Volgende stappen

Een update importeren in Device Update