Delen via


Apt-manifest voor apparaatupdates

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

Zie Een update importeren naar Apparaatupdate voor IoT Hub voor meer informatie.

Overzicht

Wanneer een apt-manifest als 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-updatehandler. Met 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 "~" kunnen 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 Handleiding voor Debian-beleid voor meer informatie over de versie van Debian-pakketten

Notitie

De apt-pakketbeheer negeert versievereisten die door een pakket worden gegeven 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 Apparaatupdate 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. Voeg geen versienummer toe 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> waar <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 opgemaakt 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 eenvoudig 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.
  • Wanneer u een specifieke versie van een pakket installeert (bijvoorbeeld iotedge 1.0.9-1), wordt het aanbevolen om ook in het apt-manifest 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 implementatie van een apt-update heeft overgeslagen vanwege een mislukte installatie of omdat het 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 een foo-pakket en een 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